@mkbabb/glass-ui 3.8.0 → 3.9.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 (164) 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/{NumberFieldContent-CLNVR1iY.js → NumberFieldContent-BbLOh8RU.js} +2 -2
  8. package/dist/{SelectScrollDownButton-C7TRe-ep.js → SelectScrollDownButton-T32cVFeM.js} +3 -3
  9. package/dist/{SelectSeparator-L8pPEn4L.js → SelectSeparator-C4Ql0gzV.js} +1 -1
  10. package/dist/{TabsList-qyHZ2lKY.js → TabsList-B8CVOQPC.js} +2 -2
  11. package/dist/{Toaster-CabYEEF_.js → Toaster-1rYWrmAm.js} +1 -1
  12. package/dist/{ToggleGroupItem-CkXUcBlt.js → ToggleGroupItem-Cev4pOVK.js} +4 -4
  13. package/dist/animated-digit.js +1 -1
  14. package/dist/api/index.d.ts +1 -1
  15. package/dist/api.js +1 -1
  16. package/dist/aurora.js +10 -10
  17. package/dist/{badge-DHQrc_GQ.js → badge-BvwvT50i.js} +4 -4
  18. package/dist/badge.js +1 -1
  19. package/dist/{button-CAywcrhO.js → button-DN39cGqL.js} +13 -12
  20. package/dist/button.js +1 -1
  21. package/dist/card.js +1 -1
  22. package/dist/carousel.js +1 -1
  23. package/dist/color.js +1 -1
  24. package/dist/command.js +1 -1
  25. package/dist/{compile-BBTRjvQS.js → compile-DAjIoEy2.js} +1 -1
  26. package/dist/components/custom/configurator/ConfiguratorLayer.vue.d.ts +1 -1
  27. package/dist/components/custom/dock/DockSeparator.vue.d.ts +3 -0
  28. package/dist/components/custom/dock/GlassDock.vue.d.ts +45 -63
  29. package/dist/components/custom/dock/composables/dockContext.d.ts +7 -0
  30. package/dist/components/custom/dock/index.d.ts +2 -1
  31. package/dist/components/custom/goo-blob/composables/useBlobMood.d.ts +19 -5
  32. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +92 -0
  33. package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +49 -0
  34. package/dist/components/custom/tabs/index.d.ts +2 -5
  35. package/dist/components/ui/button/index.d.ts +1 -1
  36. package/dist/components/ui/card/Card.vue.d.ts +5 -3
  37. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +1 -1
  38. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +1 -1
  39. package/dist/components/ui/carousel/GlassCarouselPager.vue.d.ts +3 -4
  40. package/dist/components/ui/slider/index.d.ts +14 -7
  41. package/dist/components/ui/tabs/TabsList.vue.d.ts +1 -1
  42. package/dist/composables/context/createContext.d.ts +1 -1
  43. package/dist/configurator.js +1 -1
  44. package/dist/confirm-dialog.js +1 -1
  45. package/dist/constellation.js +1 -1
  46. package/dist/context-menu.js +1 -1
  47. package/dist/controls.js +1 -1
  48. package/dist/dark.js +1 -1
  49. package/dist/data-table.js +1 -1
  50. package/dist/deck-progress.js +1 -1
  51. package/dist/dialog.js +1 -1
  52. package/dist/dock.js +256 -243
  53. package/dist/{dropdown-menu-B_4bWyyG.js → dropdown-menu-D77jX6Df.js} +3 -3
  54. package/dist/dropdown-menu.js +1 -1
  55. package/dist/expandable-container.js +1 -1
  56. package/dist/forms.js +5 -5
  57. package/dist/fourier-field.js +3 -3
  58. package/dist/glass-ui.css +1 -1
  59. package/dist/glass-ui.js +101 -104
  60. package/dist/goo-blob.js +36 -32
  61. package/dist/hover-popover.js +1 -1
  62. package/dist/icon-tooltip.js +1 -1
  63. package/dist/index.d.ts +0 -2
  64. package/dist/keyboard.js +1 -1
  65. package/dist/labeled-field.js +4 -4
  66. package/dist/{menuItemVariants-DKM85SNE.js → menuItemVariants-CCoBNkU5.js} +1 -1
  67. package/dist/motion-core.js +4 -4
  68. package/dist/motion.js +2 -2
  69. package/dist/number-field.js +1 -1
  70. package/dist/pulse.js +1 -1
  71. package/dist/reactive.js +1 -1
  72. package/dist/scrolling-text.js +1 -1
  73. package/dist/search.js +4 -4
  74. package/dist/select.js +2 -2
  75. package/dist/{slider-D9puf-Ko.js → slider-DC2mwuoe.js} +1 -1
  76. package/dist/slider.js +1 -1
  77. package/dist/sortable-list.js +1 -1
  78. package/dist/status-dot.js +17 -16
  79. package/dist/styles/animations.css +6 -2
  80. package/dist/styles/components.css +1 -1
  81. package/dist/styles/dock/density.css +230 -0
  82. package/dist/styles/dock/layer-group.css +263 -0
  83. package/dist/styles/dock/layers.css +355 -0
  84. package/dist/styles/dock/morph.css +244 -0
  85. package/dist/styles/dock/overflow.css +201 -0
  86. package/dist/styles/dock/shell.css +457 -0
  87. package/dist/styles/dock-controls.css +166 -32
  88. package/dist/styles/dock.css +42 -1349
  89. package/dist/styles/glass.css +396 -75
  90. package/dist/styles/index.css +12 -11
  91. package/dist/styles/theme.css +51 -0
  92. package/dist/styles/tokens.css +501 -55
  93. package/dist/styles/utilities.css +89 -39
  94. package/dist/tabs.js +182 -151
  95. package/dist/timeline.js +1 -1
  96. package/dist/toast.js +1 -1
  97. package/dist/toggle-group.js +1 -1
  98. package/dist/{useAnimatedNumber-C_3wZLx4.js → useAnimatedNumber-C5I3wWd8.js} +1 -1
  99. package/dist/{useConfiguratorState-CMff4GzH.js → useConfiguratorState-DxAqksK6.js} +21 -10
  100. package/dist/watercolor-dot.js +1 -1
  101. package/package.json +32 -33
  102. package/src/styles/animations.css +6 -2
  103. package/src/styles/dock/density.css +230 -0
  104. package/src/styles/dock/layer-group.css +263 -0
  105. package/src/styles/dock/layers.css +355 -0
  106. package/src/styles/dock/morph.css +244 -0
  107. package/src/styles/dock/overflow.css +201 -0
  108. package/src/styles/dock/shell.css +457 -0
  109. package/src/styles/dock-controls.css +166 -32
  110. package/src/styles/dock.css +42 -1349
  111. package/src/styles/glass.css +396 -75
  112. package/src/styles/index.css +12 -11
  113. package/src/styles/theme.css +51 -0
  114. package/src/styles/tokens.css +501 -55
  115. package/src/styles/utilities.css +89 -39
  116. package/dist/DiscoGlyph-CG0F410s.js +0 -132
  117. package/dist/GlyphFace-DRjDkB0s.js +0 -51
  118. package/dist/UnderlineTabs-Uxn-R3MT.js +0 -39
  119. package/dist/components/custom/aurora/constants/shaders/painterly.wgsl.d.ts +0 -7
  120. package/dist/components/custom/aurora/constants/shaders/wake.wgsl.d.ts +0 -4
  121. package/dist/components/custom/disco-glyph/DiscoGlyph.vue.d.ts +0 -58
  122. package/dist/components/custom/disco-glyph/index.d.ts +0 -1
  123. package/dist/components/custom/glass-carousel/GlassCarousel.vue.d.ts +0 -36
  124. package/dist/components/custom/glass-carousel/GlassCarouselItem.vue.d.ts +0 -28
  125. package/dist/components/custom/glass-carousel/index.d.ts +0 -4
  126. package/dist/components/custom/glass-carousel/useGlassCarousel.d.ts +0 -30
  127. package/dist/components/custom/glyph-face/GlyphFace.vue.d.ts +0 -64
  128. package/dist/components/custom/glyph-face/index.d.ts +0 -2
  129. package/dist/components/custom/glyph-face/keys.d.ts +0 -9
  130. package/dist/components/custom/responsive-tabs/ResponsiveTabs.vue.d.ts +0 -73
  131. package/dist/components/custom/responsive-tabs/index.d.ts +0 -2
  132. package/dist/components/custom/tabs/BouncyTabs.vue.d.ts +0 -27
  133. package/dist/components/custom/tabs/BouncyToggle.vue.d.ts +0 -60
  134. package/dist/components/custom/tabs/UnderlineTabs.vue.d.ts +0 -20
  135. package/dist/components/custom/tabs/composables/useBouncySlider.d.ts +0 -39
  136. package/dist/disco-glyph.d.ts +0 -1
  137. package/dist/disco-glyph.js +0 -2
  138. package/dist/glass-carousel.d.ts +0 -1
  139. package/dist/glass-carousel.js +0 -219
  140. package/dist/glyph-face.d.ts +0 -1
  141. package/dist/glyph-face.js +0 -3
  142. package/dist/keys-BsYjEFOW.js +0 -9
  143. package/dist/responsive-tabs.d.ts +0 -1
  144. package/dist/responsive-tabs.js +0 -95
  145. package/dist/styles/disco-glyph.css +0 -26
  146. package/dist/styles/glyph-face.css +0 -92
  147. package/src/styles/disco-glyph.css +0 -26
  148. package/src/styles/glyph-face.css +0 -92
  149. /package/dist/{DeckProgress-AVgbIULY.js → DeckProgress-Dmk4_AKN.js} +0 -0
  150. /package/dist/{HoverPopover-D56O6Ylp.js → HoverPopover-2LOIW34a.js} +0 -0
  151. /package/dist/{IconTooltip-D2T5nYOM.js → IconTooltip-yefK7cJc.js} +0 -0
  152. /package/dist/{Input-DVG_J0ne.js → Input-DWQQIOC4.js} +0 -0
  153. /package/dist/{ScrollingText-CVyqxvfv.js → ScrollingText-BPP84wKo.js} +0 -0
  154. /package/dist/{color-DMLTunJK.js → color-8jBjWiJ6.js} +0 -0
  155. /package/dist/{constants-BPOqYJAm.js → constants-CS75AWHG.js} +0 -0
  156. /package/dist/{presets-D1XPuTj-.js → presets-BKVyQfbt.js} +0 -0
  157. /package/dist/{prng-COGhh02-.js → prng-wHuHlNHE.js} +0 -0
  158. /package/dist/{useGlobalDark-D3EBWzXK.js → useGlobalDark-yhL4Wp-s.js} +0 -0
  159. /package/dist/{useIntersectionPause-Bj4sPkMh.js → useIntersectionPause-Cc-H9ees.js} +0 -0
  160. /package/dist/{useInterval-CcLfq2WU.js → useInterval-Dsmqwi03.js} +0 -0
  161. /package/dist/{useKeyboardShortcuts-BXWXOZ-9.js → useKeyboardShortcuts-Be3w_Rwk.js} +0 -0
  162. /package/dist/{useScrollProgress-C9ysDic5.js → useScrollProgress-CAH8Ofwt.js} +0 -0
  163. /package/dist/{useSortable-MGAbCGVJ.js → useSortable-C8ReQ50P.js} +0 -0
  164. /package/dist/{useTextHighlight-9nMW23Qb.js → useTextHighlight-DON84L8w.js} +0 -0
@@ -1,64 +0,0 @@
1
- import type { HTMLAttributes } from "vue";
2
- /**
3
- * <GlyphFace> — phase-tinted lucide wrapper with catch-light cap.
4
- *
5
- * Three layers compose around any slotted glyph:
6
- * 1. backplate — phase-tinted radial gradient (or transparent at idle).
7
- * Reads as the icon "sitting in" something.
8
- * 2. slot — the slotted glyph silhouette, unchanged. Stays `currentColor`
9
- * so the glyph reads Vignelli-clean; the disco punch is in the
10
- * backplate + cap layers.
11
- * 3. cap — 165° linear-gradient pseudo with `mix-blend-mode: screen`
12
- * (Q.W3 default; consumers may override to `overlay` for the
13
- * metallic-punch substrate). Reads as a single specular hot-spot
14
- * in the upper-left, painted only against the slotted silhouette.
15
- *
16
- * Q.W3.A.1 inversion: cap clips to silhouette by default. Three resolution
17
- * paths populate `--gf-silhouette`:
18
- * - explicit `silhouette` prop on this component (path d-attr or raw
19
- * `clip-path` expression);
20
- * - provide/inject from a `<DiscoGlyph>` descendant — the disco
21
- * primitive publishes its `silhouette` upward via the
22
- * `GLYPH_FACE_SILHOUETTE_KEY` symbol, so wrappers around the four
23
- * speedtest disco icons inherit the silhouette without a
24
- * consumer-side prop plumb;
25
- * - lucide consumers pass the silhouette explicitly via the
26
- * `lucide-silhouettes.ts` table at the speedtest project.
27
- *
28
- * When no silhouette resolves the cap renders nothing — the fail-safe
29
- * is "no cap" not "wrong cap" (closes the wrapper-rectangle leak A1 §1.2
30
- * traced to the lucide consumer sites).
31
- *
32
- * `tint` accepts any CSS color or var (e.g. `var(--phase-color)`); the
33
- * backplate's `--gf-tint` custom property reads it. Defaults transparent,
34
- * so `<GlyphFace>` without `active` reads as a plain glyph wrapper.
35
- */
36
- type __VLS_Props = {
37
- /** Whether the backplate is visible. Defaults `false`. */
38
- active?: boolean;
39
- /** CSS color/var for the backplate tint. Defaults transparent. */
40
- tint?: string;
41
- /**
42
- * SVG path d-attribute or raw CSS clip-path expression that
43
- * masks the cap to a glyph silhouette. When set, the cap clips
44
- * to the supplied shape. Takes precedence over silhouette
45
- * provided by a descendant DiscoGlyph.
46
- */
47
- silhouette?: string;
48
- class?: HTMLAttributes["class"];
49
- };
50
- declare var __VLS_1: {};
51
- type __VLS_Slots = {} & {
52
- default?: (props: typeof __VLS_1) => any;
53
- };
54
- declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
55
- active: boolean;
56
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
57
- declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
58
- declare const _default: typeof __VLS_export;
59
- export default _default;
60
- type __VLS_WithSlots<T, S> = T & {
61
- new (): {
62
- $slots: S;
63
- };
64
- };
@@ -1,2 +0,0 @@
1
- export { default as GlyphFace } from "./GlyphFace.vue";
2
- export { GLYPH_FACE_SILHOUETTE_KEY, provideGlyphFaceSilhouette, useOptionalGlyphFaceSilhouette, } from "./keys";
@@ -1,9 +0,0 @@
1
- import type { Ref } from "vue";
2
- export declare const GLYPH_FACE_SILHOUETTE_KEY: import("vue").InjectionKey<Ref<string | undefined, string | undefined>>;
3
- export declare function provideGlyphFaceSilhouette(slot: Ref<string | undefined>): void;
4
- /**
5
- * Befitting silent default — returns `null` when no parent `<GlyphFace>`
6
- * is present. `<DiscoGlyph>` cooperates with a wrapping `<GlyphFace>` when
7
- * the slot is available; otherwise stands alone.
8
- */
9
- export declare const useOptionalGlyphFaceSilhouette: () => Ref<string | undefined, string | undefined> | null;
@@ -1,73 +0,0 @@
1
- import type { HTMLAttributes } from "vue";
2
- import { type TabOption } from "../tabs";
3
- /**
4
- * ResponsiveTabs — single consume that renders as `<Select>` below the
5
- * configured breakpoint and `<UnderlineTabs>` at/above it.
6
- *
7
- * AC.W8e (glass-ui v1.7.0) — promoted from speedtest's 3-site duplicated
8
- * mobile-Select / desktop-UnderlineTabs swap (AdminDataView,
9
- * AdminDashboardLayout, PublicDashboardLayout). Each site rolled its own
10
- * `sm:hidden` / `hidden sm:block` pair; the primitive collapses the
11
- * duplication onto a single matchMedia-driven swap. The dual-mount CSS
12
- * pattern is preserved at the JSDOM/SSR level by initializing
13
- * `isDesktop` from `window.matchMedia(...)`'s `matches` (or `true` when
14
- * `window` is absent, matching server-rendered desktop-first).
15
- *
16
- * The `breakpoint` prop is a CSS length consumed inside the
17
- * `(min-width: <breakpoint>)` media query — pass `"640px"` (the Tailwind
18
- * `sm:` rung default), `"720px"` (speedtest's grid-engagement rung), or
19
- * any other value the consumer needs.
20
- *
21
- * The select trigger inherits `glass-ui`'s canonical `text-small w-auto
22
- * min-w-input-sm` chrome so the mobile control reads at the small text
23
- * register. UnderlineTabs receives the `text-body` register and forwards
24
- * any consumer-passed `class`.
25
- *
26
- * Consumer-side reactive selection flows through `modelValue` /
27
- * `update:modelValue` symmetrically across both controls; the primitive
28
- * exposes one model so the consumer doesn't bind two.
29
- */
30
- export interface ResponsiveTabsProps {
31
- /** Tab options — shared between mobile select + desktop tabs. */
32
- options: TabOption[];
33
- /**
34
- * Optional subset for desktop tabs. If a consumer has a mobile-only
35
- * tab (e.g. speedtest AdminDataView's "Filters" tab which is
36
- * desktop-sidebar-rendered), pass the desktop-relevant subset here.
37
- * Falls back to `options` when unset.
38
- */
39
- desktopOptions?: TabOption[] | null;
40
- /**
41
- * CSS length string for the media query breakpoint. Mobile-control
42
- * (Select) below; desktop-control (UnderlineTabs) at/above.
43
- * Defaults to `"640px"` (Tailwind `sm:`).
44
- */
45
- breakpoint?: string;
46
- /** Class merged onto both controls' chrome. */
47
- class?: HTMLAttributes["class"];
48
- /** Class merged onto the desktop UnderlineTabs only. */
49
- desktopClass?: HTMLAttributes["class"];
50
- /** Class merged onto the mobile SelectTrigger only. */
51
- mobileTriggerClass?: HTMLAttributes["class"];
52
- /**
53
- * Accessible name for the mobile `<SelectTrigger>` (axe `select-name` /
54
- * WCAG 4.1.2 — the bare trigger carries only a `<SelectValue>`). Defaults to
55
- * the active option's label.
56
- */
57
- ariaLabel?: string;
58
- }
59
- type __VLS_Props = ResponsiveTabsProps;
60
- type __VLS_ModelProps = {
61
- modelValue: string;
62
- };
63
- type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
64
- declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
65
- "update:modelValue": (value: string) => any;
66
- }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
67
- "onUpdate:modelValue"?: ((value: string) => any) | undefined;
68
- }>, {
69
- desktopOptions: TabOption[] | null;
70
- breakpoint: string;
71
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
72
- declare const _default: typeof __VLS_export;
73
- export default _default;
@@ -1,2 +0,0 @@
1
- export { default as ResponsiveTabs } from "./ResponsiveTabs.vue";
2
- export type { ResponsiveTabsProps } from "./ResponsiveTabs.vue";
@@ -1,27 +0,0 @@
1
- import { type HTMLAttributes } from "vue";
2
- export interface TabOption {
3
- label: string;
4
- value: string;
5
- }
6
- type __VLS_Props = {
7
- options: TabOption[];
8
- /** "default" = subtle muted slider; "pill" = solid foreground pill */
9
- variant?: "default" | "pill";
10
- /** Tab-row overflow — see `<BouncyToggle>`. */
11
- overflow?: "none" | "scroll" | "auto";
12
- class?: HTMLAttributes["class"];
13
- };
14
- type __VLS_ModelProps = {
15
- modelValue: string;
16
- };
17
- type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
18
- declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
19
- "update:modelValue": (value: string) => any;
20
- }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
21
- "onUpdate:modelValue"?: ((value: string) => any) | undefined;
22
- }>, {
23
- overflow: "none" | "scroll" | "auto";
24
- variant: "default" | "pill";
25
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
26
- declare const _default: typeof __VLS_export;
27
- export default _default;
@@ -1,60 +0,0 @@
1
- import { type HTMLAttributes } from "vue";
2
- export interface ToggleOption {
3
- label: string;
4
- value: string;
5
- icon?: string;
6
- disabled?: boolean;
7
- tooltip?: string;
8
- }
9
- export interface BouncyToggleProps {
10
- options: ToggleOption[];
11
- multiSelect?: boolean;
12
- /** "default" = subtle muted slider; "pill" = solid foreground pill */
13
- variant?: "default" | "pill";
14
- /**
15
- * Tab-row overflow handling.
16
- * - `"none"` (default) — inline-grid with `1fr` tracks; tabs share width
17
- * and clip when content exceeds the parent.
18
- * - `"scroll"` — flex row with intrinsic-width tracks + `.scroll-fade-mask`
19
- * + `.scrollbar-hidden`; tab text never truncates and overflowing tabs
20
- * scroll horizontally with edge fades.
21
- * - `"auto"` — flex row with intrinsic widths and a horizontal scroll
22
- * fallback (no fade); useful when the parent already owns the affordance.
23
- */
24
- overflow?: "none" | "scroll" | "auto";
25
- class?: HTMLAttributes["class"];
26
- }
27
- type __VLS_Props = BouncyToggleProps;
28
- type __VLS_ModelProps = {
29
- modelValue: string | string[];
30
- };
31
- type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
32
- declare var __VLS_19: {
33
- option: ToggleOption;
34
- active: boolean;
35
- }, __VLS_27: {
36
- option: ToggleOption;
37
- active: boolean;
38
- };
39
- type __VLS_Slots = {} & {
40
- option?: (props: typeof __VLS_19) => any;
41
- } & {
42
- option?: (props: typeof __VLS_27) => any;
43
- };
44
- declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
45
- "update:modelValue": (value: string | string[]) => any;
46
- }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
47
- "onUpdate:modelValue"?: ((value: string | string[]) => any) | undefined;
48
- }>, {
49
- overflow: "none" | "scroll" | "auto";
50
- variant: "default" | "pill";
51
- multiSelect: boolean;
52
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
53
- declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
54
- declare const _default: typeof __VLS_export;
55
- export default _default;
56
- type __VLS_WithSlots<T, S> = T & {
57
- new (): {
58
- $slots: S;
59
- };
60
- };
@@ -1,20 +0,0 @@
1
- import { type HTMLAttributes } from "vue";
2
- export interface TabOption {
3
- label: string;
4
- value: string;
5
- }
6
- type __VLS_Props = {
7
- options: TabOption[];
8
- class?: HTMLAttributes["class"];
9
- };
10
- type __VLS_ModelProps = {
11
- modelValue: string;
12
- };
13
- type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
14
- declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
15
- "update:modelValue": (value: string) => any;
16
- }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
17
- "onUpdate:modelValue"?: ((value: string) => any) | undefined;
18
- }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
- declare const _default: typeof __VLS_export;
20
- export default _default;
@@ -1,39 +0,0 @@
1
- import { type Ref, type ComputedRef } from "vue";
2
- import type { ToggleOption } from "../BouncyToggle.vue";
3
- /**
4
- * Package-private composable for `BouncyToggle.vue` — owns the JS-measured
5
- * slider path: the single- and multi-select slider styles, the offset measure,
6
- * the model/options re-measure watchers, and the ResizeObserver lifecycle.
7
- *
8
- * The composable is the SOLE writer of the JS slider styles. It runs only on
9
- * the multi-select OR `@supports not (anchor)` branch — on an anchor-supporting
10
- * single-select engine the CSS `anchor-name` owns the slider position and this
11
- * path stays dormant (no RO is constructed, no measure runs). The split is a
12
- * KISS transposition of the logic formerly inlined in the SFC; rendered DOM and
13
- * behavior are unchanged.
14
- */
15
- export interface UseBouncySliderParams {
16
- /** The container scroller root (observed by the ResizeObserver). */
17
- containerRef: Ref<HTMLElement | null>;
18
- /** Per-option button refs, index-aligned to `options`. */
19
- buttonRefs: Ref<HTMLElement[]>;
20
- /** The toggle options (re-measure on change). */
21
- options: ComputedRef<ToggleOption[]>;
22
- /** The defineModel value (re-measure on change). */
23
- model: Ref<string | string[] | undefined>;
24
- /** True for the multi-select path. */
25
- multiSelect: ComputedRef<boolean>;
26
- /** Whether the browser supports CSS anchor positioning. */
27
- anchorSupported: boolean;
28
- /** True when ANY JS slider writer is live (gates RO/watcher attach). */
29
- jsSliderActive: ComputedRef<boolean>;
30
- /** The active option values (used by the multi-slider measure). */
31
- activeValues: ComputedRef<string[]>;
32
- }
33
- export interface UseBouncySliderReturn {
34
- /** Inline style for the single-select JS slider. */
35
- singleSliderStyle: Ref<Record<string, string>>;
36
- /** Inline styles for each active multi-select slider, keyed by value. */
37
- multiSliderStyles: Ref<Record<string, Record<string, string>>>;
38
- }
39
- export declare function useBouncySlider(params: UseBouncySliderParams): UseBouncySliderReturn;
@@ -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 };