@mkbabb/glass-ui 3.11.2 → 3.13.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 (360) hide show
  1. package/dist/{CardAction-DuArVky-.js → CardAction-Cj2eycQ2.js} +2 -2
  2. package/dist/{CommandShortcut-CefCj5mt.js → CommandShortcut-RowNEO6i.js} +4 -4
  3. package/dist/{ContextMenuSubContent-Bhg4f5jX.js → ContextMenuSubContent-BQmxTAdw.js} +4 -4
  4. package/dist/{DataTable-CUHMukiQ.js → DataTable-BCddn3T3.js} +3 -3
  5. package/dist/{DialogContent-BRkT1cjP.js → DialogContent-Dl9WkAoS.js} +3 -3
  6. package/dist/{DialogFooter-Gprw8H_A.js → DialogFooter-Blu4t7tJ.js} +2 -2
  7. package/dist/{HoverPopover-2LOIW34a.js → HoverPopover-CISOJQuZ.js} +1 -1
  8. package/dist/{IconTooltip-Cus0fvK0.js → IconTooltip-DPzE09X9.js} +1 -1
  9. package/dist/MetricBadge-C9QMz1KT.js +79 -0
  10. package/dist/{Notification-DLMhblXR.js → Notification-DdwNxIrI.js} +2 -2
  11. package/dist/{NumberFieldContent-BbLOh8RU.js → NumberFieldContent-CqaN-SvN.js} +3 -3
  12. package/dist/{PopoverContent-BId6ggf_.js → PopoverContent-BYwt2-4x.js} +1 -1
  13. package/dist/{ScrollingText-BPP84wKo.js → ScrollingText-DfFrwSph.js} +1 -1
  14. package/dist/{SelectScrollDownButton-T32cVFeM.js → SelectScrollDownButton-CiDUxfEj.js} +6 -6
  15. package/dist/{Switch-Ch-k3Rv-.js → Switch-CsIuYP_e.js} +1 -1
  16. package/dist/{TabsList-B8CVOQPC.js → TabsList-Dttss653.js} +9 -5
  17. package/dist/{Toaster-1rYWrmAm.js → Toaster-D6q4HtXu.js} +50 -47
  18. package/dist/{ToggleGroupItem-COu_4IW4.js → ToggleGroupItem-D_AHlRw9.js} +18 -22
  19. package/dist/animated-digit.js +2 -2
  20. package/dist/api/index.d.ts +5 -2
  21. package/dist/api.js +2 -2
  22. package/dist/aurora.js +69 -69
  23. package/dist/{badge-CaoFJzRb.js → badge-UILT_3pZ.js} +1 -1
  24. package/dist/badge.js +1 -1
  25. package/dist/{button-DN39cGqL.js → button-ChXMfsud.js} +12 -12
  26. package/dist/button.js +1 -1
  27. package/dist/card.js +1 -1
  28. package/dist/carousel.js +8 -8
  29. package/dist/{check-BBKKKSTf.js → check-njhk-vfu.js} +1 -1
  30. package/dist/{chevron-down-BSkTP2aL.js → chevron-down-DKkxb4VV.js} +1 -1
  31. package/dist/{chevron-right-sDM0Yvrf.js → chevron-right-CPXbqQQz.js} +1 -1
  32. package/dist/{chevron-up-CCOD_FTz.js → chevron-up-n_24SqI-.js} +1 -1
  33. package/dist/coalesceMetric-5qIeZnTx.js +13 -0
  34. package/dist/{color-C5ls_QF7.js → color-CUYeFbgd.js} +9 -7
  35. package/dist/color.js +1 -1
  36. package/dist/command.js +1 -1
  37. package/dist/components/custom/animated-digit/AnimatedDigit.vue.d.ts +8 -0
  38. package/dist/components/custom/aurora/constants/presets.d.ts +5 -62
  39. package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +1 -1
  40. package/dist/components/custom/aurora/constants/shaders/vangogh-medium.glsl.d.ts +1 -0
  41. package/dist/components/custom/aurora/index.d.ts +1 -1
  42. package/dist/components/custom/configurator/ConfiguratorRow.vue.d.ts +16 -0
  43. package/dist/components/custom/constellation/Constellation.vue.d.ts +74 -6
  44. package/dist/components/custom/constellation/composables/createConstellationField.d.ts +41 -0
  45. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +35 -0
  46. package/dist/components/custom/constellation/constants.d.ts +61 -0
  47. package/dist/components/custom/constellation/constellationDraw.d.ts +30 -0
  48. package/dist/components/custom/constellation/constellationField.d.ts +116 -149
  49. package/dist/components/custom/constellation/constellationInteraction.d.ts +132 -0
  50. package/dist/components/custom/constellation/index.d.ts +5 -2
  51. package/dist/components/custom/controls/DarkModeToggle.vue.d.ts +11 -0
  52. package/dist/components/custom/dock/DockRail.vue.d.ts +88 -0
  53. package/dist/components/custom/dock/DockTabButton.vue.d.ts +3 -4
  54. package/dist/components/custom/dock/GlassDock.vue.d.ts +5 -118
  55. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +36 -0
  56. package/dist/components/custom/dock/composables/index.d.ts +1 -0
  57. package/dist/components/custom/dock/composables/useDockClickIntegrity.d.ts +23 -0
  58. package/dist/components/custom/dock/composables/useDockMorphWindow.d.ts +15 -0
  59. package/dist/components/custom/dock/composables/useDockOrientationMorph.d.ts +44 -0
  60. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +165 -0
  61. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +44 -0
  62. package/dist/components/custom/dock/constants.d.ts +48 -0
  63. package/dist/components/custom/dock/index.d.ts +3 -0
  64. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +5 -37
  65. package/dist/components/custom/fourier-field/index.d.ts +1 -1
  66. package/dist/components/custom/fourier-field/math.d.ts +17 -0
  67. package/dist/components/custom/fourier-field/presets.d.ts +54 -0
  68. package/dist/components/custom/goo-blob/composables/buildMetaballProgram.d.ts +18 -0
  69. package/dist/components/custom/goo-blob/composables/uploadBlobUniforms.d.ts +41 -0
  70. package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +4 -3
  71. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +11 -8
  72. package/dist/components/custom/goo-blob/constants.d.ts +52 -0
  73. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -0
  74. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +2 -2
  75. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +37 -0
  76. package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +6 -0
  77. package/dist/components/custom/labeled-field/LabeledSlider.vue.d.ts +6 -0
  78. package/dist/components/custom/labeled-field/LabeledSwitch.vue.d.ts +6 -0
  79. package/dist/components/custom/metric-badge/MetricBadge.vue.d.ts +11 -18
  80. package/dist/components/custom/metric-badge/index.d.ts +1 -0
  81. package/dist/components/custom/metric-cell/MetricCell.vue.d.ts +15 -4
  82. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +6 -4
  83. package/dist/components/custom/tabs/constants.d.ts +12 -0
  84. package/dist/components/custom/underline/GlassUnderline.vue.d.ts +84 -0
  85. package/dist/components/custom/underline/index.d.ts +2 -0
  86. package/dist/components/custom/underline/types.d.ts +56 -0
  87. package/dist/components/ui/card/Card.vue.d.ts +15 -3
  88. package/dist/components/ui/drawer/Drawer.vue.d.ts +1 -0
  89. package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +2 -2
  90. package/dist/components/ui/metric-pill/MetricPill.vue.d.ts +6 -3
  91. package/dist/components/ui/slider/index.d.ts +22 -19
  92. package/dist/components/ui/tabs/TabsIndicator.vue.d.ts +4 -1
  93. package/dist/components/ui/toast/use-toast.d.ts +2 -2
  94. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  95. package/dist/components/ui/toggle/index.d.ts +1 -1
  96. package/dist/components/ui/toggle-group/ToggleGroup.vue.d.ts +1 -7
  97. package/dist/components/ui/toggle-group/ToggleGroupItem.vue.d.ts +1 -3
  98. package/dist/components/ui/toggle-group/toggleGroupContext.d.ts +0 -13
  99. package/dist/composables/color/index.d.ts +12 -0
  100. package/dist/composables/dark/index.d.ts +1 -1
  101. package/dist/composables/dark/useGlobalDark.d.ts +1 -21
  102. package/dist/composables/glass/index.d.ts +0 -1
  103. package/dist/composables/glass/useGlassBackdropLuminance.d.ts +59 -0
  104. package/dist/composables/glass/useSpecularTracking.d.ts +12 -3
  105. package/dist/composables/motion/core/index.d.ts +1 -1
  106. package/dist/composables/motion/curves.d.ts +48 -0
  107. package/dist/composables/motion/index.d.ts +2 -0
  108. package/dist/composables/motion/springPresets.d.ts +33 -0
  109. package/dist/composables/motion/suite.d.ts +2 -0
  110. package/dist/composables/motion/useLiquidFlex.d.ts +85 -0
  111. package/dist/composables/motion/useSpringMount.d.ts +1 -1
  112. package/dist/configurator.js +1 -1
  113. package/dist/confirm-dialog.js +2 -2
  114. package/dist/constellation.js +336 -222
  115. package/dist/context-menu.js +2 -2
  116. package/dist/controls.js +47 -13
  117. package/dist/dark.d.ts +1 -1
  118. package/dist/dark.js +1 -1
  119. package/dist/data-table.js +1 -1
  120. package/dist/dialog.js +2 -2
  121. package/dist/dock.js +705 -365
  122. package/dist/dockContext-BegmJVmx.js +17 -0
  123. package/dist/dom.js +5 -5
  124. package/dist/{dropdown-menu-D77jX6Df.js → dropdown-menu-DzkkyBwX.js} +11 -8
  125. package/dist/dropdown-menu.js +1 -1
  126. package/dist/expandable-container.js +39 -80
  127. package/dist/forms.js +5 -5
  128. package/dist/fourier-field.js +134 -99
  129. package/dist/fourier-math.js +2 -2
  130. package/dist/glass-panel.js +86 -20
  131. package/dist/glass-ui.css +1 -1
  132. package/dist/glass-ui.js +222 -212
  133. package/dist/goo-blob.js +243 -212
  134. package/dist/hover-card.js +1 -1
  135. package/dist/hover-popover.js +1 -1
  136. package/dist/icon-tooltip.js +1 -1
  137. package/dist/index.d.ts +1 -3
  138. package/dist/instrument-chassis.js +1 -1
  139. package/dist/keyboard.js +1 -1
  140. package/dist/label.js +1 -1
  141. package/dist/labeled-field.js +28 -18
  142. package/dist/{math-DTpRVC0e.js → math-U6-RrLmV.js} +18 -2
  143. package/dist/metric-badge.js +1 -1
  144. package/dist/metric-cell.js +25 -21
  145. package/dist/metric-stack.js +35 -34
  146. package/dist/{minimize-2-lcXOuc6V.js → minimize-2-BV31Ob_h.js} +1 -1
  147. package/dist/motion-core.js +32 -137
  148. package/dist/motion-curves.d.ts +1 -0
  149. package/dist/motion-curves.js +130 -0
  150. package/dist/motion.js +38 -37
  151. package/dist/notification.js +1 -1
  152. package/dist/number-field.js +1 -1
  153. package/dist/paper-backdrop.js +1 -1
  154. package/dist/popover.js +1 -1
  155. package/dist/{presets-BP_ALM0m.js → presets-BKVyQfbt.js} +1 -14
  156. package/dist/progress.js +1 -1
  157. package/dist/reactive.js +2 -2
  158. package/dist/scrolling-text.js +1 -1
  159. package/dist/{search-nbkvr2dC.js → search-BSGrf2Sk.js} +1 -1
  160. package/dist/search.js +9 -9
  161. package/dist/select.js +3 -3
  162. package/dist/separator.js +1 -1
  163. package/dist/{sheet-VZEtNFvO.js → sheet-1fChZjtw.js} +3 -3
  164. package/dist/sheet.js +1 -1
  165. package/dist/{slider-ClgpP7EB.js → slider-B-JP2JlI.js} +4 -4
  166. package/dist/slider.js +1 -1
  167. package/dist/sortable-list.js +2 -2
  168. package/dist/springPresets--YdWTHtm.js +40 -0
  169. package/dist/stacked-icons.js +6 -6
  170. package/dist/styles/animations.css +29 -114
  171. package/dist/styles/cards.css +55 -0
  172. package/dist/styles/components.css +4 -1
  173. package/dist/styles/configurator.css +42 -0
  174. package/dist/styles/dock/layer-group.css +83 -25
  175. package/dist/styles/dock/layers.css +23 -1
  176. package/dist/styles/dock/morph-bridge.css +123 -0
  177. package/dist/styles/dock/morph.css +175 -45
  178. package/dist/styles/dock/overflow.css +51 -1
  179. package/dist/styles/dock/rail-extend.css +300 -0
  180. package/dist/styles/dock/shell.css +63 -105
  181. package/dist/styles/dock-controls/dark-mode-toggle.css +109 -0
  182. package/dist/styles/dock-controls/icon-button.css +133 -0
  183. package/dist/styles/dock-controls/tab-button.css +202 -0
  184. package/dist/styles/dock-controls/touch-floor.css +94 -0
  185. package/dist/styles/dock-controls/triggers.css +128 -0
  186. package/dist/styles/dock-controls.css +30 -595
  187. package/dist/styles/dock.css +2 -0
  188. package/dist/styles/drawer.css +2 -0
  189. package/dist/styles/floating-panel.css +17 -0
  190. package/dist/styles/glass/a11y-fallback.css +245 -0
  191. package/dist/styles/glass/ladder.css +337 -0
  192. package/dist/styles/glass/material.css +238 -0
  193. package/dist/styles/glass/progress-rail.css +78 -0
  194. package/dist/styles/glass/squircle.css +66 -0
  195. package/dist/styles/glass/surfaces.css +306 -0
  196. package/dist/styles/glass-refract.css +2 -0
  197. package/dist/styles/glass.css +31 -1188
  198. package/dist/styles/hover-popover.css +2 -0
  199. package/dist/styles/index.css +28 -14
  200. package/dist/styles/instrument-chassis.css +4 -0
  201. package/dist/styles/paper.css +2 -68
  202. package/dist/styles/segmented-tabs.css +275 -0
  203. package/dist/styles/theme/bridges.css +337 -0
  204. package/dist/styles/theme/dark.css +7 -0
  205. package/dist/styles/theme/literals.css +94 -0
  206. package/dist/styles/theme/radius.css +95 -0
  207. package/dist/styles/theme.css +26 -529
  208. package/dist/styles/tokens/color-radius.css +260 -0
  209. package/dist/styles/tokens/dark-arm.css +200 -0
  210. package/dist/styles/tokens/glass.css +440 -0
  211. package/dist/styles/tokens/light-dark.css +158 -0
  212. package/dist/styles/tokens/offsets-sizing.css +500 -0
  213. package/dist/styles/tokens/property-regs.css +169 -0
  214. package/dist/styles/tokens/scale-paper.css +366 -0
  215. package/dist/styles/tokens/scheme-motion.css +334 -0
  216. package/dist/styles/tokens/shadow.css +166 -0
  217. package/dist/styles/tokens.css +22 -2360
  218. package/dist/styles/typography.css +75 -21
  219. package/dist/styles/utilities/a11y-overrides.css +140 -0
  220. package/dist/styles/utilities/animate.css +26 -0
  221. package/dist/styles/utilities/base.css +365 -0
  222. package/dist/styles/utilities/btn.css +401 -0
  223. package/dist/styles/utilities/components.css +317 -0
  224. package/dist/styles/utilities.css +19 -1291
  225. package/dist/styles/view-transition.css +0 -51
  226. package/dist/switch.js +1 -1
  227. package/dist/tabs.js +91 -82
  228. package/dist/timeline.js +1 -1
  229. package/dist/toast.js +1 -1
  230. package/dist/toggle-group.js +1 -1
  231. package/dist/tooltip.js +1 -1
  232. package/dist/underline.d.ts +1 -0
  233. package/dist/underline.js +85 -0
  234. package/dist/{useAnimatedNumber-Bcpy5Etf.js → useAnimatedNumber-C5I3wWd8.js} +1 -1
  235. package/dist/{useConfiguratorState-DxAqksK6.js → useConfiguratorState-DAoeHVue.js} +8 -8
  236. package/dist/{useGlobalDark-CAhOXNLO.js → useGlobalDark-yhL4Wp-s.js} +3 -22
  237. package/dist/useLiquidFlex-BL0lLLN2.js +30 -0
  238. package/dist/useRAFLoop-Bxv0o6L5.js +109 -0
  239. package/dist/{useScrollProgress-CffFGLa5.js → useScrollProgress-Dlvx-L3v.js} +1 -1
  240. package/dist/useSpecularTracking-Bo5su68i.js +32 -0
  241. package/dist/useSpringMount-CI2jOstM.js +108 -0
  242. package/dist/{useTouchGate-WFyJYsth.js → useTouchGate-Dg7MQI1G.js} +1 -1
  243. package/dist/utils/coalesceMetric.d.ts +29 -0
  244. package/dist/utils/index.d.ts +1 -0
  245. package/dist/vReveal-CqaCz_mC.js +44 -0
  246. package/dist/watercolor-dot.js +11 -9
  247. package/dist/{x-Dfsegz9Y.js → x-BUwTKe50.js} +1 -1
  248. package/package.json +78 -58
  249. package/src/styles/animations.css +29 -114
  250. package/src/styles/cards.css +53 -0
  251. package/src/styles/configurator.css +42 -0
  252. package/src/styles/dock/layer-group.css +83 -25
  253. package/src/styles/dock/layers.css +23 -1
  254. package/src/styles/dock/morph-bridge.css +123 -0
  255. package/src/styles/dock/morph.css +175 -45
  256. package/src/styles/dock/overflow.css +51 -1
  257. package/src/styles/dock/rail-extend.css +300 -0
  258. package/src/styles/dock/shell.css +63 -105
  259. package/src/styles/dock-controls/dark-mode-toggle.css +109 -0
  260. package/src/styles/dock-controls/icon-button.css +133 -0
  261. package/src/styles/dock-controls/tab-button.css +202 -0
  262. package/src/styles/dock-controls/touch-floor.css +94 -0
  263. package/src/styles/dock-controls/triggers.css +128 -0
  264. package/src/styles/dock-controls.css +30 -595
  265. package/src/styles/dock.css +2 -0
  266. package/src/styles/floating-panel.css +15 -0
  267. package/src/styles/glass/a11y-fallback.css +245 -0
  268. package/src/styles/glass/ladder.css +337 -0
  269. package/src/styles/glass/material.css +238 -0
  270. package/src/styles/glass/progress-rail.css +78 -0
  271. package/src/styles/glass/squircle.css +66 -0
  272. package/src/styles/glass/surfaces.css +306 -0
  273. package/src/styles/glass.css +31 -1188
  274. package/src/styles/index.css +28 -14
  275. package/src/styles/paper.css +2 -68
  276. package/src/styles/segmented-tabs.css +271 -0
  277. package/src/styles/theme/bridges.css +337 -0
  278. package/src/styles/theme/dark.css +7 -0
  279. package/src/styles/theme/literals.css +94 -0
  280. package/src/styles/theme/radius.css +95 -0
  281. package/src/styles/theme.css +26 -529
  282. package/src/styles/tokens/color-radius.css +260 -0
  283. package/src/styles/tokens/dark-arm.css +200 -0
  284. package/src/styles/tokens/glass.css +440 -0
  285. package/src/styles/tokens/light-dark.css +158 -0
  286. package/src/styles/tokens/offsets-sizing.css +500 -0
  287. package/src/styles/tokens/property-regs.css +169 -0
  288. package/src/styles/tokens/scale-paper.css +366 -0
  289. package/src/styles/tokens/scheme-motion.css +334 -0
  290. package/src/styles/tokens/shadow.css +166 -0
  291. package/src/styles/tokens.css +22 -2360
  292. package/src/styles/typography.css +75 -21
  293. package/src/styles/utilities/a11y-overrides.css +140 -0
  294. package/src/styles/utilities/animate.css +26 -0
  295. package/src/styles/utilities/base.css +365 -0
  296. package/src/styles/utilities/btn.css +401 -0
  297. package/src/styles/utilities/components.css +317 -0
  298. package/src/styles/utilities.css +19 -1291
  299. package/src/styles/view-transition.css +0 -51
  300. package/dist/DeckProgress-Dmk4_AKN.js +0 -23
  301. package/dist/InstrumentRail-CUJ05YVG.js +0 -44
  302. package/dist/MetricBadge-BZVWIxNy.js +0 -80
  303. package/dist/components/custom/deck-progress/DeckProgress.vue.d.ts +0 -27
  304. package/dist/components/custom/deck-progress/index.d.ts +0 -2
  305. package/dist/components/custom/dialog-native/GlassDialogNative.vue.d.ts +0 -57
  306. package/dist/components/custom/dialog-native/index.d.ts +0 -1
  307. package/dist/components/custom/handmark/HandMark.vue.d.ts +0 -29
  308. package/dist/components/custom/handmark/brush.d.ts +0 -242
  309. package/dist/components/custom/handmark/freehand.d.ts +0 -69
  310. package/dist/components/custom/handmark/geometry.d.ts +0 -50
  311. package/dist/components/custom/handmark/index.d.ts +0 -21
  312. package/dist/components/custom/handmark/ink.d.ts +0 -11
  313. package/dist/components/custom/handmark/texture.d.ts +0 -39
  314. package/dist/components/custom/handmark/types.d.ts +0 -53
  315. package/dist/components/custom/handmark/useHandMark.d.ts +0 -87
  316. package/dist/components/custom/instrument-rail/InstrumentRail.vue.d.ts +0 -91
  317. package/dist/components/custom/instrument-rail/index.d.ts +0 -2
  318. package/dist/composables/motion/useRouteTransition.d.ts +0 -42
  319. package/dist/deck-progress.d.ts +0 -1
  320. package/dist/deck-progress.js +0 -2
  321. package/dist/dockContext-BKeIMmNk.js +0 -9
  322. package/dist/handmark.d.ts +0 -1
  323. package/dist/handmark.js +0 -663
  324. package/dist/instrument-rail.d.ts +0 -1
  325. package/dist/instrument-rail.js +0 -2
  326. package/dist/styles/instrument-rail.css +0 -127
  327. package/dist/useGlassRenderer-D7YGOYiM.js +0 -69
  328. package/dist/useSpecularTracking-BVRZsRHA.js +0 -26
  329. package/dist/useSpringMount-BJSHcLl3.js +0 -113
  330. package/dist/useViewTransition-DaN5Zrox.js +0 -21
  331. package/dist/vReveal-zUIQk-rJ.js +0 -53
  332. package/src/styles/instrument-rail.css +0 -127
  333. /package/dist/{ContextMenuContent-DDa0v27s.js → ContextMenuContent-CT3AS1WX.js} +0 -0
  334. /package/dist/{HoverCardContent-B6CcQ8He.js → HoverCardContent-Csywg3YF.js} +0 -0
  335. /package/dist/{Input-xuDwALQR.js → Input-DWQQIOC4.js} +0 -0
  336. /package/dist/{InstrumentChassis-C2f6cBaQ.js → InstrumentChassis-UUJX0-mW.js} +0 -0
  337. /package/dist/{Label-zRfbQdCn.js → Label-r3WzWrsj.js} +0 -0
  338. /package/dist/{ModalOverlay-B1GkAjNb.js → ModalOverlay-DVLI2VRr.js} +0 -0
  339. /package/dist/{PaperBackdrop-CqwjnfLv.js → PaperBackdrop-DIXTtVq6.js} +0 -0
  340. /package/dist/{Progress-iEuD9pxG.js → Progress-DwlUKGbr.js} +0 -0
  341. /package/dist/{SelectGroup-BFiod7X2.js → SelectGroup-aumMgWLs.js} +0 -0
  342. /package/dist/{SelectSeparator-C4Ql0gzV.js → SelectSeparator-BQ_1Fcbp.js} +0 -0
  343. /package/dist/{Separator-D7sD7RKj.js → Separator-0JE6LtNu.js} +0 -0
  344. /package/dist/{TooltipProvider-CmZzCuaG.js → TooltipProvider-B3MkB_8P.js} +0 -0
  345. /package/dist/{compile-BOXjLUxu.js → compile-B7NGOBcP.js} +0 -0
  346. /package/dist/{constants-yKeKnE84.js → constants-CS75AWHG.js} +0 -0
  347. /package/dist/{createContext-B44Sah_H.js → createContext-BM46COQ-.js} +0 -0
  348. /package/dist/{createLucideIcon-B6uNAU9G.js → createLucideIcon-DydS2qgk.js} +0 -0
  349. /package/dist/{menuItemVariants-CCoBNkU5.js → menuItemVariants-DPiEarb0.js} +0 -0
  350. /package/dist/{supportsCssTimeline-C5oe0lnD.js → supportsCssTimeline-BWenxvHU.js} +0 -0
  351. /package/dist/{useIntersectionPause-Cck5Uxk8.js → useIntersectionPause-Cc-H9ees.js} +0 -0
  352. /package/dist/{useInterval-Dsmqwi03.js → useInterval-iHludrxk.js} +0 -0
  353. /package/dist/{useKeyboardShortcuts-CyIYrndH.js → useKeyboardShortcuts-Be3w_Rwk.js} +0 -0
  354. /package/dist/{useResizeObserver-CWCbk5Px.js → useResizeObserver-BhgdhOIj.js} +0 -0
  355. /package/dist/{useResolveTokenColor-r9pnNjqK.js → useResolveTokenColor-Dvn2RZJW.js} +0 -0
  356. /package/dist/{useSortable-C8ReQ50P.js → useSortable-muI29agz.js} +0 -0
  357. /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-DmRYkOBx.js} +0 -0
  358. /package/dist/{useTimer-3xqf_54b.js → useTimer-Dzarvzuk.js} +0 -0
  359. /package/dist/{useUserInvalidAria-DoJKMZ3s.js → useUserInvalidAria-B2h6jAM_.js} +0 -0
  360. /package/dist/{useViewportReady-RIr5Wgkh.js → useViewportReady-B40FK4Pa.js} +0 -0
@@ -7,7 +7,10 @@ export { default as DockTabButton } from "./DockTabButton.vue";
7
7
  export { default as DockSelectTrigger } from "./DockSelectTrigger.vue";
8
8
  export { default as DockDropdownTrigger } from "./DockDropdownTrigger.vue";
9
9
  export { default as DockSeparator } from "./DockSeparator.vue";
10
+ export { default as DockRail } from "./DockRail.vue";
11
+ export type { DockRailItem } from "./constants";
10
12
  export type { UseDockStateOptions, UseDockStateReturn, DockState } from "./composables";
11
13
  export { useLayerTransition } from "./composables";
12
14
  export type { UseLayerTransitionOptions, UseLayerTransitionReturn, } from "./composables";
13
15
  export { DOCK_CONTEXT_KEY, useDockContext, useOptionalDockContext, provideDockContext, type DockContext, type DockOrientation, type DockLayout, } from "./composables/dockContext";
16
+ export { useDockOrientationMorph, type DockMorphOrientation, type UseDockOrientationMorphOptions, type UseDockOrientationMorphReturn, } from "./composables/useDockOrientationMorph";
@@ -6,20 +6,6 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
6
6
  expandLabel?: string;
7
7
  /** Accessible name for the collapse (exit fullscreen) button. */
8
8
  collapseLabel?: string;
9
- /**
10
- * Opt into the `gl-expand` plate → fullscreen MORPH (D6.c M7). When set,
11
- * the inline anchor and the teleported fullscreen surface share ONE
12
- * `view-transition-name` (this prop, suffixed by an app-unique `useId()`
13
- * so two ExpandableContainers on a page never collide their groups — the
14
- * proof:vt-names mandate), and the open/close toggle is wrapped in
15
- * `startViewTransition` so the plate's rect MORPHS to the fullscreen rect
16
- * (and back) instead of jump-cutting. A passed string namespaces the pair
17
- * (e.g. `"chart"`); pass an empty string for a bare `useId()` name.
18
- * Omitted (default) ⇒ NO view-transition-name, the legacy instant toggle —
19
- * byte-identical to the pre-M7 behaviour. PRM + unsupported engines take
20
- * `startViewTransition`'s instant fallback (the open/close still runs).
21
- */
22
- viewTransitionName?: string;
23
9
  } & {
24
10
  /**
25
11
  * Two-way `open` model so consumers can drive fullscreen externally
@@ -27,13 +13,7 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
27
13
  * buttons continue to operate without parent wiring.
28
14
  */
29
15
  open?: boolean;
30
- }, {
31
- anchorEl: Readonly<import("vue").ShallowRef<HTMLElement | null>>;
32
- surfaceEl: Readonly<import("vue").ShallowRef<HTMLElement | null>>;
33
- expand: () => void;
34
- collapse: () => void;
35
- }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
36
- settle: (fullscreen: boolean) => any;
16
+ }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
37
17
  "update:open": (value: boolean) => any;
38
18
  }, string, import("vue").PublicProps, Readonly<{
39
19
  buttonPosition?: "left" | "right";
@@ -41,20 +21,6 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
41
21
  expandLabel?: string;
42
22
  /** Accessible name for the collapse (exit fullscreen) button. */
43
23
  collapseLabel?: string;
44
- /**
45
- * Opt into the `gl-expand` plate → fullscreen MORPH (D6.c M7). When set,
46
- * the inline anchor and the teleported fullscreen surface share ONE
47
- * `view-transition-name` (this prop, suffixed by an app-unique `useId()`
48
- * so two ExpandableContainers on a page never collide their groups — the
49
- * proof:vt-names mandate), and the open/close toggle is wrapped in
50
- * `startViewTransition` so the plate's rect MORPHS to the fullscreen rect
51
- * (and back) instead of jump-cutting. A passed string namespaces the pair
52
- * (e.g. `"chart"`); pass an empty string for a bare `useId()` name.
53
- * Omitted (default) ⇒ NO view-transition-name, the legacy instant toggle —
54
- * byte-identical to the pre-M7 behaviour. PRM + unsupported engines take
55
- * `startViewTransition`'s instant fallback (the open/close still runs).
56
- */
57
- viewTransitionName?: string;
58
24
  } & {
59
25
  /**
60
26
  * Two-way `open` model so consumers can drive fullscreen externally
@@ -63,10 +29,8 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
63
29
  */
64
30
  open?: boolean;
65
31
  }> & Readonly<{
66
- onSettle?: ((fullscreen: boolean) => any) | undefined;
67
32
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
68
33
  }>, {
69
- viewTransitionName: string;
70
34
  buttonPosition: "left" | "right";
71
35
  expandLabel: string;
72
36
  collapseLabel: string;
@@ -74,6 +38,10 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
74
38
  default?: (props: {
75
39
  fullscreen: boolean;
76
40
  }) => any;
41
+ } & {
42
+ default?: (props: {
43
+ fullscreen: boolean;
44
+ }) => any;
77
45
  }>;
78
46
  type __VLS_WithSlots<T, S> = T & {
79
47
  new (): {
@@ -1,6 +1,6 @@
1
1
  import type { ColorResolver } from "../../../composables/color";
2
2
  export { default as FourierField } from "./FourierField.vue";
3
- export { comp, positionsAt, makeEllipticSpectrum, type BasisComponent, type EllipticSpectrumOptions, } from "./math";
3
+ export { comp, positionsAt, dftFromPoints, makeEllipticSpectrum, type BasisComponent, type EllipticSpectrumOptions, } from "./math";
4
4
  /** The configuration-BUNDLE axis — `hero` (epicycles on, fewer harmonics) vs
5
5
  * `final` (epicycles off, denser). Not a recolour of one curve; one engine,
6
6
  * two presets. */
@@ -23,6 +23,23 @@ export declare function comp(index: number, re: number, im: number): BasisCompon
23
23
  * carries).
24
24
  */
25
25
  export declare function positionsAt(components: BasisComponent[], t: number, maxCircles?: number): [number, number][];
26
+ /**
27
+ * The forward DFT — the inverse of {@link positionsAt}. Takes a closed sequence
28
+ * of `[x, y]` samples around a curve (treated as the complex signal `x + i·y`,
29
+ * uniformly spaced in the parameter `t ∈ [0, 1)`) and returns the
30
+ * {@link BasisComponent} spectrum that {@link positionsAt} reconstructs.
31
+ *
32
+ * Frequencies run symmetrically around 0 — `0, +1, -1, +2, -2, …` up to the
33
+ * Nyquist limit — which is the index ordering the epicycle chain wants (the big
34
+ * low-order phasors first). The DC term (`index 0`) is the curve's centroid; the
35
+ * caller can subtract it (draw the chain centered) or keep it (draw at the
36
+ * sampled position).
37
+ *
38
+ * General: any point set drives it (a glyph outline, a hand-traced path, a
39
+ * digitized signature). It is NOT a special case — it is the literal forward
40
+ * transform whose inverse already ships as `positionsAt`.
41
+ */
42
+ export declare function dftFromPoints(points: [number, number][]): BasisComponent[];
26
43
  /** Tuning for {@link makeEllipticSpectrum}. */
27
44
  export interface EllipticSpectrumOptions {
28
45
  /**
@@ -0,0 +1,54 @@
1
+ export interface VariantPreset {
2
+ /** Higher-order harmonics layered over the dominant counter-rotating pair. */
3
+ harmonics: number;
4
+ /** Peak magnitude of those harmonics relative to the dominant phasor. */
5
+ harmonicScale: number;
6
+ /** Draw the nested epicycle circles + arms underneath the curve. */
7
+ epicycles: boolean;
8
+ /** Comet-trail capacity (frames of head history). ~1/3 of the period so the
9
+ * comet reads as a substantial arc, not a stub (the fourier-analysis bar). */
10
+ trailLength: number;
11
+ /** Hue offset (degrees) of the epicycle second hue away from the outline hue. */
12
+ epicycleHueShift: number;
13
+ /** Forward-clock period for one full curve traversal, in ms. */
14
+ durationMs: number;
15
+ /** A constant per-variant seed used under `freeze` so a capture is deterministic. */
16
+ frozenSeed: string;
17
+ /** The parameter `t` of the static best-frame painted under `freeze`. */
18
+ frozenT: number;
19
+ /** Comet-trail PEAK alpha (the head segment). The reference trail rides ~0.9
20
+ * near-opaque — present, not the prior 0.45 hairline whisper. */
21
+ peakAlpha: number;
22
+ /** Trail stroke weight in CSS px (the reference is a BOLD 3.5px stroke, not
23
+ * the prior 1.6 hairline). The single biggest faintness lever. */
24
+ trailWidth: number;
25
+ /** Head-glow alpha — the STRONGEST layer (head-forward: > peakAlpha). */
26
+ headGlowAlpha: number;
27
+ /** Head-glow `shadowBlur` bloom radius, in px. */
28
+ headGlowBlur: number;
29
+ /** The comet HEAD DOT radius in CSS px (the reference's glowing tip — a
30
+ * saturated core + white highlight + soft halo). 0 disables it. */
31
+ headDotRadius: number;
32
+ /** Epicycle scaffolding alphas ÷ peak (hero only; {0,0} disables the scaffold).
33
+ * The reference circles/arms are PRESENT (≈0.5/0.75), not the prior 0.18 ghost. */
34
+ epicycleRatios: {
35
+ circle: number;
36
+ arm: number;
37
+ };
38
+ /** Epicycle circle / arm stroke weights in CSS px (the reference uses a bold
39
+ * ≈2.5/2 chain, the joints carry filled dots). */
40
+ epicycleWidths: {
41
+ circle: number;
42
+ arm: number;
43
+ };
44
+ /** Paint the epicycle chain as a rainbow across the spectrum (the
45
+ * fourier-analysis signature) vs one analogous second hue. Hero only. */
46
+ epicycleRainbow: boolean;
47
+ /** Trail persistence exponent — SOFT (1..2), never the quadratic that kills the body. */
48
+ trailFadeExp: number;
49
+ /** Min trail alpha ÷ peak — the body survives, never decays to 0. The
50
+ * reference body reads near-uniform; the floor sits HIGH (≈0.35) so the
51
+ * comet body has real presence on cream too (the light-mode floor fork). */
52
+ trailFloor: number;
53
+ }
54
+ export declare const PRESETS: Record<"hero" | "final", VariantPreset>;
@@ -0,0 +1,18 @@
1
+ import { type MetaballUniformLocations } from "./uploadBlobUniforms";
2
+ /** The compiled-program handles the renderer closes over + tears down. */
3
+ export interface MetaballProgram {
4
+ prog: WebGLProgram;
5
+ vs: WebGLShader;
6
+ fs: WebGLShader;
7
+ vao: WebGLVertexArrayObject;
8
+ buf: WebGLBuffer;
9
+ locs: MetaballUniformLocations;
10
+ }
11
+ /**
12
+ * Compile the metaball shader, build the full-quad VAO, and resolve the uniform
13
+ * location cache on a fresh context. Leaves `BLEND` enabled with the
14
+ * premultiplied-alpha `(ONE, ONE_MINUS_SRC_ALPHA)` blend func (the source's
15
+ * setup), `prog` in use, and the VAO bound — the caller's `resize`/`drawFrame`
16
+ * re-bind as needed.
17
+ */
18
+ export declare function buildMetaballProgram(gl: WebGL2RenderingContext): MetaballProgram;
@@ -0,0 +1,41 @@
1
+ import type { BlobConfig, MoodParams } from "../types";
2
+ import type { BlobPointer } from "./useBlobPointer";
3
+ import type { BlobSatelliteSystem } from "./useBlobSatellites";
4
+ import { MAX_SATS, TRAIL_N, MAX_BLOB_STOPS, POS_SCALE, UNIFORM_NAMES } from "../constants";
5
+ import type { UniformName } from "../constants";
6
+ export { MAX_SATS, TRAIL_N, MAX_BLOB_STOPS, POS_SCALE, UNIFORM_NAMES };
7
+ export type { UniformName };
8
+ /** The cached uniform-location set the GL setup builds once per context. */
9
+ export interface MetaballUniformLocations {
10
+ U: Record<UniformName, WebGLUniformLocation | null>;
11
+ satPosLocs: (WebGLUniformLocation | null)[];
12
+ satRadLocs: (WebGLUniformLocation | null)[];
13
+ satOpLocs: (WebGLUniformLocation | null)[];
14
+ trailPosLocs: (WebGLUniformLocation | null)[];
15
+ trailRadLocs: (WebGLUniformLocation | null)[];
16
+ paletteLocs: (WebGLUniformLocation | null)[];
17
+ }
18
+ /** The per-frame state the renderer resolves and hands to the upload leaf. */
19
+ export interface BlobFrameState {
20
+ /** The mood params for this frame (`mood.params.value`). */
21
+ params: MoodParams;
22
+ /** The resolved base-color gamma-sRGB triple. */
23
+ rgb: [number, number, number];
24
+ /** The tempo-integrated motion clock (ms). */
25
+ simTimeMs: number;
26
+ /** The substrate's seconds clock for this frame (the pulse-phase axis). */
27
+ timeSec: number;
28
+ /** A CONCRETE → gamma-sRGB triple resolver (the renderer's memoised `/color` leaf). */
29
+ resolveColor: (css: string) => [number, number, number];
30
+ /** The Fresnel rim color (CONCRETE — the SFC un-wrapped any var()-token). */
31
+ rimColor: string;
32
+ /** The multi-stop palette (CONCRETE strings; EMPTY → falls back to base). */
33
+ paletteStops: string[];
34
+ }
35
+ /**
36
+ * Write the resolved frame state into the metaball program's uniforms and issue
37
+ * the draw call. Pure: it mutates GL state only (the bound program/VAO + the
38
+ * uniform values) and never reads the renderer's closure. The body is the
39
+ * byte-identical lift of the prior inline `drawFrame` uniform-upload section.
40
+ */
41
+ export declare function uploadBlobUniforms(gl: WebGL2RenderingContext, prog: WebGLProgram, vao: WebGLVertexArrayObject, locs: MetaballUniformLocations, canvas: HTMLCanvasElement, config: BlobConfig, pointer: BlobPointer, satellites: BlobSatelliteSystem, frame: BlobFrameState): void;
@@ -1,6 +1,7 @@
1
1
  import { type Ref } from "vue";
2
- /** Compile-time trail length — mirrors `TRAIL_N` in metaball.frag.ts. */
3
- export declare const TRAIL_N = 15;
2
+ import { TRAIL_N } from "../constants";
3
+ /** Compile-time trail length — re-exported from the co-located shape budget (`../constants`). */
4
+ export { TRAIL_N };
4
5
  /** A single trail sample — a decaying-radius metaball source the shader smin-merges. */
5
6
  export interface TrailSample {
6
7
  x: number;
@@ -13,7 +14,7 @@ export interface TrailSample {
13
14
  * FRAME-RATE-INDEPENDENT critically-damped spring fed the renderer's per-frame
14
15
  * `dtMs` (NOT a fixed-α lerp — the prior `SMOOTH_FACTOR = 0.12` was framerate
15
16
  * dependent). The spring is `@mkbabb/keyframes.js` `SpringProgress` driven through
16
- * its `tick(dt)` seam by the SUBSTRATE's single rAF — it does NOT call
17
+ * its `tickDt(dtMs)` seam by the SUBSTRATE's single rAF — it does NOT call
17
18
  * `SpringProgress.play()` (that would start a parallel rAF, the
18
19
  * single-substrate-loop violation `proof:blob-interaction-prm` forbids).
19
20
  *
@@ -24,14 +24,20 @@ export interface UseMetaballRendererOptions {
24
24
  satellites: BlobSatelliteSystem;
25
25
  config: BlobConfig;
26
26
  }
27
+ /** The renderer's public control surface — pause/resume the demand loop. */
28
+ export interface UseMetaballRendererReturn {
29
+ pause: () => void;
30
+ resume: () => void;
31
+ }
27
32
  /**
28
33
  * The GooBlob WebGL renderer — composes the `useWebGLCanvas` substrate (AU.W6).
29
34
  *
30
35
  * This module owns ONLY the metaball-specific concerns: compiling the shader,
31
- * building the quad + uniform cache, and uploading the per-frame uniforms derived
32
- * from the mood / pointer / satellite systems and the resolved base color. The
33
- * generic WebGL2 lifecycle — context creation, the suspend/resume model, the
34
- * demand-driven rAF loop, the tab-visibility owner, the ResizeObserver, and the
36
+ * building the quad + uniform cache (the `buildMetaballProgram` leaf), and
37
+ * uploading the per-frame uniforms (the `uploadBlobUniforms` leaf) derived from the
38
+ * mood / pointer / satellite systems and the resolved base color. The generic
39
+ * WebGL2 lifecycle — context creation, the suspend/resume model, the demand-driven
40
+ * rAF loop, the tab-visibility owner, the ResizeObserver, and the
35
41
  * webglcontextlost/restored robustness — lives in the substrate; this renderer
36
42
  * threads its behaviour through the substrate's
37
43
  * `setup`/`frame`/`shouldContinue`/`resize`/`teardown` callbacks. It does NOT call
@@ -43,7 +49,4 @@ export interface UseMetaballRendererOptions {
43
49
  * a `var(--token)` — the SFC's `resolveTokenColor` leaf does that BEFORE handing
44
50
  * concrete strings here (inv-K-3 seam); the value.js 1×1-canvas DOM probe is gone.
45
51
  */
46
- export declare function useMetaballRenderer(options: UseMetaballRendererOptions): {
47
- pause: () => void;
48
- resume: () => void;
49
- };
52
+ export declare function useMetaballRenderer(options: UseMetaballRendererOptions): UseMetaballRendererReturn;
@@ -0,0 +1,52 @@
1
+ import type { BlobMood, MoodParams } from "./types";
2
+ /** Compile-time satellite cap — mirrors `uSat*[N]` in metaball.frag.ts. */
3
+ export declare const MAX_SATS = 4;
4
+ /** Compile-time trail length — mirrors the `uTrail*[N]` arrays in metaball.frag.ts. */
5
+ export declare const TRAIL_N = 15;
6
+ /** Compile-time palette cap — mirrors `#define MAX_BLOB_STOPS` in metaball-uniforms.glsl.ts. */
7
+ export declare const MAX_BLOB_STOPS = 4;
8
+ /**
9
+ * Canvas is CSS-sized 1.6x its layout wrapper (see GooBlob.vue). Positions are in
10
+ * [-0.5, 0.5] normalized space mapped to canvas UVs. To make the layout footprint
11
+ * represent the "visible blob region" and have the extra 60% of canvas serve as
12
+ * overflow margin for satellite orbits, scale all length-like uniforms by
13
+ * 1/1.6 = 0.625.
14
+ */
15
+ export declare const POS_SCALE: number;
16
+ /** The full ordered scalar/vector uniform-name list the program builder caches a location per. */
17
+ /** A point in the 2-axis circumplex affect space. */
18
+ export interface AffectPoint {
19
+ /** Pleasantness, -1 (unpleasant) .. +1 (pleasant). */
20
+ valence: number;
21
+ /** Activation, 0 (calm/sleepy) .. 1 (energized/excited). */
22
+ arousal: number;
23
+ }
24
+ /** The five named moods as POINTS in the {valence, arousal} circumplex. */
25
+ export declare const MOOD_AVA: Record<BlobMood, AffectPoint>;
26
+ /**
27
+ * Derive the full MoodParams from a {valence, arousal} point. Arousal drives the
28
+ * motion energy (orbit speed, wobble, pulse rate/amp, noise, the iridescence/SSS
29
+ * sheen); valence warms the palette (hue range, chroma, brightness) and the
30
+ * pointer lean. ONE principled surface — the five named moods are samples of it.
31
+ */
32
+ export declare function paramsFor({ valence, arousal }: AffectPoint): MoodParams;
33
+ /** The resolved per-mood target params (samples of the `paramsFor` surface). */
34
+ export declare const MOOD_TARGETS: Record<BlobMood, MoodParams>;
35
+ /** The per-mood cross-fade duration (ms). */
36
+ export declare const TRANSITION_MS: Record<BlobMood, number>;
37
+ /** Idle timeout (ms of no pointer) after which the blob drifts to `sleepy`. */
38
+ export declare const IDLE_SLEEP_MS = 6000;
39
+ /** Click-impulse spring ring frequency (rad/s). */
40
+ export declare const PULSE_OMEGA = 18;
41
+ /** Click-impulse spring damping (< 1 = underdamped, overshoot-then-settle). */
42
+ export declare const PULSE_ZETA = 0.35;
43
+ /** The at-rest epsilon — velocity/position below this is "settled" (the park gate). */
44
+ export declare const REST_EPS = 0.001;
45
+ /** Base satellite opacity. */
46
+ export declare const BASE_OPACITY = 0.75;
47
+ /** Duration (ms) to blend from emerge endpoint into live orbit — eliminates snap. */
48
+ export declare const ORBIT_BLEND_MS = 2000;
49
+ /** Minimum spacing (ms) between satellite merge events. */
50
+ export declare const MERGE_STAGGER_MS = 3000;
51
+ export declare const UNIFORM_NAMES: readonly ["uResolution", "uTime", "uBaseColor", "uPointer", "uPointerActive", "uPointerAttraction", "uPointerStrength", "uBodyRadius", "uPulsePhase", "uPulseAmp", "uNoiseAmp", "uNoiseFreq", "uNoiseSpeed", "uWarpAmp", "uSmoothK", "uMerge", "uMaxReach", "uLit", "uRimColor", "uLightDir", "uSpecStrength", "uSpecShininess", "uRimPower", "uRimStrength", "uIridescence", "uIridHue", "uIridSpeed", "uSssScale", "uSssPower", "uCoreGlow", "uHueRange", "uSatShift", "uBrightnessShift", "uColorNoiseFreq", "uColorNoiseSpeed", "uStopCount", "uSatCount", "uTrailCount", "uVelocity", "uStretch"];
52
+ export type UniformName = (typeof UNIFORM_NAMES)[number];
@@ -0,0 +1 @@
1
+ export declare const METABALL_UNIFORMS_GLSL = "#version 300 es\nprecision highp float;\n\nin vec2 vUv;\nout vec4 fragColor;\n\nuniform vec2 uResolution;\nuniform float uTime;\nuniform vec3 uBaseColor;\n\n// Multi-stop palette (W11.b) \u2014 2-4 in-family OKLCh stops (uploaded GAMMA sRGB, like\n// uBaseColor). uStopCount <= 1 falls back to uBaseColor (the single-color default,\n// zero regression). MAX_BLOB_STOPS is a compile-time #define.\n#define MAX_BLOB_STOPS 4\nuniform int uStopCount;\nuniform vec3 uPalette[MAX_BLOB_STOPS];\n\n// Pointer\nuniform vec2 uPointer;\nuniform float uPointerActive;\nuniform float uPointerAttraction;\nuniform float uPointerStrength;\n\n// Main body\nuniform float uBodyRadius;\n\n// Pulsation\nuniform float uPulsePhase;\nuniform float uPulseAmp;\n\n// Surface noise\nuniform float uNoiseAmp;\nuniform float uNoiseFreq;\nuniform float uNoiseSpeed;\n\n// Gooey\nuniform float uSmoothK;\nuniform float uMerge; // 0 = quadratic smin, 1 = circular smin (rounder menisci)\n\n// AX.W16 (arm 5) \u2014 the PRE-FBM bounding-discard radius (UV space). main() early-outs\n// to a transparent write for any fragment OUTSIDE this radius BEFORE the two 3-octave\n// FBM calls + the OKLCh round-trip. The renderer uploads it PADDED by every\n// outward-expanding term (body + eccentric orbit + sat radius + smin band + FBM edge\n// amplitude + click-pulse + a lean/squash safety pad) so it NEVER clips the wet\n// meniscus (IQ: inflate the bound to match any outward op).\nuniform float uMaxReach;\n\n// Membrane \u2014 domain-warp strength on the FBM edge displacement (0 = plain fbm).\nuniform float uWarpAmp;\n\n// Lit glass surface (W9.b) \u2014 gated behind uLit so the flat fill stays default.\nuniform float uLit; // 0 = flat fill (default), 1 = lit droplet\nuniform vec3 uRimColor; // Fresnel rim tint (GAMMA sRGB, via the /color leaf)\nuniform vec3 uLightDir; // normalized light direction (x, y, z)\nuniform float uSpecStrength; // Blinn-Phong specular weight\nuniform float uSpecShininess; // specular exponent (16-64, tight glint)\nuniform float uRimPower; // Fresnel/Schlick exponent (~2-3)\nuniform float uRimStrength; // Fresnel rim weight\n\n// Iridescence + fake subsurface (W11.a) \u2014 translucent-gel read.\nuniform float uIridescence; // warm-pearl rim sheen weight (0 = off)\nuniform float uIridHue; // base hue (radians) the cosine palette biases toward (warm)\nuniform float uIridSpeed; // animated-thickness scroll for the iridescent t\nuniform float uSssScale; // fast-SSS back-light weight\nuniform float uSssPower; // fast-SSS exponent\nuniform float uCoreGlow; // thickness-driven inner-luminosity lift\n\n// Color perturbation (perceptually uniform \u2014 OKLCh L/C/h)\nuniform float uHueRange; // degrees of hue swing (converted to radians)\nuniform float uSatShift; // OKLCh chroma swing\nuniform float uBrightnessShift; // OKLCh lightness bias\nuniform float uColorNoiseFreq;\nuniform float uColorNoiseSpeed;\n\n// Satellites (max 4)\n#define MAX_SATS 4\nuniform int uSatCount;\nuniform vec2 uSatPos[MAX_SATS];\nuniform float uSatRadius[MAX_SATS];\nuniform float uSatOpacity[MAX_SATS];\n\n// Pointer trail (W10) \u2014 a decaying-radius pseudopod toward the cursor. uTrail is a\n// COMPILE-TIME-SIZED array (GLSL ES 3.00 forbids a uniform-sized array) with a\n// DYNAMIC break on uTrailCount, mirroring the satellite loop. Later samples paint\n// smaller metaballs (r *= 1 - i/N) so the trail tapers into a tail.\n#define TRAIL_N 15\nuniform int uTrailCount;\nuniform vec2 uTrailPos[TRAIL_N];\nuniform float uTrailRadius[TRAIL_N];\n\n// Velocity-driven volume-preserving squash-and-stretch (W10).\nuniform vec2 uVelocity; // smoothed pointer velocity (motion direction + speed)\nuniform float uStretch; // squash-stretch magnitude (0 = off)\n\nconst float PI = 3.141592653589793;\n";
@@ -28,8 +28,8 @@ export type InstrumentChassisVariant = "glass" | "spine";
28
28
  * the `<ChassisDivider>` adjacent to each — emit markup only when bound.
29
29
  * I gate `<header>`, `<footer>`, and the two dividers on `$slots.strip` /
30
30
  * `$slots.control` presence, so empty-slot consumers don't have to suppress
31
- * the markup with `display: none` overrides. Mirrors the `v-if="$slots.status"`
32
- * idiom InstrumentRail established.
31
+ * the markup with `display: none` overrides — the `v-if="$slots.status"`
32
+ * slot-gating idiom.
33
33
  *
34
34
  * The chassis owns the `--phase-color` cascade via `data-phase`; phase label,
35
35
  * hero number, and phase progress fill all read it through one CSS custom
@@ -16,6 +16,19 @@ import { type HTMLAttributes } from "vue";
16
16
  * cursor-help). The previous mixed `text-base` / `text-lg` literals
17
17
  * harmonise on a single body-size token.
18
18
  *
19
+ * AZ.W-BLOB-REDRESS — `hideLabel` VISUALLY hides the field's own label (it
20
+ * renders `sr-only` instead of `.labeled-field-label`) while KEEPING it in the
21
+ * DOM, so the `for`/`id`/`aria-labelledby` control↔label association — the
22
+ * Slider thumb's `aria-labelledby`, the Select trigger's `for` — stays intact
23
+ * and the control is still accessibly named. The visible human label is then
24
+ * supplied by an enclosing chrome row (a `<ConfiguratorRow label>`). This is
25
+ * the canonical fix for the double-label leak: a `<ConfiguratorRow label="X">`
26
+ * wrapping a `<LabeledSlider label="x">` rendered BOTH labels (the human one +
27
+ * the raw config key); the inner control passes `hide-label` so ONE visible
28
+ * human label remains, the raw key demotes to the row's mono `name` token, and
29
+ * a11y is preserved. The tooltip is suppressed when hidden (the row owns the
30
+ * affordance). NO effect on `LabeledField` used standalone (default `false`).
31
+ *
19
32
  * AQ.W4 §W4.5 — `required` threads a `aria-hidden` asterisk onto the label
20
33
  * (the `required` attr on the slotted control is the semantic carrier). The
21
34
  * `error` slot renders an error-message region that the W3.1c
@@ -24,12 +37,36 @@ import { type HTMLAttributes } from "vue";
24
37
  * default slot's `errorId` slot-prop so the slotted control can bind
25
38
  * `aria-errormessage="errorId"` (the four wrappers auto-wire it; a raw
26
39
  * `<LabeledField>` slot binds it manually).
40
+ *
41
+ * # LabeledField vs ConfiguratorRow — recorded divergence (AZ.W-METRIC-UNIFY §B)
42
+ *
43
+ * Both are "label (+ meta) above/beside a slotted control", but they are NOT
44
+ * interchangeable — they emphasize DIFFERENT features:
45
+ * - LabeledField (this) — for FORM fields. Carries the `for`/`id` label↔control
46
+ * a11y wiring (`controlId`/`labelId`/`errorId`), the `tooltip`, the `required`
47
+ * asterisk, and the `aria-live` `error` region.
48
+ * - ConfiguratorRow — for TOKEN / PRESET controls. Carries the token-`name`
49
+ * reference, the opt-in `reset` affordance (`canReset`), and the four-rung
50
+ * `density` axis. No a11y for/id wiring.
51
+ *
52
+ * Reach for LabeledField for accessible form inputs; reach for ConfiguratorRow
53
+ * inside a `<Configurator>` for token sliders/selects. The divergence is recorded
54
+ * (NOT a forced merge — no ≥2-consumer shared-chassis need surfaced) in
55
+ * `docs/precepts/design-idioms.md §9`, alongside the `cn`/`focus-ring` keeps.
27
56
  */
28
57
  type __VLS_Props = {
29
58
  label: string;
30
59
  tooltip?: string;
31
60
  labelClass?: HTMLAttributes["class"];
32
61
  required?: boolean;
62
+ /**
63
+ * AZ.W-BLOB-REDRESS — render the field's own label `sr-only` (kept in the
64
+ * DOM for the control↔label a11y association) instead of visibly. Use when
65
+ * an enclosing chrome row already supplies the visible human label (a
66
+ * `<ConfiguratorRow label>`), so the inner control does not leak a second
67
+ * (often raw-config-key) label. Default `false` (standalone behavior).
68
+ */
69
+ hideLabel?: boolean;
33
70
  };
34
71
  declare var __VLS_7: {
35
72
  errorId: string;
@@ -8,6 +8,12 @@ type __VLS_Props = {
8
8
  labelClass?: string;
9
9
  /** AQ.W4 §W4.5 — thread the required-field asterisk onto the label. */
10
10
  required?: boolean;
11
+ /**
12
+ * AZ.W-BLOB-REDRESS — render the label `sr-only` (kept for a11y, hidden
13
+ * visually) when an enclosing chrome row (a `<ConfiguratorRow>`) already
14
+ * supplies the visible human label. Avoids the double-label leak.
15
+ */
16
+ hideLabel?: boolean;
11
17
  };
12
18
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
13
19
  "update:modelValue": (value: string) => any;
@@ -8,6 +8,12 @@ type __VLS_Props = {
8
8
  step: number;
9
9
  /** AQ.W4 §W4.5 — thread the required-field asterisk onto the label. */
10
10
  required?: boolean;
11
+ /**
12
+ * AZ.W-BLOB-REDRESS — render the label `sr-only` (kept for a11y, hidden
13
+ * visually) when an enclosing chrome row (a `<ConfiguratorRow>`) already
14
+ * supplies the visible human label. Avoids the double-label leak.
15
+ */
16
+ hideLabel?: boolean;
11
17
  };
12
18
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
13
19
  "update:modelValue": (value: number) => any;
@@ -5,6 +5,12 @@ type __VLS_Props = {
5
5
  labelClass?: string;
6
6
  /** AQ.W4 §W4.5 — thread the required-field asterisk onto the label. */
7
7
  required?: boolean;
8
+ /**
9
+ * AZ.W-BLOB-REDRESS — render the label `sr-only` (kept for a11y, hidden
10
+ * visually) when an enclosing chrome row (a `<ConfiguratorRow>`) already
11
+ * supplies the visible human label. Avoids the double-label leak.
12
+ */
13
+ hideLabel?: boolean;
8
14
  };
9
15
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
10
16
  "update:checked": (value: boolean) => any;
@@ -1,9 +1,10 @@
1
1
  import type { HTMLAttributes } from 'vue';
2
- type MetricBadgeSize = 'sm' | 'md' | 'lg' | 'xl';
3
- type MetricBadgeLabelPosition = 'inline' | 'stacked';
4
- type MetricBadgeVariant = 'default' | 'record';
5
- type __VLS_Props = {
6
- amount: string | number | null | undefined;
2
+ import { type MetricValue } from '../../../utils';
3
+ export type MetricBadgeSize = 'sm' | 'md' | 'lg' | 'xl';
4
+ export type MetricBadgeLabelPosition = 'inline' | 'stacked';
5
+ export interface MetricBadgeProps {
6
+ /** The primary metric. A valid `0` renders `"0"`, never the placeholder. */
7
+ value: MetricValue;
7
8
  unit?: string;
8
9
  /** Full annotation slot, rendered as a sibling `<span>` with classnames
9
10
  * `metric-badge__label metric-badge__label--full`. Tracked uppercase,
@@ -21,27 +22,19 @@ type __VLS_Props = {
21
22
  * the label slot does not render even if `label`/`abbreviation` carry
22
23
  * values. */
23
24
  labelPosition?: MetricBadgeLabelPosition;
24
- /** Color applied to the amount when it's truthy. */
25
+ /** Color applied to the value when it's non-empty. */
25
26
  color?: string;
26
- /** Substitute glyph when amount is empty. */
27
+ /** Substitute glyph when value is empty (null / undefined / ""). */
27
28
  placeholder?: string;
28
29
  /** Typographic scale. Defaults to `md`. The ladder reads
29
30
  * sm 11px / md 12px / lg 14px / xl 18px; `xl` is the audacious-poster
30
- * rung (`text-mono-prose` amount, `text-prose` unit) for hero
31
+ * rung (`text-mono-prose` value, `text-prose` unit) for hero
31
32
  * placements that need to read at chassis distance. */
32
33
  size?: MetricBadgeSize;
33
- /** Surface register. `default` is the canonical 5-tier glass pill;
34
- * `record` is the GILT pill (D6.b) — a 1px `--gold-rim` tooled edge +
35
- * `--gold-ink` amount + a faint ≤8% gold wash (never opaque). Gold marks
36
- * the SUPERLATIVE, exactly one per view: the all-time-high / peak figure.
37
- * The medal reads as earned, not as a fourth data color. */
38
- variant?: MetricBadgeVariant;
39
34
  class?: HTMLAttributes['class'];
40
- };
41
- declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
35
+ }
36
+ declare const __VLS_export: import("vue").DefineComponent<MetricBadgeProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MetricBadgeProps> & Readonly<{}>, {
42
37
  size: MetricBadgeSize;
43
- variant: MetricBadgeVariant;
44
- placeholder: string;
45
38
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
46
39
  declare const _default: typeof __VLS_export;
47
40
  export default _default;
@@ -1 +1,2 @@
1
1
  export { default as MetricBadge } from "./MetricBadge.vue";
2
+ export type { MetricBadgeProps, MetricBadgeSize, MetricBadgeLabelPosition, } from "./MetricBadge.vue";
@@ -1,4 +1,5 @@
1
1
  import type { Component, FunctionalComponent, HTMLAttributes } from "vue";
2
+ import { type MetricValue } from "../../../utils";
2
3
  /**
3
4
  * Permissive icon type — Vue's `Component` type ships across multiple
4
5
  * package boundaries (vue / @vue/runtime-core duplication when consumers
@@ -54,13 +55,24 @@ export interface MetricCellProps {
54
55
  iconStrokeWidth?: number;
55
56
  /** Icon pixel size — defaults to 14 (matches `text-micro` cap height). */
56
57
  iconSize?: number;
58
+ /**
59
+ * Optional accent colour for the LEADING GLYPH ONLY (e.g. a semantic
60
+ * `var(--chart-download)` viz colour). Tints the icon — the one
61
+ * deliberate colour event for the cell — while the label, value, and unit
62
+ * stay neutral ink (the one-color-event proportion rule, AZ.W-SUFFUSE D3).
63
+ * Unset (default) keeps the glyph the neutral `--muted-foreground` of the
64
+ * label row.
65
+ */
66
+ iconColor?: string;
57
67
  /** Label text — reads through the `label` slot when set. */
58
68
  label?: string;
59
- /** Value — primary metric. Reads through the `value` slot when set. */
60
- value?: string | number | null | undefined;
69
+ /** Value — primary metric. Reads through the `value` slot when set. A valid
70
+ * `0` renders `"0"`, never the placeholder. */
71
+ value?: MetricValue;
61
72
  /** Unit suffix appended after the value (e.g. "Mbps", "ms"). */
62
73
  unit?: string;
63
- /** Placeholder glyph when value is empty/null. Defaults to em-dash. */
74
+ /** Placeholder glyph when value is empty/null. Defaults to em-dash (the
75
+ * shared `coalesceMetric` default). */
64
76
  placeholder?: string;
65
77
  /**
66
78
  * Visual register.
@@ -82,7 +94,6 @@ type __VLS_Slots = {} & {
82
94
  value?: (props: typeof __VLS_10) => any;
83
95
  };
84
96
  declare const __VLS_base: import("vue").DefineComponent<MetricCellProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MetricCellProps> & Readonly<{}>, {
85
- placeholder: string;
86
97
  appearance: MetricCellAppearance;
87
98
  iconStrokeWidth: number;
88
99
  iconSize: number;
@@ -1,4 +1,5 @@
1
1
  import type { HTMLAttributes, Component } from "vue";
2
+ import { type MetricValue } from "../../../utils";
2
3
  /**
3
4
  * MetricRow — a single row inside <MetricStack>.
4
5
  *
@@ -39,11 +40,13 @@ export interface MetricRowProps {
39
40
  iconSize?: number;
40
41
  /** Label text — reads through the label slot when set. */
41
42
  label?: string;
42
- /** Value text (the audacious-poster hero number). */
43
- value?: string | number | null | undefined;
43
+ /** Value text (the audacious-poster hero number). A valid `0` renders
44
+ * `"0"`, never the placeholder. */
45
+ value?: MetricValue;
44
46
  /** Unit suffix — reads through the unit slot when set. */
45
47
  unit?: string;
46
- /** Placeholder glyph when value is empty/null. Defaults to "—". */
48
+ /** Placeholder glyph when value is empty/null. Defaults to "—" (the shared
49
+ * `coalesceMetric` default). */
47
50
  placeholder?: string;
48
51
  /**
49
52
  * Per-row phase colour. Sets `--phase-color` inline so descendant
@@ -87,7 +90,6 @@ type __VLS_Slots = {} & {
87
90
  };
88
91
  declare const __VLS_base: import("vue").DefineComponent<MetricRowProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MetricRowProps> & Readonly<{}>, {
89
92
  active: boolean;
90
- placeholder: string;
91
93
  iconStrokeWidth: number;
92
94
  iconSize: number;
93
95
  digitCount: number;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Fallback for `--tab-indicator-max-stretch` when the cascade leaves it unset — the
3
+ * default ≈+8% travel-squish cap (AX.W53). `--stretch = 1 + frac · (cap − 1)`, so a
4
+ * full-width jump reaches the cap and a tiny hop stays near 1. The token is the
5
+ * authority; this is the no-token floor.
6
+ */
7
+ export declare const DEFAULT_INDICATOR_MAX_STRETCH = 1.08;
8
+ /**
9
+ * ms after the stretch opens before it releases back to fit (`--stretch → 1`) — the
10
+ * Material "grow then shrink" close. Rides the same snappy glide clock as the travel.
11
+ */
12
+ export declare const INDICATOR_RELEASE_MS = 60;