aura-glass
Version:
A comprehensive glassmorphism design system for React applications with 142+ production-ready components
101 lines • 3.68 kB
TypeScript
/**
* Form validation utilities for form templates
*/
export interface ValidationRule {
type: 'required' | 'email' | 'min' | 'max' | 'pattern' | 'custom';
value?: any;
message: string;
validator?: (value: any) => boolean;
}
export interface FieldValidation {
[fieldId: string]: ValidationRule[];
}
export interface ValidationResult {
isValid: boolean;
errors: Record<string, string>;
}
/**
* Built-in validation rules
*/
export declare const validationRules: {
required: (message?: string) => ValidationRule;
email: (message?: string) => ValidationRule;
minLength: (min: number, message?: string) => ValidationRule;
maxLength: (max: number, message?: string) => ValidationRule;
minValue: (min: number, message?: string) => ValidationRule;
maxValue: (max: number, message?: string) => ValidationRule;
pattern: (regex: RegExp, message: string) => ValidationRule;
custom: (validator: (value: any) => boolean, message: string) => ValidationRule;
phone: (message?: string) => ValidationRule;
url: (message?: string) => ValidationRule;
strongPassword: (message?: string) => ValidationRule;
};
/**
* Validate a single field value against its rules
*/
export declare const validateField: (value: any, rules: ValidationRule[]) => string | null;
/**
* Validate multiple fields
*/
export declare const validateFields: (values: Record<string, any>, validation: FieldValidation) => ValidationResult;
/**
* Common validation schemas
*/
export declare const commonValidationSchemas: {
userRegistration: {
firstName: ValidationRule[];
lastName: ValidationRule[];
email: ValidationRule[];
password: ValidationRule[];
confirmPassword: ValidationRule[];
terms: ValidationRule[];
};
contactForm: {
name: ValidationRule[];
email: ValidationRule[];
subject: ValidationRule[];
message: ValidationRule[];
};
profileUpdate: {
displayName: ValidationRule[];
bio: ValidationRule[];
website: ValidationRule[];
phone: ValidationRule[];
};
passwordChange: {
currentPassword: ValidationRule[];
newPassword: ValidationRule[];
confirmNewPassword: ValidationRule[];
};
};
/**
* Custom validation functions for common scenarios
*/
export declare const customValidators: {
passwordsMatch: (password: string, confirmPassword: string) => boolean;
uniqueEmail: (email: string, checkFunction: (email: string) => Promise<boolean>) => Promise<boolean>;
fileSize: (file: File, maxSizeInMB: number) => boolean;
fileType: (file: File, allowedTypes: string[]) => boolean;
dateRange: (date: Date, minDate?: Date, maxDate?: Date) => boolean;
creditCard: (cardNumber: string) => boolean;
};
/**
* Async validation utilities
*/
export declare const asyncValidation: {
debounce: (func: Function, delay: number) => (...args: any[]) => Promise<unknown>;
createAsyncValidator: (asyncCheck: (value: any) => Promise<boolean>, message: string, debounceMs?: number) => (value: any) => Promise<string | null>;
};
/**
* Form validation state manager
*/
export declare class FormValidator {
private validationSchema;
private asyncValidators;
constructor(validationSchema?: FieldValidation);
setValidationSchema(schema: FieldValidation): void;
addAsyncValidator(fieldId: string, validator: (value: any) => Promise<string | null>): void;
validateForm(values: Record<string, any>): Promise<ValidationResult>;
validateField(fieldId: string, value: any): Promise<string | null>;
}
//# sourceMappingURL=FormValidationUtils.d.ts.map