react-vite-themes
Version:
A test/experimental React theme system created for learning purposes. Features atomic design components, SCSS variables, and dark/light theme support. Not intended for production use.
36 lines • 1.38 kB
TypeScript
import type { ValidationRule } from '../utils/validation';
export interface UseFormOptions {
initialValues?: Record<string, unknown>;
validationSchema?: Record<string, ValidationRule>;
onSubmit?: (values: Record<string, unknown>) => void | Promise<void>;
validateOnChange?: boolean;
validateOnBlur?: boolean;
}
export interface UseFormReturn {
values: Record<string, unknown>;
errors: Record<string, string[]>;
touched: Record<string, boolean>;
isValid: boolean;
isSubmitting: boolean;
setValue: (field: string, value: unknown) => void;
setValues: (values: Record<string, unknown>) => void;
setFieldError: (field: string, error: string) => void;
setFieldErrors: (errors: Record<string, string[]>) => void;
validateField: (field: string) => void;
validateForm: () => boolean;
handleSubmit: (e?: React.FormEvent) => void;
handleBlur: (field: string) => void;
handleChange: (field: string, value: unknown) => void;
reset: () => void;
resetErrors: () => void;
getFieldProps: (field: string) => {
value: unknown;
onChange: (value: unknown) => void;
onBlur: () => void;
error: string[];
isInvalid: boolean;
isTouched: boolean;
};
}
export declare const useForm: (options?: UseFormOptions) => UseFormReturn;
//# sourceMappingURL=useForm.d.ts.map