@mkbabb/glass-ui 3.10.1 → 3.11.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 (279) hide show
  1. package/dist/{CardAction-DrAcAV4d.js → CardAction-DuArVky-.js} +2 -2
  2. package/dist/{CommandShortcut-mV2e1aG6.js → CommandShortcut-CefCj5mt.js} +2 -2
  3. package/dist/{DataTable-C3E6jZ5B.js → DataTable-CUHMukiQ.js} +2 -2
  4. package/dist/DeckProgress-Dmk4_AKN.js +23 -0
  5. package/dist/{DialogContent-BxaaafFi.js → DialogContent-BRkT1cjP.js} +1 -1
  6. package/dist/{HoverPopover-CDA_SaCe.js → HoverPopover-2LOIW34a.js} +1 -1
  7. package/dist/InstrumentRail-CUJ05YVG.js +44 -0
  8. package/dist/{MetricBadge-idgrkqoP.js → MetricBadge-BZVWIxNy.js} +7 -5
  9. package/dist/{Notification-Cu0nN17_.js → Notification-DLMhblXR.js} +1 -1
  10. package/dist/{NumberFieldContent-CHEWghnY.js → NumberFieldContent-BbLOh8RU.js} +2 -2
  11. package/dist/{PopoverContent-DpUvdYY-.js → PopoverContent-BId6ggf_.js} +1 -1
  12. package/dist/{Progress-BW-StFw2.js → Progress-iEuD9pxG.js} +1 -1
  13. package/dist/{ScrollingText-DruYCni_.js → ScrollingText-BPP84wKo.js} +1 -1
  14. package/dist/{SelectScrollDownButton-pirzjm--.js → SelectScrollDownButton-T32cVFeM.js} +3 -3
  15. package/dist/{Switch-DeAqg6pi.js → Switch-Ch-k3Rv-.js} +1 -1
  16. package/dist/{TabsList-BAVzOZpg.js → TabsList-B8CVOQPC.js} +2 -2
  17. package/dist/{Toaster-CvuuW_y9.js → Toaster-1rYWrmAm.js} +46 -49
  18. package/dist/{ToggleGroupItem-DtD37b4G.js → ToggleGroupItem-COu_4IW4.js} +21 -17
  19. package/dist/animated-digit.js +2 -2
  20. package/dist/api/index.d.ts +5 -4
  21. package/dist/api.js +2 -2
  22. package/dist/aurora.js +70 -70
  23. package/dist/{badge-NdCQMvvB.js → badge-CaoFJzRb.js} +1 -1
  24. package/dist/badge.js +1 -1
  25. package/dist/{button-DyiWFAOE.js → button-DN39cGqL.js} +12 -12
  26. package/dist/button.js +1 -1
  27. package/dist/canvas.js +2 -2
  28. package/dist/card.js +1 -1
  29. package/dist/carousel.js +5 -5
  30. package/dist/collapsible.js +1 -1
  31. package/dist/{color-B65wWyQz.js → color-C5ls_QF7.js} +7 -9
  32. package/dist/color.js +1 -1
  33. package/dist/command.js +1 -1
  34. package/dist/components/custom/aurora/constants/presets.d.ts +62 -5
  35. package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +1 -1
  36. package/dist/components/custom/aurora/index.d.ts +1 -1
  37. package/dist/components/custom/constellation/Constellation.vue.d.ts +0 -12
  38. package/dist/components/custom/constellation/constellationField.d.ts +151 -10
  39. package/dist/components/custom/constellation/index.d.ts +1 -3
  40. package/dist/components/custom/controls/DarkModeToggle.vue.d.ts +0 -11
  41. package/dist/components/custom/deck-progress/DeckProgress.vue.d.ts +27 -0
  42. package/dist/components/custom/deck-progress/index.d.ts +2 -0
  43. package/dist/components/custom/dialog-native/GlassDialogNative.vue.d.ts +57 -0
  44. package/dist/components/custom/dialog-native/index.d.ts +1 -0
  45. package/dist/components/custom/dock/DockTabButton.vue.d.ts +4 -3
  46. package/dist/components/custom/dock/GlassDock.vue.d.ts +115 -3
  47. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +0 -36
  48. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +0 -44
  49. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +37 -5
  50. package/dist/components/custom/fourier-field/index.d.ts +1 -1
  51. package/dist/components/custom/fourier-field/math.d.ts +0 -17
  52. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +41 -0
  53. package/dist/components/custom/glass-panel/index.d.ts +2 -0
  54. package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +3 -4
  55. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +8 -11
  56. package/dist/components/custom/handmark/HandMark.vue.d.ts +29 -0
  57. package/dist/components/custom/handmark/brush.d.ts +242 -0
  58. package/dist/components/custom/handmark/freehand.d.ts +69 -0
  59. package/dist/components/custom/handmark/geometry.d.ts +50 -0
  60. package/dist/components/custom/handmark/index.d.ts +21 -0
  61. package/dist/components/custom/handmark/ink.d.ts +11 -0
  62. package/dist/components/custom/handmark/texture.d.ts +39 -0
  63. package/dist/components/custom/handmark/types.d.ts +53 -0
  64. package/dist/components/custom/handmark/useHandMark.d.ts +87 -0
  65. package/dist/components/custom/header-ribbon/HeaderRibbon.vue.d.ts +31 -0
  66. package/dist/components/custom/header-ribbon/index.d.ts +2 -0
  67. package/dist/components/custom/header-ribbon/types.d.ts +7 -0
  68. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +2 -2
  69. package/dist/components/custom/instrument-rail/InstrumentRail.vue.d.ts +91 -0
  70. package/dist/components/custom/instrument-rail/index.d.ts +2 -0
  71. package/dist/components/custom/metric-badge/MetricBadge.vue.d.ts +8 -0
  72. package/dist/components/ui/drawer/Drawer.vue.d.ts +0 -1
  73. package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +2 -2
  74. package/dist/components/ui/slider/index.d.ts +19 -22
  75. package/dist/components/ui/toast/use-toast.d.ts +2 -2
  76. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  77. package/dist/components/ui/toggle/index.d.ts +1 -1
  78. package/dist/components/ui/toggle-group/ToggleGroup.vue.d.ts +7 -1
  79. package/dist/components/ui/toggle-group/ToggleGroupItem.vue.d.ts +3 -1
  80. package/dist/components/ui/toggle-group/toggleGroupContext.d.ts +13 -0
  81. package/dist/composables/color/index.d.ts +0 -12
  82. package/dist/composables/dark/index.d.ts +1 -1
  83. package/dist/composables/dark/useGlobalDark.d.ts +21 -1
  84. package/dist/composables/glass/useSpecularTracking.d.ts +3 -12
  85. package/dist/composables/motion/core/index.d.ts +1 -0
  86. package/dist/composables/motion/index.d.ts +0 -2
  87. package/dist/composables/motion/useRouteTransition.d.ts +42 -0
  88. package/dist/composables/motion/useSpringMount.d.ts +1 -1
  89. package/dist/configurator.js +1 -1
  90. package/dist/confirm-dialog.js +2 -2
  91. package/dist/constellation.js +225 -260
  92. package/dist/controls.js +14 -48
  93. package/dist/dark.d.ts +1 -1
  94. package/dist/dark.js +1 -1
  95. package/dist/data-table.js +1 -1
  96. package/dist/deck-progress.d.ts +1 -0
  97. package/dist/deck-progress.js +2 -0
  98. package/dist/dialog.js +2 -2
  99. package/dist/dock.js +345 -340
  100. package/dist/dockContext-BKeIMmNk.js +9 -0
  101. package/dist/{dropdown-menu-DVnQcA0E.js → dropdown-menu-D77jX6Df.js} +4 -7
  102. package/dist/dropdown-menu.js +1 -1
  103. package/dist/expandable-container.js +79 -38
  104. package/dist/forms.js +2 -2
  105. package/dist/fourier-field.js +102 -137
  106. package/dist/fourier-math.js +2 -2
  107. package/dist/glass-panel.d.ts +1 -0
  108. package/dist/glass-panel.js +44 -0
  109. package/dist/glass-ui.css +1 -1
  110. package/dist/glass-ui.js +209 -287
  111. package/dist/goo-blob.js +212 -243
  112. package/dist/handmark.d.ts +1 -0
  113. package/dist/handmark.js +662 -0
  114. package/dist/header-ribbon.d.ts +1 -0
  115. package/dist/header-ribbon.js +63 -0
  116. package/dist/hover-popover.js +1 -1
  117. package/dist/icon-tooltip.js +1 -1
  118. package/dist/index.d.ts +3 -0
  119. package/dist/instrument-rail.d.ts +1 -0
  120. package/dist/instrument-rail.js +2 -0
  121. package/dist/keyboard.js +1 -1
  122. package/dist/labeled-field.js +5 -5
  123. package/dist/{math-BUU9hHID.js → math-DTpRVC0e.js} +2 -18
  124. package/dist/metric-badge.js +1 -1
  125. package/dist/metric-stack.js +1 -1
  126. package/dist/motion-core.js +70 -69
  127. package/dist/motion.js +37 -38
  128. package/dist/notification.js +1 -1
  129. package/dist/number-field.js +1 -1
  130. package/dist/popover.js +1 -1
  131. package/dist/{presets-1OhFpaIC.js → presets-BP_ALM0m.js} +14 -1
  132. package/dist/progress.js +1 -1
  133. package/dist/pulse.js +1 -1
  134. package/dist/reactive.js +1 -1
  135. package/dist/scrolling-text.js +1 -1
  136. package/dist/search.js +6 -6
  137. package/dist/select.js +1 -1
  138. package/dist/{sheet-ChSXcJpU.js → sheet-VZEtNFvO.js} +1 -1
  139. package/dist/sheet.js +1 -1
  140. package/dist/{slider-sfl8gFDD.js → slider-ClgpP7EB.js} +4 -4
  141. package/dist/slider.js +1 -1
  142. package/dist/sortable-list.js +2 -2
  143. package/dist/stacked-icons.js +6 -6
  144. package/dist/styles/animations.css +111 -15
  145. package/dist/styles/components.css +1 -1
  146. package/dist/styles/dock/layer-group.css +0 -22
  147. package/dist/styles/dock/layers.css +1 -11
  148. package/dist/styles/dock/morph.css +19 -95
  149. package/dist/styles/dock/shell.css +0 -12
  150. package/dist/styles/dock-controls.css +31 -28
  151. package/dist/styles/drawer.css +0 -2
  152. package/dist/styles/floating-panel.css +0 -2
  153. package/dist/styles/glass-refract.css +0 -2
  154. package/dist/styles/glass.css +1188 -31
  155. package/dist/styles/hover-popover.css +0 -2
  156. package/dist/styles/index.css +6 -24
  157. package/dist/styles/instrument-chassis.css +0 -4
  158. package/dist/styles/paper.css +68 -2
  159. package/dist/styles/theme.css +20 -13
  160. package/dist/styles/tokens.css +2360 -22
  161. package/dist/styles/typography.css +6 -18
  162. package/dist/styles/utilities.css +1291 -19
  163. package/dist/styles/view-transition.css +51 -0
  164. package/dist/switch.js +1 -1
  165. package/dist/tabs.js +98 -98
  166. package/dist/timeline.js +2 -2
  167. package/dist/toast.js +1 -1
  168. package/dist/toggle-group.js +1 -1
  169. package/dist/typewriter.js +1 -1
  170. package/dist/{useAnimatedNumber-DfVgP4te.js → useAnimatedNumber-Bcpy5Etf.js} +1 -1
  171. package/dist/{useConfiguratorState-BdQXh9ie.js → useConfiguratorState-DxAqksK6.js} +1 -1
  172. package/dist/useGlassRenderer-D7YGOYiM.js +69 -0
  173. package/dist/{useGlobalDark-D7R9OypB.js → useGlobalDark-D1wgEqfW.js} +21 -2
  174. package/dist/useSpecularTracking-BVRZsRHA.js +26 -0
  175. package/dist/useSpringMount-BJSHcLl3.js +113 -0
  176. package/dist/useViewTransition-DaN5Zrox.js +21 -0
  177. package/dist/vReveal-zUIQk-rJ.js +53 -0
  178. package/dist/watercolor-dot.js +2 -2
  179. package/package.json +57 -33
  180. package/src/styles/animations.css +111 -15
  181. package/src/styles/dock/layer-group.css +0 -22
  182. package/src/styles/dock/layers.css +1 -11
  183. package/src/styles/dock/morph.css +19 -95
  184. package/src/styles/dock/shell.css +0 -12
  185. package/src/styles/dock-controls.css +31 -28
  186. package/src/styles/glass.css +1188 -31
  187. package/src/styles/index.css +6 -24
  188. package/src/styles/paper.css +68 -2
  189. package/src/styles/theme.css +20 -13
  190. package/src/styles/tokens.css +2360 -22
  191. package/src/styles/typography.css +6 -18
  192. package/src/styles/utilities.css +1291 -19
  193. package/src/styles/view-transition.css +51 -0
  194. package/dist/components/custom/aurora/constants/shaders/vangogh-medium.glsl.d.ts +0 -1
  195. package/dist/components/custom/constellation/composables/createConstellationField.d.ts +0 -35
  196. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +0 -35
  197. package/dist/components/custom/constellation/constants.d.ts +0 -36
  198. package/dist/components/custom/constellation/constellationDraw.d.ts +0 -18
  199. package/dist/components/custom/constellation/constellationInteraction.d.ts +0 -102
  200. package/dist/components/custom/dock/composables/useDockMorphWindow.d.ts +0 -15
  201. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +0 -131
  202. package/dist/components/custom/dock/constants.d.ts +0 -23
  203. package/dist/components/custom/fourier-field/presets.d.ts +0 -54
  204. package/dist/components/custom/goo-blob/composables/buildMetaballProgram.d.ts +0 -18
  205. package/dist/components/custom/goo-blob/composables/uploadBlobUniforms.d.ts +0 -41
  206. package/dist/components/custom/goo-blob/constants.d.ts +0 -52
  207. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +0 -1
  208. package/dist/components/custom/tabs/constants.d.ts +0 -12
  209. package/dist/components/custom/underline/GlassUnderline.vue.d.ts +0 -84
  210. package/dist/components/custom/underline/index.d.ts +0 -2
  211. package/dist/components/custom/underline/types.d.ts +0 -56
  212. package/dist/composables/motion/curves.d.ts +0 -48
  213. package/dist/composables/motion/springPresets.d.ts +0 -33
  214. package/dist/composables/motion/suite.d.ts +0 -2
  215. package/dist/dockContext-bho8B1A4.js +0 -17
  216. package/dist/motion-curves.d.ts +0 -1
  217. package/dist/motion-curves.js +0 -130
  218. package/dist/springPresets-aRSm-4_k.js +0 -40
  219. package/dist/styles/glass/a11y-fallback.css +0 -245
  220. package/dist/styles/glass/ladder.css +0 -304
  221. package/dist/styles/glass/material.css +0 -238
  222. package/dist/styles/glass/progress-rail.css +0 -78
  223. package/dist/styles/glass/squircle.css +0 -66
  224. package/dist/styles/glass/surfaces.css +0 -306
  225. package/dist/styles/tokens/color-radius.css +0 -250
  226. package/dist/styles/tokens/dark-arm.css +0 -194
  227. package/dist/styles/tokens/glass.css +0 -413
  228. package/dist/styles/tokens/light-dark.css +0 -158
  229. package/dist/styles/tokens/offsets-sizing.css +0 -406
  230. package/dist/styles/tokens/property-regs.css +0 -169
  231. package/dist/styles/tokens/scale-paper.css +0 -361
  232. package/dist/styles/tokens/scheme-motion.css +0 -334
  233. package/dist/styles/tokens/shadow.css +0 -132
  234. package/dist/styles/utilities/a11y-overrides.css +0 -140
  235. package/dist/styles/utilities/animate.css +0 -26
  236. package/dist/styles/utilities/base.css +0 -365
  237. package/dist/styles/utilities/btn.css +0 -399
  238. package/dist/styles/utilities/components.css +0 -317
  239. package/dist/underline.d.ts +0 -1
  240. package/dist/underline.js +0 -85
  241. package/dist/useSpecularTracking-DFK_fhpG.js +0 -32
  242. package/dist/useSpringMount-DXUzxBjV.js +0 -108
  243. package/dist/vReveal-CqaCz_mC.js +0 -44
  244. package/src/styles/glass/a11y-fallback.css +0 -245
  245. package/src/styles/glass/ladder.css +0 -304
  246. package/src/styles/glass/material.css +0 -238
  247. package/src/styles/glass/progress-rail.css +0 -78
  248. package/src/styles/glass/squircle.css +0 -66
  249. package/src/styles/glass/surfaces.css +0 -306
  250. package/src/styles/tokens/color-radius.css +0 -250
  251. package/src/styles/tokens/dark-arm.css +0 -194
  252. package/src/styles/tokens/glass.css +0 -413
  253. package/src/styles/tokens/light-dark.css +0 -158
  254. package/src/styles/tokens/offsets-sizing.css +0 -406
  255. package/src/styles/tokens/property-regs.css +0 -169
  256. package/src/styles/tokens/scale-paper.css +0 -361
  257. package/src/styles/tokens/scheme-motion.css +0 -334
  258. package/src/styles/tokens/shadow.css +0 -132
  259. package/src/styles/utilities/a11y-overrides.css +0 -140
  260. package/src/styles/utilities/animate.css +0 -26
  261. package/src/styles/utilities/base.css +0 -365
  262. package/src/styles/utilities/btn.css +0 -399
  263. package/src/styles/utilities/components.css +0 -317
  264. /package/dist/{CollapsibleContent-Drow5WkV.js → CollapsibleContent-CP9qF1v4.js} +0 -0
  265. /package/dist/{DialogFooter-DufLHi0y.js → DialogFooter-Gprw8H_A.js} +0 -0
  266. /package/dist/{IconTooltip-BrQ5p181.js → IconTooltip-Cus0fvK0.js} +0 -0
  267. /package/dist/{Input-B-F818RU.js → Input-xuDwALQR.js} +0 -0
  268. /package/dist/{_plugin-vue_export-helper-DWghtRt7.js → _plugin-vue_export-helper-ok8pgSl5.js} +0 -0
  269. /package/dist/{compile-Ce_V55zi.js → compile-BOXjLUxu.js} +0 -0
  270. /package/dist/{constants-C8NMonuo.js → constants-yKeKnE84.js} +0 -0
  271. /package/dist/{prng-CjVgzjQT.js → prng-D27-B3tK.js} +0 -0
  272. /package/dist/{resolveCanvasColor-CRvVzOvP.js → resolveCanvasColor-BBiYfp8g.js} +0 -0
  273. /package/dist/{useCanvas2D-CSeH8h16.js → useCanvas2D-ClrQuZtp.js} +0 -0
  274. /package/dist/{useIntersectionPause-DAdVPVp4.js → useIntersectionPause-Cck5Uxk8.js} +0 -0
  275. /package/dist/{useInterval-D3USn0yc.js → useInterval-Dsmqwi03.js} +0 -0
  276. /package/dist/{useKeyboardShortcuts-i8tHd5WO.js → useKeyboardShortcuts-CyIYrndH.js} +0 -0
  277. /package/dist/{useScrollProgress-CcgmgMQt.js → useScrollProgress-CffFGLa5.js} +0 -0
  278. /package/dist/{useSortable-DnyGXKKY.js → useSortable-C8ReQ50P.js} +0 -0
  279. /package/dist/{useTextHighlight-B3b10W6r.js → useTextHighlight-CWEi25hf.js} +0 -0
@@ -1,317 +0,0 @@
1
- /* utilities/components.css
2
- The @layer components component half — metric-badge pill + label-bearing variants, the glassmorphic input-bar, hover-lift levels, cartoon shadows, divider utilities.
3
- Carved from the utilities.css cascade root; @import-ed by utilities.css in
4
- cascade order. See docs/precepts/design-idioms.md §cohesion-aware partials. */
5
- @layer components {
6
- /* ── Metric badge pill — compact glass label for numeric telemetry ── */
7
- .metric-badge {
8
- display: inline-flex;
9
- align-items: center;
10
- justify-content: center;
11
- text-align: center;
12
- /* AQ.W3 §W3.2 identity base */
13
- scale: 1;
14
- gap: var(--metric-badge-gap, 0.125rem);
15
- max-width: var(--metric-badge-max-width, 8rem);
16
- min-height: var(--metric-badge-min-height, 1.5rem);
17
- padding:
18
- var(--metric-badge-padding-block, 0.125rem)
19
- var(--metric-badge-padding-inline, 0.5rem);
20
- overflow: hidden;
21
- flex-shrink: 0;
22
- line-height: 1;
23
- /* Canonical 5-tier glass surface: the `quiet` rung paints the badge
24
- plate at the `--glass-bg-quiet` α (0.50) with `--glass-blur-quiet`.
25
- Reduced-transparency / no-backdrop-filter fallbacks propagate
26
- through the lazy custom-property resolution that `glass.css`
27
- sets up — the badge no longer bypasses the canon.
28
- (Per audit U.W0.C-c §7.2.) */
29
- border: 1px solid var(--metric-badge-border, var(--glass-border-quiet));
30
- border-radius: var(--metric-badge-radius, var(--radius-badge, var(--radius-pill)));
31
- background: var(--metric-badge-bg, var(--glass-bg-quiet));
32
- backdrop-filter: var(--metric-badge-blur, var(--glass-blur-quiet));
33
- box-shadow: var(--metric-badge-shadow, 0 1px 6px color-mix(in srgb, var(--shadow-color) 8%, transparent), var(--glass-highlight));
34
- transition:
35
- background var(--duration-fast) var(--ease-standard),
36
- border-color var(--duration-fast) var(--ease-standard),
37
- box-shadow var(--duration-fast) var(--ease-standard),
38
- scale var(--duration-fast) var(--ease-standard);
39
- }
40
-
41
- .metric-badge > span {
42
- line-height: 1;
43
- /* AW.W26 — `wrap-anywhere` (overflow-wrap: anywhere) on the value slot:
44
- a long metric value breaks WITHIN the badge rather than being clipped
45
- by the host `overflow: hidden`. v4.1 `wrap-anywhere` / mwg css §7.
46
- Scoped to the value span, NOT a universal selector (mwg perf caveat). */
47
- overflow-wrap: anywhere;
48
- }
49
-
50
- .metric-badge:hover {
51
- /* Hover lifts to the `resting` rung — one step up the canonical
52
- ladder (audit U.W0.C-c §7.2). */
53
- border-color: var(--metric-badge-hover-border, var(--glass-border-resting));
54
- background: var(--metric-badge-hover-bg, var(--glass-bg-resting));
55
- box-shadow: var(--metric-badge-hover-shadow, 0 2px 10px color-mix(in srgb, var(--shadow-color) 12%, transparent), var(--glass-highlight));
56
- scale: var(--metric-badge-hover-scale, 1.02);
57
- }
58
-
59
- .metric-badge:active {
60
- scale: var(--metric-badge-press-scale, 0.96);
61
- }
62
-
63
- .metric-badge:focus-visible {
64
- outline: none;
65
- box-shadow: var(--focus-ring-shadow);
66
- }
67
-
68
- /* Phase-finish catch-light — the quieter cousin of --glass-specular.
69
- Speedtest toggles `data-just-resolved="true"` on a metric pill once
70
- its phase completes; the badge briefly carries a 1px catch-light
71
- streak at the top edge. Reads as the pill catching club lighting at
72
- the moment its result resolves. */
73
- .metric-badge[data-just-resolved="true"] {
74
- box-shadow:
75
- inset 0 1px 0 0 rgb(255 255 255 / 0.18),
76
- var(--metric-badge-shadow,
77
- 0 1px 6px color-mix(in srgb, var(--shadow-color) 8%, transparent),
78
- var(--glass-highlight));
79
- }
80
-
81
- /* ── Label-bearing variants ───────────────────────────────────────────
82
- When the badge carries a `labelPosition`, the prose-style annotation
83
- slot precedes the amount. Inline keeps the row baseline-aligned;
84
- stacked breaks to a column with items flush-left. The label slot
85
- carries its own tracked uppercase rules; the badge's max-width
86
- relaxes so the wider register fits. */
87
- .metric-badge--label-inline {
88
- flex-direction: row;
89
- align-items: baseline;
90
- justify-content: flex-start;
91
- gap: var(--metric-badge-label-gap, 0.375rem);
92
- max-width: var(--metric-badge-label-max-width, none);
93
- text-align: left;
94
- }
95
-
96
- .metric-badge--label-stacked {
97
- flex-direction: column;
98
- align-items: flex-start;
99
- justify-content: center;
100
- gap: var(--metric-badge-label-gap-stacked, 0.0625rem);
101
- max-width: var(--metric-badge-label-max-width, none);
102
- text-align: left;
103
- min-height: var(--metric-badge-min-height-stacked, 2.625rem);
104
- padding-block: var(--metric-badge-padding-block-stacked, 0.375rem);
105
- }
106
-
107
- /* T.W2.T2 — stacked variant pairs amount + unit on a single row (row 2)
108
- below the label (row 1). The `.metric-badge__row` wrapper baseline-
109
- aligns the value and unit so the quantity reads as one phrase, not as
110
- three siblings split across three rows (the pre-T behaviour the
111
- audit B-spec §2.1 flagged). */
112
- .metric-badge--label-stacked .metric-badge__row {
113
- display: inline-flex;
114
- align-items: baseline;
115
- gap: var(--metric-badge-row-gap-stacked, 0.25rem);
116
- }
117
-
118
- /* T.W2.T3 — MetricPill density modifiers. The pill is a thin composition
119
- over MetricBadge with `labelPosition="stacked"` defaults; the density
120
- knob adjusts block padding + horizontal padding so the pill reads at
121
- the right register for its dock host. `spacious` is the default
122
- (chassis-strip rhythm), `comfortable` keeps the tighter compact
123
- register for densely-packed dock clusters. The selectors compose with
124
- `.metric-badge--label-stacked` so the inline ladder remains untouched
125
- — these are stacked-only refinements. */
126
- .metric-pill[data-density="spacious"].metric-badge--label-stacked {
127
- --metric-badge-padding-block-stacked: 0.5rem;
128
- --metric-badge-padding-inline: 0.75rem;
129
- }
130
-
131
- .metric-pill[data-density="comfortable"].metric-badge--label-stacked {
132
- --metric-badge-padding-block-stacked: 0.25rem;
133
- --metric-badge-padding-inline: 0.5rem;
134
- }
135
-
136
- /* AS.W4 — @container style(--density) companion. A pill nested under a host
137
- that sets `--density: comfortable | spacious` on a wrapping element picks
138
- up the matching padding register with no `data-density` markup contract;
139
- the attribute rules above stay the SOLE fallback (inv 47).
140
- The inner `.metric-pill.metric-badge--label-stacked` selector (0,2,0) sits
141
- just BELOW the `.metric-pill[data-density]…` attribute rules (0,3,0) — so a
142
- pill carrying BOTH the attribute and a `--density` ancestor lands on the
143
- attribute rule (same tokens, identical paint), while a pill with only the
144
- ancestor token still resolves the right register (no competing rule sets
145
- these padding custom props at higher weight in that case).
146
-
147
- No `@supports` wrapper: unlike the sibling scroll-state recipe (which
148
- probes `@supports (container-type: scroll-state)` — a probeable
149
- container-type VALUE), style queries introduce no new `container-type`
150
- value (every element is a style container by default), so there is no
151
- clean declaration test for style-query support. This relies on
152
- `@container style()`'s own graceful degradation: an engine without
153
- style-query support parses the unknown at-rule as invalid, drops the
154
- block, and keeps the `[data-density]` attribute base. (The earlier
155
- `@supports (container-type: inline-size)` wrapper was wrong — it probed
156
- SIZE-query support, a distinct feature with a distinct support timeline.) */
157
- @container style(--density: spacious) {
158
- .metric-pill.metric-badge--label-stacked {
159
- --metric-badge-padding-block-stacked: 0.5rem;
160
- --metric-badge-padding-inline: 0.75rem;
161
- }
162
- }
163
- @container style(--density: comfortable) {
164
- .metric-pill.metric-badge--label-stacked {
165
- --metric-badge-padding-block-stacked: 0.25rem;
166
- --metric-badge-padding-inline: 0.5rem;
167
- }
168
- }
169
-
170
- .metric-badge__label {
171
- letter-spacing: 0.18em;
172
- line-height: 1;
173
- }
174
-
175
- /* Dual-slot default visibility (R2-spec):
176
- The library renders both `--full` and `--abbr` siblings whenever both
177
- props are passed. Default identity is the full label; the abbreviation
178
- sits hidden until consumer container-query CSS flips it. The adjacent-
179
- sibling selector preserves single-slot back-compat: when a consumer
180
- passes only `abbreviation` (no `--full` sibling rendered), the abbr
181
- reads at default visibility. */
182
- .metric-badge__label--full + .metric-badge__label--abbr {
183
- display: none;
184
- }
185
-
186
- /* sm-tier label tracking — tighter than the md/lg/xl 0.18em rung so the
187
- compact register reads as a tighter annotation against the smaller
188
- glyph rise. R2-spec D-Rec-2 (audit-D). */
189
- .metric-badge[data-size="sm"] .metric-badge__label {
190
- letter-spacing: 0.1em;
191
- }
192
-
193
- /* Q.W3 Lane A — the `.glass-dock[data-density="…"]` density rungs that
194
- set `--dock-tab-h` + `--dock-label-size` were consolidated into
195
- `dock.css` (their canonical dock-styles home). They formerly lived
196
- here and resolved only by the index.css import order (utilities.css
197
- after dock.css); the cascade-order dependency is now gone. */
198
-
199
- /* ── Input bar — glassmorphic inline input container ──
200
- Composes the canonical `floating` glass rung (--glass-bg-floating
201
- ≈ 80% α, --glass-blur-floating ≈ 24px) — same surface read as the
202
- prior raw composition but routed through the canonical 5-tier
203
- ladder so PRT / no-backdrop-filter fallbacks propagate cleanly.
204
- (Per audit U.W0.C-c §7.2.) */
205
- .input-bar {
206
- display: flex;
207
- align-items: center;
208
- gap: 0.5rem;
209
- border-radius: var(--radius-2xl);
210
- border: 1px solid var(--glass-border-floating);
211
- background: var(--glass-bg-floating);
212
- backdrop-filter: var(--glass-blur-floating);
213
-
214
- padding: 0 0.75rem;
215
- height: 2.25rem;
216
- max-width: var(--max-width-input);
217
- width: 100%;
218
- transition:
219
- box-shadow var(--duration-fast) var(--ease-standard),
220
- border-color var(--duration-fast) var(--ease-standard);
221
- }
222
- .input-bar:focus-within {
223
- box-shadow: var(--focus-ring-shadow);
224
- border-color: var(--border);
225
- }
226
-
227
- .input-bar-field {
228
- font-family: var(--font-mono, monospace);
229
- font-size: var(--type-small);
230
- background: transparent;
231
- border: none;
232
- outline: none;
233
- flex: 1;
234
- min-width: 0;
235
- }
236
- .input-bar-field::placeholder {
237
- color: color-mix(in srgb, var(--muted-foreground) 50%, transparent);
238
- }
239
-
240
- /* ── Hover lift — translate-y + shadow on hover (3 levels) ──
241
- The shared transition is expressed once over the family; the three
242
- :hover rules carry the per-level translate + shadow. */
243
- :where(.hover-lift, .hover-lift-md, .hover-lift-lg) {
244
- /* Individual-transform identity base (AQ.W3 §W3.2) — `translate: 0` at
245
- rest mints the stacking context once so the hover lift does not
246
- flicker it into being. */
247
- translate: 0;
248
- transition-property: translate, box-shadow;
249
- transition-duration: var(--duration-normal);
250
- transition-timing-function: var(--ease-standard);
251
- }
252
- .hover-lift:hover:not(:disabled):not([aria-disabled='true']) {
253
- translate: 0 var(--lift-sm);
254
- box-shadow: var(--shadow-md);
255
- }
256
- .hover-lift-md:hover:not(:disabled):not([aria-disabled='true']) {
257
- translate: 0 var(--lift-md);
258
- box-shadow: var(--shadow-md);
259
- }
260
- .hover-lift-lg:hover:not(:disabled):not([aria-disabled='true']) {
261
- translate: 0 var(--lift-lg);
262
- box-shadow: var(--shadow-lg);
263
- }
264
-
265
- /* ── Cartoon shadows — token-driven box-shadow + bezel border + lift ──
266
- The box-shadow stack reads from the canonical
267
- `--shadow-cartoon-{sm,md,lg}` rungs declared at tokens.css:304-312.
268
- Those rungs use `color-mix(in srgb, var(--shadow-color) N%, transparent)`
269
- so dark-mode flips the cast through `--shadow-color` automatically.
270
- The 2px bezel border + translateY are the cartoon-stamp geometry
271
- atop the canonical depth — kept here so a single class delivers
272
- the whole cartoon read.
273
- (Per audit U.W0.C-c §1.3 / Union 1 — collapses the dual-system
274
- drift onto the token-driven shadow.) */
275
- :where(.shadow-cartoon-sm, .shadow-cartoon-md, .shadow-cartoon-lg) {
276
- border: 2px solid var(--border);
277
- }
278
- /* Static cartoon-stamp lift (AQ.W3 §W3.2). NOT state-driven, so the
279
- identity base is not strictly required, but the `translate:` longhand
280
- keeps the family uniform with the state-driven sites above. */
281
- .shadow-cartoon-sm {
282
- box-shadow: var(--shadow-cartoon-sm);
283
- translate: 0 -1px;
284
- }
285
- .shadow-cartoon-md {
286
- box-shadow: var(--shadow-cartoon-md);
287
- translate: 0 -1px;
288
- }
289
- .shadow-cartoon-lg {
290
- box-shadow: var(--shadow-cartoon-lg);
291
- translate: 0 -2px;
292
- }
293
-
294
- /* ── Divider utilities ── */
295
- .divider-h {
296
- height: 2px;
297
- background: linear-gradient(
298
- to right,
299
- transparent 1%,
300
- var(--border) 8%,
301
- var(--border) 92%,
302
- transparent 99%
303
- );
304
- }
305
-
306
- .divider-h-tapered {
307
- height: 2px;
308
- background: linear-gradient(
309
- to right,
310
- transparent 3%,
311
- var(--border) 15%,
312
- var(--border) 85%,
313
- transparent 97%
314
- );
315
- }
316
-
317
- }
@@ -1 +0,0 @@
1
- export * from "./components/custom/underline";
package/dist/underline.js DELETED
@@ -1,85 +0,0 @@
1
- import { t as e } from "./_plugin-vue_export-helper-DWghtRt7.js";
2
- import { computed as t, createElementBlock as n, createElementVNode as r, defineComponent as i, normalizeStyle as a, onMounted as o, openBlock as s, ref as c, renderSlot as l, unref as u, useCssVars as d, useId as f, watch as p } from "vue";
3
- import { NumericAnimation as m } from "@mkbabb/keyframes.js";
4
- import { easeOutCubic as h } from "@mkbabb/value.js";
5
- //#region src/components/custom/underline/GlassUnderline.vue?vue&type=script&setup=true&lang.ts
6
- var g = ["data-gu-clock", "data-gu-variant"], _ = ["viewBox"], v = ["id", "d"], y = ["d"], b = 120, x = "M1,6 C18,3 30,8 48,5 S78,3 99,6", S = "M1,7.1 C20,5 32,9 50,6.2 S80,5 99,7", C = /* @__PURE__ */ e(/* @__PURE__ */ i({
7
- __name: "GlassUnderline",
8
- props: {
9
- clock: { default: "load" },
10
- variant: { default: "pen" },
11
- color: { default: void 0 },
12
- drawMs: { default: 700 },
13
- easing: {
14
- type: Function,
15
- default: void 0
16
- },
17
- timeline: { default: void 0 },
18
- active: {
19
- type: Boolean,
20
- default: void 0
21
- },
22
- paths: { default: void 0 }
23
- },
24
- setup(e, { expose: i }) {
25
- d((e) => ({ v237e7abc: C.color ?? "var(--primary)" }));
26
- let C = e;
27
- function w() {
28
- return typeof window > "u" || typeof window.matchMedia != "function" ? !1 : window.matchMedia("(prefers-reduced-motion: reduce)").matches;
29
- }
30
- let T = w(), E = t(() => C.paths?.stroke ?? x), D = t(() => C.paths?.ghost ?? S), O = t(() => C.paths?.viewBox ?? "0 0 100 10"), k = t(() => C.paths?.len ?? b), A = f(), j = t(() => C.clock === "scroll" ? T ? "static" : "scroll" : C.clock === "static" ? "static" : "load"), M = c(C.clock === "load" && !T && C.active !== !0 ? k.value : 0), N = null;
31
- async function P() {
32
- if (C.clock === "load") {
33
- if (T) {
34
- M.value = 0;
35
- return;
36
- }
37
- N?.stop(), M.value = k.value, N = new m([{ off: k.value }, { off: 0 }], {
38
- duration: C.drawMs,
39
- timingFunction: C.easing ?? h,
40
- respectReducedMotion: !0
41
- }), await N.play((e) => {
42
- M.value = e.off;
43
- });
44
- }
45
- }
46
- function F() {
47
- N?.stop(), M.value = 0;
48
- }
49
- function I() {
50
- N?.stop(), M.value = C.clock === "load" && !T ? k.value : 0;
51
- }
52
- return p(() => C.active, (e, t) => {
53
- C.clock === "load" && (e === !0 && t !== !0 ? T ? F() : P() : e === !1 && t === !0 && I());
54
- }), o(() => {
55
- C.clock === "load" && C.active === !0 && (T ? F() : P());
56
- }), i({
57
- play: P,
58
- snap: F
59
- }), (t, i) => (s(), n("span", {
60
- class: "glass-underline",
61
- "data-gu-clock": j.value,
62
- "data-gu-variant": e.variant,
63
- style: a(e.timeline ? { "--gu-timeline": e.timeline } : void 0)
64
- }, [l(t.$slots, "default", {}, void 0, !0), (s(), n("svg", {
65
- class: "glass-underline__ink",
66
- viewBox: O.value,
67
- preserveAspectRatio: "none",
68
- "aria-hidden": "true",
69
- focusable: "false",
70
- style: a({
71
- "--gu-off": String(M.value),
72
- "--gu-len": String(k.value)
73
- })
74
- }, [r("path", {
75
- id: `gu-stroke-${u(A)}`,
76
- class: "glass-underline__stroke",
77
- d: E.value
78
- }, null, 8, v), r("path", {
79
- class: "glass-underline__stroke glass-underline__stroke--ghost",
80
- d: D.value
81
- }, null, 8, y)], 12, _))], 12, g));
82
- }
83
- }), [["__scopeId", "data-v-20b5d619"]]);
84
- //#endregion
85
- export { C as GlassUnderline };
@@ -1,32 +0,0 @@
1
- import { onScopeDispose as e, ref as t } from "vue";
2
- //#region src/composables/glass/useSpecularTracking.ts
3
- function n() {
4
- let n = t({}), r = typeof window < "u" && typeof window.matchMedia == "function" ? window.matchMedia("(prefers-reduced-motion: reduce)") : null, i = r?.matches ?? !1, a = (e) => {
5
- i = e.matches;
6
- };
7
- r?.addEventListener("change", a);
8
- let o = null, s = 0, c = 0, l = 0;
9
- function u() {
10
- l = 0;
11
- let e = o;
12
- if (o = null, !e) return;
13
- let t = e.getBoundingClientRect();
14
- if (t.width === 0 || t.height === 0) return;
15
- let r = (s - t.left) / t.width * 100, i = (c - t.top) / t.height * 100;
16
- n.value = {
17
- "--mouse-x": `${r.toFixed(2)}%`,
18
- "--mouse-y": `${i.toFixed(2)}%`
19
- };
20
- }
21
- function d(e) {
22
- i || (o = e.currentTarget, s = e.clientX, c = e.clientY, l === 0 && (typeof requestAnimationFrame == "function" ? l = requestAnimationFrame(u) : u()));
23
- }
24
- return e(() => {
25
- l !== 0 && typeof cancelAnimationFrame == "function" && cancelAnimationFrame(l), l = 0, o = null, r?.removeEventListener("change", a);
26
- }), {
27
- specularStyle: n,
28
- onPointerMove: d
29
- };
30
- }
31
- //#endregion
32
- export { n as t };
@@ -1,108 +0,0 @@
1
- import { n as e } from "./springPresets-aRSm-4_k.js";
2
- import { computed as t, getCurrentScope as n, nextTick as r, onMounted as i, onScopeDispose as a, readonly as o, ref as s, shallowRef as c, toValue as l, watch as u } from "vue";
3
- import { SpringProgress as d } from "@mkbabb/keyframes.js";
4
- //#region src/composables/motion/useSpring.ts
5
- function f(e, t = {}) {
6
- let r = t.initial ?? 0, i = t.initialVelocity ?? 0, f = s(r), p = s(i), m = s(i === 0), h = c(new d({
7
- response: t.response ?? .5,
8
- dampingFraction: t.dampingFraction ?? .86,
9
- initial: r,
10
- initialVelocity: i,
11
- settleThreshold: t.settleThreshold ?? .001,
12
- velocitySettleThreshold: t.velocitySettleThreshold ?? .001,
13
- respectReducedMotion: t.respectReducedMotion !== !1
14
- })), g = h.value.subscribe((e, n) => {
15
- f.value = e, p.value = n, m.value = h.value.settled, t.onValue?.(e, n);
16
- });
17
- h.value.play(() => {});
18
- let _ = u(() => l(e), (e) => {
19
- e != null && (h.value.target = e);
20
- }, { immediate: !0 });
21
- function v() {
22
- f.value = h.value.value, p.value = h.value.velocity, m.value = h.value.settled;
23
- }
24
- function y() {
25
- _(), g(), h.value.dispose();
26
- }
27
- return n() && a(y), {
28
- value: o(f),
29
- velocity: o(p),
30
- isSettled: o(m),
31
- snap: () => {
32
- h.value.snap(), v();
33
- },
34
- reset: (e, t) => {
35
- h.value.reset(e ?? 0, t ?? 0), v();
36
- },
37
- dispose: y
38
- };
39
- }
40
- //#endregion
41
- //#region src/composables/motion/useSpringMount.ts
42
- var p = Object.fromEntries([
43
- "smooth",
44
- "snappy",
45
- "bouncy",
46
- "gentle"
47
- ].map((t) => {
48
- let { response: n, dampingFraction: r } = e(t);
49
- return [t, {
50
- response: n,
51
- dampingFraction: r
52
- }];
53
- }));
54
- function m(e) {
55
- let n = p[e.preset ?? "smooth"], o = s(1), c = s(!1), l = 0, d = 0, m = null, h = !1, g = f(o, {
56
- response: n.response,
57
- dampingFraction: n.dampingFraction,
58
- initial: 1,
59
- settleThreshold: .001,
60
- velocitySettleThreshold: .001,
61
- respectReducedMotion: e.respectReducedMotion !== !1
62
- });
63
- i(() => {
64
- e.open.value && r(() => {
65
- o.value = 0;
66
- });
67
- });
68
- let _ = u(() => e.open.value, (e, t) => {
69
- e !== t && (c.value || (o.value = +!e));
70
- }, { immediate: !1 }), v = u(() => g.isSettled.value, (t) => {
71
- t && h && o.value >= 1 && (h = !1, e.onDismiss?.());
72
- });
73
- function y(e) {
74
- if (e.button !== 0) return;
75
- let t = e.currentTarget;
76
- d = t.getBoundingClientRect().height || 1, l = e.clientY, m = e.pointerId, c.value = !0, t.setPointerCapture(e.pointerId);
77
- }
78
- function b(e) {
79
- if (!c.value || e.pointerId !== m) return;
80
- let t = e.clientY - l;
81
- if (t <= 0) {
82
- o.value = 0;
83
- return;
84
- }
85
- o.value = Math.min(1, t / d);
86
- }
87
- function x(t) {
88
- if (!c.value || t.pointerId !== m) return;
89
- let n = t.currentTarget;
90
- n.hasPointerCapture(t.pointerId) && n.releasePointerCapture(t.pointerId), c.value = !1, m = null;
91
- let r = e.dismissThreshold ?? .3;
92
- o.value >= r ? (h = !0, o.value = 1) : o.value = 0;
93
- }
94
- return a(() => {
95
- _(), v();
96
- }), {
97
- position: g.value,
98
- isDragging: t(() => c.value),
99
- dragHandlers: {
100
- onPointerdown: y,
101
- onPointermove: b,
102
- onPointerup: x,
103
- onPointercancel: x
104
- }
105
- };
106
- }
107
- //#endregion
108
- export { f as n, m as t };
@@ -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 };