/** * THE PAINT ORDER OF EVERYTHING THE KIT PUTS AT THE TOP OF THE DOCUMENT. * * The overlays (`Dialog`, `Drawer`, `FileGalleryDialog`, `Alert`) sit on * ONE rung each, declared in their own stylesheets, so two open overlays tie and * the tie is broken by DOM order. * * The rule is therefore one line of composition rather than a mechanism: **the * body-level box exists only while the overlay is OPEN**. It is appended when it * opens and removed when it closes, DOM order is open order, and paint order * follows for free — a drawer opened from a dialog covers the dialog, a dialog * opened from a drawer covers the drawer, and neither composition has to be * picked in advance. Base UI's `Dialog.Portal` renders nothing until its popup * mounts, which is what gives every kit overlay this for nothing; `keepMounted` * would take it away. * * Holding the box while CLOSED breaks it, and breaks it silently: the slot is * claimed on the app's first paint and never re-ordered, so an always-mounted * dialog is covered by a drawer opened later. The dialog then renders perfectly * — centred, readable, correctly announced — and every control of it under the * drawer panel is dead, because `elementFromPoint` there answers the drawer. * * The rungs BESIDE the overlays are what needs naming, and they are a PUBLISHED * CONTRACT — anything outside the kit that must clear a Lotics overlay reads one * from here rather than picking a literal: * * 9999 every overlay, and `Popover` (`OVERLAY_Z`) * 10000 `Tooltip`, `Alert` (`OVERLAY_Z_ABOVE`) * 10001 a transient notification / toast (`NOTIFICATION_Z`) * 10002 the skip link (`SKIP_LINK_Z`) * * Every kit overlay now reads its rung as `--lotics-z-overlay` / * `--lotics-z-overlay-above` from its own stylesheet. These constants are the * MEASURING form of the same ladder — what `tokens_agreement.test.ts` pins the * emitted tokens against, and what an app outside the kit reads to clear one. */ /** * Where every overlay sits, and the one `Popover` writes into its panel. * * They share it on purpose. Every one of them portals to the document and takes * its body-level box only while it is open, so DOM order IS open order. One * number plus that order therefore says the same thing for a popover as for an * overlay: whatever was opened last is on top. */ export declare const OVERLAY_Z = 9999; /** * ABOVE EVERY OVERLAY — a tooltip and an alert are ABOUT the surface under them, * so neither can ever be covered by it. */ export declare const OVERLAY_Z_ABOVE: number; /** * A transient notification (a toast) reporting the outcome of an action — over * the alert on the rung below, because the action that raised it is often the * one that alert confirmed, and a report nobody can read is not a report. */ export declare const NOTIFICATION_Z: number; /** The skip link outranks everything: it is the first thing a keyboard reaches. * It shared a rung with the toast until this table gave each one a name. */ export declare const SKIP_LINK_Z: number;