@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.
- package/dist/{DataTable-DyKc_26a.js → DataTable-BGVXx0Ww.js} +1 -1
- package/dist/{NumberFieldContent-jO-zGOHf.js → NumberFieldContent-Bhhmk95p.js} +1 -1
- package/dist/animated-digit.js +1 -1
- package/dist/api/index.d.ts +2 -1
- package/dist/api.js +1 -1
- package/dist/aurora.js +259 -81
- package/dist/{button-i8Ek5vvg.js → button-BcMzVrqs.js} +2 -2
- package/dist/button.js +1 -1
- package/dist/carousel.js +1 -1
- package/dist/color.js +1 -1
- package/dist/components/custom/aurora/composables/color.d.ts +35 -2
- package/dist/components/custom/aurora/composables/glSetup.d.ts +1 -1
- package/dist/components/custom/aurora/composables/uniformBridge.d.ts +6 -0
- package/dist/components/custom/aurora/constants/presets.d.ts +9 -0
- package/dist/components/custom/aurora/constants/shaders/composition.glsl.d.ts +1 -1
- package/dist/components/custom/aurora/index.d.ts +3 -2
- package/dist/components/custom/constellation/Constellation.vue.d.ts +45 -0
- package/dist/components/custom/constellation/constellationField.d.ts +85 -0
- package/dist/components/custom/constellation/index.d.ts +3 -0
- package/dist/components/custom/dock/GlassDock.vue.d.ts +34 -3
- package/dist/composables/glass/canvas2d/index.d.ts +2 -0
- package/dist/composables/glass/canvas2d/useCanvas2D.d.ts +48 -0
- package/dist/composables/glass/index.d.ts +2 -0
- package/dist/composables/motion/core/index.d.ts +1 -0
- package/dist/composables/motion/index.d.ts +1 -0
- package/dist/composables/motion/useAnimatedNumberMap.d.ts +29 -0
- package/dist/composables/motion/useStagger.d.ts +50 -0
- package/dist/confirm-dialog.js +1 -1
- package/dist/constellation.d.ts +1 -0
- package/dist/constellation.js +182 -0
- package/dist/controls.js +1 -1
- package/dist/dark.js +1 -1
- package/dist/data-table.js +1 -1
- package/dist/dock.js +121 -102
- package/dist/expandable-container.js +1 -1
- package/dist/forms.js +1 -1
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +79 -78
- package/dist/goo-blob.js +3 -3
- package/dist/icon-tooltip.js +1 -1
- package/dist/keyboard.js +1 -1
- package/dist/labeled-field.js +2 -2
- package/dist/motion-core.js +90 -49
- package/dist/motion.js +31 -21
- package/dist/number-field.js +1 -1
- package/dist/responsive-tabs.js +1 -1
- package/dist/search.js +1 -1
- package/dist/sortable-list.js +1 -1
- package/dist/styles/dock.css +185 -1
- package/dist/styles/glass-refract.css +60 -0
- package/dist/styles/glass-specular-track.css +43 -130
- package/dist/styles/glass.css +243 -27
- package/dist/styles/index.css +1 -0
- package/dist/styles/theme.css +6 -0
- package/dist/styles/tokens.css +33 -0
- package/dist/tabs.js +2 -2
- package/dist/{useAnimatedNumber-BF6r64lA.js → useAnimatedNumber-DfVgP4te.js} +1 -1
- package/dist/useCanvas2D-BeNJqqIS.js +95 -0
- package/dist/watercolor-dot.js +1 -1
- package/package.json +21 -1
- package/src/styles/dock.css +185 -1
- package/src/styles/glass-refract.css +60 -0
- package/src/styles/glass-specular-track.css +43 -130
- package/src/styles/glass.css +243 -27
- package/src/styles/index.css +1 -0
- package/src/styles/theme.css +6 -0
- package/src/styles/tokens.css +33 -0
- /package/dist/{IconTooltip-BTyYn4mr.js → IconTooltip-DZlCkU-0.js} +0 -0
- /package/dist/{Input-CU9CNKmo.js → Input-CRJ2owjN.js} +0 -0
- /package/dist/{UnderlineTabs-Cq_AD03t.js → UnderlineTabs-CuIK16JI.js} +0 -0
- /package/dist/{color-rkK4RMx2.js → color-DS-iLRVM.js} +0 -0
- /package/dist/{compile-DVgAxagk.js → compile-C62K_FpC.js} +0 -0
- /package/dist/{constants-DsCdlK9I.js → constants-C8NMonuo.js} +0 -0
- /package/dist/{presets-1OhFpaIC.js → presets-Dyv9Zl7W.js} +0 -0
- /package/dist/{prng-Bz_1Tydc.js → prng-CjVgzjQT.js} +0 -0
- /package/dist/{useGlobalDark-CWiaCoEw.js → useGlobalDark-D7R9OypB.js} +0 -0
- /package/dist/{useIntersectionPause-DAdVPVp4.js → useIntersectionPause-DsQYGc8V.js} +0 -0
- /package/dist/{useKeyboardShortcuts-BQfnAHHW.js → useKeyboardShortcuts-i8tHd5WO.js} +0 -0
- /package/dist/{useSortable-DnyGXKKY.js → useSortable-muI29agz.js} +0 -0
- /package/dist/{useViewTransition-CJnqg6wl.js → useViewTransition-DI0Rs2rV.js} +0 -0
package/dist/motion-core.js
CHANGED
|
@@ -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-
|
|
3
|
-
import { n as o, t as s } from "./useIntersectionPause-
|
|
4
|
-
import { n as c, t as l } from "./constants-
|
|
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/
|
|
40
|
-
|
|
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(),
|
|
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
|
-
}),
|
|
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
|
|
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
|
|
77
|
-
let e =
|
|
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
|
|
126
|
+
function O() {
|
|
86
127
|
return {
|
|
87
|
-
hasNativeYield:
|
|
88
|
-
yield:
|
|
128
|
+
hasNativeYield: E() !== null,
|
|
129
|
+
yield: D
|
|
89
130
|
};
|
|
90
131
|
}
|
|
91
132
|
//#endregion
|
|
92
133
|
//#region src/composables/motion/useRAFLoop.ts
|
|
93
|
-
var
|
|
94
|
-
function
|
|
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
|
|
138
|
+
function j() {
|
|
98
139
|
return typeof globalThis.cancelAnimationFrame == "function" ? globalThis.cancelAnimationFrame.bind(globalThis) : null;
|
|
99
140
|
}
|
|
100
|
-
function
|
|
141
|
+
function M() {
|
|
101
142
|
return typeof window > "u" ? null : window;
|
|
102
143
|
}
|
|
103
|
-
function
|
|
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 || !
|
|
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) && !!
|
|
147
|
+
return !S && l.value && !f.value && !c.value && !(i && s.value) && !!A();
|
|
107
148
|
}
|
|
108
|
-
function
|
|
109
|
-
h !== null && (
|
|
149
|
+
function T() {
|
|
150
|
+
h !== null && (j()?.(h), h = null), a.value = !1, v = null;
|
|
110
151
|
}
|
|
111
|
-
function
|
|
152
|
+
function E() {
|
|
112
153
|
if (h !== null || !w()) return;
|
|
113
|
-
let t =
|
|
154
|
+
let t = A();
|
|
114
155
|
t && (a.value = !0, h = t((t) => {
|
|
115
156
|
if (h = null, !w()) {
|
|
116
|
-
|
|
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() ?
|
|
166
|
+
}), w() ? E() : T();
|
|
126
167
|
}));
|
|
127
168
|
}
|
|
128
|
-
function
|
|
129
|
-
w() ?
|
|
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,
|
|
176
|
+
S || (N(), l.value = !0, f.value = !1, O());
|
|
136
177
|
}
|
|
137
178
|
function F() {
|
|
138
|
-
l.value = !1, f.value = !1, N(),
|
|
179
|
+
l.value = !1, f.value = !1, N(), T();
|
|
139
180
|
}
|
|
140
181
|
function I() {
|
|
141
|
-
l.value && (f.value = !0,
|
|
182
|
+
l.value && (f.value = !0, O());
|
|
142
183
|
}
|
|
143
184
|
function L() {
|
|
144
|
-
S || (f.value = !1,
|
|
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,
|
|
190
|
+
c.value = e, O();
|
|
150
191
|
}, { flush: "sync" });
|
|
151
192
|
}
|
|
152
193
|
if (i) {
|
|
153
|
-
let e =
|
|
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,
|
|
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:
|
|
214
|
+
yieldToMain: D
|
|
174
215
|
};
|
|
175
216
|
}
|
|
176
217
|
//#endregion
|
|
177
218
|
//#region src/composables/motion/usePrioritizedTask.ts
|
|
178
|
-
function
|
|
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
|
|
224
|
+
function F() {
|
|
184
225
|
let e = /* @__PURE__ */ Error("The task was aborted.");
|
|
185
226
|
return e.name = "AbortError", e;
|
|
186
227
|
}
|
|
187
|
-
function
|
|
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
|
|
203
|
-
let { priority: n, signal: r, delay: i } = t, a =
|
|
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(
|
|
251
|
+
n(F());
|
|
211
252
|
return;
|
|
212
253
|
}
|
|
213
254
|
let a = () => {
|
|
214
255
|
if (r?.aborted) {
|
|
215
|
-
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
|
|
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
|
|
237
|
-
let t =
|
|
277
|
+
function z(e) {
|
|
278
|
+
let t = R(e);
|
|
238
279
|
return {
|
|
239
|
-
postTask: (n, r = {}) =>
|
|
280
|
+
postTask: (n, r = {}) => L(n, {
|
|
240
281
|
priority: e,
|
|
241
282
|
...r,
|
|
242
|
-
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,
|
|
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-
|
|
3
|
-
import { t as i } from "./useAnimatedNumber-
|
|
4
|
-
import {
|
|
5
|
-
import { NumericAnimation as
|
|
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
|
|
8
|
-
let 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
|
|
39
|
-
let t =
|
|
40
|
-
duration:
|
|
41
|
-
timingFunction:
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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),
|
|
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
|
|
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 &&
|
|
125
|
+
t && o(t);
|
|
116
126
|
}
|
|
117
|
-
function
|
|
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
|
|
135
|
+
return s(d), {
|
|
126
136
|
runActive: c,
|
|
127
|
-
settle:
|
|
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,
|
|
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 };
|
package/dist/number-field.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as e, i as t, n, r, t as i } from "./NumberFieldContent-
|
|
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 };
|
package/dist/responsive-tabs.js
CHANGED
|
@@ -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-
|
|
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-
|
|
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";
|
package/dist/sortable-list.js
CHANGED
|
@@ -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-
|
|
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;
|
package/dist/styles/dock.css
CHANGED
|
@@ -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 {
|