import { useForm, zodResolver } from "@mantine/form"; import { z } from "zod"; import type { AnyZodObject, ZodDiscriminatedUnion, ZodEffects, ZodIntersection } from "zod"; import { useI18n } from "@homarr/translation/client"; import { zodErrorMap } from "@homarr/validation/form"; export const useZodForm = < TSchema extends | AnyZodObject | ZodEffects | ZodIntersection, AnyZodObject>, >( schema: TSchema, options: Omit< Exclude>>[0], undefined>, "validate" | "validateInputOnBlur" | "validateInputOnChange" >, ) => { const t = useI18n(); z.setErrorMap(zodErrorMap(t)); return useForm>({ ...options, validateInputOnBlur: true, validateInputOnChange: true, validate: zodResolver(schema), }); };