@mkbabb/glass-ui 3.12.0 → 4.0.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 (436) hide show
  1. package/dist/CardAction-XH4YBVEK.js +158 -0
  2. package/dist/{CommandShortcut-CefCj5mt.js → CommandShortcut-DdtWXxOK.js} +58 -53
  3. package/dist/{ContextMenuSubContent-Bhg4f5jX.js → ContextMenuSubContent-B0Vs6atR.js} +4 -4
  4. package/dist/{DataTable-CUHMukiQ.js → DataTable-C464Zbqd.js} +99 -97
  5. package/dist/DialogContent-DDE6pQBU.js +103 -0
  6. package/dist/{DialogFooter-Gprw8H_A.js → DialogFooter-8eZbdmPc.js} +2 -2
  7. package/dist/FadingScroll-DwNnvKMs.js +76 -0
  8. package/dist/{HoverPopover-2LOIW34a.js → HoverPopover-Dpzwvc4t.js} +1 -1
  9. package/dist/IconChip-BDw1j5mu.js +54 -0
  10. package/dist/{IconTooltip-Cus0fvK0.js → IconTooltip-DSjasZIt.js} +1 -1
  11. package/dist/MetricBadge-BpC0R_Ec.js +79 -0
  12. package/dist/{Notification-DLMhblXR.js → Notification-DKjKsQq8.js} +10 -10
  13. package/dist/{NumberFieldContent-BbLOh8RU.js → NumberFieldContent-1VtwDSgf.js} +3 -3
  14. package/dist/PopoverContent-BTorlp--.js +127 -0
  15. package/dist/{Progress-iEuD9pxG.js → Progress-hAT4gqGH.js} +97 -77
  16. package/dist/{ScrollingText-BPP84wKo.js → ScrollingText-CUVFTWk2.js} +2 -2
  17. package/dist/{SelectScrollDownButton-T32cVFeM.js → SelectScrollDownButton-C1jb3b3K.js} +24 -8
  18. package/dist/{Switch-Ch-k3Rv-.js → Switch-Dr--uLGH.js} +2 -2
  19. package/dist/{Toaster-1rYWrmAm.js → Toaster-Bm_HQSpc.js} +55 -52
  20. package/dist/{ToggleGroupItem-COu_4IW4.js → ToggleGroupItem-Dzk9hWsF.js} +18 -22
  21. package/dist/animated-digit.js +3 -3
  22. package/dist/api/index.d.ts +10 -4
  23. package/dist/api.js +1 -1
  24. package/dist/aurora.js +113 -98
  25. package/dist/{badge-CaoFJzRb.js → badge-UILT_3pZ.js} +1 -1
  26. package/dist/badge.js +1 -1
  27. package/dist/{button-DN39cGqL.js → button-BNDWhAZb.js} +12 -12
  28. package/dist/button.js +1 -1
  29. package/dist/card.js +1 -1
  30. package/dist/carousel.d.ts +1 -1
  31. package/dist/carousel.js +101 -145
  32. package/dist/{check-BBKKKSTf.js → check-njhk-vfu.js} +1 -1
  33. package/dist/{chevron-down-BSkTP2aL.js → chevron-down-DKkxb4VV.js} +1 -1
  34. package/dist/{chevron-right-sDM0Yvrf.js → chevron-right-CPXbqQQz.js} +1 -1
  35. package/dist/{chevron-up-CCOD_FTz.js → chevron-up-n_24SqI-.js} +1 -1
  36. package/dist/coalesceMetric-5qIeZnTx.js +13 -0
  37. package/dist/collapsible.js +1 -1
  38. package/dist/{color-C5ls_QF7.js → color-DweYl7pE.js} +9 -7
  39. package/dist/color-swatch.d.ts +1 -0
  40. package/dist/color-swatch.js +47 -0
  41. package/dist/color.js +1 -1
  42. package/dist/command.js +1 -1
  43. package/dist/components/custom/animated-digit/AnimatedDigit.vue.d.ts +8 -0
  44. package/dist/components/custom/aurora/constants/presets.d.ts +16 -45
  45. package/dist/components/custom/aurora/constants/renderMode.d.ts +2 -0
  46. package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +1 -1
  47. package/dist/components/custom/aurora/constants/shaders/vangogh-medium.glsl.d.ts +1 -0
  48. package/dist/components/custom/color-swatch/ColorSwatch.vue.d.ts +22 -0
  49. package/dist/components/custom/color-swatch/index.d.ts +1 -0
  50. package/dist/components/custom/configurator/Configurator.vue.d.ts +19 -8
  51. package/dist/components/custom/configurator/ConfiguratorRow.vue.d.ts +16 -0
  52. package/dist/components/custom/constellation/Constellation.vue.d.ts +23 -143
  53. package/dist/components/custom/constellation/composables/createConstellationField.d.ts +41 -0
  54. package/dist/components/custom/constellation/composables/useConstellation.d.ts +26 -0
  55. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +35 -0
  56. package/dist/components/custom/constellation/constants.d.ts +61 -0
  57. package/dist/components/custom/constellation/constellationDraw.d.ts +30 -0
  58. package/dist/components/custom/constellation/constellationField.d.ts +3 -403
  59. package/dist/components/custom/constellation/constellationInteraction.d.ts +132 -0
  60. package/dist/components/custom/constellation/constellationTypes.d.ts +369 -0
  61. package/dist/components/custom/constellation/index.d.ts +5 -2
  62. package/dist/components/custom/controls/DarkModeToggle.vue.d.ts +11 -0
  63. package/dist/components/custom/dock/DockRail.vue.d.ts +89 -0
  64. package/dist/components/custom/dock/DockSection.vue.d.ts +69 -0
  65. package/dist/components/custom/dock/DockSeparator.vue.d.ts +49 -1
  66. package/dist/components/custom/dock/DockTabButton.vue.d.ts +5 -6
  67. package/dist/components/custom/dock/GlassDock.vue.d.ts +5 -118
  68. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +36 -0
  69. package/dist/components/custom/dock/composables/index.d.ts +1 -0
  70. package/dist/components/custom/dock/composables/useDockClickIntegrity.d.ts +23 -0
  71. package/dist/components/custom/dock/composables/useDockMorphWindow.d.ts +15 -0
  72. package/dist/components/custom/dock/composables/useDockOrientationMorph.d.ts +44 -0
  73. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +165 -0
  74. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +44 -0
  75. package/dist/components/custom/dock/constants.d.ts +83 -0
  76. package/dist/components/custom/dock/index.d.ts +5 -0
  77. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +15 -37
  78. package/dist/components/custom/fading-scroll/FadingScroll.vue.d.ts +25 -0
  79. package/dist/components/custom/fading-scroll/composables/useFadingScroll.d.ts +31 -0
  80. package/dist/components/custom/fading-scroll/constants.d.ts +19 -0
  81. package/dist/components/custom/fading-scroll/index.d.ts +2 -0
  82. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +7 -0
  83. package/dist/components/custom/fourier-field/index.d.ts +1 -1
  84. package/dist/components/custom/fourier-field/math.d.ts +34 -0
  85. package/dist/components/custom/fourier-field/presets.d.ts +54 -0
  86. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +8 -0
  87. package/dist/components/custom/goo-blob/composables/buildMetaballProgram.d.ts +18 -0
  88. package/dist/components/custom/goo-blob/composables/uploadBlobUniforms.d.ts +41 -0
  89. package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +4 -3
  90. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +21 -8
  91. package/dist/components/custom/goo-blob/constants.d.ts +57 -0
  92. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -0
  93. package/dist/components/custom/handmark/brush.d.ts +33 -6
  94. package/dist/components/custom/handmark/{useHandMark.d.ts → composables/useHandMark.d.ts} +6 -4
  95. package/dist/components/custom/handmark/constants.d.ts +39 -0
  96. package/dist/components/custom/handmark/geometry.d.ts +14 -12
  97. package/dist/components/custom/handmark/index.d.ts +8 -2
  98. package/dist/components/custom/handmark/types.d.ts +9 -0
  99. package/dist/components/custom/icon-chip/IconChip.vue.d.ts +4 -0
  100. package/dist/components/custom/icon-chip/index.d.ts +2 -0
  101. package/dist/components/custom/icon-chip/types.d.ts +72 -0
  102. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +17 -4
  103. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +37 -0
  104. package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +6 -0
  105. package/dist/components/custom/labeled-field/LabeledSlider.vue.d.ts +6 -0
  106. package/dist/components/custom/labeled-field/LabeledSwitch.vue.d.ts +6 -0
  107. package/dist/components/custom/metric-badge/MetricBadge.vue.d.ts +11 -18
  108. package/dist/components/custom/metric-badge/index.d.ts +1 -0
  109. package/dist/components/custom/metric-cell/MetricCell.vue.d.ts +15 -4
  110. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +6 -4
  111. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +39 -0
  112. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  113. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +20 -25
  114. package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +30 -21
  115. package/dist/components/custom/tabs/constants.d.ts +18 -0
  116. package/dist/components/custom/tabs/index.d.ts +1 -1
  117. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +14 -0
  118. package/dist/components/ui/_shared/index.d.ts +2 -0
  119. package/dist/components/ui/_shared/menuItemVariants.d.ts +19 -0
  120. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +41 -0
  121. package/dist/components/ui/card/Card.vue.d.ts +16 -4
  122. package/dist/components/ui/carousel/index.d.ts +0 -1
  123. package/dist/components/ui/command/Command.vue.d.ts +3 -0
  124. package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -3
  125. package/dist/components/ui/drawer/Drawer.vue.d.ts +1 -0
  126. package/dist/components/ui/drawer/DrawerContent.vue.d.ts +5 -0
  127. package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +2 -2
  128. package/dist/components/ui/index.d.ts +0 -1
  129. package/dist/components/ui/metric-pill/MetricPill.vue.d.ts +6 -3
  130. package/dist/components/ui/popover/PopoverContent.vue.d.ts +3 -0
  131. package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +14 -3
  132. package/dist/components/ui/select/SelectTrigger.vue.d.ts +27 -4
  133. package/dist/components/ui/sheet/SheetContent.vue.d.ts +6 -0
  134. package/dist/components/ui/skeleton/Skeleton.vue.d.ts +3 -0
  135. package/dist/components/ui/slider/index.d.ts +22 -19
  136. package/dist/components/ui/tabs/TabsIndicator.vue.d.ts +4 -1
  137. package/dist/components/ui/toast/use-toast.d.ts +2 -2
  138. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  139. package/dist/components/ui/toggle/index.d.ts +1 -1
  140. package/dist/components/ui/toggle-group/ToggleGroup.vue.d.ts +1 -7
  141. package/dist/components/ui/toggle-group/ToggleGroupItem.vue.d.ts +1 -3
  142. package/dist/components/ui/toggle-group/toggleGroupContext.d.ts +0 -13
  143. package/dist/composables/color/index.d.ts +12 -0
  144. package/dist/composables/dark/useGlobalDark.d.ts +14 -12
  145. package/dist/composables/glass/index.d.ts +0 -1
  146. package/dist/composables/glass/useGlassBackdropLuminance.d.ts +59 -0
  147. package/dist/composables/glass/useSpecularTracking.d.ts +12 -3
  148. package/dist/composables/motion/core/index.d.ts +1 -1
  149. package/dist/composables/motion/curves.d.ts +48 -0
  150. package/dist/composables/motion/index.d.ts +2 -0
  151. package/dist/composables/motion/springPresets.d.ts +33 -0
  152. package/dist/composables/motion/suite.d.ts +2 -0
  153. package/dist/composables/motion/useLiquidFlex.d.ts +85 -0
  154. package/dist/composables/motion/useSpringMount.d.ts +1 -1
  155. package/dist/composables/motion/useViewTransition.d.ts +36 -1
  156. package/dist/configurator.js +1 -1
  157. package/dist/confirm-dialog.js +3 -3
  158. package/dist/constellation.js +373 -261
  159. package/dist/context-menu.js +2 -2
  160. package/dist/controls.js +48 -14
  161. package/dist/dark.js +1 -1
  162. package/dist/data-table.js +1 -1
  163. package/dist/dialog.js +2 -2
  164. package/dist/dock.js +901 -372
  165. package/dist/dockContext-Bu1Avy-a.js +17 -0
  166. package/dist/dom.js +5 -5
  167. package/dist/{dropdown-menu-D77jX6Df.js → dropdown-menu-BJ7E9js_.js} +11 -8
  168. package/dist/dropdown-menu.js +1 -1
  169. package/dist/expandable-container.js +44 -81
  170. package/dist/fading-scroll.d.ts +1 -0
  171. package/dist/fading-scroll.js +2 -0
  172. package/dist/forms.js +5 -5
  173. package/dist/fourier-field.js +140 -104
  174. package/dist/fourier-math.js +2 -2
  175. package/dist/glass-panel.js +90 -21
  176. package/dist/glass-ui.css +1 -1
  177. package/dist/glass-ui.js +230 -236
  178. package/dist/goo-blob.js +264 -228
  179. package/dist/handmark.js +203 -159
  180. package/dist/header-ribbon.js +1 -1
  181. package/dist/hover-card.js +1 -1
  182. package/dist/hover-popover.js +1 -1
  183. package/dist/icon-chip.d.ts +1 -0
  184. package/dist/icon-chip.js +2 -0
  185. package/dist/icon-tooltip.js +1 -1
  186. package/dist/index.d.ts +3 -5
  187. package/dist/instrument-chassis.js +1 -1
  188. package/dist/keyboard.js +1 -1
  189. package/dist/label.js +1 -1
  190. package/dist/labeled-field.js +28 -18
  191. package/dist/{math-DTpRVC0e.js → math-DeuJwLFx.js} +26 -2
  192. package/dist/{menuItemVariants-CCoBNkU5.js → menuItemVariants-DWRQXBxJ.js} +10 -4
  193. package/dist/metric-badge.js +1 -1
  194. package/dist/metric-cell.js +29 -22
  195. package/dist/metric-stack.js +35 -34
  196. package/dist/{minimize-2-lcXOuc6V.js → minimize-2-BV31Ob_h.js} +1 -1
  197. package/dist/motion-core.js +32 -136
  198. package/dist/motion-curves.d.ts +1 -0
  199. package/dist/motion-curves.js +130 -0
  200. package/dist/motion.js +38 -37
  201. package/dist/notification.js +1 -1
  202. package/dist/number-field.js +1 -1
  203. package/dist/pager-dots.d.ts +1 -0
  204. package/dist/pager-dots.js +91 -0
  205. package/dist/paper-backdrop.js +1 -1
  206. package/dist/popover.js +1 -1
  207. package/dist/progress.js +1 -1
  208. package/dist/pulse.js +1 -1
  209. package/dist/reactive.js +2 -2
  210. package/dist/scrolling-text.js +1 -1
  211. package/dist/{search-nbkvr2dC.js → search-BSGrf2Sk.js} +1 -1
  212. package/dist/search.js +10 -10
  213. package/dist/select.js +3 -3
  214. package/dist/separator.js +1 -1
  215. package/dist/sheet-CquRYOAw.js +218 -0
  216. package/dist/sheet.js +1 -1
  217. package/dist/{slider-ClgpP7EB.js → slider-DQ95MET2.js} +8 -8
  218. package/dist/slider.js +1 -1
  219. package/dist/sortable-list.js +3 -3
  220. package/dist/springPresets-WXaLbu8u.js +40 -0
  221. package/dist/stacked-icons.js +6 -6
  222. package/dist/styles/animations.css +25 -125
  223. package/dist/styles/cards.css +55 -0
  224. package/dist/styles/components.css +4 -1
  225. package/dist/styles/configurator.css +77 -0
  226. package/dist/styles/dock/density.css +19 -0
  227. package/dist/styles/dock/layer-group.css +83 -25
  228. package/dist/styles/dock/layers.css +23 -1
  229. package/dist/styles/dock/morph-bridge.css +123 -0
  230. package/dist/styles/dock/morph.css +175 -45
  231. package/dist/styles/dock/overflow.css +66 -1
  232. package/dist/styles/dock/rail-extend.css +397 -0
  233. package/dist/styles/dock/section.css +59 -0
  234. package/dist/styles/dock/shell.css +97 -110
  235. package/dist/styles/dock-controls/dark-mode-toggle.css +109 -0
  236. package/dist/styles/dock-controls/icon-button.css +143 -0
  237. package/dist/styles/dock-controls/tab-button.css +143 -0
  238. package/dist/styles/dock-controls/touch-floor.css +94 -0
  239. package/dist/styles/dock-controls/triggers.css +135 -0
  240. package/dist/styles/dock-controls.css +30 -595
  241. package/dist/styles/dock.css +8 -3
  242. package/dist/styles/drawer.css +48 -0
  243. package/dist/styles/feedback-tone.css +104 -0
  244. package/dist/styles/floating-panel.css +17 -0
  245. package/dist/styles/glass/a11y-fallback.css +245 -0
  246. package/dist/styles/glass/ladder.css +383 -0
  247. package/dist/styles/glass/material.css +238 -0
  248. package/dist/styles/glass/progress-rail.css +78 -0
  249. package/dist/styles/glass/squircle.css +66 -0
  250. package/dist/styles/glass/surface-axis.css +113 -0
  251. package/dist/styles/glass/surfaces.css +382 -0
  252. package/dist/styles/glass-refract.css +2 -0
  253. package/dist/styles/glass.css +34 -1188
  254. package/dist/styles/hover-popover.css +2 -0
  255. package/dist/styles/icon-chip.css +149 -0
  256. package/dist/styles/index.css +94 -18
  257. package/dist/styles/instrument-chassis.css +46 -0
  258. package/dist/styles/menu.css +127 -0
  259. package/dist/styles/paper.css +2 -68
  260. package/dist/styles/segmented-tabs.css +346 -0
  261. package/dist/styles/select.css +50 -0
  262. package/dist/styles/theme/bridges.css +347 -0
  263. package/dist/styles/theme/dark.css +7 -0
  264. package/dist/styles/theme/literals.css +94 -0
  265. package/dist/styles/theme/radius.css +95 -0
  266. package/dist/styles/theme.css +26 -529
  267. package/dist/styles/tokens/color-radius.css +287 -0
  268. package/dist/styles/tokens/dark-arm.css +308 -0
  269. package/dist/styles/tokens/glass.css +500 -0
  270. package/dist/styles/tokens/light-dark.css +187 -0
  271. package/dist/styles/tokens/offsets-sizing.css +562 -0
  272. package/dist/styles/tokens/property-regs.css +162 -0
  273. package/dist/styles/tokens/scale-paper.css +409 -0
  274. package/dist/styles/tokens/scheme-motion.css +352 -0
  275. package/dist/styles/tokens/shadow.css +166 -0
  276. package/dist/styles/tokens.css +22 -2360
  277. package/dist/styles/transitions.css +7 -7
  278. package/dist/styles/typography/scale.css +153 -0
  279. package/dist/styles/typography/semantic.css +220 -0
  280. package/dist/styles/typography/utilities.css +159 -0
  281. package/dist/styles/typography.css +23 -453
  282. package/dist/styles/utilities/a11y-overrides.css +169 -0
  283. package/dist/styles/utilities/animate.css +26 -0
  284. package/dist/styles/utilities/base.css +541 -0
  285. package/dist/styles/utilities/btn.css +218 -0
  286. package/dist/styles/utilities/components.css +317 -0
  287. package/dist/styles/utilities.css +19 -1318
  288. package/dist/styles/view-transition.css +4 -52
  289. package/dist/switch.js +1 -1
  290. package/dist/tabs.js +161 -181
  291. package/dist/timeline.js +2 -2
  292. package/dist/toast.js +1 -1
  293. package/dist/toggle-chip.js +3 -1
  294. package/dist/toggle-group.js +1 -1
  295. package/dist/tooltip.js +1 -1
  296. package/dist/typewriter.js +1 -1
  297. package/dist/{useAnimatedNumber-Bcpy5Etf.js → useAnimatedNumber-C_3wZLx4.js} +1 -1
  298. package/dist/useConfiguratorState-kiIlun8I.js +303 -0
  299. package/dist/useLiquidFlex-C12hXwOZ.js +30 -0
  300. package/dist/useRAFLoop-CdwJ7284.js +109 -0
  301. package/dist/{useScrollProgress-CffFGLa5.js → useScrollProgress-D7bYU2RK.js} +1 -1
  302. package/dist/useSpecularTracking-Bo5su68i.js +32 -0
  303. package/dist/useSpringMount-CvopqiFr.js +108 -0
  304. package/dist/useSurfaceAxis-CMnF2zHb.js +7 -0
  305. package/dist/{useTouchGate-WFyJYsth.js → useTouchGate-28Tk2-t2.js} +1 -1
  306. package/dist/useViewTransition-COsPjQVZ.js +47 -0
  307. package/dist/utils/coalesceMetric.d.ts +29 -0
  308. package/dist/utils/index.d.ts +1 -0
  309. package/dist/vReveal-D9k0jADx.js +10 -0
  310. package/dist/watercolor-dot.js +22 -13
  311. package/dist/{x-Dfsegz9Y.js → x-BUwTKe50.js} +1 -1
  312. package/package.json +134 -50
  313. package/src/styles/animations.css +25 -125
  314. package/src/styles/cards.css +53 -0
  315. package/src/styles/configurator.css +77 -0
  316. package/src/styles/dock/density.css +19 -0
  317. package/src/styles/dock/layer-group.css +83 -25
  318. package/src/styles/dock/layers.css +23 -1
  319. package/src/styles/dock/morph-bridge.css +123 -0
  320. package/src/styles/dock/morph.css +175 -45
  321. package/src/styles/dock/overflow.css +66 -1
  322. package/src/styles/dock/rail-extend.css +397 -0
  323. package/src/styles/dock/section.css +59 -0
  324. package/src/styles/dock/shell.css +97 -110
  325. package/src/styles/dock-controls/dark-mode-toggle.css +109 -0
  326. package/src/styles/dock-controls/icon-button.css +143 -0
  327. package/src/styles/dock-controls/tab-button.css +143 -0
  328. package/src/styles/dock-controls/touch-floor.css +94 -0
  329. package/src/styles/dock-controls/triggers.css +135 -0
  330. package/src/styles/dock-controls.css +30 -595
  331. package/src/styles/dock.css +8 -3
  332. package/src/styles/drawer.css +42 -0
  333. package/src/styles/feedback-tone.css +104 -0
  334. package/src/styles/floating-panel.css +15 -0
  335. package/src/styles/glass/a11y-fallback.css +245 -0
  336. package/src/styles/glass/ladder.css +383 -0
  337. package/src/styles/glass/material.css +238 -0
  338. package/src/styles/glass/progress-rail.css +78 -0
  339. package/src/styles/glass/squircle.css +66 -0
  340. package/src/styles/glass/surface-axis.css +113 -0
  341. package/src/styles/glass/surfaces.css +382 -0
  342. package/src/styles/glass.css +34 -1188
  343. package/src/styles/icon-chip.css +149 -0
  344. package/src/styles/index.css +93 -17
  345. package/src/styles/instrument-chassis.css +42 -0
  346. package/src/styles/menu.css +127 -0
  347. package/src/styles/paper.css +2 -68
  348. package/src/styles/segmented-tabs.css +340 -0
  349. package/src/styles/select.css +50 -0
  350. package/src/styles/theme/bridges.css +347 -0
  351. package/src/styles/theme/dark.css +7 -0
  352. package/src/styles/theme/literals.css +94 -0
  353. package/src/styles/theme/radius.css +95 -0
  354. package/src/styles/theme.css +26 -529
  355. package/src/styles/tokens/color-radius.css +287 -0
  356. package/src/styles/tokens/dark-arm.css +308 -0
  357. package/src/styles/tokens/glass.css +500 -0
  358. package/src/styles/tokens/light-dark.css +187 -0
  359. package/src/styles/tokens/offsets-sizing.css +562 -0
  360. package/src/styles/tokens/property-regs.css +162 -0
  361. package/src/styles/tokens/scale-paper.css +409 -0
  362. package/src/styles/tokens/scheme-motion.css +352 -0
  363. package/src/styles/tokens/shadow.css +166 -0
  364. package/src/styles/tokens.css +22 -2360
  365. package/src/styles/transitions.css +7 -7
  366. package/src/styles/typography/scale.css +153 -0
  367. package/src/styles/typography/semantic.css +220 -0
  368. package/src/styles/typography/utilities.css +159 -0
  369. package/src/styles/typography.css +23 -453
  370. package/src/styles/utilities/a11y-overrides.css +169 -0
  371. package/src/styles/utilities/animate.css +26 -0
  372. package/src/styles/utilities/base.css +541 -0
  373. package/src/styles/utilities/btn.css +218 -0
  374. package/src/styles/utilities/components.css +317 -0
  375. package/src/styles/utilities.css +19 -1318
  376. package/src/styles/view-transition.css +4 -52
  377. package/dist/CardAction-DuArVky-.js +0 -157
  378. package/dist/DeckProgress-Dmk4_AKN.js +0 -23
  379. package/dist/DialogContent-BRkT1cjP.js +0 -100
  380. package/dist/InstrumentRail-CUJ05YVG.js +0 -44
  381. package/dist/MetricBadge-BZVWIxNy.js +0 -80
  382. package/dist/PopoverContent-BId6ggf_.js +0 -121
  383. package/dist/TabsList-B8CVOQPC.js +0 -101
  384. package/dist/components/custom/deck-progress/DeckProgress.vue.d.ts +0 -27
  385. package/dist/components/custom/deck-progress/index.d.ts +0 -2
  386. package/dist/components/custom/dialog-native/GlassDialogNative.vue.d.ts +0 -57
  387. package/dist/components/custom/dialog-native/index.d.ts +0 -1
  388. package/dist/components/custom/instrument-rail/InstrumentRail.vue.d.ts +0 -91
  389. package/dist/components/custom/instrument-rail/index.d.ts +0 -2
  390. package/dist/components/ui/carousel/CarouselDots.vue.d.ts +0 -4
  391. package/dist/composables/motion/useRouteTransition.d.ts +0 -42
  392. package/dist/deck-progress.d.ts +0 -1
  393. package/dist/deck-progress.js +0 -2
  394. package/dist/dockContext-BKeIMmNk.js +0 -9
  395. package/dist/instrument-rail.d.ts +0 -1
  396. package/dist/instrument-rail.js +0 -2
  397. package/dist/sheet-VZEtNFvO.js +0 -214
  398. package/dist/styles/instrument-rail.css +0 -127
  399. package/dist/useConfiguratorState-DxAqksK6.js +0 -287
  400. package/dist/useGlassRenderer-D7YGOYiM.js +0 -69
  401. package/dist/useSpecularTracking-BVRZsRHA.js +0 -26
  402. package/dist/useSpringMount-BJSHcLl3.js +0 -113
  403. package/dist/useViewTransition-DaN5Zrox.js +0 -21
  404. package/dist/vReveal-zUIQk-rJ.js +0 -53
  405. package/src/styles/instrument-rail.css +0 -127
  406. /package/dist/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-C_s6fG7r.js} +0 -0
  407. /package/dist/{ContextMenuContent-DDa0v27s.js → ContextMenuContent-ON3x7cuk.js} +0 -0
  408. /package/dist/{HoverCardContent-B6CcQ8He.js → HoverCardContent-DkMaQzH5.js} +0 -0
  409. /package/dist/{Input-xuDwALQR.js → Input-DVG_J0ne.js} +0 -0
  410. /package/dist/{InstrumentChassis-C2f6cBaQ.js → InstrumentChassis-UUJX0-mW.js} +0 -0
  411. /package/dist/{Label-zRfbQdCn.js → Label-Ck9SWEKM.js} +0 -0
  412. /package/dist/{ModalOverlay-B1GkAjNb.js → ModalOverlay-CkPRRgl_.js} +0 -0
  413. /package/dist/{PaperBackdrop-CqwjnfLv.js → PaperBackdrop-nBKe0vkB.js} +0 -0
  414. /package/dist/{SelectGroup-BFiod7X2.js → SelectGroup-Dcczq44n.js} +0 -0
  415. /package/dist/{SelectSeparator-C4Ql0gzV.js → SelectSeparator-DK2y1Bun.js} +0 -0
  416. /package/dist/{Separator-D7sD7RKj.js → Separator-BArl4OaB.js} +0 -0
  417. /package/dist/{TooltipProvider-CmZzCuaG.js → TooltipProvider-B3MkB_8P.js} +0 -0
  418. /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-CBt_VvXa.js} +0 -0
  419. /package/dist/{compile-BOXjLUxu.js → compile-EXXzEr1q.js} +0 -0
  420. /package/dist/{constants-yKeKnE84.js → constants-BPOqYJAm.js} +0 -0
  421. /package/dist/{createContext-B44Sah_H.js → createContext-B2RaZ-b8.js} +0 -0
  422. /package/dist/{createLucideIcon-B6uNAU9G.js → createLucideIcon-DydS2qgk.js} +0 -0
  423. /package/dist/{presets-BP_ALM0m.js → presets-BW2b-fr1.js} +0 -0
  424. /package/dist/{prng-D27-B3tK.js → prng-Cg22zv8g.js} +0 -0
  425. /package/dist/{supportsCssTimeline-C5oe0lnD.js → supportsCssTimeline-BWenxvHU.js} +0 -0
  426. /package/dist/{useGlobalDark-CAhOXNLO.js → useGlobalDark-C28t0VWJ.js} +0 -0
  427. /package/dist/{useIntersectionPause-Cck5Uxk8.js → useIntersectionPause-Bj4sPkMh.js} +0 -0
  428. /package/dist/{useInterval-Dsmqwi03.js → useInterval-CNdua40W.js} +0 -0
  429. /package/dist/{useKeyboardShortcuts-CyIYrndH.js → useKeyboardShortcuts-BXWXOZ-9.js} +0 -0
  430. /package/dist/{useResizeObserver-CWCbk5Px.js → useResizeObserver-V6nq5gJb.js} +0 -0
  431. /package/dist/{useResolveTokenColor-r9pnNjqK.js → useResolveTokenColor-NUG2zYAW.js} +0 -0
  432. /package/dist/{useSortable-C8ReQ50P.js → useSortable-BVqlJRBR.js} +0 -0
  433. /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-NmBM5V_4.js} +0 -0
  434. /package/dist/{useTimer-3xqf_54b.js → useTimer-B_PAasDL.js} +0 -0
  435. /package/dist/{useUserInvalidAria-DoJKMZ3s.js → useUserInvalidAria-CDfJuakL.js} +0 -0
  436. /package/dist/{useViewportReady-RIr5Wgkh.js → useViewportReady-CvBcCYDf.js} +0 -0
@@ -20,457 +20,27 @@
20
20
  * register lives in tokens.css §0 (--font-stack-text/-display/-mono), bridged
21
21
  * to --font-text/-display/-mono in theme.css; consumers override --font-text
22
22
  * once to rebrand, no third-party CDN dependency on the LCP-critical path.
23
+ *
24
+ * BA.W-CARVE2 — the §1-§10 face/scale/semantic/utility registers grew past the
25
+ * no-god-module 500-line bound (W-SUFFUSE/W-HIERARCHY's display-ladder +
26
+ * section-rung additions). This file is now a thin @import root over cohesive
27
+ * typography/*.css partials (each under bound), @import-ed below in CASCADE
28
+ * ORDER. The ordering is load-bearing: the faces + --type-* scale tokens FIRST
29
+ * (the semantic classes read them), the semantic register classes SECOND, the
30
+ * math/mono/aux utilities LAST. The carve moves rules across files in the SAME
31
+ * source position → byte-isomorphic dist (the no-god-module import-order gate
32
+ * is the witness; the dist/glass-ui.css emit is byte-identical):
33
+ * 1. typography/scale.css — the OFL fallback @font-face declarations +
34
+ * the :root √φ --type-* scale tokens.
35
+ * 2. typography/semantic.css — the body{} cascade + the DISPLAY/HEADING/
36
+ * BODY/MICRO/ADMIN-LABEL @utility classes.
37
+ * 3. typography/utilities.css — the MATH/MONO/FONT-FAMILY/ORNAMENTAL @utility
38
+ * set + the @layer components AUX hooks
39
+ * (section-label/pane-title/kinetic).
40
+ *
41
+ * @import-ed by index.css (cascade rung after tokens.css); the carve keeps the
42
+ * SAME source position → byte-isomorphic dist.
23
43
  */
24
-
25
- /* ═══════════════════════════════════════════════
26
- OFL FACE FILES — Plus Jakarta Sans (brand display)
27
- ═══════════════════════════════════════════════ */
28
-
29
- /* The payload-bearing "Plus Jakarta Sans" faces live in `fonts.css`
30
- (`@mkbabb/glass-ui/styles/fonts`), split off the critical entry path so
31
- `./styles` does not carry the ~99 KB-gzipped font binary. The calibrated
32
- `local()` fallback face below carries NO payload, stays on the critical
33
- path, and paints during the `font-display: optional` window. Its metric
34
- overrides (per system face) were derived via @capsizecss/core's
35
- `createFontStack` against the bundled latin woff2 — the swap is metrically
36
- neutral (no CLS). */
37
- @font-face {
38
- font-family: "Plus Jakarta Sans Fallback";
39
- src: local("System Font"), local(".SFNS-Regular"), local(".SFNSText-Regular"),
40
- local("-apple-system");
41
- ascent-override: 92.3784%;
42
- descent-override: 19.7572%;
43
- size-adjust: 112.3639%;
44
- }
45
- @font-face {
46
- font-family: "Plus Jakarta Sans Fallback";
47
- src: local("Segoe UI"), local("SegoeUI");
48
- ascent-override: 98.3348%;
49
- descent-override: 21.0311%;
50
- size-adjust: 105.5577%;
51
- }
52
- @font-face {
53
- font-family: "Plus Jakarta Sans Fallback";
54
- src: local("Roboto Regular"), local("Roboto-Regular");
55
- ascent-override: 98.6597%;
56
- descent-override: 21.1006%;
57
- size-adjust: 105.2101%;
58
- }
59
- @font-face {
60
- font-family: "Plus Jakarta Sans Fallback";
61
- src: local("Arial"), local("ArialMT");
62
- ascent-override: 98.8763%;
63
- descent-override: 21.147%;
64
- line-gap-override: 0%;
65
- size-adjust: 104.9796%;
66
- }
67
-
68
- /* ═══════════════════════════════════════════════
69
- OFL FACE FILES — Fira Code (canonical mono)
70
- ═══════════════════════════════════════════════ */
71
-
72
- /* The payload-bearing "Fira Code" faces live in `fonts.css`
73
- (`@mkbabb/glass-ui/styles/fonts`), split off the critical entry path. The
74
- calibrated `local()` fallback face below carries NO payload, stays on the
75
- critical path, and covers the `font-display: swap` window. Its metric
76
- overrides reference Roboto Mono (the platform monos cluster within ~2%);
77
- size-adjust ≈ 1.0 makes the swap geometrically transparent. */
78
- @font-face {
79
- font-family: "Fira Code Fallback";
80
- src: local("SF Mono"), local("SFMono-Regular"), local("Menlo"),
81
- local("Consolas"), local("Courier New"), local("Roboto Mono Regular");
82
- ascent-override: 99.0161%;
83
- descent-override: 32.2052%;
84
- size-adjust: 99.9837%;
85
- }
86
-
87
- :root {
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. */
97
-
98
- /* Scale tokens */
99
- --type-admin-label: 0.625rem; /* 10px */
100
- --type-micro: 0.6875rem; /* 11px */
101
- --type-caption: 0.75rem; /* 12px */
102
- --type-small: 0.875rem; /* 14px */
103
- --type-body: 1rem; /* 16px */
104
- --type-prose: 1.125rem; /* 18px */
105
- --type-subheading: 1.272rem; /* 20.4px — √φ */
106
- --type-heading: 1.618rem; /* 25.9px — φ */
107
- --type-title: 2.058rem; /* 32.9px — φ^(3/2) */
108
- --type-display-1: clamp(1.618rem, 1.2rem + 1.6vw, 2.618rem); /* φ^2 */
109
- --type-display-2: clamp(2.058rem, 1.5rem + 2.2vw, 3.33rem); /* φ^(5/2) */
110
- --type-display-3: clamp(2.618rem, 2rem + 3vw, 4.236rem); /* φ^3 */
111
- --type-display-4: clamp(3.33rem, 2.5rem + 4vw, 5.382rem); /* φ^(7/2) */
112
- --type-display-5: clamp(4.236rem, 3.5rem + 6vw, 6.854rem); /* φ^4 */
113
- /* Audacious display tier (v1.0.3). Extends the φ-ladder three rungs
114
- beyond display-5 for poster-type consumers (speedtest hero,
115
- dashboard pane titles when the consumer wants the number to win).
116
- Same vw-axis as display-1..5 — consumer-agnostic. */
117
- --type-display-mega: clamp(5.382rem, 4rem + 9vw, 11.089rem); /* φ^(9/2) — peak 177px */
118
- --type-display-hero: clamp(6.854rem, 4.5rem + 12vw, 17.942rem); /* φ^5 — peak 287px */
119
- --type-display-audacious: clamp(8.728rem, 5rem + 16vw, 22rem); /* φ^(11/2) — peak 352px (fast.com peg) */
120
-
121
- /* Line heights & letter spacing live at tokens.css §0 as the canonical
122
- --type-leading-* / --type-tracking-* rungs. theme.css bridges them
123
- to Tailwind's `leading-*` / `tracking-*` utilities. The duplicate
124
- --leading-* / --tracking-* declarations that previously sat here
125
- were retired in v0.8.6 (audit U.W0.C-c §1.1 / Union 2). */
126
- }
127
-
128
- /* ═══════════════════════════════════════════════
129
- BODY CASCADE — the brand text register inherits globally
130
- ═══════════════════════════════════════════════ */
131
- body {
132
- font-family: var(--font-text);
133
- color: var(--foreground);
134
- font-size: var(--type-body);
135
- line-height: var(--type-leading-body);
136
- }
137
-
138
- /* ═══════════════════════════════════════════════
139
- DISPLAY — Plus Jakarta Sans display, tracking-tight
140
- ═══════════════════════════════════════════════ */
141
- @utility text-display-audacious {
142
- font-family: var(--font-display);
143
- font-size: var(--type-display-audacious);
144
- line-height: var(--type-leading-display);
145
- letter-spacing: var(--type-tracking-tight);
146
- font-optical-sizing: auto;
147
- font-weight: 600;
148
- /* AQ.W3 §W3.3 — balance multi-line display headlines. Text-only (no box) so
149
- balance is safe; degrades to unbalanced wrapping with zero break. */
150
- text-wrap: balance;
151
- }
152
-
153
- /* `.text-hero` — the poster-type hero register. Ceiling pegs to
154
- `--type-display-audacious` (φ^(11/2) — peak 352px). Three knobs tune without
155
- forking: `--text-hero-size` (total clamp), `--text-hero-leading` (line-height,
156
- default 0.84), `--text-hero-tracking` (letter-spacing, default -0.03em).
157
- `font-weight: 300` + `font-feature-settings: ss01, tnum, lnum` lock the
158
- numeric/stylistic baseline; consumer data-attribute registers compose on top. */
159
- @utility text-hero {
160
- font-family: var(--font-display);
161
- font-size: var(--text-hero-size, var(--type-display-audacious));
162
- line-height: var(--text-hero-leading, 0.84);
163
- letter-spacing: var(--text-hero-tracking, -0.03em);
164
- font-weight: 300;
165
- font-feature-settings: "ss01", "tnum", "lnum";
166
- font-variant-numeric: tabular-nums lining-nums;
167
- font-optical-sizing: auto;
168
- display: inline-block;
169
- max-inline-size: 100%;
170
- /* AQ.W3 §W3.3 — `text-wrap: nowrap` (modern) sits AFTER `white-space:
171
- nowrap` (legacy fallback) so supporting engines honor the modern form and
172
- older ones fall through to `white-space`. Forgiving parse, no `@supports`. */
173
- white-space: nowrap;
174
- text-wrap: nowrap;
175
- }
176
-
177
- @utility text-display-hero {
178
- font-family: var(--font-display);
179
- font-size: var(--type-display-hero);
180
- line-height: var(--type-leading-display);
181
- letter-spacing: var(--type-tracking-tight);
182
- font-optical-sizing: auto;
183
- font-weight: 600;
184
- text-wrap: balance; /* AQ.W3 §W3.3 */
185
- }
186
-
187
- @utility text-display-mega {
188
- font-family: var(--font-display);
189
- font-size: var(--type-display-mega);
190
- line-height: var(--type-leading-display);
191
- letter-spacing: var(--type-tracking-tight);
192
- font-optical-sizing: auto;
193
- font-weight: 600;
194
- text-wrap: balance; /* AQ.W3 §W3.3 */
195
- }
196
-
197
- @utility text-display-5 {
198
- font-family: var(--font-display);
199
- font-size: var(--type-display-5);
200
- line-height: var(--type-leading-display);
201
- letter-spacing: var(--type-tracking-tight);
202
- font-optical-sizing: auto;
203
- font-weight: 600;
204
- text-wrap: balance; /* AQ.W3 §W3.3 */
205
- }
206
-
207
- @utility text-display-4 {
208
- font-family: var(--font-display);
209
- font-size: var(--type-display-4);
210
- line-height: var(--type-leading-display);
211
- letter-spacing: var(--type-tracking-tight);
212
- font-optical-sizing: auto;
213
- font-weight: 600;
214
- text-wrap: balance; /* AQ.W3 §W3.3 */
215
- }
216
-
217
- @utility text-display-3 {
218
- font-family: var(--font-display);
219
- font-size: var(--type-display-3);
220
- line-height: var(--type-leading-display);
221
- letter-spacing: var(--type-tracking-tight);
222
- font-optical-sizing: auto;
223
- font-weight: 600;
224
- text-wrap: balance; /* AQ.W3 §W3.3 */
225
- }
226
-
227
- @utility text-display-2 {
228
- font-family: var(--font-display);
229
- font-size: var(--type-display-2);
230
- line-height: var(--type-leading-display);
231
- letter-spacing: var(--type-tracking-tight);
232
- font-optical-sizing: auto;
233
- font-weight: 600;
234
- text-wrap: balance; /* AQ.W3 §W3.3 */
235
- }
236
-
237
- @utility text-display {
238
- font-family: var(--font-display);
239
- font-size: var(--type-display-1);
240
- line-height: var(--type-leading-display);
241
- letter-spacing: var(--type-tracking-tight);
242
- font-optical-sizing: auto;
243
- font-weight: 600;
244
- text-wrap: balance; /* AQ.W3 §W3.3 */
245
- }
246
-
247
- /* ═══════════════════════════════════════════════
248
- HEADINGS / BODY — Plus Jakarta Sans text register
249
- ═══════════════════════════════════════════════ */
250
- @utility text-title {
251
- font-family: var(--font-text);
252
- font-size: var(--type-title);
253
- line-height: var(--type-leading-heading);
254
- letter-spacing: var(--type-tracking-tight);
255
- font-weight: 700;
256
- text-wrap: balance; /* AQ.W3 §W3.3 */
257
- }
258
-
259
- @utility text-heading {
260
- font-family: var(--font-text);
261
- font-size: var(--type-heading);
262
- line-height: var(--type-leading-heading);
263
- font-weight: 700;
264
- text-wrap: balance; /* AQ.W3 §W3.3 */
265
- }
266
-
267
- @utility text-subheading {
268
- font-family: var(--font-text);
269
- font-size: var(--type-subheading);
270
- line-height: var(--type-leading-body);
271
- font-weight: 600;
272
- text-wrap: balance; /* AQ.W3 §W3.3 */
273
- }
274
-
275
- /* Canonical dock control label register — text labels INSIDE
276
- `.dock-tab-button` (Start, Next, Submit, …) that want an emphatic character
277
- without `.text-heading`'s `font-weight: 700` (which reads as literal bold in
278
- a dock pill). Composes the `--dock-label-size` knob when set (dock.css
279
- audacious mobile carve), else `--type-subheading`. Weight 400 — Plus Jakarta
280
- reads heavier than its numeric weight at pill size, so regular is the
281
- not-bold register. */
282
- @utility dock-label {
283
- font-family: var(--font-text);
284
- font-size: var(--dock-label-size, var(--type-subheading));
285
- line-height: var(--type-leading-body);
286
- font-weight: 400;
287
- letter-spacing: var(--type-tracking-normal);
288
- }
289
-
290
- @utility text-prose {
291
- font-family: var(--font-text);
292
- font-size: var(--type-prose);
293
- line-height: var(--type-leading-prose);
294
- font-weight: 400;
295
- /* AQ.W3 §W3.3 — `pretty` fixes orphans/rivers in prose. Prose registers
296
- only (not every text class); degrades to default wrapping, zero break. */
297
- text-wrap: pretty;
298
- }
299
-
300
- @utility text-body {
301
- font-family: var(--font-text);
302
- font-size: var(--type-body);
303
- line-height: var(--type-leading-body);
304
- font-weight: 400;
305
- text-wrap: pretty; /* AQ.W3 §W3.3 */
306
- }
307
-
308
- @utility text-small {
309
- font-family: var(--font-text);
310
- font-size: var(--type-small);
311
- line-height: var(--type-leading-small);
312
- font-weight: 400;
313
- }
314
-
315
- @utility text-caption {
316
- font-family: var(--font-text);
317
- font-size: var(--type-caption);
318
- line-height: var(--type-leading-caption);
319
- font-style: italic;
320
- font-weight: 400;
321
- }
322
-
323
- /* ═══════════════════════════════════════════════
324
- MICRO / ADMIN LABEL — Fira Code
325
- ═══════════════════════════════════════════════ */
326
- @utility text-micro {
327
- font-size: var(--type-micro);
328
- line-height: 1.25;
329
- }
330
-
331
- @utility text-admin-label {
332
- font-family: var(--font-mono);
333
- font-size: var(--type-admin-label);
334
- line-height: 1;
335
- text-transform: uppercase;
336
- letter-spacing: var(--type-tracking-caps);
337
- font-weight: 500;
338
- }
339
-
340
- /* ═══════════════════════════════════════════════
341
- MATH — Plus Jakarta Sans italic
342
- ═══════════════════════════════════════════════ */
343
- @utility text-math {
344
- font-family: var(--font-text);
345
- font-style: italic;
346
- }
347
-
348
- @utility text-math-body {
349
- font-family: var(--font-text);
350
- font-size: var(--type-prose);
351
- line-height: var(--type-leading-prose);
352
- font-style: italic;
353
- }
354
-
355
- /* ═══════════════════════════════════════════════
356
- MONO variants
357
- ═══════════════════════════════════════════════ */
358
- @utility text-mono-caption {
359
- font-family: var(--font-mono);
360
- font-size: var(--type-caption);
361
- letter-spacing: var(--type-tracking-wider);
362
- text-transform: uppercase;
363
- font-weight: 500;
364
- }
365
-
366
- @utility text-mono-small {
367
- font-family: var(--font-mono);
368
- font-size: var(--type-small);
369
- line-height: var(--type-leading-small);
370
- }
371
-
372
- @utility text-mono-prose {
373
- font-family: var(--font-mono);
374
- font-size: var(--type-prose);
375
- line-height: var(--type-leading-prose);
376
- letter-spacing: 0.02em;
377
- }
378
-
379
- @utility text-mono-micro {
380
- font-family: var(--font-mono);
381
- font-size: var(--type-micro);
382
- line-height: 1.25;
383
- letter-spacing: 0.025em;
384
- }
385
-
386
- /* ═══════════════════════════════════════════════
387
- FONT FAMILY UTILITIES
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. */
394
- @utility cm-serif {
395
- font-family: var(--font-serif-math, serif);
396
- }
397
-
398
- @utility fira-code {
399
- font-family: var(--font-mono);
400
- font-feature-settings: "liga", "calt";
401
- }
402
-
403
- /* ═══════════════════════════════════════════════
404
- ORNAMENTAL — Fourier F
405
- ═══════════════════════════════════════════════ */
406
- @utility fourier-f {
407
- font-family: var(--font-display);
408
- font-style: italic;
409
- font-size: 1.35em;
410
- line-height: 1;
411
- vertical-align: -0.05em;
412
- font-weight: 700;
413
- display: inline-block;
414
- }
415
-
416
- /* ═══════════════════════════════════════════════
417
- AUX — section label, pane title, kinetic hooks
418
- ═══════════════════════════════════════════════ */
419
- @layer components {
420
- /* Responsive pane title */
421
- .text-pane-title {
422
- font-family: var(--font-display);
423
- font-size: clamp(2.4rem, 1.8rem + 2vw, 3.33rem);
424
- line-height: var(--type-leading-display);
425
- letter-spacing: var(--type-tracking-tight);
426
- font-weight: 600;
427
- font-optical-sizing: auto;
428
- }
429
-
430
- /* AV.W16 TW3 — the pane title scales off its PANE's box, not the viewport.
431
- An unnamed @container query resolves to the nearest ancestor container,
432
- so the title grows once its pane clears 40rem (≈ 640px) regardless of the
433
- viewport. Contract: the consuming pane sets `container-type: inline-size`
434
- (the dock/chassis pattern); without a container ancestor the compact base
435
- holds. */
436
- @container (min-width: 40rem) {
437
- .text-pane-title {
438
- font-size: var(--type-display-3);
439
- }
440
- }
441
-
442
- /* Section label (mono, small caps) */
443
- .section-label {
444
- font-family: var(--font-mono);
445
- font-size: var(--type-caption);
446
- color: var(--muted-foreground);
447
- text-transform: uppercase;
448
- letter-spacing: var(--type-tracking-caps);
449
- }
450
-
451
- /* Font-feature helpers */
452
- .tabular-nums {
453
- font-variant-numeric: tabular-nums;
454
- }
455
-
456
- /* Kinetic: per-character stagger */
457
- .char-stagger > .char {
458
- display: inline-block;
459
- animation: fade-in var(--duration-normal) var(--spring-smooth, ease) backwards;
460
- animation-delay: calc(var(--char-index, 0) * 30ms);
461
- }
462
-
463
- /* Letter-pressed treatment — reads as text engraved into the panel
464
- surface. Speedtest's idle hero `0` consumes this via
465
- `.text-hero[data-idle="true"]`; the `text-engraved` utility is the
466
- glass-ui contract that any consumer can apply for the same look.
467
- Opacity dropped in P.W1.B — the audacious canon mutes by colour
468
- (`--muted-foreground`), not by alpha; opacity ≤ 0.4 over a glass
469
- surface read as a fade, not as engraving. */
470
- .text-engraved {
471
- color: var(--muted-foreground);
472
- /* AW.W26 — composes the `--text-shadow-engraved` @theme identity token
473
- (the two-stop emboss) instead of a hand-rolled literal (gate 4). */
474
- text-shadow: var(--text-shadow-engraved);
475
- }
476
- }
44
+ @import "./typography/scale.css";
45
+ @import "./typography/semantic.css";
46
+ @import "./typography/utilities.css";
@@ -0,0 +1,169 @@
1
+ /* utilities/a11y-overrides.css
2
+ The accessibility + capability tail — @media (prefers-reduced-motion: reduce) (+ the .no-transition class), @media (forced-colors: active) focus/silhouette, @media (pointer: coarse) touch-target floor, and the @utility touch-hit-area. LAST in cascade.
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
+ /* ── Reduced motion: nuanced — preserve opacity, remove spatial motion ── */
6
+ @media (prefers-reduced-motion: reduce) {
7
+ *:not([data-allow-motion]) {
8
+ animation-duration: 0.01ms !important;
9
+ animation-iteration-count: 1 !important;
10
+ }
11
+
12
+ /* Keep opacity transitions (safe, non-spatial) but shorten */
13
+ *:not([data-allow-motion]) {
14
+ transition-duration: 0.1s !important;
15
+ transition-property: opacity, color, background-color, border-color, box-shadow !important;
16
+ }
17
+
18
+ /* BA.W-ATLAS-RECONCILE A-3 (d6 2755ebbd re-land) — Reduced-motion OVERRIDES
19
+ the `data-allow-motion` theme-flip carve. That carve (the `.no-transition`
20
+ block below) lets a control keep its OWN authored spatial animation through
21
+ the flip storm — but a user who asks for reduced motion outranks any
22
+ per-element motion-allow. So motion-allowed elements ALSO snap their spatial
23
+ (transform) transition + any animation here; accessibility is absolute. (The
24
+ DarkModeToggle icon animates through a flip under full motion, and SNAPS
25
+ under PRM — both arms gated by the ported icon-morph test.) */
26
+ [data-allow-motion] {
27
+ animation-duration: 0.01ms !important;
28
+ animation-iteration-count: 1 !important;
29
+ transition-duration: 0.01ms !important;
30
+ }
31
+ }
32
+
33
+ /* ── No-transition class (for theme switches, etc.) ──────────────────────────
34
+ The theme-flip transition-suppression storm: `useGlobalDark.toggleDark()` adds
35
+ `.no-transition` to `<html>` for the flip's single style recalc so the page's
36
+ incidental transitions (colour cross-fades, glass surfaces) don't jank, then
37
+ rAF-removes it. The kill is BLANKET by design — every descendant snaps.
38
+
39
+ BA.W-ATLAS-RECONCILE A-3 (d6 2755ebbd re-land) — THE CARVE
40
+ (`*:not([data-allow-motion])`): an element may declare `data-allow-motion` to
41
+ keep its OWN authored transition through the flip — the suppression is for
42
+ INCIDENTAL motion, never a control whose whole purpose IS an animation (the
43
+ DarkModeToggle's half-turn icon spring). This reuses the SAME carve attribute
44
+ the reduced-motion block reads, generalized into a single
45
+ "motion-allowed-during-suppression" capability (any element may opt in; no
46
+ toggle-special-case, no `!important` re-enable arms race). Reduced-motion still
47
+ OVERRIDES this carve — see the PRM block above: `[data-allow-motion]` spatial
48
+ transitions snap under `prefers-reduced-motion` (accessibility is absolute). */
49
+ html.no-transition,
50
+ html.no-transition *:not([data-allow-motion]),
51
+ html.no-transition *:not([data-allow-motion])::before,
52
+ html.no-transition *:not([data-allow-motion])::after {
53
+ transition-duration: 0s !important;
54
+ }
55
+
56
+ /* ── Forced-colors focus + silhouette rung (AQ.W2 §5 · generalized AX.W36) ────
57
+ Windows High Contrast / forced-colors mode STRIPS `box-shadow` — so the
58
+ glass focus rings (box-shadow + `outline: none`) vanish, leaving keyboard
59
+ users with no visible focus. Restore a real `outline` keyed to the system
60
+ `Highlight` color (outline survives forced-colors; box-shadow does not). The
61
+ box-shadow ring stays the primary in normal mode (it carries the glass
62
+ aesthetic) — these two are mutually exclusive by media query, NOT a parallel
63
+ path.
64
+
65
+ AX.W36 — the focus-survival selector set is GENERALIZED to the broader
66
+ interactive surface: the dock CONTROLS (`.dock-icon-button` / `.dock-tab-button`
67
+ / `.dock-select-trigger` / `.dock-dropdown-trigger`) + the pill button base
68
+ (`.btn-pill`) all carry a box-shadow focus ring (dock.css / utilities.css) that
69
+ vanishes under WHC just like the original five. This is the SAME `Highlight`
70
+ outline rung extended to cover them — ONE block, ONE path (the glass-language
71
+ structure-survival skin for the tier panes / StatusDot / floating surfaces lives
72
+ co-located with the ladder it skins, in glass.css).
73
+
74
+ `forced-color-adjust: none` is deliberately NOT used — glass-ui's glassmorphic
75
+ chrome is decorative and yields to the user's forced palette (css forced-colors
76
+ guidance). Baseline Widely Available; this IS the fallback mechanism (it only
77
+ activates under forced-colors), so no nested guard. */
78
+ @media (forced-colors: active) {
79
+ .focus-ring:focus-visible,
80
+ .glass-btn:focus-visible,
81
+ .interactive-item:focus-visible,
82
+ .btn-pill:focus-visible,
83
+ .dock-icon-button:focus-visible,
84
+ .dock-tab-button:focus-visible,
85
+ .dock-select-trigger:focus-visible,
86
+ .dock-dropdown-trigger:focus-visible,
87
+ .input-pill:focus,
88
+ .input-pill:focus-visible {
89
+ outline: 2px solid Highlight;
90
+ outline-offset: 2px;
91
+ }
92
+
93
+ /* Structural edges borne ONLY by box-shadow (the hairline catch-light + the
94
+ dock SHELL pill edge) also vanish — restore a real border so the silhouette
95
+ survives. CanvasText is the system text/border color. The `.glass-dock`
96
+ shell is OUT of the glass-material group BY DESIGN (it hand-rolls a parallel
97
+ surface — see glass.css), so it keeps its WHC edge HERE; the five-rung ladder
98
+ + `.glass-card` get their WHC border from the co-located glass-language skin
99
+ in glass.css (one source per surface family, no double-declaration). */
100
+ .hairline-accent,
101
+ .glass-dock {
102
+ border: 1px solid CanvasText;
103
+ }
104
+ }
105
+
106
+ /* ── Coarse-pointer touch-target floor (AQ.W3 §7) ───────────────────────────
107
+ General-surface companion to the dock-scoped R0G-6 floor (dock.css). On
108
+ coarse pointers the small icon-button/trigger surfaces OUTSIDE the dock lift
109
+ to the WCAG 2.5.5 (44px) minimum — ONE amendment retiring the per-consumer
110
+ `min-h-[44px]` one-liners. Token-driven (`--touch-target`); fine-pointer
111
+ byte-identical. Targets `Button size="icon"` (via the `data-size="icon"`
112
+ attr Button.vue reflects), ExpandableContainer + SegmentedTabs (responsive
113
+ mobile Select) triggers.
114
+ `min-block/inline-size` only RAISES — a larger explicit size is never lost. */
115
+ @media (pointer: coarse) {
116
+ [data-size="icon"],
117
+ .expandable-container__trigger,
118
+ .segmented-tabs__trigger {
119
+ min-block-size: var(--touch-target, 2.75rem);
120
+ min-inline-size: var(--touch-target, 2.75rem);
121
+ }
122
+ }
123
+
124
+ /* ── @utility touch-hit-area (AY.W-SCALE2) ──────────────────────────────────
125
+ The hit-target is DECOUPLED from the visual size: a 16px Checkbox stays
126
+ 16px visually, but on a COARSE pointer it acquires a ≥44px pointer-receptive
127
+ hit-rect via a centred `::before` overlay (WCAG 2.5.5). The six sub-44 form
128
+ atoms (Switch / Checkbox / RadioGroupItem / Slider-thumb / TagsInput-delete /
129
+ MultiSelect-remove-X) compose this ONE shared utility — DRY, one source, ≥2
130
+ consumers — instead of per-atom `min-h-[44px]` balloons.
131
+
132
+ DIVERGENCE-WITH-RATIONALE from the timeline precedent (ContinuousMarkers.vue
133
+ `.continuous-dot::before`, SegmentedTimeline `.boundary-dot::before`): the
134
+ timeline uses a FIXED symmetric `inset: calc((--touch-target - dot-size)/-2)`
135
+ — exact ONLY because its dot is a KNOWN fixed square. Our atoms are NOT square
136
+ and NOT a known size (a 24×44 Switch, a 16px Checkbox, a ~7px-wide Slider cap),
137
+ so a single symmetric inset would under/over-shoot one axis. This utility uses
138
+ the size-AGNOSTIC centred-min-size form: `min-width/min-height: var(--touch-
139
+ target)` + `top/left:50%` + `translate:-50% -50%` floors BOTH dimensions at
140
+ 44px for ANY visual size, the generalization the timeline's known-square inset
141
+ cannot do.
142
+
143
+ COARSE-ONLY (the fine-pointer-byte-identical invariant, STRICTER than the
144
+ timeline whose `::before` exists at fine pointer too): the DEFAULT (fine)
145
+ path declares NO overlay box — `::before` has no `content`, so its min-width/
146
+ height resolve to `auto`/0 and the composited rect equals the bare visual box
147
+ (the AX.W51 fine-pointer-identical invariant). Only the nested `@media
148
+ (pointer: coarse)` block mints the `content:""` + the 44px overlay.
149
+
150
+ NO new floor token (D4): the overlay reads `var(--touch-target)`. */
151
+ @utility touch-hit-area {
152
+ position: relative;
153
+
154
+ @media (pointer: coarse) {
155
+ &::before {
156
+ content: "";
157
+ position: absolute;
158
+ top: 50%;
159
+ left: 50%;
160
+ translate: -50% -50%;
161
+ min-width: var(--touch-target, 2.75rem);
162
+ min-height: var(--touch-target, 2.75rem);
163
+ /* Inherit the host's pointer-events so a tap within the halo
164
+ registers on the atom; the overlay itself is decorative (no
165
+ paint), so it never occludes the host's own interaction. */
166
+ pointer-events: auto;
167
+ }
168
+ }
169
+ }
@@ -0,0 +1,26 @@
1
+ /* utilities/animate.css
2
+ The popover/dropdown shared @utility animation pair — popover-animate + slide-in-from-side (the data-state / data-side entry choreography for popover-class containers). FIRST (before the @layer components block, matching source order).
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
+ /* ── Popover/dropdown shared animation ──
6
+ `@utility` form (V.W3.T8 / A5 §5.9 standardisation): data-state animation
7
+ pair for popover-class containers (Popover, DropdownMenu, ContextMenu,
8
+ Tooltip, HoverCard, Select). Composed alongside `.slide-in-from-side`
9
+ for direction-keyed entries. */
10
+ @utility popover-animate {
11
+ @apply data-[state=open]:animate-in data-[state=closed]:animate-out
12
+ data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0
13
+ data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95;
14
+ }
15
+
16
+ /* ── Slide-in entry by side data-attr ──
17
+ `@utility` form (V.W3.T8). Side-keyed slide entry that pairs with
18
+ reka-ui's `data-side` (`top|right|bottom|left`). The animation
19
+ direction inverts each side so panels enter from outside the
20
+ anchor's edge. */
21
+ @utility slide-in-from-side {
22
+ @apply data-[side=bottom]:slide-in-from-top-2
23
+ data-[side=left]:slide-in-from-right-2
24
+ data-[side=right]:slide-in-from-left-2
25
+ data-[side=top]:slide-in-from-bottom-2;
26
+ }