@tetrascience-npm/tetrascience-react-ui 0.7.0-beta.107.1 → 0.7.0-beta.128.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (431) hide show
  1. package/README.md +2 -2
  2. package/dist/components/ai/chain-of-thought.cjs +1 -1
  3. package/dist/components/ai/chain-of-thought.cjs.map +1 -1
  4. package/dist/components/ai/chain-of-thought.js +1 -1
  5. package/dist/components/ai/chain-of-thought.js.map +1 -1
  6. package/dist/components/ai/confirmation.cjs +1 -1
  7. package/dist/components/ai/confirmation.cjs.map +1 -1
  8. package/dist/components/ai/confirmation.js +1 -1
  9. package/dist/components/ai/confirmation.js.map +1 -1
  10. package/dist/components/ai/context.cjs +1 -1
  11. package/dist/components/ai/context.cjs.map +1 -1
  12. package/dist/components/ai/context.js +36 -35
  13. package/dist/components/ai/context.js.map +1 -1
  14. package/dist/components/ai/message.cjs +1 -1
  15. package/dist/components/ai/message.cjs.map +1 -1
  16. package/dist/components/ai/message.js +68 -68
  17. package/dist/components/ai/message.js.map +1 -1
  18. package/dist/components/ai/prompt-input.cjs +1 -1
  19. package/dist/components/ai/prompt-input.cjs.map +1 -1
  20. package/dist/components/ai/prompt-input.js +4 -2
  21. package/dist/components/ai/prompt-input.js.map +1 -1
  22. package/dist/components/ai/queue.cjs +1 -1
  23. package/dist/components/ai/queue.cjs.map +1 -1
  24. package/dist/components/ai/queue.js +9 -9
  25. package/dist/components/ai/queue.js.map +1 -1
  26. package/dist/components/ai/reasoning.cjs +1 -1
  27. package/dist/components/ai/reasoning.cjs.map +1 -1
  28. package/dist/components/ai/reasoning.js +67 -67
  29. package/dist/components/ai/reasoning.js.map +1 -1
  30. package/dist/components/ai/stream-status.cjs +1 -1
  31. package/dist/components/ai/stream-status.cjs.map +1 -1
  32. package/dist/components/ai/stream-status.js +41 -39
  33. package/dist/components/ai/stream-status.js.map +1 -1
  34. package/dist/components/ai/streamdown-code-plugin.cjs +2 -0
  35. package/dist/components/ai/streamdown-code-plugin.cjs.map +1 -0
  36. package/dist/components/ai/streamdown-code-plugin.js +42 -0
  37. package/dist/components/ai/streamdown-code-plugin.js.map +1 -0
  38. package/dist/components/ai/streamdown-plugins.cjs +2 -0
  39. package/dist/components/ai/streamdown-plugins.cjs.map +1 -0
  40. package/dist/components/ai/streamdown-plugins.js +14 -0
  41. package/dist/components/ai/streamdown-plugins.js.map +1 -0
  42. package/dist/components/ai/task.cjs +1 -1
  43. package/dist/components/ai/task.cjs.map +1 -1
  44. package/dist/components/ai/task.js +18 -11
  45. package/dist/components/ai/task.js.map +1 -1
  46. package/dist/components/ai/tool.cjs +1 -1
  47. package/dist/components/ai/tool.cjs.map +1 -1
  48. package/dist/components/ai/tool.js +51 -55
  49. package/dist/components/ai/tool.js.map +1 -1
  50. package/dist/components/ai/use-streamdown-plugins.cjs +2 -0
  51. package/dist/components/ai/use-streamdown-plugins.cjs.map +1 -0
  52. package/dist/components/ai/use-streamdown-plugins.js +25 -0
  53. package/dist/components/ai/use-streamdown-plugins.js.map +1 -0
  54. package/dist/components/charts/AreaPlot/AreaPlot.cjs +2 -0
  55. package/dist/components/charts/AreaPlot/AreaPlot.cjs.map +1 -0
  56. package/dist/components/charts/AreaPlot/AreaPlot.js +270 -0
  57. package/dist/components/charts/AreaPlot/AreaPlot.js.map +1 -0
  58. package/dist/components/charts/BarChart/BarChart.cjs +2 -0
  59. package/dist/components/charts/BarChart/BarChart.cjs.map +1 -0
  60. package/dist/components/charts/BarChart/BarChart.js +219 -0
  61. package/dist/components/charts/BarChart/BarChart.js.map +1 -0
  62. package/dist/components/charts/BoxPlot/BoxPlot.cjs +2 -0
  63. package/dist/components/charts/BoxPlot/BoxPlot.cjs.map +1 -0
  64. package/dist/components/charts/{Boxplot/Boxplot.js → BoxPlot/BoxPlot.js} +78 -79
  65. package/dist/components/charts/BoxPlot/BoxPlot.js.map +1 -0
  66. package/dist/components/charts/ChartTooltip/ChartTooltip.cjs +1 -1
  67. package/dist/components/charts/ChartTooltip/ChartTooltip.cjs.map +1 -1
  68. package/dist/components/charts/ChartTooltip/ChartTooltip.js +22 -22
  69. package/dist/components/charts/ChartTooltip/ChartTooltip.js.map +1 -1
  70. package/dist/components/charts/Chromatogram/Chromatogram.cjs +1 -1
  71. package/dist/components/charts/Chromatogram/Chromatogram.cjs.map +1 -1
  72. package/dist/components/charts/Chromatogram/Chromatogram.js +232 -170
  73. package/dist/components/charts/Chromatogram/Chromatogram.js.map +1 -1
  74. package/dist/components/charts/Chromatogram/annotations.cjs +2 -0
  75. package/dist/components/charts/Chromatogram/annotations.cjs.map +1 -0
  76. package/dist/components/charts/Chromatogram/annotations.js +137 -0
  77. package/dist/components/charts/Chromatogram/annotations.js.map +1 -0
  78. package/dist/components/charts/Chromatogram/boundaryMarkers.cjs +2 -0
  79. package/dist/components/charts/Chromatogram/boundaryMarkers.cjs.map +1 -0
  80. package/dist/components/charts/Chromatogram/boundaryMarkers.js +34 -0
  81. package/dist/components/charts/Chromatogram/boundaryMarkers.js.map +1 -0
  82. package/dist/components/charts/{ChromatogramChart → Chromatogram}/constants.cjs +1 -1
  83. package/dist/components/charts/Chromatogram/constants.cjs.map +1 -0
  84. package/dist/components/charts/{ChromatogramChart → Chromatogram}/constants.js +11 -5
  85. package/dist/components/charts/Chromatogram/constants.js.map +1 -0
  86. package/dist/components/charts/Chromatogram/dataProcessing.cjs +2 -0
  87. package/dist/components/charts/Chromatogram/dataProcessing.cjs.map +1 -0
  88. package/dist/components/charts/Chromatogram/dataProcessing.js +90 -0
  89. package/dist/components/charts/Chromatogram/dataProcessing.js.map +1 -0
  90. package/dist/components/charts/Chromatogram/peakDetection.cjs.map +1 -0
  91. package/dist/components/charts/Chromatogram/peakDetection.js.map +1 -0
  92. package/dist/components/charts/Chromatogram/plotBuilder.cjs +2 -0
  93. package/dist/components/charts/Chromatogram/plotBuilder.cjs.map +1 -0
  94. package/dist/components/charts/Chromatogram/plotBuilder.js +216 -0
  95. package/dist/components/charts/Chromatogram/plotBuilder.js.map +1 -0
  96. package/dist/components/charts/Chromatogram/regionOverlays.cjs +2 -0
  97. package/dist/components/charts/Chromatogram/regionOverlays.cjs.map +1 -0
  98. package/dist/components/charts/Chromatogram/regionOverlays.js +26 -0
  99. package/dist/components/charts/Chromatogram/regionOverlays.js.map +1 -0
  100. package/dist/components/charts/Electropherogram/Electropherogram.cjs +2 -0
  101. package/dist/components/charts/Electropherogram/Electropherogram.cjs.map +1 -0
  102. package/dist/components/charts/Electropherogram/Electropherogram.js +180 -0
  103. package/dist/components/charts/Electropherogram/Electropherogram.js.map +1 -0
  104. package/dist/components/charts/Histogram/Histogram.cjs +1 -1
  105. package/dist/components/charts/Histogram/Histogram.cjs.map +1 -1
  106. package/dist/components/charts/Histogram/Histogram.js +107 -108
  107. package/dist/components/charts/Histogram/Histogram.js.map +1 -1
  108. package/dist/components/charts/LinePlot/LinePlot.cjs +2 -0
  109. package/dist/components/charts/LinePlot/LinePlot.cjs.map +1 -0
  110. package/dist/components/charts/LinePlot/LinePlot.js +224 -0
  111. package/dist/components/charts/LinePlot/LinePlot.js.map +1 -0
  112. package/dist/components/charts/PieChart/PieChart.cjs +1 -1
  113. package/dist/components/charts/PieChart/PieChart.cjs.map +1 -1
  114. package/dist/components/charts/PieChart/PieChart.js +62 -61
  115. package/dist/components/charts/PieChart/PieChart.js.map +1 -1
  116. package/dist/components/charts/PlateMap/PlateMap.cjs +1 -1
  117. package/dist/components/charts/PlateMap/PlateMap.cjs.map +1 -1
  118. package/dist/components/charts/PlateMap/PlateMap.js +246 -242
  119. package/dist/components/charts/PlateMap/PlateMap.js.map +1 -1
  120. package/dist/components/charts/ScatterPlot/ScatterPlot.cjs +2 -0
  121. package/dist/components/charts/ScatterPlot/ScatterPlot.cjs.map +1 -0
  122. package/dist/components/charts/ScatterPlot/ScatterPlot.js +252 -0
  123. package/dist/components/charts/ScatterPlot/ScatterPlot.js.map +1 -0
  124. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.cjs +2 -0
  125. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.cjs.map +1 -0
  126. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.js +215 -0
  127. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.js.map +1 -0
  128. package/dist/components/charts/ScatterPlotInteractive/constants.cjs +2 -0
  129. package/dist/components/charts/ScatterPlotInteractive/constants.cjs.map +1 -0
  130. package/dist/components/charts/ScatterPlotInteractive/constants.js +38 -0
  131. package/dist/components/charts/ScatterPlotInteractive/constants.js.map +1 -0
  132. package/dist/components/charts/ScatterPlotInteractive/utils.cjs +2 -0
  133. package/dist/components/charts/ScatterPlotInteractive/utils.cjs.map +1 -0
  134. package/dist/components/charts/ScatterPlotInteractive/utils.js +261 -0
  135. package/dist/components/charts/ScatterPlotInteractive/utils.js.map +1 -0
  136. package/dist/components/charts/StackedChromatogram/StackedChromatogram.cjs +2 -0
  137. package/dist/components/charts/StackedChromatogram/StackedChromatogram.cjs.map +1 -0
  138. package/dist/components/charts/StackedChromatogram/StackedChromatogram.js +40 -0
  139. package/dist/components/charts/StackedChromatogram/StackedChromatogram.js.map +1 -0
  140. package/dist/components/charts/StackedChromatogram/transforms.cjs +2 -0
  141. package/dist/components/charts/StackedChromatogram/transforms.cjs.map +1 -0
  142. package/dist/components/charts/StackedChromatogram/transforms.js +31 -0
  143. package/dist/components/charts/StackedChromatogram/transforms.js.map +1 -0
  144. package/dist/components/charts/plotly-loader.cjs +2 -0
  145. package/dist/components/charts/plotly-loader.cjs.map +1 -0
  146. package/dist/components/charts/plotly-loader.js +22 -0
  147. package/dist/components/charts/plotly-loader.js.map +1 -0
  148. package/dist/components/composed/AssistantLayout/AssistantLayout.cjs +2 -0
  149. package/dist/components/composed/AssistantLayout/AssistantLayout.cjs.map +1 -0
  150. package/dist/components/composed/AssistantLayout/AssistantLayout.js +142 -0
  151. package/dist/components/composed/AssistantLayout/AssistantLayout.js.map +1 -0
  152. package/dist/components/composed/AssistantLayout/dockLayout.cjs +2 -0
  153. package/dist/components/composed/AssistantLayout/dockLayout.cjs.map +1 -0
  154. package/dist/components/composed/AssistantLayout/dockLayout.js +10 -0
  155. package/dist/components/composed/AssistantLayout/dockLayout.js.map +1 -0
  156. package/dist/components/composed/Chat/Chat.cjs +1 -1
  157. package/dist/components/composed/Chat/Chat.cjs.map +1 -1
  158. package/dist/components/composed/Chat/Chat.js +23 -23
  159. package/dist/components/composed/Chat/Chat.js.map +1 -1
  160. package/dist/components/composed/ConfirmDialog/ConfirmDialog.cjs +1 -1
  161. package/dist/components/composed/ConfirmDialog/ConfirmDialog.cjs.map +1 -1
  162. package/dist/components/composed/ConfirmDialog/ConfirmDialog.js +33 -29
  163. package/dist/components/composed/ConfirmDialog/ConfirmDialog.js.map +1 -1
  164. package/dist/components/composed/DataAppShell/CollapseButton.cjs +2 -0
  165. package/dist/components/composed/DataAppShell/CollapseButton.cjs.map +1 -0
  166. package/dist/components/composed/DataAppShell/CollapseButton.js +42 -0
  167. package/dist/components/composed/DataAppShell/CollapseButton.js.map +1 -0
  168. package/dist/components/composed/DataAppShell/DataAppShell.cjs +1 -1
  169. package/dist/components/composed/DataAppShell/DataAppShell.cjs.map +1 -1
  170. package/dist/components/composed/DataAppShell/DataAppShell.js +349 -313
  171. package/dist/components/composed/DataAppShell/DataAppShell.js.map +1 -1
  172. package/dist/components/composed/DataAppShell/PrimaryNav.cjs +2 -0
  173. package/dist/components/composed/DataAppShell/PrimaryNav.cjs.map +1 -0
  174. package/dist/components/composed/DataAppShell/PrimaryNav.js +268 -0
  175. package/dist/components/composed/DataAppShell/PrimaryNav.js.map +1 -0
  176. package/dist/components/composed/DataAppShell/RightPanel.cjs +2 -0
  177. package/dist/components/composed/DataAppShell/RightPanel.cjs.map +1 -0
  178. package/dist/components/composed/DataAppShell/RightPanel.js +282 -0
  179. package/dist/components/composed/DataAppShell/RightPanel.js.map +1 -0
  180. package/dist/components/composed/DataAppShell/SecondaryNav.cjs +2 -0
  181. package/dist/components/composed/DataAppShell/SecondaryNav.cjs.map +1 -0
  182. package/dist/components/composed/DataAppShell/SecondaryNav.js +364 -0
  183. package/dist/components/composed/DataAppShell/SecondaryNav.js.map +1 -0
  184. package/dist/components/composed/DataAppShell/ShellContext.cjs +2 -0
  185. package/dist/components/composed/DataAppShell/ShellContext.cjs.map +1 -0
  186. package/dist/components/composed/DataAppShell/ShellContext.js +23 -0
  187. package/dist/components/composed/DataAppShell/ShellContext.js.map +1 -0
  188. package/dist/components/composed/MoleculeStructure/MoleculeStructure.cjs +2 -0
  189. package/dist/components/composed/MoleculeStructure/MoleculeStructure.cjs.map +1 -0
  190. package/dist/components/composed/MoleculeStructure/MoleculeStructure.js +87 -0
  191. package/dist/components/composed/MoleculeStructure/MoleculeStructure.js.map +1 -0
  192. package/dist/components/composed/MoleculeStructure/rdkit-loader.cjs +2 -0
  193. package/dist/components/composed/MoleculeStructure/rdkit-loader.cjs.map +1 -0
  194. package/dist/components/composed/MoleculeStructure/rdkit-loader.js +89 -0
  195. package/dist/components/composed/MoleculeStructure/rdkit-loader.js.map +1 -0
  196. package/dist/components/composed/MoleculeStructure/use-rdkit.cjs +2 -0
  197. package/dist/components/composed/MoleculeStructure/use-rdkit.cjs.map +1 -0
  198. package/dist/components/composed/MoleculeStructure/use-rdkit.js +19 -0
  199. package/dist/components/composed/MoleculeStructure/use-rdkit.js.map +1 -0
  200. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs +1 -1
  201. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs.map +1 -1
  202. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js +17 -17
  203. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js.map +1 -1
  204. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs +1 -1
  205. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs.map +1 -1
  206. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js +33 -33
  207. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js.map +1 -1
  208. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs +1 -1
  209. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs.map +1 -1
  210. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js +7 -7
  211. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js.map +1 -1
  212. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs +1 -1
  213. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs.map +1 -1
  214. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js +1 -1
  215. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js.map +1 -1
  216. package/dist/components/composed/PlateMapEditor/WellLegend.cjs +1 -1
  217. package/dist/components/composed/PlateMapEditor/WellLegend.cjs.map +1 -1
  218. package/dist/components/composed/PlateMapEditor/WellLegend.js +24 -12
  219. package/dist/components/composed/PlateMapEditor/WellLegend.js.map +1 -1
  220. package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs +1 -1
  221. package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs.map +1 -1
  222. package/dist/components/composed/PlateMapEditor/WellManifestTable.js +1 -1
  223. package/dist/components/composed/PlateMapEditor/WellManifestTable.js.map +1 -1
  224. package/dist/components/composed/TdpSearch/components/DefaultFilters.cjs +1 -1
  225. package/dist/components/composed/TdpSearch/components/DefaultFilters.cjs.map +1 -1
  226. package/dist/components/composed/TdpSearch/components/DefaultFilters.js +3 -3
  227. package/dist/components/composed/TdpSearch/components/DefaultFilters.js.map +1 -1
  228. package/dist/components/composed/TopBar/TopBar.cjs +2 -0
  229. package/dist/components/composed/TopBar/TopBar.cjs.map +1 -0
  230. package/dist/components/composed/TopBar/TopBar.js +56 -0
  231. package/dist/components/composed/TopBar/TopBar.js.map +1 -0
  232. package/dist/components/composed/UserMenu/UserMenu.cjs +2 -0
  233. package/dist/components/composed/UserMenu/UserMenu.cjs.map +1 -0
  234. package/dist/components/composed/UserMenu/UserMenu.js +99 -0
  235. package/dist/components/composed/UserMenu/UserMenu.js.map +1 -0
  236. package/dist/components/composed/tdp-link.cjs +1 -1
  237. package/dist/components/composed/tdp-link.cjs.map +1 -1
  238. package/dist/components/composed/tdp-link.js +5 -5
  239. package/dist/components/composed/tdp-link.js.map +1 -1
  240. package/dist/components/ui/alert.cjs +1 -1
  241. package/dist/components/ui/alert.cjs.map +1 -1
  242. package/dist/components/ui/alert.js +12 -12
  243. package/dist/components/ui/alert.js.map +1 -1
  244. package/dist/components/ui/badge.cjs +1 -1
  245. package/dist/components/ui/badge.cjs.map +1 -1
  246. package/dist/components/ui/badge.js +14 -14
  247. package/dist/components/ui/badge.js.map +1 -1
  248. package/dist/components/ui/banner.cjs +1 -1
  249. package/dist/components/ui/banner.cjs.map +1 -1
  250. package/dist/components/ui/banner.js +17 -17
  251. package/dist/components/ui/banner.js.map +1 -1
  252. package/dist/components/ui/button.cjs +1 -1
  253. package/dist/components/ui/button.cjs.map +1 -1
  254. package/dist/components/ui/button.js +16 -16
  255. package/dist/components/ui/button.js.map +1 -1
  256. package/dist/components/ui/calendar.cjs +1 -1
  257. package/dist/components/ui/calendar.cjs.map +1 -1
  258. package/dist/components/ui/calendar.js +3 -3
  259. package/dist/components/ui/calendar.js.map +1 -1
  260. package/dist/components/ui/code-block.cjs +3 -3
  261. package/dist/components/ui/code-block.cjs.map +1 -1
  262. package/dist/components/ui/code-block.js +136 -118
  263. package/dist/components/ui/code-block.js.map +1 -1
  264. package/dist/components/ui/code-editor.cjs +1 -1
  265. package/dist/components/ui/code-editor.cjs.map +1 -1
  266. package/dist/components/ui/code-editor.js +14 -12
  267. package/dist/components/ui/code-editor.js.map +1 -1
  268. package/dist/components/ui/combobox.cjs +1 -1
  269. package/dist/components/ui/combobox.cjs.map +1 -1
  270. package/dist/components/ui/combobox.js +33 -29
  271. package/dist/components/ui/combobox.js.map +1 -1
  272. package/dist/components/ui/command.cjs +1 -1
  273. package/dist/components/ui/command.cjs.map +1 -1
  274. package/dist/components/ui/command.js +81 -77
  275. package/dist/components/ui/command.js.map +1 -1
  276. package/dist/components/ui/context-menu.cjs +1 -1
  277. package/dist/components/ui/context-menu.cjs.map +1 -1
  278. package/dist/components/ui/context-menu.js +13 -13
  279. package/dist/components/ui/context-menu.js.map +1 -1
  280. package/dist/components/ui/data-table/data-table-column-toggle.cjs +1 -1
  281. package/dist/components/ui/data-table/data-table-column-toggle.cjs.map +1 -1
  282. package/dist/components/ui/data-table/data-table-column-toggle.js +70 -62
  283. package/dist/components/ui/data-table/data-table-column-toggle.js.map +1 -1
  284. package/dist/components/ui/data-table/data-table-filter.cjs +1 -1
  285. package/dist/components/ui/data-table/data-table-filter.cjs.map +1 -1
  286. package/dist/components/ui/data-table/data-table-filter.js +24 -23
  287. package/dist/components/ui/data-table/data-table-filter.js.map +1 -1
  288. package/dist/components/ui/data-table/data-table-group.cjs +1 -1
  289. package/dist/components/ui/data-table/data-table-group.cjs.map +1 -1
  290. package/dist/components/ui/data-table/data-table-group.js +17 -16
  291. package/dist/components/ui/data-table/data-table-group.js.map +1 -1
  292. package/dist/components/ui/data-table/data-table-pagination.cjs +1 -1
  293. package/dist/components/ui/data-table/data-table-pagination.cjs.map +1 -1
  294. package/dist/components/ui/data-table/data-table-pagination.js +15 -15
  295. package/dist/components/ui/data-table/data-table-pagination.js.map +1 -1
  296. package/dist/components/ui/data-table/data-table.cjs +1 -1
  297. package/dist/components/ui/data-table/data-table.cjs.map +1 -1
  298. package/dist/components/ui/data-table/data-table.js +191 -190
  299. package/dist/components/ui/data-table/data-table.js.map +1 -1
  300. package/dist/components/ui/dialog.cjs +1 -1
  301. package/dist/components/ui/dialog.cjs.map +1 -1
  302. package/dist/components/ui/dialog.js +1 -1
  303. package/dist/components/ui/dialog.js.map +1 -1
  304. package/dist/components/ui/dropdown-menu.cjs +1 -1
  305. package/dist/components/ui/dropdown-menu.cjs.map +1 -1
  306. package/dist/components/ui/dropdown-menu.js +12 -4
  307. package/dist/components/ui/dropdown-menu.js.map +1 -1
  308. package/dist/components/ui/hover-card.cjs +1 -1
  309. package/dist/components/ui/hover-card.cjs.map +1 -1
  310. package/dist/components/ui/hover-card.js +3 -3
  311. package/dist/components/ui/hover-card.js.map +1 -1
  312. package/dist/components/ui/item.cjs +1 -1
  313. package/dist/components/ui/item.cjs.map +1 -1
  314. package/dist/components/ui/item.js +44 -36
  315. package/dist/components/ui/item.js.map +1 -1
  316. package/dist/components/ui/menubar.cjs +1 -1
  317. package/dist/components/ui/menubar.cjs.map +1 -1
  318. package/dist/components/ui/menubar.js +2 -2
  319. package/dist/components/ui/menubar.js.map +1 -1
  320. package/dist/components/ui/navigation-menu.cjs +1 -1
  321. package/dist/components/ui/navigation-menu.cjs.map +1 -1
  322. package/dist/components/ui/navigation-menu.js +1 -1
  323. package/dist/components/ui/navigation-menu.js.map +1 -1
  324. package/dist/components/ui/popover.cjs +1 -1
  325. package/dist/components/ui/popover.cjs.map +1 -1
  326. package/dist/components/ui/popover.js +1 -1
  327. package/dist/components/ui/popover.js.map +1 -1
  328. package/dist/components/ui/scroll-area.cjs +1 -1
  329. package/dist/components/ui/scroll-area.cjs.map +1 -1
  330. package/dist/components/ui/scroll-area.js +1 -0
  331. package/dist/components/ui/scroll-area.js.map +1 -1
  332. package/dist/components/ui/select.cjs +1 -1
  333. package/dist/components/ui/select.cjs.map +1 -1
  334. package/dist/components/ui/select.js +1 -1
  335. package/dist/components/ui/select.js.map +1 -1
  336. package/dist/components/ui/sheet.cjs +1 -1
  337. package/dist/components/ui/sheet.cjs.map +1 -1
  338. package/dist/components/ui/sheet.js +5 -5
  339. package/dist/components/ui/sheet.js.map +1 -1
  340. package/dist/components/ui/sidebar.cjs +1 -1
  341. package/dist/components/ui/sidebar.cjs.map +1 -1
  342. package/dist/components/ui/sidebar.js +2 -2
  343. package/dist/components/ui/sidebar.js.map +1 -1
  344. package/dist/components/ui/slider.cjs +1 -1
  345. package/dist/components/ui/slider.cjs.map +1 -1
  346. package/dist/components/ui/slider.js +10 -9
  347. package/dist/components/ui/slider.js.map +1 -1
  348. package/dist/components/ui/sonner.cjs +1 -1
  349. package/dist/components/ui/sonner.cjs.map +1 -1
  350. package/dist/components/ui/sonner.js +25 -10
  351. package/dist/components/ui/sonner.js.map +1 -1
  352. package/dist/components/ui/table.cjs +1 -1
  353. package/dist/components/ui/table.cjs.map +1 -1
  354. package/dist/components/ui/table.js +1 -0
  355. package/dist/components/ui/table.js.map +1 -1
  356. package/dist/components/ui/tabs.cjs +1 -1
  357. package/dist/components/ui/tabs.cjs.map +1 -1
  358. package/dist/components/ui/tabs.js +18 -18
  359. package/dist/components/ui/tabs.js.map +1 -1
  360. package/dist/components/ui/tetra-molecule-icon.cjs +2 -0
  361. package/dist/components/ui/tetra-molecule-icon.cjs.map +1 -0
  362. package/dist/components/ui/tetra-molecule-icon.js +49 -0
  363. package/dist/components/ui/tetra-molecule-icon.js.map +1 -0
  364. package/dist/components/ui/toggle-group.cjs +1 -1
  365. package/dist/components/ui/toggle-group.cjs.map +1 -1
  366. package/dist/components/ui/toggle-group.js +35 -31
  367. package/dist/components/ui/toggle-group.js.map +1 -1
  368. package/dist/hooks/use-plotly-theme.cjs +1 -1
  369. package/dist/hooks/use-plotly-theme.cjs.map +1 -1
  370. package/dist/hooks/use-plotly-theme.js +4 -3
  371. package/dist/hooks/use-plotly-theme.js.map +1 -1
  372. package/dist/index.cjs +1 -1
  373. package/dist/index.css +1 -1
  374. package/dist/index.d.ts +1210 -132
  375. package/dist/index.js +694 -639
  376. package/dist/index.js.map +1 -1
  377. package/dist/index.tailwind.css +1 -1
  378. package/dist/lib/shiki.cjs +2 -0
  379. package/dist/lib/shiki.cjs.map +1 -0
  380. package/dist/lib/shiki.js +72 -0
  381. package/dist/lib/shiki.js.map +1 -0
  382. package/package.json +23 -12
  383. package/dist/components/charts/AreaGraph/AreaGraph.cjs +0 -2
  384. package/dist/components/charts/AreaGraph/AreaGraph.cjs.map +0 -1
  385. package/dist/components/charts/AreaGraph/AreaGraph.js +0 -271
  386. package/dist/components/charts/AreaGraph/AreaGraph.js.map +0 -1
  387. package/dist/components/charts/BarGraph/BarGraph.cjs +0 -2
  388. package/dist/components/charts/BarGraph/BarGraph.cjs.map +0 -1
  389. package/dist/components/charts/BarGraph/BarGraph.js +0 -220
  390. package/dist/components/charts/BarGraph/BarGraph.js.map +0 -1
  391. package/dist/components/charts/Boxplot/Boxplot.cjs +0 -2
  392. package/dist/components/charts/Boxplot/Boxplot.cjs.map +0 -1
  393. package/dist/components/charts/Boxplot/Boxplot.js.map +0 -1
  394. package/dist/components/charts/ChromatogramChart/ChromatogramChart.cjs +0 -2
  395. package/dist/components/charts/ChromatogramChart/ChromatogramChart.cjs.map +0 -1
  396. package/dist/components/charts/ChromatogramChart/ChromatogramChart.js +0 -227
  397. package/dist/components/charts/ChromatogramChart/ChromatogramChart.js.map +0 -1
  398. package/dist/components/charts/ChromatogramChart/annotations.cjs +0 -2
  399. package/dist/components/charts/ChromatogramChart/annotations.cjs.map +0 -1
  400. package/dist/components/charts/ChromatogramChart/annotations.js +0 -73
  401. package/dist/components/charts/ChromatogramChart/annotations.js.map +0 -1
  402. package/dist/components/charts/ChromatogramChart/boundaryMarkers.cjs +0 -2
  403. package/dist/components/charts/ChromatogramChart/boundaryMarkers.cjs.map +0 -1
  404. package/dist/components/charts/ChromatogramChart/boundaryMarkers.js +0 -34
  405. package/dist/components/charts/ChromatogramChart/boundaryMarkers.js.map +0 -1
  406. package/dist/components/charts/ChromatogramChart/constants.cjs.map +0 -1
  407. package/dist/components/charts/ChromatogramChart/constants.js.map +0 -1
  408. package/dist/components/charts/ChromatogramChart/dataProcessing.cjs +0 -2
  409. package/dist/components/charts/ChromatogramChart/dataProcessing.cjs.map +0 -1
  410. package/dist/components/charts/ChromatogramChart/dataProcessing.js +0 -79
  411. package/dist/components/charts/ChromatogramChart/dataProcessing.js.map +0 -1
  412. package/dist/components/charts/ChromatogramChart/peakDetection.cjs.map +0 -1
  413. package/dist/components/charts/ChromatogramChart/peakDetection.js.map +0 -1
  414. package/dist/components/charts/DotPlot/DotPlot.cjs +0 -2
  415. package/dist/components/charts/DotPlot/DotPlot.cjs.map +0 -1
  416. package/dist/components/charts/DotPlot/DotPlot.js +0 -208
  417. package/dist/components/charts/DotPlot/DotPlot.js.map +0 -1
  418. package/dist/components/charts/Heatmap/Heatmap.cjs +0 -2
  419. package/dist/components/charts/Heatmap/Heatmap.cjs.map +0 -1
  420. package/dist/components/charts/Heatmap/Heatmap.js +0 -67
  421. package/dist/components/charts/Heatmap/Heatmap.js.map +0 -1
  422. package/dist/components/charts/LineGraph/LineGraph.cjs +0 -2
  423. package/dist/components/charts/LineGraph/LineGraph.cjs.map +0 -1
  424. package/dist/components/charts/LineGraph/LineGraph.js +0 -225
  425. package/dist/components/charts/LineGraph/LineGraph.js.map +0 -1
  426. package/dist/components/charts/ScatterGraph/ScatterGraph.cjs +0 -2
  427. package/dist/components/charts/ScatterGraph/ScatterGraph.cjs.map +0 -1
  428. package/dist/components/charts/ScatterGraph/ScatterGraph.js +0 -234
  429. package/dist/components/charts/ScatterGraph/ScatterGraph.js.map +0 -1
  430. /package/dist/components/charts/{ChromatogramChart → Chromatogram}/peakDetection.cjs +0 -0
  431. /package/dist/components/charts/{ChromatogramChart → Chromatogram}/peakDetection.js +0 -0
package/dist/index.d.ts CHANGED
@@ -31,8 +31,10 @@ import { JSX } from 'react/jsx-runtime';
31
31
  import { JSXElementConstructor } from 'react';
32
32
  import { Label as Label_2 } from 'radix-ui';
33
33
  import { LanguageModelUsage } from 'ai';
34
+ import { LanguageRegistration } from 'shiki/core';
34
35
  import { Locale } from 'react-day-picker';
35
36
  import { LucideIcon } from 'lucide-react';
37
+ import { LucideProps } from 'lucide-react';
36
38
  import { MemoExoticComponent } from 'react';
37
39
  import { Menubar as Menubar_2 } from 'radix-ui';
38
40
  import { MouseEvent as MouseEvent_2 } from 'react';
@@ -42,6 +44,7 @@ import { PaginationState } from '@tanstack/react-table';
42
44
  import { Popover as Popover_2 } from 'radix-ui';
43
45
  import { PropsWithChildren } from 'react';
44
46
  import { RadioGroup as RadioGroup_2 } from 'radix-ui';
47
+ import { RDKitModule } from '@rdkit/rdkit';
45
48
  import * as React_2 from 'react';
46
49
  import { ReactElement } from 'react';
47
50
  import { ReactNode } from 'react';
@@ -121,6 +124,8 @@ export declare function allPositions(dims: PlateDimensions): WellId[];
121
124
 
122
125
  export declare function applyFilterCondition(cellValue: string, operator: FilterOperator, filterValue: string): boolean;
123
126
 
127
+ export declare function applyStackingTransform(inputSeries: ChromatogramSeries[], inputAnnotations: PeakAnnotation[][] | undefined, mode: StackingMode, stackOffset: number, stackingOrder?: "first-on-bottom" | "first-on-top"): TransformResult;
128
+
124
129
  export declare interface AreaDataSeries {
125
130
  x: number[];
126
131
  y: number[];
@@ -130,9 +135,9 @@ export declare interface AreaDataSeries {
130
135
  fill?: "tozeroy" | "tonexty" | "toself";
131
136
  }
132
137
 
133
- export declare const AreaGraph: default_2.FC<AreaGraphProps>;
138
+ export declare const AreaPlot: default_2.FC<AreaPlotProps>;
134
139
 
135
- export declare interface AreaGraphProps {
140
+ export declare interface AreaPlotProps {
136
141
  dataSeries: AreaDataSeries[];
137
142
  /**
138
143
  * Fixed width in pixels. When omitted, the chart fills its container and
@@ -146,7 +151,7 @@ export declare interface AreaGraphProps {
146
151
  height?: number;
147
152
  xRange?: [number, number];
148
153
  yRange?: [number, number];
149
- variant?: AreaGraphVariant;
154
+ variant?: AreaPlotVariant;
150
155
  xTitle?: string;
151
156
  yTitle?: string;
152
157
  title?: string;
@@ -159,10 +164,79 @@ export declare interface AreaGraphProps {
159
164
  xTickText?: string[];
160
165
  }
161
166
 
162
- export declare type AreaGraphVariant = "normal" | "stacked";
167
+ export declare type AreaPlotVariant = "normal" | "stacked";
163
168
 
164
169
  export declare function AspectRatio({ ...props }: React.ComponentProps<typeof AspectRatio_2.Root>): JSX.Element;
165
170
 
171
+ /** Where the AI Assistant panel docks relative to the main content. */
172
+ export declare type AssistantDock = "left" | "right" | "bottom";
173
+
174
+ /**
175
+ * Segmented control of dock icons. Clicking an inactive icon docks + shows the
176
+ * assistant there; clicking the active icon again hides it.
177
+ */
178
+ export declare function AssistantDockControls({ label, className }: AssistantDockControlsProps): JSX.Element;
179
+
180
+ export declare interface AssistantDockControlsProps {
181
+ /** Label shown before the icons. Pass `null` to hide it. */
182
+ label?: React_2.ReactNode;
183
+ className?: string;
184
+ }
185
+
186
+ /**
187
+ * Docks the assistant left / right / bottom of the main content and resizes it
188
+ * with the design-system `Resizable` (react-resizable-panels). Must be rendered
189
+ * inside an `AssistantLayoutProvider`; pair with `AssistantDockControls`.
190
+ *
191
+ * The group is keyed by `dock`, so changing dock remounts the panels. The
192
+ * assistant panel is therefore re-created on redock (its transient state is not
193
+ * preserved across a dock change) — a deliberate trade-off for using the shared
194
+ * resizable primitive rather than a bespoke splitter.
195
+ */
196
+ export declare function AssistantLayout({ assistant, children, minSize, maxSize, className, assistantClassName, contentClassName, }: AssistantLayoutProps): JSX.Element;
197
+
198
+ declare interface AssistantLayoutContextValue {
199
+ /** Where the assistant docks. Persisted. */
200
+ dock: AssistantDock;
201
+ setDock: (dock: AssistantDock) => void;
202
+ /** Assistant size as a percentage of the layout along the dock axis. Persisted. */
203
+ size: number;
204
+ setSize: (size: number) => void;
205
+ /** Whether the assistant is shown. In-memory by default (resets to visible on reload). */
206
+ visible: boolean;
207
+ setVisible: (visible: boolean) => void;
208
+ }
209
+
210
+ export declare interface AssistantLayoutProps {
211
+ /** The AI Assistant panel content (e.g. a `<Chat />`). */
212
+ assistant: React_2.ReactNode;
213
+ /** The main content; fills the remaining space (and the whole body when the assistant is hidden). */
214
+ children: React_2.ReactNode;
215
+ /** Min assistant size as a percentage of the layout. */
216
+ minSize?: number;
217
+ /** Max assistant size as a percentage of the layout. */
218
+ maxSize?: number;
219
+ className?: string;
220
+ assistantClassName?: string;
221
+ contentClassName?: string;
222
+ }
223
+
224
+ export declare function AssistantLayoutProvider({ children, storageKey, defaultDock, defaultSize, defaultVisible, persist, }: AssistantLayoutProviderProps): JSX.Element;
225
+
226
+ export declare interface AssistantLayoutProviderProps {
227
+ children: React_2.ReactNode;
228
+ /** localStorage key prefix for the persisted dock + size. */
229
+ storageKey?: string;
230
+ /** Default dock when nothing is persisted. */
231
+ defaultDock?: AssistantDock;
232
+ /** Default assistant size as a percentage (1–99) of the layout. */
233
+ defaultSize?: number;
234
+ /** Whether the assistant starts visible. */
235
+ defaultVisible?: boolean;
236
+ /** Persist dock + size to localStorage. Defaults to `true`. */
237
+ persist?: boolean;
238
+ }
239
+
166
240
  export declare const Attachment: ({ data, onRemove, className, children, ...props }: AttachmentProps) => JSX.Element;
167
241
 
168
242
  declare interface AttachmentContextValue {
@@ -283,6 +357,22 @@ export declare function AvatarGroupCount({ className, ...props }: React_2.Compon
283
357
 
284
358
  export declare function AvatarImage({ className, ...props }: React_2.ComponentProps<typeof Avatar_2.Image>): JSX.Element;
285
359
 
360
+ /**
361
+ * Axis configuration
362
+ */
363
+ export declare interface AxisConfig {
364
+ /** Axis label */
365
+ title?: string;
366
+ /** Scale type (linear or log) */
367
+ scale?: ScaleType;
368
+ /** Fixed axis range [min, max] */
369
+ range?: [number, number];
370
+ /** Auto-range with optional padding percentage (0-1) */
371
+ autoRange?: boolean;
372
+ /** Padding percentage for auto-range (default: 0.1 = 10%) */
373
+ autoRangePadding?: number;
374
+ }
375
+
286
376
  export declare function Badge({ className, variant, asChild, ...props }: React_2.ComponentProps<"span"> & VariantProps<typeof badgeVariants> & {
287
377
  asChild?: boolean;
288
378
  }): JSX.Element;
@@ -303,22 +393,9 @@ export declare const bannerVariants: (props?: ({
303
393
  variant?: "destructive" | "info" | "positive" | "warning" | null | undefined;
304
394
  } & ClassProp) | undefined) => string;
305
395
 
306
- export declare interface BarDataSeries {
307
- x: number[];
308
- y: number[];
309
- name: string;
310
- /** Optional color override (auto-assigned from CHART_COLORS if not provided) */
311
- color?: string;
312
- error_y?: {
313
- type: "data";
314
- array: number[];
315
- visible: boolean;
316
- };
317
- }
318
-
319
- export declare const BarGraph: default_2.FC<BarGraphProps>;
396
+ export declare const BarChart: default_2.FC<BarChartProps>;
320
397
 
321
- export declare interface BarGraphProps {
398
+ export declare interface BarChartProps {
322
399
  dataSeries: BarDataSeries[];
323
400
  /**
324
401
  * Fixed width in pixels. When omitted, the chart fills its container and
@@ -332,7 +409,7 @@ export declare interface BarGraphProps {
332
409
  height?: number;
333
410
  xRange?: [number, number];
334
411
  yRange?: [number, number];
335
- variant?: BarGraphVariant;
412
+ variant?: BarChartVariant;
336
413
  xTitle?: string;
337
414
  yTitle?: string;
338
415
  title?: string;
@@ -346,7 +423,20 @@ export declare interface BarGraphProps {
346
423
  xTickText?: string[];
347
424
  }
348
425
 
349
- export declare type BarGraphVariant = "group" | "stack" | "overlay";
426
+ export declare type BarChartVariant = "group" | "stack" | "overlay";
427
+
428
+ export declare interface BarDataSeries {
429
+ x: number[];
430
+ y: number[];
431
+ name: string;
432
+ /** Optional color override (auto-assigned from CHART_COLORS if not provided) */
433
+ color?: string;
434
+ error_y?: {
435
+ type: "data";
436
+ array: number[];
437
+ visible: boolean;
438
+ };
439
+ }
350
440
 
351
441
  /**
352
442
  * Baseline correction method
@@ -376,9 +466,9 @@ export declare interface BoxDataSeries {
376
466
  pointpos?: number;
377
467
  }
378
468
 
379
- export declare const Boxplot: default_2.FC<BoxplotProps>;
469
+ export declare const BoxPlot: default_2.FC<BoxPlotProps>;
380
470
 
381
- export declare interface BoxplotProps {
471
+ export declare interface BoxPlotProps {
382
472
  dataSeries: BoxDataSeries[];
383
473
  /**
384
474
  * Fixed width in pixels. When omitted, the chart fills its container and
@@ -454,7 +544,7 @@ export declare const buttonGroupVariants: (props?: ({
454
544
 
455
545
  export declare const buttonVariants: (props?: ({
456
546
  variant?: "link" | "default" | "outline" | "secondary" | "ghost" | "destructive" | null | undefined;
457
- size?: "default" | "sm" | "icon" | "xs" | "lg" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
547
+ size?: "default" | "sm" | "xs" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
458
548
  } & ClassProp) | undefined) => string;
459
549
 
460
550
  export declare function Calendar({ className, classNames, showOutsideDays, captionLayout, buttonVariant, locale, formatters, components, ...props }: React_2.ComponentProps<typeof DayPicker> & {
@@ -745,14 +835,19 @@ export declare interface ChatSource {
745
835
 
746
836
  export declare function Checkbox({ className, ...props }: React_2.ComponentProps<typeof Checkbox_2.Root>): JSX.Element;
747
837
 
748
- export declare const Chromatogram: default_2.FC<ChromatogramProps>;
838
+ declare const CHEVRONS: {
839
+ readonly left: React_2.ForwardRefExoticComponent<Omit<LucideProps, "ref"> & React_2.RefAttributes<SVGSVGElement>>;
840
+ readonly right: React_2.ForwardRefExoticComponent<Omit<LucideProps, "ref"> & React_2.RefAttributes<SVGSVGElement>>;
841
+ readonly up: React_2.ForwardRefExoticComponent<Omit<LucideProps, "ref"> & React_2.RefAttributes<SVGSVGElement>>;
842
+ readonly down: React_2.ForwardRefExoticComponent<Omit<LucideProps, "ref"> & React_2.RefAttributes<SVGSVGElement>>;
843
+ };
749
844
 
750
- export declare const ChromatogramChart: default_2.FC<ChromatogramChartProps>;
845
+ export declare const Chromatogram: default_2.FC<ChromatogramProps>;
751
846
 
752
847
  /**
753
- * Props for ChromatogramChart component
848
+ * Props for Chromatogram component
754
849
  */
755
- export declare interface ChromatogramChartProps {
850
+ export declare interface ChromatogramProps {
756
851
  /** Array of data series to display */
757
852
  series: ChromatogramSeries[];
758
853
  /** Chart width in pixels */
@@ -806,21 +901,48 @@ export declare interface ChromatogramChartProps {
806
901
  annotationOverlapThreshold?: number;
807
902
  /** Show export button in modebar (default: true) */
808
903
  showExportButton?: boolean;
809
- }
810
-
811
- export declare interface ChromatogramProps {
812
- data?: PeakData[];
813
- width?: number;
814
- height?: number;
815
- positionInterval?: number;
816
- colorA?: string;
817
- colorT?: string;
818
- colorG?: string;
819
- colorC?: string;
904
+ /**
905
+ * IDs of peaks that should render in the "selected" visual state.
906
+ * Fully controlled the component owns no selection state of its own.
907
+ * IDs match the id field on PeakAnnotation (user-provided) or the
908
+ * auto-generated IDs for auto-detected peaks ("peak-{seriesIndex}-{peakIndex}").
909
+ */
910
+ selectedPeakIds?: string[];
911
+ /**
912
+ * Called when the user clicks on a peak annotation or its invisible hit target.
913
+ * The consumer decides whether to add/remove the id from selectedPeakIds
914
+ * (toggle vs. replace behaviour is the consumer's responsibility).
915
+ */
916
+ onPeakClick?: (event: PeakSelectEvent) => void;
917
+ /**
918
+ * Called when the cursor enters or leaves a peak hit target.
919
+ * Receives null on unhover. As a side-effect, the series line for the
920
+ * hovered peak thickens by selectionAppearance.hoverLineWidthMultiplier.
921
+ */
922
+ onPeakHover?: (event: PeakSelectEvent | null) => void;
923
+ /**
924
+ * Override the default visual behaviour for selected / unselected / hover states.
925
+ * All sub-fields are optional — defaults are applied for any omitted value.
926
+ * Only has a visual effect when selectedPeakIds or onPeakClick/onPeakHover are used.
927
+ */
928
+ selectionAppearance?: PeakSelectionAppearance;
929
+ /**
930
+ * Annotation label style (default: "arrow").
931
+ * - "arrow" — arrowhead pointing to the peak with a floating label box
932
+ * - "inline" — no arrow; label sits 4 px above the actual trace Y value
933
+ */
934
+ annotationStyle?: "arrow" | "inline";
935
+ /** Title font size in pixels (default: 20) */
936
+ titleFontSize?: number;
937
+ /**
938
+ * Top margin override when a title is shown (default: from
939
+ * CHROMATOGRAM_LAYOUT.MARGIN_TOP_WITH_TITLE).
940
+ */
941
+ titleTopMargin?: number;
820
942
  }
821
943
 
822
944
  /**
823
- * Type definitions for ChromatogramChart component
945
+ * Type definitions for Chromatogram component
824
946
  */
825
947
  /**
826
948
  * Data series for chromatogram visualization
@@ -914,6 +1036,34 @@ export declare function CollapsibleContent({ ...props }: React.ComponentProps<ty
914
1036
 
915
1037
  export declare function CollapsibleTrigger({ ...props }: React.ComponentProps<typeof Collapsible_2.CollapsibleTrigger>): JSX.Element;
916
1038
 
1039
+ /**
1040
+ * Color mapping configuration
1041
+ */
1042
+ export declare interface ColorMapping {
1043
+ /** Type of mapping: data-driven or static */
1044
+ type: "static" | "continuous" | "categorical";
1045
+ /** Static color value (for type: "static") */
1046
+ value?: string;
1047
+ /** Data field to map (for type: "continuous" | "categorical") */
1048
+ field?: string;
1049
+ /** Color scale for continuous mapping */
1050
+ colorScale?: string | Array<[number, string]>;
1051
+ /** Discrete colors for categorical mapping */
1052
+ categoryColors?: Record<string, string>;
1053
+ /** Min/max values for continuous mapping (auto-calculated if not provided) */
1054
+ min?: number;
1055
+ max?: number;
1056
+ }
1057
+
1058
+ /**
1059
+ * Default colors for the scatter plot. Background, grid, and axis colors
1060
+ * come from the active theme via `usePlotlyTheme`.
1061
+ */
1062
+ export declare const COLORS: {
1063
+ primary: string;
1064
+ selected: string;
1065
+ };
1066
+
917
1067
  /**
918
1068
  * Color scale definition for the heatmap visualization mode.
919
1069
  *
@@ -979,7 +1129,7 @@ export declare function CommandDialog({ title, description, children, className,
979
1129
  showCloseButton?: boolean;
980
1130
  }): JSX.Element;
981
1131
 
982
- export declare function CommandEmpty({ className, ...props }: React_2.ComponentProps<typeof Command_2.Empty>): JSX.Element;
1132
+ export declare function CommandEmpty({ className, ...props }: React_2.ComponentProps<"div">): JSX.Element | null;
983
1133
 
984
1134
  export declare function CommandGroup({ className, ...props }: React_2.ComponentProps<typeof Command_2.Group>): JSX.Element;
985
1135
 
@@ -1024,6 +1174,24 @@ declare interface CommonTdpSearchProps {
1024
1174
  renderResults?: (props: TdpResultsRenderProps) => default_2.ReactNode;
1025
1175
  }
1026
1176
 
1177
+ /**
1178
+ * Set process-wide defaults for how RDKit is loaded. Call once, before the
1179
+ * first molecule renders — typically at app startup. Later calls are ignored
1180
+ * once loading has begun.
1181
+ *
1182
+ * Bundled apps should set `wasmSrc` — see the module doc above for why.
1183
+ *
1184
+ * @example
1185
+ * ```ts
1186
+ * // Serve the WASM yourself (e.g. copied into /public) — no CDN, air-gapped.
1187
+ * configureRDKit({ wasmSrc: "/assets/RDKit_minimal.wasm" })
1188
+ * // …or resolve it from the installed package via your bundler (Vite):
1189
+ * import wasmSrc from "@rdkit/rdkit/dist/RDKit_minimal.wasm?url"
1190
+ * configureRDKit({ wasmSrc })
1191
+ * ```
1192
+ */
1193
+ export declare function configureRDKit(config: RDKitLoaderConfig): void;
1194
+
1027
1195
  export declare const Confirmation: ({ className, approval, state, children, ...props }: ConfirmationProps) => JSX.Element | null;
1028
1196
 
1029
1197
  export declare const ConfirmationAccepted: ({ children }: {
@@ -1217,7 +1385,65 @@ export declare interface CostBreakdown {
1217
1385
  cache?: number;
1218
1386
  }
1219
1387
 
1220
- export declare function DataAppShell({ appName, appFullName, appIcon, version, navGroups, onAppNameClick, backToPlatformPath, onBackToPlatform, userMenu, breadcrumbs, onHelpClick, headerActions, sidebarPanel, showNavRail, children, className, }: DataAppShellProps): JSX.Element;
1388
+ export declare function DataAppShell({ appName, appFullName, appIcon, version, navGroups, onAppNameClick, backToPlatformPath, onBackToPlatform, userMenu, breadcrumbs, headerLeft, headerCenter, headerActions, navVariant, primaryNav, sidebarPanel, secondaryBar, rightPanel, showNavRail, showTopBar, collapsed: collapsedProp, defaultCollapsed, onCollapsedChange, hideNavOnCollapse, autoCollapse, children, className, }: DataAppShellProps): JSX.Element;
1389
+
1390
+ export declare interface DataAppShellContextValue {
1391
+ /** Which axis the primary nav renders on. */
1392
+ navVariant: DataAppShellNavVariant;
1393
+ /** The shell's single collapse state — primary + secondary collapse together. */
1394
+ collapsed: boolean;
1395
+ /** Flip the shell collapse state (no-op when the shell is not collapsible). */
1396
+ setCollapsed: (collapsed: boolean) => void;
1397
+ /** When true, collapsing hides the primary rail so one icon rail remains. */
1398
+ hideNavOnCollapse: boolean;
1399
+ }
1400
+
1401
+ export declare type DataAppShellNavVariant = "vertical" | "horizontal";
1402
+
1403
+ /**
1404
+ * The Data App Shell's nav engine — one `navGroups` model rendered in three
1405
+ * placements via `variant`:
1406
+ *
1407
+ * - **rail** — vertical icon-only (48px rail); labels via tooltip, user slot at the bottom
1408
+ * - **sidebar** — vertical icon + label with group headers, user slot at the bottom
1409
+ * - **top** — horizontal bar; user/actions slot on the right
1410
+ *
1411
+ * Active state is either controlled via `activeKey` or per-page `isActive`.
1412
+ * Width/background chrome is owned by the container (the shell's rail wrapper,
1413
+ * a Sheet, or a TopBar) — this component is layout-neutral.
1414
+ */
1415
+ export declare function DataAppShellPrimaryNav({ variant, navGroups, activeKey, onSelect, header, user, actions, renderItem, className, ...props }: DataAppShellPrimaryNavProps): JSX.Element;
1416
+
1417
+ export declare const dataAppShellPrimaryNavItemVariants: (props?: ({
1418
+ variant?: "top" | "rail" | "sidebar" | null | undefined;
1419
+ active?: boolean | null | undefined;
1420
+ } & ClassProp) | undefined) => string;
1421
+
1422
+ export declare interface DataAppShellPrimaryNavProps extends Omit<React_2.ComponentProps<"nav">, "children" | "onSelect">, VariantProps<typeof dataAppShellPrimaryNavVariants> {
1423
+ /** Navigation groups; each group contains one or more pages */
1424
+ navGroups: NavGroup[];
1425
+ /** Controlled active page id — takes precedence over per-page `isActive` */
1426
+ activeKey?: string;
1427
+ /** Called with the selected page id after the page's own `onClick` */
1428
+ onSelect?: (key: string, page: NavPage) => void;
1429
+ /** Slot above the items in `rail`/`sidebar`, left of the items in `top` (e.g. app logo) */
1430
+ header?: React_2.ReactNode;
1431
+ /** User slot (e.g. `<UserMenu/>`) — bottom in `rail`/`sidebar`, right in `top` */
1432
+ user?: React_2.ReactNode;
1433
+ /** Action slot rendered alongside `user` */
1434
+ actions?: React_2.ReactNode;
1435
+ /** Escape hatch — full control over an item's rendering */
1436
+ renderItem?: (page: NavPage, state: {
1437
+ active: boolean;
1438
+ variant: DataAppShellPrimaryNavVariant;
1439
+ }) => React_2.ReactNode;
1440
+ }
1441
+
1442
+ export declare type DataAppShellPrimaryNavVariant = "rail" | "sidebar" | "top";
1443
+
1444
+ export declare const dataAppShellPrimaryNavVariants: (props?: ({
1445
+ variant?: "top" | "rail" | "sidebar" | null | undefined;
1446
+ } & ClassProp) | undefined) => string;
1221
1447
 
1222
1448
  export declare interface DataAppShellProps {
1223
1449
  /** Application name/abbreviation shown in the logo button */
@@ -1240,20 +1466,195 @@ export declare interface DataAppShellProps {
1240
1466
  userMenu?: React_2.ReactNode;
1241
1467
  /** Breadcrumb items from root to current page */
1242
1468
  breadcrumbs?: BreadcrumbItemConfig[];
1243
- /** Callback when the help button is clicked; omit to hide the button */
1244
- onHelpClick?: () => void;
1469
+ /** Slot rendered after the breadcrumbs in the top bar's left group
1470
+ * (e.g. a collapsed horizontal workflow's step dropdown) */
1471
+ headerLeft?: React_2.ReactNode;
1472
+ /** Center "context" slot in the top bar (e.g. a version / status selector) */
1473
+ headerCenter?: React_2.ReactNode;
1245
1474
  /** Slot for right-side actions in the top nav (e.g. data count pills, next button) */
1246
1475
  headerActions?: React_2.ReactNode;
1247
- /** Slot rendered between the icon rail and the content (e.g. WorkflowPanel) */
1476
+ /** Primary nav axis `vertical` (sidebar/rail, default) or `horizontal` (top nav row) */
1477
+ navVariant?: DataAppShellNavVariant;
1478
+ /**
1479
+ * Vertical primary nav presentation:
1480
+ * - `rail` (default) — permanent 48px icon-only rail.
1481
+ * - `sidebar` — collapsible 220px sidebar with labels; its brand-row chevron
1482
+ * collapses it to an icon rail (with an expand chevron under the logo),
1483
+ * driven by the shell's `collapsed` state.
1484
+ */
1485
+ primaryNav?: "rail" | "sidebar";
1486
+ /** Slot rendered between the primary nav and the content (e.g. a vertical `DataAppShellSecondaryNav`) */
1248
1487
  sidebarPanel?: React_2.ReactNode;
1249
- /** Show the desktop icon nav rail. Set false to reclaim width when the panel is collapsed. */
1488
+ /** Full-width zone between the top bar and the content row (e.g. a horizontal `DataAppShellSecondaryNav`) */
1489
+ secondaryBar?: React_2.ReactNode;
1490
+ /** Slot rendered after the content (e.g. a DataAppShellRightPanel) — its FAB anchors to the content row */
1491
+ rightPanel?: React_2.ReactNode;
1492
+ /** Show the primary nav zone. Set false to hide it entirely. */
1250
1493
  showNavRail?: boolean;
1494
+ /** Show the top bar zone. Set false to hide it entirely. */
1495
+ showTopBar?: boolean;
1496
+ /** Controlled collapse state — drives the secondary zone (via ShellContext)
1497
+ * and, with `hideNavOnCollapse`, the primary rail */
1498
+ collapsed?: boolean;
1499
+ /** Uncontrolled initial collapse state */
1500
+ defaultCollapsed?: boolean;
1501
+ /** Called whenever the shell collapse state flips */
1502
+ onCollapsedChange?: (collapsed: boolean) => void;
1503
+ /** Collapsing also hides the primary rail, leaving one icon rail (the secondary
1504
+ * nav) with an expand affordance — or a floating expand button if there is none. */
1505
+ hideNavOnCollapse?: boolean;
1506
+ /** Media query that auto-collapses the shell while it matches.
1507
+ * Pass `false` to disable. Defaults to `"(max-width: 1023px)"`. */
1508
+ autoCollapse?: string | false;
1251
1509
  /** Main content area */
1252
1510
  children: React_2.ReactNode;
1253
1511
  /** Additional className for the root container */
1254
1512
  className?: string;
1255
1513
  }
1256
1514
 
1515
+ /**
1516
+ * Right-hand panel for the Data App Shell (SW-2117), in two variants:
1517
+ *
1518
+ * - `docked` (default) — rendered in normal flow as a flex sibling of the main
1519
+ * content, so opening/resizing pushes main narrower. Width is drag-resizable
1520
+ * and persisted per `id`.
1521
+ * - `overlay` — reuses the design-system `Sheet` (`side="right"`): slides in
1522
+ * over the content with a scrim and does not reflow main.
1523
+ *
1524
+ * In both variants a floating FAB trigger re-opens the panel while it is
1525
+ * closed, and the body is a plain slot — a chat, history list, inspector, ….
1526
+ * Pass it to the shell's `rightPanel` slot, or place it after the main content
1527
+ * inside a `relative` flex row:
1528
+ *
1529
+ * ```tsx
1530
+ * <div className="relative flex flex-1 min-h-0">
1531
+ * <main className="flex-1 min-w-0">…</main>
1532
+ * <DataAppShellRightPanel id="chat" open={open} onOpenChange={setOpen} title="Chat">
1533
+ * …
1534
+ * </DataAppShellRightPanel>
1535
+ * </div>
1536
+ * ```
1537
+ */
1538
+ export declare function DataAppShellRightPanel({ id, open, onOpenChange, variant, resizable, defaultWidth, minWidth, maxWidth, persist, title, icon, headerActions, showTrigger, triggerIcon, triggerLabel, triggerRef, children, className, ref, ...props }: DataAppShellRightPanelProps): JSX.Element | null;
1539
+
1540
+ export declare interface DataAppShellRightPanelProps extends Omit<React_2.ComponentProps<"aside">, "id" | "title"> {
1541
+ /** Unique panel id — keys the persisted width in localStorage. */
1542
+ id: string;
1543
+ /** Whether the panel is shown or collapsed to the FAB trigger. */
1544
+ open: boolean;
1545
+ /** Called with the next open state (close button, Esc, scrim click, FAB). */
1546
+ onOpenChange?: (open: boolean) => void;
1547
+ /**
1548
+ * `docked` (default) — in-flow flex sibling: opening/resizing pushes main narrower.
1549
+ * `overlay` — reuses the design-system `Sheet`: slides in over content with a scrim, no reflow.
1550
+ */
1551
+ variant?: DataAppShellRightPanelVariant;
1552
+ /** Show the drag handle and allow resizing. Defaults to `true`. Docked only — the overlay has a fixed width. */
1553
+ resizable?: boolean;
1554
+ /** Width in px when nothing is persisted yet. */
1555
+ defaultWidth?: number;
1556
+ /** Minimum width in px the panel can be resized to. */
1557
+ minWidth?: number;
1558
+ /** Maximum width in px the panel can be resized to. */
1559
+ maxWidth?: number;
1560
+ /** Persist the width to localStorage. Defaults to `true`. */
1561
+ persist?: boolean;
1562
+ /** Header title. The header row also carries the close button. */
1563
+ title?: React_2.ReactNode;
1564
+ /** Optional element rendered before the title (e.g. an app icon). */
1565
+ icon?: React_2.ReactNode;
1566
+ /** Extra elements rendered in the header, before the close button. */
1567
+ headerActions?: React_2.ReactNode;
1568
+ /** Render the floating FAB trigger while closed. Defaults to `true`. Set
1569
+ * `false` when the trigger lives elsewhere (e.g. an `icon`-variant
1570
+ * `DataAppShellRightPanelTrigger` in the shell's `headerActions`). */
1571
+ showTrigger?: boolean;
1572
+ /** Icon inside the FAB trigger. Defaults to a panel-open icon. */
1573
+ triggerIcon?: React_2.ReactNode;
1574
+ /** Accessible label for the FAB trigger. */
1575
+ triggerLabel?: string;
1576
+ /** Ref to an external trigger (e.g. a top-bar icon trigger) that receives
1577
+ * focus when the panel closes and `showTrigger` is `false`. */
1578
+ triggerRef?: React_2.RefObject<HTMLButtonElement | null>;
1579
+ /** Panel content — any React node (a chat, history list, inspector, …). */
1580
+ children?: React_2.ReactNode;
1581
+ }
1582
+
1583
+ /**
1584
+ * Trigger for a `DataAppShellRightPanel`, in two variants:
1585
+ *
1586
+ * - `fab` (default) — floating action button; what the panel auto-renders
1587
+ * while closed. Positioned `absolute` — place inside a `relative` container
1588
+ * (normally the shell's content area).
1589
+ * - `icon` — ghost icon button sized like the shell's top-bar actions. Place
1590
+ * it in the shell's `headerActions`, set `showTrigger={false}` on the panel,
1591
+ * and pass the same ref to the panel's `triggerRef` so focus returns here
1592
+ * when the panel closes.
1593
+ *
1594
+ * With `asChild` the trigger renders no element of its own and instead merges
1595
+ * onto its child — any clickable element (a link, menu item, custom button)
1596
+ * can act as the trigger.
1597
+ */
1598
+ export declare function DataAppShellRightPanelTrigger({ className, variant, size, asChild, children, ...props }: DataAppShellRightPanelTriggerProps): JSX.Element;
1599
+
1600
+ export declare interface DataAppShellRightPanelTriggerProps extends React_2.ComponentProps<"button">, VariantProps<typeof dataAppShellRightPanelTriggerVariants> {
1601
+ /** Merge the trigger styling/props onto the child element instead of
1602
+ * rendering a `<button>` — makes anything clickable a panel trigger. */
1603
+ asChild?: boolean;
1604
+ }
1605
+
1606
+ export declare const dataAppShellRightPanelTriggerVariants: (props?: ({
1607
+ variant?: "icon" | "fab" | null | undefined;
1608
+ size?: "default" | "lg" | null | undefined;
1609
+ } & ClassProp) | undefined) => string;
1610
+
1611
+ export declare type DataAppShellRightPanelVariant = "docked" | "overlay";
1612
+
1613
+ /**
1614
+ * The Data App Shell's secondary (per-page/step) nav — one `steps` model
1615
+ * rendered on either axis via `orientation`:
1616
+ *
1617
+ * - **vertical** — collapsible left panel; collapses to an icon-only rail
1618
+ * with tooltips and a ▸ expand toggle
1619
+ * - **horizontal** — wizard/stepper row above the main content
1620
+ *
1621
+ * Step status (`done` / `active` / `todo`) is derived linearly from
1622
+ * `activeKey`, or set explicitly per step. Supports one level of nesting.
1623
+ */
1624
+ export declare function DataAppShellSecondaryNav({ orientation, steps, activeKey, onSelect, title, collapsible, collapsed, defaultCollapsed, onCollapsedChange, className, ...props }: DataAppShellSecondaryNavProps): JSX.Element;
1625
+
1626
+ export declare const dataAppShellSecondaryNavItemVariants: (props?: ({
1627
+ orientation?: "horizontal" | "vertical" | "rail" | null | undefined;
1628
+ status?: "done" | "active" | "todo" | null | undefined;
1629
+ } & ClassProp) | undefined) => string;
1630
+
1631
+ export declare type DataAppShellSecondaryNavOrientation = "vertical" | "horizontal";
1632
+
1633
+ export declare interface DataAppShellSecondaryNavProps extends Omit<React_2.ComponentProps<"nav">, "onSelect" | "title">, VariantProps<typeof dataAppShellSecondaryNavVariants> {
1634
+ /** Step entries; one level of nesting via `steps` on a step */
1635
+ steps: NavStep[];
1636
+ /** Controlled active step id — steps before it derive `done`, after it `todo` */
1637
+ activeKey?: string;
1638
+ /** Called with the selected step id after the step resolves as enabled */
1639
+ onSelect?: (key: string, step: NavStep) => void;
1640
+ /** Panel title shown in the vertical header (e.g. "Steps") */
1641
+ title?: React_2.ReactNode;
1642
+ /** Renders the collapse toggle. Vertical collapses to an icon rail;
1643
+ * horizontal collapses to a compact step dropdown. */
1644
+ collapsible?: boolean;
1645
+ /** Controlled collapsed state. When omitted inside a `DataAppShell`, the
1646
+ * shell's single collapse state drives it (one toggle for all zones). */
1647
+ collapsed?: boolean;
1648
+ /** Uncontrolled initial collapsed state */
1649
+ defaultCollapsed?: boolean;
1650
+ /** Called when the collapse toggle flips the state */
1651
+ onCollapsedChange?: (collapsed: boolean) => void;
1652
+ }
1653
+
1654
+ export declare const dataAppShellSecondaryNavVariants: (props?: ({
1655
+ orientation?: "horizontal" | "vertical" | null | undefined;
1656
+ } & ClassProp) | undefined) => string;
1657
+
1257
1658
  export declare function DataTable<TData, TValue>({ columns, data, toolbar, enableSorting, enableColumnVisibility, children, columnOrder: controlledColumnOrder, onColumnOrderChange, columnVisibility: controlledColumnVisibility, onColumnVisibilityChange, columnLabels: controlledColumnLabels, onColumnLabelChange, enablePagination, defaultPageSize, pagination: controlledPagination, onPaginationChange, enableColumnReorder, enableFiltering, filters: controlledFilters, onFiltersChange, filterConfig, manualFiltering, enableGrouping, grouping: controlledGrouping, onGroupingChange, groupConfig, density, className, variant, containerClassName, truncate, }: DataTableProps<TData, TValue>): JSX.Element;
1258
1659
 
1259
1660
  export declare function DataTableColumnToggle({ className }: DataTableColumnToggleProps): JSX.Element | null;
@@ -1328,6 +1729,28 @@ export declare interface DataTableProps<TData, TValue> {
1328
1729
  truncate?: boolean;
1329
1730
  }
1330
1731
 
1732
+ /**
1733
+ * Default category colors (cycle through these)
1734
+ */
1735
+ export declare const DEFAULT_CATEGORY_COLORS: readonly [string, string, string, string, string, string, string, string, string, string, string, string];
1736
+
1737
+ /**
1738
+ * Default color scale for continuous color mapping (CVD-friendly diverging ramp)
1739
+ */
1740
+ export declare const DEFAULT_COLOR_SCALE: Array<[number, string]>;
1741
+
1742
+ /**
1743
+ * Default sizes
1744
+ */
1745
+ export declare const DEFAULT_MARKER_SIZE = 8;
1746
+
1747
+ /**
1748
+ * Default downsampling configuration
1749
+ */
1750
+ export declare const DEFAULT_MAX_POINTS = 5000;
1751
+
1752
+ export declare const DEFAULT_SIZE_RANGE: [number, number];
1753
+
1331
1754
  export declare function Dialog({ ...props }: React_2.ComponentProps<typeof Dialog_2.Root>): JSX.Element;
1332
1755
 
1333
1756
  export declare function DialogBody({ className, ...props }: React_2.ComponentProps<"div">): JSX.Element;
@@ -1362,39 +1785,34 @@ declare type DismissibleProps = {
1362
1785
  onDismiss?: never;
1363
1786
  };
1364
1787
 
1365
- export declare const DotPlot: default_2.FC<DotPlotProps>;
1366
-
1367
- export declare interface DotPlotDataSeries {
1368
- x: number[];
1369
- y: number[];
1370
- name: string;
1371
- color?: string;
1372
- symbol?: MarkerSymbol_2;
1373
- size?: number;
1788
+ export declare interface DockPanels {
1789
+ /** Resizable group orientation for this dock. */
1790
+ orientation: "horizontal" | "vertical";
1791
+ /** Whether the assistant panel renders before the content panel. */
1792
+ assistantFirst: boolean;
1374
1793
  }
1375
1794
 
1376
- export declare type DotPlotProps = {
1377
- dataSeries: DotPlotDataSeries | DotPlotDataSeries[];
1378
- /**
1379
- * Fixed width in pixels. When omitted, the chart fills its container and
1380
- * tracks the container's width via a `ResizeObserver`.
1381
- */
1382
- width?: number;
1383
- /**
1384
- * Fixed height in pixels. When omitted, the chart fills its container and
1385
- * tracks the container's height via a `ResizeObserver`.
1386
- */
1387
- height?: number;
1388
- title?: string;
1389
- xTitle?: string;
1390
- yTitle?: string;
1391
- variant?: DotPlotVariant;
1392
- markerSize?: number;
1393
- };
1795
+ /**
1796
+ * Maps a dock position to the resizable group's orientation and panel order.
1797
+ * - left → horizontal, assistant first [assistant | content]
1798
+ * - right → horizontal, content first [content | assistant]
1799
+ * - bottom vertical, content first [content / assistant]
1800
+ */
1801
+ export declare function dockPanels(dock: AssistantDock): DockPanels;
1394
1802
 
1395
- export declare type DotPlotVariant = "default" | "stacked";
1803
+ /**
1804
+ * Downsampling configuration for performance optimization
1805
+ */
1806
+ export declare interface DownsamplingConfig {
1807
+ /** Enable downsampling */
1808
+ enabled: boolean;
1809
+ /** Target number of points to display */
1810
+ maxPoints?: number;
1811
+ /** Downsampling strategy */
1812
+ strategy?: "lttb";
1813
+ }
1396
1814
 
1397
- export declare function DropdownMenu({ ...props }: React_2.ComponentProps<typeof DropdownMenu_2.Root>): JSX.Element;
1815
+ export declare function DropdownMenu({ modal, ...props }: React_2.ComponentProps<typeof DropdownMenu_2.Root>): JSX.Element;
1398
1816
 
1399
1817
  export declare function DropdownMenuCheckboxItem({ className, children, checked, inset, ...props }: React_2.ComponentProps<typeof DropdownMenu_2.CheckboxItem> & {
1400
1818
  inset?: boolean;
@@ -1435,6 +1853,19 @@ export declare function DropdownMenuSubTrigger({ className, inset, children, ...
1435
1853
 
1436
1854
  export declare function DropdownMenuTrigger({ ...props }: React_2.ComponentProps<typeof DropdownMenu_2.Trigger>): JSX.Element;
1437
1855
 
1856
+ export declare const Electropherogram: default_2.FC<ElectropherogramProps>;
1857
+
1858
+ export declare interface ElectropherogramProps {
1859
+ data?: PeakData[];
1860
+ width?: number;
1861
+ height?: number;
1862
+ positionInterval?: number;
1863
+ colorA?: string;
1864
+ colorT?: string;
1865
+ colorG?: string;
1866
+ colorC?: string;
1867
+ }
1868
+
1438
1869
  export declare function EmptyState({ variant, title, description, icon, action, className, ...props }: EmptyStateProps): JSX.Element;
1439
1870
 
1440
1871
  export declare interface EmptyStateProps extends React_2.ComponentProps<"div"> {
@@ -1507,12 +1938,18 @@ export declare interface FormSectionProps extends React_2.ComponentProps<"div">
1507
1938
 
1508
1939
  export declare const getAttachmentLabel: (data: AttachmentData) => string;
1509
1940
 
1941
+ /** Derives up to two uppercase initials from a full name. */
1942
+ export declare function getInitials(name: string): string;
1943
+
1510
1944
  export declare const getMediaCategory: (data: AttachmentData) => AttachmentMediaCategory;
1511
1945
 
1512
1946
  export declare function getPlateMapScopedWellId(plateBarcode: string, wellId: WellId): WellId;
1513
1947
 
1514
1948
  export declare const getStatusBadge: (status: ToolPart["state"]) => JSX.Element;
1515
1949
 
1950
+ /** Canonical ids of every language the slim highlighter can load. */
1951
+ export declare function getSupportedCodeBlockLanguages(): string[];
1952
+
1516
1953
  /**
1517
1954
  * TDP Navigation Utilities
1518
1955
  *
@@ -1543,43 +1980,6 @@ export declare interface GroupColumnConfig {
1543
1980
  label?: string;
1544
1981
  }
1545
1982
 
1546
- export declare const Heatmap: default_2.FC<HeatmapProps>;
1547
-
1548
- /**
1549
- * Props for the Heatmap component
1550
- * @deprecated Use PlateMap component instead. Heatmap is now a wrapper around PlateMap for backward compatibility.
1551
- */
1552
- export declare interface HeatmapProps {
1553
- /** 2D array of numeric values */
1554
- data?: number[][];
1555
- /** Custom x-axis labels (column labels) */
1556
- xLabels?: string[] | number[];
1557
- /** Custom y-axis labels (row labels) */
1558
- yLabels?: string[] | number[];
1559
- /** Chart title */
1560
- title?: string;
1561
- /** X-axis title */
1562
- xTitle?: string;
1563
- /** Y-axis title */
1564
- yTitle?: string;
1565
- /** Color scale - string name or array of [position, color] pairs */
1566
- colorscale?: string | Array<[number, string]>;
1567
- /** Chart width in pixels */
1568
- width?: number;
1569
- /** Chart height in pixels */
1570
- height?: number;
1571
- /** Show color scale legend */
1572
- showScale?: boolean;
1573
- /** Number of decimal places for values */
1574
- precision?: number;
1575
- /** Minimum value for color scale */
1576
- zmin?: number;
1577
- /** Maximum value for color scale */
1578
- zmax?: number;
1579
- /** Value unit suffix */
1580
- valueUnit?: string;
1581
- }
1582
-
1583
1983
  export declare const highlightCode: (code: string, language: BundledLanguage, callback?: (result: TokenizedCode) => void) => TokenizedCode | null;
1584
1984
 
1585
1985
  export declare const Histogram: default_2.FC<HistogramProps>;
@@ -1727,7 +2127,7 @@ export declare function ItemDescription({ className, ...props }: React_2.Compone
1727
2127
 
1728
2128
  export declare function ItemFooter({ className, ...props }: React_2.ComponentProps<"div">): JSX.Element;
1729
2129
 
1730
- export declare function ItemGroup({ className, ...props }: React_2.ComponentProps<"div">): JSX.Element;
2130
+ export declare function ItemGroup({ className, children, ...props }: React_2.ComponentProps<"div">): JSX.Element;
1731
2131
 
1732
2132
  export declare function ItemHeader({ className, ...props }: React_2.ComponentProps<"div">): JSX.Element;
1733
2133
 
@@ -1752,6 +2152,10 @@ export declare function KbdGroup({ className, ...props }: React.ComponentProps<"
1752
2152
 
1753
2153
  export declare function Label({ className, ...props }: React_2.ComponentProps<typeof Label_2.Root>): JSX.Element;
1754
2154
 
2155
+ declare type LanguageLoader = () => Promise<{
2156
+ default: LanguageRegistration[];
2157
+ }>;
2158
+
1755
2159
  /**
1756
2160
  * Configuration for auto-generated layers when using WellData with `values`.
1757
2161
  *
@@ -1851,9 +2255,9 @@ export declare interface LineDataSeries {
1851
2255
  };
1852
2256
  }
1853
2257
 
1854
- export declare const LineGraph: default_2.FC<LineGraphProps>;
2258
+ export declare const LinePlot: default_2.FC<LinePlotProps>;
1855
2259
 
1856
- export declare type LineGraphProps = {
2260
+ export declare type LinePlotProps = {
1857
2261
  dataSeries: LineDataSeries[];
1858
2262
  /**
1859
2263
  * Fixed width in pixels. When omitted, the chart fills its container and
@@ -1867,7 +2271,7 @@ export declare type LineGraphProps = {
1867
2271
  height?: number;
1868
2272
  xRange?: [number, number];
1869
2273
  yRange?: [number, number];
1870
- variant?: LineGraphVariant;
2274
+ variant?: LinePlotVariant;
1871
2275
  xTitle?: string;
1872
2276
  yTitle?: string;
1873
2277
  title?: string;
@@ -1880,7 +2284,17 @@ export declare type LineGraphProps = {
1880
2284
  xTickText?: string[];
1881
2285
  };
1882
2286
 
1883
- export declare type LineGraphVariant = "lines" | "lines+markers" | "lines+markers+error_bars";
2287
+ export declare type LinePlotVariant = "lines" | "lines+markers" | "lines+markers+error_bars";
2288
+
2289
+ /**
2290
+ * Load and initialise the RDKit module, memoised so the WASM is fetched and
2291
+ * compiled only once per page. Safe to call from many components concurrently;
2292
+ * they all await the same promise.
2293
+ *
2294
+ * @throws if run outside a browser, if `@rdkit/rdkit` isn't installed, or if
2295
+ * the WASM cannot be loaded.
2296
+ */
2297
+ export declare function loadRDKit(): Promise<RDKitModule>;
1884
2298
 
1885
2299
  export declare const LocalReferencedSourcesContext: Context_2<ReferencedSourcesContext | null>;
1886
2300
 
@@ -1897,6 +2311,11 @@ export declare interface ManifestFilterPopoverProps {
1897
2311
  className?: string;
1898
2312
  }
1899
2313
 
2314
+ /**
2315
+ * Marker shape for scatter points
2316
+ */
2317
+ export declare type MarkerShape = "circle" | "square" | "diamond" | "cross" | "x" | "triangle-up" | "triangle-down" | "star";
2318
+
1900
2319
  export declare type MarkerSymbol = "circle" | "circle-open" | "circle-dot" | "circle-open-dot" | "square" | "square-open" | "square-dot" | "square-open-dot" | "diamond" | "diamond-open" | "diamond-dot" | "diamond-open-dot" | "cross" | "cross-open" | "cross-dot" | "cross-open-dot" | "x" | "x-open" | "x-dot" | "x-open-dot" | "triangle-up" | "triangle-up-open" | "triangle-up-dot" | "triangle-up-open-dot" | "triangle-down" | "triangle-down-open" | "triangle-down-dot" | "triangle-down-open-dot" | "triangle-left" | "triangle-left-open" | "triangle-left-dot" | "triangle-left-open-dot" | "triangle-right" | "triangle-right-open" | "triangle-right-dot" | "triangle-right-open-dot" | "triangle-ne" | "triangle-ne-open" | "triangle-ne-dot" | "triangle-ne-open-dot" | "triangle-se" | "triangle-se-open" | "triangle-se-dot" | "triangle-se-open-dot" | "triangle-sw" | "triangle-sw-open" | "triangle-sw-dot" | "triangle-sw-open-dot" | "triangle-nw" | "triangle-nw-open" | "triangle-nw-dot" | "triangle-nw-open-dot" | "pentagon" | "pentagon-open" | "pentagon-dot" | "pentagon-open-dot" | "hexagon" | "hexagon-open" | "hexagon-dot" | "hexagon-open-dot" | "hexagon2" | "hexagon2-open" | "hexagon2-dot" | "hexagon2-open-dot" | "octagon" | "octagon-open" | "octagon-dot" | "octagon-open-dot" | "star" | "star-open" | "star-dot" | "star-open-dot" | "hexagram" | "hexagram-open" | "hexagram-dot" | "hexagram-open-dot" | "star-triangle-up" | "star-triangle-up-open" | "star-triangle-up-dot" | "star-triangle-up-open-dot" | "star-triangle-down" | "star-triangle-down-open" | "star-triangle-down-dot" | "star-triangle-down-open-dot" | "star-square" | "star-square-open" | "star-square-dot" | "star-square-open-dot" | "star-diamond" | "star-diamond-open" | "star-diamond-dot" | "star-diamond-open-dot" | "diamond-tall" | "diamond-tall-open" | "diamond-tall-dot" | "diamond-tall-open-dot" | "diamond-wide" | "diamond-wide-open" | "diamond-wide-dot" | "diamond-wide-open-dot" | "hourglass" | "hourglass-open" | "bowtie" | "bowtie-open" | "circle-cross" | "circle-cross-open" | "circle-x" | "circle-x-open" | "square-cross" | "square-cross-open" | "square-x" | "square-x-open" | "diamond-cross" | "diamond-cross-open" | "diamond-x" | "diamond-x-open" | "cross-thin" | "cross-thin-open" | "x-thin" | "x-thin-open" | "asterisk" | "asterisk-open" | "hash" | "hash-open" | "hash-dot" | "hash-open-dot" | "y-up" | "y-up-open" | "y-down" | "y-down-open" | "y-left" | "y-left-open" | "y-right" | "y-right-open" | "line-ew" | "line-ew-open" | "line-ns" | "line-ns-open" | "line-ne" | "line-ne-open" | "line-nw" | "line-nw-open" | "arrow" | "arrow-open" | "arrow-wide" | "arrow-wide-open";
1901
2320
 
1902
2321
  declare type MarkerSymbol_2 = "circle" | "square" | "diamond" | "triangle-up" | "triangle-down" | "star";
@@ -2062,8 +2481,80 @@ export declare const ModelSelectorTrigger: (props: ModelSelectorTriggerProps) =>
2062
2481
 
2063
2482
  export declare type ModelSelectorTriggerProps = ComponentProps<typeof DialogTrigger>;
2064
2483
 
2484
+ /**
2485
+ * Core cheminformatics primitive: render a 2D chemical structure from a SMILES
2486
+ * string. RDKit's WASM module is loaded lazily on first mount (see
2487
+ * {@link loadRDKit}), so pages that never render a molecule pay nothing for it.
2488
+ *
2489
+ * The output is a vector SVG that fills this component's box — size it with
2490
+ * `className` (e.g. `className="size-32"`). Invalid SMILES render a fallback
2491
+ * rather than throwing.
2492
+ *
2493
+ * @example
2494
+ * ```tsx
2495
+ * <MoleculeStructure smiles="CC(=O)Oc1ccccc1C(=O)O" className="size-40" />
2496
+ * ```
2497
+ */
2498
+ export declare function MoleculeStructure({ smiles, label, dark, alt, drawOptions, loadingContent, errorContent, onError, className, ...props }: MoleculeStructureProps): JSX.Element;
2499
+
2500
+ export declare interface MoleculeStructureProps extends Omit<React_2.ComponentProps<"div">, "children" | "onError"> {
2501
+ /** SMILES string to render as a 2D structure. */
2502
+ smiles: string;
2503
+ /** Optional caption drawn beneath the structure by RDKit. */
2504
+ label?: string;
2505
+ /**
2506
+ * Force dark/light drawing colours. Defaults to following the active theme
2507
+ * (the `.dark` class on the document root).
2508
+ */
2509
+ dark?: boolean;
2510
+ /**
2511
+ * Accessible label for the structure. Defaults to the SMILES string.
2512
+ * Rendered as the SVG group's `aria-label` and the wrapper's title.
2513
+ */
2514
+ alt?: string;
2515
+ /**
2516
+ * Extra RDKit MolDraw2D options. Pass a stable (memoised or module-level)
2517
+ * reference — a new object each render re-parses the SMILES through RDKit.
2518
+ */
2519
+ drawOptions?: Record<string, unknown>;
2520
+ /** Rendered while the WASM module and structure are being prepared. */
2521
+ loadingContent?: React_2.ReactNode;
2522
+ /** Rendered when the SMILES is invalid or RDKit fails to load. */
2523
+ errorContent?: React_2.ReactNode;
2524
+ /** Called once when the SMILES cannot be parsed into a valid molecule. */
2525
+ onError?: (smiles: string) => void;
2526
+ }
2527
+
2528
+ /** Drawing options for {@link moleculeToSvg}. */
2529
+ export declare interface MoleculeSvgOptions {
2530
+ /** Rendered width in pixels. @default 250 */
2531
+ width?: number;
2532
+ /** Rendered height in pixels. @default 200 */
2533
+ height?: number;
2534
+ /** Lighten carbons/bonds so the structure is legible on dark surfaces. */
2535
+ dark?: boolean;
2536
+ /** Optional caption drawn beneath the structure by RDKit. */
2537
+ legend?: string;
2538
+ /**
2539
+ * Extra RDKit MolDraw2D options, merged last. See
2540
+ * https://www.rdkitjs.com/#drawing-molecules-all-options
2541
+ */
2542
+ drawOptions?: Record<string, unknown>;
2543
+ }
2544
+
2545
+ /**
2546
+ * Render a SMILES string to an SVG string using an initialised RDKit module.
2547
+ * Returns `null` when the SMILES cannot be parsed. Frees the underlying C++
2548
+ * molecule before returning, so callers never need to.
2549
+ *
2550
+ * Synchronous by design so it can feed render callbacks that must return a
2551
+ * string (e.g. the interactive scatter's `tooltip.content`) — load RDKit ahead
2552
+ * of time with {@link loadRDKit} or {@link useRDKit}, then call this.
2553
+ */
2554
+ export declare function moleculeToSvg(rdkit: RDKitModule, smiles: string, options?: MoleculeSvgOptions): string | null;
2555
+
2065
2556
  export declare interface NavGroup {
2066
- /** Optional group label shown as a section header in expanded nav */
2557
+ /** Optional group label shown as a section header in the `sidebar` variant */
2067
2558
  label?: string;
2068
2559
  /** Page entries in this group */
2069
2560
  pages: NavPage[];
@@ -2108,12 +2599,35 @@ export declare interface NavPage {
2108
2599
  label: string;
2109
2600
  /** Lucide icon or custom React SVG component */
2110
2601
  icon?: LucideIcon | React_2.FC<React_2.SVGProps<SVGSVGElement>>;
2111
- /** Whether this page is currently active */
2602
+ /** Optional count/status badge overlaid on the icon in `rail`, inline in `sidebar`/`top` */
2603
+ badge?: React_2.ReactNode;
2604
+ /** Whether this page is currently active (ignored when `activeKey` is set on the nav) */
2112
2605
  isActive?: boolean;
2113
2606
  /** Click handler */
2114
2607
  onClick?: () => void;
2115
2608
  }
2116
2609
 
2610
+ export declare interface NavStep {
2611
+ /** Unique identifier */
2612
+ id: string;
2613
+ /** Display label */
2614
+ label: string;
2615
+ /** Lucide icon or custom React SVG component */
2616
+ icon?: LucideIcon | React_2.FC<React_2.SVGProps<SVGSVGElement>>;
2617
+ /** Optional count/status badge */
2618
+ badge?: React_2.ReactNode;
2619
+ /** Explicit status — overrides the linear derivation from `activeKey` */
2620
+ status?: NavStepStatus;
2621
+ /** Disables the step */
2622
+ disabled?: boolean;
2623
+ /** Tooltip/title text explaining why the step is disabled */
2624
+ disabledReason?: string;
2625
+ /** One level of nesting — child steps rendered indented under this step */
2626
+ steps?: NavStep[];
2627
+ }
2628
+
2629
+ export declare type NavStepStatus = "done" | "active" | "todo";
2630
+
2117
2631
  export declare function parsePos(id: WellId, dims: PlateDimensions): {
2118
2632
  row: number;
2119
2633
  col: number;
@@ -2126,6 +2640,13 @@ export declare function parseRowLabel(label: string): number;
2126
2640
  * Used for both user-provided annotations and auto-detected peaks.
2127
2641
  */
2128
2642
  export declare interface PeakAnnotation {
2643
+ /**
2644
+ * Stable identifier used for selection (selectedPeakIds).
2645
+ * Auto-generated by the component if omitted:
2646
+ * - User annotations: "user-ann-{index}"
2647
+ * - Auto-detected peaks: "peak-{seriesIndex}-{peakIndex}"
2648
+ */
2649
+ id?: string;
2129
2650
  /** Retention time of the peak (x-axis position) */
2130
2651
  x: number;
2131
2652
  /** Signal intensity at peak (y-axis position) */
@@ -2144,6 +2665,23 @@ export declare interface PeakAnnotation {
2144
2665
  startMarker?: BoundaryMarkerType;
2145
2666
  /** Marker style for end boundary (default: "diamond") */
2146
2667
  endMarker?: BoundaryMarkerType;
2668
+ /**
2669
+ * Optional per-peak color override. When set, overrides the default
2670
+ * series-color / grey for the annotation label, arrow, border, and boundary markers.
2671
+ */
2672
+ color?: string;
2673
+ /**
2674
+ * When true, overlay a thickened line along the underlying trace between startX and endX.
2675
+ * Requires startX/endX. Uses peak.color if set, otherwise series color.
2676
+ */
2677
+ regionOverlay?: boolean;
2678
+ /** Line width for the region overlay (default: 3.5) */
2679
+ regionOverlayWidth?: number;
2680
+ /**
2681
+ * Plotly hovertemplate HTML string used by the region overlay and the invisible
2682
+ * hit-area marker for this peak. Falls back to a default summary when omitted.
2683
+ */
2684
+ hoverText?: string;
2147
2685
  /* Excluded from this release type: _computed */
2148
2686
  }
2149
2687
 
@@ -2172,6 +2710,48 @@ export declare interface PeakDetectionOptions {
2172
2710
  relativeThreshold?: boolean;
2173
2711
  }
2174
2712
 
2713
+ /**
2714
+ * Payload delivered to onPeakClick and onPeakHover callbacks.
2715
+ */
2716
+ export declare interface PeakSelectEvent {
2717
+ /** The resolved peak ID (matches id field on PeakAnnotation) */
2718
+ id: string;
2719
+ /** The annotation object for this peak */
2720
+ peak: PeakAnnotation;
2721
+ /** Index of the series this peak belongs to (0-based; -1 for legacy user annotations) */
2722
+ seriesIndex: number;
2723
+ /** Display name of the series */
2724
+ seriesName: string;
2725
+ /** True when the peak was found by automatic peak detection, false for user-provided annotations */
2726
+ isAutoDetected: boolean;
2727
+ }
2728
+
2729
+ /**
2730
+ * Visual overrides for the selected / unselected / hover states.
2731
+ * All fields are optional — defaults are applied for any omitted field.
2732
+ *
2733
+ * Defaults:
2734
+ * selected.borderColor "#3b82f6"
2735
+ * selected.backgroundColor "#dbeafe"
2736
+ * selected.bold true
2737
+ * unselected.opacity 0.4 (applied when any other peak is selected)
2738
+ * hoverLineWidthMultiplier 1.67 (1.5 px → ~2.5 px)
2739
+ */
2740
+ export declare interface PeakSelectionAppearance {
2741
+ selected?: {
2742
+ borderColor?: string;
2743
+ backgroundColor?: string;
2744
+ /** Wrap annotation text in <b> tags when selected */
2745
+ bold?: boolean;
2746
+ };
2747
+ unselected?: {
2748
+ /** Opacity of annotations whose peak is NOT selected while another peak IS selected (0–1) */
2749
+ opacity?: number;
2750
+ };
2751
+ /** Multiplier applied to the base line width (1.5 px) on peak hover */
2752
+ hoverLineWidthMultiplier?: number;
2753
+ }
2754
+
2175
2755
  export declare const PieChart: default_2.FC<PieChartProps>;
2176
2756
 
2177
2757
  export declare type PieChartProps = {
@@ -2769,6 +3349,24 @@ export declare interface PlateZoomControlProps {
2769
3349
  className?: string;
2770
3350
  }
2771
3351
 
3352
+ /**
3353
+ * Constants for plot layout
3354
+ */
3355
+ export declare const PLOT_CONSTANTS: {
3356
+ MARGIN_LEFT: number;
3357
+ MARGIN_RIGHT: number;
3358
+ MARGIN_TOP: number;
3359
+ MARGIN_BOTTOM: number;
3360
+ TITLE_FONT_SIZE: number;
3361
+ AXIS_TITLE_FONT_SIZE: number;
3362
+ AXIS_TICK_FONT_SIZE: number;
3363
+ LEGEND_FONT_SIZE: number;
3364
+ FONT_FAMILY: string;
3365
+ GRID_WIDTH: number;
3366
+ AXIS_LINE_WIDTH: number;
3367
+ AUTO_RANGE_PADDING: number;
3368
+ };
3369
+
2772
3370
  export declare function Popover({ ...props }: React_2.ComponentProps<typeof Popover_2.Root>): JSX.Element;
2773
3371
 
2774
3372
  export declare function PopoverAnchor({ ...props }: React_2.ComponentProps<typeof Popover_2.Anchor>): JSX.Element;
@@ -3179,6 +3777,61 @@ export declare function RadioGroup({ className, ...props }: React_2.ComponentPro
3179
3777
 
3180
3778
  export declare function RadioGroupItem({ className, ...props }: React_2.ComponentProps<typeof RadioGroup_2.Item>): JSX.Element;
3181
3779
 
3780
+ /**
3781
+ * Loader for the RDKit.js WebAssembly module.
3782
+ *
3783
+ * RDKit ships a ~6.6 MB `.wasm` blob, so it must never be part of the main
3784
+ * bundle. It is loaded lazily, once per page, the first time a molecule
3785
+ * actually needs rendering.
3786
+ *
3787
+ * **Air-gapped by default, no CDN.** The loader dynamically imports the
3788
+ * `@rdkit/rdkit` package the consumer has installed — nothing is fetched from a
3789
+ * public CDN. Molecule rendering is opt-in: `@rdkit/rdkit` is an optional
3790
+ * peer dependency, so a consumer that never renders a structure needn't install
3791
+ * it, and one that does simply adds it to their own dependencies.
3792
+ *
3793
+ * **Bundled apps should set `wasmSrc`.** Without it, RDKit resolves
3794
+ * `RDKit_minimal.wasm` relative to the glue script, which a bundler (Vite,
3795
+ * webpack, …) usually does not emit next to the output — so the fetch 404s at
3796
+ * runtime and the first molecule silently fails to load. Copy the WASM into a
3797
+ * served path (or resolve it via your bundler, e.g. Vite's `?url`) and pass it
3798
+ * to {@link configureRDKit} once at startup. Alternatively hand the loader a
3799
+ * module you initialised yourself (`instance`).
3800
+ *
3801
+ * @see https://www.rdkitjs.com
3802
+ */
3803
+ /** The `initRDKitModule` factory exported by `@rdkit/rdkit`. */
3804
+ declare type RDKitFactory = (options?: {
3805
+ locateFile?: () => string;
3806
+ print?: (msg: string) => void;
3807
+ printErr?: (msg: string) => void;
3808
+ }) => Promise<RDKitModule>;
3809
+
3810
+ /** Options controlling how the RDKit module is located and loaded. */
3811
+ export declare interface RDKitLoaderConfig {
3812
+ /**
3813
+ * URL of the `RDKit_minimal.wasm` binary, passed to RDKit as `locateFile`.
3814
+ * Set this when your bundler doesn't serve the WASM next to the glue script
3815
+ * (e.g. copy it into your app's public dir and point here). When omitted,
3816
+ * RDKit's own default resolution is used.
3817
+ */
3818
+ wasmSrc?: string;
3819
+ /**
3820
+ * A module already initialised by the consumer (e.g. shared with other parts
3821
+ * of the app). When provided, no import or network work is done.
3822
+ */
3823
+ instance?: RDKitModule;
3824
+ /**
3825
+ * Override how the `initRDKitModule` factory is obtained. Defaults to
3826
+ * `import("@rdkit/rdkit")`. Provide this only for unusual setups (custom
3827
+ * bundler resolution, a vendored copy, etc.).
3828
+ */
3829
+ importFactory?: () => Promise<RDKitFactory>;
3830
+ }
3831
+
3832
+ /** Lifecycle of the lazily-loaded RDKit module. */
3833
+ export declare type RDKitStatus = "loading" | "ready" | "error";
3834
+
3182
3835
  export declare const Reasoning: MemoExoticComponent<({ className, isStreaming, open, defaultOpen, onOpenChange, duration: durationProp, children, ...props }: ReasoningProps) => JSX.Element>;
3183
3836
 
3184
3837
  export declare const ReasoningContent: MemoExoticComponent<({ className, children, ...props }: ReasoningContentProps) => JSX.Element>;
@@ -3219,6 +3872,18 @@ export declare interface ReferencedSourcesContext {
3219
3872
  clear: () => void;
3220
3873
  }
3221
3874
 
3875
+ /**
3876
+ * Register an additional grammar for `CodeBlock`/`MessageResponse` code
3877
+ * highlighting, e.g.:
3878
+ *
3879
+ * ```ts
3880
+ * registerCodeBlockLanguage("rust", () => import("@shikijs/langs/rust"), ["rs"]);
3881
+ * ```
3882
+ *
3883
+ * The loader stays a dynamic import, so added grammars are also code-split.
3884
+ */
3885
+ export declare function registerCodeBlockLanguage(language: string, loader: LanguageLoader, aliases?: string[]): void;
3886
+
3222
3887
  /**
3223
3888
  * Resize handle between two panels.
3224
3889
  *
@@ -3272,24 +3937,141 @@ export declare interface RichListItemProps extends Omit<React_2.ComponentProps<t
3272
3937
  /** Letter for a row index. Supports A-Z then AA-ZZ for 1536-format plates. */
3273
3938
  export declare function rowLabel(row: number): string;
3274
3939
 
3275
- export declare interface ScatterDataPoint {
3276
- x: number;
3277
- y: number;
3278
- additionalInfo?: Record<string, string | number>;
3279
- }
3940
+ /**
3941
+ * Scale type for axes
3942
+ */
3943
+ export declare type ScaleType = "linear" | "log";
3280
3944
 
3281
- export declare interface ScatterDataSeries {
3945
+ export declare const ScatterPlot: default_2.FC<ScatterPlotProps>;
3946
+
3947
+ export declare interface ScatterPlotDataSeries {
3282
3948
  x: number[];
3283
3949
  y: number[];
3284
3950
  name: string;
3285
3951
  /** Optional color override (auto-assigned from CHART_COLORS if not provided) */
3286
3952
  color?: string;
3953
+ /** Optional marker symbol override (auto-assigned in the `stacked` variant) */
3954
+ symbol?: MarkerSymbol_2;
3955
+ /** Optional per-series marker size override (falls back to `markerSize`) */
3956
+ size?: number;
3287
3957
  }
3288
3958
 
3289
- export declare const ScatterGraph: default_2.FC<ScatterGraphProps>;
3959
+ /**
3960
+ * ScatterPlotInteractive component for visualizing scatter plot data with advanced interactions.
3961
+ *
3962
+ * **Features:**
3963
+ * - Data-driven and static styling (color, shape, size)
3964
+ * - Interactive selection (click, box, lasso)
3965
+ * - Keyboard modifiers for click-selection modes (Shift/Ctrl)
3966
+ * - Customizable tooltips with rich content support
3967
+ * - Axis customization (ranges, log/linear scales)
3968
+ * - Performance optimizations for large datasets
3969
+ * - Selection propagation via callbacks
3970
+ *
3971
+ * **Selection Modes (click selection only):**
3972
+ * - Default click: Replace selection
3973
+ * - Shift + click: Add to selection
3974
+ * - Ctrl/Cmd + click: Remove from selection
3975
+ * - Shift + Ctrl + click: Toggle selection
3976
+ *
3977
+ * Box/lasso selection always replaces the current selection because
3978
+ * Plotly does not expose the original keyboard event for drag operations.
3979
+ */
3980
+ export declare const ScatterPlotInteractive: default_2.FC<ScatterPlotInteractiveProps>;
3290
3981
 
3291
- export declare interface ScatterGraphProps {
3292
- dataSeries: ScatterDataSeries[];
3982
+ /**
3983
+ * Props for ScatterPlotInteractive component
3984
+ */
3985
+ export declare interface ScatterPlotInteractiveProps {
3986
+ /**
3987
+ * Array of data points to plot
3988
+ */
3989
+ data: ScatterPoint[];
3990
+ /**
3991
+ * Chart title
3992
+ */
3993
+ title?: string;
3994
+ /**
3995
+ * X-axis configuration
3996
+ */
3997
+ xAxis?: AxisConfig;
3998
+ /**
3999
+ * Y-axis configuration
4000
+ */
4001
+ yAxis?: AxisConfig;
4002
+ /**
4003
+ * Color mapping configuration
4004
+ */
4005
+ colorMapping?: ColorMapping;
4006
+ /**
4007
+ * Shape mapping configuration
4008
+ */
4009
+ shapeMapping?: ShapeMapping;
4010
+ /**
4011
+ * Size mapping configuration
4012
+ */
4013
+ sizeMapping?: SizeMapping;
4014
+ /**
4015
+ * Tooltip configuration
4016
+ */
4017
+ tooltip?: TooltipConfig;
4018
+ /**
4019
+ * Enable click selection
4020
+ * @default true
4021
+ */
4022
+ enableClickSelection?: boolean;
4023
+ /**
4024
+ * Enable box selection (drag to select rectangular region)
4025
+ * @default true
4026
+ */
4027
+ enableBoxSelection?: boolean;
4028
+ /**
4029
+ * Enable lasso selection (freeform selection)
4030
+ * @default true
4031
+ */
4032
+ enableLassoSelection?: boolean;
4033
+ /**
4034
+ * Controlled selection state.
4035
+ * If provided, component operates in controlled mode.
4036
+ */
4037
+ selectedIds?: Set<string | number>;
4038
+ /**
4039
+ * Callback when selection changes
4040
+ */
4041
+ onSelectionChange?: (selectedIds: Set<string | number>, mode: SelectionMode_2) => void;
4042
+ /**
4043
+ * Callback when a point is clicked
4044
+ */
4045
+ onPointClick?: (point: ScatterPoint, event: MouseEvent) => void;
4046
+ /**
4047
+ * Downsampling configuration for large datasets
4048
+ */
4049
+ downsampling?: DownsamplingConfig;
4050
+ /**
4051
+ * Chart width in pixels
4052
+ * @default 800
4053
+ */
4054
+ width?: number;
4055
+ /**
4056
+ * Chart height in pixels
4057
+ * @default 600
4058
+ */
4059
+ height?: number;
4060
+ /**
4061
+ * Show the continuous color-scale bar when using a continuous `colorMapping`.
4062
+ * Has no effect for categorical or static mappings.
4063
+ * @default true
4064
+ */
4065
+ showColorBar?: boolean;
4066
+ /**
4067
+ * Custom CSS class name
4068
+ */
4069
+ className?: string;
4070
+ }
4071
+
4072
+ export declare interface ScatterPlotProps {
4073
+ /** One or more data series to plot */
4074
+ dataSeries: ScatterPlotDataSeries | ScatterPlotDataSeries[];
3293
4075
  /**
3294
4076
  * Fixed width in pixels. When omitted, the chart fills its container and
3295
4077
  * tracks the container's width via a `ResizeObserver`.
@@ -3305,6 +4087,31 @@ export declare interface ScatterGraphProps {
3305
4087
  xTitle?: string;
3306
4088
  yTitle?: string;
3307
4089
  title?: string;
4090
+ /**
4091
+ * `default` renders every series as circles; `stacked` cycles through
4092
+ * distinct marker symbols per series so overlapping series stay legible.
4093
+ */
4094
+ variant?: ScatterPlotVariant;
4095
+ /** Default marker size in pixels (per-series `size` takes precedence) */
4096
+ markerSize?: number;
4097
+ }
4098
+
4099
+ export declare type ScatterPlotVariant = "default" | "stacked";
4100
+
4101
+ /**
4102
+ * A single data point in the scatter plot
4103
+ */
4104
+ export declare interface ScatterPoint {
4105
+ /** Unique identifier for the point */
4106
+ id: string | number;
4107
+ /** X-axis value */
4108
+ x: number;
4109
+ /** Y-axis value */
4110
+ y: number;
4111
+ /** Optional label for the point */
4112
+ label?: string;
4113
+ /** Additional metadata for tooltips and styling */
4114
+ metadata?: Record<string, unknown>;
3308
4115
  }
3309
4116
 
3310
4117
  export declare function ScrollArea({ className, children, ...props }: React_2.ComponentProps<typeof ScrollArea_2.Root>): JSX.Element;
@@ -3324,6 +4131,41 @@ export declare function SelectContent({ className, children, position, align, ..
3324
4131
 
3325
4132
  export declare function SelectGroup({ className, ...props }: React_2.ComponentProps<typeof Select_2.Group>): JSX.Element;
3326
4133
 
4134
+ /**
4135
+ * Selection mode keyboard modifiers
4136
+ */
4137
+ export declare const SELECTION_MODIFIERS: {
4138
+ readonly ADD: "shiftKey";
4139
+ readonly REMOVE: "ctrlKey";
4140
+ readonly TOGGLE: "both";
4141
+ };
4142
+
4143
+ /**
4144
+ * Data format for selection propagation between components
4145
+ */
4146
+ export declare interface SelectionEvent {
4147
+ /** Array of selected point IDs */
4148
+ selectedIds: Set<string | number>;
4149
+ /** Selection mode used */
4150
+ mode: SelectionMode_2;
4151
+ /** Source component identifier (optional) */
4152
+ source?: string;
4153
+ }
4154
+
4155
+ /**
4156
+ * Selection mode for interactive selection
4157
+ */
4158
+ declare type SelectionMode_2 = "replace" | "add" | "remove" | "toggle";
4159
+ export { SelectionMode_2 as SelectionMode }
4160
+
4161
+ /**
4162
+ * Selection state
4163
+ */
4164
+ export declare interface SelectionState {
4165
+ /** Array of selected point IDs */
4166
+ selectedIds: Set<string | number>;
4167
+ }
4168
+
3327
4169
  export declare function SelectItem({ className, children, ...props }: React_2.ComponentProps<typeof Select_2.Item>): JSX.Element;
3328
4170
 
3329
4171
  export declare function SelectLabel({ className, ...props }: React_2.ComponentProps<typeof Select_2.Label>): JSX.Element;
@@ -3352,6 +4194,20 @@ export declare function Separator({ className, orientation, decorative, ...props
3352
4194
  */
3353
4195
  export declare const seriesColor: (index: number, explicit?: string | null) => string;
3354
4196
 
4197
+ /**
4198
+ * Shape mapping configuration
4199
+ */
4200
+ export declare interface ShapeMapping {
4201
+ /** Type of mapping: data-driven or static */
4202
+ type: "static" | "categorical";
4203
+ /** Static shape value (for type: "static") */
4204
+ value?: MarkerShape;
4205
+ /** Data field to map (for type: "categorical") */
4206
+ field?: string;
4207
+ /** Shape mapping for categorical values */
4208
+ categoryShapes?: Record<string, MarkerShape>;
4209
+ }
4210
+
3355
4211
  export declare function Sheet({ ...props }: React_2.ComponentProps<typeof Dialog_2.Root>): JSX.Element;
3356
4212
 
3357
4213
  export declare function SheetClose({ ...props }: React_2.ComponentProps<typeof Dialog_2.Close>): JSX.Element;
@@ -3371,6 +4227,22 @@ export declare function SheetTitle({ className, ...props }: React_2.ComponentPro
3371
4227
 
3372
4228
  export declare function SheetTrigger({ ...props }: React_2.ComponentProps<typeof Dialog_2.Trigger>): JSX.Element;
3373
4229
 
4230
+ /**
4231
+ * The shell's shared collapse/expand affordance — a small outlined square with
4232
+ * a chevron, placed in a zone's header row when expanded and at the top of the
4233
+ * collapsed rail. One component so every zone's trigger looks identical.
4234
+ */
4235
+ export declare function ShellCollapseButton({ direction, label, tooltipSide, className, ...props }: ShellCollapseButtonProps): JSX.Element;
4236
+
4237
+ export declare interface ShellCollapseButtonProps extends Omit<React_2.ComponentProps<typeof Button>, "children"> {
4238
+ /** Chevron direction the button points at. */
4239
+ direction: keyof typeof CHEVRONS;
4240
+ /** Accessible name + tooltip text (e.g. "Collapse navigation"). */
4241
+ label: string;
4242
+ /** Tooltip side. Defaults to `right` (rail/sidebar placements). */
4243
+ tooltipSide?: "top" | "right" | "bottom" | "left";
4244
+ }
4245
+
3374
4246
  export declare const Shimmer: MemoExoticComponent<({ children, as: Component, className, duration, spread, gradient, }: TextShimmerProps) => JSX.Element>;
3375
4247
 
3376
4248
  export declare function Sidebar({ side, variant, collapsible, className, children, dir, ...props }: React_2.ComponentProps<"div"> & {
@@ -3459,6 +4331,25 @@ export declare function SidebarSeparator({ className, ...props }: React_2.Compon
3459
4331
 
3460
4332
  export declare function SidebarTrigger({ className, onClick, ...props }: React_2.ComponentProps<typeof Button>): JSX.Element;
3461
4333
 
4334
+ /**
4335
+ * Size mapping configuration
4336
+ */
4337
+ export declare interface SizeMapping {
4338
+ /** Type of mapping: data-driven or static */
4339
+ type: "static" | "continuous" | "categorical";
4340
+ /** Static size value (for type: "static") */
4341
+ value?: number;
4342
+ /** Data field to map (for type: "continuous" | "categorical") */
4343
+ field?: string;
4344
+ /** Size range for continuous mapping */
4345
+ sizeRange?: [number, number];
4346
+ /** Discrete sizes for categorical mapping */
4347
+ categorySizes?: Record<string, number>;
4348
+ /** Min/max values for continuous mapping (auto-calculated if not provided) */
4349
+ min?: number;
4350
+ max?: number;
4351
+ }
4352
+
3462
4353
  export declare function Skeleton({ className, ...props }: React.ComponentProps<"div">): JSX.Element;
3463
4354
 
3464
4355
  export declare function Slider({ className, defaultValue, value, min, max, ...props }: React_2.ComponentProps<typeof Slider_2.Root>): JSX.Element;
@@ -3501,6 +4392,35 @@ export declare const spinnerVariants: (props?: ({
3501
4392
  size?: "default" | "sm" | "lg" | "md" | null | undefined;
3502
4393
  } & ClassProp) | undefined) => string;
3503
4394
 
4395
+ export declare function StackedChromatogram({ series, stackingMode, stackOffset, stackingOrder, annotations, ...restProps }: StackedChromatogramProps): JSX.Element;
4396
+
4397
+ export declare interface StackedChromatogramProps extends Omit<ChromatogramProps, "series" | "annotations" | "yRange"> {
4398
+ /** Array of data series to display */
4399
+ series: ChromatogramSeries[];
4400
+ /** Stacking mode: 'overlay' (default) or 'stack' */
4401
+ stackingMode?: StackingMode;
4402
+ /**
4403
+ * Y-offset between stacked series in data units (e.g., AU).
4404
+ * Only applies in 'stack' mode; ignored in 'overlay'.
4405
+ */
4406
+ stackOffset?: number;
4407
+ /**
4408
+ * Peak annotations per series, parallel to the series array.
4409
+ * annotations[i] corresponds to series[i].
4410
+ * In stack mode, y values are shifted by the series offset.
4411
+ */
4412
+ annotations?: PeakAnnotation[][];
4413
+ /**
4414
+ * Controls which end of the stack series[0] lands on (stack mode only).
4415
+ * - "first-on-bottom" (default) — series[0] sits at the base; series[N-1] is highest.
4416
+ * - "first-on-top" — series[0] is shifted to the top; series[N-1] is at the base.
4417
+ * Annotations follow the chosen direction.
4418
+ */
4419
+ stackingOrder?: "first-on-bottom" | "first-on-top";
4420
+ }
4421
+
4422
+ export declare type StackingMode = "overlay" | "stack";
4423
+
3504
4424
  export declare function StatCard({ label, value, delta, deltaLabel, trend, description, className, ...props }: StatCardProps): JSX.Element;
3505
4425
 
3506
4426
  export declare interface StatCardProps extends React_2.ComponentProps<"div"> {
@@ -3514,12 +4434,21 @@ export declare interface StatCardProps extends React_2.ComponentProps<"div"> {
3514
4434
 
3515
4435
  export declare type StatCardTrend = "up" | "down" | "neutral";
3516
4436
 
3517
- /** Built-in Lucide spinner icons that pair well with ts-spin-pulse animation. */
4437
+ /**
4438
+ * Built-in spinner icons.
4439
+ *
4440
+ * The Lucide spinners pair with the flat `ts-spin-pulse` animation; the
4441
+ * `tetra` variant is the Tetra-branded "TetraSpin" — the official TetraScience
4442
+ * molecule logo filled with the brand blue gradient, rotating 360° with the
4443
+ * gradient held fixed so its nodes shimmer, echoing the `:tetraspin3d:` gif for
4444
+ * a sense of brand identity while an agent is thinking.
4445
+ */
3518
4446
  export declare const STREAM_STATUS_ICONS: {
3519
4447
  readonly loader: JSX.Element;
3520
4448
  readonly "loader-circle": JSX.Element;
3521
4449
  readonly "loader-pinwheel": JSX.Element;
3522
4450
  readonly "disc-3": JSX.Element;
4451
+ readonly tetra: JSX.Element;
3523
4452
  };
3524
4453
 
3525
4454
  export declare const StreamStatus: MemoExoticComponent<({ startTime, isStreaming, state: stateProp, showIndicator, tokenCount, tokenLabel, icon, iconVariant, className, }: StreamStatusProps) => JSX.Element>;
@@ -3562,10 +4491,12 @@ export declare interface StreamStatusProps {
3562
4491
  */
3563
4492
  icon?: ReactNode;
3564
4493
  /**
3565
- * Convenience shorthand to pick a built-in Lucide spinner.
3566
- * Ignored when `icon` is also provided.
4494
+ * Convenience shorthand to pick a built-in spinner.
4495
+ * Ignored when `icon` is also provided. Defaults to `"tetra"`.
3567
4496
  *
3568
- * Options: `"loader"` | `"loader-circle"` | `"loader-pinwheel"` | `"disc-3"`
4497
+ * Options: `"loader"` | `"loader-circle"` | `"loader-pinwheel"` | `"disc-3"` | `"tetra"`.
4498
+ * The default `"tetra"` variant renders the official TetraScience molecule
4499
+ * logo with a fixed brand-blue gradient. Pass `icon={null}` to render no icon.
3569
4500
  */
3570
4501
  iconVariant?: StreamStatusIconVariant;
3571
4502
  className?: string;
@@ -3878,6 +4809,16 @@ export declare interface TemplateOption {
3878
4809
  disabled?: boolean;
3879
4810
  }
3880
4811
 
4812
+ /**
4813
+ * The official TetraScience "molecule" brand mark — the four-node symbol from
4814
+ * the TetraScience logo, filled with the brand blue gradient.
4815
+ */
4816
+ export declare const TetraMoleculeIcon: React_2.ForwardRefExoticComponent<Omit<TetraMoleculeIconProps, "ref"> & React_2.RefAttributes<SVGSVGElement>>;
4817
+
4818
+ export declare interface TetraMoleculeIconProps extends React_2.SVGProps<SVGSVGElement> {
4819
+ size?: number | string;
4820
+ }
4821
+
3881
4822
  export declare const TetraScienceIcon: React_2.ForwardRefExoticComponent<Omit<TetraScienceIconProps, "ref"> & React_2.RefAttributes<SVGSVGElement>>;
3882
4823
 
3883
4824
  export declare interface TetraScienceIconProps extends React_2.SVGProps<SVGSVGElement> {
@@ -3970,6 +4911,24 @@ export declare type ToolProps = ComponentProps<typeof Collapsible> & {
3970
4911
 
3971
4912
  export declare function Tooltip({ ...props }: React_2.ComponentProps<typeof Tooltip_2.Root>): JSX.Element;
3972
4913
 
4914
+ /**
4915
+ * Tooltip configuration
4916
+ */
4917
+ export declare interface TooltipConfig {
4918
+ /** Enable/disable tooltips */
4919
+ enabled?: boolean;
4920
+ /** Custom tooltip content function. Lines are separated with `<br>`. */
4921
+ content?: (point: ScatterPoint) => string;
4922
+ /** Fields to display in default tooltip */
4923
+ fields?: string[];
4924
+ /**
4925
+ * Use Plotly's built-in hover labels instead of the theme-styled
4926
+ * HTML tooltip rendered by the component.
4927
+ * @default false
4928
+ */
4929
+ native?: boolean;
4930
+ }
4931
+
3973
4932
  export declare function TooltipContent({ className, sideOffset, children, ...props }: React_2.ComponentProps<typeof Tooltip_2.Content>): JSX.Element;
3974
4933
 
3975
4934
  export declare function TooltipProvider({ delayDuration, ...props }: React_2.ComponentProps<typeof Tooltip_2.Provider>): JSX.Element;
@@ -3994,12 +4953,43 @@ declare type ToolUIPartApproval = {
3994
4953
  reason?: string;
3995
4954
  } | undefined;
3996
4955
 
4956
+ /**
4957
+ * Sticky application header with three slots — left / center / right.
4958
+ *
4959
+ * - **left** is typically a breadcrumb, but any node can be slotted in.
4960
+ * - **center** is an optional "context" slot (e.g. a version/status selector).
4961
+ * - **right** holds actions, a help affordance, a `UserMenu`, etc.
4962
+ */
4963
+ export declare function TopBar({ left, center, right, sticky, className, ...props }: TopBarProps): JSX.Element;
4964
+
4965
+ export declare interface TopBarProps extends Omit<React_2.ComponentProps<"div">, "children">, VariantProps<typeof topBarVariants> {
4966
+ /** Left slot — typically a breadcrumb. */
4967
+ left?: React_2.ReactNode;
4968
+ /**
4969
+ * Center "context" slot — e.g. a version/status selector. Only rendered when
4970
+ * provided; keeps the left/right columns balanced when present.
4971
+ */
4972
+ center?: React_2.ReactNode;
4973
+ /** Right slot — actions, help, user menu, etc. */
4974
+ right?: React_2.ReactNode;
4975
+ }
4976
+
4977
+ export declare const topBarVariants: (props?: ({
4978
+ sticky?: boolean | null | undefined;
4979
+ } & ClassProp) | undefined) => string;
4980
+
3997
4981
  /**
3998
4982
  * Convert a color ramp (e.g. `CHART_SEQUENTIAL.blue`, `CHART_DIVERGING.blueOrange`)
3999
4983
  * into Plotly's colorscale format: evenly spaced [position, color] stops.
4000
4984
  */
4001
4985
  export declare const toPlotlyColorscale: (ramp: readonly string[]) => Array<[number, string]>;
4002
4986
 
4987
+ declare interface TransformResult {
4988
+ series: ChromatogramSeries[];
4989
+ annotations: PeakAnnotation[];
4990
+ yRange: [number, number];
4991
+ }
4992
+
4003
4993
  export declare function triagePlateMapCsvByBarcode(text: string, options?: PlateMapCsvTriageOptions): PlateMapCsvTriage;
4004
4994
 
4005
4995
  export declare function triagePlateMapCsvFile(file: File, options?: PlateMapCsvTriageOptions): Promise<PlateMapCsvTriage | undefined>;
@@ -4007,6 +4997,8 @@ export declare function triagePlateMapCsvFile(file: File, options?: PlateMapCsvT
4007
4997
  /** TetraScience brand gradient — Light Blue 300 → Purple 500 → Violet Marble */
4008
4998
  export declare const TS_SHIMMER_GRADIENT = "linear-gradient(90deg, #549DFF, #8243BA, #9665F4)";
4009
4999
 
5000
+ export declare function useAssistantLayout(): AssistantLayoutContextValue;
5001
+
4010
5002
  export declare const useAttachmentContext: () => AttachmentContextValue;
4011
5003
 
4012
5004
  export declare const useAttachmentsContext: () => AttachmentsContextValue;
@@ -4058,8 +5050,14 @@ export declare interface UseChartTooltipOptions {
4058
5050
 
4059
5051
  export declare function useComboboxAnchor(): React_2.RefObject<HTMLDivElement | null>;
4060
5052
 
5053
+ /** Shell layout state; throws outside a `DataAppShell`. */
5054
+ export declare function useDataAppShell(): DataAppShellContextValue;
5055
+
4061
5056
  export declare function useDataTable<TData = unknown>(): TableContextValue<TData>;
4062
5057
 
5058
+ /** Shell layout state, or `null` when rendered outside a `DataAppShell`. */
5059
+ export declare function useOptionalDataAppShell(): DataAppShellContextValue | null;
5060
+
4063
5061
  export declare const usePromptInputAttachments: () => AttachmentsContext;
4064
5062
 
4065
5063
  export declare const usePromptInputController: () => PromptInputControllerProps;
@@ -4068,8 +5066,88 @@ export declare const usePromptInputReferencedSources: () => ReferencedSourcesCon
4068
5066
 
4069
5067
  export declare const useProviderAttachments: () => AttachmentsContext;
4070
5068
 
5069
+ /**
5070
+ * Lazily load the RDKit WASM module and track its status. The module is a
5071
+ * page-wide singleton, so mounting many molecule components triggers only one
5072
+ * download.
5073
+ *
5074
+ * Use this when you need RDKit available synchronously inside a callback — for
5075
+ * example feeding the interactive scatter's `tooltip.content`, which must
5076
+ * return a string. For a single structure, prefer the `MoleculeStructure`
5077
+ * component, which wraps this hook.
5078
+ *
5079
+ * @example
5080
+ * ```tsx
5081
+ * const { rdkit, status } = useRDKit()
5082
+ * // ...
5083
+ * content: (point) =>
5084
+ * rdkit ? moleculeToSvg(rdkit, point.meta.smiles) ?? "" : "Loading…"
5085
+ * ```
5086
+ */
5087
+ export declare function useRDKit(): UseRDKitResult;
5088
+
5089
+ export declare interface UseRDKitResult {
5090
+ /** The initialised module, or `null` until it is ready. */
5091
+ rdkit: RDKitModule | null;
5092
+ status: RDKitStatus;
5093
+ /** The load failure, if `status` is `"error"`. */
5094
+ error: Error | null;
5095
+ }
5096
+
4071
5097
  export declare const useReasoning: () => ReasoningContextValue;
4072
5098
 
5099
+ /**
5100
+ * User account affordance — an avatar (initials or image) that opens a dropdown
5101
+ * menu. A composition over the `Avatar` + `DropdownMenu` primitives.
5102
+ *
5103
+ * Focus trap, keyboard navigation, and Esc-to-close are handled by the
5104
+ * underlying Radix `DropdownMenu`.
5105
+ */
5106
+ export declare function UserMenu({ name, subtitle, avatarSrc, initials, groups, variant, side, align, className, }: UserMenuProps): JSX.Element;
5107
+
5108
+ export declare interface UserMenuGroup {
5109
+ /** Items in this group; groups are separated by a divider */
5110
+ items: UserMenuItem[];
5111
+ }
5112
+
5113
+ export declare interface UserMenuItem {
5114
+ /** Unique identifier */
5115
+ id: string;
5116
+ /** Display label */
5117
+ label: string;
5118
+ /** Optional leading icon */
5119
+ icon?: LucideIcon | React_2.FC<React_2.SVGProps<SVGSVGElement>>;
5120
+ /** Click handler */
5121
+ onClick?: () => void;
5122
+ /** Disables the item */
5123
+ disabled?: boolean;
5124
+ /** Visual variant — `destructive` for sign-out / delete actions */
5125
+ variant?: "default" | "destructive";
5126
+ }
5127
+
5128
+ export declare interface UserMenuProps extends VariantProps<typeof userMenuTriggerVariants> {
5129
+ /** User's full name — used for the menu header and derived initials */
5130
+ name: string;
5131
+ /** Secondary line shown under the name (e.g. email or role) */
5132
+ subtitle?: string;
5133
+ /** Avatar image URL; falls back to initials when absent or on load error */
5134
+ avatarSrc?: string;
5135
+ /** Explicit initials override; otherwise derived from `name` */
5136
+ initials?: string;
5137
+ /** Menu item groups; each group is separated by a divider */
5138
+ groups?: UserMenuGroup[];
5139
+ /** Which side of the trigger the dropdown opens on */
5140
+ side?: "top" | "right" | "bottom" | "left";
5141
+ /** Alignment of the dropdown relative to the trigger */
5142
+ align?: "start" | "center" | "end";
5143
+ /** Additional className for the trigger button */
5144
+ className?: string;
5145
+ }
5146
+
5147
+ export declare const userMenuTriggerVariants: (props?: ({
5148
+ variant?: "avatar" | "detailed" | null | undefined;
5149
+ } & ClassProp) | undefined) => string;
5150
+
4073
5151
  export declare function useSearch(config: UseSearchConfig): UseSearchResult;
4074
5152
 
4075
5153
  export declare type UseSearchConfig = {