@mkbabb/glass-ui 3.12.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (436) hide show
  1. package/dist/CardAction-XH4YBVEK.js +158 -0
  2. package/dist/{CommandShortcut-CefCj5mt.js → CommandShortcut-DdtWXxOK.js} +58 -53
  3. package/dist/{ContextMenuSubContent-Bhg4f5jX.js → ContextMenuSubContent-B0Vs6atR.js} +4 -4
  4. package/dist/{DataTable-CUHMukiQ.js → DataTable-C464Zbqd.js} +99 -97
  5. package/dist/DialogContent-DDE6pQBU.js +103 -0
  6. package/dist/{DialogFooter-Gprw8H_A.js → DialogFooter-8eZbdmPc.js} +2 -2
  7. package/dist/FadingScroll-DwNnvKMs.js +76 -0
  8. package/dist/{HoverPopover-2LOIW34a.js → HoverPopover-Dpzwvc4t.js} +1 -1
  9. package/dist/IconChip-BDw1j5mu.js +54 -0
  10. package/dist/{IconTooltip-Cus0fvK0.js → IconTooltip-DSjasZIt.js} +1 -1
  11. package/dist/MetricBadge-BpC0R_Ec.js +79 -0
  12. package/dist/{Notification-DLMhblXR.js → Notification-DKjKsQq8.js} +10 -10
  13. package/dist/{NumberFieldContent-BbLOh8RU.js → NumberFieldContent-1VtwDSgf.js} +3 -3
  14. package/dist/PopoverContent-BTorlp--.js +127 -0
  15. package/dist/{Progress-iEuD9pxG.js → Progress-hAT4gqGH.js} +97 -77
  16. package/dist/{ScrollingText-BPP84wKo.js → ScrollingText-CUVFTWk2.js} +2 -2
  17. package/dist/{SelectScrollDownButton-T32cVFeM.js → SelectScrollDownButton-C1jb3b3K.js} +24 -8
  18. package/dist/{Switch-Ch-k3Rv-.js → Switch-Dr--uLGH.js} +2 -2
  19. package/dist/{Toaster-1rYWrmAm.js → Toaster-Bm_HQSpc.js} +55 -52
  20. package/dist/{ToggleGroupItem-COu_4IW4.js → ToggleGroupItem-Dzk9hWsF.js} +18 -22
  21. package/dist/animated-digit.js +3 -3
  22. package/dist/api/index.d.ts +10 -4
  23. package/dist/api.js +1 -1
  24. package/dist/aurora.js +113 -98
  25. package/dist/{badge-CaoFJzRb.js → badge-UILT_3pZ.js} +1 -1
  26. package/dist/badge.js +1 -1
  27. package/dist/{button-DN39cGqL.js → button-BNDWhAZb.js} +12 -12
  28. package/dist/button.js +1 -1
  29. package/dist/card.js +1 -1
  30. package/dist/carousel.d.ts +1 -1
  31. package/dist/carousel.js +101 -145
  32. package/dist/{check-BBKKKSTf.js → check-njhk-vfu.js} +1 -1
  33. package/dist/{chevron-down-BSkTP2aL.js → chevron-down-DKkxb4VV.js} +1 -1
  34. package/dist/{chevron-right-sDM0Yvrf.js → chevron-right-CPXbqQQz.js} +1 -1
  35. package/dist/{chevron-up-CCOD_FTz.js → chevron-up-n_24SqI-.js} +1 -1
  36. package/dist/coalesceMetric-5qIeZnTx.js +13 -0
  37. package/dist/collapsible.js +1 -1
  38. package/dist/{color-C5ls_QF7.js → color-DweYl7pE.js} +9 -7
  39. package/dist/color-swatch.d.ts +1 -0
  40. package/dist/color-swatch.js +47 -0
  41. package/dist/color.js +1 -1
  42. package/dist/command.js +1 -1
  43. package/dist/components/custom/animated-digit/AnimatedDigit.vue.d.ts +8 -0
  44. package/dist/components/custom/aurora/constants/presets.d.ts +16 -45
  45. package/dist/components/custom/aurora/constants/renderMode.d.ts +2 -0
  46. package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +1 -1
  47. package/dist/components/custom/aurora/constants/shaders/vangogh-medium.glsl.d.ts +1 -0
  48. package/dist/components/custom/color-swatch/ColorSwatch.vue.d.ts +22 -0
  49. package/dist/components/custom/color-swatch/index.d.ts +1 -0
  50. package/dist/components/custom/configurator/Configurator.vue.d.ts +19 -8
  51. package/dist/components/custom/configurator/ConfiguratorRow.vue.d.ts +16 -0
  52. package/dist/components/custom/constellation/Constellation.vue.d.ts +23 -143
  53. package/dist/components/custom/constellation/composables/createConstellationField.d.ts +41 -0
  54. package/dist/components/custom/constellation/composables/useConstellation.d.ts +26 -0
  55. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +35 -0
  56. package/dist/components/custom/constellation/constants.d.ts +61 -0
  57. package/dist/components/custom/constellation/constellationDraw.d.ts +30 -0
  58. package/dist/components/custom/constellation/constellationField.d.ts +3 -403
  59. package/dist/components/custom/constellation/constellationInteraction.d.ts +132 -0
  60. package/dist/components/custom/constellation/constellationTypes.d.ts +369 -0
  61. package/dist/components/custom/constellation/index.d.ts +5 -2
  62. package/dist/components/custom/controls/DarkModeToggle.vue.d.ts +11 -0
  63. package/dist/components/custom/dock/DockRail.vue.d.ts +89 -0
  64. package/dist/components/custom/dock/DockSection.vue.d.ts +69 -0
  65. package/dist/components/custom/dock/DockSeparator.vue.d.ts +49 -1
  66. package/dist/components/custom/dock/DockTabButton.vue.d.ts +5 -6
  67. package/dist/components/custom/dock/GlassDock.vue.d.ts +5 -118
  68. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +36 -0
  69. package/dist/components/custom/dock/composables/index.d.ts +1 -0
  70. package/dist/components/custom/dock/composables/useDockClickIntegrity.d.ts +23 -0
  71. package/dist/components/custom/dock/composables/useDockMorphWindow.d.ts +15 -0
  72. package/dist/components/custom/dock/composables/useDockOrientationMorph.d.ts +44 -0
  73. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +165 -0
  74. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +44 -0
  75. package/dist/components/custom/dock/constants.d.ts +83 -0
  76. package/dist/components/custom/dock/index.d.ts +5 -0
  77. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +15 -37
  78. package/dist/components/custom/fading-scroll/FadingScroll.vue.d.ts +25 -0
  79. package/dist/components/custom/fading-scroll/composables/useFadingScroll.d.ts +31 -0
  80. package/dist/components/custom/fading-scroll/constants.d.ts +19 -0
  81. package/dist/components/custom/fading-scroll/index.d.ts +2 -0
  82. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +7 -0
  83. package/dist/components/custom/fourier-field/index.d.ts +1 -1
  84. package/dist/components/custom/fourier-field/math.d.ts +34 -0
  85. package/dist/components/custom/fourier-field/presets.d.ts +54 -0
  86. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +8 -0
  87. package/dist/components/custom/goo-blob/composables/buildMetaballProgram.d.ts +18 -0
  88. package/dist/components/custom/goo-blob/composables/uploadBlobUniforms.d.ts +41 -0
  89. package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +4 -3
  90. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +21 -8
  91. package/dist/components/custom/goo-blob/constants.d.ts +57 -0
  92. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -0
  93. package/dist/components/custom/handmark/brush.d.ts +33 -6
  94. package/dist/components/custom/handmark/{useHandMark.d.ts → composables/useHandMark.d.ts} +6 -4
  95. package/dist/components/custom/handmark/constants.d.ts +39 -0
  96. package/dist/components/custom/handmark/geometry.d.ts +14 -12
  97. package/dist/components/custom/handmark/index.d.ts +8 -2
  98. package/dist/components/custom/handmark/types.d.ts +9 -0
  99. package/dist/components/custom/icon-chip/IconChip.vue.d.ts +4 -0
  100. package/dist/components/custom/icon-chip/index.d.ts +2 -0
  101. package/dist/components/custom/icon-chip/types.d.ts +72 -0
  102. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +17 -4
  103. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +37 -0
  104. package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +6 -0
  105. package/dist/components/custom/labeled-field/LabeledSlider.vue.d.ts +6 -0
  106. package/dist/components/custom/labeled-field/LabeledSwitch.vue.d.ts +6 -0
  107. package/dist/components/custom/metric-badge/MetricBadge.vue.d.ts +11 -18
  108. package/dist/components/custom/metric-badge/index.d.ts +1 -0
  109. package/dist/components/custom/metric-cell/MetricCell.vue.d.ts +15 -4
  110. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +6 -4
  111. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +39 -0
  112. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  113. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +20 -25
  114. package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +30 -21
  115. package/dist/components/custom/tabs/constants.d.ts +18 -0
  116. package/dist/components/custom/tabs/index.d.ts +1 -1
  117. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +14 -0
  118. package/dist/components/ui/_shared/index.d.ts +2 -0
  119. package/dist/components/ui/_shared/menuItemVariants.d.ts +19 -0
  120. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +41 -0
  121. package/dist/components/ui/card/Card.vue.d.ts +16 -4
  122. package/dist/components/ui/carousel/index.d.ts +0 -1
  123. package/dist/components/ui/command/Command.vue.d.ts +3 -0
  124. package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -3
  125. package/dist/components/ui/drawer/Drawer.vue.d.ts +1 -0
  126. package/dist/components/ui/drawer/DrawerContent.vue.d.ts +5 -0
  127. package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +2 -2
  128. package/dist/components/ui/index.d.ts +0 -1
  129. package/dist/components/ui/metric-pill/MetricPill.vue.d.ts +6 -3
  130. package/dist/components/ui/popover/PopoverContent.vue.d.ts +3 -0
  131. package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +14 -3
  132. package/dist/components/ui/select/SelectTrigger.vue.d.ts +27 -4
  133. package/dist/components/ui/sheet/SheetContent.vue.d.ts +6 -0
  134. package/dist/components/ui/skeleton/Skeleton.vue.d.ts +3 -0
  135. package/dist/components/ui/slider/index.d.ts +22 -19
  136. package/dist/components/ui/tabs/TabsIndicator.vue.d.ts +4 -1
  137. package/dist/components/ui/toast/use-toast.d.ts +2 -2
  138. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  139. package/dist/components/ui/toggle/index.d.ts +1 -1
  140. package/dist/components/ui/toggle-group/ToggleGroup.vue.d.ts +1 -7
  141. package/dist/components/ui/toggle-group/ToggleGroupItem.vue.d.ts +1 -3
  142. package/dist/components/ui/toggle-group/toggleGroupContext.d.ts +0 -13
  143. package/dist/composables/color/index.d.ts +12 -0
  144. package/dist/composables/dark/useGlobalDark.d.ts +14 -12
  145. package/dist/composables/glass/index.d.ts +0 -1
  146. package/dist/composables/glass/useGlassBackdropLuminance.d.ts +59 -0
  147. package/dist/composables/glass/useSpecularTracking.d.ts +12 -3
  148. package/dist/composables/motion/core/index.d.ts +1 -1
  149. package/dist/composables/motion/curves.d.ts +48 -0
  150. package/dist/composables/motion/index.d.ts +2 -0
  151. package/dist/composables/motion/springPresets.d.ts +33 -0
  152. package/dist/composables/motion/suite.d.ts +2 -0
  153. package/dist/composables/motion/useLiquidFlex.d.ts +85 -0
  154. package/dist/composables/motion/useSpringMount.d.ts +1 -1
  155. package/dist/composables/motion/useViewTransition.d.ts +36 -1
  156. package/dist/configurator.js +1 -1
  157. package/dist/confirm-dialog.js +3 -3
  158. package/dist/constellation.js +373 -261
  159. package/dist/context-menu.js +2 -2
  160. package/dist/controls.js +48 -14
  161. package/dist/dark.js +1 -1
  162. package/dist/data-table.js +1 -1
  163. package/dist/dialog.js +2 -2
  164. package/dist/dock.js +901 -372
  165. package/dist/dockContext-Bu1Avy-a.js +17 -0
  166. package/dist/dom.js +5 -5
  167. package/dist/{dropdown-menu-D77jX6Df.js → dropdown-menu-BJ7E9js_.js} +11 -8
  168. package/dist/dropdown-menu.js +1 -1
  169. package/dist/expandable-container.js +44 -81
  170. package/dist/fading-scroll.d.ts +1 -0
  171. package/dist/fading-scroll.js +2 -0
  172. package/dist/forms.js +5 -5
  173. package/dist/fourier-field.js +140 -104
  174. package/dist/fourier-math.js +2 -2
  175. package/dist/glass-panel.js +90 -21
  176. package/dist/glass-ui.css +1 -1
  177. package/dist/glass-ui.js +230 -236
  178. package/dist/goo-blob.js +264 -228
  179. package/dist/handmark.js +203 -159
  180. package/dist/header-ribbon.js +1 -1
  181. package/dist/hover-card.js +1 -1
  182. package/dist/hover-popover.js +1 -1
  183. package/dist/icon-chip.d.ts +1 -0
  184. package/dist/icon-chip.js +2 -0
  185. package/dist/icon-tooltip.js +1 -1
  186. package/dist/index.d.ts +3 -5
  187. package/dist/instrument-chassis.js +1 -1
  188. package/dist/keyboard.js +1 -1
  189. package/dist/label.js +1 -1
  190. package/dist/labeled-field.js +28 -18
  191. package/dist/{math-DTpRVC0e.js → math-DeuJwLFx.js} +26 -2
  192. package/dist/{menuItemVariants-CCoBNkU5.js → menuItemVariants-DWRQXBxJ.js} +10 -4
  193. package/dist/metric-badge.js +1 -1
  194. package/dist/metric-cell.js +29 -22
  195. package/dist/metric-stack.js +35 -34
  196. package/dist/{minimize-2-lcXOuc6V.js → minimize-2-BV31Ob_h.js} +1 -1
  197. package/dist/motion-core.js +32 -136
  198. package/dist/motion-curves.d.ts +1 -0
  199. package/dist/motion-curves.js +130 -0
  200. package/dist/motion.js +38 -37
  201. package/dist/notification.js +1 -1
  202. package/dist/number-field.js +1 -1
  203. package/dist/pager-dots.d.ts +1 -0
  204. package/dist/pager-dots.js +91 -0
  205. package/dist/paper-backdrop.js +1 -1
  206. package/dist/popover.js +1 -1
  207. package/dist/progress.js +1 -1
  208. package/dist/pulse.js +1 -1
  209. package/dist/reactive.js +2 -2
  210. package/dist/scrolling-text.js +1 -1
  211. package/dist/{search-nbkvr2dC.js → search-BSGrf2Sk.js} +1 -1
  212. package/dist/search.js +10 -10
  213. package/dist/select.js +3 -3
  214. package/dist/separator.js +1 -1
  215. package/dist/sheet-CquRYOAw.js +218 -0
  216. package/dist/sheet.js +1 -1
  217. package/dist/{slider-ClgpP7EB.js → slider-DQ95MET2.js} +8 -8
  218. package/dist/slider.js +1 -1
  219. package/dist/sortable-list.js +3 -3
  220. package/dist/springPresets-WXaLbu8u.js +40 -0
  221. package/dist/stacked-icons.js +6 -6
  222. package/dist/styles/animations.css +25 -125
  223. package/dist/styles/cards.css +55 -0
  224. package/dist/styles/components.css +4 -1
  225. package/dist/styles/configurator.css +77 -0
  226. package/dist/styles/dock/density.css +19 -0
  227. package/dist/styles/dock/layer-group.css +83 -25
  228. package/dist/styles/dock/layers.css +23 -1
  229. package/dist/styles/dock/morph-bridge.css +123 -0
  230. package/dist/styles/dock/morph.css +175 -45
  231. package/dist/styles/dock/overflow.css +66 -1
  232. package/dist/styles/dock/rail-extend.css +397 -0
  233. package/dist/styles/dock/section.css +59 -0
  234. package/dist/styles/dock/shell.css +97 -110
  235. package/dist/styles/dock-controls/dark-mode-toggle.css +109 -0
  236. package/dist/styles/dock-controls/icon-button.css +143 -0
  237. package/dist/styles/dock-controls/tab-button.css +143 -0
  238. package/dist/styles/dock-controls/touch-floor.css +94 -0
  239. package/dist/styles/dock-controls/triggers.css +135 -0
  240. package/dist/styles/dock-controls.css +30 -595
  241. package/dist/styles/dock.css +8 -3
  242. package/dist/styles/drawer.css +48 -0
  243. package/dist/styles/feedback-tone.css +104 -0
  244. package/dist/styles/floating-panel.css +17 -0
  245. package/dist/styles/glass/a11y-fallback.css +245 -0
  246. package/dist/styles/glass/ladder.css +383 -0
  247. package/dist/styles/glass/material.css +238 -0
  248. package/dist/styles/glass/progress-rail.css +78 -0
  249. package/dist/styles/glass/squircle.css +66 -0
  250. package/dist/styles/glass/surface-axis.css +113 -0
  251. package/dist/styles/glass/surfaces.css +382 -0
  252. package/dist/styles/glass-refract.css +2 -0
  253. package/dist/styles/glass.css +34 -1188
  254. package/dist/styles/hover-popover.css +2 -0
  255. package/dist/styles/icon-chip.css +149 -0
  256. package/dist/styles/index.css +94 -18
  257. package/dist/styles/instrument-chassis.css +46 -0
  258. package/dist/styles/menu.css +127 -0
  259. package/dist/styles/paper.css +2 -68
  260. package/dist/styles/segmented-tabs.css +346 -0
  261. package/dist/styles/select.css +50 -0
  262. package/dist/styles/theme/bridges.css +347 -0
  263. package/dist/styles/theme/dark.css +7 -0
  264. package/dist/styles/theme/literals.css +94 -0
  265. package/dist/styles/theme/radius.css +95 -0
  266. package/dist/styles/theme.css +26 -529
  267. package/dist/styles/tokens/color-radius.css +287 -0
  268. package/dist/styles/tokens/dark-arm.css +308 -0
  269. package/dist/styles/tokens/glass.css +500 -0
  270. package/dist/styles/tokens/light-dark.css +187 -0
  271. package/dist/styles/tokens/offsets-sizing.css +562 -0
  272. package/dist/styles/tokens/property-regs.css +162 -0
  273. package/dist/styles/tokens/scale-paper.css +409 -0
  274. package/dist/styles/tokens/scheme-motion.css +352 -0
  275. package/dist/styles/tokens/shadow.css +166 -0
  276. package/dist/styles/tokens.css +22 -2360
  277. package/dist/styles/transitions.css +7 -7
  278. package/dist/styles/typography/scale.css +153 -0
  279. package/dist/styles/typography/semantic.css +220 -0
  280. package/dist/styles/typography/utilities.css +159 -0
  281. package/dist/styles/typography.css +23 -453
  282. package/dist/styles/utilities/a11y-overrides.css +169 -0
  283. package/dist/styles/utilities/animate.css +26 -0
  284. package/dist/styles/utilities/base.css +541 -0
  285. package/dist/styles/utilities/btn.css +218 -0
  286. package/dist/styles/utilities/components.css +317 -0
  287. package/dist/styles/utilities.css +19 -1318
  288. package/dist/styles/view-transition.css +4 -52
  289. package/dist/switch.js +1 -1
  290. package/dist/tabs.js +161 -181
  291. package/dist/timeline.js +2 -2
  292. package/dist/toast.js +1 -1
  293. package/dist/toggle-chip.js +3 -1
  294. package/dist/toggle-group.js +1 -1
  295. package/dist/tooltip.js +1 -1
  296. package/dist/typewriter.js +1 -1
  297. package/dist/{useAnimatedNumber-Bcpy5Etf.js → useAnimatedNumber-C_3wZLx4.js} +1 -1
  298. package/dist/useConfiguratorState-kiIlun8I.js +303 -0
  299. package/dist/useLiquidFlex-C12hXwOZ.js +30 -0
  300. package/dist/useRAFLoop-CdwJ7284.js +109 -0
  301. package/dist/{useScrollProgress-CffFGLa5.js → useScrollProgress-D7bYU2RK.js} +1 -1
  302. package/dist/useSpecularTracking-Bo5su68i.js +32 -0
  303. package/dist/useSpringMount-CvopqiFr.js +108 -0
  304. package/dist/useSurfaceAxis-CMnF2zHb.js +7 -0
  305. package/dist/{useTouchGate-WFyJYsth.js → useTouchGate-28Tk2-t2.js} +1 -1
  306. package/dist/useViewTransition-COsPjQVZ.js +47 -0
  307. package/dist/utils/coalesceMetric.d.ts +29 -0
  308. package/dist/utils/index.d.ts +1 -0
  309. package/dist/vReveal-D9k0jADx.js +10 -0
  310. package/dist/watercolor-dot.js +22 -13
  311. package/dist/{x-Dfsegz9Y.js → x-BUwTKe50.js} +1 -1
  312. package/package.json +134 -50
  313. package/src/styles/animations.css +25 -125
  314. package/src/styles/cards.css +53 -0
  315. package/src/styles/configurator.css +77 -0
  316. package/src/styles/dock/density.css +19 -0
  317. package/src/styles/dock/layer-group.css +83 -25
  318. package/src/styles/dock/layers.css +23 -1
  319. package/src/styles/dock/morph-bridge.css +123 -0
  320. package/src/styles/dock/morph.css +175 -45
  321. package/src/styles/dock/overflow.css +66 -1
  322. package/src/styles/dock/rail-extend.css +397 -0
  323. package/src/styles/dock/section.css +59 -0
  324. package/src/styles/dock/shell.css +97 -110
  325. package/src/styles/dock-controls/dark-mode-toggle.css +109 -0
  326. package/src/styles/dock-controls/icon-button.css +143 -0
  327. package/src/styles/dock-controls/tab-button.css +143 -0
  328. package/src/styles/dock-controls/touch-floor.css +94 -0
  329. package/src/styles/dock-controls/triggers.css +135 -0
  330. package/src/styles/dock-controls.css +30 -595
  331. package/src/styles/dock.css +8 -3
  332. package/src/styles/drawer.css +42 -0
  333. package/src/styles/feedback-tone.css +104 -0
  334. package/src/styles/floating-panel.css +15 -0
  335. package/src/styles/glass/a11y-fallback.css +245 -0
  336. package/src/styles/glass/ladder.css +383 -0
  337. package/src/styles/glass/material.css +238 -0
  338. package/src/styles/glass/progress-rail.css +78 -0
  339. package/src/styles/glass/squircle.css +66 -0
  340. package/src/styles/glass/surface-axis.css +113 -0
  341. package/src/styles/glass/surfaces.css +382 -0
  342. package/src/styles/glass.css +34 -1188
  343. package/src/styles/icon-chip.css +149 -0
  344. package/src/styles/index.css +93 -17
  345. package/src/styles/instrument-chassis.css +42 -0
  346. package/src/styles/menu.css +127 -0
  347. package/src/styles/paper.css +2 -68
  348. package/src/styles/segmented-tabs.css +340 -0
  349. package/src/styles/select.css +50 -0
  350. package/src/styles/theme/bridges.css +347 -0
  351. package/src/styles/theme/dark.css +7 -0
  352. package/src/styles/theme/literals.css +94 -0
  353. package/src/styles/theme/radius.css +95 -0
  354. package/src/styles/theme.css +26 -529
  355. package/src/styles/tokens/color-radius.css +287 -0
  356. package/src/styles/tokens/dark-arm.css +308 -0
  357. package/src/styles/tokens/glass.css +500 -0
  358. package/src/styles/tokens/light-dark.css +187 -0
  359. package/src/styles/tokens/offsets-sizing.css +562 -0
  360. package/src/styles/tokens/property-regs.css +162 -0
  361. package/src/styles/tokens/scale-paper.css +409 -0
  362. package/src/styles/tokens/scheme-motion.css +352 -0
  363. package/src/styles/tokens/shadow.css +166 -0
  364. package/src/styles/tokens.css +22 -2360
  365. package/src/styles/transitions.css +7 -7
  366. package/src/styles/typography/scale.css +153 -0
  367. package/src/styles/typography/semantic.css +220 -0
  368. package/src/styles/typography/utilities.css +159 -0
  369. package/src/styles/typography.css +23 -453
  370. package/src/styles/utilities/a11y-overrides.css +169 -0
  371. package/src/styles/utilities/animate.css +26 -0
  372. package/src/styles/utilities/base.css +541 -0
  373. package/src/styles/utilities/btn.css +218 -0
  374. package/src/styles/utilities/components.css +317 -0
  375. package/src/styles/utilities.css +19 -1318
  376. package/src/styles/view-transition.css +4 -52
  377. package/dist/CardAction-DuArVky-.js +0 -157
  378. package/dist/DeckProgress-Dmk4_AKN.js +0 -23
  379. package/dist/DialogContent-BRkT1cjP.js +0 -100
  380. package/dist/InstrumentRail-CUJ05YVG.js +0 -44
  381. package/dist/MetricBadge-BZVWIxNy.js +0 -80
  382. package/dist/PopoverContent-BId6ggf_.js +0 -121
  383. package/dist/TabsList-B8CVOQPC.js +0 -101
  384. package/dist/components/custom/deck-progress/DeckProgress.vue.d.ts +0 -27
  385. package/dist/components/custom/deck-progress/index.d.ts +0 -2
  386. package/dist/components/custom/dialog-native/GlassDialogNative.vue.d.ts +0 -57
  387. package/dist/components/custom/dialog-native/index.d.ts +0 -1
  388. package/dist/components/custom/instrument-rail/InstrumentRail.vue.d.ts +0 -91
  389. package/dist/components/custom/instrument-rail/index.d.ts +0 -2
  390. package/dist/components/ui/carousel/CarouselDots.vue.d.ts +0 -4
  391. package/dist/composables/motion/useRouteTransition.d.ts +0 -42
  392. package/dist/deck-progress.d.ts +0 -1
  393. package/dist/deck-progress.js +0 -2
  394. package/dist/dockContext-BKeIMmNk.js +0 -9
  395. package/dist/instrument-rail.d.ts +0 -1
  396. package/dist/instrument-rail.js +0 -2
  397. package/dist/sheet-VZEtNFvO.js +0 -214
  398. package/dist/styles/instrument-rail.css +0 -127
  399. package/dist/useConfiguratorState-DxAqksK6.js +0 -287
  400. package/dist/useGlassRenderer-D7YGOYiM.js +0 -69
  401. package/dist/useSpecularTracking-BVRZsRHA.js +0 -26
  402. package/dist/useSpringMount-BJSHcLl3.js +0 -113
  403. package/dist/useViewTransition-DaN5Zrox.js +0 -21
  404. package/dist/vReveal-zUIQk-rJ.js +0 -53
  405. package/src/styles/instrument-rail.css +0 -127
  406. /package/dist/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-C_s6fG7r.js} +0 -0
  407. /package/dist/{ContextMenuContent-DDa0v27s.js → ContextMenuContent-ON3x7cuk.js} +0 -0
  408. /package/dist/{HoverCardContent-B6CcQ8He.js → HoverCardContent-DkMaQzH5.js} +0 -0
  409. /package/dist/{Input-xuDwALQR.js → Input-DVG_J0ne.js} +0 -0
  410. /package/dist/{InstrumentChassis-C2f6cBaQ.js → InstrumentChassis-UUJX0-mW.js} +0 -0
  411. /package/dist/{Label-zRfbQdCn.js → Label-Ck9SWEKM.js} +0 -0
  412. /package/dist/{ModalOverlay-B1GkAjNb.js → ModalOverlay-CkPRRgl_.js} +0 -0
  413. /package/dist/{PaperBackdrop-CqwjnfLv.js → PaperBackdrop-nBKe0vkB.js} +0 -0
  414. /package/dist/{SelectGroup-BFiod7X2.js → SelectGroup-Dcczq44n.js} +0 -0
  415. /package/dist/{SelectSeparator-C4Ql0gzV.js → SelectSeparator-DK2y1Bun.js} +0 -0
  416. /package/dist/{Separator-D7sD7RKj.js → Separator-BArl4OaB.js} +0 -0
  417. /package/dist/{TooltipProvider-CmZzCuaG.js → TooltipProvider-B3MkB_8P.js} +0 -0
  418. /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-CBt_VvXa.js} +0 -0
  419. /package/dist/{compile-BOXjLUxu.js → compile-EXXzEr1q.js} +0 -0
  420. /package/dist/{constants-yKeKnE84.js → constants-BPOqYJAm.js} +0 -0
  421. /package/dist/{createContext-B44Sah_H.js → createContext-B2RaZ-b8.js} +0 -0
  422. /package/dist/{createLucideIcon-B6uNAU9G.js → createLucideIcon-DydS2qgk.js} +0 -0
  423. /package/dist/{presets-BP_ALM0m.js → presets-BW2b-fr1.js} +0 -0
  424. /package/dist/{prng-D27-B3tK.js → prng-Cg22zv8g.js} +0 -0
  425. /package/dist/{supportsCssTimeline-C5oe0lnD.js → supportsCssTimeline-BWenxvHU.js} +0 -0
  426. /package/dist/{useGlobalDark-CAhOXNLO.js → useGlobalDark-C28t0VWJ.js} +0 -0
  427. /package/dist/{useIntersectionPause-Cck5Uxk8.js → useIntersectionPause-Bj4sPkMh.js} +0 -0
  428. /package/dist/{useInterval-Dsmqwi03.js → useInterval-CNdua40W.js} +0 -0
  429. /package/dist/{useKeyboardShortcuts-CyIYrndH.js → useKeyboardShortcuts-BXWXOZ-9.js} +0 -0
  430. /package/dist/{useResizeObserver-CWCbk5Px.js → useResizeObserver-V6nq5gJb.js} +0 -0
  431. /package/dist/{useResolveTokenColor-r9pnNjqK.js → useResolveTokenColor-NUG2zYAW.js} +0 -0
  432. /package/dist/{useSortable-C8ReQ50P.js → useSortable-BVqlJRBR.js} +0 -0
  433. /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-NmBM5V_4.js} +0 -0
  434. /package/dist/{useTimer-3xqf_54b.js → useTimer-B_PAasDL.js} +0 -0
  435. /package/dist/{useUserInvalidAria-DoJKMZ3s.js → useUserInvalidAria-CDfJuakL.js} +0 -0
  436. /package/dist/{useViewportReady-RIr5Wgkh.js → useViewportReady-CvBcCYDf.js} +0 -0
@@ -58,6 +58,48 @@
58
58
  box-shadow: var(--glass-material-rim), var(--glass-shadow-overlay);
59
59
  }
60
60
 
61
+ /*
62
+ * BA.W-SURFACE-AXIS — the shared {glass·veil·opaque} surface decoration ON TOP of
63
+ * the `.glass-drawer` recipe. `.glass-drawer` is UNLAYERED (this file), so the
64
+ * `@layer components` `[data-surface]` seam in glass/surface-axis.css would LOSE
65
+ * to it (an unlayered rule always beats a layered one — the AZ.W-DOCK-RAIL
66
+ * cascade-win trap). The fix is the SAME-LAYER carve: these `.glass-drawer[data-
67
+ * surface=…]` rules sit unlayered alongside `.glass-drawer` and win by specificity
68
+ * (attr+class > class), composing the SAME veil/opaque deltas the shared seam
69
+ * declares — NO `glass-drawer`-local recipe fork (they read the same `--veil-*` /
70
+ * `--glass-level` machinery). The `glass` rung is the identity (no rule).
71
+ */
72
+ .glass-drawer[data-surface="veil"] {
73
+ --veil-bg: color-mix(
74
+ in oklab,
75
+ var(--glass-bg-quiet),
76
+ var(--glass-tint-source) var(--glass-tint-strength)
77
+ );
78
+ --veil-blur: var(--glass-blur-quiet);
79
+ background: var(--veil-bg);
80
+ backdrop-filter: var(--veil-blur);
81
+ -webkit-backdrop-filter: var(--veil-blur);
82
+ border: none;
83
+ box-shadow: none;
84
+ }
85
+
86
+ .glass-drawer[data-surface="opaque"] {
87
+ /* The solid-card escape. The `.glass-drawer` background reads the `:root`-baked
88
+ `--glass-bg-overlay` token (which substitutes `--glass-level` at :root), so a
89
+ per-element `--glass-level: 0` cannot re-resolve it — the substitution-vs-
90
+ inheritance trap (mirrors surface-axis.css). Set the SOLID plate AT THE
91
+ ELEMENT; still flip the level/tint knobs for a nested glass descendant. */
92
+ --glass-level: 0;
93
+ --glass-tint-strength: 0%;
94
+ /* The SOLID --card plate via the house color-mix idiom (solid --card, expressed
95
+ as the cohesion-sanctioned mix the token ladder speaks — NOT the bare
96
+ `var(--card)` the cohesion D1 check forbids for the always-on drawer plate;
97
+ this is the EXPLICIT opt-out behind `surface="opaque"`, not the default). */
98
+ background: color-mix(in srgb, var(--card), transparent 0%);
99
+ backdrop-filter: none;
100
+ -webkit-backdrop-filter: none;
101
+ }
102
+
61
103
  /*
62
104
  * Detented (snap-point) sheets fill the viewport height. vaul positions the
63
105
  * sheet by translating it DOWN by `innerHeight - (fraction * innerHeight)` —
@@ -0,0 +1,104 @@
1
+ /* feedback-tone.css — the ONE shared tinted-glass tone recipe (BA.W-FEEDBACK-TONE).
2
+
3
+ THE COLLAPSE: Toast, Notification, and Alert each carried an INDEPENDENT tone map
4
+ (the Toast variant map painted SOLID `bg-{success,warning,info,destructive}` opaque
5
+ token plates over a `glass-floating` base; the Notification type map painted
6
+ `bg-<tone>/90` near-opaque slabs; Alert alone was correct in SHAPE — glass-wash plate
7
+ + tone-on-rim — but HARDCODED its `border-<tone>/40` rim per variant). Three tone
8
+ maps, three calibration sites, and TWO of them painted a colored SLAB that occluded
9
+ the backdrop (the R8-12/R8-13 "not glassy at all" defect; the blur track survived but
10
+ was inert behind a 100%-opaque plate).
11
+
12
+ This file mints the tone register ONCE. Every feedback tone reads as COLORED GLASS:
13
+ a tinted-glass wash (the rung bg mixed a BOUNDED % toward the tone, the SAME
14
+ `color-mix(in oklab, <rung bg>, <tint> <strength>)` seam the W55 `--glass-tint-*`
15
+ legibility lift and the `--veil-bg` plate already run — ZERO new compositing path) +
16
+ a tone-keyed rim + a full-chroma glyph. The backdrop STILL shows through (α stays
17
+ translucent, the W2 π floor < ~0.92). The body ink stays `--foreground` /
18
+ `--card-foreground` for legibility (the Alert discipline — body never tone-tinted),
19
+ so the tone is ONE deliberate color event per surface (the AZ.W-SUFFUSE one-color-
20
+ event idiom), never a full-bleed fill.
21
+
22
+ THE ONE KNOB: `--feedback-tone-strength` tints all four tones at once (the bounded
23
+ mix %, the toast-glass §A band). The four tone hues map to the HOUSE tokens
24
+ `--success` / `--warning` / `--info` / `--destructive` (presets-in-consumers — NO new
25
+ colors). A consumer recalibrates the tone weight with ONE override.
26
+
27
+ THE RUNG: the register reads `--feedback-tone-rung` (default the floating-chrome rung
28
+ `--glass-bg-floating`, the Toast/Notification overlay register). Alert RE-POINTS it to
29
+ `--glass-bg-wash` on its own surface (a content panel rides wash, not floating — the
30
+ register difference is correct; only the tone SOURCE unifies, not the rung). The rung
31
+ reads `--glass-bg-*` DIRECTLY (the same tokens W-SURFACE-AXIS's glass arm routes), so
32
+ the tone tint rides ON the glass surface — a re-point, not a fork.
33
+
34
+ THE SUBSTITUTION TRAP (the recurring AX.W55 / dock-scale class): `--feedback-tone-rung`
35
+ resolves the `--glass-bg-floating` token, which BAKES `var(--glass-level)` at its
36
+ `:root` declaration (level=1). A descendant `--glass-level: 0` does NOT re-resolve the
37
+ baked rung — but that is the CORRECT register here: a feedback surface IS translucent
38
+ glass by design; the `opaque`/level-0 escape is W-SURFACE-AXIS's `[data-surface]`
39
+ concern, not a tone-register knob. The tone register composes the tint AT THE ELEMENT
40
+ off the resolved rung, so the `color-mix` re-resolves whenever `--tone`/`--feedback-
41
+ tone-strength`/the rung change (the W55 element-level tint discipline). */
42
+ @layer components {
43
+ :root {
44
+ /* The bounded mix % — the tone wash strength. 18% reads as colored GLASS
45
+ (the backdrop shows through, the silhouette is unmistakably tinted) without
46
+ tipping toward a slab; the toast-glass §A band is ≈12–22%. ONE knob retunes
47
+ all four tones. */
48
+ --feedback-tone-strength: 18%;
49
+ /* The rung the tint mixes over — the floating-chrome register (Toast /
50
+ Notification). Alert re-points it to the wash rung on its own surface. */
51
+ --feedback-tone-rung: var(--glass-bg-floating);
52
+ /* The rim weight — a tone-keyed border, a thin tinted rim (not a loud edge). */
53
+ --feedback-tone-border-strength: 40%;
54
+ }
55
+
56
+ /* ── The parametric register ──────────────────────────────────────────────────
57
+ A surface declares `--tone` (one of the four house tokens) + composes
58
+ `.feedback-tone`; the tinted-glass wash + the tone-keyed rim resolve off the ONE
59
+ recipe. The glyph carries the FULL-chroma tone (`[&>svg]` via the consumer's own
60
+ class, or the `.feedback-tone-glyph` helper below). The `default` (un-toned)
61
+ surface simply omits `.feedback-tone` — the bare glass rung paints.
62
+
63
+ `--tone` has NO `:root` default ON PURPOSE: a `.feedback-tone` surface with no
64
+ `--tone` set would mix the rung toward `initial` (transparent) — a no-op wash, the
65
+ same as the bare rung; this is the safe degenerate, not a paint bug. Every real
66
+ consumer sets `--tone` via its `.feedback-tone-<name>` register. */
67
+ .feedback-tone {
68
+ background: color-mix(
69
+ in oklab,
70
+ var(--feedback-tone-rung),
71
+ var(--tone) var(--feedback-tone-strength)
72
+ );
73
+ border-color: color-mix(
74
+ in oklab,
75
+ transparent,
76
+ var(--tone) var(--feedback-tone-border-strength)
77
+ );
78
+ }
79
+
80
+ /* The four house tone registers — each binds `--tone` to its house token. A surface
81
+ maps its variant/type onto the matching class (Toast `variant` /
82
+ Notification `type` / Alert `variant`); the `error` notification type maps to the
83
+ destructive tone (the three-maps-into-one collapse — `error` IS destructive). */
84
+ .feedback-tone-success {
85
+ --tone: var(--success);
86
+ }
87
+ .feedback-tone-warning {
88
+ --tone: var(--warning);
89
+ }
90
+ .feedback-tone-info {
91
+ --tone: var(--info);
92
+ }
93
+ .feedback-tone-destructive {
94
+ --tone: var(--destructive);
95
+ }
96
+
97
+ /* The glyph helper — the leading status glyph carries the FULL-chroma tone (the one
98
+ color event's saturated note over the tinted wash). A consumer composes it on its
99
+ icon, or reads `var(--tone)` directly in an arbitrary `[&>svg]:text-(--tone)`
100
+ utility. */
101
+ .feedback-tone-glyph {
102
+ color: var(--tone);
103
+ }
104
+ }
@@ -10,6 +10,10 @@
10
10
  backdrop-filter: var(--glass-blur-resting);
11
11
  color: var(--popover-foreground);
12
12
  box-shadow: var(--glass-shadow-resting);
13
+ /* AZ.R5-4 — the comfortable panel inner-pad rung (consumer-verified the
14
+ tight default). Token-first: a consumer retunes every floating panel +
15
+ dropdown surface from `--panel-padding`. */
16
+ padding: var(--panel-padding);
13
17
  pointer-events: auto;
14
18
  /* V.W3.T9 — animation grammar routes through the canonical
15
19
  Tailwind `animate-floating-panel-in` utility (defined in
@@ -32,3 +36,14 @@
32
36
  .dropdown-sub-content {
33
37
  font-family: var(--dropdown-menu-font, inherit);
34
38
  }
39
+
40
+ /* AZ.R5-4 — the comfortable menu inner-pad rung. The dropdown content family
41
+ reads the shared `--panel-padding` token (the prior hand-set `p-1` was the
42
+ tight floor the user flagged on the slides deck). Token-first: one override
43
+ retunes every teleported menu surface. Unlayered like the font rule above —
44
+ the `p-1`/literal Tailwind pad was removed from the SFC `cn()` chains so this
45
+ is the sole padding authority. */
46
+ .dropdown-menu-content,
47
+ .dropdown-sub-content {
48
+ padding: var(--panel-padding);
49
+ }
@@ -0,0 +1,245 @@
1
+ /* glass/a11y-fallback.css
2
+ The accessibility + capability overrides — @media (prefers-reduced-transparency) / (prefers-contrast: more) / (forced-colors: active), the non-backdrop-filter @layer components fallback, and the :has()-less @supports fallback. LAST in cascade (they override the base ladder).
3
+ Carved from the glass.css cascade root; @import-ed by glass.css in cascade
4
+ order, each in its own @layer components (isomorphic to the monolith).
5
+ See docs/precepts/design-idioms.md §cohesion-aware partials. */
6
+ /* ── Accessibility: reduced transparency ──────────
7
+ AX.W54 — the gestalt collapse: ONE `--glass-level: 0` replaces the ten per-rung
8
+ opacity+blur clobbers. The level-0 path resolves solid `--card` + `blur(0)`
9
+ through the SAME machinery (the opacity seam → 1, the blur seam → 0), so every
10
+ glass surface — current and future — flattens with no per-rung enumeration. The
11
+ grain + highlight kills stay (they sit off the level axis). */
12
+ @media (prefers-reduced-transparency: reduce) {
13
+ :root {
14
+ --glass-level: 0;
15
+ --glass-grain-opacity: 0;
16
+ --glass-highlight: 0 0 0 0 transparent;
17
+ }
18
+ }
19
+
20
+ /* ── Accessibility: high contrast ─────────────────
21
+ AX.W54 — a single bounded `--glass-level: 0.3` (mostly-solid, not fully flat)
22
+ replaces the five per-rung opacity clobbers: every rung firms up toward solid
23
+ for AA while keeping a hint of the glass register. ONE knob, every rung.
24
+
25
+ AX.W55 — the Clear↔Tinted user-escape (Apple's iOS-26.2 analog) COORDINATES the
26
+ two axes here: the OPACITY axis rides W54's `--glass-level` (firm up toward solid)
27
+ AND the TINT axis biases toward ink — `--glass-tint-source` → the warm-ink +
28
+ `--glass-tint-strength` → the AA floor, the same darken the automatic bright
29
+ bucket applies, now reached by the explicit "more contrast" user request. The two
30
+ axes stay DISTINCT (level = opacity+blur, tint = darken) but share the bracket so
31
+ a high-contrast user gets BOTH a firmer plate and the ink-tint legibility lift —
32
+ one coordinated escape, not two parallel forks. */
33
+ @media (prefers-contrast: more) {
34
+ :root {
35
+ --glass-level: 0.3;
36
+ --glass-tint-source: var(--glass-tint-ink);
37
+ --glass-tint-strength: var(--glass-tint-strength-aa);
38
+ }
39
+ }
40
+
41
+ /* ── Accessibility: forced-colors (Windows High Contrast) glass-language skin ──
42
+ AX.W36 — when the OS forces a palette (Windows High Contrast), the platform
43
+ strips the whole decorative glass register: `backdrop-filter` is dropped, the
44
+ `--glass-*` inset/box-shadow rungs vanish, and every meaning-bearing chroma
45
+ flattens to one system color. A `.glass-floating` Dialog over a `.glass-resting`
46
+ Card would read as two borderless transparent rectangles with no edge, and a
47
+ green-vs-red StatusDot would resolve to one indistinguishable dot. This skin
48
+ restores the STRUCTURE the glass chrome encoded — it does NOT pin glass-ui's
49
+ brand colours (no `forced-color-adjust: none`); the chrome is decorative and
50
+ YIELDS to the user's forced palette (css forced-colors guidance). Only the
51
+ standard WHC system keywords are used (`Canvas`/`CanvasText`/`Highlight`) — no
52
+ glass-ui token leaks into the WHC arm.
53
+
54
+ COORDINATES WITH W54 — the same `--glass-level: 0` opaque escape the reduced-
55
+ transparency / high-contrast brackets ride. Setting the ONE clarity knob to 0
56
+ collapses the `--glass-bg-*` opacity recipe to solid `--card` + `blur(0)` through
57
+ the SAME machinery (no parallel solid recipe), so the platform sees opaque plates
58
+ it maps to `Canvas`. The grain + highlight kills match the reduce bracket (they
59
+ sit off the level axis). The W55 tint axis is moot under WHC (the user's palette
60
+ supersedes the ink-darken) but harmless — the opaque plate is system-painted. */
61
+ @media (forced-colors: active) {
62
+ :root {
63
+ --glass-level: 0;
64
+ --glass-grain-opacity: 0;
65
+ --glass-highlight: 0 0 0 0 transparent;
66
+ }
67
+
68
+ /* Every glass-material ladder rung relied on `backdrop-filter` + an inset
69
+ `box-shadow` rim for its silhouette — both gone under WHC. Restore a real
70
+ `border` keyed to the system text colour so each tier pane reads as a boxed
71
+ region. The selector group MIRRORS the ladder definition above (one source,
72
+ not a hand-rolled re-list) so a future rung added to the material group
73
+ inherits the WHC edge for free — and any `.glass-material` div picks up the
74
+ edge with no per-component arm. */
75
+ .glass-material,
76
+ .glass-wash,
77
+ .glass-quiet,
78
+ .glass-resting,
79
+ .glass-floating,
80
+ .glass-overlay,
81
+ .glass-card,
82
+ .glass-drawer {
83
+ border: 1px solid CanvasText;
84
+ }
85
+
86
+ /* The floating + overlay rungs (Dialog / Sheet / Popover / DropdownMenu /
87
+ HoverCard compose them) + the Drawer (the overlay-band sheet, drawer.css)
88
+ get the canonical `Canvas` fill so the modal reads as a DISTINCT boxed
89
+ region OVER the page, not a transparent overlap — the hierarchy survives.
90
+ The `CanvasText` edge above already draws the box; this opaque fill
91
+ separates the floating layer from the content beneath it. */
92
+ .glass-floating,
93
+ .glass-overlay,
94
+ .glass-drawer {
95
+ background: Canvas;
96
+ }
97
+
98
+ /* The decorative specular catch-light (`::before`) + grain overlay (`::after`)
99
+ paint nothing meaningful once chroma collapses — yield them entirely (the
100
+ same decorative-chrome cede the `--glass-level: 0` opaque escape performs on
101
+ the body). They are NOT part of the structure the skin restores. */
102
+ .glass-material::before,
103
+ .glass-wash::before,
104
+ .glass-quiet::before,
105
+ .glass-resting::before,
106
+ .glass-floating::before,
107
+ .glass-overlay::before,
108
+ .glass-card::before,
109
+ .glass-drawer::before,
110
+ .glass-wash::after,
111
+ .glass-quiet::after,
112
+ .glass-resting::after,
113
+ .glass-floating::after,
114
+ .glass-overlay::after {
115
+ display: none;
116
+ }
117
+
118
+ /* Meaning-bearing hue identity → a bordered glyph that keeps ok/warn/error
119
+ distinguishable by a WHC-HONORED system color, NOT a glass-ui hue (which WHC
120
+ strips to one fill). StatusDot reflects its variant onto `data-status`
121
+ (StatusDot.vue) and the inner dot carries `.status-dot__dot`; the
122
+ `role="img"` + `aria-label` accessible name already ships, so this is the
123
+ VISUAL differentiation only. A bare bordered dot + the per-status fill triplet
124
+ below means a sighted WHC user can still tell the row apart.
125
+
126
+ `!important` IS load-bearing here: StatusDot paints the dot fill via an INLINE
127
+ `:style="dotStyle"` (`background-color`, specificity 1,0,0,0), which outranks
128
+ any stylesheet selector AND which forced-colors then `forced-color-adjust:
129
+ auto`-remaps to a single Canvas-white — collapsing the row to one indistinct
130
+ dot. The WHC arm must override that inline fill, and inline can only be beaten
131
+ by `!important`; this is the documented forced-colors degradation path (the
132
+ arm only activates under WHC). The component keeps its inline hue in normal
133
+ mode untouched. */
134
+ .status-dot__dot {
135
+ border: 1px solid CanvasText;
136
+ /* The bordered ring alone separates a dot from its surround; the per-status
137
+ fill below adds the WHC-honored distinction. */
138
+ }
139
+ /* The inner painted fill (`.status-dot__fill`, `h-full w-full`) + the pulse ring
140
+ carry the SAME inline glass-ui hue StatusDot paints — under WHC they cover the
141
+ outer `.status-dot__dot` glyph with a `forced-color-adjust`-remapped Canvas
142
+ fill (the row collapses to one white dot even with the outer system color set).
143
+ Yield them so the outer bordered + system-color glyph is the sole visible dot. */
144
+ .status-dot__fill,
145
+ .status-dot__pulse {
146
+ display: none;
147
+ }
148
+ /* The ok/warn/error/idle distinction rides the standard WHC keyword palette:
149
+ active (ok) → Highlight (the affirmative system accent)
150
+ paused (warn) → Mark (the marked/attention system color)
151
+ error → CanvasText (a solid filled dot — the strongest weight)
152
+ idle/custom → Canvas (a hollow dot — only the CanvasText ring reads)
153
+ Each stays distinguishable by the system color the user's palette assigns,
154
+ never glass-ui chroma. The `!important` beats the component's inline fill. */
155
+ .status-dot__dot[data-status="active"] {
156
+ background: Highlight !important;
157
+ }
158
+ .status-dot__dot[data-status="paused"] {
159
+ background: Mark !important;
160
+ }
161
+ .status-dot__dot[data-status="error"] {
162
+ background: CanvasText !important;
163
+ }
164
+ .status-dot__dot[data-status="idle"],
165
+ .status-dot__dot[data-status="custom"] {
166
+ background: Canvas !important;
167
+ }
168
+ }
169
+
170
+ /* ── @supports fallbacks for non-backdrop-filter browsers ── */
171
+ @layer components {
172
+ /* GUARD 1 — the NO-BLUR-AT-ALL engine (supports NEITHER the unprefixed NOR the
173
+ webkit form): paint an opaque-leaning plate so text stays legible without any
174
+ blur. AY.W-A11Y-PERF O-2b note: this is the floor for the theoretical
175
+ neither-supported case. The Safari ≤17 webkit-only trap (supports the `-webkit-`
176
+ form, so this `@supports not (… or …)` is FALSE and the fallback does NOT fire)
177
+ is closed at the SOURCE OF THE PREFIX: O-2a's build pass guarantees the shipped
178
+ dist carries the `-webkit-backdrop-filter:` pair, so a Safari-17 engine renders
179
+ the BLUR off the prefixed rule (it no longer falls through to a transparent
180
+ unprefixed-only surface). The trap closes where the prefix is emitted, not here. */
181
+ @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
182
+ .glass-wash {
183
+ background: color-mix(in srgb, var(--card) 80%, transparent);
184
+ }
185
+ .glass-quiet {
186
+ background: color-mix(in srgb, var(--card) 88%, transparent);
187
+ }
188
+ .glass-resting {
189
+ background: color-mix(in srgb, var(--card) 94%, transparent);
190
+ }
191
+ .glass-floating {
192
+ background: color-mix(in srgb, var(--card) 98%, transparent);
193
+ }
194
+ .glass-overlay {
195
+ background: var(--card);
196
+ }
197
+ .glass-btn {
198
+ background: color-mix(in srgb, var(--background) 92%, transparent);
199
+ }
200
+ }
201
+
202
+ /* GUARD 2 — the WEBKIT-ONLY engine (supports `-webkit-backdrop-filter` but NOT the
203
+ unprefixed `backdrop-filter` — Safari ≤17). With O-2a's build-emitted prefix the
204
+ shipped rung carries the `-webkit-backdrop-filter:` pair, so this engine PAINTS
205
+ the blur off that prefixed declaration. This guard exists to DOCUMENT-and-confirm
206
+ that path (and would re-assert the translucent glass identity if a future change
207
+ ever stripped the rung bg under this engine) — it re-states the rungs' translucent
208
+ glass-mix so a webkit-only engine that DID get the prefix keeps the glass look,
209
+ never the opaque GUARD-1 plate. The `proof:webkit-backdrop` gate asserts the
210
+ shipped dist carries BOTH guards. */
211
+ @supports ((-webkit-backdrop-filter: blur(1px)) and (not (backdrop-filter: blur(1px)))) {
212
+ .glass-wash {
213
+ background: color-mix(in oklab, var(--glass-bg-wash), var(--glass-tint-source) var(--glass-tint-strength));
214
+ }
215
+ .glass-quiet {
216
+ background: color-mix(in oklab, var(--glass-bg-quiet), var(--glass-tint-source) var(--glass-tint-strength));
217
+ }
218
+ .glass-resting {
219
+ background: color-mix(in oklab, var(--glass-bg-resting), var(--glass-tint-source) var(--glass-tint-strength));
220
+ }
221
+ .glass-floating {
222
+ background: color-mix(in oklab, var(--glass-bg-floating), var(--glass-tint-source) var(--glass-tint-strength));
223
+ }
224
+ .glass-overlay {
225
+ background: color-mix(in oklab, var(--glass-bg-overlay), var(--glass-tint-source) var(--glass-tint-strength));
226
+ }
227
+ .glass-btn {
228
+ background: var(--glass-bg-wash);
229
+ }
230
+ }
231
+ }
232
+
233
+ /* ── :has() focus-elevation fallback (AQ.W3 §W3.1a) ──────────────────────
234
+ SOLE fallback for engines without `:has()`. `.is-focus-within` is toggled
235
+ by a ≤6-LOC focusin/focusout guard in `Card.vue` that runs ONLY when
236
+ `!CSS.supports('selector(:has(*))')` (modern engines run zero JS). The
237
+ class redefines the SAME `--card-focus-*` rungs as the `:has()` rule, so the
238
+ override values have one source. NOT a live+dead alias — `:has()` is the
239
+ enhancement, this the documented degradation path. */
240
+ @supports not selector(:has(*)) {
241
+ .glass-card.is-focus-within {
242
+ --card-focus-shadow: var(--shadow-md);
243
+ --card-focus-border: var(--glass-border-floating);
244
+ }
245
+ }