import { FormControl } from '@angular/forms'; import { Color } from '@ionic/core'; import { ComponentState } from '../../types'; /** * Metadata for the date input component. */ export interface DateInputMetadata { /** Form control for the date value (ISO string) */ control: FormControl; /** Unique token for the input */ token?: string; /** Display label */ label?: string; /** Field name */ name?: string; /** Help text / title displayed in modal */ hint?: string; /** Placeholder text */ placeholder?: string; /** Field state */ state?: ComponentState; /** Minimum selectable date (ISO string) */ min?: string; /** Maximum selectable date (ISO string) */ max?: string; /** Locale for date display (e.g., 'es-ES') */ locale?: string; /** First day of week (0 = Sunday, 1 = Monday) */ firstDayOfWeek?: number; /** Date presentation format */ presentation?: 'date' | 'date-time' | 'month' | 'month-year' | 'year' | 'time'; /** Custom format options */ formatOptions?: { date?: { dateStyle?: 'full' | 'long' | 'medium' | 'short'; }; time?: { timeStyle?: 'full' | 'long' | 'medium' | 'short'; }; }; /** Done button text */ doneText?: string; /** Cancel button text */ cancelText?: string; /** Show default buttons */ showDefaultButtons?: boolean; /** Component color */ color?: Color; /** Custom CSS class */ cssClass?: string; /** Initial value for the field */ value?: string; /** Default value configuration - string for custom defaults, true for auto defaults */ withDefault?: string | boolean; /** 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 date changes. */ export interface DateInputChangeEvent { /** Selected date value (ISO string) */ value: string | null; /** Formatted date string for display */ formattedValue: string; }