UNPKG

@jiin.seok/formkit-react

Version:

A powerful React form library with Compound Component Pattern, built-in validation, and TypeScript support

81 lines 2.68 kB
import { ReactNode, ButtonHTMLAttributes, HTMLAttributes } from 'react'; import { UseFormWatch, UseFormGetValues, UseFormGetFieldState, UseFormSetValue, FieldErrors, UseFormReset, UseFormRegister, UseFormSetFocus, Control, SubmitHandler, RegisterOptions } from 'react-hook-form'; import { ZodSchema } from 'zod'; export interface FormContextProps { formId: string; onSubmit: SubmitHandler<any>; watch: UseFormWatch<any>; getValues: UseFormGetValues<any>; getFieldState: UseFormGetFieldState<any>; setValue: UseFormSetValue<any>; errors: FieldErrors; isValid: boolean; isSubmitting: boolean; reset: UseFormReset<any>; register: UseFormRegister<any>; setFocus: UseFormSetFocus<any>; control: Control<any>; } export interface FormProps extends HTMLAttributes<HTMLFormElement> { formId: string; onSubmit: SubmitHandler<any>; defaultValues?: Record<string, any>; schema?: ZodSchema<any>; children: ReactNode; } export interface ComponentProps { children: ReactNode; className?: string; } export interface FieldProps extends ComponentProps { htmlFor?: string; isInline?: boolean; hidden?: boolean; } export interface LegendProps extends ComponentProps { required?: boolean; } export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'name'> { name: string; type?: 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'date' | 'time' | 'datetime-local'; required?: boolean; minLength?: number; maxLength?: number; hookFormPattern?: { value: RegExp; message: string; }; validate?: RegisterOptions['validate']; } export interface TextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'name'> { name: string; required?: boolean; minLength?: number; maxLength?: number; validate?: RegisterOptions['validate']; } export interface SelectOption { value: string; label: string; disabled?: boolean; } export interface SelectProps { name: string; options: SelectOption[]; placeholder?: string; required?: boolean; className?: string; disabled?: boolean; onValueChange?: (value: string) => void; } export interface FormSubmitButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> { children: ReactNode; variant?: 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link'; className?: string; } export interface FormResetButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> { children: ReactNode; className?: string; onClick?: () => void; } //# sourceMappingURL=types.d.ts.map