@mkbabb/glass-ui 3.6.0 → 3.8.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 (255) hide show
  1. package/dist/CardAction-q2qHCJFG.js +157 -0
  2. package/dist/CollapsibleContent-CP9qF1v4.js +63 -0
  3. package/dist/{CommandShortcut-BiVyqipe.js → CommandShortcut-SzWRhROC.js} +4 -4
  4. package/dist/{ContextMenuContent-De01_83g.js → ContextMenuContent-DDa0v27s.js} +1 -1
  5. package/dist/{ContextMenuSubContent-DrWkXKQP.js → ContextMenuSubContent-Do977Cbf.js} +4 -4
  6. package/dist/{DataTable-BGVXx0Ww.js → DataTable-CvlWXz65.js} +14 -7
  7. package/dist/DeckProgress-AVgbIULY.js +23 -0
  8. package/dist/{DialogContent-IQ8_BRrC.js → DialogContent-DjZWT3lK.js} +24 -24
  9. package/dist/{DialogFooter-Er0wA3K6.js → DialogFooter-Gprw8H_A.js} +2 -2
  10. package/dist/{DiscoGlyph-BaZ8OawK.js → DiscoGlyph-CG0F410s.js} +1 -1
  11. package/dist/{GlyphFace-B_7vOmYn.js → GlyphFace-DRjDkB0s.js} +1 -1
  12. package/dist/{HoverCardContent-ICfIMZX1.js → HoverCardContent-B6CcQ8He.js} +1 -1
  13. package/dist/{HoverPopover-DTSYkJtw.js → HoverPopover-D56O6Ylp.js} +1 -1
  14. package/dist/{IconTooltip-DZlCkU-0.js → IconTooltip-D2T5nYOM.js} +1 -1
  15. package/dist/{Input-CRJ2owjN.js → Input-DVG_J0ne.js} +4 -1
  16. package/dist/{Label-CZk-3nTc.js → Label-zRfbQdCn.js} +1 -1
  17. package/dist/{MetricBadge-BlrdbOGN.js → MetricBadge-lTc002u2.js} +1 -1
  18. package/dist/{Notification-DP_ApJLo.js → Notification-BxK8LZMw.js} +5 -4
  19. package/dist/{NumberFieldContent-Bhhmk95p.js → NumberFieldContent-CLNVR1iY.js} +5 -5
  20. package/dist/{PopoverContent-B8WtJECb.js → PopoverContent-BId6ggf_.js} +2 -2
  21. package/dist/{Progress-DjM86vfb.js → Progress-iEuD9pxG.js} +7 -7
  22. package/dist/{ScrollingText-P9o_DuMn.js → ScrollingText-CVyqxvfv.js} +2 -2
  23. package/dist/{SelectScrollDownButton-BGn3rjs9.js → SelectScrollDownButton-C7TRe-ep.js} +8 -7
  24. package/dist/{Separator-C2XtAXRp.js → Separator-D7sD7RKj.js} +1 -1
  25. package/dist/{Switch-x8n6husW.js → Switch-LDKLmmgx.js} +8 -2
  26. package/dist/TabsList-qyHZ2lKY.js +101 -0
  27. package/dist/{Toaster-DdhMKfus.js → Toaster-CabYEEF_.js} +54 -60
  28. package/dist/{ToggleGroupItem-gyXj998A.js → ToggleGroupItem-CkXUcBlt.js} +13 -5
  29. package/dist/{TooltipProvider-D-JrSqDu.js → TooltipProvider-CmZzCuaG.js} +1 -1
  30. package/dist/{UnderlineTabs-CuIK16JI.js → UnderlineTabs-Uxn-R3MT.js} +2 -2
  31. package/dist/animated-digit.js +2 -2
  32. package/dist/api/index.d.ts +4 -2
  33. package/dist/api.js +1 -1
  34. package/dist/aurora.js +753 -359
  35. package/dist/{badge-Cl6JZ1B7.js → badge-DHQrc_GQ.js} +13 -9
  36. package/dist/badge.js +1 -1
  37. package/dist/{button-BcMzVrqs.js → button-CAywcrhO.js} +6 -3
  38. package/dist/button.js +1 -1
  39. package/dist/canvas.d.ts +1 -0
  40. package/dist/canvas.js +3 -0
  41. package/dist/card.js +2 -2
  42. package/dist/carousel.js +110 -109
  43. package/dist/{check-CdkxGxXJ.js → check-BBKKKSTf.js} +1 -1
  44. package/dist/{chevron-down-pBY8sYfV.js → chevron-down-BSkTP2aL.js} +1 -1
  45. package/dist/{chevron-right-BjeKC22V.js → chevron-right-sDM0Yvrf.js} +1 -1
  46. package/dist/{chevron-up-DBeNHUm1.js → chevron-up-CCOD_FTz.js} +1 -1
  47. package/dist/collapsible.js +1 -1
  48. package/dist/color-DMLTunJK.js +84 -0
  49. package/dist/color.js +2 -2
  50. package/dist/command.js +1 -1
  51. package/dist/compile-BBTRjvQS.js +158 -0
  52. package/dist/components/custom/aurora/Aurora.vue.d.ts +1 -0
  53. package/dist/components/custom/aurora/composables/atoms.d.ts +125 -0
  54. package/dist/components/custom/aurora/composables/color.d.ts +7 -25
  55. package/dist/components/custom/aurora/composables/cursorModel.d.ts +35 -2
  56. package/dist/components/custom/aurora/composables/glSetup.d.ts +1 -1
  57. package/dist/components/custom/aurora/composables/gpuRuntime.d.ts +16 -0
  58. package/dist/components/custom/aurora/composables/runtime.d.ts +18 -0
  59. package/dist/components/custom/aurora/composables/uniformBridge.d.ts +46 -12
  60. package/dist/components/custom/aurora/composables/useAurora.d.ts +6 -0
  61. package/dist/components/custom/aurora/composables/useCursorInteraction.d.ts +8 -0
  62. package/dist/components/custom/aurora/constants/presets.d.ts +60 -4
  63. package/dist/components/custom/aurora/constants/renderMode.d.ts +32 -0
  64. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +7 -0
  65. package/dist/components/custom/aurora/constants/shaders/brush.glsl.d.ts +1 -1
  66. package/dist/components/custom/aurora/constants/shaders/composition.glsl.d.ts +1 -1
  67. package/dist/components/custom/aurora/constants/shaders/flow.glsl.d.ts +1 -1
  68. package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +2 -2
  69. package/dist/components/custom/aurora/constants/shaders/painterly.wgsl.d.ts +7 -0
  70. package/dist/components/custom/aurora/constants/shaders/wake.wgsl.d.ts +4 -0
  71. package/dist/components/custom/aurora/index.d.ts +4 -3
  72. package/dist/components/custom/constellation/Constellation.vue.d.ts +40 -5
  73. package/dist/components/custom/constellation/constellationField.d.ts +110 -5
  74. package/dist/components/custom/constellation/index.d.ts +2 -2
  75. package/dist/components/custom/dock/GlassDock.vue.d.ts +12 -4
  76. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +57 -0
  77. package/dist/components/custom/dock/composables/index.d.ts +3 -0
  78. package/dist/components/custom/dock/composables/useDockHold.d.ts +61 -0
  79. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +13 -59
  80. package/dist/components/custom/dock/index.d.ts +2 -0
  81. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +38 -0
  82. package/dist/components/custom/fourier-field/index.d.ts +2 -0
  83. package/dist/components/custom/fourier-field/math.d.ts +57 -0
  84. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +15 -0
  85. package/dist/components/custom/goo-blob/composables/useBlobMood.d.ts +18 -2
  86. package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +47 -4
  87. package/dist/components/custom/goo-blob/composables/useBlobSatellites.d.ts +2 -0
  88. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +19 -4
  89. package/dist/components/custom/goo-blob/index.d.ts +1 -1
  90. package/dist/components/custom/goo-blob/shaders/sdf-body.glsl.d.ts +1 -1
  91. package/dist/components/custom/goo-blob/shaders/watercolor-edges.glsl.d.ts +2 -2
  92. package/dist/components/custom/goo-blob/types.d.ts +48 -0
  93. package/dist/components/custom/metric-cell/MetricCell.vue.d.ts +1 -1
  94. package/dist/components/custom/metric-stack/MetricStack.vue.d.ts +1 -1
  95. package/dist/components/ui/_shared/ModalOverlay.vue.d.ts +1 -1
  96. package/dist/components/ui/alert/index.d.ts +1 -1
  97. package/dist/components/ui/card/Card.vue.d.ts +26 -3
  98. package/dist/components/ui/card/CardAction.vue.d.ts +24 -0
  99. package/dist/components/ui/card/index.d.ts +2 -1
  100. package/dist/components/ui/collapsible/CollapsibleTrigger.vue.d.ts +5 -1
  101. package/dist/components/ui/progress/ProgressDefault.vue.d.ts +14 -4
  102. package/dist/components/ui/slider/Slider.vue.d.ts +3 -1
  103. package/dist/components/ui/tabs/TabsList.vue.d.ts +13 -3
  104. package/dist/components/ui/toast/Toast.vue.d.ts +5 -5
  105. package/dist/components/ui/toast/use-toast.d.ts +1 -1
  106. package/dist/composables/color/index.d.ts +69 -0
  107. package/dist/composables/dom/index.d.ts +1 -1
  108. package/dist/composables/dom/useResolveTokenColor.d.ts +27 -0
  109. package/dist/composables/glass/canvas2d/index.d.ts +2 -1
  110. package/dist/composables/glass/canvas2d/resolveCanvasColor.d.ts +20 -0
  111. package/dist/composables/glass/canvas2d/useCanvas2D.d.ts +15 -1
  112. package/dist/composables/glass/createGPUCanvas.d.ts +40 -0
  113. package/dist/composables/glass/index.d.ts +3 -1
  114. package/dist/composables/glass/useSpecularTracking.d.ts +33 -0
  115. package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +45 -0
  116. package/dist/composables/glass/webgl/shaders/procedural-color.glsl.d.ts +7 -0
  117. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +5 -5
  118. package/dist/composables/motion/core/index.d.ts +1 -0
  119. package/dist/configurator.js +1 -1
  120. package/dist/confirm-dialog.js +3 -3
  121. package/dist/constellation.js +144 -75
  122. package/dist/context-menu.js +2 -2
  123. package/dist/controls.js +2 -2
  124. package/dist/dark.js +1 -1
  125. package/dist/data-table.js +1 -1
  126. package/dist/deck-progress.d.ts +1 -0
  127. package/dist/deck-progress.js +2 -0
  128. package/dist/dialog.js +2 -2
  129. package/dist/disco-glyph.js +1 -1
  130. package/dist/dock.js +388 -287
  131. package/dist/{dockContext-spUj_-E5.js → dockContext-BKeIMmNk.js} +1 -1
  132. package/dist/dom.js +6 -6
  133. package/dist/{dropdown-menu-EFjl5iKo.js → dropdown-menu-B_4bWyyG.js} +5 -5
  134. package/dist/dropdown-menu.js +1 -1
  135. package/dist/expandable-container.js +2 -2
  136. package/dist/fonts/README.md +26 -18
  137. package/dist/forms.js +10 -7
  138. package/dist/fourier-field.d.ts +1 -0
  139. package/dist/fourier-field.js +166 -0
  140. package/dist/glass-carousel.js +12 -7
  141. package/dist/glass-panel.js +7 -7
  142. package/dist/glass-ui.css +1 -1
  143. package/dist/glass-ui.js +209 -206
  144. package/dist/glyph-face.js +2 -2
  145. package/dist/goo-blob.js +485 -300
  146. package/dist/header-ribbon.js +1 -1
  147. package/dist/hover-card.js +1 -1
  148. package/dist/hover-popover.js +1 -1
  149. package/dist/icon-tooltip.js +1 -1
  150. package/dist/index.d.ts +1 -0
  151. package/dist/instrument-chassis.js +1 -1
  152. package/dist/instrument-rail.js +1 -1
  153. package/dist/keyboard.js +1 -1
  154. package/dist/{keys-BFoma9vm.js → keys-BsYjEFOW.js} +1 -1
  155. package/dist/label.js +1 -1
  156. package/dist/labeled-field.js +6 -6
  157. package/dist/metric-badge.js +1 -1
  158. package/dist/metric-stack.js +1 -1
  159. package/dist/{minimize-2-BP27-qBY.js → minimize-2-lcXOuc6V.js} +1 -1
  160. package/dist/motion-core.js +68 -98
  161. package/dist/motion.js +3 -3
  162. package/dist/notification.js +1 -1
  163. package/dist/number-field.js +1 -1
  164. package/dist/paper-backdrop.js +1 -1
  165. package/dist/popover.js +1 -1
  166. package/dist/progress.js +1 -1
  167. package/dist/pulse.js +1 -1
  168. package/dist/reactive.js +2 -2
  169. package/dist/resolveCanvasColor-BBiYfp8g.js +11 -0
  170. package/dist/responsive-tabs.js +2 -2
  171. package/dist/scrolling-text.js +1 -1
  172. package/dist/{search-DBG8qaRs.js → search-nbkvr2dC.js} +1 -1
  173. package/dist/search.js +12 -12
  174. package/dist/select.js +3 -3
  175. package/dist/separator.js +1 -1
  176. package/dist/{sheet-CQYYrkr9.js → sheet-VZEtNFvO.js} +4 -4
  177. package/dist/sheet.js +1 -1
  178. package/dist/slider-D9puf-Ko.js +142 -0
  179. package/dist/slider.js +1 -1
  180. package/dist/sortable-list.js +3 -3
  181. package/dist/styles/components.css +1 -1
  182. package/dist/styles/dock-controls.css +21 -18
  183. package/dist/styles/dock.css +415 -224
  184. package/dist/styles/fonts.css +0 -25
  185. package/dist/styles/glass.css +100 -41
  186. package/dist/styles/theme.css +58 -2
  187. package/dist/styles/tokens.css +139 -32
  188. package/dist/styles/typography.css +55 -72
  189. package/dist/styles/utilities.css +19 -14
  190. package/dist/styles/view-transition.css +12 -40
  191. package/dist/supportsCssTimeline-C5oe0lnD.js +12 -0
  192. package/dist/switch.js +1 -1
  193. package/dist/tabs.js +5 -5
  194. package/dist/timeline.js +3 -3
  195. package/dist/toast.js +1 -1
  196. package/dist/toggle-group.js +1 -1
  197. package/dist/tooltip.js +1 -1
  198. package/dist/typewriter.js +1 -1
  199. package/dist/{useAnimatedNumber-DfVgP4te.js → useAnimatedNumber-C_3wZLx4.js} +1 -1
  200. package/dist/{useCanvas2D-BeNJqqIS.js → useCanvas2D-ClrQuZtp.js} +2 -1
  201. package/dist/{useConfiguratorState-DUtC1jxr.js → useConfiguratorState-CMff4GzH.js} +5 -5
  202. package/dist/useResolveTokenColor-r9pnNjqK.js +24 -0
  203. package/dist/useScrollProgress-C9ysDic5.js +35 -0
  204. package/dist/useSpecularTracking-BVRZsRHA.js +26 -0
  205. package/dist/{useTextHighlight-Dmtofpk2.js → useTextHighlight-9nMW23Qb.js} +1 -1
  206. package/dist/{useTouchGate-CS5Csc2h.js → useTouchGate-WFyJYsth.js} +1 -1
  207. package/dist/vReveal-CqaCz_mC.js +44 -0
  208. package/dist/watercolor-dot.js +2 -2
  209. package/dist/{x-C4pz9nbD.js → x-Dfsegz9Y.js} +1 -1
  210. package/package.json +64 -4
  211. package/src/fonts/README.md +26 -18
  212. package/src/styles/dock-controls.css +21 -18
  213. package/src/styles/dock.css +415 -224
  214. package/src/styles/fonts.css +0 -25
  215. package/src/styles/glass.css +100 -41
  216. package/src/styles/theme.css +58 -2
  217. package/src/styles/tokens.css +139 -32
  218. package/src/styles/typography.css +55 -72
  219. package/src/styles/utilities.css +19 -14
  220. package/src/styles/view-transition.css +12 -40
  221. package/dist/CardFooter-C390imy7.js +0 -129
  222. package/dist/CollapsibleContent-cauTbZEM.js +0 -52
  223. package/dist/TabsIndicator-DA0x9gPr.js +0 -97
  224. package/dist/color-DS-iLRVM.js +0 -33
  225. package/dist/compile-C62K_FpC.js +0 -106
  226. package/dist/fonts/fraunces/fraunces-latin.woff2 +0 -0
  227. package/dist/slider-CgNzRSh6.js +0 -129
  228. package/dist/useViewTransition-DI0Rs2rV.js +0 -21
  229. package/dist/vReveal-u2wSG2El.js +0 -35
  230. package/src/fonts/fraunces/fraunces-latin.woff2 +0 -0
  231. /package/dist/{InstrumentChassis-DaHIZCqy.js → InstrumentChassis-C2f6cBaQ.js} +0 -0
  232. /package/dist/{InstrumentRail-B0qqLFN0.js → InstrumentRail-CUJ05YVG.js} +0 -0
  233. /package/dist/{ModalOverlay-B_CBtqcE.js → ModalOverlay-B1GkAjNb.js} +0 -0
  234. /package/dist/{PaperBackdrop-D_YZW47j.js → PaperBackdrop-CqwjnfLv.js} +0 -0
  235. /package/dist/{SelectGroup-CMdoCjRE.js → SelectGroup-BFiod7X2.js} +0 -0
  236. /package/dist/{SelectSeparator-CaJnPF3_.js → SelectSeparator-L8pPEn4L.js} +0 -0
  237. /package/dist/{_plugin-vue_export-helper-C1je1s0u.js → _plugin-vue_export-helper-ok8pgSl5.js} +0 -0
  238. /package/dist/composables/{dom → motion}/useTextHighlight.d.ts +0 -0
  239. /package/dist/{constants-C8NMonuo.js → constants-BPOqYJAm.js} +0 -0
  240. /package/dist/{createContext-DBMGRlx4.js → createContext-B44Sah_H.js} +0 -0
  241. /package/dist/{createLucideIcon-DuDoe_ra.js → createLucideIcon-B6uNAU9G.js} +0 -0
  242. /package/dist/{menuItemVariants-C2QlXqT3.js → menuItemVariants-DKM85SNE.js} +0 -0
  243. /package/dist/{presets-Dyv9Zl7W.js → presets-D1XPuTj-.js} +0 -0
  244. /package/dist/{prng-CjVgzjQT.js → prng-COGhh02-.js} +0 -0
  245. /package/dist/{useGlassRenderer-Dn3WpfG-.js → useGlassRenderer-5I0YkI4t.js} +0 -0
  246. /package/dist/{useGlobalDark-D7R9OypB.js → useGlobalDark-D3EBWzXK.js} +0 -0
  247. /package/dist/{useIntersectionPause-DsQYGc8V.js → useIntersectionPause-Bj4sPkMh.js} +0 -0
  248. /package/dist/{useInterval-CHVYFpXV.js → useInterval-CcLfq2WU.js} +0 -0
  249. /package/dist/{useKeyboardShortcuts-i8tHd5WO.js → useKeyboardShortcuts-BXWXOZ-9.js} +0 -0
  250. /package/dist/{useResizeObserver-DX-STszm.js → useResizeObserver-CWCbk5Px.js} +0 -0
  251. /package/dist/{useSortable-muI29agz.js → useSortable-MGAbCGVJ.js} +0 -0
  252. /package/dist/{useSpringMount-CnizvZGm.js → useSpringMount-BJSHcLl3.js} +0 -0
  253. /package/dist/{useTimer-DGgoxTXL.js → useTimer-3xqf_54b.js} +0 -0
  254. /package/dist/{useUserInvalidAria-DmvZ_6Dx.js → useUserInvalidAria-DoJKMZ3s.js} +0 -0
  255. /package/dist/{useViewportReady-Dcvf0c4p.js → useViewportReady-RIr5Wgkh.js} +0 -0
@@ -44,46 +44,18 @@
44
44
  ::view-transition-new(.gl-list-item):only-child { animation-name: gl-vt-slide-in; }
45
45
  ::view-transition-old(.gl-list-item):only-child { animation-name: gl-vt-slide-out; }
46
46
 
47
- /* AQ.W6 §Design 7 — the dock layer group recipe. `<GlassDock>` (.dock-layers)
48
- * and `<DockLayerGroup>` (.dock-layer-stack) carry `view-transition-class:
49
- * gl-dock-layer` + a page-unique `view-transition-name` on a View-Transitions
50
- * engine, so the collapsed↔expanded width + the layer-pane swap morph as a VT
51
- * group instead of the JS FLIP.
52
- *
53
- * AT.W6-dock-c / AU.W8 — VT/FLIP timing PARITY. The timing-function is
54
- * `--dock-resize-spring` (= the `--spring-dock` linear(), AU.W8) — the SAME
55
- * source the FLIP fallback consumes via `--dock-motion-resize` (`dock.css`), so
56
- * the identical curve drives both engines. Retires the AQ.W6 fork (this group
57
- * ran `--vt-ease`, the apple-spring overshoot). `--vt-ease` still governs the
58
- * other recipes (`.gl-list-item`). PRM zeroes the animation above. */
59
- ::view-transition-group(.gl-dock-layer) {
60
- animation-duration: var(--vt-duration, var(--duration-normal));
61
- animation-timing-function: var(--dock-resize-spring, var(--spring-dock));
62
- }
63
-
64
- /* AW.W3 — typed directional dock curves. The swap tags the active transition
65
- * `dock-expand` / `dock-collapse` (the outer collapsed↔expanded pair) and
66
- * `layer-forward` / `layer-back` (the inner DockLayerGroup pane swap) via the
67
- * `types` argument to `startViewTransition` (Chrome 140+; feature-detected, the
68
- * untyped fallback is the symmetric `.gl-dock-layer` curve above). iOS-feel
69
- * motion is ASYMMETRIC — a snappier exit, a softer entry-overshoot. EXPAND
70
- * (and forward) lead with the overshooting `--spring-dock`; COLLAPSE (and back)
71
- * exit on the non-overshooting `--spring-snappy` (a quicker settle, no bounce on
72
- * the way out). The shorter `--duration-fast` on the exit reads as the crisp
73
- * dismiss. A non-typed engine never matches these — it runs the symmetric curve,
74
- * which is the acceptable contract. PRM zeroes the animation (the `@media` at
75
- * the top of this file). */
76
- :active-view-transition-type(dock-expand) ::view-transition-group(.gl-dock-layer),
77
- :active-view-transition-type(layer-forward) ::view-transition-group(.gl-dock-layer) {
78
- animation-duration: var(--vt-duration, var(--duration-normal));
79
- animation-timing-function: var(--dock-resize-spring, var(--spring-dock));
80
- }
81
-
82
- :active-view-transition-type(dock-collapse) ::view-transition-group(.gl-dock-layer),
83
- :active-view-transition-type(layer-back) ::view-transition-group(.gl-dock-layer) {
84
- animation-duration: var(--vt-duration-exit, var(--duration-fast));
85
- animation-timing-function: var(--spring-snappy);
86
- }
47
+ /* AX.W01 — the dock COLLAPSE View-Transitions recipe is RETIRED. The
48
+ * `::view-transition-group(.gl-dock-layer)` group + its `:active-view-transition-type
49
+ * (dock-expand|dock-collapse|layer-forward|layer-back)` asymmetric curve fork are
50
+ * DELETED: VT crossfades RASTERIZED snapshots — the wrong primitive for a layout
51
+ * morph (the "taffy"-stretch + text-blur + uncaptured-animating-ancestor desync +
52
+ * the co-mounted-docks snapshot-DROP). The dock collapse↔expand (and inner
53
+ * pane-swap) now morphs off the ONE `--dock-morph-t` spring scalar
54
+ * (`useLayerTransition` + `dock.css`), one clock on every engine. The SEPARABLE
55
+ * per-instance `view-transition-name` ROUTE-morph seam on the dock root stays
56
+ * (GlassDock.vue `rootVtStyle`) for the consumer's page/route geometry-morph — it
57
+ * is no longer the dock's own collapse mechanism. The `.gl-list-item` group recipe
58
+ * (non-dock) is UNTOUCHED above. */
87
59
 
88
60
  @keyframes gl-vt-slide-in { from { opacity: 0; translate: 0 var(--vt-rise, 8px); } }
89
61
  @keyframes gl-vt-slide-out { to { opacity: 0; translate: 0 var(--vt-rise, 8px); } }
@@ -0,0 +1,12 @@
1
+ //#region src/composables/motion/supportsCssTimeline.ts
2
+ function e(e, t) {
3
+ return typeof CSS > "u" || typeof CSS.supports != "function" ? !1 : CSS.supports("animation-timeline", e) && !CSS.supports("animation-timeline", t);
4
+ }
5
+ function t() {
6
+ return e("scroll()", "gl-not-a-real-timeline");
7
+ }
8
+ function n() {
9
+ return e("view()", "gl-not-a-real-timeline");
10
+ }
11
+ //#endregion
12
+ export { n, t };
package/dist/switch.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as e } from "./Switch-x8n6husW.js";
1
+ import { t as e } from "./Switch-LDKLmmgx.js";
2
2
  export { e as Switch };
package/dist/tabs.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { t as e } from "./cn-DJXf4yaB.js";
2
- import { t } from "./_plugin-vue_export-helper-C1je1s0u.js";
3
- import { i as n, n as r, r as i, t as a } from "./TooltipProvider-D-JrSqDu.js";
4
- import { t as o } from "./UnderlineTabs-CuIK16JI.js";
2
+ import { t } from "./_plugin-vue_export-helper-ok8pgSl5.js";
3
+ import { i as n, n as r, r as i, t as a } from "./TooltipProvider-CmZzCuaG.js";
4
+ import { t as o } from "./UnderlineTabs-Uxn-R3MT.js";
5
5
  import { Fragment as s, computed as c, createBlock as l, createCommentVNode as u, createElementBlock as d, createElementVNode as f, createTextVNode as p, createVNode as m, defineComponent as h, mergeModels as g, nextTick as _, normalizeClass as v, normalizeStyle as y, onMounted as b, onUnmounted as x, openBlock as S, ref as C, renderList as w, renderSlot as T, toDisplayString as E, unref as D, useModel as O, watch as k, withCtx as A } from "vue";
6
6
  //#region src/components/custom/tabs/composables/useBouncySlider.ts
7
7
  function j(e) {
@@ -105,7 +105,7 @@ var M = [
105
105
  function W(e) {
106
106
  if (typeof window < "u" && window.matchMedia("(prefers-reduced-motion: reduce)").matches) return;
107
107
  e.getAnimations().forEach((e) => e.cancel());
108
- let t = o("--ease-apple-spring", "cubic-bezier(0.175, 0.885, 0.32, 1.275)"), n = o("--scale-press", "0.95"), r = o("--scale-hover", "1.08");
108
+ let t = o("--spring-bouncy", "ease"), n = o("--scale-press", "0.95"), r = o("--scale-hover", "1.08");
109
109
  e.animate([
110
110
  { transform: "scale(1)" },
111
111
  {
@@ -208,7 +208,7 @@ var M = [
208
208
  }, () => [p(E(e.label), 1)], !0)], 10, N))], 64))), 128))
209
209
  ], 2));
210
210
  }
211
- }), [["__scopeId", "data-v-45c0ed13"]]), F = /* @__PURE__ */ h({
211
+ }), [["__scopeId", "data-v-795d5fdc"]]), F = /* @__PURE__ */ h({
212
212
  __name: "BouncyTabs",
213
213
  props: /* @__PURE__ */ g({
214
214
  options: {},
package/dist/timeline.js CHANGED
@@ -1,5 +1,5 @@
1
- import { t as e } from "./_plugin-vue_export-helper-C1je1s0u.js";
2
- import { t } from "./HoverPopover-DTSYkJtw.js";
1
+ import { t as e } from "./_plugin-vue_export-helper-ok8pgSl5.js";
2
+ import { t } from "./HoverPopover-D56O6Ylp.js";
3
3
  import { Fragment as n, computed as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createSlots as c, createVNode as l, defineComponent as u, guardReactiveProps as d, normalizeClass as f, normalizeProps as p, normalizeStyle as m, openBlock as h, ref as g, renderList as _, renderSlot as v, toDisplayString as y, unref as b, withCtx as x } from "vue";
4
4
  //#region src/components/custom/timeline/geometry.ts
5
5
  function S(e) {
@@ -197,7 +197,7 @@ var A = ["aria-label"], j = [
197
197
  _: 2
198
198
  }, 1032, ["class", "onUpdate:open"]))], 4))), 128))], 8, A)) : a("", !0);
199
199
  }
200
- }), [["__scopeId", "data-v-8e53d036"]]), H = [
200
+ }), [["__scopeId", "data-v-54dadfb5"]]), H = [
201
201
  "aria-valuemax",
202
202
  "aria-valuenow",
203
203
  "aria-label"
package/dist/toast.js CHANGED
@@ -1,2 +1,2 @@
1
- import { a as e, c as t, i as n, n as r, o as i, r as a, s as o, t as s } from "./Toaster-DdhMKfus.js";
1
+ import { a as e, c as t, i as n, n as r, o as i, r as a, s as o, t as s } from "./Toaster-CabYEEF_.js";
2
2
  export { t as Toast, o as ToastAction, i as ToastClose, e as ToastDescription, n as ToastTitle, s as Toaster, r as toast, a as useToast };
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "./ToggleGroupItem-gyXj998A.js";
1
+ import { n as e, t } from "./ToggleGroupItem-CkXUcBlt.js";
2
2
  export { e as ToggleGroup, t as ToggleGroupItem };
package/dist/tooltip.js CHANGED
@@ -1,2 +1,2 @@
1
- import { i as e, n as t, r as n, t as r } from "./TooltipProvider-D-JrSqDu.js";
1
+ import { i as e, n as t, r as n, t as r } from "./TooltipProvider-CmZzCuaG.js";
2
2
  export { e as Tooltip, n as TooltipContent, r as TooltipProvider, t as TooltipTrigger };
@@ -1,4 +1,4 @@
1
- import { t as e } from "./_plugin-vue_export-helper-C1je1s0u.js";
1
+ import { t as e } from "./_plugin-vue_export-helper-ok8pgSl5.js";
2
2
  import { Fragment as t, computed as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, defineComponent as o, normalizeClass as s, onMounted as c, onUnmounted as l, openBlock as u, ref as d, renderList as f, toDisplayString as p, unref as m, watch as h } from "vue";
3
3
  //#region src/components/custom/typewriter/types.ts
4
4
  var g = {
@@ -1,4 +1,4 @@
1
- import { n as e, t } from "./constants-C8NMonuo.js";
1
+ import { n as e, t } from "./constants-BPOqYJAm.js";
2
2
  import { getCurrentScope as n, onScopeDispose as r, readonly as i, ref as a, shallowRef as o, toValue as s, watch as c } from "vue";
3
3
  import { SmoothProgress as l } from "@mkbabb/keyframes.js";
4
4
  //#region src/composables/motion/useAnimatedNumber.ts
@@ -91,5 +91,6 @@ function i(i) {
91
91
  }
92
92
  };
93
93
  }
94
+ var a = i;
94
95
  //#endregion
95
- export { i as t };
96
+ export { a as n, i as t };
@@ -1,9 +1,9 @@
1
1
  import { t as e } from "./cn-DJXf4yaB.js";
2
- import { t } from "./createLucideIcon-DuDoe_ra.js";
3
- import { t as n } from "./chevron-down-pBY8sYfV.js";
4
- import { t as r } from "./_plugin-vue_export-helper-C1je1s0u.js";
5
- import { t as i } from "./createContext-DBMGRlx4.js";
6
- import { t as a } from "./Label-CZk-3nTc.js";
2
+ import { t } from "./createLucideIcon-B6uNAU9G.js";
3
+ import { t as n } from "./chevron-down-BSkTP2aL.js";
4
+ import { t as r } from "./_plugin-vue_export-helper-ok8pgSl5.js";
5
+ import { t as i } from "./createContext-B44Sah_H.js";
6
+ import { t as a } from "./Label-zRfbQdCn.js";
7
7
  import { Fragment as o, computed as s, createCommentVNode as c, createElementBlock as l, createElementVNode as u, createTextVNode as d, createVNode as f, defineComponent as p, mergeModels as m, normalizeClass as h, normalizeStyle as g, openBlock as _, reactive as v, ref as y, renderList as b, renderSlot as x, toDisplayString as S, toRaw as C, unref as w, useId as T, useModel as E, withCtx as D } from "vue";
8
8
  var O = t("rotate-ccw", [["path", {
9
9
  d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",
@@ -0,0 +1,24 @@
1
+ //#region src/composables/dom/useResolveTokenColor.ts
2
+ function e(e, t) {
3
+ if (!e.includes("var(") || typeof window > "u" || !t) return e;
4
+ let n = t.style.color;
5
+ t.style.color = e;
6
+ let r = getComputedStyle(t).color;
7
+ return t.style.color = n, r || e;
8
+ }
9
+ function t(t = 256) {
10
+ let n = /* @__PURE__ */ new Map();
11
+ return {
12
+ resolve(r, i) {
13
+ let a = n.get(r);
14
+ if (a !== void 0) return a;
15
+ let o = e(r, i);
16
+ return n.size >= t && n.clear(), n.set(r, o), o;
17
+ },
18
+ invalidate() {
19
+ n.clear();
20
+ }
21
+ };
22
+ }
23
+ //#endregion
24
+ export { e as n, t };
@@ -0,0 +1,35 @@
1
+ import { t as e } from "./supportsCssTimeline-C5oe0lnD.js";
2
+ import { onBeforeUnmount as t, onMounted as n, ref as r, unref as i, watch as a } from "vue";
3
+ //#region src/composables/motion/useScrollProgress.ts
4
+ var o = e();
5
+ function s(e) {
6
+ let { offset: s = 0, trackExit: c = !1 } = e, l = r(0), u = 0, d = null;
7
+ function f() {
8
+ let t = i(e.target);
9
+ if (!t) return;
10
+ let n = t.getBoundingClientRect(), r = window.innerHeight + s, a = r - (c ? -n.height : 0);
11
+ if (a === 0) {
12
+ l.value = 0;
13
+ return;
14
+ }
15
+ let o = (r - n.top) / a;
16
+ l.value = Math.max(0, Math.min(1, o));
17
+ }
18
+ function p() {
19
+ u ||= requestAnimationFrame(() => {
20
+ u = 0, f();
21
+ });
22
+ }
23
+ return n(() => {
24
+ if (f(), o) return;
25
+ window.addEventListener("scroll", p, { passive: !0 }), window.addEventListener("resize", p, { passive: !0 });
26
+ let t = i(e.target);
27
+ t && typeof ResizeObserver < "u" && (d = new ResizeObserver(p), d.observe(t));
28
+ }), o || a(() => i(e.target), (e, t) => {
29
+ t && d && d.unobserve(t), e && d && d.observe(e), p();
30
+ }), t(() => {
31
+ window.removeEventListener("scroll", p), window.removeEventListener("resize", p), u && cancelAnimationFrame(u), d?.disconnect(), d = null;
32
+ }), l;
33
+ }
34
+ //#endregion
35
+ export { s as t };
@@ -0,0 +1,26 @@
1
+ import { ref as e } from "vue";
2
+ //#region src/composables/glass/useSpecularTracking.ts
3
+ function t() {
4
+ return typeof window > "u" || typeof window.matchMedia != "function" ? !1 : window.matchMedia("(prefers-reduced-motion: reduce)").matches;
5
+ }
6
+ function n() {
7
+ let n = e({});
8
+ function r(e) {
9
+ if (t()) return;
10
+ let r = e.currentTarget;
11
+ if (!r) return;
12
+ let i = r.getBoundingClientRect();
13
+ if (i.width === 0 || i.height === 0) return;
14
+ let a = (e.clientX - i.left) / i.width * 100, o = (e.clientY - i.top) / i.height * 100;
15
+ n.value = {
16
+ "--mouse-x": `${a.toFixed(2)}%`,
17
+ "--mouse-y": `${o.toFixed(2)}%`
18
+ };
19
+ }
20
+ return {
21
+ specularStyle: n,
22
+ onPointerMove: r
23
+ };
24
+ }
25
+ //#endregion
26
+ export { n as t };
@@ -1,5 +1,5 @@
1
1
  import { getCurrentScope as e, onScopeDispose as t } from "vue";
2
- //#region src/composables/dom/useTextHighlight.ts
2
+ //#region src/composables/motion/useTextHighlight.ts
3
3
  var n = /* @__PURE__ */ new Map();
4
4
  function r() {
5
5
  return typeof CSS < "u" && "highlights" in CSS && typeof globalThis.Highlight == "function";
@@ -1,4 +1,4 @@
1
- import { t as e } from "./useTimer-DGgoxTXL.js";
1
+ import { t as e } from "./useTimer-3xqf_54b.js";
2
2
  import { getCurrentScope as t, onScopeDispose as n, ref as r } from "vue";
3
3
  //#region src/composables/dom/useTouchGate.ts
4
4
  var i = /* @__PURE__ */ new Set(), a = !1;
@@ -0,0 +1,44 @@
1
+ //#region src/utils/moveBefore.ts
2
+ function e(e, t, n) {
3
+ let r = e;
4
+ typeof r.moveBefore == "function" ? r.moveBefore(t, n) : e.insertBefore(t, n);
5
+ }
6
+ function t() {
7
+ return typeof Element < "u" && "moveBefore" in Element.prototype;
8
+ }
9
+ //#endregion
10
+ //#region src/utils/platformSupport.ts
11
+ function n() {
12
+ return typeof globalThis.scheduler?.postTask == "function";
13
+ }
14
+ //#endregion
15
+ //#region src/composables/motion/useViewTransition.ts
16
+ function r() {
17
+ return typeof document < "u" && typeof document.startViewTransition == "function";
18
+ }
19
+ function i(e, t) {
20
+ let n = typeof document > "u" ? void 0 : document;
21
+ if (!n || typeof n.startViewTransition != "function") return e(), {
22
+ finished: Promise.resolve(),
23
+ transitioned: !1
24
+ };
25
+ let r = t?.types && t.types.length > 0 ? n.startViewTransition({
26
+ update: () => e(),
27
+ types: t.types
28
+ }) : n.startViewTransition(() => e());
29
+ return r.ready?.catch(() => {}), {
30
+ finished: r.finished.then(() => void 0, () => void 0),
31
+ transitioned: !0
32
+ };
33
+ }
34
+ //#endregion
35
+ //#region src/composables/motion/vReveal.ts
36
+ function a(e, t) {
37
+ e.setAttribute("data-reveal", t.arg === "fade" ? "fade" : ""), e.style.setProperty("--d", String(t.value ?? 0));
38
+ }
39
+ var o = {
40
+ mounted: a,
41
+ updated: a
42
+ };
43
+ //#endregion
44
+ export { e as a, n as i, i as n, t as o, r, o as t };
@@ -1,5 +1,5 @@
1
- import { t as e } from "./_plugin-vue_export-helper-C1je1s0u.js";
2
- import { n as t, t as n } from "./prng-CjVgzjQT.js";
1
+ import { t as e } from "./_plugin-vue_export-helper-ok8pgSl5.js";
2
+ import { n as t, t as n } from "./prng-COGhh02-.js";
3
3
  import { computed as r, createBlock as i, createElementVNode as a, defineComponent as o, normalizeClass as s, normalizeStyle as c, onUnmounted as l, openBlock as u, ref as d, renderSlot as f, resolveDynamicComponent as p, toRef as m, useId as h, watch as g, withCtx as _ } from "vue";
4
4
  //#region src/components/custom/watercolor-dot/prng.ts
5
5
  function v(e, t, n) {
@@ -1,4 +1,4 @@
1
- import { t as e } from "./createLucideIcon-DuDoe_ra.js";
1
+ import { t as e } from "./createLucideIcon-B6uNAU9G.js";
2
2
  var t = e("x", [["path", {
3
3
  d: "M18 6 6 18",
4
4
  key: "1bl5f8"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mkbabb/glass-ui",
3
- "version": "3.6.0",
3
+ "version": "3.8.0",
4
4
  "description": "Glassmorphic design system — Vue 3.5 components, reka-ui primitives, Tailwind CSS v4 tokens",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -10,6 +10,9 @@
10
10
  "homepage": "https://github.com/mkbabb/glass-ui#readme",
11
11
  "bugs": "https://github.com/mkbabb/glass-ui/issues",
12
12
  "type": "module",
13
+ "workspaces": [
14
+ "tests-visual"
15
+ ],
13
16
  "types": "./dist/index.d.ts",
14
17
  "typesVersions": {
15
18
  "*": {
@@ -49,9 +52,15 @@
49
52
  "aurora": [
50
53
  "dist/aurora.d.ts"
51
54
  ],
55
+ "canvas": [
56
+ "dist/canvas.d.ts"
57
+ ],
52
58
  "color": [
53
59
  "dist/color.d.ts"
54
60
  ],
61
+ "fourier-field": [
62
+ "dist/fourier-field.d.ts"
63
+ ],
55
64
  "goo-blob": [
56
65
  "dist/goo-blob.d.ts"
57
66
  ],
@@ -70,6 +79,9 @@
70
79
  "status-dot": [
71
80
  "dist/status-dot.d.ts"
72
81
  ],
82
+ "deck-progress": [
83
+ "dist/deck-progress.d.ts"
84
+ ],
73
85
  "pulse": [
74
86
  "dist/pulse.d.ts"
75
87
  ],
@@ -289,10 +301,18 @@
289
301
  "types": "./dist/aurora.d.ts",
290
302
  "import": "./dist/aurora.js"
291
303
  },
304
+ "./canvas": {
305
+ "types": "./dist/canvas.d.ts",
306
+ "import": "./dist/canvas.js"
307
+ },
292
308
  "./color": {
293
309
  "types": "./dist/color.d.ts",
294
310
  "import": "./dist/color.js"
295
311
  },
312
+ "./fourier-field": {
313
+ "types": "./dist/fourier-field.d.ts",
314
+ "import": "./dist/fourier-field.js"
315
+ },
296
316
  "./goo-blob": {
297
317
  "types": "./dist/goo-blob.d.ts",
298
318
  "import": "./dist/goo-blob.js"
@@ -337,6 +357,10 @@
337
357
  "types": "./dist/status-dot.d.ts",
338
358
  "import": "./dist/status-dot.js"
339
359
  },
360
+ "./deck-progress": {
361
+ "types": "./dist/deck-progress.d.ts",
362
+ "import": "./dist/deck-progress.js"
363
+ },
340
364
  "./pulse": {
341
365
  "types": "./dist/pulse.d.ts",
342
366
  "import": "./dist/pulse.js"
@@ -557,10 +581,11 @@
557
581
  "proof:phantom-classes": "node scripts/proof-phantom-classes.mjs",
558
582
  "proof:vt-names": "node scripts/proof-vt-names.mjs",
559
583
  "proof:dock-animation-live": "node scripts/proof-dock-animation-live.mjs",
584
+ "proof:dock-orchestrator-single": "node scripts/proof-dock-orchestrator-single.mjs",
560
585
  "proof:dock-clip-reveal": "node scripts/proof-dock-clip-reveal.mjs",
561
586
  "proof:dock-layering-polish": "node scripts/proof-dock-layering-polish.mjs",
562
- "proof:dock-motion-parity": "node scripts/proof-dock-motion-parity.mjs",
563
- "proof:dock-motion-single-source": "node scripts/proof-dock-motion-single-source.mjs",
587
+ "proof:dock-wrap-content-driven": "node scripts/proof-dock-wrap-content-driven.mjs",
588
+ "proof:dock-hold-contract": "node scripts/proof-dock-hold-contract.mjs",
564
589
  "proof:dock-opacity-lockstep": "node scripts/proof-dock-opacity-lockstep.mjs",
565
590
  "proof:dock-a11y-contract": "vitest run tests/components/custom/dock/DockLayerRail.a11y.test.ts",
566
591
  "proof:dock-vocabulary": "node scripts/proof-dock-vocabulary.mjs",
@@ -578,23 +603,46 @@
578
603
  "proof:peer-optional": "node scripts/proof-peer-optional.mjs",
579
604
  "proof:vueuse-free-root": "node scripts/proof-vueuse-free-root.mjs",
580
605
  "proof:supportsPostTask-wired": "node scripts/proof-supports-post-task-wired.mjs",
581
- "proof:font-axes": "node scripts/proof-font-axes.mjs",
582
606
  "proof:color-acyclic": "node scripts/proof-color-acyclic.mjs",
583
607
  "proof:single-color-core": "node scripts/proof-single-color-core.mjs",
584
608
  "proof:frostShader-deleted": "node scripts/proof-frostshader-deleted.mjs",
585
609
  "proof:slider-two-only": "node scripts/proof-slider-two-only.mjs",
610
+ "proof:carousel-glass-atoms": "node scripts/proof-carousel-glass-atoms.mjs",
586
611
  "proof:storybook-ia": "node scripts/proof-storybook-ia.mjs",
612
+ "proof:storybook-complete": "node scripts/proof-storybook-complete.mjs",
587
613
  "proof:no-orphan-demo-route": "node scripts/proof-no-orphan-demo-route.mjs",
614
+ "proof:demo-dock-nav": "node scripts/proof-demo-dock-nav.mjs",
615
+ "proof:demo-dock-nav-runtime": "node scripts/proof-demo-dock-nav-runtime.mjs",
588
616
  "proof:font-canon": "node scripts/proof-font-canon.mjs",
617
+ "proof:font-cascade-live": "node scripts/proof-font-cascade-live.mjs",
589
618
  "proof:webgl-substrate-single": "node scripts/proof-webgl-substrate-single.mjs",
590
619
  "proof:blob-value-free": "node scripts/proof-blob-value-free.mjs",
591
620
  "proof:motion-composables-consumer": "node scripts/proof-motion-composables-consumer.mjs",
592
621
  "proof:motion-value-free": "node scripts/proof-motion-value-free.mjs",
593
622
  "proof:no-value-default": "node scripts/proof-no-value-default.mjs",
594
623
  "proof:blob-space-gamma": "node scripts/proof-blob-space-gamma.mjs",
624
+ "proof:blob-smin-normalized": "node scripts/proof-blob-smin-normalized.mjs",
625
+ "proof:blob-gradient-unit-length": "node scripts/proof-blob-gradient-unit-length.mjs",
626
+ "proof:blob-spec-premult": "node scripts/proof-blob-spec-premult.mjs",
627
+ "proof:blob-interaction-prm": "node scripts/proof-blob-interaction-prm.mjs",
628
+ "proof:blob-mood-resolved": "node scripts/proof-blob-mood-resolved.mjs",
629
+ "proof:blob-tempo-suppression": "node scripts/proof-blob-tempo-suppression.mjs",
595
630
  "proof:aurora-space-gamma": "node scripts/proof-aurora-space-gamma.mjs",
596
631
  "proof:aurora-oklch-interp": "node scripts/proof-aurora-oklch-interp.mjs",
597
632
  "proof:aurora-derive-gamut": "vitest run tests/components/custom/aurora/derive-color.test.ts",
633
+ "proof:aurora-tensor-field": "node scripts/proof-aurora-tensor-field.mjs && vitest run tests/components/custom/aurora/painterly.test.ts",
634
+ "proof:aurora-impasto-relight": "node scripts/proof-aurora-impasto-relight.mjs",
635
+ "proof:aurora-vangogh-preset": "node scripts/proof-aurora-vangogh-preset.mjs",
636
+ "proof:aurora-oilpastel-medium": "node scripts/proof-aurora-oilpastel-medium.mjs",
637
+ "proof:aurora-stroke-composite": "node scripts/proof-aurora-stroke-composite.mjs",
638
+ "proof:aurora-painterly-statistics": "node scripts/proof-aurora-painterly-statistics.mjs",
639
+ "proof:aurora-atoms-roundtrip": "node scripts/proof-aurora-atoms-roundtrip.mjs",
640
+ "proof:aurora-wgsl-equivalence": "node scripts/proof-aurora-wgsl-equivalence.mjs",
641
+ "proof:aurora-noise-hash-equivalence": "node scripts/proof-aurora-noise-hash-equivalence.mjs",
642
+ "proof:aurora-backend-fallback": "node scripts/proof-aurora-backend-fallback.mjs",
643
+ "proof:webgpu-substrate-single": "node scripts/proof-webgpu-substrate-single.mjs",
644
+ "proof:aurora-webgpu-render": "node scripts/proof-aurora-webgpu-render.mjs",
645
+ "proof:aurora-interaction-prm": "node scripts/proof-aurora-interaction-prm.mjs",
598
646
  "proof:shader-shared-source": "node scripts/proof-shader-shared-source.mjs",
599
647
  "proof:blob-color-equivalence": "vitest run tests/components/custom/goo-blob/blob-color-equivalence.test.ts",
600
648
  "proof:fail-explicit": "node scripts/proof-fail-explicit.mjs",
@@ -608,7 +656,11 @@
608
656
  "proof:spring-tokens-synced": "node scripts/proof-spring-tokens-synced.mjs",
609
657
  "proof:offscreen-pause": "node scripts/proof-offscreen-pause.mjs",
610
658
  "proof:constellation-substrate-single": "node scripts/proof-constellation-substrate-single.mjs",
659
+ "proof:constellation-tokens": "node scripts/proof-constellation-tokens.mjs",
660
+ "proof:constellation-warp-live": "node scripts/proof-constellation-warp-live.mjs",
611
661
  "proof:canvas2d-substrate": "vitest run tests/composables/glass/canvas2d/useCanvas2D.test.ts",
662
+ "proof:resolve-canvas-color": "vitest run tests/composables/glass/canvas2d/resolveCanvasColor.test.ts",
663
+ "proof:text-highlight": "vitest run tests/composables/motion/text-highlight-home.test.ts tests/composables/motion/useTextHighlight.test.ts",
612
664
  "proof:constellation-field": "vitest run tests/components/custom/constellation/constellationField.test.ts",
613
665
  "proof:input-invalid-aria": "node scripts/proof-input-invalid-aria.mjs",
614
666
  "proof:styling-hygiene": "node scripts/proof-styling-hygiene.mjs",
@@ -620,6 +672,14 @@
620
672
  "proof:glass-card-tiers": "node scripts/proof-glass-card-tiers.mjs",
621
673
  "proof:primitive-affordance": "node scripts/proof-primitive-affordance.mjs",
622
674
  "proof:reka-binding-idiom": "node scripts/proof-reka-binding-idiom.mjs",
675
+ "proof:animation-coherence": "node scripts/proof-animation-coherence.mjs",
676
+ "proof:design-md-current": "node scripts/proof-design-md-current.mjs",
677
+ "proof:naming-consistency": "node scripts/proof-naming-consistency.mjs",
678
+ "proof:substrate-paints-color": "node scripts/proof-substrate-paints-color.mjs",
679
+ "proof:deck-progress-rail": "node scripts/proof-deck-progress-rail.mjs",
680
+ "proof:blob-render": "node scripts/proof-blob-render.mjs",
681
+ "proof:blob-integration": "node scripts/proof-blob-integration.mjs",
682
+ "proof:gate-script-parity": "node scripts/proof-gate-script-parity.mjs",
623
683
  "proof:all": "node scripts/gates.mjs --run local",
624
684
  "gates:verify-ci": "node scripts/gates.mjs --verify-ci",
625
685
  "profile:bundle": "node scripts/profile-bundle.mjs",
@@ -1,9 +1,17 @@
1
1
  # `src/fonts/` — self-hostable woff2 assets
2
2
 
3
- Per O.W6 Lane D / speedtest AC.W6 cohort (T_GU-FONT-A): glass-ui ships
4
- Fira Code (and forthcoming display/text companions) as woff2 assets so
5
- consumers can self-host via a single `@font-face` block rather than
6
- re-fetching from Google Fonts on every page-load.
3
+ glass-ui ships its brand register as self-hosted woff2 assets so consumers
4
+ can self-host via the `@mkbabb/glass-ui/styles/fonts` bundle rather than
5
+ re-fetching from a CDN on every page-load. The register is ONE coherent
6
+ brand voice:
7
+
8
+ - **Plus Jakarta Sans** — the text + display register (body, headings,
9
+ prose, display). The library DEFAULT family; every live surface paints it.
10
+ - **Fira Code** — the mono register (admin labels, tabular numerics, code).
11
+
12
+ Both are OFL-1.1 variable faces, each paired with a Capsize-calibrated
13
+ `"… Fallback"` face (declared in `typography.css`) so the swap window is
14
+ geometry-neutral (zero CLS).
7
15
 
8
16
  ## Canonical filenames (Fira Code)
9
17
 
@@ -21,26 +29,26 @@ woff2 builds live in `distr/woff2/` of that repository's releases — pull
21
29
  the `Regular`/`Medium`/`SemiBold` weights only (the three glass-ui ships
22
30
  as the `--font-mono` stack rungs).
23
31
 
24
- ## Fraunces (display, AU.W4)
32
+ ## On-disk layout (the shipped register)
25
33
 
26
34
  The actual on-disk layout is per-family nested
27
- (`src/fonts/<family>/<face>.woff2`), e.g.
28
- `src/fonts/plus-jakarta-sans/plus-jakarta-sans-latin.woff2`. AU.W4 ships the
29
- display register's face — the `--font-stack-display: "Fraunces"` token
30
- (`tokens.css`) had no face, so the `WONK`/`SOFT` axes `typography.css` drives were
31
- silently inert. The shipped face is the FULL variable Fraunces (latin subset):
35
+ (`src/fonts/<family>/<face>.woff2`):
32
36
 
33
37
  ```
34
- src/fonts/fraunces/fraunces-latin.woff2
38
+ src/fonts/plus-jakarta-sans/plus-jakarta-sans-latin.woff2
39
+ src/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-ext.woff2
40
+ src/fonts/fira-code/fira-code-latin.woff2
41
+ src/fonts/fira-code/fira-code-latin-ext.woff2
35
42
  ```
36
43
 
37
- It carries the `wght` · `opsz` · `SOFT` · `WONK` axes (verified by
38
- `proof:font-axes`, which parses the woff2 `fvar` against the axes
39
- `typography.css` references). Source canonical:
40
- <https://github.com/googlefonts/fraunces> (OFL-1.1); the variable woff2 latin
41
- subset is the Google Fonts / fontsource distribution. `proof:font-axes` fails
42
- closed if a wght-only instance (one that drops `SOFT`/`WONK`) is ever
43
- substituted.
44
+ Plus Jakarta Sans is the text + display register (`--font-stack-text`,
45
+ aliased by `--font-stack-display`); Fira Code is `--font-stack-mono`. Each is
46
+ a FULL variable face (latin + latin-ext subsets). Source canonical:
47
+ <https://github.com/tokotype/PlusJakartaSans> +
48
+ <https://github.com/tonsky/FiraCode> (both OFL-1.1); the variable woff2 latin
49
+ subsets are the Google Fonts / fontsource distributions. The Capsize metric
50
+ overrides on the fallback faces (`size-adjust` / `ascent-override` /
51
+ `descent-override`) reference these binaries' exact geometry.
44
52
 
45
53
  ## Why this directory ships, not the fetch step
46
54