"use client"; import { useEffect, useState } from "react"; import { useSearchParams } from "next/navigation"; import { FileText, FolderPlus, Hash, Layers3, Pencil, ShieldCheck, ShieldOff, Text, Trash2, } from "lucide-react"; import type { deleteCategoryAction, upsertCategoryAction } from "@/app/_admin/portfolio/actions"; import { AppCard } from "@/components/ui/app-card"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { CardContent } from "@/components/ui/card"; import { Checkbox } from "@/components/ui/checkbox"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Separator } from "@/components/ui/separator"; import { Textarea } from "@/components/ui/textarea"; import type { PortfolioCategoryView } from "@/lib/portfolio"; const locales = [ { key: "Ar", label: "Arabic" }, { key: "En", label: "English" }, { key: "De", label: "German" }, ] as const; const copy = { addCategory: "Add Category", saveCategory: "Save Category", save: "Save", delete: "Delete", active: "Active", sortOrder: "Sort Order", projects: "Projects", description: "Description", currentCategories: "Current Categories", modalDescription: "Create a new category with a faster flow for basics, localization, and status.", editDescription: "Update category content, change status, or remove the category if it has no assigned projects.", empty: "No categories yet.", deleteBlocked: "Delete becomes available only when no projects are assigned.", editCategory: "Edit Category", visibilityActive: "Visible on public portfolio filters.", visibilityInactive: "Hidden from public portfolio filters.", statusSection: "Visibility & Status", statusHint: "Control whether the category can be assigned and shown publicly.", }; type CategoryAction = typeof upsertCategoryAction; type CategoryDeleteAction = typeof deleteCategoryAction; type CategoryFormValues = { slug?: string; sortOrder?: number; isActive?: boolean; nameAr?: string; nameEn?: string; nameDe?: string; descriptionAr?: string; descriptionEn?: string; descriptionDe?: string; }; type PortfolioCategoriesManagerProps = { categories: Array; activeCount: number; assignedProjects: number; saveCategoryAction: CategoryAction; removeCategoryAction: CategoryDeleteAction; }; function CategoryLocaleFields({ idPrefix, values, }: { idPrefix: string; values?: CategoryFormValues; }) { return (

Localized Content

Keep names and descriptions ready in all supported locales.

{locales.map((locale) => { const nameKey = `name${locale.key}` as const; const descriptionKey = `description${locale.key}` as const; return (

{locale.label}