@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
@@ -55,7 +55,22 @@
55
55
  tier's own shadow recipe. The `::after` grain overlay already claims the
56
56
  five rungs' `::after`; the rim is folded INTO that same overlay's
57
57
  box-shadow below (the grain `::after` gets the rim inset ring) so no
58
- pseudo-element collides. */
58
+ pseudo-element collides.
59
+
60
+ ── BE.W5 — `--glass-edge-light` IS A WHOLE BOX-SHADOW LAYER, NEVER A COLOR ──
61
+ `--glass-edge-light` resolves to a COMPLETE box-shadow layer (the token is
62
+ `inset 0 0 0 0.75px hsl(0 0% 100% / 0.18)` — geometry + color, glass-fx.css:70;
63
+ the `.dark` arm re-points it to `--glass-edge-light-dark`). It is consumed as a
64
+ WHOLE LAYER inside a `box-shadow:` list — `box-shadow: var(--glass-edge-light),
65
+ <other layers>` (surfaces.css:203/371, stack-rail.css:176). The MISUSE is
66
+ NESTING it as a COLOR inside another shadow — `inset 0 0 0 1px
67
+ var(--glass-edge-light)` — which expands to `inset 0 0 0 1px inset 0 0 0 0.75px
68
+ hsl(…)`: an INVALID shadow value → the WHOLE `box-shadow` declaration DROPS →
69
+ NO rim, NO drop-shadow (worst in dark, where the rim is the silhouette device).
70
+ THE RULE: read `--glass-edge-light` as a whole `box-shadow` layer, NEVER nested
71
+ inside another shadow's geometry. To compose the rim's COLOR (e.g. accent-tint
72
+ it) use `--glass-rim-ink`/`--glass-material-rim` (rim.css — the COLOR seam),
73
+ NOT `--glass-edge-light` (the LAYER token). */
59
74
 
60
75
  /* (a)+(c) The moving-specular `::before` catch-light — the iOS-26
61
76
  illuminate-from-within behaviour. A masked radial-gradient glow rides the
@@ -298,4 +313,58 @@
298
313
  press-depth animation is the deliberate tradeoff. The press squish + gleam lift on
299
314
  the SAME `--glass-btn-press-t` drive (material gleam, above) carry the press read. */
300
315
 
316
+ /* ── BE.W-CLEAR-VARIANT — the Apple-Clear `surface="clear"` decoration + the
317
+ MANDATORY legibility scrim ──────────────────────────────────────────────────
318
+ The 4th surface-axis member (`useSurfaceAxis.ts` maps `clear → glass-clear`).
319
+ A `surface="clear"` surface paints the maximally-translucent `--glass-bg-clear`
320
+ (0.58 — the clearest rung the library ships, the album grid bleeds through) AND
321
+ a MANDATORY legibility scrim IN THE SAME SEAM — a `.glass-clear` cannot exist
322
+ without it (the Apple Clear contract: near-transparent → the text needs a scrim
323
+ floor). The scrim DIMS THE BACKDROP (`color-mix(in srgb, var(--background) N%,
324
+ transparent)` — the A5-1 modal-scrim idiom, painted BEHIND the translucent fill
325
+ within the box, see the two-layer-background note below), DISTINCT from the W55
326
+ `--glass-tint-*` PLATE-darken axis (the two legibility axes stay disjoint: the
327
+ scrim dims the backdrop, the W55 tint darkens the plate). The scrim strength
328
+ DERIVES from the sampled
329
+ `--glass-backdrop-luma` (useGlassBackdropLuminance's existing write) so it dims
330
+ MORE over a bright album grid (luma→1) and relaxes over a dark one (luma→0) —
331
+ the dynamic legibility that betters Apple's fixed scrim. The `0.5` fallback is
332
+ the safe mid-scrim when no observer is wired. The plate fill rides the SAME
333
+ oklab-tint seam so the W55 darken reaches it; the see-through frost is the
334
+ cross-engine FLOOR (pure opacity + backdrop-filter, no `url()` — Safari paints
335
+ it via the build-time -webkit- prefix pass). The scrim is a STATIC paint (no
336
+ layout, no animation — `proof:no-layout-animation` GREEN by construction).
337
+
338
+ THE SCRIM IS A SECOND BACKGROUND LAYER, NOT A PSEUDO. The glass family already
339
+ claims BOTH pseudos on every base rung — `::before` (the moving specular core)
340
+ AND `::after` (the grain overlay, ladder.css). `surface="clear"` composes ON a
341
+ base tier (`glass-floating glass-clear`), so its `::before`/`::after` are taken;
342
+ a scrim pseudo would CLOBBER the specular or grain. The mandatory scrim is
343
+ therefore the FIRST of two comma-separated `background` LAYERS — painted FRONT
344
+ (the translucent glass fill) over BACK (the `--background` dim) within the box,
345
+ so the dim sits between the backdrop-filtered backdrop and the content (a child
346
+ paints above both). The fill stays translucent so the backdrop still reads
347
+ THROUGH the dim — see-through AND legible, one element, no pseudo collision. */
348
+ [data-surface="clear"],
349
+ .glass-clear {
350
+ /* The dynamic scrim strength — DERIVED from the sampled backdrop luma
351
+ (dims MORE over a bright grid). `0.5` is the safe mid-scrim fallback. */
352
+ --glass-clear-scrim-strength: calc(
353
+ var(--glass-backdrop-luma, 0.5) * 40%
354
+ );
355
+ background:
356
+ color-mix(
357
+ in oklab,
358
+ var(--glass-bg-clear),
359
+ var(--glass-tint-source) var(--glass-tint-strength)
360
+ ),
361
+ color-mix(
362
+ in srgb,
363
+ var(--background) var(--glass-clear-scrim-strength),
364
+ transparent
365
+ );
366
+ backdrop-filter: var(--glass-blur-floating);
367
+ position: relative;
368
+ }
369
+
301
370
  }
@@ -45,6 +45,19 @@
45
45
  clocks read the shared spring tokens (read-only — the W-GLASS-CAL fence). */
46
46
  --glass-reveal-blur: 4px;
47
47
  --glass-reveal-slide: 0.5rem;
48
+ /* The materialize squish — the surface blooms FROM 0.88 (a clear squish-grow,
49
+ the Control-Center round-toggle reference), not the near-no-op 0.95. The
50
+ authority lives here; the closed/exit leg reads it with a 0.88 fallback.
51
+ BD.W-ANIM-IOS27-TUNE */
52
+ --glass-reveal-enter-scale: 0.88;
53
+ /* The SQUISH channel — the same volume-preserving born-wide+flat squish the
54
+ universal `.liquid-enter` mount recipe speaks (ONE grammar, no fork). The
55
+ closed leg rides it on the `scale:` LONGHAND (vol-preserving sx·sy ≈ 1),
56
+ settling to `1 1` at open; the bloom-from-small grace is the coupled
57
+ scale-down (--glass-reveal-enter-scale) × this squish, never a separate
58
+ transform: shorthand (which would clobber a centering transform). */
59
+ --lq-stretch-x: 1.06;
60
+ --lq-stretch-y: 0.945;
48
61
  transform-origin: var(--reka-popper-transform-origin, center);
49
62
  /* The coupled transition list — the SPATIAL legs (scale/translate) on the
50
63
  snappy spring's OWN settle clock, the EFFECTS legs (opacity/filter blur-
@@ -67,7 +80,7 @@
67
80
  from its edge) — the BASE never writes `translate`, so a center-anchored Dialog
68
81
  keeping its `-translate-x-1/2 -translate-y-1/2` centering is NEVER clobbered. */
69
82
  .glass-reveal[data-state="open"] {
70
- scale: 1;
83
+ scale: 1 1;
71
84
  opacity: 1;
72
85
  filter: blur(0);
73
86
  }
@@ -77,7 +90,14 @@
77
90
  past gone, the §6/W-MOTION-CANON P2 doctrine); NO `--spring-*` token on the
78
91
  exit. The exit is faster + un-sprung — the surface recedes cleanly. */
79
92
  .glass-reveal[data-state="closed"] {
80
- scale: var(--glass-reveal-enter-scale, 0.95);
93
+ /* Born wide+flat AND bloom-from-small: the SQUISH (--lq-stretch-x/-y,
94
+ vol-preserving) couples with the bloom-from-0.88 on the SAME `scale:`
95
+ LONGHAND (two factors, ONE longhand — never a second transform: shorthand
96
+ that would clobber a Dialog's centering translate). The deform stays
97
+ anisotropic (the long axis swells AS it blooms, the short pinches);
98
+ it settles to `1 1` at open. */
99
+ scale: calc(var(--glass-reveal-enter-scale, 0.88) * var(--lq-stretch-x, 1.06))
100
+ calc(var(--glass-reveal-enter-scale, 0.88) * var(--lq-stretch-y, 0.945));
81
101
  opacity: 0;
82
102
  filter: blur(var(--glass-reveal-blur));
83
103
  transition-timing-function: var(--ease-out);
@@ -67,12 +67,32 @@
67
67
  .glass-card,
68
68
  .glass-specular-track,
69
69
  .dock-icon-button {
70
- /* the resolved rim ring INK (white-α light / lifted-white-α dark — the
71
- SAME stop the `--glass-edge-light` token carries; the `.dark` arm below
72
- re-points it). The accent mixes ONTO this ink. */
73
- --glass-rim-ink: hsl(0 0% 100% / 0.18);
74
- --glass-material-rim: inset 0 0 0 0.75px
75
- color-mix(in oklab, var(--glass-rim-ink), var(--glass-accent) var(--glass-accent-strength));
70
+ /* BC.W-BLACK-BAR D2 — the rim ring is now DIRECTIONAL: the top catch-light
71
+ (`--glass-rim-top`, glass-fx.css) carries the white-α ink the old
72
+ omnidirectional ring carried (0.30 light / 0.40 dark — the dark arm
73
+ re-points it via dark-arm.css), and the bottom under-shadow
74
+ (`--glass-rim-bottom`) grounds the plate. The accent (BB.W-GLASS-ACCENT)
75
+ still mixes ONTO the top catch-light ink so the chromatic rim reads on the
76
+ lit edge; at 0% strength the mix resolves byte-identical to the bare
77
+ `--glass-rim-top`. `--glass-rim-ink` is the resolved top-ink stop (kept as
78
+ the accent-compose seam — the `.dark` arm below re-points it). */
79
+ --glass-rim-ink: hsl(0 0% 100% / 0.30);
80
+ /* BD.W-GLASS-KEY-EDGE — the LIT catch is now KEY-DRIVEN: the accent-mixed
81
+ catch-light rides the key-facing edges (`--glass-key-lit-y` top +
82
+ `--glass-key-lit-x` side, the upper-right cel key) so the accent reads on
83
+ the LIT edge that agrees with the cartoon cast's light source — not a flat
84
+ top-only halo. The side stop carries the same accent-mixed ink at the rim's
85
+ own 0.18-class weight (via `--glass-rim-ink`-derived mix). The SHADE half is
86
+ the key-driven `--glass-rim-bottom` two-stop under-shadow. At 0% accent
87
+ strength the mix resolves byte-compatible to the bare key-driven rim (the W2
88
+ no-op floor). The moving-specular `::before` catch-light + the grain
89
+ `::after` are UNTOUCHED (both occupied). */
90
+ --glass-material-rim:
91
+ inset 0 var(--glass-key-lit-y) 0
92
+ color-mix(in oklab, var(--glass-rim-ink), var(--glass-accent) var(--glass-accent-strength)),
93
+ inset var(--glass-key-lit-x) 0 0
94
+ color-mix(in oklab, hsl(0 0% 100% / 0.18), var(--glass-accent) var(--glass-accent-strength)),
95
+ var(--glass-rim-bottom);
76
96
  /* the per-rung border ink, accent-composed. `--glass-border-rung` is set by
77
97
  each rung at its own declaration (it reads the rung's `--glass-border-*`
78
98
  token); the accent mixes onto it so the BORDER half of the rim carries the
@@ -92,9 +112,11 @@
92
112
  .dark .glass-card,
93
113
  .dark .glass-specular-track,
94
114
  .dark .dock-icon-button {
95
- /* the dark rim ink is the lifted-α base (`--glass-edge-light-dark` stop) so
96
- the accent composes off the dark silhouette device (W-DARK-MATERIAL). */
97
- --glass-rim-ink: hsl(0 0% 100% / 0.22);
115
+ /* BC.W-BLACK-BAR D2 — the dark top catch-light ink is the lifted 0.40 stop
116
+ (mirroring the dark `--glass-rim-top`, dark-arm.css) so the accent composes
117
+ off the dark silhouette device (W-DARK-MATERIAL): dark glass needs a
118
+ brighter rim to read over the deep canvas. */
119
+ --glass-rim-ink: hsl(0 0% 100% / 0.40);
98
120
  }
99
121
 
100
122
  }
@@ -209,6 +209,22 @@
209
209
  --glass-specular-intensity-hover: var(--glass-specular-btn-hover);
210
210
  }
211
211
 
212
+ /* BC.W-BUTTON-GLASS-IOS (move 2 / BG-IOS-2) — the hero CTA reaches DEEP glass.
213
+ `.btn-glass` reads `--glass-blur-btn` (not `--glass-blur-floating`), so the bare
214
+ `.glass-deep` axis (which re-points `--glass-blur-floating`) does not deepen a
215
+ button. This arm re-points `--glass-blur-btn` onto the deep family — the SAME
216
+ token-substitution model `.glass-deep` uses (glass/deep.css), composing the ONE
217
+ deep axis, NOT a new blur recipe. So a `default`/`primary-audacious` hero CTA
218
+ reads the apple.com-nav-grade thick refractive liquid glass (16px / saturate 1.5
219
+ family, `--glass-blur-deep`), while the plain content tiers + the quieter
220
+ `outline`/`secondary`/`accent` glass buttons stay calm at the floating-tier
221
+ `--glass-blur-btn`. The deep BLUR is budget-FREE (the W-LENSING budget binds the
222
+ `:liquid` SVG lens, not the deep-blur tier). The a11y `--glass-level:0` brackets
223
+ reach it for free (the deep blur composes `--glass-level`, the opaque-escape path). */
224
+ .btn-glass.glass-deep {
225
+ --glass-blur-btn: var(--glass-blur-deep);
226
+ }
227
+
212
228
  /* The depth deepens one rung on hover (the lifted-lozenge read) — additive over
213
229
  the variant's own hover surface legs. The variants paint the bg/border on
214
230
  hover; this adds the deeper drop. */
@@ -216,6 +232,29 @@
216
232
  box-shadow: var(--glass-btn-rim), var(--glass-btn-under-shadow-hover);
217
233
  }
218
234
 
235
+ /* BC.W-BUTTON-GLASS-IOS (move 3 / BG-IOS-4) — the press is COUPLED (W-MOTION-CANON
236
+ P3): the ONE `--glass-btn-press-t` 0..1 spring drive (Button.vue writes it off
237
+ `useSpringPress`) feeds BOTH the squish (the `useLiquidFlex` reciprocal X/Y deform,
238
+ Button.vue) AND a SPECULAR brightness leg here — the touch-ILLUMINATION (apple-
239
+ ios27.md §2.5 ".interactive() → scale + bounce + shimmer + touch-illumination").
240
+ During the press the button's specular tracks the SPRING (not the binary `:active`
241
+ toggle material.css sets): `--specular-intensity` LERPs from the hover gleam toward
242
+ the active gleam as `--glass-btn-press-t` travels, so the gleam ILLUMINATES on the
243
+ SAME spring scalar as the squish (the glass reads as DEFORMING-AND-BRIGHTENING with
244
+ the spring's alive overshoot, not a uniform shrink). It reads the EXISTING
245
+ `--glass-specular-intensity-{hover,active}` cohort (property-regs.css) — no new
246
+ token, ONE drive two legs. Specificity ties material's `.glass-wash:active::before`
247
+ (0,2,1) and wins by source-order-after (surfaces.css @import-s after material.css),
248
+ so the button press follows the spring; the hover gleam + the no-JS `:active` floor
249
+ are untouched. */
250
+ .btn-glass:active::before {
251
+ --specular-intensity: calc(
252
+ var(--glass-specular-intensity-hover) +
253
+ (var(--glass-specular-intensity-active) - var(--glass-specular-intensity-hover)) *
254
+ var(--glass-btn-press-t)
255
+ );
256
+ }
257
+
219
258
  /* BB.W-BUTTON-GLASS (a) — the ELEMENT-LEVEL oklab-tinted hover/active fill pair
220
259
  (the substitution-vs-inheritance trap fixed on the button register). The glass
221
260
  button variants painted `hover:bg-(--glass-bg-resting) active:bg-(--glass-bg-
@@ -232,15 +271,32 @@
232
271
  to AA in lockstep with the rest bg. The `:root` raw `--glass-bg-*` tokens are
233
272
  UNTOUCHED (other surfaces compose them at the element correctly — the raw token +
234
273
  the element-level oklab wrapper is the correct ladder shape). */
235
- .btn-glass {
236
- --glass-bg-resting-tinted: color-mix(
274
+ /* BC.W-TABS-IOS — the tinted-FLOATING seam lifted off the `.btn-glass`-only scope
275
+ onto a SHARED `:where()` so the iOS-27 segmented-control active pill reads the
276
+ SAME element-level oklab-tint floating fill the glass button reads (the
277
+ substitution-over-redeclaration discipline: ONE tinted-floating source, NOT a
278
+ tab-local fork). The pill's active plate now reaches the W55 darken-over-bright
279
+ seam — over a bright field the pill darkens-to-legible, over a calm field it
280
+ stays warm-cream/near-white (the iOS adaptive register reaching the pill).
281
+ ZERO-delta at the `--glass-tint-strength: 0%`/floor default. */
282
+ :where(.btn-glass, .segmented-indicator, .glass-capsule) {
283
+ --glass-bg-floating-tinted: color-mix(
237
284
  in oklab,
238
- var(--glass-bg-resting),
285
+ var(--glass-bg-floating),
239
286
  var(--glass-tint-source) var(--glass-tint-strength)
240
287
  );
241
- --glass-bg-floating-tinted: color-mix(
288
+ }
289
+ .btn-glass {
290
+ /* BC.W-BUTTON-GLASS-IOS (BG-IOS-6) — the `quiet` rung gains the SAME element-
291
+ level oklab-tint wrapper so the de-shadcn `outline`/`secondary` reskin (the
292
+ QUIETER glass register, prominence-by-tint) reaches the W55 darken on its lit
293
+ fill too — ZERO new compositing axis, the SAME seam the resting/floating pair
294
+ composes. The floating rung is minted on the shared `:where()` seam ABOVE
295
+ (the tab pill reads it too); the quiet rung stays button-scoped (the
296
+ hover/active fill register the segmented pill does not engage). */
297
+ --glass-bg-quiet-tinted: color-mix(
242
298
  in oklab,
243
- var(--glass-bg-floating),
299
+ var(--glass-bg-quiet),
244
300
  var(--glass-tint-source) var(--glass-tint-strength)
245
301
  );
246
302
  }
@@ -278,150 +334,10 @@
278
334
  --glass-btn-press-t: 0;
279
335
  }
280
336
 
281
- /* ── Pill input ───────────────────────────────── */
282
- .input-pill {
283
- @apply flex w-full;
284
-
285
- /* AX.W51 D18 — the input pill rides the ONE `--ui-scale` comfort axis: the
286
- height reads the `--control-h-md` cohort (`max(calc(2.5rem * --ui-scale),
287
- --control-floor)`, the h-10 register with the WCAG-44px coarse clamp), the
288
- font reads `--control-text`, the inline padding scales — so ONE override
289
- grows the field's height + padding + font in lockstep. Desktop default is
290
- the identity. */
291
- height: var(--control-h-md);
292
- border-radius: var(--radius-pill);
293
- /* AW.W13 — the resting field edge reads as an enclosed control at rest
294
- (~15%α — ~2× the prior 8% glass-wash floor that vanished on cream). The
295
- `:focus-visible` accent ring + the `:user-invalid`/`[aria-invalid]`
296
- destructive ring below still win by order + specificity.
297
- AX.W54 — moved off the srgb `--surface-tint-15` fork onto the glass
298
- border seam so the pill is ONE glass model with the rest of the ladder.
299
- BA.W-SURFACE-AXIS scope 7 — re-pointed onto the SHARED `--control-surface-*`
300
- REST register so Input/Textarea/NumberField/Select/Combobox/TagsInput are
301
- ONE material at rest (the input rung was the warmer of the two; Select rode
302
- the `glass-wash` gray — the no-gray control-family seam). The register reads
303
- the same `--glass-*` ladder, so `--glass-level`/the W55 bright bucket retune
304
- the whole form family in lockstep (--control-surface-border defaults to the
305
- `--glass-border-floating` 15%α rung, --control-surface-bg to `--glass-bg-quiet`,
306
- --control-surface-blur to `--glass-blur-quiet`). */
307
- border: 1.5px solid var(--control-surface-border);
308
- background: var(--control-surface-bg);
309
- /* The control's REAL glass blur — the shared register's quiet-tier radius
310
- (the same `--control-surface-blur` pairs with `--control-surface-bg`); the
311
- `--glass-level` knob clarifies it in lockstep with every surface. */
312
- backdrop-filter: var(--control-surface-blur);
313
- padding: 0 calc(1rem * var(--ui-scale));
314
- font-size: var(--control-text);
315
- color: var(--foreground);
316
- transition:
317
- background-color var(--duration-fast) var(--ease-standard),
318
- border-color var(--duration-fast) var(--ease-standard),
319
- box-shadow var(--duration-fast) var(--ease-standard),
320
- color var(--duration-fast) var(--ease-standard),
321
- opacity var(--duration-fast) var(--ease-standard);
322
- }
323
-
324
- .input-pill::placeholder {
325
- color: var(--surface-tint-35);
326
- }
327
-
328
- /* BA.W-SURFACE-AXIS scope 7 — the shared control REST surface class. The
329
- NON-pill control families (the Select trigger, the TagsInput root) that do
330
- NOT compose `.input-pill` but want the SAME resting material read this — so
331
- the whole form band is ONE register at rest (the Select default rode the
332
- lighter `glass-wash` gray before; this is the no-gray control-family seam).
333
- It carries the bg/border/blur ONLY (each control owns its own height/radius/
334
- padding/font), so a non-pill control composes `.control-surface` + its own
335
- geometry. The hover lift brightens the fill one step toward the resting rung. */
336
- .control-surface {
337
- background: var(--control-surface-bg);
338
- border: 1px solid var(--control-surface-border);
339
- backdrop-filter: var(--control-surface-blur);
340
- -webkit-backdrop-filter: var(--control-surface-blur);
341
- }
342
- .control-surface:hover:not(:disabled, [data-disabled]) {
343
- background: var(--control-surface-bg-hover);
344
- }
345
-
346
- /* AQ.W4 §W4.6 — keyboard-focus ring only. Was bare `:focus` (showed the
347
- accent ring on a mouse click); `:focus-visible` matches the
348
- `.focus-ring` / `.glass-btn` / dock-control discipline. Ordered BEFORE
349
- the `:user-invalid` rungs so an invalid focused field shows destructive,
350
- not accent (the `:user-invalid:focus-visible` rule below wins by order +
351
- specificity). `:focus-visible` Baseline Widely — no fallback. */
352
- .input-pill:focus-visible {
353
- outline: none;
354
- border-color: var(--color-accent-opaque, var(--ring));
355
- box-shadow: 0 0 0 2px var(--color-accent, color-mix(in srgb, var(--ring) 30%, transparent));
356
- }
357
-
358
- /* AQ.W4 §W4.1 — validity vocabulary on `.input-pill` (Input + Textarea).
359
- The forgiving `:where(:user-invalid, .user-invalid-fallback,
360
- [aria-invalid="true"])` group is ONE rule covering THREE trigger surfaces:
361
- native constraint-validation (`:user-invalid`), the `useUserInvalidAria`
362
- fallback class for engines without `:user-invalid` (css §3.2; NOT a
363
- live+dead alias — the class is the SOLE fallback), AND (AW.W18) the
364
- imperative `[aria-invalid="true"]` attribute. The `[aria-invalid]` arm
365
- serves APP-DRIVEN validity — a custom key match, an async server check —
366
- where there is no native constraint to trip `:user-invalid`, so the app
367
- sets the ARIA attribute and the library's own ring paints with no
368
- `:deep()` re-paint at the consumer. The destructive/success tints reuse
369
- the semantic tokens via `color-mix` per the house pattern (W2). Non-color
370
- reinforcement is the error TEXT (W4.5 `error` slot) + the `required`
371
- asterisk — the border/bg shift is the supplementary cue, never the sole
372
- one. `:user-valid` is intentionally subtle (border only, no bg fill) so
373
- a long valid form is not a wall of green. */
374
- .input-pill:where(:user-invalid, .user-invalid-fallback, [aria-invalid="true"]) {
375
- border-color: var(--destructive);
376
- background: color-mix(in srgb, var(--destructive) 8%, var(--glass-bg-quiet));
377
- }
378
- .input-pill:where(:user-valid, .user-valid-fallback) {
379
- border-color: var(--success);
380
- }
381
- /* Invalid + keyboard-focused → destructive ring (overrides the accent
382
- `:focus-visible` ring above by order + the extra invalid compound). The
383
- `[aria-invalid]` arm rides the same widened group so an app-driven
384
- invalid field shows the destructive ring on focus too. */
385
- .input-pill:where(:user-invalid, .user-invalid-fallback, [aria-invalid="true"]):focus-visible {
386
- border-color: var(--destructive);
387
- /* BB.W-INVALID-RING — the shared destructive ring register (the
388
- --focus-ring-shadow sibling). The byte-identical recipe is now ONE
389
- token; the `8%` at-rest bg arm above stays `.input-pill`-local (a
390
- glass-tint substrate the bare-ring surfaces do not carry). */
391
- box-shadow: var(--invalid-ring);
392
- }
393
-
394
- /* AQ.W4 §W4.3 — `field-sizing: content` autosize (opt-in via the Textarea
395
- `autosize` prop → `[data-autosize]`). The textarea grows vertically with
396
- content between a 3-line floor and a token-driven ceiling, then scrolls.
397
- `field-sizing` Baseline Newly (Chromium 2024) — on a non-supporting
398
- engine the declaration is ignored and the element keeps the
399
- `min/max-block-size` bounds + standard scroll (no JS, no `@supports`,
400
- no grid-mirror polyfill). The fixed-size path (default, `min-h-20`) is
401
- the unchanged no-op fallback. */
402
- .input-pill[data-autosize] {
403
- field-sizing: content;
404
- width: 100%;
405
- min-block-size: 3lh;
406
- max-block-size: var(--textarea-autosize-max, 12lh);
407
- resize: vertical;
408
- }
409
-
410
- .input-pill:disabled {
411
- opacity: 0.5;
412
- cursor: not-allowed;
413
- }
414
-
415
- /* AW.W13 — the Select trigger mirrors the input pill's resting border lift.
416
- The reka-ui SelectTrigger renders `role="combobox"` over the `.glass-wash`
417
- surface; its 8%α `--glass-border-wash` field edge vanished on cream just
418
- like the input pill, so the same `--surface-tint-15` lift makes the
419
- trigger read as an enclosed control at rest. Scoped to the combobox role
420
- so the lift reaches ONLY the Select trigger, not every `.glass-wash`
421
- surface. */
422
- .glass-wash[role="combobox"] {
423
- border-color: var(--surface-tint-15);
424
- }
337
+ /* The .input-pill / .control-surface form-control REST register is carved into
338
+ glass/control-surfaces.css (a cohesive sub-concern, the no-god-module re-drain)
339
+ — @import-ed by glass.css IMMEDIATELY AFTER surfaces.css, same @layer components,
340
+ same source order (byte-isomorphic). */
425
341
 
426
342
  /* ── BA.W-PAGER — the glass pager pill chassis (.glass-pager-ring) ──────────
427
343
  The ONE pager-CHASSIS ring register: a `--radius-pill` glass-floating pill
@@ -443,7 +359,22 @@
443
359
  padding-inline: 0.625rem;
444
360
  padding-block: 0.3125rem;
445
361
  border-radius: var(--radius-pill);
446
- background: var(--glass-bg-floating);
362
+ /* BD.W-GOO-CAROUSEL-DECK — the element-level oklab TINT seam (NOT the raw
363
+ pre-substituted `--glass-bg-floating` :root token — the gray-hole
364
+ substitution-trap). At the `--glass-tint-strength: 0%` default this is the
365
+ no-op floor (`color-mix(in oklab, X, src 0%) ≡ X` — byte-identical pager pixels
366
+ over a flat page); over a declared/sampled BRIGHT carousel image
367
+ (`@container style(--glass-backdrop: light)`) the pill darkens-toward-ink for a
368
+ real silhouette (the W55 ≤24% clamp keeps it translucent); under `.dark` the
369
+ W-DARK-MATERIAL tint arm LIFTS it toward luminous warm-dark, never a charcoal
370
+ slab. `in oklab` is the glass-tint perceptual family (the in-srgb
371
+ `--surface-tint-*` brand fence is untouched). The dock `--glass-bg-dock`
372
+ self-re-point precedent applied to the pager chassis. */
373
+ background: color-mix(
374
+ in oklab,
375
+ var(--glass-bg-floating),
376
+ var(--glass-tint-source) var(--glass-tint-strength)
377
+ );
447
378
  backdrop-filter: var(--glass-blur-floating);
448
379
  -webkit-backdrop-filter: var(--glass-blur-floating);
449
380
  box-shadow:
@@ -46,10 +46,31 @@
46
46
  squircle + a11y @supports overrides, which must stay last): */
47
47
  @import "./glass/material.css";
48
48
  @import "./glass/ladder.css";
49
+ /* BC.W-ACCENT-TONE — the contrast-floored 3-channel tonal-accent register
50
+ (.accent-tone: one --tone → idle/active/edge/ink). AFTER ladder.css (reads the
51
+ warm-cream --card surface the ladder mints); the SOLE writer of the --accent-*
52
+ channels, so the placement is cascade-order-invariant. */
53
+ @import "./glass/accent-tone.css";
49
54
  @import "./glass/rim.css";
50
55
  @import "./glass/surfaces.css";
56
+ /* BC.W-CARVE6 — the .input-pill / .control-surface form-control REST register
57
+ carved out of surfaces.css to hold the 500-line bound, @import-ed IMMEDIATELY
58
+ AFTER surfaces.css and BEFORE surface-axis.css (same @layer components, same
59
+ source order — the dist is byte-isomorphic). */
60
+ @import "./glass/control-surfaces.css";
61
+ /* BD.W-TAB-IOS-CAPSULE — the ONE shared glassy register (`.glass-capsule` +
62
+ `.glass-capsule-track` + `.glass-capsule-hover`) the tabs/dock-tab/buttons/chips/
63
+ cards consumers compose. @import-ed AFTER surfaces.css (so the `--glass-bg-floating-
64
+ tinted` seam + the `--glass-rim-*`/`--glass-shadow-floating` tokens resolve) and
65
+ BEFORE the consuming recipes (segmented-tabs.css et al, imported by index.css). */
66
+ @import "./glass/glass-capsule.css";
51
67
  @import "./glass/surface-axis.css";
52
68
  @import "./glass/reveal.css";
69
+ /* BD.W-LIQUID-ENTRANCE-GENERAL — the UNIVERSAL `.liquid-enter` mount recipe
70
+ (the four coupled channels as @keyframes-on-mount + the `.is-cel` cel-slam + the
71
+ lagging cartoon cast). @import-ed AFTER reveal.css (it extends the same
72
+ `--lq-enter-*` channel substrate the `.glass-reveal` TRANSITION floor speaks). */
73
+ @import "./glass/liquid-enter.css";
53
74
  @import "./glass/deep.css";
54
75
  @import "./glass/progress-rail.css";
55
76
  @import "./glass/squircle.css";
@@ -27,6 +27,22 @@
27
27
  * --spring-snappy/--spring-smooth registers), no longer the fixed bezier.
28
28
  */
29
29
 
30
+ /* BD.W-GLASS-ATOM-REGISTER — the shared `.glass-atom` warm-glass register the
31
+ small atoms (Badge-glass / metric-badge / slider fill / the `+N` chip) consume.
32
+ @import-ed HERE (icon-chip.css loads in index.css AFTER glass.css, so
33
+ `.glass-capsule` + the `--glass-*` axes are defined) — a consume-only recipe,
34
+ not a second material. CSS `@import` must precede every rule, so it leads the
35
+ file (the comment above is not a rule). */
36
+ @import "./glass/glass-atom.css";
37
+ /* BD.W-CHIP-CONGRUENT-GLASS — the chip family's warm-glass toggle register
38
+ (.glass-chip: the stadium-pill lens + the de-frauded colour-flood punch the
39
+ ToggleChip/SelectableChip/toggle-group children compose). @import-ed HERE
40
+ alongside glass-atom.css (icon-chip.css loads in index.css AFTER glass.css, so
41
+ `.glass-capsule` + `.accent-tone` + the `--glass-*` axes resolve) — a consume-
42
+ only recipe, not a second material. CSS `@import` must precede every rule, so it
43
+ leads with the atom import. */
44
+ @import "./glass/glass-chip.css";
45
+
30
46
  :root {
31
47
  /* The chip≤glyph proportion (d2, structural). The diameter floors at
32
48
  `glyph × ratio` so the plate can NEVER paint under the glyph — a
@@ -110,6 +126,35 @@
110
126
  --icon-chip-plate-strength: 40%;
111
127
  }
112
128
 
129
+ /* ── The QUIET GLASS register (BD.W-GLASS-ATOM-REGISTER cross-link) ─────────────
130
+ The chip's SECOND register: the transmissive `.glass-atom` warm-glass capsule
131
+ tinted toward the event hue via `--glass-fill-tint`, NOT the loud `in srgb`
132
+ brand plate (the default, kept — AW.W26 fence). The component applies
133
+ `.glass-capsule .glass-atom` alongside `.icon-chip--glass`, so the body (warm
134
+ floor + `--glass-blur-quiet` backdrop + the keyed rim) comes from the SHARED
135
+ register — this rule only RETIRES the chip's own `in srgb` plate-color fill so
136
+ the two backgrounds don't double-paint (the capsule's translucent fill +
137
+ `.glass-atom`'s tinted `background-image` are the body). The glyph event color
138
+ is untouched (the one color event still reads). A flat capsule lens — the
139
+ backdrop-filter rides the shared `--glass-blur-quiet` (Safari-native, no
140
+ `backdrop-filter:url`, Fence 8). */
141
+ .icon-chip--glass {
142
+ /* Retire the brand plate fill — the `.glass-capsule` body + the `.glass-atom`
143
+ tinted `background-image` paint the surface (no double-fill). The capsule's
144
+ `background:` shorthand + the atom's later `background-image` layer win the
145
+ cascade over this `background-color: transparent` reset by source order. */
146
+ background-color: transparent;
147
+ }
148
+
149
+ /* The glass chip's hover-bloom (when BOTH `--glass` + `--bloom`) routes the glow
150
+ ring through the SAME event color, over the glass body — the bloom GROW (the
151
+ base `.icon-chip--bloom:hover` transform/spring) is inherited unchanged. */
152
+ @media (hover: hover) {
153
+ .icon-chip--glass.icon-chip--bloom:hover {
154
+ background-color: transparent;
155
+ }
156
+ }
157
+
113
158
  /* ── The duotone axis — a low-alpha fill of the same hue UNDER the stroke ──── */
114
159
  /* Lucide glyphs bake `fill: none` on the SVG root; CSS wins over the
115
160
  presentation attribute, so the `[data-duotone] svg` rule reaches the inner
@@ -120,6 +120,12 @@
120
120
  * native .smooth-scroll opt-in) on the native
121
121
  * scroll()/view()/timeline-scope substrate; NO
122
122
  * Lenis/GSAP dep (BB.W-SCROLL-MOTION).
123
+ * 10a''. scroll-chrome.css — BC.W-SCROLL-CHROME the scroll-driven floating-
124
+ * CHROME collapse recipe (.scroll-chrome reads
125
+ * --chrome-collapse-t for the compositor shrink/
126
+ * quiet/shadow-lift; PERSISTENT-by-default, crisp
127
+ * blur, never-invisible quiet, PRM-discrete). The
128
+ * useScrollChrome JS machine owns the snap + ramp.
123
129
  * 10b. view-transition.css — the `.gl-list-item` View-Transitions group
124
130
  * recipe + `--vt-*` axes (AQ.W5; the
125
131
  * `useViewTransition` substrate's CSS half).
@@ -166,8 +172,20 @@
166
172
  @import "./floating-panel.css";
167
173
  @import "./transitions.css";
168
174
  @import "./animations.css";
175
+ /* BD.W-MORPH-FIELD-WELD — the ONE morph-field recipe (the body/neck/waist silhouette + the
176
+ dedicated @property --morph-squish channel + the welling concave waist clip-path + the
177
+ 1940s ink-cast). The `useMorphField` weld writes the drive-derived channels once/frame;
178
+ this sheet paints them. The cross-engine clip-path waist FLOOR + the [data-morphing] goo
179
+ gate live here. */
180
+ @import "./motion/morph-field.css";
181
+ /* BE.W-CELEBRATE-BURST — the earned glass-petal radial-bloom recipe (the
182
+ .glass-celebration-petal warm-cream frosted-glass material + the overlay anchor).
183
+ @import-ed after animations.css per the wave spec (the petal motion is the JS rAF
184
+ step's compositor writes; this recipe is the static frosted material the petals wear). */
185
+ @import "./jubilance.css";
169
186
  @import "./scroll-driven.css";
170
187
  @import "./scroll-choreography.css";
188
+ @import "./scroll-chrome.css";
171
189
  @import "./view-transition.css";
172
190
  @import "./utilities.css";
173
191
  /* BA.W-MENU-GLASS — the glass menu-row + menu-section register. @import-ed AFTER
@@ -193,6 +211,14 @@
193
211
  masks + the PRM milestone-pulse bracket. */
194
212
  @import "./border-progress.css";
195
213
 
214
+ /* BC.W-AX-COMPLETION-SEAL — the hero-scale earned-GOLD completion seal: a one-shot
215
+ gold-draw mark (a `stroke-dashoffset` wipe on the 4 `@property` motion tokens
216
+ `--seal-draw`/`--seal-scale`/`--seal-glint`/`--seal-ink`, registered in
217
+ tokens/property-regs.css §18). The ink reads the W-PHASE-PALETTE earned-gold
218
+ register; the glint composes the W-AX-METAL-GLOW catch-light. One-shot, PRM-gated,
219
+ compositor-only — the feedback-surface partial. */
220
+ @import "./completion-seal.css";
221
+
196
222
  /* Ensure Tailwind scans glass-ui's compiled component templates for the utility
197
223
  classes they emit (CVA variant classes like text-destructive-foreground,
198
224
  layout utilities like h-full/shrink-0).