"use client"; import { useEffect, useState } from "react"; import { useSearchParams } from "next/navigation"; import { FileText, FolderPlus, Hash, Layers3, Pencil, Text, Trash2 } from "lucide-react"; import type { deleteCategoryAction, upsertCategoryAction } from "@/app/root/portfolio/actions"; import { AppCard } from "@/components/ui/app-card"; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/components/ui/accordion"; 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 { Textarea } from "@/components/ui/textarea"; import type { PortfolioCategoryView } from "@/lib/portfolio"; const locales = [ { key: "Ar", lowerKey: "ar" as const, label: "Arabic" }, { key: "En", lowerKey: "en" as const, label: "English" }, { key: "De", lowerKey: "de" as const, label: "German" }, ] as const; const copy = { addCategory: "Kategorie hinzufuegen", saveCategory: "Kategorie speichern", save: "Speichern", delete: "Loeschen", active: "Aktiv", sortOrder: "Sortierung", projects: "Projekte", description: "Beschreibung", currentCategories: "Aktuelle Kategorien", modalDescription: "Neue Kategorie direkt im Popup anlegen.", editDescription: "Kategorie im Popup aendern oder loeschen.", empty: "Noch keine Kategorien vorhanden.", deleteBlocked: "Loeschen erst moeglich, wenn keine Projekte mehr zugeordnet sind.", editCategory: "Kategorie bearbeiten", }; type CategoryAction = typeof upsertCategoryAction; type CategoryDeleteAction = typeof deleteCategoryAction; type PortfolioCategoriesManagerProps = { categories: Array; activeCount: number; assignedProjects: number; saveCategoryAction: CategoryAction; removeCategoryAction: CategoryDeleteAction; }; function CategoryLocaleFields({ idPrefix, values, }: { idPrefix: string; values?: { nameAr?: string; nameEn?: string; nameDe?: string; descriptionAr?: string; descriptionEn?: string; descriptionDe?: string; }; }) { return (
{locales.map((locale) => { const nameKey = `name${locale.key}` as const; const descriptionKey = `description${locale.key}` as const; return (

{locale.label}