@mkbabb/glass-ui 3.8.0 → 3.10.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/README.md +1 -6
- package/dist/{CardAction-q2qHCJFG.js → CardAction-DuArVky-.js} +4 -4
- package/dist/{CommandShortcut-SzWRhROC.js → CommandShortcut-CefCj5mt.js} +7 -7
- package/dist/{ContextMenuSubContent-Do977Cbf.js → ContextMenuSubContent-Bhg4f5jX.js} +3 -3
- package/dist/{DataTable-CvlWXz65.js → DataTable-CUHMukiQ.js} +1 -1
- package/dist/{DialogContent-DjZWT3lK.js → DialogContent-BRkT1cjP.js} +1 -1
- package/dist/{MetricBadge-lTc002u2.js → MetricBadge-BZVWIxNy.js} +6 -4
- package/dist/{Notification-BxK8LZMw.js → Notification-DLMhblXR.js} +2 -2
- package/dist/{NumberFieldContent-CLNVR1iY.js → NumberFieldContent-BbLOh8RU.js} +2 -2
- package/dist/{SelectScrollDownButton-C7TRe-ep.js → SelectScrollDownButton-T32cVFeM.js} +3 -3
- package/dist/{SelectSeparator-L8pPEn4L.js → SelectSeparator-C4Ql0gzV.js} +1 -1
- package/dist/{Switch-LDKLmmgx.js → Switch-Ch-k3Rv-.js} +1 -1
- package/dist/{TabsList-qyHZ2lKY.js → TabsList-B8CVOQPC.js} +2 -2
- package/dist/{Toaster-CabYEEF_.js → Toaster-1rYWrmAm.js} +1 -1
- package/dist/{ToggleGroupItem-CkXUcBlt.js → ToggleGroupItem-Cev4pOVK.js} +4 -4
- 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 +236 -545
- package/dist/{badge-DHQrc_GQ.js → badge-CaoFJzRb.js} +5 -5
- package/dist/badge.js +1 -1
- package/dist/{button-CAywcrhO.js → button-DN39cGqL.js} +13 -12
- package/dist/button.js +1 -1
- package/dist/card.js +1 -1
- package/dist/carousel.js +1 -1
- package/dist/color.js +1 -1
- package/dist/command.js +1 -1
- package/dist/{compile-BBTRjvQS.js → compile-BOXjLUxu.js} +24 -24
- package/dist/components/custom/aurora/composables/atoms.d.ts +21 -4
- package/dist/components/custom/aurora/composables/runtime.d.ts +0 -9
- package/dist/components/custom/aurora/composables/uniformBridge.d.ts +0 -11
- package/dist/components/custom/aurora/constants/renderMode.d.ts +0 -32
- package/dist/components/custom/aurora/constants/shaders/brush.glsl.d.ts +1 -1
- package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +2 -2
- package/dist/components/custom/aurora/constants/shaders/tonemap.glsl.d.ts +1 -1
- package/dist/components/custom/aurora/index.d.ts +1 -1
- package/dist/components/custom/configurator/ConfiguratorLayer.vue.d.ts +1 -1
- package/dist/components/custom/constellation/Constellation.vue.d.ts +73 -1
- package/dist/components/custom/constellation/constellationField.d.ts +255 -3
- package/dist/components/custom/constellation/index.d.ts +2 -2
- package/dist/components/custom/dock/DockSeparator.vue.d.ts +3 -0
- package/dist/components/custom/dock/DockTabButton.vue.d.ts +4 -3
- package/dist/components/custom/dock/GlassDock.vue.d.ts +45 -63
- package/dist/components/custom/dock/composables/dockContext.d.ts +7 -0
- package/dist/components/custom/dock/index.d.ts +2 -1
- package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +29 -0
- package/dist/components/custom/fourier-field/FourierField.vue.d.ts +6 -0
- package/dist/components/custom/fourier-field/index.d.ts +25 -1
- package/dist/components/custom/fourier-field/math.d.ts +3 -8
- package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +8 -10
- package/dist/components/custom/goo-blob/composables/useBlobMood.d.ts +19 -5
- package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +6 -14
- package/dist/components/custom/goo-blob/index.d.ts +1 -1
- package/dist/components/custom/goo-blob/types.d.ts +59 -25
- package/dist/components/custom/handmark/HandMark.vue.d.ts +29 -0
- package/dist/components/custom/handmark/brush.d.ts +219 -0
- package/dist/components/custom/handmark/freehand.d.ts +69 -0
- package/dist/components/custom/handmark/geometry.d.ts +32 -0
- package/dist/components/custom/handmark/index.d.ts +21 -0
- package/dist/components/custom/handmark/ink.d.ts +11 -0
- package/dist/components/custom/handmark/texture.d.ts +39 -0
- package/dist/components/custom/handmark/types.d.ts +53 -0
- package/dist/components/custom/handmark/useHandMark.d.ts +66 -0
- package/dist/components/custom/metric-badge/MetricBadge.vue.d.ts +8 -0
- package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +92 -0
- package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +49 -0
- package/dist/components/custom/tabs/index.d.ts +2 -5
- package/dist/components/ui/button/index.d.ts +1 -1
- package/dist/components/ui/card/Card.vue.d.ts +5 -3
- package/dist/components/ui/carousel/CarouselNext.vue.d.ts +1 -1
- package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +1 -1
- package/dist/components/ui/carousel/GlassCarouselPager.vue.d.ts +3 -4
- package/dist/components/ui/slider/index.d.ts +22 -11
- package/dist/components/ui/tabs/TabsList.vue.d.ts +1 -1
- package/dist/composables/color/index.d.ts +12 -7
- package/dist/composables/context/createContext.d.ts +1 -1
- package/dist/composables/glass/webgl/shaders/procedural-color.glsl.d.ts +1 -6
- package/dist/composables/motion/core/index.d.ts +1 -0
- package/dist/composables/motion/useRouteTransition.d.ts +42 -0
- package/dist/configurator.js +1 -1
- package/dist/confirm-dialog.js +1 -1
- package/dist/constellation.js +212 -72
- package/dist/context-menu.js +1 -1
- package/dist/controls.js +1 -1
- package/dist/dark.js +1 -1
- package/dist/data-table.js +1 -1
- package/dist/deck-progress.js +1 -1
- package/dist/dialog.js +1 -1
- package/dist/dock.js +257 -243
- package/dist/{dropdown-menu-B_4bWyyG.js → dropdown-menu-D77jX6Df.js} +3 -3
- package/dist/dropdown-menu.js +1 -1
- package/dist/expandable-container.js +61 -38
- package/dist/forms.js +5 -5
- package/dist/fourier-field.js +89 -97
- package/dist/fourier-math.d.ts +1 -0
- package/dist/fourier-math.js +2 -0
- package/dist/glass-panel.js +1 -1
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +107 -109
- package/dist/goo-blob.js +316 -297
- package/dist/handmark.d.ts +1 -0
- package/dist/handmark.js +609 -0
- package/dist/hover-popover.js +1 -1
- package/dist/icon-tooltip.js +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/keyboard.js +1 -1
- package/dist/labeled-field.js +5 -5
- package/dist/math-DTpRVC0e.js +27 -0
- package/dist/{menuItemVariants-DKM85SNE.js → menuItemVariants-CCoBNkU5.js} +1 -1
- package/dist/metric-badge.js +1 -1
- package/dist/metric-stack.js +1 -1
- package/dist/motion-core.js +70 -69
- package/dist/motion.js +2 -2
- package/dist/notification.js +1 -1
- package/dist/number-field.js +1 -1
- package/dist/pulse.js +1 -1
- package/dist/reactive.js +1 -1
- package/dist/scrolling-text.js +1 -1
- package/dist/search.js +4 -4
- package/dist/select.js +2 -2
- package/dist/{slider-D9puf-Ko.js → slider-CyzcxBoh.js} +6 -6
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +1 -1
- package/dist/status-dot.js +17 -16
- package/dist/styles/animations.css +80 -20
- package/dist/styles/cards.css +2 -2
- package/dist/styles/components.css +1 -1
- package/dist/styles/dock/density.css +230 -0
- package/dist/styles/dock/layer-group.css +275 -0
- package/dist/styles/dock/layers.css +355 -0
- package/dist/styles/dock/morph.css +244 -0
- package/dist/styles/dock/overflow.css +201 -0
- package/dist/styles/dock/shell.css +457 -0
- package/dist/styles/dock-controls.css +205 -55
- package/dist/styles/dock.css +42 -1349
- package/dist/styles/drawer.css +12 -4
- package/dist/styles/glass.css +535 -78
- package/dist/styles/index.css +12 -11
- package/dist/styles/paper.css +68 -2
- package/dist/styles/theme.css +58 -0
- package/dist/styles/tokens.css +601 -69
- package/dist/styles/transitions.css +20 -2
- package/dist/styles/utilities.css +218 -78
- package/dist/styles/view-transition.css +51 -0
- package/dist/switch.js +1 -1
- package/dist/tabs.js +182 -151
- package/dist/timeline.js +1 -1
- package/dist/toast.js +1 -1
- package/dist/toggle-group.js +1 -1
- package/dist/{useAnimatedNumber-C_3wZLx4.js → useAnimatedNumber-Bcpy5Etf.js} +1 -1
- package/dist/{useConfiguratorState-CMff4GzH.js → useConfiguratorState-DxAqksK6.js} +21 -10
- package/dist/{useGlassRenderer-5I0YkI4t.js → useGlassRenderer-D7YGOYiM.js} +1 -1
- package/dist/useViewTransition-DaN5Zrox.js +21 -0
- package/dist/vReveal-zUIQk-rJ.js +53 -0
- package/dist/watercolor-dot.js +1 -1
- package/package.json +80 -39
- package/src/styles/animations.css +80 -20
- package/src/styles/cards.css +2 -2
- package/src/styles/dock/density.css +230 -0
- package/src/styles/dock/layer-group.css +275 -0
- package/src/styles/dock/layers.css +355 -0
- package/src/styles/dock/morph.css +244 -0
- package/src/styles/dock/overflow.css +201 -0
- package/src/styles/dock/shell.css +457 -0
- package/src/styles/dock-controls.css +205 -55
- package/src/styles/dock.css +42 -1349
- package/src/styles/drawer.css +12 -4
- package/src/styles/glass.css +535 -78
- package/src/styles/index.css +12 -11
- package/src/styles/paper.css +68 -2
- package/src/styles/theme.css +58 -0
- package/src/styles/tokens.css +601 -69
- package/src/styles/transitions.css +20 -2
- package/src/styles/utilities.css +218 -78
- package/src/styles/view-transition.css +51 -0
- package/dist/DiscoGlyph-CG0F410s.js +0 -132
- package/dist/GlyphFace-DRjDkB0s.js +0 -51
- package/dist/UnderlineTabs-Uxn-R3MT.js +0 -39
- package/dist/components/custom/aurora/composables/gpuRuntime.d.ts +0 -16
- package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +0 -7
- package/dist/components/custom/aurora/constants/shaders/painterly.wgsl.d.ts +0 -7
- package/dist/components/custom/aurora/constants/shaders/wake.wgsl.d.ts +0 -4
- package/dist/components/custom/disco-glyph/DiscoGlyph.vue.d.ts +0 -58
- package/dist/components/custom/disco-glyph/index.d.ts +0 -1
- package/dist/components/custom/glass-carousel/GlassCarousel.vue.d.ts +0 -36
- package/dist/components/custom/glass-carousel/GlassCarouselItem.vue.d.ts +0 -28
- package/dist/components/custom/glass-carousel/index.d.ts +0 -4
- package/dist/components/custom/glass-carousel/useGlassCarousel.d.ts +0 -30
- package/dist/components/custom/glyph-face/GlyphFace.vue.d.ts +0 -64
- package/dist/components/custom/glyph-face/index.d.ts +0 -2
- package/dist/components/custom/glyph-face/keys.d.ts +0 -9
- package/dist/components/custom/responsive-tabs/ResponsiveTabs.vue.d.ts +0 -73
- package/dist/components/custom/responsive-tabs/index.d.ts +0 -2
- package/dist/components/custom/tabs/BouncyTabs.vue.d.ts +0 -27
- package/dist/components/custom/tabs/BouncyToggle.vue.d.ts +0 -60
- package/dist/components/custom/tabs/UnderlineTabs.vue.d.ts +0 -20
- package/dist/components/custom/tabs/composables/useBouncySlider.d.ts +0 -39
- package/dist/composables/glass/createGPUCanvas.d.ts +0 -40
- package/dist/disco-glyph.d.ts +0 -1
- package/dist/disco-glyph.js +0 -2
- package/dist/glass-carousel.d.ts +0 -1
- package/dist/glass-carousel.js +0 -219
- package/dist/glyph-face.d.ts +0 -1
- package/dist/glyph-face.js +0 -3
- package/dist/keys-BsYjEFOW.js +0 -9
- package/dist/responsive-tabs.d.ts +0 -1
- package/dist/responsive-tabs.js +0 -95
- package/dist/styles/disco-glyph.css +0 -26
- package/dist/styles/glyph-face.css +0 -92
- package/dist/vReveal-CqaCz_mC.js +0 -44
- package/src/styles/disco-glyph.css +0 -26
- package/src/styles/glyph-face.css +0 -92
- /package/dist/{DeckProgress-AVgbIULY.js → DeckProgress-Dmk4_AKN.js} +0 -0
- /package/dist/{HoverPopover-D56O6Ylp.js → HoverPopover-2LOIW34a.js} +0 -0
- /package/dist/{IconTooltip-D2T5nYOM.js → IconTooltip-Cus0fvK0.js} +0 -0
- /package/dist/{Input-DVG_J0ne.js → Input-xuDwALQR.js} +0 -0
- /package/dist/{ScrollingText-CVyqxvfv.js → ScrollingText-BPP84wKo.js} +0 -0
- /package/dist/{color-DMLTunJK.js → color-C5ls_QF7.js} +0 -0
- /package/dist/{constants-BPOqYJAm.js → constants-yKeKnE84.js} +0 -0
- /package/dist/{presets-D1XPuTj-.js → presets-Dkdv55Gt.js} +0 -0
- /package/dist/{prng-COGhh02-.js → prng-D27-B3tK.js} +0 -0
- /package/dist/{useGlobalDark-D3EBWzXK.js → useGlobalDark-d6waty-X.js} +0 -0
- /package/dist/{useIntersectionPause-Bj4sPkMh.js → useIntersectionPause-Cck5Uxk8.js} +0 -0
- /package/dist/{useInterval-CcLfq2WU.js → useInterval-Dsmqwi03.js} +0 -0
- /package/dist/{useKeyboardShortcuts-BXWXOZ-9.js → useKeyboardShortcuts-CyIYrndH.js} +0 -0
- /package/dist/{useScrollProgress-C9ysDic5.js → useScrollProgress-CffFGLa5.js} +0 -0
- /package/dist/{useSortable-MGAbCGVJ.js → useSortable-C8ReQ50P.js} +0 -0
- /package/dist/{useTextHighlight-9nMW23Qb.js → useTextHighlight-CWEi25hf.js} +0 -0
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/** The per-frame hooks a consumer's WebGPU `setup` returns (mirrors WebGLCanvasFrame). */
|
|
2
|
-
export interface GPUCanvasFrame {
|
|
3
|
-
frame: (timeSec: number) => void;
|
|
4
|
-
shouldContinue: () => boolean;
|
|
5
|
-
resize: () => void;
|
|
6
|
-
time?: (elapsedSec: number) => number;
|
|
7
|
-
teardown?: () => void;
|
|
8
|
-
}
|
|
9
|
-
export interface GPUCanvasSetupArgs {
|
|
10
|
-
device: GPUDevice;
|
|
11
|
-
context: GPUCanvasContext;
|
|
12
|
-
/** The swapchain format (`navigator.gpu.getPreferredCanvasFormat()`). */
|
|
13
|
-
format: GPUTextureFormat;
|
|
14
|
-
}
|
|
15
|
-
export interface GPUCanvasOptions {
|
|
16
|
-
/** The pre-acquired `GPUDevice` (from `resolveRenderModeAsync`'s adapter→device). */
|
|
17
|
-
device: GPUDevice;
|
|
18
|
-
/** Alpha mode for the swapchain (premultiplied to match the WebGL2 premultiply). */
|
|
19
|
-
alphaMode?: GPUCanvasAlphaMode;
|
|
20
|
-
mode?: "live" | "capture";
|
|
21
|
-
respectReducedMotion?: boolean;
|
|
22
|
-
/** Build the pipeline + bind group on the configured context. Returns frame hooks. */
|
|
23
|
-
setup: (args: GPUCanvasSetupArgs) => GPUCanvasFrame;
|
|
24
|
-
}
|
|
25
|
-
export interface GPUCanvasHandle {
|
|
26
|
-
arm: () => void;
|
|
27
|
-
suspend: (reason?: "tab-hidden" | "off-screen" | "manual") => void;
|
|
28
|
-
resume: (reason?: "tab-hidden" | "off-screen" | "manual") => void;
|
|
29
|
-
wake: () => void;
|
|
30
|
-
renderAt: (timeSec: number) => void;
|
|
31
|
-
dispose: () => void;
|
|
32
|
-
readonly device: GPUDevice | null;
|
|
33
|
-
readonly reducedMotion: boolean;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Build a WebGPU canvas over the shared lifecycle core. The `GPUDevice` is acquired
|
|
37
|
-
* by `resolveRenderModeAsync` (the probe) and passed in — `createGPUCanvas` configures
|
|
38
|
-
* the canvas context + threads the consumer `setup` through the agnostic schedule.
|
|
39
|
-
*/
|
|
40
|
-
export declare function createGPUCanvas(canvas: HTMLCanvasElement, options: GPUCanvasOptions): GPUCanvasHandle;
|
package/dist/disco-glyph.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./components/custom/disco-glyph";
|
package/dist/disco-glyph.js
DELETED
package/dist/glass-carousel.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./components/custom/glass-carousel";
|
package/dist/glass-carousel.js
DELETED
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
import { t as e } from "./cn-DJXf4yaB.js";
|
|
2
|
-
import { t } from "./_plugin-vue_export-helper-ok8pgSl5.js";
|
|
3
|
-
import { computed as n, createElementBlock as r, createElementVNode as i, createVNode as a, defineComponent as o, nextTick as s, normalizeClass as c, normalizeStyle as l, onMounted as u, onUnmounted as d, openBlock as f, ref as p, renderSlot as m, unref as h, useTemplateRef as g, watch as _, withCtx as v } from "vue";
|
|
4
|
-
import { ScrollAreaRoot as y, ScrollAreaViewport as b } from "reka-ui";
|
|
5
|
-
//#region src/components/custom/glass-carousel/useGlassCarousel.ts
|
|
6
|
-
function x() {
|
|
7
|
-
return typeof CSS > "u" || typeof CSS.supports != "function" ? !1 : CSS.supports("container-type", "scroll-state") && !CSS.supports("container-type", "gl-not-a-real-container-type");
|
|
8
|
-
}
|
|
9
|
-
function S(e) {
|
|
10
|
-
let { orientation: t, expanded: n, rootEl: r, viewportEl: i, fadeMs: a = 60 } = e, o = x();
|
|
11
|
-
function c() {
|
|
12
|
-
return o && t.value === "vertical";
|
|
13
|
-
}
|
|
14
|
-
let l = p(!1), f = p(!1);
|
|
15
|
-
function m() {
|
|
16
|
-
let e = i.value;
|
|
17
|
-
if (!e) {
|
|
18
|
-
l.value = !1, f.value = !1;
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
t.value === "vertical" ? (l.value = e.scrollTop > 1, f.value = e.scrollTop < e.scrollHeight - e.clientHeight - 1) : (l.value = e.scrollLeft > 1, f.value = e.scrollLeft < e.scrollWidth - e.clientWidth - 1);
|
|
22
|
-
}
|
|
23
|
-
let h = null, g = null;
|
|
24
|
-
function v() {
|
|
25
|
-
if (y(), c()) return;
|
|
26
|
-
let e = i.value;
|
|
27
|
-
if (!e) {
|
|
28
|
-
m();
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
h = m, g = e, e.addEventListener("scroll", h, { passive: !0 }), m();
|
|
32
|
-
}
|
|
33
|
-
function y() {
|
|
34
|
-
h && g && g.removeEventListener("scroll", h), h = null, g = null;
|
|
35
|
-
}
|
|
36
|
-
_([i, t], v), u(v), d(y);
|
|
37
|
-
function b(e) {
|
|
38
|
-
let t = i.value;
|
|
39
|
-
if (!t) return;
|
|
40
|
-
let n = t.children[e];
|
|
41
|
-
n && n.scrollIntoView({
|
|
42
|
-
behavior: "smooth",
|
|
43
|
-
block: "nearest",
|
|
44
|
-
inline: "nearest"
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
let S = p(n.value), C = p(!1), w = p(null), T = p(!1), E = null, D = null, O = 0;
|
|
48
|
-
function k() {
|
|
49
|
-
E &&= (clearTimeout(E), null), D &&= (clearTimeout(D), null);
|
|
50
|
-
}
|
|
51
|
-
_(n, () => {
|
|
52
|
-
let e = r.value;
|
|
53
|
-
if (!e) {
|
|
54
|
-
S.value = n.value;
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
k();
|
|
58
|
-
let i = ++O, o = t.value === "vertical", c = e.getBoundingClientRect(), l = o ? c.height : c.width;
|
|
59
|
-
T.value = !0, w.value = `${l}px`, C.value = !0, E = setTimeout(() => {
|
|
60
|
-
E = null, i === O && (S.value = n.value, s(() => {
|
|
61
|
-
i === O && (w.value = null, s(() => {
|
|
62
|
-
if (i !== O) return;
|
|
63
|
-
let t = e.getBoundingClientRect(), n = o ? t.height : t.width;
|
|
64
|
-
if (Math.abs(l - n) < 1) {
|
|
65
|
-
T.value = !1, w.value = null, C.value = !1;
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
w.value = `${l}px`, s(() => {
|
|
69
|
-
i === O && (e.offsetWidth, T.value = !1, requestAnimationFrame(() => {
|
|
70
|
-
if (i !== O) return;
|
|
71
|
-
w.value = `${n}px`;
|
|
72
|
-
let t = parseFloat(getComputedStyle(e).transitionDuration) * 1e3 || 300;
|
|
73
|
-
D = setTimeout(() => {
|
|
74
|
-
i === O && (C.value = !1);
|
|
75
|
-
}, t * .55);
|
|
76
|
-
}));
|
|
77
|
-
});
|
|
78
|
-
}));
|
|
79
|
-
}));
|
|
80
|
-
}, a);
|
|
81
|
-
});
|
|
82
|
-
function A(e) {
|
|
83
|
-
e.target === r.value && (e.propertyName === "height" || e.propertyName === "width") && (w.value = null, C.value = !1);
|
|
84
|
-
}
|
|
85
|
-
d(k);
|
|
86
|
-
function j() {
|
|
87
|
-
return c() ? "" : l.value && f.value ? t.value === "vertical" ? "scroll-fade-y" : "scroll-fade-mask" : l.value ? t.value === "vertical" ? "scroll-fade-top" : "scroll-fade-mask" : f.value ? t.value === "vertical" ? "scroll-fade-bottom" : "scroll-fade-mask" : "";
|
|
88
|
-
}
|
|
89
|
-
return {
|
|
90
|
-
canScrollStart: l,
|
|
91
|
-
canScrollEnd: f,
|
|
92
|
-
getOverflowFadeClass: j,
|
|
93
|
-
updateOverflow: m,
|
|
94
|
-
scrollToItem: b,
|
|
95
|
-
visualExpanded: S,
|
|
96
|
-
isTransitioning: C,
|
|
97
|
-
transitionSize: w,
|
|
98
|
-
suppressTransition: T,
|
|
99
|
-
onTransitionEnd: A
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
//#endregion
|
|
103
|
-
//#region src/components/custom/glass-carousel/GlassCarousel.vue
|
|
104
|
-
var C = /* @__PURE__ */ t(/* @__PURE__ */ o({
|
|
105
|
-
__name: "GlassCarousel",
|
|
106
|
-
props: {
|
|
107
|
-
orientation: { default: "vertical" },
|
|
108
|
-
expanded: {
|
|
109
|
-
type: Boolean,
|
|
110
|
-
default: !0
|
|
111
|
-
},
|
|
112
|
-
snap: {
|
|
113
|
-
type: [Boolean, String],
|
|
114
|
-
default: !1
|
|
115
|
-
},
|
|
116
|
-
fadeOverflow: {
|
|
117
|
-
type: Boolean,
|
|
118
|
-
default: !0
|
|
119
|
-
},
|
|
120
|
-
class: { type: [
|
|
121
|
-
Boolean,
|
|
122
|
-
null,
|
|
123
|
-
String,
|
|
124
|
-
Object,
|
|
125
|
-
Array
|
|
126
|
-
] }
|
|
127
|
-
},
|
|
128
|
-
setup(t, { expose: o }) {
|
|
129
|
-
let s = t, u = g("rootEl"), d = p(null), { canScrollStart: x, canScrollEnd: C, getOverflowFadeClass: w, updateOverflow: T, scrollToItem: E, visualExpanded: D, isTransitioning: O, transitionSize: k, suppressTransition: A, onTransitionEnd: j } = S({
|
|
130
|
-
orientation: n(() => s.orientation),
|
|
131
|
-
expanded: n(() => s.expanded),
|
|
132
|
-
rootEl: u,
|
|
133
|
-
viewportEl: d
|
|
134
|
-
});
|
|
135
|
-
_(g("scrollViewport"), (e) => {
|
|
136
|
-
d.value = e?.$el ?? null, T();
|
|
137
|
-
}, { immediate: !0 });
|
|
138
|
-
let M = n(() => {
|
|
139
|
-
if (!s.snap) return "";
|
|
140
|
-
let e = s.snap === !0 ? "proximity" : s.snap;
|
|
141
|
-
return `[scroll-snap-type:${s.orientation === "vertical" ? "y" : "x"}_${e}]`;
|
|
142
|
-
}), N = n(() => {
|
|
143
|
-
if (k.value != null) return s.orientation === "vertical" ? { height: k.value } : { width: k.value };
|
|
144
|
-
});
|
|
145
|
-
return o({
|
|
146
|
-
canScrollStart: x,
|
|
147
|
-
canScrollEnd: C,
|
|
148
|
-
scrollToItem: E,
|
|
149
|
-
isTransitioning: O,
|
|
150
|
-
visualExpanded: D
|
|
151
|
-
}), (n, o) => (f(), r("div", {
|
|
152
|
-
ref_key: "rootEl",
|
|
153
|
-
ref: u,
|
|
154
|
-
"data-slot": "glass-carousel",
|
|
155
|
-
class: c(h(e)("glass-carousel glass-wash", {
|
|
156
|
-
"glass-carousel--vertical": t.orientation === "vertical",
|
|
157
|
-
"glass-carousel--horizontal": t.orientation === "horizontal",
|
|
158
|
-
"glass-carousel--expanded": h(D),
|
|
159
|
-
"glass-carousel--collapsed": !h(D),
|
|
160
|
-
"glass-carousel--animating": h(O),
|
|
161
|
-
"glass-carousel--no-transition": h(A)
|
|
162
|
-
}, s.class)),
|
|
163
|
-
style: l(N.value),
|
|
164
|
-
onTransitionend: o[0] ||= (...e) => h(j) && h(j)(...e)
|
|
165
|
-
}, [a(h(y), { class: "glass-carousel__scroll-root" }, {
|
|
166
|
-
default: v(() => [a(h(b), {
|
|
167
|
-
ref: "scrollViewport",
|
|
168
|
-
class: c([
|
|
169
|
-
"glass-carousel__viewport",
|
|
170
|
-
M.value,
|
|
171
|
-
t.fadeOverflow ? h(w)() : ""
|
|
172
|
-
])
|
|
173
|
-
}, {
|
|
174
|
-
default: v(() => [i("div", { class: c(["glass-carousel__content", {
|
|
175
|
-
"glass-carousel__content--vertical": t.orientation === "vertical",
|
|
176
|
-
"glass-carousel__content--horizontal": t.orientation === "horizontal"
|
|
177
|
-
}]) }, [m(n.$slots, "default", {}, void 0, !0)], 2)]),
|
|
178
|
-
_: 3
|
|
179
|
-
}, 8, ["class"])]),
|
|
180
|
-
_: 3
|
|
181
|
-
})], 38));
|
|
182
|
-
}
|
|
183
|
-
}), [["__scopeId", "data-v-f114b9d9"]]), w = ["data-state", "aria-pressed"], T = /* @__PURE__ */ t(/* @__PURE__ */ o({
|
|
184
|
-
__name: "GlassCarouselItem",
|
|
185
|
-
props: {
|
|
186
|
-
active: {
|
|
187
|
-
type: Boolean,
|
|
188
|
-
default: !1
|
|
189
|
-
},
|
|
190
|
-
expandable: {
|
|
191
|
-
type: Boolean,
|
|
192
|
-
default: !0
|
|
193
|
-
},
|
|
194
|
-
class: { type: [
|
|
195
|
-
Boolean,
|
|
196
|
-
null,
|
|
197
|
-
String,
|
|
198
|
-
Object,
|
|
199
|
-
Array
|
|
200
|
-
] }
|
|
201
|
-
},
|
|
202
|
-
emits: ["click"],
|
|
203
|
-
setup(t, { emit: n }) {
|
|
204
|
-
let i = t, a = n;
|
|
205
|
-
return (n, o) => (f(), r("button", {
|
|
206
|
-
type: "button",
|
|
207
|
-
"data-slot": "glass-carousel-item",
|
|
208
|
-
"data-state": t.active ? "active" : "inactive",
|
|
209
|
-
"aria-pressed": t.active,
|
|
210
|
-
class: c(h(e)("glass-carousel-item focus-ring tap-squish", {
|
|
211
|
-
"glass-carousel-item--active": t.active,
|
|
212
|
-
"glass-carousel-item--expandable": t.expandable
|
|
213
|
-
}, i.class)),
|
|
214
|
-
onClick: o[0] ||= (e) => a("click", e)
|
|
215
|
-
}, [m(n.$slots, "default", {}, void 0, !0)], 10, w));
|
|
216
|
-
}
|
|
217
|
-
}), [["__scopeId", "data-v-a2ca29d1"]]);
|
|
218
|
-
//#endregion
|
|
219
|
-
export { C as GlassCarousel, T as GlassCarouselItem, S as useGlassCarousel };
|
package/dist/glyph-face.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./components/custom/glyph-face";
|
package/dist/glyph-face.js
DELETED
package/dist/keys-BsYjEFOW.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { t as e } from "./createContext-B44Sah_H.js";
|
|
2
|
-
//#region src/components/custom/glyph-face/keys.ts
|
|
3
|
-
var t = e("glass-ui:glyph-face-silhouette"), n = t.KEY;
|
|
4
|
-
function r(e) {
|
|
5
|
-
t.provide(e);
|
|
6
|
-
}
|
|
7
|
-
var i = t.use;
|
|
8
|
-
//#endregion
|
|
9
|
-
export { r as n, i as r, n as t };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./components/custom/responsive-tabs";
|
package/dist/responsive-tabs.js
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { t as e } from "./cn-DJXf4yaB.js";
|
|
2
|
-
import { a as t, i as n, o as r, r as i, s as a } from "./SelectScrollDownButton-C7TRe-ep.js";
|
|
3
|
-
import { t as o } from "./UnderlineTabs-Uxn-R3MT.js";
|
|
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
|
-
//#endregion
|
|
6
|
-
//#region src/components/custom/responsive-tabs/ResponsiveTabs.vue
|
|
7
|
-
var T = /* @__PURE__ */ p({
|
|
8
|
-
__name: "ResponsiveTabs",
|
|
9
|
-
props: /* @__PURE__ */ m({
|
|
10
|
-
options: {},
|
|
11
|
-
desktopOptions: { default: null },
|
|
12
|
-
breakpoint: { default: "640px" },
|
|
13
|
-
class: { type: [
|
|
14
|
-
Boolean,
|
|
15
|
-
null,
|
|
16
|
-
String,
|
|
17
|
-
Object,
|
|
18
|
-
Array
|
|
19
|
-
] },
|
|
20
|
-
desktopClass: { type: [
|
|
21
|
-
Boolean,
|
|
22
|
-
null,
|
|
23
|
-
String,
|
|
24
|
-
Object,
|
|
25
|
-
Array
|
|
26
|
-
] },
|
|
27
|
-
mobileTriggerClass: { type: [
|
|
28
|
-
Boolean,
|
|
29
|
-
null,
|
|
30
|
-
String,
|
|
31
|
-
Object,
|
|
32
|
-
Array
|
|
33
|
-
] },
|
|
34
|
-
ariaLabel: {}
|
|
35
|
-
}, {
|
|
36
|
-
modelValue: { required: !0 },
|
|
37
|
-
modelModifiers: {}
|
|
38
|
-
}),
|
|
39
|
-
emits: ["update:modelValue"],
|
|
40
|
-
setup(p) {
|
|
41
|
-
let m = p, T = C(p, "modelValue"), E = y(!0), D = null;
|
|
42
|
-
function O(e) {
|
|
43
|
-
E.value = e.matches;
|
|
44
|
-
}
|
|
45
|
-
_(() => {
|
|
46
|
-
typeof window > "u" || !window.matchMedia || (D = window.matchMedia(`(min-width: ${m.breakpoint})`), E.value = D.matches, D.addEventListener("change", O));
|
|
47
|
-
}), g(() => {
|
|
48
|
-
D?.removeEventListener("change", O), D = null;
|
|
49
|
-
});
|
|
50
|
-
let k = c(() => m.desktopOptions ?? m.options), A = c(() => {
|
|
51
|
-
let e = k.value;
|
|
52
|
-
return e.some((e) => e.value === T.value) ? T.value : e[0]?.value ?? T.value;
|
|
53
|
-
}), j = c(() => m.ariaLabel ?? m.options.find((e) => e.value === T.value)?.label ?? "Select");
|
|
54
|
-
function M(e) {
|
|
55
|
-
typeof e == "string" && (T.value = e);
|
|
56
|
-
}
|
|
57
|
-
return (c, g) => E.value ? (v(), l(S(o), {
|
|
58
|
-
key: 0,
|
|
59
|
-
options: k.value,
|
|
60
|
-
"model-value": A.value,
|
|
61
|
-
class: h(S(e)("responsive-tabs__desktop text-body", m.class, p.desktopClass)),
|
|
62
|
-
"onUpdate:modelValue": M
|
|
63
|
-
}, null, 8, [
|
|
64
|
-
"options",
|
|
65
|
-
"model-value",
|
|
66
|
-
"class"
|
|
67
|
-
])) : (v(), u("div", {
|
|
68
|
-
key: 1,
|
|
69
|
-
class: h(S(e)("responsive-tabs__mobile w-fit", m.class))
|
|
70
|
-
}, [f(S(a), {
|
|
71
|
-
"model-value": T.value,
|
|
72
|
-
"onUpdate:modelValue": M
|
|
73
|
-
}, {
|
|
74
|
-
default: w(() => [f(S(t), {
|
|
75
|
-
"aria-label": j.value,
|
|
76
|
-
class: h(S(e)("responsive-tabs__trigger text-small w-auto min-w-input-sm", p.mobileTriggerClass))
|
|
77
|
-
}, {
|
|
78
|
-
default: w(() => [f(S(r))]),
|
|
79
|
-
_: 1
|
|
80
|
-
}, 8, ["aria-label", "class"]), f(S(n), null, {
|
|
81
|
-
default: w(() => [(v(!0), u(s, null, b(p.options, (e) => (v(), l(S(i), {
|
|
82
|
-
key: e.value,
|
|
83
|
-
value: e.value
|
|
84
|
-
}, {
|
|
85
|
-
default: w(() => [d(x(e.label), 1)]),
|
|
86
|
-
_: 2
|
|
87
|
-
}, 1032, ["value"]))), 128))]),
|
|
88
|
-
_: 1
|
|
89
|
-
})]),
|
|
90
|
-
_: 1
|
|
91
|
-
}, 8, ["model-value"])], 2));
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
//#endregion
|
|
95
|
-
export { T as ResponsiveTabs };
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/* disco-glyph.css — host rule for <DiscoGlyph>.
|
|
2
|
-
*
|
|
3
|
-
* Per P.W3 sub-B. The component renders an inline <svg> with a faceted
|
|
4
|
-
* gradient + specular cap painted over the silhouette path. The host
|
|
5
|
-
* rule scopes layout (block flow, inherit colour) and exposes a
|
|
6
|
-
* minimal opt-in selector for phase-tinted state styling.
|
|
7
|
-
*
|
|
8
|
-
* Self-contained sheet; no token additions. Consumers may override
|
|
9
|
-
* via the `--phase-color` cascade established by the chassis layer.
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
@layer components {
|
|
13
|
-
.disco-glyph {
|
|
14
|
-
display: inline-block;
|
|
15
|
-
width: 100%;
|
|
16
|
-
height: 100%;
|
|
17
|
-
color: currentColor;
|
|
18
|
-
line-height: 0;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
.disco-glyph--phase-tinted {
|
|
22
|
-
/* Hook for consumers that animate hue under phase changes;
|
|
23
|
-
* the gradient stops already read currentColor or an explicit
|
|
24
|
-
* phaseColor prop, so this class stays empty by default. */
|
|
25
|
-
}
|
|
26
|
-
}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
/* glyph-face.css — three-layer composition for <GlyphFace>.
|
|
2
|
-
*
|
|
3
|
-
* Per W2.7 §19 and Q.W3 §F2 + §F8. Wraps a slotted glyph (lucide stroke
|
|
4
|
-
* or DiscoGlyph SVG) with a phase-tinted radial backplate (visible only
|
|
5
|
-
* when [data-active="true"]) and a 165° linear-gradient catch-light cap.
|
|
6
|
-
* The slotted silhouette stays `currentColor` — Vignelli-clean — while
|
|
7
|
-
* the disco punch lives in the surrounding layers.
|
|
8
|
-
*
|
|
9
|
-
* Q.W3.A.1 inversion: when no silhouette resolves, the cap renders
|
|
10
|
-
* nothing (rather than a wrapper-rectangle fallback). Consumers passing
|
|
11
|
-
* `silhouette` continue to consume `clip-path: path(var(--gf-silhouette))`;
|
|
12
|
-
* the lucide consumer sites in ActionCluster + SettingsCog publish via
|
|
13
|
-
* the silhouette table from `@src/components/speedtest/icons/lucide-silhouettes.ts`,
|
|
14
|
-
* and DiscoGlyph hands its silhouette upward via provide/inject for
|
|
15
|
-
* disco wrappers. The fail-safe is now "no cap" not "wrong cap".
|
|
16
|
-
*
|
|
17
|
-
* Q.W3.A.2 default raise: --gf-cap-strength 0.35 → 0.55, mix-blend-mode
|
|
18
|
-
* overlay → screen. `screen` composes correctly against the translucent
|
|
19
|
-
* dock substrates (`--card` at 50–60% opacity); `overlay` collapses
|
|
20
|
-
* there because its contrast lift requires an opaque underlay. Consumers
|
|
21
|
-
* needing the metallic-overlay punch declare `mix-blend-mode: overlay`
|
|
22
|
-
* via class or `--gf-cap-blend` override.
|
|
23
|
-
*
|
|
24
|
-
* Self-contained sheet; no token additions beyond what's already in
|
|
25
|
-
* `tokens.css`. Consumers may override the cap blend mode and backplate
|
|
26
|
-
* radius with the documented `--gf-*` custom properties.
|
|
27
|
-
*/
|
|
28
|
-
|
|
29
|
-
@layer components {
|
|
30
|
-
.glyph-face {
|
|
31
|
-
position: relative;
|
|
32
|
-
display: inline-flex;
|
|
33
|
-
align-items: center;
|
|
34
|
-
justify-content: center;
|
|
35
|
-
isolation: isolate;
|
|
36
|
-
--gf-tint: transparent;
|
|
37
|
-
--gf-cap-strength: 0.55;
|
|
38
|
-
--gf-cap-blend: screen;
|
|
39
|
-
--gf-cap-radius: 50%;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
.glyph-face-backplate {
|
|
43
|
-
position: absolute;
|
|
44
|
-
inset: -25%;
|
|
45
|
-
border-radius: 50%;
|
|
46
|
-
background: radial-gradient(
|
|
47
|
-
ellipse at 30% 30%,
|
|
48
|
-
var(--gf-tint) 0%,
|
|
49
|
-
transparent 70%
|
|
50
|
-
);
|
|
51
|
-
opacity: 0;
|
|
52
|
-
transition: opacity var(--duration-fast) var(--spring-snappy);
|
|
53
|
-
z-index: -1;
|
|
54
|
-
pointer-events: none;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
.glyph-face[data-active="true"] .glyph-face-backplate {
|
|
58
|
-
opacity: 1;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/* Cap fail-safe: by default render nothing. The cap only paints
|
|
62
|
-
when --gf-silhouette resolves (via prop or provide/inject from
|
|
63
|
-
a DiscoGlyph descendant). This closes the wrapper-rectangle
|
|
64
|
-
leak the lucide consumers in ActionCluster + SettingsCog hit
|
|
65
|
-
under the prior opt-in path. */
|
|
66
|
-
.glyph-face-cap {
|
|
67
|
-
position: absolute;
|
|
68
|
-
inset: 0;
|
|
69
|
-
background: transparent;
|
|
70
|
-
pointer-events: none;
|
|
71
|
-
mix-blend-mode: var(--gf-cap-blend);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
.glyph-face[style*="--gf-silhouette"] .glyph-face-cap {
|
|
75
|
-
background: linear-gradient(
|
|
76
|
-
165deg,
|
|
77
|
-
rgba(255, 255, 255, var(--gf-cap-strength, 0.55)) 0%,
|
|
78
|
-
transparent 40%
|
|
79
|
-
);
|
|
80
|
-
clip-path: var(--gf-silhouette);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
.dark .glyph-face {
|
|
84
|
-
--gf-cap-strength: 0.32;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
@media (prefers-reduced-motion: reduce) {
|
|
88
|
-
.glyph-face-backplate {
|
|
89
|
-
transition: none;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
package/dist/vReveal-CqaCz_mC.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
//#region src/utils/moveBefore.ts
|
|
2
|
-
function e(e, t, n) {
|
|
3
|
-
let r = e;
|
|
4
|
-
typeof r.moveBefore == "function" ? r.moveBefore(t, n) : e.insertBefore(t, n);
|
|
5
|
-
}
|
|
6
|
-
function t() {
|
|
7
|
-
return typeof Element < "u" && "moveBefore" in Element.prototype;
|
|
8
|
-
}
|
|
9
|
-
//#endregion
|
|
10
|
-
//#region src/utils/platformSupport.ts
|
|
11
|
-
function n() {
|
|
12
|
-
return typeof globalThis.scheduler?.postTask == "function";
|
|
13
|
-
}
|
|
14
|
-
//#endregion
|
|
15
|
-
//#region src/composables/motion/useViewTransition.ts
|
|
16
|
-
function r() {
|
|
17
|
-
return typeof document < "u" && typeof document.startViewTransition == "function";
|
|
18
|
-
}
|
|
19
|
-
function i(e, t) {
|
|
20
|
-
let n = typeof document > "u" ? void 0 : document;
|
|
21
|
-
if (!n || typeof n.startViewTransition != "function") return e(), {
|
|
22
|
-
finished: Promise.resolve(),
|
|
23
|
-
transitioned: !1
|
|
24
|
-
};
|
|
25
|
-
let r = t?.types && t.types.length > 0 ? n.startViewTransition({
|
|
26
|
-
update: () => e(),
|
|
27
|
-
types: t.types
|
|
28
|
-
}) : n.startViewTransition(() => e());
|
|
29
|
-
return r.ready?.catch(() => {}), {
|
|
30
|
-
finished: r.finished.then(() => void 0, () => void 0),
|
|
31
|
-
transitioned: !0
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
//#endregion
|
|
35
|
-
//#region src/composables/motion/vReveal.ts
|
|
36
|
-
function a(e, t) {
|
|
37
|
-
e.setAttribute("data-reveal", t.arg === "fade" ? "fade" : ""), e.style.setProperty("--d", String(t.value ?? 0));
|
|
38
|
-
}
|
|
39
|
-
var o = {
|
|
40
|
-
mounted: a,
|
|
41
|
-
updated: a
|
|
42
|
-
};
|
|
43
|
-
//#endregion
|
|
44
|
-
export { e as a, n as i, i as n, t as o, r, o as t };
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/* disco-glyph.css — host rule for <DiscoGlyph>.
|
|
2
|
-
*
|
|
3
|
-
* Per P.W3 sub-B. The component renders an inline <svg> with a faceted
|
|
4
|
-
* gradient + specular cap painted over the silhouette path. The host
|
|
5
|
-
* rule scopes layout (block flow, inherit colour) and exposes a
|
|
6
|
-
* minimal opt-in selector for phase-tinted state styling.
|
|
7
|
-
*
|
|
8
|
-
* Self-contained sheet; no token additions. Consumers may override
|
|
9
|
-
* via the `--phase-color` cascade established by the chassis layer.
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
@layer components {
|
|
13
|
-
.disco-glyph {
|
|
14
|
-
display: inline-block;
|
|
15
|
-
width: 100%;
|
|
16
|
-
height: 100%;
|
|
17
|
-
color: currentColor;
|
|
18
|
-
line-height: 0;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
.disco-glyph--phase-tinted {
|
|
22
|
-
/* Hook for consumers that animate hue under phase changes;
|
|
23
|
-
* the gradient stops already read currentColor or an explicit
|
|
24
|
-
* phaseColor prop, so this class stays empty by default. */
|
|
25
|
-
}
|
|
26
|
-
}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
/* glyph-face.css — three-layer composition for <GlyphFace>.
|
|
2
|
-
*
|
|
3
|
-
* Per W2.7 §19 and Q.W3 §F2 + §F8. Wraps a slotted glyph (lucide stroke
|
|
4
|
-
* or DiscoGlyph SVG) with a phase-tinted radial backplate (visible only
|
|
5
|
-
* when [data-active="true"]) and a 165° linear-gradient catch-light cap.
|
|
6
|
-
* The slotted silhouette stays `currentColor` — Vignelli-clean — while
|
|
7
|
-
* the disco punch lives in the surrounding layers.
|
|
8
|
-
*
|
|
9
|
-
* Q.W3.A.1 inversion: when no silhouette resolves, the cap renders
|
|
10
|
-
* nothing (rather than a wrapper-rectangle fallback). Consumers passing
|
|
11
|
-
* `silhouette` continue to consume `clip-path: path(var(--gf-silhouette))`;
|
|
12
|
-
* the lucide consumer sites in ActionCluster + SettingsCog publish via
|
|
13
|
-
* the silhouette table from `@src/components/speedtest/icons/lucide-silhouettes.ts`,
|
|
14
|
-
* and DiscoGlyph hands its silhouette upward via provide/inject for
|
|
15
|
-
* disco wrappers. The fail-safe is now "no cap" not "wrong cap".
|
|
16
|
-
*
|
|
17
|
-
* Q.W3.A.2 default raise: --gf-cap-strength 0.35 → 0.55, mix-blend-mode
|
|
18
|
-
* overlay → screen. `screen` composes correctly against the translucent
|
|
19
|
-
* dock substrates (`--card` at 50–60% opacity); `overlay` collapses
|
|
20
|
-
* there because its contrast lift requires an opaque underlay. Consumers
|
|
21
|
-
* needing the metallic-overlay punch declare `mix-blend-mode: overlay`
|
|
22
|
-
* via class or `--gf-cap-blend` override.
|
|
23
|
-
*
|
|
24
|
-
* Self-contained sheet; no token additions beyond what's already in
|
|
25
|
-
* `tokens.css`. Consumers may override the cap blend mode and backplate
|
|
26
|
-
* radius with the documented `--gf-*` custom properties.
|
|
27
|
-
*/
|
|
28
|
-
|
|
29
|
-
@layer components {
|
|
30
|
-
.glyph-face {
|
|
31
|
-
position: relative;
|
|
32
|
-
display: inline-flex;
|
|
33
|
-
align-items: center;
|
|
34
|
-
justify-content: center;
|
|
35
|
-
isolation: isolate;
|
|
36
|
-
--gf-tint: transparent;
|
|
37
|
-
--gf-cap-strength: 0.55;
|
|
38
|
-
--gf-cap-blend: screen;
|
|
39
|
-
--gf-cap-radius: 50%;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
.glyph-face-backplate {
|
|
43
|
-
position: absolute;
|
|
44
|
-
inset: -25%;
|
|
45
|
-
border-radius: 50%;
|
|
46
|
-
background: radial-gradient(
|
|
47
|
-
ellipse at 30% 30%,
|
|
48
|
-
var(--gf-tint) 0%,
|
|
49
|
-
transparent 70%
|
|
50
|
-
);
|
|
51
|
-
opacity: 0;
|
|
52
|
-
transition: opacity var(--duration-fast) var(--spring-snappy);
|
|
53
|
-
z-index: -1;
|
|
54
|
-
pointer-events: none;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
.glyph-face[data-active="true"] .glyph-face-backplate {
|
|
58
|
-
opacity: 1;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/* Cap fail-safe: by default render nothing. The cap only paints
|
|
62
|
-
when --gf-silhouette resolves (via prop or provide/inject from
|
|
63
|
-
a DiscoGlyph descendant). This closes the wrapper-rectangle
|
|
64
|
-
leak the lucide consumers in ActionCluster + SettingsCog hit
|
|
65
|
-
under the prior opt-in path. */
|
|
66
|
-
.glyph-face-cap {
|
|
67
|
-
position: absolute;
|
|
68
|
-
inset: 0;
|
|
69
|
-
background: transparent;
|
|
70
|
-
pointer-events: none;
|
|
71
|
-
mix-blend-mode: var(--gf-cap-blend);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
.glyph-face[style*="--gf-silhouette"] .glyph-face-cap {
|
|
75
|
-
background: linear-gradient(
|
|
76
|
-
165deg,
|
|
77
|
-
rgba(255, 255, 255, var(--gf-cap-strength, 0.55)) 0%,
|
|
78
|
-
transparent 40%
|
|
79
|
-
);
|
|
80
|
-
clip-path: var(--gf-silhouette);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
.dark .glyph-face {
|
|
84
|
-
--gf-cap-strength: 0.32;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
@media (prefers-reduced-motion: reduce) {
|
|
88
|
-
.glyph-face-backplate {
|
|
89
|
-
transition: none;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|