import { z } from "zod"; import { useForm as useHookForm, FieldValues } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { useEffect } from "react"; export const useForm = <T extends FieldValues>( schema: z.ZodSchema<T>, initialValues?: Partial<T> ) => { const form = useHookForm<T>({ resolver: zodResolver(schema), defaultValues: initialValues as never, }); useEffect(() => { if (initialValues) { form.reset(initialValues as never); } }, [initialValues, form.reset]); return form; }; export type useFormReturn<T extends FieldValues> = ReturnType< typeof useForm<T> >;