"use client"; import { useState } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Badge } from "@/components/ui/badge"; import { Dialog, DialogContent, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { IconPicker } from "@/components/ui/icon-picker"; import { Plus, X } from "lucide-react"; import { cn } from "@/lib/utils"; import type { Category } from "@/lib/types"; import { categoryColors } from "./constants"; interface CategoryFormData { name: string; color: string; icon: string; keywords: string[]; parentId: string | null; } interface CategoryEditDialogProps { open: boolean; onOpenChange: (open: boolean) => void; editingCategory: Category | null; formData: CategoryFormData; onFormDataChange: (data: CategoryFormData) => void; parentCategories: Category[]; onSave: () => void; } export function CategoryEditDialog({ open, onOpenChange, editingCategory, formData, onFormDataChange, parentCategories, onSave, }: CategoryEditDialogProps) { const [newKeyword, setNewKeyword] = useState(""); const addKeyword = () => { if ( newKeyword.trim() && !formData.keywords.includes(newKeyword.trim().toLowerCase()) ) { onFormDataChange({ ...formData, keywords: [...formData.keywords, newKeyword.trim().toLowerCase()], }); setNewKeyword(""); } }; const removeKeyword = (keyword: string) => { onFormDataChange({ ...formData, keywords: formData.keywords.filter((k) => k !== keyword), }); }; return ( {editingCategory ? "Modifier la catégorie" : "Nouvelle catégorie"}
{/* Catégorie parente */}
{/* Nom */}
onFormDataChange({ ...formData, name: e.target.value }) } placeholder="Ex: Alimentation" />
{/* Couleur et Icône */}
{categoryColors.map((color) => (
onFormDataChange({ ...formData, icon })} color={formData.color} />
{/* Mots-clés */}
setNewKeyword(e.target.value)} placeholder="Ajouter un mot-clé" onKeyDown={(e) => e.key === "Enter" && (e.preventDefault(), addKeyword()) } />
{formData.keywords.map((keyword) => ( {keyword} ))}
{/* Actions */}
); }