@mkbabb/glass-ui 10.1.5 → 11.0.1

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 (214) hide show
  1. package/MIGRATION.md +1024 -1461
  2. package/README.md +2 -2
  3. package/dist/DialogContent-DG5kseRQ.js +159 -0
  4. package/dist/DropdownMenuTrigger-uhSXgEfK.js +76 -0
  5. package/dist/{Surface-1nPoabc3.js → Surface-C7wq2j0A.js} +3 -0
  6. package/dist/aurora.css +1 -0
  7. package/dist/aurora.js +246 -2472
  8. package/dist/auroraImageSource-xNLDUjcy.js +30 -0
  9. package/dist/axes.js +8 -8
  10. package/dist/blob.css +1 -0
  11. package/dist/blob.js +57 -54
  12. package/dist/budget-CJfhLIIV.js +13 -0
  13. package/dist/button-CAKhiOZy.js +113 -0
  14. package/dist/button.js +1 -1
  15. package/dist/{card-ByyqRBvK.js → card-D_uXphvL.js} +4 -1
  16. package/dist/card.js +1 -1
  17. package/dist/carousel.js +3 -2
  18. package/dist/{checkbox-B1qn65se.js → checkbox-COLnvULu.js} +1 -0
  19. package/dist/checkbox.css +1 -0
  20. package/dist/checkbox.js +1 -1
  21. package/dist/{collapsible-DFzK29Oh.js → collapsible-Bd4Et730.js} +1 -0
  22. package/dist/collapsible.css +1 -0
  23. package/dist/collapsible.js +1 -1
  24. package/dist/color-HkUaTAJj.js +270 -0
  25. package/dist/{color.glsl-DTJhdekG.js → color.glsl-bFJm8k5R.js} +4 -16
  26. package/dist/color.wgsl-B-qDJ_OM.js +4 -0
  27. package/dist/{command-CatrAsrl.js → command-BsFOGZwB.js} +3 -2
  28. package/dist/command.css +1 -0
  29. package/dist/command.js +1 -1
  30. package/dist/component-styles.css +0 -1
  31. package/dist/components/_shared/axes.d.ts +7 -0
  32. package/dist/components/_shared/feedback/dot-ring.css +1 -1
  33. package/dist/components/_shared/overlay/focus-return.d.ts +9 -0
  34. package/dist/components/_shared/overlay/index.d.ts +3 -0
  35. package/dist/components/_shared/overlay/root-scroll-lock.d.ts +4 -0
  36. package/dist/components/_shared/overlay/sheet-width.d.ts +2 -0
  37. package/dist/components/_shared/shape/useBarShape.d.ts +4 -0
  38. package/dist/components/aurora/composables/auroraFallbackGround.d.ts +12 -0
  39. package/dist/components/aurora/constants/presets.d.ts +21 -0
  40. package/dist/components/aurora/index.d.ts +2 -2
  41. package/dist/components/button/styles.css +1 -1
  42. package/dist/components/dark-mode-toggle/dark-mode-toggle.css +1 -1
  43. package/dist/components/dialog/DialogContent.vue.d.ts +2 -2
  44. package/dist/components/dialog/ModalOverlay.vue.d.ts +2 -2
  45. package/dist/components/dialog/ModalScrim.vue.d.ts +26 -0
  46. package/dist/components/dialog/styles.css +1 -1
  47. package/dist/components/dock/GlassDock.vue.d.ts +4 -1
  48. package/dist/components/dock/composables/useDockShellProps.d.ts +34 -2
  49. package/dist/components/dock/composables/useDockState.d.ts +5 -0
  50. package/dist/components/dock/index.d.ts +1 -2
  51. package/dist/components/dock/styles/controls/icon-button.css +1 -1
  52. package/dist/components/dock/styles/controls/tab-button.css +1 -1
  53. package/dist/components/dock/styles/morph.css +1 -1
  54. package/dist/components/dock/styles/run.css +1 -1
  55. package/dist/components/dock/styles/shell.css +1 -1
  56. package/dist/components/dock/trigger.d.ts +1 -0
  57. package/dist/components/expandable-container/ExpandableContainer.vue.d.ts +30 -29
  58. package/dist/components/menu/ContextMenu.vue.d.ts +27 -0
  59. package/dist/components/menu/DropdownMenu.vue.d.ts +5 -23
  60. package/dist/components/menu/context.d.ts +18 -5
  61. package/dist/components/menu/family-click.d.ts +2 -0
  62. package/dist/components/menu/family-context.d.ts +2 -0
  63. package/dist/components/menu/index.d.ts +1 -1
  64. package/dist/components/sheet/SheetContent.vue.d.ts +2 -2
  65. package/dist/components/sortable-list/styles.css +1 -0
  66. package/dist/components/surface/Surface.vue.d.ts +4 -1
  67. package/dist/components/tabs/composables/useTabDragMorph.d.ts +4 -7
  68. package/dist/components/tabs/styles/segmented.css +1 -1
  69. package/dist/components/tabs/types.d.ts +7 -8
  70. package/dist/composables/glass/fieldPaint.d.ts +4 -0
  71. package/dist/composables/glass/useGlassBackdropLuminance.d.ts +7 -6
  72. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +8 -0
  73. package/dist/composables/motion/core/motionTempo.d.ts +2 -1
  74. package/dist/composables/motion/morph/useDragMorph.d.ts +2 -2
  75. package/dist/composables/motion/morph/useSelectionGroup.d.ts +6 -25
  76. package/dist/composables/motion/morph/useSelectionIndicator.d.ts +8 -54
  77. package/dist/composables/motion/spring/useLiquidFlex.d.ts +3 -5
  78. package/dist/composables/motion/spring/useSpringMount.d.ts +0 -9
  79. package/dist/{configurator-Dl10mc3L.js → configurator-C1ZKEf1b.js} +7 -5
  80. package/dist/configurator.css +1 -0
  81. package/dist/configurator.js +1 -1
  82. package/dist/constants-DfrO-IaH.js +8 -0
  83. package/dist/constellation.css +1 -0
  84. package/dist/constellation.js +2 -1
  85. package/dist/control.css +1 -0
  86. package/dist/{control.css_vue_type_style_index_0_src_true_lang-BIdufaDG.js → control.css_vue_type_style_index_0_src_true_lang-D2hdtjs4.js} +1 -0
  87. package/dist/{createCanvasLifecycle-hJHobVTn.js → createCanvasLifecycle-DS0vEs_G.js} +76 -75
  88. package/dist/dark-mode-toggle.js +1 -1
  89. package/dist/{data-table-8y6fbyOB.js → data-table-CunuMkZ3.js} +1 -0
  90. package/dist/data-table.css +1 -0
  91. package/dist/data-table.js +1 -1
  92. package/dist/{deck-Cm_VmyNL.js → deck-Bc-2mEKE.js} +1 -0
  93. package/dist/deck.js +1 -1
  94. package/dist/dialog.js +1 -1
  95. package/dist/dock-trigger.d.ts +1 -0
  96. package/dist/dock-trigger.js +88 -0
  97. package/dist/dock.js +685 -729
  98. package/dist/easing.js +4 -4
  99. package/dist/expandable-container-wS1awXGd.js +135 -0
  100. package/dist/expandable-container.css +1 -0
  101. package/dist/expandable-container.js +1 -1
  102. package/dist/{fading-scroll-ClCPooXb.js → fading-scroll-D3Y20ibL.js} +1 -1
  103. package/dist/fading-scroll.js +1 -1
  104. package/dist/fieldPaint-Ci77oajZ.js +7 -0
  105. package/dist/fourier-field.css +1 -0
  106. package/dist/fourier-field.js +15 -13
  107. package/dist/glSetup-DMaDgrEj.js +577 -0
  108. package/dist/glass-ui.js +66 -65
  109. package/dist/handmark.css +1 -0
  110. package/dist/handmark.js +82 -71
  111. package/dist/index.css +1 -0
  112. package/dist/index.d.ts +1 -1
  113. package/dist/{input-eLZ_AU7l.js → input-BLF2pMHE.js} +1 -1
  114. package/dist/input.js +1 -1
  115. package/dist/{label-CE03H1KL.js → label-ryNPL7e6.js} +1 -0
  116. package/dist/label.css +1 -0
  117. package/dist/label.js +1 -1
  118. package/dist/labeled-field.css +1 -0
  119. package/dist/labeled-field.js +5 -4
  120. package/dist/{menu-DaYAZiVW.js → menu-C_l2Sslf.js} +162 -112
  121. package/dist/menu.js +3 -3
  122. package/dist/metric.js +1 -0
  123. package/dist/motion-core.js +138 -44
  124. package/dist/motion-lHDAQHEE.js +91 -0
  125. package/dist/motion.js +5 -5
  126. package/dist/motionTempo-DXdVbCWr.js +13 -0
  127. package/dist/music-staff.js +1 -0
  128. package/dist/{number-field-RP89046a.js → number-field-BXFUP49Z.js} +3 -2
  129. package/dist/number-field.css +1 -0
  130. package/dist/number-field.js +1 -1
  131. package/dist/pager-dots.css +1 -0
  132. package/dist/pager-dots.js +3 -2
  133. package/dist/participation-C5y5VZTN.js +52 -0
  134. package/dist/{popover-BdpoE4Ar.js → popover-DQUmwuAa.js} +3 -2
  135. package/dist/popover.js +1 -1
  136. package/dist/{progress-eVa-mc7J.js → progress-BUn0Bw7Z.js} +1 -0
  137. package/dist/progress.css +1 -0
  138. package/dist/progress.js +1 -1
  139. package/dist/{radio-group-B58Bz16F.js → radio-group-xdEy2tdi.js} +1 -0
  140. package/dist/radio-group.css +1 -0
  141. package/dist/radio-group.js +1 -1
  142. package/dist/root-scroll-lock-DJFrQhMa.js +22 -0
  143. package/dist/select-Dt5dXm87.js +309 -0
  144. package/dist/select.js +1 -1
  145. package/dist/{separator-D4EZM10u.js → separator-C4y9p_ky.js} +1 -0
  146. package/dist/separator.css +1 -0
  147. package/dist/separator.js +1 -1
  148. package/dist/sheet-DLqNUIZl.js +347 -0
  149. package/dist/sheet-width-DgXgJNa5.js +18 -0
  150. package/dist/sheet.js +2 -2
  151. package/dist/{slider-Dg3Qqdyo.js → slider-B4w12E_u.js} +8 -8
  152. package/dist/slider.js +1 -1
  153. package/dist/sortable-list.js +2 -1
  154. package/dist/{status-dot-W4LFiJps.js → status-dot-BDZKcRxy.js} +2 -1
  155. package/dist/status-dot.css +1 -0
  156. package/dist/status-dot.js +1 -1
  157. package/dist/styles/components.css +1 -1
  158. package/dist/styles/glass/glass-capsule.css +1 -1
  159. package/dist/styles/glass/glass-chip.css +1 -1
  160. package/dist/styles/glass/mark.css +1 -1
  161. package/dist/styles/glass/overlay-plate.css +1 -1
  162. package/dist/styles/glass/surface-axis.css +1 -1
  163. package/dist/styles/index.css +1 -1
  164. package/dist/styles/theme/radius.css +1 -1
  165. package/dist/styles/tokens/color-radius.css +1 -1
  166. package/dist/styles/tokens/manifest.d.ts +1 -1
  167. package/dist/styles/tokens/scale-paper.css +1 -1
  168. package/dist/styles/utilities/base-misc.css +1 -1
  169. package/dist/surface.js +1 -1
  170. package/dist/{switch-BYUZ6g9G.js → switch-DLfGYU35.js} +1 -0
  171. package/dist/switch.css +1 -0
  172. package/dist/switch.js +1 -1
  173. package/dist/tabs-NgTRPGZx.js +229 -0
  174. package/dist/tabs.js +1 -1
  175. package/dist/textarea.js +1 -1
  176. package/dist/timeline.css +1 -0
  177. package/dist/timeline.js +4 -3
  178. package/dist/toggle-group-DgXcJGD6.js +129 -0
  179. package/dist/toggle-group.css +1 -0
  180. package/dist/toggle-group.js +1 -1
  181. package/dist/tokens.js +2 -0
  182. package/dist/{tooltip-CZVubnJf.js → tooltip-Do3qCw0r.js} +1 -1
  183. package/dist/tooltip.js +1 -1
  184. package/dist/typewriter.css +1 -0
  185. package/dist/typewriter.js +1 -0
  186. package/dist/uniformBridge-CJyy7NOn.js +150 -0
  187. package/dist/useBarShape-CmP35Z8o.js +24 -0
  188. package/dist/{useCanvas2D-CQRElMyE.js → useCanvas2D-Bhpwua98.js} +1 -1
  189. package/dist/{useDockCtaReceive-BSSgD6mu.js → useDockCtaReceive-Dn_-paqP.js} +1 -1
  190. package/dist/{useDragMorph-B363RUbF.js → useDragMorph-BEI74U0t.js} +51 -40
  191. package/dist/{color.wgsl-BTszLY39.js → useGpuSubstrate-Y5XAdU8d.js} +7 -7
  192. package/dist/{useLiquidPress-h1scrPtP.js → useLiquidPress-D5mjZC6U.js} +2 -2
  193. package/dist/useScrollChrome-DMP6kDI9.js +67 -0
  194. package/dist/useSelectionGroup-DAQv5Lb5.js +186 -0
  195. package/dist/{useSpring-9u2_shxV.js → useSpring-Aof0nTRt.js} +1 -1
  196. package/dist/useSpringMount-jgNkymRl.js +73 -0
  197. package/dist/wgpuSetup-CFuqd_RP.js +1278 -0
  198. package/package.json +8 -1
  199. package/dist/DialogContent-CwIBvou_.js +0 -157
  200. package/dist/DropdownMenuTrigger-CKRnhDSQ.js +0 -93
  201. package/dist/button-BOFTUPyU.js +0 -110
  202. package/dist/composables/motion/morph/eyeglass.d.ts +0 -141
  203. package/dist/expandable-container-CZUj9BzY.js +0 -142
  204. package/dist/glass-ui.css +0 -2
  205. package/dist/motion-BvV1_24p.js +0 -61
  206. package/dist/motionTempo-tscp92Nm.js +0 -7
  207. package/dist/participation-B7UFdgXB.js +0 -55
  208. package/dist/select-BiF0FCZf.js +0 -292
  209. package/dist/sheet-DmJxgAHc.js +0 -345
  210. package/dist/tabs-C5sC0fBE.js +0 -269
  211. package/dist/toggle-group-CC5b3o1R.js +0 -125
  212. package/dist/useScrollChrome-BJbWV32F.js +0 -162
  213. package/dist/useSelectionGroup-zsEwitF6.js +0 -291
  214. package/dist/useSpringMount-OA-0mTNv.js +0 -73
package/dist/easing.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import { t as e } from "./class-names-FlXcvRRT.js";
2
2
  import { t } from "./DotRing-Blh4Mc3Q.js";
3
3
  import { n } from "./useReducedMotion-vCXA_vyM.js";
4
- import { t as r } from "./button-BOFTUPyU.js";
4
+ import { t as r } from "./button-CAKhiOZy.js";
5
5
  import { t as i } from "./useClipboard-D36OTaeT.js";
6
- import { a, c as o, l as s, r as c, s as l } from "./select-BiF0FCZf.js";
7
- import { t as u } from "./slider-Dg3Qqdyo.js";
8
- import { t as d } from "./tabs-C5sC0fBE.js";
6
+ import { a, c as o, l as s, r as c, s as l } from "./select-Dt5dXm87.js";
7
+ import { t as u } from "./slider-B4w12E_u.js";
8
+ import { t as d } from "./tabs-NgTRPGZx.js";
9
9
  import { Fragment as f, computed as p, createBlock as m, createCommentVNode as h, createElementBlock as g, createElementVNode as _, createTextVNode as v, createVNode as y, defineComponent as b, mergeModels as x, normalizeClass as S, onScopeDispose as C, onUnmounted as ee, openBlock as w, ref as T, renderList as E, toDisplayString as D, unref as O, useId as k, useModel as te, useTemplateRef as A, watch as ne, withCtx as j } from "vue";
10
10
  import { Check as re, Copy as ie, Play as ae, RotateCcw as oe, Square as se } from "@lucide/vue";
11
11
  import { parseTimingFunction as M } from "@mkbabb/value.js/css";
@@ -0,0 +1,135 @@
1
+ import "./expandable-container.css";
2
+ import { n as e, t } from "./root-scroll-lock-DJFrQhMa.js";
3
+ import { registerShortcut as n } from "./keyboard.js";
4
+ import { t as r } from "./focus-Duf7EpUu.js";
5
+ import { Teleport as i, createBlock as a, createElementVNode as o, createVNode as s, defineComponent as c, mergeModels as l, mergeProps as u, nextTick as d, onUnmounted as f, openBlock as p, ref as m, renderSlot as h, unref as g, useModel as _, watch as v, withCtx as y } from "vue";
6
+ import { FocusScope as b } from "reka-ui";
7
+ import { Maximize2 as x, Minimize2 as S } from "@lucide/vue";
8
+ //#region src/components/expandable-container/ExpandableContainer.vue?vue&type=script&setup=true&lang.ts
9
+ var C = [
10
+ "data-state",
11
+ "data-surface",
12
+ "role",
13
+ "aria-label",
14
+ "aria-modal"
15
+ ], w = ["hidden"], T = ["data-position", "aria-label"], E = ["hidden"], D = ["data-position", "aria-label"], O = { "data-part": "panel" }, k = /* @__PURE__ */ c({
16
+ inheritAttrs: !1,
17
+ __name: "ExpandableContainer",
18
+ props: /*@__PURE__*/ l({
19
+ buttonPosition: { default: "right" },
20
+ expandLabel: { default: "Fullscreen" },
21
+ collapseLabel: { default: "Exit fullscreen" },
22
+ surface: { default: "glass" }
23
+ }, {
24
+ open: {
25
+ type: Boolean,
26
+ default: !1
27
+ },
28
+ openModifiers: {}
29
+ }),
30
+ emits: ["update:open"],
31
+ setup(c) {
32
+ let l = _(c, "open"), k = m(null);
33
+ function A() {
34
+ let e = k.value?.$el;
35
+ return e instanceof HTMLElement ? e : null;
36
+ }
37
+ function j() {
38
+ l.value = !0;
39
+ }
40
+ function M() {
41
+ l.value = !1;
42
+ }
43
+ let N = !1, P = null, F = null;
44
+ function I(n) {
45
+ n && !N ? N = t() : !n && N && (e(), N = !1);
46
+ }
47
+ function L() {
48
+ (A()?.querySelector("[autofocus]") ?? A()?.querySelector("[data-mode=\"collapse\"]") ?? A()?.querySelector(r) ?? A())?.focus();
49
+ }
50
+ async function R() {
51
+ await d(), await d(), L();
52
+ }
53
+ let z = ["[data-mode=\"expand\"]", ...r.split(", ").map((e) => `.expandable-container__chrome:not([hidden]) ${e}`)].join(", ");
54
+ function B() {
55
+ let e = F?.isConnected ? F : A()?.querySelector(z);
56
+ F = null, e?.focus();
57
+ }
58
+ function V(e) {
59
+ e.preventDefault();
60
+ }
61
+ return v(l, (e, t) => {
62
+ if (I(e), e && !t) {
63
+ let e = typeof document < "u" ? document.activeElement : null;
64
+ F = e instanceof HTMLElement ? e : null, P = n("Escape", M, {
65
+ label: "Exit fullscreen",
66
+ group: "UI",
67
+ allowInInput: !0
68
+ }), R();
69
+ } else !e && t && (P?.(), P = null, d(B));
70
+ }, { immediate: !0 }), f(() => {
71
+ P?.(), P = null, I(!1);
72
+ }), (e, t) => (p(), a(i, {
73
+ to: "body",
74
+ disabled: !l.value
75
+ }, [s(g(b), {
76
+ ref_key: "scope",
77
+ ref: k,
78
+ "as-child": "",
79
+ loop: l.value,
80
+ trapped: l.value,
81
+ onMountAutoFocus: V
82
+ }, {
83
+ default: y(() => [o("div", u({
84
+ class: "expandable-container",
85
+ "data-state": l.value ? "expanded" : "collapsed",
86
+ "data-surface": l.value ? c.surface : void 0,
87
+ role: l.value ? "dialog" : void 0,
88
+ "aria-label": l.value ? c.expandLabel : void 0,
89
+ "aria-modal": l.value || void 0
90
+ }, e.$attrs), [
91
+ o("div", {
92
+ class: "expandable-container__chrome",
93
+ hidden: l.value
94
+ }, [h(e.$slots, "expand-trigger", {
95
+ expand: j,
96
+ label: c.expandLabel
97
+ }, () => [o("button", {
98
+ type: "button",
99
+ "data-part": "trigger",
100
+ "data-control-target": "",
101
+ "data-mode": "expand",
102
+ "data-position": c.buttonPosition,
103
+ "aria-label": c.expandLabel,
104
+ onClick: j
105
+ }, [s(g(x), {
106
+ class: "expandable-container__icon",
107
+ "aria-hidden": "true"
108
+ })], 8, T)])], 8, w),
109
+ o("div", {
110
+ class: "expandable-container__chrome",
111
+ hidden: !l.value
112
+ }, [h(e.$slots, "fullscreen-chrome", {
113
+ collapse: M,
114
+ label: c.collapseLabel,
115
+ fullscreen: !0
116
+ }, () => [o("button", {
117
+ type: "button",
118
+ "data-part": "trigger",
119
+ "data-control-target": "",
120
+ "data-mode": "collapse",
121
+ "data-position": c.buttonPosition,
122
+ "aria-label": c.collapseLabel,
123
+ onClick: M
124
+ }, [s(g(S), {
125
+ class: "expandable-container__icon",
126
+ "aria-hidden": "true"
127
+ })], 8, D)])], 8, E),
128
+ o("div", O, [h(e.$slots, "default", { fullscreen: l.value })])
129
+ ], 16, C)]),
130
+ _: 3
131
+ }, 8, ["loop", "trapped"])], 8, ["disabled"]));
132
+ }
133
+ });
134
+ //#endregion
135
+ export { k as t };
@@ -0,0 +1 @@
1
+ @layer theme, base, components, utilities;@layer components{.expandable-container{position:relative}.expandable-container[data-state=expanded]{z-index:var(--z-modal);background:var(--overlay-scrim);-webkit-backdrop-filter:none;backdrop-filter:none;flex-direction:column;display:flex;position:fixed;inset:0}.expandable-container[data-state=expanded]>[data-part=panel]{animation:expandable-container-birth var(--spring-dock-duration) var(--spring-dock) both}.expandable-container__chrome{display:contents}.expandable-container__chrome[hidden]{display:none}.expandable-container [data-part=trigger]{z-index:1;min-inline-size:var(--control-h-md);min-block-size:var(--control-h-md);border:1px solid color-mix(in srgb, var(--border) 40%, transparent);border-radius:var(--radius-circle);background:color-mix(in srgb, var(--card) 70%, transparent);color:var(--muted-foreground);box-shadow:var(--shadow-sm);-webkit-backdrop-filter:var(--glass-blur-wash);backdrop-filter:var(--glass-blur-wash);transition:color var(--duration-fast) var(--ease-standard);place-items:center;display:inline-grid;position:absolute;inset-block-start:.5rem}.expandable-container [data-part=trigger][data-position=left]{inset-inline-start:.5rem}.expandable-container [data-part=trigger][data-position=right]{inset-inline-end:.5rem}.expandable-container [data-part=trigger]:hover{color:var(--foreground)}.expandable-container [data-part=trigger]:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring-color);outline-offset:2px}.expandable-container[data-state=expanded] [data-part=panel]{block-size:100%;min-block-size:0;inline-size:100%}.expandable-container__icon{inline-size:var(--icon-sm);block-size:var(--icon-sm)}@media (prefers-reduced-motion:reduce){.expandable-container [data-part=trigger]{transition:none}.expandable-container[data-state=expanded]>[data-part=panel]{animation:.12s linear both expandable-container-arrive}}}@keyframes expandable-container-birth{0%{opacity:0;scale:.78}to{opacity:1;scale:1}}@keyframes expandable-container-arrive{0%{opacity:0}to{opacity:1}}
@@ -1,2 +1,2 @@
1
- import { t as e } from "./expandable-container-CZUj9BzY.js";
1
+ import { t as e } from "./expandable-container-wS1awXGd.js";
2
2
  export { e as ExpandableContainer };
@@ -6,7 +6,7 @@ var m;
6
6
  function h() {
7
7
  if (m || typeof document > "u") return m ?? "negative";
8
8
  let e = document.createElement("div"), t = document.createElement("div");
9
- return e.dir = "rtl", e.style.cssText = "position:absolute;inset:-9999px auto auto -9999px;width:4px;height:1px;overflow:scroll", t.style.width = "8px", e.append(t), document.body.append(e), e.scrollLeft > 0 ? m = "positive-descending" : (e.scrollLeft = 1, m = e.scrollLeft === 0 ? "negative" : "positive-ascending"), e.remove(), m;
9
+ return e.dir = "rtl", e.style.cssText = "position:absolute;inset:0 auto auto 0;visibility:hidden;width:4px;height:1px;overflow:scroll", t.style.width = "8px", e.append(t), document.body.append(e), e.scrollLeft > 0 ? m = "positive-descending" : (e.scrollLeft = 1, m = e.scrollLeft === 0 ? "negative" : "positive-ascending"), e.remove(), m;
10
10
  }
11
11
  function g(e, t, n, r) {
12
12
  let i = r ?? (n === "rtl" ? h() : void 0), a = n === "rtl" ? i === "negative" ? -e : i === "positive-descending" ? t - e : e : e;
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "./fading-scroll-ClCPooXb.js";
1
+ import { n as e, t } from "./fading-scroll-D3Y20ibL.js";
2
2
  export { t as FadingScroll, e as useFadingScroll };
@@ -0,0 +1,7 @@
1
+ //#region src/composables/glass/fieldPaint.ts
2
+ var e = "glass-field-paint";
3
+ function t(t) {
4
+ t.dispatchEvent(new Event(e));
5
+ }
6
+ //#endregion
7
+ export { t as n, e as t };
@@ -0,0 +1 @@
1
+ @layer theme, base, components, utilities;@layer components{.fourier-field[data-v-017224a9]{z-index:0;pointer-events:none;contain:layout style;content-visibility:auto;contain-intrinsic-size:auto none;position:absolute;inset:0}.fourier-field--interactive[data-v-017224a9]{pointer-events:auto}.fourier-field-canvas[data-v-017224a9]{pointer-events:none;width:100%;height:100%;display:block}}
@@ -1,3 +1,4 @@
1
+ import "./fourier-field.css";
1
2
  import { n as e } from "./springPresets-Cbe0Voqg.js";
2
3
  import { n as t } from "./useResolveTokenColor-B2FfJnd9.js";
3
4
  import { t as n } from "./_plugin-vue_export-helper-B3ysoDQm.js";
@@ -5,9 +6,10 @@ import { t as r } from "./usePointerVelocityField-Lx26_Yap.js";
5
6
  import { i } from "./dark-pONY3x93.js";
6
7
  import { cssToOklch as a, gamutMapStop as o, oklchToLinear as s } from "./color.js";
7
8
  import { FOURIER_FIGURES as c, FOURIER_FIGURE_KEYS as l, comp as u, dftFromPoints as d, makeEllipticSpectrum as f, makeHarmonicFigure as p, partialSumAt as m, positionsAt as h } from "./fourier-math.js";
8
- import { a as g, n as _, r as v } from "./color.wgsl-BTszLY39.js";
9
- import { a as y } from "./rendererStatus-BxUlBLVy.js";
10
- import { n as b, t as x } from "./prng-2uS6J_A1.js";
9
+ import { t as g } from "./useGpuSubstrate-Y5XAdU8d.js";
10
+ import { a as _ } from "./rendererStatus-BxUlBLVy.js";
11
+ import { n as v, t as y } from "./prng-2uS6J_A1.js";
12
+ import { n as b, r as x } from "./color.wgsl-B-qDJ_OM.js";
11
13
  import { computed as S, createElementBlock as C, createElementVNode as w, defineComponent as T, normalizeClass as E, onMounted as D, onScopeDispose as O, openBlock as k, readonly as A, shallowRef as j, useTemplateRef as M, watch as N } from "vue";
12
14
  var P = .5, F = 720;
13
15
  function I(e) {
@@ -149,8 +151,8 @@ struct RenderUniforms {
149
151
  @group(0) @binding(1) var<storage, read> curveSamples: array<vec4<f32>>;
150
152
  @group(0) @binding(2) var<storage, read> chainTips: array<vec4<f32>>;
151
153
 
152
- ${_}
153
- ${v}
154
+ ${b}
155
+ ${x}
154
156
 
155
157
  // Read the CPU-resolved ramp. No colour-space conversion happens here — the LUT already
156
158
  // carries the chroma floor and the gamut map.
@@ -720,20 +722,20 @@ function ke(e, t) {
720
722
  }
721
723
  let h = (e) => {
722
724
  f.onPointerMove(e), s() && C?.wake();
723
- }, _ = () => {
724
- f.onPointerEnter(), s() && C?.wake();
725
725
  }, v = () => {
726
+ f.onPointerEnter(), s() && C?.wake();
727
+ }, y = () => {
726
728
  f.onPointerLeave();
727
729
  }, b = (e) => e.parentElement ?? e;
728
730
  function x(e) {
729
731
  let t = b(e);
730
- t.addEventListener("pointermove", h), t.addEventListener("pointerenter", _), t.addEventListener("pointerleave", v);
732
+ t.addEventListener("pointermove", h), t.addEventListener("pointerenter", v), t.addEventListener("pointerleave", y);
731
733
  }
732
734
  function S(e) {
733
735
  let t = b(e);
734
- t.removeEventListener("pointermove", h), t.removeEventListener("pointerenter", _), t.removeEventListener("pointerleave", v);
736
+ t.removeEventListener("pointermove", h), t.removeEventListener("pointerenter", v), t.removeEventListener("pointerleave", y);
735
737
  }
736
- let C = null, w = j(y("webgpu")), T = (e) => e.engine === "webgpu" ? e : {
738
+ let C = null, w = j(_("webgpu")), T = (e) => e.engine === "webgpu" ? e : {
737
739
  ...e,
738
740
  engine: "webgpu",
739
741
  adapter: "WebGPU unavailable"
@@ -823,8 +825,8 @@ var Ae = [
823
825
  if (s.spectrum && s.spectrum.length > 0) return L(s.spectrum);
824
826
  let e = m.value.source;
825
827
  if (e !== "elliptic" && !(e in c)) throw Error(`[FourierField] unknown source "${String(e)}". Pass "elliptic", a key of FOURIER_FIGURES, or an explicit \`spectrum\`.`);
826
- return L(e === "elliptic" ? f(b(x(`fourier-field/${s.seed}`)), m.value.richness) : p(c[e]));
827
- }), g = () => h.value, _ = S(() => h.value.terms.length), v = S(() => Math.max(1, Math.min(Math.round(m.value.harmonics), _.value))), y = S(() => `N ${v.value}/${_.value}`);
828
+ return L(e === "elliptic" ? f(v(y(`fourier-field/${s.seed}`)), m.value.richness) : p(c[e]));
829
+ }), g = () => h.value, _ = S(() => h.value.terms.length), b = S(() => Math.max(1, Math.min(Math.round(m.value.harmonics), _.value))), x = S(() => `N ${b.value}/${_.value}`);
828
830
  function T(e) {
829
831
  if (!e.includes("var(") && !e.includes("light-dark(")) return e;
830
832
  let n = l.value;
@@ -875,7 +877,7 @@ var Ae = [
875
877
  () => s.getPalette,
876
878
  d
877
879
  ], A, { immediate: !0 }), D(A), N(d, () => P.wake()), N(() => s.freeze, () => P.wake());
878
- let F = j(!1), I = S(() => Number(P.headTLive.value.toFixed(3))), R = S(() => `${y.value} · ${Math.round(P.headTLive.value * 100)}% through the period`);
880
+ let F = j(!1), I = S(() => Number(P.headTLive.value.toFixed(3))), R = S(() => `${x.value} · ${Math.round(P.headTLive.value * 100)}% through the period`);
879
881
  function z(e) {
880
882
  P.setHeadT(P.headT + e);
881
883
  }