import type { ReactNode } from 'react'; import type { UserDropdownProps, NavbarProps } from '../../components/Navbar/Navbar.types'; import type { NavigationRailGroupMenuItem, NavigationRailGroupProps } from '../../components/NavigationRailGroup/NavigationRailGroup.types'; /** * Props del componente LayoutBase * * Layout base con NavigationRail lateral, Navbar superior y área * de contenido dinámico. Diseñado para ser reutilizado en diferentes vistas * de la aplicación. * * **Mejores prácticas implementadas:** * - Orden de modificadores: {responsive}:{dark}:{state}:{utility} * - Dark mode con estrategia 'class' (darkMode: 'class') * - Tokens de color consistentes con la documentación * - Responsive design mobile-first * - Composición con componentes del sistema * * @see docs/colors.md - Sistema de colores * @see docs/typography.md - Sistema tipográfico * @see docs/spacing.md - Sistema de espaciado */ export interface LayoutBaseProps { /** * Nombre del producto que aparece en el Navbar * @default 'SB Comercial' */ productName?: string; /** * Path del logo de Siesa personalizado para el Navbar * Si se proporciona, se usa en lugar del logo por defecto * * @example '/images/logos/Siesa_Logosimbolo_Blanco.svg' */ siesaLogoPath?: string; /** * Ancho del logo de Siesa personalizado * Se aplica solo cuando se proporciona siesaLogoPath * * @example '120px', '100%', '8rem' */ siesaLogoWidth?: string; /** * Alto del logo de Siesa personalizado * Se aplica solo cuando se proporciona siesaLogoPath * * @example '30px', '100%', '2rem' */ siesaLogoHeight?: string; /** * Configuración del dropdown de usuario en el Navbar */ userDropdown?: UserDropdownProps; /** * Items de navegación para el NavigationRail */ navigationItems?: NavigationRailGroupMenuItem[]; /** * Contenido dinámico que se renderiza en el área principal */ children?: ReactNode; /** * Clases CSS adicionales para el contenedor principal */ className?: string; /** * Clases CSS adicionales para el área de contenido * @default 'p-6' */ contentClassName?: string; /** * Oculta el sidebar (NavigationRailGroup) y muestra solo el header. * Útil para vistas que no requieren navegación lateral como páginas de login, * landing pages o vistas de pantalla completa. * * @default false * @example * ```tsx * // Layout con solo header (sin sidebar) * * * * ``` */ hideSidebar?: boolean; /** * Props adicionales para el componente Navbar. * Permite un control total (pass-through) sobre el Navbar, incluyendo la capacidad * de sobrescribir props manejadas por el LayoutBase (como productName, userDropdown o siesaLogo). * * @example * ```tsx * navbarProps={{ * showNavigationButton: true, * environmentBadge: "Desarrollo", * siesaLogo: , // Sobrescribe siesaLogoPath * onCartClick: () => handleCart(), * }} * ``` */ navbarProps?: Partial; /** * Props adicionales para el componente NavigationRailGroup. * Permite un control total (pass-through) sobre el NavigationRail, incluyendo * la capacidad de sobrescribir el estado interno (state) y sus callbacks (onStateChange). * * @example * ```tsx * navigationRailProps={{ * state: 'expanded', // Forzar estado expandido (controlado) * showSearchButton: true, * labels: { searchPlaceholder: "Buscar módulos..." }, * onItemClick: (item) => handleNavigation(item), * }} * ``` */ navigationRailProps?: Partial; /** * Prefijo para buscar llaves de traducción de la interfaz (Navbar, Sidebar). * @default 'layout' */ uiPrefix?: string; /** * Función de traducción personalizada. * Permite que el componente sea agnóstico a librerías externas. */ t?: (key: string, defaultValue?: string) => string; /** * Idioma por defecto para el fallback interno cuando no hay un sistema global. * @default 'es' */ locale?: string; } //# sourceMappingURL=LayoutBase.types.d.ts.map