@mkbabb/glass-ui 3.13.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 (304) hide show
  1. package/dist/CardAction-XH4YBVEK.js +158 -0
  2. package/dist/{CommandShortcut-RowNEO6i.js → CommandShortcut-DdtWXxOK.js} +57 -52
  3. package/dist/{ContextMenuSubContent-BQmxTAdw.js → ContextMenuSubContent-B0Vs6atR.js} +1 -1
  4. package/dist/{DataTable-BCddn3T3.js → DataTable-C464Zbqd.js} +99 -97
  5. package/dist/DialogContent-DDE6pQBU.js +103 -0
  6. package/dist/{DialogFooter-Blu4t7tJ.js → DialogFooter-8eZbdmPc.js} +1 -1
  7. package/dist/FadingScroll-DwNnvKMs.js +76 -0
  8. package/dist/{HoverPopover-CISOJQuZ.js → HoverPopover-Dpzwvc4t.js} +1 -1
  9. package/dist/IconChip-BDw1j5mu.js +54 -0
  10. package/dist/{MetricBadge-C9QMz1KT.js → MetricBadge-BpC0R_Ec.js} +1 -1
  11. package/dist/{Notification-DdwNxIrI.js → Notification-DKjKsQq8.js} +8 -8
  12. package/dist/{NumberFieldContent-CqaN-SvN.js → NumberFieldContent-1VtwDSgf.js} +1 -1
  13. package/dist/PopoverContent-BTorlp--.js +127 -0
  14. package/dist/{Progress-DwlUKGbr.js → Progress-hAT4gqGH.js} +97 -77
  15. package/dist/{ScrollingText-DfFrwSph.js → ScrollingText-CUVFTWk2.js} +2 -2
  16. package/dist/{SelectScrollDownButton-CiDUxfEj.js → SelectScrollDownButton-C1jb3b3K.js} +22 -6
  17. package/dist/{Switch-CsIuYP_e.js → Switch-Dr--uLGH.js} +1 -1
  18. package/dist/{Toaster-D6q4HtXu.js → Toaster-Bm_HQSpc.js} +6 -6
  19. package/dist/{ToggleGroupItem-D_AHlRw9.js → ToggleGroupItem-Dzk9hWsF.js} +1 -1
  20. package/dist/animated-digit.js +2 -2
  21. package/dist/api/index.d.ts +8 -5
  22. package/dist/api.js +2 -2
  23. package/dist/aurora.js +132 -117
  24. package/dist/{button-ChXMfsud.js → button-BNDWhAZb.js} +2 -2
  25. package/dist/button.js +1 -1
  26. package/dist/card.js +1 -1
  27. package/dist/carousel.d.ts +1 -1
  28. package/dist/carousel.js +97 -141
  29. package/dist/collapsible.js +1 -1
  30. package/dist/color-swatch.d.ts +1 -0
  31. package/dist/color-swatch.js +47 -0
  32. package/dist/color.js +1 -1
  33. package/dist/command.js +1 -1
  34. package/dist/components/custom/aurora/constants/presets.d.ts +28 -0
  35. package/dist/components/custom/aurora/constants/renderMode.d.ts +2 -0
  36. package/dist/components/custom/aurora/index.d.ts +1 -1
  37. package/dist/components/custom/color-swatch/ColorSwatch.vue.d.ts +22 -0
  38. package/dist/components/custom/color-swatch/index.d.ts +1 -0
  39. package/dist/components/custom/configurator/Configurator.vue.d.ts +19 -8
  40. package/dist/components/custom/constellation/Constellation.vue.d.ts +18 -206
  41. package/dist/components/custom/constellation/composables/useConstellation.d.ts +26 -0
  42. package/dist/components/custom/constellation/constellationField.d.ts +2 -369
  43. package/dist/components/custom/constellation/constellationTypes.d.ts +369 -0
  44. package/dist/components/custom/constellation/index.d.ts +1 -1
  45. package/dist/components/custom/dock/DockRail.vue.d.ts +17 -16
  46. package/dist/components/custom/dock/DockSection.vue.d.ts +69 -0
  47. package/dist/components/custom/dock/DockSeparator.vue.d.ts +49 -1
  48. package/dist/components/custom/dock/DockTabButton.vue.d.ts +5 -5
  49. package/dist/components/custom/dock/constants.d.ts +35 -0
  50. package/dist/components/custom/dock/index.d.ts +2 -0
  51. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +10 -0
  52. package/dist/components/custom/fading-scroll/FadingScroll.vue.d.ts +25 -0
  53. package/dist/components/custom/fading-scroll/composables/useFadingScroll.d.ts +31 -0
  54. package/dist/components/custom/fading-scroll/constants.d.ts +19 -0
  55. package/dist/components/custom/fading-scroll/index.d.ts +2 -0
  56. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +7 -0
  57. package/dist/components/custom/fourier-field/index.d.ts +1 -1
  58. package/dist/components/custom/fourier-field/math.d.ts +17 -0
  59. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +8 -0
  60. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +11 -1
  61. package/dist/components/custom/goo-blob/constants.d.ts +6 -1
  62. package/dist/components/custom/handmark/HandMark.vue.d.ts +29 -0
  63. package/dist/components/custom/handmark/brush.d.ts +269 -0
  64. package/dist/components/custom/handmark/composables/useHandMark.d.ts +89 -0
  65. package/dist/components/custom/handmark/constants.d.ts +39 -0
  66. package/dist/components/custom/handmark/freehand.d.ts +69 -0
  67. package/dist/components/custom/handmark/geometry.d.ts +52 -0
  68. package/dist/components/custom/handmark/index.d.ts +27 -0
  69. package/dist/components/custom/handmark/ink.d.ts +11 -0
  70. package/dist/components/custom/handmark/texture.d.ts +39 -0
  71. package/dist/components/custom/handmark/types.d.ts +62 -0
  72. package/dist/components/custom/icon-chip/IconChip.vue.d.ts +4 -0
  73. package/dist/components/custom/icon-chip/index.d.ts +2 -0
  74. package/dist/components/custom/icon-chip/types.d.ts +72 -0
  75. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +15 -2
  76. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +39 -0
  77. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  78. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +20 -25
  79. package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +30 -21
  80. package/dist/components/custom/tabs/constants.d.ts +9 -3
  81. package/dist/components/custom/tabs/index.d.ts +1 -1
  82. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +14 -0
  83. package/dist/components/ui/_shared/index.d.ts +2 -0
  84. package/dist/components/ui/_shared/menuItemVariants.d.ts +19 -0
  85. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +41 -0
  86. package/dist/components/ui/card/Card.vue.d.ts +1 -1
  87. package/dist/components/ui/carousel/index.d.ts +0 -1
  88. package/dist/components/ui/command/Command.vue.d.ts +3 -0
  89. package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -3
  90. package/dist/components/ui/drawer/DrawerContent.vue.d.ts +5 -0
  91. package/dist/components/ui/index.d.ts +0 -1
  92. package/dist/components/ui/popover/PopoverContent.vue.d.ts +3 -0
  93. package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +14 -3
  94. package/dist/components/ui/select/SelectTrigger.vue.d.ts +27 -4
  95. package/dist/components/ui/sheet/SheetContent.vue.d.ts +6 -0
  96. package/dist/components/ui/skeleton/Skeleton.vue.d.ts +3 -0
  97. package/dist/composables/dark/index.d.ts +1 -1
  98. package/dist/composables/dark/useGlobalDark.d.ts +23 -1
  99. package/dist/composables/motion/useViewTransition.d.ts +36 -1
  100. package/dist/configurator.js +1 -1
  101. package/dist/confirm-dialog.js +2 -2
  102. package/dist/constellation.js +92 -94
  103. package/dist/context-menu.js +2 -2
  104. package/dist/controls.js +10 -4
  105. package/dist/dark.d.ts +1 -1
  106. package/dist/dark.js +1 -1
  107. package/dist/data-table.js +1 -1
  108. package/dist/dialog.js +2 -2
  109. package/dist/dock.js +510 -321
  110. package/dist/{dockContext-BegmJVmx.js → dockContext-Bu1Avy-a.js} +1 -1
  111. package/dist/dom.js +5 -5
  112. package/dist/{dropdown-menu-DzkkyBwX.js → dropdown-menu-BJ7E9js_.js} +2 -2
  113. package/dist/dropdown-menu.js +1 -1
  114. package/dist/expandable-container.js +42 -38
  115. package/dist/fading-scroll.d.ts +1 -0
  116. package/dist/fading-scroll.js +2 -0
  117. package/dist/forms.js +3 -3
  118. package/dist/fourier-field.js +38 -37
  119. package/dist/fourier-math.js +2 -2
  120. package/dist/glass-panel.js +39 -36
  121. package/dist/glass-ui.css +1 -1
  122. package/dist/glass-ui.js +129 -145
  123. package/dist/goo-blob.js +86 -81
  124. package/dist/handmark.d.ts +1 -0
  125. package/dist/handmark.js +707 -0
  126. package/dist/header-ribbon.js +1 -1
  127. package/dist/hover-card.js +1 -1
  128. package/dist/hover-popover.js +1 -1
  129. package/dist/icon-chip.d.ts +1 -0
  130. package/dist/icon-chip.js +2 -0
  131. package/dist/icon-tooltip.js +1 -1
  132. package/dist/index.d.ts +2 -2
  133. package/dist/keyboard.js +1 -1
  134. package/dist/label.js +1 -1
  135. package/dist/labeled-field.js +6 -6
  136. package/dist/{math-U6-RrLmV.js → math-DeuJwLFx.js} +11 -3
  137. package/dist/{menuItemVariants-DPiEarb0.js → menuItemVariants-DWRQXBxJ.js} +10 -4
  138. package/dist/metric-badge.js +1 -1
  139. package/dist/metric-cell.js +25 -22
  140. package/dist/metric-stack.js +1 -1
  141. package/dist/motion-core.js +33 -32
  142. package/dist/motion-curves.js +1 -1
  143. package/dist/motion.js +4 -4
  144. package/dist/notification.js +1 -1
  145. package/dist/number-field.js +1 -1
  146. package/dist/pager-dots.d.ts +1 -0
  147. package/dist/pager-dots.js +91 -0
  148. package/dist/paper-backdrop.js +1 -1
  149. package/dist/popover.js +1 -1
  150. package/dist/{presets-BKVyQfbt.js → presets-BW2b-fr1.js} +14 -1
  151. package/dist/progress.js +1 -1
  152. package/dist/pulse.js +1 -1
  153. package/dist/reactive.js +2 -2
  154. package/dist/scrolling-text.js +1 -1
  155. package/dist/search.js +5 -5
  156. package/dist/select.js +3 -3
  157. package/dist/separator.js +1 -1
  158. package/dist/{sheet-1fChZjtw.js → sheet-CquRYOAw.js} +59 -55
  159. package/dist/sheet.js +1 -1
  160. package/dist/{slider-B-JP2JlI.js → slider-DQ95MET2.js} +7 -7
  161. package/dist/slider.js +1 -1
  162. package/dist/sortable-list.js +3 -3
  163. package/dist/styles/animations.css +11 -26
  164. package/dist/styles/components.css +1 -1
  165. package/dist/styles/configurator.css +35 -0
  166. package/dist/styles/dock/density.css +19 -0
  167. package/dist/styles/dock/overflow.css +15 -0
  168. package/dist/styles/dock/rail-extend.css +168 -71
  169. package/dist/styles/dock/section.css +59 -0
  170. package/dist/styles/dock/shell.css +34 -5
  171. package/dist/styles/dock-controls/icon-button.css +11 -1
  172. package/dist/styles/dock-controls/tab-button.css +24 -83
  173. package/dist/styles/dock-controls/triggers.css +7 -0
  174. package/dist/styles/dock.css +6 -3
  175. package/dist/styles/drawer.css +46 -0
  176. package/dist/styles/feedback-tone.css +104 -0
  177. package/dist/styles/glass/ladder.css +68 -22
  178. package/dist/styles/glass/surface-axis.css +113 -0
  179. package/dist/styles/glass/surfaces.css +88 -12
  180. package/dist/styles/glass.css +5 -2
  181. package/dist/styles/icon-chip.css +149 -0
  182. package/dist/styles/index.css +67 -5
  183. package/dist/styles/instrument-chassis.css +42 -0
  184. package/dist/styles/menu.css +127 -0
  185. package/dist/styles/segmented-tabs.css +160 -89
  186. package/dist/styles/select.css +50 -0
  187. package/dist/styles/theme/bridges.css +11 -1
  188. package/dist/styles/tokens/color-radius.css +40 -13
  189. package/dist/styles/tokens/dark-arm.css +124 -16
  190. package/dist/styles/tokens/glass.css +83 -23
  191. package/dist/styles/tokens/light-dark.css +48 -19
  192. package/dist/styles/tokens/offsets-sizing.css +62 -0
  193. package/dist/styles/tokens/property-regs.css +3 -10
  194. package/dist/styles/tokens/scale-paper.css +45 -2
  195. package/dist/styles/tokens/scheme-motion.css +32 -14
  196. package/dist/styles/transitions.css +7 -7
  197. package/dist/styles/typography/scale.css +153 -0
  198. package/dist/styles/typography/semantic.css +220 -0
  199. package/dist/styles/typography/utilities.css +159 -0
  200. package/dist/styles/typography.css +23 -507
  201. package/dist/styles/utilities/a11y-overrides.css +33 -4
  202. package/dist/styles/utilities/base.css +177 -1
  203. package/dist/styles/utilities/btn.css +18 -201
  204. package/dist/styles/view-transition.css +4 -1
  205. package/dist/switch.js +1 -1
  206. package/dist/tabs.js +154 -183
  207. package/dist/timeline.js +2 -2
  208. package/dist/toast.js +1 -1
  209. package/dist/toggle-chip.js +3 -1
  210. package/dist/toggle-group.js +1 -1
  211. package/dist/typewriter.js +1 -1
  212. package/dist/{useAnimatedNumber-C5I3wWd8.js → useAnimatedNumber-C_3wZLx4.js} +1 -1
  213. package/dist/useConfiguratorState-kiIlun8I.js +303 -0
  214. package/dist/{useGlobalDark-yhL4Wp-s.js → useGlobalDark-C28t0VWJ.js} +22 -3
  215. package/dist/{useRAFLoop-Bxv0o6L5.js → useRAFLoop-CdwJ7284.js} +1 -1
  216. package/dist/{useSpringMount-CI2jOstM.js → useSpringMount-CvopqiFr.js} +1 -1
  217. package/dist/useSurfaceAxis-CMnF2zHb.js +7 -0
  218. package/dist/{useTouchGate-Dg7MQI1G.js → useTouchGate-28Tk2-t2.js} +1 -1
  219. package/dist/{vReveal-CqaCz_mC.js → useViewTransition-COsPjQVZ.js} +15 -12
  220. package/dist/vReveal-D9k0jADx.js +10 -0
  221. package/dist/watercolor-dot.js +12 -5
  222. package/package.json +71 -7
  223. package/src/styles/animations.css +11 -26
  224. package/src/styles/configurator.css +35 -0
  225. package/src/styles/dock/density.css +19 -0
  226. package/src/styles/dock/overflow.css +15 -0
  227. package/src/styles/dock/rail-extend.css +168 -71
  228. package/src/styles/dock/section.css +59 -0
  229. package/src/styles/dock/shell.css +34 -5
  230. package/src/styles/dock-controls/icon-button.css +11 -1
  231. package/src/styles/dock-controls/tab-button.css +24 -83
  232. package/src/styles/dock-controls/triggers.css +7 -0
  233. package/src/styles/dock.css +6 -3
  234. package/src/styles/drawer.css +42 -0
  235. package/src/styles/feedback-tone.css +104 -0
  236. package/src/styles/glass/ladder.css +68 -22
  237. package/src/styles/glass/surface-axis.css +113 -0
  238. package/src/styles/glass/surfaces.css +88 -12
  239. package/src/styles/glass.css +5 -2
  240. package/src/styles/icon-chip.css +149 -0
  241. package/src/styles/index.css +66 -4
  242. package/src/styles/instrument-chassis.css +42 -0
  243. package/src/styles/menu.css +127 -0
  244. package/src/styles/segmented-tabs.css +156 -87
  245. package/src/styles/select.css +50 -0
  246. package/src/styles/theme/bridges.css +11 -1
  247. package/src/styles/tokens/color-radius.css +40 -13
  248. package/src/styles/tokens/dark-arm.css +124 -16
  249. package/src/styles/tokens/glass.css +83 -23
  250. package/src/styles/tokens/light-dark.css +48 -19
  251. package/src/styles/tokens/offsets-sizing.css +62 -0
  252. package/src/styles/tokens/property-regs.css +3 -10
  253. package/src/styles/tokens/scale-paper.css +45 -2
  254. package/src/styles/tokens/scheme-motion.css +32 -14
  255. package/src/styles/transitions.css +7 -7
  256. package/src/styles/typography/scale.css +153 -0
  257. package/src/styles/typography/semantic.css +220 -0
  258. package/src/styles/typography/utilities.css +159 -0
  259. package/src/styles/typography.css +23 -507
  260. package/src/styles/utilities/a11y-overrides.css +33 -4
  261. package/src/styles/utilities/base.css +177 -1
  262. package/src/styles/utilities/btn.css +18 -201
  263. package/src/styles/view-transition.css +4 -1
  264. package/dist/CardAction-Cj2eycQ2.js +0 -157
  265. package/dist/DialogContent-Dl9WkAoS.js +0 -100
  266. package/dist/PopoverContent-BYwt2-4x.js +0 -121
  267. package/dist/TabsList-Dttss653.js +0 -105
  268. package/dist/components/custom/underline/GlassUnderline.vue.d.ts +0 -84
  269. package/dist/components/custom/underline/index.d.ts +0 -2
  270. package/dist/components/custom/underline/types.d.ts +0 -56
  271. package/dist/components/ui/carousel/CarouselDots.vue.d.ts +0 -4
  272. package/dist/underline.d.ts +0 -1
  273. package/dist/underline.js +0 -85
  274. package/dist/useConfiguratorState-DAoeHVue.js +0 -287
  275. /package/dist/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-C_s6fG7r.js} +0 -0
  276. /package/dist/{ContextMenuContent-CT3AS1WX.js → ContextMenuContent-ON3x7cuk.js} +0 -0
  277. /package/dist/{HoverCardContent-Csywg3YF.js → HoverCardContent-DkMaQzH5.js} +0 -0
  278. /package/dist/{IconTooltip-DPzE09X9.js → IconTooltip-DSjasZIt.js} +0 -0
  279. /package/dist/{Input-DWQQIOC4.js → Input-DVG_J0ne.js} +0 -0
  280. /package/dist/{Label-r3WzWrsj.js → Label-Ck9SWEKM.js} +0 -0
  281. /package/dist/{ModalOverlay-DVLI2VRr.js → ModalOverlay-CkPRRgl_.js} +0 -0
  282. /package/dist/{PaperBackdrop-DIXTtVq6.js → PaperBackdrop-nBKe0vkB.js} +0 -0
  283. /package/dist/{SelectGroup-aumMgWLs.js → SelectGroup-Dcczq44n.js} +0 -0
  284. /package/dist/{SelectSeparator-BQ_1Fcbp.js → SelectSeparator-DK2y1Bun.js} +0 -0
  285. /package/dist/{Separator-0JE6LtNu.js → Separator-BArl4OaB.js} +0 -0
  286. /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-CBt_VvXa.js} +0 -0
  287. /package/dist/{color-CUYeFbgd.js → color-DweYl7pE.js} +0 -0
  288. /package/dist/{compile-B7NGOBcP.js → compile-EXXzEr1q.js} +0 -0
  289. /package/dist/{constants-CS75AWHG.js → constants-BPOqYJAm.js} +0 -0
  290. /package/dist/{createContext-BM46COQ-.js → createContext-B2RaZ-b8.js} +0 -0
  291. /package/dist/{prng-D27-B3tK.js → prng-Cg22zv8g.js} +0 -0
  292. /package/dist/{springPresets--YdWTHtm.js → springPresets-WXaLbu8u.js} +0 -0
  293. /package/dist/{useIntersectionPause-Cc-H9ees.js → useIntersectionPause-Bj4sPkMh.js} +0 -0
  294. /package/dist/{useInterval-iHludrxk.js → useInterval-CNdua40W.js} +0 -0
  295. /package/dist/{useKeyboardShortcuts-Be3w_Rwk.js → useKeyboardShortcuts-BXWXOZ-9.js} +0 -0
  296. /package/dist/{useLiquidFlex-BL0lLLN2.js → useLiquidFlex-C12hXwOZ.js} +0 -0
  297. /package/dist/{useResizeObserver-BhgdhOIj.js → useResizeObserver-V6nq5gJb.js} +0 -0
  298. /package/dist/{useResolveTokenColor-Dvn2RZJW.js → useResolveTokenColor-NUG2zYAW.js} +0 -0
  299. /package/dist/{useScrollProgress-Dlvx-L3v.js → useScrollProgress-D7bYU2RK.js} +0 -0
  300. /package/dist/{useSortable-muI29agz.js → useSortable-BVqlJRBR.js} +0 -0
  301. /package/dist/{useTextHighlight-DmRYkOBx.js → useTextHighlight-NmBM5V_4.js} +0 -0
  302. /package/dist/{useTimer-Dzarvzuk.js → useTimer-B_PAasDL.js} +0 -0
  303. /package/dist/{useUserInvalidAria-B2h6jAM_.js → useUserInvalidAria-CDfJuakL.js} +0 -0
  304. /package/dist/{useViewportReady-B40FK4Pa.js → useViewportReady-CvBcCYDf.js} +0 -0
@@ -20,511 +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:
40
- local("System Font"), local(".SFNS-Regular"), local(".SFNSText-Regular"),
41
- local("-apple-system");
42
- ascent-override: 92.3784%;
43
- descent-override: 19.7572%;
44
- size-adjust: 112.3639%;
45
- }
46
- @font-face {
47
- font-family: "Plus Jakarta Sans Fallback";
48
- src: local("Segoe UI"), local("SegoeUI");
49
- ascent-override: 98.3348%;
50
- descent-override: 21.0311%;
51
- size-adjust: 105.5577%;
52
- }
53
- @font-face {
54
- font-family: "Plus Jakarta Sans Fallback";
55
- src: local("Roboto Regular"), local("Roboto-Regular");
56
- ascent-override: 98.6597%;
57
- descent-override: 21.1006%;
58
- size-adjust: 105.2101%;
59
- }
60
- @font-face {
61
- font-family: "Plus Jakarta Sans Fallback";
62
- src: local("Arial"), local("ArialMT");
63
- ascent-override: 98.8763%;
64
- descent-override: 21.147%;
65
- line-gap-override: 0%;
66
- size-adjust: 104.9796%;
67
- }
68
-
69
- /* ═══════════════════════════════════════════════
70
- OFL FACE FILES — Fira Code (canonical mono)
71
- ═══════════════════════════════════════════════ */
72
-
73
- /* The payload-bearing "Fira Code" faces live in `fonts.css`
74
- (`@mkbabb/glass-ui/styles/fonts`), split off the critical entry path. The
75
- calibrated `local()` fallback face below carries NO payload, stays on the
76
- critical path, and covers the `font-display: swap` window. Its metric
77
- overrides reference Roboto Mono (the platform monos cluster within ~2%);
78
- size-adjust ≈ 1.0 makes the swap geometrically transparent. */
79
- @font-face {
80
- font-family: "Fira Code Fallback";
81
- src:
82
- local("SF Mono"), local("SFMono-Regular"), local("Menlo"), local("Consolas"),
83
- local("Courier New"), local("Roboto Mono Regular");
84
- ascent-override: 99.0161%;
85
- descent-override: 32.2052%;
86
- size-adjust: 99.9837%;
87
- }
88
-
89
- :root {
90
- /* Font family tokens. `--font-text` / `--font-display` / `--font-serif` /
91
- `--font-mono` are NOT declared here — their source-of-truth lives in
92
- tokens.css §0 (`--font-stack-*`), bridged to Tailwind via theme.css's
93
- `@theme` block; declaring `:root` literals here would shadow consumer
94
- `@theme` overrides (un-layered `:root` wins over `@layer theme`). The
95
- self-hosted faces above expose `"Plus Jakarta Sans"` + `"Fira Code"`,
96
- each pairing with a calibrated `"... Fallback"`. The brand text register
97
- (Plus Jakarta Sans) engages by default for every consumer; --font-mono
98
- references `"Fira Code"` first then the fallback chain. */
99
-
100
- /* Scale tokens */
101
- --type-admin-label: 0.625rem; /* 10px — fixed sub-control micro (NOT fluid) */
102
- --type-micro: 0.6875rem; /* 11px — fixed sub-control micro (NOT fluid) */
103
- /* BODY/CONTROL register (AY.W-SCALE1 — the desktop-fluid half of corpus #4):
104
- a GENTLE clamp() viewport base so the control/body register grows ~1-2 steps
105
- on a wide display (the 27" "font too small" the user flagged) WITHOUT a
106
- media-query staircase. The <min> of every clamp is the rung's prior fixed rem
107
- — byte-identical at narrow/mobile (no shipped-narrow reflow; the coarse 1.5×
108
- --ui-scale still lifts the comfort axis ON TOP). The vw slope is the body
109
- register's GENTLE slope (not the φ-display ladder's aggressive vw) — the
110
- "non-contrived" bar. The vw fluid term lives HERE (the typographic base),
111
- exactly ONCE; the --ui-scale comfort scalar multiplies it exactly ONCE LATER
112
- (tokens.css --control-text/-sm) — NO double-vw under coarse. The φ-identity
113
- rungs below (--type-subheading/-heading/-title + the --type-display-* ladder)
114
- are EXCLUDED — a hero/title is a typographic identity, not a control. */
115
- --type-caption: clamp(
116
- 0.75rem,
117
- 0.71rem + 0.21vw,
118
- 1rem
119
- ); /* 12px floor — --control-text-sm source */
120
- --type-small: clamp(
121
- 0.875rem,
122
- 0.8rem + 0.25vw,
123
- 1.25rem
124
- ); /* 14px floor — --control-text source (the workhorse) */
125
- --type-body: clamp(
126
- 1rem,
127
- 0.92rem + 0.27vw,
128
- 1.375rem
129
- ); /* 16px floor — global body cascade */
130
- --type-prose: clamp(
131
- 1.125rem,
132
- 1.04rem + 0.28vw,
133
- 1.5rem
134
- ); /* 18px floor — long-form prose */
135
- --type-subheading: 1.272rem; /* 20.4px — √φ */
136
- --type-heading: 1.618rem; /* 25.9px — φ */
137
- --type-title: 2.058rem; /* 32.9px — φ^(3/2) */
138
- --type-display-1: clamp(1.618rem, 1.2rem + 1.6vw, 2.618rem); /* φ^2 */
139
- --type-display-2: clamp(2.058rem, 1.5rem + 2.2vw, 3.33rem); /* φ^(5/2) */
140
- --type-display-3: clamp(2.618rem, 2rem + 3vw, 4.236rem); /* φ^3 */
141
- --type-display-4: clamp(3.33rem, 2.5rem + 4vw, 5.382rem); /* φ^(7/2) */
142
- --type-display-5: clamp(4.236rem, 3.5rem + 6vw, 6.854rem); /* φ^4 */
143
- /* Audacious display tier (v1.0.3). Extends the φ-ladder three rungs
144
- beyond display-5 for poster-type consumers (speedtest hero,
145
- dashboard pane titles when the consumer wants the number to win).
146
- Same vw-axis as display-1..5 — consumer-agnostic. */
147
- --type-display-mega: clamp(
148
- 5.382rem,
149
- 4rem + 9vw,
150
- 11.089rem
151
- ); /* φ^(9/2) — peak 177px */
152
- --type-display-hero: clamp(
153
- 6.854rem,
154
- 4.5rem + 12vw,
155
- 17.942rem
156
- ); /* φ^5 — peak 287px */
157
- --type-display-audacious: clamp(
158
- 8.728rem,
159
- 5rem + 16vw,
160
- 22rem
161
- ); /* φ^(11/2) — peak 352px (fast.com peg) */
162
-
163
- /* Line heights & letter spacing live at tokens.css §0 as the canonical
164
- --type-leading-* / --type-tracking-* rungs. theme.css bridges them
165
- to Tailwind's `leading-*` / `tracking-*` utilities. The duplicate
166
- --leading-* / --tracking-* declarations that previously sat here
167
- were retired in v0.8.6 (audit U.W0.C-c §1.1 / Union 2). */
168
- }
169
-
170
- /* ═══════════════════════════════════════════════
171
- BODY CASCADE — the brand text register inherits globally
172
- ═══════════════════════════════════════════════ */
173
- body {
174
- font-family: var(--font-text);
175
- color: var(--foreground);
176
- font-size: var(--type-body);
177
- line-height: var(--type-leading-body);
178
- }
179
-
180
- /* ═══════════════════════════════════════════════
181
- DISPLAY — Plus Jakarta Sans display, tracking-tight
182
- ═══════════════════════════════════════════════ */
183
- @utility text-display-audacious {
184
- font-family: var(--font-display);
185
- font-size: var(--type-display-audacious);
186
- line-height: var(--type-leading-display);
187
- letter-spacing: var(--type-tracking-tight);
188
- font-optical-sizing: auto;
189
- font-weight: 600;
190
- /* AQ.W3 §W3.3 — balance multi-line display headlines. Text-only (no box) so
191
- balance is safe; degrades to unbalanced wrapping with zero break. */
192
- text-wrap: balance;
193
- }
194
-
195
- /* `.text-hero` — the poster-type hero register. Ceiling pegs to
196
- `--type-display-audacious` (φ^(11/2) — peak 352px). Three knobs tune without
197
- forking: `--text-hero-size` (total clamp), `--text-hero-leading` (line-height,
198
- default 0.84), `--text-hero-tracking` (letter-spacing, default -0.03em).
199
- `font-weight: 300` + `font-feature-settings: ss01, tnum, lnum` lock the
200
- numeric/stylistic baseline; consumer data-attribute registers compose on top. */
201
- @utility text-hero {
202
- font-family: var(--font-display);
203
- font-size: var(--text-hero-size, var(--type-display-audacious));
204
- line-height: var(--text-hero-leading, 0.84);
205
- letter-spacing: var(--text-hero-tracking, -0.03em);
206
- font-weight: 300;
207
- font-feature-settings: "ss01", "tnum", "lnum";
208
- font-variant-numeric: tabular-nums lining-nums;
209
- font-optical-sizing: auto;
210
- display: inline-block;
211
- max-inline-size: 100%;
212
- /* AQ.W3 §W3.3 — `text-wrap: nowrap` (modern) sits AFTER `white-space:
213
- nowrap` (legacy fallback) so supporting engines honor the modern form and
214
- older ones fall through to `white-space`. Forgiving parse, no `@supports`. */
215
- white-space: nowrap;
216
- text-wrap: nowrap;
217
- }
218
-
219
- @utility text-display-hero {
220
- font-family: var(--font-display);
221
- font-size: var(--type-display-hero);
222
- line-height: var(--type-leading-display);
223
- letter-spacing: var(--type-tracking-tight);
224
- font-optical-sizing: auto;
225
- font-weight: 600;
226
- text-wrap: balance; /* AQ.W3 §W3.3 */
227
- }
228
-
229
- @utility text-display-mega {
230
- font-family: var(--font-display);
231
- font-size: var(--type-display-mega);
232
- line-height: var(--type-leading-display);
233
- letter-spacing: var(--type-tracking-tight);
234
- font-optical-sizing: auto;
235
- font-weight: 600;
236
- text-wrap: balance; /* AQ.W3 §W3.3 */
237
- }
238
-
239
- @utility text-display-5 {
240
- font-family: var(--font-display);
241
- font-size: var(--type-display-5);
242
- line-height: var(--type-leading-display);
243
- letter-spacing: var(--type-tracking-tight);
244
- font-optical-sizing: auto;
245
- font-weight: 600;
246
- text-wrap: balance; /* AQ.W3 §W3.3 */
247
- }
248
-
249
- @utility text-display-4 {
250
- font-family: var(--font-display);
251
- font-size: var(--type-display-4);
252
- line-height: var(--type-leading-display);
253
- letter-spacing: var(--type-tracking-tight);
254
- font-optical-sizing: auto;
255
- font-weight: 600;
256
- text-wrap: balance; /* AQ.W3 §W3.3 */
257
- }
258
-
259
- @utility text-display-3 {
260
- font-family: var(--font-display);
261
- font-size: var(--type-display-3);
262
- line-height: var(--type-leading-display);
263
- letter-spacing: var(--type-tracking-tight);
264
- font-optical-sizing: auto;
265
- font-weight: 600;
266
- text-wrap: balance; /* AQ.W3 §W3.3 */
267
- }
268
-
269
- @utility text-display-2 {
270
- font-family: var(--font-display);
271
- font-size: var(--type-display-2);
272
- line-height: var(--type-leading-display);
273
- letter-spacing: var(--type-tracking-tight);
274
- font-optical-sizing: auto;
275
- font-weight: 600;
276
- text-wrap: balance; /* AQ.W3 §W3.3 */
277
- }
278
-
279
- @utility text-display {
280
- font-family: var(--font-display);
281
- font-size: var(--type-display-1);
282
- line-height: var(--type-leading-display);
283
- letter-spacing: var(--type-tracking-tight);
284
- font-optical-sizing: auto;
285
- font-weight: 600;
286
- text-wrap: balance; /* AQ.W3 §W3.3 */
287
- }
288
-
289
- /* ═══════════════════════════════════════════════
290
- HEADINGS / BODY — Plus Jakarta Sans text register
291
- ═══════════════════════════════════════════════ */
292
- @utility text-title {
293
- font-family: var(--font-text);
294
- font-size: var(--type-title);
295
- line-height: var(--type-leading-heading);
296
- letter-spacing: var(--type-tracking-tight);
297
- font-weight: 700;
298
- text-wrap: balance; /* AQ.W3 §W3.3 */
299
- }
300
-
301
- @utility text-heading {
302
- font-family: var(--font-text);
303
- font-size: var(--type-heading);
304
- line-height: var(--type-leading-heading);
305
- font-weight: 700;
306
- text-wrap: balance; /* AQ.W3 §W3.3 */
307
- }
308
-
309
- @utility text-subheading {
310
- font-family: var(--font-text);
311
- font-size: var(--type-subheading);
312
- line-height: var(--type-leading-body);
313
- font-weight: 600;
314
- text-wrap: balance; /* AQ.W3 §W3.3 */
315
- }
316
-
317
- /* Canonical dock control label register — text labels INSIDE
318
- `.dock-tab-button` (Start, Next, Submit, …) that want an emphatic character
319
- without `.text-heading`'s `font-weight: 700` (which reads as literal bold in
320
- a dock pill). Composes the `--dock-label-size` knob when set (dock.css
321
- audacious mobile carve), else `--type-subheading`. Weight 400 — Plus Jakarta
322
- reads heavier than its numeric weight at pill size, so regular is the
323
- not-bold register. */
324
- @utility dock-label {
325
- font-family: var(--font-text);
326
- font-size: var(--dock-label-size, var(--type-subheading));
327
- line-height: var(--type-leading-body);
328
- font-weight: 400;
329
- letter-spacing: var(--type-tracking-normal);
330
- }
331
-
332
- @utility text-prose {
333
- font-family: var(--font-text);
334
- font-size: var(--type-prose);
335
- line-height: var(--type-leading-prose);
336
- font-weight: 400;
337
- /* AQ.W3 §W3.3 — `pretty` fixes orphans/rivers in prose. Prose registers
338
- only (not every text class); degrades to default wrapping, zero break. */
339
- text-wrap: pretty;
340
- }
341
-
342
- @utility text-body {
343
- font-family: var(--font-text);
344
- font-size: var(--type-body);
345
- line-height: var(--type-leading-body);
346
- font-weight: 400;
347
- text-wrap: pretty; /* AQ.W3 §W3.3 */
348
- }
349
-
350
- @utility text-small {
351
- font-family: var(--font-text);
352
- font-size: var(--type-small);
353
- line-height: var(--type-leading-small);
354
- font-weight: 400;
355
- }
356
-
357
- @utility text-caption {
358
- font-family: var(--font-text);
359
- font-size: var(--type-caption);
360
- line-height: var(--type-leading-caption);
361
- font-style: italic;
362
- font-weight: 400;
363
- }
364
-
365
- /* ═══════════════════════════════════════════════
366
- MICRO / ADMIN LABEL — Fira Code
367
- ═══════════════════════════════════════════════ */
368
- @utility text-micro {
369
- font-size: var(--type-micro);
370
- line-height: 1.25;
371
- }
372
-
373
- @utility text-admin-label {
374
- font-family: var(--font-mono);
375
- font-size: var(--type-admin-label);
376
- line-height: 1;
377
- text-transform: uppercase;
378
- letter-spacing: var(--type-tracking-caps);
379
- font-weight: 500;
380
- }
381
-
382
- /* ═══════════════════════════════════════════════
383
- MATH — Plus Jakarta Sans italic
384
- ═══════════════════════════════════════════════ */
385
- @utility text-math {
386
- font-family: var(--font-text);
387
- font-style: italic;
388
- }
389
-
390
- @utility text-math-body {
391
- font-family: var(--font-text);
392
- font-size: var(--type-prose);
393
- line-height: var(--type-leading-prose);
394
- font-style: italic;
395
- }
396
-
397
- /* ═══════════════════════════════════════════════
398
- MONO variants
399
- ═══════════════════════════════════════════════ */
400
- @utility text-mono-caption {
401
- font-family: var(--font-mono);
402
- font-size: var(--type-caption);
403
- letter-spacing: var(--type-tracking-wider);
404
- text-transform: uppercase;
405
- font-weight: 500;
406
- }
407
-
408
- @utility text-mono-small {
409
- font-family: var(--font-mono);
410
- font-size: var(--type-small);
411
- line-height: var(--type-leading-small);
412
- }
413
-
414
- @utility text-mono-prose {
415
- font-family: var(--font-mono);
416
- font-size: var(--type-prose);
417
- line-height: var(--type-leading-prose);
418
- letter-spacing: 0.02em;
419
- }
420
-
421
- @utility text-mono-micro {
422
- font-family: var(--font-mono);
423
- font-size: var(--type-micro);
424
- line-height: 1.25;
425
- letter-spacing: 0.025em;
426
- }
427
-
428
- /* ═══════════════════════════════════════════════
429
- FONT FAMILY UTILITIES
430
- ═══════════════════════════════════════════════ */
431
- /* .cm-serif — the Computer-Modern math/serif voice. A DISTINCT face from the
432
- brand text register: it resolves to the consumer-supplied serif (system
433
- serif by default; a math consumer maps Computer Modern / KaTeX over it). It
434
- is NOT the Plus Jakarta text register — the one serif survivor of the
435
- register reconciliation. */
436
- @utility cm-serif {
437
- font-family: var(--font-serif-math, serif);
438
- }
439
-
440
- @utility fira-code {
441
- font-family: var(--font-mono);
442
- font-feature-settings: "liga", "calt";
443
- }
444
-
445
- /* ═══════════════════════════════════════════════
446
- ORNAMENTAL — Fourier F
447
- ═══════════════════════════════════════════════ */
448
- @utility fourier-f {
449
- font-family: var(--font-display);
450
- font-style: italic;
451
- font-size: 1.35em;
452
- line-height: 1;
453
- vertical-align: -0.05em;
454
- font-weight: 700;
455
- display: inline-block;
456
- }
457
-
458
- /* ═══════════════════════════════════════════════
459
- AUX — section label, pane title, kinetic hooks
460
- ═══════════════════════════════════════════════ */
461
- @layer components {
462
- /* Responsive pane title */
463
- .text-pane-title {
464
- font-family: var(--font-display);
465
- font-size: clamp(2.4rem, 1.8rem + 2vw, 3.33rem);
466
- line-height: var(--type-leading-display);
467
- letter-spacing: var(--type-tracking-tight);
468
- font-weight: 600;
469
- font-optical-sizing: auto;
470
- }
471
-
472
- /* AV.W16 TW3 — the pane title scales off its PANE's box, not the viewport.
473
- An unnamed @container query resolves to the nearest ancestor container,
474
- so the title grows once its pane clears 40rem (≈ 640px) regardless of the
475
- viewport. Contract: the consuming pane sets `container-type: inline-size`
476
- (the dock/chassis pattern); without a container ancestor the compact base
477
- holds. */
478
- @container (min-width: 40rem) {
479
- .text-pane-title {
480
- font-size: var(--type-display-3);
481
- }
482
- }
483
-
484
- /* Section label (mono, small caps) */
485
- .section-label {
486
- font-family: var(--font-mono);
487
- font-size: var(--type-caption);
488
- color: var(--muted-foreground);
489
- text-transform: uppercase;
490
- letter-spacing: var(--type-tracking-caps);
491
- }
492
-
493
- /* Section-accent eyebrow (AZ.W-SUFFUSE D3-7 / D1-8). ONE coherent
494
- section-accent register — the colored mono eyebrow reads as an
495
- intentional system, not a four-hue rainbow. The accent reads a single
496
- `--section-label-accent` knob (default `--section-color-7`, the violet
497
- brand anchor) so a page tints its whole eyebrow column at ONE chroma
498
- from one override, NOT a different hue per section. This is the
499
- one-color-event rule at PAGE scope: the eyebrow is the page's ONE
500
- accent identity. The label/value/body ink below stays neutral. */
501
- .section-label--tinted {
502
- color: var(--section-label-accent, var(--section-color-7));
503
- }
504
-
505
- /* Font-feature helpers */
506
- .tabular-nums {
507
- font-variant-numeric: tabular-nums;
508
- }
509
-
510
- /* Kinetic: per-character stagger */
511
- .char-stagger > .char {
512
- display: inline-block;
513
- animation: fade-in var(--duration-normal) var(--spring-smooth, ease) backwards;
514
- animation-delay: calc(var(--char-index, 0) * 30ms);
515
- }
516
-
517
- /* Letter-pressed treatment — reads as text engraved into the panel
518
- surface. Speedtest's idle hero `0` consumes this via
519
- `.text-hero[data-idle="true"]`; the `text-engraved` utility is the
520
- glass-ui contract that any consumer can apply for the same look.
521
- Opacity dropped in P.W1.B — the audacious canon mutes by colour
522
- (`--muted-foreground`), not by alpha; opacity ≤ 0.4 over a glass
523
- surface read as a fade, not as engraving. */
524
- .text-engraved {
525
- color: var(--muted-foreground);
526
- /* AW.W26 — composes the `--text-shadow-engraved` @theme identity token
527
- (the two-stop emboss) instead of a hand-rolled literal (gate 4). */
528
- text-shadow: var(--text-shadow-engraved);
529
- }
530
- }
44
+ @import "./typography/scale.css";
45
+ @import "./typography/semantic.css";
46
+ @import "./typography/utilities.css";
@@ -14,13 +14,42 @@
14
14
  transition-duration: 0.1s !important;
15
15
  transition-property: opacity, color, background-color, border-color, box-shadow !important;
16
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
+ }
17
31
  }
18
32
 
19
- /* ── No-transition class (for theme switches, etc.) ── */
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). */
20
49
  html.no-transition,
21
- html.no-transition *,
22
- html.no-transition *::before,
23
- html.no-transition *::after {
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 {
24
53
  transition-duration: 0s !important;
25
54
  }
26
55