@mkbabb/glass-ui 3.2.0 → 3.4.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 (306) hide show
  1. package/dist/{CardFooter-3-VGho1J.js → CardFooter-C390imy7.js} +2 -2
  2. package/dist/{CollapsibleContent-wlmlDujU.js → CollapsibleContent-cauTbZEM.js} +1 -1
  3. package/dist/{CommandShortcut-C6lsz3pG.js → CommandShortcut-BiVyqipe.js} +5 -4
  4. package/dist/DataTable-FfkaAg2z.js +465 -0
  5. package/dist/DialogContent-IQ8_BRrC.js +100 -0
  6. package/dist/{DiscoGlyph-B7YooI2-.js → DiscoGlyph-BaZ8OawK.js} +1 -1
  7. package/dist/{GlyphFace-Bvk6OIas.js → GlyphFace-B_7vOmYn.js} +1 -1
  8. package/dist/HoverPopover-DTSYkJtw.js +96 -0
  9. package/dist/{IconTooltip-DXveGjx7.js → IconTooltip-BTyYn4mr.js} +1 -1
  10. package/dist/Input-CU9CNKmo.js +52 -0
  11. package/dist/{MetricBadge-J_GBCb8e.js → MetricBadge-BlrdbOGN.js} +1 -1
  12. package/dist/{NumberFieldContent-B6L6YrQz.js → NumberFieldContent-iOTQ5rGO.js} +8 -4
  13. package/dist/{PopoverContent-CxEEUL7Y.js → PopoverContent-B8WtJECb.js} +1 -1
  14. package/dist/Progress-DjM86vfb.js +254 -0
  15. package/dist/{ScrollingText-1Qjnwz6H.js → ScrollingText-P9o_DuMn.js} +1 -1
  16. package/dist/{SelectScrollDownButton-BvvvAbuh.js → SelectScrollDownButton-BGn3rjs9.js} +9 -8
  17. package/dist/TabsIndicator-DA0x9gPr.js +97 -0
  18. package/dist/{ToggleGroupItem-Cy7xHFEo.js → ToggleGroupItem-gyXj998A.js} +37 -40
  19. package/dist/UnderlineTabs-Cq_AD03t.js +39 -0
  20. package/dist/animated-digit.js +2 -2
  21. package/dist/api/index.d.ts +2 -0
  22. package/dist/api.js +1 -1
  23. package/dist/aurora.js +454 -271
  24. package/dist/{button-DS3ULf5i.js → button-Ckn3eDfB.js} +27 -22
  25. package/dist/button.js +1 -1
  26. package/dist/card.js +1 -1
  27. package/dist/carousel.js +2 -2
  28. package/dist/collapsible.js +1 -1
  29. package/dist/color-rkK4RMx2.js +33 -0
  30. package/dist/color.d.ts +1 -0
  31. package/dist/color.js +2 -0
  32. package/dist/command.js +1 -1
  33. package/dist/compile-DVgAxagk.js +106 -0
  34. package/dist/components/custom/animated-digit/AnimatedDigit.vue.d.ts +7 -7
  35. package/dist/components/custom/aurora/Aurora.vue.d.ts +3 -3
  36. package/dist/components/custom/aurora/composables/color.d.ts +3 -25
  37. package/dist/components/custom/aurora/composables/cursorModel.d.ts +45 -0
  38. package/dist/components/custom/aurora/composables/frameLoop.d.ts +30 -0
  39. package/dist/components/custom/aurora/composables/glSetup.d.ts +29 -0
  40. package/dist/components/custom/aurora/composables/runtime.d.ts +45 -35
  41. package/dist/components/custom/aurora/composables/uniformBridge.d.ts +67 -0
  42. package/dist/components/custom/aurora/composables/useAurora.d.ts +14 -1
  43. package/dist/components/custom/aurora/composables/useCursorInteraction.d.ts +1 -1
  44. package/dist/components/custom/aurora/constants/budget.d.ts +50 -0
  45. package/dist/components/custom/aurora/{presets.d.ts → constants/presets.d.ts} +2 -5
  46. package/dist/components/custom/aurora/constants/shaders/aurora.frag.d.ts +1 -0
  47. package/dist/components/custom/aurora/constants/shaders/brush.glsl.d.ts +1 -0
  48. package/dist/components/custom/aurora/constants/shaders/composition.glsl.d.ts +1 -0
  49. package/dist/components/custom/aurora/constants/shaders/flow.glsl.d.ts +1 -0
  50. package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +2 -0
  51. package/dist/components/custom/aurora/constants/shaders/tonemap.glsl.d.ts +1 -0
  52. package/dist/components/custom/aurora/index.d.ts +2 -2
  53. package/dist/components/custom/configurator/ConfiguratorLayer.vue.d.ts +14 -7
  54. package/dist/components/custom/configurator/density.d.ts +3 -8
  55. package/dist/components/custom/dock/DockBackgroundToggle.vue.d.ts +46 -0
  56. package/dist/components/custom/dock/DockIconButton.vue.d.ts +3 -3
  57. package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +2 -2
  58. package/dist/components/custom/dock/GlassDock.vue.d.ts +22 -18
  59. package/dist/components/custom/dock/composables/dockContext.d.ts +4 -4
  60. package/dist/components/custom/dock/composables/dockLayerContext.d.ts +13 -6
  61. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +32 -8
  62. package/dist/components/custom/dock/index.d.ts +1 -0
  63. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +10 -0
  64. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +1 -1
  65. package/dist/components/custom/glyph-face/keys.d.ts +3 -29
  66. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +48 -0
  67. package/dist/components/custom/goo-blob/composables/easing.d.ts +6 -0
  68. package/dist/components/custom/goo-blob/composables/useBlobMood.d.ts +14 -0
  69. package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +18 -0
  70. package/dist/components/custom/goo-blob/composables/useBlobSatellites.d.ts +13 -0
  71. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +42 -0
  72. package/dist/components/custom/goo-blob/index.d.ts +7 -0
  73. package/dist/components/custom/goo-blob/shaders/metaball.frag.d.ts +1 -0
  74. package/dist/components/custom/goo-blob/shaders/metaball.vert.d.ts +1 -0
  75. package/dist/components/custom/goo-blob/shaders/oklch-perturb.glsl.d.ts +1 -0
  76. package/dist/components/custom/goo-blob/shaders/sdf-body.glsl.d.ts +1 -0
  77. package/dist/components/custom/goo-blob/shaders/watercolor-edges.glsl.d.ts +2 -0
  78. package/dist/components/custom/goo-blob/types.d.ts +77 -0
  79. package/dist/components/custom/hover-popover/HoverPopover.vue.d.ts +48 -9
  80. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +2 -0
  81. package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +2 -2
  82. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +2 -2
  83. package/dist/components/custom/responsive-tabs/ResponsiveTabs.vue.d.ts +13 -7
  84. package/dist/components/custom/search/FuzzySearch.vue.d.ts +1 -1
  85. package/dist/components/custom/search/SearchBar.vue.d.ts +1 -1
  86. package/dist/components/custom/sortable-list/SortableHandle.vue.d.ts +7 -1
  87. package/dist/components/custom/sortable-list/context.d.ts +2 -3
  88. package/dist/components/custom/tabs/BouncyTabs.vue.d.ts +6 -3
  89. package/dist/components/custom/tabs/BouncyToggle.vue.d.ts +7 -3
  90. package/dist/components/custom/tabs/UnderlineTabs.vue.d.ts +6 -3
  91. package/dist/components/custom/tabs/composables/useBouncySlider.d.ts +39 -0
  92. package/dist/components/custom/timeline/ContinuousMarkers.vue.d.ts +49 -0
  93. package/dist/components/custom/timeline/ContinuousRail.vue.d.ts +26 -0
  94. package/dist/components/custom/timeline/ContinuousTimeline.vue.d.ts +4 -4
  95. package/dist/components/custom/typewriter/TypewriterText.vue.d.ts +2 -2
  96. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +45 -0
  97. package/dist/components/custom/watercolor-dot/index.d.ts +3 -0
  98. package/dist/components/custom/watercolor-dot/prng.d.ts +5 -0
  99. package/dist/components/custom/watercolor-dot/useWatercolorBlob.d.ts +24 -0
  100. package/dist/components/ui/_shared/menuItemVariants.d.ts +1 -1
  101. package/dist/components/ui/avatar/Avatar.vue.d.ts +1 -1
  102. package/dist/components/ui/avatar/AvatarImage.vue.d.ts +5 -1
  103. package/dist/components/ui/avatar/index.d.ts +1 -1
  104. package/dist/components/ui/badge/index.d.ts +2 -2
  105. package/dist/components/ui/button/Button.vue.d.ts +3 -1
  106. package/dist/components/ui/button/index.d.ts +2 -2
  107. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +2 -2
  108. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +2 -2
  109. package/dist/components/ui/combobox/Combobox.vue.d.ts +2 -2
  110. package/dist/components/ui/combobox/ComboboxInput.vue.d.ts +2 -1
  111. package/dist/components/ui/command/Command.vue.d.ts +3 -3
  112. package/dist/components/ui/command/CommandInput.vue.d.ts +2 -1
  113. package/dist/components/ui/data-table/DataTable.vue.d.ts +5 -4
  114. package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -0
  115. package/dist/components/ui/drawer/Drawer.vue.d.ts +4 -4
  116. package/dist/components/ui/input/Input.vue.d.ts +19 -1
  117. package/dist/components/ui/multi-select/MultiSelect.vue.d.ts +8 -4
  118. package/dist/components/ui/progress/Progress.vue.d.ts +26 -88
  119. package/dist/components/ui/progress/ProgressDefault.vue.d.ts +14 -0
  120. package/dist/components/ui/progress/ProgressGradient.vue.d.ts +25 -0
  121. package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +36 -0
  122. package/dist/components/ui/progress/index.d.ts +5 -2
  123. package/dist/components/ui/progress/useProgressGeometry.d.ts +60 -0
  124. package/dist/components/ui/select/Select.vue.d.ts +2 -2
  125. package/dist/components/ui/select/SelectContent.vue.d.ts +1 -1
  126. package/dist/components/ui/select/SelectTrigger.vue.d.ts +3 -0
  127. package/dist/components/ui/sheet/index.d.ts +1 -1
  128. package/dist/components/ui/slider/index.d.ts +12 -11
  129. package/dist/components/ui/tags-input/TagsInput.vue.d.ts +2 -2
  130. package/dist/components/ui/textarea/Textarea.vue.d.ts +5 -1
  131. package/dist/components/ui/toast/Toast.vue.d.ts +4 -4
  132. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  133. package/dist/components/ui/toggle/index.d.ts +1 -1
  134. package/dist/components/ui/toggle-group/toggleGroupContext.d.ts +2 -3
  135. package/dist/composables/color/index.d.ts +49 -0
  136. package/dist/composables/context/createContext.d.ts +56 -0
  137. package/dist/composables/context/index.d.ts +1 -0
  138. package/dist/composables/dark/darkModeSyncScript.d.ts +23 -0
  139. package/dist/composables/dark/index.d.ts +3 -0
  140. package/dist/composables/dark/useGlobalDark.d.ts +19 -2
  141. package/dist/composables/dom/index.d.ts +0 -3
  142. package/dist/composables/dom/useClipboard.d.ts +35 -12
  143. package/dist/composables/dom/useDocumentVisibility.d.ts +20 -0
  144. package/dist/composables/glass/webgl/compile.d.ts +15 -0
  145. package/dist/composables/glass/webgl/shaders/procedural-color.glsl.d.ts +3 -0
  146. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +55 -0
  147. package/dist/composables/motion/core/index.d.ts +1 -1
  148. package/dist/composables/motion/index.d.ts +1 -1
  149. package/dist/composables/motion/useCountup.d.ts +29 -0
  150. package/dist/composables/motion/useNumericTransition.d.ts +14 -3
  151. package/dist/composables/motion/vReveal.d.ts +2 -0
  152. package/dist/composables/sidebar/useSidebarState.d.ts +2 -2
  153. package/dist/composables/sortable/dragController.d.ts +44 -0
  154. package/dist/composables/sortable/dropResolver.d.ts +34 -0
  155. package/dist/composables/sortable/ghostRenderer.d.ts +44 -0
  156. package/dist/composables/sortable/index.d.ts +1 -1
  157. package/dist/composables/sortable/touchGate.d.ts +26 -0
  158. package/dist/composables/sortable/transitionTiming.d.ts +50 -0
  159. package/dist/composables/sortable/types.d.ts +133 -0
  160. package/dist/composables/sortable/useSortable.d.ts +25 -153
  161. package/dist/configurator.js +1 -1
  162. package/dist/confirm-dialog.js +1 -1
  163. package/dist/controls.js +4 -4
  164. package/dist/createContext-DBMGRlx4.js +25 -0
  165. package/dist/dark.d.ts +2 -1
  166. package/dist/dark.js +9 -2
  167. package/dist/data-table.js +1 -1
  168. package/dist/dialog.js +1 -1
  169. package/dist/disco-glyph.js +1 -1
  170. package/dist/dock.js +400 -261
  171. package/dist/dockContext-spUj_-E5.js +9 -0
  172. package/dist/dom.js +6 -6
  173. package/dist/{dropdown-menu-naE0skDg.js → dropdown-menu-EFjl5iKo.js} +1 -1
  174. package/dist/dropdown-menu.js +1 -1
  175. package/dist/expandable-container.js +26 -20
  176. package/dist/fonts/README.md +21 -0
  177. package/dist/fonts/fraunces/fraunces-latin.woff2 +0 -0
  178. package/dist/forms.js +68 -59
  179. package/dist/glass-panel.js +1 -1
  180. package/dist/glass-ui.css +1 -1
  181. package/dist/glass-ui.js +226 -328
  182. package/dist/glyph-face.js +2 -2
  183. package/dist/goo-blob.d.ts +1 -0
  184. package/dist/goo-blob.js +538 -0
  185. package/dist/header-ribbon.js +2 -2
  186. package/dist/hover-card.js +1 -1
  187. package/dist/hover-popover.js +1 -1
  188. package/dist/icon-tooltip.js +1 -1
  189. package/dist/index.d.ts +1 -0
  190. package/dist/instrument-chassis.js +1 -1
  191. package/dist/instrument-rail.js +1 -1
  192. package/dist/keys-BFoma9vm.js +9 -0
  193. package/dist/label.js +1 -1
  194. package/dist/labeled-field.js +57 -39
  195. package/dist/metric-badge.js +1 -1
  196. package/dist/motion-core.js +82 -123
  197. package/dist/motion.js +62 -14
  198. package/dist/number-field.js +1 -1
  199. package/dist/paper-backdrop.js +1 -1
  200. package/dist/popover.js +1 -1
  201. package/dist/{presets-BpTf63Hp.js → presets-1OhFpaIC.js} +1 -1
  202. package/dist/prng-Bz_1Tydc.js +15 -0
  203. package/dist/progress.js +2 -2
  204. package/dist/reactive.js +2 -2
  205. package/dist/responsive-tabs.js +38 -32
  206. package/dist/scrolling-text.js +1 -1
  207. package/dist/search.js +8 -8
  208. package/dist/select.js +3 -3
  209. package/dist/separator.js +1 -1
  210. package/dist/sheet.js +1 -1
  211. package/dist/{slider-wx8ifVFB.js → slider-BOh8ycfZ.js} +7 -11
  212. package/dist/slider.js +1 -1
  213. package/dist/sortable-list.js +36 -38
  214. package/dist/stacked-icons.js +2 -2
  215. package/dist/styles/animations.css +1 -1
  216. package/dist/styles/cards.css +1 -1
  217. package/dist/styles/components.css +1 -1
  218. package/dist/styles/dock-controls.css +486 -0
  219. package/dist/styles/dock.css +284 -450
  220. package/dist/styles/fonts.css +25 -0
  221. package/dist/styles/glass-specular-track.css +154 -0
  222. package/dist/styles/glass.css +74 -2
  223. package/dist/styles/index.css +21 -2
  224. package/dist/styles/instrument-chassis.css +11 -4
  225. package/dist/styles/theme.css +73 -21
  226. package/dist/styles/tokens.css +271 -140
  227. package/dist/styles/typography.css +14 -8
  228. package/dist/styles/utilities.css +36 -8
  229. package/dist/styles/view-transition.css +10 -4
  230. package/dist/switch.js +1 -1
  231. package/dist/tabs.js +139 -112
  232. package/dist/timeline.js +219 -158
  233. package/dist/toast.js +1 -1
  234. package/dist/toggle-group.js +1 -1
  235. package/dist/tokens.d.ts +1 -1
  236. package/dist/tooltip.js +1 -1
  237. package/dist/{useAnimatedNumber-BOxrS3a6.js → useAnimatedNumber-BF6r64lA.js} +1 -1
  238. package/dist/useClipboard-D8vFyRCa.js +97 -0
  239. package/dist/{useConfiguratorState-Dq2gNv4A.js → useConfiguratorState-DUtC1jxr.js} +82 -86
  240. package/dist/useGlobalDark-CWiaCoEw.js +34 -0
  241. package/dist/useIntersectionPause-DAdVPVp4.js +53 -0
  242. package/dist/useSortable-DnyGXKKY.js +246 -0
  243. package/dist/{useTouchGate-XX8gHfay.js → useTouchGate-CS5Csc2h.js} +1 -1
  244. package/dist/utils/prng.d.ts +4 -0
  245. package/dist/vReveal-u2wSG2El.js +35 -0
  246. package/dist/watercolor-dot.d.ts +1 -0
  247. package/dist/watercolor-dot.js +129 -0
  248. package/package.json +101 -16
  249. package/src/fonts/README.md +21 -0
  250. package/src/fonts/fraunces/fraunces-latin.woff2 +0 -0
  251. package/src/styles/animations.css +1 -1
  252. package/src/styles/cards.css +1 -1
  253. package/src/styles/dock-controls.css +486 -0
  254. package/src/styles/dock.css +284 -450
  255. package/src/styles/fonts.css +25 -0
  256. package/src/styles/glass-specular-track.css +154 -0
  257. package/src/styles/glass.css +74 -2
  258. package/src/styles/index.css +21 -2
  259. package/src/styles/instrument-chassis.css +11 -4
  260. package/src/styles/theme.css +73 -21
  261. package/src/styles/tokens.css +271 -140
  262. package/src/styles/typography.css +14 -8
  263. package/src/styles/utilities.css +36 -8
  264. package/src/styles/view-transition.css +10 -4
  265. package/dist/DataTable-BsrDYdoE.js +0 -460
  266. package/dist/DialogContent-B61rP8lj.js +0 -93
  267. package/dist/HoverPopover-BlEwqG7S.js +0 -96
  268. package/dist/Input-IFsIzId2.js +0 -30
  269. package/dist/Progress-Bs44qWEM.js +0 -126
  270. package/dist/UnderlineTabs-B4FV2zi_.js +0 -37
  271. package/dist/components/custom/aurora/shaders/aurora.frag.d.ts +0 -1
  272. package/dist/composables/dom/useBreakpoint.d.ts +0 -38
  273. package/dist/composables/dom/useIdleReady.d.ts +0 -63
  274. package/dist/composables/dom/useViewportReady.d.ts +0 -87
  275. package/dist/composables/glass/webgl/frostShader.d.ts +0 -27
  276. package/dist/composables/motion/useAnimatedNumberMap.d.ts +0 -29
  277. package/dist/composables/motion/useStagger.d.ts +0 -50
  278. package/dist/dockContext-DM58L1Jt.js +0 -16
  279. package/dist/keys-SIKQYNx1.js +0 -11
  280. package/dist/supportsCssTimeline-IQY3gfKD.js +0 -12
  281. package/dist/useGlobalDark-BUUTZvkU.js +0 -24
  282. package/dist/useIdleReady-sLhGo6CL.js +0 -162
  283. package/dist/useIntersectionPause-CUmANkoc.js +0 -39
  284. package/dist/useSortable-DLK9kwZp.js +0 -189
  285. /package/dist/{HoverCardContent-DGUhpRVt.js → HoverCardContent-ICfIMZX1.js} +0 -0
  286. /package/dist/{InstrumentChassis-CqKPBNqp.js → InstrumentChassis-DaHIZCqy.js} +0 -0
  287. /package/dist/{InstrumentRail-CCjvKkpB.js → InstrumentRail-B0qqLFN0.js} +0 -0
  288. /package/dist/{Label-D53EOwLE.js → Label-CZk-3nTc.js} +0 -0
  289. /package/dist/{PaperBackdrop-Ds-wDsKf.js → PaperBackdrop-D_YZW47j.js} +0 -0
  290. /package/dist/{SelectGroup-DAgcsfFw.js → SelectGroup-CMdoCjRE.js} +0 -0
  291. /package/dist/{SelectSeparator-DN1jzLaI.js → SelectSeparator-CaJnPF3_.js} +0 -0
  292. /package/dist/{Separator-DXxac0j8.js → Separator-C2XtAXRp.js} +0 -0
  293. /package/dist/{Switch-imA0Hdjs.js → Switch-x8n6husW.js} +0 -0
  294. /package/dist/{Toaster-Brs6QjBU.js → Toaster-DdhMKfus.js} +0 -0
  295. /package/dist/{TooltipProvider-MZFRxOvT.js → TooltipProvider-D-JrSqDu.js} +0 -0
  296. /package/dist/components/custom/aurora/{renderMode.d.ts → constants/renderMode.d.ts} +0 -0
  297. /package/dist/components/custom/aurora/{shaders → constants/shaders}/aurora.vert.d.ts +0 -0
  298. /package/dist/{constants-DfWPi8kh.js → constants-DsCdlK9I.js} +0 -0
  299. /package/dist/{sheet-BnvZRXPq.js → sheet-CQYYrkr9.js} +0 -0
  300. /package/dist/{useGlassRenderer-C98tZnJ7.js → useGlassRenderer-Dn3WpfG-.js} +0 -0
  301. /package/dist/{useInterval-B58LmYth.js → useInterval-CHVYFpXV.js} +0 -0
  302. /package/dist/{useResizeObserver-C_7GjpRn.js → useResizeObserver-DX-STszm.js} +0 -0
  303. /package/dist/{useTextHighlight-CLST6an0.js → useTextHighlight-Dmtofpk2.js} +0 -0
  304. /package/dist/{useTimer-6FoosoDY.js → useTimer-DGgoxTXL.js} +0 -0
  305. /package/dist/{useUserInvalidAria-BW5iyqWR.js → useUserInvalidAria-DmvZ_6Dx.js} +0 -0
  306. /package/dist/{useViewTransition-CUJM7fXT.js → useViewTransition-D4ssvnXZ.js} +0 -0
@@ -1,102 +1,41 @@
1
- import { type HTMLAttributes } from 'vue';
2
- import { type ProgressRootProps } from 'reka-ui';
3
- type ProgressVariant = 'default' | 'gradient' | 'sectioned';
1
+ import { type HTMLAttributes } from "vue";
2
+ import type { ProgressRootProps } from "reka-ui";
3
+ import type { ProgressSegment } from "./useProgressGeometry";
4
+ type ProgressVariant = "default" | "gradient" | "sectioned";
4
5
  /**
5
- * Segment shape consumed by `variant="sectioned"`. Mirrors
6
- * `TimelineSegment` (`@mkbabb/glass-ui/timeline`) deliberately so a
7
- * consumer can pass the same array to both the timeline rail and the
8
- * phase-bus progress without re-shaping. Optional fields default
9
- * sensibly:
10
- * - `state` → "pending"
11
- * - `weight` → 1 (equal share)
12
- * - `color` → consumer-controlled CSS (`var(--chart-{key})` etc.);
13
- * sectioned variant requires it for the colour cells
6
+ * Progress the thin variant dispatcher over three orthogonal designs:
7
+ * - `default` ProgressDefault (plain rail + translateX intake-pulse)
8
+ * - `gradient` → ProgressGradient (lifecycle motion grammar + indeterminate)
9
+ * - `sectioned` → ProgressSectioned (phase-bus cells + spring active fill)
10
+ *
11
+ * The dispatcher carries an EXPLICIT prop-boundary contract: incompatible prop
12
+ * combinations are refused OUT LOUD (a dev throw) rather than silently producing
13
+ * a wrong paint. The historical break this closes: a consumer passing
14
+ * `:model-value` to the sectioned variant had it SILENTLY overridden by the
15
+ * cumulative cell-fill aggregate, so the bar ignored the value the consumer
16
+ * thought drove it. The contract below makes that misuse a loud error — the
17
+ * sectioned variant derives its own a11y value from the cells; `modelValue` is
18
+ * not its truth.
14
19
  */
15
- export interface ProgressSegment {
16
- /** Stable identifier — matched against `currentSegmentKey`. */
17
- key: string;
18
- /** Display label (currently unused visually; surfaced for a11y/title). */
19
- label?: string;
20
- /**
21
- * CSS colour expression (hex, oklch, color-mix, `var(--token)`).
22
- * Drives the cell fill, the gradient stops between siblings, and
23
- * the active-fill spring overlay.
24
- */
25
- color: string;
26
- /** Lifecycle state. Drives saturation + sweep. Defaults to "pending". */
27
- state?: 'pending' | 'active' | 'completed';
28
- /**
29
- * Relative width weight. Per-cell widths = `weight / sum(weights)`.
30
- * Default `1` (equal share — the speedtest pings/jitter/dl/ul case).
31
- */
32
- weight?: number;
33
- }
34
20
  type __VLS_Props = ProgressRootProps & {
35
- class?: HTMLAttributes['class'];
21
+ class?: HTMLAttributes["class"];
36
22
  /**
37
- * 'default' = bg-secondary rail + bg-primary indicator.
38
- * 'gradient' = rail respects --progress-track; indicator
39
- * respects --progress-fill (free-form CSS, including
40
- * gradients). Default variant from v1.0.x.
41
- * 'sectioned' = phase-bus (AB.W3.T2). Renders N colour-coded cells
42
- * with gradient seams between siblings; the active
43
- * cell carries a spring fill driven by
44
- * `activeProgress` and a living catch-light sweep.
45
- * The single `modelValue` is ignored in favour of
46
- * the per-cell state map. Consumers wire:
47
- * - `segments` (the cells)
48
- * - `currentSegmentKey` (which cell is active)
49
- * - `activeProgress` (0..1 fill of the active cell)
23
+ * 'default' = bg-secondary rail + bg-primary indicator.
24
+ * 'gradient' = rail respects --progress-track; indicator respects
25
+ * --progress-fill; the W4 lifecycle motion grammar layers on.
26
+ * 'sectioned' = phase-bus (AB.W3.T2). N colour-coded cells with gradient
27
+ * seams; the active cell carries a spring fill. The per-cell
28
+ * state map is the truth NOT `modelValue`.
50
29
  */
51
30
  variant?: ProgressVariant;
52
31
  /** Sectioned only — ordered segment list. */
53
32
  segments?: ProgressSegment[];
54
33
  /** Sectioned only — key of the currently active segment. */
55
34
  currentSegmentKey?: string | null;
56
- /**
57
- * Sectioned only — 0..1 fill of the active segment. Drives the
58
- * spring overlay inside the active cell. Pre-active cells fill
59
- * 0; post-active cells render at full saturation as "completed".
60
- */
35
+ /** Sectioned only — 0..1 fill of the active segment. */
61
36
  activeProgress?: number;
62
- /**
63
- * AI.W4-M.1 — indeterminate sweep. When true, the gradient
64
- * variant's rail runs a slow left-to-right gradient pan
65
- * (`--motion-duration-progress-indeterminate`, 4s default) and
66
- * the indicator hides. Reka's ProgressRoot already supports the
67
- * indeterminate shape via a null modelValue; the prop here is
68
- * an explicit opt-in for consumers that want the sweep without
69
- * managing the modelValue lifecycle. PRM retires the sweep to
70
- * a static rail.
71
- */
37
+ /** Gradient only — indeterminate sweep opt-in. */
72
38
  indeterminate?: boolean;
73
- /**
74
- * AJ-W4-ε — opt out of the publisher-side crescendo overlay. The
75
- * gradient variant's lifecycle paints a screen-blended white cap
76
- * on the leading edge past 85% modelValue (the typed
77
- * `--progress-crescendo` percentage interpolates the cap alpha).
78
- * Consumers that bake their own leading-edge brightening into
79
- * `--progress-fill` (e.g. speedtest's under-meter bar, whose
80
- * gradient stops at 80%/100% paint a `color-mix` white tail
81
- * directly into the fill) would otherwise double-brighten the
82
- * same edge.
83
- *
84
- * The pre-W4-ε migration shape was a consumer-side typed-property
85
- * override (`--progress-crescendo: 0%` in the consumer's scoped
86
- * CSS) — correct in behaviour but visually noisier than a
87
- * declarative prop. `:disable-crescendo="true"` collapses the
88
- * publisher overlay cleanly: the crescendo rule keys off
89
- * `data-crescendo="disabled"` so the screen-blended cap layer
90
- * never paints, and the typed style binding pins
91
- * `--progress-crescendo: 0%` so any downstream rule that
92
- * `var()`s the typed property reads the floor.
93
- *
94
- * The intake-pulse + discharge-flash still fire — those are
95
- * temporal envelopes on the rail / indicator (not gradient
96
- * overlays), so a consumer that wants the lifecycle envelopes
97
- * but not the crescendo cap can opt into this surgically.
98
- */
99
- disableCrescendo?: boolean;
100
39
  };
101
40
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
102
41
  variant: ProgressVariant;
@@ -105,7 +44,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
105
44
  segments: ProgressSegment[];
106
45
  currentSegmentKey: string | null;
107
46
  activeProgress: number;
108
- disableCrescendo: boolean;
109
47
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
110
48
  declare const _default: typeof __VLS_export;
111
49
  export default _default;
@@ -0,0 +1,14 @@
1
+ import { type HTMLAttributes } from "vue";
2
+ import { type ProgressRootProps } from "reka-ui";
3
+ /**
4
+ * Default progress variant — `bg-secondary` rail + `bg-primary` indicator with a
5
+ * `translateX(-%)` intake-pulse. The plainest rung; no lifecycle motion grammar
6
+ * (that lives on the gradient variant). The thin `Progress` dispatcher routes
7
+ * here for `variant="default"`.
8
+ */
9
+ type __VLS_Props = ProgressRootProps & {
10
+ class?: HTMLAttributes["class"];
11
+ };
12
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
13
+ declare const _default: typeof __VLS_export;
14
+ export default _default;
@@ -0,0 +1,25 @@
1
+ import { type HTMLAttributes } from "vue";
2
+ import { type ProgressRootProps } from "reka-ui";
3
+ /**
4
+ * Gradient progress variant — the rail respects `--progress-track`, the indicator
5
+ * respects `--progress-fill` (free-form CSS, including gradients), and the W4
6
+ * lifecycle motion grammar layers on top: an intake pulse on the rising edge, a
7
+ * leading-edge crescendo past 85%, a discharge glow at 100%, and an optional
8
+ * indeterminate sweep. The thin `Progress` dispatcher routes here for
9
+ * `variant="gradient"`.
10
+ */
11
+ type __VLS_Props = ProgressRootProps & {
12
+ class?: HTMLAttributes["class"];
13
+ /**
14
+ * AI.W4-M.1 — indeterminate sweep. When true, the rail runs a slow
15
+ * left-to-right gradient pan (`--motion-duration-progress-indeterminate`, 4s
16
+ * default) and the indicator hides. Reka's ProgressRoot already supports the
17
+ * indeterminate shape via a null modelValue; the prop here is an explicit
18
+ * opt-in for consumers that want the sweep without managing the modelValue
19
+ * lifecycle. PRM retires the sweep to a static rail.
20
+ */
21
+ indeterminate?: boolean;
22
+ };
23
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
24
+ declare const _default: typeof __VLS_export;
25
+ export default _default;
@@ -0,0 +1,36 @@
1
+ import { type HTMLAttributes } from "vue";
2
+ import { type ProgressRootProps } from "reka-ui";
3
+ import { type ProgressSegment } from "./useProgressGeometry";
4
+ /**
5
+ * Sectioned progress variant — the phase-bus (AB.W3.T2). Renders N colour-coded
6
+ * cells with gradient seams between siblings; the active cell carries a spring
7
+ * fill driven by `activeProgress` and a living catch-light sweep.
8
+ *
9
+ * The single `modelValue` is NOT the truth here — the per-cell state map is. The
10
+ * underlying `[role="progressbar"]` reports a numeric `aria-valuenow` derived from
11
+ * the cumulative cell fill (`useProgressGeometry.aggregateValue`), which is the
12
+ * sectioned variant's OWN value, not a silent override of any consumer-supplied
13
+ * modelValue (the `Progress` dispatcher refuses a modelValue-as-truth misuse out
14
+ * loud — see the prop-boundary contract there). The thin dispatcher routes here
15
+ * for `variant="sectioned"`.
16
+ */
17
+ type __VLS_Props = Omit<ProgressRootProps, "modelValue"> & {
18
+ class?: HTMLAttributes["class"];
19
+ /** Ordered segment list — the cells. */
20
+ segments?: ProgressSegment[];
21
+ /** Key of the currently active segment. */
22
+ currentSegmentKey?: string | null;
23
+ /**
24
+ * 0..1 fill of the active segment. Drives the spring overlay inside the
25
+ * active cell. Pre-active cells fill 0; post-active cells render at full
26
+ * saturation as "completed".
27
+ */
28
+ activeProgress?: number;
29
+ };
30
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
31
+ segments: ProgressSegment[];
32
+ currentSegmentKey: string | null;
33
+ activeProgress: number;
34
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
35
+ declare const _default: typeof __VLS_export;
36
+ export default _default;
@@ -1,2 +1,5 @@
1
- export { default as Progress } from './Progress.vue';
2
- export type { ProgressSegment } from './Progress.vue';
1
+ export { default as Progress } from "./Progress.vue";
2
+ export { default as ProgressDefault } from "./ProgressDefault.vue";
3
+ export { default as ProgressGradient } from "./ProgressGradient.vue";
4
+ export { default as ProgressSectioned } from "./ProgressSectioned.vue";
5
+ export { useProgressGeometry, type ProgressSegment, type SectionedCell, } from "./useProgressGeometry";
@@ -0,0 +1,60 @@
1
+ import { type ComputedRef, type Ref } from "vue";
2
+ /**
3
+ * Segment shape consumed by `variant="sectioned"`. Mirrors `TimelineSegment`
4
+ * (`@mkbabb/glass-ui/timeline`) deliberately so a consumer can pass the same
5
+ * array to both the timeline rail and the phase-bus progress without re-shaping.
6
+ * Optional fields default sensibly:
7
+ * - `state` → "pending"
8
+ * - `weight` → 1 (equal share)
9
+ * - `color` → consumer-controlled CSS (`var(--chart-{key})` etc.); the
10
+ * sectioned variant requires it for the colour cells.
11
+ */
12
+ export interface ProgressSegment {
13
+ /** Stable identifier — matched against `currentSegmentKey`. */
14
+ key: string;
15
+ /** Display label (currently unused visually; surfaced for a11y/title). */
16
+ label?: string;
17
+ /**
18
+ * CSS colour expression (hex, oklch, color-mix, `var(--token)`). Drives the
19
+ * cell fill, the gradient stops between siblings, and the active-fill spring
20
+ * overlay.
21
+ */
22
+ color: string;
23
+ /** Lifecycle state. Drives saturation + sweep. Defaults to "pending". */
24
+ state?: "pending" | "active" | "completed";
25
+ /**
26
+ * Relative width weight. Per-cell widths = `weight / sum(weights)`. Default
27
+ * `1` (equal share — the speedtest pings/jitter/dl/ul case).
28
+ */
29
+ weight?: number;
30
+ }
31
+ /** A resolved sectioned cell — per-cell geometry + lifecycle + fill fraction. */
32
+ export interface SectionedCell extends ProgressSegment {
33
+ startPct: number;
34
+ endPct: number;
35
+ widthPct: number;
36
+ resolvedState: "pending" | "active" | "completed";
37
+ /** 0..1 — how much of THIS cell paints saturated. */
38
+ fill: number;
39
+ }
40
+ /**
41
+ * Derive per-cell width/start/end/state/fill from the `segments` array.
42
+ *
43
+ * Widths come from the weight distribution; states resolve from each segment's
44
+ * explicit `state` (wins) or are inferred from `currentSegmentKey` order (cells
45
+ * before current = completed, current = active, after = pending). The active
46
+ * cell's fill follows `activeProgress`; completed cells fill 1; pending fill 0.
47
+ */
48
+ export declare function useProgressGeometry(args: {
49
+ segments: Ref<ProgressSegment[]> | ComputedRef<ProgressSegment[]>;
50
+ currentSegmentKey: Ref<string | null> | ComputedRef<string | null>;
51
+ activeProgress: Ref<number> | ComputedRef<number>;
52
+ }): {
53
+ cells: ComputedRef<SectionedCell[]>;
54
+ /**
55
+ * The cumulative-fill aggregate (0..100) — the meaningful numeric the
56
+ * underlying `[role="progressbar"]` reports as `aria-valuenow`. Derived from
57
+ * the per-cell state map, NOT from any `modelValue`.
58
+ */
59
+ aggregateValue: ComputedRef<number>;
60
+ };
@@ -5,11 +5,11 @@ type __VLS_Slots = {} & {
5
5
  default?: (props: typeof __VLS_8) => any;
6
6
  };
7
7
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
8
- "update:open": (value: boolean) => any;
9
8
  "update:modelValue": (value: import("reka-ui").AcceptableValue) => any;
9
+ "update:open": (value: boolean) => any;
10
10
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
11
- "onUpdate:open"?: ((value: boolean) => any) | undefined;
12
11
  "onUpdate:modelValue"?: ((value: import("reka-ui").AcceptableValue) => any) | undefined;
12
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
13
13
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
14
14
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
15
15
  declare const _default: typeof __VLS_export;
@@ -18,7 +18,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
18
18
  }>, {
19
19
  position: "item-aligned" | "popper";
20
20
  align: "start" | "center" | "end";
21
- collisionPadding: number | Partial<Record<"left" | "right" | "bottom" | "top", number>>;
21
+ collisionPadding: number | Partial<Record<"top" | "right" | "bottom" | "left", number>>;
22
22
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
23
23
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
24
24
  declare const _default: typeof __VLS_export;
@@ -4,12 +4,15 @@ type __VLS_Props = SelectTriggerProps & {
4
4
  class?: HTMLAttributes['class'];
5
5
  /** 'default' = glass bg; 'ghost' = transparent, no border/shadow */
6
6
  variant?: 'default' | 'ghost';
7
+ /** Height register: 'default' = h-10 (byte-identical), 'sm' = h-9 (compact controls) */
8
+ size?: 'sm' | 'default';
7
9
  };
8
10
  declare var __VLS_8: {};
9
11
  type __VLS_Slots = {} & {
10
12
  default?: (props: typeof __VLS_8) => any;
11
13
  };
12
14
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
15
+ size: "sm" | "default";
13
16
  variant: "default" | "ghost";
14
17
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
18
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -8,6 +8,6 @@ export { default as SheetTitle } from './SheetTitle.vue';
8
8
  export { default as SheetDescription } from './SheetDescription.vue';
9
9
  export { default as SheetFooter } from './SheetFooter.vue';
10
10
  export declare const sheetVariants: (props?: ({
11
- side?: "left" | "right" | "bottom" | "top" | null | undefined;
11
+ side?: "top" | "right" | "bottom" | "left" | null | undefined;
12
12
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
13
13
  export type SheetVariants = VariantProps<typeof sheetVariants>;
@@ -9,15 +9,16 @@ export { default as Slider } from './Slider.vue';
9
9
  * `.slider-thumb` paint. The size axis lifts pure geometry via CSS vars
10
10
  * (`--slider-track-height`, `--slider-thumb-size`) the SFC defaults read.
11
11
  *
12
- * Variants:
13
- * standard glass track + circular thumb (baseline)
14
- * spectrum — tall muted track + thin bar thumb
15
- * timeline — glass-wash scrub track with disc thumb
16
- * glass-pill — pill-shape track + glass-wash substrate + halo thumb
17
- * glass-cartoon cartoon-bordered thumb + 2px-border track + cartoon shadow
18
- * glass-scrubber tall scrub track + grab-friendly thin-bar thumb;
19
- * canonicalizes the fourier-analysis 3-site shadow recipe
20
- * (GlassTimeline / SliderControl / ConvergenceTimeline)
12
+ * Exactly two canonical recipes ship:
13
+ * standard the continuous rounded iOS knob: a fully-circular, borderless
14
+ * thumb that sits in the track and reads as a swelling of the
15
+ * capsule, with halo-on-state and the iOS press spring. This is
16
+ * the general-purpose glass-scrubber knob and the default.
17
+ * spectrum the gradient-track color slider: a tall capsule whose
18
+ * background is a consumer-supplied `--slider-track-bg`
19
+ * linear-gradient (the LCH/hue ramp), a transparent range, and a
20
+ * small ringed knob that reads against any track hue. This is the
21
+ * aurora/blob color-picking surface.
21
22
  *
22
23
  * Sizes:
23
24
  * sm — 4px track / 12px thumb
@@ -25,7 +26,7 @@ export { default as Slider } from './Slider.vue';
25
26
  * lg — 12px track / 24px thumb
26
27
  */
27
28
  export declare const sliderVariants: (props?: ({
28
- variant?: "standard" | "spectrum" | "timeline" | "glass-pill" | "glass-cartoon" | "glass-scrubber" | null | undefined;
29
- size?: "lg" | "sm" | "md" | null | undefined;
29
+ variant?: "standard" | "spectrum" | null | undefined;
30
+ size?: "sm" | "lg" | "md" | null | undefined;
30
31
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
31
32
  export type SliderVariants = VariantProps<typeof sliderVariants>;
@@ -8,13 +8,13 @@ type __VLS_Slots = {} & {
8
8
  default?: (props: typeof __VLS_8) => any;
9
9
  };
10
10
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
- invalid: (payload: import("reka-ui").AcceptableInputValue) => any;
12
11
  "update:modelValue": (payload: import("reka-ui").AcceptableInputValue[]) => any;
12
+ invalid: (payload: import("reka-ui").AcceptableInputValue) => any;
13
13
  addTag: (payload: import("reka-ui").AcceptableInputValue) => any;
14
14
  removeTag: (payload: import("reka-ui").AcceptableInputValue) => any;
15
15
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
16
- onInvalid?: ((payload: import("reka-ui").AcceptableInputValue) => any) | undefined;
17
16
  "onUpdate:modelValue"?: ((payload: import("reka-ui").AcceptableInputValue[]) => any) | undefined;
17
+ onInvalid?: ((payload: import("reka-ui").AcceptableInputValue) => any) | undefined;
18
18
  onAddTag?: ((payload: import("reka-ui").AcceptableInputValue) => any) | undefined;
19
19
  onRemoveTag?: ((payload: import("reka-ui").AcceptableInputValue) => any) | undefined;
20
20
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -1,10 +1,12 @@
1
- import type { HTMLAttributes } from 'vue';
1
+ import type { HTMLAttributes, TextareaHTMLAttributes } from 'vue';
2
2
  declare const _default: typeof __VLS_export;
3
3
  export default _default;
4
4
  declare const __VLS_export: import("vue").DefineComponent<{
5
5
  class?: HTMLAttributes["class"];
6
6
  defaultValue?: string | number;
7
7
  modelValue?: string | number;
8
+ placeholder?: TextareaHTMLAttributes["placeholder"];
9
+ disabled?: TextareaHTMLAttributes["disabled"];
8
10
  /**
9
11
  * AQ.W4 §W4.3 — opt into `field-sizing: content` auto-grow. When `true`,
10
12
  * the textarea grows vertically with its content between a 3-line floor
@@ -27,6 +29,8 @@ declare const __VLS_export: import("vue").DefineComponent<{
27
29
  class?: HTMLAttributes["class"];
28
30
  defaultValue?: string | number;
29
31
  modelValue?: string | number;
32
+ placeholder?: TextareaHTMLAttributes["placeholder"];
33
+ disabled?: TextareaHTMLAttributes["disabled"];
30
34
  /**
31
35
  * AQ.W4 §W4.3 — opt into `field-sizing: content` auto-grow. When `true`,
32
36
  * the textarea grows vertically with its content between a 3-line floor
@@ -10,10 +10,10 @@ type __VLS_Slots = {} & {
10
10
  default?: (props: typeof __VLS_21) => any;
11
11
  };
12
12
  declare const __VLS_base: import("vue").DefineComponent<ToastProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
13
- pause: () => any;
14
- resume: () => any;
15
13
  "update:open": (value: boolean) => any;
16
14
  escapeKeyDown: (event: KeyboardEvent) => any;
15
+ pause: () => any;
16
+ resume: () => any;
17
17
  swipeStart: (event: {
18
18
  currentTarget: EventTarget & HTMLElement;
19
19
  } & Omit<CustomEvent<{
@@ -51,10 +51,10 @@ declare const __VLS_base: import("vue").DefineComponent<ToastProps, {}, {}, {},
51
51
  };
52
52
  }>, "currentTarget">) => any;
53
53
  }, string, import("vue").PublicProps, Readonly<ToastProps> & Readonly<{
54
- onPause?: (() => any) | undefined;
55
- onResume?: (() => any) | undefined;
56
54
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
57
55
  onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
56
+ onPause?: (() => any) | undefined;
57
+ onResume?: (() => any) | undefined;
58
58
  onSwipeStart?: ((event: {
59
59
  currentTarget: EventTarget & HTMLElement;
60
60
  } & Omit<CustomEvent<{
@@ -15,7 +15,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
15
15
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
16
16
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
17
17
  }>, {
18
- size: "default" | "lg" | "sm" | null;
18
+ size: "default" | "sm" | "lg" | null;
19
19
  variant: "default" | "outline" | "card" | null;
20
20
  disabled: boolean;
21
21
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -21,6 +21,6 @@ export { default as Toggle } from './Toggle.vue';
21
21
  */
22
22
  export declare const toggleVariants: (props?: ({
23
23
  variant?: "default" | "outline" | "card" | null | undefined;
24
- size?: "default" | "lg" | "sm" | null | undefined;
24
+ size?: "default" | "sm" | "lg" | null | undefined;
25
25
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
26
26
  export type ToggleVariants = VariantProps<typeof toggleVariants>;
@@ -1,4 +1,3 @@
1
- import { type InjectionKey } from "vue";
2
1
  import type { VariantProps } from "class-variance-authority";
3
2
  import type { toggleVariants } from "../toggle";
4
3
  /**
@@ -15,7 +14,7 @@ export interface ToggleGroupContext {
15
14
  variant: ToggleGroupVariants["variant"];
16
15
  size: ToggleGroupVariants["size"];
17
16
  }
18
- export declare const TOGGLE_GROUP_KEY: InjectionKey<ToggleGroupContext>;
17
+ export declare const TOGGLE_GROUP_KEY: import("vue").InjectionKey<ToggleGroupContext>;
19
18
  export declare function provideToggleGroupContext(context: ToggleGroupContext): void;
20
19
  /** Befitting silent default — `<ToggleGroupItem>` can also render bare. */
21
- export declare function useOptionalToggleGroupContext(): ToggleGroupContext | null;
20
+ export declare const useOptionalToggleGroupContext: () => ToggleGroupContext | null;
@@ -0,0 +1,49 @@
1
+ /** An OKLCh color stop. `L` 0..1, `C` 0..~0.4, `h` 0..360. */
2
+ export interface OklchStop {
3
+ L: number;
4
+ C: number;
5
+ h: number;
6
+ }
7
+ /**
8
+ * The injected color seam (DEC-AT-2, consumed by the AU.W7 blob). Resolves a CSS
9
+ * color string to a GAMMA-sRGB triple in [0,1]. `defaultBlobColorResolver` is the
10
+ * opt-in default; a consumer (value.js) may inject its own.
11
+ */
12
+ export type ColorResolver = (css: string) => [number, number, number];
13
+ /**
14
+ * OKLCh stop → LINEAR-sRGB in [0,1] — aurora's bundle-canonical bake target (the
15
+ * shader ACES-tonemaps in linear, so the LUT stays linear).
16
+ *
17
+ * value.js's canonical Ottosson path (`rawOklchToOklab → oklabToLinearSRGB`,
18
+ * inv-K-2). The `Math.max(0,·)` wrap is the ACES-in-linear contract — value.js
19
+ * does not clamp negative linear (an out-of-gamut stop yields negatives; the wrap
20
+ * keeps them off the GPU). The equivalence canary asserts the COMPOSED path.
21
+ */
22
+ export declare function oklchToLinear(stop: OklchStop): [number, number, number];
23
+ /**
24
+ * OKLCh stop → GAMMA-sRGB in [0,1] — the blob's faithful-lift exit (DEC-AT-7's W7
25
+ * GAMMA space). value.js's `oklabToRgb255` returns gamma-encoded 0..255 (HSV/sRGB,
26
+ * no extra OETF); divide to [0,1]. The blob's default resolver returns THIS space
27
+ * so the W7 lift paints at parity (the LINEAR shader-quality flip + `linearToSrgb`
28
+ * is the AU.W7 stage). Channels are clamped to [0,1] (an out-of-gamut stop is
29
+ * already gamut-mapped upstream; this is the float-edge guard).
30
+ */
31
+ export declare function oklchToGammaRgb(stop: OklchStop): [number, number, number];
32
+ /**
33
+ * Resolve any CSS color string to an OKLCh stop via value.js's parser — the single
34
+ * canonical core (inv-K-2). DOM-free (SSR / happy-dom safe — no 1×1-canvas).
35
+ *
36
+ * Semantics: an INVALID string THROWS; ALPHA is dropped (OklchStop has no alpha);
37
+ * out-of-gamut inputs are NOT byte-clamped. Callers feeding user / possibly-
38
+ * transparent strings should wrap in try/catch and decide an alpha policy.
39
+ */
40
+ export declare function cssToOklch(css: string): OklchStop;
41
+ /** OKLCh stop → `#rrggbb` gamma hex (value.js `oklabToRgb255`). */
42
+ export declare function oklchStopToHex(s: OklchStop): string;
43
+ /**
44
+ * The OPT-IN default `ColorResolver` — `(css) => gamma [r,g,b]` via
45
+ * `cssToOklch → oklchToGammaRgb`. The AU.W7 goo-blob requires an INJECTED resolver
46
+ * and throws by THIS name on a no-resolver mount (the loud failure, not a silent
47
+ * gray default); value.js supplies its own, the demo story uses this one.
48
+ */
49
+ export declare const defaultBlobColorResolver: ColorResolver;
@@ -0,0 +1,56 @@
1
+ import { type InjectionKey } from "vue";
2
+ /**
3
+ * Domain-neutral provide/inject DI factory pair — the single source the dock,
4
+ * dock-layer-group, toggle-group, sortable-list, glyph-face, and configurator
5
+ * contexts collapse onto (AV.W14). Generalizes the four hand-rolled
6
+ * provide/inject/throw triplets into ONE typed factory so a `*_KEY:
7
+ * InjectionKey<T>` declaration + its `provide`/`use`/throw boilerplate is never
8
+ * re-rolled per call site — each site keeps only its distinct `interface`,
9
+ * label, and (strict) error message.
10
+ *
11
+ * Two shapes, chosen per the strict-vs-optional matrix (PROGRESS.md):
12
+ * - `createStrictContext<T>(label, outsideError)` — a `use()` that THROWS
13
+ * `outsideError` when injected outside its provider (the consumer is
14
+ * meaningless without the parent). It ALSO exposes `useOptional()` over the
15
+ * SAME key, so a context that is strict for its primary consumer yet must
16
+ * read null-safe elsewhere (the dock: `<Slider>` may sit outside) shares one
17
+ * key across both `use` shapes — no second symbol, no `any` leak.
18
+ * - `createOptionalContext<T>(label)` — a `use()` that returns `T | null`
19
+ * (befitting-silent; the consumer renders bare when no provider is present).
20
+ * No strict counterpart is minted — a strict throw would be dead code at
21
+ * these sites (invariant 25's "per intent" clause).
22
+ *
23
+ * The returned `KEY` is exported by each call site so an external provider can
24
+ * `provide(KEY, …)` directly (the goo-blob `BLOB_CONFIG_KEY` external-provide
25
+ * pattern stays a bare `inject(KEY, default)` and is NOT minted here — it is not
26
+ * a strict-or-optional triplet).
27
+ */
28
+ export interface StrictContext<T> {
29
+ /** The typed injection key — exported so an external provider can target it. */
30
+ readonly KEY: InjectionKey<T>;
31
+ /** Provide the context to descendants. */
32
+ provide: (ctx: T) => void;
33
+ /** Strict — throws `outsideError` when used outside the provider. */
34
+ use: () => T;
35
+ /** Befitting-silent over the SAME key — returns `null` outside the provider. */
36
+ useOptional: () => T | null;
37
+ }
38
+ export interface OptionalContext<T> {
39
+ /** The typed injection key — exported so an external provider can target it. */
40
+ readonly KEY: InjectionKey<T>;
41
+ /** Provide the context to descendants. */
42
+ provide: (ctx: T) => void;
43
+ /** Befitting-silent — returns `null` when used outside the provider. */
44
+ use: () => T | null;
45
+ }
46
+ /**
47
+ * Strict context factory. `use()` throws `outsideError` outside the provider;
48
+ * `useOptional()` returns `null` over the same key for the null-safe-elsewhere
49
+ * case.
50
+ */
51
+ export declare function createStrictContext<T>(label: string, outsideError: string): StrictContext<T>;
52
+ /**
53
+ * Optional context factory. `use()` returns `T | null` (befitting-silent); no
54
+ * strict counterpart is minted.
55
+ */
56
+ export declare function createOptionalContext<T>(label: string): OptionalContext<T>;
@@ -0,0 +1 @@
1
+ export { createStrictContext, createOptionalContext, type StrictContext, type OptionalContext, } from "./createContext";
@@ -0,0 +1,23 @@
1
+ /** The localStorage key vueuse `useColorMode`/`useDark` defaults to. The
2
+ * `useGlobalDark` factory passes no `storageKey`, so this default is canonical. */
3
+ export declare const DARK_MODE_STORAGE_KEY = "vueuse-color-scheme";
4
+ export interface DarkModeSyncScriptOptions {
5
+ /**
6
+ * Override the localStorage key the emitted script reads. Defaults to
7
+ * `vueuse-color-scheme` — the key `useGlobalDark`'s underlying `useDark`
8
+ * uses. Override ONLY if a consumer reconfigured the vueuse storage key.
9
+ */
10
+ storageKey?: string;
11
+ }
12
+ /**
13
+ * Return the inline `<head>` script STRING that resolves dark/light at parse
14
+ * time and stamps `<html>` before first paint. Inject it as the FIRST blocking
15
+ * script in `<head>` (or into an SSR head):
16
+ *
17
+ * ```html
18
+ * <script>${darkModeSyncScript()}</script>
19
+ * ```
20
+ *
21
+ * The function has no DOM side-effect itself — it only builds a string.
22
+ */
23
+ export declare function darkModeSyncScript(options?: DarkModeSyncScriptOptions): string;
@@ -1,2 +1,5 @@
1
1
  export { useGlobalDark } from "./useGlobalDark";
2
+ export type { UseGlobalDarkOptions } from "./useGlobalDark";
2
3
  export { installDarkModeSync } from "./installDarkModeSync";
4
+ export { darkModeSyncScript, DARK_MODE_STORAGE_KEY } from "./darkModeSyncScript";
5
+ export type { DarkModeSyncScriptOptions } from "./darkModeSyncScript";