@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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mkbabb/glass-ui",
3
- "version": "4.0.1",
3
+ "version": "4.2.0",
4
4
  "description": "Glassmorphic design system — Vue 3.5 components, reka-ui primitives, Tailwind CSS v4 tokens",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -19,6 +19,9 @@
19
19
  "tokens": [
20
20
  "dist/tokens.d.ts"
21
21
  ],
22
+ "deck": [
23
+ "dist/deck.d.ts"
24
+ ],
22
25
  "dock": [
23
26
  "dist/dock.d.ts"
24
27
  ],
@@ -67,6 +70,9 @@
67
70
  "canvas": [
68
71
  "dist/canvas.d.ts"
69
72
  ],
73
+ "virtual": [
74
+ "dist/virtual.d.ts"
75
+ ],
70
76
  "color": [
71
77
  "dist/color.d.ts"
72
78
  ],
@@ -88,6 +94,15 @@
88
94
  "dot-flow-field": [
89
95
  "dist/dot-flow-field.d.ts"
90
96
  ],
97
+ "paper-grid": [
98
+ "dist/paper-grid.d.ts"
99
+ ],
100
+ "dot-matrix": [
101
+ "dist/dot-matrix.d.ts"
102
+ ],
103
+ "goo-dot-matrix": [
104
+ "dist/goo-dot-matrix.d.ts"
105
+ ],
91
106
  "goo-blob": [
92
107
  "dist/goo-blob.d.ts"
93
108
  ],
@@ -118,6 +133,12 @@
118
133
  "toggle-chip": [
119
134
  "dist/toggle-chip.d.ts"
120
135
  ],
136
+ "selectable-chip": [
137
+ "dist/selectable-chip.d.ts"
138
+ ],
139
+ "completion-seal": [
140
+ "dist/completion-seal.d.ts"
141
+ ],
121
142
  "spa-view": [
122
143
  "dist/spa-view.d.ts"
123
144
  ],
@@ -283,6 +304,10 @@
283
304
  "./styles/fonts": "./dist/styles/fonts.css",
284
305
  "./styles.css": "./dist/glass-ui.css",
285
306
  "./fonts/*": "./dist/fonts/*",
307
+ "./deck": {
308
+ "types": "./dist/deck.d.ts",
309
+ "import": "./dist/deck.js"
310
+ },
286
311
  "./dock": {
287
312
  "types": "./dist/dock.d.ts",
288
313
  "import": "./dist/dock.js"
@@ -347,6 +372,10 @@
347
372
  "types": "./dist/canvas.d.ts",
348
373
  "import": "./dist/canvas.js"
349
374
  },
375
+ "./virtual": {
376
+ "types": "./dist/virtual.d.ts",
377
+ "import": "./dist/virtual.js"
378
+ },
350
379
  "./color": {
351
380
  "types": "./dist/color.d.ts",
352
381
  "import": "./dist/color.js"
@@ -375,6 +404,18 @@
375
404
  "types": "./dist/dot-flow-field.d.ts",
376
405
  "import": "./dist/dot-flow-field.js"
377
406
  },
407
+ "./paper-grid": {
408
+ "types": "./dist/paper-grid.d.ts",
409
+ "import": "./dist/paper-grid.js"
410
+ },
411
+ "./dot-matrix": {
412
+ "types": "./dist/dot-matrix.d.ts",
413
+ "import": "./dist/dot-matrix.js"
414
+ },
415
+ "./goo-dot-matrix": {
416
+ "types": "./dist/goo-dot-matrix.d.ts",
417
+ "import": "./dist/goo-dot-matrix.js"
418
+ },
378
419
  "./goo-blob": {
379
420
  "types": "./dist/goo-blob.d.ts",
380
421
  "import": "./dist/goo-blob.js"
@@ -427,6 +468,14 @@
427
468
  "types": "./dist/toggle-chip.d.ts",
428
469
  "import": "./dist/toggle-chip.js"
429
470
  },
471
+ "./selectable-chip": {
472
+ "types": "./dist/selectable-chip.d.ts",
473
+ "import": "./dist/selectable-chip.js"
474
+ },
475
+ "./completion-seal": {
476
+ "types": "./dist/completion-seal.d.ts",
477
+ "import": "./dist/completion-seal.js"
478
+ },
430
479
  "./spa-view": {
431
480
  "types": "./dist/spa-view.d.ts",
432
481
  "import": "./dist/spa-view.js"
@@ -646,6 +695,7 @@
646
695
  "proof:perf-producer": "node scripts/proof-perf-producer.mjs",
647
696
  "proof:phantom-classes": "node scripts/proof-phantom-classes.mjs",
648
697
  "proof:vt-names": "node scripts/proof-vt-names.mjs",
698
+ "proof:deck": "node scripts/proof-deck.mjs",
649
699
  "proof:dock-animation-live": "node scripts/proof-dock-animation-live.mjs",
650
700
  "proof:dock-rail-cohesion": "node scripts/proof-dock-rail-cohesion.mjs",
651
701
  "proof:dock-lockstep-bornred": "node scripts/proof-dock-lockstep-bornred.mjs",
@@ -665,15 +715,19 @@
665
715
  "proof:dock-no-scale-pop": "node scripts/proof-dock-no-scale-pop.mjs",
666
716
  "proof:dock-tap-integrity": "node scripts/proof-dock-tap-integrity.mjs",
667
717
  "proof:dock-taxonomy": "node scripts/proof-dock-taxonomy.mjs",
668
- "proof:rail-extend": "node scripts/proof-rail-extend.mjs",
669
718
  "proof:dock-contextual-layers": "node scripts/proof-dock-contextual-layers.mjs",
670
719
  "proof:morph-showcase": "node scripts/proof-morph-showcase.mjs",
720
+ "proof:dock-fission": "node scripts/proof-dock-fission.mjs",
721
+ "proof:dock-gallery": "node scripts/proof-dock-gallery.mjs",
722
+ "proof:metaball-bridge2": "node scripts/proof-metaball-bridge2.mjs",
723
+ "proof:haptic-couple": "node scripts/proof-haptic.mjs",
724
+ "proof:celebration-burst": "node scripts/proof-celebration-burst.mjs",
671
725
  "proof:blob-page": "node scripts/proof-blob-page.mjs",
672
726
  "proof:blob-page-fence": "node scripts/proof-blob-page-fence.mjs",
673
727
  "proof:motion-demo": "node scripts/proof-motion-demo.mjs",
674
728
  "proof:motion2": "node scripts/proof-motion2.mjs",
675
- "proof:rail3": "node scripts/proof-rail3.mjs",
676
729
  "proof:dock-sections": "node scripts/proof-dock-sections.mjs",
730
+ "proof:dock-context": "node scripts/proof-dock-context.mjs",
677
731
  "proof:dock-morph-insitu": "node scripts/proof-dock-morph-insitu.mjs",
678
732
  "proof:shell-hold": "node scripts/proof-shell-hold.mjs",
679
733
  "proof:az-reflect": "node scripts/proof-az-reflect.mjs",
@@ -708,6 +762,7 @@
708
762
  "proof:spa-view": "node scripts/proof-spa-view.mjs",
709
763
  "proof:card-tier-alpha": "node scripts/proof-card-tier-alpha.mjs",
710
764
  "proof:dockmorph-cta": "node scripts/proof-dockmorph-cta.mjs",
765
+ "proof:bloom-up": "node scripts/proof-bloom-up.mjs",
711
766
  "proof:gpu-substrate-single": "node scripts/proof-gpu-substrate-single.mjs",
712
767
  "proof:desktop-reserve": "node scripts/proof-desktop-reserve.mjs",
713
768
  "proof:pointer-velocity": "node scripts/proof-pointer-velocity.mjs",
@@ -817,9 +872,6 @@
817
872
  "proof:constellation-tokens": "node scripts/proof-constellation-tokens.mjs",
818
873
  "proof:constellation-warp-live": "node scripts/proof-constellation-warp-live.mjs",
819
874
  "proof:constellation-egg-live": "node scripts/proof-constellation-egg-live.mjs",
820
- "proof:constellation-freeze-live": "node scripts/proof-constellation-freeze-live.mjs",
821
- "proof:fourier-field-intensity": "node scripts/proof-fourier-field-intensity.mjs",
822
- "proof:fourier-field-visibility-live": "node scripts/proof-fourier-field-visibility-live.mjs",
823
875
  "proof:constellation-refit-live": "node scripts/proof-constellation-refit-live.mjs",
824
876
  "proof:canvas2d-substrate": "vitest run tests/composables/glass/canvas2d/useCanvas2D.test.ts",
825
877
  "proof:resolve-canvas-color": "vitest run tests/composables/glass/canvas2d/resolveCanvasColor.test.ts",
@@ -855,6 +907,7 @@
855
907
  "proof:dark-material": "node scripts/proof-dark-material.mjs",
856
908
  "proof:no-gray": "node scripts/proof-no-gray.mjs",
857
909
  "proof:surface-axis": "node scripts/proof-surface-axis.mjs",
910
+ "proof:glass-foundation": "node scripts/proof-glass-foundation.mjs",
858
911
  "proof:menu-glass": "node scripts/proof-menu-glass.mjs",
859
912
  "proof:pager-ring": "node scripts/proof-pager-ring.mjs",
860
913
  "proof:icon-chip": "node scripts/proof-icon-chip.mjs",
@@ -871,7 +924,6 @@
871
924
  "proof:config-chassis": "node scripts/proof-config-chassis.mjs",
872
925
  "proof:progress-gradient": "node scripts/proof-progress-gradient.mjs",
873
926
  "proof:demo-affordances": "node scripts/proof-demo-affordances.mjs",
874
- "proof:fourier-studio": "node scripts/proof-fourier-studio.mjs",
875
927
  "proof:dark-semantic-contrast": "node scripts/proof-dark-semantic-contrast.mjs",
876
928
  "proof:glass-material-demo": "node scripts/proof-glass-material-demo.mjs",
877
929
  "proof:blob-live-truth": "node scripts/proof-blob-live-truth.mjs",
@@ -906,6 +958,85 @@
906
958
  "proof:gen-ci-fresh": "node scripts/proof-gen-ci-fresh.mjs",
907
959
  "proof:gate-manifest-sound": "node scripts/proof-gate-manifest-sound.mjs",
908
960
  "proof:ba-gestalt": "node scripts/proof-ba-gestalt.mjs",
961
+ "proof:bc-fold-ledger": "node scripts/proof-bc-fold-ledger.mjs",
962
+ "proof:observer-loop": "node scripts/proof-observer-loop.mjs",
963
+ "proof:black-bar": "node scripts/proof-black-bar.mjs",
964
+ "proof:glass-identity": "node scripts/proof-glass-identity.mjs",
965
+ "proof:adaptive-reconcile": "node scripts/proof-adaptive-reconcile.mjs",
966
+ "proof:glass-legibility": "node scripts/proof-glass-legibility.mjs",
967
+ "proof:no-shadcn-default": "node scripts/proof-no-shadcn-default.mjs",
968
+ "proof:glass-prune": "node scripts/proof-glass-prune.mjs",
969
+ "proof:selection-card": "node scripts/proof-selection-card.mjs",
970
+ "proof:dialog-glass": "node scripts/proof-dialog-glass.mjs",
971
+ "proof:glass-glow-fix": "node scripts/proof-glass-glow-fix.mjs",
972
+ "proof:accent-tone": "node scripts/proof-accent-tone.mjs",
973
+ "proof:motion-one-clock": "node scripts/proof-motion-one-clock.mjs",
974
+ "proof:spring-ease": "node scripts/proof-spring-ease.mjs",
975
+ "proof:affordance-map": "node scripts/proof-affordance-map.mjs",
976
+ "proof:tunable-anim": "node scripts/proof-tunable-anim.mjs",
977
+ "proof:split-chars": "node scripts/proof-split-chars.mjs",
978
+ "proof:motion-presets": "node scripts/proof-motion-presets.mjs",
979
+ "proof:dock-engine": "node scripts/proof-dock-engine.mjs",
980
+ "proof:dock-arbitrary": "node scripts/proof-dock-arbitrary.mjs",
981
+ "proof:dock-shrink-blur": "node scripts/proof-dock-shrink-blur.mjs",
982
+ "proof:liquid-morph": "node scripts/proof-liquid-morph.mjs",
983
+ "proof:dock-vertical-clickable": "node scripts/proof-dock-vertical-clickable.mjs",
984
+ "proof:dock-collapsed-both": "node scripts/proof-dock-collapsed-both.mjs",
985
+ "proof:dock-stack-rail": "node scripts/proof-dock-stack-rail.mjs",
986
+ "proof:dock-rail-realize": "node scripts/proof-dock-rail-realize.mjs",
987
+ "proof:dock-cockpit": "node scripts/proof-dock-cockpit.mjs",
988
+ "proof:tabs-ios": "node scripts/proof-tabs-ios.mjs",
989
+ "proof:aria-orientation": "node scripts/proof-aria-orientation.mjs",
990
+ "proof:dock-a11y": "node scripts/proof-dock-a11y.mjs",
991
+ "proof:liquid-tab": "node scripts/proof-liquid-tab.mjs",
992
+ "proof:underline-tune": "node scripts/proof-underline-tune.mjs",
993
+ "proof:virtual-window": "node scripts/proof-virtual-window.mjs",
994
+ "proof:toc-reconcile": "node scripts/proof-toc-reconcile.mjs",
995
+ "proof:fuzzy-harden": "node scripts/proof-fuzzy-harden.mjs",
996
+ "proof:customizability-census": "node scripts/proof-customizability-census.mjs",
997
+ "proof:search-custom": "node scripts/proof-search-custom.mjs",
998
+ "proof:metric-hover": "node scripts/proof-metric-hover.mjs",
999
+ "proof:fourier-decides": "node scripts/proof-fourier-decides.mjs",
1000
+ "proof:tier-class-staleness": "node scripts/proof-tier-class-staleness.mjs",
1001
+ "proof:radio-fix": "node scripts/proof-radio-fix.mjs",
1002
+ "proof:dropdown-fix": "node scripts/proof-dropdown-fix.mjs",
1003
+ "proof:control-smooth": "node scripts/proof-control-smooth.mjs",
1004
+ "proof:config-right": "node scripts/proof-config-right.mjs",
1005
+ "proof:completion-seal": "node scripts/proof-completion-seal.mjs",
1006
+ "proof:webgpu-everywhere": "node scripts/proof-webgpu-everywhere.mjs",
1007
+ "proof:safari-webgl": "node scripts/proof-safari-webgl.mjs",
1008
+ "proof:viz-interaction": "node scripts/proof-viz-interaction.mjs",
1009
+ "proof:viz-choreography": "node scripts/proof-viz-choreography.mjs",
1010
+ "proof:visual-reconcile": "node scripts/proof-visual-reconcile.mjs",
1011
+ "proof:viz-aurora": "node scripts/proof-viz-aurora.mjs",
1012
+ "proof:gooblob-plain": "node scripts/proof-gooblob-plain.mjs",
1013
+ "proof:gooblob-plain:source": "node scripts/proof-gooblob-plain.mjs --source",
1014
+ "proof:gooblob-meatball": "node scripts/proof-gooblob-meatball.mjs",
1015
+ "proof:gooblob-meatball:source": "node scripts/proof-gooblob-meatball.mjs --source",
1016
+ "proof:viz-hybrid": "node scripts/proof-viz-hybrid.mjs",
1017
+ "proof:page-prune": "node scripts/proof-page-prune.mjs",
1018
+ "proof:demo-copy-prune": "node scripts/proof-demo-copy-prune.mjs",
1019
+ "proof:page-chassis": "node scripts/proof-page-chassis.mjs",
1020
+ "proof:fourier-field": "node scripts/proof-fourier-field.mjs",
1021
+ "proof:viz-constellation": "node scripts/proof-viz-constellation.mjs",
1022
+ "proof:viz-dotflow": "node scripts/proof-viz-dotflow.mjs",
1023
+ "proof:viz-papergrid": "node scripts/proof-viz-papergrid.mjs",
1024
+ "proof:dot-matrix": "node scripts/proof-dot-matrix.mjs",
1025
+ "proof:teal-navy-purge": "node scripts/proof-teal-navy-purge.mjs",
1026
+ "proof:page-hierarchy": "node scripts/proof-page-hierarchy.mjs",
1027
+ "proof:grid-simple": "node scripts/proof-grid-simple.mjs",
1028
+ "proof:ghost-dashed": "node scripts/proof-ghost-dashed.mjs",
1029
+ "proof:hero-audacious": "node scripts/proof-hero-audacious.mjs",
1030
+ "proof:code-blocks": "node scripts/proof-code-blocks.mjs",
1031
+ "proof:separator-fix": "node scripts/proof-separator-fix.mjs",
1032
+ "proof:compositions-hero": "node scripts/proof-compositions-hero.mjs",
1033
+ "proof:expandable-part": "node scripts/proof-expandable-part.mjs",
1034
+ "proof:scroll-trigger": "node scripts/proof-scroll-trigger.mjs",
1035
+ "proof:scroll-chrome": "node scripts/proof-scroll-chrome.mjs",
1036
+ "proof:dock-search": "node scripts/proof-dock-search.mjs",
1037
+ "proof:viz-configurator-suite": "node scripts/proof-viz-configurator-suite.mjs",
1038
+ "proof:storybook-meta": "node scripts/proof-storybook-meta.mjs",
1039
+ "proof:bp-lazy": "node scripts/proof-bp-lazy.mjs",
909
1040
  "proof:visual-runner": "node scripts/proof-visual-runner.mjs",
910
1041
  "gates:verify-ci": "node scripts/gates.mjs --verify-ci",
911
1042
  "gates:emit-ci": "node scripts/gates.mjs --emit-ci",
@@ -922,7 +1053,7 @@
922
1053
  },
923
1054
  "peerDependencies": {
924
1055
  "@lucide/vue": "^1.16.0",
925
- "@mkbabb/keyframes.js": "^4.0.0",
1056
+ "@mkbabb/keyframes.js": "^5.0.0",
926
1057
  "@mkbabb/pencil-boil": "^0.4.1",
927
1058
  "@mkbabb/value.js": "^0.13.0 || ^1.0.0",
928
1059
  "@vueuse/core": "^14.0",
@@ -960,7 +1091,7 @@
960
1091
  },
961
1092
  "devDependencies": {
962
1093
  "@lucide/vue": "^1.20.0",
963
- "@mkbabb/keyframes.js": "^4.3.0",
1094
+ "@mkbabb/keyframes.js": "^5.1.0",
964
1095
  "@mkbabb/pencil-boil": "^0.4.1",
965
1096
  "@mkbabb/value.js": "^0.13.0 || ^1.0.0",
966
1097
  "@tailwindcss/postcss": "^4.3.1",
@@ -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