@mkbabb/glass-ui 4.0.1 → 4.1.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 (459) hide show
  1. package/dist/{CardAction-CW7a0m8M.js → CardAction-8whJrLWt.js} +23 -8
  2. package/dist/{CommandShortcut-DvZNQ_HF.js → CommandShortcut-D3yxgHNn.js} +23 -12
  3. package/dist/{ConfiguratorRow-BR4l-ixA.js → ConfiguratorRow-CaP7U3ZA.js} +11 -11
  4. package/dist/ContextMenuContent-B3ZsheLV.js +90 -0
  5. package/dist/{ContextMenuSubContent-xol4sD2q.js → ContextMenuSubContent-DDRID3qC.js} +15 -15
  6. package/dist/{DataTable-CuKwF7wr.js → DataTable-Bc9kUtu_.js} +2 -2
  7. package/dist/{DialogContent-DcKK8k9i.js → DialogContent-6JtTB5x2.js} +8 -5
  8. package/dist/DialogFooter-9phqcRIS.js +80 -0
  9. package/dist/DialogScrollContent-TTuovQst.js +93 -0
  10. package/dist/HoverCardContent-Bel1gdLZ.js +88 -0
  11. package/dist/{IconChip-BTD-nay5.js → IconChip-DhbdGdFQ.js} +1 -1
  12. package/dist/{IconTooltip-Bl8gFZ8d.js → IconTooltip-B0zimd2H.js} +1 -1
  13. package/dist/Input-Cg9DF62r.js +57 -0
  14. package/dist/{Notification-VUwexFUf.js → Notification-CphK7AAm.js} +3 -3
  15. package/dist/NumberFieldContent-D8cXeyO4.js +140 -0
  16. package/dist/PagerDots-Cjx96la-.js +98 -0
  17. package/dist/{SelectScrollDownButton-CrA8F0iV.js → SelectScrollDownButton-DAKCBEdW.js} +62 -57
  18. package/dist/{SelectSeparator-DXswVdRz.js → SelectSeparator-C2UGOkXF.js} +1 -1
  19. package/dist/Separator-DQcwC2TR.js +44 -0
  20. package/dist/Switch-B8RscmRu.js +49 -0
  21. package/dist/{Toaster-Bw4xR8xV.js → Toaster-D9qIHjBI.js} +1 -1
  22. package/dist/{ToggleGroupItem-pEM9vIhs.js → ToggleGroupItem-BLtr3TJq.js} +2 -2
  23. package/dist/TooltipProvider-BJ_Y5EGX.js +109 -0
  24. package/dist/animated-digit.js +1 -1
  25. package/dist/api/index.d.ts +15 -32
  26. package/dist/api/types-extra.d.ts +31 -0
  27. package/dist/api.js +1 -1
  28. package/dist/aurora.js +579 -251
  29. package/dist/border-progress.js +49 -57
  30. package/dist/{button-DYCUa-tH.js → button-5dY1Dvhd.js} +13 -14
  31. package/dist/button.js +1 -1
  32. package/dist/canvas.js +2 -3
  33. package/dist/card.js +1 -1
  34. package/dist/carousel.js +20 -20
  35. package/dist/color-Cs0-oxYL.js +116 -0
  36. package/dist/color.js +2 -2
  37. package/dist/command.js +1 -1
  38. package/dist/completion-seal.d.ts +1 -0
  39. package/dist/completion-seal.js +89 -0
  40. package/dist/components/custom/aurora/Aurora.vue.d.ts +10 -5
  41. package/dist/components/custom/aurora/composables/color.d.ts +13 -0
  42. package/dist/components/custom/aurora/composables/frameLoop.d.ts +9 -0
  43. package/dist/components/custom/aurora/composables/runtime.d.ts +12 -0
  44. package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +11 -2
  45. package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +8 -0
  46. package/dist/components/custom/aurora/constants/presets.d.ts +18 -0
  47. package/dist/components/custom/aurora/constants/renderMode.d.ts +16 -8
  48. package/dist/components/custom/aurora/constants/shaders/aurora-mediums.wgsl.d.ts +1 -0
  49. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -1
  50. package/dist/components/custom/border-progress/composables/spectrum-walk.d.ts +25 -0
  51. package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +14 -18
  52. package/dist/components/custom/border-progress/index.d.ts +1 -1
  53. package/dist/components/custom/completion-seal/CompletionSeal.vue.d.ts +21 -0
  54. package/dist/components/custom/completion-seal/composables/useCompletionSeal.d.ts +37 -0
  55. package/dist/components/custom/completion-seal/constants.d.ts +46 -0
  56. package/dist/components/custom/completion-seal/index.d.ts +4 -0
  57. package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +7 -0
  58. package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +9 -0
  59. package/dist/components/custom/concentric/composables/ringField.d.ts +57 -16
  60. package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +2 -1
  61. package/dist/components/custom/concentric/composables/useConcentric.d.ts +4 -4
  62. package/dist/components/custom/concentric/constants.d.ts +30 -6
  63. package/dist/components/custom/concentric/index.d.ts +2 -2
  64. package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +2 -2
  65. package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -1
  66. package/dist/components/custom/confirm-dialog/ConfirmDialog.vue.d.ts +3 -3
  67. package/dist/components/custom/constellation/Constellation.vue.d.ts +5 -4
  68. package/dist/components/custom/constellation/composables/constellationGLSetup.d.ts +10 -0
  69. package/dist/components/custom/constellation/composables/constellationWGPUSetup.d.ts +19 -0
  70. package/dist/components/custom/constellation/composables/uniformBridgeWGPU.d.ts +66 -0
  71. package/dist/components/custom/constellation/composables/useConstellation.d.ts +3 -10
  72. package/dist/components/custom/constellation/constants.d.ts +33 -0
  73. package/dist/components/custom/constellation/constellationField.d.ts +31 -1
  74. package/dist/components/custom/constellation/constellationInteraction.d.ts +23 -14
  75. package/dist/components/custom/constellation/constellationRender.d.ts +25 -0
  76. package/dist/components/custom/constellation/constellationTypes.d.ts +38 -0
  77. package/dist/components/custom/constellation/constellationWell.d.ts +15 -0
  78. package/dist/components/custom/constellation/index.d.ts +5 -5
  79. package/dist/components/custom/constellation/shaders/constellation-lines.glsl.d.ts +2 -0
  80. package/dist/components/custom/constellation/shaders/constellation-lines.wgsl.d.ts +1 -0
  81. package/dist/components/custom/constellation/shaders/constellation-points.glsl.d.ts +2 -0
  82. package/dist/components/custom/constellation/shaders/constellation-points.wgsl.d.ts +1 -0
  83. package/dist/components/custom/deck/DeckPager.vue.d.ts +29 -0
  84. package/dist/components/custom/deck/composables/useDeck.d.ts +27 -0
  85. package/dist/components/custom/deck/composables/useDeckKeyboard.d.ts +25 -0
  86. package/dist/components/custom/deck/composables/useDeckSpring.d.ts +22 -0
  87. package/dist/components/custom/deck/constants.d.ts +14 -0
  88. package/dist/components/custom/deck/index.d.ts +8 -0
  89. package/dist/components/custom/dock/DockIconButton.vue.d.ts +12 -0
  90. package/dist/components/custom/dock/DockStack.vue.d.ts +65 -0
  91. package/dist/components/custom/dock/GlassDock.vue.d.ts +4 -2
  92. package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +80 -0
  93. package/dist/components/custom/dock/composables/index.d.ts +2 -0
  94. package/dist/components/custom/dock/composables/useDockSearch.d.ts +85 -0
  95. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +11 -0
  96. package/dist/components/custom/dock/constants.d.ts +18 -14
  97. package/dist/components/custom/dock/index.d.ts +5 -2
  98. package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +15 -11
  99. package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +48 -6
  100. package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +23 -8
  101. package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +6 -5
  102. package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +18 -5
  103. package/dist/components/custom/dot-flow-field/constants.d.ts +42 -21
  104. package/dist/components/custom/dot-flow-field/index.d.ts +2 -2
  105. package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -1
  106. package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +4 -20
  107. package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +1 -1
  108. package/dist/components/custom/dot-matrix/DotMatrix.vue.d.ts +43 -0
  109. package/dist/components/custom/dot-matrix/composables/dotMatrixField.d.ts +89 -0
  110. package/dist/components/custom/dot-matrix/composables/uniformBridgeWGPU.d.ts +52 -0
  111. package/dist/components/custom/dot-matrix/composables/useDotMatrix.d.ts +34 -0
  112. package/dist/components/custom/dot-matrix/composables/useDotSphere.d.ts +27 -0
  113. package/dist/components/custom/dot-matrix/constants.d.ts +58 -0
  114. package/dist/components/custom/dot-matrix/index.d.ts +5 -0
  115. package/dist/components/custom/dot-matrix/shaders/dot-matrix.glsl.d.ts +4 -0
  116. package/dist/components/custom/dot-matrix/shaders/dot-matrix.wgsl.d.ts +1 -0
  117. package/dist/components/custom/easing/EasingPicker.vue.d.ts +2 -2
  118. package/dist/components/custom/easing/composables/useEasingPicker.d.ts +5 -0
  119. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +11 -0
  120. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +40 -47
  121. package/dist/components/custom/fourier-field/composables/fourierFieldGLSetup.d.ts +15 -0
  122. package/dist/components/custom/fourier-field/composables/fourierFieldWGPUSetup.d.ts +20 -0
  123. package/dist/components/custom/fourier-field/composables/uniformBridgeWGPU.d.ts +41 -0
  124. package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +40 -37
  125. package/dist/components/custom/fourier-field/constants.d.ts +61 -4
  126. package/dist/components/custom/fourier-field/index.d.ts +23 -18
  127. package/dist/components/custom/fourier-field/shaders/fourier-field.compute.wgsl.d.ts +1 -0
  128. package/dist/components/custom/fourier-field/shaders/fourier-field.glsl.d.ts +4 -0
  129. package/dist/components/custom/fourier-field/shaders/fourier-field.render.wgsl.d.ts +1 -0
  130. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +9 -1
  131. package/dist/components/custom/goo-blob/constants.d.ts +1 -1
  132. package/dist/components/custom/goo-blob/index.d.ts +1 -1
  133. package/dist/components/custom/goo-blob/shaders/metaball-noise.wgsl.d.ts +1 -0
  134. package/dist/components/custom/goo-blob/shaders/metaball-palette.wgsl.d.ts +1 -0
  135. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -1
  136. package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -1
  137. package/dist/components/custom/goo-blob/types.d.ts +36 -0
  138. package/dist/components/custom/goo-dot-matrix/GooDotMatrix.vue.d.ts +49 -0
  139. package/dist/components/custom/goo-dot-matrix/composables/gooDotLattice.d.ts +24 -0
  140. package/dist/components/custom/goo-dot-matrix/composables/gooDotSetup.d.ts +50 -0
  141. package/dist/components/custom/goo-dot-matrix/composables/uniformBridgeWGPU.d.ts +35 -0
  142. package/dist/components/custom/goo-dot-matrix/composables/useGooDotMatrix.d.ts +31 -0
  143. package/dist/components/custom/goo-dot-matrix/constants.d.ts +76 -0
  144. package/dist/components/custom/goo-dot-matrix/index.d.ts +5 -0
  145. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.frag.d.ts +11 -0
  146. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.wgsl.d.ts +3 -0
  147. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +21 -2
  148. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +15 -0
  149. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +9 -0
  150. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  151. package/dist/components/custom/pager-dots/pagerWindow.d.ts +9 -0
  152. package/dist/components/custom/paper-grid/PaperGrid.vue.d.ts +42 -0
  153. package/dist/components/custom/paper-grid/composables/paperGrid.d.ts +90 -0
  154. package/dist/components/custom/paper-grid/composables/paperGridGLSetup.d.ts +16 -0
  155. package/dist/components/custom/paper-grid/composables/paperGridWGPUSetup.d.ts +19 -0
  156. package/dist/components/custom/paper-grid/composables/uniformBridgeWGPU.d.ts +16 -0
  157. package/dist/components/custom/paper-grid/composables/usePaperGrid.d.ts +31 -0
  158. package/dist/components/custom/paper-grid/constants.d.ts +57 -0
  159. package/dist/components/custom/paper-grid/index.d.ts +5 -0
  160. package/dist/components/custom/paper-grid/shaders/paper-grid.glsl.d.ts +4 -0
  161. package/dist/components/custom/paper-grid/shaders/paper-grid.wgsl.d.ts +1 -0
  162. package/dist/components/custom/search/FuzzySearch.vue.d.ts +8 -2
  163. package/dist/components/custom/search/SearchBar.vue.d.ts +8 -0
  164. package/dist/components/custom/search/index.d.ts +2 -0
  165. package/dist/components/custom/search/searchVariants.d.ts +19 -0
  166. package/dist/components/custom/selectable-chip/SelectableChip.vue.d.ts +50 -0
  167. package/dist/components/custom/selectable-chip/index.d.ts +2 -0
  168. package/dist/components/custom/selectable-chip/selectableChipVariants.d.ts +23 -0
  169. package/dist/components/custom/split-chars/SplitChars.vue.d.ts +39 -0
  170. package/dist/components/custom/split-chars/index.d.ts +1 -0
  171. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +8 -6
  172. package/dist/components/custom/tabs/constants.d.ts +20 -2
  173. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +29 -16
  174. package/dist/components/custom/watercolor-dot/useWatercolorBlob.d.ts +10 -5
  175. package/dist/components/ui/_shared/index.d.ts +2 -0
  176. package/dist/components/ui/_shared/useControlSize.d.ts +46 -0
  177. package/dist/components/ui/button/index.d.ts +1 -1
  178. package/dist/components/ui/card/Card.vue.d.ts +45 -0
  179. package/dist/components/ui/card/index.d.ts +1 -1
  180. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +1 -1
  181. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +1 -1
  182. package/dist/components/ui/command/CommandDialog.vue.d.ts +9 -3
  183. package/dist/components/ui/command/CommandList.vue.d.ts +3 -0
  184. package/dist/components/ui/context-menu/ContextMenuContent.vue.d.ts +5 -1
  185. package/dist/components/ui/dropdown-menu/DropdownMenuContent.vue.d.ts +4 -0
  186. package/dist/components/ui/hover-card/HoverCardContent.vue.d.ts +3 -0
  187. package/dist/components/ui/input/Input.vue.d.ts +3 -0
  188. package/dist/components/ui/number-field/NumberFieldInput.vue.d.ts +6 -1
  189. package/dist/components/ui/select/SelectContent.vue.d.ts +3 -0
  190. package/dist/components/ui/switch/Switch.vue.d.ts +2 -0
  191. package/dist/components/ui/textarea/Textarea.vue.d.ts +3 -0
  192. package/dist/components/ui/tooltip/TooltipContent.vue.d.ts +3 -0
  193. package/dist/composables/color/index.d.ts +2 -0
  194. package/dist/composables/color/useAccentTone.d.ts +34 -0
  195. package/dist/composables/glass/useVizChoreography.d.ts +123 -0
  196. package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +10 -0
  197. package/dist/composables/glass/webgl/shaders/flow.wgsl.d.ts +1 -0
  198. package/dist/composables/glass/webgpu/index.d.ts +1 -1
  199. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +28 -7
  200. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +1 -0
  201. package/dist/composables/glass/webgpu/webgpuDevice.d.ts +42 -0
  202. package/dist/composables/motion/core/index.d.ts +3 -0
  203. package/dist/composables/motion/scrollReader.d.ts +25 -0
  204. package/dist/composables/motion/springPresets.d.ts +20 -1
  205. package/dist/composables/motion/useCharStagger.d.ts +44 -0
  206. package/dist/composables/motion/useDockCtaReceive.d.ts +31 -6
  207. package/dist/composables/motion/useScrollChrome.d.ts +58 -0
  208. package/dist/composables/motion/useScrollTrigger.d.ts +67 -0
  209. package/dist/composables/motion/useSpringPress.d.ts +5 -5
  210. package/dist/composables/motion/useStaggerReveal.d.ts +24 -0
  211. package/dist/composables/sidebar/index.d.ts +4 -1
  212. package/dist/composables/sidebar/types.d.ts +68 -3
  213. package/dist/composables/sidebar/useClickDelegate.d.ts +4 -0
  214. package/dist/composables/sidebar/useLazyLoader.d.ts +5 -0
  215. package/dist/composables/sidebar/useScrollTo.d.ts +5 -0
  216. package/dist/composables/virtual/index.d.ts +4 -0
  217. package/dist/composables/virtual/useVirtualSectionWindow.d.ts +72 -0
  218. package/dist/composables/virtual/useWindowedStore.d.ts +43 -0
  219. package/dist/composables/virtual/virtualSectionLayout.d.ts +103 -0
  220. package/dist/concentric.js +495 -221
  221. package/dist/configurator.js +2 -2
  222. package/dist/confirm-dialog.js +62 -47
  223. package/dist/constellation.js +635 -235
  224. package/dist/context-menu.js +2 -2
  225. package/dist/controls.js +1 -1
  226. package/dist/createCanvasLifecycle-Gh45Ce-p.js +93 -0
  227. package/dist/dark.js +1 -1
  228. package/dist/data-table.js +1 -1
  229. package/dist/deck.d.ts +1 -0
  230. package/dist/deck.js +105 -0
  231. package/dist/dialog.js +4 -3
  232. package/dist/dock.js +602 -458
  233. package/dist/dot-flow-field.js +580 -290
  234. package/dist/dot-matrix.d.ts +1 -0
  235. package/dist/dot-matrix.js +630 -0
  236. package/dist/dotMatrixField-D_x9_1qq.js +48 -0
  237. package/dist/{dropdown-menu-CofSZuk8.js → dropdown-menu-aJmV5SqE.js} +83 -79
  238. package/dist/dropdown-menu.js +1 -1
  239. package/dist/easing.js +188 -176
  240. package/dist/expandable-container.js +42 -20
  241. package/dist/fading-scroll.js +1 -1
  242. package/dist/flow.glsl-B2P7e0MT.js +4 -0
  243. package/dist/forms.js +62 -60
  244. package/dist/fourier-field.js +825 -178
  245. package/dist/fourier-math.js +1 -1
  246. package/dist/glass-ui.css +1 -1
  247. package/dist/glass-ui.js +145 -104
  248. package/dist/goo-blob.js +171 -1228
  249. package/dist/goo-dot-matrix.d.ts +1 -0
  250. package/dist/goo-dot-matrix.js +591 -0
  251. package/dist/handmark.js +1 -1
  252. package/dist/hover-card.js +1 -1
  253. package/dist/hover-popover.js +1 -1
  254. package/dist/icon-chip.js +1 -1
  255. package/dist/icon-tooltip.js +1 -1
  256. package/dist/index.d.ts +2 -0
  257. package/dist/instrument-chassis.js +1 -1
  258. package/dist/keyboard.js +1 -1
  259. package/dist/labeled-field.js +70 -60
  260. package/dist/metric-cell.js +1 -1
  261. package/dist/metric-stack.js +11 -2
  262. package/dist/motion-core.js +54 -32
  263. package/dist/motion-curves.js +11 -1
  264. package/dist/motion.js +46 -111
  265. package/dist/notification.js +1 -1
  266. package/dist/number-field.js +1 -1
  267. package/dist/pager-dots.js +2 -91
  268. package/dist/paper-backdrop.js +1 -1
  269. package/dist/paper-grid.d.ts +1 -0
  270. package/dist/paper-grid.js +788 -0
  271. package/dist/{presets-BW2b-fr1.js → presets-CvOUqtdY.js} +3 -3
  272. package/dist/{procedural-color.glsl-CIFsJhwI.js → procedural-color.wgsl-m7Zgv35j.js} +2 -2
  273. package/dist/progress.js +1 -1
  274. package/dist/pulse.js +1 -1
  275. package/dist/reactive.js +1 -1
  276. package/dist/{useCanvas2D-B8w_E3Rr.js → resolveCanvasColor-yPyIpJt9.js} +12 -2
  277. package/dist/scrollReader-DI1NWxUw.js +42 -0
  278. package/dist/scrolling-text.js +1 -1
  279. package/dist/search.js +160 -304
  280. package/dist/select.js +3 -3
  281. package/dist/selectable-chip.d.ts +1 -0
  282. package/dist/selectable-chip.js +65 -0
  283. package/dist/separator.js +1 -1
  284. package/dist/{sheet-tZMg0E0w.js → sheet-B2flBfLH.js} +2 -2
  285. package/dist/sheet.js +1 -1
  286. package/dist/sidebar.js +216 -114
  287. package/dist/slider.js +1 -1
  288. package/dist/sortable-list.js +1 -1
  289. package/dist/spectrum-walk-BVzA7Biz.js +33 -0
  290. package/dist/{springPresets-CFQGQfdl.js → springPresets-Ce7OYCm9.js} +12 -6
  291. package/dist/styles/animations.css +13 -3
  292. package/dist/styles/cards.css +69 -0
  293. package/dist/styles/completion-seal.css +131 -0
  294. package/dist/styles/components.css +2 -3
  295. package/dist/styles/configurator.css +55 -0
  296. package/dist/styles/critical-partition.mjs +33 -11
  297. package/dist/styles/deferred.css +2 -0
  298. package/dist/styles/dock/cta-seat.css +87 -0
  299. package/dist/styles/dock/density.css +153 -0
  300. package/dist/styles/dock/layers.css +55 -7
  301. package/dist/styles/dock/morph-bridge.css +54 -18
  302. package/dist/styles/dock/morph.css +41 -33
  303. package/dist/styles/dock/overflow.css +12 -0
  304. package/dist/styles/dock/search.css +68 -0
  305. package/dist/styles/dock/shape.css +124 -0
  306. package/dist/styles/dock/shell.css +23 -5
  307. package/dist/styles/dock/stack-rail.css +264 -0
  308. package/dist/styles/dock-controls/dark-mode-toggle.css +17 -4
  309. package/dist/styles/dock-controls/icon-button.css +14 -0
  310. package/dist/styles/dock.css +11 -1
  311. package/dist/styles/glass/accent-tone.css +66 -0
  312. package/dist/styles/glass/control-surfaces.css +167 -0
  313. package/dist/styles/glass/ladder.css +67 -17
  314. package/dist/styles/glass/rim.css +19 -9
  315. package/dist/styles/glass/surfaces.css +69 -148
  316. package/dist/styles/glass.css +10 -0
  317. package/dist/styles/index.css +15 -0
  318. package/dist/styles/scroll-chrome.css +123 -0
  319. package/dist/styles/scroll-driven.css +38 -0
  320. package/dist/styles/segmented-tabs.css +50 -14
  321. package/dist/styles/theme/bridges.css +22 -0
  322. package/dist/styles/theme/radius.css +18 -1
  323. package/dist/styles/tokens/color-radius.css +13 -3
  324. package/dist/styles/tokens/dark-arm.css +39 -6
  325. package/dist/styles/tokens/glass-deep.css +28 -3
  326. package/dist/styles/tokens/glass-fx.css +44 -1
  327. package/dist/styles/tokens/glass.css +91 -31
  328. package/dist/styles/tokens/light-dark.css +1 -1
  329. package/dist/styles/tokens/offsets.css +27 -0
  330. package/dist/styles/tokens/property-regs.css +133 -0
  331. package/dist/styles/tokens/scale-paper.css +73 -29
  332. package/dist/styles/tokens/scheme-motion.css +44 -6
  333. package/dist/styles/tokens/sizing-config.css +110 -0
  334. package/dist/styles/tokens/sizing.css +55 -104
  335. package/dist/styles/tokens.css +5 -0
  336. package/dist/styles/typography/semantic.css +18 -5
  337. package/dist/styles/utilities/a11y-overrides.css +20 -5
  338. package/dist/styles/utilities/base-misc.css +52 -0
  339. package/dist/styles/utilities/btn.css +14 -3
  340. package/dist/styles/utilities/components.css +31 -6
  341. package/dist/styles/utilities/metal.css +26 -0
  342. package/dist/switch.js +1 -1
  343. package/dist/tabs.js +8 -8
  344. package/dist/timeline.js +1 -1
  345. package/dist/toast.js +1 -1
  346. package/dist/toggle-chip.js +10 -10
  347. package/dist/toggle-group.js +1 -1
  348. package/dist/tooltip.js +1 -1
  349. package/dist/typewriter.js +1 -1
  350. package/dist/uniformBridgeWGPU-CtAKl45L.js +1204 -0
  351. package/dist/{useAnimatedNumber-BfUq2bUM.js → useAnimatedNumber-CLrxicG9.js} +1 -1
  352. package/dist/{useConfiguratorState-DNlOh6c8.js → useConfiguratorState-4xblKfwd.js} +25 -24
  353. package/dist/useControlSize-SH1UmJCi.js +9 -0
  354. package/dist/useDockCtaReceive-DfFkmgL1.js +82 -0
  355. package/dist/{useDragMorph-DgxnsVJz.js → useDragMorph-BUgAC-zK.js} +4 -4
  356. package/dist/useFuzzySearch-DIhcYtcw.js +177 -0
  357. package/dist/useGpuSubstrate-4pTcp6mX.js +294 -0
  358. package/dist/{useLiquidPress-kfb4KX79.js → useLiquidPress-BooG97RY.js} +2 -2
  359. package/dist/usePointerVelocityField-QLsy3_kv.js +91 -0
  360. package/dist/useScrollChrome-D66AVP7C.js +258 -0
  361. package/dist/{useSpringMount-q1amq1SJ.js → useSpringMount-BWDnKIwh.js} +1 -1
  362. package/dist/useSpringPress-B1-Czp-V.js +36 -0
  363. package/dist/useViewTransition-CUI1nAgn.js +95 -0
  364. package/dist/{vendor-CKmzio-i.js → vendor-B2qOlYY3.js} +24 -11
  365. package/dist/virtual.d.ts +1 -0
  366. package/dist/virtual.js +225 -0
  367. package/dist/watercolor-dot.js +116 -73
  368. package/package.json +127 -7
  369. package/src/styles/animations.css +13 -3
  370. package/src/styles/cards.css +69 -0
  371. package/src/styles/completion-seal.css +131 -0
  372. package/src/styles/configurator.css +55 -0
  373. package/src/styles/critical-partition.mjs +33 -11
  374. package/src/styles/dock/cta-seat.css +87 -0
  375. package/src/styles/dock/density.css +153 -0
  376. package/src/styles/dock/layers.css +55 -7
  377. package/src/styles/dock/morph-bridge.css +54 -18
  378. package/src/styles/dock/morph.css +41 -33
  379. package/src/styles/dock/overflow.css +12 -0
  380. package/src/styles/dock/search.css +68 -0
  381. package/src/styles/dock/shape.css +124 -0
  382. package/src/styles/dock/shell.css +23 -5
  383. package/src/styles/dock/stack-rail.css +264 -0
  384. package/src/styles/dock-controls/dark-mode-toggle.css +17 -4
  385. package/src/styles/dock-controls/icon-button.css +14 -0
  386. package/src/styles/dock.css +11 -1
  387. package/src/styles/glass/accent-tone.css +66 -0
  388. package/src/styles/glass/control-surfaces.css +167 -0
  389. package/src/styles/glass/ladder.css +67 -17
  390. package/src/styles/glass/rim.css +19 -9
  391. package/src/styles/glass/surfaces.css +69 -148
  392. package/src/styles/glass.css +10 -0
  393. package/src/styles/index.css +15 -0
  394. package/src/styles/scroll-chrome.css +123 -0
  395. package/src/styles/scroll-driven.css +38 -0
  396. package/src/styles/segmented-tabs.css +50 -14
  397. package/src/styles/theme/bridges.css +22 -0
  398. package/src/styles/theme/radius.css +18 -1
  399. package/src/styles/tokens/color-radius.css +13 -3
  400. package/src/styles/tokens/dark-arm.css +39 -6
  401. package/src/styles/tokens/glass-deep.css +28 -3
  402. package/src/styles/tokens/glass-fx.css +44 -1
  403. package/src/styles/tokens/glass.css +91 -31
  404. package/src/styles/tokens/light-dark.css +1 -1
  405. package/src/styles/tokens/offsets.css +27 -0
  406. package/src/styles/tokens/property-regs.css +133 -0
  407. package/src/styles/tokens/scale-paper.css +73 -29
  408. package/src/styles/tokens/scheme-motion.css +44 -6
  409. package/src/styles/tokens/sizing-config.css +110 -0
  410. package/src/styles/tokens/sizing.css +55 -104
  411. package/src/styles/tokens.css +5 -0
  412. package/src/styles/typography/semantic.css +18 -5
  413. package/src/styles/utilities/a11y-overrides.css +20 -5
  414. package/src/styles/utilities/base-misc.css +52 -0
  415. package/src/styles/utilities/btn.css +14 -3
  416. package/src/styles/utilities/components.css +31 -6
  417. package/src/styles/utilities/metal.css +26 -0
  418. package/dist/ContextMenuContent-uWnVxDab.js +0 -85
  419. package/dist/DialogFooter-BZNX5aVr.js +0 -165
  420. package/dist/HoverCardContent-b2uaAMRR.js +0 -83
  421. package/dist/Input-h9v5LeXf.js +0 -55
  422. package/dist/NumberFieldContent-Cq7EzX-U.js +0 -138
  423. package/dist/Separator-pKF0oA4M.js +0 -37
  424. package/dist/Switch-CwYNf8bo.js +0 -47
  425. package/dist/TooltipProvider-rzvnXz60.js +0 -104
  426. package/dist/color-DweYl7pE.js +0 -86
  427. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +0 -35
  428. package/dist/components/custom/constellation/constellationDraw.d.ts +0 -30
  429. package/dist/components/custom/dock/DockRail.vue.d.ts +0 -89
  430. package/dist/createCanvasLifecycle-CHD5XrDW.js +0 -82
  431. package/dist/procedural-color.wgsl-CToRHugY.js +0 -224
  432. package/dist/resolveCanvasColor-CUyHr5Uu.js +0 -11
  433. package/dist/styles/dock/rail-extend.css +0 -397
  434. package/dist/usePointerVelocityField-JbRd5CrM.js +0 -137
  435. package/dist/useRAFLoop-UYa4zoiN.js +0 -109
  436. package/dist/useSpringPress-BsqPr7FJ.js +0 -34
  437. package/src/styles/dock/rail-extend.css +0 -397
  438. /package/dist/{FadingScroll-DI6hQhT9.js → FadingScroll-DLRbH5Xr.js} +0 -0
  439. /package/dist/{HoverPopover-CbqbNwgU.js → HoverPopover-BcIxvyqZ.js} +0 -0
  440. /package/dist/{InstrumentChassis-Bx0F_q5g.js → InstrumentChassis-CxsHSyMj.js} +0 -0
  441. /package/dist/{PaperBackdrop-Vf3tlpvd.js → PaperBackdrop-CqwjnfLv.js} +0 -0
  442. /package/dist/{Progress-DctG61iZ.js → Progress-CnqB7gLm.js} +0 -0
  443. /package/dist/{ScrollingText-yOpBzFYq.js → ScrollingText-CTZbA_cG.js} +0 -0
  444. /package/dist/{SelectGroup-DwwjicPY.js → SelectGroup-BFiod7X2.js} +0 -0
  445. /package/dist/{compile-CQEFRTmx.js → compile-nZ1xVYTp.js} +0 -0
  446. /package/dist/{constants-BPOqYJAm.js → constants--C2DkLW8.js} +0 -0
  447. /package/dist/{math-BINYmg5z.js → math-Eb0w3LqU.js} +0 -0
  448. /package/dist/{prng-Za0Rmgag.js → prng-B-d9eYX8.js} +0 -0
  449. /package/dist/{slider-DVb4HXU-.js → slider-2A0rPn79.js} +0 -0
  450. /package/dist/{useGlobalDark-C28t0VWJ.js → useGlobalDark-CmjB9E32.js} +0 -0
  451. /package/dist/{useIntersectionPause-Bj4sPkMh.js → useIntersectionPause-Dbozzjgm.js} +0 -0
  452. /package/dist/{useInterval-CvK1mL92.js → useInterval-CNdua40W.js} +0 -0
  453. /package/dist/{useKeyboardShortcuts-BXWXOZ-9.js → useKeyboardShortcuts-BPRp33Im.js} +0 -0
  454. /package/dist/{useLiquidFlex-mZPMiNXh.js → useLiquidFlex-UmA6LMZu.js} +0 -0
  455. /package/dist/{useScrollProgress-D7bYU2RK.js → useScrollProgress-c3yxmH6a.js} +0 -0
  456. /package/dist/{useSortable-DHjtZSEd.js → useSortable-BVqlJRBR.js} +0 -0
  457. /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-NmBM5V_4.js} +0 -0
  458. /package/dist/{vReveal-Czsb7zQC.js → vReveal-D9k0jADx.js} +0 -0
  459. /package/dist/{vSpecular-CQFmLNzA.js → vSpecular-EX7loENl.js} +0 -0
@@ -4,9 +4,13 @@ export interface TreeNode {
4
4
  id: string;
5
5
  children?: TreeNode[];
6
6
  }
7
- /** Generic flat index entry for a tree node. */
8
- export interface TreeIndexEntry<T extends TreeNode = TreeNode> {
9
- node: T;
7
+ /**
8
+ * The flat-hierarchy fields shared by every flattened tree row. Both the
9
+ * sidebar's `TreeIndexEntry` and the virtual-windowing `FlatSection`
10
+ * (`composables/virtual`) extend this — the four fields are declared ONCE,
11
+ * not redeclared independently (BC.W-VIRTUAL-WINDOW type-reconcile).
12
+ */
13
+ export interface SectionHierarchy {
10
14
  depth: number;
11
15
  /** ID of the root-level ancestor (self.id when depth === 0). */
12
16
  rootId: string;
@@ -15,6 +19,10 @@ export interface TreeIndexEntry<T extends TreeNode = TreeNode> {
15
19
  /** Index within root-level nodes. */
16
20
  rootIndex: number;
17
21
  }
22
+ /** Generic flat index entry for a tree node. */
23
+ export interface TreeIndexEntry<T extends TreeNode = TreeNode> extends SectionHierarchy {
24
+ node: T;
25
+ }
18
26
  /** A section in the sidebar tree. */
19
27
  export interface SidebarSection extends TreeNode {
20
28
  title: string;
@@ -29,6 +37,63 @@ export interface ScrollTrackerOptions {
29
37
  rootMargin?: string;
30
38
  threshold?: number;
31
39
  }
40
+ /**
41
+ * Options for `useScrollTo` — the rAF-retry scroll-to-id + treeIndex-aware
42
+ * partial-load (the ToC-click → virtual-window warm bridge).
43
+ *
44
+ * GENERIC-count-sourced: `totalCount`/`visibleCount` are plain params, NEVER a
45
+ * consumer type. When a `treeIndex` is passed, `ensureTargetLoaded` loads only
46
+ * up to the target section's `rootIndex + 2` (the partial-load) instead of
47
+ * force-loading everything.
48
+ */
49
+ export interface ScrollToOptions {
50
+ /** The scroll container element to scroll within. */
51
+ scrollContainer: Ref<HTMLElement | null>;
52
+ /** Total number of items/sections (the generic count ceiling). */
53
+ totalCount: number;
54
+ /** The progressively-rendered count this leaf writes the partial-load into. */
55
+ visibleCount: Ref<number>;
56
+ /** Pixel offset from the container top. Default: 16 */
57
+ scrollOffset?: number;
58
+ /** Max rAF retry attempts before bailing. Default: 60 */
59
+ maxAttempts?: number;
60
+ /**
61
+ * Tree index for resolving a target id to its root section index. When
62
+ * provided, `scrollTo` loads only up to the target's root section + buffer
63
+ * (`rootIndex + 2`) instead of all content. Shares the same `TreeIndexEntry`
64
+ * the windowing `FlatSection` hierarchy fields reconcile with.
65
+ */
66
+ treeIndex?: Map<string, TreeIndexEntry>;
67
+ }
68
+ /**
69
+ * Options for `useClickDelegate` — the ONE delegated `[data-scroll-target]`
70
+ * click→scroll handler for an entire ToC (not N per-link listeners).
71
+ */
72
+ export interface ClickDelegateOptions {
73
+ /** Container element to attach the single delegated listener to. */
74
+ container: Ref<HTMLElement | null>;
75
+ /** CSS selector for clickable elements. Default: "[data-scroll-target]" */
76
+ selector?: string;
77
+ /** Attribute to read the target id from. Default: "data-scroll-target" */
78
+ attribute?: string;
79
+ /** Maps the attribute value to a scroll-target id. Return null to skip. */
80
+ resolve: (value: string) => string | null;
81
+ /** Called with the resolved id (typically `useScrollTo`'s `scrollTo`). */
82
+ scrollTo: (id: string) => void;
83
+ }
84
+ /**
85
+ * Options for `useLazyLoader` — the progressive batch-render count. Distinct
86
+ * from `useInfiniteScroll` (which fires a data-fetch `onLoadMore` trigger):
87
+ * the lazy-loader grows a RENDER-MOUNT count over an already-loaded list.
88
+ */
89
+ export interface LazyLoaderOptions {
90
+ /** Sections rendered per batch. Default: 2 */
91
+ batchSize?: number;
92
+ /** IntersectionObserver rootMargin for the bottom sentinel. Default: "0px 0px 600px 0px" */
93
+ rootMargin?: string;
94
+ /** Scroll container for the fast-drag scroll fallback. Falls back to document. */
95
+ scrollContainer?: Ref<HTMLElement | null>;
96
+ }
32
97
  /** Reactive state returned by `useSidebarState`. */
33
98
  export interface SidebarState {
34
99
  sections: SidebarSection[];
@@ -0,0 +1,4 @@
1
+ import type { ClickDelegateOptions } from "./types";
2
+ export declare function useClickDelegate(options: ClickDelegateOptions): {
3
+ handleClick: (e: MouseEvent) => void;
4
+ };
@@ -0,0 +1,5 @@
1
+ import type { LazyLoaderOptions } from "./types";
2
+ export declare function useLazyLoader(totalCount: number, options?: LazyLoaderOptions): {
3
+ visibleCount: import("vue").Ref<number, number>;
4
+ loadSentinel: import("vue").Ref<HTMLElement | null, HTMLElement | null>;
5
+ };
@@ -0,0 +1,5 @@
1
+ import type { ScrollToOptions } from "./types";
2
+ export declare function useScrollTo(options: ScrollToOptions): {
3
+ scrollTo: (id: string) => void;
4
+ cancel: () => void;
5
+ };
@@ -0,0 +1,4 @@
1
+ export { useVirtualSectionWindow, clearSessionHeightCache, } from "./useVirtualSectionWindow";
2
+ export { useWindowedStore } from "./useWindowedStore";
3
+ export { buildSectionLayout, findSectionOffset, resolveActiveSection, resolveSectionWindow, } from "./virtualSectionLayout";
4
+ export type { FlatSection, SectionLayout, SectionWindowRange, ForcedSectionWindowRange, } from "./virtualSectionLayout";
@@ -0,0 +1,72 @@
1
+ import { type MaybeRefOrGetter, type Ref } from "vue";
2
+ import type { FlatSection } from "./virtualSectionLayout";
3
+ /**
4
+ * Lineage: a glass-ui primitive at v0.9.4, retired at v1.0 (MIGRATION.md §3.2),
5
+ * carried on as a verbatim transposed copy in the words app, and HOME again at
6
+ * BC (the live words consumer + the dock-search results list overturn the
7
+ * no-consumer retirement verdict). Byte-faithful to the proven words copy save
8
+ * the recorded refinements: the container/content ResizeObservers route through
9
+ * the house `useResizeObserver` leaf (cleanup discipline) instead of raw
10
+ * `new ResizeObserver`, and `findSectionOffset` is the binary-search variant.
11
+ */
12
+ interface VirtualWindowConfig<T extends FlatSection = FlatSection> {
13
+ /** The flat list of section items to virtualize. */
14
+ items: MaybeRefOrGetter<readonly T[]>;
15
+ /**
16
+ * The element whose scroll position drives the window.
17
+ * `null` = use `window` / document scroll.
18
+ */
19
+ scrollContainer: Ref<HTMLElement | null>;
20
+ /**
21
+ * The wrapper element around the virtualized content.
22
+ * When provided, scroll offset is computed relative to this element's
23
+ * position in the page, so content above it (headers, images, etc.)
24
+ * is correctly excluded from the layout calculation.
25
+ */
26
+ contentEl?: Ref<HTMLElement | null>;
27
+ /** Overscan before the viewport in pixels. Default: viewport height. */
28
+ overscanBeforePx?: number;
29
+ /** Overscan after the viewport in pixels. Default: 2x viewport height. */
30
+ overscanAfterPx?: number;
31
+ /** Number of items to warm before a target when using `ensureTargetWindow`. Default: 2. */
32
+ warmTargetBefore?: number;
33
+ /** Number of items to warm after a target when using `ensureTargetWindow`. Default: 3. */
34
+ warmTargetAfter?: number;
35
+ }
36
+ /**
37
+ * Evict every cached measured section height. The documented escape for a
38
+ * consumer that wants to drop the module-global `SESSION_HEIGHT_CACHE` (a
39
+ * font-size change, a layout reflow that invalidates prior measurements).
40
+ */
41
+ export declare function clearSessionHeightCache(): void;
42
+ /**
43
+ * Scroll-based virtual windowing composable for section lists.
44
+ *
45
+ * Renders only the items visible in (or near) the scroll viewport,
46
+ * using spacer divs to maintain correct scroll height. Supports:
47
+ *
48
+ * - Measured heights: call `measureSection(id, el)` from a template ref
49
+ * to replace estimated heights with real DOM measurements.
50
+ * - Warm targeting: call `ensureTargetWindow(id)` to force an item into
51
+ * the render window before scrolling to it (auto-releases after 320ms).
52
+ * - Active tracking: `activeId` / `activeRootId` report which section
53
+ * is currently at the 20% viewport mark. NOTE — this is the windowing-LOCAL
54
+ * render-active reader; a ToC/sidebar consumer reads `useScrollTracker`'s
55
+ * `activeId` (the deepest-visible reader) for the binding highlight. The two
56
+ * serve distinct concerns and are deliberately NOT one function
57
+ * (BC.W-VIRTUAL-WINDOW active-section reconcile).
58
+ * - Content offset: provide `contentEl` to correctly handle non-virtualized
59
+ * content (headers, banners) above the virtual list.
60
+ */
61
+ export declare function useVirtualSectionWindow<T extends FlatSection>(options: VirtualWindowConfig<T>): {
62
+ visibleItems: import("vue").ComputedRef<T[]>;
63
+ topSpacerPx: import("vue").ComputedRef<number>;
64
+ bottomSpacerPx: import("vue").ComputedRef<number>;
65
+ measureSection: (id: string, el: HTMLElement | null) => void;
66
+ ensureTargetWindow: (id: string) => void;
67
+ getOffsetFor: (id: string) => number | null;
68
+ activeId: import("vue").ComputedRef<any>;
69
+ activeRootId: import("vue").ComputedRef<any>;
70
+ recalculate: () => void;
71
+ };
72
+ export {};
@@ -0,0 +1,43 @@
1
+ import { type Ref, type ShallowRef } from "vue";
2
+ /**
3
+ * Lineage: a glass-ui primitive at v0.9.4, retired at v1.0 (MIGRATION.md §3.3),
4
+ * carried on as a verbatim transposed copy in the words app, and HOME again at
5
+ * BC (the words wordlist store is the live consumer the no-consumer retirement
6
+ * verdict missed). Byte-faithful to the proven words copy — the
7
+ * generation-counter stale-append rejection is the load-bearing concurrency
8
+ * primitive, preserved verbatim.
9
+ */
10
+ interface ResidentWindowConfig {
11
+ /** Maximum items to keep in memory. Default: 200. */
12
+ maxResident?: number;
13
+ }
14
+ interface ResidentWindowState<T> {
15
+ /** Currently loaded items (a sliding window of the full list). */
16
+ items: ShallowRef<T[]>;
17
+ /** Logical offset of `items[0]` in the full list. */
18
+ windowStart: Ref<number>;
19
+ /** Generation counter -- increments on each reset. Used to reject stale appends. */
20
+ generation: Ref<number>;
21
+ /** Append or replace items. `replace=true` resets window; `replace=false` appends with eviction from front. */
22
+ set(newItems: T[], replace?: boolean): void;
23
+ /** Prepend items before the current window. Evicts from the end if over `maxResident`. */
24
+ prepend(newItems: T[], newWindowStart: number): void;
25
+ /** Clear all items and reset window. */
26
+ clear(): void;
27
+ /**
28
+ * Append items only if the generation matches (i.e., no reset happened since the fetch started).
29
+ * Returns `true` if the append was accepted, `false` if rejected (stale).
30
+ */
31
+ appendIfCurrent(newItems: T[], expectedGeneration: number): boolean;
32
+ }
33
+ /**
34
+ * Sliding-window store primitive for paginated / infinite-scroll data.
35
+ *
36
+ * Supports both forward (append) and backward (prepend) loading.
37
+ * When items exceed `maxResident`, trims from the opposite end.
38
+ *
39
+ * Uses a generation counter to reject stale appends after a backward reset,
40
+ * preventing race conditions between concurrent page fetches.
41
+ */
42
+ export declare function useWindowedStore<T>(options?: ResidentWindowConfig): ResidentWindowState<T>;
43
+ export {};
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Pure layout computation functions for virtual section scrolling.
3
+ *
4
+ * These are stateless — they take data in, return layout info out.
5
+ * No Vue reactivity, no DOM access.
6
+ *
7
+ * Lineage: this engine was a glass-ui primitive at v0.9.4, retired at v1.0
8
+ * (MIGRATION.md §3.4 — "0 production consumers, demo-only"), and lived on as
9
+ * a verbatim transposed copy in the words app. The retirement is REVERSED at
10
+ * BC: the live words consumer + the dock-search results list overturn the
11
+ * no-consumer verdict, so the windowing engine comes HOME. Byte-faithful to
12
+ * the proven words copy except the one functional refinement recorded below
13
+ * (`findSectionOffset` binary search) and the shared-hierarchy type-reconcile.
14
+ */
15
+ import type { SectionHierarchy } from "../sidebar/types";
16
+ /**
17
+ * A flattened section item with hierarchy metadata for virtual scrolling.
18
+ *
19
+ * The four hierarchy fields (`depth`/`rootId`/`parentId`/`rootIndex`) come
20
+ * from the shared `SectionHierarchy` base (`composables/sidebar/types`) — the
21
+ * same fields the sidebar's `TreeIndexEntry` carries, declared ONCE. The
22
+ * producer (`flattenPaperSections` in latex-paper, the dock-search result
23
+ * flattener) builds these in the consumer; glass-ui owns only the contract.
24
+ */
25
+ export interface FlatSection extends SectionHierarchy {
26
+ id: string;
27
+ index: number;
28
+ estimatedHeight: number;
29
+ }
30
+ /** A single entry in a computed section layout with resolved position. */
31
+ interface VirtualLayoutEntry<T extends FlatSection = FlatSection> {
32
+ item: T;
33
+ height: number;
34
+ top: number;
35
+ bottom: number;
36
+ }
37
+ /** Complete layout for a list of sections — entries plus total height. */
38
+ export interface SectionLayout<T extends FlatSection = FlatSection> {
39
+ entries: VirtualLayoutEntry<T>[];
40
+ totalHeight: number;
41
+ /**
42
+ * Entry slots sorted ascending by `item.id`, so `findSectionOffset` can
43
+ * binary-search an arbitrary string id in O(log n) (the words copy
44
+ * linear-scanned `entries` — `virtualSectionLayout.ts:244-252`). Built
45
+ * once in `buildSectionLayout`; the `top` is read straight off the matched
46
+ * entry, so the offset answer is byte-identical to the linear scan.
47
+ */
48
+ byId: VirtualLayoutEntry<T>[];
49
+ }
50
+ /** The visible window range with spacer sizes for virtual scrolling. */
51
+ export interface SectionWindowRange {
52
+ startIndex: number;
53
+ endIndex: number;
54
+ topSpacerPx: number;
55
+ bottomSpacerPx: number;
56
+ }
57
+ /** A forced index range that must be included in the visible window. */
58
+ export interface ForcedSectionWindowRange {
59
+ startIndex: number;
60
+ endIndex: number;
61
+ }
62
+ /**
63
+ * Build a layout from a flat list of sections using a height resolver.
64
+ *
65
+ * Each entry gets an absolute `top` and `bottom` offset in pixels,
66
+ * computed sequentially from index 0. Heights are rounded and clamped >= 1.
67
+ */
68
+ export declare function buildSectionLayout<T extends FlatSection>(items: readonly T[], getHeight: (item: T) => number): SectionLayout<T>;
69
+ /**
70
+ * Resolve which section indices are visible given scroll state.
71
+ *
72
+ * Uses binary search for O(log n) lookup. Overscan extends the window
73
+ * before and after the viewport. An optional `forcedRange` guarantees
74
+ * certain indices are always included (used for warm-up targeting).
75
+ */
76
+ export declare function resolveSectionWindow<T extends FlatSection>(layout: SectionLayout<T>, scrollTopPx: number, viewportHeightPx: number, overscanBeforePx: number, overscanAfterPx: number, forcedRange?: ForcedSectionWindowRange | null): SectionWindowRange;
77
+ /**
78
+ * Find the section that is "active" at a given scroll offset.
79
+ *
80
+ * Returns the last section whose top edge is at or before `activeOffsetPx`.
81
+ *
82
+ * NOTE — this is the windowing-LOCAL render-active reader (the section at the
83
+ * 20%-viewport mark, used to label the current render window). It is NOT the
84
+ * ToC's binding active-section reader: a sidebar/ToC consumer reads
85
+ * `useScrollTracker.activeId` (the deepest-visible reader) for the highlight.
86
+ * The two serve distinct concerns and are deliberately NOT one function
87
+ * (BC.W-VIRTUAL-WINDOW active-section reconcile).
88
+ */
89
+ export declare function resolveActiveSection<T extends FlatSection>(layout: SectionLayout<T>, activeOffsetPx: number): T | null;
90
+ /**
91
+ * Find the pixel offset of a section by its `id`.
92
+ * Returns `null` if the section is not in the layout.
93
+ *
94
+ * REFINEMENT (BC.W-VIRTUAL-WINDOW): the words copy linear-scans `entries`
95
+ * matching on `id` (O(n), `virtualSectionLayout.ts:244-252`). Here we binary
96
+ * search `layout.byId` — the entries sorted ascending by `item.id` in
97
+ * `buildSectionLayout` — which is a total order over the string ids, so the
98
+ * search is correct + O(log n). The `top` is read straight off the matched
99
+ * entry, so the answer is byte-identical to the linear scan (the fixture pins
100
+ * this over a 1000-item layout).
101
+ */
102
+ export declare function findSectionOffset<T extends FlatSection>(layout: SectionLayout<T>, id: string): number | null;
103
+ export {};