@mkbabb/glass-ui 4.0.1 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (606) hide show
  1. package/dist/{CardAction-CW7a0m8M.js → CardAction-DlVP2evz.js} +72 -53
  2. package/dist/{CommandShortcut-DvZNQ_HF.js → CommandShortcut-By-VQcLO.js} +25 -14
  3. package/dist/{ConfiguratorRow-BR4l-ixA.js → ConfiguratorRow-YMXdINHx.js} +14 -14
  4. package/dist/ContextMenuContent-CMWn6huB.js +90 -0
  5. package/dist/{ContextMenuSubContent-xol4sD2q.js → ContextMenuSubContent-DvwWCUc0.js} +16 -16
  6. package/dist/{DataTable-CuKwF7wr.js → DataTable-C4tG3eIJ.js} +4 -4
  7. package/dist/DialogContent-D8U9ZfWS.js +121 -0
  8. package/dist/DialogFooter-DoLy0ewI.js +80 -0
  9. package/dist/DialogScrollContent-BMekN7gq.js +93 -0
  10. package/dist/{FadingScroll-DI6hQhT9.js → FadingScroll-P8B30rAD.js} +1 -1
  11. package/dist/HoverCardContent-DAmGYglo.js +88 -0
  12. package/dist/{HoverPopover-CbqbNwgU.js → HoverPopover-DYpBOzzF.js} +1 -1
  13. package/dist/{IconChip-BTD-nay5.js → IconChip-CQa7XZYc.js} +7 -5
  14. package/dist/{IconTooltip-Bl8gFZ8d.js → IconTooltip-_df8M3xm.js} +1 -1
  15. package/dist/Input-CyU4_hIC.js +57 -0
  16. package/dist/{MetricBadge-RHdBP72w.js → MetricBadge-DQt_dGah.js} +1 -1
  17. package/dist/{Notification-VUwexFUf.js → Notification-BlSPJhtZ.js} +4 -4
  18. package/dist/NumberFieldContent-Z3VxGu_6.js +140 -0
  19. package/dist/PagerDots-CYlqVFd4.js +196 -0
  20. package/dist/PaperBackdrop-DYWgrnh8.js +42 -0
  21. package/dist/{PopoverContent-DL7E6vJP.js → PopoverContent-BuKyHZSz.js} +2 -2
  22. package/dist/{Progress-DctG61iZ.js → Progress-C9SsdwIZ.js} +1 -1
  23. package/dist/{ScrollingText-yOpBzFYq.js → ScrollingText-DY3W1Jfh.js} +2 -2
  24. package/dist/SelectScrollDownButton-3mFHX_R-.js +260 -0
  25. package/dist/{SelectSeparator-DXswVdRz.js → SelectSeparator-CNRGG7Ew.js} +1 -1
  26. package/dist/Separator-Cf9-JFgi.js +44 -0
  27. package/dist/Switch-uf-UKPA2.js +49 -0
  28. package/dist/{Toaster-Bw4xR8xV.js → Toaster-ozrsR4mP.js} +2 -2
  29. package/dist/{ToggleGroupItem-pEM9vIhs.js → ToggleGroupItem-BpzaVzNm.js} +6 -6
  30. package/dist/TooltipProvider-QQVM_80r.js +109 -0
  31. package/dist/animated-digit.js +2 -2
  32. package/dist/api/index.d.ts +16 -32
  33. package/dist/api/types-extra.d.ts +33 -0
  34. package/dist/api.js +2 -2
  35. package/dist/aurora.js +629 -269
  36. package/dist/badge-Bt14yURi.js +72 -0
  37. package/dist/badge.js +1 -1
  38. package/dist/border-progress.js +49 -57
  39. package/dist/button-D1W9PrzI.js +130 -0
  40. package/dist/button.js +1 -1
  41. package/dist/canvas.js +2 -3
  42. package/dist/card.js +1 -1
  43. package/dist/carousel.js +235 -106
  44. package/dist/chipVariants-BJQ0I2kB.js +18 -0
  45. package/dist/collapsible.js +1 -1
  46. package/dist/color-B9jZdhJX.js +116 -0
  47. package/dist/color.js +2 -2
  48. package/dist/command.js +1 -1
  49. package/dist/completion-seal.d.ts +1 -0
  50. package/dist/completion-seal.js +89 -0
  51. package/dist/components/custom/aurora/Aurora.vue.d.ts +10 -5
  52. package/dist/components/custom/aurora/composables/color.d.ts +13 -0
  53. package/dist/components/custom/aurora/composables/frameLoop.d.ts +9 -0
  54. package/dist/components/custom/aurora/composables/glSetup.d.ts +1 -1
  55. package/dist/components/custom/aurora/composables/runtime.d.ts +12 -0
  56. package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +12 -3
  57. package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +8 -0
  58. package/dist/components/custom/aurora/constants/presets.d.ts +47 -0
  59. package/dist/components/custom/aurora/constants/renderMode.d.ts +16 -8
  60. package/dist/components/custom/aurora/constants/shaders/aurora-mediums.wgsl.d.ts +1 -0
  61. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -1
  62. package/dist/components/custom/aurora/index.d.ts +1 -1
  63. package/dist/components/custom/border-progress/composables/spectrum-walk.d.ts +25 -0
  64. package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +14 -18
  65. package/dist/components/custom/border-progress/index.d.ts +1 -1
  66. package/dist/components/custom/completion-seal/CompletionSeal.vue.d.ts +21 -0
  67. package/dist/components/custom/completion-seal/composables/useCompletionSeal.d.ts +37 -0
  68. package/dist/components/custom/completion-seal/constants.d.ts +46 -0
  69. package/dist/components/custom/completion-seal/index.d.ts +4 -0
  70. package/dist/components/custom/concentric/Concentric.vue.d.ts +15 -12
  71. package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +12 -0
  72. package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +13 -0
  73. package/dist/components/custom/concentric/composables/levelField.d.ts +50 -0
  74. package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +7 -3
  75. package/dist/components/custom/concentric/composables/useConcentric.d.ts +3 -3
  76. package/dist/components/custom/concentric/constants.d.ts +69 -24
  77. package/dist/components/custom/concentric/index.d.ts +2 -2
  78. package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +2 -2
  79. package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -1
  80. package/dist/components/custom/configurator/Configurator.vue.d.ts +23 -2
  81. package/dist/components/custom/configurator/index.d.ts +1 -1
  82. package/dist/components/custom/confirm-dialog/ConfirmDialog.vue.d.ts +3 -3
  83. package/dist/components/custom/constellation/Constellation.vue.d.ts +5 -4
  84. package/dist/components/custom/constellation/composables/constellationGLSetup.d.ts +10 -0
  85. package/dist/components/custom/constellation/composables/constellationWGPUSetup.d.ts +19 -0
  86. package/dist/components/custom/constellation/composables/uniformBridgeWGPU.d.ts +66 -0
  87. package/dist/components/custom/constellation/composables/useConstellation.d.ts +3 -10
  88. package/dist/components/custom/constellation/constants.d.ts +33 -0
  89. package/dist/components/custom/constellation/constellationField.d.ts +31 -1
  90. package/dist/components/custom/constellation/constellationInteraction.d.ts +23 -14
  91. package/dist/components/custom/constellation/constellationRender.d.ts +25 -0
  92. package/dist/components/custom/constellation/constellationTypes.d.ts +38 -0
  93. package/dist/components/custom/constellation/constellationWell.d.ts +15 -0
  94. package/dist/components/custom/constellation/index.d.ts +5 -5
  95. package/dist/components/custom/constellation/shaders/constellation-lines.glsl.d.ts +2 -0
  96. package/dist/components/custom/constellation/shaders/constellation-lines.wgsl.d.ts +1 -0
  97. package/dist/components/custom/constellation/shaders/constellation-points.glsl.d.ts +2 -0
  98. package/dist/components/custom/constellation/shaders/constellation-points.wgsl.d.ts +1 -0
  99. package/dist/components/custom/deck/DeckPager.vue.d.ts +29 -0
  100. package/dist/components/custom/deck/composables/useDeck.d.ts +27 -0
  101. package/dist/components/custom/deck/composables/useDeckKeyboard.d.ts +25 -0
  102. package/dist/components/custom/deck/composables/useDeckSpring.d.ts +22 -0
  103. package/dist/components/custom/deck/constants.d.ts +14 -0
  104. package/dist/components/custom/deck/index.d.ts +8 -0
  105. package/dist/components/custom/dock/DockDropdownTrigger.vue.d.ts +4 -3
  106. package/dist/components/custom/dock/DockIconButton.vue.d.ts +22 -0
  107. package/dist/components/custom/dock/DockPopoverTrigger.vue.d.ts +19 -0
  108. package/dist/components/custom/dock/DockStack.vue.d.ts +78 -0
  109. package/dist/components/custom/dock/GlassDock.vue.d.ts +21 -3
  110. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +18 -32
  111. package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +78 -67
  112. package/dist/components/custom/dock/composables/index.d.ts +3 -0
  113. package/dist/components/custom/dock/composables/railProjection.d.ts +45 -0
  114. package/dist/components/custom/dock/composables/useDockContextSilhouette.d.ts +192 -0
  115. package/dist/components/custom/dock/composables/useDockFission.d.ts +158 -0
  116. package/dist/components/custom/dock/composables/useDockItemDrag.d.ts +18 -0
  117. package/dist/components/custom/dock/composables/useDockSearch.d.ts +85 -0
  118. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +49 -0
  119. package/dist/components/custom/dock/constants.d.ts +32 -17
  120. package/dist/components/custom/dock/index.d.ts +8 -2
  121. package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +15 -11
  122. package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +69 -6
  123. package/dist/components/custom/dot-flow-field/composables/flowGLProgram.d.ts +8 -0
  124. package/dist/components/custom/dot-flow-field/composables/flowSetupGL.d.ts +9 -0
  125. package/dist/components/custom/dot-flow-field/composables/flowSetupGLFlow.d.ts +12 -0
  126. package/dist/components/custom/dot-flow-field/composables/flowSetupWGPU.d.ts +7 -0
  127. package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +50 -9
  128. package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +6 -5
  129. package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +23 -9
  130. package/dist/components/custom/dot-flow-field/constants.d.ts +92 -20
  131. package/dist/components/custom/dot-flow-field/index.d.ts +2 -2
  132. package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -1
  133. package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +31 -18
  134. package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +2 -1
  135. package/dist/components/custom/dot-matrix/DotMatrix.vue.d.ts +43 -0
  136. package/dist/components/custom/dot-matrix/composables/dotMatrixField.d.ts +89 -0
  137. package/dist/components/custom/dot-matrix/composables/uniformBridgeWGPU.d.ts +61 -0
  138. package/dist/components/custom/dot-matrix/composables/useDotMatrix.d.ts +34 -0
  139. package/dist/components/custom/dot-matrix/composables/useDotSphere.d.ts +34 -0
  140. package/dist/components/custom/dot-matrix/constants.d.ts +72 -0
  141. package/dist/components/custom/dot-matrix/index.d.ts +5 -0
  142. package/dist/components/custom/dot-matrix/shaders/dot-matrix.glsl.d.ts +4 -0
  143. package/dist/components/custom/dot-matrix/shaders/dot-matrix.wgsl.d.ts +1 -0
  144. package/dist/components/custom/easing/EasingPicker.vue.d.ts +2 -2
  145. package/dist/components/custom/easing/composables/useEasingPicker.d.ts +5 -0
  146. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +11 -0
  147. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +44 -47
  148. package/dist/components/custom/fourier-field/composables/fourierFieldGLSetup.d.ts +24 -0
  149. package/dist/components/custom/fourier-field/composables/fourierFieldWGPUSetup.d.ts +31 -0
  150. package/dist/components/custom/fourier-field/composables/uniformBridgeWGPU.d.ts +56 -0
  151. package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +61 -37
  152. package/dist/components/custom/fourier-field/constants.d.ts +114 -4
  153. package/dist/components/custom/fourier-field/index.d.ts +23 -18
  154. package/dist/components/custom/fourier-field/shaders/fourier-field.compute.wgsl.d.ts +1 -0
  155. package/dist/components/custom/fourier-field/shaders/fourier-field.glsl.d.ts +4 -0
  156. package/dist/components/custom/fourier-field/shaders/fourier-field.render.wgsl.d.ts +1 -0
  157. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +9 -1
  158. package/dist/components/custom/goo-blob/composables/easing.d.ts +1 -0
  159. package/dist/components/custom/goo-blob/composables/useBlobSatellites.d.ts +1 -0
  160. package/dist/components/custom/goo-blob/constants.d.ts +26 -1
  161. package/dist/components/custom/goo-blob/index.d.ts +1 -1
  162. package/dist/components/custom/goo-blob/shaders/metaball-noise.wgsl.d.ts +1 -0
  163. package/dist/components/custom/goo-blob/shaders/metaball-palette.wgsl.d.ts +1 -0
  164. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -1
  165. package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -1
  166. package/dist/components/custom/goo-blob/types.d.ts +86 -1
  167. package/dist/components/custom/goo-dot-matrix/GooDotMatrix.vue.d.ts +49 -0
  168. package/dist/components/custom/goo-dot-matrix/composables/gooDotLattice.d.ts +24 -0
  169. package/dist/components/custom/goo-dot-matrix/composables/gooDotSetup.d.ts +79 -0
  170. package/dist/components/custom/goo-dot-matrix/composables/uniformBridgeWGPU.d.ts +45 -0
  171. package/dist/components/custom/goo-dot-matrix/composables/useGooDotMatrix.d.ts +31 -0
  172. package/dist/components/custom/goo-dot-matrix/constants.d.ts +115 -0
  173. package/dist/components/custom/goo-dot-matrix/index.d.ts +5 -0
  174. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.frag.d.ts +13 -0
  175. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.wgsl.d.ts +4 -0
  176. package/dist/components/custom/goo-filter/GooFilter.vue.d.ts +22 -0
  177. package/dist/components/custom/goo-filter/index.d.ts +1 -0
  178. package/dist/components/custom/handmark/brush.d.ts +17 -17
  179. package/dist/components/custom/handmark/constants.d.ts +28 -8
  180. package/dist/components/custom/handmark/geometry.d.ts +34 -1
  181. package/dist/components/custom/handmark/index.d.ts +1 -1
  182. package/dist/components/custom/icon-chip/types.d.ts +10 -0
  183. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +21 -2
  184. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +15 -0
  185. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +9 -0
  186. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  187. package/dist/components/custom/pager-dots/pagerWindow.d.ts +9 -0
  188. package/dist/components/custom/paper-backdrop/PaperBackdrop.vue.d.ts +18 -0
  189. package/dist/components/custom/paper-grid/PaperGrid.vue.d.ts +42 -0
  190. package/dist/components/custom/paper-grid/composables/paperGrid.d.ts +105 -0
  191. package/dist/components/custom/paper-grid/composables/paperGridGLSetup.d.ts +18 -0
  192. package/dist/components/custom/paper-grid/composables/paperGridWGPUSetup.d.ts +21 -0
  193. package/dist/components/custom/paper-grid/composables/uniformBridgeWGPU.d.ts +16 -0
  194. package/dist/components/custom/paper-grid/composables/usePaperGrid.d.ts +31 -0
  195. package/dist/components/custom/paper-grid/constants.d.ts +95 -0
  196. package/dist/components/custom/paper-grid/index.d.ts +5 -0
  197. package/dist/components/custom/paper-grid/shaders/paper-grid.glsl.d.ts +4 -0
  198. package/dist/components/custom/paper-grid/shaders/paper-grid.wgsl.d.ts +1 -0
  199. package/dist/components/custom/search/FuzzySearch.vue.d.ts +8 -2
  200. package/dist/components/custom/search/SearchBar.vue.d.ts +8 -0
  201. package/dist/components/custom/search/index.d.ts +2 -0
  202. package/dist/components/custom/search/searchVariants.d.ts +19 -0
  203. package/dist/components/custom/selectable-chip/SelectableChip.vue.d.ts +50 -0
  204. package/dist/components/custom/selectable-chip/chipVariants.d.ts +39 -0
  205. package/dist/components/custom/selectable-chip/index.d.ts +2 -0
  206. package/dist/components/custom/selectable-chip/selectableChipVariants.d.ts +15 -0
  207. package/dist/components/custom/split-chars/SplitChars.vue.d.ts +39 -0
  208. package/dist/components/custom/split-chars/index.d.ts +1 -0
  209. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +8 -6
  210. package/dist/components/custom/tabs/constants.d.ts +28 -2
  211. package/dist/components/custom/timeline/ScrubberTimeline.vue.d.ts +16 -0
  212. package/dist/components/custom/timeline/geometry.d.ts +0 -8
  213. package/dist/components/custom/toggle-chip/index.d.ts +15 -4
  214. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +32 -17
  215. package/dist/components/custom/watercolor-dot/useWatercolorBlob.d.ts +10 -5
  216. package/dist/components/ui/_shared/index.d.ts +2 -0
  217. package/dist/components/ui/_shared/useControlSize.d.ts +46 -0
  218. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +17 -3
  219. package/dist/components/ui/badge/Badge.vue.d.ts +14 -0
  220. package/dist/components/ui/badge/index.d.ts +1 -0
  221. package/dist/components/ui/button/Button.vue.d.ts +1 -0
  222. package/dist/components/ui/button/index.d.ts +1 -1
  223. package/dist/components/ui/card/Card.vue.d.ts +46 -1
  224. package/dist/components/ui/card/ScrollCard.vue.d.ts +1 -1
  225. package/dist/components/ui/card/index.d.ts +1 -1
  226. package/dist/components/ui/carousel/CarouselContent.vue.d.ts +2 -4
  227. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +1 -1
  228. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +1 -1
  229. package/dist/components/ui/command/CommandDialog.vue.d.ts +9 -3
  230. package/dist/components/ui/command/CommandList.vue.d.ts +3 -0
  231. package/dist/components/ui/context-menu/ContextMenuContent.vue.d.ts +5 -1
  232. package/dist/components/ui/dialog/DialogContent.vue.d.ts +9 -0
  233. package/dist/components/ui/drawer/Drawer.vue.d.ts +33 -14
  234. package/dist/components/ui/drawer/constants.d.ts +8 -6
  235. package/dist/components/ui/drawer/index.d.ts +12 -2
  236. package/dist/components/ui/dropdown-menu/DropdownMenuContent.vue.d.ts +4 -0
  237. package/dist/components/ui/hover-card/HoverCardContent.vue.d.ts +3 -0
  238. package/dist/components/ui/input/Input.vue.d.ts +3 -0
  239. package/dist/components/ui/number-field/NumberFieldInput.vue.d.ts +6 -1
  240. package/dist/components/ui/select/SelectContent.vue.d.ts +12 -0
  241. package/dist/components/ui/slider/Slider.vue.d.ts +9 -0
  242. package/dist/components/ui/switch/Switch.vue.d.ts +2 -0
  243. package/dist/components/ui/textarea/Textarea.vue.d.ts +3 -0
  244. package/dist/components/ui/tooltip/TooltipContent.vue.d.ts +3 -0
  245. package/dist/composables/color/index.d.ts +2 -0
  246. package/dist/composables/color/useAccentTone.d.ts +34 -0
  247. package/dist/composables/dom/index.d.ts +1 -0
  248. package/dist/composables/dom/useDragVelocity.d.ts +46 -0
  249. package/dist/composables/glass/useVizChoreography.d.ts +123 -0
  250. package/dist/composables/glass/wave/index.d.ts +4 -0
  251. package/dist/composables/glass/wave/waveField.d.ts +115 -0
  252. package/dist/composables/glass/wave/waveField.glsl.d.ts +1 -0
  253. package/dist/composables/glass/wave/waveField.wgsl.d.ts +1 -0
  254. package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +105 -2
  255. package/dist/composables/glass/webgl/shaders/flow.wgsl.d.ts +1 -0
  256. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +40 -2
  257. package/dist/composables/glass/webgpu/index.d.ts +2 -1
  258. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +65 -7
  259. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +50 -2
  260. package/dist/composables/glass/webgpu/webgpuDevice.d.ts +42 -0
  261. package/dist/composables/motion/core/index.d.ts +7 -0
  262. package/dist/composables/motion/core/useHaptic.d.ts +48 -0
  263. package/dist/composables/motion/core/writeVelocityWeight.d.ts +31 -0
  264. package/dist/composables/motion/index.d.ts +2 -0
  265. package/dist/composables/motion/scrollReader.d.ts +25 -0
  266. package/dist/composables/motion/springPresets.d.ts +19 -1
  267. package/dist/composables/motion/suite.d.ts +2 -2
  268. package/dist/composables/motion/useBloomUp.d.ts +97 -0
  269. package/dist/composables/motion/useCelebrationBurst.d.ts +50 -0
  270. package/dist/composables/motion/useCharStagger.d.ts +44 -0
  271. package/dist/composables/motion/useDockCtaReceive.d.ts +29 -22
  272. package/dist/composables/motion/useGooMorph.d.ts +72 -0
  273. package/dist/composables/motion/useLiquidFlex.d.ts +18 -0
  274. package/dist/composables/motion/useLiquidMorph.d.ts +108 -0
  275. package/dist/composables/motion/useLiquidPress.d.ts +12 -0
  276. package/dist/composables/motion/useLiquidReveal.d.ts +7 -4
  277. package/dist/composables/motion/useMorphField.d.ts +157 -0
  278. package/dist/composables/motion/useScrollChrome.d.ts +58 -0
  279. package/dist/composables/motion/useScrollPin.d.ts +49 -0
  280. package/dist/composables/motion/useScrollScene.d.ts +67 -0
  281. package/dist/composables/motion/useScrollTrigger.d.ts +67 -0
  282. package/dist/composables/motion/useSpringPress.d.ts +5 -5
  283. package/dist/composables/motion/useStaggerReveal.d.ts +24 -0
  284. package/dist/composables/sidebar/index.d.ts +4 -1
  285. package/dist/composables/sidebar/types.d.ts +68 -3
  286. package/dist/composables/sidebar/useClickDelegate.d.ts +4 -0
  287. package/dist/composables/sidebar/useLazyLoader.d.ts +5 -0
  288. package/dist/composables/sidebar/useScrollTo.d.ts +5 -0
  289. package/dist/composables/virtual/index.d.ts +4 -0
  290. package/dist/composables/virtual/useVirtualSectionWindow.d.ts +72 -0
  291. package/dist/composables/virtual/useWindowedStore.d.ts +43 -0
  292. package/dist/composables/virtual/virtualSectionLayout.d.ts +103 -0
  293. package/dist/concentric.js +552 -309
  294. package/dist/configurator.js +2 -2
  295. package/dist/confirm-dialog.js +62 -47
  296. package/dist/constellation.js +635 -235
  297. package/dist/context-menu.js +2 -2
  298. package/dist/controls.js +2 -2
  299. package/dist/createCanvasLifecycle-CuCrGRfq.js +173 -0
  300. package/dist/dark.js +1 -1
  301. package/dist/data-table.js +1 -1
  302. package/dist/deck.d.ts +1 -0
  303. package/dist/deck.js +105 -0
  304. package/dist/dialog.js +4 -3
  305. package/dist/dock.js +1320 -631
  306. package/dist/dockContext-gFVS2gMg.js +18 -0
  307. package/dist/dom.js +7 -6
  308. package/dist/dot-flow-field.js +1268 -387
  309. package/dist/dot-matrix.d.ts +1 -0
  310. package/dist/dot-matrix.js +774 -0
  311. package/dist/dotMatrixField-CRO0ZFk4.js +48 -0
  312. package/dist/drawer.js +106 -96
  313. package/dist/{dropdown-menu-CofSZuk8.js → dropdown-menu-CCfcCQ68.js} +83 -79
  314. package/dist/dropdown-menu.js +1 -1
  315. package/dist/easing.js +188 -176
  316. package/dist/expandable-container.js +43 -21
  317. package/dist/fading-scroll.js +1 -1
  318. package/dist/flow.glsl-DqEGRpl4.js +4 -0
  319. package/dist/forms.js +64 -62
  320. package/dist/fourier-field.js +1069 -178
  321. package/dist/fourier-math.js +1 -1
  322. package/dist/glass-panel.js +2 -2
  323. package/dist/glass-ui.css +1 -1
  324. package/dist/glass-ui.js +164 -119
  325. package/dist/goo-blob.js +175 -1230
  326. package/dist/goo-dot-matrix.d.ts +1 -0
  327. package/dist/goo-dot-matrix.js +811 -0
  328. package/dist/handmark.js +137 -94
  329. package/dist/header-ribbon.js +1 -1
  330. package/dist/hover-card.js +1 -1
  331. package/dist/hover-popover.js +1 -1
  332. package/dist/icon-chip.js +1 -1
  333. package/dist/icon-tooltip.js +1 -1
  334. package/dist/index.d.ts +5 -0
  335. package/dist/instrument-chassis.js +1 -1
  336. package/dist/keyboard.js +1 -1
  337. package/dist/label.js +1 -1
  338. package/dist/labeled-field.js +70 -60
  339. package/dist/metric-badge.js +1 -1
  340. package/dist/metric-cell.js +1 -1
  341. package/dist/metric-stack.js +12 -3
  342. package/dist/motion-core.js +59 -34
  343. package/dist/motion-curves.js +30 -14
  344. package/dist/motion.js +231 -96
  345. package/dist/notification.js +1 -1
  346. package/dist/number-field.js +1 -1
  347. package/dist/pager-dots.js +2 -91
  348. package/dist/paper-backdrop.js +1 -1
  349. package/dist/paper-grid.d.ts +1 -0
  350. package/dist/paper-grid.js +761 -0
  351. package/dist/paperGrid-CXCSMbZ1.js +191 -0
  352. package/dist/popover.js +1 -1
  353. package/dist/{presets-BW2b-fr1.js → presets-QvYgnFIZ.js} +14 -13
  354. package/dist/{procedural-color.glsl-CIFsJhwI.js → procedural-color.wgsl-C1Y5PkM6.js} +2 -2
  355. package/dist/progress.js +1 -1
  356. package/dist/pulse.js +2 -2
  357. package/dist/reactive.js +2 -2
  358. package/dist/{useCanvas2D-B8w_E3Rr.js → resolveCanvasColor-DsSJk06I.js} +16 -6
  359. package/dist/scrollReader-rc3Ns_NM.js +42 -0
  360. package/dist/scrolling-text.js +1 -1
  361. package/dist/search.js +162 -306
  362. package/dist/select.js +3 -3
  363. package/dist/selectable-chip.d.ts +1 -0
  364. package/dist/selectable-chip.js +48 -0
  365. package/dist/separator.js +1 -1
  366. package/dist/{sheet-tZMg0E0w.js → sheet-DUCIoOe0.js} +4 -4
  367. package/dist/sheet.js +1 -1
  368. package/dist/sidebar.js +216 -114
  369. package/dist/slider-CcICPe3u.js +149 -0
  370. package/dist/slider.js +1 -1
  371. package/dist/sortable-list.js +3 -3
  372. package/dist/spectrum-walk-cBNSx_zm.js +33 -0
  373. package/dist/springPresets-DfoQ6XRY.js +64 -0
  374. package/dist/stacked-icons.js +54 -39
  375. package/dist/styles/animations.css +13 -3
  376. package/dist/styles/cards.css +271 -2
  377. package/dist/styles/completion-seal.css +131 -0
  378. package/dist/styles/components.css +1 -4
  379. package/dist/styles/configurator.css +221 -1
  380. package/dist/styles/critical-partition.mjs +66 -11
  381. package/dist/styles/deferred.css +4 -0
  382. package/dist/styles/dock/adaptive-legibility.css +119 -0
  383. package/dist/styles/dock/cta-seat.css +87 -0
  384. package/dist/styles/dock/density.css +167 -6
  385. package/dist/styles/dock/fission-bridge.css +552 -0
  386. package/dist/styles/dock/layers.css +90 -78
  387. package/dist/styles/dock/morph-bridge.css +67 -18
  388. package/dist/styles/dock/morph.css +57 -118
  389. package/dist/styles/dock/overflow.css +12 -0
  390. package/dist/styles/dock/search.css +68 -0
  391. package/dist/styles/dock/shape.css +250 -0
  392. package/dist/styles/dock/shell.css +24 -8
  393. package/dist/styles/dock/stack-rail.css +352 -0
  394. package/dist/styles/dock-controls/dark-mode-toggle.css +17 -4
  395. package/dist/styles/dock-controls/icon-button.css +46 -0
  396. package/dist/styles/dock-controls/triggers.css +23 -1
  397. package/dist/styles/dock-controls.css +18 -0
  398. package/dist/styles/dock.css +27 -2
  399. package/dist/styles/drawer.css +166 -0
  400. package/dist/styles/glass/accent-tone.css +66 -0
  401. package/dist/styles/glass/control-surfaces.css +167 -0
  402. package/dist/styles/glass/glass-atom.css +244 -0
  403. package/dist/styles/glass/glass-capsule.css +143 -0
  404. package/dist/styles/glass/glass-chip.css +215 -0
  405. package/dist/styles/glass/ladder.css +67 -17
  406. package/dist/styles/glass/liquid-enter.css +252 -0
  407. package/dist/styles/glass/liquid-morph.css +850 -0
  408. package/dist/styles/glass/material.css +70 -1
  409. package/dist/styles/glass/reveal.css +22 -2
  410. package/dist/styles/glass/rim.css +31 -9
  411. package/dist/styles/glass/surfaces.css +81 -150
  412. package/dist/styles/glass.css +21 -0
  413. package/dist/styles/icon-chip.css +45 -0
  414. package/dist/styles/index.css +26 -0
  415. package/dist/styles/jubilance.css +65 -0
  416. package/dist/styles/motion/morph-field.css +229 -0
  417. package/dist/styles/paper.css +230 -14
  418. package/dist/styles/scroll-choreography.css +135 -78
  419. package/dist/styles/scroll-chrome.css +123 -0
  420. package/dist/styles/scroll-driven.css +38 -0
  421. package/dist/styles/segmented-tabs.css +110 -40
  422. package/dist/styles/select.css +151 -0
  423. package/dist/styles/theme/bridges.css +22 -0
  424. package/dist/styles/theme/radius.css +18 -1
  425. package/dist/styles/tokens/color-radius.css +14 -4
  426. package/dist/styles/tokens/dark-arm.css +94 -12
  427. package/dist/styles/tokens/glass-deep.css +33 -4
  428. package/dist/styles/tokens/glass-fx.css +122 -1
  429. package/dist/styles/tokens/glass.css +226 -34
  430. package/dist/styles/tokens/light-dark.css +3 -3
  431. package/dist/styles/tokens/offsets.css +27 -0
  432. package/dist/styles/tokens/property-regs.css +277 -0
  433. package/dist/styles/tokens/scale-paper.css +86 -30
  434. package/dist/styles/tokens/scheme-motion.css +106 -133
  435. package/dist/styles/tokens/scheme-spring.css +239 -0
  436. package/dist/styles/tokens/scroll-tokens.css +15 -15
  437. package/dist/styles/tokens/shadow.css +73 -13
  438. package/dist/styles/tokens/sizing-config.css +110 -0
  439. package/dist/styles/tokens/sizing.css +55 -104
  440. package/dist/styles/tokens.css +14 -2
  441. package/dist/styles/typography/semantic.css +18 -5
  442. package/dist/styles/utilities/a11y-overrides.css +20 -5
  443. package/dist/styles/utilities/base-misc.css +52 -0
  444. package/dist/styles/utilities/btn.css +84 -3
  445. package/dist/styles/utilities/components.css +31 -6
  446. package/dist/styles/utilities/metal.css +26 -0
  447. package/dist/switch.js +1 -1
  448. package/dist/tabs.js +199 -182
  449. package/dist/timeline.js +241 -206
  450. package/dist/toast.js +1 -1
  451. package/dist/toggle-chip.js +14 -41
  452. package/dist/toggle-group.js +1 -1
  453. package/dist/tooltip.js +1 -1
  454. package/dist/typewriter.js +2 -2
  455. package/dist/uniformBridgeWGPU-BCse1SHU.js +1268 -0
  456. package/dist/{useAnimatedNumber-BfUq2bUM.js → useAnimatedNumber-BntskVdQ.js} +1 -1
  457. package/dist/{useConfiguratorState-DNlOh6c8.js → useConfiguratorState-22BcULzF.js} +41 -38
  458. package/dist/useControlSize-DAZ062x7.js +9 -0
  459. package/dist/useDockCtaReceive-DX7RDb6_.js +88 -0
  460. package/dist/{useDragMorph-DgxnsVJz.js → useDragMorph-DGLSewwB.js} +4 -4
  461. package/dist/useDragVelocity-CjcfX3dA.js +57 -0
  462. package/dist/useFuzzySearch-0fTYOhS4.js +177 -0
  463. package/dist/useGooMorph-Cs13NgYL.js +104 -0
  464. package/dist/useGpuSubstrate-Ceet70xq.js +347 -0
  465. package/dist/useHaptic-CPz5BT9I.js +134 -0
  466. package/dist/{useLiquidFlex-mZPMiNXh.js → useLiquidFlex-Cc6PjVJD.js} +8 -3
  467. package/dist/useLiquidPress-CtOQ8Z0_.js +43 -0
  468. package/dist/useMorphField-ogBM7ubT.js +141 -0
  469. package/dist/usePointerVelocityField-BrkqZFhj.js +91 -0
  470. package/dist/useScrollChrome-JuImi1DM.js +258 -0
  471. package/dist/{useSpringMount-q1amq1SJ.js → useSpringMount-DFxtzmkR.js} +1 -1
  472. package/dist/useSpringPress-VM9RgVq3.js +36 -0
  473. package/dist/{useSurfaceAxis-g0NloYEF.js → useSurfaceAxis-Ci7Dnaw2.js} +1 -1
  474. package/dist/{useTouchGate-CBZTD4SD.js → useTouchGate-B1Lf9XqN.js} +1 -1
  475. package/dist/{vendor-CKmzio-i.js → vendor-B2qOlYY3.js} +24 -11
  476. package/dist/virtual.d.ts +1 -0
  477. package/dist/virtual.js +225 -0
  478. package/dist/watercolor-dot.js +107 -74
  479. package/dist/writeVelocityWeight-Bh83xZfs.js +19 -0
  480. package/package.json +140 -9
  481. package/src/styles/animations.css +13 -3
  482. package/src/styles/cards.css +271 -2
  483. package/src/styles/completion-seal.css +131 -0
  484. package/src/styles/configurator.css +221 -1
  485. package/src/styles/critical-partition.mjs +66 -11
  486. package/src/styles/dock/adaptive-legibility.css +119 -0
  487. package/src/styles/dock/cta-seat.css +87 -0
  488. package/src/styles/dock/density.css +167 -6
  489. package/src/styles/dock/fission-bridge.css +552 -0
  490. package/src/styles/dock/layers.css +90 -78
  491. package/src/styles/dock/morph-bridge.css +67 -18
  492. package/src/styles/dock/morph.css +57 -118
  493. package/src/styles/dock/overflow.css +12 -0
  494. package/src/styles/dock/search.css +68 -0
  495. package/src/styles/dock/shape.css +250 -0
  496. package/src/styles/dock/shell.css +24 -8
  497. package/src/styles/dock/stack-rail.css +352 -0
  498. package/src/styles/dock-controls/dark-mode-toggle.css +17 -4
  499. package/src/styles/dock-controls/icon-button.css +46 -0
  500. package/src/styles/dock-controls/triggers.css +23 -1
  501. package/src/styles/dock-controls.css +18 -0
  502. package/src/styles/dock.css +27 -2
  503. package/src/styles/drawer.css +164 -0
  504. package/src/styles/glass/accent-tone.css +66 -0
  505. package/src/styles/glass/control-surfaces.css +167 -0
  506. package/src/styles/glass/glass-atom.css +244 -0
  507. package/src/styles/glass/glass-capsule.css +143 -0
  508. package/src/styles/glass/glass-chip.css +215 -0
  509. package/src/styles/glass/ladder.css +67 -17
  510. package/src/styles/glass/liquid-enter.css +252 -0
  511. package/src/styles/glass/liquid-morph.css +850 -0
  512. package/src/styles/glass/material.css +70 -1
  513. package/src/styles/glass/reveal.css +22 -2
  514. package/src/styles/glass/rim.css +31 -9
  515. package/src/styles/glass/surfaces.css +81 -150
  516. package/src/styles/glass.css +21 -0
  517. package/src/styles/icon-chip.css +45 -0
  518. package/src/styles/index.css +26 -0
  519. package/src/styles/jubilance.css +65 -0
  520. package/src/styles/motion/morph-field.css +229 -0
  521. package/src/styles/paper.css +230 -14
  522. package/src/styles/scroll-choreography.css +135 -78
  523. package/src/styles/scroll-chrome.css +123 -0
  524. package/src/styles/scroll-driven.css +38 -0
  525. package/src/styles/segmented-tabs.css +110 -36
  526. package/src/styles/select.css +151 -0
  527. package/src/styles/theme/bridges.css +22 -0
  528. package/src/styles/theme/radius.css +18 -1
  529. package/src/styles/tokens/color-radius.css +14 -4
  530. package/src/styles/tokens/dark-arm.css +94 -12
  531. package/src/styles/tokens/glass-deep.css +33 -4
  532. package/src/styles/tokens/glass-fx.css +122 -1
  533. package/src/styles/tokens/glass.css +226 -34
  534. package/src/styles/tokens/light-dark.css +3 -3
  535. package/src/styles/tokens/offsets.css +27 -0
  536. package/src/styles/tokens/property-regs.css +277 -0
  537. package/src/styles/tokens/scale-paper.css +86 -30
  538. package/src/styles/tokens/scheme-motion.css +106 -133
  539. package/src/styles/tokens/scheme-spring.css +239 -0
  540. package/src/styles/tokens/scroll-tokens.css +15 -15
  541. package/src/styles/tokens/shadow.css +73 -13
  542. package/src/styles/tokens/sizing-config.css +110 -0
  543. package/src/styles/tokens/sizing.css +55 -104
  544. package/src/styles/tokens.css +14 -2
  545. package/src/styles/typography/semantic.css +18 -5
  546. package/src/styles/utilities/a11y-overrides.css +20 -5
  547. package/src/styles/utilities/base-misc.css +52 -0
  548. package/src/styles/utilities/btn.css +84 -3
  549. package/src/styles/utilities/components.css +31 -6
  550. package/src/styles/utilities/metal.css +26 -0
  551. package/dist/ContextMenuContent-uWnVxDab.js +0 -85
  552. package/dist/DialogContent-DcKK8k9i.js +0 -103
  553. package/dist/DialogFooter-BZNX5aVr.js +0 -165
  554. package/dist/HoverCardContent-b2uaAMRR.js +0 -83
  555. package/dist/Input-h9v5LeXf.js +0 -55
  556. package/dist/NumberFieldContent-Cq7EzX-U.js +0 -138
  557. package/dist/PaperBackdrop-Vf3tlpvd.js +0 -31
  558. package/dist/SelectScrollDownButton-CrA8F0iV.js +0 -252
  559. package/dist/Separator-pKF0oA4M.js +0 -37
  560. package/dist/Switch-CwYNf8bo.js +0 -47
  561. package/dist/TooltipProvider-rzvnXz60.js +0 -104
  562. package/dist/badge-D9XWW4GT.js +0 -53
  563. package/dist/button-DYCUa-tH.js +0 -126
  564. package/dist/color-DweYl7pE.js +0 -86
  565. package/dist/components/custom/concentric/composables/ringField.d.ts +0 -44
  566. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +0 -35
  567. package/dist/components/custom/constellation/constellationDraw.d.ts +0 -30
  568. package/dist/components/custom/dock/DockRail.vue.d.ts +0 -89
  569. package/dist/createCanvasLifecycle-CHD5XrDW.js +0 -82
  570. package/dist/dockContext-BNfyPLe9.js +0 -17
  571. package/dist/procedural-color.wgsl-CToRHugY.js +0 -224
  572. package/dist/resolveCanvasColor-CUyHr5Uu.js +0 -11
  573. package/dist/slider-DVb4HXU-.js +0 -142
  574. package/dist/springPresets-CFQGQfdl.js +0 -40
  575. package/dist/styles/dock/rail-extend.css +0 -397
  576. package/dist/useLiquidPress-kfb4KX79.js +0 -39
  577. package/dist/usePointerVelocityField-JbRd5CrM.js +0 -137
  578. package/dist/useRAFLoop-UYa4zoiN.js +0 -109
  579. package/dist/useSpringPress-BsqPr7FJ.js +0 -34
  580. package/src/styles/dock/rail-extend.css +0 -397
  581. /package/dist/{CollapsibleContent-68dEXIAl.js → CollapsibleContent-D7UNsXQr.js} +0 -0
  582. /package/dist/{InstrumentChassis-Bx0F_q5g.js → InstrumentChassis-UUJX0-mW.js} +0 -0
  583. /package/dist/{Label-C2ejNWeC.js → Label-B_HPqi_q.js} +0 -0
  584. /package/dist/{ModalOverlay-D1VrWyoi.js → ModalOverlay-DfAf7o15.js} +0 -0
  585. /package/dist/{SelectGroup-DwwjicPY.js → SelectGroup-Dcczq44n.js} +0 -0
  586. /package/dist/{_plugin-vue_export-helper-C1je1s0u.js → _plugin-vue_export-helper-gLzyemvl.js} +0 -0
  587. /package/dist/{compile-CQEFRTmx.js → compile-INR_tPk_.js} +0 -0
  588. /package/dist/{constants-BPOqYJAm.js → constants-BWj7DkMn.js} +0 -0
  589. /package/dist/{createContext-CpBNTRMI.js → createContext-Cd23P9j0.js} +0 -0
  590. /package/dist/{math-BINYmg5z.js → math-5RcIgCB4.js} +0 -0
  591. /package/dist/{menuItemVariants-D8VNHq22.js → menuItemVariants-DAXquKja.js} +0 -0
  592. /package/dist/{prng-Za0Rmgag.js → prng-B5tIXTtj.js} +0 -0
  593. /package/dist/{useGlobalDark-C28t0VWJ.js → useGlobalDark-B4HO9LXG.js} +0 -0
  594. /package/dist/{useIntersectionPause-Bj4sPkMh.js → useIntersectionPause-DO8Vl4gs.js} +0 -0
  595. /package/dist/{useInterval-CvK1mL92.js → useInterval-BVUI-sez.js} +0 -0
  596. /package/dist/{useKeyboardShortcuts-BXWXOZ-9.js → useKeyboardShortcuts-BEut54Tk.js} +0 -0
  597. /package/dist/{useResizeObserver-Bpoi7tRE.js → useResizeObserver-DdEn3v2f.js} +0 -0
  598. /package/dist/{useResolveTokenColor-vAylyR0x.js → useResolveTokenColor-ChOnCckA.js} +0 -0
  599. /package/dist/{useScrollProgress-D7bYU2RK.js → useScrollProgress-A0M6qRl7.js} +0 -0
  600. /package/dist/{useSortable-DHjtZSEd.js → useSortable-DQV_UNDw.js} +0 -0
  601. /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-Bma3UlKA.js} +0 -0
  602. /package/dist/{useTimer-BHJOKr35.js → useTimer-BBLGPXR8.js} +0 -0
  603. /package/dist/{useUserInvalidAria-y5namzeE.js → useUserInvalidAria-EmmwWPOl.js} +0 -0
  604. /package/dist/{useViewportReady-anbac3m6.js → useViewportReady-C9pYnn7K.js} +0 -0
  605. /package/dist/{vReveal-Czsb7zQC.js → vReveal-CT1KtwZA.js} +0 -0
  606. /package/dist/{vSpecular-CQFmLNzA.js → vSpecular-EX7loENl.js} +0 -0
@@ -0,0 +1,131 @@
1
+ /* BC.W-AX-COMPLETION-SEAL — the hero-scale earned-GOLD completion seal.
2
+ *
3
+ * A determinate process completes and a HERO-SCALE gold mark DRAWS itself onto the
4
+ * surface: the stroke INKS (a `stroke-dashoffset` wipe on the registered `--seal-draw`
5
+ * <percentage>), settles with a small spring overshoot (the `--seal-scale` SPATIAL leg
6
+ * on the seal's own `--spring-snappy`/`--spring-bouncy` clock), and glints ONCE on
7
+ * settle (the `--seal-glint` + the W-AX-METAL-GLOW gold catch-light). It is GOLD because
8
+ * completion is EARNED — the ink reads the W-PHASE-PALETTE completion register
9
+ * (`--phase-complete-color`/`--color-gold`), so a consumer re-inking completion re-inks
10
+ * the seal in lockstep. The seal mints NO new gold token + does NOT re-author the metal
11
+ * glow — it COMPOSES both (the earned-gold register has ONE home).
12
+ *
13
+ * ONE-SHOT: the draw fires ONCE on `play` (the `.completion-seal[data-play]` arm), then
14
+ * holds the static fully-drawn seal — no looping shimmer (the §6 calm register; the disco
15
+ * family stays gone). PRM-gated: under `prefers-reduced-motion: reduce` the seal appears
16
+ * instantly fully-drawn (`--seal-draw: 100%` snap), no stroke animation, no glint sweep
17
+ * (the seal is correct, the motion off — the vestibular floor).
18
+ *
19
+ * COMPOSITOR-ONLY: the draw rides `stroke-dashoffset` (a paint prop) + `transform` (the
20
+ * scale) + `filter`/`opacity` (the glint) — NO layout property animates
21
+ * (`proof:no-layout-animation` holds). The registrations live in
22
+ * tokens/property-regs.css §18 (the specular/border-progress split: the @property reg
23
+ * there, the consumption here). */
24
+
25
+ .completion-seal {
26
+ /* The seal stroke ink — the EARNED-gold completion register (Q2). The runtime
27
+ cascade default is the token form: a consumer (or any ancestor) re-inking
28
+ `--phase-complete-color` re-inks the seal. The @property `initial-value` literal
29
+ light-gold is only the non-supporting-engine fallback. */
30
+ --seal-ink: var(--phase-complete-color, var(--color-gold));
31
+
32
+ display: inline-flex;
33
+ align-items: center;
34
+ justify-content: center;
35
+ /* The settle scale rides the SPATIAL leg — a small overshoot on the seal's own
36
+ spring clock (NOT a generic --duration-*). Compositor-only (transform). */
37
+ transform: scale(var(--seal-scale, 1));
38
+ }
39
+
40
+ /* The hero-scale gold-draw glyph — an SVG <path>/<circle> stroked in `--seal-ink`. The
41
+ stroke INKS itself via the `--seal-draw` wipe (a stroke-dashoffset paint, never a
42
+ fade). The glint reads the W-AX-METAL-GLOW catch-light (composed, not re-authored). */
43
+ .completion-seal__mark {
44
+ fill: none;
45
+ stroke: var(--seal-ink);
46
+ stroke-width: var(--seal-stroke-width, 6);
47
+ stroke-linecap: round;
48
+ stroke-linejoin: round;
49
+ /* The stroke-reveal: the dash array is the full path length, the offset rides the
50
+ `--seal-draw` extent (100% = drawn → offset 0; 0% = undrawn → offset = full
51
+ length). pathLength="100" normalizes the glyph so the wipe is path-agnostic. */
52
+ stroke-dasharray: 100;
53
+ stroke-dashoffset: calc(100 - var(--seal-draw, 100%) / 1%);
54
+ /* The one-pass gold glint on settle — the W-AX-METAL-GLOW catch-light, scaled by
55
+ `--seal-glint` (0 at rest → 1 on settle-pass). A drop-shadow halo of the seal's
56
+ OWN gold ink at the metal-glow radius/strength — composed, never re-authored.
57
+ The seal is NOT a `.metal-*` element, so the bare `--metal-glow-blur`/`-opacity`
58
+ (declared scoped inside `.metal-{gold,silver,bronze}`) do not cascade here; the
59
+ seal CONSUMES THE REGISTER by chaining to the `:root` `-default` retune seam
60
+ (glass-fx.css), NOT a hardcoded magic-number copy — a consumer who retunes
61
+ `--metal-glow-blur-default` re-tunes the seal halo in lockstep. */
62
+ --metal-glow-blur: var(--metal-glow-blur-default, 0.5em);
63
+ --metal-glow-opacity: var(--metal-glow-opacity-default, 0.35);
64
+ filter: drop-shadow(
65
+ 0 0
66
+ calc(var(--metal-glow-blur) * var(--seal-glint, 0))
67
+ color-mix(
68
+ in oklab,
69
+ var(--seal-ink),
70
+ transparent
71
+ calc(100% - var(--metal-glow-opacity) * var(--seal-glint, 0) * 100%)
72
+ )
73
+ );
74
+ }
75
+
76
+ /* THE ONE-SHOT DRAW — fires ONCE on `play`, then holds static. PRM-gated: the whole
77
+ motion sits inside the no-preference gate (under reduce the seal is the static
78
+ fully-drawn mark, the @property initial-values). The draw is NOT a loop — a single
79
+ pass each on the stroke-reveal + the settle + the glint. */
80
+ @media (prefers-reduced-motion: no-preference) {
81
+ .completion-seal[data-play] {
82
+ animation: completion-seal-settle var(--spring-bouncy-duration, 0.57s)
83
+ var(--spring-bouncy) both;
84
+ }
85
+ .completion-seal[data-play] .completion-seal__mark {
86
+ animation:
87
+ completion-seal-draw var(--spring-snappy-duration, 0.34s)
88
+ var(--ease-out, ease-out) both,
89
+ completion-seal-glint var(--spring-snappy-duration, 0.34s)
90
+ var(--ease-out, ease-out)
91
+ var(--spring-snappy-duration, 0.34s) both;
92
+ }
93
+ }
94
+
95
+ /* The stroke-reveal: the gold INKS itself 0→full (a stroke-dashoffset paint wipe — the
96
+ editorial draw-on). The registered `--seal-draw` interpolates; the offset reads it. */
97
+ @keyframes completion-seal-draw {
98
+ from {
99
+ --seal-draw: 0%;
100
+ }
101
+ to {
102
+ --seal-draw: 100%;
103
+ }
104
+ }
105
+
106
+ /* The settle: the seal lands with a small overshoot (the SPATIAL enter-bounce). The
107
+ transform scale rides the `--seal-scale` spring; the keyframe nudges the scale once
108
+ (the §6 calm overshoot — an ENTER may overshoot on arrival). Compositor-only. */
109
+ @keyframes completion-seal-settle {
110
+ from {
111
+ --seal-scale: 0.92;
112
+ }
113
+ to {
114
+ --seal-scale: 1;
115
+ }
116
+ }
117
+
118
+ /* The glint: a ONE-PASS gold catch-light sweep on settle (0 → peak → 0). NOT a loop —
119
+ a single pass, then the seal holds static at glint 0 (the metal-glow whisper is the
120
+ resting register; the disco family stays gone). */
121
+ @keyframes completion-seal-glint {
122
+ 0% {
123
+ --seal-glint: 0;
124
+ }
125
+ 45% {
126
+ --seal-glint: 1;
127
+ }
128
+ 100% {
129
+ --seal-glint: 0;
130
+ }
131
+ }
@@ -37,7 +37,12 @@
37
37
  .configurator-presets {
38
38
  padding-block: var(--configurator-preset-row-weight);
39
39
  }
40
- .configurator-presets [role="tablist"] {
40
+ /* The gallery track gap — the toggle-button group (BD.W-CONFIG-GALLERY-DOCK
41
+ * retired the `role="tablist"`/`role="tab"` ARIA-contradiction for the
42
+ * toggle-button `role="group"` + `aria-pressed` pattern). The token drives the
43
+ * inter-tile rhythm. */
44
+ .configurator-presets .configurator-gallery-track,
45
+ .configurator-presets [role="group"] {
41
46
  gap: var(--configurator-preset-row-gap);
42
47
  }
43
48
 
@@ -75,3 +80,218 @@
75
80
  .configurator-footer {
76
81
  border-color: var(--configurator-divider);
77
82
  }
83
+
84
+ /* 4. The DESKTOP TWO-COLUMN LAYOUT — controls on the RIGHT (BC.W-CONFIG-RIGHT).
85
+ *
86
+ * The configurator's own desktop grid was the next victim of the BA.W-EMISSION
87
+ * self-emission class (CLAUDE.md): the SFC carried the structural layout as a
88
+ * `lg:grid-cols-[minmax(0,1fr)_minmax(var(--configurator-aside-min,280px),var(--configurator-aside-max,360px))]`
89
+ * arbitrary utility — a `lg:` arbitrary bracket with NESTED `var()` + commas +
90
+ * `minmax()` that dies in a consumer's content-scan (the same failure that killed
91
+ * the Select collision-bound). So every studio rendered SINGLE-column (controls
92
+ * stacked BELOW the stage) on desktop: `getComputedStyle(cfg).gridTemplateColumns`
93
+ * read ONE `1131px` track at 1280px width, the aside below the stage, never right.
94
+ *
95
+ * The fix is the BA.W-EMISSION discipline: the structural layout lives in SHIPPED
96
+ * CSS as a precompiled rule scoped to `[data-slot="configurator"]`, NEVER
97
+ * load-bearing on a content-scan reach (the SAME mechanism the Select bound got in
98
+ * select.css). Below `lg` the base `grid grid-cols-1` + the mobile row template
99
+ * (emitted fine — a plain utility) keeps the single-column stack: stage above,
100
+ * controls below (a narrow viewport has no room for side-by-side). At `lg`+ this
101
+ * rule sets the two-column geometry off the SAME `--configurator-aside-{min,max}`
102
+ * token band (default 280px/360px, retunable via the `asideWidth` prop) the dead
103
+ * utility read — the token contract is byte-identical, only the MECHANISM moves
104
+ * onto shipped CSS. The explicit mobile rows reset to `none` so one auto row
105
+ * stretches to the taller column. */
106
+ /* The MOBILE / base placement of the three section-level children (the gallery
107
+ * moved OUT of the aside to a grid sibling — BD.W-CONFIG-GALLERY-DOCK). Single
108
+ * column, three rows: gallery → stage → aside. The base `grid-template-rows`
109
+ * (`auto minmax(stage-min,auto) 1fr`) ships from the SFC; these rules pin each
110
+ * child to its row so the source order (gallery, stage, aside) reads correctly.
111
+ * When no gallery renders the `auto` row collapses to 0 (an empty track). */
112
+ [data-slot="configurator"] > [data-gallery-dock] {
113
+ grid-row: 1;
114
+ grid-column: 1;
115
+ }
116
+ [data-slot="configurator"] > .configurator-stage {
117
+ grid-row: 2;
118
+ grid-column: 1;
119
+ }
120
+ [data-slot="configurator"] > .configurator-aside {
121
+ grid-row: 3;
122
+ grid-column: 1;
123
+ }
124
+
125
+ @media (min-width: 1024px) {
126
+ /* The DESKTOP TWO-COLUMN geometry. Two columns (stage 1fr | aside band) and
127
+ * two rows: the gallery row (auto) over the body row (1fr). The placement of
128
+ * the gallery dock is the ONLY thing the `data-gallery` axis swaps. */
129
+ [data-slot="configurator"] {
130
+ grid-template-columns: minmax(0, 1fr)
131
+ minmax(
132
+ var(--configurator-aside-min, 280px),
133
+ var(--configurator-aside-max, 360px)
134
+ );
135
+ grid-template-rows: auto minmax(0, 1fr);
136
+ }
137
+
138
+ /* data-gallery="aside" (the default, inspector idiom) — the gallery sits in
139
+ * the ASIDE column, row 1, above the controls; the stage spans BOTH rows on
140
+ * the left. Byte-equivalent to the legacy "preset row inside the aside top". */
141
+ [data-slot="configurator"][data-gallery="aside"] > [data-gallery-dock] {
142
+ grid-row: 1;
143
+ grid-column: 2;
144
+ }
145
+ [data-slot="configurator"][data-gallery="aside"] > .configurator-stage {
146
+ grid-row: 1 / span 2;
147
+ grid-column: 1;
148
+ }
149
+ [data-slot="configurator"][data-gallery="aside"] > .configurator-aside {
150
+ grid-row: 2;
151
+ grid-column: 2;
152
+ }
153
+
154
+ /* data-gallery="top" (the §2.1 reflow) — the gallery is a LARGE full-width
155
+ * dock spanning BOTH columns up-top; the stage (col 1) + controls (col 2)
156
+ * reclaim the full height in row 2. The gallery is now ~studio-width, not the
157
+ * 360px gutter — ~5 φ-tall tiles visible, horizontally scrollable. */
158
+ [data-slot="configurator"][data-gallery="top"] > [data-gallery-dock] {
159
+ grid-row: 1;
160
+ grid-column: 1 / span 2;
161
+ }
162
+ [data-slot="configurator"][data-gallery="top"] > .configurator-stage {
163
+ grid-row: 2;
164
+ grid-column: 1;
165
+ }
166
+ [data-slot="configurator"][data-gallery="top"] > .configurator-aside {
167
+ grid-row: 2;
168
+ grid-column: 2;
169
+ }
170
+ }
171
+
172
+ /* The gallery-dock chrome divider — the hairline under the up-top dock / the
173
+ * left edge of the aside-placed dock. A dark-adaptive border off the same token
174
+ * the rest of the instrument reads, so it survives both glass plates. */
175
+ [data-slot="configurator"] > [data-gallery-dock] {
176
+ border-color: var(--configurator-divider);
177
+ }
178
+ [data-slot="configurator"][data-gallery="aside"] > [data-gallery-dock] {
179
+ border-bottom-width: 1px;
180
+ }
181
+ @media (min-width: 1024px) {
182
+ /* The up-top dock carries a bottom hairline; the aside-placed dock carries it
183
+ * too (above the controls). */
184
+ [data-slot="configurator"][data-gallery="top"] > [data-gallery-dock] {
185
+ border-bottom-width: 1px;
186
+ }
187
+ }
188
+
189
+ /* ── The WARM-GLASS gallery tiles + the device-free field-well ────────────────
190
+ * BD.W-CONFIG-GALLERY-DOCK §5/§B1. The tile is a `.glass-capsule` warm-glass cel
191
+ * (composed in the SFC class list) — the §3 colourful field reads THROUGH, never
192
+ * a flat opaque bg-card scrim. These rules add the GEOMETRY the capsule register
193
+ * doesn't carry: the φ-tall card shape, the rounded field-well, the active ring,
194
+ * the loading shimmer. No new material is minted — the transmissive composite is
195
+ * the shared `.glass-capsule`; the cartoon cast is the shared `.cartoon-cast`. */
196
+
197
+ /* The big field-well tile (the PresetPickerRow / baked-thumbnail form). A φ-tall
198
+ * card: a 16:10 field-well crowned by a label band. The capsule register paints
199
+ * the warm-glass body; this rule sets the card radius + the column flex so the
200
+ * well meets the rounded crown with zero bg leak. */
201
+ .configurator-preset-tile {
202
+ inline-size: clamp(160px, 22vw, 232px);
203
+ border-radius: var(--radius-card);
204
+ /* The capsule fill is a warm-glass PILL by default (--radius-pill); a TILE is
205
+ * a card, so re-point the geometry to the card radius here. The transmissive
206
+ * fill + rim + cast all carry from .glass-capsule. */
207
+ }
208
+
209
+ /* The §3 field-well — the device-free `auroraFallbackGround` background-image is
210
+ * set inline per tile; this rule sets the cover sizing + the rounded inner crown.
211
+ * The well is the COLOURFUL field; the warm-glass capsule frames it. */
212
+ .configurator-preset-well {
213
+ background-size: cover;
214
+ background-position: center;
215
+ /* a smooth bilinear upscale of the tiny raster (the per-quadrant mean
216
+ * luminance is preserved — the certify band reads true). */
217
+ image-rendering: auto;
218
+ }
219
+
220
+ /* The loading state — a warm shimmer until the field build lands (the field
221
+ * build is synchronous + cheap, so this is a sub-frame flicker at most). */
222
+ .configurator-preset-well.is-loading {
223
+ background-image: linear-gradient(
224
+ 100deg,
225
+ color-mix(in oklab, var(--card) 84%, transparent) 30%,
226
+ color-mix(in oklab, var(--foreground) 8%, var(--card)) 50%,
227
+ color-mix(in oklab, var(--card) 84%, transparent) 70%
228
+ );
229
+ background-size: 200% 100%;
230
+ animation: configurator-preset-shimmer 1.2s ease-in-out infinite;
231
+ }
232
+ @media (prefers-reduced-motion: reduce) {
233
+ .configurator-preset-well.is-loading {
234
+ animation: none;
235
+ }
236
+ }
237
+ @keyframes configurator-preset-shimmer {
238
+ from {
239
+ background-position: 200% 0;
240
+ }
241
+ to {
242
+ background-position: -200% 0;
243
+ }
244
+ }
245
+
246
+ /* The active tile ring — a 2px foreground-keyed inset crown over the warm-glass
247
+ * cel (an inset ring never clips on the scroll axis, the PresetPickerRow note).
248
+ * Composes with the capsule's own rim; the cast deepens to `-lg` in the SFC. */
249
+ .configurator-preset-tile.is-active {
250
+ box-shadow:
251
+ inset 0 0 0 2px var(--ring),
252
+ var(--shadow-cartoon-lg);
253
+ }
254
+
255
+ /* The compact CHIP form (the default fallback gallery — text-only preset pills).
256
+ * The capsule register paints the warm-glass body; this rule restores the pill
257
+ * radius the capsule already ships, and the active chip reads a selected fill via
258
+ * the `--glass-capsule-fill` override hook (no fork). */
259
+ .configurator-preset-chip {
260
+ border-radius: var(--radius-pill);
261
+ }
262
+ .configurator-preset-chip.is-active {
263
+ /* the selected rung — re-point the capsule fill toward the quiet glass-tint
264
+ * selected register via the documented override hook (NO new composite). */
265
+ --glass-capsule-fill: var(--glass-bg-quiet);
266
+ }
267
+
268
+ /* 5. The SIDE FLIP — a data-attr, default RIGHT (BC.W-CONFIG-RIGHT).
269
+ *
270
+ * The aside side moves off the dead `lg:col-start-*` arbitrary utility (gated
271
+ * behind the same silent-JIT-failure class) onto a `data-aside-side` attr the SFC
272
+ * binds. `right` (the default) is the NATURAL source order — stage in column 1,
273
+ * aside in column 2 — so it needs NO override (the bare desktop rule above already
274
+ * places them left→right). `left` is the reversible taste-level flip: it swaps the
275
+ * grid-COLUMN targets so the aside paints on the LEFT, while the DOM/tab order
276
+ * stays stage→aside (the side is grid-cell PLACEMENT + border-side only, never an
277
+ * `order:`/`row-reverse` that would desync the visual order from the DOM reading
278
+ * order — WCAG 1.3.2/2.4.3 inviolate, the AM.W0 contract). Below `lg` (single
279
+ * column) neither side has meaning. */
280
+ @media (min-width: 1024px) {
281
+ /* The flip swaps the two BODY columns (stage ↔ aside) while DOM/tab order stays
282
+ * gallery→stage→aside. The selectors carry `>`-child specificity to match the
283
+ * `data-gallery` placement rules above (which also use `>`); a bare descendant
284
+ * selector would lose the cascade to those and the flip would no-op. The aside
285
+ * keeps its body row (row 2); only the column target moves. The aside-placed
286
+ * gallery dock follows the aside to column 1. */
287
+ [data-slot="configurator"][data-aside-side="left"] > .configurator-stage {
288
+ grid-column: 2;
289
+ }
290
+ [data-slot="configurator"][data-aside-side="left"] > .configurator-aside {
291
+ grid-column: 1;
292
+ }
293
+ [data-slot="configurator"][data-aside-side="left"][data-gallery="aside"]
294
+ > [data-gallery-dock] {
295
+ grid-column: 1;
296
+ }
297
+ }
@@ -27,13 +27,22 @@
27
27
  * component recipes) — under the recorded gzip ceiling (W3).
28
28
  *
29
29
  * DEFERRED (./styles/deferred) — the below-the-fold + late-mount tail: every
30
- * component recipe + the transitions/animations/scroll-driven/view-transition
31
- * grammar + utilities + the menu/configurator/instrument-chassis/hover-popover/
32
- * drawer/segmented-tabs/select/icon-chip component partials, PLUS the folded SFC
33
- * `<style scoped>` payload (`../glass-ui.css`) and the emitted Tailwind
34
- * component-utility surface (`components.css`). These decorate components that
35
- * mount after first paint or sit below the fold; their late arrival shifts no
36
- * above-the-fold pixel (the FOUC-safe floor, W5).
30
+ * component recipe + the transitions/animations/scroll-driven/scroll-chrome/
31
+ * view-transition grammar + utilities + the menu/configurator/instrument-chassis/
32
+ * hover-popover/drawer/segmented-tabs/select/icon-chip/border-progress/
33
+ * completion-seal component partials, PLUS the folded SFC `<style scoped>`
34
+ * payload (`../glass-ui.css`) and the emitted Tailwind component-utility surface
35
+ * (`components.css`). These decorate components that mount after first paint or
36
+ * sit below the fold; their late arrival shifts no above-the-fold pixel (the
37
+ * FOUC-safe floor, W5). The BC-added `scroll-chrome.css` (the scroll-driven
38
+ * floating-CHROME collapse recipe — a late-mount surface decoration) and
39
+ * `completion-seal.css` (the one-shot earned-gold feedback seal — a focal opt-in
40
+ * surface that mounts on a completion event) are BOTH deferred: neither paints
41
+ * an above-the-fold first-paint chrome pixel. The BD-added `motion/morph-field.css`
42
+ * (the ONE `useMorphField` goo recipe — the body/neck/waist silhouette + the
43
+ * dedicated squish channel) is likewise DEFERRED: it is gated to `[data-morphing]`
44
+ * and paints only while a morph drive is live (a late-mount compositor decoration),
45
+ * never a steady-state first-paint chrome pixel.
37
46
  *
38
47
  * The `paper.css` partial is bucketed DEFERRED — the paper underpaint/grain
39
48
  * utilities pair with glass for paper-on-glass compositions that mount with the
@@ -63,8 +72,11 @@ export const DEFERRED_PARTIALS = Object.freeze([
63
72
  "floating-panel.css",
64
73
  "transitions.css",
65
74
  "animations.css",
75
+ "motion/morph-field.css",
76
+ "jubilance.css",
66
77
  "scroll-driven.css",
67
78
  "scroll-choreography.css",
79
+ "scroll-chrome.css",
68
80
  "view-transition.css",
69
81
  "utilities.css",
70
82
  "menu.css",
@@ -76,6 +88,7 @@ export const DEFERRED_PARTIALS = Object.freeze([
76
88
  "select.css",
77
89
  "icon-chip.css",
78
90
  "border-progress.css",
91
+ "completion-seal.css",
79
92
  ]);
80
93
 
81
94
  /**
@@ -133,8 +146,50 @@ export const DEFERRED_SOURCE_DIRECTIVE = '@source "../*.js";';
133
146
  * dark-arm + the on-glass-fg / surface-axis registers — all of which live in the
134
147
  * critical tokens/* + glass/* sub-partials by construction. Ceiling lifted
135
148
  * 110000 → 137000 (~4.2% headroom over the measured 131469, the profile-bundle
136
- * re-base convention) to carry the BB glass-band critical surface. The
137
- * render-block FLOOR stays W-LIGHTHOUSE's W3-arm-1 mobile-ms gate (the binding
138
- * perf truth); this ceiling guards against a recipe revert-toward-monolith.
149
+ * re-base convention) to carry the BB glass-band critical surface.
150
+ *
151
+ * RE-BASE (BC.W-CSS-CRITICAL — re-measured over the SETTLED BC cascade): the
152
+ * critical subset grew to raw 482228 / gzip 149748 — AGAIN not a component-recipe
153
+ * leak (the critical bucket is STILL the 6 documented token+glass+type partials;
154
+ * the BC visual bands 1-7 + 9 re-authored the critical tokens/* + glass/* sub-
155
+ * partials — the warm-cream page chassis tokens, the on-glass-fg/surface-axis
156
+ * registers, the calm/deep glass ladder, the scroll/motion token additions in
157
+ * scale-paper.css — all of which live in the critical token cascade by
158
+ * construction; the two BC-added PARTIALS scroll-chrome.css + completion-seal.css
159
+ * are bucketed DEFERRED, NOT critical). The critical subset is 47.3% of the
160
+ * settled monolith's resolved gzip (316614) — the spec's ~46% small-above-the-
161
+ * fold-subset bar HELD over the settled cascade. Ceiling re-pinned 137000 →
162
+ * 156000 (~4.2% headroom over the measured 149748, the profile-bundle re-base
163
+ * convention — the reviewed write, NEVER a silent component-recipe swallow to
164
+ * stay under the old number). The render-block FLOOR stays W-LIGHTHOUSE's
165
+ * W3-arm-1 mobile-ms gate (the binding perf truth); this ceiling guards against a
166
+ * recipe revert-toward-monolith.
167
+ *
168
+ * RE-BASE (BD greenfield band — re-measured over the SETTLED BD cascade): the
169
+ * critical subset grew to raw 561233 / gzip 174231 — AGAIN not a component-recipe
170
+ * leak into the critical BUCKET (the critical bucket is STILL the SAME 6 documented
171
+ * token+glass+type partials; w2 partials-disjoint + w4 hold, and the two recipe-shaped
172
+ * BD additions that COULD have leaked do NOT: `motion/morph-field.css` is bucketed
173
+ * DEFERRED, `glass-atom.css`/`glass-chip.css` are @import-ed by the DEFERRED
174
+ * `icon-chip.css` (not by `glass.css`), and `liquid-morph.css` is demo-only — it is
175
+ * @import-ed by NO src partial). The growth is the legitimate BD GREENFIELD enrichment
176
+ * of the critical TOKEN CASCADE + glass ladder, which lives in the critical tokens/* +
177
+ * glass/* sub-partials by construction: the NEW `tokens/property-regs.css` (the
178
+ * @property registrations a bare var() interpolates over), the `tokens/scheme-motion.css`
179
+ * --motion-weight × --ease-cartoon-punch motion grammar, the `tokens/shadow.css` cartoon
180
+ * cast rungs, the `tokens/dark-arm.css` dark-mode arms, the `tokens/glass.css` squish/tint
181
+ * axes, and the `tokens/glass-fx.css` / `tokens/scale-paper.css` page-chassis registers —
182
+ * all custom-property registers the chrome reads at first paint. The ONE borderline
183
+ * residual is `glass/liquid-enter.css` (a late-mount entrance @keyframes recipe, ~3.7KiB
184
+ * gzip) which rides `glass.css` over its `reveal.css` `--lq-enter-*` substrate; carving it
185
+ * to a deferred top-level partial is a structural cascade-order change reserved for the
186
+ * named BB.W-CSS-CRITICAL-INLINE successor (a triumvirate trigger, NOT a token-edit here),
187
+ * and it recovers only ~3.7KiB — the bucket would still sit ~170KiB, well over the old
188
+ * 156000. The critical subset is 49.5% of the settled monolith's resolved gzip — the
189
+ * spec's ~46% small-above-the-fold-subset bar HELD over the settled cascade. Ceiling
190
+ * re-pinned 156000 → 182000 (~4.5% headroom over the measured 174231, the profile-bundle
191
+ * re-base convention — the reviewed write, NEVER a silent component-recipe swallow). The
192
+ * render-block FLOOR stays W-LIGHTHOUSE's W3-arm-1 mobile-ms gate (the binding perf truth);
193
+ * this ceiling guards against a recipe revert-toward-monolith.
139
194
  */
140
- export const CRITICAL_GZIP_CEILING = 137000;
195
+ export const CRITICAL_GZIP_CEILING = 182000;
@@ -0,0 +1,119 @@
1
+ /* dock/adaptive-legibility.css — the dock's ADAPTIVE-LEGIBILITY self-engage (carved
2
+ * from dock/morph.css to hold both partials under the 500-line no-god-module bound).
3
+ *
4
+ * This partial owns the darken-over-light legibility concern, distinct from the morph
5
+ * chrome: the unconditional `:where(.glass-dock)` self-engage (AZ.W-ADAPTIVE-AUTO), the
6
+ * continuous backdrop-luma tint clamp (BC.W-ADAPTIVE-RECONCILE), the BD.W-DOCK-CORE D2
7
+ * warm-chromatic dock ink, the ancestor `@container style(--glass-backdrop: light)`
8
+ * descendant bucket, the AX.W55 contrast-color() progressive refinement, and the
9
+ * BB.W-LIQUID-REVEAL / BC.W-DOCK-SHRINK-BLUR PRM reveal-blur carve.
10
+ *
11
+ * @import-ed by dock.css in cascade order, in the SAME `@layer components` as morph.css
12
+ * (the carve is isomorphic — same layer, source order preserved → ZERO visual delta). */
13
+
14
+ @layer components {
15
+ /* ── Adaptive legibility: SELF-ENGAGE the dock over a light backdrop by default
16
+ (AZ.W-ADAPTIVE-AUTO Arm 1 — the literal G2 surface; "Glass dock over VERY
17
+ LIGHT materials is unreadable, darken DYNAMICALLY like iOS 27") ─────────────
18
+ The dock floats over WHATEVER the consumer painted — frequently a light/near-
19
+ white app surface (the canonical G2 case the user reported). AY.W-A11Y-PERF
20
+ O-1 set `--glass-backdrop: light` on the dock's OWN root (shell.css) intending
21
+ a self-darken, but CSS style queries NEVER self-match (the `@container
22
+ style()` block below reads an ANCESTOR — verified on Chrome 148), so the
23
+ self-declaration was a NO-OP. This `:where(.glass-dock)` rule is the genuine
24
+ UNCONDITIONAL self-engage — mirroring the overlay band's `ladder.css:169` —
25
+ re-pointing the INHERITING tint tokens DIRECTLY on the dock root so the
26
+ shell (`--glass-bg-dock`), chassis-strip, and held/open tiers (which compose
27
+ the oklab tint AT THE ELEMENT — the substitution-vs-inheritance-safe targets)
28
+ darken toward warm-ink in lockstep. `--dock-fg-on-aurora` re-points to the
29
+ warm-ink here too — ONE reconciled path, the foreground twin folded in (it
30
+ reaches the dock CONTROLS' glyph/label color). Over a DARK page the darken is
31
+ sub-perceptual; a dark-substrate consumer opts out via `--glass-tint-strength:
32
+ 0%` on the dock root. The morph-root interp (`.glass-dock:not(.vertical)`
33
+ above) stays `color-mix(in srgb …)` for the transition — the adaptive darken
34
+ rides its RESTING endpoint (`--glass-bg-dock`), the in-flight morph frames are
35
+ sub-perceptual (the ratified resting-endpoint-only default). The muted body
36
+ register lifts to the full warm-ink under the engaged plate (the muted L40
37
+ tier cannot clear 4.5:1 on a translucent darkened plate — darkening moves the
38
+ plate TOWARD muted's own luminance; the low-contrast muted register is
39
+ inappropriate over a busy glass plate, so it resolves to the legible dark
40
+ ink, which clears ~10:1). */
41
+ :where(.glass-dock) {
42
+ /* BD.W-DOCK-CORE (D2) — the dock self-engage reads the warm-CHROMATIC dock ink
43
+ (glass-fx.css), NOT the frozen global `--glass-tint-ink` (W-DARK-MATERIAL's
44
+ whole-system register). So the darken-over-light RAISES chroma toward a warm
45
+ material (H ≈ 62°, C ≈ 0.016 at AA) rather than dropping L with chroma flat (the
46
+ gray dock). ONE dock tint source, ONE global ink — file-line-disjoint. */
47
+ --glass-tint-source: var(--glass-tint-ink-dock);
48
+ /* BC.W-ADAPTIVE-RECONCILE — the dock JOINS the continuous observer driver (the
49
+ literal G2 surface: "darken DYNAMICALLY like iOS 27"). The dock's own
50
+ `useGlassBackdropLuminance` observer samples the threaded `:background-canvas`
51
+ (aurora/blob) and WRITES `--glass-backdrop-luma`; this clamp READS it and lerps
52
+ the plate from the warm-cream floor toward the ≤24% AA ceiling as the field
53
+ brightens past the knee — deepening over a bright bleed, lifting translucent over
54
+ a dark trough (the SAME clamp the content/overlay tiers get — ONE axis/driver/
55
+ signal; the discrete `@container` bucket RETIRED). Calm (luma ≤ knee) → floor. */
56
+ --glass-tint-strength: clamp(
57
+ var(--glass-tint-strength-floor),
58
+ calc(
59
+ var(--glass-tint-strength-floor) +
60
+ (var(--glass-tint-strength-aa) - var(--glass-tint-strength-floor)) *
61
+ max(0, (var(--glass-backdrop-luma, 0) - var(--glass-backdrop-luma-knee, 0.6)) / (1 - var(--glass-backdrop-luma-knee, 0.6)))
62
+ ),
63
+ var(--glass-tint-strength-aa)
64
+ );
65
+ --dock-fg-on-aurora: var(--glass-tint-ink);
66
+ --muted-foreground: var(--foreground);
67
+ }
68
+
69
+ /* The ancestor-querying `@container` block KEPT — it reaches the DESCENDANT
70
+ nested-glass surfaces inside a dock when a consumer marks `--glass-backdrop:
71
+ light` on the dock's ancestor (the self-engage above re-points only the dock
72
+ root's own inheriting tokens; a consumer's explicit ancestor bucket still
73
+ cascades to nested glass through this block). */
74
+ @container style(--glass-backdrop: light) {
75
+ .glass-dock {
76
+ --glass-tint-source: var(--glass-tint-ink);
77
+ --glass-tint-strength: var(--glass-tint-strength-aa);
78
+ --dock-fg-on-aurora: var(--glass-tint-ink);
79
+ }
80
+ }
81
+
82
+ /* AX.W55 — the `contrast-color()` flip for the dock control foreground (Chrome
83
+ 147+/Safari 26+; progressive enhancement, NEVER the load-bearing floor). The
84
+ declarative bucket above already carries AA on all engines (it darkens the dock
85
+ plate so the warm-dark `--dock-fg-on-aurora` clears ~17:1 over white at the 18%
86
+ floor). On a supporting engine `contrast-color()` REFINES the control ink,
87
+ anchored on the LIGHT BACKDROP signal (`--card`, the warm-white surface base the
88
+ bright bucket implies) — `contrast-color(var(--card))` resolves to the legible
89
+ DARK ink. Anchoring on the dark ink instead inverts to white (illegible on the
90
+ still-light dock plate), so the anchor is the light surface, matching the rung
91
+ refinement in glass.css. The bucket is the floor; this is the native pick. */
92
+ @supports (color: contrast-color(white)) {
93
+ /* The SELF-ENGAGED dock refinement (the unconditional self-engage above);
94
+ progressive enhancement only — the declarative darken is the AA floor. */
95
+ :where(.glass-dock) {
96
+ --dock-fg-on-aurora: contrast-color(var(--card));
97
+ --muted-foreground: contrast-color(var(--card));
98
+ }
99
+ @container style(--glass-backdrop: light) {
100
+ .glass-dock {
101
+ --dock-fg-on-aurora: contrast-color(var(--card));
102
+ }
103
+ }
104
+ }
105
+ }
106
+
107
+ /* BB.W-LIQUID-REVEAL — the dock-expand bloom beat's blur-settle is OFF under
108
+ `prefers-reduced-motion: reduce` (the vestibular floor): a reduced-motion dock reads
109
+ crisp at every state, no in-between blur frames.
110
+ BC.W-DOCK-SHRINK-BLUR — the self-blur is now gated to `[data-morphing]`, so the PRM
111
+ carve zeroes it on the ARMED scope too (specificity 0,2,0) — a PRM dock that briefly
112
+ arms `[data-morphing]` carries no 3px bloom; the resting `.glass-dock` is already
113
+ crisp by the re-gate. */
114
+ @media (prefers-reduced-motion: reduce) {
115
+ .glass-dock,
116
+ .glass-dock[data-morphing] {
117
+ --dock-reveal-blur: 0px;
118
+ }
119
+ }