import { FormControl } from '@angular/forms'; import { Color } from '@ionic/core'; import { ComponentState } from '../../types'; /** * Metadata for the file input component. */ export interface FileInputMetadata { /** Form control for the file (stores File object, optional when used in val-form) */ control?: FormControl; /** Unique token for the input */ token?: string; /** Display label */ label?: string; /** Field name */ name?: string; /** Help text */ hint?: string; /** Field state */ state?: ComponentState; /** Accepted file types (e.g., 'image/*', '.pdf,.doc') */ accept?: string; /** Allow multiple files */ multiple?: boolean; /** Maximum file size in bytes */ maxSize?: number; /** Maximum number of files (when multiple is true) */ maxFiles?: number; /** Button text for selecting file */ buttonText?: string; /** Text shown when no file is selected */ noFileText?: string; /** Component color */ color?: Color; /** Button color */ buttonColor?: Color; /** Custom CSS class */ cssClass?: string; /** Content key for reactive label */ contentKey?: string; /** Component class name for content lookup */ contentClass?: string; /** Fallback text if content key is not found */ contentFallback?: string; /** Custom error messages */ errors?: Record; /** Show validation errors */ showErrors?: boolean; } /** * Event emitted when file is selected. */ export interface FileInputChangeEvent { /** Selected file */ file: File | null; /** File name */ fileName: string | null; /** File size in bytes */ fileSize: number | null; /** File type/MIME */ fileType: string | null; } /** * Event emitted when multiple files are selected. */ export interface FilesInputChangeEvent { /** Selected files */ files: File[]; /** Total count */ count: number; /** Total size in bytes */ totalSize: number; }