@mkbabb/glass-ui 3.13.0 → 4.0.1

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 (507) hide show
  1. package/README.md +3 -1
  2. package/dist/CardAction-CW7a0m8M.js +253 -0
  3. package/dist/{CommandShortcut-RowNEO6i.js → CommandShortcut-DvZNQ_HF.js} +58 -53
  4. package/dist/ConfiguratorRow-BR4l-ixA.js +143 -0
  5. package/dist/{ContextMenuContent-CT3AS1WX.js → ContextMenuContent-uWnVxDab.js} +1 -1
  6. package/dist/{ContextMenuSubContent-BQmxTAdw.js → ContextMenuSubContent-xol4sD2q.js} +32 -37
  7. package/dist/{DataTable-BCddn3T3.js → DataTable-CuKwF7wr.js} +99 -97
  8. package/dist/DialogContent-DcKK8k9i.js +103 -0
  9. package/dist/{DialogFooter-Blu4t7tJ.js → DialogFooter-BZNX5aVr.js} +3 -3
  10. package/dist/FadingScroll-DI6hQhT9.js +76 -0
  11. package/dist/{HoverCardContent-Csywg3YF.js → HoverCardContent-b2uaAMRR.js} +1 -1
  12. package/dist/{HoverPopover-CISOJQuZ.js → HoverPopover-CbqbNwgU.js} +2 -2
  13. package/dist/IconChip-BTD-nay5.js +55 -0
  14. package/dist/{IconTooltip-DPzE09X9.js → IconTooltip-Bl8gFZ8d.js} +1 -1
  15. package/dist/{Input-DWQQIOC4.js → Input-h9v5LeXf.js} +1 -1
  16. package/dist/{MetricBadge-C9QMz1KT.js → MetricBadge-RHdBP72w.js} +1 -1
  17. package/dist/Notification-VUwexFUf.js +43 -0
  18. package/dist/NumberFieldContent-Cq7EzX-U.js +138 -0
  19. package/dist/PopoverContent-DL7E6vJP.js +127 -0
  20. package/dist/{Progress-DwlUKGbr.js → Progress-DctG61iZ.js} +98 -78
  21. package/dist/{ScrollingText-DfFrwSph.js → ScrollingText-yOpBzFYq.js} +2 -2
  22. package/dist/{SelectScrollDownButton-CiDUxfEj.js → SelectScrollDownButton-CrA8F0iV.js} +35 -20
  23. package/dist/{Switch-CsIuYP_e.js → Switch-CwYNf8bo.js} +1 -1
  24. package/dist/Toaster-Bw4xR8xV.js +274 -0
  25. package/dist/{ToggleGroupItem-D_AHlRw9.js → ToggleGroupItem-pEM9vIhs.js} +50 -37
  26. package/dist/{TooltipProvider-B3MkB_8P.js → TooltipProvider-rzvnXz60.js} +1 -1
  27. package/dist/animated-digit.js +2 -2
  28. package/dist/api/index.d.ts +16 -8
  29. package/dist/api/types-extra.d.ts +6 -0
  30. package/dist/api.js +2 -2
  31. package/dist/aurora.js +888 -230
  32. package/dist/badge.js +1 -1
  33. package/dist/border-progress.d.ts +1 -0
  34. package/dist/border-progress.js +106 -0
  35. package/dist/button-DYCUa-tH.js +126 -0
  36. package/dist/button.js +1 -1
  37. package/dist/canvas.js +2 -2
  38. package/dist/card.js +2 -2
  39. package/dist/carousel.d.ts +1 -1
  40. package/dist/carousel.js +90 -151
  41. package/dist/collapsible.js +1 -1
  42. package/dist/color-swatch.d.ts +1 -0
  43. package/dist/color-swatch.js +47 -0
  44. package/dist/color.js +1 -1
  45. package/dist/command.js +1 -1
  46. package/dist/compile-CQEFRTmx.js +19 -0
  47. package/dist/components/custom/aurora/composables/atoms-fields.d.ts +39 -0
  48. package/dist/components/custom/aurora/composables/auroraFallbackGround.d.ts +108 -0
  49. package/dist/components/custom/aurora/composables/runtime.d.ts +19 -0
  50. package/dist/components/custom/aurora/composables/uniformBridge.d.ts +5 -1
  51. package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +51 -0
  52. package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +29 -0
  53. package/dist/components/custom/aurora/constants/budget.d.ts +21 -0
  54. package/dist/components/custom/aurora/constants/presets.d.ts +30 -2
  55. package/dist/components/custom/aurora/constants/renderMode.d.ts +63 -10
  56. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -0
  57. package/dist/components/custom/aurora/constants/shaders/oil-modes.glsl.d.ts +1 -0
  58. package/dist/components/custom/aurora/constants/shaders/procedural-color.wgsl.d.ts +4 -0
  59. package/dist/components/custom/aurora/index.d.ts +3 -2
  60. package/dist/components/custom/border-progress/BorderProgress.vue.d.ts +46 -0
  61. package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +22 -0
  62. package/dist/components/custom/border-progress/constants.d.ts +59 -0
  63. package/dist/components/custom/border-progress/index.d.ts +4 -0
  64. package/dist/components/custom/color-swatch/ColorSwatch.vue.d.ts +22 -0
  65. package/dist/components/custom/color-swatch/index.d.ts +1 -0
  66. package/dist/components/custom/concentric/Concentric.vue.d.ts +39 -0
  67. package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +11 -0
  68. package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +13 -0
  69. package/dist/components/custom/concentric/composables/ringField.d.ts +44 -0
  70. package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +13 -0
  71. package/dist/components/custom/concentric/composables/useConcentric.d.ts +35 -0
  72. package/dist/components/custom/concentric/constants.d.ts +43 -0
  73. package/dist/components/custom/concentric/index.d.ts +5 -0
  74. package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +4 -0
  75. package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -0
  76. package/dist/components/custom/configurator/Configurator.vue.d.ts +19 -8
  77. package/dist/components/custom/constellation/Constellation.vue.d.ts +18 -206
  78. package/dist/components/custom/constellation/composables/useConstellation.d.ts +26 -0
  79. package/dist/components/custom/constellation/constellationField.d.ts +2 -369
  80. package/dist/components/custom/constellation/constellationTypes.d.ts +369 -0
  81. package/dist/components/custom/constellation/index.d.ts +1 -1
  82. package/dist/components/custom/dock/DockIconButton.vue.d.ts +13 -4
  83. package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +10 -2
  84. package/dist/components/custom/dock/DockRail.vue.d.ts +17 -16
  85. package/dist/components/custom/dock/DockSection.vue.d.ts +69 -0
  86. package/dist/components/custom/dock/DockSeparator.vue.d.ts +49 -1
  87. package/dist/components/custom/dock/DockTabButton.vue.d.ts +5 -5
  88. package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +75 -0
  89. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +13 -0
  90. package/dist/components/custom/dock/constants.d.ts +35 -0
  91. package/dist/components/custom/dock/index.d.ts +2 -0
  92. package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +38 -0
  93. package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +41 -0
  94. package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +24 -0
  95. package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +34 -0
  96. package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +18 -0
  97. package/dist/components/custom/dot-flow-field/constants.d.ts +48 -0
  98. package/dist/components/custom/dot-flow-field/index.d.ts +5 -0
  99. package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -0
  100. package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +20 -0
  101. package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +1 -0
  102. package/dist/components/custom/easing/EasingConfigurator.vue.d.ts +33 -0
  103. package/dist/components/custom/easing/EasingPicker.vue.d.ts +49 -0
  104. package/dist/components/custom/easing/composables/useEasingPicker.d.ts +75 -0
  105. package/dist/components/custom/easing/constants.d.ts +28 -0
  106. package/dist/components/custom/easing/index.d.ts +3 -0
  107. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +10 -0
  108. package/dist/components/custom/fading-scroll/FadingScroll.vue.d.ts +25 -0
  109. package/dist/components/custom/fading-scroll/composables/useFadingScroll.d.ts +31 -0
  110. package/dist/components/custom/fading-scroll/constants.d.ts +19 -0
  111. package/dist/components/custom/fading-scroll/index.d.ts +2 -0
  112. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +19 -2
  113. package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +39 -0
  114. package/dist/components/custom/fourier-field/constants.d.ts +7 -0
  115. package/dist/components/custom/fourier-field/index.d.ts +1 -1
  116. package/dist/components/custom/fourier-field/math.d.ts +17 -0
  117. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +9 -1
  118. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +4 -2
  119. package/dist/components/custom/goo-blob/composables/uniformBridgeWGPU.d.ts +24 -0
  120. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +29 -12
  121. package/dist/components/custom/goo-blob/composables/wgpuSetup.d.ts +23 -0
  122. package/dist/components/custom/goo-blob/constants.d.ts +6 -1
  123. package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -0
  124. package/dist/components/custom/handmark/HandMark.vue.d.ts +29 -0
  125. package/dist/components/custom/handmark/brush.d.ts +269 -0
  126. package/dist/components/custom/handmark/composables/useHandMark.d.ts +89 -0
  127. package/dist/components/custom/handmark/constants.d.ts +39 -0
  128. package/dist/components/custom/handmark/freehand.d.ts +69 -0
  129. package/dist/components/custom/handmark/geometry.d.ts +52 -0
  130. package/dist/components/custom/handmark/index.d.ts +27 -0
  131. package/dist/components/custom/handmark/ink.d.ts +11 -0
  132. package/dist/components/custom/handmark/texture.d.ts +39 -0
  133. package/dist/components/custom/handmark/types.d.ts +62 -0
  134. package/dist/components/custom/icon-chip/IconChip.vue.d.ts +4 -0
  135. package/dist/components/custom/icon-chip/index.d.ts +2 -0
  136. package/dist/components/custom/icon-chip/types.d.ts +82 -0
  137. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +17 -2
  138. package/dist/components/custom/metric-stack/MetricStack.vue.d.ts +1 -1
  139. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +39 -0
  140. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  141. package/dist/components/custom/spa-view/SpaView.vue.d.ts +50 -0
  142. package/dist/components/custom/spa-view/index.d.ts +2 -0
  143. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +29 -24
  144. package/dist/components/custom/tabs/composables/useTabDragMorph.d.ts +42 -0
  145. package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +30 -21
  146. package/dist/components/custom/tabs/constants.d.ts +9 -3
  147. package/dist/components/custom/tabs/index.d.ts +1 -1
  148. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +15 -1
  149. package/dist/components/ui/_shared/index.d.ts +2 -0
  150. package/dist/components/ui/_shared/menuItemVariants.d.ts +19 -0
  151. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +41 -0
  152. package/dist/components/ui/badge/index.d.ts +1 -1
  153. package/dist/components/ui/button/Button.vue.d.ts +5 -2
  154. package/dist/components/ui/button/index.d.ts +2 -2
  155. package/dist/components/ui/card/Card.vue.d.ts +34 -4
  156. package/dist/components/ui/card/CardHeader.vue.d.ts +42 -16
  157. package/dist/components/ui/card/ScrollCard.vue.d.ts +33 -0
  158. package/dist/components/ui/card/ScrollCardHeader.vue.d.ts +17 -0
  159. package/dist/components/ui/card/index.d.ts +2 -0
  160. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +2 -2
  161. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +2 -2
  162. package/dist/components/ui/carousel/GlassCarouselPager.vue.d.ts +2 -2
  163. package/dist/components/ui/carousel/index.d.ts +0 -1
  164. package/dist/components/ui/command/Command.vue.d.ts +4 -1
  165. package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -3
  166. package/dist/components/ui/drawer/Drawer.vue.d.ts +46 -33
  167. package/dist/components/ui/drawer/DrawerContent.vue.d.ts +12 -8
  168. package/dist/components/ui/drawer/DrawerDescription.vue.d.ts +2 -2
  169. package/dist/components/ui/drawer/DrawerOverlay.vue.d.ts +1 -1
  170. package/dist/components/ui/drawer/DrawerTitle.vue.d.ts +2 -2
  171. package/dist/components/ui/drawer/composables/drawerSnapContext.d.ts +26 -0
  172. package/dist/components/ui/drawer/composables/useDrawerSnap.d.ts +17 -0
  173. package/dist/components/ui/drawer/constants.d.ts +45 -0
  174. package/dist/components/ui/drawer/index.d.ts +23 -15
  175. package/dist/components/ui/focus-scope/FocusScope.vue.d.ts +20 -0
  176. package/dist/components/ui/focus-scope/index.d.ts +2 -0
  177. package/dist/components/ui/index.d.ts +1 -1
  178. package/dist/components/ui/popover/PopoverContent.vue.d.ts +3 -0
  179. package/dist/components/ui/progress/ProgressDefault.vue.d.ts +3 -2
  180. package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +14 -3
  181. package/dist/components/ui/select/SelectContent.vue.d.ts +1 -1
  182. package/dist/components/ui/select/SelectTrigger.vue.d.ts +27 -4
  183. package/dist/components/ui/sheet/SheetContent.vue.d.ts +6 -0
  184. package/dist/components/ui/sheet/index.d.ts +1 -1
  185. package/dist/components/ui/skeleton/Skeleton.vue.d.ts +3 -0
  186. package/dist/components/ui/tags-input/TagsInput.vue.d.ts +2 -2
  187. package/dist/components/ui/toast/Toast.vue.d.ts +5 -2
  188. package/dist/components/ui/toast/use-toast.d.ts +14 -0
  189. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  190. package/dist/composables/dark/index.d.ts +1 -1
  191. package/dist/composables/dark/useGlobalDark.d.ts +23 -1
  192. package/dist/composables/glass/canvas2d/useCanvas2D.d.ts +13 -6
  193. package/dist/composables/glass/index.d.ts +5 -2
  194. package/dist/composables/glass/useSpecularPointer.d.ts +33 -0
  195. package/dist/composables/glass/useSpecularTracking.d.ts +20 -0
  196. package/dist/composables/glass/vSpecular.d.ts +2 -0
  197. package/dist/composables/glass/webgl/shaders/flow.glsl.d.ts +1 -0
  198. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +16 -0
  199. package/dist/composables/glass/webgpu/index.d.ts +2 -0
  200. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +54 -0
  201. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +84 -0
  202. package/dist/composables/motion/core/index.d.ts +1 -0
  203. package/dist/composables/motion/index.d.ts +4 -0
  204. package/dist/composables/motion/useDockCtaReceive.d.ts +59 -0
  205. package/dist/composables/motion/useDragMorph.d.ts +77 -0
  206. package/dist/composables/motion/useLiquidFlex.d.ts +11 -0
  207. package/dist/composables/motion/useLiquidPress.d.ts +71 -0
  208. package/dist/composables/motion/useLiquidReveal.d.ts +51 -0
  209. package/dist/composables/motion/useNumericTransition.d.ts +3 -3
  210. package/dist/composables/motion/usePointerVelocityField.d.ts +98 -0
  211. package/dist/composables/motion/useViewTransition.d.ts +36 -1
  212. package/dist/concentric.d.ts +1 -0
  213. package/dist/concentric.js +562 -0
  214. package/dist/configurator.js +3 -2
  215. package/dist/confirm-dialog.js +22 -24
  216. package/dist/constellation.js +93 -95
  217. package/dist/context-menu.js +3 -3
  218. package/dist/controls.js +10 -4
  219. package/dist/createCanvasLifecycle-CHD5XrDW.js +82 -0
  220. package/dist/dark.d.ts +1 -1
  221. package/dist/dark.js +1 -1
  222. package/dist/data-table.js +1 -1
  223. package/dist/dialog.js +2 -2
  224. package/dist/dock.js +738 -442
  225. package/dist/{dockContext-BegmJVmx.js → dockContext-BNfyPLe9.js} +1 -1
  226. package/dist/dom.js +5 -5
  227. package/dist/dot-flow-field.d.ts +1 -0
  228. package/dist/dot-flow-field.js +604 -0
  229. package/dist/drawer.d.ts +1 -0
  230. package/dist/drawer.js +380 -0
  231. package/dist/{dropdown-menu-DzkkyBwX.js → dropdown-menu-CofSZuk8.js} +14 -15
  232. package/dist/dropdown-menu.js +1 -1
  233. package/dist/easing.d.ts +1 -0
  234. package/dist/easing.js +463 -0
  235. package/dist/expandable-container.js +45 -38
  236. package/dist/fading-scroll.d.ts +1 -0
  237. package/dist/fading-scroll.js +2 -0
  238. package/dist/focus-scope.d.ts +1 -0
  239. package/dist/focus-scope.js +23 -0
  240. package/dist/forms.js +7 -7
  241. package/dist/fourier-field.js +135 -122
  242. package/dist/fourier-math.js +2 -2
  243. package/dist/glass-panel.js +39 -36
  244. package/dist/glass-ui.css +1 -1
  245. package/dist/glass-ui.js +154 -362
  246. package/dist/goo-blob.js +838 -227
  247. package/dist/handmark.d.ts +1 -0
  248. package/dist/handmark.js +707 -0
  249. package/dist/header-ribbon.js +1 -1
  250. package/dist/hover-card.js +1 -1
  251. package/dist/hover-popover.js +1 -1
  252. package/dist/icon-chip.d.ts +1 -0
  253. package/dist/icon-chip.js +2 -0
  254. package/dist/icon-tooltip.js +1 -1
  255. package/dist/index.d.ts +3 -3
  256. package/dist/instrument-chassis.js +1 -1
  257. package/dist/keyboard.js +1 -1
  258. package/dist/label.js +1 -1
  259. package/dist/labeled-field.js +6 -6
  260. package/dist/{math-U6-RrLmV.js → math-BINYmg5z.js} +11 -3
  261. package/dist/{menuItemVariants-DPiEarb0.js → menuItemVariants-D8VNHq22.js} +10 -4
  262. package/dist/metric-badge.js +1 -1
  263. package/dist/metric-cell.js +25 -22
  264. package/dist/metric-stack.js +4 -8
  265. package/dist/motion-core.js +36 -35
  266. package/dist/motion-curves.js +1 -1
  267. package/dist/motion.js +157 -55
  268. package/dist/notification.js +1 -1
  269. package/dist/number-field.js +1 -1
  270. package/dist/pager-dots.d.ts +1 -0
  271. package/dist/pager-dots.js +91 -0
  272. package/dist/paper-backdrop.js +1 -1
  273. package/dist/popover.js +1 -1
  274. package/dist/{presets-BKVyQfbt.js → presets-BW2b-fr1.js} +14 -1
  275. package/dist/{compile-B7NGOBcP.js → procedural-color.glsl-CIFsJhwI.js} +1 -155
  276. package/dist/procedural-color.wgsl-CToRHugY.js +224 -0
  277. package/dist/progress.js +1 -1
  278. package/dist/pulse.js +1 -1
  279. package/dist/reactive.js +2 -2
  280. package/dist/scrolling-text.js +1 -1
  281. package/dist/search.js +10 -12
  282. package/dist/select.js +3 -3
  283. package/dist/separator.js +1 -1
  284. package/dist/sheet-tZMg0E0w.js +218 -0
  285. package/dist/sheet.js +1 -1
  286. package/dist/{slider-B-JP2JlI.js → slider-DVb4HXU-.js} +7 -7
  287. package/dist/slider.js +1 -1
  288. package/dist/sortable-list.js +3 -3
  289. package/dist/spa-view.d.ts +1 -0
  290. package/dist/spa-view.js +46 -0
  291. package/dist/styles/animations.css +40 -31
  292. package/dist/styles/border-progress.css +109 -0
  293. package/dist/styles/cards.css +76 -0
  294. package/dist/styles/components.css +1 -1
  295. package/dist/styles/configurator.css +35 -0
  296. package/dist/styles/critical-partition.mjs +140 -0
  297. package/dist/styles/critical.css +12 -0
  298. package/dist/styles/deferred.css +31 -0
  299. package/dist/styles/dock/density.css +64 -0
  300. package/dist/styles/dock/layers.css +54 -30
  301. package/dist/styles/dock/morph.css +124 -7
  302. package/dist/styles/dock/overflow.css +31 -2
  303. package/dist/styles/dock/rail-extend.css +168 -71
  304. package/dist/styles/dock/section.css +59 -0
  305. package/dist/styles/dock/shell.css +83 -16
  306. package/dist/styles/dock-controls/icon-button.css +11 -1
  307. package/dist/styles/dock-controls/tab-button.css +24 -83
  308. package/dist/styles/dock-controls/triggers.css +7 -0
  309. package/dist/styles/dock.css +38 -3
  310. package/dist/styles/drawer.css +127 -35
  311. package/dist/styles/feedback-tone.css +104 -0
  312. package/dist/styles/glass/deep.css +44 -0
  313. package/dist/styles/glass/ladder.css +154 -52
  314. package/dist/styles/glass/material.css +78 -15
  315. package/dist/styles/glass/reveal.css +136 -0
  316. package/dist/styles/glass/rim.css +100 -0
  317. package/dist/styles/glass/surface-axis.css +113 -0
  318. package/dist/styles/glass/surfaces.css +189 -15
  319. package/dist/styles/glass-refract.css +96 -44
  320. package/dist/styles/glass-specular-track.css +7 -0
  321. package/dist/styles/glass.css +8 -2
  322. package/dist/styles/hover-popover.css +7 -6
  323. package/dist/styles/icon-chip.css +211 -0
  324. package/dist/styles/index.css +78 -4
  325. package/dist/styles/instrument-chassis.css +107 -2
  326. package/dist/styles/menu.css +127 -0
  327. package/dist/styles/scroll-choreography.css +300 -0
  328. package/dist/styles/segmented-tabs.css +188 -86
  329. package/dist/styles/select.css +50 -0
  330. package/dist/styles/theme/bridges.css +22 -1
  331. package/dist/styles/theme/literals.css +11 -2
  332. package/dist/styles/theme/radius.css +6 -1
  333. package/dist/styles/tokens/color-radius.css +40 -13
  334. package/dist/styles/tokens/dark-arm.css +200 -20
  335. package/dist/styles/tokens/glass-deep.css +75 -0
  336. package/dist/styles/tokens/glass-fx.css +333 -0
  337. package/dist/styles/tokens/glass.css +95 -315
  338. package/dist/styles/tokens/light-dark.css +64 -22
  339. package/dist/styles/tokens/offsets.css +116 -0
  340. package/dist/styles/tokens/on-glass-fg.css +39 -0
  341. package/dist/styles/tokens/property-regs.css +130 -10
  342. package/dist/styles/tokens/scale-paper.css +155 -84
  343. package/dist/styles/tokens/scheme-motion.css +102 -46
  344. package/dist/styles/tokens/scroll-tokens.css +123 -0
  345. package/dist/styles/tokens/{offsets-sizing.css → sizing.css} +88 -89
  346. package/dist/styles/tokens.css +9 -3
  347. package/dist/styles/transitions.css +7 -7
  348. package/dist/styles/typography/scale.css +153 -0
  349. package/dist/styles/typography/semantic.css +220 -0
  350. package/dist/styles/typography/utilities.css +174 -0
  351. package/dist/styles/typography.css +23 -507
  352. package/dist/styles/utilities/a11y-overrides.css +33 -4
  353. package/dist/styles/utilities/animate.css +27 -24
  354. package/dist/styles/utilities/base-misc.css +255 -0
  355. package/dist/styles/utilities/base.css +100 -138
  356. package/dist/styles/utilities/btn.css +21 -202
  357. package/dist/styles/utilities/metal.css +189 -0
  358. package/dist/styles/utilities.css +14 -7
  359. package/dist/styles/view-transition.css +4 -1
  360. package/dist/switch.js +1 -1
  361. package/dist/tabs.js +275 -191
  362. package/dist/timeline.js +2 -2
  363. package/dist/toast.js +1 -1
  364. package/dist/toggle-chip.js +3 -1
  365. package/dist/toggle-group.js +1 -1
  366. package/dist/tooltip.js +1 -1
  367. package/dist/typewriter.js +1 -1
  368. package/dist/{useAnimatedNumber-C5I3wWd8.js → useAnimatedNumber-BfUq2bUM.js} +1 -1
  369. package/dist/useCanvas2D-B8w_E3Rr.js +83 -0
  370. package/dist/useConfiguratorState-DNlOh6c8.js +161 -0
  371. package/dist/useDragMorph-DgxnsVJz.js +102 -0
  372. package/dist/{useGlobalDark-yhL4Wp-s.js → useGlobalDark-C28t0VWJ.js} +22 -3
  373. package/dist/useLiquidPress-kfb4KX79.js +39 -0
  374. package/dist/usePointerVelocityField-JbRd5CrM.js +137 -0
  375. package/dist/{useRAFLoop-Bxv0o6L5.js → useRAFLoop-UYa4zoiN.js} +1 -1
  376. package/dist/useSpring-C0jyvEJB.js +40 -0
  377. package/dist/useSpringMount-q1amq1SJ.js +71 -0
  378. package/dist/useSpringPress-BsqPr7FJ.js +34 -0
  379. package/dist/useSurfaceAxis-g0NloYEF.js +7 -0
  380. package/dist/{useTouchGate-Dg7MQI1G.js → useTouchGate-CBZTD4SD.js} +1 -1
  381. package/dist/vReveal-Czsb7zQC.js +10 -0
  382. package/dist/vSpecular-CQFmLNzA.js +68 -0
  383. package/dist/vendor-CKmzio-i.js +226 -0
  384. package/dist/watercolor-dot.js +12 -5
  385. package/package.json +193 -25
  386. package/src/styles/animations.css +40 -31
  387. package/src/styles/border-progress.css +109 -0
  388. package/src/styles/cards.css +76 -0
  389. package/src/styles/configurator.css +35 -0
  390. package/src/styles/critical-partition.mjs +140 -0
  391. package/src/styles/dock/density.css +64 -0
  392. package/src/styles/dock/layers.css +54 -30
  393. package/src/styles/dock/morph.css +124 -7
  394. package/src/styles/dock/overflow.css +31 -2
  395. package/src/styles/dock/rail-extend.css +168 -71
  396. package/src/styles/dock/section.css +59 -0
  397. package/src/styles/dock/shell.css +83 -16
  398. package/src/styles/dock-controls/icon-button.css +11 -1
  399. package/src/styles/dock-controls/tab-button.css +24 -83
  400. package/src/styles/dock-controls/triggers.css +7 -0
  401. package/src/styles/dock.css +38 -3
  402. package/src/styles/drawer.css +123 -35
  403. package/src/styles/feedback-tone.css +104 -0
  404. package/src/styles/glass/deep.css +44 -0
  405. package/src/styles/glass/ladder.css +154 -52
  406. package/src/styles/glass/material.css +78 -15
  407. package/src/styles/glass/reveal.css +136 -0
  408. package/src/styles/glass/rim.css +100 -0
  409. package/src/styles/glass/surface-axis.css +113 -0
  410. package/src/styles/glass/surfaces.css +189 -15
  411. package/src/styles/glass-refract.css +96 -44
  412. package/src/styles/glass-specular-track.css +7 -0
  413. package/src/styles/glass.css +8 -2
  414. package/src/styles/hover-popover.css +7 -6
  415. package/src/styles/icon-chip.css +211 -0
  416. package/src/styles/index.css +78 -4
  417. package/src/styles/instrument-chassis.css +107 -2
  418. package/src/styles/menu.css +127 -0
  419. package/src/styles/scroll-choreography.css +300 -0
  420. package/src/styles/segmented-tabs.css +184 -84
  421. package/src/styles/select.css +50 -0
  422. package/src/styles/theme/bridges.css +22 -1
  423. package/src/styles/theme/literals.css +11 -2
  424. package/src/styles/theme/radius.css +6 -1
  425. package/src/styles/tokens/color-radius.css +40 -13
  426. package/src/styles/tokens/dark-arm.css +200 -20
  427. package/src/styles/tokens/glass-deep.css +75 -0
  428. package/src/styles/tokens/glass-fx.css +333 -0
  429. package/src/styles/tokens/glass.css +95 -315
  430. package/src/styles/tokens/light-dark.css +64 -22
  431. package/src/styles/tokens/offsets.css +116 -0
  432. package/src/styles/tokens/on-glass-fg.css +39 -0
  433. package/src/styles/tokens/property-regs.css +130 -10
  434. package/src/styles/tokens/scale-paper.css +155 -84
  435. package/src/styles/tokens/scheme-motion.css +102 -46
  436. package/src/styles/tokens/scroll-tokens.css +123 -0
  437. package/src/styles/tokens/{offsets-sizing.css → sizing.css} +88 -89
  438. package/src/styles/tokens.css +9 -3
  439. package/src/styles/transitions.css +7 -7
  440. package/src/styles/typography/scale.css +153 -0
  441. package/src/styles/typography/semantic.css +220 -0
  442. package/src/styles/typography/utilities.css +174 -0
  443. package/src/styles/typography.css +23 -507
  444. package/src/styles/utilities/a11y-overrides.css +33 -4
  445. package/src/styles/utilities/animate.css +27 -24
  446. package/src/styles/utilities/base-misc.css +255 -0
  447. package/src/styles/utilities/base.css +100 -138
  448. package/src/styles/utilities/btn.css +21 -202
  449. package/src/styles/utilities/metal.css +189 -0
  450. package/src/styles/utilities.css +14 -7
  451. package/src/styles/view-transition.css +4 -1
  452. package/dist/CardAction-Cj2eycQ2.js +0 -157
  453. package/dist/DialogContent-Dl9WkAoS.js +0 -100
  454. package/dist/Notification-DdwNxIrI.js +0 -100
  455. package/dist/NumberFieldContent-CqaN-SvN.js +0 -145
  456. package/dist/PopoverContent-BYwt2-4x.js +0 -121
  457. package/dist/TabsList-Dttss653.js +0 -105
  458. package/dist/Toaster-D6q4HtXu.js +0 -263
  459. package/dist/button-ChXMfsud.js +0 -81
  460. package/dist/check-njhk-vfu.js +0 -7
  461. package/dist/chevron-down-DKkxb4VV.js +0 -7
  462. package/dist/chevron-right-CPXbqQQz.js +0 -7
  463. package/dist/chevron-up-n_24SqI-.js +0 -7
  464. package/dist/components/custom/underline/GlassUnderline.vue.d.ts +0 -84
  465. package/dist/components/custom/underline/index.d.ts +0 -2
  466. package/dist/components/custom/underline/types.d.ts +0 -56
  467. package/dist/components/ui/carousel/CarouselDots.vue.d.ts +0 -4
  468. package/dist/createLucideIcon-DydS2qgk.js +0 -43
  469. package/dist/minimize-2-BV31Ob_h.js +0 -38
  470. package/dist/search-BSGrf2Sk.js +0 -12
  471. package/dist/sheet-1fChZjtw.js +0 -214
  472. package/dist/underline.d.ts +0 -1
  473. package/dist/underline.js +0 -85
  474. package/dist/useCanvas2D-ClrQuZtp.js +0 -96
  475. package/dist/useConfiguratorState-DAoeHVue.js +0 -287
  476. package/dist/useSpecularTracking-Bo5su68i.js +0 -32
  477. package/dist/useSpringMount-CI2jOstM.js +0 -108
  478. package/dist/vReveal-CqaCz_mC.js +0 -44
  479. package/dist/x-BUwTKe50.js +0 -10
  480. /package/dist/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-68dEXIAl.js} +0 -0
  481. /package/dist/{InstrumentChassis-UUJX0-mW.js → InstrumentChassis-Bx0F_q5g.js} +0 -0
  482. /package/dist/{Label-r3WzWrsj.js → Label-C2ejNWeC.js} +0 -0
  483. /package/dist/{ModalOverlay-DVLI2VRr.js → ModalOverlay-D1VrWyoi.js} +0 -0
  484. /package/dist/{PaperBackdrop-DIXTtVq6.js → PaperBackdrop-Vf3tlpvd.js} +0 -0
  485. /package/dist/{SelectGroup-aumMgWLs.js → SelectGroup-DwwjicPY.js} +0 -0
  486. /package/dist/{SelectSeparator-BQ_1Fcbp.js → SelectSeparator-DXswVdRz.js} +0 -0
  487. /package/dist/{Separator-0JE6LtNu.js → Separator-pKF0oA4M.js} +0 -0
  488. /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-C1je1s0u.js} +0 -0
  489. /package/dist/{badge-UILT_3pZ.js → badge-D9XWW4GT.js} +0 -0
  490. /package/dist/{color-CUYeFbgd.js → color-DweYl7pE.js} +0 -0
  491. /package/dist/{constants-CS75AWHG.js → constants-BPOqYJAm.js} +0 -0
  492. /package/dist/{createContext-BM46COQ-.js → createContext-CpBNTRMI.js} +0 -0
  493. /package/dist/{prng-D27-B3tK.js → prng-Za0Rmgag.js} +0 -0
  494. /package/dist/{resolveCanvasColor-BBiYfp8g.js → resolveCanvasColor-CUyHr5Uu.js} +0 -0
  495. /package/dist/{springPresets--YdWTHtm.js → springPresets-CFQGQfdl.js} +0 -0
  496. /package/dist/{useIntersectionPause-Cc-H9ees.js → useIntersectionPause-Bj4sPkMh.js} +0 -0
  497. /package/dist/{useInterval-iHludrxk.js → useInterval-CvK1mL92.js} +0 -0
  498. /package/dist/{useKeyboardShortcuts-Be3w_Rwk.js → useKeyboardShortcuts-BXWXOZ-9.js} +0 -0
  499. /package/dist/{useLiquidFlex-BL0lLLN2.js → useLiquidFlex-mZPMiNXh.js} +0 -0
  500. /package/dist/{useResizeObserver-BhgdhOIj.js → useResizeObserver-Bpoi7tRE.js} +0 -0
  501. /package/dist/{useResolveTokenColor-Dvn2RZJW.js → useResolveTokenColor-vAylyR0x.js} +0 -0
  502. /package/dist/{useScrollProgress-Dlvx-L3v.js → useScrollProgress-D7bYU2RK.js} +0 -0
  503. /package/dist/{useSortable-muI29agz.js → useSortable-DHjtZSEd.js} +0 -0
  504. /package/dist/{useTextHighlight-DmRYkOBx.js → useTextHighlight-CWEi25hf.js} +0 -0
  505. /package/dist/{useTimer-Dzarvzuk.js → useTimer-BHJOKr35.js} +0 -0
  506. /package/dist/{useUserInvalidAria-B2h6jAM_.js → useUserInvalidAria-y5namzeE.js} +0 -0
  507. /package/dist/{useViewportReady-B40FK4Pa.js → useViewportReady-anbac3m6.js} +0 -0
@@ -1,20 +1,39 @@
1
1
  /* ════════════════════════════════════════════════════════════════════════
2
- The unified SegmentedTabs grammar. ONE indicator body across three variants
3
- (segmented / pill / underline), gliding on the CONTROL register
4
- (`--spring-snappy`) with the volume-preserving travel-squish.
2
+ The standardized SegmentedTabs grammar (BA.W-TABS). ONE indicator engine,
3
+ TWO materials, ONE orientation axis.
5
4
 
6
- Carved out of the SFC `<style scoped>` into a styles/ partial (the drawer.css precedent), `@import`-ed into styles/index.css in cascade order.
7
- Every selector is class/attribute-based (no Vue `data-v-*` scope hash), so the
8
- rules paint un-scoped — the `.segmented-tabs`-family classes the template emits
9
- carry them.
5
+ · PILL (DEFAULT) — THE GLASS MATERIAL. The track rides `--glass-bg-quiet`
6
+ + a hairline edge; the active indicator is the selected-reads-as-
7
+ glass plate (`--glass-bg-floating`, the W-REGISTER-IOS tier — a
8
+ glass tint FORWARD of the track, NEVER a saturated hue, never an
9
+ opaque `bg-card`). It GLIDES + SQUISHES. Absorbs the retired
10
+ `segmented` value (one register — the user kept it by name).
11
+ · UNDERLINE — THE PAPER MATERIAL. NO plate, NO blur, NO track surface — the
12
+ 2px `--foreground` ink hairline riding the shared `.paper-ink-mark`
13
+ register (W-SURFACE-AXIS mints it; CONSUMED here, never re-minted).
14
+ The engine drives the hairline's inline position/width only. It
15
+ SLIDES (no squish — a hairline does not deform).
16
+
17
+ ORIENTATION is axis-derived (horizontal default · vertical). The vertical
18
+ indicator tracks the BLOCK axis (the R10-2 horizontal-only-utilities slab class
19
+ is structurally impossible — the engine keys off a computed `dim`). Vertical
20
+ underline = the leading-edge ink rail (the math-paper `border-l` read).
21
+
22
+ Carved out of the SFC `<style scoped>` into a styles/ partial (the drawer.css
23
+ precedent), `@import`-ed into styles/index.css in cascade order. Every selector
24
+ is class/attribute-based (no Vue `data-v-*` scope hash), so the rules paint
25
+ un-scoped — the `.segmented-tabs`-family classes the template emits carry them.
10
26
 
11
27
  `--bouncy-track-trim` is the token the track padding, the indicator
12
28
  `inset-block`, AND the `anchor()` offset all read so they cannot drift (the W20
13
29
  magic-number lock). `--stretch` is the JS-written travel-squish scalar (1 at
14
30
  rest); the indicator pairs it reciprocally (stretch X, compress Y →
15
- volume-preserving).
31
+ volume-preserving). The glide + squish read ONE clock — `--tab-indicator-duration`
32
+ (= `--spring-snappy-duration`, the W-GLASS-CAL calibrated snappy settle, ~0.34s)
33
+ — so the channels cannot desync and the generic-300ms sub-pixel tail is gone.
16
34
  ════════════════════════════════════════════════════════════════════════ */
17
35
 
36
+ /* ── The PILL track (the glass material — DEFAULT) ── */
18
37
  .segmented-tabs {
19
38
  --bouncy-track-trim: 0.1875rem;
20
39
  --bouncy-track-radius: 0.4375rem;
@@ -28,10 +47,22 @@
28
47
  grid-auto-columns: 1fr;
29
48
  padding: var(--bouncy-track-trim);
30
49
  border-radius: var(--bouncy-track-radius);
31
- /* AX.W54 — the track rides the glass wash tier (the flagship surface),
32
- not an opaque --muted-medium plate. */
33
- background: var(--glass-bg-wash);
34
- backdrop-filter: var(--glass-blur-wash);
50
+ /* BA.W-TABS — the pill track rides the glass quiet tier (the warm glass
51
+ material, the no-gray register) + a hairline edge. NOT a `--surface-tint`
52
+ gray plate (the R10-5 no-gray cut). */
53
+ background: var(--glass-bg-quiet);
54
+ backdrop-filter: var(--glass-blur-quiet);
55
+ -webkit-backdrop-filter: var(--glass-blur-quiet);
56
+ box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--border) 24%, transparent);
57
+ }
58
+
59
+ /* ── The vertical orientation axis (the block stack) ── */
60
+ .segmented-tabs--vertical {
61
+ display: inline-flex;
62
+ flex-direction: column;
63
+ grid-auto-flow: unset;
64
+ grid-auto-columns: unset;
65
+ align-items: stretch;
35
66
  }
36
67
 
37
68
  @media (min-width: 640px) {
@@ -42,13 +73,16 @@
42
73
  }
43
74
  }
44
75
 
45
- /* ── The shared indicator body ── */
76
+ /* ── The shared indicator body (the PILL plate) ── */
46
77
  .segmented-indicator {
47
78
  position: absolute;
48
- /* AX.W54 — the active indicator rides the glass quiet tier so it reads
49
- FORWARD of the wash track (the keyframes-dock-selected model). */
50
- background: var(--glass-bg-quiet);
51
- backdrop-filter: var(--glass-blur-quiet);
79
+ /* BA.W-TABS — the active pill indicator rides the glass FLOATING tier (the
80
+ W-REGISTER-IOS "selected reads as glass" register), reading FORWARD of the
81
+ quiet-tier track. A glass tint, NEVER a saturated `--foreground` fill or an
82
+ opaque `bg-card`. */
83
+ background: var(--glass-bg-floating);
84
+ backdrop-filter: var(--glass-blur-floating);
85
+ -webkit-backdrop-filter: var(--glass-blur-floating);
52
86
  z-index: 0;
53
87
  inset-block: var(--bouncy-track-trim);
54
88
  border-radius: var(--bouncy-slider-radius);
@@ -62,46 +96,69 @@
62
96
  scale: var(--stretch) calc(1 / var(--stretch));
63
97
  }
64
98
 
99
+ /* Vertical: the indicator deforms on the BLOCK axis (compress X / stretch Y) and
100
+ pads on the inline axis instead. */
101
+ .segmented-tabs--vertical .segmented-indicator {
102
+ inset-block: auto;
103
+ inset-inline: var(--bouncy-track-trim);
104
+ scale: calc(1 / var(--stretch)) var(--stretch);
105
+ }
106
+
65
107
  @media (prefers-reduced-motion: no-preference) {
66
108
  .segmented-indicator {
67
- /* The squish releases on the same clock as the glide (the snappy
68
- settle). Under PRM the scale stays 1 (the JS write early-returns). */
69
- transition: scale var(--duration-normal) var(--spring-snappy);
109
+ /* ONE composited transform pair (translate+scale) on ONE calibrated
110
+ clock — the glide + the squish share `--tab-indicator-duration` so they
111
+ cannot desync (the R10-2 multi-property-desync class collapsed). */
112
+ transition: scale var(--tab-indicator-duration) var(--spring-snappy);
70
113
  }
71
114
  }
72
115
 
73
116
  /* Fallback (JS-measured) path — the indicator is moved by inline
74
- `transform`/`width` writes; animate those alongside the squish scale. */
117
+ `transform`/`width` writes; animate those alongside the squish scale on the ONE
118
+ calibrated clock. */
75
119
  .segmented-indicator--js {
76
120
  transition:
77
- transform var(--duration-normal) var(--spring-snappy),
78
- width var(--duration-normal) var(--spring-snappy),
79
- scale var(--duration-normal) var(--spring-snappy),
121
+ transform var(--tab-indicator-duration) var(--spring-snappy),
122
+ width var(--tab-indicator-duration) var(--spring-snappy),
123
+ height var(--tab-indicator-duration) var(--spring-snappy),
124
+ scale var(--tab-indicator-duration) var(--spring-snappy),
80
125
  opacity var(--duration-fast) ease;
81
126
  }
82
127
 
83
128
  /* Anchor path — the indicator tethers to the active button's `anchor-name`.
84
129
  `inset` reads the anchor's edges; the browser interpolates `inset` between
85
130
  buttons on selection (the glide), and the JS `--stretch` write deforms it
86
- (the squish) on the SAME snappy clock. */
131
+ (the squish) on the SAME calibrated clock. */
87
132
  @supports (position-anchor: --x) {
88
133
  .segmented-indicator--anchor {
89
134
  position-anchor: --gl-tab-active;
135
+ /* The four edge longhands tether to the active button's anchor edges (the
136
+ inline-trimmed band over the full anchor block extent). NO `inset-block:
137
+ auto` shorthand here — it would reset the block longhands above it to auto
138
+ and collapse the indicator to height 0 (the live-found clobber). */
90
139
  inset-block-start: calc(anchor(top) + 0.1875rem);
91
140
  inset-block-end: calc(anchor(bottom) + 0.1875rem);
92
141
  inset-inline-start: anchor(left);
93
142
  inset-inline-end: anchor(right);
94
- inset-block: auto;
95
143
  opacity: 1;
96
144
  }
145
+ /* Vertical: the anchor band runs the FULL block extent of the active button
146
+ (the indicator tracks the column, not the row) with the inline axis trimmed. */
147
+ .segmented-tabs--vertical .segmented-indicator--anchor {
148
+ inset-block-start: anchor(top);
149
+ inset-block-end: anchor(bottom);
150
+ inset-inline-start: calc(anchor(left) + 0.1875rem);
151
+ inset-inline-end: calc(anchor(right) + 0.1875rem);
152
+ }
97
153
  @media (prefers-reduced-motion: no-preference) {
98
154
  .segmented-indicator--anchor {
99
155
  transition:
100
- inset var(--duration-normal) var(--spring-snappy),
101
- scale var(--duration-normal) var(--spring-snappy);
156
+ inset var(--tab-indicator-duration) var(--spring-snappy),
157
+ scale var(--tab-indicator-duration) var(--spring-snappy);
102
158
  }
103
159
  }
104
- .segmented-tabs:not(.segmented-tabs--underline) .segmented-tab[aria-pressed="true"] {
160
+ .segmented-tabs:not(.segmented-tabs--underline) .segmented-tab[aria-pressed="true"],
161
+ .segmented-tabs:not(.segmented-tabs--underline) .segmented-tab[aria-selected="true"] {
105
162
  anchor-name: --gl-tab-active;
106
163
  }
107
164
  }
@@ -111,11 +168,20 @@
111
168
  inset-block: 0.25rem;
112
169
  border-radius: 0.375rem;
113
170
  }
171
+ .segmented-tabs--vertical .segmented-indicator {
172
+ inset-block: auto;
173
+ inset-inline: 0.25rem;
174
+ }
114
175
  @supports (position-anchor: --x) {
115
176
  .segmented-indicator--anchor {
116
177
  inset-block-start: calc(anchor(top) + 0.25rem);
117
178
  inset-block-end: calc(anchor(bottom) + 0.25rem);
118
- inset-block: auto;
179
+ }
180
+ .segmented-tabs--vertical .segmented-indicator--anchor {
181
+ inset-block-start: anchor(top);
182
+ inset-block-end: anchor(bottom);
183
+ inset-inline-start: calc(anchor(left) + 0.25rem);
184
+ inset-inline-end: calc(anchor(right) + 0.25rem);
119
185
  }
120
186
  }
121
187
  }
@@ -161,33 +227,8 @@
161
227
  filter: blur(0.5px);
162
228
  }
163
229
 
164
- /* ── Pill variant ── */
165
- .segmented-tabs--pill {
166
- border-radius: var(--radius-pill);
167
- background: var(--surface-tint-6);
168
- padding: 0.125rem;
169
- gap: 0.125rem;
170
- }
171
-
172
- .segmented-tabs--pill .segmented-indicator {
173
- border-radius: var(--radius-pill);
174
- background: var(--foreground);
175
- box-shadow: none;
176
- inset-block: 0.125rem;
177
- }
178
-
179
- .segmented-tabs--pill .segmented-tab {
180
- border-radius: var(--radius-pill);
181
- padding: 0.125rem 0.625rem;
182
- font-size: 0.75rem;
183
- font-weight: 500;
184
- }
185
-
186
- .segmented-tabs--pill .segmented-tab[aria-pressed="true"] {
187
- color: var(--background);
188
- }
189
-
190
- /* ── Underline variant ── (the panel-nav `role=tablist` strip) */
230
+ /* ── Underline variant ── (THE PAPER MATERIAL — the panel-nav `role=tablist` strip)
231
+ NO plate, NO blur, NO track surface — only the ink hairline paints. */
191
232
  .segmented-tabs--underline {
192
233
  display: flex;
193
234
  grid-auto-flow: unset;
@@ -195,7 +236,27 @@
195
236
  gap: 0.25rem;
196
237
  padding: 0;
197
238
  background: none;
239
+ backdrop-filter: none;
240
+ -webkit-backdrop-filter: none;
241
+ box-shadow: none;
198
242
  border-radius: 0;
243
+ /* BA.W-SURFACE-AXIS scope 8 — the underline indicator COMPOSES the shared
244
+ `.paper-ink-mark` PAPER ink-hairline register (the 2px --foreground ink mark
245
+ on a paper surface — no plate, no blur, no glass). The register tokens are
246
+ declared here on the host; the `::before` pseudo reads them. ≥2 consumers
247
+ with the math-paper section rail (a HORIZONTAL underline here, a VERTICAL
248
+ left-edge rail there — the SAME mark register, parameterized weight/color).
249
+ The register itself lives in glass/surface-axis.css (CONSUMED, never
250
+ re-minted — a shape gap triumvirates at the minting wave). */
251
+ --paper-ink-mark-weight: 2px;
252
+ --paper-ink-mark-color: var(--foreground);
253
+ }
254
+
255
+ /* Vertical underline = the leading-edge ink rail (the math-paper `border-l` read).
256
+ The hairline runs the block extent of the active tab on its inline-start edge. */
257
+ .segmented-tabs--underline.segmented-tabs--vertical {
258
+ flex-direction: column;
259
+ align-items: stretch;
199
260
  }
200
261
 
201
262
  /* The active tab is the anchor the underline rule tethers to. */
@@ -204,28 +265,44 @@
204
265
  }
205
266
 
206
267
  /* The underline indicator pseudo, position-anchored to the active tab; the
207
- browser interpolates `inset` between anchors on selection, and the `scale`
208
- reads the same `--stretch` squish the slider does (one indicator grammar). */
268
+ browser interpolates `inset` between anchors on selection on the ONE calibrated
269
+ clock, and the `scale` reads the same `--stretch` squish the slider does (one
270
+ indicator grammar). */
209
271
  .segmented-tabs--underline::before {
210
272
  content: "";
211
273
  position: absolute;
212
274
  position-anchor: --gl-tab-active;
213
- inset-block-start: calc(anchor(bottom) - 2px);
275
+ /* BA.W-SURFACE-AXIS scope 8 — the 2px ink mark reads the shared
276
+ `.paper-ink-mark` register (weight + --foreground ink) the host declares. */
277
+ inset-block-start: calc(anchor(bottom) - var(--paper-ink-mark-weight, 2px));
214
278
  inset-inline-start: anchor(left);
215
279
  inset-inline-end: anchor(right);
216
- block-size: 2px;
217
- background: var(--foreground);
280
+ block-size: var(--paper-ink-mark-weight, 2px);
281
+ background: var(--paper-ink-mark-color, var(--foreground));
218
282
  border-radius: var(--radius-sm);
219
283
  transform-origin: center;
220
284
  scale: var(--stretch) 1;
221
285
  }
222
286
 
287
+ /* Vertical underline pseudo — the ink mark is a VERTICAL leading-edge rail (the
288
+ `border-l` read): a 2px-wide column on the active tab's inline-start edge,
289
+ running its full block extent. */
290
+ .segmented-tabs--underline.segmented-tabs--vertical::before {
291
+ inset-block-start: anchor(top);
292
+ inset-block-end: anchor(bottom);
293
+ inset-inline-start: calc(anchor(left) - var(--paper-ink-mark-weight, 2px));
294
+ inset-inline-end: auto;
295
+ block-size: auto;
296
+ inline-size: var(--paper-ink-mark-weight, 2px);
297
+ scale: 1 var(--stretch);
298
+ }
299
+
223
300
  @media (prefers-reduced-motion: no-preference) {
224
301
  .segmented-tabs--underline::before {
225
- /* control register — the glide + the squish on one snappy clock. */
302
+ /* control register — the glide + the squish on the ONE calibrated clock. */
226
303
  transition:
227
- inset var(--duration-normal) var(--spring-snappy),
228
- scale var(--duration-normal) var(--spring-snappy);
304
+ inset var(--tab-indicator-duration) var(--spring-snappy),
305
+ scale var(--tab-indicator-duration) var(--spring-snappy);
229
306
  }
230
307
  }
231
308
 
@@ -235,7 +312,11 @@
235
312
  display: none;
236
313
  }
237
314
  .segmented-tabs--underline .segmented-tab[aria-selected="true"] {
238
- border-bottom: 2px solid var(--foreground);
315
+ border-bottom: var(--paper-ink-mark-weight, 2px) solid var(--foreground);
316
+ }
317
+ .segmented-tabs--underline.segmented-tabs--vertical .segmented-tab[aria-selected="true"] {
318
+ border-bottom: none;
319
+ border-inline-start: var(--paper-ink-mark-weight, 2px) solid var(--foreground);
239
320
  }
240
321
  }
241
322
 
@@ -243,29 +324,48 @@
243
324
  padding: 0.375rem 0.75rem;
244
325
  font-size: inherit;
245
326
  border-radius: 0.25rem;
246
- transition: color var(--duration-normal) var(--ease-standard);
327
+ /* The tab-text colour cross-fade rides the fast generic clock (the §6 doctrine
328
+ — a colour shift is a bezier ease, never a spring), matching the pill tab
329
+ buttons. The INDICATOR glide is the only channel on the calibrated spring
330
+ clock. */
331
+ transition: color var(--duration-fast) ease;
332
+ }
333
+
334
+ .segmented-tabs--underline.segmented-tabs--vertical .segmented-tab {
335
+ text-align: start;
247
336
  }
248
337
 
249
338
  .segmented-tabs--underline .segmented-tab:hover {
250
- color: var(--surface-tint-70);
339
+ color: color-mix(in oklab, var(--foreground) 70%, transparent);
251
340
  }
252
341
 
253
- /* ── Overflow variants ──
254
- * `--scroll`/`--auto` swap the inline-grid for a flex row with intrinsic-width
255
- * tracks so tab text never clips; the container scrolls horizontally.
256
- */
257
- .segmented-tabs--scroll,
258
- .segmented-tabs--auto {
259
- display: flex;
260
- grid-auto-flow: unset;
261
- grid-auto-columns: unset;
262
- overflow-x: auto;
263
- overflow-y: hidden;
264
- width: 100%;
342
+ /* ════════════════════════════════════════════════════════════════════════
343
+ BB.W-DRAG-MORPH — the `.glass-drag-lift` decoration (the pull affordance).
344
+
345
+ The `useDragMorph` consumer adds this class to the morph element while
346
+ `dragging` is true (the SegmentedTabs `:draggable` indicator; the
347
+ DockLayerGroup pull rail). It is the visual "this is grabbable + grabbed"
348
+ affordance — the GRAB cursor + a sub-perceptual `--glass-specular` catch-light
349
+ lift + the `will-change: transform` compositor hint that promotes the lozenge
350
+ to its own layer for the 1:1 follow. It carries NO transform itself (the
351
+ translate + squish are the primitive's own `translate`/`--stretch` writes, the
352
+ §6 compositor channels); this class only paints the affordance + the hint.
353
+
354
+ The grab cursor sits on the morph element AT REST too (a draggable indicator
355
+ reads grabbable before the grab), so `.glass-drag-grabbable` marks the rest
356
+ affordance and `.glass-drag-lift` adds the grabbing state. PRM does not gate
357
+ the cursor/hint (they are not motion); the lift is a static specular nudge. */
358
+ .glass-drag-grabbable {
359
+ cursor: grab;
360
+ touch-action: none;
265
361
  }
266
362
 
267
- .segmented-tabs--scroll {
268
- --mask-fade-width: 0.5rem;
269
- padding-inline-end: calc(0.125rem + var(--mask-fade-width));
270
- scroll-padding-inline: var(--mask-fade-width);
363
+ .glass-drag-lift {
364
+ cursor: grabbing;
365
+ /* Promote to its own compositor layer for the 1:1 follow (the translate write
366
+ is compositor-only; the hint keeps the plate off the main-thread paint). */
367
+ will-change: transform;
368
+ /* Sub-perceptual catch-light lift — the grabbed lozenge reads a hair brighter
369
+ at its specular edge (the W-GLASS-CAL specular register, disco-FREE). */
370
+ --glass-specular: 0.1;
271
371
  }
@@ -0,0 +1,50 @@
1
+ /*
2
+ * select.css — the Select content collision-bound, pre-compiled (BA.W-EMISSION).
3
+ *
4
+ * THE DEFECT (BA-VJS-A2-WO1 / valuejs-fold A-2): SelectContent.vue authored its
5
+ * collision-bound as a Tailwind ARBITRARY-BRACKET utility
6
+ * [max-height:var(--reka-popper-available-height,60dvh)]
7
+ * which is correct in SOURCE but compiles ONLY into a `dist/*.js` render-function
8
+ * chunk no consumer content-scan reaches (and the P9 emitComponentUtilities
9
+ * safelist rejects fully-arbitrary bracket tokens by construction). So in every
10
+ * consumer the bound NEVER painted — `getComputedStyle(content).maxHeight === "none"`
11
+ * — and a 16-item dropdown rendered 745px tall, overflowing a 900px viewport by
12
+ * 125px (the value.js U-DROPDOWN capture, the binding RED evidence).
13
+ *
14
+ * THE FIX: move the bound to a PRECOMPILED rule that ships in `dist/glass-ui.css`
15
+ * regardless of consumer JIT reach — it is a plain attribute-selector rule, not a
16
+ * Tailwind utility, so it always emits. The cap is the kf donor's default
17
+ * `min(24rem, 60dvh)` (kf design-idioms.css `--easing-dropdown-max-h`; the U8
18
+ * bounded-scroll reference), TIGHTENED by reka's measured
19
+ * `--reka-popper-available-height` on a short viewport via the inner `min()`.
20
+ * `overflow-y: auto` (already on the content via the CVA base) gives the inner
21
+ * scroll. The behaviour is identical to the authored class — it now SHIPS.
22
+ *
23
+ * --select-content-max-h is the ONE retint knob (a consumer widens/narrows the cap
24
+ * by overriding it on any ancestor). The default folds reka's available-height in:
25
+ * when reka reports a height (popper measured), the bound is the MIN of that and
26
+ * the 24rem/60dvh ceiling, so the panel never exceeds the viewport AND never grows
27
+ * past the comfortable ceiling.
28
+ */
29
+
30
+ :root {
31
+ /* The comfortable ceiling — the kf donor default. */
32
+ --select-content-max-h: min(24rem, 60dvh);
33
+ }
34
+
35
+ [data-slot="select-content"] {
36
+ /* The collision-bound: the comfortable ceiling, tightened by reka's measured
37
+ available height on a short viewport. `--reka-popper-available-height` is
38
+ written by reka-ui's popper-positioner; on a tall viewport it exceeds the
39
+ ceiling (so the ceiling wins) and on a short one it clamps the panel to the
40
+ space below the trigger (so the panel bottoms inside the viewport). When reka
41
+ has not yet measured, the fallback is the ceiling alone. */
42
+ max-height: min(
43
+ var(--select-content-max-h),
44
+ var(--reka-popper-available-height, var(--select-content-max-h))
45
+ );
46
+ /* The inner-scroll affordance ships with the bound (the CVA base also sets
47
+ overflow-y-auto; restated here so the bound + scroll travel together as one
48
+ precompiled contract). */
49
+ overflow-y: auto;
50
+ }
@@ -47,6 +47,9 @@
47
47
 
48
48
  /* Letter spacing → tracking-* utilities */
49
49
  --tracking-tight: var(--type-tracking-tight);
50
+ /* BB.W-DISPLAY-TRACKING — the display-ONLY Apple −1.5% tracking rung bridged
51
+ to the `tracking-display` utility (the token-first consumer affordance). */
52
+ --tracking-display: var(--type-tracking-display);
50
53
  --tracking-snug: var(--type-tracking-snug);
51
54
  --tracking-normal: var(--type-tracking-normal);
52
55
  --tracking-wide: var(--type-tracking-wide);
@@ -211,6 +214,22 @@
211
214
  --color-gold-dark: var(--gold-dark);
212
215
  --color-gold-deep: var(--gold-deep);
213
216
 
217
+ /* BA.W-ATLAS-RECONCILE C-3 — the silver structure metal (gold's mirror; the
218
+ InstrumentChassis `variant="structure"` register). The @theme namespace var
219
+ a `text-silver`/`bg-silver` utility resolves through. */
220
+ --color-silver: var(--silver);
221
+ --color-silver-light: var(--silver-light);
222
+ --color-silver-dark: var(--silver-dark);
223
+ --color-silver-deep: var(--silver-deep);
224
+
225
+ /* BB.W-METAL-SHIMMER — the bronze brand metal (the third member of the
226
+ gold·silver·bronze triad; the @theme namespace bridge so a `text-bronze`/
227
+ `bg-bronze` utility resolves through, mirroring gold/silver). */
228
+ --color-bronze: var(--bronze);
229
+ --color-bronze-light: var(--bronze-light);
230
+ --color-bronze-dark: var(--bronze-dark);
231
+ --color-bronze-deep: var(--bronze-deep);
232
+
214
233
  --color-rainbow-red: var(--rainbow-red);
215
234
  --color-rainbow-orange: var(--rainbow-orange);
216
235
  --color-rainbow-yellow: var(--rainbow-yellow);
@@ -333,5 +352,7 @@
333
352
  --transition-duration-panel: var(--duration-panel);
334
353
  --transition-duration-xl: var(--duration-xl);
335
354
  --transition-duration-xxl: var(--duration-xxl);
336
- --transition-duration-sparkle: var(--duration-sparkle);
355
+ /* BA.W-GLASS-CAL — `--transition-duration-sparkle` bridge DELETED with the
356
+ `--duration-sparkle` token (the disco retirement); no `duration-sparkle`
357
+ utility consumer. */
337
358
  }
@@ -30,10 +30,19 @@
30
30
  band-pass vs one-pass sweep) want different tempos. The pre-V audit
31
31
  (C-c §5.3) flagged this as a "naming inversion"; it is intentional —
32
32
  documented here so the offset is searchable. The orphan
33
- `--duration-shimmer-slow` (8s) was excised in V.W2 T5. */
33
+ `--duration-shimmer-slow` (8s) was excised in V.W2 T5.
34
+
35
+ BB.W-METAL-SHIMMER — `--animate-gold-shimmer` re-points onto the metal-
36
+ PARAMETERIZED `metal-shimmer-sweep` keyframe (the gold-only
37
+ `gold-shimmer-slide` RETIRED — clean break, no alias); the duration/tempo
38
+ are byte-preserved (the gold READ unchanged). `--animate-metal` is the
39
+ brand-metal family's own row on the slow `--duration-metal` (6s) clock — the
40
+ `.metal-{gold,silver,bronze}`/`.metal-*-border`/`.metal-rainbow-rim`
41
+ utilities read it (utilities/metal.css). */
34
42
  --animate-shimmer: shimmer var(--duration-shimmer-fast) linear infinite;
35
43
  --animate-shimmer-sweep: shimmer-sweep var(--duration-shimmer) ease-in-out infinite;
36
- --animate-gold-shimmer: gold-shimmer-slide var(--duration-shimmer) linear infinite;
44
+ --animate-gold-shimmer: metal-shimmer-sweep var(--duration-shimmer) linear infinite;
45
+ --animate-metal: metal-shimmer-sweep var(--duration-metal) linear infinite;
37
46
  --animate-shake: shake 0.5s ease-in-out;
38
47
 
39
48
  /* ═══════════════════════════════════════════════
@@ -64,7 +64,12 @@
64
64
  |x|^(2K) + |y|^(2K) = 1, so the curve exponent n = 2K. The CSS `squircle`
65
65
  keyword == `superellipse(2)` == n=4 — the iOS-idiomatic web squircle. The
66
66
  k-PRIMITIVE band (a consumer dials 1.7–2.4 to taste; W42's dock-morph calc()s
67
- its animated k against this ONE vocabulary — do not re-define a second k). */
67
+ its animated k against this ONE vocabulary — do not re-define a second k).
68
+ (BB.W-DEAD-SWEEP re-ground: --corner-k-soft / --corner-k-sharp have no
69
+ runtime var() consumer but ARE pinned by proof:squircle-language (the
70
+ TOKEN-AXIS-EXISTS clause asserts both rungs are minted) — so KEPT, not
71
+ swept; the clean-break delete is a coordination follow-up once the gate
72
+ re-anchors.) */
68
73
  --corner-k-squircle: 2; /* the squircle — superellipse(2), n=4 */
69
74
  --corner-k-soft: 1.7; /* gentler, between round and squircle — n≈3.4 */
70
75
  --corner-k-sharp: 2.4; /* crisper square-bias for large surfaces — n≈4.8 */
@@ -23,28 +23,55 @@
23
23
  5 → 6 : 10 L (muted text → strong-muted text, secondary register)
24
24
 
25
25
  Semantic aliases re-point into the scale — no back-compat shims.
26
- ═══════════════════════════════════════════════ */
27
- --neutral-0: hsl(48 12% 98%); /* L 98 — page surface */
28
- --neutral-1: hsl(48 10% 95%); /* L 95 — soft field bg */
29
- --neutral-2: hsl(48 9% 90%); /* L 90 — chip / tab-inactive bg */
30
- --neutral-3: hsl(48 8% 82%); /* L 82 — hover / highlight bg */
31
- --neutral-4: hsl(48 7% 70%); /* L 70 — subtle border */
32
- --neutral-5: hsl(48 6% 40%); /* L 40 — muted text (WCAG AA: 5.23:1 vs L98 page / 4.91:1 vs L95 muted) */
26
+
27
+ BA.W-NO-GRAY — THE WARM-CHROMA FLOOR (R10-5 "No gray."). The ladder was
28
+ SPECIFIED warm (hue 48) but RESOLVED achromatic — at 6-10% sat across
29
+ L40-95 the painted OKLab chroma landed C 0.0055-0.0155 (below the ~0.020
30
+ perceptual gray floor) AND at hsl-48 the OKLab hue mapped to ~95° (a
31
+ yellow-green), NOT the warm-amber the --foreground ink carries (hsl-24 →
32
+ OKLab H≈56°). The fix is CHROMA-ONLY at constant L: warm the hue toward
33
+ the foreground register (hsl 28-34 → OKLab H 62-72°, warm MATERIAL not a
34
+ cast) AND lift the saturation off the gray floor. The L is unchanged (the
35
+ contrast contract — AA re-ratified, ±0.01 of HEAD). The mid/low-L rungs
36
+ clear the strong floor C≥0.020; the L90 chip is gamut-bound (it cannot
37
+ carry 0.020 at L90 without a visible cast — the triumvirate "tinted not
38
+ warm" trigger), so it lifts to a materially-warm C≈0.013 (~2.4× HEAD).
39
+ Machine-locked by proof:no-gray + tests-visual/no-gray.spec.ts. */
40
+ --neutral-0: hsl(40 30% 98%); /* L 98 — page surface (warm-cream, KEEP-NEUTRAL surface) */
41
+ --neutral-1: hsl(38 26% 95%); /* L 95 — soft field bg */
42
+ --neutral-2: hsl(34 28% 90%); /* L 90 — chip / tab-inactive bg (warm, gamut-bound C≈0.013) */
43
+ --neutral-3: hsl(33 30% 82%); /* L 82 — hover / highlight bg (warm, C≈0.025) */
44
+ --neutral-4: hsl(32 26% 70%); /* L 70 — subtle border (warm, C≈0.036) */
45
+ --neutral-5: hsl(30 22% 40%); /* L 40 — muted text (warm, C≈0.043; WCAG AA: 5.21:1 vs page / 4.90:1 vs muted) */
33
46
  /* W7-α' (AK-FD1) — strong-muted text rung. One principled ladder step
34
47
  (10 L darker, the 5→6 cadence above) past muted text toward
35
48
  --foreground (L10). Sits at the 1/3 point of the L40→L10 muted→primary
36
49
  gap: legible secondary text that reads less-faint than muted but not as
37
50
  assertive as primary. By-COLOUR per the canon (a neutral step, not an
38
- alpha mute); hue held at 48, sat nudged 6→7 toward --foreground's 10.
39
- WCAG AA: 7.79:1 vs L98 page / 7.31:1 vs L95 muted (cf. neutral-5's
40
- 5.23:1) — comfortably above the 4.5:1 body floor. */
41
- --neutral-6: hsl(48 7% 30%); /* L 30 — strong-muted text (secondary register) */
51
+ alpha mute). BA.W-NO-GRAY — re-saturated onto the warm identity in
52
+ lockstep with the ladder (hsl 28 24% — OKLab H 62°, C≈0.038, the warm
53
+ register; L held at 30). WCAG AA: 7.88:1 vs L98 page / 7.43:1 vs L95
54
+ muted (cf. neutral-5's 5.21:1) — comfortably above the 4.5:1 body floor. */
55
+ --neutral-6: hsl(28 24% 30%); /* L 30 — strong-muted text (secondary register, warm) */
42
56
 
43
57
  --background: var(--neutral-0);
44
58
  --foreground: hsl(24 10% 10%);
45
- --card: var(--neutral-0);
59
+ /* BA.W-NO-GRAY L1 — the warm-bias glass PLATE. --card was `var(--neutral-0)`
60
+ (the near-achromatic L98 page, OKLab C 0.0017) — so every glass plate
61
+ (Card/Button/Toast/Popover/Dialog/Sheet, all --card-derived) composited a
62
+ flat gray slab over a flat backdrop (the G1/G8 defect, the user's "no gray
63
+ ... for cards, buttons"). Glass is TRANSMISSIVE — over a flat page there
64
+ is nothing behind to modulate, so the plate is its own near-neutral cream.
65
+ --card DECOUPLES from the page to a warm-cream value carrying a real OKLab
66
+ chroma (hsl 36 48% 97% → OKLab C 0.0062 at warm H 75°, L kept ~98 so the
67
+ page-card SURFACE read is byte-stable), so the plate reads WARM over ANY
68
+ backdrop — the plate floor (composited C ≥ 0.0035, ~2× HEAD) the gamut
69
+ allows a near-white translucent surface. The DARK --card is W-DARK-MATERIAL's
70
+ lifted hsl(24 8% 16%) (NOT re-warmed here — the dark register is its work).
71
+ Bounded: the cream family, never a tinted cast (the triumvirate bar). */
72
+ --card: hsl(36 48% 97%);
46
73
  --card-foreground: var(--foreground);
47
- --popover: var(--neutral-0);
74
+ --popover: var(--card);
48
75
  --popover-foreground: var(--foreground);
49
76
 
50
77
  /* R0G-5 (AO.W4) — warm-neutral public-data panel surface. One warmth step