@mkbabb/glass-ui 5.0.0 → 6.0.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 (470) hide show
  1. package/README.md +30 -27
  2. package/dist/DropdownMenuTrigger-BzQtd9lt.js +65 -0
  3. package/dist/{FadingScroll-BSRLqQCx.js → FadingScroll-C1ZWEjmG.js} +32 -25
  4. package/dist/{Input-DKf-XwUM.js → Input-B4WQ_CMc.js} +1 -1
  5. package/dist/{PagerDots-BP6jh7z4.js → PagerDots-BoTQ7g5l.js} +123 -95
  6. package/dist/{accent-tone-solve-CBw3L0cy.js → accent-tone-solve-Dii9ePhK.js} +1 -1
  7. package/dist/animated-digit.js +1 -1
  8. package/dist/aurora.js +324 -314
  9. package/dist/blob-config.d.ts +0 -4
  10. package/dist/blob-config.js +1 -1
  11. package/dist/blob.js +280 -261
  12. package/dist/{button-BXzhydVB.js → button-32mg6xA8.js} +63 -56
  13. package/dist/button.js +1 -1
  14. package/dist/canvas.js +1 -1
  15. package/dist/{CardAction-2uUvjMQK.js → card-16xmzIr3.js} +29 -11
  16. package/dist/card.js +1 -1
  17. package/dist/carousel.d.ts +1 -2
  18. package/dist/carousel.js +26 -95
  19. package/dist/chip.d.ts +0 -9
  20. package/dist/chip.js +1 -1
  21. package/dist/collapsible.js +1 -1
  22. package/dist/color-swatch.js +1 -0
  23. package/dist/color.js +87 -3
  24. package/dist/{CommandShortcut-fmdbsEJL.js → command-BjPjUU9z.js} +56 -51
  25. package/dist/command.js +1 -1
  26. package/dist/completion-seal.js +64 -55
  27. package/dist/components/_shared/ModalOverlay.vue.d.ts +5 -52
  28. package/dist/components/_shared/field-surfaces.css +1 -0
  29. package/dist/components/_shared/menuItemVariants.d.ts +2 -2
  30. package/dist/components/_shared/useMotionAxis.d.ts +2 -2
  31. package/dist/components/_shared/valueDomain.d.ts +6 -0
  32. package/dist/components/alert/index.d.ts +1 -1
  33. package/dist/components/animated-digit/AnimatedDigit.vue.d.ts +1 -1
  34. package/dist/components/aurora/Aurora.vue.d.ts +7 -1
  35. package/dist/components/aurora/composables/runtime.d.ts +5 -3
  36. package/dist/components/aurora/composables/useAurora.d.ts +4 -2
  37. package/dist/components/avatar/AvatarImage.vue.d.ts +3 -1
  38. package/dist/components/badge/index.d.ts +2 -2
  39. package/dist/components/blob/Blob.vue.d.ts +11 -0
  40. package/dist/components/blob/composables/useMetaballRenderer.d.ts +2 -0
  41. package/dist/components/button/Button.vue.d.ts +4 -2
  42. package/dist/components/button/index.d.ts +2 -2
  43. package/dist/components/card/Card.vue.d.ts +4 -4
  44. package/dist/components/card/ScrollCard.vue.d.ts +1 -1
  45. package/dist/components/card/styles.css +1 -0
  46. package/dist/components/carousel/Carousel.vue.d.ts +2 -2
  47. package/dist/components/carousel/CarouselNext.vue.d.ts +1 -1
  48. package/dist/components/carousel/CarouselPrevious.vue.d.ts +1 -1
  49. package/dist/components/carousel/index.d.ts +0 -1
  50. package/dist/components/carousel/useCarousel.d.ts +2 -2
  51. package/dist/components/combobox/ComboboxList.vue.d.ts +1 -1
  52. package/dist/components/combobox/index.d.ts +1 -3
  53. package/dist/components/command/Command.vue.d.ts +1 -1
  54. package/dist/components/command/CommandDialog.vue.d.ts +9 -6
  55. package/dist/components/completion-seal/styles.css +1 -0
  56. package/dist/components/constellation/Constellation.vue.d.ts +6 -1
  57. package/dist/components/constellation/composables/useConstellation.d.ts +3 -16
  58. package/dist/components/constellation/constants.d.ts +6 -16
  59. package/dist/components/constellation/constellationField.d.ts +3 -5
  60. package/dist/components/constellation/constellationInteraction.d.ts +1 -1
  61. package/dist/components/constellation/constellationRender.d.ts +11 -21
  62. package/dist/components/constellation/constellationTypes.d.ts +12 -9
  63. package/dist/components/constellation/index.d.ts +1 -1
  64. package/dist/components/controls/DarkModeToggle.vue.d.ts +0 -2
  65. package/dist/components/data-table/DataTable.vue.d.ts +14 -2
  66. package/dist/components/data-table/index.d.ts +1 -2
  67. package/dist/components/data-table/types.d.ts +26 -1
  68. package/dist/components/deck/constants.d.ts +0 -10
  69. package/dist/components/deck/index.d.ts +0 -1
  70. package/dist/components/dialog/DialogContent.vue.d.ts +7 -1
  71. package/dist/components/dialog/index.d.ts +0 -1
  72. package/dist/components/dock/DockControl.vue.d.ts +4 -4
  73. package/dist/components/dock/DockStack.vue.d.ts +2 -2
  74. package/dist/components/dock/GlassDock.vue.d.ts +1 -0
  75. package/dist/components/dock/composables/dockMorphContext.d.ts +2 -0
  76. package/dist/components/dock/composables/dockMorphMeasure.d.ts +11 -1
  77. package/dist/components/dock/composables/useDockClickIntegrity.d.ts +4 -0
  78. package/dist/components/dock/composables/useDockOverflowFit.d.ts +3 -3
  79. package/dist/components/dock/composables/useDockPopover.d.ts +2 -0
  80. package/dist/components/dock/composables/useDockShellProps.d.ts +7 -0
  81. package/dist/components/dock/composables/useDockState.d.ts +2 -2
  82. package/dist/components/dock/constants.d.ts +0 -12
  83. package/dist/components/dock/index.d.ts +1 -0
  84. package/dist/components/dock/styles/adaptive-legibility.css +1 -0
  85. package/dist/components/dock/styles/controls/icon-button.css +1 -0
  86. package/dist/{styles/dock-controls → components/dock/styles/controls}/touch-floor.css +1 -1
  87. package/dist/components/dock/styles/controls.css +1 -0
  88. package/dist/{styles/dock → components/dock/styles}/density.css +1 -1
  89. package/dist/components/dock/styles/dock.css +1 -0
  90. package/dist/components/dock/styles/index.css +1 -0
  91. package/dist/components/dock/styles/layer-group.css +1 -0
  92. package/dist/components/dock/styles/layers.css +1 -0
  93. package/dist/components/dock/styles/overflow.css +1 -0
  94. package/dist/components/dock/styles/popover.css +1 -0
  95. package/dist/components/dock/styles/shape.css +1 -0
  96. package/dist/components/dock/styles/shell.css +1 -0
  97. package/dist/components/drawer/Drawer.vue.d.ts +3 -3
  98. package/dist/components/drawer/composables/drawerSnapContext.d.ts +3 -1
  99. package/dist/components/drawer/constants.d.ts +6 -6
  100. package/dist/components/drawer/index.d.ts +4 -6
  101. package/dist/components/drawer/styles.css +1 -0
  102. package/dist/components/dropdown-menu/DropdownMenuContent.vue.d.ts +1 -1
  103. package/dist/components/dropdown-menu/DropdownMenuTrigger.vue.d.ts +9 -3
  104. package/dist/components/dropdown-menu/index.d.ts +0 -1
  105. package/dist/components/easing/EasingConfigurator.vue.d.ts +1 -1
  106. package/dist/components/easing/EasingPicker.vue.d.ts +2 -2
  107. package/dist/components/easing/composables/useEasingPicker.d.ts +4 -0
  108. package/dist/components/easing/constants.d.ts +2 -0
  109. package/dist/components/fading-scroll/composables/useFadingScroll.d.ts +3 -3
  110. package/dist/components/fourier-field/FourierField.vue.d.ts +7 -1
  111. package/dist/components/fourier-field/composables/useFourierField.d.ts +2 -1
  112. package/dist/components/handmark/HandMark.vue.d.ts +1 -1
  113. package/dist/components/handmark/geometry.d.ts +1 -1
  114. package/dist/components/handmark/index.d.ts +4 -6
  115. package/dist/components/icon-chip/styles.css +1 -0
  116. package/dist/components/index.d.ts +0 -1
  117. package/dist/components/infinite-scroll/index.d.ts +1 -0
  118. package/dist/components/instrument-chassis/styles.css +1 -0
  119. package/dist/components/labeled-field/LabeledField.vue.d.ts +12 -2
  120. package/dist/components/labeled-field/LabeledInput.vue.d.ts +10 -3
  121. package/dist/components/liquid-grid/LiquidGrid.vue.d.ts +4 -0
  122. package/dist/components/liquid-grid/composables/useLiquidGrid.d.ts +2 -1
  123. package/dist/components/metric-stack/MetricStack.vue.d.ts +1 -1
  124. package/dist/components/pager-dots/PagerDots.vue.d.ts +1 -1
  125. package/dist/components/popover/PopoverContent.vue.d.ts +1 -1
  126. package/dist/components/progress/Progress.vue.d.ts +5 -40
  127. package/dist/components/progress/ProgressDefault.vue.d.ts +1 -17
  128. package/dist/components/progress/ProgressGradient.vue.d.ts +1 -0
  129. package/dist/components/progress/ProgressLiquid.vue.d.ts +1 -0
  130. package/dist/components/progress/index.d.ts +0 -5
  131. package/dist/components/progress/valueMarks.css +1 -0
  132. package/dist/components/pulse/Pulse.vue.d.ts +2 -2
  133. package/dist/components/scroll-progress-rim/styles.css +1 -0
  134. package/dist/components/search/FuzzySearch.vue.d.ts +4 -2
  135. package/dist/components/search/SearchBar.vue.d.ts +2 -2
  136. package/dist/components/search/searchVariants.d.ts +1 -1
  137. package/dist/components/select/SelectContent.vue.d.ts +1 -1
  138. package/dist/components/select/index.d.ts +0 -2
  139. package/dist/components/skeleton/Skeleton.vue.d.ts +1 -1
  140. package/dist/components/slider/Slider.vue.d.ts +2 -0
  141. package/dist/components/split-chars/SplitChars.vue.d.ts +1 -1
  142. package/dist/components/surface/Surface.vue.d.ts +1 -1
  143. package/dist/components/table/Table.vue.d.ts +4 -0
  144. package/dist/components/tabs/SegmentedTabs.vue.d.ts +10 -0
  145. package/dist/components/tabs/index.d.ts +1 -1
  146. package/dist/components/tabs/styles/drag.css +1 -0
  147. package/dist/components/tags-input/TagsInput.vue.d.ts +2 -2
  148. package/dist/components/timeline/ContinuousTimeline.vue.d.ts +1 -1
  149. package/dist/components/timeline/GlassTimeline.vue.d.ts +4 -4
  150. package/dist/components/toast/Toast.vue.d.ts +3 -3
  151. package/dist/components/toast/use-toast.d.ts +4 -4
  152. package/dist/components/typewriter/TypewriterText.vue.d.ts +1 -4
  153. package/dist/components/typewriter/composables/useTypewriter.d.ts +0 -1
  154. package/dist/components/typewriter/utils/graphemes.d.ts +1 -0
  155. package/dist/components/watercolor-dot/WatercolorDot.vue.d.ts +2 -2
  156. package/dist/composables/glass/useGlassBackdropLuminance.d.ts +31 -0
  157. package/dist/composables/glass/webgpu/rendererStatus.d.ts +13 -0
  158. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +3 -0
  159. package/dist/composables/glass/webgpu/webgpuCanvasTypes.d.ts +2 -0
  160. package/dist/composables/motion/springProjection.d.ts +16 -0
  161. package/dist/composables/motion/useAnimatedNumber.d.ts +1 -6
  162. package/dist/composables/motion/useCountup.d.ts +1 -6
  163. package/dist/composables/motion/useDockCtaReceive.d.ts +55 -0
  164. package/dist/composables/motion/useElementMorph.d.ts +8 -0
  165. package/dist/composables/motion/useLiquidPress.d.ts +12 -4
  166. package/dist/composables/motion/useNumericTransition.d.ts +2 -0
  167. package/dist/composables/motion/useTextHighlight.d.ts +2 -1
  168. package/dist/configurator-CSENXXSy.js +311 -0
  169. package/dist/configurator.js +2 -3
  170. package/dist/constellation.js +235 -571
  171. package/dist/controls.js +55 -63
  172. package/dist/{createCanvasLifecycle-DlrcvWbb.js → createCanvasLifecycle-hsFkQVdl.js} +32 -32
  173. package/dist/dark-DIH-blY1.js +70 -0
  174. package/dist/dark.d.ts +1 -2
  175. package/dist/dark.js +2 -20
  176. package/dist/{DataTable-Bxya8nBn.js → data-table-DveMdgBM.js} +231 -120
  177. package/dist/data-table.js +2 -2
  178. package/dist/deck.js +10 -21
  179. package/dist/dialog-BzQxKrUr.js +281 -0
  180. package/dist/dialog.js +2 -3
  181. package/dist/dock.js +561 -428
  182. package/dist/{dockContext-d-WpJN2Z.js → dockContext-4S9qP0Z4.js} +1 -1
  183. package/dist/dom.js +196 -7
  184. package/dist/drawer.js +111 -66
  185. package/dist/dropdown-menu-DORIA52F.js +378 -0
  186. package/dist/dropdown-menu.js +3 -2
  187. package/dist/easing.d.ts +0 -9
  188. package/dist/easing.js +334 -187
  189. package/dist/expandable-container.js +12 -4
  190. package/dist/fading-scroll.js +1 -1
  191. package/dist/focus-scope.js +1 -1
  192. package/dist/forms.js +37 -78
  193. package/dist/fourier-field.js +273 -263
  194. package/dist/fourier-math.d.ts +0 -6
  195. package/dist/fourier-math.js +112 -2
  196. package/dist/glass-ui.css +1 -1
  197. package/dist/glass-ui.js +131 -195
  198. package/dist/handmark.d.ts +0 -2
  199. package/dist/handmark.js +82 -82
  200. package/dist/header-ribbon.js +41 -30
  201. package/dist/{IconChip-CwLmBJ_K.js → icon-chip-BWuxz1-u.js} +1 -1
  202. package/dist/icon-chip.js +1 -1
  203. package/dist/{IconTooltip-D9sbK-Mk.js → icon-tooltip-CO6rw0dZ.js} +1 -1
  204. package/dist/icon-tooltip.js +1 -1
  205. package/dist/index.d.ts +0 -1
  206. package/dist/infinite-scroll.d.ts +0 -1
  207. package/dist/infinite-scroll.js +17 -15
  208. package/dist/instrument-chassis.js +1 -1
  209. package/dist/keyboard.js +104 -2
  210. package/dist/label.js +1 -1
  211. package/dist/labeled-field.js +95 -69
  212. package/dist/liquid-grid.js +173 -162
  213. package/dist/metric-badge.js +3 -3
  214. package/dist/metric-cell.js +2 -2
  215. package/dist/metric-stack.js +1 -1
  216. package/dist/motion-core.js +15 -16
  217. package/dist/motion-curves.d.ts +0 -20
  218. package/dist/motion.js +59 -58
  219. package/dist/{Notification-DQv2cOh9.js → notification-DVs7ODMg.js} +17 -8
  220. package/dist/notification.js +1 -1
  221. package/dist/{NumberFieldContent-BkE7xPS9.js → number-field-PvkGedHk.js} +2 -2
  222. package/dist/number-field.js +1 -1
  223. package/dist/pager-dots.js +1 -1
  224. package/dist/paper-backdrop.js +31 -2
  225. package/dist/{PopoverContent-DOtszFWK.js → popover-WMgyRSyN.js} +7 -2
  226. package/dist/popover.js +1 -1
  227. package/dist/procedural-color.wgsl-B9mLK7v0.js +377 -0
  228. package/dist/progress-C-HHuFZy.js +192 -0
  229. package/dist/progress.js +2 -2
  230. package/dist/pulse.js +3 -1
  231. package/dist/reactive.js +19 -3
  232. package/dist/rendererStatus-C2-zC2Q-.js +40 -0
  233. package/dist/{resolveCanvasColor-B3L-akX0.js → resolveCanvasColor-yarP5bdk.js} +1 -1
  234. package/dist/scroll-progress-rim.js +1 -1
  235. package/dist/search.js +187 -146
  236. package/dist/{SelectScrollDownButton-CDtwaWkZ.js → select-BIv4R3Ir.js} +109 -44
  237. package/dist/select.js +2 -4
  238. package/dist/separator-CBU94kTM.js +62 -0
  239. package/dist/separator.js +1 -1
  240. package/dist/sidebar.js +1 -1
  241. package/dist/slider-Cc_qw6GA.js +166 -0
  242. package/dist/slider.js +1 -1
  243. package/dist/sortable-list.js +43 -43
  244. package/dist/styles/accessibility.css +1 -0
  245. package/dist/styles/components.css +1 -1
  246. package/dist/styles/glass/control-surfaces.css +1 -1
  247. package/dist/styles/glass/glass-capsule.css +1 -1
  248. package/dist/styles/glass/ladder.css +1 -1
  249. package/dist/styles/glass/liquid-fill.css +1 -1
  250. package/dist/styles/glass/material-roles.css +1 -0
  251. package/dist/styles/glass/material.css +1 -1
  252. package/dist/styles/glass/surface-axis.css +1 -1
  253. package/dist/styles/glass/surfaces-pager.css +1 -1
  254. package/dist/styles/glass/surfaces.css +1 -1
  255. package/dist/styles/glass.css +1 -1
  256. package/dist/styles/index.css +1 -1
  257. package/dist/styles/theme/bridges.css +1 -1
  258. package/dist/styles/tokens/glass-fx.css +1 -1
  259. package/dist/styles/tokens/glass.css +1 -1
  260. package/dist/styles/tokens/offsets.css +1 -1
  261. package/dist/styles/tokens/scale-paper.css +1 -1
  262. package/dist/styles/tokens/scheme-spring.css +1 -1
  263. package/dist/styles/tokens/shadow.css +1 -1
  264. package/dist/styles/tokens.d.ts +53 -0
  265. package/dist/styles/tokens.ts +58 -0
  266. package/dist/styles/typography/scale.css +1 -1
  267. package/dist/styles/typography/semantic.css +1 -1
  268. package/dist/styles/typography/utilities.css +1 -1
  269. package/dist/styles/utilities/base.css +1 -1
  270. package/dist/styles/utilities/btn.css +1 -1
  271. package/dist/styles/utilities/components.css +1 -1
  272. package/dist/styles/utilities.css +1 -1
  273. package/dist/{Switch-BPBfhMU3.js → switch-Boj4Ucn5.js} +1 -1
  274. package/dist/switch.js +1 -1
  275. package/dist/tabs.js +51 -45
  276. package/dist/timeline.js +2 -2
  277. package/dist/toast.js +1 -1
  278. package/dist/{ToggleGroupItem-DNWx2aSW.js → toggle-group-BPchFsns.js} +10 -7
  279. package/dist/toggle-group.js +1 -1
  280. package/dist/tokens.d.ts +1 -53
  281. package/dist/tokens.js +1 -1
  282. package/dist/{TooltipProvider-GtfYdSVf.js → tooltip-BmOQJzh0.js} +1 -0
  283. package/dist/tooltip.js +1 -1
  284. package/dist/typewriter.js +151 -166
  285. package/dist/{useAccentTone-D25DxviG.js → useAccentTone-C-p6WdPe.js} +1 -1
  286. package/dist/{useAnimatedNumber-2XC4aRB6.js → useAnimatedNumber-BRVVaFFc.js} +1 -1
  287. package/dist/useDockCtaReceive-CK-RLASa.js +257 -0
  288. package/dist/{useGooMorph-CU1pwuC6.js → useGooMorph-D1F6QJlH.js} +140 -59
  289. package/dist/{useIntersectionPause-Cmt5Tnv9.js → useIntersectionPause-B-dbxl9w.js} +1 -1
  290. package/dist/useLiquidPress-BYcwwGQV.js +68 -0
  291. package/dist/{useRAFLoop-CvOo_kgb.js → useRAFLoop-BtwQ9DyY.js} +1 -1
  292. package/dist/{useScrollProgress-C-yImzhU.js → useScrollProgress-DZI4nf4v.js} +1 -1
  293. package/dist/{useSelectionGroup-Btpf24aY.js → useSelectionGroup-LDzBdR1Y.js} +3 -3
  294. package/dist/{useTabRovingFocus-CG1H1k1J.js → useTabRovingFocus-DkLYwo4L.js} +1 -1
  295. package/dist/{useTouchGate-BlegwvwL.js → useTouchGate-Cj5fOkTv.js} +1 -1
  296. package/dist/valueDomain-B8L04u3U.js +13 -0
  297. package/dist/watercolor-dot.js +5 -3
  298. package/package.json +5 -12
  299. package/src/styles/accessibility.css +48 -0
  300. package/src/styles/glass/glass-capsule.css +2 -2
  301. package/src/styles/glass/ladder.css +1 -1
  302. package/src/styles/glass/material-roles.css +18 -0
  303. package/src/styles/glass/material.css +18 -12
  304. package/src/styles/glass.css +5 -5
  305. package/src/styles/index.css +38 -30
  306. package/src/styles/theme/bridges.css +0 -6
  307. package/src/styles/tokens/glass-fx.css +1 -5
  308. package/src/styles/tokens/glass.css +1 -2
  309. package/src/styles/tokens/offsets.css +0 -1
  310. package/src/styles/tokens/property-regs.css +11 -10
  311. package/src/styles/tokens/scale-paper.css +0 -1
  312. package/src/styles/tokens/scheme-motion.css +3 -0
  313. package/src/styles/tokens/scheme-spring.css +0 -10
  314. package/src/styles/tokens/shadow.css +3 -29
  315. package/src/styles/tokens.ts +58 -0
  316. package/src/styles/typography/scale.css +5 -2
  317. package/src/styles/typography/semantic.css +5 -5
  318. package/src/styles/typography/utilities.css +5 -5
  319. package/src/styles/utilities/base.css +5 -5
  320. package/src/styles/utilities/btn.css +6 -27
  321. package/src/styles/utilities.css +4 -6
  322. package/dist/ConfiguratorRow-BV6zPjTM.js +0 -151
  323. package/dist/DialogContent-Bl4v10AC.js +0 -192
  324. package/dist/DialogFooter-C0v4Hz2F.js +0 -168
  325. package/dist/PaperBackdrop-BYwE8_kg.js +0 -31
  326. package/dist/Progress-uWLyXE7J.js +0 -308
  327. package/dist/SelectGroup-BuEptUsa.js +0 -31
  328. package/dist/SelectSeparator-4QGephvr.js +0 -49
  329. package/dist/Separator-DqJ6PfOd.js +0 -44
  330. package/dist/color-Bp5jmv4Z.js +0 -86
  331. package/dist/components/carousel/GlassCarouselPager.vue.d.ts +0 -50
  332. package/dist/components/combobox/ComboboxSeparator.vue.d.ts +0 -18
  333. package/dist/components/combobox/ComboboxViewport.vue.d.ts +0 -18
  334. package/dist/components/constellation/composables/constellationGLSetup.d.ts +0 -10
  335. package/dist/components/constellation/composables/constellationWGPUSetup.d.ts +0 -19
  336. package/dist/components/constellation/composables/uniformBridgeWGPU.d.ts +0 -66
  337. package/dist/components/constellation/shaders/constellation-lines.glsl.d.ts +0 -2
  338. package/dist/components/constellation/shaders/constellation-lines.wgsl.d.ts +0 -1
  339. package/dist/components/constellation/shaders/constellation-points.glsl.d.ts +0 -2
  340. package/dist/components/constellation/shaders/constellation-points.wgsl.d.ts +0 -1
  341. package/dist/components/deck/composables/useDeckSpring.d.ts +0 -22
  342. package/dist/components/dialog/DialogScrollContent.vue.d.ts +0 -33
  343. package/dist/components/progress/ProgressSectioned.vue.d.ts +0 -47
  344. package/dist/components/progress/useProgressGeometry.d.ts +0 -60
  345. package/dist/components/section/Section.vue.d.ts +0 -73
  346. package/dist/components/section/index.d.ts +0 -1
  347. package/dist/components/stacked-icons/StackedIconGroup.vue.d.ts +0 -30
  348. package/dist/components/stacked-icons/index.d.ts +0 -2
  349. package/dist/components/stacked-icons/types.d.ts +0 -19
  350. package/dist/dropdown-menu-DaGlVdp9.js +0 -421
  351. package/dist/math-CIEcwsYi.js +0 -112
  352. package/dist/procedural-color.wgsl-ByduxnzV.js +0 -4
  353. package/dist/slider-Cxuj_W_H.js +0 -151
  354. package/dist/stacked-icons.d.ts +0 -1
  355. package/dist/stacked-icons.js +0 -98
  356. package/dist/styles/cards.css +0 -1
  357. package/dist/styles/completion-seal.css +0 -1
  358. package/dist/styles/dock/adaptive-legibility.css +0 -1
  359. package/dist/styles/dock/dock.css +0 -1
  360. package/dist/styles/dock/layer-group.css +0 -1
  361. package/dist/styles/dock/layers.css +0 -1
  362. package/dist/styles/dock/overflow.css +0 -1
  363. package/dist/styles/dock/popover.css +0 -1
  364. package/dist/styles/dock/shape.css +0 -1
  365. package/dist/styles/dock/shell.css +0 -1
  366. package/dist/styles/dock-controls/icon-button.css +0 -1
  367. package/dist/styles/dock-controls.css +0 -1
  368. package/dist/styles/dock.css +0 -1
  369. package/dist/styles/drawer.css +0 -1
  370. package/dist/styles/icon-chip.css +0 -1
  371. package/dist/styles/instrument-chassis.css +0 -1
  372. package/dist/styles/scroll-progress-rim.css +0 -1
  373. package/dist/styles/select.css +0 -1
  374. package/dist/styles/tabs/segmented-tabs-drag.css +0 -1
  375. package/dist/styles/utilities/animate.css +0 -0
  376. package/dist/useConfiguratorState-Dq35N_7t.js +0 -167
  377. package/dist/useDockCtaReceive-BgMmeINo.js +0 -161
  378. package/dist/useGlobalDark-DjKMEQE2.js +0 -53
  379. package/dist/useGpuSubstrate-DcY584kE.js +0 -347
  380. package/dist/useInterval-ZATRi-1T.js +0 -18
  381. package/dist/useKeyboardShortcuts-ynVmNFo3.js +0 -104
  382. package/dist/useLiquidPress-BXNHydZh.js +0 -40
  383. package/dist/useTextHighlight-C46Le9u_.js +0 -72
  384. package/dist/useViewportReady-c0isoKL8.js +0 -191
  385. package/src/styles/card-scroll.css +0 -189
  386. package/src/styles/cards.css +0 -485
  387. package/src/styles/completion-seal.css +0 -205
  388. package/src/styles/configurator.css +0 -359
  389. package/src/styles/dialog-placement.css +0 -68
  390. package/src/styles/dock/adaptive-legibility.css +0 -119
  391. package/src/styles/dock/crossfade.css +0 -139
  392. package/src/styles/dock/cta-seat.css +0 -87
  393. package/src/styles/dock/density.css +0 -458
  394. package/src/styles/dock/dock.css +0 -199
  395. package/src/styles/dock/fisheye.css +0 -81
  396. package/src/styles/dock/layer-group.css +0 -329
  397. package/src/styles/dock/layers.css +0 -438
  398. package/src/styles/dock/morph.css +0 -455
  399. package/src/styles/dock/overflow.css +0 -332
  400. package/src/styles/dock/popover.css +0 -249
  401. package/src/styles/dock/search.css +0 -68
  402. package/src/styles/dock/section.css +0 -59
  403. package/src/styles/dock/shape.css +0 -188
  404. package/src/styles/dock/shell-regions.css +0 -73
  405. package/src/styles/dock/shell.css +0 -500
  406. package/src/styles/dock-controls/dark-mode-toggle.css +0 -123
  407. package/src/styles/dock-controls/icon-button.css +0 -221
  408. package/src/styles/dock-controls/tab-button.css +0 -143
  409. package/src/styles/dock-controls/touch-floor.css +0 -119
  410. package/src/styles/dock-controls/triggers.css +0 -157
  411. package/src/styles/dock-controls.css +0 -92
  412. package/src/styles/dock.css +0 -219
  413. package/src/styles/drawer.css +0 -434
  414. package/src/styles/feedback-tone.css +0 -104
  415. package/src/styles/icon-chip.css +0 -256
  416. package/src/styles/instrument-chassis.css +0 -449
  417. package/src/styles/menu.css +0 -187
  418. package/src/styles/scroll-progress-rim.css +0 -87
  419. package/src/styles/segmented-tabs.css +0 -424
  420. package/src/styles/select.css +0 -201
  421. package/src/styles/tabs/segmented-tabs-drag.css +0 -200
  422. package/src/styles/utilities/animate.css +0 -29
  423. /package/dist/{coalesce-metric-B8o7zT9u.js → coalesce-metric-znAcLzkB.js} +0 -0
  424. /package/dist/{CollapsibleContent-DiHcB_HH.js → collapsible-bPzS1aQk.js} +0 -0
  425. /package/dist/{compile-C55K3P9g.js → compile-DK3Fri1B.js} +0 -0
  426. /package/dist/{styles → components/_shared}/feedback-tone.css +0 -0
  427. /package/dist/{styles → components/_shared}/menu.css +0 -0
  428. /package/dist/{styles → components/card}/card-scroll.css +0 -0
  429. /package/dist/{styles/configurator.css → components/configurator/styles.css} +0 -0
  430. /package/dist/{styles/dock-controls → components/controls}/dark-mode-toggle.css +0 -0
  431. /package/dist/{styles/dialog-placement.css → components/dialog/placement.css} +0 -0
  432. /package/dist/{styles/dock-controls → components/dock/styles/controls}/tab-button.css +0 -0
  433. /package/dist/{styles/dock-controls → components/dock/styles/controls}/triggers.css +0 -0
  434. /package/dist/{styles/dock → components/dock/styles}/crossfade.css +0 -0
  435. /package/dist/{styles/dock → components/dock/styles}/cta-seat.css +0 -0
  436. /package/dist/{styles/dock → components/dock/styles}/fisheye.css +0 -0
  437. /package/dist/{styles/dock → components/dock/styles}/morph.css +0 -0
  438. /package/dist/{styles/dock → components/dock/styles}/search.css +0 -0
  439. /package/dist/{styles/dock → components/dock/styles}/section.css +0 -0
  440. /package/dist/{styles/dock → components/dock/styles}/shell-regions.css +0 -0
  441. /package/dist/{styles/segmented-tabs.css → components/tabs/styles/segmented.css} +0 -0
  442. /package/dist/{constants-D8lSMkOz.js → constants-DRZmNIY-.js} +0 -0
  443. /package/dist/{createContext-BQ1Gy_LB.js → createContext-FU0n5MGK.js} +0 -0
  444. /package/dist/{flow.glsl-CVqPSj8_.js → flow.glsl-DEGFGE11.js} +0 -0
  445. /package/dist/{FocusScope-BzKwhsBn.js → focus-scope-DUTKveod.js} +0 -0
  446. /package/dist/{InstrumentChassis-Dss5Tjcm.js → instrument-chassis-Cvstg4_U.js} +0 -0
  447. /package/dist/{Label-C84TaQiw.js → label-Cj38tJKG.js} +0 -0
  448. /package/dist/{menuItemVariants-DbO-Fr74.js → menuItemVariants-D6AOzzND.js} +0 -0
  449. /package/dist/{pointerFieldMappings-4VtmkOWv.js → pointerFieldMappings-CZojkgKj.js} +0 -0
  450. /package/dist/{presets-B07HzyKd.js → presets-CxeNvxuO.js} +0 -0
  451. /package/dist/{prng-B0PLRmR6.js → prng-Dz2_9RJu.js} +0 -0
  452. /package/dist/{scrollReader-DzYqPQ6V.js → scrollReader-C2oK9Hb8.js} +0 -0
  453. /package/dist/{supportsCssTimeline-Ie4xJFbD.js → supportsCssTimeline-Dz-GVxXM.js} +0 -0
  454. /package/dist/{Toaster-C_-WeU9W.js → toast-kAbchIN2.js} +0 -0
  455. /package/dist/{useControlSize-DJwe-7ZQ.js → useControlSize-CFfOk8I-.js} +0 -0
  456. /package/dist/{useDocumentVisibility-CpJGUgcJ.js → useDocumentVisibility-YeBDGqtI.js} +0 -0
  457. /package/dist/{useDragMorph-65ihHePq.js → useDragMorph-7ygF9O0m.js} +0 -0
  458. /package/dist/{useDragVelocity-BWcNMCux.js → useDragVelocity-CbMZEBaC.js} +0 -0
  459. /package/dist/{useFuzzySearch-KslRxiJY.js → useFuzzySearch-BOgep7RE.js} +0 -0
  460. /package/dist/{useLeadTrail-DOH4XkL1.js → useLeadTrail-BYu8dq4G.js} +0 -0
  461. /package/dist/{usePointerVelocityField-CwXyeW0Z.js → usePointerVelocityField-BdvnO0py.js} +0 -0
  462. /package/dist/{useResizeObserver-DDuoBeBo.js → useResizeObserver-BcUTquV7.js} +0 -0
  463. /package/dist/{useResolveTokenColor-DVT5kwv6.js → useResolveTokenColor-C07e-qaT.js} +0 -0
  464. /package/dist/{useRoutePointer-DL7I0gY4.js → useRoutePointer-BDNMFN73.js} +0 -0
  465. /package/dist/{useSpringMount-CNvvgGiC.js → useSpringMount-C6-DBx4e.js} +0 -0
  466. /package/dist/{useTimer-CkDV8SC2.js → useTimer-D8koDvJS.js} +0 -0
  467. /package/dist/{useUserInvalidAria-Bkruei7M.js → useUserInvalidAria-Cr4nR3tu.js} +0 -0
  468. /package/dist/{vReveal-DUmiEkX_.js → vReveal-DZfWl9XI.js} +0 -0
  469. /package/dist/{vSpecular-DlYN0UZy.js → vSpecular-CQFmLNzA.js} +0 -0
  470. /package/dist/{writeVelocityWeight-D1rvdxJu.js → writeVelocityWeight-D_AcvTsE.js} +0 -0
@@ -1,449 +0,0 @@
1
- /* instrument-chassis.css — chassis surface + region dividers + phase cascade.
2
- *
3
- * Composes the three-region <InstrumentChassis> per W2.7 §1, §2, §3, §11, §16.
4
- * The chassis is one glass surface with an engraved-bezel ::before stroke and
5
- * a radial-gradient curvature overlay; both persist at all phases (chassis
6
- * character, not interactive accent).
7
- *
8
- * Region dividers compose two 1px lines — top catch-light, bottom under-
9
- * shadow — into a hairline groove. This twin-line idiom is the chassis
10
- * signature; every divider in the system uses it.
11
- *
12
- * `--phase-color` cascades from the chassis root via `data-phase`. Phase
13
- * label, hero number, and phase progress fill all read it; one mutation at
14
- * the chassis level retints every consumer with a single 450ms transition.
15
- *
16
- * Disco accents (specular swap, sparkle, phase-glow, disco-grain) live on
17
- * `.dock-tab-button[data-tier="primary"]` in `dock.css` and on
18
- * `.metric-badge[data-just-resolved="true"]` in `utilities.css`. They fire
19
- * on hover / phase-finish only. Idle is purely Vignelli.
20
- */
21
-
22
- @layer components {
23
- .instrument-chassis {
24
- position: relative;
25
- display: flex;
26
- flex-direction: column;
27
- /* AI.W4-M.1 — chassis tint companion. The backdrop composes the
28
- resting glass plate with a `color-mix` toward `--phase-color`
29
- by `--phase-tint-amount`. At idle the typed amount sits at 0%
30
- (initial-value from tokens.css §18) so the surface reads the
31
- pure resting plate; the [data-phase] selectors below ramp the
32
- amount toward `--phase-tint-peak` (6% default), and the
33
- transition interpolates the typed percentage over the speed-
34
- test-owned phase-handoff clock. Fallback 600ms keeps a non-
35
- speedtest consumer's chassis cross-fading smoothly even
36
- without the consumer-side token declared. */
37
- background:
38
- var(--glass-curvature-overlay, none),
39
- color-mix(
40
- in oklab,
41
- var(--glass-bg-chassis),
42
- var(--phase-color, var(--muted-foreground)) var(--phase-tint-amount, 0%)
43
- );
44
- transition: --phase-tint-amount
45
- var(--motion-duration-phase-handoff, 600ms)
46
- var(--motion-ease-standard);
47
- backdrop-filter: var(--glass-blur-quiet);
48
- /* AK-FD1 §2.4 — glass-variant outer border softened one rung down the
49
- foreground-tinted border ladder (quiet 10% → wash 8%) so it reads at
50
- the intended resting-glass register. The spine variant carries its
51
- own `--glass-spine-border` (re-declared below) and is unaffected. */
52
- border: 1px solid var(--glass-border-wash);
53
- border-radius: var(--radius-card);
54
- box-shadow:
55
- var(--glass-shadow-quiet),
56
- inset 0 -0.5px 0 0 rgb(0 0 0 / 0.06);
57
- overflow: hidden;
58
-
59
- /* `--phase-color` defaults to muted-foreground at idle. data-phase
60
- selectors below retint to the chart hue. Consumers register
61
- --chart-* aliases in their preset; tokens.css ships safe defaults.
62
-
63
- `--phase-color-label` is the WCAG companion (AC.W6c F1.V-04). It
64
- pairs with `--phase-color` 1:1 — same `data-phase` cascade, but
65
- routes through `--chart-{phase}-label` (L≈0.40 in OKLCH) so
66
- text-on-background callsites clear the 4.5:1 contrast floor.
67
- Canvas / fill / gradient consumers continue to read `--phase-color`
68
- (saturated brand register, correct against the meter dial).
69
- Label / text consumers read `--phase-color-label` with the
70
- untinted token as a fallback so an unhydrated subtree still
71
- paints something readable. */
72
- --phase-color: var(--muted-foreground);
73
- --phase-color-label: var(--muted-foreground);
74
-
75
- /* BB.W-PHASE-PALETTE (N18) — the `complete` phase ink is a CONSUMER
76
- token, not a hardcoded brand metal. The four active phases
77
- (ping/download/upload/jitter) already read a consumer-registerable
78
- `--chart-{phase}` with a library `--viz-*` fallback (the bus carries
79
- phase IDENTITY); `complete` was the one arm that pinned the gold
80
- directly, so every completion gilded itself the moment the phase
81
- flipped. `--phase-complete-color` (+ its WCAG-twin
82
- `--phase-complete-color-label`) DEFAULT to the same gold the arm
83
- hardcoded — an un-overriding consumer paints byte-identical gold (the
84
- back-compat floor) — but a consumer (or any ancestor) overrides EITHER
85
- on its host/preset to re-ink completion (its phase spectrum, an aurora
86
- register, …), so gold is EARNED (the dock CTA + personal-best
87
- garnish), never the chassis default leaking onto every completion.
88
- The default lives at the chassis root (NOT :root/tokens.css) because
89
- it is a chassis-phase register, scoped to the surface owning the bus —
90
- the same home `--phase-color`'s idle default occupies above. It reads
91
- `var(--color-gold)` / `var(--color-gold-dark)` (the existing mode-
92
- resolved tokens, unedited), so it inherits the SAME .dark / light-dark
93
- resolution the hardcoded form did. */
94
- --phase-complete-color: var(--color-gold);
95
- --phase-complete-color-label: var(--color-gold-dark, var(--color-gold));
96
-
97
- /* AV.W16 TW3 — inline-size container named `chassis` so the dial reflow
98
- below reads the chassis's OWN box, not the viewport (portable into a
99
- narrow host). */
100
- container: chassis / inline-size;
101
- }
102
-
103
- .dark .instrument-chassis {
104
- background:
105
- var(--glass-curvature-overlay-dark, var(--glass-curvature-overlay, none)),
106
- color-mix(
107
- in oklab,
108
- var(--glass-bg-chassis),
109
- var(--phase-color, var(--muted-foreground)) var(--phase-tint-amount, 0%)
110
- );
111
- }
112
-
113
- /* Engraved-bezel inner stroke. Reads as the polished sleeve of an
114
- instrument-panel module. Subtle but load-bearing for the disco-skeu
115
- reading. */
116
- .instrument-chassis::before {
117
- content: "";
118
- position: absolute;
119
- inset: 0.5px;
120
- border-radius: calc(var(--radius-card) - 0.5px);
121
- border: 1px solid var(--surface-tint-4);
122
- pointer-events: none;
123
- z-index: 1;
124
- }
125
-
126
- .dark .instrument-chassis::before {
127
- border-color: var(--surface-tint-6);
128
- }
129
-
130
- /* ─────────────────────────────────────────────────────────────
131
- AL-W1-α augmented — spine variant (HOUSING register)
132
-
133
- Per AL-X5 §4.1 + Y7. The `variant="spine"` chassis is the
134
- polished SLEEVE that frames an inner card on quiet-content
135
- App-level mounts. NOT glass:
136
- - opacity 0 (no plate; `--glass-spine-opacity` is the canon)
137
- - NO backdrop-filter (housing is not refracting)
138
- - hairline outer stroke at `--glass-spine-border`
139
- - interior radial vignette (`--glass-spine-vignette`) that
140
- reads the phase-color cascade through `color-mix()` at
141
- ~8% opacity — the housing breathes with the active phase
142
- without competing with the inner card's saturated register
143
- - tight under-shadow rim via `--glass-under-shadow-spine`
144
- - inset from viewport by `clamp(0.5rem, 2vw, 1.25rem)` so
145
- the chassis edge sits BEYOND the inner card's outer edge
146
- - retires the engraved-bezel `::before` (the spine carries
147
- its own stroke at the outer edge; the inner bezel would
148
- collide with the inner card's hairline ring)
149
-
150
- The phase cascade above (`[data-phase="…"]`) is orthogonal —
151
- the `--phase-color` retint reaches the spine vignette via the
152
- `color-mix(in oklab, var(--phase-color) 8%, transparent)` recipe
153
- at `--glass-spine-vignette`. One mutation at the chassis level
154
- still retints every consumer.
155
- ───────────────────────────────────────────────────────────── */
156
- .instrument-chassis[data-variant="spine"] {
157
- background: var(--glass-spine-vignette);
158
- backdrop-filter: none;
159
- border: 1px solid var(--glass-spine-border);
160
- box-shadow: var(--glass-under-shadow-spine);
161
- margin: clamp(0.5rem, 2vw, 1.25rem);
162
- }
163
-
164
- /* The engraved-bezel inner stroke is a `"glass"`-variant feature —
165
- retire it at the spine variant so the hairline outer stroke reads
166
- alone (the inner card paints its own inner ring). */
167
- .instrument-chassis[data-variant="spine"]::before {
168
- display: none;
169
- }
170
-
171
- /* ─────────────────────────────────────────────────────────────
172
- BA.W-ATLAS-RECONCILE C-3 — structure variant (SILVER MILLED-METAL register)
173
-
174
- The cool polished-steel housing read: the engraved-bezel `::before` stroke
175
- AND the structural twin-line grooves re-point from the warm-cream
176
- `--surface-tint-*` default onto the `--silver` quad (gold's cool mirror).
177
- The chassis reads as an INDUSTRIAL precision-instrument panel — the
178
- cool-metal twin of the warm-gold "complete"-phase affirmation the chassis
179
- ships BY DEFAULT (the `--phase-complete-color` consumer token's gold
180
- default; BB.W-PHASE-PALETTE — a consumer may re-ink completion, but the
181
- silver register's narration is of the warm-gold completion default).
182
-
183
- The phase cascade (`[data-phase="…"]`) stays ORTHOGONAL — a `structure`
184
- chassis still retints its phase fills on `data-phase`; only the
185
- structure-metal recipe (bezel + grooves) forks here. Consumer #2 of the
186
- silver quad (the atlas's structure surface is consumer #1).
187
-
188
- The silver is the W-NO-GRAY NAMED cool-neutral exception (a brand METAL
189
- identity, not a neutral — its very-low chroma reads as milled steel, the
190
- cool hue distinguishes it from the warm glass plate).
191
- ───────────────────────────────────────────────────────────── */
192
- .instrument-chassis[data-variant="structure"] {
193
- /* The milled-panel edge: the chassis border lifts off the resting glass
194
- edge onto a hairline silver structure stroke. */
195
- border-color: color-mix(in oklab, var(--color-silver-dark) 55%, transparent);
196
- }
197
-
198
- /* The engraved bezel re-tints to the cool silver catch (the polished sleeve
199
- reads as steel, not warm-cream). */
200
- .instrument-chassis[data-variant="structure"]::before {
201
- border-color: color-mix(in oklab, var(--color-silver-light) 60%, transparent);
202
- }
203
- .dark .instrument-chassis[data-variant="structure"]::before {
204
- border-color: color-mix(in oklab, var(--color-silver) 40%, transparent);
205
- }
206
-
207
- /* The structural grooves re-point to the silver twin-line: the catch reads
208
- the light silver, the under-shadow the dark silver — a milled seam, not the
209
- default warm twin-line. ONE re-point at the variant root; every
210
- `<ChassisDivider>` inside a structure chassis inherits it. */
211
- .instrument-chassis[data-variant="structure"] {
212
- --twin-line-catch: color-mix(in oklab, var(--color-silver-light) 50%, transparent);
213
- --twin-line-shadow: color-mix(in oklab, var(--color-silver-dark) 40%, transparent);
214
- }
215
-
216
- /* Phase-color cascade — single property, full chassis-wide retint.
217
- `--phase-color-label` mirrors the cascade through the WCAG companion
218
- tokens (AC.W6c F1.V-04). The label register falls back to the canvas
219
- hue so a consumer that hasn't migrated its labels still paints.
220
-
221
- AI.W4-M.1 — `--phase-tint-amount` lifts to `--phase-tint-peak`
222
- (6% default) on every active phase, including `complete`. The chassis
223
- backdrop reads the typed amount in its `color-mix` recipe above; the
224
- transition interpolates over the phase-handoff clock so the warmth
225
- cross-fades alongside the hue. Idle returns to 0% by inheritance
226
- (the typed @property initial-value). */
227
- .instrument-chassis[data-phase="ping"] {
228
- --phase-color: var(--chart-ping, var(--viz-chebyshev));
229
- --phase-color-label: var(--chart-ping-label, var(--chart-ping, var(--viz-chebyshev)));
230
- --phase-tint-amount: var(--phase-tint-peak);
231
- }
232
- .instrument-chassis[data-phase="download"] {
233
- --phase-color: var(--chart-download, var(--viz-fourier));
234
- --phase-color-label: var(--chart-download-label, var(--chart-download, var(--viz-fourier)));
235
- --phase-tint-amount: var(--phase-tint-peak);
236
- }
237
- .instrument-chassis[data-phase="upload"] {
238
- --phase-color: var(--chart-upload, var(--viz-amber));
239
- --phase-color-label: var(--chart-upload-label, var(--chart-upload, var(--viz-amber)));
240
- --phase-tint-amount: var(--phase-tint-peak);
241
- }
242
- .instrument-chassis[data-phase="jitter"] {
243
- --phase-color: var(--chart-jitter, var(--viz-legendre));
244
- --phase-color-label: var(--chart-jitter-label, var(--chart-jitter, var(--viz-legendre)));
245
- --phase-tint-amount: var(--phase-tint-peak);
246
- }
247
- .instrument-chassis[data-phase="complete"] {
248
- /* BB.W-PHASE-PALETTE — demoted onto the `--phase-complete-color`
249
- consumer seam (the exact `var(--chart-{phase}, …)` idiom the four
250
- active arms above run). The arm reads ONLY the consumer token; the
251
- gold lives in the token's DEFAULT at the chassis root, not as a
252
- hardcoded ink here (a clean break with a back-compat default, NOT a
253
- back-compat alias — no `--color-gold` dual-read survives). The warmth
254
- ramp stays: `--phase-tint-amount` is orthogonal to the ink choice. */
255
- --phase-color: var(--phase-complete-color);
256
- --phase-color-label: var(--phase-complete-color-label);
257
- --phase-tint-amount: var(--phase-tint-peak);
258
- }
259
-
260
- /* PRM bracket — the typed-property transition retires; the chassis
261
- still cross-fades hue + amount instantaneously on phase change
262
- (the discrete state IS the affirmation). */
263
- @media (prefers-reduced-motion: reduce) {
264
- .instrument-chassis {
265
- transition: none;
266
- }
267
- }
268
-
269
- /* Region wrappers ─────────────────────────────────────────── */
270
-
271
- .instrument-strip {
272
- position: relative;
273
- display: flex;
274
- align-items: center;
275
- gap: var(--instrument-strip-gap, 0.75rem);
276
- padding:
277
- var(--instrument-strip-padding-block, 0.875rem)
278
- var(--instrument-strip-padding-inline, 1.25rem);
279
- z-index: 2;
280
- }
281
-
282
- .instrument-dial {
283
- position: relative;
284
- display: grid;
285
- grid-template-columns: var(--instrument-dial-columns, minmax(0, 1.2fr) 1px minmax(0, 1fr));
286
- align-items: center;
287
- gap: var(--instrument-dial-gap, 1.5rem);
288
- padding:
289
- var(--instrument-dial-padding-block, 1.5rem)
290
- var(--instrument-dial-padding-inline, 1.5rem);
291
- z-index: 2;
292
- }
293
-
294
- .instrument-control {
295
- position: relative;
296
- display: flex;
297
- align-items: center;
298
- gap: var(--instrument-control-gap, 0.5rem);
299
- padding:
300
- var(--instrument-control-padding-block, 0.875rem)
301
- var(--instrument-control-padding-inline, 1.25rem);
302
- z-index: 2;
303
- }
304
-
305
- /* Chassis dividers — twin-line hairline grooves ─────────────── */
306
-
307
- .chassis-divider {
308
- /* AW.W15 — consume the shared twin-line α pair (the catch-light +
309
- under-shadow tokens publish here; the .bezel-line rules read them). */
310
- @apply twin-line-divider;
311
- flex-shrink: 0;
312
- position: relative;
313
- background: transparent;
314
- z-index: 2;
315
- pointer-events: none;
316
- }
317
-
318
- .chassis-divider--horizontal {
319
- display: flex;
320
- flex-direction: column;
321
- height: 2px;
322
- width: 100%;
323
- }
324
-
325
- .chassis-divider--vertical {
326
- display: flex;
327
- flex-direction: row;
328
- width: 2px;
329
- height: var(--chassis-divider-vertical-height, 70%);
330
- align-self: center;
331
- justify-self: center;
332
- }
333
-
334
- .bezel-line {
335
- display: block;
336
- flex-shrink: 0;
337
- }
338
-
339
- .chassis-divider--horizontal .bezel-line {
340
- height: 1px;
341
- width: 100%;
342
- }
343
-
344
- .chassis-divider--vertical .bezel-line {
345
- width: 1px;
346
- height: 100%;
347
- }
348
-
349
- /* AW.W15 — the twin-line α pair now lives in the `twin-line-divider`
350
- @utility (single source, dark-adaptive). The `.chassis-divider` host
351
- `@apply`s it, publishing `--twin-line-catch` / `--twin-line-shadow`; these
352
- rules read the tokens. The prior Q.W4.A light pair (0.10 / 0.12) and the
353
- dark pair (0.06 / 0.18) are the values the utility resolves. */
354
- .bezel-line.top { background: var(--twin-line-catch); }
355
- .bezel-line.bottom { background: var(--twin-line-shadow); }
356
-
357
- /* Inner dial divider — same primitive, vertical on desktop. Speedtest
358
- slots its <ChassisDivider orientation="vertical" class="dial-divider" />
359
- between the meter canvas and the readout column; consumers may also
360
- compose their own vertical dividers via the same primitive. */
361
- .instrument-chassis .dial-divider {
362
- align-self: stretch;
363
- }
364
-
365
- /* Narrow-box reflow — dial stacks vertically; the inner divider rotates
366
- from a vertical groove (wide) to a horizontal groove (narrow). AV.W16 TW3
367
- — keyed off the `chassis` container (above), not the viewport, so a
368
- narrow-host chassis stacks off ITS box. 45rem ≈ 720px at the 16px root
369
- (the prior viewport cadence as a box width). */
370
- @container chassis (max-width: 44.9375rem) {
371
- .instrument-chassis .instrument-dial {
372
- grid-template-columns: 1fr;
373
- /* R0G-2 (AO.W3) — reserve the dial's FINAL box from frame 0. The
374
- desktop axis is already CLS-clean (the 3-column `align-items:
375
- center` grid reserves row height from intrinsic min + the AP-Pγ
376
- transform-only idle recentre). The mobile reflow previously
377
- collapsed to `grid-template-rows: auto auto auto`, which reserves
378
- NO height — the meter row, divider, and readout column sit at
379
- zero height until the consumer's meter <canvas> + readout
380
- numbers hydrate, then grow collapsed → final and push everything
381
- below down ~326-331px → mobile-390 CLS 0.32-0.38.
382
-
383
- The fix pins the dial box from frame 0: the meter row carries the
384
- dominant reserve (`minmax(0, 1fr)` — it expands to fill the
385
- envelope the `min-height` establishes), divider + readout stay
386
- intrinsic (`auto`). The load-bearing reserve is `min-height` —
387
- it fixes the dial's outer box so the rows distribute WITHIN a
388
- reserved envelope rather than growing it post-hydration.
389
-
390
- Both knobs are CSS custom properties (token-first). The
391
- `--instrument-dial-min-height-mobile` canonical rung lands in
392
- tokens.css at AO.W4; until then the inline `24rem` fallback IS
393
- the default and carries the contract. A consumer whose meter is
394
- a different size retunes the token — a tuning knob, not a
395
- workaround for a missing reserve. */
396
- grid-template-rows:
397
- var(--instrument-dial-meter-reserve-mobile, minmax(0, 1fr))
398
- auto
399
- auto;
400
- min-height: var(--instrument-dial-min-height-mobile, 24rem);
401
- gap: var(--instrument-dial-gap-mobile, 1.5rem);
402
- }
403
-
404
- .instrument-chassis .instrument-dial .dial-divider,
405
- .instrument-chassis .instrument-dial .chassis-divider--vertical {
406
- flex-direction: column;
407
- width: 70%;
408
- height: 2px;
409
- margin-inline: auto;
410
- }
411
-
412
- .instrument-chassis .instrument-dial .dial-divider .bezel-line,
413
- .instrument-chassis .instrument-dial .chassis-divider--vertical .bezel-line {
414
- width: 100%;
415
- height: 1px;
416
- }
417
- }
418
-
419
- /* BB.W-DESKTOP-RESERVE (B3) — the WIDE-AXIS (desktop) dial reserve, the
420
- EXACT DISJOINT COMPLEMENT of the mobile `@container chassis (max-width:
421
- 44.9375rem)` reserve above: 44.9375rem ≈ 719px is the mobile ceiling, so
422
- the desktop floor is 45rem ≈ 720px — the two container-query ranges share
423
- no width, so a dial cell is reserved by exactly ONE branch at every box
424
- width (no overlap, no gap, no competing `min-block-size`).
425
-
426
- The mobile reflow reserves the dial box from frame 0; the wide box axis
427
- had NO library reserve, so a `1fr` meter row collapsed to its pre-
428
- hydration `<canvas>` intrinsic and grew on hydration, pushing the results
429
- card + dock down (the desktop CLS the speedtest App.vue interim authored
430
- a local `min-block-size: var(--chassis-max-block-size)` to cure — the
431
- consumer interim this rung SUPERSEDES). The reserve is a STATIC
432
- `min-block-size` — a frame-0 box reservation, NOT an animated height (no
433
- per-frame layout, compositor-safe, `proof:no-layout-animation` holds: a
434
- `min-block-size` reserve is never a `@keyframes`/`transition` target).
435
-
436
- Token-first: `--instrument-dial-min-block-size-desktop` is the DESKTOP
437
- DIAL a consumer overrides (default `var(--chassis-max-block-size)`, the
438
- library's dock-adjusted dynamic-viewport guardrail, resolved at first
439
- paint with no JS). The inline `var(--chassis-max-block-size)` fallback
440
- carries the contract if the canonical token is unset. */
441
- @container chassis (min-width: 45rem) {
442
- .instrument-chassis .instrument-dial {
443
- min-block-size: var(
444
- --instrument-dial-min-block-size-desktop,
445
- var(--chassis-max-block-size)
446
- );
447
- }
448
- }
449
- }
@@ -1,187 +0,0 @@
1
- /* menu.css — the glass MENU-ROW + MENU-SECTION register (BA.W-MENU-GLASS).
2
-
3
- The shared `menuItemVariants` CVA's `surface=glass` arm (the DEFAULT, glass-
4
- first canon AX.W54) composes `.glass-menu-row`; all 13 menu/picker-family SFCs
5
- inherit the glassy hover-lift register in ONE edit (no per-SFC menu-row CSS).
6
-
7
- ── The cascade-trap pre-empt (the AZ dock-rail `@layer`-loses-to-utility trap) ──
8
- `.interactive-item:hover` (utilities/base.css, `@layer components`) paints a flat
9
- `color-mix(--accent 50%)` hover background. An UNLAYERED Tailwind `hover:bg-accent`
10
- utility would win over BOTH (the trap). The CVA's glass arm therefore DROPS the
11
- flat-accent utilities entirely — so the only background-painters on a glass row are
12
- the `@layer components` `.interactive-item:hover` rule and these `.glass-menu-row`
13
- rules. This file is `@import`-ed AFTER `utilities.css` in `index.css`, so at equal
14
- specificity (0-1-1 for the `:hover`/`[data-highlighted]` selectors) and equal layer
15
- (`components`) the recipe wins by SOURCE ORDER over `.interactive-item:hover` —
16
- exactly the discipline `glass/surface-axis.css` uses ("@import-ed AFTER ladder.css
17
- so the attr rules win by source order"). NEVER re-add an unlayered flat-accent
18
- utility to the glass arm — it would re-introduce the trap.
19
-
20
- ── The element-level tint discipline (substitution-vs-inheritance) ──
21
- The row reads the ELEMENT-LEVEL glass-quiet oklab tint
22
- `color-mix(in oklab, var(--glass-bg-quiet), var(--glass-tint-source) var(--glass-tint-strength))`
23
- — the SAME seam `glass/ladder.css:58` / `glass/surfaces.css:19` compose — NOT the
24
- pre-baked `--glass-bg-quiet` raw token. So the row darkens-over-light (W55 bright
25
- bucket / `--glass-tint-strength` lift) AND lifts-over-dark per W-DARK-MATERIAL's
26
- tint arm, in lockstep with every other glass surface. */
27
- @layer components {
28
- /* ── .glass-menu-row — the glassy hover-lift menu/picker item ──────────────
29
- Every visual axis reads a `--menu-row-*` knob so a consumer retunes via a
30
- `:root` override. The REST state is transparent (the row sits on the
31
- container's own `glass-floating` plate — DropdownMenuContent /
32
- ContextMenuContent are already `glass-floating rounded-panel`); the glass
33
- PLATE materializes on hover/focus/highlight. */
34
- .glass-menu-row {
35
- /* The glass-quiet plate the row paints AT THE ELEMENT on hover/highlight
36
- (the element-level oklab tint — see header). Overridable. */
37
- --menu-row-bg: color-mix(
38
- in oklab,
39
- var(--glass-bg-quiet),
40
- var(--glass-tint-source) var(--glass-tint-strength)
41
- );
42
- /* The PRM-gated hover-lift travel (zeroed under reduce, below). */
43
- --menu-row-lift: -1px;
44
- /* The 44px WCAG-2.5.5 touch floor (the row never reflows below it). The
45
- base is the CVA's own py rhythm; the clamp guarantees the floor. Reads
46
- `--touch-target` (the 44px token declared UNCONDITIONALLY at :root —
47
- offsets-sizing.css), NOT `--control-floor` (which is declared ONLY inside
48
- the `@media (pointer: coarse)` block, so on a FINE pointer `var(--control-
49
- floor)` resolves to the guaranteed-invalid initial value → 0px in the
50
- max(), and the floor silently vanished — the live π caught the 36px row).
51
- The `2.75rem` literal fallback covers a consumer who unsets the token. */
52
- min-block-size: max(2rem, var(--touch-target, 2.75rem));
53
-
54
- /* The lift transform rides the §6 spring register (`--spring-smooth`)
55
- paired with ITS OWN settle clock `--spring-smooth-duration` (the
56
- per-spring-duration doctrine, W-GLASS-CAL Unit 3 / W-TEMPO — NOT the
57
- generic `--duration-fast`, which re-timed the spring to a 0.2 s wall
58
- clock and dragged a dead sub-pixel tail; BI.W-COMMAND-JITTER R5a). The
59
- surface props (background) ride the bezier `--ease-standard` via the
60
- `.interactive-item` base transition (already declared there). */
61
- transition: translate var(--spring-smooth-duration) var(--spring-smooth);
62
- translate: 0 0;
63
- }
64
-
65
- /* Hover / keyboard-focus / reka internal-highlight / sub-trigger-open all
66
- reach the SAME glass BG register (Combobox/Command/Select parity — the CVA
67
- routes all three input modes through `data-[highlighted]`). The TRANSLATE
68
- lift is POINTER-ONLY (the rule below): reka sets `[data-highlighted]` for
69
- KEYBOARD highlight too, so a lift on the bare `[data-highlighted]` restarts
70
- a translate transition on EVERY arrow/keystroke → the command-palette
71
- jitter (UF-G8; BI.W-COMMAND-JITTER R5b). Keyboard highlight + focus keep the
72
- bg tint + color; only `:hover` lifts. */
73
- .glass-menu-row:hover:not([data-disabled]),
74
- .glass-menu-row:focus:not([data-disabled]),
75
- .glass-menu-row[data-highlighted]:not([data-disabled]),
76
- .glass-menu-row[data-state="open"]:not([data-disabled]) {
77
- background: var(--menu-row-bg);
78
- color: var(--accent-foreground);
79
- }
80
-
81
- /* The POINTER-ONLY lift (R5b) — a `:hover`-scoped translate the keyboard
82
- highlight/focus never fires, so an arrow keystroke never restarts a lift
83
- transition. The pointer still reads the lift on hover; the keyboard reads
84
- the bg+color register above with no geometric restart. */
85
- .glass-menu-row:hover:not([data-disabled]) {
86
- translate: 0 var(--menu-row-lift);
87
- }
88
-
89
- /* ── .glass-menu-section — the mono section-label + hairline row-group ──────
90
- The "section caption + hairline over a row group" recipe (the slides gear
91
- hand-built ~120 lines of). Folds onto `typography.css` `.section-label` (the
92
- mono / √φ-caption / small-caps register) for the caption and `--border-
93
- hairline` for the divider. Tokenized on `--menu-section-*` so a consumer
94
- retunes via a `:root` override. ≥2 consumers: the library menu defaults
95
- (the section caption a DropdownMenuLabel composes) + the in-repo demo menu
96
- story (Unit 2 adoption); the slides DeckSettings is the named foreign
97
- downstream consumer. */
98
- .glass-menu-section {
99
- /* The caption register (mono / small-caps / quiet ink) — the same
100
- vocabulary `.section-label` carries, exposed as overridable knobs. */
101
- --menu-section-font: var(--font-mono);
102
- --menu-section-size: var(--type-caption);
103
- --menu-section-color: var(--muted-foreground);
104
- --menu-section-tracking: var(--type-tracking-caps);
105
- /* The hairline divider over the group (the catch-light + under-shadow
106
- pair). Default-off feather; the rule below paints it. */
107
- --menu-section-hairline: var(--border-hairline);
108
- /* The block rhythm above the group (a section is a deliberate break). */
109
- --menu-section-gap: 0.375rem;
110
-
111
- display: block;
112
- margin-block-start: var(--menu-section-gap);
113
- padding-block-start: var(--menu-section-gap);
114
- /* The hairline reads as a top divider over the group via box-shadow (the
115
- house hairline pattern — a whisper, not a hard 1px rule). */
116
- box-shadow: var(--menu-section-hairline);
117
- }
118
-
119
- /* The section CAPTION — a mono small-caps label. Composes onto the label
120
- element the section recipe wraps (or a nested `.glass-menu-section-label`);
121
- the demo + library menu labels read this caption register. */
122
- .glass-menu-section-label,
123
- .glass-menu-section > [data-menu-section-label] {
124
- font-family: var(--menu-section-font);
125
- font-size: var(--menu-section-size);
126
- color: var(--menu-section-color);
127
- text-transform: uppercase;
128
- letter-spacing: var(--menu-section-tracking);
129
- }
130
- }
131
-
132
- /* ── PRM gate — no deform/lift under reduce ───────────────────────────────────
133
- The hover-lift `translate` is the only motion the row introduces; under
134
- `prefers-reduced-motion: reduce` it collapses to the identity (0) and the
135
- transition is removed (the surface bg cross-fade is not motion). The glass
136
- plate still materializes on hover — only the geometric lift is suppressed. */
137
- @media (prefers-reduced-motion: reduce) {
138
- .glass-menu-row {
139
- --menu-row-lift: 0px;
140
- transition: none;
141
- }
142
- }
143
-
144
- /* ── The dropdown-menu content font + inner-pad (BI.W-GLASS-DEDUP — moved here from
145
- the DELETED floating-panel.css; the `.floating-panel` fixed-overlay recipe had ZERO
146
- consumers and retired with the file). These are the STILL-LIVE rules — the dropdown
147
- content family reads its consumer-facing knobs here.
148
-
149
- Font knob (Q.W3 Lane C / Qβ-F3): migrated out of the lone scoped `<style>` blocks on
150
- `DropdownMenuContent.vue` + `DropdownMenuSubContent.vue`. `--dropdown-menu-font` is
151
- the consumer knob (value.js overrides it to `var(--font-mono)`); the `, inherit`
152
- fall-through MUST be preserved verbatim per the Qθ binding constraint.
153
-
154
- Inner-pad (AZ.R5-4): the dropdown content family reads the shared `--panel-padding`
155
- token — one override retunes every teleported menu surface.
156
-
157
- UNLAYERED (like the retired scoped block + the floating-panel.css source) — no other
158
- rule sets `font-family`/`padding` on these surfaces, so the cascade effect is identical. */
159
- .dropdown-menu-content,
160
- .dropdown-sub-content {
161
- font-family: var(--dropdown-menu-font, inherit);
162
- padding: var(--panel-padding);
163
-
164
- /* ── The L11 menu-plate token surface (BI.W-MENU-TRIGGER — the value.js coordination
165
- ask). ONE consumer-retunable menu token surface following the factored Menu grammar
166
- (the `--dropdown-menu-font` precedent, same family): a consumer retunes the whole
167
- Menu plate — click AND context trigger, content AND sub-content — via a single
168
- `:root` override. Each knob is a PURE NO-OP at its default (it falls through to the
169
- floating tier's own value) and preserves the glass-first identity: the
170
- bg/border knobs re-point the tier's INPUT primitives (`--glass-bg-rung` /
171
- `--glass-border-rung`) — the "override the primitive the composite reads, never the
172
- composite" discipline — so the W55 adaptive oklab tint still darkens/lifts over the
173
- consumer's value AND the forced-colors a11y fallback (which sets `background:
174
- Canvas` / `border: 1px solid CanvasText` DIRECTLY on `.glass-floating`) still wins.
175
- The shadow knob replaces the drop-shadow leg of the tier's box-shadow stack; its
176
- default reproduces the floating stack EXACTLY by reading the same rung tokens, so
177
- the under-shadow + reduced-transparency behaviour re-resolves in lockstep (and
178
- forced-colors strips box-shadow regardless). */
179
- --glass-bg-rung: var(--dropdown-menu-bg, var(--glass-bg-floating));
180
- --glass-border-rung: var(--dropdown-menu-border, var(--glass-border-floating));
181
- box-shadow: var(
182
- --dropdown-menu-shadow,
183
- var(--glass-material-rim),
184
- var(--glass-under-shadow-vivid),
185
- var(--glass-shadow-floating)
186
- );
187
- }