@mkbabb/glass-ui 3.11.2 → 3.13.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 (360) hide show
  1. package/dist/{CardAction-DuArVky-.js → CardAction-Cj2eycQ2.js} +2 -2
  2. package/dist/{CommandShortcut-CefCj5mt.js → CommandShortcut-RowNEO6i.js} +4 -4
  3. package/dist/{ContextMenuSubContent-Bhg4f5jX.js → ContextMenuSubContent-BQmxTAdw.js} +4 -4
  4. package/dist/{DataTable-CUHMukiQ.js → DataTable-BCddn3T3.js} +3 -3
  5. package/dist/{DialogContent-BRkT1cjP.js → DialogContent-Dl9WkAoS.js} +3 -3
  6. package/dist/{DialogFooter-Gprw8H_A.js → DialogFooter-Blu4t7tJ.js} +2 -2
  7. package/dist/{HoverPopover-2LOIW34a.js → HoverPopover-CISOJQuZ.js} +1 -1
  8. package/dist/{IconTooltip-Cus0fvK0.js → IconTooltip-DPzE09X9.js} +1 -1
  9. package/dist/MetricBadge-C9QMz1KT.js +79 -0
  10. package/dist/{Notification-DLMhblXR.js → Notification-DdwNxIrI.js} +2 -2
  11. package/dist/{NumberFieldContent-BbLOh8RU.js → NumberFieldContent-CqaN-SvN.js} +3 -3
  12. package/dist/{PopoverContent-BId6ggf_.js → PopoverContent-BYwt2-4x.js} +1 -1
  13. package/dist/{ScrollingText-BPP84wKo.js → ScrollingText-DfFrwSph.js} +1 -1
  14. package/dist/{SelectScrollDownButton-T32cVFeM.js → SelectScrollDownButton-CiDUxfEj.js} +6 -6
  15. package/dist/{Switch-Ch-k3Rv-.js → Switch-CsIuYP_e.js} +1 -1
  16. package/dist/{TabsList-B8CVOQPC.js → TabsList-Dttss653.js} +9 -5
  17. package/dist/{Toaster-1rYWrmAm.js → Toaster-D6q4HtXu.js} +50 -47
  18. package/dist/{ToggleGroupItem-COu_4IW4.js → ToggleGroupItem-D_AHlRw9.js} +18 -22
  19. package/dist/animated-digit.js +2 -2
  20. package/dist/api/index.d.ts +5 -2
  21. package/dist/api.js +2 -2
  22. package/dist/aurora.js +69 -69
  23. package/dist/{badge-CaoFJzRb.js → badge-UILT_3pZ.js} +1 -1
  24. package/dist/badge.js +1 -1
  25. package/dist/{button-DN39cGqL.js → button-ChXMfsud.js} +12 -12
  26. package/dist/button.js +1 -1
  27. package/dist/card.js +1 -1
  28. package/dist/carousel.js +8 -8
  29. package/dist/{check-BBKKKSTf.js → check-njhk-vfu.js} +1 -1
  30. package/dist/{chevron-down-BSkTP2aL.js → chevron-down-DKkxb4VV.js} +1 -1
  31. package/dist/{chevron-right-sDM0Yvrf.js → chevron-right-CPXbqQQz.js} +1 -1
  32. package/dist/{chevron-up-CCOD_FTz.js → chevron-up-n_24SqI-.js} +1 -1
  33. package/dist/coalesceMetric-5qIeZnTx.js +13 -0
  34. package/dist/{color-C5ls_QF7.js → color-CUYeFbgd.js} +9 -7
  35. package/dist/color.js +1 -1
  36. package/dist/command.js +1 -1
  37. package/dist/components/custom/animated-digit/AnimatedDigit.vue.d.ts +8 -0
  38. package/dist/components/custom/aurora/constants/presets.d.ts +5 -62
  39. package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +1 -1
  40. package/dist/components/custom/aurora/constants/shaders/vangogh-medium.glsl.d.ts +1 -0
  41. package/dist/components/custom/aurora/index.d.ts +1 -1
  42. package/dist/components/custom/configurator/ConfiguratorRow.vue.d.ts +16 -0
  43. package/dist/components/custom/constellation/Constellation.vue.d.ts +74 -6
  44. package/dist/components/custom/constellation/composables/createConstellationField.d.ts +41 -0
  45. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +35 -0
  46. package/dist/components/custom/constellation/constants.d.ts +61 -0
  47. package/dist/components/custom/constellation/constellationDraw.d.ts +30 -0
  48. package/dist/components/custom/constellation/constellationField.d.ts +116 -149
  49. package/dist/components/custom/constellation/constellationInteraction.d.ts +132 -0
  50. package/dist/components/custom/constellation/index.d.ts +5 -2
  51. package/dist/components/custom/controls/DarkModeToggle.vue.d.ts +11 -0
  52. package/dist/components/custom/dock/DockRail.vue.d.ts +88 -0
  53. package/dist/components/custom/dock/DockTabButton.vue.d.ts +3 -4
  54. package/dist/components/custom/dock/GlassDock.vue.d.ts +5 -118
  55. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +36 -0
  56. package/dist/components/custom/dock/composables/index.d.ts +1 -0
  57. package/dist/components/custom/dock/composables/useDockClickIntegrity.d.ts +23 -0
  58. package/dist/components/custom/dock/composables/useDockMorphWindow.d.ts +15 -0
  59. package/dist/components/custom/dock/composables/useDockOrientationMorph.d.ts +44 -0
  60. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +165 -0
  61. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +44 -0
  62. package/dist/components/custom/dock/constants.d.ts +48 -0
  63. package/dist/components/custom/dock/index.d.ts +3 -0
  64. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +5 -37
  65. package/dist/components/custom/fourier-field/index.d.ts +1 -1
  66. package/dist/components/custom/fourier-field/math.d.ts +17 -0
  67. package/dist/components/custom/fourier-field/presets.d.ts +54 -0
  68. package/dist/components/custom/goo-blob/composables/buildMetaballProgram.d.ts +18 -0
  69. package/dist/components/custom/goo-blob/composables/uploadBlobUniforms.d.ts +41 -0
  70. package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +4 -3
  71. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +11 -8
  72. package/dist/components/custom/goo-blob/constants.d.ts +52 -0
  73. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -0
  74. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +2 -2
  75. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +37 -0
  76. package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +6 -0
  77. package/dist/components/custom/labeled-field/LabeledSlider.vue.d.ts +6 -0
  78. package/dist/components/custom/labeled-field/LabeledSwitch.vue.d.ts +6 -0
  79. package/dist/components/custom/metric-badge/MetricBadge.vue.d.ts +11 -18
  80. package/dist/components/custom/metric-badge/index.d.ts +1 -0
  81. package/dist/components/custom/metric-cell/MetricCell.vue.d.ts +15 -4
  82. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +6 -4
  83. package/dist/components/custom/tabs/constants.d.ts +12 -0
  84. package/dist/components/custom/underline/GlassUnderline.vue.d.ts +84 -0
  85. package/dist/components/custom/underline/index.d.ts +2 -0
  86. package/dist/components/custom/underline/types.d.ts +56 -0
  87. package/dist/components/ui/card/Card.vue.d.ts +15 -3
  88. package/dist/components/ui/drawer/Drawer.vue.d.ts +1 -0
  89. package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +2 -2
  90. package/dist/components/ui/metric-pill/MetricPill.vue.d.ts +6 -3
  91. package/dist/components/ui/slider/index.d.ts +22 -19
  92. package/dist/components/ui/tabs/TabsIndicator.vue.d.ts +4 -1
  93. package/dist/components/ui/toast/use-toast.d.ts +2 -2
  94. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  95. package/dist/components/ui/toggle/index.d.ts +1 -1
  96. package/dist/components/ui/toggle-group/ToggleGroup.vue.d.ts +1 -7
  97. package/dist/components/ui/toggle-group/ToggleGroupItem.vue.d.ts +1 -3
  98. package/dist/components/ui/toggle-group/toggleGroupContext.d.ts +0 -13
  99. package/dist/composables/color/index.d.ts +12 -0
  100. package/dist/composables/dark/index.d.ts +1 -1
  101. package/dist/composables/dark/useGlobalDark.d.ts +1 -21
  102. package/dist/composables/glass/index.d.ts +0 -1
  103. package/dist/composables/glass/useGlassBackdropLuminance.d.ts +59 -0
  104. package/dist/composables/glass/useSpecularTracking.d.ts +12 -3
  105. package/dist/composables/motion/core/index.d.ts +1 -1
  106. package/dist/composables/motion/curves.d.ts +48 -0
  107. package/dist/composables/motion/index.d.ts +2 -0
  108. package/dist/composables/motion/springPresets.d.ts +33 -0
  109. package/dist/composables/motion/suite.d.ts +2 -0
  110. package/dist/composables/motion/useLiquidFlex.d.ts +85 -0
  111. package/dist/composables/motion/useSpringMount.d.ts +1 -1
  112. package/dist/configurator.js +1 -1
  113. package/dist/confirm-dialog.js +2 -2
  114. package/dist/constellation.js +336 -222
  115. package/dist/context-menu.js +2 -2
  116. package/dist/controls.js +47 -13
  117. package/dist/dark.d.ts +1 -1
  118. package/dist/dark.js +1 -1
  119. package/dist/data-table.js +1 -1
  120. package/dist/dialog.js +2 -2
  121. package/dist/dock.js +705 -365
  122. package/dist/dockContext-BegmJVmx.js +17 -0
  123. package/dist/dom.js +5 -5
  124. package/dist/{dropdown-menu-D77jX6Df.js → dropdown-menu-DzkkyBwX.js} +11 -8
  125. package/dist/dropdown-menu.js +1 -1
  126. package/dist/expandable-container.js +39 -80
  127. package/dist/forms.js +5 -5
  128. package/dist/fourier-field.js +134 -99
  129. package/dist/fourier-math.js +2 -2
  130. package/dist/glass-panel.js +86 -20
  131. package/dist/glass-ui.css +1 -1
  132. package/dist/glass-ui.js +222 -212
  133. package/dist/goo-blob.js +243 -212
  134. package/dist/hover-card.js +1 -1
  135. package/dist/hover-popover.js +1 -1
  136. package/dist/icon-tooltip.js +1 -1
  137. package/dist/index.d.ts +1 -3
  138. package/dist/instrument-chassis.js +1 -1
  139. package/dist/keyboard.js +1 -1
  140. package/dist/label.js +1 -1
  141. package/dist/labeled-field.js +28 -18
  142. package/dist/{math-DTpRVC0e.js → math-U6-RrLmV.js} +18 -2
  143. package/dist/metric-badge.js +1 -1
  144. package/dist/metric-cell.js +25 -21
  145. package/dist/metric-stack.js +35 -34
  146. package/dist/{minimize-2-lcXOuc6V.js → minimize-2-BV31Ob_h.js} +1 -1
  147. package/dist/motion-core.js +32 -137
  148. package/dist/motion-curves.d.ts +1 -0
  149. package/dist/motion-curves.js +130 -0
  150. package/dist/motion.js +38 -37
  151. package/dist/notification.js +1 -1
  152. package/dist/number-field.js +1 -1
  153. package/dist/paper-backdrop.js +1 -1
  154. package/dist/popover.js +1 -1
  155. package/dist/{presets-BP_ALM0m.js → presets-BKVyQfbt.js} +1 -14
  156. package/dist/progress.js +1 -1
  157. package/dist/reactive.js +2 -2
  158. package/dist/scrolling-text.js +1 -1
  159. package/dist/{search-nbkvr2dC.js → search-BSGrf2Sk.js} +1 -1
  160. package/dist/search.js +9 -9
  161. package/dist/select.js +3 -3
  162. package/dist/separator.js +1 -1
  163. package/dist/{sheet-VZEtNFvO.js → sheet-1fChZjtw.js} +3 -3
  164. package/dist/sheet.js +1 -1
  165. package/dist/{slider-ClgpP7EB.js → slider-B-JP2JlI.js} +4 -4
  166. package/dist/slider.js +1 -1
  167. package/dist/sortable-list.js +2 -2
  168. package/dist/springPresets--YdWTHtm.js +40 -0
  169. package/dist/stacked-icons.js +6 -6
  170. package/dist/styles/animations.css +29 -114
  171. package/dist/styles/cards.css +55 -0
  172. package/dist/styles/components.css +4 -1
  173. package/dist/styles/configurator.css +42 -0
  174. package/dist/styles/dock/layer-group.css +83 -25
  175. package/dist/styles/dock/layers.css +23 -1
  176. package/dist/styles/dock/morph-bridge.css +123 -0
  177. package/dist/styles/dock/morph.css +175 -45
  178. package/dist/styles/dock/overflow.css +51 -1
  179. package/dist/styles/dock/rail-extend.css +300 -0
  180. package/dist/styles/dock/shell.css +63 -105
  181. package/dist/styles/dock-controls/dark-mode-toggle.css +109 -0
  182. package/dist/styles/dock-controls/icon-button.css +133 -0
  183. package/dist/styles/dock-controls/tab-button.css +202 -0
  184. package/dist/styles/dock-controls/touch-floor.css +94 -0
  185. package/dist/styles/dock-controls/triggers.css +128 -0
  186. package/dist/styles/dock-controls.css +30 -595
  187. package/dist/styles/dock.css +2 -0
  188. package/dist/styles/drawer.css +2 -0
  189. package/dist/styles/floating-panel.css +17 -0
  190. package/dist/styles/glass/a11y-fallback.css +245 -0
  191. package/dist/styles/glass/ladder.css +337 -0
  192. package/dist/styles/glass/material.css +238 -0
  193. package/dist/styles/glass/progress-rail.css +78 -0
  194. package/dist/styles/glass/squircle.css +66 -0
  195. package/dist/styles/glass/surfaces.css +306 -0
  196. package/dist/styles/glass-refract.css +2 -0
  197. package/dist/styles/glass.css +31 -1188
  198. package/dist/styles/hover-popover.css +2 -0
  199. package/dist/styles/index.css +28 -14
  200. package/dist/styles/instrument-chassis.css +4 -0
  201. package/dist/styles/paper.css +2 -68
  202. package/dist/styles/segmented-tabs.css +275 -0
  203. package/dist/styles/theme/bridges.css +337 -0
  204. package/dist/styles/theme/dark.css +7 -0
  205. package/dist/styles/theme/literals.css +94 -0
  206. package/dist/styles/theme/radius.css +95 -0
  207. package/dist/styles/theme.css +26 -529
  208. package/dist/styles/tokens/color-radius.css +260 -0
  209. package/dist/styles/tokens/dark-arm.css +200 -0
  210. package/dist/styles/tokens/glass.css +440 -0
  211. package/dist/styles/tokens/light-dark.css +158 -0
  212. package/dist/styles/tokens/offsets-sizing.css +500 -0
  213. package/dist/styles/tokens/property-regs.css +169 -0
  214. package/dist/styles/tokens/scale-paper.css +366 -0
  215. package/dist/styles/tokens/scheme-motion.css +334 -0
  216. package/dist/styles/tokens/shadow.css +166 -0
  217. package/dist/styles/tokens.css +22 -2360
  218. package/dist/styles/typography.css +75 -21
  219. package/dist/styles/utilities/a11y-overrides.css +140 -0
  220. package/dist/styles/utilities/animate.css +26 -0
  221. package/dist/styles/utilities/base.css +365 -0
  222. package/dist/styles/utilities/btn.css +401 -0
  223. package/dist/styles/utilities/components.css +317 -0
  224. package/dist/styles/utilities.css +19 -1291
  225. package/dist/styles/view-transition.css +0 -51
  226. package/dist/switch.js +1 -1
  227. package/dist/tabs.js +91 -82
  228. package/dist/timeline.js +1 -1
  229. package/dist/toast.js +1 -1
  230. package/dist/toggle-group.js +1 -1
  231. package/dist/tooltip.js +1 -1
  232. package/dist/underline.d.ts +1 -0
  233. package/dist/underline.js +85 -0
  234. package/dist/{useAnimatedNumber-Bcpy5Etf.js → useAnimatedNumber-C5I3wWd8.js} +1 -1
  235. package/dist/{useConfiguratorState-DxAqksK6.js → useConfiguratorState-DAoeHVue.js} +8 -8
  236. package/dist/{useGlobalDark-CAhOXNLO.js → useGlobalDark-yhL4Wp-s.js} +3 -22
  237. package/dist/useLiquidFlex-BL0lLLN2.js +30 -0
  238. package/dist/useRAFLoop-Bxv0o6L5.js +109 -0
  239. package/dist/{useScrollProgress-CffFGLa5.js → useScrollProgress-Dlvx-L3v.js} +1 -1
  240. package/dist/useSpecularTracking-Bo5su68i.js +32 -0
  241. package/dist/useSpringMount-CI2jOstM.js +108 -0
  242. package/dist/{useTouchGate-WFyJYsth.js → useTouchGate-Dg7MQI1G.js} +1 -1
  243. package/dist/utils/coalesceMetric.d.ts +29 -0
  244. package/dist/utils/index.d.ts +1 -0
  245. package/dist/vReveal-CqaCz_mC.js +44 -0
  246. package/dist/watercolor-dot.js +11 -9
  247. package/dist/{x-Dfsegz9Y.js → x-BUwTKe50.js} +1 -1
  248. package/package.json +78 -58
  249. package/src/styles/animations.css +29 -114
  250. package/src/styles/cards.css +53 -0
  251. package/src/styles/configurator.css +42 -0
  252. package/src/styles/dock/layer-group.css +83 -25
  253. package/src/styles/dock/layers.css +23 -1
  254. package/src/styles/dock/morph-bridge.css +123 -0
  255. package/src/styles/dock/morph.css +175 -45
  256. package/src/styles/dock/overflow.css +51 -1
  257. package/src/styles/dock/rail-extend.css +300 -0
  258. package/src/styles/dock/shell.css +63 -105
  259. package/src/styles/dock-controls/dark-mode-toggle.css +109 -0
  260. package/src/styles/dock-controls/icon-button.css +133 -0
  261. package/src/styles/dock-controls/tab-button.css +202 -0
  262. package/src/styles/dock-controls/touch-floor.css +94 -0
  263. package/src/styles/dock-controls/triggers.css +128 -0
  264. package/src/styles/dock-controls.css +30 -595
  265. package/src/styles/dock.css +2 -0
  266. package/src/styles/floating-panel.css +15 -0
  267. package/src/styles/glass/a11y-fallback.css +245 -0
  268. package/src/styles/glass/ladder.css +337 -0
  269. package/src/styles/glass/material.css +238 -0
  270. package/src/styles/glass/progress-rail.css +78 -0
  271. package/src/styles/glass/squircle.css +66 -0
  272. package/src/styles/glass/surfaces.css +306 -0
  273. package/src/styles/glass.css +31 -1188
  274. package/src/styles/index.css +28 -14
  275. package/src/styles/paper.css +2 -68
  276. package/src/styles/segmented-tabs.css +271 -0
  277. package/src/styles/theme/bridges.css +337 -0
  278. package/src/styles/theme/dark.css +7 -0
  279. package/src/styles/theme/literals.css +94 -0
  280. package/src/styles/theme/radius.css +95 -0
  281. package/src/styles/theme.css +26 -529
  282. package/src/styles/tokens/color-radius.css +260 -0
  283. package/src/styles/tokens/dark-arm.css +200 -0
  284. package/src/styles/tokens/glass.css +440 -0
  285. package/src/styles/tokens/light-dark.css +158 -0
  286. package/src/styles/tokens/offsets-sizing.css +500 -0
  287. package/src/styles/tokens/property-regs.css +169 -0
  288. package/src/styles/tokens/scale-paper.css +366 -0
  289. package/src/styles/tokens/scheme-motion.css +334 -0
  290. package/src/styles/tokens/shadow.css +166 -0
  291. package/src/styles/tokens.css +22 -2360
  292. package/src/styles/typography.css +75 -21
  293. package/src/styles/utilities/a11y-overrides.css +140 -0
  294. package/src/styles/utilities/animate.css +26 -0
  295. package/src/styles/utilities/base.css +365 -0
  296. package/src/styles/utilities/btn.css +401 -0
  297. package/src/styles/utilities/components.css +317 -0
  298. package/src/styles/utilities.css +19 -1291
  299. package/src/styles/view-transition.css +0 -51
  300. package/dist/DeckProgress-Dmk4_AKN.js +0 -23
  301. package/dist/InstrumentRail-CUJ05YVG.js +0 -44
  302. package/dist/MetricBadge-BZVWIxNy.js +0 -80
  303. package/dist/components/custom/deck-progress/DeckProgress.vue.d.ts +0 -27
  304. package/dist/components/custom/deck-progress/index.d.ts +0 -2
  305. package/dist/components/custom/dialog-native/GlassDialogNative.vue.d.ts +0 -57
  306. package/dist/components/custom/dialog-native/index.d.ts +0 -1
  307. package/dist/components/custom/handmark/HandMark.vue.d.ts +0 -29
  308. package/dist/components/custom/handmark/brush.d.ts +0 -242
  309. package/dist/components/custom/handmark/freehand.d.ts +0 -69
  310. package/dist/components/custom/handmark/geometry.d.ts +0 -50
  311. package/dist/components/custom/handmark/index.d.ts +0 -21
  312. package/dist/components/custom/handmark/ink.d.ts +0 -11
  313. package/dist/components/custom/handmark/texture.d.ts +0 -39
  314. package/dist/components/custom/handmark/types.d.ts +0 -53
  315. package/dist/components/custom/handmark/useHandMark.d.ts +0 -87
  316. package/dist/components/custom/instrument-rail/InstrumentRail.vue.d.ts +0 -91
  317. package/dist/components/custom/instrument-rail/index.d.ts +0 -2
  318. package/dist/composables/motion/useRouteTransition.d.ts +0 -42
  319. package/dist/deck-progress.d.ts +0 -1
  320. package/dist/deck-progress.js +0 -2
  321. package/dist/dockContext-BKeIMmNk.js +0 -9
  322. package/dist/handmark.d.ts +0 -1
  323. package/dist/handmark.js +0 -663
  324. package/dist/instrument-rail.d.ts +0 -1
  325. package/dist/instrument-rail.js +0 -2
  326. package/dist/styles/instrument-rail.css +0 -127
  327. package/dist/useGlassRenderer-D7YGOYiM.js +0 -69
  328. package/dist/useSpecularTracking-BVRZsRHA.js +0 -26
  329. package/dist/useSpringMount-BJSHcLl3.js +0 -113
  330. package/dist/useViewTransition-DaN5Zrox.js +0 -21
  331. package/dist/vReveal-zUIQk-rJ.js +0 -53
  332. package/src/styles/instrument-rail.css +0 -127
  333. /package/dist/{ContextMenuContent-DDa0v27s.js → ContextMenuContent-CT3AS1WX.js} +0 -0
  334. /package/dist/{HoverCardContent-B6CcQ8He.js → HoverCardContent-Csywg3YF.js} +0 -0
  335. /package/dist/{Input-xuDwALQR.js → Input-DWQQIOC4.js} +0 -0
  336. /package/dist/{InstrumentChassis-C2f6cBaQ.js → InstrumentChassis-UUJX0-mW.js} +0 -0
  337. /package/dist/{Label-zRfbQdCn.js → Label-r3WzWrsj.js} +0 -0
  338. /package/dist/{ModalOverlay-B1GkAjNb.js → ModalOverlay-DVLI2VRr.js} +0 -0
  339. /package/dist/{PaperBackdrop-CqwjnfLv.js → PaperBackdrop-DIXTtVq6.js} +0 -0
  340. /package/dist/{Progress-iEuD9pxG.js → Progress-DwlUKGbr.js} +0 -0
  341. /package/dist/{SelectGroup-BFiod7X2.js → SelectGroup-aumMgWLs.js} +0 -0
  342. /package/dist/{SelectSeparator-C4Ql0gzV.js → SelectSeparator-BQ_1Fcbp.js} +0 -0
  343. /package/dist/{Separator-D7sD7RKj.js → Separator-0JE6LtNu.js} +0 -0
  344. /package/dist/{TooltipProvider-CmZzCuaG.js → TooltipProvider-B3MkB_8P.js} +0 -0
  345. /package/dist/{compile-BOXjLUxu.js → compile-B7NGOBcP.js} +0 -0
  346. /package/dist/{constants-yKeKnE84.js → constants-CS75AWHG.js} +0 -0
  347. /package/dist/{createContext-B44Sah_H.js → createContext-BM46COQ-.js} +0 -0
  348. /package/dist/{createLucideIcon-B6uNAU9G.js → createLucideIcon-DydS2qgk.js} +0 -0
  349. /package/dist/{menuItemVariants-CCoBNkU5.js → menuItemVariants-DPiEarb0.js} +0 -0
  350. /package/dist/{supportsCssTimeline-C5oe0lnD.js → supportsCssTimeline-BWenxvHU.js} +0 -0
  351. /package/dist/{useIntersectionPause-Cck5Uxk8.js → useIntersectionPause-Cc-H9ees.js} +0 -0
  352. /package/dist/{useInterval-Dsmqwi03.js → useInterval-iHludrxk.js} +0 -0
  353. /package/dist/{useKeyboardShortcuts-CyIYrndH.js → useKeyboardShortcuts-Be3w_Rwk.js} +0 -0
  354. /package/dist/{useResizeObserver-CWCbk5Px.js → useResizeObserver-BhgdhOIj.js} +0 -0
  355. /package/dist/{useResolveTokenColor-r9pnNjqK.js → useResolveTokenColor-Dvn2RZJW.js} +0 -0
  356. /package/dist/{useSortable-C8ReQ50P.js → useSortable-muI29agz.js} +0 -0
  357. /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-DmRYkOBx.js} +0 -0
  358. /package/dist/{useTimer-3xqf_54b.js → useTimer-Dzarvzuk.js} +0 -0
  359. /package/dist/{useUserInvalidAria-DoJKMZ3s.js → useUserInvalidAria-B2h6jAM_.js} +0 -0
  360. /package/dist/{useViewportReady-RIr5Wgkh.js → useViewportReady-B40FK4Pa.js} +0 -0
@@ -0,0 +1,440 @@
1
+ /* tokens/glass.css
2
+ §8 glassmorphism — the five-tier surface ladder (bg/blur/border/shadow rungs + the glass-level + tint axes).
3
+ Carved from the tokens.css cascade root; @import-ed by tokens.css in
4
+ cascade order. Same :root cascade context as its siblings. */
5
+ :root {
6
+ /* ═══════════════════════════════════════════════
7
+ §8 GLASSMORPHISM — Five-tier surface ladder (v0.8.0)
8
+
9
+ Tier semantics, alpha-monotonic:
10
+ wash ~0.30α + light blur (was `subtle`)
11
+ quiet ~0.50α + medium blur (the formerly missing rung)
12
+ resting ~0.65α + canonical blur (was `default`; the speedtest plate)
13
+ floating ~0.80α + heavier blur (was `elevated`)
14
+ overlay ~0.95α + heaviest blur (NEW; modal-over-modal)
15
+
16
+ v0.8.0 retires the four-tier `subtle | default | medium | elevated`
17
+ ladder outright. No legacy aliases. Consumers migrate at the same
18
+ breaking change. R3-spec §A.
19
+ ═══════════════════════════════════════════════ */
20
+
21
+ /* Opacity primitives */
22
+ --glass-opacity-wash: 0.30;
23
+ --glass-opacity-quiet: 0.50;
24
+ --glass-opacity-resting: 0.65;
25
+ --glass-opacity-floating: 0.80;
26
+ --glass-opacity-overlay: 0.95;
27
+
28
+ /* Blur primitives. The radii here feather the dock + meter card to a
29
+ barely-perceptible diffusion that lets the substrate behind it bleed
30
+ through cleanly while keeping hero typography crisp at meter scale.
31
+ The resting blur sits at 12px so a glass plate reads as a diffusion
32
+ without consumer-side override. */
33
+ --glass-blur-wash-radius: 1px;
34
+ --glass-blur-quiet-radius: 10px;
35
+ --glass-blur-resting-radius: 12px;
36
+ --glass-blur-floating-radius: 16px;
37
+ /* AV.W7 F2 — clamped from 24px into the 8–15px budget band. A blur radius
38
+ past ~20px is exponentially costlier (`backdrop-filter` is glass-ui's most
39
+ expensive idiom — the radius is the dominant cost). 15px is the band
40
+ ceiling; the lower rungs (wash/quiet/resting 1/10/12) sit in-band and the
41
+ floating 16px is the design ceiling at the band edge (left as-is). A
42
+ high-resolution display restores the richer 24px wash via the @media arm
43
+ below — the cost is amortised by the extra device pixels. */
44
+ --glass-blur-overlay-radius: 15px;
45
+ /* Dock blur radius — 11px, paired with the 0.42 opacity below: a crisp
46
+ glass pill (the iOS Control Center register), not a feathered wash.
47
+ The dock composes `blur()` only (no saturate); the
48
+ `prefers-reduced-transparency` bracket at glass.css maps it to the
49
+ opacity-only register. */
50
+ --glass-blur-dock-radius: 11px;
51
+
52
+ /* AX.W54 — each blur radius is scaled by the ONE `--glass-level` scalar (in
53
+ lockstep with the opacity seam above): level=1 byte-identical; level=0 →
54
+ blur(0) (the clean solid floor with the opacity); level>1 → more diffusion.
55
+ The per-rung `saturate()`/`brightness()` companions are UNTOUCHED (the level
56
+ scales the RADIUS, not the saturation — W52's calm light-concentration). */
57
+ --glass-blur-wash: blur(calc(var(--glass-blur-wash-radius) * var(--glass-level))) saturate(1.05);
58
+ /* AV.W15 M1 — the `quiet` rung gained `saturate(1.05) brightness(1.02)`
59
+ so the lower ladder reads with the same saturation life as `resting`+
60
+ (Apple: Liquid Glass concentrates light, it does not desaturate). The
61
+ `brightness(1.02)` is the small lift the spec names — it lands `quiet`
62
+ between bare `wash` and `resting` without over-brightening the rung.
63
+ The `prefers-reduced-transparency: reduce` bracket at glass.css maps
64
+ `--glass-blur-quiet: none`, so this whole chain drops with the blur. */
65
+ --glass-blur-quiet: blur(calc(var(--glass-blur-quiet-radius) * var(--glass-level))) saturate(1.05) brightness(1.02);
66
+ --glass-blur-resting: blur(calc(var(--glass-blur-resting-radius) * var(--glass-level))) saturate(1.05);
67
+ /* AX.W52 D19 — the floating/overlay backdrop saturate tamed from 1.4/1.5 to a
68
+ gentle ~1.18/1.2 (real liquid glass concentrates light ~1.1–1.2×; the prior
69
+ 1.4–1.5× over-juiced the bleed-through into a garish smear over a colored
70
+ substrate). wash/quiet/resting already sit at 1.05 — untouched. */
71
+ --glass-blur-floating: blur(calc(var(--glass-blur-floating-radius) * var(--glass-level))) saturate(1.18);
72
+ --glass-blur-overlay: blur(calc(var(--glass-blur-overlay-radius) * var(--glass-level))) saturate(1.2);
73
+ /* Dock blur composes blur() only — no saturate. */
74
+ --glass-blur-dock: blur(calc(var(--glass-blur-dock-radius) * var(--glass-level)));
75
+
76
+ /* AX.W52 — the GLASS BUTTON blur. The `glass`/`glass-wash` button variants
77
+ compose the `.glass-wash` tier (`--glass-blur-wash` = blur(1px)) — a
78
+ sub-perceptual diffusion authored for a small detail TILE, not a button
79
+ the user reads as "glass." A button is a hero control: it wants a real
80
+ glass blur. `--glass-blur-btn` lifts the variant onto the `quiet`-tier
81
+ radius (10px — a genuine liquid-glass diffusion) with the same gentle
82
+ `saturate(1.05) brightness(1.02)` light-concentration the quiet rung
83
+ carries (NOT a colour-juice). The wash TILE tier (MetricCell et al.) keeps
84
+ its 1px — only the glass BUTTON variants reach for this. */
85
+ --glass-blur-btn: blur(calc(var(--glass-blur-quiet-radius) * var(--glass-level))) saturate(1.05) brightness(1.02);
86
+
87
+ /* Dock-specific opacity (0.42) — lighter than `resting` (0.65) so the dock
88
+ reads as a translucent overlay rather than a panel, backdrop bleed
89
+ visible through it. Consumed by `.glass-dock` via `--glass-bg-dock`. The
90
+ value holds the surface register against the tightened 11px blur so the
91
+ dock reads as painted chrome, not a frosted ghost. */
92
+ --glass-opacity-dock: 0.42;
93
+
94
+ /* Dock foreground over an animated backdrop. A dock floating over an
95
+ aurora/animated surface (`value.js` dock-over-aurora, a slides routed
96
+ control, bbnf) sits on a mid-luminance, shifting field where the muted
97
+ default fg can drop below contrast. This token is the dock control's
98
+ foreground base — a complete `hsl()` color consumed via `var()`; for the
99
+ muted icon weight the control mixes it down with `--opacity-icon-muted`.
100
+ Defaults to `var(--foreground)` so the dock paints byte-identically to
101
+ today; a consumer overrides it per-backdrop (e.g. a near-white over a
102
+ dark aurora) without touching library source.
103
+
104
+ AX.W55 — this is the FOREGROUND half of the adaptive story, now reconciled
105
+ INTO the `--glass-backdrop` probe (not a third fork): under the bright bucket
106
+ (`@container style(--glass-backdrop: light)` in dock.css) it re-points toward
107
+ the contrast-clearing ink, and an `@supports (color: contrast-color(…))`
108
+ block flips it natively on supporting engines. The `var(--foreground)`
109
+ default keeps the zero-delta rest state. */
110
+ --dock-fg-on-aurora: var(--foreground);
111
+
112
+ /* Chassis-specific opacity. Looser than `default` (0.50) so the
113
+ <InstrumentChassis> surface reads as glass-over-aurora at its
114
+ 64rem-wide footprint; the default tier stays calibrated for cards.
115
+ Mirrors the dock-tier pattern (own opacity primitive + composed bg).
116
+ Light 0.28 sits in the gap between dock (0.32) and a hypothetical
117
+ wash tier; dark 0.36 mirrors the +0.08 step the dock takes from
118
+ `glass-bg-medium` (0.65) down to its own 0.32. */
119
+ --glass-opacity-chassis: 0.28;
120
+
121
+ /* Composed backgrounds — AX.W54: the opacity is threaded through the ONE
122
+ `--glass-level` clarity scalar. Each rung's effective alpha is
123
+ `1 - (1 - <rung-opacity>) * --glass-level`: at level=1 it collapses to the
124
+ hand-tuned `<rung-opacity>` (byte-identical); at level=0 it resolves `1`
125
+ (solid `--card` — the opaque escape); at level>1 it goes clearer. ONE
126
+ expression, the same seven rungs. */
127
+ --glass-bg-wash: color-mix(in srgb, var(--card) calc((1 - (1 - var(--glass-opacity-wash)) * var(--glass-level)) * 100%), transparent);
128
+ --glass-bg-quiet: color-mix(in srgb, var(--card) calc((1 - (1 - var(--glass-opacity-quiet)) * var(--glass-level)) * 100%), transparent);
129
+ --glass-bg-resting: color-mix(in srgb, var(--card) calc((1 - (1 - var(--glass-opacity-resting)) * var(--glass-level)) * 100%), transparent);
130
+ --glass-bg-floating: color-mix(in srgb, var(--card) calc((1 - (1 - var(--glass-opacity-floating)) * var(--glass-level)) * 100%), transparent);
131
+ --glass-bg-overlay: color-mix(in srgb, var(--card) calc((1 - (1 - var(--glass-opacity-overlay)) * var(--glass-level)) * 100%), transparent);
132
+ /* The dock bg ALSO rides the oklab tint seam (AX.W54 amendment): the same
133
+ `color-mix(in oklab, …, --glass-tint-source --glass-tint-strength)` wrapper
134
+ the rungs reach for, ZERO-delta at `--glass-tint-strength: 0%` — so W55's
135
+ adaptive darken can reach the dock (the G2 over-light surface) without a
136
+ second hand-rolled recipe. */
137
+ --glass-bg-dock: color-mix(in oklab, color-mix(in srgb, var(--card) calc((1 - (1 - var(--glass-opacity-dock)) * var(--glass-level)) * 100%), transparent), var(--glass-tint-source) var(--glass-tint-strength));
138
+ --glass-bg-chassis: color-mix(in srgb, var(--card) calc((1 - (1 - var(--glass-opacity-chassis)) * var(--glass-level)) * 100%), transparent);
139
+
140
+ /* Composed borders — foreground-tinted */
141
+ --glass-border-wash: color-mix(in srgb, var(--foreground) 8%, transparent);
142
+ --glass-border-quiet: color-mix(in srgb, var(--foreground) 10%, transparent);
143
+ --glass-border-resting: color-mix(in srgb, var(--foreground) 12%, transparent);
144
+ --glass-border-floating: color-mix(in srgb, var(--foreground) 15%, transparent);
145
+ --glass-border-overlay: color-mix(in srgb, var(--foreground) 18%, transparent);
146
+ --glass-border-dock: color-mix(in srgb, var(--foreground) 11%, transparent);
147
+ --glass-border: var(--glass-border-quiet);
148
+ --glass-border-strong: var(--glass-border-floating);
149
+
150
+ /* Shared decorative. Light grain dropped 0.035 → 0.025 in P.W1.B —
151
+ at the chassis scale the original alpha read as crawl over the new
152
+ lower-alpha chassis bg; the grain's role is texture, not reading,
153
+ so it sits at the perceptual floor. Dark companion drops 0.06 →
154
+ 0.045 below to keep the soft-light blend alive without stippling. */
155
+ --glass-grain-opacity: 0.025;
156
+ --glass-grain-opacity-disco: 0.08;
157
+ --glass-highlight: inset 0 0.5px 0 0 hsl(0 0% 100% / 0.25);
158
+
159
+ /* Hairline-accent — 0.5px catch-light + under-shadow pair.
160
+ Single token composes the canonical 2-stop hairline used by dock,
161
+ instrument-chassis. The `.hairline-accent` utility
162
+ (utilities.css §hairline) adopts these via `box-shadow:`. */
163
+ --hairline-catch-light: inset 0 0.5px 0 0 rgb(255 255 255 / 0.06);
164
+ --hairline-under-shadow: 0 0.5px 0 0 rgb(0 0 0 / 0.04);
165
+ --border-hairline: var(--hairline-catch-light), var(--hairline-under-shadow);
166
+
167
+ /* Specular catch-light — 1.5px-tall top-edge highlight that swaps in for
168
+ --glass-highlight on interactive moments (e.g. primary-action hover).
169
+ Reads as a real catch-light on a curved surface. The `-dark` companion
170
+ is overridden inside `.dark`; the named token here is the explicit
171
+ handle consumers can reference to compose dark-aware layers. */
172
+ --glass-specular: inset 0 1.5px 0 0 hsl(0 0% 100% / 0.45);
173
+ --glass-specular-dark: inset 0 1.5px 0 0 hsl(0 0% 100% / 0.30);
174
+
175
+ /* AV.W15 M3 — Full-perimeter rim light (the "rim that defines the
176
+ silhouette", WWDC25 sess. 219). Distinct from the top-only
177
+ `--glass-highlight` (a 0.5px top-edge catch-light): this is a 0.75px
178
+ inset ring around the WHOLE silhouette, four edges, reading as the
179
+ catch-light that wraps the glass plate the way iOS-26 Liquid Glass
180
+ carries a rim, not just a top highlight. Composed as a SECOND inset
181
+ box-shadow layer alongside `--glass-highlight` on the floating/dock
182
+ tiers (glass.css wires it). The alpha is deliberately low (0.18 light
183
+ / 0.10 dark) — the rim is decoration and must not eat AA legibility
184
+ over a busy backdrop; it sits below the perceptual reading threshold
185
+ on text. The `-dark` companion is overridden inside `.dark` mirroring
186
+ the `--glass-specular-dark` precedent. */
187
+ --glass-edge-light: inset 0 0 0 0.75px hsl(0 0% 100% / 0.18);
188
+ --glass-edge-light-dark: inset 0 0 0 0.75px hsl(0 0% 100% / 0.10);
189
+
190
+ /* AW.W23 — content-aware adaptive tint (the Baseline-2025 "tint informed by
191
+ surrounding content" axis, WWDC25 sess. 219). A surface can tint toward a
192
+ consumer-provided dominant backdrop color via a `color-mix(in oklab, …)`
193
+ recipe (oklab is the mwg-preferred space for tint generation; NEVER a
194
+ lightness-shift in `oklch(from …)` — browsers don't gamut-map yet).
195
+
196
+ DEFAULT is zero delta: `--glass-tint-source` is the warm-white card itself
197
+ and `--glass-tint-strength` is 0%, so the rung background mixes 0% toward
198
+ the source = byte-identical to today. A consumer sets `--glass-tint-source`
199
+ to a sampled aurora hue + a strength ≤30% to bias the surface. Alpha-safe:
200
+ the mix is bounded ≤30% and never re-points the card's own alpha.
201
+
202
+ AX.W55 — the DEFAULTS stay `var(--card)`/`0%` (the zero-delta rest state).
203
+ The backdrop-luminance probe (`--glass-backdrop`, below) is what OVERRIDES
204
+ them under a bright backdrop; the `:root` defaults are NEVER touched — the
205
+ bucket blocks (glass.css / dock.css `@container style(--glass-backdrop:
206
+ light)`) do the lift, so a surface over today's rich/dark background reads
207
+ byte-identical. */
208
+ --glass-tint-source: var(--card);
209
+ --glass-tint-strength: 0%;
210
+
211
+ /* AX.W55 — adaptive glass legibility (the iOS-26/27 "locally darken the glass
212
+ over light content" move; G2). There is NO web API that reads the pixels
213
+ painted BEHIND a `backdrop-filter` element, so the backdrop-luminance signal
214
+ is a DECLARATIVE BUCKET a consumer sets where it KNOWS the backdrop is bright
215
+ (a near-white card surface, a pale aurora bleed, a bright data grid). It is
216
+ read by the `@container style(--glass-backdrop: light)` blocks on every glass
217
+ family (the shipped density-cascade mechanism — utilities.css §density) which
218
+ lift `--glass-tint-strength` toward the AA floor + re-point `--glass-tint-
219
+ source` to the warm-ink below, mixing the rung TOWARD ink via the EXISTING
220
+ `color-mix(in oklab)` seam — ZERO new compositing seam.
221
+
222
+ --glass-backdrop: the bucket. `dark` (or unset) = today's zero-delta;
223
+ `light` engages the bright-bucket darken. An
224
+ INHERITING ident set on any ancestor reaches every
225
+ descendant glass surface (the @container read).
226
+ --glass-backdrop-luma: the numeric escape hatch — a sampled backdrop
227
+ relative-luminance (0..1) a heavier JS observer sets
228
+ when the declarative bucket is too coarse. The TOKEN
229
+ is minted (the cascade reads it if set); the OBSERVER
230
+ that sets it stays demo-private until a 2nd consumer
231
+ arrives (the no-overfitting bar — the DEFAULT path is
232
+ the declarative bucket, not a speculative sampler).
233
+ --glass-tint-ink: the LOW-LUMINANCE warm-ink the bright bucket re-points
234
+ `--glass-tint-source` to — the warm dark `--foreground`
235
+ family (NOT white; a lightener over light content is
236
+ exactly the W52-fixed wrong direction). It auto-flips
237
+ with `--foreground` (dark-mode it resolves the light
238
+ warm ink — but the bright-backdrop case is a light-mode
239
+ concern). Overridable like every magnitude here.
240
+
241
+ The bright-bucket `--glass-tint-strength` is clamped to a BOUNDED AA-clearing
242
+ floor — `--glass-tint-strength-aa` (≤24%, the iOS clamp; the lowest value that
243
+ clears 4.5:1 over synthetic white, capped LOW so the surface STAYS translucent,
244
+ "let as much content through as possible"). Recorded here as the ceiling the
245
+ bucket blocks drive to; the live 4.5:1 readback (proof:adaptive-glass π arm)
246
+ ratifies the exact value. */
247
+ --glass-backdrop: dark;
248
+ --glass-backdrop-luma: ;
249
+ --glass-tint-ink: var(--foreground);
250
+ /* AZ.W-ADAPTIVE-AUTO Arm 1 — recalibrated 18% → 20%. The bump strengthens the
251
+ G2 surface-SILHOUETTE darken (ΔL ≈ 0.40 over synthetic white, the plate is
252
+ distinguishable from a bright page behind) while staying bounded ≤ 24% (the
253
+ iOS clamp — the surface STAYS translucent, "let content through"). The body
254
+ register over the engaged plate is the full warm-ink `--foreground` (~10.6:1
255
+ over white at 20%) — the muted L40 tier is lifted to the full ink by the
256
+ self-engage rules (it cannot clear 4.5:1 on a translucent darkened plate;
257
+ darkening moves the plate toward muted's own luminance). The shipped overlay-
258
+ band engaged appearance re-ratifies at the new floor: `--foreground` reads
259
+ ~10.6–10.9:1 (within the ~11:1 ratified register — the bump is a silhouette
260
+ strengthening, not a silent re-tint below AA). The live π readback ratifies. */
261
+ --glass-tint-strength-aa: 20%;
262
+
263
+ /* R5-7 — the VEIL text-plate feather. The `veil-surface` decoration
264
+ (cards.css) paints a borderless/rimless translucent glass plate as a LOCAL
265
+ text-legibility surface over a busy backdrop; its `--veil-feather` axis is
266
+ an OPTIONAL `mask-image` that fades the plate edges into the page (the
267
+ soft-edged "bleed" the slides deck text plates use). The default is `none`
268
+ (a clean rectangle); a consumer opts into the feather by pointing
269
+ `--veil-feather` at this ready-made radial, or any `mask-image` value.
270
+ The 70%→100% falloff feathers the outer ~30% of the plate; override the
271
+ token to retune the fade radius library-wide. */
272
+ --veil-feather-radial: radial-gradient(
273
+ ellipse 100% 100% at 50% 50%,
274
+ black 0%,
275
+ black 70%,
276
+ transparent 100%
277
+ );
278
+
279
+ /* AW.W23 — chromatic edge dispersion (the "polished glass" rim fringe Apple
280
+ shows). A warm fringe on one edge + a cool fringe on the other, low-alpha,
281
+ biased warm-cream/NCSU-red (NOT iOS-blue). Composed OVER the W22 uniform
282
+ rim under `prefers-reduced-transparency: no-preference`; dropped under
283
+ `reduce` (it is a transparency garnish). The two directional inset rings
284
+ read as light refracting through the glass edge. */
285
+ --glass-fringe-warm: oklch(0.92 0.06 40 / 0.22);
286
+ --glass-fringe-cool: oklch(0.90 0.05 230 / 0.16);
287
+ --glass-edge-dispersion:
288
+ inset 0.75px 0 0 0 var(--glass-fringe-warm),
289
+ inset -0.75px 0 0 0 var(--glass-fringe-cool);
290
+
291
+ /* AX.W52 D19 — the moving-specular gleam radius (glass.css `.glass-material::
292
+ before`). The ONE knob that BOUNDS the gleam geometry as a percentage of the
293
+ plate so it can NEVER again become a whole-surface disc (the prior implicit
294
+ `circle at …` ran its stops to 55–75% of the half-diagonal — a wash on a
295
+ small tile). 36% reads as a tracked edge glint. Override on `:root` to retune
296
+ library-wide; a per-surface override clips the gleam tighter/wider. */
297
+ --glass-specular-size: 36%;
298
+
299
+ /* Chassis curvature illusion — a subtle radial gradient at the chassis
300
+ top centre that lifts the surface without committing to literal 3D.
301
+ Composed into <InstrumentChassis>'s background stack. AX.W52 D19 — the
302
+ prior pure-white `hsl(0 0% 100% / 0.06)` reaching `transparent 60%` was a
303
+ broad top-centre WASH (the #1 fixed-anchor rest-bloom culprit). Re-derived
304
+ onto the warm-cream house identity (`hsl(40 30% 96%)`, L < 100% so the warm
305
+ hue survives — mirroring the moving gleam), the alpha routed through the
306
+ SINGLE overridable `--glass-curvature-intensity` knob (0.02 default, a third
307
+ of the old 0.06), and the ellipse tightened to `transparent 38%` so it reads
308
+ as a thin top-edge sheen, not a central wash. */
309
+ --glass-curvature-intensity: 0.02;
310
+ --glass-curvature-overlay: radial-gradient(
311
+ ellipse at 50% -20%,
312
+ hsl(40 30% 96% / var(--glass-curvature-intensity)),
313
+ transparent 38%
314
+ );
315
+ /* The light-arm dark alias kept on the same warm-cream + token recipe so a
316
+ non-`.dark` consumer reading `…-overlay-dark` still resolves a softened
317
+ sheen; the `.dark` block below lowers `--glass-curvature-intensity` so the
318
+ deep-canvas arm is genuinely softer (the prior byte-identical dark arm read
319
+ HARDER over the dark canvas). */
320
+ --glass-curvature-overlay-dark: var(--glass-curvature-overlay);
321
+
322
+ /* Chart palette aliases — speedtest et al. read these for phase tinting.
323
+ Defaults map to viz-basis hues; consumers can override per app. */
324
+ --chart-ping: var(--viz-chebyshev);
325
+ --chart-download: var(--viz-fourier);
326
+ --chart-upload: var(--viz-amber);
327
+ --chart-jitter: var(--viz-legendre);
328
+
329
+ /* O.W6 Lane D — WCAG companion `--chart-{phase}-label` tokens
330
+ (speedtest AC.W6c.T2 — F1.V-04 closure).
331
+
332
+ The canvas-side hues above preserve their saturated brand register
333
+ (correct against the meter dial); the COMPANION tokens darken to
334
+ L≈0.40 so phase-label text on `--background` clears the WCAG 2.1
335
+ AA-body 4.5:1 contrast floor. Mirrors the two-token discipline
336
+ already established by `--meter-{background-color,track-stroke}`:
337
+ one token feeds the canvas/visual, the second feeds the label
338
+ text.
339
+
340
+ Light-mode L≈0.40 in OKLCH preserves the hue rotation while
341
+ dropping luminance enough for body contrast; dark-mode flips to
342
+ L≈0.85 against the dark canvas. Consumers reach these via
343
+ `color: var(--chart-ping-label)` (etc.) on label elements ONLY —
344
+ chart strokes/fills continue to read `--chart-ping`. */
345
+ --chart-ping-label: oklch(0.40 0.18 230);
346
+ --chart-download-label: oklch(0.40 0.20 22);
347
+ --chart-upload-label: oklch(0.40 0.16 55);
348
+ --chart-jitter-label: oklch(0.40 0.20 305);
349
+
350
+ /* O.W6 Lane D — Meter track stroke (speedtest AC.W6c.T3 — F1.V-02
351
+ closure). Promoted from speedtest's consumer-side declaration so
352
+ glass-ui owns the canonical light + dark values. The light-mode
353
+ value reads opaque foreground (composes through canvas
354
+ `globalAlpha` in consumer renderers; e.g., speedtest's `rings.ts`
355
+ `globalAlpha = 0.22` lands the phantom-track at the perceptual
356
+ sweet-spot). The dark-mode companion lives under `.dark` below
357
+ and ALSO reads `var(--foreground)` — the prior speedtest value
358
+ `var(--background)` rendered bg-on-bg invisible at dark mode. */
359
+ --meter-track-stroke: var(--foreground);
360
+
361
+ /* Shadow per tier — complete box-shadow lists for glass surface classes */
362
+ --glass-shadow-wash: var(--shadow-sm), var(--glass-highlight);
363
+ --glass-shadow-quiet: var(--shadow-md), var(--glass-highlight);
364
+ --glass-shadow-resting: var(--shadow-lg), var(--glass-highlight);
365
+ --glass-shadow-floating: var(--shadow-xl),
366
+ 0 0 0 0.5px color-mix(in srgb, var(--shadow-color) 5%, transparent),
367
+ var(--glass-highlight);
368
+ --glass-shadow-overlay: var(--shadow-2xl),
369
+ 0 0 0 0.5px color-mix(in srgb, var(--shadow-color) 8%, transparent),
370
+ var(--glass-highlight);
371
+ --glass-shadow: var(--glass-shadow-quiet);
372
+ --glass-shadow-lg: var(--glass-shadow-floating);
373
+
374
+ /* ─────────────────────────────────────────────────────────────
375
+ AL-W1-α augmented — SPINE 8th tier (HOUSING register)
376
+
377
+ Closes the AK W2 chassis-spine architectural underclaim per
378
+ AL-X5 §4.1. The spine register is a polished SLEEVE, not glass:
379
+ NO backdrop-filter, NO plate opacity, hairline outer stroke,
380
+ interior radial vignette that subtly carries the phase-color
381
+ cascade. Consumed exclusively by `<InstrumentChassis variant="spine">`
382
+ at App-level mount paths (quiet-content routes).
383
+
384
+ The 4 tokens here cover the minimum viable substrate the SLIM
385
+ Y4/Y6/Y7 retention set ratified. The 35 rejected axes (saturate
386
+ band, edge-light per tier, depth-shadow per tier, tier-up macro)
387
+ stay rejected per the conservative-creation mandate.
388
+ ───────────────────────────────────────────────────────────── */
389
+ --glass-spine-opacity: 0;
390
+ --glass-spine-blur: 0px;
391
+ --glass-spine-border: var(--surface-tint-8);
392
+ --glass-spine-vignette: radial-gradient(
393
+ ellipse at 50% 0%,
394
+ color-mix(in oklab, var(--phase-color, var(--surface-tint-8)) 8%, transparent),
395
+ transparent 60%
396
+ );
397
+
398
+ /* ─────────────────────────────────────────────────────────────
399
+ AL-W10 SLIM — UNDER-SHADOW recipe rungs
400
+
401
+ Per AL-X5 §4 + Y7 §3. iOS Liquid Glass surfaces carry a 0.5px
402
+ dark hairline along the bottom edge (reads as under-shadow /
403
+ glass thickness). The substrate `--hairline-under-shadow`
404
+ already publishes one quiet rung; the four-rung ladder here
405
+ names the SLIM retention set (Y4 §3.2 / Y6 §4.3) — `quiet`,
406
+ `default`, `vivid`, `spine` cover the consumer landings without
407
+ multiplying tokens per tier. The 3 hand-rolled literals at
408
+ `instrument-chassis.css:52`, `dock.css:279`, `dock.css:952`
409
+ retire to these.
410
+
411
+ Composes as a NON-INSET box-shadow layer alongside the existing
412
+ `--glass-shadow-*` recipe (the inset under-shadow stays at the
413
+ hand-rolled literal where it's load-bearing on chassis-internal
414
+ surfaces).
415
+ ───────────────────────────────────────────────────────────── */
416
+ --glass-under-shadow-quiet: 0 2px 8px -1px oklch(0 0 0 / 0.04);
417
+ --glass-under-shadow-default: 0 4px 16px -2px oklch(0 0 0 / 0.08);
418
+ --glass-under-shadow-vivid: 0 8px 32px -4px oklch(0 0 0 / 0.12);
419
+ --glass-under-shadow-spine: 0 1px 0 0 oklch(0 0 0 / 0.06);
420
+
421
+ /* Overlay scrim rungs — substrate-aware modal/dialog backdrop tints.
422
+ Three weights cover the deployed range: dialog-scroll (subtle),
423
+ canonical modal (default), drawer/full-cover (strong).
424
+
425
+ AY.W-PRIM-POLISH D3 — the scrim is its OWN identity token, NOT derived
426
+ from `--shadow-color`. A scrim's role is to RECEDE: it must pin to INK in
427
+ BOTH modes. The cartoon-shadow family rides `--shadow-color: var(--foreground)`
428
+ (correct — a shadow re-tints under `.dark` by construction), but a scrim
429
+ that does the same FLOODS the dark room with a cream fog (the old dark
430
+ overlay painted `srgb(0.91… / 0.5)`, a near-white wash that BRIGHTENED the
431
+ page at the modal moment). `--overlay-scrim-ink` is a fixed warm near-black
432
+ (the light-mode `--foreground` value), re-resolved verbatim in `.dark` so
433
+ the scrim recedes in both modes. Clean break, no alias (no-backwards-compat).
434
+ The `--shadow-color` / `--shadow-cartoon-*` family is UNTOUCHED. */
435
+ --overlay-scrim-ink: hsl(24 10% 10%);
436
+ --overlay-scrim: color-mix(in srgb, var(--overlay-scrim-ink) 50%, transparent);
437
+ --overlay-scrim-strong: color-mix(in srgb, var(--overlay-scrim-ink) 80%, transparent);
438
+ --overlay-scrim-subtle: color-mix(in srgb, var(--overlay-scrim-ink) 40%, transparent);
439
+
440
+ }
@@ -0,0 +1,158 @@
1
+ /* tokens/light-dark.css
2
+ §-1a coarse-pointer comfort + §-1b light-dark() color architecture — the @media (pointer:coarse) / @media (min-resolution) / @supports (light-dark()) overrides. After the master token partials (overrides them).
3
+ Carved from the tokens.css cascade root; @import-ed by tokens.css in
4
+ cascade order. Same :root cascade context as its siblings. */
5
+
6
+ /* AX.W51 D18 — the GLOBAL coarse-pointer comfort amplification. The WHOLE library
7
+ — buttons, inputs, badges, toggles, the dock (a specialization that reads
8
+ `--ui-scale`) — grows ~1.5× on touch from this ONE place, the W45 dock-only 1.5×
9
+ lifted to the master scalar so the touch scale is CONSISTENT across the library
10
+ (at HEAD the dock grew but the buttons did not — the three-scale split). The
11
+ WCAG-2.5.5 44px touch floor is enforced HERE too: `--control-floor` lifts to
12
+ `--touch-target`, so every scaled control-height `max(scaled, floor)` clamps at
13
+ ≥ 44px regardless of the scalar (a consumer dialing `--ui-scale` below 1 still
14
+ cannot drop a control under the target). Fine-pointer is byte-identical
15
+ (`--ui-scale` stays 1). `--ui-coarse-scale` is the public default a consumer
16
+ retunes. */
17
+ @media (pointer: coarse) {
18
+ :root {
19
+ --ui-scale: var(--ui-coarse-scale, 1.5);
20
+ --control-floor: var(--touch-target, 2.75rem);
21
+ }
22
+ }
23
+
24
+ /* AV.W7 F2 — high-resolution overlay-blur restore. On a 2dppx+ display the
25
+ richer 24px overlay wash is amortised by the extra device pixels (the blur
26
+ samples a denser backing store), so the design ceiling is restored where it
27
+ is affordable. Standard-density displays keep the 15px budget radius set in
28
+ §-1a `:root`. Token-only override — every overlay surface that reads
29
+ `--glass-blur-overlay-radius` inherits the restored value automatically. */
30
+ @media (min-resolution: 2dppx) {
31
+ :root {
32
+ --glass-blur-overlay-radius: 24px;
33
+ }
34
+ }
35
+
36
+ /* ═══════════════════════════════════════════════
37
+ §-1b LIGHT-DARK() COLOR ARCHITECTURE (AQ.W2 §2)
38
+
39
+ Every PAIRED color token (a token whose `:root` and `.dark` values are
40
+ BOTH a <color> and differ) folds onto one `light-dark(light, dark)`
41
+ declaration, keyed off the element's `color-scheme` (§-1). This is the
42
+ single-source-of-truth collapse of the `.dark` mirror AND the dynamism
43
+ win: an unregistered custom property holding a `light-dark()` expression
44
+ re-resolves under a descendant `color-scheme` override (a `.dark`
45
+ code-block embedded in a light page, or vice-versa).
46
+
47
+ DISCIPLINE (§2b — BINDING): these tokens MUST stay UNREGISTERED (no
48
+ `@property … syntax:"<color>"`). A registered <color> would resolve ONCE
49
+ at the declaring element and inherit the RESOLVED color, freezing the
50
+ descendant re-resolution. glass-ui's only `@property` registrations (§18)
51
+ are non-color (percentage/length), so the discipline holds — W2 adds NO
52
+ color `@property`.
53
+
54
+ The semantic `var()`-aliases (`--background`, `--muted`, `--border`,
55
+ `--secondary`, `--accent`, `--card-foreground`, …) do NOT appear here:
56
+ they point at the SAME source name in both modes and auto-track once the
57
+ `--neutral-*` ladder + `--foreground` resolve via `light-dark()`. Their
58
+ redundant `.dark` re-declarations DELETE below.
59
+
60
+ FALLBACK (§2c): this whole block is `@supports`-gated, so an engine
61
+ WITHOUT `light-dark()` skips it and the retained `.dark` class block (the
62
+ SOLE fallback floor) drives dark exactly as at HEAD. `light-dark()` is the
63
+ enhancement OVER the class — not a parallel alias. Baseline Newly
64
+ Available; the fallback floor is the pre-existing class block (net-zero
65
+ new fallback LOC).
66
+ ═══════════════════════════════════════════════ */
67
+ @supports (color: light-dark(white, black)) {
68
+ :root {
69
+ /* Neutral ladder — the source the var()-aliases track */
70
+ --neutral-0: light-dark(hsl(48 12% 98%), hsl(24 8% 6%));
71
+ --neutral-1: light-dark(hsl(48 10% 95%), hsl(24 6% 11%));
72
+ --neutral-2: light-dark(hsl(48 9% 90%), hsl(24 5% 16%));
73
+ --neutral-3: light-dark(hsl(48 8% 82%), hsl(24 5% 22%));
74
+ --neutral-4: light-dark(hsl(48 7% 70%), hsl(24 5% 34%));
75
+ --neutral-5: light-dark(hsl(48 6% 40%), hsl(48 5% 62%));
76
+ --neutral-6: light-dark(hsl(48 7% 30%), hsl(48 6% 72%));
77
+
78
+ /* Core surfaces + ink */
79
+ --foreground: light-dark(hsl(24 10% 10%), hsl(48 10% 90%));
80
+ --card: light-dark(var(--neutral-0), hsl(24 8% 10%));
81
+ --popover: light-dark(var(--neutral-0), hsl(24 8% 10%));
82
+ --surface-public-data-panel: light-dark(hsl(44 16% 96%), hsl(36 9% 12%));
83
+
84
+ --primary: light-dark(hsl(24 10% 10%), hsl(48 10% 90%));
85
+ --primary-foreground: light-dark(var(--neutral-0), hsl(24 10% 10%));
86
+ /* AX.W44 — dark-arm lift. The stock shadcn dark `hsl(0 62.8% 30.6%)`
87
+ (L≈30.6) was a saturated-PLATE value used AS INK over `--card` by the
88
+ Alert destructive variant — 1.75:1 over card (illegible) / 1.91:1 vs the
89
+ page. Lifted to `hsl(0 80% 60%)`: 4.60:1 as text over `--card` (clears the
90
+ 4.5 body floor) AND 5.03:1 as a plate vs the dark page (clears the 3.0
91
+ graphic floor). The light arm is UNCHANGED (already 4.70:1). Lockstep with
92
+ the `.dark` fallback floor below (§2c). */
93
+ --destructive: light-dark(hsl(0 72% 50%), hsl(0 80% 60%));
94
+ --destructive-foreground: light-dark(var(--neutral-0), hsl(48 10% 90%));
95
+ --ring: light-dark(hsl(24 10% 10%), hsl(48 10% 70%));
96
+ --shadow: light-dark(hsl(24 10% 10%), hsl(0 0% 5%));
97
+
98
+ /* §4 native-control accent — the per-mode arms (dark reads the
99
+ mid-tone ring for checkmark-glyph contrast headroom, NOT the
100
+ near-white dark primary). Joins the light-dark() collapse; still
101
+ re-specified as `accent-color` inside `.dark` per §2b. */
102
+ --accent-color: light-dark(var(--primary), var(--ring));
103
+
104
+ /* Section palette — jewel tones brightened L for dark (oklch pairs;
105
+ AV.W16 TW2 — hue preserved, L evened) */
106
+ --section-color-0: light-dark(oklch(0.552 0.192 359.8), oklch(0.721 0.145 354.0));
107
+ --section-color-1: light-dark(oklch(0.502 0.165 305.9), oklch(0.733 0.113 308.2));
108
+ --section-color-2: light-dark(oklch(0.484 0.163 265.5), oklch(0.718 0.107 268.4));
109
+ --section-color-3: light-dark(oklch(0.542 0.089 222.8), oklch(0.767 0.091 219.9));
110
+ --section-color-4: light-dark(oklch(0.551 0.088 171.1), oklch(0.776 0.105 172.6));
111
+ --section-color-5: light-dark(oklch(0.623 0.124 69.6), oklch(0.813 0.109 78.2));
112
+ --section-color-6: light-dark(oklch(0.579 0.201 30.4), oklch(0.693 0.151 28.1));
113
+ --section-color-7: light-dark(oklch(0.532 0.180 317.5), oklch(0.739 0.134 318.1));
114
+ --section-color-8: light-dark(oklch(0.520 0.176 8.4), oklch(0.709 0.142 2.3));
115
+ --section-color-9: light-dark(oklch(0.492 0.038 239.6), oklch(0.763 0.032 239.0));
116
+ --section-color-10: light-dark(oklch(0.556 0.103 128.8), oklch(0.794 0.116 127.9));
117
+ --section-color-11: light-dark(oklch(0.601 0.092 208.0), oklch(0.805 0.095 206.7));
118
+ --section-color-12: light-dark(oklch(0.513 0.163 291.9), oklch(0.719 0.115 295.6));
119
+
120
+ --accent-pink: light-dark(oklch(0.613 0.197 353.8), oklch(0.683 0.131 354.7));
121
+ --section-heading: light-dark(oklch(0.545 0.189 352.8), oklch(0.711 0.123 349.3));
122
+ --accent-red: light-dark(oklch(0.574 0.216 27.5), oklch(0.644 0.165 22.9));
123
+
124
+ /* Viz basis (amber/green stay var()-aliases → auto-track) */
125
+ --viz-fourier: light-dark(oklch(0.579 0.201 30.4), oklch(0.693 0.151 28.1));
126
+ --viz-chebyshev: light-dark(oklch(0.484 0.163 265.5), oklch(0.718 0.107 268.4));
127
+ --viz-legendre: light-dark(oklch(0.532 0.180 317.5), oklch(0.739 0.134 318.1));
128
+
129
+ /* WCAG companion chart labels */
130
+ --chart-ping-label: light-dark(oklch(0.40 0.18 230), oklch(0.85 0.12 230));
131
+ --chart-download-label: light-dark(oklch(0.40 0.20 22), oklch(0.85 0.14 22));
132
+ --chart-upload-label: light-dark(oklch(0.40 0.16 55), oklch(0.85 0.12 55));
133
+ --chart-jitter-label: light-dark(oklch(0.40 0.20 305), oklch(0.85 0.14 305));
134
+
135
+ /* Semantic UI accents */
136
+ --tier-featured: light-dark(oklch(0.841 0.173 84.2), oklch(0.867 0.165 88.7));
137
+ --tier-saved: light-dark(oklch(0.676 0.176 252.3), oklch(0.748 0.135 250.1));
138
+ --like: light-dark(oklch(0.633 0.200 24.9), oklch(0.690 0.162 22.2));
139
+ --success: light-dark(oklch(0.720 0.192 149.5), oklch(0.805 0.186 151.6));
140
+ --warning: light-dark(oklch(0.770 0.165 70.6), oklch(0.809 0.150 76.6));
141
+ --info: light-dark(oklch(0.626 0.186 259.6), oklch(0.713 0.138 259.5));
142
+ --delete: light-dark(oklch(0.597 0.198 25.5), oklch(0.644 0.170 23.1));
143
+
144
+ /* Semantic foregrounds (warning-foreground is identical both modes
145
+ → stays a single light-mode declaration, no light-dark() needed) */
146
+ --success-foreground: light-dark(var(--neutral-0), hsl(48 10% 96%));
147
+ --info-foreground: light-dark(var(--neutral-0), hsl(48 10% 96%));
148
+
149
+ /* Cartoon-shadow color primitives (§2d — plain colors, convert) */
150
+ --shadow-cartoon-color: light-dark(rgb(0 0 0 / 0.12), rgb(255 255 255 / 0.07));
151
+ --shadow-cartoon-color-soft: light-dark(rgb(0 0 0 / 0.06), rgb(255 255 255 / 0.03));
152
+
153
+ /* Gold family */
154
+ --gold: light-dark(oklch(0.751 0.147 84.2), oklch(0.784 0.143 86.0));
155
+ --gold-light: light-dark(oklch(0.890 0.183 96.1), oklch(0.898 0.182 97.4));
156
+ --gold-dark: light-dark(oklch(0.599 0.132 64.2), oklch(0.678 0.150 63.8));
157
+ }
158
+ }