/** Emitted alongside the phone value: parsed parts + per-country validity. */ export type PhoneParts = { country: string; dial: string; national: string; valid: boolean; complete: boolean; }; /** Reactive inputs are passed as getters so the core tracks live prop changes. */ export type PhoneInputConfig = { value: () => string; onChange?: (value: string, parts: PhoneParts) => void; /** Default country ISO code. */ country?: () => string; disabled?: () => boolean; readonly?: () => boolean; placeholder?: () => string | undefined; /** Accessible name for the country `` element. */ selectProps: () => { value: string; disabled: boolean; 'aria-label': string; onchange: (e: Event) => void; }; /** Spread onto the national number input element. */ inputProps: () => { 'aria-label': string; oninput: (e: Event) => void; 'aria-invalid': "true" | undefined; 'aria-required': "true" | undefined; 'aria-describedby': string | undefined; id: string | undefined; value: string; type: "tel"; inputmode: "tel"; placeholder: string; disabled: boolean; readonly: boolean; }; }; export type PhoneInputCore = ReturnType;