import { Validation } from "./validation.interface"; /** * Field interface for dynamic form fields. * Defines the structure and behavior of individual form fields. */ export interface Field { /** Unique identifier for the field */ id: string; /** * The type of input field * Controls the UI rendering and validation behavior */ type: 'text' | 'email' | 'password' | 'number' | 'tel' | 'checkbox' | 'radio' | 'select' | 'textarea' | 'date' | 'file' | 'custom'; /** Display label for the field */ label: string; /** Initial/default value for the field */ value?: any; /** Placeholder text for input fields */ placeholder?: string; /** * Helper text to display below the field * Useful for providing additional context or instructions */ helperText?: string; /** Whether the field is required */ required?: boolean; /** Whether the field is disabled/readonly */ disabled?: boolean; /** Whether the field should be hidden from view */ hidden?: boolean; /** Validation rules for the field */ validation?: Validation; /** * Options for select, radio, and checkbox fields * Each option has a label, value, and optional disabled state */ options?: Array<{ label: string; value: any; disabled?: boolean; }>; /** * Additional properties for custom fields * Allows extending field capabilities with custom attributes */ props?: Record; }