@mkbabb/glass-ui 10.1.0 → 10.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/MIGRATION.md +70 -0
  2. package/dist/aurora.js +29 -29
  3. package/dist/{command-C-5xSEJ2.js → command-CatrAsrl.js} +1 -1
  4. package/dist/command.js +1 -1
  5. package/dist/components/_shared/overlay/participation.d.ts +13 -1
  6. package/dist/components/dock/DockControl.vue.d.ts +3 -0
  7. package/dist/components/dock/DockTrigger.vue.d.ts +5 -5
  8. package/dist/components/dock/GlassDock.vue.d.ts +5 -5
  9. package/dist/components/dock/composables/dockContext.d.ts +16 -2
  10. package/dist/components/dock/composables/dockMorphMeasure.d.ts +31 -7
  11. package/dist/components/dock/composables/useDockMorph.d.ts +5 -0
  12. package/dist/components/dock/composables/useDockRun.d.ts +5 -0
  13. package/dist/components/dock/constants.d.ts +10 -0
  14. package/dist/components/dock/styles/controls/triggers.css +1 -1
  15. package/dist/components/dock/styles/index.css +1 -1
  16. package/dist/components/sheet/styles.css +1 -1
  17. package/dist/components/skeleton/Skeleton.vue.d.ts +6 -0
  18. package/dist/content-BhcJH1bI.js +22 -0
  19. package/dist/data-table-Cs93-uY7.js +511 -0
  20. package/dist/data-table.js +1 -1
  21. package/dist/dock.js +631 -479
  22. package/dist/easing.js +3 -3
  23. package/dist/glass-ui.css +1 -1
  24. package/dist/glass-ui.js +8 -8
  25. package/dist/labeled-field.js +1 -1
  26. package/dist/{menu-BnmCOa3y.js → menu-DaYAZiVW.js} +6 -3
  27. package/dist/menu.js +1 -1
  28. package/dist/motion-core.js +11 -11
  29. package/dist/participation-B7UFdgXB.js +55 -0
  30. package/dist/{popover-DA87hFBx.js → popover-BdpoE4Ar.js} +9 -4
  31. package/dist/popover.js +1 -1
  32. package/dist/{select-fy3vtArm.js → select-BiF0FCZf.js} +26 -24
  33. package/dist/select.js +1 -1
  34. package/dist/{sheet-BQJyER59.js → sheet-DmJxgAHc.js} +1 -1
  35. package/dist/sheet.js +1 -1
  36. package/dist/{slider-5ChjjWSR.js → slider-5uoY-cLG.js} +1 -1
  37. package/dist/slider.js +1 -1
  38. package/dist/{tabs-rdRXKXxd.js → tabs-C5sC0fBE.js} +1 -1
  39. package/dist/tabs.js +1 -1
  40. package/dist/{tooltip-DhTHhtJN.js → tooltip-CZVubnJf.js} +3 -3
  41. package/dist/tooltip.js +1 -1
  42. package/package.json +1 -1
  43. package/dist/content-So3j6SOe.js +0 -18
  44. package/dist/data-table-Ba_uTfPc.js +0 -493
  45. package/dist/participation-Di4UHbzk.js +0 -42
package/MIGRATION.md CHANGED
@@ -5,6 +5,76 @@ records the breaking changes that landed in that cut, newest first. Clean breaks
5
5
  — no legacy aliases, no back-compat shims (L invariant 4); every break is a one-line
6
6
  rename or import re-point per call site.
7
7
 
8
+ ## 10.1.2
9
+
10
+ Two behaviour changes, no type change. **A custom dock seat must now carry
11
+ `data-glass-dock-seat` to rove.**
12
+
13
+ - **O-101: a morph reserves the size it settles at.** The dock no longer reserves an
14
+ old width on an expand or for the rest of a morph when its full pane changes (a
15
+ breakpoint that swaps its controls) or its host changes (a viewport or container that
16
+ resizes) while it is collapsed or morphing. So the page no longer scrolls sideways
17
+ for the length of the morph, and the box no longer snaps at settle. Both endpoints are
18
+ the root laid out at rest in their posture, read from the live layout on every
19
+ capture, under whatever constrains the dock, including while it morphs. A consumer
20
+ that clipped the page or the dock band, or overrode `--dock-expanded-px`, to hide that
21
+ overflow can delete the workaround. A dock whose pane and host are stable morphs as
22
+ before.
23
+
24
+ - The dock run roves a direct child only when it carries `data-glass-dock-seat`.
25
+ `DockControl`, `DockTrigger` and `DockBackgroundToggle` set it. A consumer's own seat
26
+ that should share the run's one tab stop and answer its arrow keys (a `RouterLink`, a
27
+ bespoke button, a `[role=button]` element) adds the attribute itself:
28
+ `<RouterLink data-glass-dock-seat to="/a">`. A `DockControl as-child` already sets it
29
+ on the child.
30
+ - A declared seat must stay focusable. A custom seat that is disabled carries
31
+ `aria-disabled="true"` and blocks its own activation, never the native `disabled`
32
+ attribute: `<button data-glass-dock-seat aria-disabled="true">`. A native-disabled seat
33
+ that holds the run's stop takes every seat out of the Tab order. A disabled
34
+ `DockTrigger` now renders `aria-disabled`, like `DockControl`, so it stays in the Tab
35
+ and arrow order as a disabled stop where 10.1.1 skipped it, and paints disabled from
36
+ `.dock-trigger[aria-disabled="true"]`. A rule of yours that dims or suppresses a dock
37
+ trigger on `:disabled` keys on `[aria-disabled="true"]` instead.
38
+ - An undeclared child is left alone. It keeps its natural tab stop and its own keys, so a
39
+ filter trigger, a settings button, a handle, an input pair, a dark toggle or a composite
40
+ stays in the Tab order. A consumer that pulled such a control out of its dock run, or
41
+ restored its `tabindex`, to get it back into the Tab order can undo that.
42
+ - `.dock-run` carries `role="toolbar"` and `aria-orientation` only when every child is a
43
+ declared seat, glass's `<DockSeparator>` and the native
44
+ `<select aria-hidden="true" tabindex="-1">` a named `Select` renders inside a `<form>`
45
+ aside. A consumer's own `role="separator"` splitter, or an `aria-hidden` wrapper around a
46
+ control that still takes Tab, is an undeclared child and voids the claim. A dock whose run mixes declared seats
47
+ with other controls no longer announces as a toolbar. To keep the role, declare every
48
+ seat, or move the undeclared controls to `#persistent` / `#persistent-end`.
49
+ - A test or probe that read `role="toolbar"` off an empty run, or off a run of plain
50
+ buttons, now finds no role. Seat the run with declared controls.
51
+ - Atlas and value.js: the contract and the build path are in `CHANGELOG.md` §10.1.2.
52
+
53
+ ## 10.1.1
54
+
55
+ One type-level change, below; no runtime break. Behaviour a consumer may notice:
56
+
57
+ - **`DockContext` gains a required `expanded: ComputedRef<boolean>`.** The dock's posture,
58
+ whose falling edge closes the overlays its seats opened. A consumer that calls the
59
+ exported `provideDockContext` itself (none of the sibling repos does) passes it. A
60
+ `GlassDock` provides it; nothing changes for a consumer that only reads the context.
61
+ - **A dock collapse closes the menus, popovers and selects its seats opened, and focus
62
+ that stood in them moves to the dock's summary.** The seats are the default slot's; an
63
+ overlay opened from `#persistent` or `#persistent-end` stays open, since its trigger is
64
+ still there. A consumer that closed them by hand on collapse can delete that code. To keep the dock open while an overlay is up, use the
65
+ existing `keepDockOpen` (Popover) or `keepOpen`/`release`.
66
+ - **The dock run no longer roves a seat that holds controls.** A container seat (a `div`
67
+ holding a ToggleGroup, a slider, a band of buttons) and a composite root seated directly
68
+ (a RadioGroup) keep their own tab order and their own arrow keys. Arrows travel only the
69
+ seats that are controls. Nothing to change unless a consumer relied on the run focusing
70
+ a container's first control.
71
+ - **Overlay content takes its z rung from its role.** `DropdownMenuContent` and
72
+ `DropdownMenuSubContent` now paint at `--z-popover`. A consumer that added `z-popover` (or
73
+ any z class) through `class` keeps its class: the consumer class merges last.
74
+ - **`SheetContent` carries the `fixed` utility.** Sheets that rendered in page flow now
75
+ open at their edge. A consumer override that positioned the sheet itself can be deleted.
76
+ - **New:** `<Skeleton shimmer>`.
77
+
8
78
  ## 10.0.0 — ~~UNRELEASED~~ [2026-09-22 · LIVE: tag `v10.0.0` at `dcb0f711`, published with provenance by `release.yml` run 35804200390 attempt 1, `latest` on the registry, unpacked 2,915,902 B = the ratchet datum]
9
79
 
10
80
  **Status.** `package.json` declares ~~`9.0.0`~~ `10.0.0` [2026-09-22 · at the cut, `58f0d243`]
package/dist/aurora.js CHANGED
@@ -1,8 +1,8 @@
1
- import { t as e } from "./_plugin-vue_export-helper-B3ysoDQm.js";
2
- import { t } from "./usePointerVelocityField-Lx26_Yap.js";
3
- import { a as n, c as r } from "./pointerFieldMappings-DXwlU5uj.js";
4
- import { t as i } from "./useScrollProgress-Bq-KPaKM.js";
5
- import { t as a } from "./useIntersectionPause-CzKR3EyP.js";
1
+ import { t as e } from "./useIntersectionPause-CzKR3EyP.js";
2
+ import { t } from "./_plugin-vue_export-helper-B3ysoDQm.js";
3
+ import { t as n } from "./usePointerVelocityField-Lx26_Yap.js";
4
+ import { a as r, c as i } from "./pointerFieldMappings-DXwlU5uj.js";
5
+ import { t as a } from "./useScrollProgress-Bq-KPaKM.js";
6
6
  import { t as o } from "./value-DMhh2R94.js";
7
7
  import { cssToOklch as s, deriveHue as c, gamutMapStop as l, oklchStopToHex as u, oklchToLinear as d, warmCatchLight as f } from "./color.js";
8
8
  import { a as p, c as m, i as h, l as g, n as _, o as v, r as y, s as b, t as x } from "./color.glsl-DTJhdekG.js";
@@ -724,13 +724,13 @@ var Ie = 8, Le = 8, Re = 1, ze = .115, Be = .004, Ve = .06, z = {
724
724
  saturation: .92,
725
725
  paperGrain: .008
726
726
  }, B = .001, Ue = 1e-4;
727
- function V(e, t, i) {
728
- let a = r(e);
729
- if (i > 0) {
727
+ function V(e, t, n) {
728
+ let a = i(e);
729
+ if (n > 0) {
730
730
  let t = e.acceleration.value, n = e.velocity.value, r = -(t.x * n.x + t.y * n.y);
731
731
  r > 0 && (a.burst = Math.min(1, a.burst + r * 3));
732
732
  }
733
- let o = n(a, t);
733
+ let o = r(a, t);
734
734
  return {
735
735
  x: o.cx,
736
736
  y: o.cy,
@@ -2324,12 +2324,12 @@ var Bt = 3.7;
2324
2324
  function Vt(e, t, n, r) {
2325
2325
  return r ? Bt : e.interactivity?.scroll === !0 ? t + Math.min(1, Math.max(0, n)) * e.breathPeriod : t;
2326
2326
  }
2327
- function Ht(e, n, r = {}) {
2327
+ function Ht(e, t, r = {}) {
2328
2328
  let i = Lt(r), a = Rt(r.mode), o = e.style.opacity, s = (t) => {
2329
2329
  a.opaque && (e.style.opacity = String(zt(t)));
2330
2330
  };
2331
- s(n.alpha);
2332
- let c = !r.forceWebGLUnderSoftwareRaster && F(), l = n, u = 0, d = t({
2331
+ s(t.alpha);
2332
+ let c = !r.forceWebGLUnderSoftwareRaster && F(), l = t, u = 0, d = n({
2333
2333
  mass: 1,
2334
2334
  damping: .9,
2335
2335
  attractorResponse: .28,
@@ -2463,8 +2463,8 @@ function Gt(e) {
2463
2463
  r = !0, cancelAnimationFrame(t), n !== void 0 && clearTimeout(n);
2464
2464
  };
2465
2465
  }
2466
- function Kt(e, t, n = {}, r = {}) {
2467
- let o = Ut(t), s = r.renderMode === "css", c = null, l = null, u = null, d = null, f = null, p = null, m = !1, h = M(!1), g = M(!1), _ = 0, v = 0, y = !1;
2466
+ function Kt(t, n, r = {}, i = {}) {
2467
+ let o = Ut(n), s = i.renderMode === "css", c = null, l = null, u = null, d = null, f = null, p = null, m = !1, h = M(!1), g = M(!1), _ = 0, v = 0, y = !1;
2468
2468
  function b() {
2469
2469
  if (g.value = !1, typeof requestAnimationFrame != "function" || (v = performance.now() + 500, _ !== 0)) return;
2470
2470
  let e = (t) => {
@@ -2479,16 +2479,16 @@ function Kt(e, t, n = {}, r = {}) {
2479
2479
  function x() {
2480
2480
  _ !== 0 && cancelAnimationFrame(_), _ = 0, g.value = !1;
2481
2481
  }
2482
- let S = ue(s ? ee() : O("webgl2")), C = i({
2483
- target: e,
2482
+ let S = ue(s ? ee() : O("webgl2")), C = a({
2483
+ target: t,
2484
2484
  trackExit: !0,
2485
2485
  enabled: k(() => !s && o().interactivity?.scroll === !0)
2486
2486
  });
2487
2487
  d = P(C, (e) => c?.setScrollProgress(e), { flush: "sync" });
2488
- let w = n.mode === "capture" || n.initStrategy === "eager";
2488
+ let w = r.mode === "capture" || r.initStrategy === "eager";
2489
2489
  function T(e) {
2490
2490
  let t = e instanceof Error ? e : Error(String(e));
2491
- S.value = te(S.value.engine, S.value.adapter, t), n.onInitError?.(t);
2491
+ S.value = te(S.value.engine, S.value.adapter, t), r.onInitError?.(t);
2492
2492
  }
2493
2493
  async function E() {
2494
2494
  if (m || !c) return;
@@ -2505,15 +2505,15 @@ function Kt(e, t, n = {}, r = {}) {
2505
2505
  }, { deep: !0 }));
2506
2506
  }
2507
2507
  return ce(() => {
2508
- let t = e.value;
2509
- if (!t || s) return;
2508
+ let n = t.value;
2509
+ if (!n || s) return;
2510
2510
  try {
2511
- c = Ht(t, o(), {
2511
+ c = Ht(n, o(), {
2512
2512
  initStrategy: "deferred",
2513
- ...n,
2513
+ ...r,
2514
2514
  onRendererStatus: (e) => {
2515
- let t = e.phase === "ready", r = t && !h.value && y;
2516
- S.value = e, h.value = t, t ? r && b() : x(), n.onRendererStatus?.(e);
2515
+ let t = e.phase === "ready", n = t && !h.value && y;
2516
+ S.value = e, h.value = t, t ? n && b() : x(), r.onRendererStatus?.(e);
2517
2517
  }
2518
2518
  });
2519
2519
  } catch (e) {
@@ -2524,14 +2524,14 @@ function Kt(e, t, n = {}, r = {}) {
2524
2524
  E();
2525
2525
  return;
2526
2526
  }
2527
- p = a(e, {
2527
+ p = e(t, {
2528
2528
  pause: () => c?.pause("off-screen-io"),
2529
2529
  resume: () => c?.resume("off-screen-io")
2530
2530
  }, { pauseWhenHidden: !1 });
2531
- let r = p.isIntersecting;
2532
- u = P(r, (e) => {
2531
+ let i = p.isIntersecting;
2532
+ u = P(i, (e) => {
2533
2533
  !e || m || f || (f = Gt(() => {
2534
- f = null, r.value && E();
2534
+ f = null, i.value && E();
2535
2535
  }));
2536
2536
  }, { immediate: !0 });
2537
2537
  }), se(() => {
@@ -2709,7 +2709,7 @@ function tn(e, t) {
2709
2709
  }
2710
2710
  //#endregion
2711
2711
  //#region src/components/aurora/Aurora.vue?vue&type=script&setup=true&lang.ts
2712
- var nn = ["data-aurora-substrate", "data-aurora-settled"], rn = /*#__PURE__*/ e(/* @__PURE__ */ re({
2712
+ var nn = ["data-aurora-substrate", "data-aurora-settled"], rn = /*#__PURE__*/ t(/* @__PURE__ */ re({
2713
2713
  __name: "Aurora",
2714
2714
  props: {
2715
2715
  config: { default: () => z },
@@ -2,7 +2,7 @@ import { t as e } from "./class-names-FlXcvRRT.js";
2
2
  import { t } from "./primitive-B2t2jdqM.js";
3
3
  import { t as n } from "./selection-DqIULxRG.js";
4
4
  import { n as r, t as i } from "./DialogContent-CwIBvou_.js";
5
- import { t as a } from "./participation-Di4UHbzk.js";
5
+ import { t as a } from "./participation-B7UFdgXB.js";
6
6
  import { t as o } from "./rowClass-DYOXwxhO.js";
7
7
  import { computed as s, createBlock as c, createCommentVNode as l, createElementBlock as u, createTextVNode as d, createVNode as f, defineComponent as p, mergeProps as m, normalizeClass as h, openBlock as g, renderSlot as _, toDisplayString as v, unref as y, useAttrs as b, withCtx as x } from "vue";
8
8
  import { ComboboxContent as S, ComboboxEmpty as C, ComboboxGroup as w, ComboboxInput as T, ComboboxItem as E, ComboboxLabel as D, ComboboxRoot as O, ComboboxSeparator as k } from "reka-ui";
package/dist/command.js CHANGED
@@ -1,2 +1,2 @@
1
- import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c } from "./command-C-5xSEJ2.js";
1
+ import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c } from "./command-CatrAsrl.js";
2
2
  export { r as Command, t as CommandDialog, s as CommandEmpty, a as CommandGroup, e as CommandInput, n as CommandItem, o as CommandList, i as CommandSeparator, c as CommandShortcut };
@@ -43,6 +43,9 @@ export declare function useHoldToken(target: () => HoldTarget | null | undefined
43
43
  export interface DockPortalAttrs {
44
44
  "data-glass-dock-portal"?: string;
45
45
  "data-glass-dock-owner"?: string;
46
+ /** Present when the overlay was opened from the dock's face: the collapse closes
47
+ * it, and the dock reads this to know focus inside it is about to lose its place. */
48
+ "data-glass-dock-face"?: string;
46
49
  }
47
50
  export interface DockParticipation {
48
51
  /** Spread onto the portalled content root. Empty outside a dock. */
@@ -53,7 +56,8 @@ export interface DockParticipation {
53
56
  release: () => void;
54
57
  }
55
58
  /**
56
- * Dock participation for a portalled overlay: the stamp, and the one token.
59
+ * Dock participation for a portalled overlay: the stamp, the one token, and the
60
+ * close on collapse.
57
61
  *
58
62
  * `hold` is the DECLARATIVE arm — pass a ref/getter that is true exactly while
59
63
  * the surface should pin the dock open and the token is driven for you. The
@@ -63,4 +67,12 @@ export interface DockParticipation {
63
67
  export declare function useDockParticipation(o?: {
64
68
  hold?: MaybeRefOrGetter<boolean>;
65
69
  kind?: DockHoldKind;
70
+ /**
71
+ * Close this overlay. Called on the dock's COLLAPSE edge, so a dropdown or
72
+ * popover a seat of the FACE opened never outlives the posture it was opened
73
+ * from. The collapse owns the close: the overlay states how it closes, the dock
74
+ * says when. Outside the face (a `#persistent` control, whose trigger stays
75
+ * painted and live when collapsed) and outside a dock it is never called.
76
+ */
77
+ close?: () => void;
66
78
  }): DockParticipation;
@@ -15,6 +15,9 @@ import { type ButtonHTMLAttributes, type Component, type HTMLAttributes } from "
15
15
  * `--dock-control-size` (≥44px on coarse via the density clamp) — hit box ≠ paint
16
16
  * box. `overflow: visible` keeps the painted inset unclipped.
17
17
  *
18
+ * A DECLARED SEAT. The host carries `data-glass-dock-seat` (`DOCK_SEAT_ATTR`), so a
19
+ * control seated directly in a dock run is roved by it (atlas G-4, b-ii).
20
+ *
18
21
  * Role rides the consumer: an `active` control stamps `aria-pressed` (the
19
22
  * AT-selectable semantic) + `data-active` (the CSS hook reading the
20
23
  * `--dock-control-active-bg` "selected reads as glass" tier — never a saturated
@@ -4,15 +4,15 @@ type __VLS_Props = {
4
4
  for?: "select" | "dropdown" | "popover";
5
5
  class?: HTMLAttributes["class"];
6
6
  };
7
- declare var __VLS_8: {}, __VLS_16: {}, __VLS_30: {}, __VLS_39: {};
7
+ declare var __VLS_14: {}, __VLS_22: {}, __VLS_42: {}, __VLS_57: {};
8
8
  type __VLS_Slots = {} & {
9
- default?: (props: typeof __VLS_8) => any;
9
+ default?: (props: typeof __VLS_14) => any;
10
10
  } & {
11
- icon?: (props: typeof __VLS_16) => any;
11
+ icon?: (props: typeof __VLS_22) => any;
12
12
  } & {
13
- default?: (props: typeof __VLS_30) => any;
13
+ default?: (props: typeof __VLS_42) => any;
14
14
  } & {
15
- default?: (props: typeof __VLS_39) => any;
15
+ default?: (props: typeof __VLS_57) => any;
16
16
  };
17
17
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
18
18
  for: "select" | "dropdown" | "popover";
@@ -1,15 +1,15 @@
1
1
  import { type DockProps } from "./composables/useDockShellProps.js";
2
- declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {}, __VLS_7: {}, __VLS_9: {};
2
+ declare var __VLS_1: {}, __VLS_9: {}, __VLS_11: {}, __VLS_13: {}, __VLS_15: {};
3
3
  type __VLS_Slots = {} & {
4
4
  persistent?: (props: typeof __VLS_1) => any;
5
5
  } & {
6
- default?: (props: typeof __VLS_3) => any;
6
+ default?: (props: typeof __VLS_9) => any;
7
7
  } & {
8
- collapsed?: (props: typeof __VLS_5) => any;
8
+ collapsed?: (props: typeof __VLS_11) => any;
9
9
  } & {
10
- search?: (props: typeof __VLS_7) => any;
10
+ search?: (props: typeof __VLS_13) => any;
11
11
  } & {
12
- 'persistent-end'?: (props: typeof __VLS_9) => any;
12
+ 'persistent-end'?: (props: typeof __VLS_15) => any;
13
13
  };
14
14
  declare const __VLS_base: import("vue").DefineComponent<DockProps, {
15
15
  expanded: import("vue").Ref<boolean, boolean>;
@@ -1,4 +1,4 @@
1
- import type { ComputedRef } from "vue";
1
+ import { type ComputedRef, type InjectionKey } from "vue";
2
2
  export type DockOrientation = "horizontal" | "vertical";
3
3
  /**
4
4
  * What KIND of hold a token is. The two are different facts about the dock and
@@ -46,10 +46,24 @@ export interface DockContext {
46
46
  * popover is not a finger).
47
47
  */
48
48
  held: ComputedRef<boolean>;
49
+ /**
50
+ * The dock's POSTURE — `true` while the expanded face is the one painted. Its
51
+ * falling edge IS the collapse, and every overlay a seat OF THE FACE opened closes
52
+ * on it (`useDockParticipation`'s `close`): a menu left standing over a collapsed
53
+ * dock points at a control that is no longer there. A `#persistent` control is
54
+ * still there, so what it opened stays (`DockFace`, below). One writer (the dock),
55
+ * one edge, no timer.
56
+ */
57
+ expanded: ComputedRef<boolean>;
49
58
  }
50
- export declare const DOCK_CONTEXT_KEY: import("vue").InjectionKey<DockContext>;
59
+ export declare const DOCK_CONTEXT_KEY: InjectionKey<DockContext>;
51
60
  export declare function provideDockContext(context: DockContext): void;
52
61
  /** Strict — throws when used outside `<GlassDock>`. */
53
62
  export declare const useDockContext: () => DockContext;
54
63
  /** Befitting silent default for primitives that may render outside a dock. */
55
64
  export declare const useOptionalDockContext: () => DockContext | null;
65
+ export declare const DockFace: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
66
+ [key: string]: any;
67
+ }>[] | undefined, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
68
+ /** `true` for a descendant of the dock's face, the region the collapse takes away. */
69
+ export declare function useInDockFace(): boolean;
@@ -1,16 +1,40 @@
1
1
  import { type Ref } from "vue";
2
+ type Axis = "horizontal" | "vertical";
2
3
  export interface UseDockExpandedSizeOptions {
3
4
  rootEl: Ref<HTMLElement | null>;
4
5
  contentEl: Ref<HTMLElement | null>;
5
6
  expandedEl: Ref<HTMLElement | null>;
6
7
  collapsedEl: Ref<HTMLElement | null>;
7
- axis: Ref<"horizontal" | "vertical">;
8
- expanded: Ref<boolean>;
8
+ axis: Ref<Axis>;
9
+ }
10
+ export interface UseDockExpandedSizeReturn {
11
+ /**
12
+ * Measure the endpoints now. The morph calls this when it arms, after the posture's
13
+ * DOM is patched and before `[data-morphing]` reserves one.
14
+ */
15
+ measure: () => void;
9
16
  }
10
17
  /**
11
- * Measure the dock's two rendered pane compositions. The inactive pane remains
12
- * laid out (visibility, never display, hides it), so the first morph can derive
13
- * both endpoints from real content—coarse controls bring their own 44px floor;
14
- * non-interactive visuals receive no invented one.
18
+ * Measure the dock's two endpoints, `--dock-expanded-px` and `--dock-collapsed-px`.
19
+ *
20
+ * An endpoint is the root's box at rest in its posture, laid out from the live DOM on
21
+ * every capture (`restSize`). Nothing is latched but each posture's chrome, the root
22
+ * less its pane, read only from a root at rest in that posture (no `[data-morphing]`).
23
+ * The chrome holds padding, border, gaps and the persistent regions, none of which
24
+ * depends on the host. So an endpoint follows the pane and the host in every posture and
25
+ * through a morph (O-101, O-101a).
26
+ *
27
+ * The expanded endpoint is read in both postures, since a morph reserves it in both
28
+ * directions. The collapsed endpoint is read while the dock is collapsed, where its pane
29
+ * lays out; while expanded it keeps the last value, which the next collapse re-reads
30
+ * when it arms. The posture is the DOM's (the full pane's `.is-active`), never the
31
+ * posture ref, which flips before the DOM is patched: no endpoint can be read from a
32
+ * box laid out in the other posture (the W7 MORPH guard, BK #47).
33
+ *
34
+ * The capture runs when the morph arms (`measure`), on a ResizeObserver hit on the root,
35
+ * its parent (the host constraint), the layers, both panes or any pane's direct child,
36
+ * on a MutationObserver record in either pane, on a window resize (in the resize step,
37
+ * before the frame's layout), and once fonts are ready.
15
38
  */
16
- export declare function useDockExpandedSize(options: UseDockExpandedSizeOptions): void;
39
+ export declare function useDockExpandedSize(options: UseDockExpandedSizeOptions): UseDockExpandedSizeReturn;
40
+ export {};
@@ -11,6 +11,11 @@ export interface UseDockMorphOrchestratorOptions {
11
11
  outerActiveLayer: Ref<string>;
12
12
  /** Notifies the shell when the spring arms and settles. */
13
13
  onMorphActiveChange?: (active: boolean) => void;
14
+ /**
15
+ * Measures the endpoints from the posture just patched in (`useDockExpandedSize`'s
16
+ * `measure`). Called when the morph arms, before `[data-morphing]` reserves one.
17
+ */
18
+ measure: () => void;
14
19
  }
15
20
  export interface UseDockMorphOrchestratorReturn {
16
21
  /** The outer face that currently owns layout and interaction. */
@@ -16,5 +16,10 @@ export interface UseDockRunReturn {
16
16
  reach: (seat: HTMLElement) => void;
17
17
  /** Re-derive the tab stop. Called on mount, on focus moves, and on content change. */
18
18
  syncRoving: () => void;
19
+ /**
20
+ * True while the run has a declared seat and every child is one, glass's
21
+ * `<DockSeparator>` and reka's form `<select>` aside: the run's `role="toolbar"`.
22
+ */
23
+ toolbar: Readonly<Ref<boolean>>;
19
24
  }
20
25
  export declare function useDockRun(options: UseDockRunOptions): UseDockRunReturn;
@@ -49,3 +49,13 @@ export declare const HOVER_INTENT_MS = 60;
49
49
  */
50
50
  export declare const DOCK_COLLAPSE_DELAY_MS = 3600;
51
51
  export declare const MORPH_SETTLE_MS = 840;
52
+ /**
53
+ * THE DECLARED SEAT MARKER (atlas G-4, arm b-ii; INBOUND O-102d). The dock run roves a
54
+ * direct child only when it carries this attribute, and claims `role="toolbar"` only
55
+ * when it has one and every direct child carries it, glass's `<DockSeparator>` and
56
+ * reka's form `<select aria-hidden="true" tabindex="-1">` (beside a named `Select`'s
57
+ * trigger) aside. Glass's seat primitives, `<DockControl>` and `<DockTrigger>`, set it;
58
+ * a consumer's own seat sets it by hand. Nothing is inferred from focusability: an
59
+ * undeclared child keeps its natural tab stop and its own keys.
60
+ */
61
+ export declare const DOCK_SEAT_ATTR = "data-glass-dock-seat";
@@ -1 +1 @@
1
- @layer components{.dock-trigger,.dock-select-trigger,.dock-dropdown-trigger{display: inline-flex;align-items: center;justify-content: center;flex-shrink: 0;scale: 1;gap: var(--dock-trigger-gap,0.25rem);min-height: var(--dock-trigger-min-height,auto);padding: var(--dock-trigger-padding-block,0.25rem) var(--dock-trigger-padding-inline,0.5rem);white-space: nowrap;cursor: pointer;border: none;background: transparent;background-clip: content-box;border-radius: var(--dock-control-radius,var(--radius-pill));color: color-mix( in srgb,var(--dock-fg-on-aurora,var(--foreground)) calc(var(--opacity-icon-muted) * 100%),transparent );outline: none;transition: background-color var(--dock-motion-fast),color var(--dock-motion-fast),scale var(--dock-press-spring),opacity var(--dock-motion-fast);}.dock-trigger:hover:not(:disabled),.dock-select-trigger:hover:not(:disabled),.dock-dropdown-trigger:hover:not(:disabled){background: var(--dock-control-hover-bg);color: var(--btn-hover-color,var(--foreground));}.dock-trigger:active:not(:disabled),.dock-select-trigger:active:not(:disabled),.dock-dropdown-trigger:active:not(:disabled){background: var(--dock-control-press-bg);scale: var(--scale-press-dock);}.dock-trigger:focus:not(:focus-visible),.dock-select-trigger:focus:not(:focus-visible),.dock-dropdown-trigger:focus:not(:focus-visible){outline: none;}.dock-trigger:focus-visible,.dock-select-trigger:focus-visible,.dock-dropdown-trigger:focus-visible{transition: background-color var(--dock-motion-fast),color var(--dock-motion-fast),scale var(--dock-press-spring),opacity var(--dock-motion-fast),box-shadow var(--dock-motion-fast);}.dock-trigger:is( .is-active,.active,[aria-expanded="true"],[aria-pressed="true"] ),.dock-select-trigger:is( .is-active,.active,[aria-expanded="true"],[aria-pressed="true"] ),.dock-dropdown-trigger:is( .is-active,.active,[aria-expanded="true"],[aria-pressed="true"] ){background: var(--dock-control-active-bg);color: var(--foreground);}.dock-select-trigger__chevron{width: var(--dock-trigger-icon-size,0.75rem);height: var(--dock-trigger-icon-size,0.75rem);flex-shrink: 0;opacity: 0.5;rotate: 0deg;transition: rotate var(--dock-press-spring);}.dock-select-trigger[data-state="open"] .dock-select-trigger__chevron{rotate: 180deg;}}
1
+ @layer components{.dock-trigger,.dock-select-trigger,.dock-dropdown-trigger{display: inline-flex;align-items: center;justify-content: center;flex-shrink: 0;scale: 1;gap: var(--dock-trigger-gap,0.25rem);min-height: var(--dock-trigger-min-height,auto);padding: var(--dock-trigger-padding-block,0.25rem) var(--dock-trigger-padding-inline,0.5rem);white-space: nowrap;cursor: pointer;border: none;background: transparent;background-clip: content-box;border-radius: var(--dock-control-radius,var(--radius-pill));color: color-mix( in srgb,var(--dock-fg-on-aurora,var(--foreground)) calc(var(--opacity-icon-muted) * 100%),transparent );outline: none;transition: background-color var(--dock-motion-fast),color var(--dock-motion-fast),scale var(--dock-press-spring),opacity var(--dock-motion-fast);}.dock-trigger:hover:not([aria-disabled="true"]){background: var(--dock-control-hover-bg);color: var(--btn-hover-color,var(--foreground));}.dock-trigger:active:not([aria-disabled="true"]){background: var(--dock-control-press-bg);scale: var(--scale-press-dock);}.dock-trigger:focus:not(:focus-visible),.dock-select-trigger:focus:not(:focus-visible),.dock-dropdown-trigger:focus:not(:focus-visible){outline: none;}.dock-trigger:focus-visible,.dock-select-trigger:focus-visible,.dock-dropdown-trigger:focus-visible{transition: background-color var(--dock-motion-fast),color var(--dock-motion-fast),scale var(--dock-press-spring),opacity var(--dock-motion-fast),box-shadow var(--dock-motion-fast);}.dock-trigger:is( .is-active,.active,[aria-expanded="true"],[aria-pressed="true"] ),.dock-select-trigger:is( .is-active,.active,[aria-expanded="true"],[aria-pressed="true"] ),.dock-dropdown-trigger:is( .is-active,.active,[aria-expanded="true"],[aria-pressed="true"] ){background: var(--dock-control-active-bg);color: var(--foreground);}.dock-select-trigger__chevron{width: var(--dock-trigger-icon-size,0.75rem);height: var(--dock-trigger-icon-size,0.75rem);flex-shrink: 0;opacity: 0.5;rotate: 0deg;transition: rotate var(--dock-press-spring);}.dock-select-trigger[data-state="open"] .dock-select-trigger__chevron{rotate: 180deg;}}
@@ -1 +1 @@
1
- @import "./shell.css";@import "./shell-regions.css";@import "./dock.css";@import "./morph.css";@import "./adaptive-legibility.css";@import "./density.css";@import "./shape.css";@import "./layers.css";@import "./layer-group.css";@import "./crossfade.css";@import "./run.css";@import "./cta-seat.css";@import "./search.css";@property --dock-morph-t{syntax: "<number>";inherits: true;initial-value: 0;}@property --dock-t{syntax: "<number>";inherits: false;initial-value: 0;}@property --dock-local-scale{syntax: "<number>";inherits: true;initial-value: 1;}@property --dock-scale{syntax: "<number>";inherits: true;initial-value: 1;}@property --dock-pitch{syntax: "<length>";inherits: true;initial-value: 0px;}@property --dock-open-pitches{syntax: "<number>";inherits: true;initial-value: 3;}@layer components{:where( .glass-dock,.dock-layer-tab,.dock-icon-button,.dark-mode-toggle-button,.dock-tab-button,.dock-select-trigger,.dock-dropdown-trigger ){--dock-motion-fast: var(--duration-fast) var(--ease-standard);--dock-motion-standard: var(--duration-normal) var(--ease-standard);--dock-motion-resize: var(--spring-dock-duration) var(--dock-resize-spring);--dock-ring-width: var(--focus-ring-width);--dock-ring-offset: var(--focus-ring-width);--dock-ring-color: color-mix(in srgb,var(--focus-ring-color) 48%,transparent);--dock-ring-reserve: calc(var(--dock-ring-width) + var(--dock-ring-offset));}.dock-icon-button:focus-visible,.dock-tab-button:focus-visible,.dock-select-trigger:focus-visible,.dock-dropdown-trigger:focus-visible{outline: var(--dock-ring-width) solid var(--dock-ring-color);outline-offset: var(--dock-ring-offset);}.glass-dock [data-ring-yield]:focus-visible{outline: none;}.dock-icon-button:disabled,.dock-tab-button:disabled,.dock-select-trigger:disabled,.dock-dropdown-trigger:disabled,.dock-icon-button[aria-disabled="true"],.dock-tab-button[aria-disabled="true"]{opacity: var(--opacity-disabled);cursor: not-allowed;}}
1
+ @import "./shell.css";@import "./shell-regions.css";@import "./dock.css";@import "./morph.css";@import "./adaptive-legibility.css";@import "./density.css";@import "./shape.css";@import "./layers.css";@import "./layer-group.css";@import "./crossfade.css";@import "./run.css";@import "./cta-seat.css";@import "./search.css";@property --dock-morph-t{syntax: "<number>";inherits: true;initial-value: 0;}@property --dock-t{syntax: "<number>";inherits: false;initial-value: 0;}@property --dock-local-scale{syntax: "<number>";inherits: true;initial-value: 1;}@property --dock-scale{syntax: "<number>";inherits: true;initial-value: 1;}@property --dock-pitch{syntax: "<length>";inherits: true;initial-value: 0px;}@property --dock-open-pitches{syntax: "<number>";inherits: true;initial-value: 3;}@layer components{:where( .glass-dock,.dock-layer-tab,.dock-icon-button,.dark-mode-toggle-button,.dock-tab-button,.dock-select-trigger,.dock-dropdown-trigger ){--dock-motion-fast: var(--duration-fast) var(--ease-standard);--dock-motion-standard: var(--duration-normal) var(--ease-standard);--dock-motion-resize: var(--spring-dock-duration) var(--dock-resize-spring);--dock-ring-width: var(--focus-ring-width);--dock-ring-offset: var(--focus-ring-width);--dock-ring-color: color-mix(in srgb,var(--focus-ring-color) 48%,transparent);--dock-ring-reserve: calc(var(--dock-ring-width) + var(--dock-ring-offset));}.dock-icon-button:focus-visible,.dock-tab-button:focus-visible,.dock-select-trigger:focus-visible,.dock-dropdown-trigger:focus-visible{outline: var(--dock-ring-width) solid var(--dock-ring-color);outline-offset: var(--dock-ring-offset);}.glass-dock [data-ring-yield]:focus-visible{outline: none;}.dock-icon-button:disabled,.dock-tab-button:disabled,.dock-icon-button[aria-disabled="true"],.dock-tab-button[aria-disabled="true"],.dock-trigger[aria-disabled="true"]{opacity: var(--opacity-disabled);cursor: not-allowed;}}
@@ -1 +1 @@
1
- @layer components{:where([data-slot="sheet-content"]){position: fixed;z-index: var(--z-modal);}}@property --detent-t{syntax: "<number>";inherits: false;initial-value: 0;}@layer components{:where([data-slot="sheet-content"][data-detents]){--sheet-seam-width: 1px;contain: layout paint;display: grid;grid-template-rows: auto minmax(0,1fr);}:where([data-slot="sheet-content"][data-modal="false"]){z-index: calc(var(--z-dock) - 1);}:where( [data-slot="sheet-content"][data-detents] > [data-slot="sheet-detent-handle"],[data-slot="sheet-content"][data-detents] [data-slot="dialog-header"] ){touch-action: none;}:where([data-slot="sheet-content"][data-dragging]){cursor: grabbing;user-select: none;}:where([data-slot="sheet-content"] > [data-slot="sheet-content-region"]){display: grid;align-content: start;gap: var(--space-body);}:where([data-slot="sheet-content"][data-scroll] > [data-slot="sheet-content-region"]){min-block-size: 0;max-block-size: calc(100dvh - 2 * var(--space-family));overflow-y: auto;}:where( [data-slot="sheet-content"][data-side="left"]:not([data-detents]) > [data-slot="sheet-content-region"],[data-slot="sheet-content"][data-side="right"]:not([data-detents]) > [data-slot="sheet-content-region"] ){display: flex;flex-direction: column;block-size: 100%;min-block-size: 0;}:where( [data-slot="sheet-content"][data-side="left"] > [data-slot="sheet-content-region"] > :only-child,[data-slot="sheet-content"][data-side="right"] > [data-slot="sheet-content-region"] > :only-child ){min-block-size: 0;}:where([data-slot="sheet-content"][data-detents] > [data-slot="sheet-content-region"]){display: grid;grid-template-rows: minmax(0,auto) minmax(1lh,1fr) auto;align-content: end;min-block-size: 0;gap: var(--space-body);}:where( [data-slot="sheet-content"][data-detents] > [data-slot="sheet-content-region"] > :not([data-slot="dialog-header"]):not([data-slot="dialog-footer"]) ){min-block-size: 0;overflow-y: auto;overscroll-behavior: contain;}:where( [data-slot="sheet-content"][data-detents] > [data-slot="sheet-content-region"] > [data-slot="dialog-header"] ){overflow: hidden;padding-block-end: var(--space-body);border-block-end: var(--sheet-seam-width) solid oklch(from var(--glass-veil-ink) l c h / calc(var(--glass-veil-step) * 2));}:where( [data-slot="sheet-content"][data-detents] > [data-slot="sheet-content-region"] > [data-slot="dialog-footer"] ){padding-block-start: var(--space-body);border-block-start: var(--sheet-seam-width) solid oklch(from var(--glass-veil-ink) l c h / calc(var(--glass-veil-step) * 2));}:where([data-slot="sheet-content"]:not([data-detents]):has([data-slot="dialog-close"])) :where([data-slot="dialog-header"]){padding-inline-end: calc(var(--touch-target) + var(--space-atom));}:where([data-slot="sheet-content"][data-detents] > [data-slot="sheet-detent-handle"]){display: flex;align-items: center;justify-content: center;min-block-size: var(--touch-target);cursor: grab;}:where([data-slot="sheet-detent-handle"] > [data-slot="sheet-detent-grip"]){display: block;inline-size: calc( var(--space-section) + var(--space-family) * clamp(0,var(--detent-t),1) );block-size: calc(var(--space-atom) / 2);border-radius: var(--radius-pill);background-color: currentcolor;opacity: calc(0.45 + ((0.85 - 0.45) / 2) * clamp(0,var(--detent-t),1));transition: opacity var(--spring-dock-duration) var(--spring-dock),inline-size var(--spring-dock-duration) var(--spring-dock);}@media (hover: hover){:where([data-slot="sheet-detent-handle"]:hover > [data-slot="sheet-detent-grip"]){opacity: 0.85;}}:where([data-slot="sheet-detent-handle"]:focus-visible){outline: none;}:where( [data-slot="sheet-detent-handle"]:focus-visible > [data-slot="sheet-detent-grip"],[data-slot="sheet-content"][data-dragging] [data-slot="sheet-detent-grip"] ){opacity: 0.85;}:where( [data-slot="sheet-detent-handle"]:focus-visible > [data-slot="sheet-detent-grip"] ){box-shadow: 0 0 0 3px var(--focus-ring-color);}@media (prefers-reduced-motion: reduce){:where([data-slot="sheet-detent-grip"]){transition: none;}}:where([data-slot="sheet-content"]){anchor-name: --glass-sheet-edge;}:where([data-slot="sheet-content"][data-surface="glass"]){-webkit-backdrop-filter: none;backdrop-filter: none;}:where([data-slot="glass-graded-halo"]){position: fixed;position-anchor: --glass-sheet-edge;top: anchor(top);right: anchor(right);bottom: anchor(bottom);left: anchor(left);z-index: calc(var(--z-modal) - 1);pointer-events: none;background: linear-gradient( var(--sheet-edge-direction),color-mix(in oklab,var(--glass-plate-overlay) 10%,transparent) 0,color-mix(in oklab,var(--glass-plate-overlay) 16%,transparent) 40px,color-mix(in oklab,var(--glass-plate-overlay) 34%,transparent) 120px,color-mix(in oklab,var(--glass-plate-overlay) 34%,transparent) 100% );-webkit-backdrop-filter: blur(calc(34px * var(--glass-level))) saturate(var(--glass-saturate));backdrop-filter: blur(calc(34px * var(--glass-level))) saturate(var(--glass-saturate));mask-image: linear-gradient( var(--sheet-edge-direction),rgb(0 0 0 / 0.325) 0,rgb(0 0 0 / 0.45) 40px,black 120px,black 100% );}:where([data-slot="glass-graded-halo"][data-modal="false"]){z-index: calc(var(--z-dock) - 2);}:where([data-slot="glass-graded-halo"][data-side="top"]){--sheet-edge-direction: to top;border-end-start-radius: var(--radius-3xl);border-end-end-radius: var(--radius-3xl);}:where([data-slot="glass-graded-halo"][data-side="bottom"]){--sheet-edge-direction: to bottom;border-start-start-radius: var(--radius-3xl);border-start-end-radius: var(--radius-3xl);}:where([data-slot="glass-graded-halo"][data-side="left"]){--sheet-edge-direction: to left;border-start-end-radius: var(--radius-3xl);border-end-end-radius: var(--radius-3xl);}:where([data-slot="glass-graded-halo"][data-side="right"]){--sheet-edge-direction: to right;border-start-start-radius: var(--radius-3xl);border-end-start-radius: var(--radius-3xl);}:where([data-slot="glass-graded-halo"][data-detents][data-side="bottom"]){height: 100dvh;bottom: auto;}:where([data-slot="glass-graded-halo"][data-detents][data-side="top"]){height: 100dvh;top: auto;}:where([data-slot="glass-graded-halo"][data-detents][data-side="left"]){width: 100dvw;left: auto;}:where([data-slot="glass-graded-halo"][data-detents][data-side="right"]){width: 100dvw;right: auto;}@media (prefers-reduced-transparency: reduce),(forced-colors: active){:where([data-slot="glass-graded-halo"]){display: none;}}:where([data-slot="sheet-content"][data-side="top"]){left: 0;right: 0;top: 0;}:where([data-slot="sheet-content"][data-side="bottom"]){left: 0;right: 0;bottom: 0;}:where([data-slot="sheet-content"][data-side="left"]){top: 0;bottom: 0;left: 0;height: 100%;width: 75%;}:where([data-slot="sheet-content"][data-side="right"]){top: 0;bottom: 0;right: 0;height: 100%;width: 75%;}@media (min-width: 40rem){:where([data-slot="sheet-content"][data-side="left"]),:where([data-slot="sheet-content"][data-side="right"]){max-width: 24rem;}}:where( [data-slot="sheet-content"][data-detents][data-side="bottom"],[data-slot="sheet-content"][data-detents][data-side="top"] ){block-size: calc(clamp(0,var(--detent-t),1) * 100dvh);min-block-size: calc( 2 * var(--space-family) + var(--sheet-seam-width) + var(--touch-target) + 2 * var(--space-body) + var(--space-body) + var(--sheet-seam-width) + 1lh + var(--space-body) + var(--sheet-seam-width) + var(--touch-target) );max-block-size: 100dvh;}:where( [data-slot="sheet-content"][data-detents][data-side="left"],[data-slot="sheet-content"][data-detents][data-side="right"] ){width: calc(clamp(0,var(--detent-t),1) * 100dvw);max-width: 100dvw;height: 100%;}:where([data-slot="sheet-content"]){padding-inline: var(--space-family);padding-block: var(--space-family);}:where([data-slot="sheet-content"][data-side="top"]){border-end-start-radius: var(--radius-3xl);border-end-end-radius: var(--radius-3xl);}:where([data-slot="sheet-content"][data-side="bottom"]){border-start-start-radius: var(--radius-3xl);border-start-end-radius: var(--radius-3xl);}:where([data-slot="sheet-content"][data-side="left"]){border-start-end-radius: var(--radius-3xl);border-end-end-radius: var(--radius-3xl);}:where([data-slot="sheet-content"][data-side="right"]){border-start-start-radius: var(--radius-3xl);border-end-start-radius: var(--radius-3xl);}}
1
+ @layer components{:where([data-slot="sheet-content"]){z-index: var(--z-modal);}}@property --detent-t{syntax: "<number>";inherits: false;initial-value: 0;}@layer components{:where([data-slot="sheet-content"][data-detents]){--sheet-seam-width: 1px;contain: layout paint;display: grid;grid-template-rows: auto minmax(0,1fr);}:where([data-slot="sheet-content"][data-modal="false"]){z-index: calc(var(--z-dock) - 1);}:where( [data-slot="sheet-content"][data-detents] > [data-slot="sheet-detent-handle"],[data-slot="sheet-content"][data-detents] [data-slot="dialog-header"] ){touch-action: none;}:where([data-slot="sheet-content"][data-dragging]){cursor: grabbing;user-select: none;}:where([data-slot="sheet-content"] > [data-slot="sheet-content-region"]){display: grid;align-content: start;gap: var(--space-body);}:where([data-slot="sheet-content"][data-scroll] > [data-slot="sheet-content-region"]){min-block-size: 0;max-block-size: calc(100dvh - 2 * var(--space-family));overflow-y: auto;}:where( [data-slot="sheet-content"][data-side="left"]:not([data-detents]) > [data-slot="sheet-content-region"],[data-slot="sheet-content"][data-side="right"]:not([data-detents]) > [data-slot="sheet-content-region"] ){display: flex;flex-direction: column;block-size: 100%;min-block-size: 0;}:where( [data-slot="sheet-content"][data-side="left"] > [data-slot="sheet-content-region"] > :only-child,[data-slot="sheet-content"][data-side="right"] > [data-slot="sheet-content-region"] > :only-child ){min-block-size: 0;}:where([data-slot="sheet-content"][data-detents] > [data-slot="sheet-content-region"]){display: grid;grid-template-rows: minmax(0,auto) minmax(1lh,1fr) auto;align-content: end;min-block-size: 0;gap: var(--space-body);}:where( [data-slot="sheet-content"][data-detents] > [data-slot="sheet-content-region"] > :not([data-slot="dialog-header"]):not([data-slot="dialog-footer"]) ){min-block-size: 0;overflow-y: auto;overscroll-behavior: contain;}:where( [data-slot="sheet-content"][data-detents] > [data-slot="sheet-content-region"] > [data-slot="dialog-header"] ){overflow: hidden;padding-block-end: var(--space-body);border-block-end: var(--sheet-seam-width) solid oklch(from var(--glass-veil-ink) l c h / calc(var(--glass-veil-step) * 2));}:where( [data-slot="sheet-content"][data-detents] > [data-slot="sheet-content-region"] > [data-slot="dialog-footer"] ){padding-block-start: var(--space-body);border-block-start: var(--sheet-seam-width) solid oklch(from var(--glass-veil-ink) l c h / calc(var(--glass-veil-step) * 2));}:where([data-slot="sheet-content"]:not([data-detents]):has([data-slot="dialog-close"])) :where([data-slot="dialog-header"]){padding-inline-end: calc(var(--touch-target) + var(--space-atom));}:where([data-slot="sheet-content"][data-detents] > [data-slot="sheet-detent-handle"]){display: flex;align-items: center;justify-content: center;min-block-size: var(--touch-target);cursor: grab;}:where([data-slot="sheet-detent-handle"] > [data-slot="sheet-detent-grip"]){display: block;inline-size: calc( var(--space-section) + var(--space-family) * clamp(0,var(--detent-t),1) );block-size: calc(var(--space-atom) / 2);border-radius: var(--radius-pill);background-color: currentcolor;opacity: calc(0.45 + ((0.85 - 0.45) / 2) * clamp(0,var(--detent-t),1));transition: opacity var(--spring-dock-duration) var(--spring-dock),inline-size var(--spring-dock-duration) var(--spring-dock);}@media (hover: hover){:where([data-slot="sheet-detent-handle"]:hover > [data-slot="sheet-detent-grip"]){opacity: 0.85;}}:where([data-slot="sheet-detent-handle"]:focus-visible){outline: none;}:where( [data-slot="sheet-detent-handle"]:focus-visible > [data-slot="sheet-detent-grip"],[data-slot="sheet-content"][data-dragging] [data-slot="sheet-detent-grip"] ){opacity: 0.85;}:where( [data-slot="sheet-detent-handle"]:focus-visible > [data-slot="sheet-detent-grip"] ){box-shadow: 0 0 0 3px var(--focus-ring-color);}@media (prefers-reduced-motion: reduce){:where([data-slot="sheet-detent-grip"]){transition: none;}}:where([data-slot="sheet-content"]){anchor-name: --glass-sheet-edge;}:where([data-slot="sheet-content"][data-surface="glass"]){-webkit-backdrop-filter: none;backdrop-filter: none;}:where([data-slot="glass-graded-halo"]){position: fixed;position-anchor: --glass-sheet-edge;top: anchor(top);right: anchor(right);bottom: anchor(bottom);left: anchor(left);z-index: calc(var(--z-modal) - 1);pointer-events: none;background: linear-gradient( var(--sheet-edge-direction),color-mix(in oklab,var(--glass-plate-overlay) 10%,transparent) 0,color-mix(in oklab,var(--glass-plate-overlay) 16%,transparent) 40px,color-mix(in oklab,var(--glass-plate-overlay) 34%,transparent) 120px,color-mix(in oklab,var(--glass-plate-overlay) 34%,transparent) 100% );-webkit-backdrop-filter: blur(calc(34px * var(--glass-level))) saturate(var(--glass-saturate));backdrop-filter: blur(calc(34px * var(--glass-level))) saturate(var(--glass-saturate));mask-image: linear-gradient( var(--sheet-edge-direction),rgb(0 0 0 / 0.325) 0,rgb(0 0 0 / 0.45) 40px,black 120px,black 100% );}:where([data-slot="glass-graded-halo"][data-modal="false"]){z-index: calc(var(--z-dock) - 2);}:where([data-slot="glass-graded-halo"][data-side="top"]){--sheet-edge-direction: to top;border-end-start-radius: var(--radius-3xl);border-end-end-radius: var(--radius-3xl);}:where([data-slot="glass-graded-halo"][data-side="bottom"]){--sheet-edge-direction: to bottom;border-start-start-radius: var(--radius-3xl);border-start-end-radius: var(--radius-3xl);}:where([data-slot="glass-graded-halo"][data-side="left"]){--sheet-edge-direction: to left;border-start-end-radius: var(--radius-3xl);border-end-end-radius: var(--radius-3xl);}:where([data-slot="glass-graded-halo"][data-side="right"]){--sheet-edge-direction: to right;border-start-start-radius: var(--radius-3xl);border-end-start-radius: var(--radius-3xl);}:where([data-slot="glass-graded-halo"][data-detents][data-side="bottom"]){height: 100dvh;bottom: auto;}:where([data-slot="glass-graded-halo"][data-detents][data-side="top"]){height: 100dvh;top: auto;}:where([data-slot="glass-graded-halo"][data-detents][data-side="left"]){width: 100dvw;left: auto;}:where([data-slot="glass-graded-halo"][data-detents][data-side="right"]){width: 100dvw;right: auto;}@media (prefers-reduced-transparency: reduce),(forced-colors: active){:where([data-slot="glass-graded-halo"]){display: none;}}:where([data-slot="sheet-content"][data-side="top"]){left: 0;right: 0;top: 0;}:where([data-slot="sheet-content"][data-side="bottom"]){left: 0;right: 0;bottom: 0;}:where([data-slot="sheet-content"][data-side="left"]){top: 0;bottom: 0;left: 0;height: 100%;width: 75%;}:where([data-slot="sheet-content"][data-side="right"]){top: 0;bottom: 0;right: 0;height: 100%;width: 75%;}@media (min-width: 40rem){:where([data-slot="sheet-content"][data-side="left"]),:where([data-slot="sheet-content"][data-side="right"]){max-width: 24rem;}}:where( [data-slot="sheet-content"][data-detents][data-side="bottom"],[data-slot="sheet-content"][data-detents][data-side="top"] ){block-size: calc(clamp(0,var(--detent-t),1) * 100dvh);min-block-size: calc( 2 * var(--space-family) + var(--sheet-seam-width) + var(--touch-target) + 2 * var(--space-body) + var(--space-body) + var(--sheet-seam-width) + 1lh + var(--space-body) + var(--sheet-seam-width) + var(--touch-target) );max-block-size: 100dvh;}:where( [data-slot="sheet-content"][data-detents][data-side="left"],[data-slot="sheet-content"][data-detents][data-side="right"] ){width: calc(clamp(0,var(--detent-t),1) * 100dvw);max-width: 100dvw;height: 100%;}:where([data-slot="sheet-content"]){padding-inline: var(--space-family);padding-block: var(--space-family);}:where([data-slot="sheet-content"][data-side="top"]){border-end-start-radius: var(--radius-3xl);border-end-end-radius: var(--radius-3xl);}:where([data-slot="sheet-content"][data-side="bottom"]){border-start-start-radius: var(--radius-3xl);border-start-end-radius: var(--radius-3xl);}:where([data-slot="sheet-content"][data-side="left"]){border-start-end-radius: var(--radius-3xl);border-end-end-radius: var(--radius-3xl);}:where([data-slot="sheet-content"][data-side="right"]){border-start-start-radius: var(--radius-3xl);border-end-start-radius: var(--radius-3xl);}}
@@ -1,6 +1,12 @@
1
1
  import { type HTMLAttributes } from "vue";
2
2
  type __VLS_Props = {
3
3
  class?: HTMLAttributes["class"];
4
+ /**
5
+ * A travelling sheen across the reserved shape in place of the breathe. Ink
6
+ * only (the one-ink ladder, no hue), static under `prefers-reduced-motion`,
7
+ * paused while the tile is off-screen or the document is hidden.
8
+ */
9
+ shimmer?: boolean;
4
10
  };
5
11
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
6
12
  declare const _default: typeof __VLS_export;
@@ -0,0 +1,22 @@
1
+ import { t as e } from "./class-names-FlXcvRRT.js";
2
+ import { t } from "./resolve-DdrNvBby.js";
3
+ //#region src/components/_shared/overlay/content.ts
4
+ var n = {
5
+ hint: "tooltip",
6
+ menu: "menu",
7
+ panel: "overlay"
8
+ }, r = {
9
+ hint: "z-tooltip",
10
+ menu: "z-popover",
11
+ panel: "z-popover"
12
+ };
13
+ function i(i) {
14
+ return {
15
+ class: e(t("floating"), "glass-overlay-plate glass-reveal", r[i.role], i.class),
16
+ "data-slot": i.slot,
17
+ "data-reveal": n[i.role],
18
+ ...i.dock
19
+ };
20
+ }
21
+ //#endregion
22
+ export { i as t };