import type { ReactNode } from 'react'; /** * Definición de un item de menú para el NavigationRailGroup */ export interface NavigationRailGroupMenuItem { /** * Identificador único del item */ id: string; /** * Etiqueta/texto del item (visible en modo expanded) */ label: string; /** * Icono del item (16x16px recomendado) */ icon: ReactNode; /** * Si el item es colapsable (tiene submenu) * @default false */ isCollapsible?: boolean; /** * Items hijos (solo si isCollapsible es true) */ children?: NavigationRailGroupMenuItem[]; /** * Si el item colapsable está abierto por defecto (solo si isCollapsible es true) * @default false */ defaultOpen?: boolean; /** * Si el item está seleccionado/activo * @default false */ active?: boolean; /** * Si el item está deshabilitado * @default false */ disabled?: boolean; /** * Callback cuando se hace click en el item */ onClick?: () => void; /** * Badge de notificación * @default false */ badge?: boolean; /** * Contador de notificaciones (si badge es true) */ badgeCount?: number; } /** * Props del componente NavigationRailGroup * * @see https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=6146-34487 */ export interface NavigationRailGroupProps { /** * Estado del rail: * - `collapsed`: 80px width, solo iconos * - `expanded`: 215px width, con labels * - `hover`: muestra panel lateral con submenu (estado temporal) * - `searcher`: muestra panel lateral con búsqueda (estado temporal) * @default 'collapsed' */ state?: 'collapsed' | 'expanded' | 'hover' | 'searcher'; /** * Items de menú a mostrar en la barra */ items?: NavigationRailGroupMenuItem[]; /** * Panel lateral que se muestra en estados hover/searcher * Contiene el menú detallado del item seleccionado */ panelContent?: { /** * Título del panel (ej: "Administración") */ heading?: string; /** * Items del panel */ items?: NavigationRailGroupMenuItem[]; }; /** * Callback cuando cambia el estado del rail * @param state - nuevo estado */ onStateChange?: (state: NavigationRailGroupProps['state']) => void; /** * Callback cuando se hace click en un item * @param item - item clickeado */ onItemClick?: (item: NavigationRailGroupMenuItem) => void; /** * Callback cuando se hace hover en un item (para mostrar panel) * @param item - item con hover */ onItemHover?: (item: NavigationRailGroupMenuItem) => void; /** * Labels de internacionalización */ labels?: { /** * Placeholder del input de búsqueda * @default 'Buscar módulo' */ searchPlaceholder?: string; /** * Label del botón colapsar * @default 'Colapsar' */ collapseButton?: string; /** * Label sección recientes (panel búsqueda) * @default 'Recientes' */ recentSection?: string; /** * Label sección opciones frecuentes (panel búsqueda) * @default 'Opciones frecuentes' */ frequentSection?: string; }; /** * Clases CSS adicionales */ className?: string; /** * Si mostrar el botón de búsqueda (en modo collapsed) * @default true */ showSearchButton?: boolean; /** * Callback para cuando se realiza una búsqueda en el rail (modo expanded) * @param query - Texto de búsqueda */ onSearch?: (query: string) => void; /** * Función de traducción personalizada (inyectada por el padre) */ t?: (key: string, defaultValue?: string) => string; } //# sourceMappingURL=NavigationRailGroup.types.d.ts.map