import React from "react"; import "./LsgHeader.scss"; import { LsgLogoProps } from "../LsgLogo"; import { LsgNavItem } from "../LsgNavigation"; import { LsgLanguage } from "../LsgLanguageSwitcher"; export type LsgHeaderSize = "full-width" | "medium" | "narrow"; /** Theme palette token, resolved against the active theme's `--lsg-color-*`. */ export type LsgHeaderColour = "white" | "light" | "primary" | "secondary" | "tertiary" | "dark" | "black"; export interface LsgHeaderProps { logo?: LsgLogoProps; navItems?: LsgNavItem[]; languages?: LsgLanguage[]; currentLanguage?: string; onLanguageChange?: (language: LsgLanguage) => void; searchLabel?: string; searchPlaceholder?: string; variant?: "simple" | "dropdown" | "mega"; /** * Width of the header bar, mirroring the AEM `./headerSize` dialog select. * Left undefined on purpose so no modifier class is emitted and the theme's * own header width applies. Styled for theme 1 only. */ size?: LsgHeaderSize; /** * Colours mirroring the AEM header dialog's `./headerBackground`, * `./headerLinkColour` and `./headerActiveColour` selects. Undefined keeps the * theme default. The background also covers the dropdown, mega and mobile * panels; a dark background switches links to white unless `linkColor` is set. */ background?: LsgHeaderColour; linkColor?: LsgHeaderColour; /** Hover, focus and current-page colour. */ activeColor?: LsgHeaderColour; /** * Mega menu colours (desktop mega panel and the mega variant's mobile panel), * mirroring the AEM `./megaBackground`, `./megaLinkColour` and * `./megaActiveColour` selects. Undefined follows the header colours. */ megaBackground?: LsgHeaderColour; megaLinkColor?: LsgHeaderColour; megaActiveColor?: LsgHeaderColour; /** * Language switcher dropdown colours, mirroring the AEM `./languageBackground`, * `./languageLinkColour` and `./languageActiveColour` selects. Undefined keeps * the theme look. The trigger in the bar keeps the header colours. */ languageBackground?: LsgHeaderColour; languageLinkColor?: LsgHeaderColour; languageActiveColor?: LsgHeaderColour; menuOpen?: boolean; mobileLevel?: 0 | 1 | 2 | 3 | 4; activePath?: string[]; mobileSelectedLabel?: string; onMenuToggle?: () => void; onNavItemHover?: (item: LsgNavItem, level: number) => void; onDropdownClose?: () => void; onMegaItemHover?: (item: LsgNavItem, level: number) => void; onMobileItemClick?: (item: LsgNavItem, level: number) => void; onMobileBreadcrumbClick?: (level: 0 | 1 | 2 | 3 | 4) => void; children?: React.ReactNode; } export declare const LsgHeader: React.FC;