@tetrascience-npm/tetrascience-react-ui 0.7.0-beta.129.1 → 0.7.0-beta.131.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 (1042) hide show
  1. package/README.md +49 -0
  2. package/dist/ai/attachments.cjs +2 -0
  3. package/dist/ai/attachments.cjs.map +1 -0
  4. package/dist/ai/attachments.js +224 -0
  5. package/dist/ai/attachments.js.map +1 -0
  6. package/dist/ai/chain-of-thought.cjs +2 -0
  7. package/dist/ai/chain-of-thought.cjs.map +1 -0
  8. package/dist/ai/chain-of-thought.js +145 -0
  9. package/dist/ai/chain-of-thought.js.map +1 -0
  10. package/dist/ai/confirmation.cjs +2 -0
  11. package/dist/ai/confirmation.cjs.map +1 -0
  12. package/dist/ai/confirmation.js +109 -0
  13. package/dist/ai/confirmation.js.map +1 -0
  14. package/dist/ai/context.cjs +2 -0
  15. package/dist/ai/context.cjs.map +1 -0
  16. package/dist/ai/context.js +267 -0
  17. package/dist/ai/context.js.map +1 -0
  18. package/dist/ai/conversation.cjs +4 -0
  19. package/dist/ai/conversation.cjs.map +1 -0
  20. package/dist/ai/conversation.js +108 -0
  21. package/dist/ai/conversation.js.map +1 -0
  22. package/dist/ai/inline-citation.cjs +2 -0
  23. package/dist/ai/inline-citation.cjs.map +1 -0
  24. package/dist/ai/inline-citation.js +182 -0
  25. package/dist/ai/inline-citation.js.map +1 -0
  26. package/dist/ai/message.cjs +2 -0
  27. package/dist/ai/message.cjs.map +1 -0
  28. package/dist/ai/message.js +237 -0
  29. package/dist/ai/message.js.map +1 -0
  30. package/dist/ai/model-selector.cjs +2 -0
  31. package/dist/ai/model-selector.cjs.map +1 -0
  32. package/dist/ai/model-selector.js +77 -0
  33. package/dist/ai/model-selector.js.map +1 -0
  34. package/dist/ai/prompt-input.cjs +2 -0
  35. package/dist/ai/prompt-input.cjs.map +1 -0
  36. package/dist/ai/prompt-input.js +776 -0
  37. package/dist/ai/prompt-input.js.map +1 -0
  38. package/dist/ai/queue.cjs +2 -0
  39. package/dist/ai/queue.cjs.map +1 -0
  40. package/dist/ai/queue.js +209 -0
  41. package/dist/ai/queue.js.map +1 -0
  42. package/dist/ai/reasoning.cjs +2 -0
  43. package/dist/ai/reasoning.cjs.map +1 -0
  44. package/dist/ai/reasoning.js +129 -0
  45. package/dist/ai/reasoning.js.map +1 -0
  46. package/dist/ai/shimmer.cjs +2 -0
  47. package/dist/ai/shimmer.cjs.map +1 -0
  48. package/dist/ai/shimmer.js +49 -0
  49. package/dist/ai/shimmer.js.map +1 -0
  50. package/dist/ai/sources.cjs +2 -0
  51. package/dist/ai/sources.cjs.map +1 -0
  52. package/dist/ai/sources.js +54 -0
  53. package/dist/ai/sources.js.map +1 -0
  54. package/dist/ai/speech-input.cjs +2 -0
  55. package/dist/ai/speech-input.cjs.map +1 -0
  56. package/dist/ai/speech-input.js +123 -0
  57. package/dist/ai/speech-input.js.map +1 -0
  58. package/dist/ai/stream-status.cjs +2 -0
  59. package/dist/ai/stream-status.cjs.map +1 -0
  60. package/dist/ai/stream-status.js +108 -0
  61. package/dist/ai/stream-status.js.map +1 -0
  62. package/dist/ai/suggestion.cjs +2 -0
  63. package/dist/ai/suggestion.cjs.map +1 -0
  64. package/dist/ai/suggestion.js +38 -0
  65. package/dist/ai/suggestion.js.map +1 -0
  66. package/dist/ai/task.cjs +2 -0
  67. package/dist/ai/task.cjs.map +1 -0
  68. package/dist/ai/task.js +101 -0
  69. package/dist/ai/task.js.map +1 -0
  70. package/dist/ai/tool.cjs +2 -0
  71. package/dist/ai/tool.cjs.map +1 -0
  72. package/dist/ai/tool.js +139 -0
  73. package/dist/ai/tool.js.map +1 -0
  74. package/dist/charts/AreaPlot.cjs +2 -0
  75. package/dist/charts/AreaPlot.cjs.map +1 -0
  76. package/dist/charts/AreaPlot.js +5 -0
  77. package/dist/charts/AreaPlot.js.map +1 -0
  78. package/dist/charts/BarChart.cjs +2 -0
  79. package/dist/charts/BarChart.cjs.map +1 -0
  80. package/dist/charts/BarChart.js +5 -0
  81. package/dist/charts/BarChart.js.map +1 -0
  82. package/dist/charts/BoxPlot.cjs +2 -0
  83. package/dist/charts/BoxPlot.cjs.map +1 -0
  84. package/dist/charts/BoxPlot.js +5 -0
  85. package/dist/charts/BoxPlot.js.map +1 -0
  86. package/dist/charts/ChartTooltip.cjs +2 -0
  87. package/dist/charts/ChartTooltip.cjs.map +1 -0
  88. package/dist/charts/ChartTooltip.js +8 -0
  89. package/dist/charts/ChartTooltip.js.map +1 -0
  90. package/dist/charts/Chromatogram.cjs +2 -0
  91. package/dist/charts/Chromatogram.cjs.map +1 -0
  92. package/dist/charts/Chromatogram.js +5 -0
  93. package/dist/charts/Chromatogram.js.map +1 -0
  94. package/dist/charts/Electropherogram.cjs +2 -0
  95. package/dist/charts/Electropherogram.cjs.map +1 -0
  96. package/dist/charts/Electropherogram.js +5 -0
  97. package/dist/charts/Electropherogram.js.map +1 -0
  98. package/dist/charts/Histogram.cjs +2 -0
  99. package/dist/charts/Histogram.cjs.map +1 -0
  100. package/dist/charts/Histogram.js +5 -0
  101. package/dist/charts/Histogram.js.map +1 -0
  102. package/dist/charts/LinePlot.cjs +2 -0
  103. package/dist/charts/LinePlot.cjs.map +1 -0
  104. package/dist/charts/LinePlot.js +5 -0
  105. package/dist/charts/LinePlot.js.map +1 -0
  106. package/dist/charts/PieChart.cjs +2 -0
  107. package/dist/charts/PieChart.cjs.map +1 -0
  108. package/dist/charts/PieChart.js +5 -0
  109. package/dist/charts/PieChart.js.map +1 -0
  110. package/dist/charts/PlateMap.cjs +2 -0
  111. package/dist/charts/PlateMap.cjs.map +1 -0
  112. package/dist/charts/PlateMap.js +5 -0
  113. package/dist/charts/PlateMap.js.map +1 -0
  114. package/dist/charts/ScatterPlot.cjs +2 -0
  115. package/dist/charts/ScatterPlot.cjs.map +1 -0
  116. package/dist/charts/ScatterPlot.js +5 -0
  117. package/dist/charts/ScatterPlot.js.map +1 -0
  118. package/dist/charts/ScatterPlotInteractive.cjs +2 -0
  119. package/dist/charts/ScatterPlotInteractive.cjs.map +1 -0
  120. package/dist/charts/ScatterPlotInteractive.js +14 -0
  121. package/dist/charts/ScatterPlotInteractive.js.map +1 -0
  122. package/dist/charts/StackedChromatogram.cjs +2 -0
  123. package/dist/charts/StackedChromatogram.cjs.map +1 -0
  124. package/dist/charts/StackedChromatogram.js +7 -0
  125. package/dist/charts/StackedChromatogram.js.map +1 -0
  126. package/dist/components/ai/attachments.d.ts +54 -0
  127. package/dist/components/ai/chain-of-thought.d.ts +56 -0
  128. package/dist/components/ai/confirmation.d.ts +47 -0
  129. package/dist/components/ai/context.d.ts +40 -0
  130. package/dist/components/ai/conversation.d.ts +23 -0
  131. package/dist/components/ai/inline-citation.d.ts +38 -0
  132. package/dist/components/ai/message.d.ts +37 -0
  133. package/dist/components/ai/model-selector.d.ts +36 -0
  134. package/dist/components/ai/prompt-input.d.ts +158 -0
  135. package/dist/components/ai/queue.d.ts +72 -0
  136. package/dist/components/ai/reasoning.d.ts +26 -0
  137. package/dist/components/ai/shimmer.d.ts +17 -0
  138. package/dist/components/ai/sources.d.ts +12 -0
  139. package/dist/components/ai/speech-input.d.ts +54 -0
  140. package/dist/components/ai/stream-status.d.ts +66 -0
  141. package/dist/components/ai/streamdown-code-plugin.d.ts +2 -0
  142. package/dist/components/ai/streamdown-plugins.d.ts +2 -0
  143. package/dist/components/ai/suggestion.d.ts +9 -0
  144. package/dist/components/ai/task.d.ts +16 -0
  145. package/dist/components/ai/tool.d.ts +33 -0
  146. package/dist/components/ai/use-streamdown-plugins.d.ts +8 -0
  147. package/dist/components/charts/AreaPlot/AreaPlot.cjs +1 -1
  148. package/dist/components/charts/AreaPlot/AreaPlot.d.ts +39 -0
  149. package/dist/components/charts/AreaPlot/index.d.ts +2 -0
  150. package/dist/components/charts/BarChart/BarChart.cjs +1 -1
  151. package/dist/components/charts/BarChart/BarChart.d.ts +44 -0
  152. package/dist/components/charts/BarChart/index.d.ts +2 -0
  153. package/dist/components/charts/BoxPlot/BoxPlot.cjs +1 -1
  154. package/dist/components/charts/BoxPlot/BoxPlot.d.ts +33 -0
  155. package/dist/components/charts/BoxPlot/index.d.ts +2 -0
  156. package/dist/components/charts/ChartTooltip/ChartTooltip.d.ts +71 -0
  157. package/dist/components/charts/ChartTooltip/index.d.ts +2 -0
  158. package/dist/components/charts/ChartTooltip/lines.d.ts +54 -0
  159. package/dist/components/charts/Chromatogram/Chromatogram.d.ts +5 -0
  160. package/dist/components/charts/Chromatogram/annotations.cjs +1 -1
  161. package/dist/components/charts/Chromatogram/annotations.d.ts +50 -0
  162. package/dist/components/charts/Chromatogram/boundaryMarkers.cjs +1 -1
  163. package/dist/components/charts/Chromatogram/boundaryMarkers.d.ts +14 -0
  164. package/dist/components/charts/Chromatogram/constants.d.ts +46 -0
  165. package/dist/components/charts/Chromatogram/dataProcessing.d.ts +49 -0
  166. package/dist/components/charts/Chromatogram/index.d.ts +2 -0
  167. package/dist/components/charts/Chromatogram/peakDetection.d.ts +33 -0
  168. package/dist/components/charts/Chromatogram/plotBuilder.d.ts +58 -0
  169. package/dist/components/charts/Chromatogram/regionOverlays.cjs +1 -1
  170. package/dist/components/charts/Chromatogram/regionOverlays.d.ts +9 -0
  171. package/dist/components/charts/Chromatogram/types.d.ts +258 -0
  172. package/dist/components/charts/Electropherogram/Electropherogram.cjs +1 -1
  173. package/dist/components/charts/Electropherogram/Electropherogram.d.ts +22 -0
  174. package/dist/components/charts/Electropherogram/index.d.ts +2 -0
  175. package/dist/components/charts/Histogram/Histogram.cjs +1 -1
  176. package/dist/components/charts/Histogram/Histogram.d.ts +36 -0
  177. package/dist/components/charts/Histogram/index.d.ts +2 -0
  178. package/dist/components/charts/LinePlot/LinePlot.cjs +1 -1
  179. package/dist/components/charts/LinePlot/LinePlot.d.ts +45 -0
  180. package/dist/components/charts/LinePlot/index.d.ts +2 -0
  181. package/dist/components/charts/PieChart/PieChart.d.ts +20 -0
  182. package/dist/components/charts/PieChart/index.d.ts +2 -0
  183. package/dist/components/charts/PlateMap/PlateMap.cjs +1 -1
  184. package/dist/components/charts/PlateMap/PlateMap.cjs.map +1 -1
  185. package/dist/components/charts/PlateMap/PlateMap.d.ts +29 -0
  186. package/dist/components/charts/PlateMap/PlateMap.js +1 -1
  187. package/dist/components/charts/PlateMap/constants.d.ts +75 -0
  188. package/dist/components/charts/PlateMap/index.d.ts +2 -0
  189. package/dist/components/charts/PlateMap/types.d.ts +322 -0
  190. package/dist/components/charts/PlateMap/utils.d.ts +133 -0
  191. package/dist/components/charts/ScatterPlot/ScatterPlot.cjs +1 -1
  192. package/dist/components/charts/ScatterPlot/ScatterPlot.d.ts +43 -0
  193. package/dist/components/charts/ScatterPlot/index.d.ts +2 -0
  194. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.d.ts +25 -0
  195. package/dist/components/charts/ScatterPlotInteractive/constants.d.ts +50 -0
  196. package/dist/components/charts/ScatterPlotInteractive/index.d.ts +3 -0
  197. package/dist/components/charts/ScatterPlotInteractive/types.d.ts +226 -0
  198. package/dist/components/charts/ScatterPlotInteractive/utils.d.ts +72 -0
  199. package/dist/components/charts/StackedChromatogram/StackedChromatogram.d.ts +3 -0
  200. package/dist/components/charts/StackedChromatogram/index.d.ts +3 -0
  201. package/dist/components/charts/StackedChromatogram/transforms.d.ts +9 -0
  202. package/dist/components/charts/StackedChromatogram/types.d.ts +26 -0
  203. package/dist/components/charts/plotly-loader.cjs +1 -1
  204. package/dist/components/charts/plotly-loader.cjs.map +1 -1
  205. package/dist/components/charts/plotly-loader.d.ts +29 -0
  206. package/dist/components/composed/AssistantLayout/AssistantLayout.cjs +1 -1
  207. package/dist/components/composed/AssistantLayout/AssistantLayout.cjs.map +1 -1
  208. package/dist/components/composed/AssistantLayout/AssistantLayout.d.ts +63 -0
  209. package/dist/components/composed/AssistantLayout/AssistantLayout.js +2 -2
  210. package/dist/components/composed/AssistantLayout/dockLayout.d.ts +15 -0
  211. package/dist/components/composed/AssistantLayout/index.d.ts +3 -0
  212. package/dist/components/composed/Chat/Chat.cjs +1 -1
  213. package/dist/components/composed/Chat/Chat.cjs.map +1 -1
  214. package/dist/components/composed/Chat/Chat.d.ts +35 -0
  215. package/dist/components/composed/Chat/Chat.js +7 -7
  216. package/dist/components/composed/Chat/index.d.ts +2 -0
  217. package/dist/components/composed/ConfirmDialog/ConfirmDialog.cjs +1 -1
  218. package/dist/components/composed/ConfirmDialog/ConfirmDialog.cjs.map +1 -1
  219. package/dist/components/composed/ConfirmDialog/ConfirmDialog.d.ts +23 -0
  220. package/dist/components/composed/ConfirmDialog/ConfirmDialog.js +4 -4
  221. package/dist/components/composed/ConfirmDialog/index.d.ts +1 -0
  222. package/dist/components/composed/DataAppShell/CollapseButton.cjs +1 -1
  223. package/dist/components/composed/DataAppShell/CollapseButton.cjs.map +1 -1
  224. package/dist/components/composed/DataAppShell/CollapseButton.d.ts +23 -0
  225. package/dist/components/composed/DataAppShell/CollapseButton.js +2 -2
  226. package/dist/components/composed/DataAppShell/DataAppShell.cjs +1 -1
  227. package/dist/components/composed/DataAppShell/DataAppShell.cjs.map +1 -1
  228. package/dist/components/composed/DataAppShell/DataAppShell.d.ts +88 -0
  229. package/dist/components/composed/DataAppShell/DataAppShell.js +5 -5
  230. package/dist/components/composed/DataAppShell/PrimaryNav.cjs +1 -1
  231. package/dist/components/composed/DataAppShell/PrimaryNav.cjs.map +1 -1
  232. package/dist/components/composed/DataAppShell/PrimaryNav.d.ts +64 -0
  233. package/dist/components/composed/DataAppShell/PrimaryNav.js +2 -2
  234. package/dist/components/composed/DataAppShell/RightPanel.cjs +1 -1
  235. package/dist/components/composed/DataAppShell/RightPanel.cjs.map +1 -1
  236. package/dist/components/composed/DataAppShell/RightPanel.d.ts +95 -0
  237. package/dist/components/composed/DataAppShell/RightPanel.js +2 -2
  238. package/dist/components/composed/DataAppShell/SecondaryNav.cjs +1 -1
  239. package/dist/components/composed/DataAppShell/SecondaryNav.cjs.map +1 -1
  240. package/dist/components/composed/DataAppShell/SecondaryNav.d.ts +63 -0
  241. package/dist/components/composed/DataAppShell/SecondaryNav.js +3 -3
  242. package/dist/components/composed/DataAppShell/ShellContext.d.ts +20 -0
  243. package/dist/components/composed/DataAppShell/index.d.ts +12 -0
  244. package/dist/components/composed/EmptyState/EmptyState.d.ts +12 -0
  245. package/dist/components/composed/EmptyState/index.d.ts +2 -0
  246. package/dist/components/composed/FormPatterns/FormSection.cjs +1 -1
  247. package/dist/components/composed/FormPatterns/FormSection.cjs.map +1 -1
  248. package/dist/components/composed/FormPatterns/FormSection.d.ts +7 -0
  249. package/dist/components/composed/FormPatterns/FormSection.js +2 -2
  250. package/dist/components/composed/FormPatterns/index.d.ts +1 -0
  251. package/dist/components/composed/MoleculeStructure/MoleculeStructure.cjs +1 -1
  252. package/dist/components/composed/MoleculeStructure/MoleculeStructure.cjs.map +1 -1
  253. package/dist/components/composed/MoleculeStructure/MoleculeStructure.d.ts +43 -0
  254. package/dist/components/composed/MoleculeStructure/MoleculeStructure.js +1 -1
  255. package/dist/components/composed/MoleculeStructure/index.d.ts +3 -0
  256. package/dist/components/composed/MoleculeStructure/rdkit-loader.cjs +1 -1
  257. package/dist/components/composed/MoleculeStructure/rdkit-loader.cjs.map +1 -1
  258. package/dist/components/composed/MoleculeStructure/rdkit-loader.d.ts +104 -0
  259. package/dist/components/composed/MoleculeStructure/use-rdkit.d.ts +29 -0
  260. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs +1 -1
  261. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs.map +1 -1
  262. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.d.ts +12 -0
  263. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js +4 -4
  264. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs +1 -1
  265. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs.map +1 -1
  266. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.d.ts +22 -0
  267. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js +2 -2
  268. package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs +1 -1
  269. package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs.map +1 -1
  270. package/dist/components/composed/PlateMapEditor/PlateMapEditor.d.ts +106 -0
  271. package/dist/components/composed/PlateMapEditor/PlateMapEditor.js +2 -2
  272. package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs +1 -1
  273. package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs.map +1 -1
  274. package/dist/components/composed/PlateMapEditor/PlateMapForm.d.ts +30 -0
  275. package/dist/components/composed/PlateMapEditor/PlateMapForm.js +1 -1
  276. package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs +1 -1
  277. package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs.map +1 -1
  278. package/dist/components/composed/PlateMapEditor/PlateMapGrid.d.ts +64 -0
  279. package/dist/components/composed/PlateMapEditor/PlateMapGrid.js +1 -1
  280. package/dist/components/composed/PlateMapEditor/PlateMapManifest.d.ts +29 -0
  281. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs +1 -1
  282. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs.map +1 -1
  283. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.d.ts +19 -0
  284. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js +4 -4
  285. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.d.ts +73 -0
  286. package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs +1 -1
  287. package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs.map +1 -1
  288. package/dist/components/composed/PlateMapEditor/PlateZoomControl.d.ts +12 -0
  289. package/dist/components/composed/PlateMapEditor/PlateZoomControl.js +2 -2
  290. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs +1 -1
  291. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs.map +1 -1
  292. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.d.ts +13 -0
  293. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.js +4 -4
  294. package/dist/components/composed/PlateMapEditor/WellLegend.cjs +1 -1
  295. package/dist/components/composed/PlateMapEditor/WellLegend.cjs.map +1 -1
  296. package/dist/components/composed/PlateMapEditor/WellLegend.d.ts +21 -0
  297. package/dist/components/composed/PlateMapEditor/WellLegend.js +2 -2
  298. package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs +1 -1
  299. package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs.map +1 -1
  300. package/dist/components/composed/PlateMapEditor/WellManifestTable.d.ts +46 -0
  301. package/dist/components/composed/PlateMapEditor/WellManifestTable.js +9 -9
  302. package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs +1 -1
  303. package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs.map +1 -1
  304. package/dist/components/composed/PlateMapEditor/WellMetadataForm.d.ts +17 -0
  305. package/dist/components/composed/PlateMapEditor/WellMetadataForm.js +7 -7
  306. package/dist/components/composed/PlateMapEditor/autoFill.d.ts +26 -0
  307. package/dist/components/composed/PlateMapEditor/csvPlateTriage.d.ts +4 -0
  308. package/dist/components/composed/PlateMapEditor/helpers.d.ts +2 -0
  309. package/dist/components/composed/PlateMapEditor/index.d.ts +31 -0
  310. package/dist/components/composed/PlateMapEditor/types.d.ts +137 -0
  311. package/dist/components/composed/PlateMapEditor/wellGrid.d.ts +12 -0
  312. package/dist/components/composed/ProcessFlow/ProcessFlow.d.ts +32 -0
  313. package/dist/components/composed/ProcessFlow/ProcessFlow.utils.d.ts +86 -0
  314. package/dist/components/composed/ProcessFlow/index.d.ts +1 -0
  315. package/dist/components/composed/RichListItem/RichListItem.cjs +1 -1
  316. package/dist/components/composed/RichListItem/RichListItem.cjs.map +1 -1
  317. package/dist/components/composed/RichListItem/RichListItem.d.ts +22 -0
  318. package/dist/components/composed/RichListItem/RichListItem.js +2 -2
  319. package/dist/components/composed/RichListItem/index.d.ts +2 -0
  320. package/dist/components/composed/StatCard/StatCard.cjs +1 -1
  321. package/dist/components/composed/StatCard/StatCard.cjs.map +1 -1
  322. package/dist/components/composed/StatCard/StatCard.d.ts +11 -0
  323. package/dist/components/composed/StatCard/StatCard.js +1 -1
  324. package/dist/components/composed/StatCard/index.d.ts +1 -0
  325. package/dist/components/composed/TdpSearch/TdpSearch.cjs +1 -1
  326. package/dist/components/composed/TdpSearch/TdpSearch.cjs.map +1 -1
  327. package/dist/components/composed/TdpSearch/TdpSearch.d.ts +21 -0
  328. package/dist/components/composed/TdpSearch/TdpSearch.js +14 -13
  329. package/dist/components/composed/TdpSearch/TdpSearch.mocks.d.ts +5 -0
  330. package/dist/components/composed/TdpSearch/components/DefaultFilters.cjs +1 -1
  331. package/dist/components/composed/TdpSearch/components/DefaultFilters.cjs.map +1 -1
  332. package/dist/components/composed/TdpSearch/components/DefaultFilters.d.ts +3 -0
  333. package/dist/components/composed/TdpSearch/components/DefaultFilters.js +1 -1
  334. package/dist/components/composed/TdpSearch/components/DefaultResults.cjs +1 -1
  335. package/dist/components/composed/TdpSearch/components/DefaultResults.cjs.map +1 -1
  336. package/dist/components/composed/TdpSearch/components/DefaultResults.d.ts +3 -0
  337. package/dist/components/composed/TdpSearch/components/DefaultResults.js +2 -2
  338. package/dist/components/composed/TdpSearch/components/DefaultSearchBar.cjs +1 -1
  339. package/dist/components/composed/TdpSearch/components/DefaultSearchBar.cjs.map +1 -1
  340. package/dist/components/composed/TdpSearch/components/DefaultSearchBar.d.ts +3 -0
  341. package/dist/components/composed/TdpSearch/components/DefaultSearchBar.js +2 -2
  342. package/dist/components/composed/TdpSearch/constants.d.ts +3 -0
  343. package/dist/components/composed/TdpSearch/hooks/useSearch.d.ts +2 -0
  344. package/dist/components/composed/TdpSearch/hooks/useTdpCredentials.d.ts +14 -0
  345. package/dist/components/composed/TdpSearch/index.d.ts +3 -0
  346. package/dist/components/composed/TdpSearch/types.d.ts +128 -0
  347. package/dist/components/composed/TdpSearch/utils.d.ts +3 -0
  348. package/dist/components/composed/TopBar/TopBar.d.ts +25 -0
  349. package/dist/components/composed/TopBar/index.d.ts +2 -0
  350. package/dist/components/composed/UserMenu/UserMenu.cjs +1 -1
  351. package/dist/components/composed/UserMenu/UserMenu.cjs.map +1 -1
  352. package/dist/components/composed/UserMenu/UserMenu.d.ts +53 -0
  353. package/dist/components/composed/UserMenu/UserMenu.js +2 -2
  354. package/dist/components/composed/UserMenu/index.d.ts +2 -0
  355. package/dist/components/composed/tdp-link.d.ts +110 -0
  356. package/dist/components/composed/tdp-url.d.ts +68 -0
  357. package/dist/components/ui/accordion.d.ts +7 -0
  358. package/dist/components/ui/alert-dialog.d.ts +18 -0
  359. package/dist/components/ui/alert.d.ts +10 -0
  360. package/dist/components/ui/aspect-ratio.d.ts +3 -0
  361. package/dist/components/ui/avatar.d.ts +11 -0
  362. package/dist/components/ui/badge.d.ts +9 -0
  363. package/dist/components/ui/banner.d.ts +19 -0
  364. package/dist/components/ui/breadcrumb.d.ts +11 -0
  365. package/dist/components/ui/button-group.d.ts +11 -0
  366. package/dist/components/ui/button.d.ts +10 -0
  367. package/dist/components/ui/calendar.d.ts +10 -0
  368. package/dist/components/ui/card.d.ts +11 -0
  369. package/dist/components/ui/carousel.d.ts +28 -0
  370. package/dist/components/ui/checkbox.d.ts +4 -0
  371. package/dist/components/ui/code-block.d.ts +45 -0
  372. package/dist/components/ui/code-editor.d.ts +18 -0
  373. package/dist/components/ui/collapsible.d.ts +5 -0
  374. package/dist/components/ui/combobox.d.ts +24 -0
  375. package/dist/components/ui/command.d.ts +18 -0
  376. package/dist/components/ui/context-menu.d.ts +31 -0
  377. package/dist/components/ui/data-table/data-table-column-toggle.cjs +1 -1
  378. package/dist/components/ui/data-table/data-table-column-toggle.cjs.map +1 -1
  379. package/dist/components/ui/data-table/data-table-column-toggle.d.ts +6 -0
  380. package/dist/components/ui/data-table/data-table-column-toggle.js +1 -1
  381. package/dist/components/ui/data-table/data-table-filter.cjs +1 -1
  382. package/dist/components/ui/data-table/data-table-filter.cjs.map +1 -1
  383. package/dist/components/ui/data-table/data-table-filter.d.ts +9 -0
  384. package/dist/components/ui/data-table/data-table-filter.js +3 -3
  385. package/dist/components/ui/data-table/data-table-group.cjs +1 -1
  386. package/dist/components/ui/data-table/data-table-group.cjs.map +1 -1
  387. package/dist/components/ui/data-table/data-table-group.d.ts +9 -0
  388. package/dist/components/ui/data-table/data-table-group.js +2 -2
  389. package/dist/components/ui/data-table/data-table-pagination.cjs +1 -1
  390. package/dist/components/ui/data-table/data-table-pagination.cjs.map +1 -1
  391. package/dist/components/ui/data-table/data-table-pagination.d.ts +7 -0
  392. package/dist/components/ui/data-table/data-table-pagination.js +2 -2
  393. package/dist/components/ui/data-table/data-table.cjs +1 -1
  394. package/dist/components/ui/data-table/data-table.cjs.map +1 -1
  395. package/dist/components/ui/data-table/data-table.d.ts +82 -0
  396. package/dist/components/ui/data-table/data-table.js +1 -1
  397. package/dist/components/ui/data-table/index.d.ts +5 -0
  398. package/dist/components/ui/dialog.d.ts +18 -0
  399. package/dist/components/ui/dropdown-menu.d.ts +29 -0
  400. package/dist/components/ui/field.d.ts +24 -0
  401. package/dist/components/ui/hover-card.d.ts +6 -0
  402. package/dist/components/ui/input-group.d.ts +16 -0
  403. package/dist/components/ui/input.d.ts +3 -0
  404. package/dist/components/ui/item.d.ts +23 -0
  405. package/dist/components/ui/kbd.d.ts +3 -0
  406. package/dist/components/ui/label.d.ts +4 -0
  407. package/dist/components/ui/menubar.d.ts +30 -0
  408. package/dist/components/ui/navigation-menu.d.ts +14 -0
  409. package/dist/components/ui/popover.d.ts +7 -0
  410. package/dist/components/ui/progress.d.ts +4 -0
  411. package/dist/components/ui/radio-group.d.ts +5 -0
  412. package/dist/components/ui/resizable.d.ts +25 -0
  413. package/dist/components/ui/scroll-area.d.ts +5 -0
  414. package/dist/components/ui/select.d.ts +15 -0
  415. package/dist/components/ui/separator.d.ts +4 -0
  416. package/dist/components/ui/sheet.d.ts +14 -0
  417. package/dist/components/ui/sidebar.d.ts +69 -0
  418. package/dist/components/ui/skeleton.d.ts +2 -0
  419. package/dist/components/ui/slider.d.ts +4 -0
  420. package/dist/components/ui/snippet.d.ts +18 -0
  421. package/dist/components/ui/sonner.d.ts +3 -0
  422. package/dist/components/ui/spinner.d.ts +6 -0
  423. package/dist/components/ui/switch.d.ts +6 -0
  424. package/dist/components/ui/table.d.ts +22 -0
  425. package/dist/components/ui/tabs.d.ts +11 -0
  426. package/dist/components/ui/tetra-molecule-icon.d.ts +11 -0
  427. package/dist/components/ui/tetrascience-icon.d.ts +7 -0
  428. package/dist/components/ui/textarea.d.ts +3 -0
  429. package/dist/components/ui/toggle-group.d.ts +10 -0
  430. package/dist/components/ui/toggle.d.ts +9 -0
  431. package/dist/components/ui/tooltip.d.ts +7 -0
  432. package/dist/composed/AssistantLayout.cjs +2 -0
  433. package/dist/composed/AssistantLayout.cjs.map +1 -0
  434. package/dist/composed/AssistantLayout.js +10 -0
  435. package/dist/composed/AssistantLayout.js.map +1 -0
  436. package/dist/composed/Chat.cjs +2 -0
  437. package/dist/composed/Chat.cjs.map +1 -0
  438. package/dist/composed/Chat.js +5 -0
  439. package/dist/composed/Chat.js.map +1 -0
  440. package/dist/composed/ConfirmDialog.cjs +2 -0
  441. package/dist/composed/ConfirmDialog.cjs.map +1 -0
  442. package/dist/composed/ConfirmDialog.js +5 -0
  443. package/dist/composed/ConfirmDialog.js.map +1 -0
  444. package/dist/composed/DataAppShell.cjs +2 -0
  445. package/dist/composed/DataAppShell.cjs.map +1 -0
  446. package/dist/composed/DataAppShell.js +22 -0
  447. package/dist/composed/DataAppShell.js.map +1 -0
  448. package/dist/composed/EmptyState.cjs +2 -0
  449. package/dist/composed/EmptyState.cjs.map +1 -0
  450. package/dist/composed/EmptyState.js +5 -0
  451. package/dist/composed/EmptyState.js.map +1 -0
  452. package/dist/composed/FormPatterns.cjs +2 -0
  453. package/dist/composed/FormPatterns.cjs.map +1 -0
  454. package/dist/composed/FormPatterns.js +5 -0
  455. package/dist/composed/FormPatterns.js.map +1 -0
  456. package/dist/composed/MoleculeStructure.cjs +2 -0
  457. package/dist/composed/MoleculeStructure.cjs.map +1 -0
  458. package/dist/composed/MoleculeStructure.js +11 -0
  459. package/dist/composed/MoleculeStructure.js.map +1 -0
  460. package/dist/composed/PlateMapEditor.cjs +2 -0
  461. package/dist/composed/PlateMapEditor.cjs.map +1 -0
  462. package/dist/composed/PlateMapEditor.js +45 -0
  463. package/dist/composed/PlateMapEditor.js.map +1 -0
  464. package/dist/composed/ProcessFlow.cjs +2 -0
  465. package/dist/composed/ProcessFlow.cjs.map +1 -0
  466. package/dist/composed/ProcessFlow.js +7 -0
  467. package/dist/composed/ProcessFlow.js.map +1 -0
  468. package/dist/composed/RichListItem.cjs +2 -0
  469. package/dist/composed/RichListItem.cjs.map +1 -0
  470. package/dist/composed/RichListItem.js +6 -0
  471. package/dist/composed/RichListItem.js.map +1 -0
  472. package/dist/composed/StatCard.cjs +2 -0
  473. package/dist/composed/StatCard.cjs.map +1 -0
  474. package/dist/composed/StatCard.js +5 -0
  475. package/dist/composed/StatCard.js.map +1 -0
  476. package/dist/composed/TdpSearch.cjs +2 -0
  477. package/dist/composed/TdpSearch.cjs.map +1 -0
  478. package/dist/composed/TdpSearch.js +8 -0
  479. package/dist/composed/TdpSearch.js.map +1 -0
  480. package/dist/composed/TopBar.cjs +2 -0
  481. package/dist/composed/TopBar.cjs.map +1 -0
  482. package/dist/composed/TopBar.js +6 -0
  483. package/dist/composed/TopBar.js.map +1 -0
  484. package/dist/composed/UserMenu.cjs +2 -0
  485. package/dist/composed/UserMenu.cjs.map +1 -0
  486. package/dist/composed/UserMenu.js +7 -0
  487. package/dist/composed/UserMenu.js.map +1 -0
  488. package/dist/composed/tdp-link.cjs +2 -0
  489. package/dist/composed/tdp-link.cjs.map +1 -0
  490. package/dist/composed/tdp-link.js.map +1 -0
  491. package/dist/composed/tdp-url.cjs.map +1 -0
  492. package/dist/composed/tdp-url.js.map +1 -0
  493. package/dist/hooks/use-code-editor-theme.d.ts +34 -0
  494. package/dist/hooks/use-element-size.d.ts +25 -0
  495. package/dist/hooks/use-is-dark.d.ts +12 -0
  496. package/dist/hooks/use-mobile.d.ts +1 -0
  497. package/dist/hooks/use-plotly-theme.d.ts +49 -0
  498. package/dist/index.cjs +1 -1
  499. package/dist/index.css +1 -1
  500. package/dist/index.d.ts +102 -5448
  501. package/dist/index.js +72 -72
  502. package/dist/jest-setup.cjs +4 -0
  503. package/dist/jest-setup.cjs.map +1 -0
  504. package/dist/jest-setup.d.ts +106 -0
  505. package/dist/jest-setup.js +218 -0
  506. package/dist/jest-setup.js.map +1 -0
  507. package/dist/lib/shiki.cjs +1 -1
  508. package/dist/lib/shiki.cjs.map +1 -1
  509. package/dist/lib/shiki.d.ts +32 -0
  510. package/dist/lib/utils.d.ts +2 -0
  511. package/dist/server/auth/JwtTokenManager.cjs +1 -1
  512. package/dist/server/auth/JwtTokenManager.cjs.map +1 -1
  513. package/dist/server/auth/JwtTokenManager.d.ts +113 -0
  514. package/dist/server/auth/JwtTokenManager.js +44 -21
  515. package/dist/server/auth/JwtTokenManager.js.map +1 -1
  516. package/dist/server/auth/index.d.ts +5 -0
  517. package/dist/server/index.d.ts +8 -0
  518. package/dist/server/providers/AthenaProvider.cjs +1 -1
  519. package/dist/server/providers/AthenaProvider.cjs.map +1 -1
  520. package/dist/server/providers/AthenaProvider.d.ts +75 -0
  521. package/dist/server/providers/DatabricksProvider.cjs +1 -1
  522. package/dist/server/providers/DatabricksProvider.cjs.map +1 -1
  523. package/dist/server/providers/DatabricksProvider.d.ts +38 -0
  524. package/dist/server/providers/SnowflakeProvider.cjs +1 -1
  525. package/dist/server/providers/SnowflakeProvider.cjs.map +1 -1
  526. package/dist/server/providers/SnowflakeProvider.d.ts +36 -0
  527. package/dist/server/providers/buildProvider.d.ts +39 -0
  528. package/dist/server/providers/entries/athena.d.ts +24 -0
  529. package/dist/server/providers/entries/databricks.d.ts +25 -0
  530. package/dist/server/providers/entries/snowflake.d.ts +25 -0
  531. package/dist/server/providers/exceptions.d.ts +36 -0
  532. package/dist/server/providers/getProviderConfigurations.d.ts +45 -0
  533. package/dist/server/providers/index.d.ts +31 -0
  534. package/dist/server/providers/providerDiscovery.d.ts +81 -0
  535. package/dist/server/providers/types.d.ts +145 -0
  536. package/dist/server/search/TdpSearchManager.d.ts +40 -0
  537. package/dist/server/search/index.d.ts +5 -0
  538. package/dist/server.d.ts +17 -540
  539. package/dist/ui/accordion.cjs +2 -0
  540. package/dist/ui/accordion.cjs.map +1 -0
  541. package/dist/ui/accordion.js +83 -0
  542. package/dist/ui/accordion.js.map +1 -0
  543. package/dist/ui/alert-dialog.cjs +2 -0
  544. package/dist/ui/alert-dialog.cjs.map +1 -0
  545. package/dist/ui/alert-dialog.js +181 -0
  546. package/dist/ui/alert-dialog.js.map +1 -0
  547. package/dist/ui/alert.cjs +2 -0
  548. package/dist/ui/alert.cjs.map +1 -0
  549. package/dist/ui/alert.js +81 -0
  550. package/dist/ui/alert.js.map +1 -0
  551. package/dist/ui/aspect-ratio.cjs.map +1 -0
  552. package/dist/ui/aspect-ratio.js.map +1 -0
  553. package/dist/ui/avatar.cjs +2 -0
  554. package/dist/ui/avatar.cjs.map +1 -0
  555. package/dist/ui/avatar.js +107 -0
  556. package/dist/ui/avatar.js.map +1 -0
  557. package/dist/ui/badge.cjs +2 -0
  558. package/dist/ui/badge.cjs.map +1 -0
  559. package/dist/ui/badge.js +47 -0
  560. package/dist/ui/badge.js.map +1 -0
  561. package/dist/ui/banner.cjs +2 -0
  562. package/dist/ui/banner.cjs.map +1 -0
  563. package/dist/ui/banner.js +80 -0
  564. package/dist/ui/banner.js.map +1 -0
  565. package/dist/ui/breadcrumb.cjs +2 -0
  566. package/dist/ui/breadcrumb.cjs.map +1 -0
  567. package/dist/ui/breadcrumb.js +118 -0
  568. package/dist/ui/breadcrumb.js.map +1 -0
  569. package/dist/ui/button-group.cjs +2 -0
  570. package/dist/ui/button-group.cjs.map +1 -0
  571. package/dist/ui/button-group.js +77 -0
  572. package/dist/ui/button-group.js.map +1 -0
  573. package/dist/ui/button.cjs +2 -0
  574. package/dist/ui/button.cjs.map +1 -0
  575. package/dist/ui/button.js +57 -0
  576. package/dist/ui/button.js.map +1 -0
  577. package/dist/ui/calendar.cjs +2 -0
  578. package/dist/ui/calendar.cjs.map +1 -0
  579. package/dist/ui/calendar.js +174 -0
  580. package/dist/ui/calendar.js.map +1 -0
  581. package/dist/ui/card.cjs +2 -0
  582. package/dist/ui/card.cjs.map +1 -0
  583. package/dist/ui/card.js +102 -0
  584. package/dist/ui/card.js.map +1 -0
  585. package/dist/ui/carousel.cjs +2 -0
  586. package/dist/ui/carousel.cjs.map +1 -0
  587. package/dist/ui/carousel.js +179 -0
  588. package/dist/ui/carousel.js.map +1 -0
  589. package/dist/ui/checkbox.cjs +2 -0
  590. package/dist/ui/checkbox.cjs.map +1 -0
  591. package/dist/ui/checkbox.js +35 -0
  592. package/dist/ui/checkbox.js.map +1 -0
  593. package/dist/ui/code-block.cjs +4 -0
  594. package/dist/ui/code-block.cjs.map +1 -0
  595. package/dist/ui/code-block.js +324 -0
  596. package/dist/ui/code-block.js.map +1 -0
  597. package/dist/ui/code-editor.cjs +2 -0
  598. package/dist/ui/code-editor.cjs.map +1 -0
  599. package/dist/ui/code-editor.js +106 -0
  600. package/dist/ui/code-editor.js.map +1 -0
  601. package/dist/ui/collapsible.cjs.map +1 -0
  602. package/dist/ui/collapsible.js.map +1 -0
  603. package/dist/ui/combobox.cjs +2 -0
  604. package/dist/ui/combobox.cjs.map +1 -0
  605. package/dist/ui/combobox.js +285 -0
  606. package/dist/ui/combobox.js.map +1 -0
  607. package/dist/ui/command.cjs +2 -0
  608. package/dist/ui/command.cjs.map +1 -0
  609. package/dist/ui/command.js +178 -0
  610. package/dist/ui/command.js.map +1 -0
  611. package/dist/ui/context-menu.cjs +2 -0
  612. package/dist/ui/context-menu.cjs.map +1 -0
  613. package/dist/ui/context-menu.js +236 -0
  614. package/dist/ui/context-menu.js.map +1 -0
  615. package/dist/ui/data-table.cjs +2 -0
  616. package/dist/ui/data-table.cjs.map +1 -0
  617. package/dist/ui/data-table.js +16 -0
  618. package/dist/ui/data-table.js.map +1 -0
  619. package/dist/ui/dialog.cjs +2 -0
  620. package/dist/ui/dialog.cjs.map +1 -0
  621. package/dist/ui/dialog.js +165 -0
  622. package/dist/ui/dialog.js.map +1 -0
  623. package/dist/ui/dropdown-menu.cjs +2 -0
  624. package/dist/ui/dropdown-menu.cjs.map +1 -0
  625. package/dist/ui/dropdown-menu.js +260 -0
  626. package/dist/ui/dropdown-menu.js.map +1 -0
  627. package/dist/ui/field.cjs +2 -0
  628. package/dist/ui/field.cjs.map +1 -0
  629. package/dist/ui/field.js +210 -0
  630. package/dist/ui/field.js.map +1 -0
  631. package/dist/ui/hover-card.cjs +2 -0
  632. package/dist/ui/hover-card.cjs.map +1 -0
  633. package/dist/ui/hover-card.js +39 -0
  634. package/dist/ui/hover-card.js.map +1 -0
  635. package/dist/ui/input-group.cjs +2 -0
  636. package/dist/ui/input-group.cjs.map +1 -0
  637. package/dist/ui/input-group.js +145 -0
  638. package/dist/ui/input-group.js.map +1 -0
  639. package/dist/ui/input.cjs +2 -0
  640. package/dist/ui/input.cjs.map +1 -0
  641. package/dist/ui/input.js +20 -0
  642. package/dist/ui/input.js.map +1 -0
  643. package/dist/ui/item.cjs +2 -0
  644. package/dist/ui/item.cjs.map +1 -0
  645. package/dist/ui/item.js +199 -0
  646. package/dist/ui/item.js.map +1 -0
  647. package/dist/ui/kbd.cjs +2 -0
  648. package/dist/ui/kbd.cjs.map +1 -0
  649. package/dist/ui/kbd.js +30 -0
  650. package/dist/ui/kbd.js.map +1 -0
  651. package/dist/ui/label.cjs +2 -0
  652. package/dist/ui/label.cjs.map +1 -0
  653. package/dist/ui/label.js +23 -0
  654. package/dist/ui/label.js.map +1 -0
  655. package/dist/ui/menubar.cjs +2 -0
  656. package/dist/ui/menubar.cjs.map +1 -0
  657. package/dist/ui/menubar.js +256 -0
  658. package/dist/ui/menubar.js.map +1 -0
  659. package/dist/ui/navigation-menu.cjs +2 -0
  660. package/dist/ui/navigation-menu.cjs.map +1 -0
  661. package/dist/ui/navigation-menu.js +164 -0
  662. package/dist/ui/navigation-menu.js.map +1 -0
  663. package/dist/ui/popover.cjs +2 -0
  664. package/dist/ui/popover.cjs.map +1 -0
  665. package/dist/ui/popover.js +45 -0
  666. package/dist/ui/popover.js.map +1 -0
  667. package/dist/ui/radio-group.cjs +2 -0
  668. package/dist/ui/radio-group.cjs.map +1 -0
  669. package/dist/ui/radio-group.js +45 -0
  670. package/dist/ui/radio-group.js.map +1 -0
  671. package/dist/ui/resizable.cjs +2 -0
  672. package/dist/ui/resizable.cjs.map +1 -0
  673. package/dist/ui/resizable.js +58 -0
  674. package/dist/ui/resizable.js.map +1 -0
  675. package/dist/ui/scroll-area.cjs +2 -0
  676. package/dist/ui/scroll-area.cjs.map +1 -0
  677. package/dist/ui/scroll-area.js +61 -0
  678. package/dist/ui/scroll-area.js.map +1 -0
  679. package/dist/ui/select.cjs +2 -0
  680. package/dist/ui/select.cjs.map +1 -0
  681. package/dist/ui/select.js +184 -0
  682. package/dist/ui/select.js.map +1 -0
  683. package/dist/ui/separator.cjs +2 -0
  684. package/dist/ui/separator.cjs.map +1 -0
  685. package/dist/ui/separator.js +27 -0
  686. package/dist/ui/separator.js.map +1 -0
  687. package/dist/ui/sheet.cjs +2 -0
  688. package/dist/ui/sheet.cjs.map +1 -0
  689. package/dist/ui/sheet.js +137 -0
  690. package/dist/ui/sheet.js.map +1 -0
  691. package/dist/ui/sidebar.cjs +2 -0
  692. package/dist/ui/sidebar.cjs.map +1 -0
  693. package/dist/ui/sidebar.js +579 -0
  694. package/dist/ui/sidebar.js.map +1 -0
  695. package/dist/ui/skeleton.cjs +2 -0
  696. package/dist/ui/skeleton.cjs.map +1 -0
  697. package/dist/ui/skeleton.js +24 -0
  698. package/dist/ui/skeleton.js.map +1 -0
  699. package/dist/ui/slider.cjs +2 -0
  700. package/dist/ui/slider.cjs.map +1 -0
  701. package/dist/ui/slider.js +61 -0
  702. package/dist/ui/slider.js.map +1 -0
  703. package/dist/ui/sonner.cjs +2 -0
  704. package/dist/ui/sonner.cjs.map +1 -0
  705. package/dist/ui/sonner.js +52 -0
  706. package/dist/ui/sonner.js.map +1 -0
  707. package/dist/ui/spinner.cjs +2 -0
  708. package/dist/ui/spinner.cjs.map +1 -0
  709. package/dist/ui/spinner.js +39 -0
  710. package/dist/ui/spinner.js.map +1 -0
  711. package/dist/ui/switch.cjs +2 -0
  712. package/dist/ui/switch.cjs.map +1 -0
  713. package/dist/ui/switch.js +32 -0
  714. package/dist/ui/switch.js.map +1 -0
  715. package/dist/ui/table.cjs +2 -0
  716. package/dist/ui/table.cjs.map +1 -0
  717. package/dist/ui/table.js +153 -0
  718. package/dist/ui/table.js.map +1 -0
  719. package/dist/ui/tabs.cjs +2 -0
  720. package/dist/ui/tabs.cjs.map +1 -0
  721. package/dist/ui/tabs.js +92 -0
  722. package/dist/ui/tabs.js.map +1 -0
  723. package/dist/ui/tetra-molecule-icon.cjs +2 -0
  724. package/dist/ui/tetra-molecule-icon.cjs.map +1 -0
  725. package/dist/ui/tetra-molecule-icon.js +50 -0
  726. package/dist/ui/tetra-molecule-icon.js.map +1 -0
  727. package/dist/ui/tetrascience-icon.cjs +2 -0
  728. package/dist/ui/tetrascience-icon.cjs.map +1 -0
  729. package/dist/ui/tetrascience-icon.js +47 -0
  730. package/dist/ui/tetrascience-icon.js.map +1 -0
  731. package/dist/ui/textarea.cjs +2 -0
  732. package/dist/ui/textarea.cjs.map +1 -0
  733. package/dist/ui/textarea.js +19 -0
  734. package/dist/ui/textarea.js.map +1 -0
  735. package/dist/ui/toggle-group.cjs +2 -0
  736. package/dist/ui/toggle-group.cjs.map +1 -0
  737. package/dist/ui/toggle-group.js +81 -0
  738. package/dist/ui/toggle-group.js.map +1 -0
  739. package/dist/ui/toggle.cjs +2 -0
  740. package/dist/ui/toggle.cjs.map +1 -0
  741. package/dist/ui/toggle.js +44 -0
  742. package/dist/ui/toggle.js.map +1 -0
  743. package/dist/ui/tooltip.cjs +2 -0
  744. package/dist/ui/tooltip.cjs.map +1 -0
  745. package/dist/ui/tooltip.js +56 -0
  746. package/dist/ui/tooltip.js.map +1 -0
  747. package/dist/utils/colors.d.ts +50 -0
  748. package/package.json +113 -10
  749. package/dist/athena.d.ts +0 -167
  750. package/dist/components/ai/attachments.cjs +0 -2
  751. package/dist/components/ai/attachments.cjs.map +0 -1
  752. package/dist/components/ai/attachments.js +0 -224
  753. package/dist/components/ai/attachments.js.map +0 -1
  754. package/dist/components/ai/chain-of-thought.cjs +0 -2
  755. package/dist/components/ai/chain-of-thought.cjs.map +0 -1
  756. package/dist/components/ai/chain-of-thought.js +0 -145
  757. package/dist/components/ai/chain-of-thought.js.map +0 -1
  758. package/dist/components/ai/confirmation.cjs +0 -2
  759. package/dist/components/ai/confirmation.cjs.map +0 -1
  760. package/dist/components/ai/confirmation.js +0 -109
  761. package/dist/components/ai/confirmation.js.map +0 -1
  762. package/dist/components/ai/context.cjs +0 -2
  763. package/dist/components/ai/context.cjs.map +0 -1
  764. package/dist/components/ai/context.js +0 -267
  765. package/dist/components/ai/context.js.map +0 -1
  766. package/dist/components/ai/conversation.cjs +0 -4
  767. package/dist/components/ai/conversation.cjs.map +0 -1
  768. package/dist/components/ai/conversation.js +0 -108
  769. package/dist/components/ai/conversation.js.map +0 -1
  770. package/dist/components/ai/inline-citation.cjs +0 -2
  771. package/dist/components/ai/inline-citation.cjs.map +0 -1
  772. package/dist/components/ai/inline-citation.js +0 -182
  773. package/dist/components/ai/inline-citation.js.map +0 -1
  774. package/dist/components/ai/message.cjs +0 -2
  775. package/dist/components/ai/message.cjs.map +0 -1
  776. package/dist/components/ai/message.js +0 -237
  777. package/dist/components/ai/message.js.map +0 -1
  778. package/dist/components/ai/model-selector.cjs +0 -2
  779. package/dist/components/ai/model-selector.cjs.map +0 -1
  780. package/dist/components/ai/model-selector.js +0 -77
  781. package/dist/components/ai/model-selector.js.map +0 -1
  782. package/dist/components/ai/prompt-input.cjs +0 -2
  783. package/dist/components/ai/prompt-input.cjs.map +0 -1
  784. package/dist/components/ai/prompt-input.js +0 -776
  785. package/dist/components/ai/prompt-input.js.map +0 -1
  786. package/dist/components/ai/queue.cjs +0 -2
  787. package/dist/components/ai/queue.cjs.map +0 -1
  788. package/dist/components/ai/queue.js +0 -209
  789. package/dist/components/ai/queue.js.map +0 -1
  790. package/dist/components/ai/reasoning.cjs +0 -2
  791. package/dist/components/ai/reasoning.cjs.map +0 -1
  792. package/dist/components/ai/reasoning.js +0 -129
  793. package/dist/components/ai/reasoning.js.map +0 -1
  794. package/dist/components/ai/shimmer.cjs +0 -2
  795. package/dist/components/ai/shimmer.cjs.map +0 -1
  796. package/dist/components/ai/shimmer.js +0 -49
  797. package/dist/components/ai/shimmer.js.map +0 -1
  798. package/dist/components/ai/sources.cjs +0 -2
  799. package/dist/components/ai/sources.cjs.map +0 -1
  800. package/dist/components/ai/sources.js +0 -54
  801. package/dist/components/ai/sources.js.map +0 -1
  802. package/dist/components/ai/speech-input.cjs +0 -2
  803. package/dist/components/ai/speech-input.cjs.map +0 -1
  804. package/dist/components/ai/speech-input.js +0 -123
  805. package/dist/components/ai/speech-input.js.map +0 -1
  806. package/dist/components/ai/stream-status.cjs +0 -2
  807. package/dist/components/ai/stream-status.cjs.map +0 -1
  808. package/dist/components/ai/stream-status.js +0 -108
  809. package/dist/components/ai/stream-status.js.map +0 -1
  810. package/dist/components/ai/suggestion.cjs +0 -2
  811. package/dist/components/ai/suggestion.cjs.map +0 -1
  812. package/dist/components/ai/suggestion.js +0 -38
  813. package/dist/components/ai/suggestion.js.map +0 -1
  814. package/dist/components/ai/task.cjs +0 -2
  815. package/dist/components/ai/task.cjs.map +0 -1
  816. package/dist/components/ai/task.js +0 -101
  817. package/dist/components/ai/task.js.map +0 -1
  818. package/dist/components/ai/tool.cjs +0 -2
  819. package/dist/components/ai/tool.cjs.map +0 -1
  820. package/dist/components/ai/tool.js +0 -139
  821. package/dist/components/ai/tool.js.map +0 -1
  822. package/dist/components/composed/tdp-link.cjs +0 -2
  823. package/dist/components/composed/tdp-link.cjs.map +0 -1
  824. package/dist/components/composed/tdp-link.js.map +0 -1
  825. package/dist/components/composed/tdp-url.cjs.map +0 -1
  826. package/dist/components/composed/tdp-url.js.map +0 -1
  827. package/dist/components/ui/accordion.cjs +0 -2
  828. package/dist/components/ui/accordion.cjs.map +0 -1
  829. package/dist/components/ui/accordion.js +0 -83
  830. package/dist/components/ui/accordion.js.map +0 -1
  831. package/dist/components/ui/alert-dialog.cjs +0 -2
  832. package/dist/components/ui/alert-dialog.cjs.map +0 -1
  833. package/dist/components/ui/alert-dialog.js +0 -181
  834. package/dist/components/ui/alert-dialog.js.map +0 -1
  835. package/dist/components/ui/alert.cjs +0 -2
  836. package/dist/components/ui/alert.cjs.map +0 -1
  837. package/dist/components/ui/alert.js +0 -81
  838. package/dist/components/ui/alert.js.map +0 -1
  839. package/dist/components/ui/aspect-ratio.cjs.map +0 -1
  840. package/dist/components/ui/aspect-ratio.js.map +0 -1
  841. package/dist/components/ui/avatar.cjs +0 -2
  842. package/dist/components/ui/avatar.cjs.map +0 -1
  843. package/dist/components/ui/avatar.js +0 -107
  844. package/dist/components/ui/avatar.js.map +0 -1
  845. package/dist/components/ui/badge.cjs +0 -2
  846. package/dist/components/ui/badge.cjs.map +0 -1
  847. package/dist/components/ui/badge.js +0 -47
  848. package/dist/components/ui/badge.js.map +0 -1
  849. package/dist/components/ui/banner.cjs +0 -2
  850. package/dist/components/ui/banner.cjs.map +0 -1
  851. package/dist/components/ui/banner.js +0 -80
  852. package/dist/components/ui/banner.js.map +0 -1
  853. package/dist/components/ui/breadcrumb.cjs +0 -2
  854. package/dist/components/ui/breadcrumb.cjs.map +0 -1
  855. package/dist/components/ui/breadcrumb.js +0 -118
  856. package/dist/components/ui/breadcrumb.js.map +0 -1
  857. package/dist/components/ui/button-group.cjs +0 -2
  858. package/dist/components/ui/button-group.cjs.map +0 -1
  859. package/dist/components/ui/button-group.js +0 -77
  860. package/dist/components/ui/button-group.js.map +0 -1
  861. package/dist/components/ui/button.cjs +0 -2
  862. package/dist/components/ui/button.cjs.map +0 -1
  863. package/dist/components/ui/button.js +0 -57
  864. package/dist/components/ui/button.js.map +0 -1
  865. package/dist/components/ui/calendar.cjs +0 -2
  866. package/dist/components/ui/calendar.cjs.map +0 -1
  867. package/dist/components/ui/calendar.js +0 -174
  868. package/dist/components/ui/calendar.js.map +0 -1
  869. package/dist/components/ui/card.cjs +0 -2
  870. package/dist/components/ui/card.cjs.map +0 -1
  871. package/dist/components/ui/card.js +0 -102
  872. package/dist/components/ui/card.js.map +0 -1
  873. package/dist/components/ui/carousel.cjs +0 -2
  874. package/dist/components/ui/carousel.cjs.map +0 -1
  875. package/dist/components/ui/carousel.js +0 -179
  876. package/dist/components/ui/carousel.js.map +0 -1
  877. package/dist/components/ui/checkbox.cjs +0 -2
  878. package/dist/components/ui/checkbox.cjs.map +0 -1
  879. package/dist/components/ui/checkbox.js +0 -35
  880. package/dist/components/ui/checkbox.js.map +0 -1
  881. package/dist/components/ui/code-block.cjs +0 -4
  882. package/dist/components/ui/code-block.cjs.map +0 -1
  883. package/dist/components/ui/code-block.js +0 -324
  884. package/dist/components/ui/code-block.js.map +0 -1
  885. package/dist/components/ui/code-editor.cjs +0 -2
  886. package/dist/components/ui/code-editor.cjs.map +0 -1
  887. package/dist/components/ui/code-editor.js +0 -105
  888. package/dist/components/ui/code-editor.js.map +0 -1
  889. package/dist/components/ui/collapsible.cjs.map +0 -1
  890. package/dist/components/ui/collapsible.js.map +0 -1
  891. package/dist/components/ui/combobox.cjs +0 -2
  892. package/dist/components/ui/combobox.cjs.map +0 -1
  893. package/dist/components/ui/combobox.js +0 -285
  894. package/dist/components/ui/combobox.js.map +0 -1
  895. package/dist/components/ui/command.cjs +0 -2
  896. package/dist/components/ui/command.cjs.map +0 -1
  897. package/dist/components/ui/command.js +0 -178
  898. package/dist/components/ui/command.js.map +0 -1
  899. package/dist/components/ui/context-menu.cjs +0 -2
  900. package/dist/components/ui/context-menu.cjs.map +0 -1
  901. package/dist/components/ui/context-menu.js +0 -236
  902. package/dist/components/ui/context-menu.js.map +0 -1
  903. package/dist/components/ui/dialog.cjs +0 -2
  904. package/dist/components/ui/dialog.cjs.map +0 -1
  905. package/dist/components/ui/dialog.js +0 -165
  906. package/dist/components/ui/dialog.js.map +0 -1
  907. package/dist/components/ui/dropdown-menu.cjs +0 -2
  908. package/dist/components/ui/dropdown-menu.cjs.map +0 -1
  909. package/dist/components/ui/dropdown-menu.js +0 -260
  910. package/dist/components/ui/dropdown-menu.js.map +0 -1
  911. package/dist/components/ui/field.cjs +0 -2
  912. package/dist/components/ui/field.cjs.map +0 -1
  913. package/dist/components/ui/field.js +0 -210
  914. package/dist/components/ui/field.js.map +0 -1
  915. package/dist/components/ui/hover-card.cjs +0 -2
  916. package/dist/components/ui/hover-card.cjs.map +0 -1
  917. package/dist/components/ui/hover-card.js +0 -39
  918. package/dist/components/ui/hover-card.js.map +0 -1
  919. package/dist/components/ui/input-group.cjs +0 -2
  920. package/dist/components/ui/input-group.cjs.map +0 -1
  921. package/dist/components/ui/input-group.js +0 -145
  922. package/dist/components/ui/input-group.js.map +0 -1
  923. package/dist/components/ui/input.cjs +0 -2
  924. package/dist/components/ui/input.cjs.map +0 -1
  925. package/dist/components/ui/input.js +0 -20
  926. package/dist/components/ui/input.js.map +0 -1
  927. package/dist/components/ui/item.cjs +0 -2
  928. package/dist/components/ui/item.cjs.map +0 -1
  929. package/dist/components/ui/item.js +0 -199
  930. package/dist/components/ui/item.js.map +0 -1
  931. package/dist/components/ui/kbd.cjs +0 -2
  932. package/dist/components/ui/kbd.cjs.map +0 -1
  933. package/dist/components/ui/kbd.js +0 -30
  934. package/dist/components/ui/kbd.js.map +0 -1
  935. package/dist/components/ui/label.cjs +0 -2
  936. package/dist/components/ui/label.cjs.map +0 -1
  937. package/dist/components/ui/label.js +0 -23
  938. package/dist/components/ui/label.js.map +0 -1
  939. package/dist/components/ui/menubar.cjs +0 -2
  940. package/dist/components/ui/menubar.cjs.map +0 -1
  941. package/dist/components/ui/menubar.js +0 -256
  942. package/dist/components/ui/menubar.js.map +0 -1
  943. package/dist/components/ui/navigation-menu.cjs +0 -2
  944. package/dist/components/ui/navigation-menu.cjs.map +0 -1
  945. package/dist/components/ui/navigation-menu.js +0 -164
  946. package/dist/components/ui/navigation-menu.js.map +0 -1
  947. package/dist/components/ui/popover.cjs +0 -2
  948. package/dist/components/ui/popover.cjs.map +0 -1
  949. package/dist/components/ui/popover.js +0 -45
  950. package/dist/components/ui/popover.js.map +0 -1
  951. package/dist/components/ui/radio-group.cjs +0 -2
  952. package/dist/components/ui/radio-group.cjs.map +0 -1
  953. package/dist/components/ui/radio-group.js +0 -45
  954. package/dist/components/ui/radio-group.js.map +0 -1
  955. package/dist/components/ui/resizable.cjs +0 -2
  956. package/dist/components/ui/resizable.cjs.map +0 -1
  957. package/dist/components/ui/resizable.js +0 -58
  958. package/dist/components/ui/resizable.js.map +0 -1
  959. package/dist/components/ui/scroll-area.cjs +0 -2
  960. package/dist/components/ui/scroll-area.cjs.map +0 -1
  961. package/dist/components/ui/scroll-area.js +0 -61
  962. package/dist/components/ui/scroll-area.js.map +0 -1
  963. package/dist/components/ui/select.cjs +0 -2
  964. package/dist/components/ui/select.cjs.map +0 -1
  965. package/dist/components/ui/select.js +0 -184
  966. package/dist/components/ui/select.js.map +0 -1
  967. package/dist/components/ui/separator.cjs +0 -2
  968. package/dist/components/ui/separator.cjs.map +0 -1
  969. package/dist/components/ui/separator.js +0 -27
  970. package/dist/components/ui/separator.js.map +0 -1
  971. package/dist/components/ui/sheet.cjs +0 -2
  972. package/dist/components/ui/sheet.cjs.map +0 -1
  973. package/dist/components/ui/sheet.js +0 -137
  974. package/dist/components/ui/sheet.js.map +0 -1
  975. package/dist/components/ui/sidebar.cjs +0 -2
  976. package/dist/components/ui/sidebar.cjs.map +0 -1
  977. package/dist/components/ui/sidebar.js +0 -579
  978. package/dist/components/ui/sidebar.js.map +0 -1
  979. package/dist/components/ui/skeleton.cjs +0 -2
  980. package/dist/components/ui/skeleton.cjs.map +0 -1
  981. package/dist/components/ui/skeleton.js +0 -24
  982. package/dist/components/ui/skeleton.js.map +0 -1
  983. package/dist/components/ui/slider.cjs +0 -2
  984. package/dist/components/ui/slider.cjs.map +0 -1
  985. package/dist/components/ui/slider.js +0 -61
  986. package/dist/components/ui/slider.js.map +0 -1
  987. package/dist/components/ui/sonner.cjs +0 -2
  988. package/dist/components/ui/sonner.cjs.map +0 -1
  989. package/dist/components/ui/sonner.js +0 -52
  990. package/dist/components/ui/sonner.js.map +0 -1
  991. package/dist/components/ui/spinner.cjs +0 -2
  992. package/dist/components/ui/spinner.cjs.map +0 -1
  993. package/dist/components/ui/spinner.js +0 -39
  994. package/dist/components/ui/spinner.js.map +0 -1
  995. package/dist/components/ui/switch.cjs +0 -2
  996. package/dist/components/ui/switch.cjs.map +0 -1
  997. package/dist/components/ui/switch.js +0 -32
  998. package/dist/components/ui/switch.js.map +0 -1
  999. package/dist/components/ui/table.cjs +0 -2
  1000. package/dist/components/ui/table.cjs.map +0 -1
  1001. package/dist/components/ui/table.js +0 -153
  1002. package/dist/components/ui/table.js.map +0 -1
  1003. package/dist/components/ui/tabs.cjs +0 -2
  1004. package/dist/components/ui/tabs.cjs.map +0 -1
  1005. package/dist/components/ui/tabs.js +0 -92
  1006. package/dist/components/ui/tabs.js.map +0 -1
  1007. package/dist/components/ui/tetra-molecule-icon.cjs +0 -2
  1008. package/dist/components/ui/tetra-molecule-icon.cjs.map +0 -1
  1009. package/dist/components/ui/tetra-molecule-icon.js +0 -49
  1010. package/dist/components/ui/tetra-molecule-icon.js.map +0 -1
  1011. package/dist/components/ui/tetrascience-icon.cjs +0 -2
  1012. package/dist/components/ui/tetrascience-icon.cjs.map +0 -1
  1013. package/dist/components/ui/tetrascience-icon.js +0 -46
  1014. package/dist/components/ui/tetrascience-icon.js.map +0 -1
  1015. package/dist/components/ui/textarea.cjs +0 -2
  1016. package/dist/components/ui/textarea.cjs.map +0 -1
  1017. package/dist/components/ui/textarea.js +0 -19
  1018. package/dist/components/ui/textarea.js.map +0 -1
  1019. package/dist/components/ui/toggle-group.cjs +0 -2
  1020. package/dist/components/ui/toggle-group.cjs.map +0 -1
  1021. package/dist/components/ui/toggle-group.js +0 -81
  1022. package/dist/components/ui/toggle-group.js.map +0 -1
  1023. package/dist/components/ui/toggle.cjs +0 -2
  1024. package/dist/components/ui/toggle.cjs.map +0 -1
  1025. package/dist/components/ui/toggle.js +0 -44
  1026. package/dist/components/ui/toggle.js.map +0 -1
  1027. package/dist/components/ui/tooltip.cjs +0 -2
  1028. package/dist/components/ui/tooltip.cjs.map +0 -1
  1029. package/dist/components/ui/tooltip.js +0 -56
  1030. package/dist/components/ui/tooltip.js.map +0 -1
  1031. package/dist/databricks.d.ts +0 -129
  1032. package/dist/providers/athena.d.ts +0 -9
  1033. package/dist/providers/databricks.d.ts +0 -9
  1034. package/dist/providers/snowflake.d.ts +0 -9
  1035. package/dist/snowflake.d.ts +0 -125
  1036. /package/dist/{components/composed → composed}/tdp-link.js +0 -0
  1037. /package/dist/{components/composed → composed}/tdp-url.cjs +0 -0
  1038. /package/dist/{components/composed → composed}/tdp-url.js +0 -0
  1039. /package/dist/{components/ui → ui}/aspect-ratio.cjs +0 -0
  1040. /package/dist/{components/ui → ui}/aspect-ratio.js +0 -0
  1041. /package/dist/{components/ui → ui}/collapsible.cjs +0 -0
  1042. /package/dist/{components/ui → ui}/collapsible.js +0 -0
@@ -0,0 +1,226 @@
1
+ /**
2
+ * A single data point in the scatter plot
3
+ */
4
+ export interface ScatterPoint {
5
+ /** Unique identifier for the point */
6
+ id: string | number;
7
+ /** X-axis value */
8
+ x: number;
9
+ /** Y-axis value */
10
+ y: number;
11
+ /** Optional label for the point */
12
+ label?: string;
13
+ /** Additional metadata for tooltips and styling */
14
+ metadata?: Record<string, unknown>;
15
+ }
16
+ /**
17
+ * Scale type for axes
18
+ */
19
+ export type ScaleType = "linear" | "log";
20
+ /**
21
+ * Marker shape for scatter points
22
+ */
23
+ export type MarkerShape = "circle" | "square" | "diamond" | "cross" | "x" | "triangle-up" | "triangle-down" | "star";
24
+ /**
25
+ * Selection mode for interactive selection
26
+ */
27
+ export type SelectionMode = "replace" | "add" | "remove" | "toggle";
28
+ /**
29
+ * Color mapping configuration
30
+ */
31
+ export interface ColorMapping {
32
+ /** Type of mapping: data-driven or static */
33
+ type: "static" | "continuous" | "categorical";
34
+ /** Static color value (for type: "static") */
35
+ value?: string;
36
+ /** Data field to map (for type: "continuous" | "categorical") */
37
+ field?: string;
38
+ /** Color scale for continuous mapping */
39
+ colorScale?: string | Array<[number, string]>;
40
+ /** Discrete colors for categorical mapping */
41
+ categoryColors?: Record<string, string>;
42
+ /** Min/max values for continuous mapping (auto-calculated if not provided) */
43
+ min?: number;
44
+ max?: number;
45
+ }
46
+ /**
47
+ * Shape mapping configuration
48
+ */
49
+ export interface ShapeMapping {
50
+ /** Type of mapping: data-driven or static */
51
+ type: "static" | "categorical";
52
+ /** Static shape value (for type: "static") */
53
+ value?: MarkerShape;
54
+ /** Data field to map (for type: "categorical") */
55
+ field?: string;
56
+ /** Shape mapping for categorical values */
57
+ categoryShapes?: Record<string, MarkerShape>;
58
+ }
59
+ /**
60
+ * Size mapping configuration
61
+ */
62
+ export interface SizeMapping {
63
+ /** Type of mapping: data-driven or static */
64
+ type: "static" | "continuous" | "categorical";
65
+ /** Static size value (for type: "static") */
66
+ value?: number;
67
+ /** Data field to map (for type: "continuous" | "categorical") */
68
+ field?: string;
69
+ /** Size range for continuous mapping */
70
+ sizeRange?: [number, number];
71
+ /** Discrete sizes for categorical mapping */
72
+ categorySizes?: Record<string, number>;
73
+ /** Min/max values for continuous mapping (auto-calculated if not provided) */
74
+ min?: number;
75
+ max?: number;
76
+ }
77
+ /**
78
+ * Axis configuration
79
+ */
80
+ export interface AxisConfig {
81
+ /** Axis label */
82
+ title?: string;
83
+ /** Scale type (linear or log) */
84
+ scale?: ScaleType;
85
+ /** Fixed axis range [min, max] */
86
+ range?: [number, number];
87
+ /** Auto-range with optional padding percentage (0-1) */
88
+ autoRange?: boolean;
89
+ /** Padding percentage for auto-range (default: 0.1 = 10%) */
90
+ autoRangePadding?: number;
91
+ }
92
+ /**
93
+ * Tooltip configuration
94
+ */
95
+ export interface TooltipConfig {
96
+ /** Enable/disable tooltips */
97
+ enabled?: boolean;
98
+ /** Custom tooltip content function. Lines are separated with `<br>`. */
99
+ content?: (point: ScatterPoint) => string;
100
+ /** Fields to display in default tooltip */
101
+ fields?: string[];
102
+ /**
103
+ * Use Plotly's built-in hover labels instead of the theme-styled
104
+ * HTML tooltip rendered by the component.
105
+ * @default false
106
+ */
107
+ native?: boolean;
108
+ }
109
+ /**
110
+ * Selection state
111
+ */
112
+ export interface SelectionState {
113
+ /** Array of selected point IDs */
114
+ selectedIds: Set<string | number>;
115
+ }
116
+ /**
117
+ * Downsampling configuration for performance optimization
118
+ */
119
+ export interface DownsamplingConfig {
120
+ /** Enable downsampling */
121
+ enabled: boolean;
122
+ /** Target number of points to display */
123
+ maxPoints?: number;
124
+ /** Downsampling strategy */
125
+ strategy?: "lttb";
126
+ }
127
+ /**
128
+ * Props for ScatterPlotInteractive component
129
+ */
130
+ export interface ScatterPlotInteractiveProps {
131
+ /**
132
+ * Array of data points to plot
133
+ */
134
+ data: ScatterPoint[];
135
+ /**
136
+ * Chart title
137
+ */
138
+ title?: string;
139
+ /**
140
+ * X-axis configuration
141
+ */
142
+ xAxis?: AxisConfig;
143
+ /**
144
+ * Y-axis configuration
145
+ */
146
+ yAxis?: AxisConfig;
147
+ /**
148
+ * Color mapping configuration
149
+ */
150
+ colorMapping?: ColorMapping;
151
+ /**
152
+ * Shape mapping configuration
153
+ */
154
+ shapeMapping?: ShapeMapping;
155
+ /**
156
+ * Size mapping configuration
157
+ */
158
+ sizeMapping?: SizeMapping;
159
+ /**
160
+ * Tooltip configuration
161
+ */
162
+ tooltip?: TooltipConfig;
163
+ /**
164
+ * Enable click selection
165
+ * @default true
166
+ */
167
+ enableClickSelection?: boolean;
168
+ /**
169
+ * Enable box selection (drag to select rectangular region)
170
+ * @default true
171
+ */
172
+ enableBoxSelection?: boolean;
173
+ /**
174
+ * Enable lasso selection (freeform selection)
175
+ * @default true
176
+ */
177
+ enableLassoSelection?: boolean;
178
+ /**
179
+ * Controlled selection state.
180
+ * If provided, component operates in controlled mode.
181
+ */
182
+ selectedIds?: Set<string | number>;
183
+ /**
184
+ * Callback when selection changes
185
+ */
186
+ onSelectionChange?: (selectedIds: Set<string | number>, mode: SelectionMode) => void;
187
+ /**
188
+ * Callback when a point is clicked
189
+ */
190
+ onPointClick?: (point: ScatterPoint, event: MouseEvent) => void;
191
+ /**
192
+ * Downsampling configuration for large datasets
193
+ */
194
+ downsampling?: DownsamplingConfig;
195
+ /**
196
+ * Chart width in pixels
197
+ * @default 800
198
+ */
199
+ width?: number;
200
+ /**
201
+ * Chart height in pixels
202
+ * @default 600
203
+ */
204
+ height?: number;
205
+ /**
206
+ * Show the continuous color-scale bar when using a continuous `colorMapping`.
207
+ * Has no effect for categorical or static mappings.
208
+ * @default true
209
+ */
210
+ showColorBar?: boolean;
211
+ /**
212
+ * Custom CSS class name
213
+ */
214
+ className?: string;
215
+ }
216
+ /**
217
+ * Data format for selection propagation between components
218
+ */
219
+ export interface SelectionEvent {
220
+ /** Array of selected point IDs */
221
+ selectedIds: Set<string | number>;
222
+ /** Selection mode used */
223
+ mode: SelectionMode;
224
+ /** Source component identifier (optional) */
225
+ source?: string;
226
+ }
@@ -0,0 +1,72 @@
1
+ import { AxisConfig, ColorMapping, DownsamplingConfig, ScatterPoint, SelectionMode, ShapeMapping, SizeMapping } from './types';
2
+ import { PlotlyThemeColors } from '../../../hooks/use-plotly-theme';
3
+ /**
4
+ * Calculate min and max values for a numeric field in the data
5
+ */
6
+ export declare function calculateRange(data: ScatterPoint[], field: string): {
7
+ min: number;
8
+ max: number;
9
+ };
10
+ /**
11
+ * Get unique categorical values from a field
12
+ */
13
+ export declare function getUniqueCategories(data: ScatterPoint[], field: string): string[];
14
+ /**
15
+ * Map colors based on color mapping configuration
16
+ */
17
+ export declare function mapColors(data: ScatterPoint[], colorMapping?: ColorMapping): string[];
18
+ /**
19
+ * Map shapes based on shape mapping configuration
20
+ */
21
+ export declare function mapShapes(data: ScatterPoint[], shapeMapping?: ShapeMapping): string[];
22
+ /**
23
+ * Map sizes based on size mapping configuration
24
+ */
25
+ export declare function mapSizes(data: ScatterPoint[], sizeMapping?: SizeMapping): number[];
26
+ /**
27
+ * Downsample data using specified strategy
28
+ */
29
+ export declare function downsampleData(data: ScatterPoint[], config: DownsamplingConfig): ScatterPoint[];
30
+ /**
31
+ * Largest Triangle Three Buckets (LTTB) downsampling algorithm.
32
+ * Preserves the visual shape of the data by maximizing the triangle area
33
+ * formed by adjacent bucket centroids and each candidate point.
34
+ * Exported for unit testing
35
+ */
36
+ export declare function lttbDownsample(data: ScatterPoint[], threshold: number): ScatterPoint[];
37
+ /**
38
+ * Generate default tooltip content
39
+ */
40
+ export declare function generateTooltipContent(point: ScatterPoint, fields?: string[]): string;
41
+ /**
42
+ * Determine selection mode from keyboard event
43
+ */
44
+ export declare function getSelectionMode(event: {
45
+ shiftKey: boolean;
46
+ ctrlKey: boolean;
47
+ metaKey: boolean;
48
+ }): SelectionMode;
49
+ /**
50
+ * Calculate axis range with padding.
51
+ *
52
+ * When `scale` is `"log"`, the returned range is in log10 units (what Plotly
53
+ * expects for `type: "log"` axes), and padding is applied in log-space so that
54
+ * the visual margin is proportional on the logarithmic axis.
55
+ */
56
+ export declare function calculateAxisRange(data: ScatterPoint[], axis: "x" | "y", padding?: number, scale?: "linear" | "log"): [number, number];
57
+ /**
58
+ * Apply selection to a set of point IDs
59
+ */
60
+ export declare function applySelection(currentSelection: Set<string | number>, newIds: Set<string | number>, mode: SelectionMode): Set<string | number>;
61
+ export declare const getPlotlyLayoutConfig: ({ title, xAxis, yAxis, width, height, xRange, yRange, enableLassoSelection, enableBoxSelection, theme, }: {
62
+ title: string | undefined;
63
+ xAxis: AxisConfig;
64
+ yAxis: AxisConfig;
65
+ width: number;
66
+ height: number;
67
+ xRange: [number, number] | undefined;
68
+ yRange: [number, number] | undefined;
69
+ enableLassoSelection: boolean;
70
+ enableBoxSelection: boolean;
71
+ theme: PlotlyThemeColors;
72
+ }) => Partial<Plotly.Layout>;
@@ -0,0 +1,3 @@
1
+ import { StackedChromatogramProps } from './types';
2
+ export declare function StackedChromatogram({ series, stackingMode, stackOffset, stackingOrder, annotations, ...restProps }: StackedChromatogramProps): import("react/jsx-runtime").JSX.Element;
3
+ export default StackedChromatogram;
@@ -0,0 +1,3 @@
1
+ export { StackedChromatogram } from './StackedChromatogram';
2
+ export type { StackedChromatogramProps, StackingMode } from './types';
3
+ export { applyStackingTransform } from './transforms';
@@ -0,0 +1,9 @@
1
+ import { ChromatogramSeries, PeakAnnotation } from '../Chromatogram';
2
+ import { StackingMode } from './types';
3
+ interface TransformResult {
4
+ series: ChromatogramSeries[];
5
+ annotations: PeakAnnotation[];
6
+ yRange: [number, number];
7
+ }
8
+ export declare function applyStackingTransform(inputSeries: ChromatogramSeries[], inputAnnotations: PeakAnnotation[][] | undefined, mode: StackingMode, stackOffset: number, stackingOrder?: "first-on-bottom" | "first-on-top"): TransformResult;
9
+ export {};
@@ -0,0 +1,26 @@
1
+ import { ChromatogramProps, ChromatogramSeries, PeakAnnotation } from '../Chromatogram';
2
+ export type StackingMode = "overlay" | "stack";
3
+ export interface StackedChromatogramProps extends Omit<ChromatogramProps, "series" | "annotations" | "yRange"> {
4
+ /** Array of data series to display */
5
+ series: ChromatogramSeries[];
6
+ /** Stacking mode: 'overlay' (default) or 'stack' */
7
+ stackingMode?: StackingMode;
8
+ /**
9
+ * Y-offset between stacked series in data units (e.g., AU).
10
+ * Only applies in 'stack' mode; ignored in 'overlay'.
11
+ */
12
+ stackOffset?: number;
13
+ /**
14
+ * Peak annotations per series, parallel to the series array.
15
+ * annotations[i] corresponds to series[i].
16
+ * In stack mode, y values are shifted by the series offset.
17
+ */
18
+ annotations?: PeakAnnotation[][];
19
+ /**
20
+ * Controls which end of the stack series[0] lands on (stack mode only).
21
+ * - "first-on-bottom" (default) — series[0] sits at the base; series[N-1] is highest.
22
+ * - "first-on-top" — series[0] is shifted to the top; series[N-1] is at the base.
23
+ * Annotations follow the chosen direction.
24
+ */
25
+ stackingOrder?: "first-on-bottom" | "first-on-top";
26
+ }
@@ -1,2 +1,2 @@
1
- "use strict";var c=Object.create;var d=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var u=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty;var P=(t,e,l,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of y(e))!p.call(t,o)&&o!==l&&d(t,o,{get:()=>e[o],enumerable:!(a=s(e,o))||a.enumerable});return t};var f=(t,e,l)=>(l=t!=null?c(u(t)):{},P(e||!t||!t.__esModule?d(l,"default",{value:t,enumerable:!0}):l,t));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i="Failed to load 'plotly.js-dist'. It is an optional peer dependency of @tetrascience-npm/tetrascience-react-ui required by the chart components — install it in your app (e.g. `yarn add plotly.js-dist`).";let r=null,n=null;function h(){return n??=import("plotly.js-dist").then(t=>{const e=t;return r=e.default??e,r}).catch(t=>{throw n=null,console.error(i,t),new Error(i)}),n}function w(){if(!r)throw new Error("Plotly accessed before loadPlotly() resolved. Call loadPlotly() and draw the plot first.");return r}exports.getLoadedPlotly=w;exports.loadPlotly=h;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function d(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const l in e)if(l!=="default"){const n=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,n.get?n:{enumerable:!0,get:()=>e[l]})}}return t.default=e,Object.freeze(t)}const a="Failed to load 'plotly.js-dist'. It is an optional peer dependency of @tetrascience-npm/tetrascience-react-ui required by the chart components — install it in your app (e.g. `yarn add plotly.js-dist`).";let o=null,r=null;function i(){return r??=Promise.resolve().then(()=>d(require("plotly.js-dist"))).then(e=>{const t=e;return o=t.default??t,o}).catch(e=>{throw r=null,console.error(a,e),new Error(a)}),r}function c(){if(!o)throw new Error("Plotly accessed before loadPlotly() resolved. Call loadPlotly() and draw the plot first.");return o}exports.getLoadedPlotly=c;exports.loadPlotly=i;
2
2
  //# sourceMappingURL=plotly-loader.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"plotly-loader.cjs","sources":["../../../src/components/charts/plotly-loader.ts"],"sourcesContent":["/**\n * Lazy Plotly loader (SW-2007).\n *\n * The kit ships preserved ES modules with all dependencies externalized, so a\n * static `import Plotly from \"plotly.js-dist\"` in any chart lands the full\n * ~4.7 MB Plotly dist in the consumer's main chunk — before any chart renders.\n * Loading it through this module's dynamic `import()` instead lets consumer\n * bundlers split Plotly into its own chunk, fetched only when a chart mounts.\n *\n * Chart components must call `loadPlotly()` before drawing. Code that only\n * runs after a plot exists (hover handlers, resize relayouts, unmount purges)\n * can use the synchronous `getLoadedPlotly()`.\n *\n * `plotly.js-dist` is an *optional* peer dependency (SW-2007): consumers that\n * use the kit's charts must add it to their own app; consumers that don't\n * never install its ~4.7 MB. A missing peer surfaces at build time as an\n * unresolved-import error from the consumer's bundler; the runtime guard below\n * covers the rarer case where the import resolves but fails to evaluate.\n */\n\ntype PlotlyModule = typeof import(\"plotly.js-dist\");\n\nconst MISSING_PLOTLY_MESSAGE =\n \"Failed to load 'plotly.js-dist'. It is an optional peer dependency of \" +\n \"@tetrascience-npm/tetrascience-react-ui required by the chart components — \" +\n \"install it in your app (e.g. `yarn add plotly.js-dist`).\";\n\nlet loadedPlotly: PlotlyModule | null = null;\nlet plotlyPromise: Promise<PlotlyModule> | null = null;\n\n/** Import Plotly on first use; subsequent calls reuse the same promise. */\nexport function loadPlotly(): Promise<PlotlyModule> {\n plotlyPromise ??= import(\"plotly.js-dist\")\n .then((mod) => {\n // plotly.js-dist is CJS; depending on the consumer's bundler interop the\n // API surface is either the namespace itself or its `default` export.\n const withDefault = mod as PlotlyModule & { default?: PlotlyModule };\n loadedPlotly = withDefault.default ?? withDefault;\n return loadedPlotly;\n })\n .catch((error: unknown) => {\n // Reset so a later mount can retry, and rethrow with install guidance.\n plotlyPromise = null;\n console.error(MISSING_PLOTLY_MESSAGE, error);\n throw new Error(MISSING_PLOTLY_MESSAGE);\n });\n return plotlyPromise;\n}\n\n/**\n * Synchronous access to the loaded Plotly module. Only valid after\n * `loadPlotly()` has resolved — i.e. in code paths that can only run once a\n * plot has been drawn (event handlers, cleanups, resize effects).\n */\nexport function getLoadedPlotly(): PlotlyModule {\n if (!loadedPlotly) {\n throw new Error(\n \"Plotly accessed before loadPlotly() resolved. Call loadPlotly() and draw the plot first.\",\n );\n }\n return loadedPlotly;\n}\n\nexport type { PlotlyModule };\n"],"names":["MISSING_PLOTLY_MESSAGE","loadedPlotly","plotlyPromise","loadPlotly","mod","withDefault","error","getLoadedPlotly"],"mappings":"2hBAsBA,MAAMA,EACJ,4MAIF,IAAIC,EAAoC,KACpCC,EAA8C,KAG3C,SAASC,GAAoC,CAClD,OAAAD,IAAkB,OAAO,gBAAgB,EACtC,KAAME,GAAQ,CAGb,MAAMC,EAAcD,EACpB,OAAAH,EAAeI,EAAY,SAAWA,EAC/BJ,CACT,CAAC,EACA,MAAOK,GAAmB,CAEzB,MAAAJ,EAAgB,KAChB,QAAQ,MAAMF,EAAwBM,CAAK,EACrC,IAAI,MAAMN,CAAsB,CACxC,CAAC,EACIE,CACT,CAOO,SAASK,GAAgC,CAC9C,GAAI,CAACN,EACH,MAAM,IAAI,MACR,0FAAA,EAGJ,OAAOA,CACT"}
1
+ {"version":3,"file":"plotly-loader.cjs","sources":["../../../src/components/charts/plotly-loader.ts"],"sourcesContent":["/**\n * Lazy Plotly loader (SW-2007).\n *\n * The kit ships preserved ES modules with all dependencies externalized, so a\n * static `import Plotly from \"plotly.js-dist\"` in any chart lands the full\n * ~4.7 MB Plotly dist in the consumer's main chunk — before any chart renders.\n * Loading it through this module's dynamic `import()` instead lets consumer\n * bundlers split Plotly into its own chunk, fetched only when a chart mounts.\n *\n * Chart components must call `loadPlotly()` before drawing. Code that only\n * runs after a plot exists (hover handlers, resize relayouts, unmount purges)\n * can use the synchronous `getLoadedPlotly()`.\n *\n * `plotly.js-dist` is an *optional* peer dependency (SW-2007): consumers that\n * use the kit's charts must add it to their own app; consumers that don't\n * never install its ~4.7 MB. A missing peer surfaces at build time as an\n * unresolved-import error from the consumer's bundler; the runtime guard below\n * covers the rarer case where the import resolves but fails to evaluate.\n */\n\ntype PlotlyModule = typeof import(\"plotly.js-dist\");\n\nconst MISSING_PLOTLY_MESSAGE =\n \"Failed to load 'plotly.js-dist'. It is an optional peer dependency of \" +\n \"@tetrascience-npm/tetrascience-react-ui required by the chart components — \" +\n \"install it in your app (e.g. `yarn add plotly.js-dist`).\";\n\nlet loadedPlotly: PlotlyModule | null = null;\nlet plotlyPromise: Promise<PlotlyModule> | null = null;\n\n/** Import Plotly on first use; subsequent calls reuse the same promise. */\nexport function loadPlotly(): Promise<PlotlyModule> {\n plotlyPromise ??= import(\"plotly.js-dist\")\n .then((mod) => {\n // plotly.js-dist is CJS; depending on the consumer's bundler interop the\n // API surface is either the namespace itself or its `default` export.\n const withDefault = mod as PlotlyModule & { default?: PlotlyModule };\n loadedPlotly = withDefault.default ?? withDefault;\n return loadedPlotly;\n })\n .catch((error: unknown) => {\n // Reset so a later mount can retry, and rethrow with install guidance.\n plotlyPromise = null;\n console.error(MISSING_PLOTLY_MESSAGE, error);\n throw new Error(MISSING_PLOTLY_MESSAGE);\n });\n return plotlyPromise;\n}\n\n/**\n * Synchronous access to the loaded Plotly module. Only valid after\n * `loadPlotly()` has resolved — i.e. in code paths that can only run once a\n * plot has been drawn (event handlers, cleanups, resize effects).\n */\nexport function getLoadedPlotly(): PlotlyModule {\n if (!loadedPlotly) {\n throw new Error(\n \"Plotly accessed before loadPlotly() resolved. Call loadPlotly() and draw the plot first.\",\n );\n }\n return loadedPlotly;\n}\n\nexport type { PlotlyModule };\n"],"names":["MISSING_PLOTLY_MESSAGE","loadedPlotly","plotlyPromise","loadPlotly","_interopNamespaceDefault","mod","withDefault","error","getLoadedPlotly"],"mappings":"6VAsBA,MAAMA,EACJ,4MAIF,IAAIC,EAAoC,KACpCC,EAA8C,KAG3C,SAASC,GAAoC,CAClD,OAAAD,IAAkB,QAAA,QAAA,EAAA,KAAA,IAAAE,EAAA,QAAO,gBAAgB,CAAA,CAAA,EACtC,KAAMC,GAAQ,CAGb,MAAMC,EAAcD,EACpB,OAAAJ,EAAeK,EAAY,SAAWA,EAC/BL,CACT,CAAC,EACA,MAAOM,GAAmB,CAEzB,MAAAL,EAAgB,KAChB,QAAQ,MAAMF,EAAwBO,CAAK,EACrC,IAAI,MAAMP,CAAsB,CACxC,CAAC,EACIE,CACT,CAOO,SAASM,GAAgC,CAC9C,GAAI,CAACP,EACH,MAAM,IAAI,MACR,0FAAA,EAGJ,OAAOA,CACT"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Lazy Plotly loader (SW-2007).
3
+ *
4
+ * The kit ships preserved ES modules with all dependencies externalized, so a
5
+ * static `import Plotly from "plotly.js-dist"` in any chart lands the full
6
+ * ~4.7 MB Plotly dist in the consumer's main chunk — before any chart renders.
7
+ * Loading it through this module's dynamic `import()` instead lets consumer
8
+ * bundlers split Plotly into its own chunk, fetched only when a chart mounts.
9
+ *
10
+ * Chart components must call `loadPlotly()` before drawing. Code that only
11
+ * runs after a plot exists (hover handlers, resize relayouts, unmount purges)
12
+ * can use the synchronous `getLoadedPlotly()`.
13
+ *
14
+ * `plotly.js-dist` is an *optional* peer dependency (SW-2007): consumers that
15
+ * use the kit's charts must add it to their own app; consumers that don't
16
+ * never install its ~4.7 MB. A missing peer surfaces at build time as an
17
+ * unresolved-import error from the consumer's bundler; the runtime guard below
18
+ * covers the rarer case where the import resolves but fails to evaluate.
19
+ */
20
+ type PlotlyModule = typeof import("plotly.js-dist");
21
+ /** Import Plotly on first use; subsequent calls reuse the same promise. */
22
+ export declare function loadPlotly(): Promise<PlotlyModule>;
23
+ /**
24
+ * Synchronous access to the loaded Plotly module. Only valid after
25
+ * `loadPlotly()` has resolved — i.e. in code paths that can only run once a
26
+ * plot has been drawn (event handlers, cleanups, resize effects).
27
+ */
28
+ export declare function getLoadedPlotly(): PlotlyModule;
29
+ export type { PlotlyModule };
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),j=require("lucide-react"),k=require("react"),p=require("./dockLayout.cjs"),D=require("../../ui/button.cjs"),x=require("../../ui/resizable.cjs"),u=require("../../../lib/utils.cjs");function L(n){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const e in n)if(e!=="default"){const o=Object.getOwnPropertyDescriptor(n,e);Object.defineProperty(t,e,o.get?o:{enumerable:!0,get:()=>n[e]})}}return t.default=n,Object.freeze(t)}const l=L(k),N=l.createContext(null);function I(n,t){if(typeof window>"u")return t;const e=window.localStorage.getItem(`${n}.dock`);return e==="right"||e==="bottom"||e==="left"?e:t}function C(n,t){if(typeof window>"u")return t;const e=Number(window.localStorage.getItem(`${n}.size`));return!Number.isFinite(e)||e<=0||e>=100?t:e}function R({children:n,storageKey:t="ts-ui.assistant",defaultDock:e="left",defaultSize:o=32,defaultVisible:f=!0,persist:i=!0}){const[a,c]=l.useState(()=>i?I(t,e):e),[m,r]=l.useState(()=>i?C(t,o):o),[h,S]=l.useState(f),w=l.useCallback(d=>{c(d),i&&typeof window<"u"&&window.localStorage.setItem(`${t}.dock`,d)},[t,i]),b=l.useCallback(d=>{r(d),i&&typeof window<"u"&&window.localStorage.setItem(`${t}.size`,String(Math.round(d)))},[t,i]),v=l.useMemo(()=>({dock:a,setDock:w,size:m,setSize:b,visible:h,setVisible:S}),[a,w,m,b,h]);return s.jsx(N.Provider,{value:v,children:n})}function y(){const n=l.useContext(N);if(!n)throw new Error("useAssistantLayout must be used within an AssistantLayoutProvider");return n}const O=[{value:"left",label:"Dock assistant left",Icon:j.PanelLeft},{value:"bottom",label:"Dock assistant bottom",Icon:j.PanelBottom},{value:"right",label:"Dock assistant right",Icon:j.PanelRight}];function _({label:n="AI Assistant",className:t}){const{dock:e,setDock:o,visible:f,setVisible:i}=y();return s.jsxs("div",{className:u.cn("flex items-center gap-2",t),children:[n!=null&&s.jsx("span",{className:"text-sm font-medium",children:n}),s.jsx("div",{className:"inline-flex overflow-hidden rounded-lg border border-border",children:O.map(({value:a,label:c,Icon:m})=>{const r=f&&e===a;return s.jsx(D.Button,{variant:r?"secondary":"ghost",size:"icon-sm",className:"rounded-none bg-clip-border","aria-label":r?"Hide AI Assistant":c,"aria-pressed":r,title:r?"Hide AI Assistant":c,onClick:()=>{r?i(!1):(o(a),i(!0))},children:s.jsx(m,{className:"size-4"})},a)})})]})}const A="flex min-h-0 min-w-0 p-2",g="flex h-full min-h-0 min-w-0 flex-1 flex-col overflow-hidden rounded-lg border border-border bg-card",z="assistant";function q({assistant:n,children:t,minSize:e=20,maxSize:o=70,className:f,assistantClassName:i,contentClassName:a}){const{dock:c,size:m,setSize:r,visible:h}=y(),{orientation:S,assistantFirst:w}=p.dockPanels(c);if(!h)return s.jsx("div",{"data-slot":"assistant-layout",className:u.cn("flex min-h-0 flex-1 overflow-hidden",f),children:s.jsx("div",{className:u.cn(A,"flex-1"),children:s.jsx("div",{"data-slot":"assistant-layout-content",className:u.cn(g,a),children:t})})});const b=s.jsx(x.ResizablePanel,{id:z,defaultSize:`${m}%`,minSize:`${e}%`,maxSize:`${o}%`,className:A,children:s.jsx("div",{"data-slot":"assistant-layout-assistant",className:u.cn(g,i),children:n})}),v=s.jsx(x.ResizablePanel,{id:"content",className:A,children:s.jsx("div",{"data-slot":"assistant-layout-content",className:u.cn(g,a),children:t})});return s.jsx(x.ResizablePanelGroup,{orientation:S,"data-slot":"assistant-layout",className:u.cn("min-h-0 flex-1 overflow-hidden",f),onLayoutChanged:d=>{const P=d[z];typeof P=="number"&&r(P)},children:w?s.jsxs(s.Fragment,{children:[b,s.jsx(x.ResizableHandle,{withHandle:!0}),v]}):s.jsxs(s.Fragment,{children:[v,s.jsx(x.ResizableHandle,{withHandle:!0}),b]})},c)}exports.AssistantDockControls=_;exports.AssistantLayout=q;exports.AssistantLayoutProvider=R;exports.useAssistantLayout=y;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),j=require("lucide-react"),k=require("react"),p=require("./dockLayout.cjs"),D=require("../../../ui/button.cjs"),x=require("../../../ui/resizable.cjs"),u=require("../../../lib/utils.cjs");function L(n){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const e in n)if(e!=="default"){const o=Object.getOwnPropertyDescriptor(n,e);Object.defineProperty(t,e,o.get?o:{enumerable:!0,get:()=>n[e]})}}return t.default=n,Object.freeze(t)}const l=L(k),N=l.createContext(null);function I(n,t){if(typeof window>"u")return t;const e=window.localStorage.getItem(`${n}.dock`);return e==="right"||e==="bottom"||e==="left"?e:t}function C(n,t){if(typeof window>"u")return t;const e=Number(window.localStorage.getItem(`${n}.size`));return!Number.isFinite(e)||e<=0||e>=100?t:e}function R({children:n,storageKey:t="ts-ui.assistant",defaultDock:e="left",defaultSize:o=32,defaultVisible:f=!0,persist:i=!0}){const[a,c]=l.useState(()=>i?I(t,e):e),[m,r]=l.useState(()=>i?C(t,o):o),[h,S]=l.useState(f),w=l.useCallback(d=>{c(d),i&&typeof window<"u"&&window.localStorage.setItem(`${t}.dock`,d)},[t,i]),b=l.useCallback(d=>{r(d),i&&typeof window<"u"&&window.localStorage.setItem(`${t}.size`,String(Math.round(d)))},[t,i]),v=l.useMemo(()=>({dock:a,setDock:w,size:m,setSize:b,visible:h,setVisible:S}),[a,w,m,b,h]);return s.jsx(N.Provider,{value:v,children:n})}function y(){const n=l.useContext(N);if(!n)throw new Error("useAssistantLayout must be used within an AssistantLayoutProvider");return n}const _=[{value:"left",label:"Dock assistant left",Icon:j.PanelLeft},{value:"bottom",label:"Dock assistant bottom",Icon:j.PanelBottom},{value:"right",label:"Dock assistant right",Icon:j.PanelRight}];function O({label:n="AI Assistant",className:t}){const{dock:e,setDock:o,visible:f,setVisible:i}=y();return s.jsxs("div",{className:u.cn("flex items-center gap-2",t),children:[n!=null&&s.jsx("span",{className:"text-sm font-medium",children:n}),s.jsx("div",{className:"inline-flex overflow-hidden rounded-lg border border-border",children:_.map(({value:a,label:c,Icon:m})=>{const r=f&&e===a;return s.jsx(D.Button,{variant:r?"secondary":"ghost",size:"icon-sm",className:"rounded-none bg-clip-border","aria-label":r?"Hide AI Assistant":c,"aria-pressed":r,title:r?"Hide AI Assistant":c,onClick:()=>{r?i(!1):(o(a),i(!0))},children:s.jsx(m,{className:"size-4"})},a)})})]})}const A="flex min-h-0 min-w-0 p-2",g="flex h-full min-h-0 min-w-0 flex-1 flex-col overflow-hidden rounded-lg border border-border bg-card",z="assistant";function q({assistant:n,children:t,minSize:e=20,maxSize:o=70,className:f,assistantClassName:i,contentClassName:a}){const{dock:c,size:m,setSize:r,visible:h}=y(),{orientation:S,assistantFirst:w}=p.dockPanels(c);if(!h)return s.jsx("div",{"data-slot":"assistant-layout",className:u.cn("flex min-h-0 flex-1 overflow-hidden",f),children:s.jsx("div",{className:u.cn(A,"flex-1"),children:s.jsx("div",{"data-slot":"assistant-layout-content",className:u.cn(g,a),children:t})})});const b=s.jsx(x.ResizablePanel,{id:z,defaultSize:`${m}%`,minSize:`${e}%`,maxSize:`${o}%`,className:A,children:s.jsx("div",{"data-slot":"assistant-layout-assistant",className:u.cn(g,i),children:n})}),v=s.jsx(x.ResizablePanel,{id:"content",className:A,children:s.jsx("div",{"data-slot":"assistant-layout-content",className:u.cn(g,a),children:t})});return s.jsx(x.ResizablePanelGroup,{orientation:S,"data-slot":"assistant-layout",className:u.cn("min-h-0 flex-1 overflow-hidden",f),onLayoutChanged:d=>{const P=d[z];typeof P=="number"&&r(P)},children:w?s.jsxs(s.Fragment,{children:[b,s.jsx(x.ResizableHandle,{withHandle:!0}),v]}):s.jsxs(s.Fragment,{children:[v,s.jsx(x.ResizableHandle,{withHandle:!0}),b]})},c)}exports.AssistantDockControls=O;exports.AssistantLayout=q;exports.AssistantLayoutProvider=R;exports.useAssistantLayout=y;
2
2
  //# sourceMappingURL=AssistantLayout.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantLayout.cjs","sources":["../../../../src/components/composed/AssistantLayout/AssistantLayout.tsx"],"sourcesContent":["\"use client\"\n\nimport { PanelBottom, PanelLeft, PanelRight } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { dockPanels, type AssistantDock } from \"./dockLayout\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n ResizableHandle,\n ResizablePanel,\n ResizablePanelGroup,\n} from \"@/components/ui/resizable\"\nimport { cn } from \"@/lib/utils\"\n\n// ---------------------------------------------------------------------------\n// Context + provider\n// ---------------------------------------------------------------------------\n\ninterface AssistantLayoutContextValue {\n /** Where the assistant docks. Persisted. */\n dock: AssistantDock\n setDock: (dock: AssistantDock) => void\n /** Assistant size as a percentage of the layout along the dock axis. Persisted. */\n size: number\n setSize: (size: number) => void\n /** Whether the assistant is shown. In-memory by default (resets to visible on reload). */\n visible: boolean\n setVisible: (visible: boolean) => void\n}\n\nconst AssistantLayoutContext = React.createContext<AssistantLayoutContextValue | null>(null)\n\nexport interface AssistantLayoutProviderProps {\n children: React.ReactNode\n /** localStorage key prefix for the persisted dock + size. */\n storageKey?: string\n /** Default dock when nothing is persisted. */\n defaultDock?: AssistantDock\n /** Default assistant size as a percentage (1–99) of the layout. */\n defaultSize?: number\n /** Whether the assistant starts visible. */\n defaultVisible?: boolean\n /** Persist dock + size to localStorage. Defaults to `true`. */\n persist?: boolean\n}\n\nfunction readDock(key: string, fallback: AssistantDock): AssistantDock {\n if (typeof window === \"undefined\") return fallback\n const v = window.localStorage.getItem(`${key}.dock`)\n return v === \"right\" || v === \"bottom\" || v === \"left\" ? v : fallback\n}\n\nfunction readSize(key: string, fallback: number): number {\n if (typeof window === \"undefined\") return fallback\n const v = Number(window.localStorage.getItem(`${key}.size`))\n // Persisted as a percentage; ignore anything outside the open (0, 100) range.\n if (!Number.isFinite(v) || v <= 0 || v >= 100) return fallback\n return v\n}\n\nexport function AssistantLayoutProvider({\n children,\n storageKey = \"ts-ui.assistant\",\n defaultDock = \"left\",\n defaultSize = 32,\n defaultVisible = true,\n persist = true,\n}: AssistantLayoutProviderProps) {\n const [dock, setDockState] = React.useState<AssistantDock>(() =>\n persist ? readDock(storageKey, defaultDock) : defaultDock\n )\n const [size, setSizeState] = React.useState<number>(() =>\n persist ? readSize(storageKey, defaultSize) : defaultSize\n )\n const [visible, setVisible] = React.useState(defaultVisible)\n\n const setDock = React.useCallback(\n (next: AssistantDock) => {\n setDockState(next)\n if (persist && typeof window !== \"undefined\")\n window.localStorage.setItem(`${storageKey}.dock`, next)\n },\n [storageKey, persist]\n )\n\n const setSize = React.useCallback(\n (next: number) => {\n setSizeState(next)\n if (persist && typeof window !== \"undefined\")\n window.localStorage.setItem(`${storageKey}.size`, String(Math.round(next)))\n },\n [storageKey, persist]\n )\n\n const value = React.useMemo(\n () => ({ dock, setDock, size, setSize, visible, setVisible }),\n [dock, setDock, size, setSize, visible]\n )\n\n return <AssistantLayoutContext.Provider value={value}>{children}</AssistantLayoutContext.Provider>\n}\n\nexport function useAssistantLayout(): AssistantLayoutContextValue {\n const ctx = React.useContext(AssistantLayoutContext)\n if (!ctx) throw new Error(\"useAssistantLayout must be used within an AssistantLayoutProvider\")\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// Dock controls (segmented icon control for a top bar)\n// ---------------------------------------------------------------------------\n\nconst DOCK_OPTIONS: { value: AssistantDock; label: string; Icon: typeof PanelLeft }[] = [\n { value: \"left\", label: \"Dock assistant left\", Icon: PanelLeft },\n { value: \"bottom\", label: \"Dock assistant bottom\", Icon: PanelBottom },\n { value: \"right\", label: \"Dock assistant right\", Icon: PanelRight },\n]\n\nexport interface AssistantDockControlsProps {\n /** Label shown before the icons. Pass `null` to hide it. */\n label?: React.ReactNode\n className?: string\n}\n\n/**\n * Segmented control of dock icons. Clicking an inactive icon docks + shows the\n * assistant there; clicking the active icon again hides it.\n */\nexport function AssistantDockControls({ label = \"AI Assistant\", className }: AssistantDockControlsProps) {\n const { dock, setDock, visible, setVisible } = useAssistantLayout()\n\n return (\n <div className={cn(\"flex items-center gap-2\", className)}>\n {label != null && <span className=\"text-sm font-medium\">{label}</span>}\n <div className=\"inline-flex overflow-hidden rounded-lg border border-border\">\n {DOCK_OPTIONS.map(({ value, label: optionLabel, Icon }) => {\n const active = visible && dock === value\n return (\n <Button\n key={value}\n variant={active ? \"secondary\" : \"ghost\"}\n size=\"icon-sm\"\n // bg-clip-border so the filled (active/hover) state reaches the\n // cell edge instead of leaving a 1px gap from the button's\n // transparent border + default bg-clip-padding.\n className=\"rounded-none bg-clip-border\"\n aria-label={active ? \"Hide AI Assistant\" : optionLabel}\n aria-pressed={active}\n title={active ? \"Hide AI Assistant\" : optionLabel}\n onClick={() => {\n if (active) setVisible(false)\n else {\n setDock(value)\n setVisible(true)\n }\n }}\n >\n <Icon className=\"size-4\" />\n </Button>\n )\n })}\n </div>\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Layout body\n// ---------------------------------------------------------------------------\n\n// Each panel is padded so the resize handle sits in a comfortable gutter between\n// the cards rather than a hairline seam (SW-2096). The padding lives inside the\n// panel box, so react-resizable-panels' flex sizing is unaffected.\nconst PANEL_PAD = \"flex min-h-0 min-w-0 p-2\"\n// The visible card surface rendered inside each panel.\nconst CARD_CLASS =\n \"flex h-full min-h-0 min-w-0 flex-1 flex-col overflow-hidden rounded-lg border border-border bg-card\"\n\nconst ASSISTANT_PANEL_ID = \"assistant\"\n\nexport interface AssistantLayoutProps {\n /** The AI Assistant panel content (e.g. a `<Chat />`). */\n assistant: React.ReactNode\n /** The main content; fills the remaining space (and the whole body when the assistant is hidden). */\n children: React.ReactNode\n /** Min assistant size as a percentage of the layout. */\n minSize?: number\n /** Max assistant size as a percentage of the layout. */\n maxSize?: number\n className?: string\n assistantClassName?: string\n contentClassName?: string\n}\n\n/**\n * Docks the assistant left / right / bottom of the main content and resizes it\n * with the design-system `Resizable` (react-resizable-panels). Must be rendered\n * inside an `AssistantLayoutProvider`; pair with `AssistantDockControls`.\n *\n * The group is keyed by `dock`, so changing dock remounts the panels. The\n * assistant panel is therefore re-created on redock (its transient state is not\n * preserved across a dock change) — a deliberate trade-off for using the shared\n * resizable primitive rather than a bespoke splitter.\n */\nexport function AssistantLayout({\n assistant,\n children,\n minSize = 20,\n maxSize = 70,\n className,\n assistantClassName,\n contentClassName,\n}: AssistantLayoutProps) {\n const { dock, size, setSize, visible } = useAssistantLayout()\n const { orientation, assistantFirst } = dockPanels(dock)\n\n // Hidden: no resizable group, content fills the whole body.\n if (!visible) {\n return (\n <div\n data-slot=\"assistant-layout\"\n className={cn(\"flex min-h-0 flex-1 overflow-hidden\", className)}\n >\n {/* flex-1 so the lone content panel fills the width (the ResizablePanel\n self-sizes when visible; this plain div needs to be told to grow).\n Padded to match the inset the visible panels carry. */}\n <div className={cn(PANEL_PAD, \"flex-1\")}>\n <div data-slot=\"assistant-layout-content\" className={cn(CARD_CLASS, contentClassName)}>\n {children}\n </div>\n </div>\n </div>\n )\n }\n\n const assistantPanel = (\n <ResizablePanel\n id={ASSISTANT_PANEL_ID}\n defaultSize={`${size}%`}\n minSize={`${minSize}%`}\n maxSize={`${maxSize}%`}\n className={PANEL_PAD}\n >\n <div data-slot=\"assistant-layout-assistant\" className={cn(CARD_CLASS, assistantClassName)}>\n {assistant}\n </div>\n </ResizablePanel>\n )\n\n const contentPanel = (\n <ResizablePanel id=\"content\" className={PANEL_PAD}>\n <div data-slot=\"assistant-layout-content\" className={cn(CARD_CLASS, contentClassName)}>\n {children}\n </div>\n </ResizablePanel>\n )\n\n return (\n <ResizablePanelGroup\n key={dock}\n orientation={orientation}\n data-slot=\"assistant-layout\"\n className={cn(\"min-h-0 flex-1 overflow-hidden\", className)}\n onLayoutChanged={(layout) => {\n const pct = layout[ASSISTANT_PANEL_ID]\n if (typeof pct === \"number\") setSize(pct)\n }}\n >\n {assistantFirst ? (\n <>\n {assistantPanel}\n <ResizableHandle withHandle />\n {contentPanel}\n </>\n ) : (\n <>\n {contentPanel}\n <ResizableHandle withHandle />\n {assistantPanel}\n </>\n )}\n </ResizablePanelGroup>\n )\n}\n"],"names":["AssistantLayoutContext","React","readDock","key","fallback","v","readSize","AssistantLayoutProvider","children","storageKey","defaultDock","defaultSize","defaultVisible","persist","dock","setDockState","size","setSizeState","visible","setVisible","setDock","next","setSize","value","jsx","useAssistantLayout","ctx","DOCK_OPTIONS","PanelLeft","PanelBottom","PanelRight","AssistantDockControls","label","className","cn","optionLabel","Icon","active","Button","PANEL_PAD","CARD_CLASS","ASSISTANT_PANEL_ID","AssistantLayout","assistant","minSize","maxSize","assistantClassName","contentClassName","orientation","assistantFirst","dockPanels","assistantPanel","ResizablePanel","contentPanel","ResizablePanelGroup","layout","pct","jsxs","Fragment","ResizableHandle"],"mappings":"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"}
1
+ {"version":3,"file":"AssistantLayout.cjs","sources":["../../../../src/components/composed/AssistantLayout/AssistantLayout.tsx"],"sourcesContent":["\"use client\"\n\nimport { PanelBottom, PanelLeft, PanelRight } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { dockPanels, type AssistantDock } from \"./dockLayout\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n ResizableHandle,\n ResizablePanel,\n ResizablePanelGroup,\n} from \"@/components/ui/resizable\"\nimport { cn } from \"@/lib/utils\"\n\n// ---------------------------------------------------------------------------\n// Context + provider\n// ---------------------------------------------------------------------------\n\ninterface AssistantLayoutContextValue {\n /** Where the assistant docks. Persisted. */\n dock: AssistantDock\n setDock: (dock: AssistantDock) => void\n /** Assistant size as a percentage of the layout along the dock axis. Persisted. */\n size: number\n setSize: (size: number) => void\n /** Whether the assistant is shown. In-memory by default (resets to visible on reload). */\n visible: boolean\n setVisible: (visible: boolean) => void\n}\n\nconst AssistantLayoutContext = React.createContext<AssistantLayoutContextValue | null>(null)\n\nexport interface AssistantLayoutProviderProps {\n children: React.ReactNode\n /** localStorage key prefix for the persisted dock + size. */\n storageKey?: string\n /** Default dock when nothing is persisted. */\n defaultDock?: AssistantDock\n /** Default assistant size as a percentage (1–99) of the layout. */\n defaultSize?: number\n /** Whether the assistant starts visible. */\n defaultVisible?: boolean\n /** Persist dock + size to localStorage. Defaults to `true`. */\n persist?: boolean\n}\n\nfunction readDock(key: string, fallback: AssistantDock): AssistantDock {\n if (typeof window === \"undefined\") return fallback\n const v = window.localStorage.getItem(`${key}.dock`)\n return v === \"right\" || v === \"bottom\" || v === \"left\" ? v : fallback\n}\n\nfunction readSize(key: string, fallback: number): number {\n if (typeof window === \"undefined\") return fallback\n const v = Number(window.localStorage.getItem(`${key}.size`))\n // Persisted as a percentage; ignore anything outside the open (0, 100) range.\n if (!Number.isFinite(v) || v <= 0 || v >= 100) return fallback\n return v\n}\n\nexport function AssistantLayoutProvider({\n children,\n storageKey = \"ts-ui.assistant\",\n defaultDock = \"left\",\n defaultSize = 32,\n defaultVisible = true,\n persist = true,\n}: AssistantLayoutProviderProps) {\n const [dock, setDockState] = React.useState<AssistantDock>(() =>\n persist ? readDock(storageKey, defaultDock) : defaultDock\n )\n const [size, setSizeState] = React.useState<number>(() =>\n persist ? readSize(storageKey, defaultSize) : defaultSize\n )\n const [visible, setVisible] = React.useState(defaultVisible)\n\n const setDock = React.useCallback(\n (next: AssistantDock) => {\n setDockState(next)\n if (persist && typeof window !== \"undefined\")\n window.localStorage.setItem(`${storageKey}.dock`, next)\n },\n [storageKey, persist]\n )\n\n const setSize = React.useCallback(\n (next: number) => {\n setSizeState(next)\n if (persist && typeof window !== \"undefined\")\n window.localStorage.setItem(`${storageKey}.size`, String(Math.round(next)))\n },\n [storageKey, persist]\n )\n\n const value = React.useMemo(\n () => ({ dock, setDock, size, setSize, visible, setVisible }),\n [dock, setDock, size, setSize, visible]\n )\n\n return <AssistantLayoutContext.Provider value={value}>{children}</AssistantLayoutContext.Provider>\n}\n\nexport function useAssistantLayout(): AssistantLayoutContextValue {\n const ctx = React.useContext(AssistantLayoutContext)\n if (!ctx) throw new Error(\"useAssistantLayout must be used within an AssistantLayoutProvider\")\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// Dock controls (segmented icon control for a top bar)\n// ---------------------------------------------------------------------------\n\nconst DOCK_OPTIONS: { value: AssistantDock; label: string; Icon: typeof PanelLeft }[] = [\n { value: \"left\", label: \"Dock assistant left\", Icon: PanelLeft },\n { value: \"bottom\", label: \"Dock assistant bottom\", Icon: PanelBottom },\n { value: \"right\", label: \"Dock assistant right\", Icon: PanelRight },\n]\n\nexport interface AssistantDockControlsProps {\n /** Label shown before the icons. Pass `null` to hide it. */\n label?: React.ReactNode\n className?: string\n}\n\n/**\n * Segmented control of dock icons. Clicking an inactive icon docks + shows the\n * assistant there; clicking the active icon again hides it.\n */\nexport function AssistantDockControls({ label = \"AI Assistant\", className }: AssistantDockControlsProps) {\n const { dock, setDock, visible, setVisible } = useAssistantLayout()\n\n return (\n <div className={cn(\"flex items-center gap-2\", className)}>\n {label != null && <span className=\"text-sm font-medium\">{label}</span>}\n <div className=\"inline-flex overflow-hidden rounded-lg border border-border\">\n {DOCK_OPTIONS.map(({ value, label: optionLabel, Icon }) => {\n const active = visible && dock === value\n return (\n <Button\n key={value}\n variant={active ? \"secondary\" : \"ghost\"}\n size=\"icon-sm\"\n // bg-clip-border so the filled (active/hover) state reaches the\n // cell edge instead of leaving a 1px gap from the button's\n // transparent border + default bg-clip-padding.\n className=\"rounded-none bg-clip-border\"\n aria-label={active ? \"Hide AI Assistant\" : optionLabel}\n aria-pressed={active}\n title={active ? \"Hide AI Assistant\" : optionLabel}\n onClick={() => {\n if (active) setVisible(false)\n else {\n setDock(value)\n setVisible(true)\n }\n }}\n >\n <Icon className=\"size-4\" />\n </Button>\n )\n })}\n </div>\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Layout body\n// ---------------------------------------------------------------------------\n\n// Each panel is padded so the resize handle sits in a comfortable gutter between\n// the cards rather than a hairline seam (SW-2096). The padding lives inside the\n// panel box, so react-resizable-panels' flex sizing is unaffected.\nconst PANEL_PAD = \"flex min-h-0 min-w-0 p-2\"\n// The visible card surface rendered inside each panel.\nconst CARD_CLASS =\n \"flex h-full min-h-0 min-w-0 flex-1 flex-col overflow-hidden rounded-lg border border-border bg-card\"\n\nconst ASSISTANT_PANEL_ID = \"assistant\"\n\nexport interface AssistantLayoutProps {\n /** The AI Assistant panel content (e.g. a `<Chat />`). */\n assistant: React.ReactNode\n /** The main content; fills the remaining space (and the whole body when the assistant is hidden). */\n children: React.ReactNode\n /** Min assistant size as a percentage of the layout. */\n minSize?: number\n /** Max assistant size as a percentage of the layout. */\n maxSize?: number\n className?: string\n assistantClassName?: string\n contentClassName?: string\n}\n\n/**\n * Docks the assistant left / right / bottom of the main content and resizes it\n * with the design-system `Resizable` (react-resizable-panels). Must be rendered\n * inside an `AssistantLayoutProvider`; pair with `AssistantDockControls`.\n *\n * The group is keyed by `dock`, so changing dock remounts the panels. The\n * assistant panel is therefore re-created on redock (its transient state is not\n * preserved across a dock change) — a deliberate trade-off for using the shared\n * resizable primitive rather than a bespoke splitter.\n */\nexport function AssistantLayout({\n assistant,\n children,\n minSize = 20,\n maxSize = 70,\n className,\n assistantClassName,\n contentClassName,\n}: AssistantLayoutProps) {\n const { dock, size, setSize, visible } = useAssistantLayout()\n const { orientation, assistantFirst } = dockPanels(dock)\n\n // Hidden: no resizable group, content fills the whole body.\n if (!visible) {\n return (\n <div\n data-slot=\"assistant-layout\"\n className={cn(\"flex min-h-0 flex-1 overflow-hidden\", className)}\n >\n {/* flex-1 so the lone content panel fills the width (the ResizablePanel\n self-sizes when visible; this plain div needs to be told to grow).\n Padded to match the inset the visible panels carry. */}\n <div className={cn(PANEL_PAD, \"flex-1\")}>\n <div data-slot=\"assistant-layout-content\" className={cn(CARD_CLASS, contentClassName)}>\n {children}\n </div>\n </div>\n </div>\n )\n }\n\n const assistantPanel = (\n <ResizablePanel\n id={ASSISTANT_PANEL_ID}\n defaultSize={`${size}%`}\n minSize={`${minSize}%`}\n maxSize={`${maxSize}%`}\n className={PANEL_PAD}\n >\n <div data-slot=\"assistant-layout-assistant\" className={cn(CARD_CLASS, assistantClassName)}>\n {assistant}\n </div>\n </ResizablePanel>\n )\n\n const contentPanel = (\n <ResizablePanel id=\"content\" className={PANEL_PAD}>\n <div data-slot=\"assistant-layout-content\" className={cn(CARD_CLASS, contentClassName)}>\n {children}\n </div>\n </ResizablePanel>\n )\n\n return (\n <ResizablePanelGroup\n key={dock}\n orientation={orientation}\n data-slot=\"assistant-layout\"\n className={cn(\"min-h-0 flex-1 overflow-hidden\", className)}\n onLayoutChanged={(layout) => {\n const pct = layout[ASSISTANT_PANEL_ID]\n if (typeof pct === \"number\") setSize(pct)\n }}\n >\n {assistantFirst ? (\n <>\n {assistantPanel}\n <ResizableHandle withHandle />\n {contentPanel}\n </>\n ) : (\n <>\n {contentPanel}\n <ResizableHandle withHandle />\n {assistantPanel}\n </>\n )}\n </ResizablePanelGroup>\n )\n}\n"],"names":["AssistantLayoutContext","React","readDock","key","fallback","v","readSize","AssistantLayoutProvider","children","storageKey","defaultDock","defaultSize","defaultVisible","persist","dock","setDockState","size","setSizeState","visible","setVisible","setDock","next","setSize","value","jsx","useAssistantLayout","ctx","DOCK_OPTIONS","PanelLeft","PanelBottom","PanelRight","AssistantDockControls","label","className","cn","optionLabel","Icon","active","Button","PANEL_PAD","CARD_CLASS","ASSISTANT_PANEL_ID","AssistantLayout","assistant","minSize","maxSize","assistantClassName","contentClassName","orientation","assistantFirst","dockPanels","assistantPanel","ResizablePanel","contentPanel","ResizablePanelGroup","layout","pct","jsxs","Fragment","ResizableHandle"],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { AssistantDock } from './dockLayout';
2
+ import * as React from "react";
3
+ interface AssistantLayoutContextValue {
4
+ /** Where the assistant docks. Persisted. */
5
+ dock: AssistantDock;
6
+ setDock: (dock: AssistantDock) => void;
7
+ /** Assistant size as a percentage of the layout along the dock axis. Persisted. */
8
+ size: number;
9
+ setSize: (size: number) => void;
10
+ /** Whether the assistant is shown. In-memory by default (resets to visible on reload). */
11
+ visible: boolean;
12
+ setVisible: (visible: boolean) => void;
13
+ }
14
+ export interface AssistantLayoutProviderProps {
15
+ children: React.ReactNode;
16
+ /** localStorage key prefix for the persisted dock + size. */
17
+ storageKey?: string;
18
+ /** Default dock when nothing is persisted. */
19
+ defaultDock?: AssistantDock;
20
+ /** Default assistant size as a percentage (1–99) of the layout. */
21
+ defaultSize?: number;
22
+ /** Whether the assistant starts visible. */
23
+ defaultVisible?: boolean;
24
+ /** Persist dock + size to localStorage. Defaults to `true`. */
25
+ persist?: boolean;
26
+ }
27
+ export declare function AssistantLayoutProvider({ children, storageKey, defaultDock, defaultSize, defaultVisible, persist, }: AssistantLayoutProviderProps): import("react/jsx-runtime").JSX.Element;
28
+ export declare function useAssistantLayout(): AssistantLayoutContextValue;
29
+ export interface AssistantDockControlsProps {
30
+ /** Label shown before the icons. Pass `null` to hide it. */
31
+ label?: React.ReactNode;
32
+ className?: string;
33
+ }
34
+ /**
35
+ * Segmented control of dock icons. Clicking an inactive icon docks + shows the
36
+ * assistant there; clicking the active icon again hides it.
37
+ */
38
+ export declare function AssistantDockControls({ label, className }: AssistantDockControlsProps): import("react/jsx-runtime").JSX.Element;
39
+ export interface AssistantLayoutProps {
40
+ /** The AI Assistant panel content (e.g. a `<Chat />`). */
41
+ assistant: React.ReactNode;
42
+ /** The main content; fills the remaining space (and the whole body when the assistant is hidden). */
43
+ children: React.ReactNode;
44
+ /** Min assistant size as a percentage of the layout. */
45
+ minSize?: number;
46
+ /** Max assistant size as a percentage of the layout. */
47
+ maxSize?: number;
48
+ className?: string;
49
+ assistantClassName?: string;
50
+ contentClassName?: string;
51
+ }
52
+ /**
53
+ * Docks the assistant left / right / bottom of the main content and resizes it
54
+ * with the design-system `Resizable` (react-resizable-panels). Must be rendered
55
+ * inside an `AssistantLayoutProvider`; pair with `AssistantDockControls`.
56
+ *
57
+ * The group is keyed by `dock`, so changing dock remounts the panels. The
58
+ * assistant panel is therefore re-created on redock (its transient state is not
59
+ * preserved across a dock change) — a deliberate trade-off for using the shared
60
+ * resizable primitive rather than a bespoke splitter.
61
+ */
62
+ export declare function AssistantLayout({ assistant, children, minSize, maxSize, className, assistantClassName, contentClassName, }: AssistantLayoutProps): import("react/jsx-runtime").JSX.Element;
63
+ export {};
@@ -2,8 +2,8 @@ import { jsxs as N, jsx as n, Fragment as z } from "react/jsx-runtime";
2
2
  import { PanelLeft as D, PanelBottom as C, PanelRight as L } from "lucide-react";
3
3
  import * as l from "react";
4
4
  import { dockPanels as $ } from "./dockLayout.js";
5
- import { Button as R } from "../../ui/button.js";
6
- import { ResizablePanel as P, ResizablePanelGroup as H, ResizableHandle as g } from "../../ui/resizable.js";
5
+ import { Button as R } from "../../../ui/button.js";
6
+ import { ResizablePanel as P, ResizablePanelGroup as H, ResizableHandle as g } from "../../../ui/resizable.js";
7
7
  import { cn as d } from "../../../lib/utils.js";
8
8
  const y = l.createContext(null);
9
9
  function _(s, t) {
@@ -0,0 +1,15 @@
1
+ /** Where the AI Assistant panel docks relative to the main content. */
2
+ export type AssistantDock = "left" | "right" | "bottom";
3
+ export interface DockPanels {
4
+ /** Resizable group orientation for this dock. */
5
+ orientation: "horizontal" | "vertical";
6
+ /** Whether the assistant panel renders before the content panel. */
7
+ assistantFirst: boolean;
8
+ }
9
+ /**
10
+ * Maps a dock position to the resizable group's orientation and panel order.
11
+ * - left → horizontal, assistant first [assistant | content]
12
+ * - right → horizontal, content first [content | assistant]
13
+ * - bottom → vertical, content first [content / assistant]
14
+ */
15
+ export declare function dockPanels(dock: AssistantDock): DockPanels;
@@ -0,0 +1,3 @@
1
+ export { AssistantLayout, AssistantLayoutProvider, AssistantDockControls, useAssistantLayout, } from './AssistantLayout';
2
+ export type { AssistantLayoutProps, AssistantLayoutProviderProps, AssistantDockControlsProps, } from './AssistantLayout';
3
+ export { dockPanels, type AssistantDock, type DockPanels } from './dockLayout';
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),v=require("lucide-react"),a=require("react"),j=require("../../ai/conversation.cjs"),t=require("../../ai/message.cjs"),n=require("../../ai/prompt-input.cjs"),M=require("../../ai/reasoning.cjs"),m=require("../../ai/sources.cjs"),L=require("../../ai/stream-status.cjs"),N=require("../../ai/suggestion.cjs"),O=require("../../../lib/utils.cjs"),z=[{id:"claude-sonnet-4-6",name:"Claude Sonnet"},{id:"claude-opus-4-7",name:"Claude Opus"}],V=["Explain quantum entanglement simply","Write a Python script to rename files","Summarise the latest AI research trends","What is the difference between TCP and UDP?"];let k=0;const w=()=>(k+=1,`chat-msg-${k}`),W=3e3,H=({initialMessages:S=[],models:c=z,defaultModel:d,suggestions:i=V,onSend:h,className:C})=>{const u=a.useId(),[x,b]=a.useState(S),[g,y]=a.useState(""),[I,B]=a.useState(d??c[0]?.id??""),[E,_]=a.useState(!1),[p,f]=a.useState("ready"),[P,T]=a.useState(),D=a.useCallback(async s=>{const r=g.trim();if(!r||p==="streaming")return;const l={id:w(),role:"user",content:r};b(o=>[...o,l]),y(""),f("streaming"),T(new Date);try{const o=await h?.(r,I),F={id:w(),role:"assistant",content:o??"I received your message."};b(G=>[...G,F])}finally{f("ready"),setTimeout(()=>T(void 0),W)}},[g,p,I,h]),U=a.useCallback(s=>{y(s)},[]),R=a.useCallback(s=>{navigator.clipboard.writeText(s).catch(()=>{})},[]),q=a.useCallback(s=>{b(r=>{const l=r.findIndex(o=>o.id===s);return l===-1?r:r.slice(0,l)})},[]);return e.jsxs("div",{className:O.cn("mx-auto flex h-full w-full max-w-[980px] flex-col",C),children:[e.jsxs(j.Conversation,{className:"flex-1",children:[e.jsxs(j.ConversationContent,{children:[x.length===0?e.jsx(j.ConversationEmptyState,{description:"Send a message or pick a suggestion below to start.",title:"Start a conversation"}):null,x.map((s,r)=>e.jsxs("div",{className:"space-y-1",children:[s.role==="assistant"&&s.branches&&s.branches.length>1?e.jsxs(t.MessageBranch,{children:[e.jsx(t.MessageBranchContent,{children:s.branches.map((l,o)=>e.jsx(A,{content:l,id:s.id,onCopy:R,onRetry:q,reasoning:o===0?s.reasoning:void 0,sources:o===0?s.sources:void 0},o))}),e.jsx(t.MessageToolbar,{children:e.jsxs(t.MessageBranchSelector,{children:[e.jsx(t.MessageBranchPrevious,{}),e.jsx(t.MessageBranchPage,{}),e.jsx(t.MessageBranchNext,{})]})})]}):s.role==="assistant"?e.jsx(e.Fragment,{children:e.jsx(A,{content:s.content,id:s.id,onCopy:R,onRetry:q,reasoning:s.reasoning,sources:s.sources})}):e.jsx(t.Message,{from:"user",children:e.jsx(t.MessageContent,{children:e.jsx(t.MessageResponse,{children:s.content})})}),r===x.length-1&&P&&e.jsx("div",{className:"mt-3",children:e.jsx(L.StreamStatus,{iconVariant:"loader-circle",isStreaming:p==="streaming",startTime:P})})]},s.id))]}),e.jsx(j.ConversationScrollButton,{})]}),x.length===0&&i.length>0&&e.jsx("div",{className:"px-4 pb-2",children:e.jsx(N.Suggestions,{children:i.map(s=>e.jsx(N.Suggestion,{onClick:U,suggestion:s},s))})}),e.jsx("div",{className:"px-4 pt-3 pb-4",children:e.jsxs(n.PromptInput,{onSubmit:D,children:[e.jsx(n.PromptInputBody,{children:e.jsx(n.PromptInputTextarea,{"aria-labelledby":u,onChange:s=>y(s.target.value),placeholder:"Ask anything...",value:g})}),e.jsxs(n.PromptInputFooter,{children:[e.jsxs(n.PromptInputTools,{children:[c.length>1&&e.jsxs(n.PromptInputSelect,{onValueChange:B,value:I,children:[e.jsx(n.PromptInputSelectTrigger,{"aria-label":"Select model",children:e.jsx(n.PromptInputSelectValue,{})}),e.jsx(n.PromptInputSelectContent,{children:c.map(s=>e.jsx(n.PromptInputSelectItem,{value:s.id,children:s.name},s.id))})]}),e.jsxs(n.PromptInputButton,{onClick:()=>_(s=>!s),tooltip:{content:"Search the web"},variant:E?"default":"ghost",children:[e.jsx(v.GlobeIcon,{size:16}),e.jsx("span",{children:"Search"})]})]}),e.jsx(n.PromptInputSubmit,{disabled:!g.trim(),status:p})]})]})})]})},A=({id:S,content:c,reasoning:d,sources:i,onCopy:h,onRetry:C})=>e.jsxs("div",{className:"space-y-2",children:[d&&e.jsxs(M.Reasoning,{children:[e.jsx(M.ReasoningTrigger,{}),e.jsx(M.ReasoningContent,{children:d})]}),e.jsx(t.Message,{from:"assistant",children:e.jsx(t.MessageContent,{children:e.jsx(t.MessageResponse,{children:c})})}),i&&i.length>0&&e.jsxs(m.Sources,{children:[e.jsx(m.SourcesTrigger,{count:i.length}),e.jsx(m.SourcesContent,{children:i.map(u=>e.jsx(m.Source,{href:u.href,title:u.title},u.href))})]}),e.jsxs(t.MessageActions,{children:[e.jsx(t.MessageAction,{label:"Copy",onClick:()=>h(c),children:e.jsx(v.CopyIcon,{className:"size-3"})}),e.jsx(t.MessageAction,{label:"Retry",onClick:()=>C(S),children:e.jsx(v.RefreshCcwIcon,{className:"size-3"})})]})]});exports.Chat=H;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),v=require("lucide-react"),a=require("react"),j=require("../../../ai/conversation.cjs"),t=require("../../../ai/message.cjs"),n=require("../../../ai/prompt-input.cjs"),M=require("../../../ai/reasoning.cjs"),m=require("../../../ai/sources.cjs"),L=require("../../../ai/stream-status.cjs"),q=require("../../../ai/suggestion.cjs"),O=require("../../../lib/utils.cjs"),z=[{id:"claude-sonnet-4-6",name:"Claude Sonnet"},{id:"claude-opus-4-7",name:"Claude Opus"}],V=["Explain quantum entanglement simply","Write a Python script to rename files","Summarise the latest AI research trends","What is the difference between TCP and UDP?"];let N=0;const k=()=>(N+=1,`chat-msg-${N}`),W=3e3,$=({initialMessages:S=[],models:c=z,defaultModel:u,suggestions:o=V,onSend:h,className:C})=>{const d=a.useId(),[x,b]=a.useState(S),[g,y]=a.useState(""),[I,A]=a.useState(u??c[0]?.id??""),[B,E]=a.useState(!1),[p,f]=a.useState("ready"),[P,T]=a.useState(),D=a.useCallback(async s=>{const r=g.trim();if(!r||p==="streaming")return;const l={id:k(),role:"user",content:r};b(i=>[...i,l]),y(""),f("streaming"),T(new Date);try{const i=await h?.(r,I),F={id:k(),role:"assistant",content:i??"I received your message."};b(G=>[...G,F])}finally{f("ready"),setTimeout(()=>T(void 0),W)}},[g,p,I,h]),U=a.useCallback(s=>{y(s)},[]),R=a.useCallback(s=>{navigator.clipboard.writeText(s).catch(()=>{})},[]),_=a.useCallback(s=>{b(r=>{const l=r.findIndex(i=>i.id===s);return l===-1?r:r.slice(0,l)})},[]);return e.jsxs("div",{className:O.cn("mx-auto flex h-full w-full max-w-[980px] flex-col",C),children:[e.jsxs(j.Conversation,{className:"flex-1",children:[e.jsxs(j.ConversationContent,{children:[x.length===0?e.jsx(j.ConversationEmptyState,{description:"Send a message or pick a suggestion below to start.",title:"Start a conversation"}):null,x.map((s,r)=>e.jsxs("div",{className:"space-y-1",children:[s.role==="assistant"&&s.branches&&s.branches.length>1?e.jsxs(t.MessageBranch,{children:[e.jsx(t.MessageBranchContent,{children:s.branches.map((l,i)=>e.jsx(w,{content:l,id:s.id,onCopy:R,onRetry:_,reasoning:i===0?s.reasoning:void 0,sources:i===0?s.sources:void 0},i))}),e.jsx(t.MessageToolbar,{children:e.jsxs(t.MessageBranchSelector,{children:[e.jsx(t.MessageBranchPrevious,{}),e.jsx(t.MessageBranchPage,{}),e.jsx(t.MessageBranchNext,{})]})})]}):s.role==="assistant"?e.jsx(e.Fragment,{children:e.jsx(w,{content:s.content,id:s.id,onCopy:R,onRetry:_,reasoning:s.reasoning,sources:s.sources})}):e.jsx(t.Message,{from:"user",children:e.jsx(t.MessageContent,{children:e.jsx(t.MessageResponse,{children:s.content})})}),r===x.length-1&&P&&e.jsx("div",{className:"mt-3",children:e.jsx(L.StreamStatus,{iconVariant:"loader-circle",isStreaming:p==="streaming",startTime:P})})]},s.id))]}),e.jsx(j.ConversationScrollButton,{})]}),x.length===0&&o.length>0&&e.jsx("div",{className:"px-4 pb-2",children:e.jsx(q.Suggestions,{children:o.map(s=>e.jsx(q.Suggestion,{onClick:U,suggestion:s},s))})}),e.jsx("div",{className:"px-4 pt-3 pb-4",children:e.jsxs(n.PromptInput,{onSubmit:D,children:[e.jsx(n.PromptInputBody,{children:e.jsx(n.PromptInputTextarea,{"aria-labelledby":d,onChange:s=>y(s.target.value),placeholder:"Ask anything...",value:g})}),e.jsxs(n.PromptInputFooter,{children:[e.jsxs(n.PromptInputTools,{children:[c.length>1&&e.jsxs(n.PromptInputSelect,{onValueChange:A,value:I,children:[e.jsx(n.PromptInputSelectTrigger,{"aria-label":"Select model",children:e.jsx(n.PromptInputSelectValue,{})}),e.jsx(n.PromptInputSelectContent,{children:c.map(s=>e.jsx(n.PromptInputSelectItem,{value:s.id,children:s.name},s.id))})]}),e.jsxs(n.PromptInputButton,{onClick:()=>E(s=>!s),tooltip:{content:"Search the web"},variant:B?"default":"ghost",children:[e.jsx(v.GlobeIcon,{size:16}),e.jsx("span",{children:"Search"})]})]}),e.jsx(n.PromptInputSubmit,{disabled:!g.trim(),status:p})]})]})})]})},w=({id:S,content:c,reasoning:u,sources:o,onCopy:h,onRetry:C})=>e.jsxs("div",{className:"space-y-2",children:[u&&e.jsxs(M.Reasoning,{children:[e.jsx(M.ReasoningTrigger,{}),e.jsx(M.ReasoningContent,{children:u})]}),e.jsx(t.Message,{from:"assistant",children:e.jsx(t.MessageContent,{children:e.jsx(t.MessageResponse,{children:c})})}),o&&o.length>0&&e.jsxs(m.Sources,{children:[e.jsx(m.SourcesTrigger,{count:o.length}),e.jsx(m.SourcesContent,{children:o.map(d=>e.jsx(m.Source,{href:d.href,title:d.title},d.href))})]}),e.jsxs(t.MessageActions,{children:[e.jsx(t.MessageAction,{label:"Copy",onClick:()=>h(c),children:e.jsx(v.CopyIcon,{className:"size-3"})}),e.jsx(t.MessageAction,{label:"Retry",onClick:()=>C(S),children:e.jsx(v.RefreshCcwIcon,{className:"size-3"})})]})]});exports.Chat=$;
2
2
  //# sourceMappingURL=Chat.cjs.map