@mkbabb/glass-ui 4.0.0 → 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 (609) hide show
  1. package/README.md +3 -1
  2. package/dist/CardAction-8whJrLWt.js +268 -0
  3. package/dist/{CommandShortcut-DdtWXxOK.js → CommandShortcut-D3yxgHNn.js} +25 -14
  4. package/dist/ConfiguratorRow-CaP7U3ZA.js +143 -0
  5. package/dist/ContextMenuContent-B3ZsheLV.js +90 -0
  6. package/dist/{ContextMenuSubContent-B0Vs6atR.js → ContextMenuSubContent-DDRID3qC.js} +28 -33
  7. package/dist/{DataTable-C464Zbqd.js → DataTable-Bc9kUtu_.js} +4 -4
  8. package/dist/{DialogContent-DDE6pQBU.js → DialogContent-6JtTB5x2.js} +11 -8
  9. package/dist/DialogFooter-9phqcRIS.js +80 -0
  10. package/dist/DialogScrollContent-TTuovQst.js +93 -0
  11. package/dist/{FadingScroll-DwNnvKMs.js → FadingScroll-DLRbH5Xr.js} +1 -1
  12. package/dist/HoverCardContent-Bel1gdLZ.js +88 -0
  13. package/dist/{HoverPopover-Dpzwvc4t.js → HoverPopover-BcIxvyqZ.js} +2 -2
  14. package/dist/{IconChip-BDw1j5mu.js → IconChip-DhbdGdFQ.js} +2 -1
  15. package/dist/{IconTooltip-DSjasZIt.js → IconTooltip-B0zimd2H.js} +1 -1
  16. package/dist/Input-Cg9DF62r.js +57 -0
  17. package/dist/{MetricBadge-BpC0R_Ec.js → MetricBadge-RHdBP72w.js} +1 -1
  18. package/dist/Notification-CphK7AAm.js +43 -0
  19. package/dist/NumberFieldContent-D8cXeyO4.js +140 -0
  20. package/dist/PagerDots-Cjx96la-.js +98 -0
  21. package/dist/{PopoverContent-BTorlp--.js → PopoverContent-DL7E6vJP.js} +4 -4
  22. package/dist/{Progress-hAT4gqGH.js → Progress-CnqB7gLm.js} +4 -4
  23. package/dist/{ScrollingText-CUVFTWk2.js → ScrollingText-CTZbA_cG.js} +2 -2
  24. package/dist/{SelectScrollDownButton-C1jb3b3K.js → SelectScrollDownButton-DAKCBEdW.js} +65 -61
  25. package/dist/{SelectSeparator-DK2y1Bun.js → SelectSeparator-C2UGOkXF.js} +1 -1
  26. package/dist/Separator-DQcwC2TR.js +44 -0
  27. package/dist/Switch-B8RscmRu.js +49 -0
  28. package/dist/Toaster-D9qIHjBI.js +274 -0
  29. package/dist/ToggleGroupItem-BLtr3TJq.js +170 -0
  30. package/dist/TooltipProvider-BJ_Y5EGX.js +109 -0
  31. package/dist/animated-digit.js +2 -2
  32. package/dist/api/index.d.ts +21 -33
  33. package/dist/api/types-extra.d.ts +37 -0
  34. package/dist/api.js +1 -1
  35. package/dist/aurora.js +1231 -260
  36. package/dist/badge.js +1 -1
  37. package/dist/border-progress.d.ts +1 -0
  38. package/dist/border-progress.js +98 -0
  39. package/dist/button-5dY1Dvhd.js +125 -0
  40. package/dist/button.js +1 -1
  41. package/dist/canvas.js +2 -3
  42. package/dist/card.js +2 -2
  43. package/dist/carousel.js +93 -110
  44. package/dist/collapsible.js +1 -1
  45. package/dist/color-Cs0-oxYL.js +116 -0
  46. package/dist/color.js +2 -2
  47. package/dist/command.js +1 -1
  48. package/dist/compile-nZ1xVYTp.js +19 -0
  49. package/dist/completion-seal.d.ts +1 -0
  50. package/dist/completion-seal.js +89 -0
  51. package/dist/components/custom/aurora/Aurora.vue.d.ts +10 -5
  52. package/dist/components/custom/aurora/composables/atoms-fields.d.ts +39 -0
  53. package/dist/components/custom/aurora/composables/auroraFallbackGround.d.ts +108 -0
  54. package/dist/components/custom/aurora/composables/color.d.ts +13 -0
  55. package/dist/components/custom/aurora/composables/frameLoop.d.ts +9 -0
  56. package/dist/components/custom/aurora/composables/runtime.d.ts +31 -0
  57. package/dist/components/custom/aurora/composables/uniformBridge.d.ts +5 -1
  58. package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +60 -0
  59. package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +37 -0
  60. package/dist/components/custom/aurora/constants/budget.d.ts +21 -0
  61. package/dist/components/custom/aurora/constants/presets.d.ts +20 -2
  62. package/dist/components/custom/aurora/constants/renderMode.d.ts +77 -18
  63. package/dist/components/custom/aurora/constants/shaders/aurora-mediums.wgsl.d.ts +1 -0
  64. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -0
  65. package/dist/components/custom/aurora/constants/shaders/oil-modes.glsl.d.ts +1 -0
  66. package/dist/components/custom/aurora/constants/shaders/procedural-color.wgsl.d.ts +4 -0
  67. package/dist/components/custom/aurora/index.d.ts +2 -1
  68. package/dist/components/custom/border-progress/BorderProgress.vue.d.ts +46 -0
  69. package/dist/components/custom/border-progress/composables/spectrum-walk.d.ts +25 -0
  70. package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +18 -0
  71. package/dist/components/custom/border-progress/constants.d.ts +59 -0
  72. package/dist/components/custom/border-progress/index.d.ts +4 -0
  73. package/dist/components/custom/completion-seal/CompletionSeal.vue.d.ts +21 -0
  74. package/dist/components/custom/completion-seal/composables/useCompletionSeal.d.ts +37 -0
  75. package/dist/components/custom/completion-seal/constants.d.ts +46 -0
  76. package/dist/components/custom/completion-seal/index.d.ts +4 -0
  77. package/dist/components/custom/concentric/Concentric.vue.d.ts +39 -0
  78. package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +18 -0
  79. package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +22 -0
  80. package/dist/components/custom/concentric/composables/ringField.d.ts +85 -0
  81. package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +14 -0
  82. package/dist/components/custom/concentric/composables/useConcentric.d.ts +35 -0
  83. package/dist/components/custom/concentric/constants.d.ts +67 -0
  84. package/dist/components/custom/concentric/index.d.ts +5 -0
  85. package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +4 -0
  86. package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -0
  87. package/dist/components/custom/confirm-dialog/ConfirmDialog.vue.d.ts +3 -3
  88. package/dist/components/custom/constellation/Constellation.vue.d.ts +5 -4
  89. package/dist/components/custom/constellation/composables/constellationGLSetup.d.ts +10 -0
  90. package/dist/components/custom/constellation/composables/constellationWGPUSetup.d.ts +19 -0
  91. package/dist/components/custom/constellation/composables/uniformBridgeWGPU.d.ts +66 -0
  92. package/dist/components/custom/constellation/composables/useConstellation.d.ts +3 -10
  93. package/dist/components/custom/constellation/constants.d.ts +33 -0
  94. package/dist/components/custom/constellation/constellationField.d.ts +31 -1
  95. package/dist/components/custom/constellation/constellationInteraction.d.ts +23 -14
  96. package/dist/components/custom/constellation/constellationRender.d.ts +25 -0
  97. package/dist/components/custom/constellation/constellationTypes.d.ts +38 -0
  98. package/dist/components/custom/constellation/constellationWell.d.ts +15 -0
  99. package/dist/components/custom/constellation/index.d.ts +5 -5
  100. package/dist/components/custom/constellation/shaders/constellation-lines.glsl.d.ts +2 -0
  101. package/dist/components/custom/constellation/shaders/constellation-lines.wgsl.d.ts +1 -0
  102. package/dist/components/custom/constellation/shaders/constellation-points.glsl.d.ts +2 -0
  103. package/dist/components/custom/constellation/shaders/constellation-points.wgsl.d.ts +1 -0
  104. package/dist/components/custom/deck/DeckPager.vue.d.ts +29 -0
  105. package/dist/components/custom/deck/composables/useDeck.d.ts +27 -0
  106. package/dist/components/custom/deck/composables/useDeckKeyboard.d.ts +25 -0
  107. package/dist/components/custom/deck/composables/useDeckSpring.d.ts +22 -0
  108. package/dist/components/custom/deck/constants.d.ts +14 -0
  109. package/dist/components/custom/deck/index.d.ts +8 -0
  110. package/dist/components/custom/dock/DockIconButton.vue.d.ts +25 -4
  111. package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +10 -2
  112. package/dist/components/custom/dock/DockStack.vue.d.ts +65 -0
  113. package/dist/components/custom/dock/GlassDock.vue.d.ts +4 -2
  114. package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +155 -0
  115. package/dist/components/custom/dock/composables/index.d.ts +2 -0
  116. package/dist/components/custom/dock/composables/useDockSearch.d.ts +85 -0
  117. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +11 -0
  118. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +13 -0
  119. package/dist/components/custom/dock/constants.d.ts +18 -14
  120. package/dist/components/custom/dock/index.d.ts +5 -2
  121. package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +42 -0
  122. package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +83 -0
  123. package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +39 -0
  124. package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +35 -0
  125. package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +31 -0
  126. package/dist/components/custom/dot-flow-field/constants.d.ts +69 -0
  127. package/dist/components/custom/dot-flow-field/index.d.ts +5 -0
  128. package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -0
  129. package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +4 -0
  130. package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +1 -0
  131. package/dist/components/custom/dot-matrix/DotMatrix.vue.d.ts +43 -0
  132. package/dist/components/custom/dot-matrix/composables/dotMatrixField.d.ts +89 -0
  133. package/dist/components/custom/dot-matrix/composables/uniformBridgeWGPU.d.ts +52 -0
  134. package/dist/components/custom/dot-matrix/composables/useDotMatrix.d.ts +34 -0
  135. package/dist/components/custom/dot-matrix/composables/useDotSphere.d.ts +27 -0
  136. package/dist/components/custom/dot-matrix/constants.d.ts +58 -0
  137. package/dist/components/custom/dot-matrix/index.d.ts +5 -0
  138. package/dist/components/custom/dot-matrix/shaders/dot-matrix.glsl.d.ts +4 -0
  139. package/dist/components/custom/dot-matrix/shaders/dot-matrix.wgsl.d.ts +1 -0
  140. package/dist/components/custom/easing/EasingConfigurator.vue.d.ts +33 -0
  141. package/dist/components/custom/easing/EasingPicker.vue.d.ts +49 -0
  142. package/dist/components/custom/easing/composables/useEasingPicker.d.ts +80 -0
  143. package/dist/components/custom/easing/constants.d.ts +28 -0
  144. package/dist/components/custom/easing/index.d.ts +3 -0
  145. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +11 -0
  146. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +43 -40
  147. package/dist/components/custom/fourier-field/composables/fourierFieldGLSetup.d.ts +15 -0
  148. package/dist/components/custom/fourier-field/composables/fourierFieldWGPUSetup.d.ts +20 -0
  149. package/dist/components/custom/fourier-field/composables/uniformBridgeWGPU.d.ts +41 -0
  150. package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +42 -0
  151. package/dist/components/custom/fourier-field/constants.d.ts +64 -0
  152. package/dist/components/custom/fourier-field/index.d.ts +23 -18
  153. package/dist/components/custom/fourier-field/shaders/fourier-field.compute.wgsl.d.ts +1 -0
  154. package/dist/components/custom/fourier-field/shaders/fourier-field.glsl.d.ts +4 -0
  155. package/dist/components/custom/fourier-field/shaders/fourier-field.render.wgsl.d.ts +1 -0
  156. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +1 -1
  157. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +13 -3
  158. package/dist/components/custom/goo-blob/composables/uniformBridgeWGPU.d.ts +24 -0
  159. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +18 -11
  160. package/dist/components/custom/goo-blob/composables/wgpuSetup.d.ts +23 -0
  161. package/dist/components/custom/goo-blob/constants.d.ts +1 -1
  162. package/dist/components/custom/goo-blob/index.d.ts +1 -1
  163. package/dist/components/custom/goo-blob/shaders/metaball-noise.wgsl.d.ts +1 -0
  164. package/dist/components/custom/goo-blob/shaders/metaball-palette.wgsl.d.ts +1 -0
  165. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -1
  166. package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -0
  167. package/dist/components/custom/goo-blob/types.d.ts +36 -0
  168. package/dist/components/custom/goo-dot-matrix/GooDotMatrix.vue.d.ts +49 -0
  169. package/dist/components/custom/goo-dot-matrix/composables/gooDotLattice.d.ts +24 -0
  170. package/dist/components/custom/goo-dot-matrix/composables/gooDotSetup.d.ts +50 -0
  171. package/dist/components/custom/goo-dot-matrix/composables/uniformBridgeWGPU.d.ts +35 -0
  172. package/dist/components/custom/goo-dot-matrix/composables/useGooDotMatrix.d.ts +31 -0
  173. package/dist/components/custom/goo-dot-matrix/constants.d.ts +76 -0
  174. package/dist/components/custom/goo-dot-matrix/index.d.ts +5 -0
  175. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.frag.d.ts +11 -0
  176. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.wgsl.d.ts +3 -0
  177. package/dist/components/custom/handmark/HandMark.vue.d.ts +1 -1
  178. package/dist/components/custom/icon-chip/types.d.ts +11 -1
  179. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +3 -1
  180. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +21 -2
  181. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +15 -0
  182. package/dist/components/custom/metric-stack/MetricStack.vue.d.ts +1 -1
  183. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +9 -0
  184. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  185. package/dist/components/custom/pager-dots/pagerWindow.d.ts +9 -0
  186. package/dist/components/custom/paper-grid/PaperGrid.vue.d.ts +42 -0
  187. package/dist/components/custom/paper-grid/composables/paperGrid.d.ts +90 -0
  188. package/dist/components/custom/paper-grid/composables/paperGridGLSetup.d.ts +16 -0
  189. package/dist/components/custom/paper-grid/composables/paperGridWGPUSetup.d.ts +19 -0
  190. package/dist/components/custom/paper-grid/composables/uniformBridgeWGPU.d.ts +16 -0
  191. package/dist/components/custom/paper-grid/composables/usePaperGrid.d.ts +31 -0
  192. package/dist/components/custom/paper-grid/constants.d.ts +57 -0
  193. package/dist/components/custom/paper-grid/index.d.ts +5 -0
  194. package/dist/components/custom/paper-grid/shaders/paper-grid.glsl.d.ts +4 -0
  195. package/dist/components/custom/paper-grid/shaders/paper-grid.wgsl.d.ts +1 -0
  196. package/dist/components/custom/search/FuzzySearch.vue.d.ts +8 -2
  197. package/dist/components/custom/search/SearchBar.vue.d.ts +8 -0
  198. package/dist/components/custom/search/index.d.ts +2 -0
  199. package/dist/components/custom/search/searchVariants.d.ts +19 -0
  200. package/dist/components/custom/selectable-chip/SelectableChip.vue.d.ts +50 -0
  201. package/dist/components/custom/selectable-chip/index.d.ts +2 -0
  202. package/dist/components/custom/selectable-chip/selectableChipVariants.d.ts +23 -0
  203. package/dist/components/custom/spa-view/SpaView.vue.d.ts +50 -0
  204. package/dist/components/custom/spa-view/index.d.ts +2 -0
  205. package/dist/components/custom/split-chars/SplitChars.vue.d.ts +39 -0
  206. package/dist/components/custom/split-chars/index.d.ts +1 -0
  207. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +12 -0
  208. package/dist/components/custom/tabs/composables/useTabDragMorph.d.ts +42 -0
  209. package/dist/components/custom/tabs/constants.d.ts +20 -2
  210. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +30 -17
  211. package/dist/components/custom/watercolor-dot/useWatercolorBlob.d.ts +10 -5
  212. package/dist/components/ui/_shared/index.d.ts +2 -0
  213. package/dist/components/ui/_shared/menuItemVariants.d.ts +1 -1
  214. package/dist/components/ui/_shared/useControlSize.d.ts +46 -0
  215. package/dist/components/ui/badge/index.d.ts +1 -1
  216. package/dist/components/ui/button/Button.vue.d.ts +5 -2
  217. package/dist/components/ui/button/index.d.ts +2 -2
  218. package/dist/components/ui/card/Card.vue.d.ts +79 -4
  219. package/dist/components/ui/card/CardHeader.vue.d.ts +42 -16
  220. package/dist/components/ui/card/ScrollCard.vue.d.ts +33 -0
  221. package/dist/components/ui/card/ScrollCardHeader.vue.d.ts +17 -0
  222. package/dist/components/ui/card/index.d.ts +3 -1
  223. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +2 -2
  224. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +2 -2
  225. package/dist/components/ui/carousel/GlassCarouselPager.vue.d.ts +2 -2
  226. package/dist/components/ui/command/Command.vue.d.ts +1 -1
  227. package/dist/components/ui/command/CommandDialog.vue.d.ts +9 -3
  228. package/dist/components/ui/command/CommandList.vue.d.ts +3 -0
  229. package/dist/components/ui/context-menu/ContextMenuContent.vue.d.ts +5 -1
  230. package/dist/components/ui/drawer/Drawer.vue.d.ts +46 -33
  231. package/dist/components/ui/drawer/DrawerContent.vue.d.ts +7 -8
  232. package/dist/components/ui/drawer/DrawerDescription.vue.d.ts +2 -2
  233. package/dist/components/ui/drawer/DrawerOverlay.vue.d.ts +1 -1
  234. package/dist/components/ui/drawer/DrawerTitle.vue.d.ts +2 -2
  235. package/dist/components/ui/drawer/composables/drawerSnapContext.d.ts +26 -0
  236. package/dist/components/ui/drawer/composables/useDrawerSnap.d.ts +17 -0
  237. package/dist/components/ui/drawer/constants.d.ts +45 -0
  238. package/dist/components/ui/drawer/index.d.ts +23 -15
  239. package/dist/components/ui/dropdown-menu/DropdownMenuContent.vue.d.ts +4 -0
  240. package/dist/components/ui/focus-scope/FocusScope.vue.d.ts +20 -0
  241. package/dist/components/ui/focus-scope/index.d.ts +2 -0
  242. package/dist/components/ui/hover-card/HoverCardContent.vue.d.ts +3 -0
  243. package/dist/components/ui/index.d.ts +1 -0
  244. package/dist/components/ui/input/Input.vue.d.ts +3 -0
  245. package/dist/components/ui/number-field/NumberFieldInput.vue.d.ts +6 -1
  246. package/dist/components/ui/progress/ProgressDefault.vue.d.ts +3 -2
  247. package/dist/components/ui/select/SelectContent.vue.d.ts +4 -1
  248. package/dist/components/ui/sheet/index.d.ts +1 -1
  249. package/dist/components/ui/switch/Switch.vue.d.ts +2 -0
  250. package/dist/components/ui/tags-input/TagsInput.vue.d.ts +2 -2
  251. package/dist/components/ui/textarea/Textarea.vue.d.ts +3 -0
  252. package/dist/components/ui/toast/Toast.vue.d.ts +5 -2
  253. package/dist/components/ui/toast/use-toast.d.ts +14 -0
  254. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  255. package/dist/components/ui/tooltip/TooltipContent.vue.d.ts +3 -0
  256. package/dist/composables/color/index.d.ts +2 -0
  257. package/dist/composables/color/useAccentTone.d.ts +34 -0
  258. package/dist/composables/glass/canvas2d/useCanvas2D.d.ts +13 -6
  259. package/dist/composables/glass/index.d.ts +5 -2
  260. package/dist/composables/glass/useSpecularPointer.d.ts +33 -0
  261. package/dist/composables/glass/useSpecularTracking.d.ts +20 -0
  262. package/dist/composables/glass/useVizChoreography.d.ts +123 -0
  263. package/dist/composables/glass/vSpecular.d.ts +2 -0
  264. package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +10 -0
  265. package/dist/composables/glass/webgl/shaders/flow.glsl.d.ts +1 -0
  266. package/dist/composables/glass/webgl/shaders/flow.wgsl.d.ts +1 -0
  267. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +16 -0
  268. package/dist/composables/glass/webgpu/index.d.ts +2 -0
  269. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +75 -0
  270. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +85 -0
  271. package/dist/composables/glass/webgpu/webgpuDevice.d.ts +42 -0
  272. package/dist/composables/motion/core/index.d.ts +4 -0
  273. package/dist/composables/motion/index.d.ts +4 -0
  274. package/dist/composables/motion/scrollReader.d.ts +25 -0
  275. package/dist/composables/motion/springPresets.d.ts +20 -1
  276. package/dist/composables/motion/useCharStagger.d.ts +44 -0
  277. package/dist/composables/motion/useDockCtaReceive.d.ts +84 -0
  278. package/dist/composables/motion/useDragMorph.d.ts +77 -0
  279. package/dist/composables/motion/useLiquidFlex.d.ts +11 -0
  280. package/dist/composables/motion/useLiquidPress.d.ts +71 -0
  281. package/dist/composables/motion/useLiquidReveal.d.ts +51 -0
  282. package/dist/composables/motion/useNumericTransition.d.ts +3 -3
  283. package/dist/composables/motion/usePointerVelocityField.d.ts +98 -0
  284. package/dist/composables/motion/useScrollChrome.d.ts +58 -0
  285. package/dist/composables/motion/useScrollTrigger.d.ts +67 -0
  286. package/dist/composables/motion/useSpringPress.d.ts +5 -5
  287. package/dist/composables/motion/useStaggerReveal.d.ts +24 -0
  288. package/dist/composables/sidebar/index.d.ts +4 -1
  289. package/dist/composables/sidebar/types.d.ts +68 -3
  290. package/dist/composables/sidebar/useClickDelegate.d.ts +4 -0
  291. package/dist/composables/sidebar/useLazyLoader.d.ts +5 -0
  292. package/dist/composables/sidebar/useScrollTo.d.ts +5 -0
  293. package/dist/composables/virtual/index.d.ts +4 -0
  294. package/dist/composables/virtual/useVirtualSectionWindow.d.ts +72 -0
  295. package/dist/composables/virtual/useWindowedStore.d.ts +43 -0
  296. package/dist/composables/virtual/virtualSectionLayout.d.ts +103 -0
  297. package/dist/concentric.d.ts +1 -0
  298. package/dist/concentric.js +836 -0
  299. package/dist/configurator.js +3 -2
  300. package/dist/confirm-dialog.js +62 -49
  301. package/dist/constellation.js +635 -235
  302. package/dist/context-menu.js +3 -3
  303. package/dist/controls.js +2 -2
  304. package/dist/createCanvasLifecycle-Gh45Ce-p.js +93 -0
  305. package/dist/dark.js +1 -1
  306. package/dist/data-table.js +1 -1
  307. package/dist/deck.d.ts +1 -0
  308. package/dist/deck.js +105 -0
  309. package/dist/dialog.js +4 -3
  310. package/dist/dock.js +819 -568
  311. package/dist/{dockContext-Bu1Avy-a.js → dockContext-BNfyPLe9.js} +1 -1
  312. package/dist/dom.js +5 -5
  313. package/dist/dot-flow-field.d.ts +1 -0
  314. package/dist/dot-flow-field.js +894 -0
  315. package/dist/dot-matrix.d.ts +1 -0
  316. package/dist/dot-matrix.js +630 -0
  317. package/dist/dotMatrixField-D_x9_1qq.js +48 -0
  318. package/dist/drawer.d.ts +1 -0
  319. package/dist/drawer.js +380 -0
  320. package/dist/{dropdown-menu-BJ7E9js_.js → dropdown-menu-aJmV5SqE.js} +82 -79
  321. package/dist/dropdown-menu.js +1 -1
  322. package/dist/easing.d.ts +1 -0
  323. package/dist/easing.js +475 -0
  324. package/dist/expandable-container.js +46 -21
  325. package/dist/fading-scroll.js +1 -1
  326. package/dist/flow.glsl-B2P7e0MT.js +4 -0
  327. package/dist/focus-scope.d.ts +1 -0
  328. package/dist/focus-scope.js +23 -0
  329. package/dist/forms.js +65 -63
  330. package/dist/fourier-field.js +831 -172
  331. package/dist/fourier-math.js +1 -1
  332. package/dist/glass-panel.js +2 -2
  333. package/dist/glass-ui.css +1 -1
  334. package/dist/glass-ui.js +187 -338
  335. package/dist/goo-blob.js +241 -692
  336. package/dist/goo-dot-matrix.d.ts +1 -0
  337. package/dist/goo-dot-matrix.js +591 -0
  338. package/dist/handmark.js +2 -2
  339. package/dist/header-ribbon.js +1 -1
  340. package/dist/hover-card.js +1 -1
  341. package/dist/hover-popover.js +1 -1
  342. package/dist/icon-chip.js +1 -1
  343. package/dist/icon-tooltip.js +1 -1
  344. package/dist/index.d.ts +3 -1
  345. package/dist/instrument-chassis.js +1 -1
  346. package/dist/keyboard.js +1 -1
  347. package/dist/label.js +1 -1
  348. package/dist/labeled-field.js +70 -60
  349. package/dist/metric-badge.js +1 -1
  350. package/dist/metric-cell.js +1 -1
  351. package/dist/metric-stack.js +14 -9
  352. package/dist/motion-core.js +58 -36
  353. package/dist/motion-curves.js +11 -1
  354. package/dist/motion.js +90 -53
  355. package/dist/notification.js +1 -1
  356. package/dist/number-field.js +1 -1
  357. package/dist/pager-dots.js +2 -91
  358. package/dist/paper-backdrop.js +1 -1
  359. package/dist/paper-grid.d.ts +1 -0
  360. package/dist/paper-grid.js +788 -0
  361. package/dist/popover.js +1 -1
  362. package/dist/{presets-BW2b-fr1.js → presets-CvOUqtdY.js} +3 -3
  363. package/dist/{compile-EXXzEr1q.js → procedural-color.wgsl-m7Zgv35j.js} +2 -156
  364. package/dist/progress.js +1 -1
  365. package/dist/pulse.js +2 -2
  366. package/dist/reactive.js +1 -1
  367. package/dist/resolveCanvasColor-yPyIpJt9.js +93 -0
  368. package/dist/scrollReader-DI1NWxUw.js +42 -0
  369. package/dist/scrolling-text.js +1 -1
  370. package/dist/search.js +162 -308
  371. package/dist/select.js +3 -3
  372. package/dist/selectable-chip.d.ts +1 -0
  373. package/dist/selectable-chip.js +65 -0
  374. package/dist/separator.js +1 -1
  375. package/dist/{sheet-CquRYOAw.js → sheet-B2flBfLH.js} +5 -5
  376. package/dist/sheet.js +1 -1
  377. package/dist/sidebar.js +216 -114
  378. package/dist/{slider-DQ95MET2.js → slider-2A0rPn79.js} +3 -3
  379. package/dist/slider.js +1 -1
  380. package/dist/sortable-list.js +2 -2
  381. package/dist/spa-view.d.ts +1 -0
  382. package/dist/spa-view.js +46 -0
  383. package/dist/spectrum-walk-BVzA7Biz.js +33 -0
  384. package/dist/{springPresets-WXaLbu8u.js → springPresets-Ce7OYCm9.js} +12 -6
  385. package/dist/styles/animations.css +46 -12
  386. package/dist/styles/border-progress.css +109 -0
  387. package/dist/styles/cards.css +145 -0
  388. package/dist/styles/completion-seal.css +131 -0
  389. package/dist/styles/components.css +2 -3
  390. package/dist/styles/configurator.css +55 -0
  391. package/dist/styles/critical-partition.mjs +162 -0
  392. package/dist/styles/critical.css +12 -0
  393. package/dist/styles/deferred.css +33 -0
  394. package/dist/styles/dock/cta-seat.css +87 -0
  395. package/dist/styles/dock/density.css +198 -0
  396. package/dist/styles/dock/layers.css +101 -29
  397. package/dist/styles/dock/morph-bridge.css +54 -18
  398. package/dist/styles/dock/morph.css +132 -7
  399. package/dist/styles/dock/overflow.css +28 -2
  400. package/dist/styles/dock/search.css +68 -0
  401. package/dist/styles/dock/shape.css +124 -0
  402. package/dist/styles/dock/shell.css +77 -21
  403. package/dist/styles/dock/stack-rail.css +264 -0
  404. package/dist/styles/dock-controls/dark-mode-toggle.css +17 -4
  405. package/dist/styles/dock-controls/icon-button.css +14 -0
  406. package/dist/styles/dock.css +43 -1
  407. package/dist/styles/drawer.css +81 -35
  408. package/dist/styles/glass/accent-tone.css +66 -0
  409. package/dist/styles/glass/control-surfaces.css +167 -0
  410. package/dist/styles/glass/deep.css +44 -0
  411. package/dist/styles/glass/ladder.css +147 -41
  412. package/dist/styles/glass/material.css +78 -15
  413. package/dist/styles/glass/reveal.css +136 -0
  414. package/dist/styles/glass/rim.css +110 -0
  415. package/dist/styles/glass/surfaces.css +148 -129
  416. package/dist/styles/glass-refract.css +96 -44
  417. package/dist/styles/glass-specular-track.css +7 -0
  418. package/dist/styles/glass.css +13 -0
  419. package/dist/styles/hover-popover.css +7 -6
  420. package/dist/styles/icon-chip.css +77 -15
  421. package/dist/styles/index.css +36 -9
  422. package/dist/styles/instrument-chassis.css +66 -3
  423. package/dist/styles/scroll-choreography.css +300 -0
  424. package/dist/styles/scroll-chrome.css +123 -0
  425. package/dist/styles/scroll-driven.css +38 -0
  426. package/dist/styles/segmented-tabs.css +81 -14
  427. package/dist/styles/theme/bridges.css +33 -0
  428. package/dist/styles/theme/literals.css +11 -2
  429. package/dist/styles/theme/radius.css +24 -2
  430. package/dist/styles/tokens/color-radius.css +13 -3
  431. package/dist/styles/tokens/dark-arm.css +137 -32
  432. package/dist/styles/tokens/glass-deep.css +100 -0
  433. package/dist/styles/tokens/glass-fx.css +376 -0
  434. package/dist/styles/tokens/glass.css +131 -351
  435. package/dist/styles/tokens/light-dark.css +16 -3
  436. package/dist/styles/tokens/offsets.css +143 -0
  437. package/dist/styles/tokens/on-glass-fg.css +39 -0
  438. package/dist/styles/tokens/property-regs.css +260 -0
  439. package/dist/styles/tokens/scale-paper.css +168 -96
  440. package/dist/styles/tokens/scheme-motion.css +114 -38
  441. package/dist/styles/tokens/scroll-tokens.css +123 -0
  442. package/dist/styles/tokens/sizing-config.css +110 -0
  443. package/{src/styles/tokens/offsets-sizing.css → dist/styles/tokens/sizing.css} +92 -204
  444. package/dist/styles/tokens.css +14 -3
  445. package/dist/styles/typography/semantic.css +26 -13
  446. package/dist/styles/typography/utilities.css +22 -7
  447. package/dist/styles/utilities/a11y-overrides.css +20 -5
  448. package/dist/styles/utilities/animate.css +27 -24
  449. package/dist/styles/utilities/base-misc.css +307 -0
  450. package/dist/styles/utilities/base.css +47 -261
  451. package/dist/styles/utilities/btn.css +17 -4
  452. package/dist/styles/utilities/components.css +31 -6
  453. package/dist/styles/utilities/metal.css +215 -0
  454. package/dist/styles/utilities.css +14 -7
  455. package/dist/switch.js +1 -1
  456. package/dist/tabs.js +220 -107
  457. package/dist/timeline.js +2 -2
  458. package/dist/toast.js +1 -1
  459. package/dist/toggle-chip.js +10 -10
  460. package/dist/toggle-group.js +1 -1
  461. package/dist/tooltip.js +1 -1
  462. package/dist/typewriter.js +2 -2
  463. package/dist/uniformBridgeWGPU-CtAKl45L.js +1204 -0
  464. package/dist/{useAnimatedNumber-C_3wZLx4.js → useAnimatedNumber-CLrxicG9.js} +1 -1
  465. package/dist/useConfiguratorState-4xblKfwd.js +162 -0
  466. package/dist/useControlSize-SH1UmJCi.js +9 -0
  467. package/dist/useDockCtaReceive-DfFkmgL1.js +82 -0
  468. package/dist/useDragMorph-BUgAC-zK.js +102 -0
  469. package/dist/useFuzzySearch-DIhcYtcw.js +177 -0
  470. package/dist/useGpuSubstrate-4pTcp6mX.js +294 -0
  471. package/dist/useLiquidPress-BooG97RY.js +39 -0
  472. package/dist/usePointerVelocityField-QLsy3_kv.js +91 -0
  473. package/dist/useScrollChrome-D66AVP7C.js +258 -0
  474. package/dist/useSpring-C0jyvEJB.js +40 -0
  475. package/dist/useSpringMount-BWDnKIwh.js +71 -0
  476. package/dist/useSpringPress-B1-Czp-V.js +36 -0
  477. package/dist/{useTouchGate-28Tk2-t2.js → useTouchGate-CBZTD4SD.js} +1 -1
  478. package/dist/useViewTransition-CUI1nAgn.js +95 -0
  479. package/dist/vSpecular-EX7loENl.js +68 -0
  480. package/dist/vendor-B2qOlYY3.js +239 -0
  481. package/dist/virtual.d.ts +1 -0
  482. package/dist/virtual.js +225 -0
  483. package/dist/watercolor-dot.js +117 -74
  484. package/package.json +252 -28
  485. package/src/styles/animations.css +46 -12
  486. package/src/styles/border-progress.css +109 -0
  487. package/src/styles/cards.css +145 -0
  488. package/src/styles/completion-seal.css +131 -0
  489. package/src/styles/configurator.css +55 -0
  490. package/src/styles/critical-partition.mjs +162 -0
  491. package/src/styles/dock/cta-seat.css +87 -0
  492. package/src/styles/dock/density.css +198 -0
  493. package/src/styles/dock/layers.css +101 -29
  494. package/src/styles/dock/morph-bridge.css +54 -18
  495. package/src/styles/dock/morph.css +132 -7
  496. package/src/styles/dock/overflow.css +28 -2
  497. package/src/styles/dock/search.css +68 -0
  498. package/src/styles/dock/shape.css +124 -0
  499. package/src/styles/dock/shell.css +77 -21
  500. package/src/styles/dock/stack-rail.css +264 -0
  501. package/src/styles/dock-controls/dark-mode-toggle.css +17 -4
  502. package/src/styles/dock-controls/icon-button.css +14 -0
  503. package/src/styles/dock.css +43 -1
  504. package/src/styles/drawer.css +81 -35
  505. package/src/styles/glass/accent-tone.css +66 -0
  506. package/src/styles/glass/control-surfaces.css +167 -0
  507. package/src/styles/glass/deep.css +44 -0
  508. package/src/styles/glass/ladder.css +147 -41
  509. package/src/styles/glass/material.css +78 -15
  510. package/src/styles/glass/reveal.css +136 -0
  511. package/src/styles/glass/rim.css +110 -0
  512. package/src/styles/glass/surfaces.css +148 -129
  513. package/src/styles/glass-refract.css +96 -44
  514. package/src/styles/glass-specular-track.css +7 -0
  515. package/src/styles/glass.css +13 -0
  516. package/src/styles/hover-popover.css +7 -6
  517. package/src/styles/icon-chip.css +77 -15
  518. package/src/styles/index.css +27 -0
  519. package/src/styles/instrument-chassis.css +66 -3
  520. package/src/styles/scroll-choreography.css +300 -0
  521. package/src/styles/scroll-chrome.css +123 -0
  522. package/src/styles/scroll-driven.css +38 -0
  523. package/src/styles/segmented-tabs.css +81 -14
  524. package/src/styles/theme/bridges.css +33 -0
  525. package/src/styles/theme/literals.css +11 -2
  526. package/src/styles/theme/radius.css +24 -2
  527. package/src/styles/tokens/color-radius.css +13 -3
  528. package/src/styles/tokens/dark-arm.css +137 -32
  529. package/src/styles/tokens/glass-deep.css +100 -0
  530. package/src/styles/tokens/glass-fx.css +376 -0
  531. package/src/styles/tokens/glass.css +131 -351
  532. package/src/styles/tokens/light-dark.css +16 -3
  533. package/src/styles/tokens/offsets.css +143 -0
  534. package/src/styles/tokens/on-glass-fg.css +39 -0
  535. package/src/styles/tokens/property-regs.css +260 -0
  536. package/src/styles/tokens/scale-paper.css +168 -96
  537. package/src/styles/tokens/scheme-motion.css +114 -38
  538. package/src/styles/tokens/scroll-tokens.css +123 -0
  539. package/src/styles/tokens/sizing-config.css +110 -0
  540. package/{dist/styles/tokens/offsets-sizing.css → src/styles/tokens/sizing.css} +92 -204
  541. package/src/styles/tokens.css +14 -3
  542. package/src/styles/typography/semantic.css +26 -13
  543. package/src/styles/typography/utilities.css +22 -7
  544. package/src/styles/utilities/a11y-overrides.css +20 -5
  545. package/src/styles/utilities/animate.css +27 -24
  546. package/src/styles/utilities/base-misc.css +307 -0
  547. package/src/styles/utilities/base.css +47 -261
  548. package/src/styles/utilities/btn.css +17 -4
  549. package/src/styles/utilities/components.css +31 -6
  550. package/src/styles/utilities/metal.css +215 -0
  551. package/src/styles/utilities.css +14 -7
  552. package/dist/CardAction-XH4YBVEK.js +0 -158
  553. package/dist/ContextMenuContent-ON3x7cuk.js +0 -85
  554. package/dist/DialogFooter-8eZbdmPc.js +0 -165
  555. package/dist/HoverCardContent-DkMaQzH5.js +0 -83
  556. package/dist/Input-DVG_J0ne.js +0 -55
  557. package/dist/Notification-DKjKsQq8.js +0 -100
  558. package/dist/NumberFieldContent-1VtwDSgf.js +0 -145
  559. package/dist/Separator-BArl4OaB.js +0 -37
  560. package/dist/Switch-Dr--uLGH.js +0 -47
  561. package/dist/Toaster-Bm_HQSpc.js +0 -263
  562. package/dist/ToggleGroupItem-Dzk9hWsF.js +0 -157
  563. package/dist/TooltipProvider-B3MkB_8P.js +0 -104
  564. package/dist/button-BNDWhAZb.js +0 -81
  565. package/dist/check-njhk-vfu.js +0 -7
  566. package/dist/chevron-down-DKkxb4VV.js +0 -7
  567. package/dist/chevron-right-CPXbqQQz.js +0 -7
  568. package/dist/chevron-up-n_24SqI-.js +0 -7
  569. package/dist/color-DweYl7pE.js +0 -86
  570. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +0 -35
  571. package/dist/components/custom/constellation/constellationDraw.d.ts +0 -30
  572. package/dist/components/custom/dock/DockRail.vue.d.ts +0 -89
  573. package/dist/createLucideIcon-DydS2qgk.js +0 -43
  574. package/dist/minimize-2-BV31Ob_h.js +0 -38
  575. package/dist/resolveCanvasColor-BBiYfp8g.js +0 -11
  576. package/dist/search-BSGrf2Sk.js +0 -12
  577. package/dist/styles/dock/rail-extend.css +0 -397
  578. package/dist/useCanvas2D-ClrQuZtp.js +0 -96
  579. package/dist/useConfiguratorState-kiIlun8I.js +0 -303
  580. package/dist/useRAFLoop-CdwJ7284.js +0 -109
  581. package/dist/useSpecularTracking-Bo5su68i.js +0 -32
  582. package/dist/useSpringMount-CvopqiFr.js +0 -108
  583. package/dist/useViewTransition-COsPjQVZ.js +0 -47
  584. package/dist/x-BUwTKe50.js +0 -10
  585. package/src/styles/dock/rail-extend.css +0 -397
  586. /package/dist/{CollapsibleContent-C_s6fG7r.js → CollapsibleContent-68dEXIAl.js} +0 -0
  587. /package/dist/{InstrumentChassis-UUJX0-mW.js → InstrumentChassis-CxsHSyMj.js} +0 -0
  588. /package/dist/{Label-Ck9SWEKM.js → Label-C2ejNWeC.js} +0 -0
  589. /package/dist/{ModalOverlay-CkPRRgl_.js → ModalOverlay-D1VrWyoi.js} +0 -0
  590. /package/dist/{PaperBackdrop-nBKe0vkB.js → PaperBackdrop-CqwjnfLv.js} +0 -0
  591. /package/dist/{SelectGroup-Dcczq44n.js → SelectGroup-BFiod7X2.js} +0 -0
  592. /package/dist/{_plugin-vue_export-helper-CBt_VvXa.js → _plugin-vue_export-helper-C1je1s0u.js} +0 -0
  593. /package/dist/{badge-UILT_3pZ.js → badge-D9XWW4GT.js} +0 -0
  594. /package/dist/{constants-BPOqYJAm.js → constants--C2DkLW8.js} +0 -0
  595. /package/dist/{createContext-B2RaZ-b8.js → createContext-CpBNTRMI.js} +0 -0
  596. /package/dist/{math-DeuJwLFx.js → math-Eb0w3LqU.js} +0 -0
  597. /package/dist/{menuItemVariants-DWRQXBxJ.js → menuItemVariants-D8VNHq22.js} +0 -0
  598. /package/dist/{prng-Cg22zv8g.js → prng-B-d9eYX8.js} +0 -0
  599. /package/dist/{useGlobalDark-C28t0VWJ.js → useGlobalDark-CmjB9E32.js} +0 -0
  600. /package/dist/{useIntersectionPause-Bj4sPkMh.js → useIntersectionPause-Dbozzjgm.js} +0 -0
  601. /package/dist/{useKeyboardShortcuts-BXWXOZ-9.js → useKeyboardShortcuts-BPRp33Im.js} +0 -0
  602. /package/dist/{useLiquidFlex-C12hXwOZ.js → useLiquidFlex-UmA6LMZu.js} +0 -0
  603. /package/dist/{useResizeObserver-V6nq5gJb.js → useResizeObserver-Bpoi7tRE.js} +0 -0
  604. /package/dist/{useResolveTokenColor-NUG2zYAW.js → useResolveTokenColor-vAylyR0x.js} +0 -0
  605. /package/dist/{useScrollProgress-D7bYU2RK.js → useScrollProgress-c3yxmH6a.js} +0 -0
  606. /package/dist/{useSurfaceAxis-CMnF2zHb.js → useSurfaceAxis-g0NloYEF.js} +0 -0
  607. /package/dist/{useTimer-B_PAasDL.js → useTimer-BHJOKr35.js} +0 -0
  608. /package/dist/{useUserInvalidAria-CDfJuakL.js → useUserInvalidAria-y5namzeE.js} +0 -0
  609. /package/dist/{useViewportReady-CvBcCYDf.js → useViewportReady-anbac3m6.js} +0 -0
@@ -44,13 +44,17 @@
44
44
  (segmented/pill slider OR the underline rule) STRETCHES along its travel
45
45
  axis as it glides between tabs, then settles to fit — the Material 3
46
46
  ELASTIC / Apple Liquid-Glass "controls insist on animating themselves"
47
- register, kept RESTRAINED. The deform is volume-preserving (stretch X,
48
- compress Y in lockstep: `scale: var(--stretch) calc(1 / var(--stretch))`)
49
- so it reads as an elastic warp, never a size pump. The cap holds the peak
50
- LOW (1.08 ≈ +8%) — iOS 26.2 dialed motion DOWN; a high-frequency control
51
- wants a whisper of squish, not a bounce. A consumer dials the elasticity
52
- (or to 1 for none) without touching source. */
53
- --tab-indicator-max-stretch: 1.08;
47
+ register. The deform is volume-preserving (stretch X, compress Y in lockstep:
48
+ `scale: var(--stretch) calc(1 / var(--stretch))`) so it reads as an elastic
49
+ warp, never a size pump. A consumer dials the elasticity (or to 1 for none)
50
+ without touching source.
51
+ BC.W-LIQUID-TAB — lifted 1.08 → 1.15 (in lockstep with the no-token floor
52
+ DEFAULT_INDICATOR_MAX_STRETCH, the SOLE cap source — constant + token never
53
+ fork). The click travel-squish AND the liquid-tab pull-morph read this ONE
54
+ cap; the lift makes a FAST pull visibly swell the pill so the gel-squish READS
55
+ as liquid (glass-dock-codebase.md §3.4) — still capped LOW (≤1.2, the
56
+ anti-taffy-pull bar; the pill swells, never taffy-pulls). */
57
+ --tab-indicator-max-stretch: 1.15;
54
58
  /* BA.W-TABS — the indicator's OWN travel clock, re-pointed off the generic
55
59
  `--duration-normal` (0.3s, which dragged a ~190ms sub-pixel undershoot tail
56
60
  past the ~100ms 90%-travel point — the R10-2 "too slow" read) onto the
@@ -67,6 +71,40 @@
67
71
  0 0 8px color-mix(in srgb, var(--ring) 15%, transparent);
68
72
  --focus-ring: var(--focus-ring-shadow);
69
73
 
74
+ /* BB.W-INVALID-RING — the destructive twin of --focus-ring-shadow. The
75
+ aria-invalid ring is ONE register: every form control (Input/Textarea/
76
+ NumberField via `.input-pill`, SelectTrigger, ComboboxInput, TagsInput)
77
+ reads `box-shadow: var(--invalid-ring)` instead of re-spelling the recipe
78
+ inline. ONE geometry (the SAME `--focus-ring-width`), ONE tint knob
79
+ (`--invalid-ring-tint`, the documented retint axis), resolving
80
+ `var(--destructive)` so a dark `--destructive` re-anchor flows through. A
81
+ consumer retints every invalid ring library-wide from a single
82
+ `:root { --invalid-ring-tint: … }` override — the token-first axis
83
+ `--focus-ring-shadow` already grants the focus ring. */
84
+ --invalid-ring-tint: 35%;
85
+ --invalid-ring: 0 0 0 var(--focus-ring-width)
86
+ color-mix(in srgb, var(--destructive) var(--invalid-ring-tint), transparent);
87
+
88
+ /* BC.W-RADIO-FIX — the selection-control STATE register (the `--focus-ring-shadow`
89
+ / `--invalid-ring` precedent: one named register, read everywhere — never a
90
+ per-control magic literal). The checks family (Checkbox + RadioGroupItem) reads
91
+ these TWO tokens so a re-tint is ONE edit, library-wide.
92
+
93
+ • `--control-ring` — the UNCHECKED outline. Post-BC.W-BLACK-BAR the general glass
94
+ rim is ≤4% warm-ink (`--glass-border-resting`), which reads as a near-invisible
95
+ hairline on a 16px circle — too faint to tell a rest radio from its siblings. So
96
+ the selection atoms are the NAMED exception (recorded in BC.W-BLACK-BAR's fences):
97
+ a slightly-stronger ~12% warm-ink outline that reads as a DEFINED circle at 16px
98
+ without re-introducing the dark `--primary` hairline. Warm-ink-derived (no gray,
99
+ BA.W-NO-GRAY).
100
+ • `--control-checked-bg` — the SELECTED glass-tinted fill. The recipe is minted
101
+ ONCE here (the anti-paste bite: a second inline `color-mix(... --primary 88% ...)`
102
+ literal on a checks atom reds — the recipe IS the token). Mirrors the
103
+ glass-`--primary` over the floating tier the Checkbox already speaks, so the ring
104
+ goes outline → filled glass disc (a real material step), warm-not-saturated. */
105
+ --control-ring: color-mix(in srgb, var(--foreground) 12%, transparent);
106
+ --control-checked-bg: color-mix(in srgb, var(--primary) 88%, var(--glass-bg-floating));
107
+
70
108
  /* ═══════════════════════════════════════════════
71
109
  §12 PAPER TEXTURES
72
110
  ═══════════════════════════════════════════════ */
@@ -80,6 +118,65 @@
80
118
  --paper-clean-texture: url("data:image/svg+xml,%3Csvg width='200' height='200' viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
81
119
  --paper-aged-texture: url("data:image/svg+xml,%3Csvg width='200' height='200' viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.5' numOctaves='5' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.06'/%3E%3C/svg%3E");
82
120
 
121
+ /* BC.W-GRID-SIMPLE — the ONE engineering-graph-paper rhythm source. The
122
+ keyframes.js `EditorShell` magnitudes, re-expressed as `--grid-*` tokens:
123
+ a fine 1rem cell + a bolder 5rem major rule (the 5× engineering-graph
124
+ rhythm), each line a hairline-crisp single device-pixel. The pitch is
125
+ REM-RELATIVE — 1rem (16px at the default root) and 5rem (80px) divide
126
+ cleanly at DPR 1/2/3, so every line lands on a whole device-pixel column/
127
+ row (the anti-blur rule; the prior 28px/32px integer pitch landed on
128
+ sub-pixel boundaries at fractional-DPR zoom and the anti-aliaser softened
129
+ the 1px lines). The fine 3% is the user's "less busy substrate" — DELIBERATELY
130
+ BELOW the 10% legibility floor — and the major 11% is held STRICTLY ABOVE it
131
+ (the kf weight step). The line INK is a `color-mix(… var(--foreground) N%, …)`
132
+ so it re-tints with the theme by construction (warm-ink on light, lifting
133
+ off near-black on dark) — NO parallel `--grid-*-dark` family (the
134
+ `--foreground` flip re-resolves the mix; the cards.css dark-arm precedent).
135
+ A consumer dials it LARGER (`--grid-pitch: 1.25rem` / `--grid-major: 6.25rem`)
136
+ or quieter (the `--grid-line`/`--grid-line-major` strength knobs) at `:root`
137
+ — the token-first axis. This is the SINGLE rhythm source: the demo full-bleed
138
+ page grid (`.grid-bg`, story-hero.css) AND the library card-interior register
139
+ (`.paper-grid`, cards.css) both read it (the two-parallel-28px/32px-systems
140
+ fix). The LIQUID full-bleed sibling (`<PaperGrid>`, BC.W-VIZ-PAPERGRID)
141
+ re-uses the SAME rhythm — one pitch, two registers (static page-bg vs liquid). */
142
+ --grid-pitch: 1rem;
143
+ --grid-major: 5rem;
144
+ --grid-line: color-mix(in srgb, var(--foreground) 3%, transparent);
145
+ --grid-line-major: color-mix(in srgb, var(--foreground) 11%, transparent);
146
+
147
+ /* The library card-interior GEOMETRIC register (`.paper-grid`, cards.css) —
148
+ the document-register card's INTERIOR ground, felt THROUGH the glass tint.
149
+ It UNIFIES its pitch onto the shared `--grid-pitch` (the prior 32px literal
150
+ retired — ONE rhythm source) and keeps its OWN ambient through-card strength
151
+ register: the `--paper-grid-opacity` single knob (~0.08, the ask's "felt
152
+ THROUGH the card ~0.08"). DISTINCT from the page-bg 3%/11% tier above — a
153
+ card interior reads quieter than a full-bleed page wash — but the PITCH is
154
+ shared. The ink stays a `color-mix(… var(--foreground) N%, …)` (re-tints with
155
+ --foreground in lockstep, never a hardcoded literal — the no-gray floor); the
156
+ MAJOR rule rides `* 1.6` (the 0.08→0.128 weight step). The strength lives in
157
+ the ink alpha, not a layer `opacity`, because `.paper-grid` paints the grid on
158
+ the card's HOST `background-image` to avoid two-pseudo-budget contention with
159
+ the grain `::after` / specular `::before` (see cards.css). A STATIC raster —
160
+ gradient-stack `background-image`, one compositor-cached paint, never a
161
+ per-frame repaint. */
162
+ --paper-grid-opacity: 0.08;
163
+ --paper-grid-texture-size: var(--grid-pitch);
164
+ --paper-grid-line: color-mix(
165
+ in srgb,
166
+ var(--foreground) calc(var(--paper-grid-opacity) * 100%),
167
+ transparent
168
+ );
169
+ --paper-grid-line-major: color-mix(
170
+ in srgb,
171
+ var(--foreground) calc(var(--paper-grid-opacity) * 160%),
172
+ transparent
173
+ );
174
+ --paper-grid-texture:
175
+ linear-gradient(to right, var(--paper-grid-line-major) 1px, transparent 1px),
176
+ linear-gradient(to bottom, var(--paper-grid-line-major) 1px, transparent 1px),
177
+ linear-gradient(to right, var(--paper-grid-line) 1px, transparent 1px),
178
+ linear-gradient(to bottom, var(--paper-grid-line) 1px, transparent 1px);
179
+
83
180
  /* ═══════════════════════════════════════════════
84
181
  §13 GOLD (accent family kept for consumers using it)
85
182
  ═══════════════════════════════════════════════ */
@@ -130,6 +227,38 @@
130
227
  --color-silver-dark: var(--silver-dark);
131
228
  --color-silver-deep: var(--silver-deep);
132
229
 
230
+ /* ═══════════════════════════════════════════════
231
+ §13c BRONZE (the THIRD brand-metal — BB.W-METAL-SHIMMER)
232
+ ═══════════════════════════════════════════════ */
233
+ /* The warm-brown patina quad — the third member of the gold·silver·bronze
234
+ brand-metal TRIAD (the medal triad, the gilt/aged "third place" figure, the
235
+ record-badge register). Gold (warm-yellow ~84°) + silver (cool-steel ~255°)
236
+ are the two poles; bronze is the warm-amber-brown ~54° register between them.
237
+ The cascade EXACTLY mirrors gold's and silver's (scale-paper raw → bridges
238
+ `--color-bronze*` alias → both dark arms); `-deep` is mode-invariant.
239
+
240
+ BA.W-NO-GRAY brand-metal EXCEPTION — bronze is the THIRD metal on the SAME
241
+ sanction silver carries (the ONE cool-neutral exception). Bronze is a WARM
242
+ metal identity with chroma ABOVE the warm floor: each rung resolves OKLab
243
+ C 0.072-0.112 (far above the STRONG_FLOOR 0.020) at hue ~49-60°, so it reads
244
+ as polished bronze MATERIAL, never a desaturated brown CAST (the W-NO-GRAY
245
+ "warm-not-tinted" bar). It is NOT a neutral — a low-chroma bronze would BE a
246
+ neutral and break the brand-metal read; the chroma is the metal. The hue sits
247
+ between gold and red-orange so it distinguishes from a dark gold at the rim. */
248
+ --bronze: oklch(0.620 0.092 54.0);
249
+ --bronze-light: oklch(0.760 0.112 60.0);
250
+ --bronze-dark: oklch(0.500 0.082 50.0);
251
+ /* The mode-INVARIANT deep bronze plate (mirrors `--gold-deep`/`--silver-deep`'s
252
+ contract — a fixed dark bronze so a white label clears ≥4.5:1 in BOTH modes;
253
+ it does NOT flip with `--foreground`). 8.36:1 white in light / 4.79:1 in dark
254
+ on the dark-arm-lifted rungs. The would-be saturated CTA twin of the metal. */
255
+ --bronze-deep: oklch(0.430 0.072 50.0);
256
+
257
+ --color-bronze: var(--bronze);
258
+ --color-bronze-light: var(--bronze-light);
259
+ --color-bronze-dark: var(--bronze-dark);
260
+ --color-bronze-deep: var(--bronze-deep);
261
+
133
262
  /* ═══════════════════════════════════════════════
134
263
  §14 RAINBOW PALETTE — oklch (AV.W16 TW2; mode-independent, no .dark
135
264
  mirror; hue preserved from the prior hsl() cadence)
@@ -267,6 +396,32 @@
267
396
  --metric-row-label-clamp-cqi: 5cqi;
268
397
  --metric-row-label-clamp-max: 2.75rem;
269
398
 
399
+ /* BB.W-CONTROL-TOKENS — the two CONSUMER-reach knobs (the no-`:deep`
400
+ precept, Design Axis 2). MetricRow internals a consumer must reach are
401
+ exposed as tokens, never an internal a `:deep()` overrides.
402
+
403
+ • `--metric-row-label-align` — the label `text-align`. Default `left`
404
+ (byte-identical to the prior render). A cert-grid consumer building a
405
+ labelled ledger sets `right` at `:root`/a parent/per-row for a
406
+ right-aligned fixed seam — cascades into `.metric-row__label` with no
407
+ `:deep()`.
408
+ • `--metric-row-icon-color` — the leading-glyph ink (the MetricCell
409
+ `iconColor`→IconChip precedent, mirrored as a token since MetricRow
410
+ ships a raw `<component :is>`). The per-row `phaseColor` prop seeds it
411
+ inline so today's consumers paint unchanged; un-set, the component
412
+ fallback (`inherit`) keeps the icon on the inherited cascade. A consumer
413
+ wanting a DISTINCT icon ink from the phase tint overrides it directly.
414
+
415
+ Both carry their byte-identical defaults — `left` (the prior render) /
416
+ `inherit` (the prior un-tinted glyph). Declaring them here keeps the
417
+ `--metric-row-*` family discoverable in one home; the component-level
418
+ `var(…, fallback)` read preserves the same default if the token is ever
419
+ un-declared (the defense-in-depth back-compat floor). A per-row
420
+ `phaseColor` prop still wins over the `:root` `--metric-row-icon-color`
421
+ (inline cascades higher), so today's phase-tinted icons are unchanged. */
422
+ --metric-row-label-align: left;
423
+ --metric-row-icon-color: inherit;
424
+
270
425
  /* ═══════════════════════════════════════════════
271
426
  §2.D INSTRUMENT-CLUSTER COMPOSITION RHYTHM
272
427
 
@@ -317,93 +472,10 @@
317
472
  --table-head-h: calc(3rem * var(--table-density));
318
473
  --table-head-px: calc(1rem * var(--table-density));
319
474
 
320
- /* ═══════════════════════════════════════════════
321
- §20 PLATFORM MOTION (AQ.W5)
322
-
323
- The native-platform motion substrate axes. Three families, each read
324
- by a `@supports`-gated CSS recipe in `scroll-driven.css`,
325
- `animations.css` (§TOP-LAYER), and `view-transition.css` — every visual
326
- knob a token so a consumer retunes without editing library source.
327
-
328
- SCROLL-DRIVEN (scroll-driven.css). Values mirror the JS-fallback
329
- composable defaults (`useScrollProgress` / `useStaggerReveal`) so the
330
- native CSS path and the fallback path read identically — no visual seam
331
- at the `@supports` boundary.
332
-
333
- TOP-LAYER (animations.css §TOP-LAYER). The `@starting-style` entry/exit
334
- grammar for native `<dialog>` / `[popover]` glass surfaces. The backdrop dim
335
- uses the house alpha-derivative `color-mix(in srgb, var(--background) Npct,
336
- transparent)` (AZ.W-ADAPTIVE-AUTO A5-1). It is NOT the `hsl(var(--background)
337
- / α)` channel form: `--background` is a COMPLETE `hsl()` color
338
- (`= hsl(48 12% 98%)`), so `hsl(var(--background) / α)` double-wraps to
339
- `hsl(hsl(…) / α)` — invalid, never paints (the modal dim was silently dead).
340
- The genuine channel form would require `--background` declared as a bare
341
- `H S% L%` triple, which it never is — hence the alpha-derivative mix.
342
-
343
- VIEW-TRANSITION (view-transition.css). The shared `.gl-list-item` group
344
- recipe + the `--vt-*` axes the `useViewTransition` substrate consumers
345
- (dock layer swap, muster J's verdict re-rank) tune their swap against.
346
- ═══════════════════════════════════════════════ */
347
- --scroll-progress-scroller: root;
348
- --scroll-reveal-rise: 6px;
349
- --scroll-reveal-range-end: 60%;
350
-
351
- --top-layer-enter-scale: 0.96;
352
- --top-layer-backdrop-blur: 8px;
353
- --top-layer-backdrop-dim: 0.5;
354
-
355
- --vt-duration: var(--duration-normal);
356
- /* AX.W05 — ONE iOS-spring vocabulary: every spring-flavored transition reads
357
- a governed `--spring-*` register. The legacy apple-spring cubic-bezier
358
- (+27.5% overshoot) was a SECOND authority beside the regen `--spring-*`
359
- cohort; it is EXCISED. Its emphatic-overshoot register maps to the playful
360
- `--spring-bouncy` (the closest `linear()` overshoot stop-set), so the VT
361
- default + the cards/top-layer transitions share one spring primitive
362
- (CPU + GPU sample the same curve). No cubic-bezier fallback seed survives —
363
- the `linear()` spring degrades to `ease` where `linear()` is unsupported. */
364
- --vt-ease: var(--spring-bouncy);
365
- --vt-rise: 8px;
366
-
367
- /* AT.W6-dock-c / AU.W8 — the dock layer-swap morph timing, minted ONCE so
368
- both engine paths are timing-IDENTICAL: the FLIP fallback (via
369
- `--dock-motion-resize`), the native View-Transition group (its
370
- `animation-timing-function`), AND the runtime SpringProgress driver
371
- (AU.W8.3) consume this same `(0.32, 0.7)` source curve. Retires the AQ.W6
372
- fork where the VT path ran `--vt-ease` (apple-spring, +27.5% overshoot)
373
- while the FLIP ran the snappy spring. `--vt-ease` still defaults the
374
- other VT recipes (`.gl-list-item`).
375
-
376
- AU.W8 — RETARGET snappy → dock. `--spring-snappy` (ζ=0.65, +6.8%) read as
377
- mechanical: a stiff plateau at ~48% with too little overshoot to feel
378
- alive ("not iOS-smooth"). AW.W2 then retuned the dock spring to the
379
- iOS-control register: `--spring-dock` ((0.32, 0.7), ~+4.6%) settles snappy
380
- with a restrained overshoot — the felt iOS dock morph, off the prior
381
- playful +18.5% register. The runtime driver's DOCK_SPRING const MIRRORS the
382
- (0.32, 0.7) PRESETS row, so the CSS token and the JS-driven morph are
383
- bit-identical. */
384
- --dock-resize-spring: var(--spring-dock);
385
-
386
- /* AT.W7-dock-b — dock-control press micro-feedback spring. A TRANSFORM-ONLY
387
- spring (`scale`/`rotate`) the dock controls apply to their hover/press
388
- activation so the squish reads with a touch of spring-back rather than a
389
- flat ease. STRICTLY transform-scoped: it must never touch the surface-tier
390
- `[data-held]` fades (background/border/box-shadow), which stay on
391
- `--duration-fast var(--ease-standard)`. The duration pairs with
392
- `--duration-fast`; consumers retune the whole feel via this one token.
393
-
394
- AY.W-DOCK2 (D6) — the register is `--spring-smooth`, the §6 easing-doctrine
395
- transform-press register (tokens.css §2: transform hover/press/active →
396
- `--spring-smooth`/`--spring-snappy`, NEVER `--spring-bouncy`; a press must
397
- settle, never overshoot into a visible bounce). The prior `--spring-bouncy`
398
- ROOT default was off-doctrine, shadowed for the four named controls by a
399
- per-surface re-point in dock-controls.css — the exact per-surface fork the
400
- doctrine kills. The re-point is now a DEAD byte-identical redeclaration and is
401
- DELETED; the ROOT token IS the doctrine register, so any other consumer of
402
- `--dock-press-spring` inherits the correct smooth register.
403
-
404
- BA.W-GLASS-CAL Unit 3 — the duration leg re-times off the generic
405
- `--duration-fast` (0.2s) onto `--spring-smooth-duration` (0.36s, the
406
- smooth spring's OWN 2%-band envelope settle), so the press transform plays
407
- at its physical settle rather than a generic clock. */
408
- --dock-press-spring: var(--spring-smooth-duration) var(--spring-smooth);
475
+ /* §20 PLATFORM MOTION (AQ.W5) — the scroll-driven/choreography + TOP-LAYER +
476
+ VIEW-TRANSITION + dock-spring motion knobs — carved WHOLE to
477
+ tokens/scroll-tokens.css at BB.W-CARVE4 (a contiguous tail carve at the §19/§20
478
+ seam; §20 is the file's last section, so the partial @import-s IMMEDIATELY
479
+ AFTER this one — the dist is byte-isomorphic). The paper/control/display/metal/
480
+ timeline/metric/table families above stay. */
409
481
  }
@@ -51,9 +51,19 @@
51
51
  --type-leading-body: 1.5;
52
52
  --type-leading-prose: 1.618;
53
53
  --type-leading-heading: 1.2;
54
- --type-leading-display: 1.1;
54
+ /* BB.W-DISPLAY-TRACKING — the display leading is tightened to the Apple
55
+ 84/80 ≈ 1.05 signature (was 1.1). The DISPLAY ladder ONLY reads this rung;
56
+ --type-leading-heading (1.2) carries the heading/title register. */
57
+ --type-leading-display: 1.05;
55
58
 
56
59
  --type-tracking-tight: -0.025em;
60
+ /* BB.W-DISPLAY-TRACKING — the DISPLAY-ONLY proportional negative tracking
61
+ rung (the Apple −1.5%-of-size signature: 80px → −1.2px = −0.015em). It is
62
+ em-relative, so the single value is a constant −1.5% across the whole
63
+ clamp() ladder (φ² → φ^(11/2)). MINTED as its OWN rung so the display
64
+ calibration NEVER bleeds into the shared --type-tracking-tight (the
65
+ heading/title/configurator register's tracking, kept at -0.025em). */
66
+ --type-tracking-display: -0.015em;
57
67
  --type-tracking-snug: -0.01em;
58
68
  --type-tracking-normal: 0;
59
69
  --type-tracking-wide: 0.025em;
@@ -64,6 +74,20 @@
64
74
  §1 DURATION
65
75
  ═══════════════════════════════════════════════ */
66
76
  --duration-instant: 0.1s;
77
+ /* BC.W-CONTROL-SMOOTH — the named control-press SURFACE clock (the W-GLASS-CAL
78
+ per-register-clock discipline). An interactive control the user actively pokes
79
+ (hover-in, press, toggle) wants the iOS quick ~100-120ms surface beat, NOT the
80
+ 0.2s calm card-crossfade beat — at 0.2s the colour/border/shadow easing drags
81
+ VISIBLY behind the pointer (the §F "super laggy" read). 0.12s brackets the iOS
82
+ 100-120ms quick-control register (apple-ios27.md). `transition-control` (btn.css)
83
+ reads THIS so the whole control family re-times from one `:root` override, and
84
+ the surface beat now tracks the press-squish window (the press is `tap-squish`/
85
+ `useSpringPress`'s coupled transform leg on the spring's own clock — P3 fade-
86
+ coupled-to-transform). The bezier `--ease-standard` STAYS for the surface legs
87
+ (a colour cross-fade on a spring wobbles, §6 binding); only the DURATION shortens.
88
+ The CALM card register keeps `--duration-fast`/`--duration-normal` — a `<Card>` is
89
+ not an interactive control. */
90
+ --duration-control: 0.12s;
67
91
  --duration-fast: 0.2s;
68
92
  --duration-normal: 0.3s;
69
93
  --duration-slow: 0.45s;
@@ -72,17 +96,24 @@
72
96
  --duration-xxl: 1.5s;
73
97
  --duration-shimmer-fast: 3s;
74
98
  --duration-shimmer: 5s;
99
+ /* BB.W-METAL-SHIMMER — the brand-metal family's OWN slow dignified one-pass
100
+ clock (slower than the 5s generic shimmer). The metal sweep (gold·silver·
101
+ bronze, text-clip + border/mask) reads as a calm slow patina catch, not a
102
+ fast band-pass — the §6 calm register. (`--duration-seal` was never landed;
103
+ this is net-new, NOT a retirement re-point.) */
104
+ --duration-metal: 6s;
75
105
  /* BA.W-GLASS-CAL (H2a) — `--duration-sparkle` (600ms) DELETED with the disco
76
106
  recipe retirement: the sparkle-sweep keyframe + its sole `btn-audacious`
77
107
  consumer are gone. */
78
108
 
79
109
  /* AH.W5-e (FA-8 §4d) — motion-duration + staged-reveal canon.
80
110
 
81
- Six duration tokens + three delay tokens promoted from raw literals
82
- at speedtest's celebratory-reveal SFCs (SpeedtestResults, ThankYou,
83
- ResultStack, CompleteBadge). Unified under the `--motion-*`
84
- namespace (parallel to `--motion-ease-*`) so all motion tokens
85
- cluster at one canon — duration + easing arm together. */
111
+ Duration + delay tokens promoted from raw literals at speedtest's
112
+ celebratory-reveal SFCs (SpeedtestResults, ThankYou, ResultStack).
113
+ Unified under the `--motion-*` namespace (parallel to `--motion-ease-*`)
114
+ so all motion tokens cluster at one canon — duration + easing arm
115
+ together. (BB.W-DEAD-SWEEP retired the never-shipped CompleteBadge
116
+ staged-reveal cluster — no consumer existed.) */
86
117
 
87
118
  /* Staged-entrance pairing — opacity + transform Vue <Transition> arms
88
119
  in the celebratory headline + result-row reveals. Partners with
@@ -99,17 +130,6 @@
99
130
  glyphs cleanly. Load-bearing — zeroing either collapses the shimmer to
100
131
  an imperceptible blow-through. */
101
132
 
102
- /* CompleteBadge staged-reveal cluster — the disc / ring / check curve
103
- fires at three asymmetric durations + delays per the A4-AF staged-
104
- variety design intent. Promoting the magic numbers makes the
105
- staged-variety visible at the canon. */
106
- --motion-duration-badge-disc: 420ms;
107
- --motion-duration-badge-ring: 560ms;
108
- --motion-duration-badge-check: 380ms;
109
- --motion-delay-badge-disc: 80ms;
110
- --motion-delay-badge-ring: 220ms;
111
- --motion-delay-badge-check: 460ms;
112
-
113
133
  /* Staggered-reveal increment canon — three perceptually-distinct tiers for
114
134
  per-row/per-cell/per-bar cascades:
115
135
  • tight (40ms) — dense row cascades, sub-perceptual gap
@@ -135,12 +155,14 @@
135
155
  `linear()` stops; this is the single source of truth tying each
136
156
  (response, ζ) pair to its serialized curve.
137
157
 
138
- iOS-canonical (response, dampingFraction) per AL-X4 §3:
158
+ iOS-canonical (response, dampingFraction) per AL-X4 §3 (BC.W-SPRING-EASE
159
+ eased `snappy`+`bouncy` to fill their clocks + minted the `press` register):
139
160
  smooth: (0.50s, ζ=0.86) — gentle settle, sub-perceptual overshoot ~0.5%
140
- snappy: (0.35s, ζ=0.65) — quick crisp, overshoot ~+6.8%
141
- bouncy: (0.50s, ζ=0.45) — emphatic overshoot ~+20.5%
161
+ snappy: (0.42s, ζ=0.78) — quick crisp, eased to fill its clock, overshoot ~+2.0%
162
+ bouncy: (0.50s, ζ=0.55) — emphatic, overshoot ~+12.6% (the Apple 12-18% band)
142
163
  gentle: (0.70s, ζ=1.00) — patient critically-damped
143
164
  dock: (0.32s, ζ=0.70) — dock expand/collapse morph, overshoot ~+4.6%
165
+ press: (0.15s, ζ=0.86) — the iOS interactive tap-press, sub-100ms answer, ~+0.5%
144
166
 
145
167
  Note on `smooth`: at ζ=0.86 the analytic solver produces a peak
146
168
  of 1.00498 (+0.5%) at the 24% slot — mathematically present but
@@ -153,21 +175,53 @@
153
175
  ── EASING DOCTRINE (AX.W52 §6 — which easing fits which job) ──
154
176
  ONE recorded rule so the animation easing stops forking live. This
155
177
  FORMALIZES the already-correct `transitions.css` idiom (enter=spring,
156
- exit=bezier) as the house rule every recipe reaches for:
157
-
158
- | Transition kind | Easing |
159
- |--------------------------------------------------|-------------------------------------|
160
- | Surface props (bg, border, color, box-shadow, | `--ease-standard` (bezier — a |
161
- | opacity) | colour cross-fade reads as a |
162
- | | wobble on a spring) |
163
- | Transform — hover/press/active (scale, translate,| `--spring-smooth` (the ONE button/ |
164
- | rotate) | interactive scale register) or |
165
- | | `--spring-snappy` (crisp press) |
166
- | Enter (mount, popover open, dialog in) | `--spring-bouncy` / `--spring-snappy`|
167
- | Exit (unmount, close) | `--ease-out` / `--ease-standard` |
168
- | | (bezier, NO overshoot — an exit |
169
- | | must never overshoot past gone) |
170
- | Position-tracked (specular pointer follow) | `--ease-standard` |
178
+ exit=bezier) as the house rule every recipe reaches for.
179
+
180
+ BB.W-MOTION-CANON — the table embodies ONE principle (Material 3's
181
+ spatial-vs-effects split, codified in `docs/precepts/motion-canon.md`
182
+ as P1): a SPATIAL channel (the box MOVES/RESHAPES — position, SIZE,
183
+ rotation, corners) rides a `--spring-<name>` (overshoot = physicality);
184
+ an EFFECTS channel (the surface RE-TINTS — color, opacity, box-shadow)
185
+ rides a bezier `--ease-*` (a colour cross-fade reads as a wobble on a
186
+ spring). Each row below is tagged [SPATIAL] (spring) or [EFFECTS]
187
+ (bezier) so the rule is legible, not implicit. The canon doc is the
188
+ canonical home; this table is the SOURCE it re-states:
189
+
190
+ | Transition kind | Tier | Easing |
191
+ |--------------------------------------------------|-----------|--------------------------|
192
+ | Surface props (bg, border, color, box-shadow, | [EFFECTS] | `--ease-standard` (bezier|
193
+ | opacity) | | — a colour cross-fade |
194
+ | | | reads as a wobble on a |
195
+ | | | spring) |
196
+ | Transform — hover/press/active (scale, translate,| [SPATIAL] | `--spring-smooth` (the |
197
+ | rotate) | | ONE button/interactive |
198
+ | | | scale register) or |
199
+ | | | `--spring-snappy` |
200
+ | Size / morph (dock V↔H, indicator size- | [SPATIAL] | `--spring-dock` / |
201
+ | correction, reveal source-rect bloom) | | `--spring-snappy`, |
202
+ | | | expressed as a |
203
+ | | | COMPOSITOR transform |
204
+ | | | (P5) — NEVER an |
205
+ | | | animated width/height |
206
+ | Enter (mount, popover open, dialog in, reveal) | [SPATIAL] | `--spring-bouncy` / |
207
+ | | | `--spring-snappy` |
208
+ | Bold decelerating arrival (the SOTA arrival — | [SPATIAL] | `--ease-out-expo` |
209
+ | reveal draw-on, big-distance settle) | | (cubic-bezier(.16,1, |
210
+ | | | .3,1); the house expo) |
211
+ | Exit (unmount, close) | [EFFECTS] | `--ease-out` / |
212
+ | | | `--ease-standard` |
213
+ | | | (bezier, NO overshoot —|
214
+ | | | an exit must never |
215
+ | | | overshoot past gone) |
216
+ | Position-tracked (specular pointer follow) | [EFFECTS] | `--ease-standard` |
217
+
218
+ The SOTA arrival ease is the EXISTING `--ease-out-expo` (alias →
219
+ `--motion-ease-out-expo` = `cubic-bezier(0.16, 1, 0.3, 1)`, the house
220
+ expo with the value.js `easeOutExpo` JS twin in the MOTION_CURVES table)
221
+ — NOT a net-new token. The motion canon NAMES it as the arrival register;
222
+ it is not re-minted (a duplicate alias would fail proof:animation-
223
+ coherence's EASING-TABLE-BOUND arm — the curve already has its canonical
224
+ + alias row in `curves.ts`).
171
225
 
172
226
  The BUTTON family (`.btn-pill` / `.tap-squish` / `.glass-btn` /
173
227
  `btn-interactive`) UNIFIES its `scale` transform leg onto ONE register —
@@ -180,10 +234,11 @@
180
234
  for interactive transforms; those use `--spring-smooth`).
181
235
  ═══════════════════════════════════════════════ */
182
236
  --spring-smooth: linear(0, 0.09804 2.041%, 0.29288 4.082%, 0.49447 6.122%, 0.66436 8.163%, 0.79208 10.204%, 0.88050 12.245%, 0.93754 14.286%, 0.97182 16.327%, 0.99083 18.367%, 1.00027 20.408%, 1.00413 22.449%, 1.00502 24.490%, 1.00453 26.531%, 1.00355 28.571%, 1.00254 30.612%, 1.00169 32.653%, 1.00105 34.694%, 1.00060 36.735%, 1.00031 38.776%, 1.00014 40.816%, 1.00005 42.857%, 1.00000 44.898%, 1.00000 46.939%, 1.00000 48.980%, 1.00000 51.020%, 1.00000 53.061%, 1.00000 55.102%, 1.00000 57.143%, 1.00000 59.184%, 1.00000 61.224%, 1.00000 63.265%, 1.00000 65.306%, 1.00000 67.347%, 1.00000 69.388%, 1.00000 71.429%, 1.00000 73.469%, 1.00000 75.510%, 1.00000 77.551%, 1.00000 79.592%, 1.00000 81.633%, 1.00000 83.673%, 1.00000 85.714%, 1.00000 87.755%, 1.00000 89.796%, 1.00000 91.837%, 1.00000 93.878%, 1.00000 95.918%, 1.00000 97.959%, 1);
183
- --spring-snappy: linear(0, 0.10438 2.041%, 0.32622 4.082%, 0.56668 6.122%, 0.77153 8.163%, 0.91961 10.204%, 1.01073 12.245%, 1.05549 14.286%, 1.06804 16.327%, 1.06171 18.367%, 1.04686 20.408%, 1.03044 22.449%, 1.01629 24.490%, 1.00596 26.531%, 0.99954 28.571%, 0.99633 30.612%, 0.99537 32.653%, 0.99575 34.694%, 0.99674 36.735%, 0.99786 38.776%, 0.99884 40.816%, 0.99956 42.857%, 1.00001 44.898%, 1.00024 46.939%, 1.00000 48.980%, 1.00000 51.020%, 1.00000 53.061%, 1.00000 55.102%, 1.00000 57.143%, 1.00000 59.184%, 1.00000 61.224%, 1.00000 63.265%, 1.00000 65.306%, 1.00000 67.347%, 1.00000 69.388%, 1.00000 71.429%, 1.00000 73.469%, 1.00000 75.510%, 1.00000 77.551%, 1.00000 79.592%, 1.00000 81.633%, 1.00000 83.673%, 1.00000 85.714%, 1.00000 87.755%, 1.00000 89.796%, 1.00000 91.837%, 1.00000 93.878%, 1.00000 95.918%, 1.00000 97.959%, 1);
184
- --spring-bouncy: linear(0, 0.11105 2.041%, 0.36430 4.082%, 0.65496 6.122%, 0.90929 8.163%, 1.08828 10.204%, 1.18289 12.245%, 1.20482 14.286%, 1.17641 16.327%, 1.12214 18.367%, 1.06276 20.408%, 1.01239 22.449%, 0.97809 24.490%, 0.96099 26.531%, 0.95826 28.571%, 0.96514 30.612%, 0.97666 32.653%, 0.98873 34.694%, 0.99867 36.735%, 1.00520 38.776%, 1.00825 40.816%, 1.00847 42.857%, 1.00686 44.898%, 1.00443 46.939%, 1.00199 48.980%, 1.00004 51.020%, 0.99880 53.061%, 0.99827 55.102%, 0.99829 57.143%, 0.99866 59.184%, 0.99916 61.224%, 0.99966 63.265%, 1.00004 65.306%, 1.00027 67.347%, 1.00000 69.388%, 1.00000 71.429%, 1.00000 73.469%, 1.00000 75.510%, 1.00000 77.551%, 1.00000 79.592%, 1.00000 81.633%, 1.00000 83.673%, 1.00000 85.714%, 1.00000 87.755%, 1.00000 89.796%, 1.00000 91.837%, 1.00000 93.878%, 1.00000 95.918%, 1.00000 97.959%, 1);
237
+ --spring-snappy: linear(0, 0.10038 2.041%, 0.30488 4.082%, 0.51991 6.122%, 0.70158 8.163%, 0.83608 10.204%, 0.92554 12.245%, 0.97893 14.286%, 1.00665 16.327%, 1.01792 18.367%, 1.01981 20.408%, 1.01715 22.449%, 1.01292 24.490%, 1.00873 26.531%, 1.00530 28.571%, 1.00282 30.612%, 1.00120 32.653%, 1.00027 34.694%, 0.99980 36.735%, 0.99962 38.776%, 0.99961 40.816%, 0.99967 42.857%, 0.99976 44.898%, 0.99984 46.939%, 0.99991 48.980%, 0.99995 51.020%, 1.00000 53.061%, 1.00000 55.102%, 1.00000 57.143%, 1.00000 59.184%, 1.00000 61.224%, 1.00000 63.265%, 1.00000 65.306%, 1.00000 67.347%, 1.00000 69.388%, 1.00000 71.429%, 1.00000 73.469%, 1.00000 75.510%, 1.00000 77.551%, 1.00000 79.592%, 1.00000 81.633%, 1.00000 83.673%, 1.00000 85.714%, 1.00000 87.755%, 1.00000 89.796%, 1.00000 91.837%, 1.00000 93.878%, 1.00000 95.918%, 1.00000 97.959%, 1);
238
+ --spring-bouncy: linear(0, 0.10764 2.041%, 0.34440 4.082%, 0.60803 6.122%, 0.83510 8.163%, 0.99669 10.204%, 1.08926 12.245%, 1.12435 14.286%, 1.11986 16.327%, 1.09372 18.367%, 1.06042 20.408%, 1.02959 22.449%, 1.00623 24.490%, 0.99172 26.531%, 0.98510 28.571%, 0.98426 30.612%, 0.98688 32.653%, 0.99095 34.694%, 0.99505 36.735%, 0.99835 38.776%, 1.00055 40.816%, 1.00170 42.857%, 1.00202 44.898%, 1.00180 46.939%, 1.00132 48.980%, 1.00079 51.020%, 1.00033 53.061%, 1.00001 55.102%, 0.99982 57.143%, 1.00000 59.184%, 1.00000 61.224%, 1.00000 63.265%, 1.00000 65.306%, 1.00000 67.347%, 1.00000 69.388%, 1.00000 71.429%, 1.00000 73.469%, 1.00000 75.510%, 1.00000 77.551%, 1.00000 79.592%, 1.00000 81.633%, 1.00000 83.673%, 1.00000 85.714%, 1.00000 87.755%, 1.00000 89.796%, 1.00000 91.837%, 1.00000 93.878%, 1.00000 95.918%, 1.00000 97.959%, 1);
185
239
  --spring-gentle: linear(0, 0.09415 2.041%, 0.27374 4.082%, 0.45506 6.122%, 0.60779 8.163%, 0.72570 10.204%, 0.81213 12.245%, 0.87336 14.286%, 0.91570 16.327%, 0.94445 18.367%, 0.96371 20.408%, 0.97645 22.449%, 0.98481 24.490%, 0.99025 26.531%, 0.99377 28.571%, 0.99604 30.612%, 0.99749 32.653%, 0.99841 34.694%, 0.99900 36.735%, 0.99937 38.776%, 0.99961 40.816%, 0.99975 42.857%, 0.99985 44.898%, 1.00000 46.939%, 1.00000 48.980%, 1.00000 51.020%, 1.00000 53.061%, 1.00000 55.102%, 1.00000 57.143%, 1.00000 59.184%, 1.00000 61.224%, 1.00000 63.265%, 1.00000 65.306%, 1.00000 67.347%, 1.00000 69.388%, 1.00000 71.429%, 1.00000 73.469%, 1.00000 75.510%, 1.00000 77.551%, 1.00000 79.592%, 1.00000 81.633%, 1.00000 83.673%, 1.00000 85.714%, 1.00000 87.755%, 1.00000 89.796%, 1.00000 91.837%, 1.00000 93.878%, 1.00000 95.918%, 1.00000 97.959%, 1);
186
240
  --spring-dock: linear(0, 0.10282 2.041%, 0.31773 4.082%, 0.54783 6.122%, 0.74309 8.163%, 0.88550 10.204%, 0.97598 12.245%, 1.02452 14.286%, 1.04368 16.327%, 1.04501 18.367%, 1.03739 20.408%, 1.02681 22.449%, 1.01672 24.490%, 1.00873 26.531%, 1.00323 28.571%, 0.99996 30.612%, 0.99837 32.653%, 0.99789 34.694%, 0.99805 36.735%, 0.99848 38.776%, 0.99897 40.816%, 0.99940 42.857%, 0.99972 44.898%, 0.99993 46.939%, 1.00004 48.980%, 1.00000 51.020%, 1.00000 53.061%, 1.00000 55.102%, 1.00000 57.143%, 1.00000 59.184%, 1.00000 61.224%, 1.00000 63.265%, 1.00000 65.306%, 1.00000 67.347%, 1.00000 69.388%, 1.00000 71.429%, 1.00000 73.469%, 1.00000 75.510%, 1.00000 77.551%, 1.00000 79.592%, 1.00000 81.633%, 1.00000 83.673%, 1.00000 85.714%, 1.00000 87.755%, 1.00000 89.796%, 1.00000 91.837%, 1.00000 93.878%, 1.00000 95.918%, 1.00000 97.959%, 1);
241
+ --spring-press: linear(0, 0.09804 2.041%, 0.29288 4.082%, 0.49447 6.122%, 0.66436 8.163%, 0.79208 10.204%, 0.88050 12.245%, 0.93754 14.286%, 0.97182 16.327%, 0.99083 18.367%, 1.00027 20.408%, 1.00413 22.449%, 1.00502 24.490%, 1.00453 26.531%, 1.00355 28.571%, 1.00254 30.612%, 1.00169 32.653%, 1.00105 34.694%, 1.00060 36.735%, 1.00031 38.776%, 1.00014 40.816%, 1.00005 42.857%, 1.00000 44.898%, 1.00000 46.939%, 1.00000 48.980%, 1.00000 51.020%, 1.00000 53.061%, 1.00000 55.102%, 1.00000 57.143%, 1.00000 59.184%, 1.00000 61.224%, 1.00000 63.265%, 1.00000 65.306%, 1.00000 67.347%, 1.00000 69.388%, 1.00000 71.429%, 1.00000 73.469%, 1.00000 75.510%, 1.00000 77.551%, 1.00000 79.592%, 1.00000 81.633%, 1.00000 83.673%, 1.00000 85.714%, 1.00000 87.755%, 1.00000 89.796%, 1.00000 91.837%, 1.00000 93.878%, 1.00000 95.918%, 1.00000 97.959%, 1);
187
242
 
188
243
  /* ── PER-SPRING DURATION CLOCK (BA.W-GLASS-CAL Unit 3) ──
189
244
  Generated from `scripts/regen-spring-tokens.mjs` — DO NOT hand-edit.
@@ -203,9 +258,20 @@
203
258
  matching `--spring-<name>-duration`. */
204
259
  --spring-smooth-duration: 0.36s;
205
260
  --spring-snappy-duration: 0.34s;
206
- --spring-bouncy-duration: 0.69s;
261
+ --spring-bouncy-duration: 0.57s;
207
262
  --spring-gentle-duration: 0.44s;
208
263
  --spring-dock-duration: 0.28s;
264
+ --spring-press-duration: 0.11s;
265
+
266
+ /* ── DECK SLIDE-TRANSITION CURVE (BC.W-DECK) ──
267
+ The full-viewport keyboard-paged deck's slide transition rides the SAME
268
+ `--spring-smooth` register the deck's `DECK_SPRING` samples (the calm-settle
269
+ `.smooth` family; the (response, ζ) pair lives in deck/constants.ts) — an
270
+ ALIAS, NOT a new spring family (the donor's own fence + the W-GLASS-CAL spring
271
+ fence). `--spring-deck: var(--spring-smooth)` so a deck slide reads as a calm
272
+ settle, not a bounce; the JS half (`installDeckSpring`) consumes keyframes.js
273
+ `springTimingFunction(DECK_SPRING)` for the count-up easing. */
274
+ --spring-deck: var(--spring-smooth);
209
275
 
210
276
  /* Core cubic-bezier (exits, fallbacks, non-spring uses) */
211
277
  --motion-ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
@@ -226,6 +292,16 @@
226
292
  --ease-decelerate: var(--ease-out);
227
293
  --ease-accelerate: var(--ease-in);
228
294
 
295
+ /* BC.W-MOTION-PRESETS — the brand "convergence-reveal" / partial-sum settle.
296
+ The Fourier partial sum converges ONTO its target with a decaying Gibbs
297
+ ripple — a monotone critically-damped approach, NO sustained overshoot past
298
+ terminal. That curve IS `gentle` (ζ=1.0, overshoot 0), so this is the ALIAS
299
+ reuse: `--ease-convergence` resolves to `--spring-gentle` (no new
300
+ SPRING_PRESETS row, no second curve). The settle clock is the per-spring
301
+ `--spring-gentle-duration`. The N-term build-up is the `useStagger`
302
+ orchestration ON this curve (a documented recipe, not a new primitive). */
303
+ --ease-convergence: var(--spring-gentle);
304
+
229
305
  /* ═══════════════════════════════════════════════
230
306
  §2.A AMBIENT MOTION — Pulse aura tokens
231
307