"use client"; import { useState } from "react"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import AdminForm from "@/components/admin/admin-form"; import { createCategory, updateCategory } from "@/app/admin/(protected)/categories/actions"; import { categorySchema, type CategoryInput } from "@/lib/validations/category"; import { useRouter } from "next/navigation"; type CategoryFormProps = { mode: "create" | "edit"; categoryId?: string; defaultValues: CategoryInput; }; const kindLabels: Record = { PROJECT: "Projects", MELODY: "Melodies", }; export default function CategoryForm({ mode, categoryId, defaultValues }: CategoryFormProps) { const router = useRouter(); const [serverError, setServerError] = useState(null); const form = useForm({ resolver: zodResolver(categorySchema), defaultValues, }); const onSubmit = async (values: CategoryInput) => { setServerError(null); const result = mode === "create" ? await createCategory(values) : await updateCategory(categoryId ?? "", values); if (result.error) { setServerError(result.error); return; } router.push("/admin/categories"); router.refresh(); }; return ( ( Section )} /> ( Slug )} />
( Arabic name )} /> ( English name )} />
( Display order field.onChange(event.target.valueAsNumber || 0)} /> )} /> {serverError ?

{serverError}

: null}
); }