@mkbabb/glass-ui 4.0.1 → 4.2.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 (606) hide show
  1. package/dist/{CardAction-CW7a0m8M.js → CardAction-DlVP2evz.js} +72 -53
  2. package/dist/{CommandShortcut-DvZNQ_HF.js → CommandShortcut-By-VQcLO.js} +25 -14
  3. package/dist/{ConfiguratorRow-BR4l-ixA.js → ConfiguratorRow-YMXdINHx.js} +14 -14
  4. package/dist/ContextMenuContent-CMWn6huB.js +90 -0
  5. package/dist/{ContextMenuSubContent-xol4sD2q.js → ContextMenuSubContent-DvwWCUc0.js} +16 -16
  6. package/dist/{DataTable-CuKwF7wr.js → DataTable-C4tG3eIJ.js} +4 -4
  7. package/dist/DialogContent-D8U9ZfWS.js +121 -0
  8. package/dist/DialogFooter-DoLy0ewI.js +80 -0
  9. package/dist/DialogScrollContent-BMekN7gq.js +93 -0
  10. package/dist/{FadingScroll-DI6hQhT9.js → FadingScroll-P8B30rAD.js} +1 -1
  11. package/dist/HoverCardContent-DAmGYglo.js +88 -0
  12. package/dist/{HoverPopover-CbqbNwgU.js → HoverPopover-DYpBOzzF.js} +1 -1
  13. package/dist/{IconChip-BTD-nay5.js → IconChip-CQa7XZYc.js} +7 -5
  14. package/dist/{IconTooltip-Bl8gFZ8d.js → IconTooltip-_df8M3xm.js} +1 -1
  15. package/dist/Input-CyU4_hIC.js +57 -0
  16. package/dist/{MetricBadge-RHdBP72w.js → MetricBadge-DQt_dGah.js} +1 -1
  17. package/dist/{Notification-VUwexFUf.js → Notification-BlSPJhtZ.js} +4 -4
  18. package/dist/NumberFieldContent-Z3VxGu_6.js +140 -0
  19. package/dist/PagerDots-CYlqVFd4.js +196 -0
  20. package/dist/PaperBackdrop-DYWgrnh8.js +42 -0
  21. package/dist/{PopoverContent-DL7E6vJP.js → PopoverContent-BuKyHZSz.js} +2 -2
  22. package/dist/{Progress-DctG61iZ.js → Progress-C9SsdwIZ.js} +1 -1
  23. package/dist/{ScrollingText-yOpBzFYq.js → ScrollingText-DY3W1Jfh.js} +2 -2
  24. package/dist/SelectScrollDownButton-3mFHX_R-.js +260 -0
  25. package/dist/{SelectSeparator-DXswVdRz.js → SelectSeparator-CNRGG7Ew.js} +1 -1
  26. package/dist/Separator-Cf9-JFgi.js +44 -0
  27. package/dist/Switch-uf-UKPA2.js +49 -0
  28. package/dist/{Toaster-Bw4xR8xV.js → Toaster-ozrsR4mP.js} +2 -2
  29. package/dist/{ToggleGroupItem-pEM9vIhs.js → ToggleGroupItem-BpzaVzNm.js} +6 -6
  30. package/dist/TooltipProvider-QQVM_80r.js +109 -0
  31. package/dist/animated-digit.js +2 -2
  32. package/dist/api/index.d.ts +16 -32
  33. package/dist/api/types-extra.d.ts +33 -0
  34. package/dist/api.js +2 -2
  35. package/dist/aurora.js +629 -269
  36. package/dist/badge-Bt14yURi.js +72 -0
  37. package/dist/badge.js +1 -1
  38. package/dist/border-progress.js +49 -57
  39. package/dist/button-D1W9PrzI.js +130 -0
  40. package/dist/button.js +1 -1
  41. package/dist/canvas.js +2 -3
  42. package/dist/card.js +1 -1
  43. package/dist/carousel.js +235 -106
  44. package/dist/chipVariants-BJQ0I2kB.js +18 -0
  45. package/dist/collapsible.js +1 -1
  46. package/dist/color-B9jZdhJX.js +116 -0
  47. package/dist/color.js +2 -2
  48. package/dist/command.js +1 -1
  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/color.d.ts +13 -0
  53. package/dist/components/custom/aurora/composables/frameLoop.d.ts +9 -0
  54. package/dist/components/custom/aurora/composables/glSetup.d.ts +1 -1
  55. package/dist/components/custom/aurora/composables/runtime.d.ts +12 -0
  56. package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +12 -3
  57. package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +8 -0
  58. package/dist/components/custom/aurora/constants/presets.d.ts +47 -0
  59. package/dist/components/custom/aurora/constants/renderMode.d.ts +16 -8
  60. package/dist/components/custom/aurora/constants/shaders/aurora-mediums.wgsl.d.ts +1 -0
  61. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -1
  62. package/dist/components/custom/aurora/index.d.ts +1 -1
  63. package/dist/components/custom/border-progress/composables/spectrum-walk.d.ts +25 -0
  64. package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +14 -18
  65. package/dist/components/custom/border-progress/index.d.ts +1 -1
  66. package/dist/components/custom/completion-seal/CompletionSeal.vue.d.ts +21 -0
  67. package/dist/components/custom/completion-seal/composables/useCompletionSeal.d.ts +37 -0
  68. package/dist/components/custom/completion-seal/constants.d.ts +46 -0
  69. package/dist/components/custom/completion-seal/index.d.ts +4 -0
  70. package/dist/components/custom/concentric/Concentric.vue.d.ts +15 -12
  71. package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +12 -0
  72. package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +13 -0
  73. package/dist/components/custom/concentric/composables/levelField.d.ts +50 -0
  74. package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +7 -3
  75. package/dist/components/custom/concentric/composables/useConcentric.d.ts +3 -3
  76. package/dist/components/custom/concentric/constants.d.ts +69 -24
  77. package/dist/components/custom/concentric/index.d.ts +2 -2
  78. package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +2 -2
  79. package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -1
  80. package/dist/components/custom/configurator/Configurator.vue.d.ts +23 -2
  81. package/dist/components/custom/configurator/index.d.ts +1 -1
  82. package/dist/components/custom/confirm-dialog/ConfirmDialog.vue.d.ts +3 -3
  83. package/dist/components/custom/constellation/Constellation.vue.d.ts +5 -4
  84. package/dist/components/custom/constellation/composables/constellationGLSetup.d.ts +10 -0
  85. package/dist/components/custom/constellation/composables/constellationWGPUSetup.d.ts +19 -0
  86. package/dist/components/custom/constellation/composables/uniformBridgeWGPU.d.ts +66 -0
  87. package/dist/components/custom/constellation/composables/useConstellation.d.ts +3 -10
  88. package/dist/components/custom/constellation/constants.d.ts +33 -0
  89. package/dist/components/custom/constellation/constellationField.d.ts +31 -1
  90. package/dist/components/custom/constellation/constellationInteraction.d.ts +23 -14
  91. package/dist/components/custom/constellation/constellationRender.d.ts +25 -0
  92. package/dist/components/custom/constellation/constellationTypes.d.ts +38 -0
  93. package/dist/components/custom/constellation/constellationWell.d.ts +15 -0
  94. package/dist/components/custom/constellation/index.d.ts +5 -5
  95. package/dist/components/custom/constellation/shaders/constellation-lines.glsl.d.ts +2 -0
  96. package/dist/components/custom/constellation/shaders/constellation-lines.wgsl.d.ts +1 -0
  97. package/dist/components/custom/constellation/shaders/constellation-points.glsl.d.ts +2 -0
  98. package/dist/components/custom/constellation/shaders/constellation-points.wgsl.d.ts +1 -0
  99. package/dist/components/custom/deck/DeckPager.vue.d.ts +29 -0
  100. package/dist/components/custom/deck/composables/useDeck.d.ts +27 -0
  101. package/dist/components/custom/deck/composables/useDeckKeyboard.d.ts +25 -0
  102. package/dist/components/custom/deck/composables/useDeckSpring.d.ts +22 -0
  103. package/dist/components/custom/deck/constants.d.ts +14 -0
  104. package/dist/components/custom/deck/index.d.ts +8 -0
  105. package/dist/components/custom/dock/DockDropdownTrigger.vue.d.ts +4 -3
  106. package/dist/components/custom/dock/DockIconButton.vue.d.ts +22 -0
  107. package/dist/components/custom/dock/DockPopoverTrigger.vue.d.ts +19 -0
  108. package/dist/components/custom/dock/DockStack.vue.d.ts +78 -0
  109. package/dist/components/custom/dock/GlassDock.vue.d.ts +21 -3
  110. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +18 -32
  111. package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +78 -67
  112. package/dist/components/custom/dock/composables/index.d.ts +3 -0
  113. package/dist/components/custom/dock/composables/railProjection.d.ts +45 -0
  114. package/dist/components/custom/dock/composables/useDockContextSilhouette.d.ts +192 -0
  115. package/dist/components/custom/dock/composables/useDockFission.d.ts +158 -0
  116. package/dist/components/custom/dock/composables/useDockItemDrag.d.ts +18 -0
  117. package/dist/components/custom/dock/composables/useDockSearch.d.ts +85 -0
  118. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +49 -0
  119. package/dist/components/custom/dock/constants.d.ts +32 -17
  120. package/dist/components/custom/dock/index.d.ts +8 -2
  121. package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +15 -11
  122. package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +69 -6
  123. package/dist/components/custom/dot-flow-field/composables/flowGLProgram.d.ts +8 -0
  124. package/dist/components/custom/dot-flow-field/composables/flowSetupGL.d.ts +9 -0
  125. package/dist/components/custom/dot-flow-field/composables/flowSetupGLFlow.d.ts +12 -0
  126. package/dist/components/custom/dot-flow-field/composables/flowSetupWGPU.d.ts +7 -0
  127. package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +50 -9
  128. package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +6 -5
  129. package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +23 -9
  130. package/dist/components/custom/dot-flow-field/constants.d.ts +92 -20
  131. package/dist/components/custom/dot-flow-field/index.d.ts +2 -2
  132. package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -1
  133. package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +31 -18
  134. package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +2 -1
  135. package/dist/components/custom/dot-matrix/DotMatrix.vue.d.ts +43 -0
  136. package/dist/components/custom/dot-matrix/composables/dotMatrixField.d.ts +89 -0
  137. package/dist/components/custom/dot-matrix/composables/uniformBridgeWGPU.d.ts +61 -0
  138. package/dist/components/custom/dot-matrix/composables/useDotMatrix.d.ts +34 -0
  139. package/dist/components/custom/dot-matrix/composables/useDotSphere.d.ts +34 -0
  140. package/dist/components/custom/dot-matrix/constants.d.ts +72 -0
  141. package/dist/components/custom/dot-matrix/index.d.ts +5 -0
  142. package/dist/components/custom/dot-matrix/shaders/dot-matrix.glsl.d.ts +4 -0
  143. package/dist/components/custom/dot-matrix/shaders/dot-matrix.wgsl.d.ts +1 -0
  144. package/dist/components/custom/easing/EasingPicker.vue.d.ts +2 -2
  145. package/dist/components/custom/easing/composables/useEasingPicker.d.ts +5 -0
  146. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +11 -0
  147. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +44 -47
  148. package/dist/components/custom/fourier-field/composables/fourierFieldGLSetup.d.ts +24 -0
  149. package/dist/components/custom/fourier-field/composables/fourierFieldWGPUSetup.d.ts +31 -0
  150. package/dist/components/custom/fourier-field/composables/uniformBridgeWGPU.d.ts +56 -0
  151. package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +61 -37
  152. package/dist/components/custom/fourier-field/constants.d.ts +114 -4
  153. package/dist/components/custom/fourier-field/index.d.ts +23 -18
  154. package/dist/components/custom/fourier-field/shaders/fourier-field.compute.wgsl.d.ts +1 -0
  155. package/dist/components/custom/fourier-field/shaders/fourier-field.glsl.d.ts +4 -0
  156. package/dist/components/custom/fourier-field/shaders/fourier-field.render.wgsl.d.ts +1 -0
  157. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +9 -1
  158. package/dist/components/custom/goo-blob/composables/easing.d.ts +1 -0
  159. package/dist/components/custom/goo-blob/composables/useBlobSatellites.d.ts +1 -0
  160. package/dist/components/custom/goo-blob/constants.d.ts +26 -1
  161. package/dist/components/custom/goo-blob/index.d.ts +1 -1
  162. package/dist/components/custom/goo-blob/shaders/metaball-noise.wgsl.d.ts +1 -0
  163. package/dist/components/custom/goo-blob/shaders/metaball-palette.wgsl.d.ts +1 -0
  164. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -1
  165. package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -1
  166. package/dist/components/custom/goo-blob/types.d.ts +86 -1
  167. package/dist/components/custom/goo-dot-matrix/GooDotMatrix.vue.d.ts +49 -0
  168. package/dist/components/custom/goo-dot-matrix/composables/gooDotLattice.d.ts +24 -0
  169. package/dist/components/custom/goo-dot-matrix/composables/gooDotSetup.d.ts +79 -0
  170. package/dist/components/custom/goo-dot-matrix/composables/uniformBridgeWGPU.d.ts +45 -0
  171. package/dist/components/custom/goo-dot-matrix/composables/useGooDotMatrix.d.ts +31 -0
  172. package/dist/components/custom/goo-dot-matrix/constants.d.ts +115 -0
  173. package/dist/components/custom/goo-dot-matrix/index.d.ts +5 -0
  174. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.frag.d.ts +13 -0
  175. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.wgsl.d.ts +4 -0
  176. package/dist/components/custom/goo-filter/GooFilter.vue.d.ts +22 -0
  177. package/dist/components/custom/goo-filter/index.d.ts +1 -0
  178. package/dist/components/custom/handmark/brush.d.ts +17 -17
  179. package/dist/components/custom/handmark/constants.d.ts +28 -8
  180. package/dist/components/custom/handmark/geometry.d.ts +34 -1
  181. package/dist/components/custom/handmark/index.d.ts +1 -1
  182. package/dist/components/custom/icon-chip/types.d.ts +10 -0
  183. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +21 -2
  184. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +15 -0
  185. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +9 -0
  186. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  187. package/dist/components/custom/pager-dots/pagerWindow.d.ts +9 -0
  188. package/dist/components/custom/paper-backdrop/PaperBackdrop.vue.d.ts +18 -0
  189. package/dist/components/custom/paper-grid/PaperGrid.vue.d.ts +42 -0
  190. package/dist/components/custom/paper-grid/composables/paperGrid.d.ts +105 -0
  191. package/dist/components/custom/paper-grid/composables/paperGridGLSetup.d.ts +18 -0
  192. package/dist/components/custom/paper-grid/composables/paperGridWGPUSetup.d.ts +21 -0
  193. package/dist/components/custom/paper-grid/composables/uniformBridgeWGPU.d.ts +16 -0
  194. package/dist/components/custom/paper-grid/composables/usePaperGrid.d.ts +31 -0
  195. package/dist/components/custom/paper-grid/constants.d.ts +95 -0
  196. package/dist/components/custom/paper-grid/index.d.ts +5 -0
  197. package/dist/components/custom/paper-grid/shaders/paper-grid.glsl.d.ts +4 -0
  198. package/dist/components/custom/paper-grid/shaders/paper-grid.wgsl.d.ts +1 -0
  199. package/dist/components/custom/search/FuzzySearch.vue.d.ts +8 -2
  200. package/dist/components/custom/search/SearchBar.vue.d.ts +8 -0
  201. package/dist/components/custom/search/index.d.ts +2 -0
  202. package/dist/components/custom/search/searchVariants.d.ts +19 -0
  203. package/dist/components/custom/selectable-chip/SelectableChip.vue.d.ts +50 -0
  204. package/dist/components/custom/selectable-chip/chipVariants.d.ts +39 -0
  205. package/dist/components/custom/selectable-chip/index.d.ts +2 -0
  206. package/dist/components/custom/selectable-chip/selectableChipVariants.d.ts +15 -0
  207. package/dist/components/custom/split-chars/SplitChars.vue.d.ts +39 -0
  208. package/dist/components/custom/split-chars/index.d.ts +1 -0
  209. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +8 -6
  210. package/dist/components/custom/tabs/constants.d.ts +28 -2
  211. package/dist/components/custom/timeline/ScrubberTimeline.vue.d.ts +16 -0
  212. package/dist/components/custom/timeline/geometry.d.ts +0 -8
  213. package/dist/components/custom/toggle-chip/index.d.ts +15 -4
  214. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +32 -17
  215. package/dist/components/custom/watercolor-dot/useWatercolorBlob.d.ts +10 -5
  216. package/dist/components/ui/_shared/index.d.ts +2 -0
  217. package/dist/components/ui/_shared/useControlSize.d.ts +46 -0
  218. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +17 -3
  219. package/dist/components/ui/badge/Badge.vue.d.ts +14 -0
  220. package/dist/components/ui/badge/index.d.ts +1 -0
  221. package/dist/components/ui/button/Button.vue.d.ts +1 -0
  222. package/dist/components/ui/button/index.d.ts +1 -1
  223. package/dist/components/ui/card/Card.vue.d.ts +46 -1
  224. package/dist/components/ui/card/ScrollCard.vue.d.ts +1 -1
  225. package/dist/components/ui/card/index.d.ts +1 -1
  226. package/dist/components/ui/carousel/CarouselContent.vue.d.ts +2 -4
  227. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +1 -1
  228. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +1 -1
  229. package/dist/components/ui/command/CommandDialog.vue.d.ts +9 -3
  230. package/dist/components/ui/command/CommandList.vue.d.ts +3 -0
  231. package/dist/components/ui/context-menu/ContextMenuContent.vue.d.ts +5 -1
  232. package/dist/components/ui/dialog/DialogContent.vue.d.ts +9 -0
  233. package/dist/components/ui/drawer/Drawer.vue.d.ts +33 -14
  234. package/dist/components/ui/drawer/constants.d.ts +8 -6
  235. package/dist/components/ui/drawer/index.d.ts +12 -2
  236. package/dist/components/ui/dropdown-menu/DropdownMenuContent.vue.d.ts +4 -0
  237. package/dist/components/ui/hover-card/HoverCardContent.vue.d.ts +3 -0
  238. package/dist/components/ui/input/Input.vue.d.ts +3 -0
  239. package/dist/components/ui/number-field/NumberFieldInput.vue.d.ts +6 -1
  240. package/dist/components/ui/select/SelectContent.vue.d.ts +12 -0
  241. package/dist/components/ui/slider/Slider.vue.d.ts +9 -0
  242. package/dist/components/ui/switch/Switch.vue.d.ts +2 -0
  243. package/dist/components/ui/textarea/Textarea.vue.d.ts +3 -0
  244. package/dist/components/ui/tooltip/TooltipContent.vue.d.ts +3 -0
  245. package/dist/composables/color/index.d.ts +2 -0
  246. package/dist/composables/color/useAccentTone.d.ts +34 -0
  247. package/dist/composables/dom/index.d.ts +1 -0
  248. package/dist/composables/dom/useDragVelocity.d.ts +46 -0
  249. package/dist/composables/glass/useVizChoreography.d.ts +123 -0
  250. package/dist/composables/glass/wave/index.d.ts +4 -0
  251. package/dist/composables/glass/wave/waveField.d.ts +115 -0
  252. package/dist/composables/glass/wave/waveField.glsl.d.ts +1 -0
  253. package/dist/composables/glass/wave/waveField.wgsl.d.ts +1 -0
  254. package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +105 -2
  255. package/dist/composables/glass/webgl/shaders/flow.wgsl.d.ts +1 -0
  256. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +40 -2
  257. package/dist/composables/glass/webgpu/index.d.ts +2 -1
  258. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +65 -7
  259. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +50 -2
  260. package/dist/composables/glass/webgpu/webgpuDevice.d.ts +42 -0
  261. package/dist/composables/motion/core/index.d.ts +7 -0
  262. package/dist/composables/motion/core/useHaptic.d.ts +48 -0
  263. package/dist/composables/motion/core/writeVelocityWeight.d.ts +31 -0
  264. package/dist/composables/motion/index.d.ts +2 -0
  265. package/dist/composables/motion/scrollReader.d.ts +25 -0
  266. package/dist/composables/motion/springPresets.d.ts +19 -1
  267. package/dist/composables/motion/suite.d.ts +2 -2
  268. package/dist/composables/motion/useBloomUp.d.ts +97 -0
  269. package/dist/composables/motion/useCelebrationBurst.d.ts +50 -0
  270. package/dist/composables/motion/useCharStagger.d.ts +44 -0
  271. package/dist/composables/motion/useDockCtaReceive.d.ts +29 -22
  272. package/dist/composables/motion/useGooMorph.d.ts +72 -0
  273. package/dist/composables/motion/useLiquidFlex.d.ts +18 -0
  274. package/dist/composables/motion/useLiquidMorph.d.ts +108 -0
  275. package/dist/composables/motion/useLiquidPress.d.ts +12 -0
  276. package/dist/composables/motion/useLiquidReveal.d.ts +7 -4
  277. package/dist/composables/motion/useMorphField.d.ts +157 -0
  278. package/dist/composables/motion/useScrollChrome.d.ts +58 -0
  279. package/dist/composables/motion/useScrollPin.d.ts +49 -0
  280. package/dist/composables/motion/useScrollScene.d.ts +67 -0
  281. package/dist/composables/motion/useScrollTrigger.d.ts +67 -0
  282. package/dist/composables/motion/useSpringPress.d.ts +5 -5
  283. package/dist/composables/motion/useStaggerReveal.d.ts +24 -0
  284. package/dist/composables/sidebar/index.d.ts +4 -1
  285. package/dist/composables/sidebar/types.d.ts +68 -3
  286. package/dist/composables/sidebar/useClickDelegate.d.ts +4 -0
  287. package/dist/composables/sidebar/useLazyLoader.d.ts +5 -0
  288. package/dist/composables/sidebar/useScrollTo.d.ts +5 -0
  289. package/dist/composables/virtual/index.d.ts +4 -0
  290. package/dist/composables/virtual/useVirtualSectionWindow.d.ts +72 -0
  291. package/dist/composables/virtual/useWindowedStore.d.ts +43 -0
  292. package/dist/composables/virtual/virtualSectionLayout.d.ts +103 -0
  293. package/dist/concentric.js +552 -309
  294. package/dist/configurator.js +2 -2
  295. package/dist/confirm-dialog.js +62 -47
  296. package/dist/constellation.js +635 -235
  297. package/dist/context-menu.js +2 -2
  298. package/dist/controls.js +2 -2
  299. package/dist/createCanvasLifecycle-CuCrGRfq.js +173 -0
  300. package/dist/dark.js +1 -1
  301. package/dist/data-table.js +1 -1
  302. package/dist/deck.d.ts +1 -0
  303. package/dist/deck.js +105 -0
  304. package/dist/dialog.js +4 -3
  305. package/dist/dock.js +1320 -631
  306. package/dist/dockContext-gFVS2gMg.js +18 -0
  307. package/dist/dom.js +7 -6
  308. package/dist/dot-flow-field.js +1268 -387
  309. package/dist/dot-matrix.d.ts +1 -0
  310. package/dist/dot-matrix.js +774 -0
  311. package/dist/dotMatrixField-CRO0ZFk4.js +48 -0
  312. package/dist/drawer.js +106 -96
  313. package/dist/{dropdown-menu-CofSZuk8.js → dropdown-menu-CCfcCQ68.js} +83 -79
  314. package/dist/dropdown-menu.js +1 -1
  315. package/dist/easing.js +188 -176
  316. package/dist/expandable-container.js +43 -21
  317. package/dist/fading-scroll.js +1 -1
  318. package/dist/flow.glsl-DqEGRpl4.js +4 -0
  319. package/dist/forms.js +64 -62
  320. package/dist/fourier-field.js +1069 -178
  321. package/dist/fourier-math.js +1 -1
  322. package/dist/glass-panel.js +2 -2
  323. package/dist/glass-ui.css +1 -1
  324. package/dist/glass-ui.js +164 -119
  325. package/dist/goo-blob.js +175 -1230
  326. package/dist/goo-dot-matrix.d.ts +1 -0
  327. package/dist/goo-dot-matrix.js +811 -0
  328. package/dist/handmark.js +137 -94
  329. package/dist/header-ribbon.js +1 -1
  330. package/dist/hover-card.js +1 -1
  331. package/dist/hover-popover.js +1 -1
  332. package/dist/icon-chip.js +1 -1
  333. package/dist/icon-tooltip.js +1 -1
  334. package/dist/index.d.ts +5 -0
  335. package/dist/instrument-chassis.js +1 -1
  336. package/dist/keyboard.js +1 -1
  337. package/dist/label.js +1 -1
  338. package/dist/labeled-field.js +70 -60
  339. package/dist/metric-badge.js +1 -1
  340. package/dist/metric-cell.js +1 -1
  341. package/dist/metric-stack.js +12 -3
  342. package/dist/motion-core.js +59 -34
  343. package/dist/motion-curves.js +30 -14
  344. package/dist/motion.js +231 -96
  345. package/dist/notification.js +1 -1
  346. package/dist/number-field.js +1 -1
  347. package/dist/pager-dots.js +2 -91
  348. package/dist/paper-backdrop.js +1 -1
  349. package/dist/paper-grid.d.ts +1 -0
  350. package/dist/paper-grid.js +761 -0
  351. package/dist/paperGrid-CXCSMbZ1.js +191 -0
  352. package/dist/popover.js +1 -1
  353. package/dist/{presets-BW2b-fr1.js → presets-QvYgnFIZ.js} +14 -13
  354. package/dist/{procedural-color.glsl-CIFsJhwI.js → procedural-color.wgsl-C1Y5PkM6.js} +2 -2
  355. package/dist/progress.js +1 -1
  356. package/dist/pulse.js +2 -2
  357. package/dist/reactive.js +2 -2
  358. package/dist/{useCanvas2D-B8w_E3Rr.js → resolveCanvasColor-DsSJk06I.js} +16 -6
  359. package/dist/scrollReader-rc3Ns_NM.js +42 -0
  360. package/dist/scrolling-text.js +1 -1
  361. package/dist/search.js +162 -306
  362. package/dist/select.js +3 -3
  363. package/dist/selectable-chip.d.ts +1 -0
  364. package/dist/selectable-chip.js +48 -0
  365. package/dist/separator.js +1 -1
  366. package/dist/{sheet-tZMg0E0w.js → sheet-DUCIoOe0.js} +4 -4
  367. package/dist/sheet.js +1 -1
  368. package/dist/sidebar.js +216 -114
  369. package/dist/slider-CcICPe3u.js +149 -0
  370. package/dist/slider.js +1 -1
  371. package/dist/sortable-list.js +3 -3
  372. package/dist/spectrum-walk-cBNSx_zm.js +33 -0
  373. package/dist/springPresets-DfoQ6XRY.js +64 -0
  374. package/dist/stacked-icons.js +54 -39
  375. package/dist/styles/animations.css +13 -3
  376. package/dist/styles/cards.css +271 -2
  377. package/dist/styles/completion-seal.css +131 -0
  378. package/dist/styles/components.css +1 -4
  379. package/dist/styles/configurator.css +221 -1
  380. package/dist/styles/critical-partition.mjs +66 -11
  381. package/dist/styles/deferred.css +4 -0
  382. package/dist/styles/dock/adaptive-legibility.css +119 -0
  383. package/dist/styles/dock/cta-seat.css +87 -0
  384. package/dist/styles/dock/density.css +167 -6
  385. package/dist/styles/dock/fission-bridge.css +552 -0
  386. package/dist/styles/dock/layers.css +90 -78
  387. package/dist/styles/dock/morph-bridge.css +67 -18
  388. package/dist/styles/dock/morph.css +57 -118
  389. package/dist/styles/dock/overflow.css +12 -0
  390. package/dist/styles/dock/search.css +68 -0
  391. package/dist/styles/dock/shape.css +250 -0
  392. package/dist/styles/dock/shell.css +24 -8
  393. package/dist/styles/dock/stack-rail.css +352 -0
  394. package/dist/styles/dock-controls/dark-mode-toggle.css +17 -4
  395. package/dist/styles/dock-controls/icon-button.css +46 -0
  396. package/dist/styles/dock-controls/triggers.css +23 -1
  397. package/dist/styles/dock-controls.css +18 -0
  398. package/dist/styles/dock.css +27 -2
  399. package/dist/styles/drawer.css +166 -0
  400. package/dist/styles/glass/accent-tone.css +66 -0
  401. package/dist/styles/glass/control-surfaces.css +167 -0
  402. package/dist/styles/glass/glass-atom.css +244 -0
  403. package/dist/styles/glass/glass-capsule.css +143 -0
  404. package/dist/styles/glass/glass-chip.css +215 -0
  405. package/dist/styles/glass/ladder.css +67 -17
  406. package/dist/styles/glass/liquid-enter.css +252 -0
  407. package/dist/styles/glass/liquid-morph.css +850 -0
  408. package/dist/styles/glass/material.css +70 -1
  409. package/dist/styles/glass/reveal.css +22 -2
  410. package/dist/styles/glass/rim.css +31 -9
  411. package/dist/styles/glass/surfaces.css +81 -150
  412. package/dist/styles/glass.css +21 -0
  413. package/dist/styles/icon-chip.css +45 -0
  414. package/dist/styles/index.css +26 -0
  415. package/dist/styles/jubilance.css +65 -0
  416. package/dist/styles/motion/morph-field.css +229 -0
  417. package/dist/styles/paper.css +230 -14
  418. package/dist/styles/scroll-choreography.css +135 -78
  419. package/dist/styles/scroll-chrome.css +123 -0
  420. package/dist/styles/scroll-driven.css +38 -0
  421. package/dist/styles/segmented-tabs.css +110 -40
  422. package/dist/styles/select.css +151 -0
  423. package/dist/styles/theme/bridges.css +22 -0
  424. package/dist/styles/theme/radius.css +18 -1
  425. package/dist/styles/tokens/color-radius.css +14 -4
  426. package/dist/styles/tokens/dark-arm.css +94 -12
  427. package/dist/styles/tokens/glass-deep.css +33 -4
  428. package/dist/styles/tokens/glass-fx.css +122 -1
  429. package/dist/styles/tokens/glass.css +226 -34
  430. package/dist/styles/tokens/light-dark.css +3 -3
  431. package/dist/styles/tokens/offsets.css +27 -0
  432. package/dist/styles/tokens/property-regs.css +277 -0
  433. package/dist/styles/tokens/scale-paper.css +86 -30
  434. package/dist/styles/tokens/scheme-motion.css +106 -133
  435. package/dist/styles/tokens/scheme-spring.css +239 -0
  436. package/dist/styles/tokens/scroll-tokens.css +15 -15
  437. package/dist/styles/tokens/shadow.css +73 -13
  438. package/dist/styles/tokens/sizing-config.css +110 -0
  439. package/dist/styles/tokens/sizing.css +55 -104
  440. package/dist/styles/tokens.css +14 -2
  441. package/dist/styles/typography/semantic.css +18 -5
  442. package/dist/styles/utilities/a11y-overrides.css +20 -5
  443. package/dist/styles/utilities/base-misc.css +52 -0
  444. package/dist/styles/utilities/btn.css +84 -3
  445. package/dist/styles/utilities/components.css +31 -6
  446. package/dist/styles/utilities/metal.css +26 -0
  447. package/dist/switch.js +1 -1
  448. package/dist/tabs.js +199 -182
  449. package/dist/timeline.js +241 -206
  450. package/dist/toast.js +1 -1
  451. package/dist/toggle-chip.js +14 -41
  452. package/dist/toggle-group.js +1 -1
  453. package/dist/tooltip.js +1 -1
  454. package/dist/typewriter.js +2 -2
  455. package/dist/uniformBridgeWGPU-BCse1SHU.js +1268 -0
  456. package/dist/{useAnimatedNumber-BfUq2bUM.js → useAnimatedNumber-BntskVdQ.js} +1 -1
  457. package/dist/{useConfiguratorState-DNlOh6c8.js → useConfiguratorState-22BcULzF.js} +41 -38
  458. package/dist/useControlSize-DAZ062x7.js +9 -0
  459. package/dist/useDockCtaReceive-DX7RDb6_.js +88 -0
  460. package/dist/{useDragMorph-DgxnsVJz.js → useDragMorph-DGLSewwB.js} +4 -4
  461. package/dist/useDragVelocity-CjcfX3dA.js +57 -0
  462. package/dist/useFuzzySearch-0fTYOhS4.js +177 -0
  463. package/dist/useGooMorph-Cs13NgYL.js +104 -0
  464. package/dist/useGpuSubstrate-Ceet70xq.js +347 -0
  465. package/dist/useHaptic-CPz5BT9I.js +134 -0
  466. package/dist/{useLiquidFlex-mZPMiNXh.js → useLiquidFlex-Cc6PjVJD.js} +8 -3
  467. package/dist/useLiquidPress-CtOQ8Z0_.js +43 -0
  468. package/dist/useMorphField-ogBM7ubT.js +141 -0
  469. package/dist/usePointerVelocityField-BrkqZFhj.js +91 -0
  470. package/dist/useScrollChrome-JuImi1DM.js +258 -0
  471. package/dist/{useSpringMount-q1amq1SJ.js → useSpringMount-DFxtzmkR.js} +1 -1
  472. package/dist/useSpringPress-VM9RgVq3.js +36 -0
  473. package/dist/{useSurfaceAxis-g0NloYEF.js → useSurfaceAxis-Ci7Dnaw2.js} +1 -1
  474. package/dist/{useTouchGate-CBZTD4SD.js → useTouchGate-B1Lf9XqN.js} +1 -1
  475. package/dist/{vendor-CKmzio-i.js → vendor-B2qOlYY3.js} +24 -11
  476. package/dist/virtual.d.ts +1 -0
  477. package/dist/virtual.js +225 -0
  478. package/dist/watercolor-dot.js +107 -74
  479. package/dist/writeVelocityWeight-Bh83xZfs.js +19 -0
  480. package/package.json +140 -9
  481. package/src/styles/animations.css +13 -3
  482. package/src/styles/cards.css +271 -2
  483. package/src/styles/completion-seal.css +131 -0
  484. package/src/styles/configurator.css +221 -1
  485. package/src/styles/critical-partition.mjs +66 -11
  486. package/src/styles/dock/adaptive-legibility.css +119 -0
  487. package/src/styles/dock/cta-seat.css +87 -0
  488. package/src/styles/dock/density.css +167 -6
  489. package/src/styles/dock/fission-bridge.css +552 -0
  490. package/src/styles/dock/layers.css +90 -78
  491. package/src/styles/dock/morph-bridge.css +67 -18
  492. package/src/styles/dock/morph.css +57 -118
  493. package/src/styles/dock/overflow.css +12 -0
  494. package/src/styles/dock/search.css +68 -0
  495. package/src/styles/dock/shape.css +250 -0
  496. package/src/styles/dock/shell.css +24 -8
  497. package/src/styles/dock/stack-rail.css +352 -0
  498. package/src/styles/dock-controls/dark-mode-toggle.css +17 -4
  499. package/src/styles/dock-controls/icon-button.css +46 -0
  500. package/src/styles/dock-controls/triggers.css +23 -1
  501. package/src/styles/dock-controls.css +18 -0
  502. package/src/styles/dock.css +27 -2
  503. package/src/styles/drawer.css +164 -0
  504. package/src/styles/glass/accent-tone.css +66 -0
  505. package/src/styles/glass/control-surfaces.css +167 -0
  506. package/src/styles/glass/glass-atom.css +244 -0
  507. package/src/styles/glass/glass-capsule.css +143 -0
  508. package/src/styles/glass/glass-chip.css +215 -0
  509. package/src/styles/glass/ladder.css +67 -17
  510. package/src/styles/glass/liquid-enter.css +252 -0
  511. package/src/styles/glass/liquid-morph.css +850 -0
  512. package/src/styles/glass/material.css +70 -1
  513. package/src/styles/glass/reveal.css +22 -2
  514. package/src/styles/glass/rim.css +31 -9
  515. package/src/styles/glass/surfaces.css +81 -150
  516. package/src/styles/glass.css +21 -0
  517. package/src/styles/icon-chip.css +45 -0
  518. package/src/styles/index.css +26 -0
  519. package/src/styles/jubilance.css +65 -0
  520. package/src/styles/motion/morph-field.css +229 -0
  521. package/src/styles/paper.css +230 -14
  522. package/src/styles/scroll-choreography.css +135 -78
  523. package/src/styles/scroll-chrome.css +123 -0
  524. package/src/styles/scroll-driven.css +38 -0
  525. package/src/styles/segmented-tabs.css +110 -36
  526. package/src/styles/select.css +151 -0
  527. package/src/styles/theme/bridges.css +22 -0
  528. package/src/styles/theme/radius.css +18 -1
  529. package/src/styles/tokens/color-radius.css +14 -4
  530. package/src/styles/tokens/dark-arm.css +94 -12
  531. package/src/styles/tokens/glass-deep.css +33 -4
  532. package/src/styles/tokens/glass-fx.css +122 -1
  533. package/src/styles/tokens/glass.css +226 -34
  534. package/src/styles/tokens/light-dark.css +3 -3
  535. package/src/styles/tokens/offsets.css +27 -0
  536. package/src/styles/tokens/property-regs.css +277 -0
  537. package/src/styles/tokens/scale-paper.css +86 -30
  538. package/src/styles/tokens/scheme-motion.css +106 -133
  539. package/src/styles/tokens/scheme-spring.css +239 -0
  540. package/src/styles/tokens/scroll-tokens.css +15 -15
  541. package/src/styles/tokens/shadow.css +73 -13
  542. package/src/styles/tokens/sizing-config.css +110 -0
  543. package/src/styles/tokens/sizing.css +55 -104
  544. package/src/styles/tokens.css +14 -2
  545. package/src/styles/typography/semantic.css +18 -5
  546. package/src/styles/utilities/a11y-overrides.css +20 -5
  547. package/src/styles/utilities/base-misc.css +52 -0
  548. package/src/styles/utilities/btn.css +84 -3
  549. package/src/styles/utilities/components.css +31 -6
  550. package/src/styles/utilities/metal.css +26 -0
  551. package/dist/ContextMenuContent-uWnVxDab.js +0 -85
  552. package/dist/DialogContent-DcKK8k9i.js +0 -103
  553. package/dist/DialogFooter-BZNX5aVr.js +0 -165
  554. package/dist/HoverCardContent-b2uaAMRR.js +0 -83
  555. package/dist/Input-h9v5LeXf.js +0 -55
  556. package/dist/NumberFieldContent-Cq7EzX-U.js +0 -138
  557. package/dist/PaperBackdrop-Vf3tlpvd.js +0 -31
  558. package/dist/SelectScrollDownButton-CrA8F0iV.js +0 -252
  559. package/dist/Separator-pKF0oA4M.js +0 -37
  560. package/dist/Switch-CwYNf8bo.js +0 -47
  561. package/dist/TooltipProvider-rzvnXz60.js +0 -104
  562. package/dist/badge-D9XWW4GT.js +0 -53
  563. package/dist/button-DYCUa-tH.js +0 -126
  564. package/dist/color-DweYl7pE.js +0 -86
  565. package/dist/components/custom/concentric/composables/ringField.d.ts +0 -44
  566. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +0 -35
  567. package/dist/components/custom/constellation/constellationDraw.d.ts +0 -30
  568. package/dist/components/custom/dock/DockRail.vue.d.ts +0 -89
  569. package/dist/createCanvasLifecycle-CHD5XrDW.js +0 -82
  570. package/dist/dockContext-BNfyPLe9.js +0 -17
  571. package/dist/procedural-color.wgsl-CToRHugY.js +0 -224
  572. package/dist/resolveCanvasColor-CUyHr5Uu.js +0 -11
  573. package/dist/slider-DVb4HXU-.js +0 -142
  574. package/dist/springPresets-CFQGQfdl.js +0 -40
  575. package/dist/styles/dock/rail-extend.css +0 -397
  576. package/dist/useLiquidPress-kfb4KX79.js +0 -39
  577. package/dist/usePointerVelocityField-JbRd5CrM.js +0 -137
  578. package/dist/useRAFLoop-UYa4zoiN.js +0 -109
  579. package/dist/useSpringPress-BsqPr7FJ.js +0 -34
  580. package/src/styles/dock/rail-extend.css +0 -397
  581. /package/dist/{CollapsibleContent-68dEXIAl.js → CollapsibleContent-D7UNsXQr.js} +0 -0
  582. /package/dist/{InstrumentChassis-Bx0F_q5g.js → InstrumentChassis-UUJX0-mW.js} +0 -0
  583. /package/dist/{Label-C2ejNWeC.js → Label-B_HPqi_q.js} +0 -0
  584. /package/dist/{ModalOverlay-D1VrWyoi.js → ModalOverlay-DfAf7o15.js} +0 -0
  585. /package/dist/{SelectGroup-DwwjicPY.js → SelectGroup-Dcczq44n.js} +0 -0
  586. /package/dist/{_plugin-vue_export-helper-C1je1s0u.js → _plugin-vue_export-helper-gLzyemvl.js} +0 -0
  587. /package/dist/{compile-CQEFRTmx.js → compile-INR_tPk_.js} +0 -0
  588. /package/dist/{constants-BPOqYJAm.js → constants-BWj7DkMn.js} +0 -0
  589. /package/dist/{createContext-CpBNTRMI.js → createContext-Cd23P9j0.js} +0 -0
  590. /package/dist/{math-BINYmg5z.js → math-5RcIgCB4.js} +0 -0
  591. /package/dist/{menuItemVariants-D8VNHq22.js → menuItemVariants-DAXquKja.js} +0 -0
  592. /package/dist/{prng-Za0Rmgag.js → prng-B5tIXTtj.js} +0 -0
  593. /package/dist/{useGlobalDark-C28t0VWJ.js → useGlobalDark-B4HO9LXG.js} +0 -0
  594. /package/dist/{useIntersectionPause-Bj4sPkMh.js → useIntersectionPause-DO8Vl4gs.js} +0 -0
  595. /package/dist/{useInterval-CvK1mL92.js → useInterval-BVUI-sez.js} +0 -0
  596. /package/dist/{useKeyboardShortcuts-BXWXOZ-9.js → useKeyboardShortcuts-BEut54Tk.js} +0 -0
  597. /package/dist/{useResizeObserver-Bpoi7tRE.js → useResizeObserver-DdEn3v2f.js} +0 -0
  598. /package/dist/{useResolveTokenColor-vAylyR0x.js → useResolveTokenColor-ChOnCckA.js} +0 -0
  599. /package/dist/{useScrollProgress-D7bYU2RK.js → useScrollProgress-A0M6qRl7.js} +0 -0
  600. /package/dist/{useSortable-DHjtZSEd.js → useSortable-DQV_UNDw.js} +0 -0
  601. /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-Bma3UlKA.js} +0 -0
  602. /package/dist/{useTimer-BHJOKr35.js → useTimer-BBLGPXR8.js} +0 -0
  603. /package/dist/{useUserInvalidAria-y5namzeE.js → useUserInvalidAria-EmmwWPOl.js} +0 -0
  604. /package/dist/{useViewportReady-anbac3m6.js → useViewportReady-C9pYnn7K.js} +0 -0
  605. /package/dist/{vReveal-Czsb7zQC.js → vReveal-CT1KtwZA.js} +0 -0
  606. /package/dist/{vSpecular-CQFmLNzA.js → vSpecular-EX7loENl.js} +0 -0
@@ -0,0 +1,33 @@
1
+ import { o as e, t } from "./color-B9jZdhJX.js";
2
+ import { OKLCHColor as n, sampleColorRamp as r } from "@mkbabb/value.js";
3
+ //#region src/components/custom/border-progress/composables/spectrum-walk.ts
4
+ var i = (e) => new n(e.L, e.C, e.h / 360), a = (e) => ({
5
+ L: Number(e.l),
6
+ C: Number(e.c),
7
+ h: (Number(e.h) * 360 % 360 + 360) % 360
8
+ });
9
+ function o(n, o) {
10
+ let s = n.map((e) => t(e)), c = s.length;
11
+ if (o < 2) return [e(s[0] ?? {
12
+ L: .7,
13
+ C: 0,
14
+ h: 0
15
+ })];
16
+ if (c === 0) return Array.from({ length: o }, () => e({
17
+ L: .7,
18
+ C: 0,
19
+ h: 0
20
+ }));
21
+ if (c === 1) return Array.from({ length: o }, () => e(s[0]));
22
+ let l = (t, n, o) => r(i(t), i(n), o, {
23
+ space: "oklch",
24
+ hueMethod: "shorter"
25
+ }).map((t) => e(a(t))), u = c - 1, d = [];
26
+ for (let e = 0; e < u; e++) {
27
+ let t = Math.round(e * (o - 1) / u), n = Math.round((e + 1) * (o - 1) / u), r = l(s[e], s[e + 1], n - t + 1);
28
+ d.push(...e > 0 ? r.slice(1) : r);
29
+ }
30
+ return d;
31
+ }
32
+ //#endregion
33
+ export { o as walkConcreteSpectrum };
@@ -0,0 +1,64 @@
1
+ //#region src/composables/motion/springPresets.ts
2
+ var e = [
3
+ {
4
+ name: "smooth",
5
+ response: .58,
6
+ dampingFraction: .8,
7
+ comment: "SETTLE register — the inertial settle (entrances/fades/scale-ins): weighty, a whisper of life (+1.5%), never a dead stop. BD.W-ANIM-IOS27-TUNE"
8
+ },
9
+ {
10
+ name: "snappy",
11
+ response: .48,
12
+ dampingFraction: .74,
13
+ comment: "CONTROL register — the quick-but-WEIGHTY position morph (tab indicator, progress fill, .glass-reveal SPATIAL bloom, page-build); arrives at half-clock (audacious) with a small gooey overshoot (+3.2%). BD.W-ANIM-IOS27-TUNE"
14
+ },
15
+ {
16
+ name: "bouncy",
17
+ response: .6,
18
+ dampingFraction: .6,
19
+ comment: "PLAYFUL register — the emphatic one-shot (dialog/success entrance, VT default, completion-seal): FLOWING not flicking — overshoot softened 12.6%→9.5%, slower for inertia. BD.W-ANIM-IOS27-TUNE"
20
+ },
21
+ {
22
+ name: "gentle",
23
+ response: .82,
24
+ dampingFraction: 1,
25
+ comment: "GENTLE register — the patient critically-damped settle (--ease-convergence alias); slow inertial arrival, ζ=1.0 (NO overshoot by definition — the convergence-reveal depends on it). BD.W-ANIM-IOS27-TUNE"
26
+ },
27
+ {
28
+ name: "dock",
29
+ response: .68,
30
+ dampingFraction: .64,
31
+ comment: "DOCK register — THE WEIGHTY GOOEY MORPH (collapse/expand + V↔H + fission + in-situ shell): slow inertial mass, the settle a graceful +7.3% (un-pointed liquid), the 'MORPH MORE on move' reference. BD.W-ANIM-IOS27-TUNE"
32
+ },
33
+ {
34
+ name: "press",
35
+ response: .2,
36
+ dampingFraction: .8,
37
+ comment: "PRESS register — the iOS interactive tap (useSpringPress + --glass-btn-press-t): a hair of inertial carry (sub-200ms iOS window) + a tiny alive rebound (+1.5%); the interruptible re-seat keeps the gesture continuous. BD.W-ANIM-IOS27-TUNE"
38
+ },
39
+ {
40
+ name: "timeline-head",
41
+ response: .34,
42
+ dampingFraction: .74,
43
+ comment: "TIMELINE-HEAD register — the ScrubberTimeline warm-glass lozenge travel (LEG-2): the head LAGS the pointer a hair then settles with a whisper of fling-overshoot (+3.2%). The fast head clock the fill trails. BD.W-TIMELINE-RAIL-UNIFY"
44
+ },
45
+ {
46
+ name: "timeline-fill",
47
+ response: .46,
48
+ dampingFraction: .82,
49
+ comment: "TIMELINE-FILL register — the ScrubberTimeline lane fill (LEG-2): a slower clock than the head so the fill TRAILS the bead (the lane reads as liquid trailing), settling with a hint of carry (+1.1%). BD.W-TIMELINE-RAIL-UNIFY"
50
+ },
51
+ {
52
+ name: "timeline-press",
53
+ response: .22,
54
+ dampingFraction: .7,
55
+ comment: "TIMELINE-PRESS register — the ScrubberTimeline grab-anticipation (LEG-2): the head's pointerdown squash on the cartoon-punch clock, a crisp short-response press settle (+4.6%) feeding the --scale-press dip. BD.W-TIMELINE-RAIL-UNIFY"
56
+ }
57
+ ];
58
+ function t(t) {
59
+ let n = e.find((e) => e.name === t);
60
+ if (!n) throw Error(`Unknown spring preset: ${t}`);
61
+ return n;
62
+ }
63
+ //#endregion
64
+ export { t as n, e as t };
@@ -1,9 +1,9 @@
1
- import { Fragment as e, computed as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createTextVNode as a, defineComponent as o, normalizeClass as s, normalizeStyle as c, openBlock as l, renderList as u, renderSlot as d, resolveDynamicComponent as f, toDisplayString as p, withCtx as m } from "vue";
1
+ import { Fragment as e, computed as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createTextVNode as o, defineComponent as s, normalizeClass as c, normalizeStyle as l, openBlock as u, renderList as d, renderSlot as f, resolveDynamicComponent as p, toDisplayString as m, withCtx as h } from "vue";
2
2
  //#region src/components/custom/stacked-icons/StackedIconGroup.vue?vue&type=script&setup=true&lang.ts
3
- var h = {
3
+ var g = {
4
4
  key: 1,
5
5
  style: { zIndex: 0 }
6
- }, g = /* @__PURE__ */ o({
6
+ }, _ = /* @__PURE__ */ s({
7
7
  __name: "StackedIconGroup",
8
8
  props: {
9
9
  items: {},
@@ -21,63 +21,78 @@ var h = {
21
21
  as: { default: "div" },
22
22
  keyFn: {}
23
23
  },
24
- setup(o) {
25
- let g = o, _ = t(() => {
26
- switch (g.size) {
24
+ setup(s) {
25
+ let _ = s, v = t(() => {
26
+ switch (_.size) {
27
27
  case "sm": return "h-6 w-6";
28
28
  case "md": return "h-8 w-8";
29
29
  case "lg": return "h-10 w-10";
30
30
  }
31
- }), v = t(() => {
32
- if (g.direction === "vertical") switch (g.size) {
31
+ }), y = t(() => {
32
+ if (_.direction === "vertical") switch (_.size) {
33
33
  case "sm": return "-mt-(--stack-overlap-sm)";
34
34
  case "md": return "-mt-(--stack-overlap-md)";
35
35
  case "lg": return "-mt-(--stack-overlap-lg)";
36
36
  }
37
- switch (g.size) {
37
+ switch (_.size) {
38
38
  case "sm": return "-ml-(--stack-overlap-sm)";
39
39
  case "md": return "-ml-(--stack-overlap-md)";
40
40
  case "lg": return "-ml-(--stack-overlap-lg)";
41
41
  }
42
- }), y = t(() => g.items.slice(0, g.maxVisible)), b = t(() => Math.max(0, g.items.length - g.maxVisible));
43
- return (t, g) => (l(), n(f(o.as), { class: s([
44
- "group/stack relative isolate flex",
45
- o.direction === "vertical" ? "flex-col" : "items-center",
46
- o.reversed ? o.direction === "vertical" ? "flex-col-reverse" : "flex-row-reverse" : ""
47
- ]) }, {
48
- default: m(() => [
49
- (l(!0), i(e, null, u(y.value, (e, n) => (l(), i("div", {
50
- key: o.keyFn?.(e, n) ?? n,
51
- class: s([
52
- _.value,
53
- "relative flex items-center justify-center rounded-pill transform-gpu",
54
- "transition-[transform,box-shadow,opacity] duration-fast ease-spring-snappy",
55
- n > 0 ? v.value : "",
56
- o.expandOnHover && n > 0 ? o.direction === "vertical" ? "group-hover/stack:translate-y-1.5 group-hover/stack:scale-105" : "group-hover/stack:translate-x-1.5 group-hover/stack:scale-105" : ""
42
+ }), b = t(() => _.items.slice(0, _.maxVisible)), x = t(() => Math.max(0, _.items.length - _.maxVisible)), S = t(() => {
43
+ let e = b.value.length + +(x.value > 0);
44
+ return Math.max(1, e - 1);
45
+ });
46
+ return (t, _) => (u(), n(p(s.as), {
47
+ class: c(["stacked-icon-group group/stack relative isolate flex", [s.direction === "vertical" ? "flex-col" : "items-center", s.reversed ? s.direction === "vertical" ? "flex-col-reverse" : "flex-row-reverse" : ""]]),
48
+ "data-direction": s.direction,
49
+ style: l({ "--n": S.value })
50
+ }, {
51
+ default: h(() => [
52
+ (u(!0), i(e, null, d(b.value, (e, n) => (u(), i("div", {
53
+ key: s.keyFn?.(e, n) ?? n,
54
+ class: c([
55
+ v.value,
56
+ "stacked-icon-puck relative flex items-center justify-center rounded-pill transform-gpu",
57
+ n > 0 ? y.value : "",
58
+ s.expandOnHover && n > 0 ? "stacked-icon-puck--fan" : ""
57
59
  ]),
58
- style: c({ zIndex: y.value.length + 1 - n })
59
- }, [d(t.$slots, "icon", {
60
+ style: l({
61
+ zIndex: b.value.length + 1 - n,
62
+ "--i": n
63
+ })
64
+ }, [f(t.$slots, "icon", {
60
65
  item: e,
61
66
  index: n
62
67
  })], 6))), 128)),
63
- b.value > 0 ? (l(), i("div", {
68
+ x.value > 0 ? (u(), i("div", {
64
69
  key: 0,
65
- class: s([
66
- _.value,
67
- "relative flex items-center justify-center rounded-pill",
68
- "border-2 border-background bg-[color-mix(in_srgb,var(--background)_96%,transparent)] text-xs font-semibold text-muted-foreground/60 shadow-cartoon-sm",
69
- "transform-gpu transition-[background-color,color,transform,box-shadow] duration-fast ease-spring-snappy",
70
- "hover:bg-background hover:text-muted-foreground hover:shadow-cartoon-md",
70
+ class: c([
71
71
  v.value,
72
- o.expandOnHover ? o.direction === "vertical" ? "group-hover/stack:translate-y-1.5 group-hover/stack:scale-105" : "group-hover/stack:translate-x-1.5 group-hover/stack:scale-105" : ""
72
+ "stacked-icon-puck stacked-icon-overflow glass-capsule glass-atom",
73
+ "relative flex items-center justify-center rounded-pill text-xs font-semibold text-muted-foreground",
74
+ "transform-gpu",
75
+ y.value,
76
+ s.expandOnHover ? "stacked-icon-puck--fan" : ""
73
77
  ]),
74
- style: { zIndex: 1 }
75
- }, [d(t.$slots, "overflow", { count: b.value }, () => [a(" +" + p(b.value), 1)])], 2)) : r("", !0),
76
- b.value === 0 && t.$slots.info ? (l(), i("div", h, [d(t.$slots, "info")])) : r("", !0)
78
+ style: l({
79
+ zIndex: 1,
80
+ "--i": b.value.length
81
+ }),
82
+ "data-cast": ""
83
+ }, [_[0] ||= a("span", {
84
+ class: "cartoon-cast",
85
+ "aria-hidden": "true"
86
+ }, null, -1), f(t.$slots, "overflow", { count: x.value }, () => [o(" +" + m(x.value), 1)])], 6)) : r("", !0),
87
+ x.value === 0 && t.$slots.info ? (u(), i("div", g, [f(t.$slots, "info")])) : r("", !0)
77
88
  ]),
78
89
  _: 3
79
- }, 8, ["class"]));
90
+ }, 8, [
91
+ "class",
92
+ "data-direction",
93
+ "style"
94
+ ]));
80
95
  }
81
96
  });
82
97
  //#endregion
83
- export { g as StackedIconGroup };
98
+ export { _ as StackedIconGroup };
@@ -207,14 +207,24 @@
207
207
  /* AX.W57 (P6) — the aura breath reads its OWN element-opacity range
208
208
  (`--pulse-aura-breath-{min,max}`, 0.28↔0.42), decoupled from the
209
209
  shared `--pulse-aura-opacity-*` skeleton-shimmer stops so the halo
210
- breathes as an ambient wash, never up to the 0.95 shimmer peak. */
210
+ breathes as an ambient wash, never up to the 0.95 shimmer peak.
211
+
212
+ BC.W-GLASS-GLOW-FIX (Atlas A-8 root) — the breath SCALE is driven via the
213
+ `--pulse-aura-breath-scale` registered custom property (a `<number>`, typed
214
+ in property-regs.css so it INTERPOLATES per-frame), NOT a `transform: scale()`
215
+ on `.pulse-aura` itself. The `.pulse-aura::before` child reads the scale; the
216
+ `.pulse-aura` element stays UNSCALED at `inset:0` as the `overflow: clip`
217
+ boundary. Scaling the CHILD (clipped by the unscaled parent) is what makes the
218
+ 1.15× peak STAY inside the host box — scaling the clip element itself scaled the
219
+ clip rect too, so the radial escaped (the prior incomplete fix). The element-
220
+ opacity breath stays HERE (it does not change geometry). */
211
221
  0%,
212
222
  100% {
213
- transform: scale(var(--animate-ambient-pulse-scale-min, 1));
223
+ --pulse-aura-breath-scale: var(--animate-ambient-pulse-scale-min, 1);
214
224
  opacity: var(--pulse-aura-breath-min, 0.28);
215
225
  }
216
226
  50% {
217
- transform: scale(var(--animate-ambient-pulse-scale-max, 1.15));
227
+ --pulse-aura-breath-scale: var(--animate-ambient-pulse-scale-max, 1.15);
218
228
  opacity: var(--pulse-aura-breath-max, 0.42);
219
229
  }
220
230
  }
@@ -6,6 +6,122 @@
6
6
  * only the 5-rung glass ladder. */
7
7
 
8
8
  @layer components {
9
+ /* ── BD.W-CARD-MATERIAL-FLOOR — the card-surface warm tint-seam enrollment ──
10
+ The §4 leg-(a) material floor, reconciled to the SHIPPED `--glass-tint-*`
11
+ seam (NOT a fork, NOT a global re-tint). The card's glass/cartoon surfaces
12
+ ride the `.glass-${tier}` ladder rung, whose fill is already
13
+ `color-mix(in oklab, --glass-bg-${tier}, --glass-tint-source --glass-tint-
14
+ strength)` (ladder.css) — so the card reaches the warm floor by setting a
15
+ CARD-LOCAL non-zero `--glass-tint-strength` (the global default at
16
+ surface-axis.css:83 stays `0%`, so the 6 other seam-readers — drawer / menu /
17
+ veil / jubilance / .btn-glass / .segmented-indicator — are byte-unchanged:
18
+ the blast-radius bite). `--glass-tint-source` defaults to `var(--card)` (a
19
+ warm cream, glass-fx.css:158), so the floor is warm by construction in BOTH
20
+ modes. The card clears the warm-chroma floor (C ≥ 0.02 warm) in the MATERIAL
21
+ itself — before the field even lands, and on a dead ground (print / reduced-
22
+ transparency), the "far too gray" verdict closes at the material layer.
23
+
24
+ SCOPE — `[data-surface]` is `glass` or `cartoon` (NOT `veil`: veil owns its
25
+ own `--veil-bg` tint seam below; NOT `opaque`: the solid `--card` plate is
26
+ already warm-cream). The strength is set on the host so it inherits into the
27
+ rung's `color-mix`. This is a card-local re-point of the SHIPPED seam — DRY,
28
+ no second compositing axis, the ladder rung does the mix. */
29
+ [data-slot="card"]:where(
30
+ [data-surface="glass"],
31
+ [data-surface="cartoon"]
32
+ ) {
33
+ --glass-tint-strength: 8%;
34
+ /* BD.W-CARD-CEL-MOTION (§3.1) — the defined-edge border-ink floor. The
35
+ ladder rung's `--glass-border-resting`/`-quiet` ink is 4% warm
36
+ (glass.css:331-332) — it vanishes cream-on-cream (K3 RED). Floor the
37
+ card's own border-ink UP to ≥8% warm-ink so the cel reads as a defined
38
+ SHAPE (WCAG 1.4.11 non-text). `--glass-border-rung` is the per-rung ink
39
+ the accent-composed `--glass-border-accent` reads (ladder.css /
40
+ surfaces.css); re-pointing it card-locally floors the border WITHOUT
41
+ forking the rim (the keyed two-stop rim from `--glass-material-rim` is
42
+ CONSUMED unchanged — the card does NOT re-mint a rim). Warm (the
43
+ `--foreground` mix is warm-cream in both modes); the `.dark` ink lifts
44
+ off the near-black field through the same `--foreground` flip. */
45
+ --glass-border-rung: color-mix(in srgb, var(--foreground) 9%, transparent);
46
+ }
47
+
48
+ /* BD.W-CARD-CEL-MOTION (§3.2) — the inner catch-light over the field. A faint
49
+ `screen`-blended warm catch sits where the upper-right `--glass-key` sun
50
+ hits, lifting the cel off the field (the §3 layer-4 catch, coherent with the
51
+ rim + cast — ONE key). It rides the host `background-image` stack ALONGSIDE
52
+ the field underlayer (both are static gradients in the same longhand; the
53
+ catch is the FIRST layer so it sits over the warm underlayer), so it adds NO
54
+ pseudo (`::before` = moving specular, `::after` = grain — both occupied).
55
+ `screen` lifts only where there is light, never darkening — and it is below
56
+ content + clipped to the host radius, so it never washes the text column
57
+ (the K-AA carve). Under `prefers-contrast: more` the screen blend is dropped
58
+ (the catch is decoration, the edge is the legibility asset). */
59
+ [data-slot="card"][data-surface="glass"]:not(.paper-grid) {
60
+ background-blend-mode: screen, normal;
61
+ }
62
+ @media (prefers-contrast: more) {
63
+ [data-slot="card"][data-surface="glass"]:not(.paper-grid) {
64
+ background-blend-mode: normal;
65
+ }
66
+ }
67
+
68
+ /* ── BD.W-CARD-FIELD-FLOOR — the orphan-card static warm field underlayer ──
69
+ The §2 leg-(b) structural contract, card-local fallback. The COMMON case is
70
+ ancestor-supplied: the page mounts ONE global `[data-paper-field]` plane
71
+ (AppShell) behind every route, and the card composites over it. The ORPHAN
72
+ case is a card in an OCCLUDING context an ancestor field cannot reach (a
73
+ dialog / drawer / portal that paints its own opaque ground over the page
74
+ field) — there the card mounts its OWN cheap static warm underlayer so it is
75
+ NEVER gray-over-nothing wherever it is dropped.
76
+
77
+ MECHANISM — ONE static `radial-gradient` on the host `background-image`
78
+ longhand (the proven `.paper-grid` coexistence seam: a later
79
+ `background-image` COEXISTS with the glass tier's `background:` shorthand
80
+ fill — paints OVER the translucent color, UNDER content + UNDER both
81
+ pseudos, clipped to the host `border-radius` by construction). Zero JS, one
82
+ compositor-cached paint, PRM-static. The warm 0-alpha stops are explicit
83
+ `oklch(L C H / 0)` (NEVER bare `transparent` — the WebKit black-premultiply
84
+ hole, build-trap-(d)).
85
+
86
+ THE NO-DOUBLE-PAINT GATE (the presence-BEHIND check, NOT `closest()`): the
87
+ fallback paints ONLY when NO `[data-paper-field]` ancestor is present — `:where(
88
+ [data-paper-field]) &` switches it OFF under the global field, so a card over
89
+ the page field reads the page field (no local underlayer), and a 50-card grid
90
+ under ONE ancestor field is ONE field paint, not N. A `cartoon`/`opaque`
91
+ card already carries a defined edge + warm fill, so the orphan field is the
92
+ glass-surface case; `surface="glass"` only (the orphan glass card is the one
93
+ that reads gray-over-nothing). The `.paper-grid` document register is EXCLUDED
94
+ by selector (it sets its own grid `background-image` underlayer — a grid card
95
+ opts out of the warm-field fallback, not a `background-image: none` race). */
96
+ [data-slot="card"][data-surface="glass"]:not(.paper-grid) {
97
+ /* TWO static layers in ONE longhand (blended by the `background-blend-mode`
98
+ above — `screen, normal`): (1) the upper-right KEYED catch-light (warm,
99
+ `screen`-blended so it only LIFTS — the §3 catch), then (2) the warm cel
100
+ UNDERLAYER (one radial, amber-key toward the upper-right `--glass-key`,
101
+ the field fallback). Both fade to a warm 0-alpha — NEVER bare
102
+ `transparent` (the WebKit black-premultiply hole, build-trap-(d)). */
103
+ background-image:
104
+ radial-gradient(
105
+ 60% 55% at 80% 16%,
106
+ oklch(0.96 0.04 78 / 0.5),
107
+ oklch(0.96 0.04 78 / 0) 72%
108
+ ),
109
+ radial-gradient(
110
+ 120% 110% at 78% 22%,
111
+ oklch(0.9 0.075 72 / 0.5),
112
+ oklch(0.9 0.075 72 / 0) 70%
113
+ );
114
+ }
115
+
116
+ /* The presence-behind gate — under an ancestor field, the card reads the REAL
117
+ field (the page plane transmits through the translucent fill), so the local
118
+ fallback is switched OFF (no double paint). A 50-card grid under ONE ancestor
119
+ field is ONE field paint, not N local underlayers. */
120
+ :where([data-paper-field])
121
+ [data-slot="card"][data-surface="glass"]:not(.paper-grid) {
122
+ background-image: none;
123
+ }
124
+
9
125
  /* Paper texture overlay */
10
126
  .paper-texture {
11
127
  background-image: var(--paper-clean-texture);
@@ -28,6 +144,18 @@
28
144
  paper tier, exactly like `.paper-texture` / `cartoon-surface` /
29
145
  `veil-surface`.
30
146
 
147
+ BC.W-GRID-SIMPLE — the card-interior pitch UNIFIES onto the ONE
148
+ `--grid-*` rhythm source: `--paper-grid-texture-size` now reads
149
+ `var(--grid-pitch)` (scale-paper.css), retiring the prior 32px literal so
150
+ the demo page grid + this card interior share ONE pitch (the
151
+ two-parallel-28px/32px-systems fix). This card-interior register keeps its
152
+ OWN quieter ambient strength (`--paper-grid-opacity`), DISTINCT from the
153
+ full-bleed page-bg 3%/11% tier — a card interior reads softer than a page
154
+ wash. It is a host `background-image` only — NO `backdrop-filter`/`filter`
155
+ on this element, so the grid lines are NEVER convolved into the "blurry
156
+ mess" the page grid suffered (the de-blur discipline: the grid is the
157
+ card's own underlay, not a crisp grid read THROUGH a blurred glass plate).
158
+
31
159
  THE SEAM (the two-pseudo-budget reveal, recorded — the Triumvirate's
32
160
  through-glass-read locate-the-seam, NOT a token-α loop): a glass tier
33
161
  already claims BOTH pseudos — `::before` is the moving-specular catch-
@@ -95,6 +223,63 @@
95
223
  }
96
224
  }
97
225
 
226
+ /* ── Selection-card decoration (BC.W-SELECTION-CARD — the I5 selection card) ──────
227
+ The ONE new Atlas component, realized as a `<Card variant="selection">`
228
+ DECORATION (NOT a new SFC, NOT a new tier, NOT a new compositing seam). It
229
+ COMPOSES the two BUILT seams — the A-2 `--glass-accent` rim (glass/rim.css +
230
+ glass/material.css) + the A-3 `.metal-*-border` swept rim (utilities/metal.css)
231
+ — and authors ZERO competing rim/background recipe of its own. The rule is a
232
+ TOKEN-SUBSTITUTION on the base tier (the `.glass-opaque`/`.glass-deep` precedent):
233
+ it re-points the EXISTING `--glass-accent-strength` (+ an OPTIONAL sub-perceptual
234
+ floating-tier lift) locally; it does NOT declare a `background`/`border`.
235
+
236
+ THE RIM-NOT-FILL DISCIPLINE (the no-saturated-slab structural bar): selection is
237
+ read by (a) the metal rim (the `.metal-*-border` class Card composes when
238
+ `:selected`), (b) a BOUNDED accent-strength LIFT (unselected → selected, both ≤
239
+ the W-GLASS-ACCENT rim ceiling), and OPTIONALLY (c) a sub-perceptual
240
+ `--glass-bg-floating`-tier lift (the "selected reads as glass" register). The
241
+ plate STAYS warm-cream translucent — the BC.W-GLASS-IDENTITY floor is inviolate.
242
+ This rule NEVER writes `--glass-tint-source`/`--glass-tint-strength` (the A-2
243
+ distinct-axis fence — the accent is rim+glint DECORATION, not whole-plate
244
+ legibility) and NEVER paints a `--foreground`/`--primary`/`--surface-tint` opaque
245
+ plate FILL (the "selected = loud fill" anti-pattern is the disease-root the gate's
246
+ S3 bite reds).
247
+
248
+ THE ACCENT-STRENGTH LADDER (the bounded lift, two tokens a consumer retunes):
249
+ unselected → --selection-accent-strength (~16% — a calm rim glow)
250
+ selected → --selection-accent-strength-selected (~28% — brighter at the rim,
251
+ still ≤ the W-GLASS-ACCENT ceiling; the data hue reads stronger at
252
+ the rim/glint, NOT a flooded plate)
253
+ The host (Card.vue) writes `--glass-accent` (the HUE) per-instance off `data-hue`;
254
+ this rule supplies the STRENGTH so the calm/selected lift is ONE source. An UNSET
255
+ `data-hue` leaves `--glass-accent: transparent` (the @property default), so even
256
+ with the strength engaged the `color-mix(in oklab, X, transparent N%)` === X — the
257
+ A-2 no-op floor: a `variant="selection"` card with no `data-hue` is byte-identical
258
+ to a bare Card. A consumer may override `--glass-accent-strength` per-instance
259
+ (Card.vue's `data-hue-strength`); this rule is the default. */
260
+ [data-variant="selection"] {
261
+ /* The bounded accent-strength ladder — both ≤ the W-GLASS-ACCENT rim ceiling.
262
+ A consumer retunes the calm/selected pair from these two knobs. */
263
+ --selection-accent-strength: 16%;
264
+ --selection-accent-strength-selected: 28%;
265
+ /* Re-point the EXISTING accent-strength seam to the calm rung (the rim glow at
266
+ rest). At an unset `--glass-accent: transparent` this is a provable no-op. */
267
+ --glass-accent-strength: var(--selection-accent-strength);
268
+ }
269
+
270
+ [data-variant="selection"][data-selected="true"] {
271
+ /* SELECTED — lift the accent-strength to the brighter (still-bounded) rung. The
272
+ brighter rim + the `.metal-*-border` Card composes are the selection read; the
273
+ plate is UNTOUCHED (no background/fill here — rim-not-fill). */
274
+ --glass-accent-strength: var(--selection-accent-strength-selected);
275
+ /* OPTIONAL sub-perceptual "selected reads as glass" lift — re-point the base
276
+ tier's resting fill toward the floating rung (the W-REGISTER-IOS tier), a
277
+ TOKEN re-point, NOT a `--surface-tint` gray plate, NEVER a `--foreground`
278
+ brand fill. The plate stays warm-cream translucent (the floating rung is the
279
+ SAME warm-cream material at a heavier rung, the BC.W-GLASS-IDENTITY ladder). */
280
+ --glass-bg-resting: var(--glass-bg-floating, var(--glass-bg-resting));
281
+ }
282
+
98
283
  /* ── Cartoon surface decoration ───────────────────────────────────
99
284
  The Memphis-sticker register. Composes ON TOP of a glass tier — it is
100
285
  NOT itself a tier. The former `.glass-cartoon` recipe declared
@@ -113,13 +298,97 @@
113
298
  a card surface that often hosts portaled content; `translate: 0` at rest
114
299
  mints the stacking context once. Longhand maps `translate(x, y)` 1:1. */
115
300
  translate: 0;
301
+ position: relative;
302
+ /* BD.W-CARTOON-CASTER — the LOUD register carries `--motion-weight: 1` in the
303
+ SAME recipe (the loud-register coupling: so the punch is never accidentally
304
+ muted to ~+13.6% by inheriting the rest 0.618 — the BD.W-CARTOON-PUNCH
305
+ loud-register guard's concrete pass-subject). The press ramp ALIASES the
306
+ existing `--card-press-t` (the host's `useLiquidPress` already drives it for
307
+ every `pressable` card) — NO second press var, NO Card press-driver rewrite. */
308
+ --motion-weight: 1;
309
+ --cartoon-press-t: var(--card-press-t, 0);
116
310
  transition:
117
- translate var(--duration-normal) var(--spring-smooth),
311
+ translate var(--duration-normal) var(--ease-cartoon-punch),
312
+ scale var(--duration-normal) var(--ease-cartoon-punch),
118
313
  box-shadow var(--duration-normal) var(--ease-standard);
119
314
 
120
- &:hover:not(:disabled) {
315
+ /* BD.W-CARTOON-CASTER — the hover RE-POINTS the existing rule onto the punch
316
+ curve (was --spring-smooth) and guards `:not(:active)` so the press squash wins;
317
+ the object lifts a hair UP-RIGHT (toward the upper-right `--glass-key`) and the
318
+ cast deepens to the lg rung (the gap opens). ONE hover rule, no double-declare. */
319
+ &:hover:not(:active):not(:disabled) {
121
320
  translate: var(--lift-sm) var(--lift-sm);
321
+ /* BD.W-CARD-CEL-MOTION (§5) — the cel lifts toward the light with a
322
+ sub-perceptual VOL-PRESERVING scale (X·Y ≈ 1: 1.015 × 0.985 ≈ 1.0): the
323
+ cel rising toward its sun reads as PEELING off the field, not a flat
324
+ sticker slide. Composes the existing `scale` transition (declared above)
325
+ on the punch curve. The press squash (`scale: 1.04 0.94`) wins via
326
+ `:not(:active)`. */
327
+ scale: 1.015 0.985;
122
328
  box-shadow: var(--shadow-cartoon-lg);
329
+ & .cartoon-cast {
330
+ box-shadow: var(--shadow-cartoon-lg);
331
+ }
332
+ }
333
+
334
+ /* BD.W-CARTOON-CASTER — the press is a NON-uniform SQUASH (H5): widen X, compress
335
+ Y — real squash & stretch, NOT a uniform shrink. The CSS `:active` is the no-JS
336
+ floor; `useLiquidPress` drives `--card-press-t` 0→1 for the continuous
337
+ interruptible press the inert caster rides. */
338
+ &:active:not(:disabled) {
339
+ scale: 1.04 0.94;
340
+ }
341
+ }
342
+
343
+ /* ── BD.W-CARTOON-CASTER — the inert-child moving cel cast ───────────────────────
344
+ The cast rides an INERT `<span class="cartoon-cast" aria-hidden>` child the Card
345
+ emits when `surface="cartoon"` — NOT a `::before`/`::after` pseudo (both are
346
+ OCCUPIED on the real glass carrier: `::before` is the moving-specular catch-light,
347
+ `::after` is the grain overlay; the H2 hardening). The child is a self-contained
348
+ ink-plate the body floats above: it carries the SAME shipped `--shadow-cartoon-md`
349
+ box-shadow (set ONCE per state-flip — NEVER animated, the §L7 paint-fence) and
350
+ MOVES on the compositor via `translate`/`scale` only.
351
+
352
+ The cast travels DOWN-LEFT (opposite the upper-right `--glass-key`, coherent with
353
+ the shadow.css cel-ink geometry) as the body lifts, and SPREADS as the gap opens.
354
+ ONE scalar drive: `--cartoon-press-t × --motion-weight` (the `:root` PRM carve
355
+ zeroes `--motion-weight` → travel/spread collapse to rest). It LAGS the body
356
+ (~1.15× slower transition) → the ink recoils LATE on release (follow-through /
357
+ overlapping action). The `--cartoon-cast-dx/dy` drag-track deltas are 0 at rest
358
+ (the opt-in `useCartoonCast` DOM bridge is future — labeled honestly). */
359
+ .cartoon-cast {
360
+ position: absolute;
361
+ inset: 0;
362
+ z-index: -1; /* behind the cel face, in front of the page */
363
+ border-radius: inherit;
364
+ pointer-events: none;
365
+ box-shadow: var(--shadow-cartoon-md);
366
+ /* the derived offset + spread — read `--motion-weight × --cartoon-press-t`. The
367
+ sign is DOWN-LEFT (negative X, positive Y) to match the upper-right key. */
368
+ --cast-travel: calc(6px * var(--motion-weight) * var(--cartoon-press-t));
369
+ --cast-spread: calc(1 + 0.18 * var(--motion-weight) * var(--cartoon-press-t));
370
+ translate:
371
+ calc(-1 * var(--cast-travel) + var(--cartoon-cast-dx))
372
+ calc(var(--cast-travel) + var(--cartoon-cast-dy));
373
+ scale: var(--cast-spread);
374
+ /* the caster LAGS the body (~1.15×) → the late ink recoil on release. */
375
+ transition:
376
+ translate calc(var(--duration-normal) * 1.15) var(--ease-cartoon-punch),
377
+ scale calc(var(--duration-normal) * 1.15) var(--ease-cartoon-punch),
378
+ --cartoon-cast-dx var(--duration-normal) var(--ease-cartoon-punch),
379
+ --cartoon-cast-dy var(--duration-normal) var(--ease-cartoon-punch);
380
+ will-change: translate, scale;
381
+ }
382
+
383
+ /* BD.W-CARTOON-CASTER — PRM/PRT carve. Under reduced-motion `--motion-weight: 0`
384
+ zeroes travel/spread/squash/lag in ONE assignment (every `calc(… * --motion-weight)`
385
+ collapses to rest); the transition is killed. The static bold cel STAMP persists
386
+ (identity/legibility — only the TRAVEL/PUNCH is removed). */
387
+ @media (prefers-reduced-motion: reduce) {
388
+ .cartoon-surface,
389
+ .cartoon-cast {
390
+ --motion-weight: 0;
391
+ transition: none;
123
392
  }
124
393
  }
125
394