import { HeaderMetadata } from '../../organisms/header/types'; import { CompanyFooterMetadata } from '../../organisms/company-footer/types'; import { ContainerSize } from '../../atoms/container/types'; /** Item de navegación del menú lateral. */ export interface SideNavItem { /** Etiqueta visible. */ label: string; /** Nombre del ionicon (debe estar registrado con addIcons en la app). */ icon?: string; /** Ruta Angular para routerLink. */ route: string; /** Si true, routerLinkActive requiere coincidencia exacta (default false). */ exact?: boolean; } /** * Configuration for the page wrapper component. */ export interface PageWrapperMetadata { /** Header configuration */ header?: HeaderMetadata; /** Footer configuration */ footer?: CompanyFooterMetadata; /** Background color or CSS variable */ background?: string; /** Route to navigate to when header logo is clicked */ homeRoute?: string; /** Content ID for scroll handling */ contentId?: string; /** Enable scroll-to-top on route change */ scrollToTopOnNavigate?: boolean; /** * Max-width cap for the routed content using design tokens. * 'fluid' = no cap (default, backwards-compatible). * Recommended: 'xl' for typical app pages. */ contentMaxWidth?: ContainerSize; /** * Items del menú lateral. Cuando se provee, val-page-wrapper renderiza * ion-split-pane + ion-menu. En desktop (>= 768px) el menú es visible * siempre; en mobile se abre con el botón hamburger (withMenu: true en toolbar). */ menuItems?: SideNavItem[]; }