import { ReactiveController, ReactiveControllerHost } from 'lit'; import { THeaderPosition, THeaderScrollBehavior } from './types'; export interface HeaderChromeOptions { mobileBreakpoint: number; tabletBreakpoint: number; position: THeaderPosition; scrollBehavior: THeaderScrollBehavior; } /** * Shared header shell logic for `pkt-header-service` and `pkt-header-global`: * responsive width measurement (ResizeObserver → `isMobile`/`isTablet`), * scroll-to-hide (`isHidden`), body scroll-lock, and focus return when a menu * closes. * * The menu state machine, click-outside handling and the scroll-lock * *condition* stay in each element since they differ between the variants. */ export declare class HeaderChromeController implements ReactiveController { private host; private getOptions; isMobile: boolean; isTablet: boolean; isHidden: boolean; /** When true, scroll-to-hide is paused (e.g. while a menu/overlay is open). */ pauseScrollHide: boolean; private componentWidth; private resizeObserver?; private lastScrollPosition; private scrollLockToken; private lastFocusedElement; private shouldRestoreFocus; constructor(host: ReactiveControllerHost, getOptions: () => HeaderChromeOptions); hostConnected(): void; hostDisconnected(): void; /** Start measuring the header element's width. Call from `firstUpdated`. */ observe(element: HTMLElement | undefined): void; /** Recompute `isMobile`/`isTablet` (e.g. when the breakpoints change). */ refreshBreakpoints(): void; private handleScroll; setScrollLock(shouldLock: boolean): void; captureFocus(): void; flagRestoreFocus(): void; restoreFocus(): void; }