/**
 * `<page-ui>` — Page container. Holds page-level chrome — header / content / footer —
and manages max-width clamps, padding scale, optional scroll-container,
and an optional sticky-header sentinel. Compose with the slot
primitives (`<header-ui>`, `<section-ui>`, `<footer-ui>`); the page's
@scope rules style them. Drop in directly, or nest inside an
`<admin-shell>`'s main column.

 *
 * @see https://ui-kit.exe.xyz/site/components/page
 *
 * Type declarations generated by scripts/build/dts-codegen.mjs from
 * the component's `.a2ui.json` sidecar(s). Edit the source `.yaml`,
 * run `npm run build:components`, then `npm run codegen:dts` to
 * regenerate; or hand-author this file fully if rich event types are
 * needed beyond what the yaml `events:` block can express.
 */

import { UIElement } from '../../core/element.js';

export class UIPage extends UIElement {
  /** Token-bound max-width clamp. `prose` (65ch) for reading pages,
`narrow` (80ch) for tight forms, `wide` (1080px) for data-rich
pages, `full` for unconstrained. Empty defers to parent / 100%.
Centered horizontally via `margin-inline: auto`.
 */
  maxWidth: '' | 'prose' | 'narrow' | 'wide' | 'full';
  /** Page-padding scale from the spacing system. Accepts `0`–`8`
(mapped to `--a-space-N`). Empty (no value) applies the
`--page-padding` token; `0` removes padding.
 */
  padding: string;
  /** Sets the page as a scroll container. `overflow-y: auto`, full
height, contained overscroll. Use when the page IS the scroll
surface (standalone pages); leave off when nested inside a parent
that already manages scroll (e.g. inside an `<admin-shell>`'s
main `<section>`).
 */
  scroll: boolean;
  /** Installs an IntersectionObserver sentinel before the first
`<header>` / `<header-ui>` child. When the sentinel scrolls out
of view the page gains `[data-header-stuck]`, which the CSS
uses to add a border + shadow to the header. No-op when no
header is present.
 */
  stickyHeader: boolean;
}
