'use client'; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { z } from 'zod'; import { createIntake } from '../actions'; import { useState, useTransition } from 'react'; import { CalendarIcon, Loader2 } from 'lucide-react'; import { format } from 'date-fns'; import { nl } from 'date-fns/locale'; import { cn } from '@/lib/utils'; const formSchema = z.object({ title: z.string().min(1, 'Titel is verplicht'), department: z.enum(['Volwassenen', 'Jeugd', 'Ouderen']), start_date: z.string().min(1, 'Startdatum is verplicht'), }); type FormData = z.infer; interface NewIntakeFormProps { patientId: string; } export function NewIntakeForm({ patientId }: NewIntakeFormProps) { const [isPending, startTransition] = useTransition(); const [error, setError] = useState(null); const { register, handleSubmit, formState: { errors }, } = useForm({ resolver: zodResolver(formSchema), defaultValues: { title: '', department: 'Volwassenen', start_date: format(new Date(), 'yyyy-MM-dd'), }, }); const onSubmit = (data: FormData) => { setError(null); startTransition(async () => { try { await createIntake({ ...data, patient_id: patientId, }); } catch (e) { setError('Er is een fout opgetreden bij het aanmaken van de intake.'); console.error(e); } }); }; return (
{error && (
{error}
)}
{errors.title && (

{errors.title.message}

)}
{errors.department && (

{errors.department.message}

)}
{errors.start_date && (

{errors.start_date.message}

)}
); }