@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.
Files changed (228) hide show
  1. package/README.md +1 -6
  2. package/dist/{CardAction-q2qHCJFG.js → CardAction-DuArVky-.js} +4 -4
  3. package/dist/{CommandShortcut-SzWRhROC.js → CommandShortcut-CefCj5mt.js} +7 -7
  4. package/dist/{ContextMenuSubContent-Do977Cbf.js → ContextMenuSubContent-Bhg4f5jX.js} +3 -3
  5. package/dist/{DataTable-CvlWXz65.js → DataTable-CUHMukiQ.js} +1 -1
  6. package/dist/{DialogContent-DjZWT3lK.js → DialogContent-BRkT1cjP.js} +1 -1
  7. package/dist/{MetricBadge-lTc002u2.js → MetricBadge-BZVWIxNy.js} +6 -4
  8. package/dist/{Notification-BxK8LZMw.js → Notification-DLMhblXR.js} +2 -2
  9. package/dist/{NumberFieldContent-CLNVR1iY.js → NumberFieldContent-BbLOh8RU.js} +2 -2
  10. package/dist/{SelectScrollDownButton-C7TRe-ep.js → SelectScrollDownButton-T32cVFeM.js} +3 -3
  11. package/dist/{SelectSeparator-L8pPEn4L.js → SelectSeparator-C4Ql0gzV.js} +1 -1
  12. package/dist/{Switch-LDKLmmgx.js → Switch-Ch-k3Rv-.js} +1 -1
  13. package/dist/{TabsList-qyHZ2lKY.js → TabsList-B8CVOQPC.js} +2 -2
  14. package/dist/{Toaster-CabYEEF_.js → Toaster-1rYWrmAm.js} +1 -1
  15. package/dist/{ToggleGroupItem-CkXUcBlt.js → ToggleGroupItem-Cev4pOVK.js} +4 -4
  16. package/dist/animated-digit.js +1 -1
  17. package/dist/api/index.d.ts +2 -1
  18. package/dist/api.js +1 -1
  19. package/dist/aurora.js +236 -545
  20. package/dist/{badge-DHQrc_GQ.js → badge-CaoFJzRb.js} +5 -5
  21. package/dist/badge.js +1 -1
  22. package/dist/{button-CAywcrhO.js → button-DN39cGqL.js} +13 -12
  23. package/dist/button.js +1 -1
  24. package/dist/card.js +1 -1
  25. package/dist/carousel.js +1 -1
  26. package/dist/color.js +1 -1
  27. package/dist/command.js +1 -1
  28. package/dist/{compile-BBTRjvQS.js → compile-BOXjLUxu.js} +24 -24
  29. package/dist/components/custom/aurora/composables/atoms.d.ts +21 -4
  30. package/dist/components/custom/aurora/composables/runtime.d.ts +0 -9
  31. package/dist/components/custom/aurora/composables/uniformBridge.d.ts +0 -11
  32. package/dist/components/custom/aurora/constants/renderMode.d.ts +0 -32
  33. package/dist/components/custom/aurora/constants/shaders/brush.glsl.d.ts +1 -1
  34. package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +2 -2
  35. package/dist/components/custom/aurora/constants/shaders/tonemap.glsl.d.ts +1 -1
  36. package/dist/components/custom/aurora/index.d.ts +1 -1
  37. package/dist/components/custom/configurator/ConfiguratorLayer.vue.d.ts +1 -1
  38. package/dist/components/custom/constellation/Constellation.vue.d.ts +73 -1
  39. package/dist/components/custom/constellation/constellationField.d.ts +255 -3
  40. package/dist/components/custom/constellation/index.d.ts +2 -2
  41. package/dist/components/custom/dock/DockSeparator.vue.d.ts +3 -0
  42. package/dist/components/custom/dock/DockTabButton.vue.d.ts +4 -3
  43. package/dist/components/custom/dock/GlassDock.vue.d.ts +45 -63
  44. package/dist/components/custom/dock/composables/dockContext.d.ts +7 -0
  45. package/dist/components/custom/dock/index.d.ts +2 -1
  46. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +29 -0
  47. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +6 -0
  48. package/dist/components/custom/fourier-field/index.d.ts +25 -1
  49. package/dist/components/custom/fourier-field/math.d.ts +3 -8
  50. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +8 -10
  51. package/dist/components/custom/goo-blob/composables/useBlobMood.d.ts +19 -5
  52. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +6 -14
  53. package/dist/components/custom/goo-blob/index.d.ts +1 -1
  54. package/dist/components/custom/goo-blob/types.d.ts +59 -25
  55. package/dist/components/custom/handmark/HandMark.vue.d.ts +29 -0
  56. package/dist/components/custom/handmark/brush.d.ts +219 -0
  57. package/dist/components/custom/handmark/freehand.d.ts +69 -0
  58. package/dist/components/custom/handmark/geometry.d.ts +32 -0
  59. package/dist/components/custom/handmark/index.d.ts +21 -0
  60. package/dist/components/custom/handmark/ink.d.ts +11 -0
  61. package/dist/components/custom/handmark/texture.d.ts +39 -0
  62. package/dist/components/custom/handmark/types.d.ts +53 -0
  63. package/dist/components/custom/handmark/useHandMark.d.ts +66 -0
  64. package/dist/components/custom/metric-badge/MetricBadge.vue.d.ts +8 -0
  65. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +92 -0
  66. package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +49 -0
  67. package/dist/components/custom/tabs/index.d.ts +2 -5
  68. package/dist/components/ui/button/index.d.ts +1 -1
  69. package/dist/components/ui/card/Card.vue.d.ts +5 -3
  70. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +1 -1
  71. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +1 -1
  72. package/dist/components/ui/carousel/GlassCarouselPager.vue.d.ts +3 -4
  73. package/dist/components/ui/slider/index.d.ts +22 -11
  74. package/dist/components/ui/tabs/TabsList.vue.d.ts +1 -1
  75. package/dist/composables/color/index.d.ts +12 -7
  76. package/dist/composables/context/createContext.d.ts +1 -1
  77. package/dist/composables/glass/webgl/shaders/procedural-color.glsl.d.ts +1 -6
  78. package/dist/composables/motion/core/index.d.ts +1 -0
  79. package/dist/composables/motion/useRouteTransition.d.ts +42 -0
  80. package/dist/configurator.js +1 -1
  81. package/dist/confirm-dialog.js +1 -1
  82. package/dist/constellation.js +212 -72
  83. package/dist/context-menu.js +1 -1
  84. package/dist/controls.js +1 -1
  85. package/dist/dark.js +1 -1
  86. package/dist/data-table.js +1 -1
  87. package/dist/deck-progress.js +1 -1
  88. package/dist/dialog.js +1 -1
  89. package/dist/dock.js +257 -243
  90. package/dist/{dropdown-menu-B_4bWyyG.js → dropdown-menu-D77jX6Df.js} +3 -3
  91. package/dist/dropdown-menu.js +1 -1
  92. package/dist/expandable-container.js +61 -38
  93. package/dist/forms.js +5 -5
  94. package/dist/fourier-field.js +89 -97
  95. package/dist/fourier-math.d.ts +1 -0
  96. package/dist/fourier-math.js +2 -0
  97. package/dist/glass-panel.js +1 -1
  98. package/dist/glass-ui.css +1 -1
  99. package/dist/glass-ui.js +107 -109
  100. package/dist/goo-blob.js +316 -297
  101. package/dist/handmark.d.ts +1 -0
  102. package/dist/handmark.js +609 -0
  103. package/dist/hover-popover.js +1 -1
  104. package/dist/icon-tooltip.js +1 -1
  105. package/dist/index.d.ts +1 -2
  106. package/dist/keyboard.js +1 -1
  107. package/dist/labeled-field.js +5 -5
  108. package/dist/math-DTpRVC0e.js +27 -0
  109. package/dist/{menuItemVariants-DKM85SNE.js → menuItemVariants-CCoBNkU5.js} +1 -1
  110. package/dist/metric-badge.js +1 -1
  111. package/dist/metric-stack.js +1 -1
  112. package/dist/motion-core.js +70 -69
  113. package/dist/motion.js +2 -2
  114. package/dist/notification.js +1 -1
  115. package/dist/number-field.js +1 -1
  116. package/dist/pulse.js +1 -1
  117. package/dist/reactive.js +1 -1
  118. package/dist/scrolling-text.js +1 -1
  119. package/dist/search.js +4 -4
  120. package/dist/select.js +2 -2
  121. package/dist/{slider-D9puf-Ko.js → slider-CyzcxBoh.js} +6 -6
  122. package/dist/slider.js +1 -1
  123. package/dist/sortable-list.js +1 -1
  124. package/dist/status-dot.js +17 -16
  125. package/dist/styles/animations.css +80 -20
  126. package/dist/styles/cards.css +2 -2
  127. package/dist/styles/components.css +1 -1
  128. package/dist/styles/dock/density.css +230 -0
  129. package/dist/styles/dock/layer-group.css +275 -0
  130. package/dist/styles/dock/layers.css +355 -0
  131. package/dist/styles/dock/morph.css +244 -0
  132. package/dist/styles/dock/overflow.css +201 -0
  133. package/dist/styles/dock/shell.css +457 -0
  134. package/dist/styles/dock-controls.css +205 -55
  135. package/dist/styles/dock.css +42 -1349
  136. package/dist/styles/drawer.css +12 -4
  137. package/dist/styles/glass.css +535 -78
  138. package/dist/styles/index.css +12 -11
  139. package/dist/styles/paper.css +68 -2
  140. package/dist/styles/theme.css +58 -0
  141. package/dist/styles/tokens.css +601 -69
  142. package/dist/styles/transitions.css +20 -2
  143. package/dist/styles/utilities.css +218 -78
  144. package/dist/styles/view-transition.css +51 -0
  145. package/dist/switch.js +1 -1
  146. package/dist/tabs.js +182 -151
  147. package/dist/timeline.js +1 -1
  148. package/dist/toast.js +1 -1
  149. package/dist/toggle-group.js +1 -1
  150. package/dist/{useAnimatedNumber-C_3wZLx4.js → useAnimatedNumber-Bcpy5Etf.js} +1 -1
  151. package/dist/{useConfiguratorState-CMff4GzH.js → useConfiguratorState-DxAqksK6.js} +21 -10
  152. package/dist/{useGlassRenderer-5I0YkI4t.js → useGlassRenderer-D7YGOYiM.js} +1 -1
  153. package/dist/useViewTransition-DaN5Zrox.js +21 -0
  154. package/dist/vReveal-zUIQk-rJ.js +53 -0
  155. package/dist/watercolor-dot.js +1 -1
  156. package/package.json +80 -39
  157. package/src/styles/animations.css +80 -20
  158. package/src/styles/cards.css +2 -2
  159. package/src/styles/dock/density.css +230 -0
  160. package/src/styles/dock/layer-group.css +275 -0
  161. package/src/styles/dock/layers.css +355 -0
  162. package/src/styles/dock/morph.css +244 -0
  163. package/src/styles/dock/overflow.css +201 -0
  164. package/src/styles/dock/shell.css +457 -0
  165. package/src/styles/dock-controls.css +205 -55
  166. package/src/styles/dock.css +42 -1349
  167. package/src/styles/drawer.css +12 -4
  168. package/src/styles/glass.css +535 -78
  169. package/src/styles/index.css +12 -11
  170. package/src/styles/paper.css +68 -2
  171. package/src/styles/theme.css +58 -0
  172. package/src/styles/tokens.css +601 -69
  173. package/src/styles/transitions.css +20 -2
  174. package/src/styles/utilities.css +218 -78
  175. package/src/styles/view-transition.css +51 -0
  176. package/dist/DiscoGlyph-CG0F410s.js +0 -132
  177. package/dist/GlyphFace-DRjDkB0s.js +0 -51
  178. package/dist/UnderlineTabs-Uxn-R3MT.js +0 -39
  179. package/dist/components/custom/aurora/composables/gpuRuntime.d.ts +0 -16
  180. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +0 -7
  181. package/dist/components/custom/aurora/constants/shaders/painterly.wgsl.d.ts +0 -7
  182. package/dist/components/custom/aurora/constants/shaders/wake.wgsl.d.ts +0 -4
  183. package/dist/components/custom/disco-glyph/DiscoGlyph.vue.d.ts +0 -58
  184. package/dist/components/custom/disco-glyph/index.d.ts +0 -1
  185. package/dist/components/custom/glass-carousel/GlassCarousel.vue.d.ts +0 -36
  186. package/dist/components/custom/glass-carousel/GlassCarouselItem.vue.d.ts +0 -28
  187. package/dist/components/custom/glass-carousel/index.d.ts +0 -4
  188. package/dist/components/custom/glass-carousel/useGlassCarousel.d.ts +0 -30
  189. package/dist/components/custom/glyph-face/GlyphFace.vue.d.ts +0 -64
  190. package/dist/components/custom/glyph-face/index.d.ts +0 -2
  191. package/dist/components/custom/glyph-face/keys.d.ts +0 -9
  192. package/dist/components/custom/responsive-tabs/ResponsiveTabs.vue.d.ts +0 -73
  193. package/dist/components/custom/responsive-tabs/index.d.ts +0 -2
  194. package/dist/components/custom/tabs/BouncyTabs.vue.d.ts +0 -27
  195. package/dist/components/custom/tabs/BouncyToggle.vue.d.ts +0 -60
  196. package/dist/components/custom/tabs/UnderlineTabs.vue.d.ts +0 -20
  197. package/dist/components/custom/tabs/composables/useBouncySlider.d.ts +0 -39
  198. package/dist/composables/glass/createGPUCanvas.d.ts +0 -40
  199. package/dist/disco-glyph.d.ts +0 -1
  200. package/dist/disco-glyph.js +0 -2
  201. package/dist/glass-carousel.d.ts +0 -1
  202. package/dist/glass-carousel.js +0 -219
  203. package/dist/glyph-face.d.ts +0 -1
  204. package/dist/glyph-face.js +0 -3
  205. package/dist/keys-BsYjEFOW.js +0 -9
  206. package/dist/responsive-tabs.d.ts +0 -1
  207. package/dist/responsive-tabs.js +0 -95
  208. package/dist/styles/disco-glyph.css +0 -26
  209. package/dist/styles/glyph-face.css +0 -92
  210. package/dist/vReveal-CqaCz_mC.js +0 -44
  211. package/src/styles/disco-glyph.css +0 -26
  212. package/src/styles/glyph-face.css +0 -92
  213. /package/dist/{DeckProgress-AVgbIULY.js → DeckProgress-Dmk4_AKN.js} +0 -0
  214. /package/dist/{HoverPopover-D56O6Ylp.js → HoverPopover-2LOIW34a.js} +0 -0
  215. /package/dist/{IconTooltip-D2T5nYOM.js → IconTooltip-Cus0fvK0.js} +0 -0
  216. /package/dist/{Input-DVG_J0ne.js → Input-xuDwALQR.js} +0 -0
  217. /package/dist/{ScrollingText-CVyqxvfv.js → ScrollingText-BPP84wKo.js} +0 -0
  218. /package/dist/{color-DMLTunJK.js → color-C5ls_QF7.js} +0 -0
  219. /package/dist/{constants-BPOqYJAm.js → constants-yKeKnE84.js} +0 -0
  220. /package/dist/{presets-D1XPuTj-.js → presets-Dkdv55Gt.js} +0 -0
  221. /package/dist/{prng-COGhh02-.js → prng-D27-B3tK.js} +0 -0
  222. /package/dist/{useGlobalDark-D3EBWzXK.js → useGlobalDark-d6waty-X.js} +0 -0
  223. /package/dist/{useIntersectionPause-Bj4sPkMh.js → useIntersectionPause-Cck5Uxk8.js} +0 -0
  224. /package/dist/{useInterval-CcLfq2WU.js → useInterval-Dsmqwi03.js} +0 -0
  225. /package/dist/{useKeyboardShortcuts-BXWXOZ-9.js → useKeyboardShortcuts-CyIYrndH.js} +0 -0
  226. /package/dist/{useScrollProgress-C9ysDic5.js → useScrollProgress-CffFGLa5.js} +0 -0
  227. /package/dist/{useSortable-MGAbCGVJ.js → useSortable-C8ReQ50P.js} +0 -0
  228. /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;
@@ -1 +0,0 @@
1
- export * from "./components/custom/disco-glyph";
@@ -1,2 +0,0 @@
1
- import { t as e } from "./DiscoGlyph-CG0F410s.js";
2
- export { e as DiscoGlyph };
@@ -1 +0,0 @@
1
- export * from "./components/custom/glass-carousel";
@@ -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 };
@@ -1 +0,0 @@
1
- export * from "./components/custom/glyph-face";
@@ -1,3 +0,0 @@
1
- import { n as e, r as t, t as n } from "./keys-BsYjEFOW.js";
2
- import { t as r } from "./GlyphFace-DRjDkB0s.js";
3
- export { n as GLYPH_FACE_SILHOUETTE_KEY, r as GlyphFace, e as provideGlyphFaceSilhouette, t as useOptionalGlyphFaceSilhouette };
@@ -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";
@@ -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
- }
@@ -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