@mkbabb/glass-ui 3.5.0 → 3.6.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 (80) hide show
  1. package/dist/{DataTable-DyKc_26a.js → DataTable-BGVXx0Ww.js} +1 -1
  2. package/dist/{NumberFieldContent-jO-zGOHf.js → NumberFieldContent-Bhhmk95p.js} +1 -1
  3. package/dist/animated-digit.js +1 -1
  4. package/dist/api/index.d.ts +2 -1
  5. package/dist/api.js +1 -1
  6. package/dist/aurora.js +259 -81
  7. package/dist/{button-i8Ek5vvg.js → button-BcMzVrqs.js} +2 -2
  8. package/dist/button.js +1 -1
  9. package/dist/carousel.js +1 -1
  10. package/dist/color.js +1 -1
  11. package/dist/components/custom/aurora/composables/color.d.ts +35 -2
  12. package/dist/components/custom/aurora/composables/glSetup.d.ts +1 -1
  13. package/dist/components/custom/aurora/composables/uniformBridge.d.ts +6 -0
  14. package/dist/components/custom/aurora/constants/presets.d.ts +9 -0
  15. package/dist/components/custom/aurora/constants/shaders/composition.glsl.d.ts +1 -1
  16. package/dist/components/custom/aurora/index.d.ts +3 -2
  17. package/dist/components/custom/constellation/Constellation.vue.d.ts +45 -0
  18. package/dist/components/custom/constellation/constellationField.d.ts +85 -0
  19. package/dist/components/custom/constellation/index.d.ts +3 -0
  20. package/dist/components/custom/dock/GlassDock.vue.d.ts +34 -3
  21. package/dist/composables/glass/canvas2d/index.d.ts +2 -0
  22. package/dist/composables/glass/canvas2d/useCanvas2D.d.ts +48 -0
  23. package/dist/composables/glass/index.d.ts +2 -0
  24. package/dist/composables/motion/core/index.d.ts +1 -0
  25. package/dist/composables/motion/index.d.ts +1 -0
  26. package/dist/composables/motion/useAnimatedNumberMap.d.ts +29 -0
  27. package/dist/composables/motion/useStagger.d.ts +50 -0
  28. package/dist/confirm-dialog.js +1 -1
  29. package/dist/constellation.d.ts +1 -0
  30. package/dist/constellation.js +182 -0
  31. package/dist/controls.js +1 -1
  32. package/dist/dark.js +1 -1
  33. package/dist/data-table.js +1 -1
  34. package/dist/dock.js +121 -102
  35. package/dist/expandable-container.js +1 -1
  36. package/dist/forms.js +1 -1
  37. package/dist/glass-ui.css +1 -1
  38. package/dist/glass-ui.js +79 -78
  39. package/dist/goo-blob.js +3 -3
  40. package/dist/icon-tooltip.js +1 -1
  41. package/dist/keyboard.js +1 -1
  42. package/dist/labeled-field.js +2 -2
  43. package/dist/motion-core.js +90 -49
  44. package/dist/motion.js +31 -21
  45. package/dist/number-field.js +1 -1
  46. package/dist/responsive-tabs.js +1 -1
  47. package/dist/search.js +1 -1
  48. package/dist/sortable-list.js +1 -1
  49. package/dist/styles/dock.css +185 -1
  50. package/dist/styles/glass-refract.css +60 -0
  51. package/dist/styles/glass-specular-track.css +43 -130
  52. package/dist/styles/glass.css +243 -27
  53. package/dist/styles/index.css +1 -0
  54. package/dist/styles/theme.css +6 -0
  55. package/dist/styles/tokens.css +33 -0
  56. package/dist/tabs.js +2 -2
  57. package/dist/{useAnimatedNumber-BF6r64lA.js → useAnimatedNumber-DfVgP4te.js} +1 -1
  58. package/dist/useCanvas2D-BeNJqqIS.js +95 -0
  59. package/dist/watercolor-dot.js +1 -1
  60. package/package.json +21 -1
  61. package/src/styles/dock.css +185 -1
  62. package/src/styles/glass-refract.css +60 -0
  63. package/src/styles/glass-specular-track.css +43 -130
  64. package/src/styles/glass.css +243 -27
  65. package/src/styles/index.css +1 -0
  66. package/src/styles/theme.css +6 -0
  67. package/src/styles/tokens.css +33 -0
  68. /package/dist/{IconTooltip-BTyYn4mr.js → IconTooltip-DZlCkU-0.js} +0 -0
  69. /package/dist/{Input-CU9CNKmo.js → Input-CRJ2owjN.js} +0 -0
  70. /package/dist/{UnderlineTabs-Cq_AD03t.js → UnderlineTabs-CuIK16JI.js} +0 -0
  71. /package/dist/{color-rkK4RMx2.js → color-DS-iLRVM.js} +0 -0
  72. /package/dist/{compile-DVgAxagk.js → compile-C62K_FpC.js} +0 -0
  73. /package/dist/{constants-DsCdlK9I.js → constants-C8NMonuo.js} +0 -0
  74. /package/dist/{presets-1OhFpaIC.js → presets-Dyv9Zl7W.js} +0 -0
  75. /package/dist/{prng-Bz_1Tydc.js → prng-CjVgzjQT.js} +0 -0
  76. /package/dist/{useGlobalDark-CWiaCoEw.js → useGlobalDark-D7R9OypB.js} +0 -0
  77. /package/dist/{useIntersectionPause-DAdVPVp4.js → useIntersectionPause-DsQYGc8V.js} +0 -0
  78. /package/dist/{useKeyboardShortcuts-BQfnAHHW.js → useKeyboardShortcuts-i8tHd5WO.js} +0 -0
  79. /package/dist/{useSortable-DnyGXKKY.js → useSortable-muI29agz.js} +0 -0
  80. /package/dist/{useViewTransition-CJnqg6wl.js → useViewTransition-DI0Rs2rV.js} +0 -0
@@ -1,7 +1,7 @@
1
1
  import { i as e, n as t, r as n, t as r } from "./vReveal-u2wSG2El.js";
2
- import { n as i, t as a } from "./useViewTransition-CJnqg6wl.js";
3
- import { n as o, t as s } from "./useIntersectionPause-DAdVPVp4.js";
4
- import { n as c, t as l } from "./constants-DsCdlK9I.js";
2
+ import { n as i, t as a } from "./useViewTransition-DI0Rs2rV.js";
3
+ import { n as o, t as s } from "./useIntersectionPause-DsQYGc8V.js";
4
+ import { n as c, t as l } from "./constants-C8NMonuo.js";
5
5
  import { computed as u, getCurrentScope as d, onBeforeUnmount as f, onMounted as p, onScopeDispose as m, reactive as h, readonly as g, ref as _, unref as v, watch as y } from "vue";
6
6
  //#region src/composables/motion/useStaggerReveal.ts
7
7
  var b = e();
@@ -36,9 +36,50 @@ function x(e = {}) {
36
36
  };
37
37
  }
38
38
  //#endregion
39
- //#region src/composables/motion/useScrollProgress.ts
40
- var S = n();
39
+ //#region src/composables/motion/useStagger.ts
40
+ function S() {
41
+ return typeof window > "u" || typeof window.matchMedia != "function" ? !1 : window.matchMedia("(prefers-reduced-motion: reduce)").matches;
42
+ }
41
43
  function C(e) {
44
+ let t = Math.max(0, Math.floor(e.items)), n = e.delayMs ?? 80, r = e.initialDelayMs ?? 0, i = e.immediate !== !1, a = e.respectReducedMotion !== !1, o = _(Array(t).fill(!1)), s = _(t === 0), c = /* @__PURE__ */ new Set();
45
+ function l() {
46
+ for (let e of c) clearTimeout(e);
47
+ c.clear();
48
+ }
49
+ function u() {
50
+ l(), o.value = Array(t).fill(!1), s.value = t === 0;
51
+ }
52
+ function d() {
53
+ o.value = Array(t).fill(!0), s.value = !0;
54
+ }
55
+ function f() {
56
+ if (u(), t === 0) {
57
+ s.value = !0;
58
+ return;
59
+ }
60
+ if (a && S()) {
61
+ d();
62
+ return;
63
+ }
64
+ for (let e = 0; e < t; e++) {
65
+ let i = e, a = setTimeout(() => {
66
+ let e = o.value.slice();
67
+ e[i] = !0, o.value = e, c.delete(a), i === t - 1 && (s.value = !0);
68
+ }, r + i * n);
69
+ c.add(a);
70
+ }
71
+ }
72
+ return i && f(), m(l), {
73
+ revealed: o,
74
+ start: f,
75
+ reset: u,
76
+ isComplete: s
77
+ };
78
+ }
79
+ //#endregion
80
+ //#region src/composables/motion/useScrollProgress.ts
81
+ var w = n();
82
+ function T(e) {
42
83
  let { offset: t = 0, trackExit: n = !1 } = e, r = _(0), i = 0, a = null;
43
84
  function o() {
44
85
  let i = v(e.target);
@@ -57,11 +98,11 @@ function C(e) {
57
98
  });
58
99
  }
59
100
  return p(() => {
60
- if (o(), S) return;
101
+ if (o(), w) return;
61
102
  window.addEventListener("scroll", s, { passive: !0 }), window.addEventListener("resize", s, { passive: !0 });
62
103
  let t = v(e.target);
63
104
  t && typeof ResizeObserver < "u" && (a = new ResizeObserver(s), a.observe(t));
64
- }), S || y(() => v(e.target), (e, t) => {
105
+ }), w || y(() => v(e.target), (e, t) => {
65
106
  t && a && a.unobserve(t), e && a && a.observe(e), s();
66
107
  }), f(() => {
67
108
  window.removeEventListener("scroll", s), window.removeEventListener("resize", s), i && cancelAnimationFrame(i), a?.disconnect(), a = null;
@@ -69,12 +110,12 @@ function C(e) {
69
110
  }
70
111
  //#endregion
71
112
  //#region src/composables/motion/useYieldToMain.ts
72
- function w() {
113
+ function E() {
73
114
  let e = globalThis.scheduler;
74
115
  return typeof e?.yield == "function" ? e.yield.bind(e) : null;
75
116
  }
76
- function T() {
77
- let e = w();
117
+ function D() {
118
+ let e = E();
78
119
  return e ? e() : typeof MessageChannel == "function" ? new Promise((e) => {
79
120
  let t = new MessageChannel();
80
121
  t.port1.onmessage = () => {
@@ -82,38 +123,38 @@ function T() {
82
123
  }, t.port2.postMessage(void 0);
83
124
  }) : new Promise((e) => setTimeout(e, 0));
84
125
  }
85
- function E() {
126
+ function O() {
86
127
  return {
87
- hasNativeYield: w() !== null,
88
- yield: T
128
+ hasNativeYield: E() !== null,
129
+ yield: D
89
130
  };
90
131
  }
91
132
  //#endregion
92
133
  //#region src/composables/motion/useRAFLoop.ts
93
- var D = "(prefers-reduced-motion: reduce)";
94
- function O() {
134
+ var k = "(prefers-reduced-motion: reduce)";
135
+ function A() {
95
136
  return typeof globalThis.requestAnimationFrame == "function" ? globalThis.requestAnimationFrame.bind(globalThis) : null;
96
137
  }
97
- function k() {
138
+ function j() {
98
139
  return typeof globalThis.cancelAnimationFrame == "function" ? globalThis.cancelAnimationFrame.bind(globalThis) : null;
99
140
  }
100
- function A() {
141
+ function M() {
101
142
  return typeof window > "u" ? null : window;
102
143
  }
103
- function j(e, t = {}) {
104
- let { immediate: n = !0, pauseWhenHidden: r = !0, respectReducedMotion: i = !0 } = t, a = _(!1), s = _(!1), c = _(!1), l = _(!1), f = _(!1), p = u(() => l.value && !a.value && (f.value || c.value || i && s.value || !O())), h = null, v = null, b = 0, x = 0, S = !1, C = null;
144
+ function N(e, t = {}) {
145
+ let { immediate: n = !0, pauseWhenHidden: r = !0, respectReducedMotion: i = !0 } = t, a = _(!1), s = _(!1), c = _(!1), l = _(!1), f = _(!1), p = u(() => l.value && !a.value && (f.value || c.value || i && s.value || !A())), h = null, v = null, b = 0, x = 0, S = !1, C = null;
105
146
  function w() {
106
- return !S && l.value && !f.value && !c.value && !(i && s.value) && !!O();
147
+ return !S && l.value && !f.value && !c.value && !(i && s.value) && !!A();
107
148
  }
108
- function E() {
109
- h !== null && (k()?.(h), h = null), a.value = !1, v = null;
149
+ function T() {
150
+ h !== null && (j()?.(h), h = null), a.value = !1, v = null;
110
151
  }
111
- function j() {
152
+ function E() {
112
153
  if (h !== null || !w()) return;
113
- let t = O();
154
+ let t = A();
114
155
  t && (a.value = !0, h = t((t) => {
115
156
  if (h = null, !w()) {
116
- E();
157
+ T();
117
158
  return;
118
159
  }
119
160
  let n = v === null ? 0 : Math.max(0, t - v);
@@ -122,38 +163,38 @@ function j(e, t = {}) {
122
163
  delta: n,
123
164
  elapsed: b,
124
165
  frame: x++
125
- }), w() ? j() : E();
166
+ }), w() ? E() : T();
126
167
  }));
127
168
  }
128
- function M() {
129
- w() ? j() : E();
169
+ function O() {
170
+ w() ? E() : T();
130
171
  }
131
172
  function N() {
132
173
  v = null, b = 0, x = 0;
133
174
  }
134
175
  function P() {
135
- S || (N(), l.value = !0, f.value = !1, M());
176
+ S || (N(), l.value = !0, f.value = !1, O());
136
177
  }
137
178
  function F() {
138
- l.value = !1, f.value = !1, N(), E();
179
+ l.value = !1, f.value = !1, N(), T();
139
180
  }
140
181
  function I() {
141
- l.value && (f.value = !0, M());
182
+ l.value && (f.value = !0, O());
142
183
  }
143
184
  function L() {
144
- S || (f.value = !1, M());
185
+ S || (f.value = !1, O());
145
186
  }
146
187
  if (r) {
147
188
  let { hidden: e } = o();
148
189
  c.value = e.value, y(e, (e) => {
149
- c.value = e, M();
190
+ c.value = e, O();
150
191
  }, { flush: "sync" });
151
192
  }
152
193
  if (i) {
153
- let e = A(), t = typeof e?.matchMedia == "function" ? e.matchMedia(D) : null;
194
+ let e = M(), t = typeof e?.matchMedia == "function" ? e.matchMedia(k) : null;
154
195
  if (t) {
155
196
  let e = (e) => {
156
- s.value = e.matches, M();
197
+ s.value = e.matches, O();
157
198
  };
158
199
  s.value = t.matches, typeof t.addEventListener == "function" ? (t.addEventListener("change", e), C = () => t.removeEventListener("change", e)) : typeof t.addListener == "function" && (t.addListener(e), C = () => t.removeListener?.(e));
159
200
  }
@@ -170,21 +211,21 @@ function j(e, t = {}) {
170
211
  pause: I,
171
212
  resume: L,
172
213
  dispose: R,
173
- yieldToMain: T
214
+ yieldToMain: D
174
215
  };
175
216
  }
176
217
  //#endregion
177
218
  //#region src/composables/motion/usePrioritizedTask.ts
178
- function M() {
219
+ function P() {
179
220
  if (!t()) return null;
180
221
  let e = globalThis.scheduler;
181
222
  return e?.postTask?.bind(e) ?? null;
182
223
  }
183
- function N() {
224
+ function F() {
184
225
  let e = /* @__PURE__ */ Error("The task was aborted.");
185
226
  return e.name = "AbortError", e;
186
227
  }
187
- function P(e) {
228
+ function I(e) {
188
229
  let t = e.filter((e) => e != null);
189
230
  if (t.length === 0) return;
190
231
  if (t.length === 1) return t[0];
@@ -199,20 +240,20 @@ function P(e) {
199
240
  }
200
241
  return n.signal;
201
242
  }
202
- function F(e, t = {}) {
203
- let { priority: n, signal: r, delay: i } = t, a = M();
243
+ function L(e, t = {}) {
244
+ let { priority: n, signal: r, delay: i } = t, a = P();
204
245
  return a ? a(e, {
205
246
  priority: n,
206
247
  signal: r,
207
248
  delay: i
208
249
  }) : new Promise((t, n) => {
209
250
  if (r?.aborted) {
210
- n(N());
251
+ n(F());
211
252
  return;
212
253
  }
213
254
  let a = () => {
214
255
  if (r?.aborted) {
215
- n(N());
256
+ n(F());
216
257
  return;
217
258
  }
218
259
  try {
@@ -229,20 +270,20 @@ function F(e, t = {}) {
229
270
  i && i > 0 ? setTimeout(o, i) : o();
230
271
  });
231
272
  }
232
- function I(e) {
273
+ function R(e) {
233
274
  let t = globalThis.TaskController;
234
275
  return typeof t == "function" ? new t(e ? { priority: e } : void 0) : null;
235
276
  }
236
- function L(e) {
237
- let t = I(e);
277
+ function z(e) {
278
+ let t = R(e);
238
279
  return {
239
- postTask: (n, r = {}) => F(n, {
280
+ postTask: (n, r = {}) => L(n, {
240
281
  priority: e,
241
282
  ...r,
242
- signal: P([t?.signal, r.signal])
283
+ signal: I([t?.signal, r.signal])
243
284
  }),
244
285
  abort: (e) => t?.abort(e)
245
286
  };
246
287
  }
247
288
  //#endregion
248
- export { l as DAMPING, c as SNAP_THRESHOLD, F as postTaskSafe, a as startViewTransition, i as supportsViewTransitions, s as useIntersectionPause, L as usePrioritizedTask, j as useRAFLoop, C as useScrollProgress, x as useStaggerReveal, E as useYieldToMain, r as vReveal, T as yieldToMain };
289
+ export { l as DAMPING, c as SNAP_THRESHOLD, L as postTaskSafe, a as startViewTransition, i as supportsViewTransitions, s as useIntersectionPause, z as usePrioritizedTask, N as useRAFLoop, T as useScrollProgress, C as useStagger, x as useStaggerReveal, O as useYieldToMain, r as vReveal, D as yieldToMain };
package/dist/motion.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import { n as e, t } from "./useSpringMount-CnizvZGm.js";
2
- import { n, t as r } from "./constants-DsCdlK9I.js";
3
- import { t as i } from "./useAnimatedNumber-BF6r64lA.js";
4
- import { onBeforeUnmount as a, onScopeDispose as o, ref as s, shallowRef as c } from "vue";
5
- import { NumericAnimation as l } from "@mkbabb/keyframes.js";
2
+ import { n, t as r } from "./constants-C8NMonuo.js";
3
+ import { t as i } from "./useAnimatedNumber-DfVgP4te.js";
4
+ import { computed as a, onBeforeUnmount as o, onScopeDispose as s, ref as c, shallowRef as l } from "vue";
5
+ import { NumericAnimation as u } from "@mkbabb/keyframes.js";
6
6
  //#region src/composables/motion/useSpringPress.ts
7
- function u(t = {}) {
8
- let n = s(0), r = e(n, {
7
+ function d(t = {}) {
8
+ let n = c(0), r = e(n, {
9
9
  response: t.response ?? .25,
10
10
  dampingFraction: t.dampingFraction ?? .7,
11
11
  initial: t.initial ?? 0,
@@ -35,10 +35,10 @@ function u(t = {}) {
35
35
  }
36
36
  //#endregion
37
37
  //#region src/composables/motion/useNumericTransition.ts
38
- function d(e) {
39
- let t = s(0), n = s(!1), { from: r, to: i, duration: o, timingFunction: u, onFrame: d } = e, f = c(new l([r, i], {
40
- duration: o,
41
- timingFunction: u
38
+ function f(e) {
39
+ let t = c(0), n = c(!1), { from: r, to: i, duration: a, timingFunction: s, onFrame: d } = e, f = l(new u([r, i], {
40
+ duration: a,
41
+ timingFunction: s
42
42
  }));
43
43
  async function p() {
44
44
  n.value && f.value.stop(), n.value = !0, t.value = 0;
@@ -61,7 +61,7 @@ function d(e) {
61
61
  function m() {
62
62
  f.value.stop(), n.value = !1;
63
63
  }
64
- return a(() => {
64
+ return o(() => {
65
65
  m();
66
66
  }), {
67
67
  start: p,
@@ -71,25 +71,35 @@ function d(e) {
71
71
  };
72
72
  }
73
73
  //#endregion
74
+ //#region src/composables/motion/useAnimatedNumberMap.ts
75
+ function p(e) {
76
+ let { keys: t, source: n, ...r } = e, o = {};
77
+ for (let e of t) {
78
+ let t = n(e), { current: s } = i(() => t.value, r);
79
+ o[e] = a(() => t.value === null ? null : s.value);
80
+ }
81
+ return o;
82
+ }
83
+ //#endregion
74
84
  //#region src/composables/motion/useCountup.ts
75
- function f() {
85
+ function m() {
76
86
  return typeof window > "u" || typeof window.matchMedia != "function" ? !1 : window.matchMedia("(prefers-reduced-motion: reduce)").matches;
77
87
  }
78
- function p(e, t) {
88
+ function h(e, t) {
79
89
  let { easeFn: n, skip: r } = t, i = /* @__PURE__ */ new Map();
80
90
  function a(e) {
81
91
  let t = i.get(e);
82
92
  t && (t.stop(), i.delete(e));
83
93
  }
84
- function s(e) {
94
+ function o(e) {
85
95
  e.querySelectorAll("[data-countup]").forEach((e) => {
86
96
  let t = parseFloat(e.getAttribute("data-countup") ?? "0") || 0, r = parseFloat(e.getAttribute("data-countup-dur") ?? "1200"), o = parseFloat(e.getAttribute("data-countup-delay") ?? "0");
87
- if (a(e), f()) {
97
+ if (a(e), m()) {
88
98
  e.textContent = String(t);
89
99
  return;
90
100
  }
91
101
  e.textContent = "0";
92
- let s = new l([{ v: 0 }, { v: t }], {
102
+ let s = new u([{ v: 0 }, { v: t }], {
93
103
  duration: r,
94
104
  timingFunction: n
95
105
  });
@@ -112,9 +122,9 @@ function p(e, t) {
112
122
  function c() {
113
123
  if (r?.()) return;
114
124
  let t = e.value?.querySelector("[data-state=\"active\"]");
115
- t && s(t);
125
+ t && o(t);
116
126
  }
117
- function u() {
127
+ function l() {
118
128
  document.querySelectorAll("[data-countup]").forEach((e) => {
119
129
  a(e), e.textContent = e.getAttribute("data-countup") ?? e.textContent;
120
130
  });
@@ -122,11 +132,11 @@ function p(e, t) {
122
132
  function d() {
123
133
  for (let e of [...i.keys()]) a(e);
124
134
  }
125
- return o(d), {
135
+ return s(d), {
126
136
  runActive: c,
127
- settle: u,
137
+ settle: l,
128
138
  cancel: d
129
139
  };
130
140
  }
131
141
  //#endregion
132
- export { r as DAMPING, n as SNAP_THRESHOLD, i as useAnimatedNumber, p as useCountup, d as useNumericTransition, e as useSpring, t as useSpringMount, u as useSpringPress };
142
+ export { r as DAMPING, n as SNAP_THRESHOLD, i as useAnimatedNumber, p as useAnimatedNumberMap, h as useCountup, f as useNumericTransition, e as useSpring, t as useSpringMount, d as useSpringPress };
@@ -1,2 +1,2 @@
1
- import { a as e, i as t, n, r, t as i } from "./NumberFieldContent-jO-zGOHf.js";
1
+ import { a as e, i as t, n, r, t as i } from "./NumberFieldContent-Bhhmk95p.js";
2
2
  export { e as NumberField, i as NumberFieldContent, n as NumberFieldDecrement, r as NumberFieldIncrement, t as NumberFieldInput };
@@ -1,6 +1,6 @@
1
1
  import { t as e } from "./cn-DJXf4yaB.js";
2
2
  import { a as t, i as n, o as r, r as i, s as a } from "./SelectScrollDownButton-BGn3rjs9.js";
3
- import { t as o } from "./UnderlineTabs-Cq_AD03t.js";
3
+ import { t as o } from "./UnderlineTabs-CuIK16JI.js";
4
4
  import { Fragment as s, computed as c, createBlock as l, createElementBlock as u, createTextVNode as d, createVNode as f, defineComponent as p, mergeModels as m, normalizeClass as h, onBeforeUnmount as g, onMounted as _, openBlock as v, ref as y, renderList as b, toDisplayString as x, unref as S, useModel as C, withCtx as w } from "vue";
5
5
  //#endregion
6
6
  //#region src/components/custom/responsive-tabs/ResponsiveTabs.vue
package/dist/search.js CHANGED
@@ -3,7 +3,7 @@ import { n as t, t as n } from "./minimize-2-BP27-qBY.js";
3
3
  import { t as r } from "./search-DBG8qaRs.js";
4
4
  import { t as i } from "./x-C4pz9nbD.js";
5
5
  import { n as a } from "./badge-Cl6JZ1B7.js";
6
- import { n as o } from "./button-i8Ek5vvg.js";
6
+ import { n as o } from "./button-BcMzVrqs.js";
7
7
  import { n as s, t as c } from "./DialogContent-IQ8_BRrC.js";
8
8
  import { t as l } from "./useTextHighlight-Dmtofpk2.js";
9
9
  import { n as u, r as d, t as f } from "./PopoverContent-B8WtJECb.js";
@@ -1,6 +1,6 @@
1
1
  import { t as e } from "./_plugin-vue_export-helper-C1je1s0u.js";
2
2
  import { n as t } from "./createContext-DBMGRlx4.js";
3
- import { t as n } from "./useSortable-DnyGXKKY.js";
3
+ import { t as n } from "./useSortable-muI29agz.js";
4
4
  import { computed as r, createBlock as i, defineComponent as a, mergeProps as o, openBlock as s, renderSlot as c, resolveDynamicComponent as l, toRef as u, unref as d, withCtx as f } from "vue";
5
5
  //#region src/components/custom/sortable-list/context.ts
6
6
  var p = t("glass-ui:sortable", "[glass-ui:sortable] <SortableItem> must be used inside <SortableList>"), m = p.KEY;
@@ -60,6 +60,19 @@
60
60
  --dock-wrap-max-width: calc(100vw - var(--dock-viewport-inline-gutter, 1rem));
61
61
  --dock-separator-height: calc(var(--dock-h, var(--size-icon-btn)) * 0.5);
62
62
  --dock-collapsed-hover-scale: var(--scale-hover-dock);
63
+ /* AW.W3 — the spring-keyed child stagger knobs. `--dock-stagger-window-size`
64
+ is the fraction of the morph each child reveals over; `--dock-stagger-rise`
65
+ is the px the child rises from as it fades in. Consumers retune the
66
+ cascade feel per instance. */
67
+ --dock-stagger-window-size: 0.55;
68
+ --dock-stagger-rise: 4px;
69
+ /* AW.W3b — big-dock tokens. `--dock-card-radius` is the finite card-shell
70
+ radius (default --radius-dock-card = --radius-3xl, density-scaled
71
+ below); `--dock-tile-min` is the grid tile minimum (auto-fill track
72
+ floor). Both are density-scaled (compact tighter, spacious looser) — the
73
+ card radius + tile size ride the density cascade, never magic numbers. */
74
+ --dock-card-radius: var(--radius-dock-card);
75
+ --dock-tile-min: 4.5rem;
63
76
  /* Individual-transform identity base (AQ.W3 §W3.2). `scale: 1` at rest
64
77
  mints the stacking context once so a portaled popover over `--z-dock`
65
78
  stays above the dock during a hover scale (the load-bearing
@@ -300,12 +313,28 @@
300
313
  only. Width is driven by the inner `.dock-layers` FLIP via
301
314
  `useLayerTransition`; pinning it here would race the FLIP and
302
315
  reintroduce the `width: auto` non-interpolation diagnosed in
303
- R1+R6. */
316
+ R1+R6.
317
+
318
+ AW.W3 — the collapsed-hover `scale` (the `.collapsed:hover` rule below) +
319
+ the press squish (`--scale-press-dock` on the dock controls) ride the
320
+ INDIVIDUAL `scale` property, NOT `transform`. Adding `scale
321
+ var(--dock-motion-resize)` here unifies the hover scale onto the SAME dock
322
+ spring vocabulary as the morph, so a collapsed→hover→expand gesture reads as
323
+ ONE continuous spring rather than a `scale`-ease handed off to the
324
+ width-spring. Under PRM the global gate strips `scale` from the
325
+ transition-property → the hover scale snaps (0 morph frames). */
304
326
  .glass-dock:not(.vertical) {
305
327
  transition:
306
328
  padding var(--dock-motion-resize),
307
329
  box-shadow var(--dock-motion-standard),
308
330
  transform var(--dock-motion-resize),
331
+ scale var(--dock-motion-resize),
332
+ /* AW.W3b — the pill↔card corner radius morphs on the SAME spring the
333
+ aperture rides (ONE free interpolation). Without this the
334
+ shape-card collapsed↔expanded radius snaps discretely. The list is
335
+ shared by ALL horizontal docks — the radius transition also glides
336
+ the wrap collapsed↔expanded radius swap (desirable). */
337
+ border-radius var(--dock-motion-resize),
309
338
  background var(--dock-motion-standard),
310
339
  border-color var(--dock-motion-standard);
311
340
  }
@@ -339,6 +368,7 @@
339
368
  padding var(--dock-motion-resize),
340
369
  box-shadow var(--dock-motion-standard),
341
370
  transform var(--dock-motion-resize),
371
+ scale var(--dock-motion-resize),
342
372
  background var(--dock-motion-standard),
343
373
  border-color var(--dock-motion-standard);
344
374
  }
@@ -357,6 +387,38 @@
357
387
  border-radius: var(--radius-xl);
358
388
  }
359
389
 
390
+ /* AW.W3b — horizontal-root shape rules. The `shape-*` class previously bound
391
+ ONLY under `.variant-rail`; on a horizontal `variant-dock` the prop silently
392
+ no-op'd (the root hardwired `--radius-dock` = `--radius-pill`). These rules
393
+ close that documented-but-dead prop — `shape="rounded"` / `shape="card"` now
394
+ paint on a horizontal dock. Scoped to `variant-dock:not(.vertical)` so the
395
+ rail + instrument-strip variants (which own their own radius) are untouched. */
396
+ .glass-dock.variant-dock:not(.vertical).shape-rounded {
397
+ border-radius: var(--radius-xl);
398
+ }
399
+
400
+ /* The big-dock CARD shell — a FINITE concentric radius above 2xl, below pill.
401
+ It does NOT collapse to a stadium. Collapsed it returns to a pill (the morph
402
+ target); the pill↔card swap glides on the `--dock-motion-resize` spring
403
+ (`border-radius` is in the `:not(.vertical)` transition list). */
404
+ .glass-dock.variant-dock:not(.vertical).shape-card {
405
+ border-radius: var(--dock-card-radius);
406
+ }
407
+
408
+ .glass-dock.variant-dock:not(.vertical).shape-card.collapsed {
409
+ border-radius: var(--radius-pill);
410
+ }
411
+
412
+ /* The squircle reads markedly better at the large card radius — an
413
+ `@supports`-gated ENHANCEMENT only (Chrome 139+, no FF/Safari 2026). The
414
+ border-radius arc is the CONTRACT; the squircle is the better tier (the
415
+ baseline arc is the acceptable contract, NOT a degraded fallback). */
416
+ @supports (corner-shape: squircle) {
417
+ .glass-dock.variant-dock:not(.vertical).shape-card {
418
+ corner-shape: squircle;
419
+ }
420
+ }
421
+
360
422
  /* AJ-W1-δ — `instrument-strip` variant (per G-AJ-D7 Path 1).
361
423
  *
362
424
  * The speedtest survey cockpit's vertical rail needs chassis-strip
@@ -438,6 +500,13 @@
438
500
  justify-content: center;
439
501
  }
440
502
 
503
+ /* AW.W3 — the collapsed-hover scale rides the unified dock spring vocabulary.
504
+ The `scale var(--dock-motion-resize)` arm was added to the `.glass-dock`
505
+ root transition above, so this hover scale settles on the SAME spring curve
506
+ the expand morph uses — a collapsed→hover→expand gesture is one continuous
507
+ spring, not a `scale`-ease handed off to the width-spring. The hover scale
508
+ and the press squish (`--scale-press-dock`) are now one register on the dock
509
+ surface. */
441
510
  .glass-dock.collapsed:hover {
442
511
  background: var(--glass-bg-wash);
443
512
  border-color: var(--glass-border-floating);
@@ -659,6 +728,72 @@
659
728
  inset: 0;
660
729
  }
661
730
 
731
+ /* AW.W3 — the spring-keyed child stagger. While the size spring drives the
732
+ morph, the driver arms the container (`.dock-layers` / `.dock-layer-stack`)
733
+ with `data-revealing` and writes the morph's normalized progress to
734
+ `--dock-morph-progress` (0 → 1) every frame. Each direct child of the
735
+ ACTIVE pane reveals when that progress crosses a per-child onset, so the
736
+ controls cascade IN ON the physical morph — a fast flick and a slow
737
+ hover-open both choreograph correctly, and an interrupted morph carries the
738
+ cascade with it (no orphaned timers). This is a per-CHILD opacity onset; the
739
+ active PANE itself stays statically opacity:1 (revealed by the aperture —
740
+ the W2 clip-reveal contract is NOT regressed).
741
+
742
+ The reveal is a pure `calc` ramp: `opacity = clamp(0, (progress − onset) /
743
+ window, 1)`. `--dock-stagger-onset` steps per child (nth-child); the window
744
+ is `--dock-stagger-window`. The children also rise a few px on a `translate`
745
+ that resolves on the same ramp. ONLY children inside the `[data-revealing]`
746
+ active pane are armed — at rest the children carry no opacity authority (the
747
+ default cascade leaves them at 1).
748
+
749
+ PRM: the driver never arms `data-revealing` on the synchronous PRM swap (the
750
+ FLIP fast-path returns before the spring; the spring's `respectReducedMotion`
751
+ settles instantly), so the children paint at full opacity at once. The
752
+ global PRM gate also strips `translate` from the transition-property — the
753
+ rise snaps. The cascade collapses to 0 stagger frames under PRM. */
754
+ .dock-layers[data-revealing] .dock-layer--full > *,
755
+ .dock-layer-stack[data-revealing] .dock-layer-item-host.is-active > * {
756
+ --dock-stagger-window: var(--dock-stagger-window-size, 0.55);
757
+ --dock-stagger-onset: 0;
758
+ opacity: clamp(
759
+ 0,
760
+ calc(
761
+ (var(--dock-morph-progress, 1) - var(--dock-stagger-onset)) /
762
+ var(--dock-stagger-window)
763
+ ),
764
+ 1
765
+ );
766
+ translate: 0
767
+ calc(
768
+ (1 - clamp(0, calc((var(--dock-morph-progress, 1) - var(--dock-stagger-onset)) / var(--dock-stagger-window)), 1)) *
769
+ var(--dock-stagger-rise, 4px)
770
+ );
771
+ }
772
+
773
+ /* Per-child onsets — each successive control starts a beat later, so the row
774
+ fills outer→in on expand. The onsets are fractions of the morph progress;
775
+ capped so even a long row finishes within the morph window. */
776
+ .dock-layers[data-revealing] .dock-layer--full > *:nth-child(2),
777
+ .dock-layer-stack[data-revealing] .dock-layer-item-host.is-active > *:nth-child(2) {
778
+ --dock-stagger-onset: 0.08;
779
+ }
780
+ .dock-layers[data-revealing] .dock-layer--full > *:nth-child(3),
781
+ .dock-layer-stack[data-revealing] .dock-layer-item-host.is-active > *:nth-child(3) {
782
+ --dock-stagger-onset: 0.16;
783
+ }
784
+ .dock-layers[data-revealing] .dock-layer--full > *:nth-child(4),
785
+ .dock-layer-stack[data-revealing] .dock-layer-item-host.is-active > *:nth-child(4) {
786
+ --dock-stagger-onset: 0.24;
787
+ }
788
+ .dock-layers[data-revealing] .dock-layer--full > *:nth-child(5),
789
+ .dock-layer-stack[data-revealing] .dock-layer-item-host.is-active > *:nth-child(5) {
790
+ --dock-stagger-onset: 0.32;
791
+ }
792
+ .dock-layers[data-revealing] .dock-layer--full > *:nth-child(n + 6),
793
+ .dock-layer-stack[data-revealing] .dock-layer-item-host.is-active > *:nth-child(n + 6) {
794
+ --dock-stagger-onset: 0.4;
795
+ }
796
+
662
797
  /* AW.W2 — the at-rest clip-lift moved to `.expanded:not([data-morphing])` /
663
798
  `.always-expanded:not([data-morphing])` (the clip-shell block at the top).
664
799
  A plain `overflow: visible` here would lift the clip DURING the morph (the
@@ -676,6 +811,46 @@
676
811
  cursor: default;
677
812
  }
678
813
 
814
+ /* ── AW.W3b — `layout="grid"` the 2D auto-grid big dock ──────────────
815
+ The active layer becomes a self-wrapping tile grid (Launchpad / Stage-Manager
816
+ track symmetry — `auto-fill` columns floored at `--dock-tile-min`, explicit
817
+ `grid-auto-rows` so the concentric look holds). DISTINCT from
818
+ `overflow="wrap"`'s content-ordered flex-wrap. A `layout="grid"` dock is
819
+ `alwaysExpanded` by contract (GlassDock.vue), so there is NO width morph and
820
+ hence NO per-frame grid-column reflow. `white-space: normal` releases the
821
+ single-row nowrap so the tiles wrap. */
822
+ .glass-dock.layout-grid {
823
+ white-space: normal;
824
+ }
825
+
826
+ .glass-dock.layout-grid .dock-layer--full {
827
+ display: grid;
828
+ grid-template-columns: repeat(
829
+ auto-fill,
830
+ minmax(var(--dock-tile-min, 4.5rem), 1fr)
831
+ );
832
+ grid-auto-rows: var(--dock-tile-min, 4.5rem);
833
+ gap: var(--dock-layer-gap, 0.375rem);
834
+ width: 100%;
835
+ height: auto;
836
+ white-space: normal;
837
+ }
838
+
839
+ /* A grid dock fills the inline cap; the active layer is the panel body, not a
840
+ shrink-to-fit row. The cap is the `--dock-max-inline-size` clamp (KEPT). */
841
+ .glass-dock.layout-grid .dock-layers {
842
+ width: 100%;
843
+ }
844
+
845
+ /* CONCENTRIC inner tiles — inner radius = outer card radius − padding (the
846
+ universal macOS / visionOS / Raycast rule). NEVER nest two pills
847
+ (stadium-in-stadium); a finite outer + a stepped-down inner. */
848
+ .glass-dock.layout-grid.shape-card .dock-layer--full > * {
849
+ border-radius: calc(
850
+ var(--dock-card-radius) - var(--dock-padding-inline, 0.5rem)
851
+ );
852
+ }
853
+
679
854
  /* ── Scroll-on-overflow opt-in (GlassDock `overflow="scroll"`) ───────
680
855
  The default contract grows-to-fit then overflows visibly past the
681
856
  axis cap. `overflow="scroll"` instead makes the dock the scroll port
@@ -748,6 +923,15 @@
748
923
  min-height: var(--dock-wrap-layer-min-height, var(--dock-layer-height, 2rem));
749
924
  gap: var(--dock-wrap-row-gap, 0.25rem)
750
925
  var(--dock-wrap-column-gap, var(--dock-layer-gap, 0.375rem));
926
+ /* AW.W3b — the graceful wrap-morph. The wrap/unwrap row-reflow flips
927
+ `flex-wrap` at the `--dock-overflow-bp` `@media` boundary; without a
928
+ transition the rows JUMP-CUT. Sequencing the layer's `min-height`
929
+ through the `--dock-motion-resize` spring MORPHS the reflow. The global
930
+ PRM gate strips `min-height` from the transition-property under reduce →
931
+ the morph snaps (0 morph frames) while the reflow still completes. The
932
+ wrap radius swap (`.collapsed` / `@media`) glides too — `border-radius`
933
+ is in the shared `:not(.vertical)` transition list (AW.W3b scope 2). */
934
+ transition: min-height var(--dock-motion-resize);
751
935
  }
752
936
 
753
937
  .glass-dock.dock-overflow-wrap .dock-layer--summary {