import { Controller, useFormContext, type FieldPath, type FieldValues, } from "react-hook-form"; import dayjs, { type Dayjs } from "dayjs"; import { DatePicker, TimePicker } from "@/Components/inputs"; export interface FormPickerFieldProps { name: FieldPath; fieldLabel?: string; format?: string; onValueChange?: (value: string) => void; // e.g. () => trigger("startDate") } interface DayjsPickerProps { fieldLabel?: string; value: Dayjs | null; onChange: (value: Dayjs | null) => void; error?: boolean; helperText?: string; } interface FormDayjsPickerFieldProps< T extends FieldValues, > extends FormPickerFieldProps { picker: React.ComponentType; format: string; } const FormDayjsPickerField = ({ name, fieldLabel, format, onValueChange, picker: Picker, }: FormDayjsPickerFieldProps) => { const { control } = useFormContext(); return ( ( { const next = value ? value.format(format) : ""; field.onChange(next); onValueChange?.(next); }} error={!!fieldState.error} helperText={fieldState.error?.message} /> )} /> ); }; export const FormDatePickerField = ({ format = "YYYY-MM-DD", ...rest }: FormPickerFieldProps) => ( ); export const FormTimePickerField = ({ format = "HH:mm", ...rest }: FormPickerFieldProps) => ( );