import { TemplateRef } from '@angular/core'; /** * Contexto que recibe el template de cada pestaña. */ export interface FolderTabsContext { /** Valor de la pestaña activa */ $implicit: string; /** Configuración completa de la pestaña */ tab: FolderTab; /** Índice de la pestaña */ index: number; } /** * Una pestaña. * * Sin texto propio: `label` llega ya traducido desde el consumer, igual que en * el resto de la librería. */ export interface FolderTab { /** Identificador único. Es lo que emite `tabChange`. */ value: string; /** Etiqueta visible, ya traducida. */ label: string; /** * Contador sobre la pestaña (pendientes, sin leer). Se omite si es 0 o * undefined: un badge en cero es ruido. */ badge?: number; /** Deshabilita la pestaña. */ disabled?: boolean; /** Contenido a renderizar cuando esta pestaña está activa. */ template?: TemplateRef; } /** * Configuración de val-folder-tabs. */ export interface FolderTabsMetadata { /** Pestañas, en el orden en que se muestran. */ tabs: FolderTab[]; /** * Pestaña activa. Si se omite o no coincide con ninguna, toma la primera * habilitada. Pasarla convierte al componente en controlado: el consumer * decide qué se ve (por ejemplo, leyendo un query param). */ selectedTab?: string; /** * Etiqueta accesible del grupo de pestañas, ya traducida. Sin esto, un lector * de pantalla anuncia la lista sin decir de qué es. */ ariaLabel?: string; }