@mkbabb/glass-ui 2.1.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/dist/{CardFooter-Yi0xtLLd.js → CardFooter-CSGcJkqa.js} +1 -1
  2. package/dist/{CommandShortcut-_INFUMu6.js → CommandShortcut-DWT19a2Y.js} +3 -3
  3. package/dist/{ContextMenuSubContent-DCkweFW9.js → ContextMenuSubContent-gAFxJ-qi.js} +1 -1
  4. package/dist/{DataTable-Ce00dbHD.js → DataTable-R8-Zidms.js} +3 -3
  5. package/dist/{DialogContent-CmCijgX9.js → DialogContent-2fALDSvc.js} +3 -3
  6. package/dist/{DialogFooter-DRdaCok0.js → DialogFooter-ClrNEOVU.js} +2 -2
  7. package/dist/{DiscoGlyph-wRA02zAJ.js → DiscoGlyph-C3JfMnRV.js} +1 -1
  8. package/dist/{GlyphFace-BnPMUZ16.js → GlyphFace-BRS8vUb7.js} +1 -1
  9. package/dist/HoverPopover-CWFCfLx3.js +96 -0
  10. package/dist/{IconTooltip-ge_mBSWR.js → IconTooltip-BkaA7tZ2.js} +1 -1
  11. package/dist/{Input-CbakTe3B.js → Input-DDpFn568.js} +3 -5
  12. package/dist/Label-DJty89bp.js +36 -0
  13. package/dist/{MetricBadge-DRBB18Xq.js → MetricBadge-DmAihkXd.js} +1 -1
  14. package/dist/{Notification-DrI1DT2v.js → Notification-OqIpADml.js} +2 -2
  15. package/dist/NumberFieldContent-DTH9gb_N.js +141 -0
  16. package/dist/{PopoverContent-BCH4eYs8.js → PopoverContent-EiklFrna.js} +1 -1
  17. package/dist/{Progress-CCH-2UBR.js → Progress-FApA9fm_.js} +1 -1
  18. package/dist/{ScrollingText-7P8skg5W.js → ScrollingText-BFd0i2zJ.js} +2 -2
  19. package/dist/{SelectScrollDownButton-yu8EYUnu.js → SelectScrollDownButton-Dth8-wXQ.js} +2 -2
  20. package/dist/{Toaster-DY8_jtHv.js → Toaster-Bjlunvq4.js} +69 -58
  21. package/dist/UnderlineTabs-DAWMLmJG.js +37 -0
  22. package/dist/animated-digit.js +2 -2
  23. package/dist/api/index.d.ts +2 -0
  24. package/dist/api.js +1 -1
  25. package/dist/aurora.js +103 -90
  26. package/dist/badge.js +1 -1
  27. package/dist/{button-BlOW34DT.js → button-C0aHmBbt.js} +2 -0
  28. package/dist/button.js +1 -1
  29. package/dist/card.js +1 -1
  30. package/dist/carousel.js +1 -1
  31. package/dist/collapsible.js +1 -1
  32. package/dist/command.js +1 -1
  33. package/dist/components/custom/aurora/composables/runtime.d.ts +24 -1
  34. package/dist/components/custom/dialog-native/GlassDialogNative.vue.d.ts +57 -0
  35. package/dist/components/custom/dialog-native/index.d.ts +1 -0
  36. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +20 -10
  37. package/dist/components/custom/hover-popover/HoverPopover.vue.d.ts +26 -4
  38. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +16 -2
  39. package/dist/components/custom/labeled-field/LabeledInput.vue.d.ts +17 -1
  40. package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +2 -0
  41. package/dist/components/custom/labeled-field/LabeledSlider.vue.d.ts +2 -0
  42. package/dist/components/custom/labeled-field/LabeledSwitch.vue.d.ts +2 -0
  43. package/dist/components/custom/toggle-chip/ToggleChip.vue.d.ts +6 -4
  44. package/dist/components/ui/input/Input.vue.d.ts +10 -7
  45. package/dist/components/ui/label/Label.vue.d.ts +8 -0
  46. package/dist/components/ui/textarea/Textarea.vue.d.ts +45 -8
  47. package/dist/components/ui/toast/Toaster.vue.d.ts +7 -1
  48. package/dist/components/ui/toast/index.d.ts +1 -0
  49. package/dist/composables/dark/index.d.ts +1 -0
  50. package/dist/composables/dom/index.d.ts +2 -0
  51. package/dist/composables/dom/useIdleReady.d.ts +63 -0
  52. package/dist/composables/dom/useUserInvalidAria.d.ts +32 -0
  53. package/dist/composables/index.d.ts +1 -0
  54. package/dist/composables/motion/core/index.d.ts +8 -0
  55. package/dist/composables/motion/index.d.ts +0 -7
  56. package/dist/composables/motion/supportsCssTimeline.d.ts +8 -0
  57. package/dist/composables/motion/useRAFLoop.d.ts +7 -0
  58. package/dist/composables/motion/useScrollProgress.d.ts +6 -2
  59. package/dist/composables/motion/useStaggerReveal.d.ts +6 -0
  60. package/dist/composables/motion/useViewTransition.d.ts +31 -0
  61. package/dist/composables/motion/useYieldToMain.d.ts +29 -0
  62. package/dist/configurator.js +1 -1
  63. package/dist/confirm-dialog.js +2 -2
  64. package/dist/constants-DwBwnG8N.js +13 -0
  65. package/dist/context-menu.js +2 -2
  66. package/dist/controls.js +2 -2
  67. package/dist/dark.d.ts +1 -1
  68. package/dist/dark.js +13 -2
  69. package/dist/data-table.js +1 -1
  70. package/dist/dialog.js +2 -2
  71. package/dist/disco-glyph.js +1 -1
  72. package/dist/dock.js +195 -176
  73. package/dist/dom.js +5 -4
  74. package/dist/{dropdown-menu-2K-SGkZU.js → dropdown-menu-BvRUamNs.js} +2 -2
  75. package/dist/dropdown-menu.js +1 -1
  76. package/dist/expandable-container.js +3 -3
  77. package/dist/forms.d.ts +1 -0
  78. package/dist/forms.js +47 -42
  79. package/dist/glass-carousel.js +1 -1
  80. package/dist/glass-panel.js +2 -2
  81. package/dist/glass-ui.css +1 -1
  82. package/dist/glass-ui.js +156 -275
  83. package/dist/glyph-face.js +2 -2
  84. package/dist/header-ribbon.js +1 -1
  85. package/dist/hover-card.js +1 -1
  86. package/dist/hover-popover.js +1 -1
  87. package/dist/icon-tooltip.js +1 -1
  88. package/dist/index.d.ts +1 -0
  89. package/dist/instrument-chassis.js +1 -1
  90. package/dist/instrument-rail.js +1 -1
  91. package/dist/keyboard.js +1 -1
  92. package/dist/label.js +1 -1
  93. package/dist/labeled-field.js +96 -57
  94. package/dist/metric-badge.js +1 -1
  95. package/dist/metric-stack.js +1 -1
  96. package/dist/motion-core.d.ts +1 -0
  97. package/dist/motion-core.js +229 -0
  98. package/dist/motion.js +26 -228
  99. package/dist/notification.js +1 -1
  100. package/dist/number-field.d.ts +1 -0
  101. package/dist/number-field.js +2 -0
  102. package/dist/paper-backdrop.js +1 -1
  103. package/dist/popover.js +1 -1
  104. package/dist/progress.js +1 -1
  105. package/dist/pulse.js +1 -1
  106. package/dist/reactive.js +2 -2
  107. package/dist/responsive-tabs.js +3 -3
  108. package/dist/scrolling-text.js +1 -1
  109. package/dist/search.js +6 -6
  110. package/dist/select.js +3 -3
  111. package/dist/separator.js +1 -1
  112. package/dist/{sheet-CLVkb3AO.js → sheet-CukNDezz.js} +53 -53
  113. package/dist/sheet.js +1 -1
  114. package/dist/{slider-BQaLYFLh.js → slider-DJvHkTRe.js} +3 -3
  115. package/dist/slider.js +1 -1
  116. package/dist/sortable-list.js +2 -2
  117. package/dist/styles/animations.css +77 -0
  118. package/dist/styles/cards.css +6 -2
  119. package/dist/styles/dock.css +109 -109
  120. package/dist/styles/drawer.css +2 -2
  121. package/dist/styles/glass.css +89 -6
  122. package/dist/styles/index.css +10 -1
  123. package/dist/styles/instrument-chassis.css +28 -1
  124. package/dist/styles/scroll-driven.css +72 -0
  125. package/dist/styles/theme.css +6 -0
  126. package/dist/styles/tokens.css +345 -289
  127. package/dist/styles/typography.css +65 -131
  128. package/dist/styles/utilities.css +199 -81
  129. package/dist/styles/view-transition.css +62 -0
  130. package/dist/switch.d.ts +1 -0
  131. package/dist/switch.js +2 -0
  132. package/dist/tabs.js +40 -36
  133. package/dist/timeline.js +2 -2
  134. package/dist/toast.js +1 -1
  135. package/dist/toggle-group.js +1 -1
  136. package/dist/tooltip.js +1 -1
  137. package/dist/typewriter.js +1 -1
  138. package/dist/{useAnimatedNumber-DcvTR9B4.js → useAnimatedNumber-DKQYVB7s.js} +9 -20
  139. package/dist/{useConfiguratorState-BlaevW0S.js → useConfiguratorState-BR5vUDL8.js} +5 -5
  140. package/dist/{useBreakpoint-BHlX-MhR.js → useIdleReady-Cmkhm03v.js} +30 -2
  141. package/dist/{useTouchGate-BhhEMlwJ.js → useTouchGate-D9Zvrzyc.js} +1 -1
  142. package/dist/useUserInvalidAria-DVu1eTXG.js +29 -0
  143. package/dist/useViewTransition-DYIK6Gzb.js +16 -0
  144. package/dist/utils/index.d.ts +1 -0
  145. package/dist/utils/moveBefore.d.ts +15 -0
  146. package/package.json +27 -6
  147. package/src/styles/animations.css +77 -0
  148. package/src/styles/cards.css +6 -2
  149. package/src/styles/dock.css +109 -109
  150. package/src/styles/drawer.css +2 -2
  151. package/src/styles/glass.css +89 -6
  152. package/src/styles/index.css +10 -1
  153. package/src/styles/instrument-chassis.css +28 -1
  154. package/src/styles/scroll-driven.css +72 -0
  155. package/src/styles/theme.css +6 -0
  156. package/src/styles/tokens.css +345 -289
  157. package/src/styles/typography.css +65 -131
  158. package/src/styles/utilities.css +199 -81
  159. package/src/styles/view-transition.css +62 -0
  160. package/dist/HoverPopover-Btv4RQfv.js +0 -80
  161. package/dist/Label-C8QMJSsf.js +0 -32
  162. package/dist/UnderlineTabs-BtrUcXn-.js +0 -64
  163. package/dist/composables/motion/useSpringOrchestrator.d.ts +0 -15
  164. /package/dist/{CollapsibleContent-DHRuXE3P.js → CollapsibleContent-CVMOcYlV.js} +0 -0
  165. /package/dist/{ContextMenuContent-CvXfU5qz.js → ContextMenuContent-otjFIu8v.js} +0 -0
  166. /package/dist/{HoverCardContent-4nN5-5bz.js → HoverCardContent-DaGrgJBO.js} +0 -0
  167. /package/dist/{InstrumentChassis-DOaVYyWq.js → InstrumentChassis-CnHTMxds.js} +0 -0
  168. /package/dist/{InstrumentRail-jHDqXj70.js → InstrumentRail-C6dEbi8E.js} +0 -0
  169. /package/dist/{ModalOverlay-DKLVY-cj.js → ModalOverlay-iWiAgbYH.js} +0 -0
  170. /package/dist/{PaperBackdrop-Bc2drCqJ.js → PaperBackdrop-CeZ-w0R0.js} +0 -0
  171. /package/dist/{SelectGroup-O69GTQ77.js → SelectGroup-DdR4tdDY.js} +0 -0
  172. /package/dist/{SelectSeparator-GTHxKO0a.js → SelectSeparator-CXm_hlqA.js} +0 -0
  173. /package/dist/{Separator-_NCypg_C.js → Separator-D8AUMhxY.js} +0 -0
  174. /package/dist/{Switch-CL0uxu8F.js → Switch-Cr1t_F_U.js} +0 -0
  175. /package/dist/{ToggleGroupItem-BYG_8M9M.js → ToggleGroupItem-OesUouE7.js} +0 -0
  176. /package/dist/{TooltipProvider-C5QLSPto.js → TooltipProvider-DE78vbEP.js} +0 -0
  177. /package/dist/{_plugin-vue_export-helper-n-_DRHWS.js → _plugin-vue_export-helper-Dq1MygBL.js} +0 -0
  178. /package/dist/{badge-BbxVKZfw.js → badge-x46my_Fo.js} +0 -0
  179. /package/dist/composables/{motion → dark}/installDarkModeSync.d.ts +0 -0
  180. /package/dist/{dockContext-BDGSrwsV.js → dockContext-D5NZCWJs.js} +0 -0
  181. /package/dist/{keys-DVkcUktU.js → keys-CaTQS-vx.js} +0 -0
  182. /package/dist/{menuItemVariants-B2nDL7zH.js → menuItemVariants-BsbGNq9C.js} +0 -0
  183. /package/dist/{presets-BMzCDrmR.js → presets-a-D93K1S.js} +0 -0
  184. /package/dist/{search-ocd8tmL9.js → search-DBAiUABx.js} +0 -0
  185. /package/dist/{useGlassRenderer-DMDdMH55.js → useGlassRenderer-Ds-nmrGz.js} +0 -0
  186. /package/dist/{useGlobalDark-PMiP5Jku.js → useGlobalDark-B0WvLJE3.js} +0 -0
  187. /package/dist/{useIntersectionPause-CXYfYg_C.js → useIntersectionPause-IY2CwPQb.js} +0 -0
  188. /package/dist/{useInterval-COlTCeVa.js → useInterval-DVgGUf_y.js} +0 -0
  189. /package/dist/{useKeyboardShortcuts-B1ev1YEC.js → useKeyboardShortcuts-Dpw_RUcB.js} +0 -0
  190. /package/dist/{useResizeObserver-F4aRR4Cj.js → useResizeObserver-Cg9npuM3.js} +0 -0
  191. /package/dist/{useSortable-Ck0rBJ4g.js → useSortable-Cq2Y1JLO.js} +0 -0
  192. /package/dist/{useSpringMount-BTRBNzXP.js → useSpringMount-Cfk1XK1R.js} +0 -0
  193. /package/dist/{useTimer-lp5NlH4w.js → useTimer-NAaj9zNq.js} +0 -0
  194. /package/dist/{x-cdWAmO-q.js → x-q7pJa83X.js} +0 -0
@@ -1,3 +1,3 @@
1
- import { n as e, r as t, t as n } from "./keys-DVkcUktU.js";
2
- import { t as r } from "./GlyphFace-BnPMUZ16.js";
1
+ import { n as e, r as t, t as n } from "./keys-CaTQS-vx.js";
2
+ import { t as r } from "./GlyphFace-BRS8vUb7.js";
3
3
  export { n as GLYPH_FACE_SILHOUETTE_KEY, r as GlyphFace, e as provideGlyphFaceSilhouette, t as useOptionalGlyphFaceSilhouette };
@@ -1,4 +1,4 @@
1
- import { t as e } from "./_plugin-vue_export-helper-n-_DRHWS.js";
1
+ import { t as e } from "./_plugin-vue_export-helper-Dq1MygBL.js";
2
2
  import { computed as t, createCommentVNode as n, createElementBlock as r, createElementVNode as i, defineComponent as a, normalizeClass as o, onBeforeUnmount as s, openBlock as c, ref as l, renderSlot as u } from "vue";
3
3
  //#region src/components/custom/header-ribbon/HeaderRibbon.vue?vue&type=script&setup=true&lang.ts
4
4
  var d = {
@@ -1,2 +1,2 @@
1
- import { n as e, r as t, t as n } from "./HoverCardContent-4nN5-5bz.js";
1
+ import { n as e, r as t, t as n } from "./HoverCardContent-DaGrgJBO.js";
2
2
  export { t as HoverCard, n as HoverCardContent, e as HoverCardTrigger };
@@ -1,2 +1,2 @@
1
- import { t as e } from "./HoverPopover-Btv4RQfv.js";
1
+ import { t as e } from "./HoverPopover-CWFCfLx3.js";
2
2
  export { e as HoverPopover };
@@ -1,2 +1,2 @@
1
- import { t as e } from "./IconTooltip-ge_mBSWR.js";
1
+ import { t as e } from "./IconTooltip-BkaA7tZ2.js";
2
2
  export { e as IconTooltip };
package/dist/index.d.ts CHANGED
@@ -46,4 +46,5 @@ export * from "./composables/reactive";
46
46
  export * from "./composables/dom";
47
47
  export * from "./composables/glass";
48
48
  export * from "./composables/sortable";
49
+ export { startViewTransition, supportsViewTransitions, type ViewTransitionResult, } from "./composables/motion/useViewTransition";
49
50
  export * from "./utils";
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "./InstrumentChassis-DOaVYyWq.js";
1
+ import { n as e, t } from "./InstrumentChassis-CnHTMxds.js";
2
2
  export { e as ChassisDivider, t as InstrumentChassis };
@@ -1,2 +1,2 @@
1
- import { t as e } from "./InstrumentRail-jHDqXj70.js";
1
+ import { t as e } from "./InstrumentRail-C6dEbi8E.js";
2
2
  export { e as InstrumentRail };
package/dist/keyboard.js CHANGED
@@ -1,2 +1,2 @@
1
- import { a as e, i as t, n, r, t as i } from "./useKeyboardShortcuts-B1ev1YEC.js";
1
+ import { a as e, i as t, n, r, t as i } from "./useKeyboardShortcuts-Dpw_RUcB.js";
2
2
  export { i as formatCombo, n as formatComboParts, r as isMac, t as registerShortcut, e as useRegisteredShortcuts };
package/dist/label.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as e } from "./Label-C8QMJSsf.js";
1
+ import { t as e } from "./Label-DJty89bp.js";
2
2
  export { e as Label };
@@ -1,13 +1,21 @@
1
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-yu8EYUnu.js";
3
- import { t as o } from "./SelectGroup-O69GTQ77.js";
4
- import { n as s } from "./slider-BQaLYFLh.js";
5
- import { t as c } from "./Switch-CL0uxu8F.js";
6
- import { t as l } from "./IconTooltip-ge_mBSWR.js";
7
- import { t as u } from "./Input-CbakTe3B.js";
8
- import { Fragment as d, createBlock as f, createCommentVNode as p, createElementBlock as m, createElementVNode as h, createTextVNode as g, createVNode as _, defineComponent as v, normalizeClass as y, openBlock as b, renderList as x, renderSlot as S, toDisplayString as C, unref as w, withCtx as T } from "vue";
2
+ import { a as t, i as n, o as r, r as i, s as a } from "./SelectScrollDownButton-Dth8-wXQ.js";
3
+ import { t as o } from "./SelectGroup-DdR4tdDY.js";
4
+ import { n as s } from "./slider-DJvHkTRe.js";
5
+ import { t as c } from "./Switch-Cr1t_F_U.js";
6
+ import { t as l } from "./IconTooltip-BkaA7tZ2.js";
7
+ import { t as u } from "./Input-DDpFn568.js";
8
+ import { Fragment as d, createBlock as f, createCommentVNode as p, createElementBlock as m, createElementVNode as h, createSlots as g, createTextVNode as _, createVNode as v, defineComponent as y, normalizeClass as b, openBlock as x, renderList as S, renderSlot as C, toDisplayString as w, unref as T, useId as E, withCtx as D } from "vue";
9
9
  //#region src/components/custom/labeled-field/LabeledField.vue?vue&type=script&setup=true&lang.ts
10
- var E = { class: "labeled-field" }, D = /* @__PURE__ */ v({
10
+ var O = { class: "labeled-field" }, k = {
11
+ key: 0,
12
+ class: "text-destructive",
13
+ "aria-hidden": "true"
14
+ }, A = {
15
+ key: 0,
16
+ class: "text-destructive",
17
+ "aria-hidden": "true"
18
+ }, j = ["id"], M = /* @__PURE__ */ y({
11
19
  __name: "LabeledField",
12
20
  props: {
13
21
  label: {},
@@ -18,21 +26,32 @@ var E = { class: "labeled-field" }, D = /* @__PURE__ */ v({
18
26
  String,
19
27
  Object,
20
28
  Array
21
- ] }
29
+ ] },
30
+ required: { type: Boolean }
22
31
  },
23
32
  setup(t) {
24
- return (n, r) => (b(), m("div", E, [t.tooltip ? (b(), f(w(l), {
25
- key: 0,
26
- text: t.tooltip
27
- }, {
28
- default: T(() => [h("label", { class: y(w(e)("labeled-field-label", t.labelClass)) }, C(t.label), 3)]),
29
- _: 1
30
- }, 8, ["text"])) : (b(), m("label", {
31
- key: 1,
32
- class: y(w(e)("labeled-field-label", t.labelClass))
33
- }, C(t.label), 3)), S(n.$slots, "default")]));
33
+ let n = E();
34
+ return (r, i) => (x(), m("div", O, [
35
+ t.tooltip ? (x(), f(T(l), {
36
+ key: 0,
37
+ text: t.tooltip
38
+ }, {
39
+ default: D(() => [h("label", { class: b(T(e)("labeled-field-label", t.labelClass)) }, [_(w(t.label), 1), t.required ? (x(), m("span", k, " *")) : p("", !0)], 2)]),
40
+ _: 1
41
+ }, 8, ["text"])) : (x(), m("label", {
42
+ key: 1,
43
+ class: b(T(e)("labeled-field-label", t.labelClass))
44
+ }, [_(w(t.label), 1), t.required ? (x(), m("span", A, " *")) : p("", !0)], 2)),
45
+ C(r.$slots, "default", { errorId: T(n) }),
46
+ r.$slots.error ? (x(), m("div", {
47
+ key: 2,
48
+ id: T(n),
49
+ class: "labeled-field-error",
50
+ "aria-live": "polite"
51
+ }, [C(r.$slots, "error")], 8, j)) : p("", !0)
52
+ ]));
34
53
  }
35
- }), O = /* @__PURE__ */ v({
54
+ }), N = /* @__PURE__ */ y({
36
55
  __name: "LabeledInput",
37
56
  props: {
38
57
  modelValue: {},
@@ -40,37 +59,48 @@ var E = { class: "labeled-field" }, D = /* @__PURE__ */ v({
40
59
  tooltip: {},
41
60
  labelClass: {},
42
61
  inputClass: {},
43
- type: {}
62
+ type: {},
63
+ required: { type: Boolean }
44
64
  },
45
65
  emits: ["update:modelValue"],
46
66
  setup(e, { emit: t }) {
47
67
  let n = t;
48
- return (t, r) => (b(), f(D, {
68
+ return (t, r) => (x(), f(M, {
49
69
  label: e.label,
50
70
  tooltip: e.tooltip,
51
- "label-class": e.labelClass
52
- }, {
53
- default: T(() => [_(w(u), {
71
+ "label-class": e.labelClass,
72
+ required: e.required
73
+ }, g({
74
+ default: D(({ errorId: i }) => [v(T(u), {
54
75
  type: e.type ?? "string",
55
- class: y(e.inputClass ?? "fira-code"),
76
+ class: b(e.inputClass ?? "fira-code"),
56
77
  "model-value": e.modelValue,
78
+ required: e.required,
79
+ "aria-errormessage": t.$slots.error ? i : void 0,
57
80
  onChange: r[0] ||= (e) => n("update:modelValue", e.target.value)
58
81
  }, null, 8, [
59
82
  "type",
60
83
  "class",
61
- "model-value"
84
+ "model-value",
85
+ "required",
86
+ "aria-errormessage"
62
87
  ])]),
63
- _: 1
64
- }, 8, [
88
+ _: 2
89
+ }, [t.$slots.error ? {
90
+ name: "error",
91
+ fn: D(() => [C(t.$slots, "error")]),
92
+ key: "0"
93
+ } : void 0]), 1032, [
65
94
  "label",
66
95
  "tooltip",
67
- "label-class"
96
+ "label-class",
97
+ "required"
68
98
  ]));
69
99
  }
70
- }), k = {
100
+ }), P = {
71
101
  key: 0,
72
102
  class: "ml-auto pl-2 text-micro text-muted-foreground whitespace-nowrap"
73
- }, A = /* @__PURE__ */ v({
103
+ }, F = /* @__PURE__ */ y({
74
104
  __name: "LabeledSelect",
75
105
  props: {
76
106
  modelValue: {},
@@ -79,33 +109,35 @@ var E = { class: "labeled-field" }, D = /* @__PURE__ */ v({
79
109
  descriptions: {},
80
110
  label: {},
81
111
  tooltip: {},
82
- labelClass: {}
112
+ labelClass: {},
113
+ required: { type: Boolean }
83
114
  },
84
115
  emits: ["update:modelValue", "update:open"],
85
116
  setup(e, { emit: s }) {
86
117
  let c = s;
87
- return (s, l) => (b(), f(D, {
118
+ return (s, l) => (x(), f(M, {
88
119
  label: e.label,
89
120
  tooltip: e.tooltip,
90
- "label-class": e.labelClass
121
+ "label-class": e.labelClass,
122
+ required: e.required
91
123
  }, {
92
- default: T(() => [_(w(a), {
124
+ default: D(() => [v(T(a), {
93
125
  "model-value": e.modelValue,
94
126
  open: e.isOpen,
95
127
  "onUpdate:open": l[0] ||= (e) => c("update:open", e),
96
128
  "onUpdate:modelValue": l[1] ||= (e) => c("update:modelValue", e)
97
129
  }, {
98
- default: T(() => [_(w(t), { class: "fira-code" }, {
99
- default: T(() => [_(w(r))]),
130
+ default: D(() => [v(T(t), { class: "fira-code" }, {
131
+ default: D(() => [v(T(r))]),
100
132
  _: 1
101
- }), _(w(n), null, {
102
- default: T(() => [_(w(o), { class: "fira-code" }, {
103
- default: T(() => [(b(!0), m(d, null, x(e.items, (t) => (b(), f(w(i), {
133
+ }), v(T(n), null, {
134
+ default: D(() => [v(T(o), { class: "fira-code" }, {
135
+ default: D(() => [(x(!0), m(d, null, S(e.items, (t) => (x(), f(T(i), {
104
136
  key: t,
105
137
  value: t
106
138
  }, {
107
- description: T(() => [e.descriptions?.[t] ? (b(), m("span", k, C(e.descriptions[t]), 1)) : p("", !0)]),
108
- default: T(() => [g(C(t) + " ", 1)]),
139
+ description: D(() => [e.descriptions?.[t] ? (x(), m("span", P, w(e.descriptions[t]), 1)) : p("", !0)]),
140
+ default: D(() => [_(w(t) + " ", 1)]),
109
141
  _: 2
110
142
  }, 1032, ["value"]))), 128))]),
111
143
  _: 1
@@ -118,10 +150,11 @@ var E = { class: "labeled-field" }, D = /* @__PURE__ */ v({
118
150
  }, 8, [
119
151
  "label",
120
152
  "tooltip",
121
- "label-class"
153
+ "label-class",
154
+ "required"
122
155
  ]));
123
156
  }
124
- }), j = /* @__PURE__ */ v({
157
+ }), I = /* @__PURE__ */ y({
125
158
  __name: "LabeledSlider",
126
159
  props: {
127
160
  modelValue: {},
@@ -130,17 +163,19 @@ var E = { class: "labeled-field" }, D = /* @__PURE__ */ v({
130
163
  labelClass: {},
131
164
  min: {},
132
165
  max: {},
133
- step: {}
166
+ step: {},
167
+ required: { type: Boolean }
134
168
  },
135
169
  emits: ["update:modelValue"],
136
170
  setup(e, { emit: t }) {
137
171
  let n = t;
138
- return (t, r) => (b(), f(D, {
172
+ return (t, r) => (x(), f(M, {
139
173
  label: e.label,
140
174
  tooltip: e.tooltip,
141
- "label-class": e.labelClass
175
+ "label-class": e.labelClass,
176
+ required: e.required
142
177
  }, {
143
- default: T(() => [_(w(s), {
178
+ default: D(() => [v(T(s), {
144
179
  class: "py-2",
145
180
  min: e.min,
146
181
  max: e.max,
@@ -159,26 +194,29 @@ var E = { class: "labeled-field" }, D = /* @__PURE__ */ v({
159
194
  }, 8, [
160
195
  "label",
161
196
  "tooltip",
162
- "label-class"
197
+ "label-class",
198
+ "required"
163
199
  ]));
164
200
  }
165
- }), M = { class: "flex items-center" }, N = /* @__PURE__ */ v({
201
+ }), L = { class: "flex items-center" }, R = /* @__PURE__ */ y({
166
202
  __name: "LabeledSwitch",
167
203
  props: {
168
204
  checked: { type: Boolean },
169
205
  label: {},
170
206
  tooltip: {},
171
- labelClass: {}
207
+ labelClass: {},
208
+ required: { type: Boolean }
172
209
  },
173
210
  emits: ["update:checked"],
174
211
  setup(e, { emit: t }) {
175
212
  let n = t;
176
- return (t, r) => (b(), f(D, {
213
+ return (t, r) => (x(), f(M, {
177
214
  label: e.label,
178
215
  tooltip: e.tooltip,
179
- "label-class": e.labelClass
216
+ "label-class": e.labelClass,
217
+ required: e.required
180
218
  }, {
181
- default: T(() => [h("div", M, [_(w(c), {
219
+ default: D(() => [h("div", L, [v(T(c), {
182
220
  checked: e.checked,
183
221
  "onUpdate:checked": r[0] ||= (e) => n("update:checked", e)
184
222
  }, null, 8, ["checked"])])]),
@@ -186,9 +224,10 @@ var E = { class: "labeled-field" }, D = /* @__PURE__ */ v({
186
224
  }, 8, [
187
225
  "label",
188
226
  "tooltip",
189
- "label-class"
227
+ "label-class",
228
+ "required"
190
229
  ]));
191
230
  }
192
231
  });
193
232
  //#endregion
194
- export { D as LabeledField, O as LabeledInput, A as LabeledSelect, j as LabeledSlider, N as LabeledSwitch };
233
+ export { M as LabeledField, N as LabeledInput, F as LabeledSelect, I as LabeledSlider, R as LabeledSwitch };
@@ -1,2 +1,2 @@
1
- import { t as e } from "./MetricBadge-DRBB18Xq.js";
1
+ import { t as e } from "./MetricBadge-DmAihkXd.js";
2
2
  export { e as MetricBadge };
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./cn-DJXf4yaB.js";
2
- import { t } from "./_plugin-vue_export-helper-n-_DRHWS.js";
2
+ import { t } from "./_plugin-vue_export-helper-Dq1MygBL.js";
3
3
  import { computed as n, createBlock as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createTextVNode as s, defineComponent as c, normalizeClass as l, normalizeStyle as u, openBlock as d, renderSlot as f, resolveDynamicComponent as p, toDisplayString as m, unref as h, withCtx as g } from "vue";
4
4
  //#endregion
5
5
  //#region src/components/custom/metric-stack/MetricStack.vue
@@ -0,0 +1 @@
1
+ export * from "./composables/motion/core";
@@ -0,0 +1,229 @@
1
+ import { n as e, t } from "./useViewTransition-DYIK6Gzb.js";
2
+ import { t as n } from "./useIntersectionPause-IY2CwPQb.js";
3
+ import { n as r, t as i } from "./constants-DwBwnG8N.js";
4
+ import { computed as a, getCurrentScope as o, onBeforeUnmount as s, onMounted as c, onScopeDispose as l, reactive as u, readonly as d, ref as f, unref as p, watch as m } from "vue";
5
+ //#region src/composables/motion/supportsCssTimeline.ts
6
+ function h(e, t) {
7
+ return typeof CSS > "u" || typeof CSS.supports != "function" ? !1 : CSS.supports("animation-timeline", e) && !CSS.supports("animation-timeline", t);
8
+ }
9
+ function g() {
10
+ return h("scroll()", "gl-not-a-real-timeline");
11
+ }
12
+ function _() {
13
+ return h("view()", "gl-not-a-real-timeline");
14
+ }
15
+ //#endregion
16
+ //#region src/composables/motion/useStaggerReveal.ts
17
+ var v = _();
18
+ function y(e = {}) {
19
+ let { staggerMs: t = 60, once: n = !0, rootMargin: r = "0px", threshold: i = .15 } = e, a = f([]), o = u({}), c = /* @__PURE__ */ new WeakMap(), l = /* @__PURE__ */ new Set(), d = v || typeof IntersectionObserver > "u" ? null : new IntersectionObserver((e) => {
20
+ for (let r of e) {
21
+ let e = r.target, i = c.get(e);
22
+ if (i !== void 0) if (r.isIntersecting) {
23
+ let r = setTimeout(() => {
24
+ o[i] = !0, l.delete(r);
25
+ }, t * i);
26
+ l.add(r), n && d?.unobserve(e);
27
+ } else n || (o[i] = !1);
28
+ }
29
+ }, {
30
+ rootMargin: r,
31
+ threshold: i
32
+ });
33
+ function p(e, t) {
34
+ if (!e) return;
35
+ let n = t ?? a.value.length;
36
+ c.has(e) || (c.set(e, n), a.value.push(e), o[n] = v, d?.observe(e));
37
+ }
38
+ return s(() => {
39
+ d?.disconnect();
40
+ for (let e of l) clearTimeout(e);
41
+ l.clear();
42
+ }), {
43
+ targets: a,
44
+ register: p,
45
+ revealed: o
46
+ };
47
+ }
48
+ //#endregion
49
+ //#region src/composables/motion/useScrollProgress.ts
50
+ var b = g();
51
+ function x(e) {
52
+ let { offset: t = 0, trackExit: n = !1 } = e, r = f(0), i = 0, a = null;
53
+ function o() {
54
+ let i = p(e.target);
55
+ if (!i) return;
56
+ let a = i.getBoundingClientRect(), o = window.innerHeight + t, s = o - (n ? -a.height : 0);
57
+ if (s === 0) {
58
+ r.value = 0;
59
+ return;
60
+ }
61
+ let c = (o - a.top) / s;
62
+ r.value = Math.max(0, Math.min(1, c));
63
+ }
64
+ function l() {
65
+ i ||= requestAnimationFrame(() => {
66
+ i = 0, o();
67
+ });
68
+ }
69
+ return c(() => {
70
+ if (o(), b) return;
71
+ window.addEventListener("scroll", l, { passive: !0 }), window.addEventListener("resize", l, { passive: !0 });
72
+ let t = p(e.target);
73
+ t && typeof ResizeObserver < "u" && (a = new ResizeObserver(l), a.observe(t));
74
+ }), b || m(() => p(e.target), (e, t) => {
75
+ t && a && a.unobserve(t), e && a && a.observe(e), l();
76
+ }), s(() => {
77
+ window.removeEventListener("scroll", l), window.removeEventListener("resize", l), i && cancelAnimationFrame(i), a?.disconnect(), a = null;
78
+ }), r;
79
+ }
80
+ //#endregion
81
+ //#region src/composables/motion/useYieldToMain.ts
82
+ function S() {
83
+ let e = globalThis.scheduler;
84
+ return typeof e?.yield == "function" ? e.yield.bind(e) : null;
85
+ }
86
+ function C() {
87
+ let e = S();
88
+ return e ? e() : typeof MessageChannel == "function" ? new Promise((e) => {
89
+ let t = new MessageChannel();
90
+ t.port1.onmessage = () => {
91
+ t.port1.onmessage = null, e();
92
+ }, t.port2.postMessage(void 0);
93
+ }) : new Promise((e) => setTimeout(e, 0));
94
+ }
95
+ function w() {
96
+ return {
97
+ hasNativeYield: S() !== null,
98
+ yield: C
99
+ };
100
+ }
101
+ //#endregion
102
+ //#region src/composables/motion/useRAFLoop.ts
103
+ var T = "(prefers-reduced-motion: reduce)";
104
+ function E() {
105
+ return typeof globalThis.requestAnimationFrame == "function" ? globalThis.requestAnimationFrame.bind(globalThis) : null;
106
+ }
107
+ function D() {
108
+ return typeof globalThis.cancelAnimationFrame == "function" ? globalThis.cancelAnimationFrame.bind(globalThis) : null;
109
+ }
110
+ function O() {
111
+ return typeof document > "u" ? null : document;
112
+ }
113
+ function k() {
114
+ return typeof window > "u" ? null : window;
115
+ }
116
+ function A(e, t = {}) {
117
+ let { immediate: n = !0, pauseWhenHidden: r = !0, respectReducedMotion: i = !0 } = t, s = f(!1), c = f(!1), u = f(r ? !!O()?.hidden : !1), p = f(!1), m = f(!1), h = a(() => p.value && !s.value && (m.value || u.value || i && c.value || !E())), g = null, _ = null, v = 0, y = 0, b = !1, x = null;
118
+ function S() {
119
+ return !b && p.value && !m.value && !u.value && !(i && c.value) && !!E();
120
+ }
121
+ function w() {
122
+ g !== null && (D()?.(g), g = null), s.value = !1, _ = null;
123
+ }
124
+ function A() {
125
+ if (g !== null || !S()) return;
126
+ let t = E();
127
+ t && (s.value = !0, g = t((t) => {
128
+ if (g = null, !S()) {
129
+ w();
130
+ return;
131
+ }
132
+ let n = _ === null ? 0 : Math.max(0, t - _);
133
+ _ = t, v += n, e({
134
+ now: t,
135
+ delta: n,
136
+ elapsed: v,
137
+ frame: y++
138
+ }), S() ? A() : w();
139
+ }));
140
+ }
141
+ function j() {
142
+ S() ? A() : w();
143
+ }
144
+ function M() {
145
+ _ = null, v = 0, y = 0;
146
+ }
147
+ function N() {
148
+ b || (M(), p.value = !0, m.value = !1, j());
149
+ }
150
+ function P() {
151
+ p.value = !1, m.value = !1, M(), w();
152
+ }
153
+ function F() {
154
+ p.value && (m.value = !0, j());
155
+ }
156
+ function I() {
157
+ b || (m.value = !1, j());
158
+ }
159
+ function L() {
160
+ u.value = r ? !!O()?.hidden : !1, j();
161
+ }
162
+ let R = O();
163
+ if (R && r && R.addEventListener("visibilitychange", L), i) {
164
+ let e = k(), t = typeof e?.matchMedia == "function" ? e.matchMedia(T) : null;
165
+ if (t) {
166
+ let e = (e) => {
167
+ c.value = e.matches, j();
168
+ };
169
+ c.value = t.matches, typeof t.addEventListener == "function" ? (t.addEventListener("change", e), x = () => t.removeEventListener("change", e)) : typeof t.addListener == "function" && (t.addListener(e), x = () => t.removeListener?.(e));
170
+ }
171
+ }
172
+ function z() {
173
+ b || (b = !0, P(), R?.removeEventListener("visibilitychange", L), x?.(), x = null);
174
+ }
175
+ return o() && l(z), n && N(), {
176
+ isActive: d(s),
177
+ isPaused: d(h),
178
+ isReducedMotion: d(c),
179
+ start: N,
180
+ stop: P,
181
+ pause: F,
182
+ resume: I,
183
+ dispose: z,
184
+ yieldToMain: C
185
+ };
186
+ }
187
+ //#endregion
188
+ //#region src/composables/motion/useStagger.ts
189
+ function j() {
190
+ return typeof window > "u" || typeof window.matchMedia != "function" ? !1 : window.matchMedia("(prefers-reduced-motion: reduce)").matches;
191
+ }
192
+ function M(e) {
193
+ let t = Math.max(0, Math.floor(e.items)), n = e.delayMs ?? 80, r = e.initialDelayMs ?? 0, i = e.immediate !== !1, a = e.respectReducedMotion !== !1, o = f(Array(t).fill(!1)), s = f(t === 0), c = /* @__PURE__ */ new Set();
194
+ function u() {
195
+ for (let e of c) clearTimeout(e);
196
+ c.clear();
197
+ }
198
+ function d() {
199
+ u(), o.value = Array(t).fill(!1), s.value = t === 0;
200
+ }
201
+ function p() {
202
+ o.value = Array(t).fill(!0), s.value = !0;
203
+ }
204
+ function m() {
205
+ if (d(), t === 0) {
206
+ s.value = !0;
207
+ return;
208
+ }
209
+ if (a && j()) {
210
+ p();
211
+ return;
212
+ }
213
+ for (let e = 0; e < t; e++) {
214
+ let i = e, a = setTimeout(() => {
215
+ let e = o.value.slice();
216
+ e[i] = !0, o.value = e, c.delete(a), i === t - 1 && (s.value = !0);
217
+ }, r + i * n);
218
+ c.add(a);
219
+ }
220
+ }
221
+ return i && m(), l(u), {
222
+ revealed: o,
223
+ start: m,
224
+ reset: d,
225
+ isComplete: s
226
+ };
227
+ }
228
+ //#endregion
229
+ export { i as DAMPING, r as SNAP_THRESHOLD, t as startViewTransition, e as supportsViewTransitions, n as useIntersectionPause, A as useRAFLoop, x as useScrollProgress, M as useStagger, y as useStaggerReveal, w as useYieldToMain, C as yieldToMain };