import React, { useState } from "react"; import { useRouter } from "next/navigation"; import { createDish } from "@/utils/api/dishApi"; import PageTitle from "@/components/ui/PageTitle"; import Alert from "@/components/ui/Alert"; import SolidButton from "@/components/ui/Buttons/SolidButton"; import OutlineLinkButton from "@/components/ui/Buttons/OutlineLinkButton"; import { ChevronLeftIcon } from "@heroicons/react/16/solid"; import Hr from "@/components/ui/Hr" const CreateDishForm = () => { const router = useRouter() const [name, setName] = useState(""); const [error, setError] = useState(""); const [loading, setLoading] = useState(false); const validateForm = () => { if (!name.trim()) { setError("Dish name cannot be empty."); return false; } return true; }; const submitForm = async (e: React.FormEvent) => { e.preventDefault() // Validate client-side input if (!validateForm()) return; setError(""); setLoading(true); try { const result = await createDish(name); if (result) { router.push('/dishes') } } catch (error: unknown) { setError(error instanceof Error ? error.message : "An unexpected error occurred."); } finally { setLoading(false); } } return (
Create Dish
{ error && ( { error } ) }
setName(e.target.value) } // Update the name state on change className="w-full p-2 mb-4 border rounded bg-gray-600 border-secondary text-secondary focus:bg-gray-900" placeholder="Enter dish name" />
{ loading ? "Saving..." : "Save Changes" }

} > Back to dishes
); }; export default CreateDishForm;