import type { FieldAtom, FormAtom } from "form-atoms"; import type { ListField, ListFieldSubmitValue, ZodField, ZodFieldSubmitValue } from "../../fields"; type Flatten = Identity<{ [K in keyof T]: T[K]; }>; type Identity = T; type FormFields = { [key: string | number]: FieldAtom | ZodField | FormFields | FormFields[] | FieldAtom[] | ZodField[]; }; export type FormFieldSubmitValues = Flatten<{ [Key in keyof Fields]: Fields[Key] extends ListField ? ListFieldSubmitValue : Fields[Key] extends ZodField ? ZodFieldSubmitValue : Fields[Key] extends FieldAtom ? Value : Fields[Key] extends FormFields ? FormFieldSubmitValues : Fields[Key] extends Array ? Item extends ZodField ? ZodFieldSubmitValue[] : Item extends FieldAtom ? Value[] : Item extends FormFields ? FormFieldSubmitValues[] : never : never; }>; export type FormSubmitValues
= Form extends FormAtom ? FormFieldSubmitValues : never; export {};