@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
@@ -0,0 +1,149 @@
1
+ /* icon-chip.css — BA.W-ICON-CHIP: the <IconChip> section-color pop primitive.
2
+ *
3
+ * The library's SINGLE section-color icon-chip recipe — the brand's ONE color
4
+ * event per surface (the one-color-event rule, AZ.W-SUFFUSE / proof:suffuse):
5
+ * a `color-mix(… 25%, transparent)` backplate under a full-chroma glyph, walked
6
+ * over the 13-stop `--section-color-N` ramp (or a complete `tone` token). It
7
+ * OWNS the recipe the four inline `:style` pastes (icons.vue / empty-states.vue
8
+ * / auth-shell.vue / the MetricCell glyph-tint) collapsed onto, so the recipe
9
+ * lives ONCE and proof:suffuse asserts against one component, not N pastes.
10
+ *
11
+ * THE INTERPOLATION SPACE — `in srgb` (DELIBERATE, recorded). The backplate is
12
+ * a foreground-over-transparent overlay at a hand-tuned fixed 25% α stop — the
13
+ * SAME shape as the `--surface-tint-*` brand family, which CLAUDE.md fixes at
14
+ * `in srgb` (the brand-calibrated mix; switching the space shifts the resting
15
+ * α off its hand-set value). The chip is byte-faithful to the reference paste
16
+ * register (the binding W7 π target: stop-0 bg `color(srgb 0.915 0.484 0.671 /
17
+ * 0.25)`), so it preserves `in srgb` — the same brand-overlay path, NOT the
18
+ * glass-tint `in oklab` perceptual-mix path. (The spec text says `in oklab`;
19
+ * the resolution preserves the reference-faithful `in srgb` so the pop register
20
+ * does not shift — recorded in PROGRESS / the DELTA.)
21
+ */
22
+
23
+ :root {
24
+ /* The chip≤glyph proportion (d2, structural). The diameter floors at
25
+ `glyph × ratio` so the plate can NEVER paint under the glyph — a
26
+ consumer's tiny `size` is clamped. The default reproduces the reference
27
+ 48/22 ≈ 2.18 register. Token-first: a consumer retunes without a
28
+ component edit. */
29
+ --icon-chip-glyph-ratio: 2.18;
30
+ /* The duotone fill α — a low-alpha fill of the same hue UNDER the
31
+ full-chroma stroke (the iOS/Material filled-tonal move). Mono-hue. */
32
+ --icon-chip-duotone-fill: 18%;
33
+ /* The hover-bloom backplate lift (25% → ~35%) + the glow-ring spread. */
34
+ --icon-chip-bloom-mix: 35%;
35
+ --icon-chip-bloom-glow: 28%;
36
+ /* The reveal stagger step (consumed by the vReveal `--d` index). */
37
+ --icon-chip-reveal-step: 60ms;
38
+ }
39
+
40
+ .icon-chip {
41
+ /* The diameter FLOORS at glyph × ratio — the d2 proportion enforced in the
42
+ component, not a per-consumer hope. */
43
+ --_icon-chip-floor: calc(
44
+ var(--icon-chip-glyph-size, 22px) * var(--icon-chip-glyph-ratio)
45
+ );
46
+ inline-size: max(var(--icon-chip-size, 48px), var(--_icon-chip-floor));
47
+ block-size: max(var(--icon-chip-size, 48px), var(--_icon-chip-floor));
48
+ display: inline-flex;
49
+ align-items: center;
50
+ justify-content: center;
51
+ border-radius: var(--radius-pill, 9999px);
52
+ /* The backplate — the reference recipe (`in srgb`, 25% α stop). */
53
+ background-color: color-mix(
54
+ in srgb,
55
+ var(--icon-chip-plate-color, var(--muted)) 25%,
56
+ transparent
57
+ );
58
+ color: var(--icon-chip-event-color, var(--muted-foreground));
59
+ /* The §6 easing doctrine — surface props (bg/box-shadow) on the bezier
60
+ standard ease; the bloom is the smooth-glass register, NOT a sparkle. */
61
+ transition:
62
+ background-color var(--duration-fast, 150ms) var(--ease-standard),
63
+ box-shadow var(--duration-fast, 150ms) var(--ease-standard);
64
+ }
65
+
66
+ .icon-chip__glyph {
67
+ display: block;
68
+ flex-shrink: 0;
69
+ }
70
+
71
+ /* ── The bare register (the MetricCell leading-glyph tint — no backplate) ──── */
72
+ .icon-chip--bare {
73
+ inline-size: auto;
74
+ block-size: auto;
75
+ background-color: transparent;
76
+ border-radius: 0;
77
+ }
78
+
79
+ /* ── The duotone axis — a low-alpha fill of the same hue UNDER the stroke ──── */
80
+ /* Lucide glyphs bake `fill: none` on the SVG root; CSS wins over the
81
+ presentation attribute, so the `[data-duotone] svg` rule reaches the inner
82
+ paths (they inherit `fill` from the root). Mono-hue, proportion-safe. */
83
+ .icon-chip--duotone[data-duotone] svg,
84
+ .icon-chip[data-duotone] .icon-chip__glyph {
85
+ fill: color-mix(
86
+ in srgb,
87
+ var(--icon-chip-event-color, var(--muted-foreground))
88
+ var(--icon-chip-duotone-fill),
89
+ transparent
90
+ );
91
+ }
92
+
93
+ /* ── The hover-bloom axis — the SMOOTH GLASS register (NO disco) ───────────── */
94
+ /* The backplate mix lifts, a soft same-hue glow ring appears, the glyph stroke
95
+ firms. DISCO FENCE: composes NO sparkle-sweep / btn-audacious / disco-grain —
96
+ the W-GLASS-CAL-retired-disco's calm replacement register only. */
97
+ @media (hover: hover) {
98
+ .icon-chip--bloom:hover {
99
+ background-color: color-mix(
100
+ in srgb,
101
+ var(--icon-chip-plate-color, var(--muted)) var(--icon-chip-bloom-mix),
102
+ transparent
103
+ );
104
+ box-shadow: 0 0 0 0.25rem
105
+ color-mix(
106
+ in srgb,
107
+ var(--icon-chip-event-color, var(--muted-foreground))
108
+ var(--icon-chip-bloom-glow),
109
+ transparent
110
+ );
111
+ }
112
+ /* The glyph stroke firms on the chip's own hover. */
113
+ .icon-chip--bloom:hover .icon-chip__glyph {
114
+ stroke-width: 2;
115
+ }
116
+ }
117
+
118
+ /* ── The entrance-reveal axis — composes the shipped vReveal directive ─────── */
119
+ /* The directive writes `[data-reveal]` + `--d` (the stagger index); this rule
120
+ reacts ONLY on an opted-in chip (`.icon-chip--reveal`) so a non-reveal chip's
121
+ inert `[data-reveal]` hook never animates. PRM-gated. */
122
+ @media (prefers-reduced-motion: no-preference) {
123
+ .icon-chip--reveal[data-reveal] {
124
+ animation: icon-chip-reveal var(--duration-medium, 320ms)
125
+ var(--ease-standard) both;
126
+ animation-delay: calc(var(--d, 0) * var(--icon-chip-reveal-step));
127
+ }
128
+ }
129
+
130
+ @keyframes icon-chip-reveal {
131
+ from {
132
+ opacity: 0;
133
+ transform: scale(0.85) translateY(0.25rem);
134
+ }
135
+ to {
136
+ opacity: 1;
137
+ transform: none;
138
+ }
139
+ }
140
+
141
+ /* ── The deform axes collapse under reduced motion (the PRM guard) ─────────── */
142
+ @media (prefers-reduced-motion: reduce) {
143
+ .icon-chip--bloom:hover .icon-chip__glyph {
144
+ stroke-width: inherit;
145
+ }
146
+ .icon-chip--reveal[data-reveal] {
147
+ animation: none;
148
+ }
149
+ }
@@ -40,7 +40,20 @@
40
40
  * above it via CSS custom properties or selector cascade; reordering breaks
41
41
  * fallbacks. Documented at L.W2 Lane B per Rε §B.5.1.
42
42
  *
43
- * 1. tokens.css — CSS custom properties (color, easing, glass,
43
+ * WHERE each idiom LIVES (the localized design-idiom home, complementing the
44
+ * load-ORDER below): see docs/precepts/design-idioms.md — @theme aliases live
45
+ * in theme.css, @utility recipes in their cohesion-domain file, the
46
+ * cohesion-aware @import-partial carve rule, and the var-in-arbitrary syntax.
47
+ * tokens.css / glass.css / utilities.css are thin @import ROOTS over cohesive
48
+ * tokens/* · glass/* · utilities/* partials (each < 500 lines, in cascade order
49
+ * — the dock.css precedent, AX.W06; generalized AY.W-CSS1). The carve is
50
+ * cascade-isomorphic: the partials @import in the recorded cascade order so this
51
+ * load order is preserved bit-for-bit.
52
+ *
53
+ * 1. tokens.css — thin @import root over tokens/{scheme-motion,
54
+ * color-radius,shadow,glass,offsets-sizing,
55
+ * scale-paper,light-dark,dark-arm,property-regs}.css.
56
+ * CSS custom properties (color, easing, glass,
44
57
  * paper, shadow, surface-tint rungs). Source-of-
45
58
  * record for every visual axis.
46
59
  * 2. typography.css — golden-ratio scale (√φ); semantic type classes.
@@ -48,7 +61,9 @@
48
61
  * 3. theme.css — @theme block (Tailwind aliases). Reads tokens
49
62
  * from (1) so MUST come after them; defines the
50
63
  * `dark` variant selector consumed by the cascade.
51
- * 4. glass.css — .glass-{wash,quiet,resting,floating,overlay}
64
+ * 4. glass.css — thin @import root over glass/{material,ladder,
65
+ * surfaces,progress-rail,squircle,a11y-fallback}.css.
66
+ * .glass-{wash,quiet,resting,floating,overlay}
52
67
  * 5-rung ladder + .glass-card / -pill / -btn.
53
68
  * Consumes tokens (1) + theme aliases (3).
54
69
  * 4a. glass-specular-track.css — the pointer-anchored MOVING specular rung
@@ -79,6 +94,15 @@
79
94
  * cascades into these control rules.
80
95
  * 7. cards.css — .cartoon-surface, .paper-texture.
81
96
  * Component utility layer.
97
+ * 7a. feedback-tone.css — the ONE shared tinted-glass tone register
98
+ * (BA.W-FEEDBACK-TONE): `.feedback-tone` +
99
+ * `.feedback-tone-{success,warning,info,destructive}`
100
+ * tint a glass rung a bounded % toward a house tone
101
+ * token on the EXISTING color-mix(in oklab, …) seam.
102
+ * Toast / Notification / Alert consume it (the three
103
+ * tone maps collapse). Loads after cards.css (it reads
104
+ * the same `--glass-bg-*` rung tokens cards.css/the
105
+ * ladder mint) and before floating-panel.css.
82
106
  * 8. floating-panel.css — .floating-panel + .floating-panel-item.
83
107
  * Component utility layer.
84
108
  * 9. transitions.css — Vue <Transition> classes (fade, fade-slide,
@@ -93,22 +117,32 @@
93
117
  * 10b. view-transition.css — the `.gl-list-item` View-Transitions group
94
118
  * recipe + `--vt-*` axes (AQ.W5; the
95
119
  * `useViewTransition` substrate's CSS half).
96
- * 11. utilities.css — focus-ring, btn-audacious + btn-interactive
97
- * (press cluster; K W6 + Q.W3 Lane E),
98
- * rainbow-vivid + rainbow-pastel. Consumes earlier
99
- * animations + tokens.
120
+ * 11. utilities.css — thin @import root over utilities/{animate,base,
121
+ * components,btn,a11y-overrides}.css. focus-ring,
122
+ * btn-audacious + btn-interactive (press cluster;
123
+ * K W6 + Q.W3 Lane E), rainbow-vivid +
124
+ * rainbow-pastel. Consumes earlier animations +
125
+ * tokens.
126
+ * 11a. menu.css — BA.W-MENU-GLASS the glass MENU-ROW + MENU-SECTION
127
+ * register. AFTER utilities.css so `.glass-menu-row`'s
128
+ * `@layer components` hover/highlight rules source-
129
+ * order-win over `.interactive-item:hover` (same layer
130
+ * + specificity) — the cascade-trap-safe placement.
100
131
  * 12. instrument-chassis.css — P-tranche component CSS (chassis bezel +
101
132
  * groove dividers). Loaded after utilities so
102
133
  * component-local recipes can override.
103
- * 13. instrument-rail.css — AK-W2-α cockpit-ratio rail (flex-basis 1/φ²
104
- * binding + bezel hairlines + sibling divider
105
- * rule). Composes alongside instrument-chassis;
106
- * shares the bezel-line twin-pixel idiom.
107
- * 14. hover-popover.css — V.W3 popover-animation grammar.
108
- * 15. drawer.css — AN.W3 detented bottom-sheet grammar (glass
134
+ * 13. hover-popover.css — V.W3 popover-animation grammar.
135
+ * 14. drawer.css — AN.W3 detented bottom-sheet grammar (glass
109
136
  * sheet surface + peek handle + snap-stop rules).
137
+ * 15. segmented-tabs.css — AX.W53 SegmentedTabs overflow/indicator grammar.
138
+ * 16. select.css — BA.W-EMISSION the PRECOMPILED Select content
139
+ * collision-bound (the `[data-slot="select-content"]`
140
+ * max-height rule) — moved off the dead arbitrary-
141
+ * bracket CVA class so the bound SHIPS in dist/glass-ui.css
142
+ * regardless of consumer JIT reach. A structural utility
143
+ * never depends on a content-scan; locked by proof:emission.
110
144
  *
111
- * Per-package component CSS lives at (12)-(15) (loaded after utilities so
145
+ * Per-package component CSS lives at (12)-(16) (loaded after utilities so
112
146
  * component-local recipes can override). New per-package CSS files append
113
147
  * to that tail.
114
148
  */
@@ -122,17 +156,59 @@
122
156
  @import "./dock.css";
123
157
  @import "./dock-controls.css";
124
158
  @import "./cards.css";
159
+ @import "./feedback-tone.css";
125
160
  @import "./floating-panel.css";
126
161
  @import "./transitions.css";
127
162
  @import "./animations.css";
128
163
  @import "./scroll-driven.css";
129
164
  @import "./view-transition.css";
130
165
  @import "./utilities.css";
166
+ /* BA.W-MENU-GLASS — the glass menu-row + menu-section register. @import-ed AFTER
167
+ utilities.css (NOT the floating/transitions band the spec hinted) so the
168
+ `.glass-menu-row` `@layer components` hover/highlight rules source-order-WIN
169
+ over `.interactive-item:hover` (utilities/base.css, same layer + specificity) —
170
+ the cascade-trap-safe placement, mirroring glass/surface-axis.css's "import
171
+ AFTER ladder.css" discipline. */
172
+ @import "./menu.css";
173
+ @import "./configurator.css";
131
174
  @import "./instrument-chassis.css";
132
- @import "./instrument-rail.css";
133
175
  @import "./hover-popover.css";
134
176
  @import "./drawer.css";
177
+ @import "./segmented-tabs.css";
178
+ @import "./select.css";
179
+ /* BA.W-ICON-CHIP — the <IconChip> section-color pop recipe + the three axes
180
+ (duotone/bloom/reveal). A component partial; the token arms (--section-color-N
181
+ / --muted) auto-flip under .dark so the chip is mode-robust by construction. */
182
+ @import "./icon-chip.css";
183
+
184
+ /* Ensure Tailwind scans glass-ui's compiled component templates for the utility
185
+ classes they emit (CVA variant classes like text-destructive-foreground,
186
+ layout utilities like h-full/shrink-0).
187
+
188
+ BA.W-EMISSION — re-pointed from the DEAD components-mirror glob (the prior
189
+ `../components` target). That glob resolved correctly in glass-ui's OWN build
190
+ (`src/styles/index.css` → `src/components` carries the real `.vue` source), but the
191
+ SHIPPED dist copy of this file (`dist/styles/index.css`) resolved `../components` to
192
+ `dist/components/` — a
193
+ directory that carries ONLY `.d.ts` mirror files (zero `.js`, zero `.vue`). The
194
+ compiled render-functions live FLAT at `dist/*.js`. So in every consumer that
195
+ re-imported this `@source` line, Tailwind scanned an empty dir and glass-ui's own
196
+ arbitrary utilities silently died (the P9 / valuejs-fold register-B class).
135
197
 
136
- /* Ensure consumer's Tailwind scans glass-ui components for utility classes
137
- (e.g. CVA button variants like text-destructive-foreground) */
138
- @source "../components";
198
+ `../*.js` reaches the compiled render-functions PRECISELY in the SHIPPED context:
199
+ in dist it is `dist/*.js` (the 150+ flat compiled chunks that carry glass-ui's
200
+ utility class strings — the surface the dead `../components` mirror NEVER held).
201
+ In glass-ui's OWN source build it is `src/*.js` (empty — glass-ui's own components
202
+ compile their CSS through vite, not this `@source`), so the directive is a no-op
203
+ in the own-build and never scans the `src/` shader/`.ts` tree (a bare `../` glob
204
+ tripped Tailwind's dev candidate-extractor on the shader template strings —
205
+ `Missing opening (`). This directive is a BACKSTOP for a consumer that imports
206
+ this exact cascade file — the PRIMARY self-emission path is
207
+ `vite.style-assets.ts emitComponentUtilities` (P9), which ships glass-ui's
208
+ component-utility RULES build-independently into `dist/styles/components.css`.
209
+ Fully-arbitrary BRACKET utilities (`[max-height:…]`, `[--slider-track-height:…]`)
210
+ are rejected by that path's `classish` token filter AND are not reliably reachable
211
+ by a JIT scan, so every STRUCTURAL bracket utility (geometry/bounds/sizing) is
212
+ pre-compiled into shipped CSS instead — never load-bearing on any consumer's
213
+ content-scan reach. Locked by proof:emission. */
214
+ @source "../*.js";
@@ -146,6 +146,48 @@
146
146
  display: none;
147
147
  }
148
148
 
149
+ /* ─────────────────────────────────────────────────────────────
150
+ BA.W-ATLAS-RECONCILE C-3 — structure variant (SILVER MILLED-METAL register)
151
+
152
+ The cool polished-steel housing read: the engraved-bezel `::before` stroke
153
+ AND the structural twin-line grooves re-point from the warm-cream
154
+ `--surface-tint-*` default onto the `--silver` quad (gold's cool mirror).
155
+ The chassis reads as an INDUSTRIAL precision-instrument panel — the
156
+ cool-metal twin of the warm-gold "complete"-phase affirmation.
157
+
158
+ The phase cascade (`[data-phase="…"]`) stays ORTHOGONAL — a `structure`
159
+ chassis still retints its phase fills on `data-phase`; only the
160
+ structure-metal recipe (bezel + grooves) forks here. Consumer #2 of the
161
+ silver quad (the atlas's structure surface is consumer #1).
162
+
163
+ The silver is the W-NO-GRAY NAMED cool-neutral exception (a brand METAL
164
+ identity, not a neutral — its very-low chroma reads as milled steel, the
165
+ cool hue distinguishes it from the warm glass plate).
166
+ ───────────────────────────────────────────────────────────── */
167
+ .instrument-chassis[data-variant="structure"] {
168
+ /* The milled-panel edge: the chassis border lifts off the resting glass
169
+ edge onto a hairline silver structure stroke. */
170
+ border-color: color-mix(in oklab, var(--color-silver-dark) 55%, transparent);
171
+ }
172
+
173
+ /* The engraved bezel re-tints to the cool silver catch (the polished sleeve
174
+ reads as steel, not warm-cream). */
175
+ .instrument-chassis[data-variant="structure"]::before {
176
+ border-color: color-mix(in oklab, var(--color-silver-light) 60%, transparent);
177
+ }
178
+ .dark .instrument-chassis[data-variant="structure"]::before {
179
+ border-color: color-mix(in oklab, var(--color-silver) 40%, transparent);
180
+ }
181
+
182
+ /* The structural grooves re-point to the silver twin-line: the catch reads
183
+ the light silver, the under-shadow the dark silver — a milled seam, not the
184
+ default warm twin-line. ONE re-point at the variant root; every
185
+ `<ChassisDivider>` inside a structure chassis inherits it. */
186
+ .instrument-chassis[data-variant="structure"] {
187
+ --twin-line-catch: color-mix(in oklab, var(--color-silver-light) 50%, transparent);
188
+ --twin-line-shadow: color-mix(in oklab, var(--color-silver-dark) 40%, transparent);
189
+ }
190
+
149
191
  /* Phase-color cascade — single property, full chassis-wide retint.
150
192
  `--phase-color-label` mirrors the cascade through the WCAG companion
151
193
  tokens (AC.W6c F1.V-04). The label register falls back to the canvas
@@ -0,0 +1,127 @@
1
+ /* menu.css — the glass MENU-ROW + MENU-SECTION register (BA.W-MENU-GLASS).
2
+
3
+ The shared `menuItemVariants` CVA's `surface=glass` arm (the DEFAULT, glass-
4
+ first canon AX.W54) composes `.glass-menu-row`; all 13 menu/picker-family SFCs
5
+ inherit the glassy hover-lift register in ONE edit (no per-SFC menu-row CSS).
6
+
7
+ ── The cascade-trap pre-empt (the AZ dock-rail `@layer`-loses-to-utility trap) ──
8
+ `.interactive-item:hover` (utilities/base.css, `@layer components`) paints a flat
9
+ `color-mix(--accent 50%)` hover background. An UNLAYERED Tailwind `hover:bg-accent`
10
+ utility would win over BOTH (the trap). The CVA's glass arm therefore DROPS the
11
+ flat-accent utilities entirely — so the only background-painters on a glass row are
12
+ the `@layer components` `.interactive-item:hover` rule and these `.glass-menu-row`
13
+ rules. This file is `@import`-ed AFTER `utilities.css` in `index.css`, so at equal
14
+ specificity (0-1-1 for the `:hover`/`[data-highlighted]` selectors) and equal layer
15
+ (`components`) the recipe wins by SOURCE ORDER over `.interactive-item:hover` —
16
+ exactly the discipline `glass/surface-axis.css` uses ("@import-ed AFTER ladder.css
17
+ so the attr rules win by source order"). NEVER re-add an unlayered flat-accent
18
+ utility to the glass arm — it would re-introduce the trap.
19
+
20
+ ── The element-level tint discipline (substitution-vs-inheritance) ──
21
+ The row reads the ELEMENT-LEVEL glass-quiet oklab tint
22
+ `color-mix(in oklab, var(--glass-bg-quiet), var(--glass-tint-source) var(--glass-tint-strength))`
23
+ — the SAME seam `glass/ladder.css:58` / `glass/surfaces.css:19` compose — NOT the
24
+ pre-baked `--glass-bg-quiet` raw token. So the row darkens-over-light (W55 bright
25
+ bucket / `--glass-tint-strength` lift) AND lifts-over-dark per W-DARK-MATERIAL's
26
+ tint arm, in lockstep with every other glass surface. */
27
+ @layer components {
28
+ /* ── .glass-menu-row — the glassy hover-lift menu/picker item ──────────────
29
+ Every visual axis reads a `--menu-row-*` knob so a consumer retunes via a
30
+ `:root` override. The REST state is transparent (the row sits on the
31
+ container's own `glass-floating` plate — DropdownMenuContent /
32
+ ContextMenuContent are already `glass-floating rounded-panel`); the glass
33
+ PLATE materializes on hover/focus/highlight. */
34
+ .glass-menu-row {
35
+ /* The glass-quiet plate the row paints AT THE ELEMENT on hover/highlight
36
+ (the element-level oklab tint — see header). Overridable. */
37
+ --menu-row-bg: color-mix(
38
+ in oklab,
39
+ var(--glass-bg-quiet),
40
+ var(--glass-tint-source) var(--glass-tint-strength)
41
+ );
42
+ /* The PRM-gated hover-lift travel (zeroed under reduce, below). */
43
+ --menu-row-lift: -1px;
44
+ /* The 44px WCAG-2.5.5 touch floor (the row never reflows below it). The
45
+ base is the CVA's own py rhythm; the clamp guarantees the floor. Reads
46
+ `--touch-target` (the 44px token declared UNCONDITIONALLY at :root —
47
+ offsets-sizing.css), NOT `--control-floor` (which is declared ONLY inside
48
+ the `@media (pointer: coarse)` block, so on a FINE pointer `var(--control-
49
+ floor)` resolves to the guaranteed-invalid initial value → 0px in the
50
+ max(), and the floor silently vanished — the live π caught the 36px row).
51
+ The `2.75rem` literal fallback covers a consumer who unsets the token. */
52
+ min-block-size: max(2rem, var(--touch-target, 2.75rem));
53
+
54
+ /* The lift transform rides the §6 spring register (`--spring-smooth`); the
55
+ surface props (background) ride the bezier `--ease-standard` via the
56
+ `.interactive-item` base transition (already declared there). The
57
+ explicit transform leg here pairs the spring with the lift. */
58
+ transition: translate var(--duration-fast) var(--spring-smooth);
59
+ translate: 0 0;
60
+ }
61
+
62
+ /* Hover / keyboard-focus / reka internal-highlight / sub-trigger-open all
63
+ reach the SAME glass register (Combobox/Command/Select parity — the CVA
64
+ routes all three input modes through `data-[highlighted]`). */
65
+ .glass-menu-row:hover:not([data-disabled]),
66
+ .glass-menu-row:focus:not([data-disabled]),
67
+ .glass-menu-row[data-highlighted]:not([data-disabled]),
68
+ .glass-menu-row[data-state="open"]:not([data-disabled]) {
69
+ background: var(--menu-row-bg);
70
+ color: var(--accent-foreground);
71
+ translate: 0 var(--menu-row-lift);
72
+ }
73
+
74
+ /* ── .glass-menu-section — the mono section-label + hairline row-group ──────
75
+ The "section caption + hairline over a row group" recipe (the slides gear
76
+ hand-built ~120 lines of). Folds onto `typography.css` `.section-label` (the
77
+ mono / √φ-caption / small-caps register) for the caption and `--border-
78
+ hairline` for the divider. Tokenized on `--menu-section-*` so a consumer
79
+ retunes via a `:root` override. ≥2 consumers: the library menu defaults
80
+ (the section caption a DropdownMenuLabel composes) + the in-repo demo menu
81
+ story (Unit 2 adoption); the slides DeckSettings is the named foreign
82
+ downstream consumer. */
83
+ .glass-menu-section {
84
+ /* The caption register (mono / small-caps / quiet ink) — the same
85
+ vocabulary `.section-label` carries, exposed as overridable knobs. */
86
+ --menu-section-font: var(--font-mono);
87
+ --menu-section-size: var(--type-caption);
88
+ --menu-section-color: var(--muted-foreground);
89
+ --menu-section-tracking: var(--type-tracking-caps);
90
+ /* The hairline divider over the group (the catch-light + under-shadow
91
+ pair). Default-off feather; the rule below paints it. */
92
+ --menu-section-hairline: var(--border-hairline);
93
+ /* The block rhythm above the group (a section is a deliberate break). */
94
+ --menu-section-gap: 0.375rem;
95
+
96
+ display: block;
97
+ margin-block-start: var(--menu-section-gap);
98
+ padding-block-start: var(--menu-section-gap);
99
+ /* The hairline reads as a top divider over the group via box-shadow (the
100
+ house hairline pattern — a whisper, not a hard 1px rule). */
101
+ box-shadow: var(--menu-section-hairline);
102
+ }
103
+
104
+ /* The section CAPTION — a mono small-caps label. Composes onto the label
105
+ element the section recipe wraps (or a nested `.glass-menu-section-label`);
106
+ the demo + library menu labels read this caption register. */
107
+ .glass-menu-section-label,
108
+ .glass-menu-section > [data-menu-section-label] {
109
+ font-family: var(--menu-section-font);
110
+ font-size: var(--menu-section-size);
111
+ color: var(--menu-section-color);
112
+ text-transform: uppercase;
113
+ letter-spacing: var(--menu-section-tracking);
114
+ }
115
+ }
116
+
117
+ /* ── PRM gate — no deform/lift under reduce ───────────────────────────────────
118
+ The hover-lift `translate` is the only motion the row introduces; under
119
+ `prefers-reduced-motion: reduce` it collapses to the identity (0) and the
120
+ transition is removed (the surface bg cross-fade is not motion). The glass
121
+ plate still materializes on hover — only the geometric lift is suppressed. */
122
+ @media (prefers-reduced-motion: reduce) {
123
+ .glass-menu-row {
124
+ --menu-row-lift: 0px;
125
+ transition: none;
126
+ }
127
+ }
@@ -7,54 +7,8 @@
7
7
  *
8
8
  * Texture: feTurbulence baseFrequency 0.65, 4 octaves, desaturated via
9
9
  * feColorMatrix, blended multiply (light) / soft-light (dark). Tiles ~60px.
10
- *
11
- * ── THE GRAIN RUNGS (D6.c M5 — the printed-paper tooth, FELT not seen) ─────────
12
- * The warm-paper grain must be FELT at rest — a premium editorial stock has a
13
- * felt depth, and the measured finding (ds2-medium M5 / fd-usf-gallery §F) is
14
- * that the shipped `--glass-grain-opacity: 0.025` floor reads as NOTHING. This
15
- * file lifts the grain off that floor and mints a SECOND rung for chart plates:
16
- *
17
- * --glass-grain-opacity — the PAGE grain. Lifted here to a perceptible-
18
- * but-deft 0.038 default (the local floor below).
19
- * Numeric justification: the kitsch line is
20
- * ~0.05 (above it the grain reads as screen-noise
21
- * / a dirty monitor, ds2-medium M5); 0.025 is
22
- * sub-perceptual ("felt as nothing"). 0.038 is
23
- * the calibrated MIDPOINT — ~1.5× the dead floor,
24
- * ~0.76× the kitsch ceiling — felt at rest, never
25
- * seen AS grain. (The canonical token still lives
26
- * in tokens.css; this utility reads it with the
27
- * lifted fallback so a no-override mount is felt.)
28
- * --glass-grain-opacity-plate — the PLATE grain (NEW rung). A chart plate is
29
- * the FIGURE's "paper", so it wants slightly more
30
- * tooth than the page (M5): 0.045 — still below
31
- * the 0.05 kitsch ceiling, distinctly felt so the
32
- * plate reads as PRINTED on the same stock as the
33
- * page, not pasted onto it.
34
- *
35
- * THE DATA-REGION MASK CONTRACT (M5, non-negotiable). Grain on the FRAME, never
36
- * under the FIGURE — a fleck over a choropleth reads as a data artifact; on the
37
- * plate margin it reads as paper. `paper-grain-overlay` exposes a custom-property
38
- * MASK SLOT (`--paper-grain-mask`) so a consumer can carve the data viewport out
39
- * of the grain ::after: set it to a gradient/`url()` that is transparent over the
40
- * data region and opaque over the frame, and the grain is masked off the figure.
41
- * Default `none` (the whole surface is grained — the page/card case, no data to
42
- * fence). The plate rung is opt-in via `[data-grain="plate"]`.
43
10
  */
44
11
 
45
- /* The grain rung DEFAULTS — lifted off the tokens.css floor (D6.c M5). These are
46
- plain custom-property fallbacks the utilities read; a consumer/tokens.css value
47
- still wins (`var(--glass-grain-opacity, <floor>)`), so this only sets the floor
48
- a no-override mount inherits. The plate rung is minted here (no canonical
49
- tokens.css home is touched in this lane — D6.b owns tokens.css). */
50
- @layer components {
51
- :root {
52
- /* The PLATE grain rung — distinct from the page rung; the figure's paper
53
- wants more tooth. Minted in this lane; a consumer overrides at :root. */
54
- --glass-grain-opacity-plate: 0.045;
55
- }
56
- }
57
-
58
12
  @utility paper-underpaint {
59
13
  position: fixed;
60
14
  inset: 0;
@@ -63,8 +17,7 @@
63
17
  background-image: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3CfeBlend mode='multiply' in2='SourceGraphic'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");
64
18
  background-repeat: repeat;
65
19
  background-size: 60px 60px;
66
- /* Lifted floor — the page grain is FELT at rest (0.038), not the dead 0.025. */
67
- opacity: var(--glass-grain-opacity, 0.038);
20
+ opacity: var(--glass-grain-opacity);
68
21
  mix-blend-mode: multiply;
69
22
  }
70
23
 
@@ -86,27 +39,8 @@
86
39
  background-image: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3CfeBlend mode='multiply' in2='SourceGraphic'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");
87
40
  background-repeat: repeat;
88
41
  background-size: 60px 60px;
89
- /* Lifted floor — felt on the frame at rest (0.038). */
90
- opacity: var(--glass-grain-opacity, 0.038);
42
+ opacity: var(--glass-grain-opacity);
91
43
  mix-blend-mode: overlay;
92
- /* THE DATA-REGION MASK SLOT (M5). Default `none` = the whole surface is
93
- grained (page/card — no data to fence). A consumer that grains a chart
94
- plate sets `--paper-grain-mask` to a gradient/url() transparent over the
95
- data viewport + opaque over the frame, carving the figure out of the
96
- grain so no fleck lands on a tier fill. `mask` is Baseline; a
97
- non-supporting engine ignores it and keeps the full-surface grain (the
98
- page case is unaffected — the mask only matters when a consumer fences
99
- the data region). */
100
- mask: var(--paper-grain-mask, none);
101
- -webkit-mask: var(--paper-grain-mask, none);
102
- }
103
-
104
- /* The PLATE rung — a chart plate opts in via `[data-grain="plate"]` to the
105
- higher-tooth `--glass-grain-opacity-plate` (the figure's paper reads as the
106
- same stock as the page, with a touch more tooth). Pair with the mask slot to
107
- fence the data viewport. */
108
- &[data-grain="plate"]::after {
109
- opacity: var(--glass-grain-opacity-plate, 0.045);
110
44
  }
111
45
  }
112
46