@mkbabb/glass-ui 3.7.0 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. package/README.md +1 -6
  2. package/dist/CardAction-DuArVky-.js +157 -0
  3. package/dist/{CommandShortcut-CY0aQTz5.js → CommandShortcut-CefCj5mt.js} +7 -7
  4. package/dist/{ContextMenuSubContent-BeDz7G6f.js → ContextMenuSubContent-Bhg4f5jX.js} +3 -3
  5. package/dist/{DataTable-gtPOLZvl.js → DataTable-CUHMukiQ.js} +4 -4
  6. package/dist/DeckProgress-Dmk4_AKN.js +23 -0
  7. package/dist/{DialogContent-DG1YMR-P.js → DialogContent-BRkT1cjP.js} +3 -3
  8. package/dist/{DialogFooter-BCIaDP15.js → DialogFooter-Gprw8H_A.js} +1 -1
  9. package/dist/{HoverPopover-DXpOEw1P.js → HoverPopover-2LOIW34a.js} +1 -1
  10. package/dist/{IconTooltip-Cu86JR4e.js → IconTooltip-yefK7cJc.js} +1 -1
  11. package/dist/{MetricBadge-D-bRaQUD.js → MetricBadge-lTc002u2.js} +1 -1
  12. package/dist/{Notification-B5WHP3_1.js → Notification-BxK8LZMw.js} +1 -1
  13. package/dist/{NumberFieldContent-CLNVR1iY.js → NumberFieldContent-BbLOh8RU.js} +2 -2
  14. package/dist/{PopoverContent-F1bWnYoh.js → PopoverContent-BId6ggf_.js} +1 -1
  15. package/dist/{Progress-c4vo4ALi.js → Progress-iEuD9pxG.js} +4 -4
  16. package/dist/{ScrollingText-BEp377U5.js → ScrollingText-BPP84wKo.js} +2 -2
  17. package/dist/{SelectScrollDownButton-DAo5NmY_.js → SelectScrollDownButton-T32cVFeM.js} +4 -4
  18. package/dist/{SelectSeparator-COFMJGng.js → SelectSeparator-C4Ql0gzV.js} +1 -1
  19. package/dist/{TabsList-COqIdW7i.js → TabsList-B8CVOQPC.js} +2 -2
  20. package/dist/{Toaster-BMaeziJJ.js → Toaster-1rYWrmAm.js} +1 -1
  21. package/dist/{ToggleGroupItem-C-AIkBUw.js → ToggleGroupItem-Cev4pOVK.js} +5 -5
  22. package/dist/animated-digit.js +1 -1
  23. package/dist/api/index.d.ts +5 -3
  24. package/dist/aurora.js +339 -408
  25. package/dist/{badge-DHQrc_GQ.js → badge-BvwvT50i.js} +4 -4
  26. package/dist/badge.js +1 -1
  27. package/dist/{button-CAywcrhO.js → button-DN39cGqL.js} +13 -12
  28. package/dist/button.js +1 -1
  29. package/dist/canvas.d.ts +1 -0
  30. package/dist/canvas.js +3 -0
  31. package/dist/card.js +1 -1
  32. package/dist/carousel.js +106 -105
  33. package/dist/collapsible.js +1 -1
  34. package/dist/{color-DjJCAQ6f.js → color-8jBjWiJ6.js} +22 -14
  35. package/dist/color.js +2 -2
  36. package/dist/command.js +1 -1
  37. package/dist/compile-DAjIoEy2.js +158 -0
  38. package/dist/components/custom/aurora/composables/atoms.d.ts +90 -25
  39. package/dist/components/custom/aurora/composables/color.d.ts +0 -12
  40. package/dist/components/custom/aurora/composables/uniformBridge.d.ts +34 -23
  41. package/dist/components/custom/aurora/constants/presets.d.ts +10 -7
  42. package/dist/components/custom/aurora/constants/renderMode.d.ts +22 -0
  43. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -1
  44. package/dist/components/custom/aurora/constants/shaders/brush.glsl.d.ts +1 -1
  45. package/dist/components/custom/aurora/constants/shaders/composition.glsl.d.ts +1 -1
  46. package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +1 -1
  47. package/dist/components/custom/aurora/index.d.ts +3 -3
  48. package/dist/components/custom/configurator/ConfiguratorLayer.vue.d.ts +1 -1
  49. package/dist/components/custom/constellation/Constellation.vue.d.ts +40 -5
  50. package/dist/components/custom/constellation/constellationField.d.ts +110 -5
  51. package/dist/components/custom/constellation/index.d.ts +2 -2
  52. package/dist/components/custom/dock/DockSeparator.vue.d.ts +3 -0
  53. package/dist/components/custom/dock/GlassDock.vue.d.ts +57 -67
  54. package/dist/components/custom/dock/composables/dockContext.d.ts +7 -0
  55. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +57 -0
  56. package/dist/components/custom/dock/composables/index.d.ts +3 -0
  57. package/dist/components/custom/dock/composables/useDockHold.d.ts +61 -0
  58. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +13 -59
  59. package/dist/components/custom/dock/index.d.ts +4 -1
  60. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +13 -0
  61. package/dist/components/custom/goo-blob/composables/useBlobMood.d.ts +23 -5
  62. package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +2 -0
  63. package/dist/components/custom/goo-blob/composables/useBlobSatellites.d.ts +2 -0
  64. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +20 -5
  65. package/dist/components/custom/goo-blob/index.d.ts +1 -1
  66. package/dist/components/custom/goo-blob/shaders/sdf-body.glsl.d.ts +1 -1
  67. package/dist/components/custom/goo-blob/shaders/watercolor-edges.glsl.d.ts +2 -2
  68. package/dist/components/custom/goo-blob/types.d.ts +8 -0
  69. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +92 -0
  70. package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +49 -0
  71. package/dist/components/custom/tabs/index.d.ts +2 -5
  72. package/dist/components/ui/button/index.d.ts +1 -1
  73. package/dist/components/ui/card/Card.vue.d.ts +28 -10
  74. package/dist/components/ui/card/index.d.ts +1 -1
  75. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +1 -1
  76. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +1 -1
  77. package/dist/components/ui/carousel/GlassCarouselPager.vue.d.ts +3 -4
  78. package/dist/components/ui/progress/ProgressDefault.vue.d.ts +14 -4
  79. package/dist/components/ui/slider/Slider.vue.d.ts +3 -1
  80. package/dist/components/ui/slider/index.d.ts +14 -7
  81. package/dist/components/ui/tabs/TabsList.vue.d.ts +1 -1
  82. package/dist/composables/color/index.d.ts +19 -0
  83. package/dist/composables/context/createContext.d.ts +1 -1
  84. package/dist/composables/dom/index.d.ts +1 -1
  85. package/dist/composables/dom/useResolveTokenColor.d.ts +27 -0
  86. package/dist/composables/glass/canvas2d/index.d.ts +2 -1
  87. package/dist/composables/glass/canvas2d/resolveCanvasColor.d.ts +20 -0
  88. package/dist/composables/glass/canvas2d/useCanvas2D.d.ts +15 -1
  89. package/dist/composables/glass/index.d.ts +3 -1
  90. package/dist/composables/glass/useSpecularTracking.d.ts +33 -0
  91. package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +1 -1
  92. package/dist/composables/glass/webgl/shaders/procedural-color.glsl.d.ts +4 -0
  93. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +1 -1
  94. package/dist/composables/motion/core/index.d.ts +1 -0
  95. package/dist/configurator.js +1 -1
  96. package/dist/confirm-dialog.js +2 -2
  97. package/dist/constellation.js +143 -74
  98. package/dist/context-menu.js +2 -2
  99. package/dist/controls.js +1 -1
  100. package/dist/data-table.js +1 -1
  101. package/dist/deck-progress.d.ts +1 -0
  102. package/dist/deck-progress.js +2 -0
  103. package/dist/dialog.js +2 -2
  104. package/dist/dock.js +468 -354
  105. package/dist/{dockContext-DLgrVWsU.js → dockContext-BKeIMmNk.js} +1 -1
  106. package/dist/dom.js +6 -6
  107. package/dist/{dropdown-menu-BWpwutt0.js → dropdown-menu-D77jX6Df.js} +4 -4
  108. package/dist/dropdown-menu.js +1 -1
  109. package/dist/fonts/README.md +26 -18
  110. package/dist/forms.js +5 -5
  111. package/dist/fourier-field.js +35 -35
  112. package/dist/glass-panel.js +7 -7
  113. package/dist/glass-ui.css +1 -1
  114. package/dist/glass-ui.js +154 -169
  115. package/dist/goo-blob.js +361 -274
  116. package/dist/header-ribbon.js +1 -1
  117. package/dist/hover-card.js +1 -1
  118. package/dist/hover-popover.js +1 -1
  119. package/dist/icon-tooltip.js +1 -1
  120. package/dist/index.d.ts +1 -2
  121. package/dist/instrument-chassis.js +1 -1
  122. package/dist/instrument-rail.js +1 -1
  123. package/dist/label.js +1 -1
  124. package/dist/labeled-field.js +5 -5
  125. package/dist/{menuItemVariants-B4eFR5Ix.js → menuItemVariants-CCoBNkU5.js} +1 -1
  126. package/dist/metric-badge.js +1 -1
  127. package/dist/metric-stack.js +1 -1
  128. package/dist/motion-core.js +65 -65
  129. package/dist/motion.js +1 -1
  130. package/dist/notification.js +1 -1
  131. package/dist/number-field.js +1 -1
  132. package/dist/paper-backdrop.js +1 -1
  133. package/dist/popover.js +1 -1
  134. package/dist/progress.js +1 -1
  135. package/dist/pulse.js +2 -2
  136. package/dist/reactive.js +2 -2
  137. package/dist/resolveCanvasColor-BBiYfp8g.js +11 -0
  138. package/dist/scrolling-text.js +1 -1
  139. package/dist/search.js +9 -9
  140. package/dist/select.js +3 -3
  141. package/dist/separator.js +1 -1
  142. package/dist/{sheet-Cv1uO-Gq.js → sheet-VZEtNFvO.js} +2 -2
  143. package/dist/sheet.js +1 -1
  144. package/dist/slider-DC2mwuoe.js +142 -0
  145. package/dist/slider.js +1 -1
  146. package/dist/sortable-list.js +2 -2
  147. package/dist/status-dot.js +17 -16
  148. package/dist/styles/animations.css +6 -2
  149. package/dist/styles/components.css +1 -1
  150. package/dist/styles/dock/density.css +230 -0
  151. package/dist/styles/dock/layer-group.css +263 -0
  152. package/dist/styles/dock/layers.css +355 -0
  153. package/dist/styles/dock/morph.css +244 -0
  154. package/dist/styles/dock/overflow.css +201 -0
  155. package/dist/styles/dock/shell.css +457 -0
  156. package/dist/styles/dock-controls.css +187 -50
  157. package/dist/styles/dock.css +65 -1181
  158. package/dist/styles/fonts.css +0 -25
  159. package/dist/styles/glass.css +482 -102
  160. package/dist/styles/index.css +12 -11
  161. package/dist/styles/theme.css +60 -2
  162. package/dist/styles/tokens.css +625 -72
  163. package/dist/styles/typography.css +52 -69
  164. package/dist/styles/utilities.css +91 -40
  165. package/dist/styles/view-transition.css +12 -40
  166. package/dist/switch.js +1 -1
  167. package/dist/tabs.js +183 -152
  168. package/dist/timeline.js +3 -3
  169. package/dist/toast.js +1 -1
  170. package/dist/toggle-group.js +1 -1
  171. package/dist/tooltip.js +1 -1
  172. package/dist/typewriter.js +1 -1
  173. package/dist/{useCanvas2D-C31yfUGY.js → useCanvas2D-ClrQuZtp.js} +2 -1
  174. package/dist/{useConfiguratorState-B24TcgIn.js → useConfiguratorState-DxAqksK6.js} +24 -13
  175. package/dist/useResolveTokenColor-r9pnNjqK.js +24 -0
  176. package/dist/useSpecularTracking-BVRZsRHA.js +26 -0
  177. package/dist/{useTextHighlight-aMPdEpkq.js → useTextHighlight-DON84L8w.js} +1 -1
  178. package/dist/{useTouchGate-YQRwyUGU.js → useTouchGate-WFyJYsth.js} +1 -1
  179. package/dist/vReveal-CqaCz_mC.js +44 -0
  180. package/dist/watercolor-dot.js +1 -1
  181. package/package.json +67 -36
  182. package/src/fonts/README.md +26 -18
  183. package/src/styles/animations.css +6 -2
  184. package/src/styles/dock/density.css +230 -0
  185. package/src/styles/dock/layer-group.css +263 -0
  186. package/src/styles/dock/layers.css +355 -0
  187. package/src/styles/dock/morph.css +244 -0
  188. package/src/styles/dock/overflow.css +201 -0
  189. package/src/styles/dock/shell.css +457 -0
  190. package/src/styles/dock-controls.css +187 -50
  191. package/src/styles/dock.css +65 -1181
  192. package/src/styles/fonts.css +0 -25
  193. package/src/styles/glass.css +482 -102
  194. package/src/styles/index.css +12 -11
  195. package/src/styles/theme.css +60 -2
  196. package/src/styles/tokens.css +625 -72
  197. package/src/styles/typography.css +52 -69
  198. package/src/styles/utilities.css +91 -40
  199. package/src/styles/view-transition.css +12 -40
  200. package/dist/CardAction-D8nSE62a.js +0 -163
  201. package/dist/DiscoGlyph-ZoBYpoxI.js +0 -132
  202. package/dist/GlyphFace-Ce_oe3tM.js +0 -51
  203. package/dist/UnderlineTabs-D_c1iYo-.js +0 -39
  204. package/dist/compile-iM4IUB66.js +0 -158
  205. package/dist/components/custom/aurora/constants/shaders/painterly.wgsl.d.ts +0 -7
  206. package/dist/components/custom/aurora/constants/shaders/wake.wgsl.d.ts +0 -4
  207. package/dist/components/custom/disco-glyph/DiscoGlyph.vue.d.ts +0 -58
  208. package/dist/components/custom/disco-glyph/index.d.ts +0 -1
  209. package/dist/components/custom/glass-carousel/GlassCarousel.vue.d.ts +0 -36
  210. package/dist/components/custom/glass-carousel/GlassCarouselItem.vue.d.ts +0 -28
  211. package/dist/components/custom/glass-carousel/index.d.ts +0 -4
  212. package/dist/components/custom/glass-carousel/useGlassCarousel.d.ts +0 -30
  213. package/dist/components/custom/glyph-face/GlyphFace.vue.d.ts +0 -64
  214. package/dist/components/custom/glyph-face/index.d.ts +0 -2
  215. package/dist/components/custom/glyph-face/keys.d.ts +0 -9
  216. package/dist/components/custom/responsive-tabs/ResponsiveTabs.vue.d.ts +0 -73
  217. package/dist/components/custom/responsive-tabs/index.d.ts +0 -2
  218. package/dist/components/custom/tabs/BouncyTabs.vue.d.ts +0 -27
  219. package/dist/components/custom/tabs/BouncyToggle.vue.d.ts +0 -60
  220. package/dist/components/custom/tabs/UnderlineTabs.vue.d.ts +0 -20
  221. package/dist/components/custom/tabs/composables/useBouncySlider.d.ts +0 -39
  222. package/dist/disco-glyph.d.ts +0 -1
  223. package/dist/disco-glyph.js +0 -2
  224. package/dist/fonts/fraunces/fraunces-latin.woff2 +0 -0
  225. package/dist/glass-carousel.d.ts +0 -1
  226. package/dist/glass-carousel.js +0 -214
  227. package/dist/glyph-face.d.ts +0 -1
  228. package/dist/glyph-face.js +0 -3
  229. package/dist/keys-Dyf_uTs5.js +0 -9
  230. package/dist/responsive-tabs.d.ts +0 -1
  231. package/dist/responsive-tabs.js +0 -95
  232. package/dist/slider-BA9wIs5e.js +0 -130
  233. package/dist/styles/disco-glyph.css +0 -26
  234. package/dist/styles/glyph-face.css +0 -92
  235. package/dist/useViewTransition-DaN5Zrox.js +0 -21
  236. package/dist/vReveal-BE2TsPoR.js +0 -24
  237. package/src/fonts/fraunces/fraunces-latin.woff2 +0 -0
  238. package/src/styles/disco-glyph.css +0 -26
  239. package/src/styles/glyph-face.css +0 -92
  240. /package/dist/{CollapsibleContent-D7UNsXQr.js → CollapsibleContent-CP9qF1v4.js} +0 -0
  241. /package/dist/{ContextMenuContent-DGKZX1Du.js → ContextMenuContent-DDa0v27s.js} +0 -0
  242. /package/dist/{HoverCardContent-Bn0UBMY9.js → HoverCardContent-B6CcQ8He.js} +0 -0
  243. /package/dist/{InstrumentChassis-BLJBl1BW.js → InstrumentChassis-C2f6cBaQ.js} +0 -0
  244. /package/dist/{InstrumentRail-BElFwKyt.js → InstrumentRail-CUJ05YVG.js} +0 -0
  245. /package/dist/{Label-DBc7bKzZ.js → Label-zRfbQdCn.js} +0 -0
  246. /package/dist/{ModalOverlay-D1VrWyoi.js → ModalOverlay-B1GkAjNb.js} +0 -0
  247. /package/dist/{PaperBackdrop-DCGoGatv.js → PaperBackdrop-CqwjnfLv.js} +0 -0
  248. /package/dist/{SelectGroup-BcaFjvP4.js → SelectGroup-BFiod7X2.js} +0 -0
  249. /package/dist/{Separator-DZyqsCum.js → Separator-D7sD7RKj.js} +0 -0
  250. /package/dist/{Switch-2rsAtDfA.js → Switch-LDKLmmgx.js} +0 -0
  251. /package/dist/{TooltipProvider-CD2IXfRv.js → TooltipProvider-CmZzCuaG.js} +0 -0
  252. /package/dist/{_plugin-vue_export-helper-gLzyemvl.js → _plugin-vue_export-helper-ok8pgSl5.js} +0 -0
  253. /package/dist/composables/{dom → motion}/useTextHighlight.d.ts +0 -0
  254. /package/dist/{createContext-CvNyBk4o.js → createContext-B44Sah_H.js} +0 -0
  255. /package/dist/{useGlassRenderer-HebgSEgN.js → useGlassRenderer-5I0YkI4t.js} +0 -0
  256. /package/dist/{useInterval-D3USn0yc.js → useInterval-Dsmqwi03.js} +0 -0
  257. /package/dist/{useResizeObserver-CSyxGxIX.js → useResizeObserver-CWCbk5Px.js} +0 -0
  258. /package/dist/{useSpringMount-LRZqJTaF.js → useSpringMount-BJSHcLl3.js} +0 -0
  259. /package/dist/{useTimer-DEJonOZa.js → useTimer-3xqf_54b.js} +0 -0
  260. /package/dist/{useUserInvalidAria-CQKjEfwP.js → useUserInvalidAria-DoJKMZ3s.js} +0 -0
  261. /package/dist/{useViewportReady-K96m-Mdv.js → useViewportReady-RIr5Wgkh.js} +0 -0
@@ -1,22 +1,25 @@
1
1
  /*
2
- * typography.css — Fraunces serif/display + Plus Jakarta Sans + Fira Code mono
3
- * (all three OFL faces self-hosted via fonts.css)
2
+ * typography.css — Plus Jakarta Sans (text + display) + Fira Code (mono)
3
+ * (both OFL faces self-hosted via fonts.css)
4
4
  *
5
- * Golden-ratio scale (√φ ≈ 1.272). Fraunces carries the serif register —
6
- * body, headings, prose, and math — and the ornamental display register
7
- * with WONK=1 / SOFT=0. Plus Jakarta Sans is the brand sans; Fira Code is mono.
5
+ * Golden-ratio scale (√φ ≈ 1.272). ONE brand register: Plus Jakarta Sans
6
+ * carries the text register — body, headings, prose, display, and math — and
7
+ * Fira Code carries mono. The library DEFAULT is the register every live
8
+ * surface paints (the demo + speedtest render Plus Jakarta everywhere). There
9
+ * is no display-serif voice and no preset opt-out: the default IS the register.
8
10
  *
9
11
  * Semantic type classes expose both Tailwind-friendly utility names
10
12
  * (`.text-display-*`, `.text-body`, `.text-admin-label`) and feature
11
13
  * utilities (`.cm-serif`, `.fira-code`, `.fourier-f`).
12
14
  *
13
15
  * Self-host font subsystem — glass-ui ships two OFL-1.1 face families as
14
- * bundled woff2 assets: Plus Jakarta Sans (brand display sans, font-display:
16
+ * bundled woff2 assets: Plus Jakarta Sans (brand text + display, font-display:
15
17
  * optional) + Fira Code (canonical mono, font-display: swap). Both ship with
16
18
  * Capsize-calibrated size-adjust / ascent-override / descent-override on the
17
- * matching fallback faces so the swap is geometry-neutral (zero CLS). Consumers
18
- * map --font-brand-sans / --font-display / --font-mono to reference them, no
19
- * third-party CDN dependency on the LCP-critical path.
19
+ * matching fallback faces so the swap is geometry-neutral (zero CLS). The
20
+ * register lives in tokens.css §0 (--font-stack-text/-display/-mono), bridged
21
+ * to --font-text/-display/-mono in theme.css; consumers override --font-text
22
+ * once to rebrand, no third-party CDN dependency on the LCP-critical path.
20
23
  */
21
24
 
22
25
  /* ═══════════════════════════════════════════════
@@ -82,21 +85,15 @@
82
85
  }
83
86
 
84
87
  :root {
85
- /* Font family tokens. `--font-serif` / `--font-display` / `--font-mono`
86
- are NOT declared here — their source-of-truth lives in tokens.css
87
- (`--font-stack-*`), bridged to Tailwind via theme.css's `@theme` block;
88
- declaring `:root` literals here would shadow consumer `@theme` overrides
89
- (un-layered `:root` wins over `@layer theme`). The self-hosted faces
90
- above expose `"Plus Jakarta Sans"` + `"Fira Code"`, each pairing with a
91
- calibrated `"... Fallback"`. `--font-brand-sans` ships a neutral default;
92
- consumers opting into Plus Jakarta via the `brand-uniform-sans` preset
93
- override it. `--font-mono` references `"Fira Code"` first (engages by
94
- default) then the fallback chain. */
95
- /* Independent brand/system sans stack; consumers override once for uniform sans. */
96
- --font-brand-sans: "Helvetica Neue", "Arial Nova", Arial, system-ui, sans-serif;
97
- --font-sans: var(--font-brand-sans);
98
- --font-display-variation-settings: "WONK" 1, "SOFT" 0;
99
- --font-display-weight: 400;
88
+ /* Font family tokens. `--font-text` / `--font-display` / `--font-serif` /
89
+ `--font-mono` are NOT declared here — their source-of-truth lives in
90
+ tokens.css §0 (`--font-stack-*`), bridged to Tailwind via theme.css's
91
+ `@theme` block; declaring `:root` literals here would shadow consumer
92
+ `@theme` overrides (un-layered `:root` wins over `@layer theme`). The
93
+ self-hosted faces above expose `"Plus Jakarta Sans"` + `"Fira Code"`,
94
+ each pairing with a calibrated `"... Fallback"`. The brand text register
95
+ (Plus Jakarta Sans) engages by default for every consumer; --font-mono
96
+ references `"Fira Code"` first then the fallback chain. */
100
97
 
101
98
  /* Scale tokens */
102
99
  --type-admin-label: 0.625rem; /* 10px */
@@ -116,8 +113,7 @@
116
113
  /* Audacious display tier (v1.0.3). Extends the φ-ladder three rungs
117
114
  beyond display-5 for poster-type consumers (speedtest hero,
118
115
  dashboard pane titles when the consumer wants the number to win).
119
- Same vw-axis as display-1..5 — consumer-agnostic. Brand-uniform-
120
- sans preset still overrides via the existing :root override. */
116
+ Same vw-axis as display-1..5 — consumer-agnostic. */
121
117
  --type-display-mega: clamp(5.382rem, 4rem + 9vw, 11.089rem); /* φ^(9/2) — peak 177px */
122
118
  --type-display-hero: clamp(6.854rem, 4.5rem + 12vw, 17.942rem); /* φ^5 — peak 287px */
123
119
  --type-display-audacious: clamp(8.728rem, 5rem + 16vw, 22rem); /* φ^(11/2) — peak 352px (fast.com peg) */
@@ -129,25 +125,18 @@
129
125
  were retired in v0.8.6 (audit U.W0.C-c §1.1 / Union 2). */
130
126
  }
131
127
 
132
- :root[data-typography-preset="brand-uniform-sans"] {
133
- --font-serif: var(--font-brand-sans);
134
- --font-display: var(--font-brand-sans);
135
- --font-display-variation-settings: normal;
136
- --font-display-weight: 600;
137
- }
138
-
139
128
  /* ═══════════════════════════════════════════════
140
- BODY CASCADE — CM serif inherits globally
129
+ BODY CASCADE — the brand text register inherits globally
141
130
  ═══════════════════════════════════════════════ */
142
131
  body {
143
- font-family: var(--font-serif);
132
+ font-family: var(--font-text);
144
133
  color: var(--foreground);
145
134
  font-size: var(--type-body);
146
135
  line-height: var(--type-leading-body);
147
136
  }
148
137
 
149
138
  /* ═══════════════════════════════════════════════
150
- DISPLAY — Fraunces, WONK=1 SOFT=0, tracking-tight
139
+ DISPLAY — Plus Jakarta Sans display, tracking-tight
151
140
  ═══════════════════════════════════════════════ */
152
141
  @utility text-display-audacious {
153
142
  font-family: var(--font-display);
@@ -155,8 +144,7 @@ body {
155
144
  line-height: var(--type-leading-display);
156
145
  letter-spacing: var(--type-tracking-tight);
157
146
  font-optical-sizing: auto;
158
- font-variation-settings: var(--font-display-variation-settings);
159
- font-weight: var(--font-display-weight);
147
+ font-weight: 600;
160
148
  /* AQ.W3 §W3.3 — balance multi-line display headlines. Text-only (no box) so
161
149
  balance is safe; degrades to unbalanced wrapping with zero break. */
162
150
  text-wrap: balance;
@@ -177,7 +165,6 @@ body {
177
165
  font-feature-settings: "ss01", "tnum", "lnum";
178
166
  font-variant-numeric: tabular-nums lining-nums;
179
167
  font-optical-sizing: auto;
180
- font-variation-settings: var(--font-display-variation-settings);
181
168
  display: inline-block;
182
169
  max-inline-size: 100%;
183
170
  /* AQ.W3 §W3.3 — `text-wrap: nowrap` (modern) sits AFTER `white-space:
@@ -193,8 +180,7 @@ body {
193
180
  line-height: var(--type-leading-display);
194
181
  letter-spacing: var(--type-tracking-tight);
195
182
  font-optical-sizing: auto;
196
- font-variation-settings: var(--font-display-variation-settings);
197
- font-weight: var(--font-display-weight);
183
+ font-weight: 600;
198
184
  text-wrap: balance; /* AQ.W3 §W3.3 */
199
185
  }
200
186
 
@@ -204,8 +190,7 @@ body {
204
190
  line-height: var(--type-leading-display);
205
191
  letter-spacing: var(--type-tracking-tight);
206
192
  font-optical-sizing: auto;
207
- font-variation-settings: var(--font-display-variation-settings);
208
- font-weight: var(--font-display-weight);
193
+ font-weight: 600;
209
194
  text-wrap: balance; /* AQ.W3 §W3.3 */
210
195
  }
211
196
 
@@ -215,8 +200,7 @@ body {
215
200
  line-height: var(--type-leading-display);
216
201
  letter-spacing: var(--type-tracking-tight);
217
202
  font-optical-sizing: auto;
218
- font-variation-settings: var(--font-display-variation-settings);
219
- font-weight: var(--font-display-weight);
203
+ font-weight: 600;
220
204
  text-wrap: balance; /* AQ.W3 §W3.3 */
221
205
  }
222
206
 
@@ -226,8 +210,7 @@ body {
226
210
  line-height: var(--type-leading-display);
227
211
  letter-spacing: var(--type-tracking-tight);
228
212
  font-optical-sizing: auto;
229
- font-variation-settings: var(--font-display-variation-settings);
230
- font-weight: var(--font-display-weight);
213
+ font-weight: 600;
231
214
  text-wrap: balance; /* AQ.W3 §W3.3 */
232
215
  }
233
216
 
@@ -237,8 +220,7 @@ body {
237
220
  line-height: var(--type-leading-display);
238
221
  letter-spacing: var(--type-tracking-tight);
239
222
  font-optical-sizing: auto;
240
- font-variation-settings: var(--font-display-variation-settings);
241
- font-weight: var(--font-display-weight);
223
+ font-weight: 600;
242
224
  text-wrap: balance; /* AQ.W3 §W3.3 */
243
225
  }
244
226
 
@@ -248,8 +230,7 @@ body {
248
230
  line-height: var(--type-leading-display);
249
231
  letter-spacing: var(--type-tracking-tight);
250
232
  font-optical-sizing: auto;
251
- font-variation-settings: var(--font-display-variation-settings);
252
- font-weight: var(--font-display-weight);
233
+ font-weight: 600;
253
234
  text-wrap: balance; /* AQ.W3 §W3.3 */
254
235
  }
255
236
 
@@ -259,16 +240,15 @@ body {
259
240
  line-height: var(--type-leading-display);
260
241
  letter-spacing: var(--type-tracking-tight);
261
242
  font-optical-sizing: auto;
262
- font-variation-settings: var(--font-display-variation-settings);
263
- font-weight: var(--font-display-weight);
243
+ font-weight: 600;
264
244
  text-wrap: balance; /* AQ.W3 §W3.3 */
265
245
  }
266
246
 
267
247
  /* ═══════════════════════════════════════════════
268
- HEADINGS / BODY — Fraunces serif register
248
+ HEADINGS / BODY — Plus Jakarta Sans text register
269
249
  ═══════════════════════════════════════════════ */
270
250
  @utility text-title {
271
- font-family: var(--font-serif);
251
+ font-family: var(--font-text);
272
252
  font-size: var(--type-title);
273
253
  line-height: var(--type-leading-heading);
274
254
  letter-spacing: var(--type-tracking-tight);
@@ -277,7 +257,7 @@ body {
277
257
  }
278
258
 
279
259
  @utility text-heading {
280
- font-family: var(--font-serif);
260
+ font-family: var(--font-text);
281
261
  font-size: var(--type-heading);
282
262
  line-height: var(--type-leading-heading);
283
263
  font-weight: 700;
@@ -285,7 +265,7 @@ body {
285
265
  }
286
266
 
287
267
  @utility text-subheading {
288
- font-family: var(--font-serif);
268
+ font-family: var(--font-text);
289
269
  font-size: var(--type-subheading);
290
270
  line-height: var(--type-leading-body);
291
271
  font-weight: 600;
@@ -300,7 +280,7 @@ body {
300
280
  reads heavier than its numeric weight at pill size, so regular is the
301
281
  not-bold register. */
302
282
  @utility dock-label {
303
- font-family: var(--font-serif);
283
+ font-family: var(--font-text);
304
284
  font-size: var(--dock-label-size, var(--type-subheading));
305
285
  line-height: var(--type-leading-body);
306
286
  font-weight: 400;
@@ -308,7 +288,7 @@ body {
308
288
  }
309
289
 
310
290
  @utility text-prose {
311
- font-family: var(--font-serif);
291
+ font-family: var(--font-text);
312
292
  font-size: var(--type-prose);
313
293
  line-height: var(--type-leading-prose);
314
294
  font-weight: 400;
@@ -318,7 +298,7 @@ body {
318
298
  }
319
299
 
320
300
  @utility text-body {
321
- font-family: var(--font-serif);
301
+ font-family: var(--font-text);
322
302
  font-size: var(--type-body);
323
303
  line-height: var(--type-leading-body);
324
304
  font-weight: 400;
@@ -326,14 +306,14 @@ body {
326
306
  }
327
307
 
328
308
  @utility text-small {
329
- font-family: var(--font-serif);
309
+ font-family: var(--font-text);
330
310
  font-size: var(--type-small);
331
311
  line-height: var(--type-leading-small);
332
312
  font-weight: 400;
333
313
  }
334
314
 
335
315
  @utility text-caption {
336
- font-family: var(--font-serif);
316
+ font-family: var(--font-text);
337
317
  font-size: var(--type-caption);
338
318
  line-height: var(--type-leading-caption);
339
319
  font-style: italic;
@@ -358,15 +338,15 @@ body {
358
338
  }
359
339
 
360
340
  /* ═══════════════════════════════════════════════
361
- MATH — Fraunces serif italic
341
+ MATH — Plus Jakarta Sans italic
362
342
  ═══════════════════════════════════════════════ */
363
343
  @utility text-math {
364
- font-family: var(--font-serif);
344
+ font-family: var(--font-text);
365
345
  font-style: italic;
366
346
  }
367
347
 
368
348
  @utility text-math-body {
369
- font-family: var(--font-serif);
349
+ font-family: var(--font-text);
370
350
  font-size: var(--type-prose);
371
351
  line-height: var(--type-leading-prose);
372
352
  font-style: italic;
@@ -406,8 +386,13 @@ body {
406
386
  /* ═══════════════════════════════════════════════
407
387
  FONT FAMILY UTILITIES
408
388
  ═══════════════════════════════════════════════ */
389
+ /* .cm-serif — the Computer-Modern math/serif voice. A DISTINCT face from the
390
+ brand text register: it resolves to the consumer-supplied serif (system
391
+ serif by default; a math consumer maps Computer Modern / KaTeX over it). It
392
+ is NOT the Plus Jakarta text register — the one serif survivor of the
393
+ register reconciliation. */
409
394
  @utility cm-serif {
410
- font-family: var(--font-serif);
395
+ font-family: var(--font-serif-math, serif);
411
396
  }
412
397
 
413
398
  @utility fira-code {
@@ -426,7 +411,6 @@ body {
426
411
  vertical-align: -0.05em;
427
412
  font-weight: 700;
428
413
  display: inline-block;
429
- font-variation-settings: var(--font-display-variation-settings);
430
414
  }
431
415
 
432
416
  /* ═══════════════════════════════════════════════
@@ -439,9 +423,8 @@ body {
439
423
  font-size: clamp(2.4rem, 1.8rem + 2vw, 3.33rem);
440
424
  line-height: var(--type-leading-display);
441
425
  letter-spacing: var(--type-tracking-tight);
442
- font-weight: var(--font-display-weight);
426
+ font-weight: 600;
443
427
  font-optical-sizing: auto;
444
- font-variation-settings: var(--font-display-variation-settings);
445
428
  }
446
429
 
447
430
  /* AV.W16 TW3 — the pane title scales off its PANE's box, not the viewport.
@@ -191,14 +191,32 @@
191
191
  AL-W10 SLIM (X6 §M-1 + Y7 §3 + DESIGN.md §L3). I compose this
192
192
  class onto every interactive surface that wants the iOS tap-
193
193
  squish idiom; the press scales to `--scale-press` (0.96, the
194
- canonical iOS `.regular` control rung) and the spring carries
195
- the return via `--spring-snappy` (the §L3 release-spring
196
- contract). I keep this as a single canonical rung — NOT a
197
- 3-rung ladder. The one outlier I leave alone is the button
198
- `0.97` (`--scale-press-btn`), which consumes its own slightly-
199
- softer token directly. The dock control now tracks the canonical
200
- `--scale-press` (0.96) too (AT.W7-dock-b press canon — the prior
201
- deeper `0.92` was retired to ONE source).
194
+ canonical iOS `.regular` control rung). I keep this as a single
195
+ canonical rung — NOT a 3-rung ladder. The one outlier I leave
196
+ alone is the button `0.97` (`--scale-press-btn`), which consumes
197
+ its own slightly-softer token directly. The dock control now
198
+ tracks the canonical `--scale-press` (0.96) too (AT.W7-dock-b
199
+ press canon — the prior deeper `0.92` was retired to ONE source).
200
+
201
+ AX.W52 §6 doctrine — the `scale` register is reconciled onto
202
+ `--spring-smooth` (was `--spring-snappy`), the ONE button/interactive
203
+ scale register the §6 easing doctrine records and the gate asserts
204
+ across `.btn-pill`/`.tap-squish`/`.glass-btn`/`btn-interactive`. At
205
+ ζ=0.86 `--spring-smooth` settles a press crisply with a sub-perceptual
206
+ (~0.5%) peak — no visible bounce — so press still reads alive while
207
+ hover reads as a smooth glide on the SAME spring.
208
+
209
+ The transition lists the SURFACE legs (bg/border/box-shadow/color/
210
+ opacity) on the bezier `--ease-standard` alongside the spring `scale`
211
+ leg — the SAME coherent set `.btn-pill` carries. This is load-bearing:
212
+ `.tap-squish` and `.btn-pill` are co-composed on the button base and
213
+ this `transition` shorthand would otherwise CLOBBER `.btn-pill`'s
214
+ surface legs down to a scale-only animation (the cascade bug that left
215
+ every button transitioning ONLY `scale` — the live-readback RED). With
216
+ both classes carrying the full set, whichever wins the surface cross-
217
+ fade survives. On a non-button press surface the extra legs are inert
218
+ unless that prop changes, in which case a smooth cross-fade is the
219
+ desired interactive read anyway.
202
220
 
203
221
  Under PRM I retire the press transform entirely and lean on the
204
222
  consumer's own hover/active bg-tint cascade to acknowledge the
@@ -206,7 +224,13 @@
206
224
  .tap-squish {
207
225
  /* AQ.W3 §W3.2 identity base */
208
226
  scale: 1;
209
- transition: scale var(--duration-fast) var(--spring-snappy);
227
+ transition:
228
+ background-color var(--duration-fast) var(--ease-standard),
229
+ border-color var(--duration-fast) var(--ease-standard),
230
+ box-shadow var(--duration-fast) var(--ease-standard),
231
+ color var(--duration-fast) var(--ease-standard),
232
+ opacity var(--duration-fast) var(--ease-standard),
233
+ scale var(--duration-fast) var(--spring-smooth);
210
234
  transform-origin: center center;
211
235
  }
212
236
  .tap-squish:active {
@@ -683,9 +707,12 @@
683
707
  `--duration-fast` + `--ease-standard` tokens. */
684
708
  @utility scale-on-hover {
685
709
  /* Individual-transform identity base (AQ.W3 §W3.2). Transition the `scale`
686
- longhand (not `transform`) so the migrated hover scale animates. */
710
+ longhand (not `transform`) so the migrated hover scale animates.
711
+ AX.W52 §6 doctrine — the `scale` transform leg rides `--spring-smooth`
712
+ (the settle register), NOT the bezier `--ease-standard` (a transform on a
713
+ bezier reads mechanical; springs read alive on transform). */
687
714
  scale: 1;
688
- transition: scale var(--duration-fast) var(--ease-standard);
715
+ transition: scale var(--duration-fast) var(--spring-smooth);
689
716
 
690
717
  &:hover {
691
718
  scale: var(--scale-hover);
@@ -982,7 +1009,8 @@
982
1009
 
983
1010
  /* ── Text-highlight paint (CSS Custom Highlight API) ─────────────────────
984
1011
  The default `::highlight()` paint for the `useTextHighlight` composable
985
- (composables/dom). A named `Highlight` registered in `CSS.highlights`
1012
+ (composables/motion; the `/motion-core` subpath, AX.W37). A named `Highlight`
1013
+ registered in `CSS.highlights`
986
1014
  under one of these keys paints its `Range` set without a `<mark>` wrapper.
987
1015
  Token-bridged: the search mark reads the canonical pastel-yellow rainbow
988
1016
  token at a soft alpha; the equation/variable mark reads `--primary`. Both
@@ -1004,22 +1032,28 @@
1004
1032
 
1005
1033
  /* ── Interactive-button four-state recipe ────────────────────────────────
1006
1034
  `.btn-interactive` carries the canonical "Button-with-spring-hover"
1007
- four-state contract — transition + hover-scale (`--scale-hover`) +
1008
- active-press (`--scale-press`) + disabled-opacity + focus-ring fade-in.
1009
- The Button primitive's variants emit the four states except `hover:scale-*`;
1010
- this is the canonical opt-in that adds the spring-hover lift. Consumed by
1011
- keyframes.js at 7 sites. */
1035
+ four-state contract — transition + hover-scale + active-press + disabled-
1036
+ opacity + focus-ring fade-in. The Button primitive's variants emit the four
1037
+ states except `hover:scale-*`; this is the canonical opt-in that adds the
1038
+ spring-hover lift. Consumed by keyframes.js at 7 sites.
1039
+
1040
+ AX.W52 §6 — the hover lift is the restrained `--scale-hover-btn` (1.035, NOT
1041
+ the emphatic 1.08 `--scale-hover`) routed through `--spring-smooth` — the ONE
1042
+ button scale register the §6 doctrine records and the gate asserts across
1043
+ `.btn-pill`/`.tap-squish`/`.glass-btn`/`btn-interactive`. The surface legs
1044
+ stay on the bezier `--ease-standard` (a colour cross-fade reads as a wobble
1045
+ on a spring); only the `scale` transform leg springs. */
1012
1046
  @utility btn-interactive {
1013
1047
  /* AQ.W3 §W3.2 identity base */
1014
1048
  scale: 1;
1015
1049
  transition:
1016
1050
  background-color var(--duration-fast) var(--ease-standard),
1017
1051
  color var(--duration-fast) var(--ease-standard),
1018
- scale var(--duration-fast) var(--ease-standard),
1052
+ scale var(--duration-fast) var(--spring-smooth),
1019
1053
  opacity var(--duration-fast) var(--ease-standard);
1020
1054
 
1021
1055
  &:hover {
1022
- scale: var(--scale-hover);
1056
+ scale: var(--scale-hover-btn);
1023
1057
  }
1024
1058
 
1025
1059
  &:active {
@@ -1035,11 +1069,11 @@
1035
1069
  box-shadow: var(--focus-ring-shadow);
1036
1070
  outline: none;
1037
1071
  /* Fade in; base state has no box-shadow transition → instant
1038
- removal */
1072
+ removal. The `scale` leg keeps the `--spring-smooth` register. */
1039
1073
  transition:
1040
1074
  background-color var(--duration-fast) var(--ease-standard),
1041
1075
  color var(--duration-fast) var(--ease-standard),
1042
- scale var(--duration-fast) var(--ease-standard),
1076
+ scale var(--duration-fast) var(--spring-smooth),
1043
1077
  opacity var(--duration-fast) var(--ease-standard),
1044
1078
  box-shadow var(--duration-fast) var(--ease-standard);
1045
1079
  }
@@ -1067,36 +1101,52 @@ html.no-transition *::after {
1067
1101
  transition-duration: 0s !important;
1068
1102
  }
1069
1103
 
1070
- /* ── Forced-colors restoration (AQ.W2 §5) ──────────────────────────────
1104
+ /* ── Forced-colors focus + silhouette rung (AQ.W2 §5 · generalized AX.W36) ────
1071
1105
  Windows High Contrast / forced-colors mode STRIPS `box-shadow` — so the
1072
1106
  glass focus rings (box-shadow + `outline: none`) vanish, leaving keyboard
1073
- users with no visible focus (a WCAG 2.4.7 failure forced-colors exposes).
1074
- Restore a real `outline` keyed to the system `Highlight` color (outline
1075
- survives forced-colors; box-shadow does not). The box-shadow ring stays the
1076
- primary in normal mode (it carries the glass aesthetic) — these two are
1077
- mutually exclusive by media query, NOT a parallel path.
1078
-
1079
- `forced-color-adjust: none` is deliberately NOT used — glass-ui's
1080
- glassmorphic chrome is decorative and yields to the user's forced palette
1081
- (css forced-colors guidance). Baseline Widely Available; this IS the
1082
- fallback mechanism (it only activates under forced-colors), so no nested
1083
- guard. */
1107
+ users with no visible focus. Restore a real `outline` keyed to the system
1108
+ `Highlight` color (outline survives forced-colors; box-shadow does not). The
1109
+ box-shadow ring stays the primary in normal mode (it carries the glass
1110
+ aesthetic) — these two are mutually exclusive by media query, NOT a parallel
1111
+ path.
1112
+
1113
+ AX.W36 — the focus-survival selector set is GENERALIZED to the broader
1114
+ interactive surface: the dock CONTROLS (`.dock-icon-button` / `.dock-tab-button`
1115
+ / `.dock-select-trigger` / `.dock-dropdown-trigger`) + the pill button base
1116
+ (`.btn-pill`) all carry a box-shadow focus ring (dock.css / utilities.css) that
1117
+ vanishes under WHC just like the original five. This is the SAME `Highlight`
1118
+ outline rung extended to cover them — ONE block, ONE path (the glass-language
1119
+ structure-survival skin for the tier panes / StatusDot / floating surfaces lives
1120
+ co-located with the ladder it skins, in glass.css).
1121
+
1122
+ `forced-color-adjust: none` is deliberately NOT used — glass-ui's glassmorphic
1123
+ chrome is decorative and yields to the user's forced palette (css forced-colors
1124
+ guidance). Baseline Widely Available; this IS the fallback mechanism (it only
1125
+ activates under forced-colors), so no nested guard. */
1084
1126
  @media (forced-colors: active) {
1085
1127
  .focus-ring:focus-visible,
1086
1128
  .glass-btn:focus-visible,
1087
1129
  .interactive-item:focus-visible,
1130
+ .btn-pill:focus-visible,
1131
+ .dock-icon-button:focus-visible,
1132
+ .dock-tab-button:focus-visible,
1133
+ .dock-select-trigger:focus-visible,
1134
+ .dock-dropdown-trigger:focus-visible,
1088
1135
  .input-pill:focus,
1089
1136
  .input-pill:focus-visible {
1090
1137
  outline: 2px solid Highlight;
1091
1138
  outline-offset: 2px;
1092
1139
  }
1093
1140
 
1094
- /* Structural edges borne ONLY by box-shadow (the hairline catch-light /
1095
- glass pill edge / card plate) also vanish — restore a real border so
1096
- the silhouette survives. CanvasText is the system text/border color. */
1141
+ /* Structural edges borne ONLY by box-shadow (the hairline catch-light + the
1142
+ dock SHELL pill edge) also vanish — restore a real border so the silhouette
1143
+ survives. CanvasText is the system text/border color. The `.glass-dock`
1144
+ shell is OUT of the glass-material group BY DESIGN (it hand-rolls a parallel
1145
+ surface — see glass.css), so it keeps its WHC edge HERE; the five-rung ladder
1146
+ + `.glass-card` get their WHC border from the co-located glass-language skin
1147
+ in glass.css (one source per surface family, no double-declaration). */
1097
1148
  .hairline-accent,
1098
- .glass-dock,
1099
- .glass-card {
1149
+ .glass-dock {
1100
1150
  border: 1px solid CanvasText;
1101
1151
  }
1102
1152
  }
@@ -1107,12 +1157,13 @@ html.no-transition *::after {
1107
1157
  to the WCAG 2.5.5 (44px) minimum — ONE amendment retiring the per-consumer
1108
1158
  `min-h-[44px]` one-liners. Token-driven (`--touch-target`); fine-pointer
1109
1159
  byte-identical. Targets `Button size="icon"` (via the `data-size="icon"`
1110
- attr Button.vue reflects), ExpandableContainer + ResponsiveTabs triggers.
1160
+ attr Button.vue reflects), ExpandableContainer + SegmentedTabs (responsive
1161
+ mobile Select) triggers.
1111
1162
  `min-block/inline-size` only RAISES — a larger explicit size is never lost. */
1112
1163
  @media (pointer: coarse) {
1113
1164
  [data-size="icon"],
1114
1165
  .expandable-container__trigger,
1115
- .responsive-tabs__trigger {
1166
+ .segmented-tabs__trigger {
1116
1167
  min-block-size: var(--touch-target, 2.75rem);
1117
1168
  min-inline-size: var(--touch-target, 2.75rem);
1118
1169
  }
@@ -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); } }
package/dist/switch.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as e } from "./Switch-2rsAtDfA.js";
1
+ import { t as e } from "./Switch-LDKLmmgx.js";
2
2
  export { e as Switch };