import type { ReactNode } from 'react'; /** * Configuración de un item de Tab individual */ export interface TabItem { /** * Identificador único del tab */ id: string; /** * Texto a mostrar en el tab */ label: string; /** * Icono a mostrar a la izquierda del texto (opcional) */ icon?: ReactNode; /** * Número de notificaciones a mostrar en el badge (opcional) */ badge?: number; /** * Si el tab está deshabilitado * @default false */ disabled?: boolean; } /** * Props del componente Tab individual (interno) */ export interface TabProps { /** * Texto a mostrar en el tab */ label: string; /** * Si el tab está activo/seleccionado * @default false */ active?: boolean; /** * Icono a mostrar a la izquierda del texto (opcional) */ icon?: ReactNode; /** * Número de notificaciones a mostrar en el badge (opcional) */ badge?: number; /** * Si el tab está deshabilitado * @default false */ disabled?: boolean; /** * Función callback ejecutada al hacer click */ onClick?: () => void; /** * Clases CSS adicionales */ className?: string; /** * Etiqueta accesible para lectores de pantalla */ ariaLabel?: string; } /** * Props del componente Tabs (contenedor) */ export interface TabsProps { /** * Lista de tabs a mostrar */ items: TabItem[]; /** * ID del tab actualmente seleccionado */ activeId?: string; /** * ID del tab seleccionado por defecto (para componente no controlado) */ defaultActiveId?: string; /** * Callback ejecutado cuando cambia el tab seleccionado */ onChange?: (id: string) => void; /** * Clases CSS adicionales para el contenedor */ className?: string; /** * Si los tabs deben ocupar todo el ancho disponible * @default false */ fullWidth?: boolean; /** * Tamaño de los tabs * @default 'base' */ size?: 'sm' | 'base' | 'lg'; /** * Si se muestra la línea inferior del contenedor de tabs * @default true */ showBorder?: boolean; } //# sourceMappingURL=Tabs.types.d.ts.map