@mkbabb/glass-ui 3.13.0 → 4.0.1

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 (507) hide show
  1. package/README.md +3 -1
  2. package/dist/CardAction-CW7a0m8M.js +253 -0
  3. package/dist/{CommandShortcut-RowNEO6i.js → CommandShortcut-DvZNQ_HF.js} +58 -53
  4. package/dist/ConfiguratorRow-BR4l-ixA.js +143 -0
  5. package/dist/{ContextMenuContent-CT3AS1WX.js → ContextMenuContent-uWnVxDab.js} +1 -1
  6. package/dist/{ContextMenuSubContent-BQmxTAdw.js → ContextMenuSubContent-xol4sD2q.js} +32 -37
  7. package/dist/{DataTable-BCddn3T3.js → DataTable-CuKwF7wr.js} +99 -97
  8. package/dist/DialogContent-DcKK8k9i.js +103 -0
  9. package/dist/{DialogFooter-Blu4t7tJ.js → DialogFooter-BZNX5aVr.js} +3 -3
  10. package/dist/FadingScroll-DI6hQhT9.js +76 -0
  11. package/dist/{HoverCardContent-Csywg3YF.js → HoverCardContent-b2uaAMRR.js} +1 -1
  12. package/dist/{HoverPopover-CISOJQuZ.js → HoverPopover-CbqbNwgU.js} +2 -2
  13. package/dist/IconChip-BTD-nay5.js +55 -0
  14. package/dist/{IconTooltip-DPzE09X9.js → IconTooltip-Bl8gFZ8d.js} +1 -1
  15. package/dist/{Input-DWQQIOC4.js → Input-h9v5LeXf.js} +1 -1
  16. package/dist/{MetricBadge-C9QMz1KT.js → MetricBadge-RHdBP72w.js} +1 -1
  17. package/dist/Notification-VUwexFUf.js +43 -0
  18. package/dist/NumberFieldContent-Cq7EzX-U.js +138 -0
  19. package/dist/PopoverContent-DL7E6vJP.js +127 -0
  20. package/dist/{Progress-DwlUKGbr.js → Progress-DctG61iZ.js} +98 -78
  21. package/dist/{ScrollingText-DfFrwSph.js → ScrollingText-yOpBzFYq.js} +2 -2
  22. package/dist/{SelectScrollDownButton-CiDUxfEj.js → SelectScrollDownButton-CrA8F0iV.js} +35 -20
  23. package/dist/{Switch-CsIuYP_e.js → Switch-CwYNf8bo.js} +1 -1
  24. package/dist/Toaster-Bw4xR8xV.js +274 -0
  25. package/dist/{ToggleGroupItem-D_AHlRw9.js → ToggleGroupItem-pEM9vIhs.js} +50 -37
  26. package/dist/{TooltipProvider-B3MkB_8P.js → TooltipProvider-rzvnXz60.js} +1 -1
  27. package/dist/animated-digit.js +2 -2
  28. package/dist/api/index.d.ts +16 -8
  29. package/dist/api/types-extra.d.ts +6 -0
  30. package/dist/api.js +2 -2
  31. package/dist/aurora.js +888 -230
  32. package/dist/badge.js +1 -1
  33. package/dist/border-progress.d.ts +1 -0
  34. package/dist/border-progress.js +106 -0
  35. package/dist/button-DYCUa-tH.js +126 -0
  36. package/dist/button.js +1 -1
  37. package/dist/canvas.js +2 -2
  38. package/dist/card.js +2 -2
  39. package/dist/carousel.d.ts +1 -1
  40. package/dist/carousel.js +90 -151
  41. package/dist/collapsible.js +1 -1
  42. package/dist/color-swatch.d.ts +1 -0
  43. package/dist/color-swatch.js +47 -0
  44. package/dist/color.js +1 -1
  45. package/dist/command.js +1 -1
  46. package/dist/compile-CQEFRTmx.js +19 -0
  47. package/dist/components/custom/aurora/composables/atoms-fields.d.ts +39 -0
  48. package/dist/components/custom/aurora/composables/auroraFallbackGround.d.ts +108 -0
  49. package/dist/components/custom/aurora/composables/runtime.d.ts +19 -0
  50. package/dist/components/custom/aurora/composables/uniformBridge.d.ts +5 -1
  51. package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +51 -0
  52. package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +29 -0
  53. package/dist/components/custom/aurora/constants/budget.d.ts +21 -0
  54. package/dist/components/custom/aurora/constants/presets.d.ts +30 -2
  55. package/dist/components/custom/aurora/constants/renderMode.d.ts +63 -10
  56. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -0
  57. package/dist/components/custom/aurora/constants/shaders/oil-modes.glsl.d.ts +1 -0
  58. package/dist/components/custom/aurora/constants/shaders/procedural-color.wgsl.d.ts +4 -0
  59. package/dist/components/custom/aurora/index.d.ts +3 -2
  60. package/dist/components/custom/border-progress/BorderProgress.vue.d.ts +46 -0
  61. package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +22 -0
  62. package/dist/components/custom/border-progress/constants.d.ts +59 -0
  63. package/dist/components/custom/border-progress/index.d.ts +4 -0
  64. package/dist/components/custom/color-swatch/ColorSwatch.vue.d.ts +22 -0
  65. package/dist/components/custom/color-swatch/index.d.ts +1 -0
  66. package/dist/components/custom/concentric/Concentric.vue.d.ts +39 -0
  67. package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +11 -0
  68. package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +13 -0
  69. package/dist/components/custom/concentric/composables/ringField.d.ts +44 -0
  70. package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +13 -0
  71. package/dist/components/custom/concentric/composables/useConcentric.d.ts +35 -0
  72. package/dist/components/custom/concentric/constants.d.ts +43 -0
  73. package/dist/components/custom/concentric/index.d.ts +5 -0
  74. package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +4 -0
  75. package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -0
  76. package/dist/components/custom/configurator/Configurator.vue.d.ts +19 -8
  77. package/dist/components/custom/constellation/Constellation.vue.d.ts +18 -206
  78. package/dist/components/custom/constellation/composables/useConstellation.d.ts +26 -0
  79. package/dist/components/custom/constellation/constellationField.d.ts +2 -369
  80. package/dist/components/custom/constellation/constellationTypes.d.ts +369 -0
  81. package/dist/components/custom/constellation/index.d.ts +1 -1
  82. package/dist/components/custom/dock/DockIconButton.vue.d.ts +13 -4
  83. package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +10 -2
  84. package/dist/components/custom/dock/DockRail.vue.d.ts +17 -16
  85. package/dist/components/custom/dock/DockSection.vue.d.ts +69 -0
  86. package/dist/components/custom/dock/DockSeparator.vue.d.ts +49 -1
  87. package/dist/components/custom/dock/DockTabButton.vue.d.ts +5 -5
  88. package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +75 -0
  89. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +13 -0
  90. package/dist/components/custom/dock/constants.d.ts +35 -0
  91. package/dist/components/custom/dock/index.d.ts +2 -0
  92. package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +38 -0
  93. package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +41 -0
  94. package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +24 -0
  95. package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +34 -0
  96. package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +18 -0
  97. package/dist/components/custom/dot-flow-field/constants.d.ts +48 -0
  98. package/dist/components/custom/dot-flow-field/index.d.ts +5 -0
  99. package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -0
  100. package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +20 -0
  101. package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +1 -0
  102. package/dist/components/custom/easing/EasingConfigurator.vue.d.ts +33 -0
  103. package/dist/components/custom/easing/EasingPicker.vue.d.ts +49 -0
  104. package/dist/components/custom/easing/composables/useEasingPicker.d.ts +75 -0
  105. package/dist/components/custom/easing/constants.d.ts +28 -0
  106. package/dist/components/custom/easing/index.d.ts +3 -0
  107. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +10 -0
  108. package/dist/components/custom/fading-scroll/FadingScroll.vue.d.ts +25 -0
  109. package/dist/components/custom/fading-scroll/composables/useFadingScroll.d.ts +31 -0
  110. package/dist/components/custom/fading-scroll/constants.d.ts +19 -0
  111. package/dist/components/custom/fading-scroll/index.d.ts +2 -0
  112. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +19 -2
  113. package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +39 -0
  114. package/dist/components/custom/fourier-field/constants.d.ts +7 -0
  115. package/dist/components/custom/fourier-field/index.d.ts +1 -1
  116. package/dist/components/custom/fourier-field/math.d.ts +17 -0
  117. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +9 -1
  118. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +4 -2
  119. package/dist/components/custom/goo-blob/composables/uniformBridgeWGPU.d.ts +24 -0
  120. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +29 -12
  121. package/dist/components/custom/goo-blob/composables/wgpuSetup.d.ts +23 -0
  122. package/dist/components/custom/goo-blob/constants.d.ts +6 -1
  123. package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -0
  124. package/dist/components/custom/handmark/HandMark.vue.d.ts +29 -0
  125. package/dist/components/custom/handmark/brush.d.ts +269 -0
  126. package/dist/components/custom/handmark/composables/useHandMark.d.ts +89 -0
  127. package/dist/components/custom/handmark/constants.d.ts +39 -0
  128. package/dist/components/custom/handmark/freehand.d.ts +69 -0
  129. package/dist/components/custom/handmark/geometry.d.ts +52 -0
  130. package/dist/components/custom/handmark/index.d.ts +27 -0
  131. package/dist/components/custom/handmark/ink.d.ts +11 -0
  132. package/dist/components/custom/handmark/texture.d.ts +39 -0
  133. package/dist/components/custom/handmark/types.d.ts +62 -0
  134. package/dist/components/custom/icon-chip/IconChip.vue.d.ts +4 -0
  135. package/dist/components/custom/icon-chip/index.d.ts +2 -0
  136. package/dist/components/custom/icon-chip/types.d.ts +82 -0
  137. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +17 -2
  138. package/dist/components/custom/metric-stack/MetricStack.vue.d.ts +1 -1
  139. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +39 -0
  140. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  141. package/dist/components/custom/spa-view/SpaView.vue.d.ts +50 -0
  142. package/dist/components/custom/spa-view/index.d.ts +2 -0
  143. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +29 -24
  144. package/dist/components/custom/tabs/composables/useTabDragMorph.d.ts +42 -0
  145. package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +30 -21
  146. package/dist/components/custom/tabs/constants.d.ts +9 -3
  147. package/dist/components/custom/tabs/index.d.ts +1 -1
  148. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +15 -1
  149. package/dist/components/ui/_shared/index.d.ts +2 -0
  150. package/dist/components/ui/_shared/menuItemVariants.d.ts +19 -0
  151. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +41 -0
  152. package/dist/components/ui/badge/index.d.ts +1 -1
  153. package/dist/components/ui/button/Button.vue.d.ts +5 -2
  154. package/dist/components/ui/button/index.d.ts +2 -2
  155. package/dist/components/ui/card/Card.vue.d.ts +34 -4
  156. package/dist/components/ui/card/CardHeader.vue.d.ts +42 -16
  157. package/dist/components/ui/card/ScrollCard.vue.d.ts +33 -0
  158. package/dist/components/ui/card/ScrollCardHeader.vue.d.ts +17 -0
  159. package/dist/components/ui/card/index.d.ts +2 -0
  160. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +2 -2
  161. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +2 -2
  162. package/dist/components/ui/carousel/GlassCarouselPager.vue.d.ts +2 -2
  163. package/dist/components/ui/carousel/index.d.ts +0 -1
  164. package/dist/components/ui/command/Command.vue.d.ts +4 -1
  165. package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -3
  166. package/dist/components/ui/drawer/Drawer.vue.d.ts +46 -33
  167. package/dist/components/ui/drawer/DrawerContent.vue.d.ts +12 -8
  168. package/dist/components/ui/drawer/DrawerDescription.vue.d.ts +2 -2
  169. package/dist/components/ui/drawer/DrawerOverlay.vue.d.ts +1 -1
  170. package/dist/components/ui/drawer/DrawerTitle.vue.d.ts +2 -2
  171. package/dist/components/ui/drawer/composables/drawerSnapContext.d.ts +26 -0
  172. package/dist/components/ui/drawer/composables/useDrawerSnap.d.ts +17 -0
  173. package/dist/components/ui/drawer/constants.d.ts +45 -0
  174. package/dist/components/ui/drawer/index.d.ts +23 -15
  175. package/dist/components/ui/focus-scope/FocusScope.vue.d.ts +20 -0
  176. package/dist/components/ui/focus-scope/index.d.ts +2 -0
  177. package/dist/components/ui/index.d.ts +1 -1
  178. package/dist/components/ui/popover/PopoverContent.vue.d.ts +3 -0
  179. package/dist/components/ui/progress/ProgressDefault.vue.d.ts +3 -2
  180. package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +14 -3
  181. package/dist/components/ui/select/SelectContent.vue.d.ts +1 -1
  182. package/dist/components/ui/select/SelectTrigger.vue.d.ts +27 -4
  183. package/dist/components/ui/sheet/SheetContent.vue.d.ts +6 -0
  184. package/dist/components/ui/sheet/index.d.ts +1 -1
  185. package/dist/components/ui/skeleton/Skeleton.vue.d.ts +3 -0
  186. package/dist/components/ui/tags-input/TagsInput.vue.d.ts +2 -2
  187. package/dist/components/ui/toast/Toast.vue.d.ts +5 -2
  188. package/dist/components/ui/toast/use-toast.d.ts +14 -0
  189. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  190. package/dist/composables/dark/index.d.ts +1 -1
  191. package/dist/composables/dark/useGlobalDark.d.ts +23 -1
  192. package/dist/composables/glass/canvas2d/useCanvas2D.d.ts +13 -6
  193. package/dist/composables/glass/index.d.ts +5 -2
  194. package/dist/composables/glass/useSpecularPointer.d.ts +33 -0
  195. package/dist/composables/glass/useSpecularTracking.d.ts +20 -0
  196. package/dist/composables/glass/vSpecular.d.ts +2 -0
  197. package/dist/composables/glass/webgl/shaders/flow.glsl.d.ts +1 -0
  198. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +16 -0
  199. package/dist/composables/glass/webgpu/index.d.ts +2 -0
  200. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +54 -0
  201. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +84 -0
  202. package/dist/composables/motion/core/index.d.ts +1 -0
  203. package/dist/composables/motion/index.d.ts +4 -0
  204. package/dist/composables/motion/useDockCtaReceive.d.ts +59 -0
  205. package/dist/composables/motion/useDragMorph.d.ts +77 -0
  206. package/dist/composables/motion/useLiquidFlex.d.ts +11 -0
  207. package/dist/composables/motion/useLiquidPress.d.ts +71 -0
  208. package/dist/composables/motion/useLiquidReveal.d.ts +51 -0
  209. package/dist/composables/motion/useNumericTransition.d.ts +3 -3
  210. package/dist/composables/motion/usePointerVelocityField.d.ts +98 -0
  211. package/dist/composables/motion/useViewTransition.d.ts +36 -1
  212. package/dist/concentric.d.ts +1 -0
  213. package/dist/concentric.js +562 -0
  214. package/dist/configurator.js +3 -2
  215. package/dist/confirm-dialog.js +22 -24
  216. package/dist/constellation.js +93 -95
  217. package/dist/context-menu.js +3 -3
  218. package/dist/controls.js +10 -4
  219. package/dist/createCanvasLifecycle-CHD5XrDW.js +82 -0
  220. package/dist/dark.d.ts +1 -1
  221. package/dist/dark.js +1 -1
  222. package/dist/data-table.js +1 -1
  223. package/dist/dialog.js +2 -2
  224. package/dist/dock.js +738 -442
  225. package/dist/{dockContext-BegmJVmx.js → dockContext-BNfyPLe9.js} +1 -1
  226. package/dist/dom.js +5 -5
  227. package/dist/dot-flow-field.d.ts +1 -0
  228. package/dist/dot-flow-field.js +604 -0
  229. package/dist/drawer.d.ts +1 -0
  230. package/dist/drawer.js +380 -0
  231. package/dist/{dropdown-menu-DzkkyBwX.js → dropdown-menu-CofSZuk8.js} +14 -15
  232. package/dist/dropdown-menu.js +1 -1
  233. package/dist/easing.d.ts +1 -0
  234. package/dist/easing.js +463 -0
  235. package/dist/expandable-container.js +45 -38
  236. package/dist/fading-scroll.d.ts +1 -0
  237. package/dist/fading-scroll.js +2 -0
  238. package/dist/focus-scope.d.ts +1 -0
  239. package/dist/focus-scope.js +23 -0
  240. package/dist/forms.js +7 -7
  241. package/dist/fourier-field.js +135 -122
  242. package/dist/fourier-math.js +2 -2
  243. package/dist/glass-panel.js +39 -36
  244. package/dist/glass-ui.css +1 -1
  245. package/dist/glass-ui.js +154 -362
  246. package/dist/goo-blob.js +838 -227
  247. package/dist/handmark.d.ts +1 -0
  248. package/dist/handmark.js +707 -0
  249. package/dist/header-ribbon.js +1 -1
  250. package/dist/hover-card.js +1 -1
  251. package/dist/hover-popover.js +1 -1
  252. package/dist/icon-chip.d.ts +1 -0
  253. package/dist/icon-chip.js +2 -0
  254. package/dist/icon-tooltip.js +1 -1
  255. package/dist/index.d.ts +3 -3
  256. package/dist/instrument-chassis.js +1 -1
  257. package/dist/keyboard.js +1 -1
  258. package/dist/label.js +1 -1
  259. package/dist/labeled-field.js +6 -6
  260. package/dist/{math-U6-RrLmV.js → math-BINYmg5z.js} +11 -3
  261. package/dist/{menuItemVariants-DPiEarb0.js → menuItemVariants-D8VNHq22.js} +10 -4
  262. package/dist/metric-badge.js +1 -1
  263. package/dist/metric-cell.js +25 -22
  264. package/dist/metric-stack.js +4 -8
  265. package/dist/motion-core.js +36 -35
  266. package/dist/motion-curves.js +1 -1
  267. package/dist/motion.js +157 -55
  268. package/dist/notification.js +1 -1
  269. package/dist/number-field.js +1 -1
  270. package/dist/pager-dots.d.ts +1 -0
  271. package/dist/pager-dots.js +91 -0
  272. package/dist/paper-backdrop.js +1 -1
  273. package/dist/popover.js +1 -1
  274. package/dist/{presets-BKVyQfbt.js → presets-BW2b-fr1.js} +14 -1
  275. package/dist/{compile-B7NGOBcP.js → procedural-color.glsl-CIFsJhwI.js} +1 -155
  276. package/dist/procedural-color.wgsl-CToRHugY.js +224 -0
  277. package/dist/progress.js +1 -1
  278. package/dist/pulse.js +1 -1
  279. package/dist/reactive.js +2 -2
  280. package/dist/scrolling-text.js +1 -1
  281. package/dist/search.js +10 -12
  282. package/dist/select.js +3 -3
  283. package/dist/separator.js +1 -1
  284. package/dist/sheet-tZMg0E0w.js +218 -0
  285. package/dist/sheet.js +1 -1
  286. package/dist/{slider-B-JP2JlI.js → slider-DVb4HXU-.js} +7 -7
  287. package/dist/slider.js +1 -1
  288. package/dist/sortable-list.js +3 -3
  289. package/dist/spa-view.d.ts +1 -0
  290. package/dist/spa-view.js +46 -0
  291. package/dist/styles/animations.css +40 -31
  292. package/dist/styles/border-progress.css +109 -0
  293. package/dist/styles/cards.css +76 -0
  294. package/dist/styles/components.css +1 -1
  295. package/dist/styles/configurator.css +35 -0
  296. package/dist/styles/critical-partition.mjs +140 -0
  297. package/dist/styles/critical.css +12 -0
  298. package/dist/styles/deferred.css +31 -0
  299. package/dist/styles/dock/density.css +64 -0
  300. package/dist/styles/dock/layers.css +54 -30
  301. package/dist/styles/dock/morph.css +124 -7
  302. package/dist/styles/dock/overflow.css +31 -2
  303. package/dist/styles/dock/rail-extend.css +168 -71
  304. package/dist/styles/dock/section.css +59 -0
  305. package/dist/styles/dock/shell.css +83 -16
  306. package/dist/styles/dock-controls/icon-button.css +11 -1
  307. package/dist/styles/dock-controls/tab-button.css +24 -83
  308. package/dist/styles/dock-controls/triggers.css +7 -0
  309. package/dist/styles/dock.css +38 -3
  310. package/dist/styles/drawer.css +127 -35
  311. package/dist/styles/feedback-tone.css +104 -0
  312. package/dist/styles/glass/deep.css +44 -0
  313. package/dist/styles/glass/ladder.css +154 -52
  314. package/dist/styles/glass/material.css +78 -15
  315. package/dist/styles/glass/reveal.css +136 -0
  316. package/dist/styles/glass/rim.css +100 -0
  317. package/dist/styles/glass/surface-axis.css +113 -0
  318. package/dist/styles/glass/surfaces.css +189 -15
  319. package/dist/styles/glass-refract.css +96 -44
  320. package/dist/styles/glass-specular-track.css +7 -0
  321. package/dist/styles/glass.css +8 -2
  322. package/dist/styles/hover-popover.css +7 -6
  323. package/dist/styles/icon-chip.css +211 -0
  324. package/dist/styles/index.css +78 -4
  325. package/dist/styles/instrument-chassis.css +107 -2
  326. package/dist/styles/menu.css +127 -0
  327. package/dist/styles/scroll-choreography.css +300 -0
  328. package/dist/styles/segmented-tabs.css +188 -86
  329. package/dist/styles/select.css +50 -0
  330. package/dist/styles/theme/bridges.css +22 -1
  331. package/dist/styles/theme/literals.css +11 -2
  332. package/dist/styles/theme/radius.css +6 -1
  333. package/dist/styles/tokens/color-radius.css +40 -13
  334. package/dist/styles/tokens/dark-arm.css +200 -20
  335. package/dist/styles/tokens/glass-deep.css +75 -0
  336. package/dist/styles/tokens/glass-fx.css +333 -0
  337. package/dist/styles/tokens/glass.css +95 -315
  338. package/dist/styles/tokens/light-dark.css +64 -22
  339. package/dist/styles/tokens/offsets.css +116 -0
  340. package/dist/styles/tokens/on-glass-fg.css +39 -0
  341. package/dist/styles/tokens/property-regs.css +130 -10
  342. package/dist/styles/tokens/scale-paper.css +155 -84
  343. package/dist/styles/tokens/scheme-motion.css +102 -46
  344. package/dist/styles/tokens/scroll-tokens.css +123 -0
  345. package/dist/styles/tokens/{offsets-sizing.css → sizing.css} +88 -89
  346. package/dist/styles/tokens.css +9 -3
  347. package/dist/styles/transitions.css +7 -7
  348. package/dist/styles/typography/scale.css +153 -0
  349. package/dist/styles/typography/semantic.css +220 -0
  350. package/dist/styles/typography/utilities.css +174 -0
  351. package/dist/styles/typography.css +23 -507
  352. package/dist/styles/utilities/a11y-overrides.css +33 -4
  353. package/dist/styles/utilities/animate.css +27 -24
  354. package/dist/styles/utilities/base-misc.css +255 -0
  355. package/dist/styles/utilities/base.css +100 -138
  356. package/dist/styles/utilities/btn.css +21 -202
  357. package/dist/styles/utilities/metal.css +189 -0
  358. package/dist/styles/utilities.css +14 -7
  359. package/dist/styles/view-transition.css +4 -1
  360. package/dist/switch.js +1 -1
  361. package/dist/tabs.js +275 -191
  362. package/dist/timeline.js +2 -2
  363. package/dist/toast.js +1 -1
  364. package/dist/toggle-chip.js +3 -1
  365. package/dist/toggle-group.js +1 -1
  366. package/dist/tooltip.js +1 -1
  367. package/dist/typewriter.js +1 -1
  368. package/dist/{useAnimatedNumber-C5I3wWd8.js → useAnimatedNumber-BfUq2bUM.js} +1 -1
  369. package/dist/useCanvas2D-B8w_E3Rr.js +83 -0
  370. package/dist/useConfiguratorState-DNlOh6c8.js +161 -0
  371. package/dist/useDragMorph-DgxnsVJz.js +102 -0
  372. package/dist/{useGlobalDark-yhL4Wp-s.js → useGlobalDark-C28t0VWJ.js} +22 -3
  373. package/dist/useLiquidPress-kfb4KX79.js +39 -0
  374. package/dist/usePointerVelocityField-JbRd5CrM.js +137 -0
  375. package/dist/{useRAFLoop-Bxv0o6L5.js → useRAFLoop-UYa4zoiN.js} +1 -1
  376. package/dist/useSpring-C0jyvEJB.js +40 -0
  377. package/dist/useSpringMount-q1amq1SJ.js +71 -0
  378. package/dist/useSpringPress-BsqPr7FJ.js +34 -0
  379. package/dist/useSurfaceAxis-g0NloYEF.js +7 -0
  380. package/dist/{useTouchGate-Dg7MQI1G.js → useTouchGate-CBZTD4SD.js} +1 -1
  381. package/dist/vReveal-Czsb7zQC.js +10 -0
  382. package/dist/vSpecular-CQFmLNzA.js +68 -0
  383. package/dist/vendor-CKmzio-i.js +226 -0
  384. package/dist/watercolor-dot.js +12 -5
  385. package/package.json +193 -25
  386. package/src/styles/animations.css +40 -31
  387. package/src/styles/border-progress.css +109 -0
  388. package/src/styles/cards.css +76 -0
  389. package/src/styles/configurator.css +35 -0
  390. package/src/styles/critical-partition.mjs +140 -0
  391. package/src/styles/dock/density.css +64 -0
  392. package/src/styles/dock/layers.css +54 -30
  393. package/src/styles/dock/morph.css +124 -7
  394. package/src/styles/dock/overflow.css +31 -2
  395. package/src/styles/dock/rail-extend.css +168 -71
  396. package/src/styles/dock/section.css +59 -0
  397. package/src/styles/dock/shell.css +83 -16
  398. package/src/styles/dock-controls/icon-button.css +11 -1
  399. package/src/styles/dock-controls/tab-button.css +24 -83
  400. package/src/styles/dock-controls/triggers.css +7 -0
  401. package/src/styles/dock.css +38 -3
  402. package/src/styles/drawer.css +123 -35
  403. package/src/styles/feedback-tone.css +104 -0
  404. package/src/styles/glass/deep.css +44 -0
  405. package/src/styles/glass/ladder.css +154 -52
  406. package/src/styles/glass/material.css +78 -15
  407. package/src/styles/glass/reveal.css +136 -0
  408. package/src/styles/glass/rim.css +100 -0
  409. package/src/styles/glass/surface-axis.css +113 -0
  410. package/src/styles/glass/surfaces.css +189 -15
  411. package/src/styles/glass-refract.css +96 -44
  412. package/src/styles/glass-specular-track.css +7 -0
  413. package/src/styles/glass.css +8 -2
  414. package/src/styles/hover-popover.css +7 -6
  415. package/src/styles/icon-chip.css +211 -0
  416. package/src/styles/index.css +78 -4
  417. package/src/styles/instrument-chassis.css +107 -2
  418. package/src/styles/menu.css +127 -0
  419. package/src/styles/scroll-choreography.css +300 -0
  420. package/src/styles/segmented-tabs.css +184 -84
  421. package/src/styles/select.css +50 -0
  422. package/src/styles/theme/bridges.css +22 -1
  423. package/src/styles/theme/literals.css +11 -2
  424. package/src/styles/theme/radius.css +6 -1
  425. package/src/styles/tokens/color-radius.css +40 -13
  426. package/src/styles/tokens/dark-arm.css +200 -20
  427. package/src/styles/tokens/glass-deep.css +75 -0
  428. package/src/styles/tokens/glass-fx.css +333 -0
  429. package/src/styles/tokens/glass.css +95 -315
  430. package/src/styles/tokens/light-dark.css +64 -22
  431. package/src/styles/tokens/offsets.css +116 -0
  432. package/src/styles/tokens/on-glass-fg.css +39 -0
  433. package/src/styles/tokens/property-regs.css +130 -10
  434. package/src/styles/tokens/scale-paper.css +155 -84
  435. package/src/styles/tokens/scheme-motion.css +102 -46
  436. package/src/styles/tokens/scroll-tokens.css +123 -0
  437. package/src/styles/tokens/{offsets-sizing.css → sizing.css} +88 -89
  438. package/src/styles/tokens.css +9 -3
  439. package/src/styles/transitions.css +7 -7
  440. package/src/styles/typography/scale.css +153 -0
  441. package/src/styles/typography/semantic.css +220 -0
  442. package/src/styles/typography/utilities.css +174 -0
  443. package/src/styles/typography.css +23 -507
  444. package/src/styles/utilities/a11y-overrides.css +33 -4
  445. package/src/styles/utilities/animate.css +27 -24
  446. package/src/styles/utilities/base-misc.css +255 -0
  447. package/src/styles/utilities/base.css +100 -138
  448. package/src/styles/utilities/btn.css +21 -202
  449. package/src/styles/utilities/metal.css +189 -0
  450. package/src/styles/utilities.css +14 -7
  451. package/src/styles/view-transition.css +4 -1
  452. package/dist/CardAction-Cj2eycQ2.js +0 -157
  453. package/dist/DialogContent-Dl9WkAoS.js +0 -100
  454. package/dist/Notification-DdwNxIrI.js +0 -100
  455. package/dist/NumberFieldContent-CqaN-SvN.js +0 -145
  456. package/dist/PopoverContent-BYwt2-4x.js +0 -121
  457. package/dist/TabsList-Dttss653.js +0 -105
  458. package/dist/Toaster-D6q4HtXu.js +0 -263
  459. package/dist/button-ChXMfsud.js +0 -81
  460. package/dist/check-njhk-vfu.js +0 -7
  461. package/dist/chevron-down-DKkxb4VV.js +0 -7
  462. package/dist/chevron-right-CPXbqQQz.js +0 -7
  463. package/dist/chevron-up-n_24SqI-.js +0 -7
  464. package/dist/components/custom/underline/GlassUnderline.vue.d.ts +0 -84
  465. package/dist/components/custom/underline/index.d.ts +0 -2
  466. package/dist/components/custom/underline/types.d.ts +0 -56
  467. package/dist/components/ui/carousel/CarouselDots.vue.d.ts +0 -4
  468. package/dist/createLucideIcon-DydS2qgk.js +0 -43
  469. package/dist/minimize-2-BV31Ob_h.js +0 -38
  470. package/dist/search-BSGrf2Sk.js +0 -12
  471. package/dist/sheet-1fChZjtw.js +0 -214
  472. package/dist/underline.d.ts +0 -1
  473. package/dist/underline.js +0 -85
  474. package/dist/useCanvas2D-ClrQuZtp.js +0 -96
  475. package/dist/useConfiguratorState-DAoeHVue.js +0 -287
  476. package/dist/useSpecularTracking-Bo5su68i.js +0 -32
  477. package/dist/useSpringMount-CI2jOstM.js +0 -108
  478. package/dist/vReveal-CqaCz_mC.js +0 -44
  479. package/dist/x-BUwTKe50.js +0 -10
  480. /package/dist/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-68dEXIAl.js} +0 -0
  481. /package/dist/{InstrumentChassis-UUJX0-mW.js → InstrumentChassis-Bx0F_q5g.js} +0 -0
  482. /package/dist/{Label-r3WzWrsj.js → Label-C2ejNWeC.js} +0 -0
  483. /package/dist/{ModalOverlay-DVLI2VRr.js → ModalOverlay-D1VrWyoi.js} +0 -0
  484. /package/dist/{PaperBackdrop-DIXTtVq6.js → PaperBackdrop-Vf3tlpvd.js} +0 -0
  485. /package/dist/{SelectGroup-aumMgWLs.js → SelectGroup-DwwjicPY.js} +0 -0
  486. /package/dist/{SelectSeparator-BQ_1Fcbp.js → SelectSeparator-DXswVdRz.js} +0 -0
  487. /package/dist/{Separator-0JE6LtNu.js → Separator-pKF0oA4M.js} +0 -0
  488. /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-C1je1s0u.js} +0 -0
  489. /package/dist/{badge-UILT_3pZ.js → badge-D9XWW4GT.js} +0 -0
  490. /package/dist/{color-CUYeFbgd.js → color-DweYl7pE.js} +0 -0
  491. /package/dist/{constants-CS75AWHG.js → constants-BPOqYJAm.js} +0 -0
  492. /package/dist/{createContext-BM46COQ-.js → createContext-CpBNTRMI.js} +0 -0
  493. /package/dist/{prng-D27-B3tK.js → prng-Za0Rmgag.js} +0 -0
  494. /package/dist/{resolveCanvasColor-BBiYfp8g.js → resolveCanvasColor-CUyHr5Uu.js} +0 -0
  495. /package/dist/{springPresets--YdWTHtm.js → springPresets-CFQGQfdl.js} +0 -0
  496. /package/dist/{useIntersectionPause-Cc-H9ees.js → useIntersectionPause-Bj4sPkMh.js} +0 -0
  497. /package/dist/{useInterval-iHludrxk.js → useInterval-CvK1mL92.js} +0 -0
  498. /package/dist/{useKeyboardShortcuts-Be3w_Rwk.js → useKeyboardShortcuts-BXWXOZ-9.js} +0 -0
  499. /package/dist/{useLiquidFlex-BL0lLLN2.js → useLiquidFlex-mZPMiNXh.js} +0 -0
  500. /package/dist/{useResizeObserver-BhgdhOIj.js → useResizeObserver-Bpoi7tRE.js} +0 -0
  501. /package/dist/{useResolveTokenColor-Dvn2RZJW.js → useResolveTokenColor-vAylyR0x.js} +0 -0
  502. /package/dist/{useScrollProgress-Dlvx-L3v.js → useScrollProgress-D7bYU2RK.js} +0 -0
  503. /package/dist/{useSortable-muI29agz.js → useSortable-DHjtZSEd.js} +0 -0
  504. /package/dist/{useTextHighlight-DmRYkOBx.js → useTextHighlight-CWEi25hf.js} +0 -0
  505. /package/dist/{useTimer-Dzarvzuk.js → useTimer-BHJOKr35.js} +0 -0
  506. /package/dist/{useUserInvalidAria-B2h6jAM_.js → useUserInvalidAria-y5namzeE.js} +0 -0
  507. /package/dist/{useViewportReady-B40FK4Pa.js → useViewportReady-anbac3m6.js} +0 -0
@@ -0,0 +1,255 @@
1
+ /* utilities/base-misc.css
2
+ The @layer components FORM/INTERACTION TAIL — status-dot, depth-text,
3
+ preserve-3d, ios input fix, fading-scroll (scroll-state-driven edge fade) +
4
+ the @supports (animation-timeline: scroll()) native path, deferred-section,
5
+ card-scroll-host, gold-shimmer, kbd.
6
+ BB.W-CARVE3 carved this off utilities/base.css (the post-tap-squish tail) so
7
+ each partial stays under the no-god-module 500-line bound. @import-ed by
8
+ utilities.css IMMEDIATELY AFTER base.css — two adjacent same-`@layer
9
+ components` blocks compose identically, so the dist is byte-isomorphic. The
10
+ @property --fade-start/--fade-end registrations the .fading-scroll rules read
11
+ stay in base.css (source-order BEFORE this partial). See
12
+ docs/precepts/design-idioms.md §cohesion-aware partials. */
13
+
14
+ @layer components {
15
+ /* ── Status dot indicator ── */
16
+ .status-dot {
17
+ display: inline-block;
18
+ width: 0.5rem;
19
+ height: 0.5rem;
20
+ border-radius: var(--radius-pill);
21
+ flex-shrink: 0;
22
+ transition:
23
+ color var(--duration-fast) var(--ease-standard),
24
+ background var(--duration-fast) var(--ease-standard),
25
+ box-shadow var(--duration-fast) var(--ease-standard);
26
+ }
27
+ /* ── Depth text (layered offset stamp) ──
28
+ AW.W26 — composes the `--text-shadow-depth` @theme identity token (the
29
+ hard offset stack + soft ambient tail) instead of a hand-rolled multi-stop
30
+ literal. The token holds the stack inside the `@theme` defs (gate 4) and
31
+ re-tints under `.dark` via `--shadow`/`--shadow-color` BY CONSTRUCTION. */
32
+ .depth-text {
33
+ --depth-color-primary: var(--primary);
34
+
35
+ color: var(--depth-color-primary);
36
+ text-shadow: var(--text-shadow-depth);
37
+ }
38
+
39
+ /* ── 3D preserve ── */
40
+ .preserve-3d {
41
+ transform-style: preserve-3d;
42
+ }
43
+
44
+ /* ── iOS input font-size fix (prevent auto-zoom) ── */
45
+ .ios input,
46
+ .ios select,
47
+ .ios textarea,
48
+ .ios [contenteditable] {
49
+ font-size: max(1rem, 1em);
50
+ }
51
+
52
+ /* ── Fading scroll — the scroll-STATE-driven edge fade (BA.W-FADING-SCROLL) ──
53
+ `<FadingScroll>`'s recipe. Each edge's ramp width is a registered
54
+ `--fade-start` / `--fade-end` custom (above, default 0px = SHARP), driven
55
+ by the
56
+ `scroll(self)` timeline so the start edge feathers only past `scroll > 0`
57
+ and the end edge only while trailing overflow remains.
58
+
59
+ The root IS the scroll port (the component sets overflow via the consumer's
60
+ utilities — `overflow-x-auto` / `overflow-y-auto` come from the class the
61
+ consumer passes; the axis floor below sets the OTHER axis). The 4-stop
62
+ mask reads the two customs; at rest both are 0px so the gradient is a flat
63
+ opaque pass-through (no feather). */
64
+ .fading-scroll {
65
+ /* The base mask is axis-specialized by the modifier classes below. The
66
+ default-x case uses the inline ramp; the y case the block ramp. */
67
+ mask-image: linear-gradient(
68
+ to right,
69
+ transparent 0,
70
+ black var(--fade-start),
71
+ black calc(100% - var(--fade-end)),
72
+ transparent 100%
73
+ );
74
+ }
75
+ .fading-scroll--x {
76
+ overflow-x: auto;
77
+ mask-image: linear-gradient(
78
+ to right,
79
+ transparent 0,
80
+ black var(--fade-start),
81
+ black calc(100% - var(--fade-end)),
82
+ transparent 100%
83
+ );
84
+ }
85
+ .fading-scroll--y {
86
+ overflow-y: auto;
87
+ mask-image: linear-gradient(
88
+ to bottom,
89
+ transparent 0,
90
+ black var(--fade-start),
91
+ black calc(100% - var(--fade-end)),
92
+ transparent 100%
93
+ );
94
+ }
95
+
96
+ /* The NATIVE primary path: drive the per-edge customs off a `scroll(self)`
97
+ timeline — ZERO JS on a supporting engine (the `scroll-driven.css` /
98
+ Baseline-Newly-Available bar). UNLIKE `scroll-driven.css` this is NOT
99
+ wrapped in `prefers-reduced-motion: no-preference` — the fade is a
100
+ LEGIBILITY cue, not motion, so it stays present under PRM (it merely stops
101
+ interpolating; the discrete overflow-edge presence stays correct, and the
102
+ registered customs make even the static endpoints land right). */
103
+ @supports (animation-timeline: scroll()) {
104
+ /* The start edge: from sharp (0) to feathered, completing within the
105
+ first `--fade-scroll-width` of scroll — so at `scroll = 0` the start is
106
+ SHARP and it ramps in only once the user genuinely scrolls past. */
107
+ @keyframes gl-fade-start-in {
108
+ from {
109
+ --fade-start: 0px;
110
+ }
111
+ to {
112
+ --fade-start: var(--fade-scroll-width);
113
+ }
114
+ }
115
+ /* The end edge: feathered while trailing overflow remains, ramping OUT to
116
+ sharp over the last `--fade-scroll-width` of scroll — so at the scroll
117
+ end (no trailing overflow) the end is SHARP. */
118
+ @keyframes gl-fade-end-out {
119
+ from {
120
+ --fade-end: var(--fade-scroll-width);
121
+ }
122
+ to {
123
+ --fade-end: 0px;
124
+ }
125
+ }
126
+ /* x axis — `scroll(self inline)`; two animations on the ONE element, each
127
+ gated by `animation-range` to the start / end sliver of the scroll
128
+ distance. `fadeStart`/`fadeEnd` props toggle their respective
129
+ animation off via the `[data-fade-*]` presence attrs. */
130
+ .fading-scroll--x[data-fade-start] {
131
+ animation: gl-fade-start-in linear both;
132
+ animation-timeline: scroll(self inline);
133
+ animation-range: 0 var(--fade-scroll-width);
134
+ }
135
+ .fading-scroll--x[data-fade-end] {
136
+ animation: gl-fade-end-out linear both;
137
+ animation-timeline: scroll(self inline);
138
+ animation-range: calc(100% - var(--fade-scroll-width)) 100%;
139
+ }
140
+ /* BOTH edges on one element compose as two named animations. */
141
+ .fading-scroll--x[data-fade-start][data-fade-end] {
142
+ animation:
143
+ gl-fade-start-in linear both,
144
+ gl-fade-end-out linear both;
145
+ animation-timeline: scroll(self inline), scroll(self inline);
146
+ animation-range:
147
+ 0 var(--fade-scroll-width),
148
+ calc(100% - var(--fade-scroll-width)) 100%;
149
+ }
150
+ /* y axis — `scroll(self block)`. */
151
+ .fading-scroll--y[data-fade-start] {
152
+ animation: gl-fade-start-in linear both;
153
+ animation-timeline: scroll(self block);
154
+ animation-range: 0 var(--fade-scroll-width);
155
+ }
156
+ .fading-scroll--y[data-fade-end] {
157
+ animation: gl-fade-end-out linear both;
158
+ animation-timeline: scroll(self block);
159
+ animation-range: calc(100% - var(--fade-scroll-width)) 100%;
160
+ }
161
+ .fading-scroll--y[data-fade-start][data-fade-end] {
162
+ animation:
163
+ gl-fade-start-in linear both,
164
+ gl-fade-end-out linear both;
165
+ animation-timeline: scroll(self block), scroll(self block);
166
+ animation-range:
167
+ 0 var(--fade-scroll-width),
168
+ calc(100% - var(--fade-scroll-width)) 100%;
169
+ }
170
+ }
171
+
172
+ /* ── Deferred section — render-skip an offscreen subtree (AQ.W3 §5) ──────
173
+ `content-visibility: auto` skips layout/paint/style of an offscreen
174
+ subtree — the INP-under-load lever (fourier γ, muster, speedtest, words).
175
+ `contain-intrinsic-size: auto <estimate>` is measurement-safe: the `auto`
176
+ prefix makes the engine REMEMBER the last-rendered size (no scroll-jump on
177
+ re-entry); plain `<estimate>` freezes the section + thrashes the scrollbar
178
+ — the trap this closes. Estimate is token-driven (`--deferred-section-
179
+ size`, default 30rem). `.deferred-section--cached` →
180
+ `content-visibility: hidden` (always skipped, state CACHED — cheaper to
181
+ re-show than `display:none`). Baseline Widely; unsupporting engines render
182
+ normally. JS HOOK: the engine fires `contentvisibilityautostatechange`
183
+ { skipped } at the render-skip boundary — pair with `useRAFLoop`
184
+ pause/resume: `el.addEventListener('contentvisibilityautostatechange',
185
+ e => e.skipped ? loop.pause() : loop.resume())`. */
186
+ .deferred-section {
187
+ content-visibility: auto;
188
+ contain-intrinsic-size: auto var(--deferred-section-size, 30rem);
189
+ }
190
+ .deferred-section--cached {
191
+ content-visibility: hidden;
192
+ contain-intrinsic-size: auto var(--deferred-section-size, 30rem);
193
+ }
194
+
195
+ /* ── Card scroll-timeline host (AI.W1-α) ───────────────────────────────
196
+ Canonical scroll-overflow host that emits the `--card-scroll` named
197
+ scroll-timeline consumed by `<CardHeader shrink>`. Apply to the
198
+ scroll-overflow ancestor (typically the `<Card>` itself OR a wrapper
199
+ inside it that carries `overflow-y: auto`).
200
+
201
+ `contain: layout style paint` isolates the named timeline so child
202
+ animations respond to THIS host's scroll only — not to portal-
203
+ triggered layout shifts in ancestor containers (the load-bearing
204
+ isolation guarantee the value.js `PaneHeader.vue:18-29` comment
205
+ called out and the AI.W1 spec §1.2 ratified as canon).
206
+
207
+ Disambiguated from `.fading-scroll` (the `<FadingScroll>` mask-image
208
+ edge fade at the container's leading/trailing edge) — `.card-scroll-host`
209
+ does NOT paint any visual; it only emits the timeline. */
210
+ .card-scroll-host {
211
+ contain: layout style paint;
212
+ scroll-timeline: --card-scroll block;
213
+ }
214
+
215
+ /* ── Shimmer text effects ──
216
+ BB.W-METAL-SHIMMER — the gold-only `gold-shimmer-slide` is RETIRED (clean
217
+ break, no alias); `.gold-shimmer` re-points onto the metal-PARAMETERIZED
218
+ `metal-shimmer-sweep` keyframe with `--metal-shimmer-color: gold`. The gold
219
+ gradient stops + the `background-size`/`background-clip` + the PRM bracket are
220
+ byte-PRESERVED — the gold READ is unchanged; only the keyframe NAME generalizes.
221
+ The text-fill + background-clip composition is load-bearing visual (the gold
222
+ gradient itself); only the `animation:` line is wrapped in the PRM no-preference
223
+ bracket so PRM users see the static gradient without the slide. */
224
+ .gold-shimmer {
225
+ --metal-shimmer-color: gold;
226
+ background: linear-gradient(90deg, var(--color-gold-dark), var(--color-gold-light), var(--color-gold), var(--color-gold-light), var(--color-gold-dark));
227
+ background-size: 250% 100%;
228
+ background-clip: text;
229
+ -webkit-background-clip: text;
230
+ color: transparent;
231
+ }
232
+ @media (prefers-reduced-motion: no-preference) {
233
+ .gold-shimmer {
234
+ animation: metal-shimmer-sweep var(--duration-shimmer) linear infinite;
235
+ }
236
+ }
237
+
238
+ /* ── Keyboard key ── */
239
+ .kbd {
240
+ display: inline-flex;
241
+ align-items: center;
242
+ justify-content: center;
243
+ min-height: 1.5rem;
244
+ min-width: 1.5rem;
245
+ padding: 0 0.375rem;
246
+ font-family: var(--font-mono);
247
+ font-size: var(--type-micro);
248
+ background: var(--muted);
249
+ border: 1px solid var(--border);
250
+ border-radius: var(--radius-sm);
251
+ box-shadow: 0 1px 0 1px color-mix(in srgb, var(--border) 30%, transparent);
252
+ line-height: 1;
253
+ }
254
+
255
+ }
@@ -1,7 +1,52 @@
1
1
  /* utilities/base.css
2
- The @layer components base half — section-description, labeled-field, popover-content, scrollbar, focus-ring, hairline-accent, interactive-item, tap-squish, status-dot, depth-text, preserve-3d, ios input fix, scroll-fade masks, deferred-section, scroll-timeline host, shimmer text, keyboard key.
2
+ The @layer components FORM/INTERACTION half — the @property fade pair (read by
3
+ the .fading-scroll rules in base-misc.css), section-description, labeled-field
4
+ (incl. the width-contract + error region), popover-content, scrollbar,
5
+ focus-ring, hairline-accent, interactive-item, tap-squish.
6
+ BB.W-CARVE3 carved the post-tap-squish tail (status-dot → kbd, incl. the
7
+ fading-scroll recipe) into the adjacent base-misc.css partial so each stays
8
+ under the no-god-module 500-line bound. The two adjacent same-`@layer
9
+ components` blocks compose identically — the dist is byte-isomorphic.
3
10
  Carved from the utilities.css cascade root; @import-ed by utilities.css in
4
11
  cascade order. See docs/precepts/design-idioms.md §cohesion-aware partials. */
12
+
13
+ /* ═══════════════════════════════════════════════
14
+ §FADING-SCROLL — the per-edge mask-width interpolation customs (BA.W-FADING-SCROLL)
15
+
16
+ `<FadingScroll>`'s scroll-state-driven edge fade is a `mask-image` whose two
17
+ per-edge ramp widths are these registered `@property <length-percentage>`
18
+ customs. Registered (not bare custom props) so they INTERPOLATE smoothly off
19
+ the `scroll(self)` timeline below — an unregistered custom would jump between
20
+ the textual `0px` / `var(--fade-scroll-width)` endpoints rather than feathering.
21
+ `inherits: false`: each scroll port owns its own edge state (an ancestor must
22
+ never push a fade-width onto an unrelated descendant strip — mirrors the
23
+ `--progress-crescendo` / `--ripple-radius` non-inheriting registrations).
24
+ `initial-value: 0px` = the SHARP floor: an at-rest, no-overflow edge has NO
25
+ feather (the R8-08 "Shy" defect — the static `.scroll-fade-*` mask half-erased
26
+ the first card's chrome at rest — is structurally impossible because the
27
+ default is sharp and the timeline OPENS the feather only on real scroll).
28
+
29
+ These customs are INTERNAL (not a public token). The public knob is
30
+ `--fade-scroll-width` (offsets-sizing.css). Co-registered HERE (the consuming
31
+ CSS file) per the `@property --dock-morph-t` in dock.css precedent — a
32
+ component's typed property rides its own recipe file.
33
+
34
+ Co-written by the `useFadingScroll` JS fallback (the dual-path single writer):
35
+ the native `scroll(self)` timeline below owns these customs on a supporting
36
+ engine, the composable writes the SAME two customs when it is absent. Never
37
+ both — the composable feature-detect-gates OFF under timeline support.
38
+ ═══════════════════════════════════════════════ */
39
+ @property --fade-start {
40
+ syntax: "<length-percentage>";
41
+ inherits: false;
42
+ initial-value: 0px;
43
+ }
44
+ @property --fade-end {
45
+ syntax: "<length-percentage>";
46
+ inherits: false;
47
+ initial-value: 0px;
48
+ }
49
+
5
50
  @layer components {
6
51
  /* ── Section description (V.W3.T7) ──────────────────────────────
7
52
  Canonical recipe for the `<Section>` primitive's description
@@ -40,6 +85,23 @@
40
85
  without `:has()`/`:user-invalid` (not a live+dead alias). */
41
86
  .labeled-field {
42
87
  --field-label-color: var(--muted-foreground);
88
+ /* THE WIDTH CONTRACT (BA.W-CONFIG-CHASSIS.1, S1 / CFG-1). The
89
+ labeled-field root claims FULL inline width + lays its label/control
90
+ stack out as a column, so a slotted control (a Slider whose inner
91
+ `.glass-slider` resolves `width: 100%`) has a DEFINITE width to
92
+ resolve against — never the content-sized 0 the bare `display:block`
93
+ default produced inside the configurator row's flex slot. This is the
94
+ half that survives the `hide-label` register: with the visible label
95
+ rendered `sr-only`, the label was the only intrinsic width
96
+ contributor, so the field collapsed; `width:100%` makes the field own
97
+ its inline axis regardless of label visibility. `min-width:0` lets it
98
+ shrink below content min inside a constrained row. Standalone use is
99
+ unaffected (a `<LabeledField>` outside a flex parent fills its block
100
+ container exactly as the prior `display:block` did). */
101
+ display: flex;
102
+ flex-direction: column;
103
+ inline-size: 100%;
104
+ min-inline-size: 0;
43
105
  }
44
106
  .labeled-field:has(:user-invalid),
45
107
  .labeled-field.has-error {
@@ -72,8 +134,9 @@
72
134
  (PopoverContent, DropdownMenuContent, SelectContent, etc.).
73
135
  Covers radius + outline + popover-foreground; consumers compose
74
136
  this with `.glass-floating` (bg + blur + border + shadow), with
75
- `.popover-animate` (data-state animation), and with the per-host
76
- z-rung. The floating-tier shadow comes from
137
+ `.glass-reveal` (the spring-clocked data-state LIQUID-ENTER —
138
+ BB.W-LIQUID-REVEAL, off the retired `popover-animate`), and with the
139
+ per-host z-rung. The floating-tier shadow comes from
77
140
  `--glass-shadow-floating` via `.glass-floating`, replacing the
78
141
  `shadow-md`/`shadow-lg` literals that bypassed the canonical
79
142
  cascade. */
@@ -223,143 +286,42 @@
223
286
  }
224
287
  }
225
288
 
226
- /* ── Status dot indicator ── */
227
- .status-dot {
228
- display: inline-block;
229
- width: 0.5rem;
230
- height: 0.5rem;
231
- border-radius: var(--radius-pill);
232
- flex-shrink: 0;
233
- transition:
234
- color var(--duration-fast) var(--ease-standard),
235
- background var(--duration-fast) var(--ease-standard),
236
- box-shadow var(--duration-fast) var(--ease-standard);
237
- }
238
- /* ── Depth text (layered offset stamp) ──
239
- AW.W26 — composes the `--text-shadow-depth` @theme identity token (the
240
- hard offset stack + soft ambient tail) instead of a hand-rolled multi-stop
241
- literal. The token holds the stack inside the `@theme` defs (gate 4) and
242
- re-tints under `.dark` via `--shadow`/`--shadow-color` BY CONSTRUCTION. */
243
- .depth-text {
244
- --depth-color-primary: var(--primary);
245
-
246
- color: var(--depth-color-primary);
247
- text-shadow: var(--text-shadow-depth);
248
- }
289
+ /* ── Glass-press — the interactive press register (BB.W-PRESS-UNIFY) ──
290
+ The CSS half of the `<Card :pressable>` / interactive-glass press. Two
291
+ coupled legs on ONE `--card-press-t` drive (the `useLiquidPress` writes the
292
+ JS-driven value; the CSS `:active` is the no-JS / SSR floor):
249
293
 
250
- /* ── 3D preserve ── */
251
- .preserve-3d {
252
- transform-style: preserve-3d;
253
- }
254
-
255
- /* ── iOS input font-size fix (prevent auto-zoom) ── */
256
- .ios input,
257
- .ios select,
258
- .ios textarea,
259
- .ios [contenteditable] {
260
- font-size: max(1rem, 1em);
261
- }
262
-
263
- /* ── Scroll fade masks ──
264
- Single-source `mask-image` (AV.W16 TW7): the `-webkit-` companion is
265
- dropped — Tailwind v4's Lightning CSS build pipeline auto-prefixes per
266
- the browserslist targets, mirroring the glass ladder's single-source
267
- `backdrop-filter` (glass.css). NOTE: this is the consistency cut; it
268
- does NOT conflict with W15's `@supports`-gated older-Safari mask
269
- fallback (that fallback is the distinct case where the companion is
270
- genuinely needed and W15 gates it). */
271
- .scroll-fade-mask {
272
- mask-image: linear-gradient(to right, transparent, black var(--mask-fade-width), black calc(100% - var(--mask-fade-width)), transparent);
273
- }
274
-
275
- .scroll-fade-top {
276
- mask-image: linear-gradient(to bottom, transparent, black var(--mask-fade-width));
277
- }
278
-
279
- .scroll-fade-bottom {
280
- mask-image: linear-gradient(to bottom, black calc(100% - var(--mask-fade-width)), transparent);
281
- }
282
-
283
- .scroll-fade-y {
284
- mask-image: linear-gradient(to bottom, transparent, black var(--mask-fade-width), black calc(100% - var(--mask-fade-width)), transparent);
285
- }
286
-
287
- /* ── Deferred section — render-skip an offscreen subtree (AQ.W3 §5) ──────
288
- `content-visibility: auto` skips layout/paint/style of an offscreen
289
- subtree — the INP-under-load lever (fourier γ, muster, speedtest, words).
290
- `contain-intrinsic-size: auto <estimate>` is measurement-safe: the `auto`
291
- prefix makes the engine REMEMBER the last-rendered size (no scroll-jump on
292
- re-entry); plain `<estimate>` freezes the section + thrashes the scrollbar
293
- — the trap this closes. Estimate is token-driven (`--deferred-section-
294
- size`, default 30rem). `.deferred-section--cached` →
295
- `content-visibility: hidden` (always skipped, state CACHED — cheaper to
296
- re-show than `display:none`). Baseline Widely; unsupporting engines render
297
- normally. JS HOOK: the engine fires `contentvisibilityautostatechange`
298
- { skipped } at the render-skip boundary — pair with `useRAFLoop`
299
- pause/resume: `el.addEventListener('contentvisibilityautostatechange',
300
- e => e.skipped ? loop.pause() : loop.resume())`. */
301
- .deferred-section {
302
- content-visibility: auto;
303
- contain-intrinsic-size: auto var(--deferred-section-size, 30rem);
304
- }
305
- .deferred-section--cached {
306
- content-visibility: hidden;
307
- contain-intrinsic-size: auto var(--deferred-section-size, 30rem);
308
- }
309
-
310
- /* ── Card scroll-timeline host (AI.W1-α) ───────────────────────────────
311
- Canonical scroll-overflow host that emits the `--card-scroll` named
312
- scroll-timeline consumed by `<CardHeader shrink>`. Apply to the
313
- scroll-overflow ancestor (typically the `<Card>` itself OR a wrapper
314
- inside it that carries `overflow-y: auto`).
315
-
316
- `contain: layout style paint` isolates the named timeline so child
317
- animations respond to THIS host's scroll only — not to portal-
318
- triggered layout shifts in ancestor containers (the load-bearing
319
- isolation guarantee the value.js `PaneHeader.vue:18-29` comment
320
- called out and the AI.W1 spec §1.2 ratified as canon).
321
-
322
- Disambiguated from `.scroll-fade-*` (mask-image fade gradient at
323
- the container's leading/trailing edge) — `.card-scroll-host` does
324
- NOT paint any visual; it only emits the timeline. */
325
- .card-scroll-host {
326
- contain: layout style paint;
327
- scroll-timeline: --card-scroll block;
328
- }
329
-
330
- /* ── Shimmer text effects ──
331
- The text-fill + background-clip composition is load-bearing visual
332
- (the gold gradient itself); only the `animation:` line is wrapped in
333
- the PRM no-preference bracket so PRM users see the static gradient
334
- without the slide animation. */
335
- .gold-shimmer {
336
- background: linear-gradient(90deg, var(--color-gold-dark), var(--color-gold-light), var(--color-gold), var(--color-gold-light), var(--color-gold-dark));
337
- background-size: 250% 100%;
338
- background-clip: text;
339
- -webkit-background-clip: text;
340
- color: transparent;
341
- }
342
- @media (prefers-reduced-motion: no-preference) {
343
- .gold-shimmer {
344
- animation: gold-shimmer-slide var(--duration-shimmer) linear infinite;
345
- }
346
- }
294
+ • The SCALE leg is the co-composed `.tap-squish` (the Card binds both
295
+ classes), so the no-JS press already scales to `--scale-press` on the
296
+ `--spring-smooth` clock and the JS reciprocal squish wins while engaged.
297
+ • The BRIGHTNESS leg reads the `--card-press-t` drive directly — a sub-
298
+ perceptual `filter: brightness()` lift so the glass reads as DEFORMING +
299
+ catching light under the press, not just shrinking (the W-MOTION-CANON P3
300
+ coupling — fade/brightness coupled WITH the transform on the same drive).
301
+ `filter` is compositor-safe (the P5 ban targets layout props only —
302
+ `proof:no-layout-animation` greens it), so the lift never re-layouts.
347
303
 
348
- /* ── Keyboard key ── */
349
- .kbd {
350
- display: inline-flex;
351
- align-items: center;
352
- justify-content: center;
353
- min-height: 1.5rem;
354
- min-width: 1.5rem;
355
- padding: 0 0.375rem;
356
- font-family: var(--font-mono);
357
- font-size: var(--type-micro);
358
- background: var(--muted);
359
- border: 1px solid var(--border);
360
- border-radius: var(--radius-sm);
361
- box-shadow: 0 1px 0 1px color-mix(in srgb, var(--border) 30%, transparent);
362
- line-height: 1;
304
+ The brightness leg rides the `--card-press-t` VALUE (the typed press drive),
305
+ NOT a CSS transition — it tracks the JS spring frame-for-frame and degrades to
306
+ the resting 0 (no lift) when JS is off. The press surface is INTERACTIVE: the
307
+ cursor + a WCAG-2.5.5 touch floor (`min-block-size`) read here, not on the
308
+ static-card register. The interruptibility + the PRM-instant snap are the JS
309
+ driver's (`useLiquidPress` → the kf `SpringProgress` re-seat + the PRM policy);
310
+ this is the CSS floor the JS enhances. */
311
+ .glass-press {
312
+ cursor: pointer;
313
+ min-block-size: max(0px, var(--control-floor, 0px));
314
+ /* The coupled brightness lift on the press drive (rest 0 → ~4% at full
315
+ press). The drive is the JS-written `--card-press-t`; with JS off it stays
316
+ the `@property` 0 initial so the filter is a no-op (`brightness(1)`). */
317
+ filter: brightness(calc(1 + var(--card-press-t, 0) * 0.04));
318
+ }
319
+ /* The press-drive typed registration so a downstream `calc()` interpolates the
320
+ VALUE (number) and an unwired/SSR card is the static rest frame. */
321
+ @property --card-press-t {
322
+ syntax: "<number>";
323
+ inherits: true;
324
+ initial-value: 0;
363
325
  }
364
326
 
365
327
  }