@mkbabb/glass-ui 4.0.1 → 4.1.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 (459) hide show
  1. package/dist/{CardAction-CW7a0m8M.js → CardAction-8whJrLWt.js} +23 -8
  2. package/dist/{CommandShortcut-DvZNQ_HF.js → CommandShortcut-D3yxgHNn.js} +23 -12
  3. package/dist/{ConfiguratorRow-BR4l-ixA.js → ConfiguratorRow-CaP7U3ZA.js} +11 -11
  4. package/dist/ContextMenuContent-B3ZsheLV.js +90 -0
  5. package/dist/{ContextMenuSubContent-xol4sD2q.js → ContextMenuSubContent-DDRID3qC.js} +15 -15
  6. package/dist/{DataTable-CuKwF7wr.js → DataTable-Bc9kUtu_.js} +2 -2
  7. package/dist/{DialogContent-DcKK8k9i.js → DialogContent-6JtTB5x2.js} +8 -5
  8. package/dist/DialogFooter-9phqcRIS.js +80 -0
  9. package/dist/DialogScrollContent-TTuovQst.js +93 -0
  10. package/dist/HoverCardContent-Bel1gdLZ.js +88 -0
  11. package/dist/{IconChip-BTD-nay5.js → IconChip-DhbdGdFQ.js} +1 -1
  12. package/dist/{IconTooltip-Bl8gFZ8d.js → IconTooltip-B0zimd2H.js} +1 -1
  13. package/dist/Input-Cg9DF62r.js +57 -0
  14. package/dist/{Notification-VUwexFUf.js → Notification-CphK7AAm.js} +3 -3
  15. package/dist/NumberFieldContent-D8cXeyO4.js +140 -0
  16. package/dist/PagerDots-Cjx96la-.js +98 -0
  17. package/dist/{SelectScrollDownButton-CrA8F0iV.js → SelectScrollDownButton-DAKCBEdW.js} +62 -57
  18. package/dist/{SelectSeparator-DXswVdRz.js → SelectSeparator-C2UGOkXF.js} +1 -1
  19. package/dist/Separator-DQcwC2TR.js +44 -0
  20. package/dist/Switch-B8RscmRu.js +49 -0
  21. package/dist/{Toaster-Bw4xR8xV.js → Toaster-D9qIHjBI.js} +1 -1
  22. package/dist/{ToggleGroupItem-pEM9vIhs.js → ToggleGroupItem-BLtr3TJq.js} +2 -2
  23. package/dist/TooltipProvider-BJ_Y5EGX.js +109 -0
  24. package/dist/animated-digit.js +1 -1
  25. package/dist/api/index.d.ts +15 -32
  26. package/dist/api/types-extra.d.ts +31 -0
  27. package/dist/api.js +1 -1
  28. package/dist/aurora.js +579 -251
  29. package/dist/border-progress.js +49 -57
  30. package/dist/{button-DYCUa-tH.js → button-5dY1Dvhd.js} +13 -14
  31. package/dist/button.js +1 -1
  32. package/dist/canvas.js +2 -3
  33. package/dist/card.js +1 -1
  34. package/dist/carousel.js +20 -20
  35. package/dist/color-Cs0-oxYL.js +116 -0
  36. package/dist/color.js +2 -2
  37. package/dist/command.js +1 -1
  38. package/dist/completion-seal.d.ts +1 -0
  39. package/dist/completion-seal.js +89 -0
  40. package/dist/components/custom/aurora/Aurora.vue.d.ts +10 -5
  41. package/dist/components/custom/aurora/composables/color.d.ts +13 -0
  42. package/dist/components/custom/aurora/composables/frameLoop.d.ts +9 -0
  43. package/dist/components/custom/aurora/composables/runtime.d.ts +12 -0
  44. package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +11 -2
  45. package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +8 -0
  46. package/dist/components/custom/aurora/constants/presets.d.ts +18 -0
  47. package/dist/components/custom/aurora/constants/renderMode.d.ts +16 -8
  48. package/dist/components/custom/aurora/constants/shaders/aurora-mediums.wgsl.d.ts +1 -0
  49. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -1
  50. package/dist/components/custom/border-progress/composables/spectrum-walk.d.ts +25 -0
  51. package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +14 -18
  52. package/dist/components/custom/border-progress/index.d.ts +1 -1
  53. package/dist/components/custom/completion-seal/CompletionSeal.vue.d.ts +21 -0
  54. package/dist/components/custom/completion-seal/composables/useCompletionSeal.d.ts +37 -0
  55. package/dist/components/custom/completion-seal/constants.d.ts +46 -0
  56. package/dist/components/custom/completion-seal/index.d.ts +4 -0
  57. package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +7 -0
  58. package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +9 -0
  59. package/dist/components/custom/concentric/composables/ringField.d.ts +57 -16
  60. package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +2 -1
  61. package/dist/components/custom/concentric/composables/useConcentric.d.ts +4 -4
  62. package/dist/components/custom/concentric/constants.d.ts +30 -6
  63. package/dist/components/custom/concentric/index.d.ts +2 -2
  64. package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +2 -2
  65. package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -1
  66. package/dist/components/custom/confirm-dialog/ConfirmDialog.vue.d.ts +3 -3
  67. package/dist/components/custom/constellation/Constellation.vue.d.ts +5 -4
  68. package/dist/components/custom/constellation/composables/constellationGLSetup.d.ts +10 -0
  69. package/dist/components/custom/constellation/composables/constellationWGPUSetup.d.ts +19 -0
  70. package/dist/components/custom/constellation/composables/uniformBridgeWGPU.d.ts +66 -0
  71. package/dist/components/custom/constellation/composables/useConstellation.d.ts +3 -10
  72. package/dist/components/custom/constellation/constants.d.ts +33 -0
  73. package/dist/components/custom/constellation/constellationField.d.ts +31 -1
  74. package/dist/components/custom/constellation/constellationInteraction.d.ts +23 -14
  75. package/dist/components/custom/constellation/constellationRender.d.ts +25 -0
  76. package/dist/components/custom/constellation/constellationTypes.d.ts +38 -0
  77. package/dist/components/custom/constellation/constellationWell.d.ts +15 -0
  78. package/dist/components/custom/constellation/index.d.ts +5 -5
  79. package/dist/components/custom/constellation/shaders/constellation-lines.glsl.d.ts +2 -0
  80. package/dist/components/custom/constellation/shaders/constellation-lines.wgsl.d.ts +1 -0
  81. package/dist/components/custom/constellation/shaders/constellation-points.glsl.d.ts +2 -0
  82. package/dist/components/custom/constellation/shaders/constellation-points.wgsl.d.ts +1 -0
  83. package/dist/components/custom/deck/DeckPager.vue.d.ts +29 -0
  84. package/dist/components/custom/deck/composables/useDeck.d.ts +27 -0
  85. package/dist/components/custom/deck/composables/useDeckKeyboard.d.ts +25 -0
  86. package/dist/components/custom/deck/composables/useDeckSpring.d.ts +22 -0
  87. package/dist/components/custom/deck/constants.d.ts +14 -0
  88. package/dist/components/custom/deck/index.d.ts +8 -0
  89. package/dist/components/custom/dock/DockIconButton.vue.d.ts +12 -0
  90. package/dist/components/custom/dock/DockStack.vue.d.ts +65 -0
  91. package/dist/components/custom/dock/GlassDock.vue.d.ts +4 -2
  92. package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +80 -0
  93. package/dist/components/custom/dock/composables/index.d.ts +2 -0
  94. package/dist/components/custom/dock/composables/useDockSearch.d.ts +85 -0
  95. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +11 -0
  96. package/dist/components/custom/dock/constants.d.ts +18 -14
  97. package/dist/components/custom/dock/index.d.ts +5 -2
  98. package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +15 -11
  99. package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +48 -6
  100. package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +23 -8
  101. package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +6 -5
  102. package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +18 -5
  103. package/dist/components/custom/dot-flow-field/constants.d.ts +42 -21
  104. package/dist/components/custom/dot-flow-field/index.d.ts +2 -2
  105. package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -1
  106. package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +4 -20
  107. package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +1 -1
  108. package/dist/components/custom/dot-matrix/DotMatrix.vue.d.ts +43 -0
  109. package/dist/components/custom/dot-matrix/composables/dotMatrixField.d.ts +89 -0
  110. package/dist/components/custom/dot-matrix/composables/uniformBridgeWGPU.d.ts +52 -0
  111. package/dist/components/custom/dot-matrix/composables/useDotMatrix.d.ts +34 -0
  112. package/dist/components/custom/dot-matrix/composables/useDotSphere.d.ts +27 -0
  113. package/dist/components/custom/dot-matrix/constants.d.ts +58 -0
  114. package/dist/components/custom/dot-matrix/index.d.ts +5 -0
  115. package/dist/components/custom/dot-matrix/shaders/dot-matrix.glsl.d.ts +4 -0
  116. package/dist/components/custom/dot-matrix/shaders/dot-matrix.wgsl.d.ts +1 -0
  117. package/dist/components/custom/easing/EasingPicker.vue.d.ts +2 -2
  118. package/dist/components/custom/easing/composables/useEasingPicker.d.ts +5 -0
  119. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +11 -0
  120. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +40 -47
  121. package/dist/components/custom/fourier-field/composables/fourierFieldGLSetup.d.ts +15 -0
  122. package/dist/components/custom/fourier-field/composables/fourierFieldWGPUSetup.d.ts +20 -0
  123. package/dist/components/custom/fourier-field/composables/uniformBridgeWGPU.d.ts +41 -0
  124. package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +40 -37
  125. package/dist/components/custom/fourier-field/constants.d.ts +61 -4
  126. package/dist/components/custom/fourier-field/index.d.ts +23 -18
  127. package/dist/components/custom/fourier-field/shaders/fourier-field.compute.wgsl.d.ts +1 -0
  128. package/dist/components/custom/fourier-field/shaders/fourier-field.glsl.d.ts +4 -0
  129. package/dist/components/custom/fourier-field/shaders/fourier-field.render.wgsl.d.ts +1 -0
  130. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +9 -1
  131. package/dist/components/custom/goo-blob/constants.d.ts +1 -1
  132. package/dist/components/custom/goo-blob/index.d.ts +1 -1
  133. package/dist/components/custom/goo-blob/shaders/metaball-noise.wgsl.d.ts +1 -0
  134. package/dist/components/custom/goo-blob/shaders/metaball-palette.wgsl.d.ts +1 -0
  135. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -1
  136. package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -1
  137. package/dist/components/custom/goo-blob/types.d.ts +36 -0
  138. package/dist/components/custom/goo-dot-matrix/GooDotMatrix.vue.d.ts +49 -0
  139. package/dist/components/custom/goo-dot-matrix/composables/gooDotLattice.d.ts +24 -0
  140. package/dist/components/custom/goo-dot-matrix/composables/gooDotSetup.d.ts +50 -0
  141. package/dist/components/custom/goo-dot-matrix/composables/uniformBridgeWGPU.d.ts +35 -0
  142. package/dist/components/custom/goo-dot-matrix/composables/useGooDotMatrix.d.ts +31 -0
  143. package/dist/components/custom/goo-dot-matrix/constants.d.ts +76 -0
  144. package/dist/components/custom/goo-dot-matrix/index.d.ts +5 -0
  145. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.frag.d.ts +11 -0
  146. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.wgsl.d.ts +3 -0
  147. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +21 -2
  148. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +15 -0
  149. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +9 -0
  150. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  151. package/dist/components/custom/pager-dots/pagerWindow.d.ts +9 -0
  152. package/dist/components/custom/paper-grid/PaperGrid.vue.d.ts +42 -0
  153. package/dist/components/custom/paper-grid/composables/paperGrid.d.ts +90 -0
  154. package/dist/components/custom/paper-grid/composables/paperGridGLSetup.d.ts +16 -0
  155. package/dist/components/custom/paper-grid/composables/paperGridWGPUSetup.d.ts +19 -0
  156. package/dist/components/custom/paper-grid/composables/uniformBridgeWGPU.d.ts +16 -0
  157. package/dist/components/custom/paper-grid/composables/usePaperGrid.d.ts +31 -0
  158. package/dist/components/custom/paper-grid/constants.d.ts +57 -0
  159. package/dist/components/custom/paper-grid/index.d.ts +5 -0
  160. package/dist/components/custom/paper-grid/shaders/paper-grid.glsl.d.ts +4 -0
  161. package/dist/components/custom/paper-grid/shaders/paper-grid.wgsl.d.ts +1 -0
  162. package/dist/components/custom/search/FuzzySearch.vue.d.ts +8 -2
  163. package/dist/components/custom/search/SearchBar.vue.d.ts +8 -0
  164. package/dist/components/custom/search/index.d.ts +2 -0
  165. package/dist/components/custom/search/searchVariants.d.ts +19 -0
  166. package/dist/components/custom/selectable-chip/SelectableChip.vue.d.ts +50 -0
  167. package/dist/components/custom/selectable-chip/index.d.ts +2 -0
  168. package/dist/components/custom/selectable-chip/selectableChipVariants.d.ts +23 -0
  169. package/dist/components/custom/split-chars/SplitChars.vue.d.ts +39 -0
  170. package/dist/components/custom/split-chars/index.d.ts +1 -0
  171. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +8 -6
  172. package/dist/components/custom/tabs/constants.d.ts +20 -2
  173. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +29 -16
  174. package/dist/components/custom/watercolor-dot/useWatercolorBlob.d.ts +10 -5
  175. package/dist/components/ui/_shared/index.d.ts +2 -0
  176. package/dist/components/ui/_shared/useControlSize.d.ts +46 -0
  177. package/dist/components/ui/button/index.d.ts +1 -1
  178. package/dist/components/ui/card/Card.vue.d.ts +45 -0
  179. package/dist/components/ui/card/index.d.ts +1 -1
  180. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +1 -1
  181. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +1 -1
  182. package/dist/components/ui/command/CommandDialog.vue.d.ts +9 -3
  183. package/dist/components/ui/command/CommandList.vue.d.ts +3 -0
  184. package/dist/components/ui/context-menu/ContextMenuContent.vue.d.ts +5 -1
  185. package/dist/components/ui/dropdown-menu/DropdownMenuContent.vue.d.ts +4 -0
  186. package/dist/components/ui/hover-card/HoverCardContent.vue.d.ts +3 -0
  187. package/dist/components/ui/input/Input.vue.d.ts +3 -0
  188. package/dist/components/ui/number-field/NumberFieldInput.vue.d.ts +6 -1
  189. package/dist/components/ui/select/SelectContent.vue.d.ts +3 -0
  190. package/dist/components/ui/switch/Switch.vue.d.ts +2 -0
  191. package/dist/components/ui/textarea/Textarea.vue.d.ts +3 -0
  192. package/dist/components/ui/tooltip/TooltipContent.vue.d.ts +3 -0
  193. package/dist/composables/color/index.d.ts +2 -0
  194. package/dist/composables/color/useAccentTone.d.ts +34 -0
  195. package/dist/composables/glass/useVizChoreography.d.ts +123 -0
  196. package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +10 -0
  197. package/dist/composables/glass/webgl/shaders/flow.wgsl.d.ts +1 -0
  198. package/dist/composables/glass/webgpu/index.d.ts +1 -1
  199. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +28 -7
  200. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +1 -0
  201. package/dist/composables/glass/webgpu/webgpuDevice.d.ts +42 -0
  202. package/dist/composables/motion/core/index.d.ts +3 -0
  203. package/dist/composables/motion/scrollReader.d.ts +25 -0
  204. package/dist/composables/motion/springPresets.d.ts +20 -1
  205. package/dist/composables/motion/useCharStagger.d.ts +44 -0
  206. package/dist/composables/motion/useDockCtaReceive.d.ts +31 -6
  207. package/dist/composables/motion/useScrollChrome.d.ts +58 -0
  208. package/dist/composables/motion/useScrollTrigger.d.ts +67 -0
  209. package/dist/composables/motion/useSpringPress.d.ts +5 -5
  210. package/dist/composables/motion/useStaggerReveal.d.ts +24 -0
  211. package/dist/composables/sidebar/index.d.ts +4 -1
  212. package/dist/composables/sidebar/types.d.ts +68 -3
  213. package/dist/composables/sidebar/useClickDelegate.d.ts +4 -0
  214. package/dist/composables/sidebar/useLazyLoader.d.ts +5 -0
  215. package/dist/composables/sidebar/useScrollTo.d.ts +5 -0
  216. package/dist/composables/virtual/index.d.ts +4 -0
  217. package/dist/composables/virtual/useVirtualSectionWindow.d.ts +72 -0
  218. package/dist/composables/virtual/useWindowedStore.d.ts +43 -0
  219. package/dist/composables/virtual/virtualSectionLayout.d.ts +103 -0
  220. package/dist/concentric.js +495 -221
  221. package/dist/configurator.js +2 -2
  222. package/dist/confirm-dialog.js +62 -47
  223. package/dist/constellation.js +635 -235
  224. package/dist/context-menu.js +2 -2
  225. package/dist/controls.js +1 -1
  226. package/dist/createCanvasLifecycle-Gh45Ce-p.js +93 -0
  227. package/dist/dark.js +1 -1
  228. package/dist/data-table.js +1 -1
  229. package/dist/deck.d.ts +1 -0
  230. package/dist/deck.js +105 -0
  231. package/dist/dialog.js +4 -3
  232. package/dist/dock.js +602 -458
  233. package/dist/dot-flow-field.js +580 -290
  234. package/dist/dot-matrix.d.ts +1 -0
  235. package/dist/dot-matrix.js +630 -0
  236. package/dist/dotMatrixField-D_x9_1qq.js +48 -0
  237. package/dist/{dropdown-menu-CofSZuk8.js → dropdown-menu-aJmV5SqE.js} +83 -79
  238. package/dist/dropdown-menu.js +1 -1
  239. package/dist/easing.js +188 -176
  240. package/dist/expandable-container.js +42 -20
  241. package/dist/fading-scroll.js +1 -1
  242. package/dist/flow.glsl-B2P7e0MT.js +4 -0
  243. package/dist/forms.js +62 -60
  244. package/dist/fourier-field.js +825 -178
  245. package/dist/fourier-math.js +1 -1
  246. package/dist/glass-ui.css +1 -1
  247. package/dist/glass-ui.js +145 -104
  248. package/dist/goo-blob.js +171 -1228
  249. package/dist/goo-dot-matrix.d.ts +1 -0
  250. package/dist/goo-dot-matrix.js +591 -0
  251. package/dist/handmark.js +1 -1
  252. package/dist/hover-card.js +1 -1
  253. package/dist/hover-popover.js +1 -1
  254. package/dist/icon-chip.js +1 -1
  255. package/dist/icon-tooltip.js +1 -1
  256. package/dist/index.d.ts +2 -0
  257. package/dist/instrument-chassis.js +1 -1
  258. package/dist/keyboard.js +1 -1
  259. package/dist/labeled-field.js +70 -60
  260. package/dist/metric-cell.js +1 -1
  261. package/dist/metric-stack.js +11 -2
  262. package/dist/motion-core.js +54 -32
  263. package/dist/motion-curves.js +11 -1
  264. package/dist/motion.js +46 -111
  265. package/dist/notification.js +1 -1
  266. package/dist/number-field.js +1 -1
  267. package/dist/pager-dots.js +2 -91
  268. package/dist/paper-backdrop.js +1 -1
  269. package/dist/paper-grid.d.ts +1 -0
  270. package/dist/paper-grid.js +788 -0
  271. package/dist/{presets-BW2b-fr1.js → presets-CvOUqtdY.js} +3 -3
  272. package/dist/{procedural-color.glsl-CIFsJhwI.js → procedural-color.wgsl-m7Zgv35j.js} +2 -2
  273. package/dist/progress.js +1 -1
  274. package/dist/pulse.js +1 -1
  275. package/dist/reactive.js +1 -1
  276. package/dist/{useCanvas2D-B8w_E3Rr.js → resolveCanvasColor-yPyIpJt9.js} +12 -2
  277. package/dist/scrollReader-DI1NWxUw.js +42 -0
  278. package/dist/scrolling-text.js +1 -1
  279. package/dist/search.js +160 -304
  280. package/dist/select.js +3 -3
  281. package/dist/selectable-chip.d.ts +1 -0
  282. package/dist/selectable-chip.js +65 -0
  283. package/dist/separator.js +1 -1
  284. package/dist/{sheet-tZMg0E0w.js → sheet-B2flBfLH.js} +2 -2
  285. package/dist/sheet.js +1 -1
  286. package/dist/sidebar.js +216 -114
  287. package/dist/slider.js +1 -1
  288. package/dist/sortable-list.js +1 -1
  289. package/dist/spectrum-walk-BVzA7Biz.js +33 -0
  290. package/dist/{springPresets-CFQGQfdl.js → springPresets-Ce7OYCm9.js} +12 -6
  291. package/dist/styles/animations.css +13 -3
  292. package/dist/styles/cards.css +69 -0
  293. package/dist/styles/completion-seal.css +131 -0
  294. package/dist/styles/components.css +2 -3
  295. package/dist/styles/configurator.css +55 -0
  296. package/dist/styles/critical-partition.mjs +33 -11
  297. package/dist/styles/deferred.css +2 -0
  298. package/dist/styles/dock/cta-seat.css +87 -0
  299. package/dist/styles/dock/density.css +153 -0
  300. package/dist/styles/dock/layers.css +55 -7
  301. package/dist/styles/dock/morph-bridge.css +54 -18
  302. package/dist/styles/dock/morph.css +41 -33
  303. package/dist/styles/dock/overflow.css +12 -0
  304. package/dist/styles/dock/search.css +68 -0
  305. package/dist/styles/dock/shape.css +124 -0
  306. package/dist/styles/dock/shell.css +23 -5
  307. package/dist/styles/dock/stack-rail.css +264 -0
  308. package/dist/styles/dock-controls/dark-mode-toggle.css +17 -4
  309. package/dist/styles/dock-controls/icon-button.css +14 -0
  310. package/dist/styles/dock.css +11 -1
  311. package/dist/styles/glass/accent-tone.css +66 -0
  312. package/dist/styles/glass/control-surfaces.css +167 -0
  313. package/dist/styles/glass/ladder.css +67 -17
  314. package/dist/styles/glass/rim.css +19 -9
  315. package/dist/styles/glass/surfaces.css +69 -148
  316. package/dist/styles/glass.css +10 -0
  317. package/dist/styles/index.css +15 -0
  318. package/dist/styles/scroll-chrome.css +123 -0
  319. package/dist/styles/scroll-driven.css +38 -0
  320. package/dist/styles/segmented-tabs.css +50 -14
  321. package/dist/styles/theme/bridges.css +22 -0
  322. package/dist/styles/theme/radius.css +18 -1
  323. package/dist/styles/tokens/color-radius.css +13 -3
  324. package/dist/styles/tokens/dark-arm.css +39 -6
  325. package/dist/styles/tokens/glass-deep.css +28 -3
  326. package/dist/styles/tokens/glass-fx.css +44 -1
  327. package/dist/styles/tokens/glass.css +91 -31
  328. package/dist/styles/tokens/light-dark.css +1 -1
  329. package/dist/styles/tokens/offsets.css +27 -0
  330. package/dist/styles/tokens/property-regs.css +133 -0
  331. package/dist/styles/tokens/scale-paper.css +73 -29
  332. package/dist/styles/tokens/scheme-motion.css +44 -6
  333. package/dist/styles/tokens/sizing-config.css +110 -0
  334. package/dist/styles/tokens/sizing.css +55 -104
  335. package/dist/styles/tokens.css +5 -0
  336. package/dist/styles/typography/semantic.css +18 -5
  337. package/dist/styles/utilities/a11y-overrides.css +20 -5
  338. package/dist/styles/utilities/base-misc.css +52 -0
  339. package/dist/styles/utilities/btn.css +14 -3
  340. package/dist/styles/utilities/components.css +31 -6
  341. package/dist/styles/utilities/metal.css +26 -0
  342. package/dist/switch.js +1 -1
  343. package/dist/tabs.js +8 -8
  344. package/dist/timeline.js +1 -1
  345. package/dist/toast.js +1 -1
  346. package/dist/toggle-chip.js +10 -10
  347. package/dist/toggle-group.js +1 -1
  348. package/dist/tooltip.js +1 -1
  349. package/dist/typewriter.js +1 -1
  350. package/dist/uniformBridgeWGPU-CtAKl45L.js +1204 -0
  351. package/dist/{useAnimatedNumber-BfUq2bUM.js → useAnimatedNumber-CLrxicG9.js} +1 -1
  352. package/dist/{useConfiguratorState-DNlOh6c8.js → useConfiguratorState-4xblKfwd.js} +25 -24
  353. package/dist/useControlSize-SH1UmJCi.js +9 -0
  354. package/dist/useDockCtaReceive-DfFkmgL1.js +82 -0
  355. package/dist/{useDragMorph-DgxnsVJz.js → useDragMorph-BUgAC-zK.js} +4 -4
  356. package/dist/useFuzzySearch-DIhcYtcw.js +177 -0
  357. package/dist/useGpuSubstrate-4pTcp6mX.js +294 -0
  358. package/dist/{useLiquidPress-kfb4KX79.js → useLiquidPress-BooG97RY.js} +2 -2
  359. package/dist/usePointerVelocityField-QLsy3_kv.js +91 -0
  360. package/dist/useScrollChrome-D66AVP7C.js +258 -0
  361. package/dist/{useSpringMount-q1amq1SJ.js → useSpringMount-BWDnKIwh.js} +1 -1
  362. package/dist/useSpringPress-B1-Czp-V.js +36 -0
  363. package/dist/useViewTransition-CUI1nAgn.js +95 -0
  364. package/dist/{vendor-CKmzio-i.js → vendor-B2qOlYY3.js} +24 -11
  365. package/dist/virtual.d.ts +1 -0
  366. package/dist/virtual.js +225 -0
  367. package/dist/watercolor-dot.js +116 -73
  368. package/package.json +127 -7
  369. package/src/styles/animations.css +13 -3
  370. package/src/styles/cards.css +69 -0
  371. package/src/styles/completion-seal.css +131 -0
  372. package/src/styles/configurator.css +55 -0
  373. package/src/styles/critical-partition.mjs +33 -11
  374. package/src/styles/dock/cta-seat.css +87 -0
  375. package/src/styles/dock/density.css +153 -0
  376. package/src/styles/dock/layers.css +55 -7
  377. package/src/styles/dock/morph-bridge.css +54 -18
  378. package/src/styles/dock/morph.css +41 -33
  379. package/src/styles/dock/overflow.css +12 -0
  380. package/src/styles/dock/search.css +68 -0
  381. package/src/styles/dock/shape.css +124 -0
  382. package/src/styles/dock/shell.css +23 -5
  383. package/src/styles/dock/stack-rail.css +264 -0
  384. package/src/styles/dock-controls/dark-mode-toggle.css +17 -4
  385. package/src/styles/dock-controls/icon-button.css +14 -0
  386. package/src/styles/dock.css +11 -1
  387. package/src/styles/glass/accent-tone.css +66 -0
  388. package/src/styles/glass/control-surfaces.css +167 -0
  389. package/src/styles/glass/ladder.css +67 -17
  390. package/src/styles/glass/rim.css +19 -9
  391. package/src/styles/glass/surfaces.css +69 -148
  392. package/src/styles/glass.css +10 -0
  393. package/src/styles/index.css +15 -0
  394. package/src/styles/scroll-chrome.css +123 -0
  395. package/src/styles/scroll-driven.css +38 -0
  396. package/src/styles/segmented-tabs.css +50 -14
  397. package/src/styles/theme/bridges.css +22 -0
  398. package/src/styles/theme/radius.css +18 -1
  399. package/src/styles/tokens/color-radius.css +13 -3
  400. package/src/styles/tokens/dark-arm.css +39 -6
  401. package/src/styles/tokens/glass-deep.css +28 -3
  402. package/src/styles/tokens/glass-fx.css +44 -1
  403. package/src/styles/tokens/glass.css +91 -31
  404. package/src/styles/tokens/light-dark.css +1 -1
  405. package/src/styles/tokens/offsets.css +27 -0
  406. package/src/styles/tokens/property-regs.css +133 -0
  407. package/src/styles/tokens/scale-paper.css +73 -29
  408. package/src/styles/tokens/scheme-motion.css +44 -6
  409. package/src/styles/tokens/sizing-config.css +110 -0
  410. package/src/styles/tokens/sizing.css +55 -104
  411. package/src/styles/tokens.css +5 -0
  412. package/src/styles/typography/semantic.css +18 -5
  413. package/src/styles/utilities/a11y-overrides.css +20 -5
  414. package/src/styles/utilities/base-misc.css +52 -0
  415. package/src/styles/utilities/btn.css +14 -3
  416. package/src/styles/utilities/components.css +31 -6
  417. package/src/styles/utilities/metal.css +26 -0
  418. package/dist/ContextMenuContent-uWnVxDab.js +0 -85
  419. package/dist/DialogFooter-BZNX5aVr.js +0 -165
  420. package/dist/HoverCardContent-b2uaAMRR.js +0 -83
  421. package/dist/Input-h9v5LeXf.js +0 -55
  422. package/dist/NumberFieldContent-Cq7EzX-U.js +0 -138
  423. package/dist/Separator-pKF0oA4M.js +0 -37
  424. package/dist/Switch-CwYNf8bo.js +0 -47
  425. package/dist/TooltipProvider-rzvnXz60.js +0 -104
  426. package/dist/color-DweYl7pE.js +0 -86
  427. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +0 -35
  428. package/dist/components/custom/constellation/constellationDraw.d.ts +0 -30
  429. package/dist/components/custom/dock/DockRail.vue.d.ts +0 -89
  430. package/dist/createCanvasLifecycle-CHD5XrDW.js +0 -82
  431. package/dist/procedural-color.wgsl-CToRHugY.js +0 -224
  432. package/dist/resolveCanvasColor-CUyHr5Uu.js +0 -11
  433. package/dist/styles/dock/rail-extend.css +0 -397
  434. package/dist/usePointerVelocityField-JbRd5CrM.js +0 -137
  435. package/dist/useRAFLoop-UYa4zoiN.js +0 -109
  436. package/dist/useSpringPress-BsqPr7FJ.js +0 -34
  437. package/src/styles/dock/rail-extend.css +0 -397
  438. /package/dist/{FadingScroll-DI6hQhT9.js → FadingScroll-DLRbH5Xr.js} +0 -0
  439. /package/dist/{HoverPopover-CbqbNwgU.js → HoverPopover-BcIxvyqZ.js} +0 -0
  440. /package/dist/{InstrumentChassis-Bx0F_q5g.js → InstrumentChassis-CxsHSyMj.js} +0 -0
  441. /package/dist/{PaperBackdrop-Vf3tlpvd.js → PaperBackdrop-CqwjnfLv.js} +0 -0
  442. /package/dist/{Progress-DctG61iZ.js → Progress-CnqB7gLm.js} +0 -0
  443. /package/dist/{ScrollingText-yOpBzFYq.js → ScrollingText-CTZbA_cG.js} +0 -0
  444. /package/dist/{SelectGroup-DwwjicPY.js → SelectGroup-BFiod7X2.js} +0 -0
  445. /package/dist/{compile-CQEFRTmx.js → compile-nZ1xVYTp.js} +0 -0
  446. /package/dist/{constants-BPOqYJAm.js → constants--C2DkLW8.js} +0 -0
  447. /package/dist/{math-BINYmg5z.js → math-Eb0w3LqU.js} +0 -0
  448. /package/dist/{prng-Za0Rmgag.js → prng-B-d9eYX8.js} +0 -0
  449. /package/dist/{slider-DVb4HXU-.js → slider-2A0rPn79.js} +0 -0
  450. /package/dist/{useGlobalDark-C28t0VWJ.js → useGlobalDark-CmjB9E32.js} +0 -0
  451. /package/dist/{useIntersectionPause-Bj4sPkMh.js → useIntersectionPause-Dbozzjgm.js} +0 -0
  452. /package/dist/{useInterval-CvK1mL92.js → useInterval-CNdua40W.js} +0 -0
  453. /package/dist/{useKeyboardShortcuts-BXWXOZ-9.js → useKeyboardShortcuts-BPRp33Im.js} +0 -0
  454. /package/dist/{useLiquidFlex-mZPMiNXh.js → useLiquidFlex-UmA6LMZu.js} +0 -0
  455. /package/dist/{useScrollProgress-D7bYU2RK.js → useScrollProgress-c3yxmH6a.js} +0 -0
  456. /package/dist/{useSortable-DHjtZSEd.js → useSortable-BVqlJRBR.js} +0 -0
  457. /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-NmBM5V_4.js} +0 -0
  458. /package/dist/{vReveal-Czsb7zQC.js → vReveal-D9k0jADx.js} +0 -0
  459. /package/dist/{vSpecular-CQFmLNzA.js → vSpecular-EX7loENl.js} +0 -0
@@ -0,0 +1,110 @@
1
+ /* tokens/sizing-config.css
2
+ §10 sizing tail — the MetricBadge stacked geometry + the Configurator family
3
+ (the density ladder, the AZ.W-HIERARCHY section/label/preset vocabulary, the
4
+ single-column stage floor, the dark-adaptive divider register, the section
5
+ tonal step) + the component-font override.
6
+ Carved (BC.W-CARVE6) from the tail of tokens/sizing.css to hold the 500-line
7
+ no-god-module bound; @import-ed by tokens.css IMMEDIATELY AFTER sizing.css at
8
+ sizing's own cascade slot — adjacent same-selector :root blocks resolve
9
+ identically, so the dist is byte-isomorphic.
10
+ See docs/precepts/design-idioms.md §cohesion-aware partials. */
11
+ :root {
12
+ /* MetricBadge — stacked variant geometry. The 2-row stacked layout
13
+ (label / value+unit) wants a taller floor than the inline pill so the
14
+ label has breathing room above the baseline pair. T.W2.T2 +
15
+ audit B-spec §3.2 vertical-rhythm table land 42px (2.625rem) as the
16
+ min-height with 6px (0.375rem) block padding. The inline ladder
17
+ keeps its tight defaults via `--metric-badge-min-height` /
18
+ `--metric-badge-padding-block` (declared inline at the
19
+ `.metric-badge` selector). */
20
+ --metric-badge-min-height-stacked: 2.625rem;
21
+ --metric-badge-padding-block-stacked: 0.375rem;
22
+
23
+ /* Configurator — N.W2 Lane A density axis (4 rungs).
24
+ The `comfortable` rung restates the pre-N.W2 baked recipe exactly
25
+ (`gap-1.5 py-2` = 0.375rem / 0.5rem) so unparameterised consumers
26
+ see no visual change. `mobile` halves the vertical breathing room
27
+ for narrow-viewport studios; `spacious` doubles it for settings-
28
+ page hosts. See `<ConfiguratorRow>` scoped CSS for the attribute-
29
+ selector binding. */
30
+ --configurator-row-gap-mobile: 0.25rem; /* 4px — tight */
31
+ --configurator-row-gap-compact: 0.3125rem; /* 5px — slightly tighter */
32
+ --configurator-row-gap-comfortable: 0.375rem; /* 6px — pre-N.W2 default */
33
+ --configurator-row-gap-spacious: 0.75rem; /* 12px — generous */
34
+
35
+ --configurator-row-py-mobile: 0.25rem; /* 4px — tight */
36
+ --configurator-row-py-compact: 0.375rem; /* 6px — slightly tighter */
37
+ --configurator-row-py-comfortable: 0.5rem; /* 8px — pre-N.W2 default */
38
+ --configurator-row-py-spacious: 0.875rem; /* 14px — generous */
39
+
40
+ /* Configurator HIERARCHY VOCABULARY (AZ.W-HIERARCHY — D6-3). The three
41
+ NAMED registers the studios (blob, aurora) inherit instead of a flat
42
+ undifferentiated stack. DISTINCT from the density ladder above (which is
43
+ the per-row CADENCE, not the section/label/preset register).
44
+
45
+ 1. Section register — the <ConfiguratorLayer> label reads as a SECTION,
46
+ not a row: the √φ subheading rung at weight 600, lifting off the prior
47
+ flat `text-small font-semibold`. */
48
+ --configurator-section-size: var(--type-subheading); /* 20.4px — √φ section rung */
49
+ --configurator-section-weight: 600; /* the heading weight */
50
+
51
+ /* AZ.W-BLOB-REDRESS — the SINGLE-COLUMN stage-row FLOOR. Below `lg` the
52
+ Configurator stacks stage-over-aside; a percentage stage height against
53
+ an INDEFINITE auto-row resolves to 0 (the GooBlob hero painted 0×0 on a
54
+ phone). The single-column band's `grid-template-rows` floors the stage
55
+ row at this DEFINITE `minmax(…)` minimum so the percentage resolves;
56
+ the aside row takes the remainder and scrolls internally. */
57
+ --configurator-stage-min: 18rem; /* 288px — the mobile live-specimen stage floor */
58
+
59
+ /* 2. Preset-row PRIMARY-AFFORDANCE lift. The preset picker is the primary
60
+ interaction (C6-10); D6-3's defect is the preset row being spatially
61
+ CRAMPED. This token's binding SEMANTIC is the preset row's SPATIAL
62
+ rhythm — its block-padding / gap, NOT a font-weight — so the preset
63
+ row breathes ABOVE a body ConfiguratorRow. (The `-weight` name follows
64
+ the vocabulary's "register weight" framing; it lands on the padding/gap
65
+ slot of `.configurator-presets`, the heavier spatial cadence.) */
66
+ --configurator-preset-row-weight: 0.625rem; /* 10px — > a body row's 8px py-comfortable */
67
+ --configurator-preset-row-gap: 0.5rem; /* 8px — generous chip gap */
68
+
69
+ /* 3. The DIVIDER register — dark-adaptive (BA.W-CONFIG-CHASSIS.1 / CFG-4).
70
+ The section + inter-row dividers used to be inline `border-border/40` and
71
+ `border-border/30` Tailwind alphas; over the W-DARK-MATERIAL dark
72
+ `glass-floating` plate (a luminous transmissive material, --card L16) those
73
+ near-equal-luminance hairlines effectively VANISHED — "the sections run
74
+ together". This ONE token is consumed by every divider rule (the
75
+ <ConfiguratorLayer> section border, the dividers-prop inter-row border,
76
+ Configurator.vue's aside/preset/footer borders, configurator.css) so the
77
+ divider weight is retuned from a single override.
78
+
79
+ The dark-LIFTING arm is the load-bearing half: the divider must read on
80
+ BOTH plates. On LIGHT it is the resting `--border` warm-neutral at the
81
+ prior ~40% weight; on DARK it LIFTS off `--border` (L34 over the L16 plate
82
+ — too close) toward the `--foreground` warm-ink (L90) at a higher α, so a
83
+ visible luminance step survives the dark glass. `light-dark()` carries the
84
+ arm in ONE declaration (the same :root cascade context as the surface-tint
85
+ family; an engine without `light-dark()` falls back to the dark-arm.css
86
+ `.dark` floor minted in lockstep). The SECTION divider runs a touch
87
+ heavier than the inter-row hairline (a section reads as a section without
88
+ a second heading rung). */
89
+ --configurator-divider: light-dark(
90
+ color-mix(in srgb, var(--border) 55%, transparent),
91
+ color-mix(in srgb, var(--foreground) 22%, transparent)
92
+ );
93
+ --configurator-divider-section: light-dark(
94
+ color-mix(in srgb, var(--border) 70%, transparent),
95
+ color-mix(in srgb, var(--foreground) 30%, transparent)
96
+ );
97
+ /* The optional faint section-header tonal step — a whisper-light warm wash
98
+ behind a <ConfiguratorLayer> section so it reads as a grouped section
99
+ WITHOUT a new heading rung (within the W-HIERARCHY register). Default off
100
+ (transparent) on light where the hairline carries it; a faint
101
+ foreground-over-transparent lift on dark where the divider alone is
102
+ subtle. */
103
+ --configurator-section-tint: light-dark(
104
+ transparent,
105
+ color-mix(in srgb, var(--foreground) 3%, transparent)
106
+ );
107
+
108
+ /* Component font override (consumers override locally) */
109
+ --select-font: inherit;
110
+ }
@@ -122,6 +122,24 @@
122
122
  --dropdown-text-secondary: var(--control-text-sm);
123
123
  --dropdown-input-height: var(--control-h-md);
124
124
 
125
+ /* ── The search-family magnitude rungs (BC.W-SEARCH-CUSTOM) ───────────────
126
+ The SearchBar/FuzzySearch compound surfaces read these indirection rungs
127
+ for the glyph / icon-button / result-label magnitudes — so a consumer
128
+ retunes the WHOLE search family from ONE `:root` override, not a fork of
129
+ per-element px literals (`w-3.5 h-3.5`, `!h-6 !w-6`, `text-[0.6rem]`). Each
130
+ DEFAULTS to the existing cohort it replaces, so the bare search surface is
131
+ byte-identical to HEAD (the substitution-vs-redeclaration discipline — the
132
+ NAME is search-local, the magnitude stays the `--ui-glyph`/`--control-*`
133
+ source). NO parallel magnitude ladder: these are aliases onto the cohort.
134
+ • PRIMARY result label / field font → `--control-text` (the `text-sm` register).
135
+ • SECONDARY type-Badge / footnote → `--control-text-sm` (the `text-xs` register).
136
+ • the search/clear/expand glyph → `--ui-glyph-sm` (the chrome 1.4 glyph).
137
+ • the icon-button hit-box → `--control-h-xs` (the HEAD `h-6`/`h-7`). */
138
+ --search-icon-size: var(--ui-glyph-sm);
139
+ --search-button-size: var(--control-h-xs);
140
+ --search-result-text: var(--control-text);
141
+ --search-result-text-secondary: var(--control-text-sm);
142
+
125
143
  --size-icon-btn: 2.5rem;
126
144
  --icon-xs: 0.75rem;
127
145
  --icon-sm: 0.875rem;
@@ -224,6 +242,19 @@
224
242
  var(--dock-icon-glyph-floor)
225
243
  );
226
244
 
245
+ /* BC.W-DOCK-ENGINE move 3 (the Atlas A-9 fold) — `--dock-control-glyph-size` is
246
+ the ONE in-dock control-glyph retint knob (the dark-toggle SVG `width`/`height`
247
+ + the `--dark-mode-toggle-padding` inset BOTH read it), defaulting to the
248
+ `--dock-scale`-keyed `--dock-icon-glyph` the nav icons paint so the docked
249
+ toggle is optically uniform out of the box. Like `--dock-icon-glyph` this
250
+ `:root` declaration resolves the fallback ladder; density.css RE-RESOLVES it
251
+ inside each `[data-density]` scope and overflow.css RE-DECLARES it in the
252
+ coarse block, so the density-painted + coarse-scaled `--dock-icon-glyph` flows
253
+ in (the substitution-vs-inheritance trap closed on all three registers — a
254
+ `:root`-only knob would freeze at the `:root` `--dock-scale` while the glyph
255
+ lifts). ONE knob; no per-size literal, no `!important`. */
256
+ --dock-control-glyph-size: var(--dock-icon-glyph);
257
+
227
258
  /* AX.W45-TUNE Q1 — the COLLAPSED-pill floor tokens. The collapsed summary
228
259
  used to fall to `--dock-layer-height` (the FULL control height, ~2.5rem) for
229
260
  its `min-width` with NO block floor, so the shrunken pill read as an
@@ -315,12 +346,9 @@
315
346
  `--dock-rail-extend-length` (declared in rail-extend.css) was RE-SEMANTICIZED:
316
347
  it is no longer a one-way connector length but the SYMMETRIC per-side overrun of
317
348
  the seam line (the line's cross-extent = dock extent + 2× the knob, centered on
318
- the seam). `--dock-rail-retract-stub` is the residual protrusion FRACTION the
319
- chips leave past the dock edge on collapse (the macOS fan-out "retract INTO the
320
- rail leaving a slight protrusion"; 0 = fully retracted, 1 = no retract). The
321
- `--dock-section-zone-gap` is the inter-control rhythm inside a <DockSection> zone
322
- (defaults to the dock's own `--dock-gap`, so the section grouping adds no box). */
323
- --dock-rail-retract-stub: 0.35;
349
+ the seam). The `--dock-section-zone-gap` is the inter-control rhythm inside a
350
+ <DockSection> zone (defaults to the dock's own `--dock-gap`, so the section
351
+ grouping adds no box). */
324
352
  --dock-section-zone-gap: var(--dock-gap, 0.25rem);
325
353
 
326
354
  /* Dock active-state ladder (O.W6 Lane B)
@@ -389,6 +417,21 @@
389
417
  WCAG 2.5.5 floor on touch devices. */
390
418
  --dock-touch-target: 2.75rem; /* 44px */
391
419
 
420
+ /* BC.W-AX-DOCK-COCKPIT — the dock LABEL-tracks-CONTROL ratio (the
421
+ dock-oversize chronic close, speedtest A-9). The `dock-label`
422
+ (typography/semantic.css) sizes its font as a PROPORTION of the
423
+ control height — `calc(var(--dock-control-size) * var(--dock-label-ratio))`
424
+ — so a tighter control (the `[data-preset="cockpit"]` 2.75rem floor with
425
+ compact chrome) carries a proportionally tighter label, never the fixed
426
+ `--type-subheading` rung that read OVERSIZE on a tight pill. The default
427
+ reproduces `--type-subheading` (1.272rem) at the comfortable `2.5rem`
428
+ control (1.272 / 2.5 = 0.5088) so the bare default is byte-near-identical
429
+ — opt into the cockpit preset (or override this knob from `:root`/the
430
+ `[data-preset]` scope) to retune the whole dock label family in ONE write.
431
+ The explicit `--dock-label-size` knob STILL wins when set (the dock.css
432
+ audacious-mobile carve precedent, KEPT — the ratio is the FALLBACK). */
433
+ --dock-label-ratio: 0.5088;
434
+
392
435
  /* AQ.W3 §7 — canonical WCAG 2.5.5 (44px) touch-target floor for the
393
436
  NON-dock coarse-pointer surfaces (`Button size="icon"`,
394
437
  ExpandableContainer triggers, SegmentedTabs responsive mobile trigger). One
@@ -398,102 +441,10 @@
398
441
  dock floor and the general floor can be retuned independently. */
399
442
  --touch-target: 2.75rem; /* 44px */
400
443
 
401
- /* MetricBadge — stacked variant geometry. The 2-row stacked layout
402
- (label / value+unit) wants a taller floor than the inline pill so the
403
- label has breathing room above the baseline pair. T.W2.T2 +
404
- audit B-spec §3.2 vertical-rhythm table land 42px (2.625rem) as the
405
- min-height with 6px (0.375rem) block padding. The inline ladder
406
- keeps its tight defaults via `--metric-badge-min-height` /
407
- `--metric-badge-padding-block` (declared inline at the
408
- `.metric-badge` selector). */
409
- --metric-badge-min-height-stacked: 2.625rem;
410
- --metric-badge-padding-block-stacked: 0.375rem;
411
-
412
- /* Configurator — N.W2 Lane A density axis (4 rungs).
413
- The `comfortable` rung restates the pre-N.W2 baked recipe exactly
414
- (`gap-1.5 py-2` = 0.375rem / 0.5rem) so unparameterised consumers
415
- see no visual change. `mobile` halves the vertical breathing room
416
- for narrow-viewport studios; `spacious` doubles it for settings-
417
- page hosts. See `<ConfiguratorRow>` scoped CSS for the attribute-
418
- selector binding. */
419
- --configurator-row-gap-mobile: 0.25rem; /* 4px — tight */
420
- --configurator-row-gap-compact: 0.3125rem; /* 5px — slightly tighter */
421
- --configurator-row-gap-comfortable: 0.375rem; /* 6px — pre-N.W2 default */
422
- --configurator-row-gap-spacious: 0.75rem; /* 12px — generous */
423
-
424
- --configurator-row-py-mobile: 0.25rem; /* 4px — tight */
425
- --configurator-row-py-compact: 0.375rem; /* 6px — slightly tighter */
426
- --configurator-row-py-comfortable: 0.5rem; /* 8px — pre-N.W2 default */
427
- --configurator-row-py-spacious: 0.875rem; /* 14px — generous */
428
-
429
- /* Configurator HIERARCHY VOCABULARY (AZ.W-HIERARCHY — D6-3). The three
430
- NAMED registers the studios (blob, aurora) inherit instead of a flat
431
- undifferentiated stack. DISTINCT from the density ladder above (which is
432
- the per-row CADENCE, not the section/label/preset register).
433
-
434
- 1. Section register — the <ConfiguratorLayer> label reads as a SECTION,
435
- not a row: the √φ subheading rung at weight 600, lifting off the prior
436
- flat `text-small font-semibold`. */
437
- --configurator-section-size: var(--type-subheading); /* 20.4px — √φ section rung */
438
- --configurator-section-weight: 600; /* the heading weight */
439
-
440
- /* AZ.W-BLOB-REDRESS — the SINGLE-COLUMN stage-row FLOOR. Below `lg` the
441
- Configurator stacks stage-over-aside; a percentage stage height against
442
- an INDEFINITE auto-row resolves to 0 (the GooBlob hero painted 0×0 on a
443
- phone). The single-column band's `grid-template-rows` floors the stage
444
- row at this DEFINITE `minmax(…)` minimum so the percentage resolves;
445
- the aside row takes the remainder and scrolls internally. */
446
- --configurator-stage-min: 18rem; /* 288px — the mobile live-specimen stage floor */
447
-
448
- /* 2. Preset-row PRIMARY-AFFORDANCE lift. The preset picker is the primary
449
- interaction (C6-10); D6-3's defect is the preset row being spatially
450
- CRAMPED. This token's binding SEMANTIC is the preset row's SPATIAL
451
- rhythm — its block-padding / gap, NOT a font-weight — so the preset
452
- row breathes ABOVE a body ConfiguratorRow. (The `-weight` name follows
453
- the vocabulary's "register weight" framing; it lands on the padding/gap
454
- slot of `.configurator-presets`, the heavier spatial cadence.) */
455
- --configurator-preset-row-weight: 0.625rem; /* 10px — > a body row's 8px py-comfortable */
456
- --configurator-preset-row-gap: 0.5rem; /* 8px — generous chip gap */
457
-
458
- /* 3. The DIVIDER register — dark-adaptive (BA.W-CONFIG-CHASSIS.1 / CFG-4).
459
- The section + inter-row dividers used to be inline `border-border/40` and
460
- `border-border/30` Tailwind alphas; over the W-DARK-MATERIAL dark
461
- `glass-floating` plate (a luminous transmissive material, --card L16) those
462
- near-equal-luminance hairlines effectively VANISHED — "the sections run
463
- together". This ONE token is consumed by every divider rule (the
464
- <ConfiguratorLayer> section border, the dividers-prop inter-row border,
465
- Configurator.vue's aside/preset/footer borders, configurator.css) so the
466
- divider weight is retuned from a single override.
467
-
468
- The dark-LIFTING arm is the load-bearing half: the divider must read on
469
- BOTH plates. On LIGHT it is the resting `--border` warm-neutral at the
470
- prior ~40% weight; on DARK it LIFTS off `--border` (L34 over the L16 plate
471
- — too close) toward the `--foreground` warm-ink (L90) at a higher α, so a
472
- visible luminance step survives the dark glass. `light-dark()` carries the
473
- arm in ONE declaration (the same :root cascade context as the surface-tint
474
- family; an engine without `light-dark()` falls back to the dark-arm.css
475
- `.dark` floor minted in lockstep). The SECTION divider runs a touch
476
- heavier than the inter-row hairline (a section reads as a section without
477
- a second heading rung). */
478
- --configurator-divider: light-dark(
479
- color-mix(in srgb, var(--border) 55%, transparent),
480
- color-mix(in srgb, var(--foreground) 22%, transparent)
481
- );
482
- --configurator-divider-section: light-dark(
483
- color-mix(in srgb, var(--border) 70%, transparent),
484
- color-mix(in srgb, var(--foreground) 30%, transparent)
485
- );
486
- /* The optional faint section-header tonal step — a whisper-light warm wash
487
- behind a <ConfiguratorLayer> section so it reads as a grouped section
488
- WITHOUT a new heading rung (within the W-HIERARCHY register). Default off
489
- (transparent) on light where the hairline carries it; a faint
490
- foreground-over-transparent lift on dark where the divider alone is
491
- subtle. */
492
- --configurator-section-tint: light-dark(
493
- transparent,
494
- color-mix(in srgb, var(--foreground) 3%, transparent)
495
- );
496
-
497
- /* Component font override (consumers override locally) */
498
- --select-font: inherit;
444
+ /* The MetricBadge stacked geometry + the Configurator family (density ladder,
445
+ AZ.W-HIERARCHY section/label/preset vocabulary, stage-floor, dark-adaptive
446
+ divider register, section tonal step) + the --select-font override are carved
447
+ into tokens/sizing-config.css (a cohesive §10 tail, the no-god-module re-drain)
448
+ — @import-ed by tokens.css IMMEDIATELY AFTER sizing.css (adjacent same-selector
449
+ :root blocks, byte-isomorphic). */
499
450
  }
@@ -33,6 +33,11 @@
33
33
  @import "./tokens/on-glass-fg.css";
34
34
  @import "./tokens/offsets.css";
35
35
  @import "./tokens/sizing.css";
36
+ /* BC.W-CARVE6 — sizing.css's §10 tail (MetricBadge stacked geometry + the
37
+ Configurator density/HIERARCHY/divider family + the --select-font override)
38
+ carved into sizing-config.css to hold the 500-line bound, @import-ed IMMEDIATELY
39
+ AFTER sizing.css (adjacent same-selector :root blocks — byte-isomorphic). */
40
+ @import "./tokens/sizing-config.css";
36
41
  @import "./tokens/scale-paper.css";
37
42
  @import "./tokens/scroll-tokens.css";
38
43
  @import "./tokens/light-dark.css";
@@ -157,13 +157,26 @@ body {
157
157
  /* Canonical dock control label register — text labels INSIDE
158
158
  `.dock-tab-button` (Start, Next, Submit, …) that want an emphatic character
159
159
  without `.text-heading`'s `font-weight: 700` (which reads as literal bold in
160
- a dock pill). Composes the `--dock-label-size` knob when set (dock.css
161
- audacious mobile carve), else `--type-subheading`. Weight 400 — Plus Jakarta
162
- reads heavier than its numeric weight at pill size, so regular is the
163
- not-bold register. */
160
+ a dock pill). Weight 400 — Plus Jakarta reads heavier than its numeric weight
161
+ at pill size, so regular is the not-bold register.
162
+
163
+ BC.W-AX-DOCK-COCKPIT — the label TRACKS the control height by ratio (the
164
+ dock-oversize chronic close, speedtest A-9): the font is a PROPORTION of the
165
+ control (`calc(var(--dock-control-size) * var(--dock-label-ratio))`) so a
166
+ tighter control (the `[data-preset="cockpit"]` 2.75rem floor + compact chrome)
167
+ carries a proportionally tighter label — never the fixed `--type-subheading`
168
+ rung that read OVERSIZE on a tight pill. The explicit `--dock-label-size` knob
169
+ STILL wins when set (the dock.css audacious-mobile carve precedent, KEPT — the
170
+ ratio is the FALLBACK). The `--dock-label-ratio` default reproduces
171
+ `--type-subheading` at the comfortable `2.5rem` control (sizing.css), so the
172
+ bare default is byte-near-identical; the `--dock-control-size` fallback `2.5rem`
173
+ mirrors the comfortable rung for a label outside a density-painted scope. */
164
174
  @utility dock-label {
165
175
  font-family: var(--font-text);
166
- font-size: var(--dock-label-size, var(--type-subheading));
176
+ font-size: var(
177
+ --dock-label-size,
178
+ calc(var(--dock-control-size, 2.5rem) * var(--dock-label-ratio))
179
+ );
167
180
  line-height: var(--type-leading-body);
168
181
  font-weight: 400;
169
182
  letter-spacing: var(--type-tracking-normal);
@@ -114,7 +114,7 @@ html.no-transition *:not([data-allow-motion])::after {
114
114
  `min-block/inline-size` only RAISES — a larger explicit size is never lost. */
115
115
  @media (pointer: coarse) {
116
116
  [data-size="icon"],
117
- .expandable-container__trigger,
117
+ [data-part="trigger"],
118
118
  .segmented-tabs__trigger {
119
119
  min-block-size: var(--touch-target, 2.75rem);
120
120
  min-inline-size: var(--touch-target, 2.75rem);
@@ -160,10 +160,25 @@ html.no-transition *:not([data-allow-motion])::after {
160
160
  translate: -50% -50%;
161
161
  min-width: var(--touch-target, 2.75rem);
162
162
  min-height: var(--touch-target, 2.75rem);
163
- /* Inherit the host's pointer-events so a tap within the halo
164
- registers on the atom; the overlay itself is decorative (no
165
- paint), so it never occludes the host's own interaction. */
166
- pointer-events: auto;
163
+ /* BC.W-RADIO-FIX — the swallow-fix (the §F headline binding bug).
164
+ An absolutely-positioned `::before` over the atom with
165
+ `pointer-events: auto` becomes the topmost hit target across the
166
+ whole 44px box and INTERCEPTS the real pointer event before it
167
+ reaches the host's listener — reka's RadioGroupItem / Checkbox /
168
+ Switch / SliderRoot bind their toggle/drag handler on the HOST
169
+ button (Radio.vue `onClick`), and the swallowing overlay was the
170
+ root of "radios don't work" (a synthetic .click() on the host
171
+ still fired, but a real coarse tap landed on the pseudo and
172
+ no-op'd). `pointer-events: none` frees the pointer to fall
173
+ through to the host so the tap reaches reka on EVERY input path,
174
+ while the 44px GEOMETRY still satisfies the WCAG-2.5.5 readback
175
+ (getComputedStyle reads min-width/height, not pointer-events —
176
+ the hit FLOOR is the box, never a pointer-swallowing overlay).
177
+ The same integrity discipline `useDockClickIntegrity` applies to
178
+ the dock + the Slider's own `.slider-thumb.touch-hit-area::before`
179
+ override already discovered (AY.W-SCALE2) — now ONE source for
180
+ the whole six-atom hit-area family. */
181
+ pointer-events: none;
167
182
  }
168
183
  }
169
184
  }
@@ -212,6 +212,27 @@
212
212
  scroll-timeline: --card-scroll block;
213
213
  }
214
214
 
215
+ /* ── Stable scroll gutter — the no-shift discipline for overlay-hosting
216
+ route scrollers (BC.W-DROPDOWN-FIX) ──────────────────────────────────
217
+ An app-shell route scroller that hosts portaled picker/menu overlays
218
+ (Select / DropdownMenu / any reka overlay that locks body scroll on open)
219
+ RESERVES a stable scrollbar gutter so the lock-induced scrollbar removal
220
+ removes no layout space — the centred content does not reflow and the
221
+ trigger does not twitch left/right (USER-DEFECTS §F, the classic
222
+ space-taking-scrollbar reflow).
223
+
224
+ PRESETS-IN-CONSUMERS: the library ships the named discipline; the CONSUMER
225
+ app-shell opts its OWN route scroller in (the demo `.demo-main-scroller`
226
+ is the reference adoption). glass-ui does not force `scrollbar-gutter` on
227
+ every consumer's scroller — it provides this utility + the canon note.
228
+
229
+ Baseline-newly-available: Chrome 94+, Firefox 97+, Safari 18.2+ — a
230
+ non-supporting engine ignores the property (the gutter just isn't
231
+ reserved, the legacy behaviour). */
232
+ .scroll-gutter-stable {
233
+ scrollbar-gutter: stable;
234
+ }
235
+
215
236
  /* ── Shimmer text effects ──
216
237
  BB.W-METAL-SHIMMER — the gold-only `gold-shimmer-slide` is RETIRED (clean
217
238
  break, no alias); `.gold-shimmer` re-points onto the metal-PARAMETERIZED
@@ -253,3 +274,34 @@
253
274
  }
254
275
 
255
276
  }
277
+
278
+ /* ── @utility ghost-slot (BC.W-GHOST-DASHED) ────────────────────────────────
279
+ The ONE dashed-outline placeholder register: everywhere a slot is empty / a
280
+ thing is a placeholder / an affordance is "add something here", the surface
281
+ reads this — a dashed-outline plate, consistently rounded (--radius-card),
282
+ calm-muted, that reads unmistakably "this is a placeholder, not a filled
283
+ surface." The 6 ad-hoc `rounded-{md,2xl,card} border border-dashed
284
+ border-border bg-{card,background}` forks (three radii, three hosts, three
285
+ pads) COLLAPSE onto this ONE register: ONE radius, ONE faint-wash host, ONE
286
+ muted ink, ONE warm dashed hairline.
287
+
288
+ WARM-NOT-GREY (BA.W-NO-GRAY): the dashed hairline is the warm-ink at 22%
289
+ (a color-mix off --foreground, the warm identity), NEVER a grey
290
+ `border-border` — the ghost must read warm-material, not grey.
291
+
292
+ GLASS-ADJACENT, not opaque: the host is a faint glass-wash (the rebuilt W55
293
+ material reads THROUGH it), NOT a flat opaque `bg-card` slab — so the ghost
294
+ reads "empty," not "filled," and the D1 grey-plate regression cannot re-enter
295
+ through the placeholder.
296
+
297
+ THE FENCE (binding both ways): this is the RECTANGULAR-placeholder register.
298
+ The `WatercolorDot variant="ghost"` (the seeded-blob SILHOUETTE traced as a
299
+ dashed stroke — the empty-PALETTE-slot affordance) is a DISTINCT register;
300
+ neither forks the other. .ghost-slot is never applied to a blob-silhouette
301
+ slot, and the watercolor ghost never adopts this rectangle recipe. */
302
+ @utility ghost-slot {
303
+ border: 1px dashed color-mix(in srgb, var(--foreground) 22%, transparent);
304
+ border-radius: var(--radius-card);
305
+ background: color-mix(in oklab, var(--glass-bg-wash), transparent 40%);
306
+ color: var(--muted-foreground);
307
+ }
@@ -49,12 +49,23 @@
49
49
  Shared compound transition for interactive controls that animate their
50
50
  surface (background-color/color/box-shadow/border-color) on the four-state
51
51
  contract. Replaces the per-site
52
- `transition-[background-color,color,box-shadow,border-color] duration-[var(--duration-fast)] ease-[var(--ease-standard)]`
52
+ `transition-[background-color,color,box-shadow,border-color] duration-[var(--duration-control)] ease-[var(--ease-standard)]`
53
53
  arbitrary wraps at ≥2 sites (TabsTrigger, SelectTrigger, Toggle `card`
54
- variant). Binds the canonical --duration-fast + --ease-standard tokens. */
54
+ variant).
55
+
56
+ BC.W-CONTROL-SMOOTH — the surface legs read the QUICK control clock
57
+ `--duration-control` (0.12s, the named iOS control-press surface beat,
58
+ scheme-motion.css), NOT the 0.2s calm `--duration-fast`. A control the user
59
+ actively pokes wants the ~100-120ms quick beat that tracks the cursor; the
60
+ prior 0.2s dragged the colour/border/shadow VISIBLY behind the press (the §F
61
+ "super laggy" read). The bezier `--ease-standard` STAYS (a colour cross-fade
62
+ on a spring wobbles — §6 binding); the property list stays SURFACE-ONLY (no
63
+ `transform` leg — the press-squish is `.tap-squish`/`useSpringPress`'s spring
64
+ job, the canonical split). One token re-times the whole 12-consumer control
65
+ family. */
55
66
  @utility transition-control {
56
67
  transition-property: background-color, color, box-shadow, border-color;
57
- transition-duration: var(--duration-fast);
68
+ transition-duration: var(--duration-control);
58
69
  transition-timing-function: var(--ease-standard);
59
70
  }
60
71
 
@@ -31,11 +31,17 @@
31
31
  background: var(--metric-badge-bg, var(--glass-bg-quiet));
32
32
  backdrop-filter: var(--metric-badge-blur, var(--glass-blur-quiet));
33
33
  box-shadow: var(--metric-badge-shadow, 0 1px 6px color-mix(in srgb, var(--shadow-color) 8%, transparent), var(--glass-highlight));
34
+ /* SPATIAL/EFFECTS split (motion-canon P1): the EFFECTS legs
35
+ (background/border-color/box-shadow) ride the bezier --ease-standard;
36
+ the SPATIAL hover-lift legs (translate/scale) ride the --spring-smooth
37
+ hover register on its own settle clock --spring-smooth-duration (the
38
+ ONE interactive transform register .btn-pill/.glass-btn settle on). */
34
39
  transition:
35
40
  background var(--duration-fast) var(--ease-standard),
36
41
  border-color var(--duration-fast) var(--ease-standard),
37
42
  box-shadow var(--duration-fast) var(--ease-standard),
38
- scale var(--duration-fast) var(--ease-standard);
43
+ translate var(--spring-smooth-duration) var(--spring-smooth),
44
+ scale var(--spring-smooth-duration) var(--spring-smooth);
39
45
  }
40
46
 
41
47
  .metric-badge > span {
@@ -49,11 +55,17 @@
49
55
 
50
56
  .metric-badge:hover {
51
57
  /* Hover lifts to the `resting` rung — one step up the canonical
52
- ladder (audit U.W0.C-c §7.2). */
58
+ ladder (audit U.W0.C-c §7.2). BC.W-AX-METRIC-HOVER lifts the badge
59
+ into a tactile VALUE-LIFT: it nudges UP (--metric-badge-hover-translate
60
+ -2px) + scales a hair more (1.04) + casts the cartoon-sticker offset
61
+ shadow (--shadow-cartoon-sm) — token-first, so a consumer zeroes the
62
+ lift from :root (--metric-badge-hover-translate: 0). Compositor-only
63
+ (translate/scale/box-shadow — proof:no-layout-animation holds). */
53
64
  border-color: var(--metric-badge-hover-border, var(--glass-border-resting));
54
65
  background: var(--metric-badge-hover-bg, var(--glass-bg-resting));
55
- box-shadow: var(--metric-badge-hover-shadow, 0 2px 10px color-mix(in srgb, var(--shadow-color) 12%, transparent), var(--glass-highlight));
56
- scale: var(--metric-badge-hover-scale, 1.02);
66
+ box-shadow: var(--metric-badge-hover-shadow, var(--shadow-cartoon-sm), var(--glass-highlight));
67
+ translate: 0 var(--metric-badge-hover-translate, -2px);
68
+ scale: var(--metric-badge-hover-scale, 1.04);
57
69
  }
58
70
 
59
71
  .metric-badge:active {
@@ -212,7 +224,14 @@
212
224
  backdrop-filter: var(--glass-blur-floating);
213
225
 
214
226
  padding: 0 0.75rem;
215
- height: 2.25rem;
227
+ /* BC.W-SEARCH-CUSTOM — the height reads the shared `--control-pill-h`
228
+ element-override seam (the SAME rung `.input-pill` reads), DEFAULTING to
229
+ `--control-h-sm` so a bare search bar is byte-identical to the HEAD
230
+ 2.25rem pill. `controlSizeClass(size)` (_shared/useControlSize.ts) re-points
231
+ the seam per rung (sm→`--control-h-xs`-ish via the cohort, lg→`--control-h-lg`),
232
+ so the SearchBar/FuzzySearch `size` prop retunes the field height WITHOUT a
233
+ recipe fork — ONE substitution rung, the cohort is still the source. */
234
+ height: var(--control-pill-h, var(--control-h-sm));
216
235
  max-width: var(--max-width-input);
217
236
  width: 100%;
218
237
  transition:
@@ -226,7 +245,13 @@
226
245
 
227
246
  .input-bar-field {
228
247
  font-family: var(--font-mono, monospace);
229
- font-size: var(--type-small);
248
+ /* BC.W-SEARCH-CUSTOM — the field font reads the shared `--control-pill-text`
249
+ seam (the SAME rung `.input-pill` reads), DEFAULTING to `--control-text`
250
+ (≈ the prior `--type-small` register at scale 1 — byte-near-identical). The
251
+ `controlSizeClass("sm")` rung re-points it to `--control-text-sm` (quieter);
252
+ `default`/`lg` keep `--control-text`. So the search field type tracks the
253
+ cohort under `--ui-scale`, NOT a static `--type-small` literal. */
254
+ font-size: var(--control-pill-text, var(--control-text));
230
255
  background: transparent;
231
256
  border: none;
232
257
  outline: none;
@@ -57,6 +57,32 @@
57
57
  background-clip: text;
58
58
  -webkit-background-clip: text;
59
59
  color: transparent;
60
+
61
+ /* ── BC.W-AX-METAL-GLOW — the gold catch-light (the lit-metal halo) ──────
62
+ A soft glow halo of the metal's OWN base hue behind the gradient text-clip
63
+ so the gold reads as LIT metal (light catching its surface), not a flat
64
+ gradient fill. Because `background-clip: text` makes the text transparent,
65
+ a `filter: drop-shadow` follows the clipped glyph shape — the halo hugs the
66
+ letters. ONE recipe on the shared selector (every metal lit, never a per-
67
+ metal re-paste); the glow reads `--metal-stop-base` so gold halos gold,
68
+ silver halos silver, bronze halos bronze (NOT a fixed gold-on-every-metal
69
+ mismatch). The earned-gold register (Q2): `.metal-gold`'s base is
70
+ `--color-gold`, so the gold catch-light is the earned-gold warm glow.
71
+
72
+ PRM-STATIC: the glow paints HERE, at rest, OUTSIDE the no-preference
73
+ bracket — the lit metal reads for PRM users; ONLY the sweep `animation:`
74
+ is gated (the §6 calm register; the disco family stays gone — this is a
75
+ soft warm whisper bounded by `--metal-glow-opacity`, not a neon bloom). */
76
+ --metal-glow-blur: var(--metal-glow-blur-default, 0.5em);
77
+ --metal-glow-opacity: var(--metal-glow-opacity-default, 0.35);
78
+ filter: drop-shadow(
79
+ 0 0 var(--metal-glow-blur)
80
+ color-mix(
81
+ in srgb,
82
+ var(--metal-stop-base) calc(var(--metal-glow-opacity) * 100%),
83
+ transparent
84
+ )
85
+ );
60
86
  }
61
87
 
62
88
  /* Per-metal: set the channel marker + re-bind the stop slots to the quad. */