import { FormControl } from '@angular/forms'; import { Observable } from 'rxjs'; import { ComponentState } from '../../types'; /** * Metadata for UsernameInputComponent. */ export interface UsernameInputMetadata { /** FormControl para el valor del username */ control: FormControl; /** Label del campo */ label?: string; /** Texto explicativo debajo del input (estilo consistente con phone-input). */ hint?: string; /** Placeholder del input */ placeholder?: string; /** Prefijo visual (default: '@') */ prefix?: string; /** Longitud mínima permitida (default: 3) */ minLength?: number; /** Longitud máxima permitida (default: 30) */ maxLength?: number; /** Función para verificar disponibilidad del username */ checkAvailability?: (handle: string) => Observable; /** Mensajes de error personalizados */ errors?: Record; /** Estado del componente */ state?: ComponentState; /** Mostrar indicador de disponibilidad (default: true) */ showAvailability?: boolean; /** Debounce en ms para check de disponibilidad (default: 500) */ debounceTime?: number; } /** * Estado de disponibilidad del username. */ export type UsernameAvailabilityStatus = 'idle' | 'checking' | 'available' | 'taken' | 'invalid';