@mkbabb/glass-ui 3.8.0 → 3.9.0

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 (164) hide show
  1. package/README.md +1 -6
  2. package/dist/{CardAction-q2qHCJFG.js → CardAction-DuArVky-.js} +4 -4
  3. package/dist/{CommandShortcut-SzWRhROC.js → CommandShortcut-CefCj5mt.js} +7 -7
  4. package/dist/{ContextMenuSubContent-Do977Cbf.js → ContextMenuSubContent-Bhg4f5jX.js} +3 -3
  5. package/dist/{DataTable-CvlWXz65.js → DataTable-CUHMukiQ.js} +1 -1
  6. package/dist/{DialogContent-DjZWT3lK.js → DialogContent-BRkT1cjP.js} +1 -1
  7. package/dist/{NumberFieldContent-CLNVR1iY.js → NumberFieldContent-BbLOh8RU.js} +2 -2
  8. package/dist/{SelectScrollDownButton-C7TRe-ep.js → SelectScrollDownButton-T32cVFeM.js} +3 -3
  9. package/dist/{SelectSeparator-L8pPEn4L.js → SelectSeparator-C4Ql0gzV.js} +1 -1
  10. package/dist/{TabsList-qyHZ2lKY.js → TabsList-B8CVOQPC.js} +2 -2
  11. package/dist/{Toaster-CabYEEF_.js → Toaster-1rYWrmAm.js} +1 -1
  12. package/dist/{ToggleGroupItem-CkXUcBlt.js → ToggleGroupItem-Cev4pOVK.js} +4 -4
  13. package/dist/animated-digit.js +1 -1
  14. package/dist/api/index.d.ts +1 -1
  15. package/dist/api.js +1 -1
  16. package/dist/aurora.js +10 -10
  17. package/dist/{badge-DHQrc_GQ.js → badge-BvwvT50i.js} +4 -4
  18. package/dist/badge.js +1 -1
  19. package/dist/{button-CAywcrhO.js → button-DN39cGqL.js} +13 -12
  20. package/dist/button.js +1 -1
  21. package/dist/card.js +1 -1
  22. package/dist/carousel.js +1 -1
  23. package/dist/color.js +1 -1
  24. package/dist/command.js +1 -1
  25. package/dist/{compile-BBTRjvQS.js → compile-DAjIoEy2.js} +1 -1
  26. package/dist/components/custom/configurator/ConfiguratorLayer.vue.d.ts +1 -1
  27. package/dist/components/custom/dock/DockSeparator.vue.d.ts +3 -0
  28. package/dist/components/custom/dock/GlassDock.vue.d.ts +45 -63
  29. package/dist/components/custom/dock/composables/dockContext.d.ts +7 -0
  30. package/dist/components/custom/dock/index.d.ts +2 -1
  31. package/dist/components/custom/goo-blob/composables/useBlobMood.d.ts +19 -5
  32. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +92 -0
  33. package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +49 -0
  34. package/dist/components/custom/tabs/index.d.ts +2 -5
  35. package/dist/components/ui/button/index.d.ts +1 -1
  36. package/dist/components/ui/card/Card.vue.d.ts +5 -3
  37. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +1 -1
  38. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +1 -1
  39. package/dist/components/ui/carousel/GlassCarouselPager.vue.d.ts +3 -4
  40. package/dist/components/ui/slider/index.d.ts +14 -7
  41. package/dist/components/ui/tabs/TabsList.vue.d.ts +1 -1
  42. package/dist/composables/context/createContext.d.ts +1 -1
  43. package/dist/configurator.js +1 -1
  44. package/dist/confirm-dialog.js +1 -1
  45. package/dist/constellation.js +1 -1
  46. package/dist/context-menu.js +1 -1
  47. package/dist/controls.js +1 -1
  48. package/dist/dark.js +1 -1
  49. package/dist/data-table.js +1 -1
  50. package/dist/deck-progress.js +1 -1
  51. package/dist/dialog.js +1 -1
  52. package/dist/dock.js +256 -243
  53. package/dist/{dropdown-menu-B_4bWyyG.js → dropdown-menu-D77jX6Df.js} +3 -3
  54. package/dist/dropdown-menu.js +1 -1
  55. package/dist/expandable-container.js +1 -1
  56. package/dist/forms.js +5 -5
  57. package/dist/fourier-field.js +3 -3
  58. package/dist/glass-ui.css +1 -1
  59. package/dist/glass-ui.js +101 -104
  60. package/dist/goo-blob.js +36 -32
  61. package/dist/hover-popover.js +1 -1
  62. package/dist/icon-tooltip.js +1 -1
  63. package/dist/index.d.ts +0 -2
  64. package/dist/keyboard.js +1 -1
  65. package/dist/labeled-field.js +4 -4
  66. package/dist/{menuItemVariants-DKM85SNE.js → menuItemVariants-CCoBNkU5.js} +1 -1
  67. package/dist/motion-core.js +4 -4
  68. package/dist/motion.js +2 -2
  69. package/dist/number-field.js +1 -1
  70. package/dist/pulse.js +1 -1
  71. package/dist/reactive.js +1 -1
  72. package/dist/scrolling-text.js +1 -1
  73. package/dist/search.js +4 -4
  74. package/dist/select.js +2 -2
  75. package/dist/{slider-D9puf-Ko.js → slider-DC2mwuoe.js} +1 -1
  76. package/dist/slider.js +1 -1
  77. package/dist/sortable-list.js +1 -1
  78. package/dist/status-dot.js +17 -16
  79. package/dist/styles/animations.css +6 -2
  80. package/dist/styles/components.css +1 -1
  81. package/dist/styles/dock/density.css +230 -0
  82. package/dist/styles/dock/layer-group.css +263 -0
  83. package/dist/styles/dock/layers.css +355 -0
  84. package/dist/styles/dock/morph.css +244 -0
  85. package/dist/styles/dock/overflow.css +201 -0
  86. package/dist/styles/dock/shell.css +457 -0
  87. package/dist/styles/dock-controls.css +166 -32
  88. package/dist/styles/dock.css +42 -1349
  89. package/dist/styles/glass.css +396 -75
  90. package/dist/styles/index.css +12 -11
  91. package/dist/styles/theme.css +51 -0
  92. package/dist/styles/tokens.css +501 -55
  93. package/dist/styles/utilities.css +89 -39
  94. package/dist/tabs.js +182 -151
  95. package/dist/timeline.js +1 -1
  96. package/dist/toast.js +1 -1
  97. package/dist/toggle-group.js +1 -1
  98. package/dist/{useAnimatedNumber-C_3wZLx4.js → useAnimatedNumber-C5I3wWd8.js} +1 -1
  99. package/dist/{useConfiguratorState-CMff4GzH.js → useConfiguratorState-DxAqksK6.js} +21 -10
  100. package/dist/watercolor-dot.js +1 -1
  101. package/package.json +32 -33
  102. package/src/styles/animations.css +6 -2
  103. package/src/styles/dock/density.css +230 -0
  104. package/src/styles/dock/layer-group.css +263 -0
  105. package/src/styles/dock/layers.css +355 -0
  106. package/src/styles/dock/morph.css +244 -0
  107. package/src/styles/dock/overflow.css +201 -0
  108. package/src/styles/dock/shell.css +457 -0
  109. package/src/styles/dock-controls.css +166 -32
  110. package/src/styles/dock.css +42 -1349
  111. package/src/styles/glass.css +396 -75
  112. package/src/styles/index.css +12 -11
  113. package/src/styles/theme.css +51 -0
  114. package/src/styles/tokens.css +501 -55
  115. package/src/styles/utilities.css +89 -39
  116. package/dist/DiscoGlyph-CG0F410s.js +0 -132
  117. package/dist/GlyphFace-DRjDkB0s.js +0 -51
  118. package/dist/UnderlineTabs-Uxn-R3MT.js +0 -39
  119. package/dist/components/custom/aurora/constants/shaders/painterly.wgsl.d.ts +0 -7
  120. package/dist/components/custom/aurora/constants/shaders/wake.wgsl.d.ts +0 -4
  121. package/dist/components/custom/disco-glyph/DiscoGlyph.vue.d.ts +0 -58
  122. package/dist/components/custom/disco-glyph/index.d.ts +0 -1
  123. package/dist/components/custom/glass-carousel/GlassCarousel.vue.d.ts +0 -36
  124. package/dist/components/custom/glass-carousel/GlassCarouselItem.vue.d.ts +0 -28
  125. package/dist/components/custom/glass-carousel/index.d.ts +0 -4
  126. package/dist/components/custom/glass-carousel/useGlassCarousel.d.ts +0 -30
  127. package/dist/components/custom/glyph-face/GlyphFace.vue.d.ts +0 -64
  128. package/dist/components/custom/glyph-face/index.d.ts +0 -2
  129. package/dist/components/custom/glyph-face/keys.d.ts +0 -9
  130. package/dist/components/custom/responsive-tabs/ResponsiveTabs.vue.d.ts +0 -73
  131. package/dist/components/custom/responsive-tabs/index.d.ts +0 -2
  132. package/dist/components/custom/tabs/BouncyTabs.vue.d.ts +0 -27
  133. package/dist/components/custom/tabs/BouncyToggle.vue.d.ts +0 -60
  134. package/dist/components/custom/tabs/UnderlineTabs.vue.d.ts +0 -20
  135. package/dist/components/custom/tabs/composables/useBouncySlider.d.ts +0 -39
  136. package/dist/disco-glyph.d.ts +0 -1
  137. package/dist/disco-glyph.js +0 -2
  138. package/dist/glass-carousel.d.ts +0 -1
  139. package/dist/glass-carousel.js +0 -219
  140. package/dist/glyph-face.d.ts +0 -1
  141. package/dist/glyph-face.js +0 -3
  142. package/dist/keys-BsYjEFOW.js +0 -9
  143. package/dist/responsive-tabs.d.ts +0 -1
  144. package/dist/responsive-tabs.js +0 -95
  145. package/dist/styles/disco-glyph.css +0 -26
  146. package/dist/styles/glyph-face.css +0 -92
  147. package/src/styles/disco-glyph.css +0 -26
  148. package/src/styles/glyph-face.css +0 -92
  149. /package/dist/{DeckProgress-AVgbIULY.js → DeckProgress-Dmk4_AKN.js} +0 -0
  150. /package/dist/{HoverPopover-D56O6Ylp.js → HoverPopover-2LOIW34a.js} +0 -0
  151. /package/dist/{IconTooltip-D2T5nYOM.js → IconTooltip-yefK7cJc.js} +0 -0
  152. /package/dist/{Input-DVG_J0ne.js → Input-DWQQIOC4.js} +0 -0
  153. /package/dist/{ScrollingText-CVyqxvfv.js → ScrollingText-BPP84wKo.js} +0 -0
  154. /package/dist/{color-DMLTunJK.js → color-8jBjWiJ6.js} +0 -0
  155. /package/dist/{constants-BPOqYJAm.js → constants-CS75AWHG.js} +0 -0
  156. /package/dist/{presets-D1XPuTj-.js → presets-BKVyQfbt.js} +0 -0
  157. /package/dist/{prng-COGhh02-.js → prng-wHuHlNHE.js} +0 -0
  158. /package/dist/{useGlobalDark-D3EBWzXK.js → useGlobalDark-yhL4Wp-s.js} +0 -0
  159. /package/dist/{useIntersectionPause-Bj4sPkMh.js → useIntersectionPause-Cc-H9ees.js} +0 -0
  160. /package/dist/{useInterval-CcLfq2WU.js → useInterval-Dsmqwi03.js} +0 -0
  161. /package/dist/{useKeyboardShortcuts-BXWXOZ-9.js → useKeyboardShortcuts-Be3w_Rwk.js} +0 -0
  162. /package/dist/{useScrollProgress-C9ysDic5.js → useScrollProgress-CAH8Ofwt.js} +0 -0
  163. /package/dist/{useSortable-MGAbCGVJ.js → useSortable-C8ReQ50P.js} +0 -0
  164. /package/dist/{useTextHighlight-9nMW23Qb.js → useTextHighlight-DON84L8w.js} +0 -0
@@ -1,33 +1,8 @@
1
1
  type DockDensity = "compact" | "comfortable" | "spacious" | "audacious";
2
- type __VLS_Props = {
3
- collapseDelay?: number;
4
- startCollapsed?: boolean;
2
+ interface DockCommonProps {
5
3
  fitContent?: boolean;
6
4
  position?: "fixed" | "inline" | "sticky";
7
5
  alwaysExpanded?: boolean;
8
- /**
9
- * Visual/behavioral preset.
10
- * `dock` — the horizontal floating dock (default).
11
- * `rail` — the vertical icon rail variant used by
12
- * app chrome (stadium-pill silhouette,
13
- * `--glass-bg-wash` plate).
14
- * `instrument-strip` — vertical chassis-strip mode for consumer
15
- * cockpits composing an instrument-cluster
16
- * gauge column (the speedtest
17
- * SurveyResultDock consumer). Drops the
18
- * rail variant's `--radius-pill` extreme
19
- * and adopts the `<InstrumentChassis>`
20
- * family's surface vocabulary
21
- * (`--radius-card` border-radius,
22
- * `--glass-bg-chassis` background,
23
- * `--glass-border-quiet` border,
24
- * `--glass-shadow-quiet` shadow, plus an
25
- * engraved-bezel `::before` inner stroke
26
- * matching `InstrumentChassis::before`).
27
- * No new tokens — lifts the existing
28
- * chassis vocabulary. AJ-W1-δ / G-AJ-D7.
29
- */
30
- variant?: "dock" | "rail" | "instrument-strip";
31
6
  /**
32
7
  * Corner treatment.
33
8
  * `"pill"` — the stadium silhouette (default).
@@ -36,9 +11,12 @@ type __VLS_Props = {
36
11
  * radius (`--dock-card-radius`, default `--radius-3xl`)
37
12
  * ABOVE 2xl, below pill — does NOT collapse to a stadium.
38
13
  * Collapsed it returns to a pill; the pill↔card swap
39
- * morphs on the `--dock-motion-resize` spring. A `@supports
40
- * (corner-shape: squircle)` enhancement reads better at the
41
- * large radius (the border-radius arc is the contract).
14
+ * morphs on the `--dock-motion-resize` spring. AX.W56's
15
+ * squircle policy applies `corner-shape:
16
+ * var(--corner-shape-bigdock)` here under `@supports
17
+ * (corner-shape: superellipse(2))` — the big-dock is the ONE
18
+ * surface where the superellipse reads (cards/pills stay
19
+ * round); the border-radius arc is the cross-engine contract.
42
20
  *
43
21
  * `"pill"`/`"rounded"` previously bound ONLY under the vertical rail
44
22
  * variant — on a horizontal dock the prop silently no-op'd. AW.W3b adds
@@ -46,24 +24,11 @@ type __VLS_Props = {
46
24
  * so `shape` now paints on a horizontal dock too.
47
25
  */
48
26
  shape?: "pill" | "rounded" | "card";
49
- /**
50
- * In-cap arrangement. `"linear"` (default) lays the active layer out as a
51
- * linear row/column. `"grid"` makes the active layer a self-wrapping tile
52
- * grid (Launchpad/Stage-Manager track symmetry — `auto-fill` columns of
53
- * `--dock-tile-min`). ORTHOGONAL to `overflow` (the OVER-cap strategy):
54
- * `layout` is the IN-cap arrangement.
55
- *
56
- * Hard contract: a `layout="grid"` dock is `alwaysExpanded` (a 2D panel
57
- * does not read as a collapsible pill, and no width morph means no
58
- * per-frame grid reflow). The canonical pairing is
59
- * `shape="card" layout="grid"` (the props stay independent — no
60
- * auto-implication of `shape`).
61
- */
62
- layout?: "linear" | "grid";
63
27
  /**
64
28
  * Layout axis of the dock. `"horizontal"` (default) lays items out
65
29
  * left-to-right and animates `width`; `"vertical"` lays items out
66
- * top-to-bottom and animates `height`.
30
+ * top-to-bottom and animates `height`. IGNORED under `variant="rail"` /
31
+ * `"instrument-strip"` (those force vertical by construction).
67
32
  */
68
33
  orientation?: "horizontal" | "vertical";
69
34
  /**
@@ -115,16 +80,45 @@ type __VLS_Props = {
115
80
  * size the dock relies on.
116
81
  */
117
82
  containerName?: string;
118
- };
119
- declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {};
83
+ }
84
+ interface DockVariantProps extends DockCommonProps {
85
+ variant?: "dock";
86
+ /** Idle-collapse delay in ms (default 2000). DOCK-ONLY — a rail never collapses. */
87
+ collapseDelay?: number;
88
+ /** Start in the collapsed state (default true). DOCK-ONLY — a rail is always expanded. */
89
+ startCollapsed?: boolean;
90
+ /**
91
+ * In-cap arrangement. `"linear"` (default) lays the active layer out as a
92
+ * linear row/column. `"grid"` makes the active layer a self-wrapping tile
93
+ * grid (Launchpad/Stage-Manager track symmetry — `auto-fill` columns of
94
+ * `--dock-tile-min`). ORTHOGONAL to `overflow` (the OVER-cap strategy):
95
+ * `layout` is the IN-cap arrangement.
96
+ *
97
+ * Hard contract: a `layout="grid"` dock is `alwaysExpanded` (a 2D panel
98
+ * does not read as a collapsible pill, and no width morph means no
99
+ * per-frame grid reflow). The canonical pairing is
100
+ * `shape="card" layout="grid"` (the props stay independent — no
101
+ * auto-implication of `shape`). DOCK-ONLY — the grid is a horizontal big-dock
102
+ * arrangement, never a rail's.
103
+ */
104
+ layout?: "linear" | "grid";
105
+ }
106
+ interface DockRailProps extends DockCommonProps {
107
+ variant: "rail" | "instrument-strip";
108
+ }
109
+ declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {}, __VLS_7: {}, __VLS_14: {};
120
110
  type __VLS_Slots = {} & {
121
- default?: (props: typeof __VLS_1) => any;
111
+ persistent?: (props: typeof __VLS_1) => any;
112
+ } & {
113
+ default?: (props: typeof __VLS_3) => any;
114
+ } & {
115
+ collapsed?: (props: typeof __VLS_5) => any;
122
116
  } & {
123
- collapsed?: (props: typeof __VLS_3) => any;
117
+ default?: (props: typeof __VLS_7) => any;
124
118
  } & {
125
- default?: (props: typeof __VLS_5) => any;
119
+ collapsed?: (props: typeof __VLS_14) => any;
126
120
  };
127
- declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
121
+ declare const __VLS_base: import("vue").DefineComponent<DockVariantProps | DockRailProps, {
128
122
  expanded: import("vue").Ref<boolean, boolean>;
129
123
  isPinned: import("vue").Ref<boolean, boolean>;
130
124
  isHeld: import("vue").ComputedRef<boolean>;
@@ -133,19 +127,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
133
127
  collapse: () => void;
134
128
  keepOpen: () => void;
135
129
  release: () => void;
136
- }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
137
- position: "fixed" | "inline" | "sticky";
138
- overflow: "grow" | "wrap" | "scroll";
139
- orientation: "horizontal" | "vertical";
140
- variant: "dock" | "rail" | "instrument-strip";
141
- density: DockDensity;
142
- shape: "pill" | "rounded" | "card";
143
- layout: "linear" | "grid";
144
- collapseDelay: number;
145
- alwaysExpanded: boolean;
146
- startCollapsed: boolean;
147
- fitContent: boolean;
148
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
130
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<DockVariantProps | DockRailProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
149
131
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
150
132
  declare const _default: typeof __VLS_export;
151
133
  export default _default;
@@ -1,5 +1,6 @@
1
1
  import type { ComputedRef } from "vue";
2
2
  export type DockOrientation = "horizontal" | "vertical";
3
+ export type DockLayout = "linear" | "grid";
3
4
  /**
4
5
  * Dock context surfaces the dock id + orientation + held-state coordination
5
6
  * to descendants.
@@ -25,6 +26,12 @@ export type DockOrientation = "horizontal" | "vertical";
25
26
  export interface DockContext {
26
27
  id: string;
27
28
  orientation: ComputedRef<DockOrientation>;
29
+ /**
30
+ * In-cap arrangement (`linear` row/column vs `grid` tile panel). AX.W45 —
31
+ * `<DockSeparator>` reads this to paint a full-row section break in a grid dock
32
+ * (a 1px perpendicular hairline is useless in a 2D tile grid).
33
+ */
34
+ layout: ComputedRef<DockLayout>;
28
35
  /** Acquire a keep-open token; suppresses timer-based collapse. */
29
36
  keepOpen: () => void;
30
37
  /** Release a previously-acquired keep-open token. */
@@ -6,7 +6,8 @@ export { default as DockBackgroundToggle } from "./DockBackgroundToggle.vue";
6
6
  export { default as DockTabButton } from "./DockTabButton.vue";
7
7
  export { default as DockSelectTrigger } from "./DockSelectTrigger.vue";
8
8
  export { default as DockDropdownTrigger } from "./DockDropdownTrigger.vue";
9
+ export { default as DockSeparator } from "./DockSeparator.vue";
9
10
  export type { UseDockStateOptions, UseDockStateReturn, DockState } from "./composables";
10
11
  export { useLayerTransition } from "./composables";
11
12
  export type { UseLayerTransitionOptions, UseLayerTransitionReturn, } from "./composables";
12
- export { DOCK_CONTEXT_KEY, useDockContext, useOptionalDockContext, provideDockContext, type DockContext, type DockOrientation, } from "./composables/dockContext";
13
+ export { DOCK_CONTEXT_KEY, useDockContext, useOptionalDockContext, provideDockContext, type DockContext, type DockOrientation, type DockLayout, } from "./composables/dockContext";
@@ -9,17 +9,31 @@ export interface MoodInteraction {
9
9
  /** ms since the last pointer activity (drives `sleepy` past IDLE_SLEEP_MS). */
10
10
  idleMs: number;
11
11
  }
12
+ /**
13
+ * Who is driving a `setMood` retarget (AX.W46 D7). `"auto"` — the autonomic arc
14
+ * (`update` from the pointer/idle state); `"manual"` — the public expose (an imperative
15
+ * `setMood` from a consumer / the demo mood pills). A manual retarget arms the
16
+ * `manualOverride` latch the auto-arc respects.
17
+ */
18
+ export type MoodSource = "auto" | "manual";
19
+ /** The options bag for `setMood` — the source discriminant (default `"manual"`). */
20
+ export interface SetMoodOptions {
21
+ /** Who is driving the retarget. Defaults to `"manual"` (the public-expose default). */
22
+ source?: MoodSource;
23
+ }
12
24
  /**
13
25
  * Animates the blob's mood parameters — a cross-fade between named mood targets
14
- * driven per frame by `tick(dt)`. `setMood` retargets; `update(interaction)` wires
15
- * `setMood` internally from the AW.W10 pointer/idle state (curious on approach,
16
- * excited on click, sleepy after inactivity); `params` is the eased current value
17
- * the renderer reads.
26
+ * driven per frame by `tick(dt)`. `setMood(mood, { source })` retargets (a `"manual"`
27
+ * source — the default — pins the mood above the auto-arc, AX.W46 D7);
28
+ * `update(interaction)` drives the AUTONOMIC arc from the AW.W10 pointer/idle state
29
+ * (curious on approach, excited on click, sleepy after inactivity), always
30
+ * `source: "auto"`, and early-returns while a manual mood is pinned; `params` is the
31
+ * eased current value the renderer reads.
18
32
  */
19
33
  export declare function useBlobMood(): {
20
34
  currentMood: Readonly<Ref<BlobMood>>;
21
35
  params: Readonly<Ref<MoodParams>>;
22
- setMood: (mood: BlobMood) => void;
36
+ setMood: (mood: BlobMood, options?: SetMoodOptions) => void;
23
37
  update: (interaction: MoodInteraction) => void;
24
38
  tick: (dt: number) => void;
25
39
  /** AX.W16 — the quiescence at-rest predicate the renderer's demand gate reads. */
@@ -0,0 +1,92 @@
1
+ import { type HTMLAttributes } from "vue";
2
+ /** The canonical tab/option shape — one descriptor across all three variants. */
3
+ export interface SegmentedTabOption {
4
+ label: string;
5
+ value: string;
6
+ icon?: string;
7
+ disabled?: boolean;
8
+ tooltip?: string;
9
+ }
10
+ /** The three indicator chromes. `segmented` (default) = the muted pill-slider;
11
+ * `pill` = the solid `--foreground` pill; `underline` = the hairline rule. */
12
+ export type SegmentedTabsVariant = "segmented" | "pill" | "underline";
13
+ export interface SegmentedTabsResponsive {
14
+ /**
15
+ * CSS length consumed inside `(min-width: <breakpoint>)`. BELOW it the
16
+ * strip collapses to a `<Select>`; at/above it renders the tab strip.
17
+ * Defaults to `"640px"` (Tailwind `sm:`).
18
+ */
19
+ breakpoint?: string;
20
+ /**
21
+ * Optional subset shown in the desktop strip (the mobile Select keeps the
22
+ * full option list). Falls back to `options`.
23
+ */
24
+ desktopOptions?: SegmentedTabOption[] | null;
25
+ /** Accessible name for the mobile `<SelectTrigger>`. */
26
+ ariaLabel?: string;
27
+ /** Class merged onto the mobile `<SelectTrigger>` only. */
28
+ triggerClass?: HTMLAttributes["class"];
29
+ }
30
+ export interface SegmentedTabsProps {
31
+ options: SegmentedTabOption[];
32
+ /**
33
+ * Indicator chrome — `segmented` (DEFAULT, the pill-slider over a muted
34
+ * track), `pill` (solid foreground pill), `underline` (the hairline rule).
35
+ */
36
+ variant?: SegmentedTabsVariant;
37
+ /**
38
+ * Multi-select — when true the surface mutates as a ToggleGroup (N
39
+ * simultaneous pressed buttons, `role="group"`). Only valid on the
40
+ * `segmented`/`pill` variants; `underline` is panel-nav (single-select).
41
+ */
42
+ multiSelect?: boolean;
43
+ /**
44
+ * Tab-row overflow handling.
45
+ * - `"none"` (default) — inline-grid; tabs share width and clip.
46
+ * - `"scroll"` — flex row with intrinsic widths + edge fades; never clips.
47
+ * - `"auto"` — flex row with intrinsic widths + plain horizontal scroll.
48
+ */
49
+ overflow?: "none" | "scroll" | "auto";
50
+ /**
51
+ * Responsive collapse — below the breakpoint the strip becomes a `<Select>`
52
+ * (subsumes the former standalone ResponsiveTabs). `true` uses defaults;
53
+ * an object tunes the breakpoint / desktop subset / accessible name.
54
+ */
55
+ responsive?: boolean | SegmentedTabsResponsive;
56
+ class?: HTMLAttributes["class"];
57
+ }
58
+ type __VLS_Props = SegmentedTabsProps;
59
+ type __VLS_ModelProps = {
60
+ modelValue: string | string[];
61
+ };
62
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
63
+ declare var __VLS_50: {
64
+ option: SegmentedTabOption;
65
+ active: boolean;
66
+ }, __VLS_58: {
67
+ option: SegmentedTabOption;
68
+ active: boolean;
69
+ };
70
+ type __VLS_Slots = {} & {
71
+ option?: (props: typeof __VLS_50) => any;
72
+ } & {
73
+ option?: (props: typeof __VLS_58) => any;
74
+ };
75
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
76
+ "update:modelValue": (value: string | string[]) => any;
77
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
78
+ "onUpdate:modelValue"?: ((value: string | string[]) => any) | undefined;
79
+ }>, {
80
+ overflow: "none" | "scroll" | "auto";
81
+ variant: SegmentedTabsVariant;
82
+ responsive: boolean | SegmentedTabsResponsive;
83
+ multiSelect: boolean;
84
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
85
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
86
+ declare const _default: typeof __VLS_export;
87
+ export default _default;
88
+ type __VLS_WithSlots<T, S> = T & {
89
+ new (): {
90
+ $slots: S;
91
+ };
92
+ };
@@ -0,0 +1,49 @@
1
+ import { type Ref, type ComputedRef } from "vue";
2
+ import type { SegmentedTabOption } from "../SegmentedTabs.vue";
3
+ /**
4
+ * Package-private composable for `SegmentedTabs.vue` — owns the JS-measured
5
+ * indicator path: the single- and multi-select slider styles, the offset
6
+ * measure, the model/options re-measure watchers, and the ResizeObserver
7
+ * lifecycle. It ALSO owns the AX.W53 travel-squish: a velocity-driven,
8
+ * volume-preserving `--stretch` scalar the active indicator reads so it
9
+ * STRETCHES along its travel axis as it glides between tabs and settles to fit
10
+ * (the Material 3 ELASTIC / Apple Liquid-Glass register, capped LOW).
11
+ *
12
+ * The composable is the SOLE writer of the JS slider styles. The measure path
13
+ * runs only on the multi-select OR `@supports not (anchor)` branch — on an
14
+ * anchor-supporting single-select engine the CSS `anchor-name` owns the slider
15
+ * position and that path stays dormant (no RO is constructed, no measure runs).
16
+ * The squish is independent of the position path: it is a transient `--stretch`
17
+ * write driven on EVERY selection (anchor or JS engine) and reads from
18
+ * `--tab-indicator-max-stretch`, so the elastic warp lands on all three
19
+ * variants. Honors `prefers-reduced-motion` (no squish under reduce).
20
+ */
21
+ export interface UseTabIndicatorParams {
22
+ /** The container scroller root (observed by the ResizeObserver). */
23
+ containerRef: Ref<HTMLElement | null>;
24
+ /** The active indicator element (the squish `--stretch` write target). */
25
+ indicatorRef: Ref<HTMLElement | null>;
26
+ /** Per-option button refs, index-aligned to `options`. */
27
+ buttonRefs: Ref<HTMLElement[]>;
28
+ /** The tab options (re-measure on change). */
29
+ options: ComputedRef<SegmentedTabOption[]>;
30
+ /** The defineModel value (re-measure on change). */
31
+ model: Ref<string | string[] | undefined>;
32
+ /** True for the multi-select path. */
33
+ multiSelect: ComputedRef<boolean>;
34
+ /** Whether the browser supports CSS anchor positioning. */
35
+ anchorSupported: boolean;
36
+ /** True when ANY JS slider writer is live (gates RO/watcher attach). */
37
+ jsSliderActive: ComputedRef<boolean>;
38
+ /** The active option values (used by the multi-slider measure). */
39
+ activeValues: ComputedRef<string[]>;
40
+ }
41
+ export interface UseTabIndicatorReturn {
42
+ /** Inline style for the single-select JS slider. */
43
+ singleSliderStyle: Ref<Record<string, string>>;
44
+ /** Inline styles for each active multi-select slider, keyed by value. */
45
+ multiSliderStyles: Ref<Record<string, Record<string, string>>>;
46
+ /** Imperatively kick the travel-squish on a selection at `idx`. */
47
+ squishOnTravel: (toIdx: number) => void;
48
+ }
49
+ export declare function useTabIndicator(params: UseTabIndicatorParams): UseTabIndicatorReturn;
@@ -1,5 +1,2 @@
1
- export { default as UnderlineTabs } from "./UnderlineTabs.vue";
2
- export { default as BouncyTabs } from "./BouncyTabs.vue";
3
- export { default as BouncyToggle } from "./BouncyToggle.vue";
4
- export type { TabOption } from "./UnderlineTabs.vue";
5
- export type { ToggleOption, BouncyToggleProps } from "./BouncyToggle.vue";
1
+ export { default as SegmentedTabs } from "./SegmentedTabs.vue";
2
+ export type { SegmentedTabOption, SegmentedTabsVariant, SegmentedTabsProps, SegmentedTabsResponsive, } from "./SegmentedTabs.vue";
@@ -1,7 +1,7 @@
1
1
  import { type VariantProps } from 'class-variance-authority';
2
2
  export { default as Button } from './Button.vue';
3
3
  export declare const buttonVariants: (props?: ({
4
- variant?: "link" | "default" | "primary-audacious" | "gold-audacious" | "destructive" | "outline" | "secondary" | "accent" | "ghost" | "glass" | "glass-wash" | "ai" | null | undefined;
4
+ variant?: "link" | "default" | "solid" | "primary-audacious" | "gold-audacious" | "destructive" | "outline" | "secondary" | "accent" | "ghost" | "glass" | "glass-wash" | "ai" | null | undefined;
5
5
  size?: "default" | "xs" | "sm" | "lg" | "icon" | "icon-sm" | null | undefined;
6
6
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
7
  export type ButtonVariants = VariantProps<typeof buttonVariants>;
@@ -1,16 +1,18 @@
1
1
  import { type HTMLAttributes } from "vue";
2
2
  import { type PrimitiveProps } from "reka-ui";
3
3
  /**
4
- * The five-tier glass surface ladder. Maps 1:1 to `.glass-{tier}` in glass.css
5
- * after the v0.8.0 R3-spec rename:
4
+ * The glass surface ladder. Maps 1:1 to `.glass-{tier}` in glass.css after the
5
+ * v0.8.0 R3-spec rename:
6
6
  *
7
7
  * wash — lightest (~0.30α) : inline workspace chrome, scroll-pane host
8
8
  * quiet — light (~0.50α) : ambient panels, secondary surfaces
9
9
  * resting — canonical (~0.65α) : the protagonist plate (default)
10
10
  * floating — heavy (~0.80α) : popover-class, login surfaces
11
11
  * overlay — heaviest (~0.95α + blur) : modal-on-modal, dialog over content
12
+ * opaque — `--glass-level:0` escape : the solid-card opt-out (AX.W54), maps to
13
+ * `.glass-opaque` through the same `glass-${tier}` rung as the rest
12
14
  */
13
- export type CardTier = "wash" | "quiet" | "resting" | "floating" | "overlay";
15
+ export type CardTier = "wash" | "quiet" | "resting" | "floating" | "overlay" | "opaque";
14
16
  /**
15
17
  * Surface decoration register — orthogonal to `tier`/`shadow`/`grain`.
16
18
  *
@@ -10,7 +10,7 @@ type __VLS_Slots = {} & {
10
10
  };
11
11
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
12
12
  size: "default" | "xs" | "sm" | "lg" | "icon" | "icon-sm" | null;
13
- variant: "link" | "default" | "primary-audacious" | "gold-audacious" | "destructive" | "outline" | "secondary" | "accent" | "ghost" | "glass" | "glass-wash" | "ai" | null;
13
+ variant: "link" | "default" | "solid" | "primary-audacious" | "gold-audacious" | "destructive" | "outline" | "secondary" | "accent" | "ghost" | "glass" | "glass-wash" | "ai" | null;
14
14
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
15
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
16
16
  declare const _default: typeof __VLS_export;
@@ -10,7 +10,7 @@ type __VLS_Slots = {} & {
10
10
  };
11
11
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
12
12
  size: "default" | "xs" | "sm" | "lg" | "icon" | "icon-sm" | null;
13
- variant: "link" | "default" | "primary-audacious" | "gold-audacious" | "destructive" | "outline" | "secondary" | "accent" | "ghost" | "glass" | "glass-wash" | "ai" | null;
13
+ variant: "link" | "default" | "solid" | "primary-audacious" | "gold-audacious" | "destructive" | "outline" | "secondary" | "accent" | "ghost" | "glass" | "glass-wash" | "ai" | null;
14
14
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
15
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
16
16
  declare const _default: typeof __VLS_export;
@@ -2,14 +2,13 @@ import type { HTMLAttributes } from "vue";
2
2
  /**
3
3
  * GlassCarouselPager — audacious carousel pager substrate.
4
4
  *
5
- * Lifts the hand-rolled chevron-prev + counter-pill + chevron-next + state-toggle
6
- * row from `containers/glass-carousel.vue:127-157` into a canonical primitive.
5
+ * A canonical chevron-prev + counter-pill + chevron-next + state-toggle row.
7
6
  * Composes `<Button variant="outline" size="icon">` chevrons with a glass-card
8
7
  * counter pill and an optional toggle slot for collapse/expand affordances.
9
8
  *
10
9
  * Standalone: accepts `:index` / `:total` props and emits `@prev` / `@next` /
11
- * `@select(i)`, so it composes equally with `<GlassCarousel>` (manual state) and
12
- * `<Carousel>` (embla — wire via `useCarousel`).
10
+ * `@select(i)`, so it composes with `<Carousel>` (embla — wire via
11
+ * `useCarousel`) or any manual-state host.
13
12
  */
14
13
  type __VLS_Props = {
15
14
  /** Current zero-based slide index. */
@@ -9,15 +9,22 @@ export { default as Slider } from './Slider.vue';
9
9
  * `.slider-thumb` paint. The size axis lifts pure geometry via CSS vars
10
10
  * (`--slider-track-height`, `--slider-thumb-size`) the SFC defaults read.
11
11
  *
12
- * Exactly two canonical recipes ship:
13
- * standard — the continuous rounded iOS knob: a fully-circular, borderless
14
- * thumb that sits in the track and reads as a swelling of the
15
- * capsule, with halo-on-state and the iOS press spring. This is
16
- * the general-purpose glass-scrubber knob and the default.
17
- * spectrum — the gradient-track color slider: a tall capsule whose
12
+ * Exactly two canonical recipes ship (AX.W59 redesign):
13
+ * standard — the INTEGRATED-CYLINDER glass slider: the fill is ONE
14
+ * continuous glass rounded-pill (W52 backdrop + edge rim, tinted
15
+ * to `--primary`) pulled left/right; its rounded LEADING edge IS
16
+ * the grab. There is NO visible demarcation between thumb and
17
+ * fill — the reka SliderThumb stays mounted (a11y/keyboard/focus)
18
+ * but is styled as the cylinder's slim leading CAP (a faint
19
+ * specular grip, not a detached circle). Halo-on-state + the iOS
20
+ * press spring. This is the general-purpose glass scrubber and
21
+ * the default.
22
+ * spectrum — the value.js gradient-track color slider: a tall capsule whose
18
23
  * background is a consumer-supplied `--slider-track-bg`
19
24
  * linear-gradient (the LCH/hue ramp), a transparent range, and a
20
- * small ringed knob that reads against any track hue. This is the
25
+ * SQUIRCLE thumb the HEIGHT of the track (the iOS color-picker
26
+ * idiom — `corner-shape: superellipse()` via `--corner-shape-thumb`,
27
+ * @supports-gated over a `--radius-lg` round fallback). This is the
21
28
  * aurora/blob color-picking surface.
22
29
  *
23
30
  * Sizes:
@@ -5,7 +5,7 @@ type __VLS_Props = TabsListProps & {
5
5
  /**
6
6
  * AW.W25 — render the spring `TabsIndicator` pill behind the triggers so
7
7
  * the base default `<Tabs>` matches its own indicator primitive (the
8
- * polished pill previously lived only in custom BouncyTabs; the base
8
+ * polished pill previously lived only in the custom SegmentedTabs; the base
9
9
  * under-delivered vs its own `TabsIndicator.vue`). Default `true`. Set
10
10
  * `:indicator="false"` for a list that drives its own active-state vocab.
11
11
  */
@@ -1,7 +1,7 @@
1
1
  import { type InjectionKey } from "vue";
2
2
  /**
3
3
  * Domain-neutral provide/inject DI factory pair — the single source the dock,
4
- * dock-layer-group, toggle-group, sortable-list, glyph-face, and configurator
4
+ * dock-layer-group, toggle-group, sortable-list, and configurator
5
5
  * contexts collapse onto (AV.W14). Generalizes the four hand-rolled
6
6
  * provide/inject/throw triplets into ONE typed factory so a `*_KEY:
7
7
  * InjectionKey<T>` declaration + its `provide`/`use`/throw boilerplate is never
@@ -1,2 +1,2 @@
1
- import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "./useConfiguratorState-CMff4GzH.js";
1
+ import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "./useConfiguratorState-DxAqksK6.js";
2
2
  export { e as CONFIGURATOR_DENSITY_KEY, t as Configurator, i as ConfiguratorLayer, n as ConfiguratorRow, r as provideConfiguratorDensity, o as useConfiguratorState, a as useOptionalConfiguratorDensity };
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./createLucideIcon-B6uNAU9G.js";
2
- import { n as t } from "./button-CAywcrhO.js";
2
+ import { n as t } from "./button-DN39cGqL.js";
3
3
  import { t as n } from "./_plugin-vue_export-helper-ok8pgSl5.js";
4
4
  import { Transition as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createTextVNode as c, createVNode as l, defineComponent as u, mergeModels as d, openBlock as f, renderSlot as p, toDisplayString as m, unref as h, useModel as g, withCtx as _, withKeys as v, withModifiers as y } from "vue";
5
5
  var b = e("loader-circle", [["path", {
@@ -1,7 +1,7 @@
1
1
  import { t as e } from "./cn-DJXf4yaB.js";
2
2
  import { t } from "./useCanvas2D-ClrQuZtp.js";
3
3
  import { t as n } from "./_plugin-vue_export-helper-ok8pgSl5.js";
4
- import { n as r, t as i } from "./prng-COGhh02-.js";
4
+ import { n as r, t as i } from "./prng-wHuHlNHE.js";
5
5
  import { computed as a, createElementBlock as o, createElementVNode as s, defineComponent as c, normalizeClass as l, onMounted as u, openBlock as d, ref as f, unref as p, useTemplateRef as m } from "vue";
6
6
  //#region src/components/custom/constellation/constellationField.ts
7
7
  var h = 1280, g = {
@@ -1,3 +1,3 @@
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 "./ContextMenuSubContent-Do977Cbf.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 "./ContextMenuSubContent-Bhg4f5jX.js";
2
2
  import { n as l, r as u, t as d } from "./ContextMenuContent-DDa0v27s.js";
3
3
  export { u as ContextMenu, s as ContextMenuCheckboxItem, d as ContextMenuContent, t as ContextMenuItem, o as ContextMenuLabel, r as ContextMenuRadioGroup, a as ContextMenuRadioItem, n as ContextMenuSeparator, e as ContextMenuShortcut, c as ContextMenuSubContent, i as ContextMenuSubTrigger, l as ContextMenuTrigger };
package/dist/controls.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { t as e } from "./cn-DJXf4yaB.js";
2
2
  import { t } from "./_plugin-vue_export-helper-ok8pgSl5.js";
3
- import { t as n } from "./useGlobalDark-D3EBWzXK.js";
3
+ import { t as n } from "./useGlobalDark-yhL4Wp-s.js";
4
4
  import { computed as r, createBlock as i, createElementVNode as a, defineComponent as o, mergeProps as s, openBlock as c, resolveDynamicComponent as l, unref as u, useAttrs as d, watchEffect as f, withCtx as p } from "vue";
5
5
  //#endregion
6
6
  //#region src/components/custom/controls/DarkModeToggle.vue
package/dist/dark.js CHANGED
@@ -1,4 +1,4 @@
1
- import { t as e } from "./useGlobalDark-D3EBWzXK.js";
1
+ import { t as e } from "./useGlobalDark-yhL4Wp-s.js";
2
2
  import { nextTick as t, watch as n } from "vue";
3
3
  //#region src/composables/dark/installDarkModeSync.ts
4
4
  function r(r) {
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "./DataTable-CvlWXz65.js";
1
+ import { n as e, t } from "./DataTable-CUHMukiQ.js";
2
2
  export { t as DataTable, e as DataTablePagination };
@@ -1,2 +1,2 @@
1
- import { t as e } from "./DeckProgress-AVgbIULY.js";
1
+ import { t as e } from "./DeckProgress-Dmk4_AKN.js";
2
2
  export { e as DeckProgress };
package/dist/dialog.js CHANGED
@@ -1,3 +1,3 @@
1
- import { n as e, t } from "./DialogContent-DjZWT3lK.js";
1
+ import { n as e, t } from "./DialogContent-BRkT1cjP.js";
2
2
  import { a as n, i as r, n as i, o as a, r as o, s, t as c } from "./DialogFooter-Gprw8H_A.js";
3
3
  export { e as Dialog, s as DialogClose, t as DialogContent, o as DialogDescription, c as DialogFooter, n as DialogHeader, i as DialogScrollContent, r as DialogTitle, a as DialogTrigger };