import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js'; /** The Page presentation derived from its allocated inline size. */ export type PageView='mobile'|'desktop'; /** The logical edge that owns navigation in either Page presentation. */ export type PageNavigationPlacement='start'|'end';export interface LyraPageEventMap{'lr-nav-toggle':CustomEvent<{open:boolean;}>;} /** * `` — a semantic application/page shell that derives its mobile or desktop presentation * from its own allocated inline size. A single static navigation subtree participates in the * desktop grid and is promoted in place to a modal mobile drawer, so assigned nodes, component * instances, focus, form state, and scroll state are never cloned or replaced at a breakpoint. * * Each instance owns unique main/drawer/navigation IDs. Its skip link therefore targets its own * main landmark even when several Pages coexist. The default skip and navigation controls are * localized, and a host `aria-label` overrides the navigation landmark's localized name. * Replacement skip text and navigation-toggle glyph content remain visual only: their assigned * subtrees are inert and hidden from assistive technology, while skip text still names the outer * link. * * `disable-sticky` is a whitespace-token attribute accepting `banner`, `header`, `subheader`, * `menu`, and `aside`. A token only disables that region; unrelated sticky regions keep working. * Slotted controls carrying `data-toggle-nav` toggle the mobile drawer, matching the documented * light-DOM Page pattern without adding a stale `nav-state` property. * Every custom `navigation-toggle` and each composed descendant that actually receives focus * receive component-owned `aria-haspopup="dialog"`, synchronized `aria-expanded`, a localized * label when unnamed, and a relationship sourced from the real drawer. Current browsers expose * the Page host for that inward shadow relationship. Replacement, removal, and disconnect restore * exact authored baselines, including writes made while ownership was active. Disabled, * `aria-disabled`, hidden, or inert assigned controls do not toggle the drawer. * * @customElement lr-page * @attr {string} disable-sticky - Whitespace-separated Page regions whose sticky positioning is * disabled: `banner`, `header`, `subheader`, `menu`, and `aside`. * @slot - Main content. * @slot aside - Complementary content beside the main region. * @slot banner - A page-wide notice above the header. * @slot footer - Page-wide footer content. * @slot header - Primary page header content. * @slot main-footer - Content after the main body but inside the main landmark. * @slot main-header - Content before the main body but inside the main landmark. * @slot menu - A compact menu beside the main region. * @slot navigation - Primary navigation content. * @slot navigation-footer - Content after the navigation links. * @slot navigation-header - Content before the navigation links. * @slot navigation-toggle - Custom controls that toggle mobile navigation and each receive the * managed ARIA relationship described above. * @slot navigation-toggle-icon - Replaces the default toggle's menu glyph as inert, decorative * visual content. * @slot skip-to-content - Replaces the localized skip-link text as inert visual content; its * descriptive text names the outer skip link. * @slot subheader - A secondary header row. * @event lr-nav-toggle - A cancelable proposed `navOpen` state from `showNavigation()`, * `hideNavigation()`, `toggleNavigation()`, or a built-in dismissal (backdrop click, Escape, the * default navigation-toggle button). Call `preventDefault()` to leave `navOpen` unchanged. * `detail: { open }`. * @csspart aside - Wrapper for the `aside` slot and the complementary landmark. * @csspart banner - Wrapper for the `banner` slot. * @csspart base - Compatibility name for the root Page wrapper; use `page`. * @csspart body - Desktop grid/mobile stack containing menu, navigation, main, and aside. * @csspart dialog-wrapper - Mobile backdrop and drawer positioning layer; display-contents on desktop. * @csspart drawer - Navigation's modal surface on mobile; display-contents on desktop. * @csspart footer - Page-wide footer landmark. * @csspart header - Primary page header landmark. * @csspart main - The unique main landmark. * @csspart main-content - Wrapper for the default slot. * @csspart main-footer - Wrapper for the `main-footer` slot. * @csspart main-header - Wrapper for the `main-header` slot. * @csspart menu - Wrapper for the `menu` slot. * @csspart navigation - The primary navigation landmark. * @csspart navigation-desktop - Desktop compatibility name on the same node as `navigation`. * @csspart navigation-footer - Wrapper for the `navigation-footer` slot. * @csspart navigation-header - Wrapper for the `navigation-header` slot. * @csspart navigation-toggle - The default mobile navigation button. * @csspart navigation-toggle-icon - The default button's icon wrapper. * @csspart page - Root Page wrapper; the same node as `base`. * @csspart skip-to-content - The focus-revealed skip link. * @csspart subheader - Wrapper for the `subheader` slot. * @cssprop [--lr-page-aside-width=auto] - Desktop aside column width. * @cssprop [--lr-page-banner-height=0px] - Minimum banner height and sticky offset. * @cssprop [--lr-page-header-height=0px] - Minimum header height and sticky offset. * @cssprop [--lr-page-main-width=1fr] - Desktop main column width. * @cssprop [--lr-page-menu-width=auto] - Desktop menu column width. * @cssprop [--lr-page-subheader-height=0px] - Minimum subheader height and sticky offset. * Interaction-state properties below are resolved as inline fallbacks, so setting one on the Page * or any ancestor themes only its named target without replacing shared design tokens. * @cssprop [--lr-page-skip-to-content-hover-bg=var(--lr-color-brand-quiet)] - Background of the * hovered skip link. * @cssprop [--lr-page-skip-to-content-hover-color=var(--lr-color-brand)] - Text color of the * hovered skip link. * @cssprop [--lr-page-skip-to-content-active-bg=color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active))] - Background of the pressed skip link. * @cssprop [--lr-page-skip-to-content-active-color=var(--lr-color-brand)] - Text color of the * pressed skip link. * @cssprop [--lr-page-navigation-toggle-hover-bg=var(--lr-color-brand-quiet)] - Background of a * hovered default or slotted navigation toggle. * @cssprop [--lr-page-navigation-toggle-hover-color=var(--lr-color-brand)] - Text color of a * hovered default or slotted navigation toggle. * @cssprop [--lr-page-navigation-toggle-active-bg=color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active))] - Background of a pressed default or slotted navigation toggle. * @cssprop [--lr-page-navigation-toggle-active-color=var(--lr-color-brand)] - Text color of a * pressed default or slotted navigation toggle. * @cssprop [--lr-page-navigation-backdrop-bg=var(--lr-color-overlay)] - Background of the open * mobile navigation backdrop. * @cssprop [--lr-page-navigation-drawer-bg=var(--lr-color-surface-overlay)] - Background of the * mobile navigation drawer. * @cssprop [--lr-page-navigation-drawer-shadow=var(--lr-shadow-l)] - Shadow of the mobile * navigation drawer. * @cssprop [--aside-width] - Web Awesome alias for `--lr-page-aside-width`. * @cssprop [--banner-height] - Web Awesome alias for `--lr-page-banner-height`. * @cssprop [--header-height] - Web Awesome alias for `--lr-page-header-height`. * @cssprop [--main-width] - Web Awesome alias for `--lr-page-main-width`. * @cssprop [--menu-width] - Web Awesome alias for `--lr-page-menu-width`. * @cssprop [--subheader-height] - Web Awesome alias for `--lr-page-subheader-height`. * @status stable * @since 8.0.0 */ export declare class LyraPage extends LyraElement{ /** `disable-sticky` is read only by `:host([disable-sticky~="..."])` rules in page.styles.ts, * so it is deliberately not a reactive property. Declared here so authoring the documented * attribute does not draw an "unknown attribute" dev warning. */ protected static readonly knownUnobservedAttributes:readonly string[];static styles:import("lit").CSSResultGroup[]; /** Presentation derived from the Page's allocated inline size. It begins at `desktop` so server * output is deterministic, then reflects the first live allocation measurement. */ view:PageView; /** Whether mobile navigation is open. Desktop navigation remains visible independently. */ navOpen:boolean; /** Allocation breakpoint. Bare numbers/px, `rem`, and `em` use the shared CSS-length resolver; * invalid values fall back to `768px`. */ mobileBreakpoint:string; /** Logical edge occupied by desktop navigation and the mobile drawer. */ navigationPlacement:PageNavigationPlacement; /** Hides the default mobile toggle. Slotted `data-toggle-nav` controls remain available. */ disableNavigationToggle:boolean; /** Host-level accessible-name override forwarded to the internal navigation landmark. */ private accessibleLabel;private readonly mainId;private readonly navigationId;private readonly drawerId;private readonly skipTargetId;private readonly skipLabelId; /** SSR-reachable native fragment relationship; private so it does not invent another IDL API. */ private fragmentTargetId; /** SSR-reachable native focusability for the fragment target. */ private fragmentTabIndex;private resizeObserver?;private resizeView?;private overlayHandle?;private navigationTriggerOwner?;private customToggle?;private customToggles;private readonly customToggleOwnership;private mainElement?;private drawerElement?;connectedCallback():void;disconnectedCallback():void;protected firstUpdated(changed:PropertyValues):void;protected willUpdate(changed:PropertyValues):void;protected updated(changed:PropertyValues):void;private observeAllocation;private readonly onWindowResize;private measureAllocation; /** Applies an authoritative allocation measurement. Kept separate from ResizeObserver delivery * so reconnect and deterministic browser contracts exercise the same classification path. */ private applyMeasuredInlineSize;private syncOverlay; /** Resolves only after overlay cleanup has released Page-owned inerting. A disappearing opening * owner falls back deterministically without changing the captured-focus behavior of a drawer * opened programmatically. */ private readonly resolveNavigationRestoreTarget;private syncCustomToggle;private releaseCustomToggleA11y;private isUnavailableCustomToggle;private rememberTriggerAndToggle;private readonly onDefaultToggleClick;private readonly onToggleSlotClick;private readonly onPageClick;private readonly onBackdropClick;private readonly onSkipClick; /** Emits the cancelable lr-nav-toggle proposal before touching navOpen; a defaultPrevented * request leaves it unchanged. Shared by every mutation path -- showNavigation(), * hideNavigation(), toggleNavigation(), and the built-in drawer dismissals that call them. */ private requestNavOpen; /** Open mobile navigation. Desktop navigation is already visible, but the state is retained so * an open drawer can move through desktop and back without replacing its content. */ showNavigation():void; /** Close mobile navigation. */ hideNavigation():void; /** Toggle mobile navigation. */ toggleNavigation():void; /** Number of vertically visible CSS pixels for `element`, clamped to the current viewport. */ visiblePixelsInViewport(element:HTMLElement|null):number;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-page':LyraPage;}}