@mkbabb/glass-ui 2.1.0 → 3.1.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/{CardFooter-Yi0xtLLd.js → CardFooter-CSGcJkqa.js} +1 -1
- package/dist/{CommandShortcut-_INFUMu6.js → CommandShortcut-DWT19a2Y.js} +3 -3
- package/dist/{ContextMenuSubContent-DCkweFW9.js → ContextMenuSubContent-gAFxJ-qi.js} +1 -1
- package/dist/{DataTable-Ce00dbHD.js → DataTable-R8-Zidms.js} +3 -3
- package/dist/{DialogContent-CmCijgX9.js → DialogContent-2fALDSvc.js} +3 -3
- package/dist/{DialogFooter-DRdaCok0.js → DialogFooter-ClrNEOVU.js} +2 -2
- package/dist/{DiscoGlyph-wRA02zAJ.js → DiscoGlyph-C3JfMnRV.js} +1 -1
- package/dist/{GlyphFace-BnPMUZ16.js → GlyphFace-BRS8vUb7.js} +1 -1
- package/dist/HoverPopover-CWFCfLx3.js +96 -0
- package/dist/{IconTooltip-ge_mBSWR.js → IconTooltip-BkaA7tZ2.js} +1 -1
- package/dist/{Input-CbakTe3B.js → Input-DDpFn568.js} +3 -5
- package/dist/Label-DJty89bp.js +36 -0
- package/dist/{MetricBadge-DRBB18Xq.js → MetricBadge-DmAihkXd.js} +1 -1
- package/dist/{Notification-DrI1DT2v.js → Notification-OqIpADml.js} +2 -2
- package/dist/NumberFieldContent-DTH9gb_N.js +141 -0
- package/dist/{PopoverContent-BCH4eYs8.js → PopoverContent-EiklFrna.js} +1 -1
- package/dist/{Progress-CCH-2UBR.js → Progress-FApA9fm_.js} +1 -1
- package/dist/{ScrollingText-7P8skg5W.js → ScrollingText-BFd0i2zJ.js} +2 -2
- package/dist/{SelectScrollDownButton-yu8EYUnu.js → SelectScrollDownButton-Dth8-wXQ.js} +2 -2
- package/dist/{Toaster-DY8_jtHv.js → Toaster-Bjlunvq4.js} +69 -58
- package/dist/UnderlineTabs-DAWMLmJG.js +37 -0
- package/dist/animated-digit.js +2 -2
- package/dist/api/index.d.ts +2 -0
- package/dist/api.js +1 -1
- package/dist/aurora.js +103 -90
- package/dist/badge.js +1 -1
- package/dist/{button-BlOW34DT.js → button-C0aHmBbt.js} +2 -0
- package/dist/button.js +1 -1
- package/dist/card.js +1 -1
- package/dist/carousel.js +1 -1
- package/dist/collapsible.js +1 -1
- package/dist/command.js +1 -1
- package/dist/components/custom/aurora/composables/runtime.d.ts +24 -1
- package/dist/components/custom/dialog-native/GlassDialogNative.vue.d.ts +57 -0
- package/dist/components/custom/dialog-native/index.d.ts +1 -0
- package/dist/components/custom/dock/composables/useLayerTransition.d.ts +20 -10
- package/dist/components/custom/hover-popover/HoverPopover.vue.d.ts +26 -4
- package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +16 -2
- package/dist/components/custom/labeled-field/LabeledInput.vue.d.ts +17 -1
- package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +2 -0
- package/dist/components/custom/labeled-field/LabeledSlider.vue.d.ts +2 -0
- package/dist/components/custom/labeled-field/LabeledSwitch.vue.d.ts +2 -0
- package/dist/components/custom/toggle-chip/ToggleChip.vue.d.ts +6 -4
- package/dist/components/ui/input/Input.vue.d.ts +10 -7
- package/dist/components/ui/label/Label.vue.d.ts +8 -0
- package/dist/components/ui/textarea/Textarea.vue.d.ts +45 -8
- package/dist/components/ui/toast/Toaster.vue.d.ts +7 -1
- package/dist/components/ui/toast/index.d.ts +1 -0
- package/dist/composables/dark/index.d.ts +1 -0
- package/dist/composables/dom/index.d.ts +2 -0
- package/dist/composables/dom/useIdleReady.d.ts +63 -0
- package/dist/composables/dom/useUserInvalidAria.d.ts +32 -0
- package/dist/composables/index.d.ts +1 -0
- package/dist/composables/motion/core/index.d.ts +8 -0
- package/dist/composables/motion/index.d.ts +0 -7
- package/dist/composables/motion/supportsCssTimeline.d.ts +8 -0
- package/dist/composables/motion/useRAFLoop.d.ts +7 -0
- package/dist/composables/motion/useScrollProgress.d.ts +6 -2
- package/dist/composables/motion/useStaggerReveal.d.ts +6 -0
- package/dist/composables/motion/useViewTransition.d.ts +31 -0
- package/dist/composables/motion/useYieldToMain.d.ts +29 -0
- package/dist/configurator.js +1 -1
- package/dist/confirm-dialog.js +2 -2
- package/dist/constants-DwBwnG8N.js +13 -0
- package/dist/context-menu.js +2 -2
- package/dist/controls.js +2 -2
- package/dist/dark.d.ts +1 -1
- package/dist/dark.js +13 -2
- package/dist/data-table.js +1 -1
- package/dist/dialog.js +2 -2
- package/dist/disco-glyph.js +1 -1
- package/dist/dock.js +195 -176
- package/dist/dom.js +5 -4
- package/dist/{dropdown-menu-2K-SGkZU.js → dropdown-menu-BvRUamNs.js} +2 -2
- package/dist/dropdown-menu.js +1 -1
- package/dist/expandable-container.js +3 -3
- package/dist/forms.d.ts +1 -0
- package/dist/forms.js +47 -42
- package/dist/glass-carousel.js +1 -1
- package/dist/glass-panel.js +2 -2
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +156 -275
- package/dist/glyph-face.js +2 -2
- package/dist/header-ribbon.js +1 -1
- package/dist/hover-card.js +1 -1
- package/dist/hover-popover.js +1 -1
- package/dist/icon-tooltip.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/instrument-chassis.js +1 -1
- package/dist/instrument-rail.js +1 -1
- package/dist/keyboard.js +1 -1
- package/dist/label.js +1 -1
- package/dist/labeled-field.js +96 -57
- package/dist/metric-badge.js +1 -1
- package/dist/metric-stack.js +1 -1
- package/dist/motion-core.d.ts +1 -0
- package/dist/motion-core.js +229 -0
- package/dist/motion.js +26 -228
- package/dist/notification.js +1 -1
- package/dist/number-field.d.ts +1 -0
- package/dist/number-field.js +2 -0
- package/dist/paper-backdrop.js +1 -1
- package/dist/popover.js +1 -1
- package/dist/progress.js +1 -1
- package/dist/pulse.js +1 -1
- package/dist/reactive.js +2 -2
- package/dist/responsive-tabs.js +3 -3
- package/dist/scrolling-text.js +1 -1
- package/dist/search.js +6 -6
- package/dist/select.js +3 -3
- package/dist/separator.js +1 -1
- package/dist/{sheet-CLVkb3AO.js → sheet-CukNDezz.js} +53 -53
- package/dist/sheet.js +1 -1
- package/dist/{slider-BQaLYFLh.js → slider-DJvHkTRe.js} +3 -3
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +2 -2
- package/dist/styles/animations.css +77 -0
- package/dist/styles/cards.css +6 -2
- package/dist/styles/dock.css +109 -109
- package/dist/styles/drawer.css +2 -2
- package/dist/styles/glass.css +89 -6
- package/dist/styles/index.css +10 -1
- package/dist/styles/instrument-chassis.css +28 -1
- package/dist/styles/scroll-driven.css +72 -0
- package/dist/styles/theme.css +6 -0
- package/dist/styles/tokens.css +345 -289
- package/dist/styles/typography.css +65 -131
- package/dist/styles/utilities.css +199 -81
- package/dist/styles/view-transition.css +62 -0
- package/dist/switch.d.ts +1 -0
- package/dist/switch.js +2 -0
- package/dist/tabs.js +40 -36
- package/dist/timeline.js +2 -2
- package/dist/toast.js +1 -1
- package/dist/toggle-group.js +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{useAnimatedNumber-DcvTR9B4.js → useAnimatedNumber-DKQYVB7s.js} +9 -20
- package/dist/{useConfiguratorState-BlaevW0S.js → useConfiguratorState-BR5vUDL8.js} +5 -5
- package/dist/{useBreakpoint-BHlX-MhR.js → useIdleReady-Cmkhm03v.js} +30 -2
- package/dist/{useTouchGate-BhhEMlwJ.js → useTouchGate-D9Zvrzyc.js} +1 -1
- package/dist/useUserInvalidAria-DVu1eTXG.js +29 -0
- package/dist/useViewTransition-DYIK6Gzb.js +16 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/moveBefore.d.ts +15 -0
- package/package.json +27 -6
- package/src/styles/animations.css +77 -0
- package/src/styles/cards.css +6 -2
- package/src/styles/dock.css +109 -109
- package/src/styles/drawer.css +2 -2
- package/src/styles/glass.css +89 -6
- package/src/styles/index.css +10 -1
- package/src/styles/instrument-chassis.css +28 -1
- package/src/styles/scroll-driven.css +72 -0
- package/src/styles/theme.css +6 -0
- package/src/styles/tokens.css +345 -289
- package/src/styles/typography.css +65 -131
- package/src/styles/utilities.css +199 -81
- package/src/styles/view-transition.css +62 -0
- package/dist/HoverPopover-Btv4RQfv.js +0 -80
- package/dist/Label-C8QMJSsf.js +0 -32
- package/dist/UnderlineTabs-BtrUcXn-.js +0 -64
- package/dist/composables/motion/useSpringOrchestrator.d.ts +0 -15
- /package/dist/{CollapsibleContent-DHRuXE3P.js → CollapsibleContent-CVMOcYlV.js} +0 -0
- /package/dist/{ContextMenuContent-CvXfU5qz.js → ContextMenuContent-otjFIu8v.js} +0 -0
- /package/dist/{HoverCardContent-4nN5-5bz.js → HoverCardContent-DaGrgJBO.js} +0 -0
- /package/dist/{InstrumentChassis-DOaVYyWq.js → InstrumentChassis-CnHTMxds.js} +0 -0
- /package/dist/{InstrumentRail-jHDqXj70.js → InstrumentRail-C6dEbi8E.js} +0 -0
- /package/dist/{ModalOverlay-DKLVY-cj.js → ModalOverlay-iWiAgbYH.js} +0 -0
- /package/dist/{PaperBackdrop-Bc2drCqJ.js → PaperBackdrop-CeZ-w0R0.js} +0 -0
- /package/dist/{SelectGroup-O69GTQ77.js → SelectGroup-DdR4tdDY.js} +0 -0
- /package/dist/{SelectSeparator-GTHxKO0a.js → SelectSeparator-CXm_hlqA.js} +0 -0
- /package/dist/{Separator-_NCypg_C.js → Separator-D8AUMhxY.js} +0 -0
- /package/dist/{Switch-CL0uxu8F.js → Switch-Cr1t_F_U.js} +0 -0
- /package/dist/{ToggleGroupItem-BYG_8M9M.js → ToggleGroupItem-OesUouE7.js} +0 -0
- /package/dist/{TooltipProvider-C5QLSPto.js → TooltipProvider-DE78vbEP.js} +0 -0
- /package/dist/{_plugin-vue_export-helper-n-_DRHWS.js → _plugin-vue_export-helper-Dq1MygBL.js} +0 -0
- /package/dist/{badge-BbxVKZfw.js → badge-x46my_Fo.js} +0 -0
- /package/dist/composables/{motion → dark}/installDarkModeSync.d.ts +0 -0
- /package/dist/{dockContext-BDGSrwsV.js → dockContext-D5NZCWJs.js} +0 -0
- /package/dist/{keys-DVkcUktU.js → keys-CaTQS-vx.js} +0 -0
- /package/dist/{menuItemVariants-B2nDL7zH.js → menuItemVariants-BsbGNq9C.js} +0 -0
- /package/dist/{presets-BMzCDrmR.js → presets-a-D93K1S.js} +0 -0
- /package/dist/{search-ocd8tmL9.js → search-DBAiUABx.js} +0 -0
- /package/dist/{useGlassRenderer-DMDdMH55.js → useGlassRenderer-Ds-nmrGz.js} +0 -0
- /package/dist/{useGlobalDark-PMiP5Jku.js → useGlobalDark-B0WvLJE3.js} +0 -0
- /package/dist/{useIntersectionPause-CXYfYg_C.js → useIntersectionPause-IY2CwPQb.js} +0 -0
- /package/dist/{useInterval-COlTCeVa.js → useInterval-DVgGUf_y.js} +0 -0
- /package/dist/{useKeyboardShortcuts-B1ev1YEC.js → useKeyboardShortcuts-Dpw_RUcB.js} +0 -0
- /package/dist/{useResizeObserver-F4aRR4Cj.js → useResizeObserver-Cg9npuM3.js} +0 -0
- /package/dist/{useSortable-Ck0rBJ4g.js → useSortable-Cq2Y1JLO.js} +0 -0
- /package/dist/{useSpringMount-BTRBNzXP.js → useSpringMount-Cfk1XK1R.js} +0 -0
- /package/dist/{useTimer-lp5NlH4w.js → useTimer-NAaj9zNq.js} +0 -0
- /package/dist/{x-cdWAmO-q.js → x-q7pJa83X.js} +0 -0
package/dist/tabs.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as e } from "./cn-DJXf4yaB.js";
|
|
2
|
-
import { t } from "./_plugin-vue_export-helper-
|
|
3
|
-
import { i as n, n as r, r as i, t as a } from "./TooltipProvider-
|
|
4
|
-
import { t as o } from "./UnderlineTabs-
|
|
2
|
+
import { t } from "./_plugin-vue_export-helper-Dq1MygBL.js";
|
|
3
|
+
import { i as n, n as r, r as i, t as a } from "./TooltipProvider-DE78vbEP.js";
|
|
4
|
+
import { t as o } from "./UnderlineTabs-DAWMLmJG.js";
|
|
5
5
|
import { Fragment as s, computed as c, createBlock as l, createCommentVNode as u, createElementBlock as d, createElementVNode as f, createTextVNode as p, createVNode as m, defineComponent as h, nextTick as g, normalizeClass as _, normalizeStyle as v, onMounted as y, onUnmounted as b, openBlock as x, ref as S, renderList as C, renderSlot as w, toDisplayString as T, unref as E, watch as D, withCtx as O } from "vue";
|
|
6
6
|
//#region src/components/custom/tabs/BouncyToggle.vue?vue&type=script&setup=true&lang.ts
|
|
7
7
|
var k = [
|
|
@@ -36,27 +36,27 @@ var k = [
|
|
|
36
36
|
function h(e, t) {
|
|
37
37
|
return typeof document > "u" ? t : getComputedStyle(document.documentElement).getPropertyValue(e).trim() || t;
|
|
38
38
|
}
|
|
39
|
-
let j = t, M = o, N = S(null), P = S([]), F = c(() => j.variant === "pill"),
|
|
39
|
+
let j = t, M = o, N = S(null), P = S([]), F = typeof CSS < "u" && typeof CSS.supports == "function" && CSS.supports("position-anchor", "--x"), I = c(() => j.variant === "pill"), L = c(() => j.overflow === "scroll"), R = c(() => j.overflow === "auto"), z = c(() => j.multiSelect && Array.isArray(j.modelValue) ? j.modelValue : [j.modelValue]), B = (e) => z.value.includes(e), V = c(() => !j.multiSelect && !F), H = c(() => j.multiSelect || !F), U = S({
|
|
40
40
|
width: "0px",
|
|
41
41
|
transform: "translateX(0px)",
|
|
42
42
|
opacity: "0"
|
|
43
43
|
});
|
|
44
|
-
function
|
|
45
|
-
if (j.multiSelect) return;
|
|
44
|
+
function W() {
|
|
45
|
+
if (j.multiSelect || F) return;
|
|
46
46
|
let e = j.options.findIndex((e) => e.value === j.modelValue);
|
|
47
47
|
if (e < 0 || !P.value[e]) return;
|
|
48
48
|
let t = P.value[e];
|
|
49
|
-
|
|
49
|
+
U.value = {
|
|
50
50
|
width: `${t.offsetWidth}px`,
|
|
51
51
|
transform: `translateX(${t.offsetLeft}px)`,
|
|
52
52
|
opacity: "1"
|
|
53
53
|
};
|
|
54
54
|
}
|
|
55
|
-
let
|
|
56
|
-
function
|
|
55
|
+
let G = S({});
|
|
56
|
+
function K() {
|
|
57
57
|
if (!j.multiSelect) return;
|
|
58
58
|
let e = {};
|
|
59
|
-
for (let t of
|
|
59
|
+
for (let t of z.value) {
|
|
60
60
|
let n = j.options.findIndex((e) => e.value === t), r = P.value[n];
|
|
61
61
|
r && (e[t] = {
|
|
62
62
|
width: `${r.offsetWidth}px`,
|
|
@@ -64,12 +64,12 @@ var k = [
|
|
|
64
64
|
opacity: "1"
|
|
65
65
|
});
|
|
66
66
|
}
|
|
67
|
-
|
|
67
|
+
G.value = e;
|
|
68
68
|
}
|
|
69
|
-
function
|
|
70
|
-
j.multiSelect ?
|
|
69
|
+
function q() {
|
|
70
|
+
j.multiSelect ? K() : W();
|
|
71
71
|
}
|
|
72
|
-
function
|
|
72
|
+
function J(e) {
|
|
73
73
|
if (typeof window < "u" && window.matchMedia("(prefers-reduced-motion: reduce)").matches) return;
|
|
74
74
|
e.getAnimations().forEach((e) => e.cancel());
|
|
75
75
|
let t = h("--ease-apple-spring", "cubic-bezier(0.175, 0.885, 0.32, 1.275)"), n = h("--scale-press", "0.95"), r = h("--scale-hover", "1.08");
|
|
@@ -89,34 +89,38 @@ var k = [
|
|
|
89
89
|
easing: t
|
|
90
90
|
});
|
|
91
91
|
}
|
|
92
|
-
function
|
|
92
|
+
function Y(e, t) {
|
|
93
93
|
if (j.options[t]?.disabled) return;
|
|
94
94
|
let n = P.value[t];
|
|
95
|
-
if (n &&
|
|
96
|
-
let t = [...
|
|
95
|
+
if (n && J(n), j.multiSelect) {
|
|
96
|
+
let t = [...z.value], n = t.indexOf(e);
|
|
97
97
|
n > -1 ? t.length > 1 && t.splice(n, 1) : t.push(e), M("update:modelValue", t);
|
|
98
98
|
} else M("update:modelValue", e);
|
|
99
99
|
}
|
|
100
|
-
D(() => j.modelValue, () =>
|
|
101
|
-
|
|
100
|
+
D(() => j.modelValue, () => {
|
|
101
|
+
H.value && g(q);
|
|
102
|
+
}, { deep: !0 }), D(() => j.options, () => {
|
|
103
|
+
H.value && g(q);
|
|
104
|
+
}, { deep: !0 });
|
|
105
|
+
let X = null;
|
|
102
106
|
return y(() => {
|
|
103
|
-
g(
|
|
107
|
+
H.value && (g(q), N.value && (X = new ResizeObserver(() => q()), X.observe(N.value)));
|
|
104
108
|
}), b(() => {
|
|
105
|
-
|
|
109
|
+
X?.disconnect();
|
|
106
110
|
}), (o, c) => (x(), d("div", {
|
|
107
111
|
ref_key: "containerRef",
|
|
108
112
|
ref: N,
|
|
109
|
-
class: _(E(e)(
|
|
113
|
+
class: _(E(e)(I.value ? "bouncy-toggle bouncy-toggle--pill" : "bouncy-toggle", L.value && "bouncy-toggle--scroll scroll-fade-mask scrollbar-hidden", R.value && "bouncy-toggle--auto scrollbar-hidden", j.class))
|
|
110
114
|
}, [
|
|
111
115
|
t.multiSelect ? u("", !0) : (x(), d("div", {
|
|
112
116
|
key: 0,
|
|
113
|
-
class: _(
|
|
114
|
-
style: v(
|
|
117
|
+
class: _([I.value ? "bouncy-slider bouncy-slider--pill" : "bouncy-slider", V.value ? "bouncy-slider--js" : "bouncy-slider--anchor"]),
|
|
118
|
+
style: v(V.value ? U.value : void 0)
|
|
115
119
|
}, null, 6)),
|
|
116
|
-
t.multiSelect ? (x(!0), d(s, { key: 1 }, C(
|
|
120
|
+
t.multiSelect ? (x(!0), d(s, { key: 1 }, C(z.value, (e) => (x(), d("div", {
|
|
117
121
|
key: "slider-" + e,
|
|
118
|
-
class: _(
|
|
119
|
-
style: v(
|
|
122
|
+
class: _([I.value ? "bouncy-slider bouncy-slider--pill" : "bouncy-slider", "bouncy-slider--js"]),
|
|
123
|
+
style: v(G.value[e] ?? { opacity: "0" })
|
|
120
124
|
}, null, 6))), 128)) : u("", !0),
|
|
121
125
|
(x(!0), d(s, null, C(t.options, (e, t) => (x(), d(s, { key: e.value }, [e.tooltip ? (x(), l(E(a), {
|
|
122
126
|
key: 0,
|
|
@@ -129,13 +133,13 @@ var k = [
|
|
|
129
133
|
ref: (e) => {
|
|
130
134
|
e && (P.value[t] = e);
|
|
131
135
|
},
|
|
132
|
-
class: _([
|
|
133
|
-
"aria-pressed":
|
|
136
|
+
class: _([I.value ? "bouncy-btn bouncy-btn--pill" : "bouncy-btn", e.disabled && "is-disabled"]),
|
|
137
|
+
"aria-pressed": B(e.value) ? "true" : "false",
|
|
134
138
|
disabled: e.disabled,
|
|
135
|
-
onClick: (n) =>
|
|
139
|
+
onClick: (n) => Y(e.value, t)
|
|
136
140
|
}, [w(o.$slots, "option", {
|
|
137
141
|
option: e,
|
|
138
|
-
active:
|
|
142
|
+
active: B(e.value)
|
|
139
143
|
}, () => [p(T(e.label), 1)], !0)], 10, k)]),
|
|
140
144
|
_: 2
|
|
141
145
|
}, 1024), m(E(i), {
|
|
@@ -154,17 +158,17 @@ var k = [
|
|
|
154
158
|
ref: (e) => {
|
|
155
159
|
e && (P.value[t] = e);
|
|
156
160
|
},
|
|
157
|
-
class: _([
|
|
158
|
-
"aria-pressed":
|
|
161
|
+
class: _([I.value ? "bouncy-btn bouncy-btn--pill" : "bouncy-btn", e.disabled && "is-disabled"]),
|
|
162
|
+
"aria-pressed": B(e.value) ? "true" : "false",
|
|
159
163
|
disabled: e.disabled,
|
|
160
|
-
onClick: (n) =>
|
|
164
|
+
onClick: (n) => Y(e.value, t)
|
|
161
165
|
}, [w(o.$slots, "option", {
|
|
162
166
|
option: e,
|
|
163
|
-
active:
|
|
167
|
+
active: B(e.value)
|
|
164
168
|
}, () => [p(T(e.label), 1)], !0)], 10, A))], 64))), 128))
|
|
165
169
|
], 2));
|
|
166
170
|
}
|
|
167
|
-
}), [["__scopeId", "data-v-
|
|
171
|
+
}), [["__scopeId", "data-v-25e9946f"]]), M = /* @__PURE__ */ h({
|
|
168
172
|
__name: "BouncyTabs",
|
|
169
173
|
props: {
|
|
170
174
|
options: {},
|
package/dist/timeline.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as e } from "./_plugin-vue_export-helper-
|
|
2
|
-
import { t } from "./HoverPopover-
|
|
1
|
+
import { t as e } from "./_plugin-vue_export-helper-Dq1MygBL.js";
|
|
2
|
+
import { t } from "./HoverPopover-CWFCfLx3.js";
|
|
3
3
|
import { Fragment as n, computed as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createSlots as c, defineComponent as l, guardReactiveProps as u, normalizeClass as d, normalizeProps as f, normalizeStyle as p, openBlock as m, ref as h, renderList as g, renderSlot as _, toDisplayString as v, unref as y, withCtx as b } from "vue";
|
|
4
4
|
//#region src/components/custom/timeline/geometry.ts
|
|
5
5
|
function x(e) {
|
package/dist/toast.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as e, c as t, i as n, n as r, o as i, r as a, s as o, t as s } from "./Toaster-
|
|
1
|
+
import { a as e, c as t, i as n, n as r, o as i, r as a, s as o, t as s } from "./Toaster-Bjlunvq4.js";
|
|
2
2
|
export { t as Toast, o as ToastAction, i as ToastClose, e as ToastDescription, n as ToastTitle, s as Toaster, r as toast, a as useToast };
|
package/dist/toggle-group.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "./ToggleGroupItem-
|
|
1
|
+
import { n as e, t } from "./ToggleGroupItem-OesUouE7.js";
|
|
2
2
|
export { e as ToggleGroup, t as ToggleGroupItem };
|
package/dist/tooltip.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as e, n as t, r as n, t as r } from "./TooltipProvider-
|
|
1
|
+
import { i as e, n as t, r as n, t as r } from "./TooltipProvider-DE78vbEP.js";
|
|
2
2
|
export { e as Tooltip, n as TooltipContent, r as TooltipProvider, t as TooltipTrigger };
|
package/dist/typewriter.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as e } from "./_plugin-vue_export-helper-
|
|
1
|
+
import { t as e } from "./_plugin-vue_export-helper-Dq1MygBL.js";
|
|
2
2
|
import { Fragment as t, computed as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, defineComponent as o, normalizeClass as s, onMounted as c, onUnmounted as l, openBlock as u, ref as d, renderList as f, toDisplayString as p, unref as m, watch as h } from "vue";
|
|
3
3
|
//#region src/components/custom/typewriter/types.ts
|
|
4
4
|
var g = {
|
|
@@ -1,23 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
var c = {
|
|
5
|
-
canvasNeedle: .08,
|
|
6
|
-
domHero: .12,
|
|
7
|
-
domPill: .14,
|
|
8
|
-
domProgress: .18
|
|
9
|
-
}, l = {
|
|
10
|
-
canvas: .002,
|
|
11
|
-
dom: .05,
|
|
12
|
-
domProgress: .5
|
|
13
|
-
};
|
|
14
|
-
//#endregion
|
|
1
|
+
import { n as e, t } from "./constants-DwBwnG8N.js";
|
|
2
|
+
import { getCurrentScope as n, onScopeDispose as r, readonly as i, ref as a, shallowRef as o, toValue as s, watch as c } from "vue";
|
|
3
|
+
import { SmoothProgress as l } from "@mkbabb/keyframes.js";
|
|
15
4
|
//#region src/composables/motion/useAnimatedNumber.ts
|
|
16
5
|
function u(e) {
|
|
17
6
|
return Math.max(0, Math.min(100, e));
|
|
18
7
|
}
|
|
19
8
|
function d(d, f = {}) {
|
|
20
|
-
let p = f.mode ?? "absolute", m = p === "progress" ? (e) => u(e) / 100 : (e) => e, h = p === "progress" ? (e) => e * 100 : (e) => e, g = p === "progress" ? u(f.initial ?? 0) : f.initial ?? 0, _ = m(g), v =
|
|
9
|
+
let p = f.mode ?? "absolute", m = p === "progress" ? (e) => u(e) / 100 : (e) => e, h = p === "progress" ? (e) => e * 100 : (e) => e, g = p === "progress" ? u(f.initial ?? 0) : f.initial ?? 0, _ = m(g), v = a(g), y = a(!1), b = p === "progress" ? t.domProgress : t.domHero, x = p === "progress" ? e.domProgress : e.dom, S = p === "progress" ? (f.snapThreshold ?? x) / 100 : f.snapThreshold ?? x, C = o(new l({
|
|
21
10
|
damping: f.damping ?? b,
|
|
22
11
|
snapThreshold: S,
|
|
23
12
|
targetEpsilon: p === "progress" ? (f.targetEpsilon ?? 0) / 100 : f.targetEpsilon ?? 0,
|
|
@@ -28,15 +17,15 @@ function d(d, f = {}) {
|
|
|
28
17
|
C.value.play((e) => {
|
|
29
18
|
v.value = h(e), y.value = !C.value.settled, f.onValue?.(v.value);
|
|
30
19
|
});
|
|
31
|
-
let w =
|
|
20
|
+
let w = c(() => s(d), (e) => {
|
|
32
21
|
e != null && C.value.setTarget(m(e));
|
|
33
22
|
}, { immediate: !0 });
|
|
34
23
|
function T() {
|
|
35
24
|
w(), C.value.stop(), y.value = !1;
|
|
36
25
|
}
|
|
37
|
-
return
|
|
38
|
-
current:
|
|
39
|
-
isAnimating:
|
|
26
|
+
return n() && r(T), {
|
|
27
|
+
current: i(v),
|
|
28
|
+
isAnimating: i(y),
|
|
40
29
|
snap: () => {
|
|
41
30
|
C.value.snap(), v.value = h(C.value.current), y.value = !1;
|
|
42
31
|
},
|
|
@@ -48,4 +37,4 @@ function d(d, f = {}) {
|
|
|
48
37
|
};
|
|
49
38
|
}
|
|
50
39
|
//#endregion
|
|
51
|
-
export {
|
|
40
|
+
export { d as t };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as e } from "./cn-DJXf4yaB.js";
|
|
2
2
|
import { t } from "./createLucideIcon-Bn9a1b70.js";
|
|
3
3
|
import { t as n } from "./chevron-down-DILQA1t6.js";
|
|
4
|
-
import { t as r } from "./_plugin-vue_export-helper-
|
|
5
|
-
import { t as i } from "./Label-
|
|
4
|
+
import { t as r } from "./_plugin-vue_export-helper-Dq1MygBL.js";
|
|
5
|
+
import { t as i } from "./Label-DJty89bp.js";
|
|
6
6
|
import { Fragment as a, computed as o, createCommentVNode as s, createElementBlock as c, createElementVNode as l, createTextVNode as u, createVNode as d, defineComponent as f, inject as p, normalizeClass as m, normalizeStyle as h, openBlock as g, provide as _, reactive as v, ref as y, renderList as b, renderSlot as x, toDisplayString as S, toRaw as C, unref as w, useId as T, watch as E, withCtx as D } from "vue";
|
|
7
7
|
var O = t("rotate-ccw", [["path", {
|
|
8
8
|
d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",
|
|
@@ -54,7 +54,7 @@ var M = { class: "configurator-stage relative min-h-0 min-w-0 overflow-hidden" }
|
|
|
54
54
|
setup(t, { emit: n }) {
|
|
55
55
|
let r = t;
|
|
56
56
|
A(o(() => r.density));
|
|
57
|
-
let i = n, u = o(() => e("configurator glass-floating rounded-
|
|
57
|
+
let i = n, u = o(() => e("configurator glass-floating rounded-panel border border-border/60 overflow-hidden", "grid grid-cols-1 lg:grid-cols-[minmax(0,1fr)_minmax(280px,360px)]", "min-h-0", r.class)), d = o(() => {
|
|
58
58
|
switch (r.scrollMode) {
|
|
59
59
|
case "always": return "overflow-y-auto scroll-fade-y scrollbar-thin";
|
|
60
60
|
case "never": return "overflow-visible";
|
|
@@ -134,11 +134,11 @@ var M = { class: "configurator-stage relative min-h-0 min-w-0 overflow-hidden" }
|
|
|
134
134
|
}
|
|
135
135
|
let v = o(() => u.value ? "open" : "closed");
|
|
136
136
|
return (r, a) => (g(), c("div", {
|
|
137
|
-
class: m(w(e)("configurator-layer border-b border-border/40 last:border-b-0", i.class)),
|
|
137
|
+
class: m(w(e)("configurator-layer rounded-panel border-b border-border/40 last:border-b-0", i.class)),
|
|
138
138
|
"data-state": v.value
|
|
139
139
|
}, [l("button", {
|
|
140
140
|
type: "button",
|
|
141
|
-
class: m(w(e)("configurator-layer-trigger", "group flex w-full items-center justify-between gap-2 px-3 py-2", "text-left transition-colors hover:bg-foreground/5 focus-ring")),
|
|
141
|
+
class: m(w(e)("configurator-layer-trigger", "rounded-panel", "group flex w-full items-center justify-between gap-2 px-3 py-2", "text-left transition-colors hover:bg-foreground/5 focus-ring")),
|
|
142
142
|
"aria-expanded": u.value,
|
|
143
143
|
"aria-controls": p.value,
|
|
144
144
|
"data-state": v.value,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as e } from "./useGlobalDark-
|
|
1
|
+
import { t as e } from "./useGlobalDark-B0WvLJE3.js";
|
|
2
2
|
import { getCurrentScope as t, onMounted as n, onScopeDispose as r, readonly as i, ref as a, toValue as o, watch as s } from "vue";
|
|
3
3
|
//#region src/composables/dom/useTokenColor.ts
|
|
4
4
|
function c(t, r = {}) {
|
|
@@ -131,4 +131,32 @@ function m(e) {
|
|
|
131
131
|
};
|
|
132
132
|
}
|
|
133
133
|
//#endregion
|
|
134
|
-
|
|
134
|
+
//#region src/composables/dom/useIdleReady.ts
|
|
135
|
+
function h(e = {}) {
|
|
136
|
+
let n = e.timeout ?? 2e3, i = a(!1), o = null, s = null, c = !1;
|
|
137
|
+
function l() {
|
|
138
|
+
c || i.value || (i.value = !0, e.onReady?.(), u());
|
|
139
|
+
}
|
|
140
|
+
function u() {
|
|
141
|
+
o !== null && typeof window < "u" && "cancelIdleCallback" in window && (window.cancelIdleCallback(o), o = null), s !== null && (clearTimeout(s), s = null);
|
|
142
|
+
}
|
|
143
|
+
function d() {
|
|
144
|
+
if (!c) {
|
|
145
|
+
if (typeof window > "u") {
|
|
146
|
+
l();
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
"requestIdleCallback" in window ? o = window.requestIdleCallback(l, { timeout: n }) : s = setTimeout(l, 0);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
d();
|
|
153
|
+
function f() {
|
|
154
|
+
c || (c = !0, u());
|
|
155
|
+
}
|
|
156
|
+
return t() && r(f), {
|
|
157
|
+
ready: i,
|
|
158
|
+
stop: f
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
//#endregion
|
|
162
|
+
export { f as a, d as i, m as n, c as o, p as r, h as t };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
//#region src/composables/dom/useUserInvalidAria.ts
|
|
2
|
+
function e() {
|
|
3
|
+
return typeof CSS < "u" && typeof CSS.supports == "function" && CSS.supports("selector(:user-invalid)");
|
|
4
|
+
}
|
|
5
|
+
function t(t = {}) {
|
|
6
|
+
let n = t.fallbackClasses ?? !e();
|
|
7
|
+
return { bind: (e) => {
|
|
8
|
+
let t = /* @__PURE__ */ new WeakSet(), r = (e) => {
|
|
9
|
+
let t = e;
|
|
10
|
+
if (!t?.checkValidity) return;
|
|
11
|
+
let r = t.checkValidity();
|
|
12
|
+
t.setAttribute("aria-invalid", r ? "false" : "true"), n && (t.classList.toggle("user-invalid-fallback", !r), t.classList.toggle("user-valid-fallback", r));
|
|
13
|
+
}, i = (e) => {
|
|
14
|
+
let n = e.target;
|
|
15
|
+
n?.checkValidity && (t.add(n), r(n));
|
|
16
|
+
}, a = (e) => {
|
|
17
|
+
let n = e.target;
|
|
18
|
+
!n?.checkValidity || !t.has(n) || n.checkValidity() && r(n);
|
|
19
|
+
}, o = () => {
|
|
20
|
+
let n = e.querySelectorAll("input, textarea, select");
|
|
21
|
+
for (let e of n) e.checkValidity && (t.add(e), r(e));
|
|
22
|
+
};
|
|
23
|
+
return e.addEventListener("blur", i, !0), e.addEventListener("input", a, !0), e.addEventListener("submit", o, !0), () => {
|
|
24
|
+
e.removeEventListener("blur", i, !0), e.removeEventListener("input", a, !0), e.removeEventListener("submit", o, !0);
|
|
25
|
+
};
|
|
26
|
+
} };
|
|
27
|
+
}
|
|
28
|
+
//#endregion
|
|
29
|
+
export { t };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/composables/motion/useViewTransition.ts
|
|
2
|
+
function e() {
|
|
3
|
+
return typeof document < "u" && typeof document.startViewTransition == "function";
|
|
4
|
+
}
|
|
5
|
+
function t(e) {
|
|
6
|
+
let t = typeof document > "u" ? void 0 : document;
|
|
7
|
+
return !t || typeof t.startViewTransition != "function" ? (e(), {
|
|
8
|
+
finished: Promise.resolve(),
|
|
9
|
+
transitioned: !1
|
|
10
|
+
}) : {
|
|
11
|
+
finished: t.startViewTransition(() => e()).finished.then(() => void 0, () => void 0),
|
|
12
|
+
transitioned: !0
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { e as n, t };
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Move `node` into `parent` immediately before `ref` (or to the end when `ref`
|
|
3
|
+
* is `null`), preserving the node's live state when `Element.moveBefore` is
|
|
4
|
+
* supported, and falling back to `insertBefore` otherwise.
|
|
5
|
+
*
|
|
6
|
+
* @param parent the destination parent element.
|
|
7
|
+
* @param node the node to move (may currently live elsewhere in the tree).
|
|
8
|
+
* @param ref the child to insert before, or `null` to append.
|
|
9
|
+
*/
|
|
10
|
+
export declare function moveBeforeSafe(parent: Element, node: Node, ref: Node | null): void;
|
|
11
|
+
/**
|
|
12
|
+
* True when `Element.moveBefore` is available — the feature-detected predicate
|
|
13
|
+
* for consumers that want to branch their own re-parent logic.
|
|
14
|
+
*/
|
|
15
|
+
export declare function supportsMoveBefore(): boolean;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mkbabb/glass-ui",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"description": "Glassmorphic design system — Vue 3.5 components, reka-ui primitives, Tailwind CSS v4 tokens",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -130,6 +130,9 @@
|
|
|
130
130
|
"motion": [
|
|
131
131
|
"dist/motion.d.ts"
|
|
132
132
|
],
|
|
133
|
+
"motion-core": [
|
|
134
|
+
"dist/motion-core.d.ts"
|
|
135
|
+
],
|
|
133
136
|
"button": [
|
|
134
137
|
"dist/button.d.ts"
|
|
135
138
|
],
|
|
@@ -198,6 +201,12 @@
|
|
|
198
201
|
],
|
|
199
202
|
"command": [
|
|
200
203
|
"dist/command.d.ts"
|
|
204
|
+
],
|
|
205
|
+
"number-field": [
|
|
206
|
+
"dist/number-field.d.ts"
|
|
207
|
+
],
|
|
208
|
+
"switch": [
|
|
209
|
+
"dist/switch.d.ts"
|
|
201
210
|
]
|
|
202
211
|
}
|
|
203
212
|
},
|
|
@@ -378,6 +387,10 @@
|
|
|
378
387
|
"types": "./dist/motion.d.ts",
|
|
379
388
|
"import": "./dist/motion.js"
|
|
380
389
|
},
|
|
390
|
+
"./motion-core": {
|
|
391
|
+
"types": "./dist/motion-core.d.ts",
|
|
392
|
+
"import": "./dist/motion-core.js"
|
|
393
|
+
},
|
|
381
394
|
"./button": {
|
|
382
395
|
"types": "./dist/button.d.ts",
|
|
383
396
|
"import": "./dist/button.js"
|
|
@@ -469,6 +482,14 @@
|
|
|
469
482
|
"./command": {
|
|
470
483
|
"types": "./dist/command.d.ts",
|
|
471
484
|
"import": "./dist/command.js"
|
|
485
|
+
},
|
|
486
|
+
"./number-field": {
|
|
487
|
+
"types": "./dist/number-field.d.ts",
|
|
488
|
+
"import": "./dist/number-field.js"
|
|
489
|
+
},
|
|
490
|
+
"./switch": {
|
|
491
|
+
"types": "./dist/switch.d.ts",
|
|
492
|
+
"import": "./dist/switch.js"
|
|
472
493
|
}
|
|
473
494
|
},
|
|
474
495
|
"files": [
|
|
@@ -478,9 +499,9 @@
|
|
|
478
499
|
],
|
|
479
500
|
"scripts": {
|
|
480
501
|
"dev": "vite",
|
|
481
|
-
"build": "
|
|
482
|
-
"build:watch": "
|
|
483
|
-
"prepare": "test -f dist/glass-ui.js || npm run build",
|
|
502
|
+
"build": "vite build && npm run emit-types",
|
|
503
|
+
"build:watch": "vite build --watch",
|
|
504
|
+
"prepare": "test -f dist/glass-ui.js -a -f dist/index.d.ts || npm run build",
|
|
484
505
|
"typecheck": "vue-tsc --noEmit",
|
|
485
506
|
"test": "vitest run",
|
|
486
507
|
"verify-export-types": "node scripts/verify-export-types.mjs",
|
|
@@ -511,7 +532,7 @@
|
|
|
511
532
|
},
|
|
512
533
|
"peerDependencies": {
|
|
513
534
|
"@lucide/vue": "^1.16.0",
|
|
514
|
-
"@mkbabb/keyframes.js": "^2.
|
|
535
|
+
"@mkbabb/keyframes.js": "^2.2.0",
|
|
515
536
|
"@vueuse/core": "^14.0",
|
|
516
537
|
"class-variance-authority": "^0.7",
|
|
517
538
|
"clsx": "^2.0",
|
|
@@ -527,7 +548,7 @@
|
|
|
527
548
|
},
|
|
528
549
|
"devDependencies": {
|
|
529
550
|
"@lucide/vue": "^1.16.0",
|
|
530
|
-
"@mkbabb/keyframes.js": "^2.
|
|
551
|
+
"@mkbabb/keyframes.js": "^2.2.0",
|
|
531
552
|
"@mkbabb/value.js": "^0.10.0",
|
|
532
553
|
"@tailwindcss/postcss": "^4.3.0",
|
|
533
554
|
"@tailwindcss/vite": "^4.3.0",
|
|
@@ -296,3 +296,80 @@
|
|
|
296
296
|
animation: none;
|
|
297
297
|
}
|
|
298
298
|
}
|
|
299
|
+
|
|
300
|
+
/* ── §TOP-LAYER ENTRY/EXIT (AQ.W5 §Design 2) ───────────────────────────────
|
|
301
|
+
*
|
|
302
|
+
* A pure-CSS entry/exit grammar for NATIVE top-layer surfaces — `[popover]`
|
|
303
|
+
* elements and native `<dialog>` — keyed off `:popover-open` / `dialog[open]`,
|
|
304
|
+
* plus a glass `::backdrop`. This replaces the per-frame inline-style entry the
|
|
305
|
+
* platform now owns: `@starting-style` + `transition` + `transition-behavior:
|
|
306
|
+
* allow-discrete` + `overlay`.
|
|
307
|
+
*
|
|
308
|
+
* SCOPE: this applies ONLY to elements tagged `.glass-top-layer`. It does NOT
|
|
309
|
+
* touch reka-ui's portaled overlays — those keep their `tw-animate-css`
|
|
310
|
+
* data-state fade (distinct selectors, no cascade fight, mirroring the
|
|
311
|
+
* `[data-scrim-animation]` discipline above). `DialogContent`'s `spring` opt-in
|
|
312
|
+
* (`useSpringMount`) is also untouched — a legitimate iOS-physics variant, not a
|
|
313
|
+
* duplicate of this fade.
|
|
314
|
+
*
|
|
315
|
+
* Baseline: `@starting-style` = Widely Available; `transition-behavior:
|
|
316
|
+
* allow-discrete` + `overlay` = Newly Available → adopt natively, gate the
|
|
317
|
+
* whole grammar on `@supports (overlay: auto)`. A non-supporting engine shows
|
|
318
|
+
* the element instantly (acceptable for a native top-layer surface; glass-ui
|
|
319
|
+
* ships no JS top-layer coordinator — that is reka-ui Dialog's remit).
|
|
320
|
+
*
|
|
321
|
+
* Uses `scale:` (the longhand) not `transform: scale()` so it composes with the
|
|
322
|
+
* identity-base transform work and does not mint a stacking context. Every
|
|
323
|
+
* visual axis reads a `--top-layer-*` token (tokens.css §20).
|
|
324
|
+
*/
|
|
325
|
+
@supports (overlay: auto) {
|
|
326
|
+
/* Base (closed / exit) + the transition list. `allow-discrete` MUST come
|
|
327
|
+
* after the property longhands, never negated. */
|
|
328
|
+
.glass-top-layer[popover],
|
|
329
|
+
dialog.glass-top-layer {
|
|
330
|
+
opacity: 0;
|
|
331
|
+
scale: var(--top-layer-enter-scale, 0.96);
|
|
332
|
+
transition-property: opacity, scale, display, overlay;
|
|
333
|
+
transition-duration: var(--duration-normal);
|
|
334
|
+
transition-timing-function: var(--ease-apple-spring);
|
|
335
|
+
transition-behavior: allow-discrete;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
/* Open state + `@starting-style` entry (starting-style AFTER the open
|
|
339
|
+
* selector so the entry interpolates from the closed values). */
|
|
340
|
+
.glass-top-layer[popover]:popover-open,
|
|
341
|
+
dialog.glass-top-layer[open] {
|
|
342
|
+
opacity: 1;
|
|
343
|
+
scale: 1;
|
|
344
|
+
@starting-style {
|
|
345
|
+
opacity: 0;
|
|
346
|
+
scale: var(--top-layer-enter-scale, 0.96);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/* Glass backdrop — blur + dim, animated discretely. `::backdrop` only
|
|
351
|
+
* exists for `showModal()` dialogs, NOT `[popover]` (popovers are
|
|
352
|
+
* non-modal — correct, no scrim). */
|
|
353
|
+
dialog.glass-top-layer::backdrop {
|
|
354
|
+
background-color: hsl(var(--background) / 0);
|
|
355
|
+
backdrop-filter: blur(var(--top-layer-backdrop-blur, 8px));
|
|
356
|
+
transition: display var(--duration-normal) allow-discrete,
|
|
357
|
+
overlay var(--duration-normal) allow-discrete,
|
|
358
|
+
background-color var(--duration-normal) var(--ease-standard);
|
|
359
|
+
}
|
|
360
|
+
dialog.glass-top-layer[open]::backdrop {
|
|
361
|
+
background-color: hsl(var(--background) / var(--top-layer-backdrop-dim, 0.5));
|
|
362
|
+
@starting-style {
|
|
363
|
+
background-color: hsl(var(--background) / 0);
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
/* Reduced-motion carve — flatten the scale to a fade, shorten the duration. */
|
|
369
|
+
@media (prefers-reduced-motion: reduce) {
|
|
370
|
+
.glass-top-layer[popover],
|
|
371
|
+
dialog.glass-top-layer {
|
|
372
|
+
scale: none;
|
|
373
|
+
transition-duration: var(--duration-fast);
|
|
374
|
+
}
|
|
375
|
+
}
|
package/src/styles/cards.css
CHANGED
|
@@ -33,12 +33,16 @@
|
|
|
33
33
|
@utility cartoon-surface {
|
|
34
34
|
border-width: 2px;
|
|
35
35
|
box-shadow: var(--shadow-cartoon-md);
|
|
36
|
+
/* Individual-transform identity base (AQ.W3 §W3.2) — state-driven 2D lift on
|
|
37
|
+
a card surface that often hosts portaled content; `translate: 0` at rest
|
|
38
|
+
mints the stacking context once. Longhand maps `translate(x, y)` 1:1. */
|
|
39
|
+
translate: 0;
|
|
36
40
|
transition:
|
|
37
|
-
|
|
41
|
+
translate var(--duration-normal) var(--ease-apple-spring),
|
|
38
42
|
box-shadow var(--duration-normal) var(--ease-apple);
|
|
39
43
|
|
|
40
44
|
&:hover:not(:disabled) {
|
|
41
|
-
|
|
45
|
+
translate: var(--lift-sm) var(--lift-sm);
|
|
42
46
|
box-shadow: var(--shadow-cartoon-lg);
|
|
43
47
|
}
|
|
44
48
|
}
|