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