UNPKG

zod-form-kit

Version:

UI-agnostic form generation library based on Zod schemas with extensible adapter pattern

30 lines (29 loc) 1.39 kB
import { z } from 'zod'; import { UIAdapter } from './plugin-system'; type ZodDiscriminatedUnionOption<T extends string> = z.ZodObject<{ variant: z.ZodLiteral<T>; [key: string]: z.ZodTypeAny; }>; export type ZodDiscriminatedUnion<T extends string> = z.ZodDiscriminatedUnion<'variant', [ZodDiscriminatedUnionOption<T>, ...ZodDiscriminatedUnionOption<T>[]]>; export declare const supportedPrimitives: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodDate, z.ZodEnum<[""]>]>; export type ValidFormSchema = z.ZodObject<Record<string, any>> | ZodDiscriminatedUnion<string> | typeof supportedPrimitives; export interface ZodFormProps<T extends ValidFormSchema> { schema: T; onSubmit: (data: z.infer<T>) => void; defaultValues?: Partial<z.infer<T>>; className?: string; /** * UI adapter to register and automatically set as the default theme adapter. * When provided, this adapter will be registered and set as the default for the form. */ registerUIAdapter?: UIAdapter; } export interface FieldProps { name: string; label?: string; required?: boolean; error?: string; className?: string; } export type SupportedZodTypes = z.ZodString | z.ZodNumber | z.ZodBoolean | z.ZodDate | z.ZodArray<any> | z.ZodObject<any> | z.ZodDiscriminatedUnion<any, any> | z.ZodOptional<any> | z.ZodNullable<any> | z.ZodDefault<any>; export {};