'use client'; // File: components/reminder/ReminderRuleForm.tsx import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import * as z from 'zod'; import { Button } from '@/components/ui/button'; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, FormDescription } from '@/components/ui/form'; import { Input } from '@/components/ui/input'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Textarea } from '@/components/ui/textarea'; import { ReminderType } from '@/types/workflow'; import { CreateReminderRuleDto } from '@/hooks/use-reminder'; const formSchema = z.object({ name: z.string().min(1, 'Name is required').max(100), documentTypeCode: z.string().optional(), reminderType: z.nativeEnum(ReminderType), daysBeforeDue: z.coerce.number(), escalationLevel: z.coerce.number().min(0).max(2).default(0), messageTemplate: z.string().optional(), }); interface ReminderRuleFormProps { onSubmit: (data: CreateReminderRuleDto) => void; isLoading?: boolean; defaultValues?: Partial; } export function ReminderRuleForm({ onSubmit, isLoading, defaultValues }: ReminderRuleFormProps) { const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { name: defaultValues?.name ?? '', documentTypeCode: defaultValues?.documentTypeCode ?? '', reminderType: defaultValues?.reminderType ?? ReminderType.DUE_SOON, daysBeforeDue: defaultValues?.daysBeforeDue ?? 2, escalationLevel: defaultValues?.escalationLevel ?? 0, messageTemplate: defaultValues?.messageTemplate ?? '', }, }); return (
( Rule Name )} />
( Reminder Type )} /> ( Trigger Days + for before, - for after due )} />
( Escalation Level )} /> ( Message Template (Optional)