/**
 * The Page's `lg` breakpoint width in px — the boundary between the stacked
 * "mobile" layout (sidebar collapses to a popover trigger, panel becomes a
 * dialog, virtual scrollbar hidden) and the desktop layout. Parsed once from the
 * design token; falls back to `0` if the token is unavailable.
 *
 * Single source of truth for every width-driven layout decision in Page
 * (`PageSidebar`, `PagePanel`, `PageContent`) so they can never drift apart.
 */
export declare const PAGE_LG_BREAKPOINT: number;
/**
 * Whether the given page width should use the mobile layout (below `lg`).
 * Used by `PageSidebar`/`PagePanel` to swap to their popover/dialog forms.
 */
export declare const isPageMobileWidth: (pageWidth: number | undefined) => boolean;
/**
 * Whether the virtual scrollbar should render (desktop, `lg` and above).
 *
 * Gating the sized virtual-scroll spacer on this — rather than rendering it
 * unconditionally — is what prevents the `Page.Content` feedback loop: during
 * SSR/hydration `pageWidth` is `0` and the Page stylesheet has not yet pulled
 * the spacer out of flow, so an always-rendered spacer would round-trip through
 * the `document.scrollHeight` the ResizeObserver measures ("Maximum update depth
 * exceeded"). Below `lg` the spacer is never rendered, so it can never feed back.
 */
export declare const showsPageVirtualScroll: (pageWidth: number | undefined) => boolean;
