@tetrascience-npm/tetrascience-react-ui 0.7.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1241) hide show
  1. package/README.md +58 -4
  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.cjs +2 -0
  142. package/dist/components/ai/streamdown-code-plugin.cjs.map +1 -0
  143. package/dist/components/ai/streamdown-code-plugin.d.ts +2 -0
  144. package/dist/components/ai/streamdown-code-plugin.js +42 -0
  145. package/dist/components/ai/streamdown-code-plugin.js.map +1 -0
  146. package/dist/components/ai/streamdown-plugins.cjs +2 -0
  147. package/dist/components/ai/streamdown-plugins.cjs.map +1 -0
  148. package/dist/components/ai/streamdown-plugins.d.ts +2 -0
  149. package/dist/components/ai/streamdown-plugins.js +14 -0
  150. package/dist/components/ai/streamdown-plugins.js.map +1 -0
  151. package/dist/components/ai/suggestion.d.ts +9 -0
  152. package/dist/components/ai/task.d.ts +16 -0
  153. package/dist/components/ai/tool.d.ts +33 -0
  154. package/dist/components/ai/use-streamdown-plugins.cjs +2 -0
  155. package/dist/components/ai/use-streamdown-plugins.cjs.map +1 -0
  156. package/dist/components/ai/use-streamdown-plugins.d.ts +8 -0
  157. package/dist/components/ai/use-streamdown-plugins.js +25 -0
  158. package/dist/components/ai/use-streamdown-plugins.js.map +1 -0
  159. package/dist/components/charts/AreaPlot/AreaPlot.cjs +2 -0
  160. package/dist/components/charts/AreaPlot/AreaPlot.cjs.map +1 -0
  161. package/dist/components/charts/AreaPlot/AreaPlot.d.ts +39 -0
  162. package/dist/components/charts/AreaPlot/AreaPlot.js +270 -0
  163. package/dist/components/charts/AreaPlot/AreaPlot.js.map +1 -0
  164. package/dist/components/charts/AreaPlot/index.d.ts +2 -0
  165. package/dist/components/charts/BarChart/BarChart.cjs +2 -0
  166. package/dist/components/charts/BarChart/BarChart.cjs.map +1 -0
  167. package/dist/components/charts/BarChart/BarChart.d.ts +44 -0
  168. package/dist/components/charts/BarChart/BarChart.js +219 -0
  169. package/dist/components/charts/BarChart/BarChart.js.map +1 -0
  170. package/dist/components/charts/BarChart/index.d.ts +2 -0
  171. package/dist/components/charts/BoxPlot/BoxPlot.cjs +2 -0
  172. package/dist/components/charts/BoxPlot/BoxPlot.cjs.map +1 -0
  173. package/dist/components/charts/BoxPlot/BoxPlot.d.ts +33 -0
  174. package/dist/components/charts/BoxPlot/BoxPlot.js +208 -0
  175. package/dist/components/charts/BoxPlot/BoxPlot.js.map +1 -0
  176. package/dist/components/charts/BoxPlot/index.d.ts +2 -0
  177. package/dist/components/charts/ChartTooltip/ChartTooltip.cjs +1 -1
  178. package/dist/components/charts/ChartTooltip/ChartTooltip.cjs.map +1 -1
  179. package/dist/components/charts/ChartTooltip/ChartTooltip.d.ts +71 -0
  180. package/dist/components/charts/ChartTooltip/ChartTooltip.js +22 -22
  181. package/dist/components/charts/ChartTooltip/ChartTooltip.js.map +1 -1
  182. package/dist/components/charts/ChartTooltip/index.d.ts +2 -0
  183. package/dist/components/charts/ChartTooltip/lines.d.ts +54 -0
  184. package/dist/components/charts/Chromatogram/Chromatogram.cjs +1 -1
  185. package/dist/components/charts/Chromatogram/Chromatogram.cjs.map +1 -1
  186. package/dist/components/charts/Chromatogram/Chromatogram.d.ts +5 -0
  187. package/dist/components/charts/Chromatogram/Chromatogram.js +232 -170
  188. package/dist/components/charts/Chromatogram/Chromatogram.js.map +1 -1
  189. package/dist/components/charts/Chromatogram/annotations.cjs +2 -0
  190. package/dist/components/charts/Chromatogram/annotations.cjs.map +1 -0
  191. package/dist/components/charts/Chromatogram/annotations.d.ts +50 -0
  192. package/dist/components/charts/Chromatogram/annotations.js +137 -0
  193. package/dist/components/charts/Chromatogram/annotations.js.map +1 -0
  194. package/dist/components/charts/Chromatogram/boundaryMarkers.cjs +2 -0
  195. package/dist/components/charts/Chromatogram/boundaryMarkers.cjs.map +1 -0
  196. package/dist/components/charts/Chromatogram/boundaryMarkers.d.ts +14 -0
  197. package/dist/components/charts/Chromatogram/boundaryMarkers.js +34 -0
  198. package/dist/components/charts/Chromatogram/boundaryMarkers.js.map +1 -0
  199. package/dist/components/charts/Chromatogram/constants.cjs +2 -0
  200. package/dist/components/charts/Chromatogram/constants.cjs.map +1 -0
  201. package/dist/components/charts/Chromatogram/constants.d.ts +46 -0
  202. package/dist/components/charts/Chromatogram/constants.js +36 -0
  203. package/dist/components/charts/Chromatogram/constants.js.map +1 -0
  204. package/dist/components/charts/Chromatogram/dataProcessing.cjs +2 -0
  205. package/dist/components/charts/Chromatogram/dataProcessing.cjs.map +1 -0
  206. package/dist/components/charts/Chromatogram/dataProcessing.d.ts +49 -0
  207. package/dist/components/charts/Chromatogram/dataProcessing.js +90 -0
  208. package/dist/components/charts/Chromatogram/dataProcessing.js.map +1 -0
  209. package/dist/components/charts/Chromatogram/index.d.ts +2 -0
  210. package/dist/components/charts/Chromatogram/peakDetection.cjs.map +1 -0
  211. package/dist/components/charts/Chromatogram/peakDetection.d.ts +33 -0
  212. package/dist/components/charts/Chromatogram/peakDetection.js.map +1 -0
  213. package/dist/components/charts/Chromatogram/plotBuilder.cjs +2 -0
  214. package/dist/components/charts/Chromatogram/plotBuilder.cjs.map +1 -0
  215. package/dist/components/charts/Chromatogram/plotBuilder.d.ts +58 -0
  216. package/dist/components/charts/Chromatogram/plotBuilder.js +216 -0
  217. package/dist/components/charts/Chromatogram/plotBuilder.js.map +1 -0
  218. package/dist/components/charts/Chromatogram/regionOverlays.cjs +2 -0
  219. package/dist/components/charts/Chromatogram/regionOverlays.cjs.map +1 -0
  220. package/dist/components/charts/Chromatogram/regionOverlays.d.ts +9 -0
  221. package/dist/components/charts/Chromatogram/regionOverlays.js +26 -0
  222. package/dist/components/charts/Chromatogram/regionOverlays.js.map +1 -0
  223. package/dist/components/charts/Chromatogram/types.d.ts +258 -0
  224. package/dist/components/charts/Electropherogram/Electropherogram.cjs +2 -0
  225. package/dist/components/charts/Electropherogram/Electropherogram.cjs.map +1 -0
  226. package/dist/components/charts/Electropherogram/Electropherogram.d.ts +22 -0
  227. package/dist/components/charts/Electropherogram/Electropherogram.js +180 -0
  228. package/dist/components/charts/Electropherogram/Electropherogram.js.map +1 -0
  229. package/dist/components/charts/Electropherogram/index.d.ts +2 -0
  230. package/dist/components/charts/Histogram/Histogram.cjs +1 -1
  231. package/dist/components/charts/Histogram/Histogram.cjs.map +1 -1
  232. package/dist/components/charts/Histogram/Histogram.d.ts +36 -0
  233. package/dist/components/charts/Histogram/Histogram.js +107 -108
  234. package/dist/components/charts/Histogram/Histogram.js.map +1 -1
  235. package/dist/components/charts/Histogram/index.d.ts +2 -0
  236. package/dist/components/charts/LinePlot/LinePlot.cjs +2 -0
  237. package/dist/components/charts/LinePlot/LinePlot.cjs.map +1 -0
  238. package/dist/components/charts/LinePlot/LinePlot.d.ts +45 -0
  239. package/dist/components/charts/LinePlot/LinePlot.js +224 -0
  240. package/dist/components/charts/LinePlot/LinePlot.js.map +1 -0
  241. package/dist/components/charts/LinePlot/index.d.ts +2 -0
  242. package/dist/components/charts/PieChart/PieChart.cjs +1 -1
  243. package/dist/components/charts/PieChart/PieChart.cjs.map +1 -1
  244. package/dist/components/charts/PieChart/PieChart.d.ts +20 -0
  245. package/dist/components/charts/PieChart/PieChart.js +62 -61
  246. package/dist/components/charts/PieChart/PieChart.js.map +1 -1
  247. package/dist/components/charts/PieChart/index.d.ts +2 -0
  248. package/dist/components/charts/PlateMap/PlateMap.cjs +1 -1
  249. package/dist/components/charts/PlateMap/PlateMap.cjs.map +1 -1
  250. package/dist/components/charts/PlateMap/PlateMap.d.ts +29 -0
  251. package/dist/components/charts/PlateMap/PlateMap.js +246 -242
  252. package/dist/components/charts/PlateMap/PlateMap.js.map +1 -1
  253. package/dist/components/charts/PlateMap/constants.d.ts +75 -0
  254. package/dist/components/charts/PlateMap/index.d.ts +2 -0
  255. package/dist/components/charts/PlateMap/types.d.ts +322 -0
  256. package/dist/components/charts/PlateMap/utils.d.ts +133 -0
  257. package/dist/components/charts/ScatterPlot/ScatterPlot.cjs +2 -0
  258. package/dist/components/charts/ScatterPlot/ScatterPlot.cjs.map +1 -0
  259. package/dist/components/charts/ScatterPlot/ScatterPlot.d.ts +43 -0
  260. package/dist/components/charts/ScatterPlot/ScatterPlot.js +252 -0
  261. package/dist/components/charts/ScatterPlot/ScatterPlot.js.map +1 -0
  262. package/dist/components/charts/ScatterPlot/index.d.ts +2 -0
  263. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.cjs +2 -0
  264. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.cjs.map +1 -0
  265. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.d.ts +25 -0
  266. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.js +215 -0
  267. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.js.map +1 -0
  268. package/dist/components/charts/ScatterPlotInteractive/constants.cjs +2 -0
  269. package/dist/components/charts/ScatterPlotInteractive/constants.cjs.map +1 -0
  270. package/dist/components/charts/ScatterPlotInteractive/constants.d.ts +50 -0
  271. package/dist/components/charts/ScatterPlotInteractive/constants.js +38 -0
  272. package/dist/components/charts/ScatterPlotInteractive/constants.js.map +1 -0
  273. package/dist/components/charts/ScatterPlotInteractive/index.d.ts +3 -0
  274. package/dist/components/charts/ScatterPlotInteractive/types.d.ts +226 -0
  275. package/dist/components/charts/ScatterPlotInteractive/utils.cjs +2 -0
  276. package/dist/components/charts/ScatterPlotInteractive/utils.cjs.map +1 -0
  277. package/dist/components/charts/ScatterPlotInteractive/utils.d.ts +72 -0
  278. package/dist/components/charts/ScatterPlotInteractive/utils.js +261 -0
  279. package/dist/components/charts/ScatterPlotInteractive/utils.js.map +1 -0
  280. package/dist/components/charts/StackedChromatogram/StackedChromatogram.cjs +2 -0
  281. package/dist/components/charts/StackedChromatogram/StackedChromatogram.cjs.map +1 -0
  282. package/dist/components/charts/StackedChromatogram/StackedChromatogram.d.ts +3 -0
  283. package/dist/components/charts/StackedChromatogram/StackedChromatogram.js +40 -0
  284. package/dist/components/charts/StackedChromatogram/StackedChromatogram.js.map +1 -0
  285. package/dist/components/charts/StackedChromatogram/index.d.ts +3 -0
  286. package/dist/components/charts/StackedChromatogram/transforms.cjs +2 -0
  287. package/dist/components/charts/StackedChromatogram/transforms.cjs.map +1 -0
  288. package/dist/components/charts/StackedChromatogram/transforms.d.ts +9 -0
  289. package/dist/components/charts/StackedChromatogram/transforms.js +31 -0
  290. package/dist/components/charts/StackedChromatogram/transforms.js.map +1 -0
  291. package/dist/components/charts/StackedChromatogram/types.d.ts +26 -0
  292. package/dist/components/charts/plotly-loader.cjs +2 -0
  293. package/dist/components/charts/plotly-loader.cjs.map +1 -0
  294. package/dist/components/charts/plotly-loader.d.ts +29 -0
  295. package/dist/components/charts/plotly-loader.js +22 -0
  296. package/dist/components/charts/plotly-loader.js.map +1 -0
  297. package/dist/components/composed/AssistantLayout/AssistantLayout.cjs +2 -0
  298. package/dist/components/composed/AssistantLayout/AssistantLayout.cjs.map +1 -0
  299. package/dist/components/composed/AssistantLayout/AssistantLayout.d.ts +63 -0
  300. package/dist/components/composed/AssistantLayout/AssistantLayout.js +142 -0
  301. package/dist/components/composed/AssistantLayout/AssistantLayout.js.map +1 -0
  302. package/dist/components/composed/AssistantLayout/dockLayout.cjs +2 -0
  303. package/dist/components/composed/AssistantLayout/dockLayout.cjs.map +1 -0
  304. package/dist/components/composed/AssistantLayout/dockLayout.d.ts +15 -0
  305. package/dist/components/composed/AssistantLayout/dockLayout.js +10 -0
  306. package/dist/components/composed/AssistantLayout/dockLayout.js.map +1 -0
  307. package/dist/components/composed/AssistantLayout/index.d.ts +3 -0
  308. package/dist/components/composed/Chat/Chat.cjs +1 -1
  309. package/dist/components/composed/Chat/Chat.cjs.map +1 -1
  310. package/dist/components/composed/Chat/Chat.d.ts +35 -0
  311. package/dist/components/composed/Chat/Chat.js +28 -28
  312. package/dist/components/composed/Chat/Chat.js.map +1 -1
  313. package/dist/components/composed/Chat/index.d.ts +2 -0
  314. package/dist/components/composed/ConfirmDialog/ConfirmDialog.cjs +1 -1
  315. package/dist/components/composed/ConfirmDialog/ConfirmDialog.cjs.map +1 -1
  316. package/dist/components/composed/ConfirmDialog/ConfirmDialog.d.ts +23 -0
  317. package/dist/components/composed/ConfirmDialog/ConfirmDialog.js +33 -29
  318. package/dist/components/composed/ConfirmDialog/ConfirmDialog.js.map +1 -1
  319. package/dist/components/composed/ConfirmDialog/index.d.ts +1 -0
  320. package/dist/components/composed/DataAppShell/CollapseButton.cjs +2 -0
  321. package/dist/components/composed/DataAppShell/CollapseButton.cjs.map +1 -0
  322. package/dist/components/composed/DataAppShell/CollapseButton.d.ts +23 -0
  323. package/dist/components/composed/DataAppShell/CollapseButton.js +42 -0
  324. package/dist/components/composed/DataAppShell/CollapseButton.js.map +1 -0
  325. package/dist/components/composed/DataAppShell/DataAppShell.cjs +1 -1
  326. package/dist/components/composed/DataAppShell/DataAppShell.cjs.map +1 -1
  327. package/dist/components/composed/DataAppShell/DataAppShell.d.ts +88 -0
  328. package/dist/components/composed/DataAppShell/DataAppShell.js +350 -328
  329. package/dist/components/composed/DataAppShell/DataAppShell.js.map +1 -1
  330. package/dist/components/composed/DataAppShell/PrimaryNav.cjs +2 -0
  331. package/dist/components/composed/DataAppShell/PrimaryNav.cjs.map +1 -0
  332. package/dist/components/composed/DataAppShell/PrimaryNav.d.ts +64 -0
  333. package/dist/components/composed/DataAppShell/PrimaryNav.js +268 -0
  334. package/dist/components/composed/DataAppShell/PrimaryNav.js.map +1 -0
  335. package/dist/components/composed/DataAppShell/RightPanel.cjs +2 -0
  336. package/dist/components/composed/DataAppShell/RightPanel.cjs.map +1 -0
  337. package/dist/components/composed/DataAppShell/RightPanel.d.ts +95 -0
  338. package/dist/components/composed/DataAppShell/RightPanel.js +282 -0
  339. package/dist/components/composed/DataAppShell/RightPanel.js.map +1 -0
  340. package/dist/components/composed/DataAppShell/SecondaryNav.cjs +2 -0
  341. package/dist/components/composed/DataAppShell/SecondaryNav.cjs.map +1 -0
  342. package/dist/components/composed/DataAppShell/SecondaryNav.d.ts +63 -0
  343. package/dist/components/composed/DataAppShell/SecondaryNav.js +364 -0
  344. package/dist/components/composed/DataAppShell/SecondaryNav.js.map +1 -0
  345. package/dist/components/composed/DataAppShell/ShellContext.cjs +2 -0
  346. package/dist/components/composed/DataAppShell/ShellContext.cjs.map +1 -0
  347. package/dist/components/composed/DataAppShell/ShellContext.d.ts +20 -0
  348. package/dist/components/composed/DataAppShell/ShellContext.js +23 -0
  349. package/dist/components/composed/DataAppShell/ShellContext.js.map +1 -0
  350. package/dist/components/composed/DataAppShell/index.d.ts +12 -0
  351. package/dist/components/composed/EmptyState/EmptyState.d.ts +12 -0
  352. package/dist/components/composed/EmptyState/index.d.ts +2 -0
  353. package/dist/components/composed/FormPatterns/FormSection.cjs +1 -1
  354. package/dist/components/composed/FormPatterns/FormSection.cjs.map +1 -1
  355. package/dist/components/composed/FormPatterns/FormSection.d.ts +7 -0
  356. package/dist/components/composed/FormPatterns/FormSection.js +2 -2
  357. package/dist/components/composed/FormPatterns/index.d.ts +1 -0
  358. package/dist/components/composed/MoleculeStructure/MoleculeStructure.cjs +2 -0
  359. package/dist/components/composed/MoleculeStructure/MoleculeStructure.cjs.map +1 -0
  360. package/dist/components/composed/MoleculeStructure/MoleculeStructure.d.ts +43 -0
  361. package/dist/components/composed/MoleculeStructure/MoleculeStructure.js +87 -0
  362. package/dist/components/composed/MoleculeStructure/MoleculeStructure.js.map +1 -0
  363. package/dist/components/composed/MoleculeStructure/index.d.ts +3 -0
  364. package/dist/components/composed/MoleculeStructure/rdkit-loader.cjs +2 -0
  365. package/dist/components/composed/MoleculeStructure/rdkit-loader.cjs.map +1 -0
  366. package/dist/components/composed/MoleculeStructure/rdkit-loader.d.ts +104 -0
  367. package/dist/components/composed/MoleculeStructure/rdkit-loader.js +89 -0
  368. package/dist/components/composed/MoleculeStructure/rdkit-loader.js.map +1 -0
  369. package/dist/components/composed/MoleculeStructure/use-rdkit.cjs +2 -0
  370. package/dist/components/composed/MoleculeStructure/use-rdkit.cjs.map +1 -0
  371. package/dist/components/composed/MoleculeStructure/use-rdkit.d.ts +29 -0
  372. package/dist/components/composed/MoleculeStructure/use-rdkit.js +19 -0
  373. package/dist/components/composed/MoleculeStructure/use-rdkit.js.map +1 -0
  374. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs +1 -1
  375. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs.map +1 -1
  376. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.d.ts +12 -0
  377. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js +21 -21
  378. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js.map +1 -1
  379. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs +1 -1
  380. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs.map +1 -1
  381. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.d.ts +22 -0
  382. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js +34 -34
  383. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js.map +1 -1
  384. package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs +1 -1
  385. package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs.map +1 -1
  386. package/dist/components/composed/PlateMapEditor/PlateMapEditor.d.ts +106 -0
  387. package/dist/components/composed/PlateMapEditor/PlateMapEditor.js +2 -2
  388. package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs +1 -1
  389. package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs.map +1 -1
  390. package/dist/components/composed/PlateMapEditor/PlateMapForm.d.ts +30 -0
  391. package/dist/components/composed/PlateMapEditor/PlateMapForm.js +1 -1
  392. package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs +1 -1
  393. package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs.map +1 -1
  394. package/dist/components/composed/PlateMapEditor/PlateMapGrid.d.ts +64 -0
  395. package/dist/components/composed/PlateMapEditor/PlateMapGrid.js +1 -1
  396. package/dist/components/composed/PlateMapEditor/PlateMapManifest.d.ts +29 -0
  397. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs +1 -1
  398. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs.map +1 -1
  399. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.d.ts +19 -0
  400. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js +11 -11
  401. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js.map +1 -1
  402. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs +1 -1
  403. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs.map +1 -1
  404. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.d.ts +73 -0
  405. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js +1 -1
  406. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js.map +1 -1
  407. package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs +1 -1
  408. package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs.map +1 -1
  409. package/dist/components/composed/PlateMapEditor/PlateZoomControl.d.ts +12 -0
  410. package/dist/components/composed/PlateMapEditor/PlateZoomControl.js +2 -2
  411. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs +1 -1
  412. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs.map +1 -1
  413. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.d.ts +13 -0
  414. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.js +4 -4
  415. package/dist/components/composed/PlateMapEditor/WellLegend.cjs +1 -1
  416. package/dist/components/composed/PlateMapEditor/WellLegend.cjs.map +1 -1
  417. package/dist/components/composed/PlateMapEditor/WellLegend.d.ts +21 -0
  418. package/dist/components/composed/PlateMapEditor/WellLegend.js +24 -12
  419. package/dist/components/composed/PlateMapEditor/WellLegend.js.map +1 -1
  420. package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs +1 -1
  421. package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs.map +1 -1
  422. package/dist/components/composed/PlateMapEditor/WellManifestTable.d.ts +46 -0
  423. package/dist/components/composed/PlateMapEditor/WellManifestTable.js +10 -10
  424. package/dist/components/composed/PlateMapEditor/WellManifestTable.js.map +1 -1
  425. package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs +1 -1
  426. package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs.map +1 -1
  427. package/dist/components/composed/PlateMapEditor/WellMetadataForm.d.ts +17 -0
  428. package/dist/components/composed/PlateMapEditor/WellMetadataForm.js +7 -7
  429. package/dist/components/composed/PlateMapEditor/autoFill.d.ts +26 -0
  430. package/dist/components/composed/PlateMapEditor/csvPlateTriage.d.ts +4 -0
  431. package/dist/components/composed/PlateMapEditor/helpers.d.ts +2 -0
  432. package/dist/components/composed/PlateMapEditor/index.d.ts +31 -0
  433. package/dist/components/composed/PlateMapEditor/types.d.ts +137 -0
  434. package/dist/components/composed/PlateMapEditor/wellGrid.d.ts +12 -0
  435. package/dist/components/composed/ProcessFlow/ProcessFlow.d.ts +32 -0
  436. package/dist/components/composed/ProcessFlow/ProcessFlow.utils.d.ts +86 -0
  437. package/dist/components/composed/ProcessFlow/index.d.ts +1 -0
  438. package/dist/components/composed/RichListItem/RichListItem.cjs +1 -1
  439. package/dist/components/composed/RichListItem/RichListItem.cjs.map +1 -1
  440. package/dist/components/composed/RichListItem/RichListItem.d.ts +22 -0
  441. package/dist/components/composed/RichListItem/RichListItem.js +2 -2
  442. package/dist/components/composed/RichListItem/index.d.ts +2 -0
  443. package/dist/components/composed/StatCard/StatCard.cjs +1 -1
  444. package/dist/components/composed/StatCard/StatCard.cjs.map +1 -1
  445. package/dist/components/composed/StatCard/StatCard.d.ts +11 -0
  446. package/dist/components/composed/StatCard/StatCard.js +1 -1
  447. package/dist/components/composed/StatCard/index.d.ts +1 -0
  448. package/dist/components/composed/TdpSearch/TdpSearch.cjs +1 -1
  449. package/dist/components/composed/TdpSearch/TdpSearch.cjs.map +1 -1
  450. package/dist/components/composed/TdpSearch/TdpSearch.d.ts +21 -0
  451. package/dist/components/composed/TdpSearch/TdpSearch.js +14 -13
  452. package/dist/components/composed/TdpSearch/TdpSearch.mocks.d.ts +5 -0
  453. package/dist/components/composed/TdpSearch/components/DefaultFilters.cjs +1 -1
  454. package/dist/components/composed/TdpSearch/components/DefaultFilters.cjs.map +1 -1
  455. package/dist/components/composed/TdpSearch/components/DefaultFilters.d.ts +3 -0
  456. package/dist/components/composed/TdpSearch/components/DefaultFilters.js +4 -4
  457. package/dist/components/composed/TdpSearch/components/DefaultFilters.js.map +1 -1
  458. package/dist/components/composed/TdpSearch/components/DefaultResults.cjs +1 -1
  459. package/dist/components/composed/TdpSearch/components/DefaultResults.cjs.map +1 -1
  460. package/dist/components/composed/TdpSearch/components/DefaultResults.d.ts +3 -0
  461. package/dist/components/composed/TdpSearch/components/DefaultResults.js +2 -2
  462. package/dist/components/composed/TdpSearch/components/DefaultSearchBar.cjs +1 -1
  463. package/dist/components/composed/TdpSearch/components/DefaultSearchBar.cjs.map +1 -1
  464. package/dist/components/composed/TdpSearch/components/DefaultSearchBar.d.ts +3 -0
  465. package/dist/components/composed/TdpSearch/components/DefaultSearchBar.js +2 -2
  466. package/dist/components/composed/TdpSearch/constants.d.ts +3 -0
  467. package/dist/components/composed/TdpSearch/hooks/useSearch.d.ts +2 -0
  468. package/dist/components/composed/TdpSearch/hooks/useTdpCredentials.d.ts +14 -0
  469. package/dist/components/composed/TdpSearch/index.d.ts +3 -0
  470. package/dist/components/composed/TdpSearch/types.d.ts +128 -0
  471. package/dist/components/composed/TdpSearch/utils.d.ts +3 -0
  472. package/dist/components/composed/TopBar/TopBar.cjs +2 -0
  473. package/dist/components/composed/TopBar/TopBar.cjs.map +1 -0
  474. package/dist/components/composed/TopBar/TopBar.d.ts +25 -0
  475. package/dist/components/composed/TopBar/TopBar.js +56 -0
  476. package/dist/components/composed/TopBar/TopBar.js.map +1 -0
  477. package/dist/components/composed/TopBar/index.d.ts +2 -0
  478. package/dist/components/composed/UserMenu/UserMenu.cjs +2 -0
  479. package/dist/components/composed/UserMenu/UserMenu.cjs.map +1 -0
  480. package/dist/components/composed/UserMenu/UserMenu.d.ts +53 -0
  481. package/dist/components/composed/UserMenu/UserMenu.js +99 -0
  482. package/dist/components/composed/UserMenu/UserMenu.js.map +1 -0
  483. package/dist/components/composed/UserMenu/index.d.ts +2 -0
  484. package/dist/components/composed/tdp-link.d.ts +110 -0
  485. package/dist/components/composed/tdp-url.d.ts +68 -0
  486. package/dist/components/ui/accordion.d.ts +7 -0
  487. package/dist/components/ui/alert-dialog.d.ts +18 -0
  488. package/dist/components/ui/alert.d.ts +10 -0
  489. package/dist/components/ui/aspect-ratio.d.ts +3 -0
  490. package/dist/components/ui/avatar.d.ts +11 -0
  491. package/dist/components/ui/badge.d.ts +9 -0
  492. package/dist/components/ui/banner.d.ts +19 -0
  493. package/dist/components/ui/breadcrumb.d.ts +11 -0
  494. package/dist/components/ui/button-group.d.ts +11 -0
  495. package/dist/components/ui/button.d.ts +10 -0
  496. package/dist/components/ui/calendar.d.ts +10 -0
  497. package/dist/components/ui/card.d.ts +11 -0
  498. package/dist/components/ui/carousel.d.ts +28 -0
  499. package/dist/components/ui/checkbox.d.ts +4 -0
  500. package/dist/components/ui/code-block.d.ts +45 -0
  501. package/dist/components/ui/code-editor.d.ts +18 -0
  502. package/dist/components/ui/collapsible.d.ts +5 -0
  503. package/dist/components/ui/combobox.d.ts +24 -0
  504. package/dist/components/ui/command.d.ts +18 -0
  505. package/dist/components/ui/context-menu.d.ts +31 -0
  506. package/dist/components/ui/data-table/data-table-column-toggle.cjs +1 -1
  507. package/dist/components/ui/data-table/data-table-column-toggle.cjs.map +1 -1
  508. package/dist/components/ui/data-table/data-table-column-toggle.d.ts +6 -0
  509. package/dist/components/ui/data-table/data-table-column-toggle.js +71 -63
  510. package/dist/components/ui/data-table/data-table-column-toggle.js.map +1 -1
  511. package/dist/components/ui/data-table/data-table-filter.cjs +1 -1
  512. package/dist/components/ui/data-table/data-table-filter.cjs.map +1 -1
  513. package/dist/components/ui/data-table/data-table-filter.d.ts +9 -0
  514. package/dist/components/ui/data-table/data-table-filter.js +26 -25
  515. package/dist/components/ui/data-table/data-table-filter.js.map +1 -1
  516. package/dist/components/ui/data-table/data-table-group.cjs +1 -1
  517. package/dist/components/ui/data-table/data-table-group.cjs.map +1 -1
  518. package/dist/components/ui/data-table/data-table-group.d.ts +9 -0
  519. package/dist/components/ui/data-table/data-table-group.js +18 -17
  520. package/dist/components/ui/data-table/data-table-group.js.map +1 -1
  521. package/dist/components/ui/data-table/data-table-pagination.cjs +1 -1
  522. package/dist/components/ui/data-table/data-table-pagination.cjs.map +1 -1
  523. package/dist/components/ui/data-table/data-table-pagination.d.ts +7 -0
  524. package/dist/components/ui/data-table/data-table-pagination.js +16 -16
  525. package/dist/components/ui/data-table/data-table-pagination.js.map +1 -1
  526. package/dist/components/ui/data-table/data-table.cjs +1 -1
  527. package/dist/components/ui/data-table/data-table.cjs.map +1 -1
  528. package/dist/components/ui/data-table/data-table.d.ts +82 -0
  529. package/dist/components/ui/data-table/data-table.js +191 -190
  530. package/dist/components/ui/data-table/data-table.js.map +1 -1
  531. package/dist/components/ui/data-table/index.d.ts +5 -0
  532. package/dist/components/ui/dialog.d.ts +18 -0
  533. package/dist/components/ui/dropdown-menu.d.ts +29 -0
  534. package/dist/components/ui/field.d.ts +24 -0
  535. package/dist/components/ui/hover-card.d.ts +6 -0
  536. package/dist/components/ui/input-group.d.ts +16 -0
  537. package/dist/components/ui/input.d.ts +3 -0
  538. package/dist/components/ui/item.d.ts +23 -0
  539. package/dist/components/ui/kbd.d.ts +3 -0
  540. package/dist/components/ui/label.d.ts +4 -0
  541. package/dist/components/ui/menubar.d.ts +30 -0
  542. package/dist/components/ui/navigation-menu.d.ts +14 -0
  543. package/dist/components/ui/popover.d.ts +7 -0
  544. package/dist/components/ui/progress.d.ts +4 -0
  545. package/dist/components/ui/radio-group.d.ts +5 -0
  546. package/dist/components/ui/resizable.d.ts +25 -0
  547. package/dist/components/ui/scroll-area.d.ts +5 -0
  548. package/dist/components/ui/select.d.ts +15 -0
  549. package/dist/components/ui/separator.d.ts +4 -0
  550. package/dist/components/ui/sheet.d.ts +14 -0
  551. package/dist/components/ui/sidebar.d.ts +69 -0
  552. package/dist/components/ui/skeleton.d.ts +2 -0
  553. package/dist/components/ui/slider.d.ts +4 -0
  554. package/dist/components/ui/snippet.d.ts +18 -0
  555. package/dist/components/ui/sonner.d.ts +3 -0
  556. package/dist/components/ui/spinner.d.ts +6 -0
  557. package/dist/components/ui/switch.d.ts +6 -0
  558. package/dist/components/ui/table.d.ts +22 -0
  559. package/dist/components/ui/tabs.d.ts +11 -0
  560. package/dist/components/ui/tetra-molecule-icon.d.ts +11 -0
  561. package/dist/components/ui/tetrascience-icon.d.ts +7 -0
  562. package/dist/components/ui/textarea.d.ts +3 -0
  563. package/dist/components/ui/toggle-group.d.ts +10 -0
  564. package/dist/components/ui/toggle.d.ts +9 -0
  565. package/dist/components/ui/tooltip.d.ts +7 -0
  566. package/dist/composed/AssistantLayout.cjs +2 -0
  567. package/dist/composed/AssistantLayout.cjs.map +1 -0
  568. package/dist/composed/AssistantLayout.js +10 -0
  569. package/dist/composed/AssistantLayout.js.map +1 -0
  570. package/dist/composed/Chat.cjs +2 -0
  571. package/dist/composed/Chat.cjs.map +1 -0
  572. package/dist/composed/Chat.js +5 -0
  573. package/dist/composed/Chat.js.map +1 -0
  574. package/dist/composed/ConfirmDialog.cjs +2 -0
  575. package/dist/composed/ConfirmDialog.cjs.map +1 -0
  576. package/dist/composed/ConfirmDialog.js +5 -0
  577. package/dist/composed/ConfirmDialog.js.map +1 -0
  578. package/dist/composed/DataAppShell.cjs +2 -0
  579. package/dist/composed/DataAppShell.cjs.map +1 -0
  580. package/dist/composed/DataAppShell.js +22 -0
  581. package/dist/composed/DataAppShell.js.map +1 -0
  582. package/dist/composed/EmptyState.cjs +2 -0
  583. package/dist/composed/EmptyState.cjs.map +1 -0
  584. package/dist/composed/EmptyState.js +5 -0
  585. package/dist/composed/EmptyState.js.map +1 -0
  586. package/dist/composed/FormPatterns.cjs +2 -0
  587. package/dist/composed/FormPatterns.cjs.map +1 -0
  588. package/dist/composed/FormPatterns.js +5 -0
  589. package/dist/composed/FormPatterns.js.map +1 -0
  590. package/dist/composed/MoleculeStructure.cjs +2 -0
  591. package/dist/composed/MoleculeStructure.cjs.map +1 -0
  592. package/dist/composed/MoleculeStructure.js +11 -0
  593. package/dist/composed/MoleculeStructure.js.map +1 -0
  594. package/dist/composed/PlateMapEditor.cjs +2 -0
  595. package/dist/composed/PlateMapEditor.cjs.map +1 -0
  596. package/dist/composed/PlateMapEditor.js +45 -0
  597. package/dist/composed/PlateMapEditor.js.map +1 -0
  598. package/dist/composed/ProcessFlow.cjs +2 -0
  599. package/dist/composed/ProcessFlow.cjs.map +1 -0
  600. package/dist/composed/ProcessFlow.js +7 -0
  601. package/dist/composed/ProcessFlow.js.map +1 -0
  602. package/dist/composed/RichListItem.cjs +2 -0
  603. package/dist/composed/RichListItem.cjs.map +1 -0
  604. package/dist/composed/RichListItem.js +6 -0
  605. package/dist/composed/RichListItem.js.map +1 -0
  606. package/dist/composed/StatCard.cjs +2 -0
  607. package/dist/composed/StatCard.cjs.map +1 -0
  608. package/dist/composed/StatCard.js +5 -0
  609. package/dist/composed/StatCard.js.map +1 -0
  610. package/dist/composed/TdpSearch.cjs +2 -0
  611. package/dist/composed/TdpSearch.cjs.map +1 -0
  612. package/dist/composed/TdpSearch.js +8 -0
  613. package/dist/composed/TdpSearch.js.map +1 -0
  614. package/dist/composed/TopBar.cjs +2 -0
  615. package/dist/composed/TopBar.cjs.map +1 -0
  616. package/dist/composed/TopBar.js +6 -0
  617. package/dist/composed/TopBar.js.map +1 -0
  618. package/dist/composed/UserMenu.cjs +2 -0
  619. package/dist/composed/UserMenu.cjs.map +1 -0
  620. package/dist/composed/UserMenu.js +7 -0
  621. package/dist/composed/UserMenu.js.map +1 -0
  622. package/dist/composed/tdp-link.cjs +2 -0
  623. package/dist/composed/tdp-link.cjs.map +1 -0
  624. package/dist/composed/tdp-link.js +84 -0
  625. package/dist/composed/tdp-link.js.map +1 -0
  626. package/dist/composed/tdp-url.cjs.map +1 -0
  627. package/dist/composed/tdp-url.js.map +1 -0
  628. package/dist/hooks/use-code-editor-theme.d.ts +34 -0
  629. package/dist/hooks/use-element-size.d.ts +25 -0
  630. package/dist/hooks/use-is-dark.d.ts +12 -0
  631. package/dist/hooks/use-mobile.d.ts +1 -0
  632. package/dist/hooks/use-plotly-theme.cjs +1 -1
  633. package/dist/hooks/use-plotly-theme.cjs.map +1 -1
  634. package/dist/hooks/use-plotly-theme.d.ts +49 -0
  635. package/dist/hooks/use-plotly-theme.js +4 -3
  636. package/dist/hooks/use-plotly-theme.js.map +1 -1
  637. package/dist/index.cjs +1 -1
  638. package/dist/index.css +1 -1
  639. package/dist/index.d.ts +102 -4404
  640. package/dist/index.js +698 -659
  641. package/dist/index.js.map +1 -1
  642. package/dist/index.tailwind.css +1 -1
  643. package/dist/jest-setup.cjs +4 -0
  644. package/dist/jest-setup.cjs.map +1 -0
  645. package/dist/jest-setup.d.ts +106 -0
  646. package/dist/jest-setup.js +218 -0
  647. package/dist/jest-setup.js.map +1 -0
  648. package/dist/lib/shiki.cjs +2 -0
  649. package/dist/lib/shiki.cjs.map +1 -0
  650. package/dist/lib/shiki.d.ts +32 -0
  651. package/dist/lib/shiki.js +72 -0
  652. package/dist/lib/shiki.js.map +1 -0
  653. package/dist/lib/utils.d.ts +2 -0
  654. package/dist/server/auth/JwtTokenManager.cjs +1 -1
  655. package/dist/server/auth/JwtTokenManager.cjs.map +1 -1
  656. package/dist/server/auth/JwtTokenManager.d.ts +113 -0
  657. package/dist/server/auth/JwtTokenManager.js +44 -21
  658. package/dist/server/auth/JwtTokenManager.js.map +1 -1
  659. package/dist/server/auth/index.d.ts +5 -0
  660. package/dist/server/index.d.ts +8 -0
  661. package/dist/server/providers/AthenaProvider.cjs +1 -1
  662. package/dist/server/providers/AthenaProvider.cjs.map +1 -1
  663. package/dist/server/providers/AthenaProvider.d.ts +75 -0
  664. package/dist/server/providers/DatabricksProvider.cjs +1 -1
  665. package/dist/server/providers/DatabricksProvider.cjs.map +1 -1
  666. package/dist/server/providers/DatabricksProvider.d.ts +38 -0
  667. package/dist/server/providers/SnowflakeProvider.cjs +1 -1
  668. package/dist/server/providers/SnowflakeProvider.cjs.map +1 -1
  669. package/dist/server/providers/SnowflakeProvider.d.ts +36 -0
  670. package/dist/server/providers/buildProvider.d.ts +39 -0
  671. package/dist/server/providers/entries/athena.d.ts +24 -0
  672. package/dist/server/providers/entries/databricks.d.ts +25 -0
  673. package/dist/server/providers/entries/snowflake.d.ts +25 -0
  674. package/dist/server/providers/exceptions.d.ts +36 -0
  675. package/dist/server/providers/getProviderConfigurations.d.ts +45 -0
  676. package/dist/server/providers/index.d.ts +31 -0
  677. package/dist/server/providers/providerDiscovery.d.ts +81 -0
  678. package/dist/server/providers/types.d.ts +145 -0
  679. package/dist/server/search/TdpSearchManager.d.ts +40 -0
  680. package/dist/server/search/index.d.ts +5 -0
  681. package/dist/server.d.ts +17 -540
  682. package/dist/ui/accordion.cjs +2 -0
  683. package/dist/ui/accordion.cjs.map +1 -0
  684. package/dist/ui/accordion.js +83 -0
  685. package/dist/ui/accordion.js.map +1 -0
  686. package/dist/ui/alert-dialog.cjs +2 -0
  687. package/dist/ui/alert-dialog.cjs.map +1 -0
  688. package/dist/ui/alert-dialog.js +181 -0
  689. package/dist/ui/alert-dialog.js.map +1 -0
  690. package/dist/ui/alert.cjs +2 -0
  691. package/dist/ui/alert.cjs.map +1 -0
  692. package/dist/ui/alert.js +81 -0
  693. package/dist/ui/alert.js.map +1 -0
  694. package/dist/ui/aspect-ratio.cjs.map +1 -0
  695. package/dist/ui/aspect-ratio.js.map +1 -0
  696. package/dist/ui/avatar.cjs +2 -0
  697. package/dist/ui/avatar.cjs.map +1 -0
  698. package/dist/ui/avatar.js +107 -0
  699. package/dist/ui/avatar.js.map +1 -0
  700. package/dist/ui/badge.cjs +2 -0
  701. package/dist/ui/badge.cjs.map +1 -0
  702. package/dist/ui/badge.js +47 -0
  703. package/dist/ui/badge.js.map +1 -0
  704. package/dist/ui/banner.cjs +2 -0
  705. package/dist/ui/banner.cjs.map +1 -0
  706. package/dist/ui/banner.js +80 -0
  707. package/dist/ui/banner.js.map +1 -0
  708. package/dist/ui/breadcrumb.cjs +2 -0
  709. package/dist/ui/breadcrumb.cjs.map +1 -0
  710. package/dist/ui/breadcrumb.js +118 -0
  711. package/dist/ui/breadcrumb.js.map +1 -0
  712. package/dist/ui/button-group.cjs +2 -0
  713. package/dist/ui/button-group.cjs.map +1 -0
  714. package/dist/ui/button-group.js +77 -0
  715. package/dist/ui/button-group.js.map +1 -0
  716. package/dist/ui/button.cjs +2 -0
  717. package/dist/ui/button.cjs.map +1 -0
  718. package/dist/ui/button.js +57 -0
  719. package/dist/ui/button.js.map +1 -0
  720. package/dist/ui/calendar.cjs +2 -0
  721. package/dist/ui/calendar.cjs.map +1 -0
  722. package/dist/ui/calendar.js +174 -0
  723. package/dist/ui/calendar.js.map +1 -0
  724. package/dist/ui/card.cjs +2 -0
  725. package/dist/ui/card.cjs.map +1 -0
  726. package/dist/ui/card.js +102 -0
  727. package/dist/ui/card.js.map +1 -0
  728. package/dist/ui/carousel.cjs +2 -0
  729. package/dist/ui/carousel.cjs.map +1 -0
  730. package/dist/ui/carousel.js +179 -0
  731. package/dist/ui/carousel.js.map +1 -0
  732. package/dist/ui/checkbox.cjs +2 -0
  733. package/dist/ui/checkbox.cjs.map +1 -0
  734. package/dist/ui/checkbox.js +35 -0
  735. package/dist/ui/checkbox.js.map +1 -0
  736. package/dist/ui/code-block.cjs +4 -0
  737. package/dist/ui/code-block.cjs.map +1 -0
  738. package/dist/ui/code-block.js +324 -0
  739. package/dist/ui/code-block.js.map +1 -0
  740. package/dist/ui/code-editor.cjs +2 -0
  741. package/dist/ui/code-editor.cjs.map +1 -0
  742. package/dist/ui/code-editor.js +106 -0
  743. package/dist/ui/code-editor.js.map +1 -0
  744. package/dist/ui/collapsible.cjs.map +1 -0
  745. package/dist/ui/collapsible.js.map +1 -0
  746. package/dist/ui/combobox.cjs +2 -0
  747. package/dist/ui/combobox.cjs.map +1 -0
  748. package/dist/ui/combobox.js +285 -0
  749. package/dist/ui/combobox.js.map +1 -0
  750. package/dist/ui/command.cjs +2 -0
  751. package/dist/ui/command.cjs.map +1 -0
  752. package/dist/ui/command.js +178 -0
  753. package/dist/ui/command.js.map +1 -0
  754. package/dist/ui/context-menu.cjs +2 -0
  755. package/dist/ui/context-menu.cjs.map +1 -0
  756. package/dist/ui/context-menu.js +236 -0
  757. package/dist/ui/context-menu.js.map +1 -0
  758. package/dist/ui/data-table.cjs +2 -0
  759. package/dist/ui/data-table.cjs.map +1 -0
  760. package/dist/ui/data-table.js +16 -0
  761. package/dist/ui/data-table.js.map +1 -0
  762. package/dist/ui/dialog.cjs +2 -0
  763. package/dist/ui/dialog.cjs.map +1 -0
  764. package/dist/ui/dialog.js +165 -0
  765. package/dist/ui/dialog.js.map +1 -0
  766. package/dist/ui/dropdown-menu.cjs +2 -0
  767. package/dist/ui/dropdown-menu.cjs.map +1 -0
  768. package/dist/ui/dropdown-menu.js +260 -0
  769. package/dist/ui/dropdown-menu.js.map +1 -0
  770. package/dist/ui/field.cjs +2 -0
  771. package/dist/ui/field.cjs.map +1 -0
  772. package/dist/ui/field.js +210 -0
  773. package/dist/ui/field.js.map +1 -0
  774. package/dist/ui/hover-card.cjs +2 -0
  775. package/dist/ui/hover-card.cjs.map +1 -0
  776. package/dist/ui/hover-card.js +39 -0
  777. package/dist/ui/hover-card.js.map +1 -0
  778. package/dist/ui/input-group.cjs +2 -0
  779. package/dist/ui/input-group.cjs.map +1 -0
  780. package/dist/ui/input-group.js +145 -0
  781. package/dist/ui/input-group.js.map +1 -0
  782. package/dist/ui/input.cjs +2 -0
  783. package/dist/ui/input.cjs.map +1 -0
  784. package/dist/ui/input.js +20 -0
  785. package/dist/ui/input.js.map +1 -0
  786. package/dist/ui/item.cjs +2 -0
  787. package/dist/ui/item.cjs.map +1 -0
  788. package/dist/ui/item.js +199 -0
  789. package/dist/ui/item.js.map +1 -0
  790. package/dist/ui/kbd.cjs +2 -0
  791. package/dist/ui/kbd.cjs.map +1 -0
  792. package/dist/ui/kbd.js +30 -0
  793. package/dist/ui/kbd.js.map +1 -0
  794. package/dist/ui/label.cjs +2 -0
  795. package/dist/ui/label.cjs.map +1 -0
  796. package/dist/ui/label.js +23 -0
  797. package/dist/ui/label.js.map +1 -0
  798. package/dist/ui/menubar.cjs +2 -0
  799. package/dist/ui/menubar.cjs.map +1 -0
  800. package/dist/ui/menubar.js +256 -0
  801. package/dist/ui/menubar.js.map +1 -0
  802. package/dist/ui/navigation-menu.cjs +2 -0
  803. package/dist/ui/navigation-menu.cjs.map +1 -0
  804. package/dist/ui/navigation-menu.js +164 -0
  805. package/dist/ui/navigation-menu.js.map +1 -0
  806. package/dist/ui/popover.cjs +2 -0
  807. package/dist/ui/popover.cjs.map +1 -0
  808. package/dist/ui/popover.js +45 -0
  809. package/dist/ui/popover.js.map +1 -0
  810. package/dist/ui/radio-group.cjs +2 -0
  811. package/dist/ui/radio-group.cjs.map +1 -0
  812. package/dist/ui/radio-group.js +45 -0
  813. package/dist/ui/radio-group.js.map +1 -0
  814. package/dist/ui/resizable.cjs +2 -0
  815. package/dist/ui/resizable.cjs.map +1 -0
  816. package/dist/ui/resizable.js +58 -0
  817. package/dist/ui/resizable.js.map +1 -0
  818. package/dist/ui/scroll-area.cjs +2 -0
  819. package/dist/ui/scroll-area.cjs.map +1 -0
  820. package/dist/ui/scroll-area.js +61 -0
  821. package/dist/ui/scroll-area.js.map +1 -0
  822. package/dist/ui/select.cjs +2 -0
  823. package/dist/ui/select.cjs.map +1 -0
  824. package/dist/ui/select.js +184 -0
  825. package/dist/ui/select.js.map +1 -0
  826. package/dist/ui/separator.cjs +2 -0
  827. package/dist/ui/separator.cjs.map +1 -0
  828. package/dist/ui/separator.js +27 -0
  829. package/dist/ui/separator.js.map +1 -0
  830. package/dist/ui/sheet.cjs +2 -0
  831. package/dist/ui/sheet.cjs.map +1 -0
  832. package/dist/ui/sheet.js +137 -0
  833. package/dist/ui/sheet.js.map +1 -0
  834. package/dist/ui/sidebar.cjs +2 -0
  835. package/dist/ui/sidebar.cjs.map +1 -0
  836. package/dist/ui/sidebar.js +579 -0
  837. package/dist/ui/sidebar.js.map +1 -0
  838. package/dist/ui/skeleton.cjs +2 -0
  839. package/dist/ui/skeleton.cjs.map +1 -0
  840. package/dist/ui/skeleton.js +24 -0
  841. package/dist/ui/skeleton.js.map +1 -0
  842. package/dist/ui/slider.cjs +2 -0
  843. package/dist/ui/slider.cjs.map +1 -0
  844. package/dist/ui/slider.js +61 -0
  845. package/dist/ui/slider.js.map +1 -0
  846. package/dist/ui/sonner.cjs +2 -0
  847. package/dist/ui/sonner.cjs.map +1 -0
  848. package/dist/ui/sonner.js +52 -0
  849. package/dist/ui/sonner.js.map +1 -0
  850. package/dist/ui/spinner.cjs +2 -0
  851. package/dist/ui/spinner.cjs.map +1 -0
  852. package/dist/ui/spinner.js +39 -0
  853. package/dist/ui/spinner.js.map +1 -0
  854. package/dist/ui/switch.cjs +2 -0
  855. package/dist/ui/switch.cjs.map +1 -0
  856. package/dist/ui/switch.js +32 -0
  857. package/dist/ui/switch.js.map +1 -0
  858. package/dist/ui/table.cjs +2 -0
  859. package/dist/ui/table.cjs.map +1 -0
  860. package/dist/ui/table.js +153 -0
  861. package/dist/ui/table.js.map +1 -0
  862. package/dist/ui/tabs.cjs +2 -0
  863. package/dist/ui/tabs.cjs.map +1 -0
  864. package/dist/ui/tabs.js +92 -0
  865. package/dist/ui/tabs.js.map +1 -0
  866. package/dist/ui/tetra-molecule-icon.cjs +2 -0
  867. package/dist/ui/tetra-molecule-icon.cjs.map +1 -0
  868. package/dist/ui/tetra-molecule-icon.js +50 -0
  869. package/dist/ui/tetra-molecule-icon.js.map +1 -0
  870. package/dist/ui/tetrascience-icon.cjs +2 -0
  871. package/dist/ui/tetrascience-icon.cjs.map +1 -0
  872. package/dist/ui/tetrascience-icon.js +47 -0
  873. package/dist/ui/tetrascience-icon.js.map +1 -0
  874. package/dist/ui/textarea.cjs +2 -0
  875. package/dist/ui/textarea.cjs.map +1 -0
  876. package/dist/ui/textarea.js +19 -0
  877. package/dist/ui/textarea.js.map +1 -0
  878. package/dist/ui/toggle-group.cjs +2 -0
  879. package/dist/ui/toggle-group.cjs.map +1 -0
  880. package/dist/ui/toggle-group.js +81 -0
  881. package/dist/ui/toggle-group.js.map +1 -0
  882. package/dist/ui/toggle.cjs +2 -0
  883. package/dist/ui/toggle.cjs.map +1 -0
  884. package/dist/ui/toggle.js +44 -0
  885. package/dist/ui/toggle.js.map +1 -0
  886. package/dist/ui/tooltip.cjs +2 -0
  887. package/dist/ui/tooltip.cjs.map +1 -0
  888. package/dist/ui/tooltip.js +56 -0
  889. package/dist/ui/tooltip.js.map +1 -0
  890. package/dist/utils/colors.d.ts +50 -0
  891. package/package.json +137 -24
  892. package/dist/athena.d.ts +0 -167
  893. package/dist/components/ai/attachments.cjs +0 -2
  894. package/dist/components/ai/attachments.cjs.map +0 -1
  895. package/dist/components/ai/attachments.js +0 -224
  896. package/dist/components/ai/attachments.js.map +0 -1
  897. package/dist/components/ai/chain-of-thought.cjs +0 -2
  898. package/dist/components/ai/chain-of-thought.cjs.map +0 -1
  899. package/dist/components/ai/chain-of-thought.js +0 -145
  900. package/dist/components/ai/chain-of-thought.js.map +0 -1
  901. package/dist/components/ai/confirmation.cjs +0 -2
  902. package/dist/components/ai/confirmation.cjs.map +0 -1
  903. package/dist/components/ai/confirmation.js +0 -109
  904. package/dist/components/ai/confirmation.js.map +0 -1
  905. package/dist/components/ai/context.cjs +0 -2
  906. package/dist/components/ai/context.cjs.map +0 -1
  907. package/dist/components/ai/context.js +0 -266
  908. package/dist/components/ai/context.js.map +0 -1
  909. package/dist/components/ai/conversation.cjs +0 -4
  910. package/dist/components/ai/conversation.cjs.map +0 -1
  911. package/dist/components/ai/conversation.js +0 -108
  912. package/dist/components/ai/conversation.js.map +0 -1
  913. package/dist/components/ai/inline-citation.cjs +0 -2
  914. package/dist/components/ai/inline-citation.cjs.map +0 -1
  915. package/dist/components/ai/inline-citation.js +0 -182
  916. package/dist/components/ai/inline-citation.js.map +0 -1
  917. package/dist/components/ai/message.cjs +0 -2
  918. package/dist/components/ai/message.cjs.map +0 -1
  919. package/dist/components/ai/message.js +0 -237
  920. package/dist/components/ai/message.js.map +0 -1
  921. package/dist/components/ai/model-selector.cjs +0 -2
  922. package/dist/components/ai/model-selector.cjs.map +0 -1
  923. package/dist/components/ai/model-selector.js +0 -77
  924. package/dist/components/ai/model-selector.js.map +0 -1
  925. package/dist/components/ai/prompt-input.cjs +0 -2
  926. package/dist/components/ai/prompt-input.cjs.map +0 -1
  927. package/dist/components/ai/prompt-input.js +0 -774
  928. package/dist/components/ai/prompt-input.js.map +0 -1
  929. package/dist/components/ai/queue.cjs +0 -2
  930. package/dist/components/ai/queue.cjs.map +0 -1
  931. package/dist/components/ai/queue.js +0 -209
  932. package/dist/components/ai/queue.js.map +0 -1
  933. package/dist/components/ai/reasoning.cjs +0 -2
  934. package/dist/components/ai/reasoning.cjs.map +0 -1
  935. package/dist/components/ai/reasoning.js +0 -129
  936. package/dist/components/ai/reasoning.js.map +0 -1
  937. package/dist/components/ai/shimmer.cjs +0 -2
  938. package/dist/components/ai/shimmer.cjs.map +0 -1
  939. package/dist/components/ai/shimmer.js +0 -49
  940. package/dist/components/ai/shimmer.js.map +0 -1
  941. package/dist/components/ai/sources.cjs +0 -2
  942. package/dist/components/ai/sources.cjs.map +0 -1
  943. package/dist/components/ai/sources.js +0 -54
  944. package/dist/components/ai/sources.js.map +0 -1
  945. package/dist/components/ai/speech-input.cjs +0 -2
  946. package/dist/components/ai/speech-input.cjs.map +0 -1
  947. package/dist/components/ai/speech-input.js +0 -123
  948. package/dist/components/ai/speech-input.js.map +0 -1
  949. package/dist/components/ai/stream-status.cjs +0 -2
  950. package/dist/components/ai/stream-status.cjs.map +0 -1
  951. package/dist/components/ai/stream-status.js +0 -106
  952. package/dist/components/ai/stream-status.js.map +0 -1
  953. package/dist/components/ai/suggestion.cjs +0 -2
  954. package/dist/components/ai/suggestion.cjs.map +0 -1
  955. package/dist/components/ai/suggestion.js +0 -38
  956. package/dist/components/ai/suggestion.js.map +0 -1
  957. package/dist/components/ai/task.cjs +0 -2
  958. package/dist/components/ai/task.cjs.map +0 -1
  959. package/dist/components/ai/task.js +0 -94
  960. package/dist/components/ai/task.js.map +0 -1
  961. package/dist/components/ai/tool.cjs +0 -2
  962. package/dist/components/ai/tool.cjs.map +0 -1
  963. package/dist/components/ai/tool.js +0 -143
  964. package/dist/components/ai/tool.js.map +0 -1
  965. package/dist/components/charts/AreaGraph/AreaGraph.cjs +0 -2
  966. package/dist/components/charts/AreaGraph/AreaGraph.cjs.map +0 -1
  967. package/dist/components/charts/AreaGraph/AreaGraph.js +0 -271
  968. package/dist/components/charts/AreaGraph/AreaGraph.js.map +0 -1
  969. package/dist/components/charts/BarGraph/BarGraph.cjs +0 -2
  970. package/dist/components/charts/BarGraph/BarGraph.cjs.map +0 -1
  971. package/dist/components/charts/BarGraph/BarGraph.js +0 -220
  972. package/dist/components/charts/BarGraph/BarGraph.js.map +0 -1
  973. package/dist/components/charts/Boxplot/Boxplot.cjs +0 -2
  974. package/dist/components/charts/Boxplot/Boxplot.cjs.map +0 -1
  975. package/dist/components/charts/Boxplot/Boxplot.js +0 -209
  976. package/dist/components/charts/Boxplot/Boxplot.js.map +0 -1
  977. package/dist/components/charts/ChromatogramChart/ChromatogramChart.cjs +0 -2
  978. package/dist/components/charts/ChromatogramChart/ChromatogramChart.cjs.map +0 -1
  979. package/dist/components/charts/ChromatogramChart/ChromatogramChart.js +0 -227
  980. package/dist/components/charts/ChromatogramChart/ChromatogramChart.js.map +0 -1
  981. package/dist/components/charts/ChromatogramChart/annotations.cjs +0 -2
  982. package/dist/components/charts/ChromatogramChart/annotations.cjs.map +0 -1
  983. package/dist/components/charts/ChromatogramChart/annotations.js +0 -73
  984. package/dist/components/charts/ChromatogramChart/annotations.js.map +0 -1
  985. package/dist/components/charts/ChromatogramChart/boundaryMarkers.cjs +0 -2
  986. package/dist/components/charts/ChromatogramChart/boundaryMarkers.cjs.map +0 -1
  987. package/dist/components/charts/ChromatogramChart/boundaryMarkers.js +0 -34
  988. package/dist/components/charts/ChromatogramChart/boundaryMarkers.js.map +0 -1
  989. package/dist/components/charts/ChromatogramChart/constants.cjs +0 -2
  990. package/dist/components/charts/ChromatogramChart/constants.cjs.map +0 -1
  991. package/dist/components/charts/ChromatogramChart/constants.js +0 -30
  992. package/dist/components/charts/ChromatogramChart/constants.js.map +0 -1
  993. package/dist/components/charts/ChromatogramChart/dataProcessing.cjs +0 -2
  994. package/dist/components/charts/ChromatogramChart/dataProcessing.cjs.map +0 -1
  995. package/dist/components/charts/ChromatogramChart/dataProcessing.js +0 -79
  996. package/dist/components/charts/ChromatogramChart/dataProcessing.js.map +0 -1
  997. package/dist/components/charts/ChromatogramChart/peakDetection.cjs.map +0 -1
  998. package/dist/components/charts/ChromatogramChart/peakDetection.js.map +0 -1
  999. package/dist/components/charts/DotPlot/DotPlot.cjs +0 -2
  1000. package/dist/components/charts/DotPlot/DotPlot.cjs.map +0 -1
  1001. package/dist/components/charts/DotPlot/DotPlot.js +0 -208
  1002. package/dist/components/charts/DotPlot/DotPlot.js.map +0 -1
  1003. package/dist/components/charts/Heatmap/Heatmap.cjs +0 -2
  1004. package/dist/components/charts/Heatmap/Heatmap.cjs.map +0 -1
  1005. package/dist/components/charts/Heatmap/Heatmap.js +0 -67
  1006. package/dist/components/charts/Heatmap/Heatmap.js.map +0 -1
  1007. package/dist/components/charts/LineGraph/LineGraph.cjs +0 -2
  1008. package/dist/components/charts/LineGraph/LineGraph.cjs.map +0 -1
  1009. package/dist/components/charts/LineGraph/LineGraph.js +0 -225
  1010. package/dist/components/charts/LineGraph/LineGraph.js.map +0 -1
  1011. package/dist/components/charts/ScatterGraph/ScatterGraph.cjs +0 -2
  1012. package/dist/components/charts/ScatterGraph/ScatterGraph.cjs.map +0 -1
  1013. package/dist/components/charts/ScatterGraph/ScatterGraph.js +0 -234
  1014. package/dist/components/charts/ScatterGraph/ScatterGraph.js.map +0 -1
  1015. package/dist/components/composed/tdp-link.cjs +0 -2
  1016. package/dist/components/composed/tdp-link.cjs.map +0 -1
  1017. package/dist/components/composed/tdp-link.js +0 -84
  1018. package/dist/components/composed/tdp-link.js.map +0 -1
  1019. package/dist/components/composed/tdp-url.cjs.map +0 -1
  1020. package/dist/components/composed/tdp-url.js.map +0 -1
  1021. package/dist/components/ui/accordion.cjs +0 -2
  1022. package/dist/components/ui/accordion.cjs.map +0 -1
  1023. package/dist/components/ui/accordion.js +0 -83
  1024. package/dist/components/ui/accordion.js.map +0 -1
  1025. package/dist/components/ui/alert-dialog.cjs +0 -2
  1026. package/dist/components/ui/alert-dialog.cjs.map +0 -1
  1027. package/dist/components/ui/alert-dialog.js +0 -181
  1028. package/dist/components/ui/alert-dialog.js.map +0 -1
  1029. package/dist/components/ui/alert.cjs +0 -2
  1030. package/dist/components/ui/alert.cjs.map +0 -1
  1031. package/dist/components/ui/alert.js +0 -81
  1032. package/dist/components/ui/alert.js.map +0 -1
  1033. package/dist/components/ui/aspect-ratio.cjs.map +0 -1
  1034. package/dist/components/ui/aspect-ratio.js.map +0 -1
  1035. package/dist/components/ui/avatar.cjs +0 -2
  1036. package/dist/components/ui/avatar.cjs.map +0 -1
  1037. package/dist/components/ui/avatar.js +0 -107
  1038. package/dist/components/ui/avatar.js.map +0 -1
  1039. package/dist/components/ui/badge.cjs +0 -2
  1040. package/dist/components/ui/badge.cjs.map +0 -1
  1041. package/dist/components/ui/badge.js +0 -47
  1042. package/dist/components/ui/badge.js.map +0 -1
  1043. package/dist/components/ui/banner.cjs +0 -2
  1044. package/dist/components/ui/banner.cjs.map +0 -1
  1045. package/dist/components/ui/banner.js +0 -80
  1046. package/dist/components/ui/banner.js.map +0 -1
  1047. package/dist/components/ui/breadcrumb.cjs +0 -2
  1048. package/dist/components/ui/breadcrumb.cjs.map +0 -1
  1049. package/dist/components/ui/breadcrumb.js +0 -118
  1050. package/dist/components/ui/breadcrumb.js.map +0 -1
  1051. package/dist/components/ui/button-group.cjs +0 -2
  1052. package/dist/components/ui/button-group.cjs.map +0 -1
  1053. package/dist/components/ui/button-group.js +0 -77
  1054. package/dist/components/ui/button-group.js.map +0 -1
  1055. package/dist/components/ui/button.cjs +0 -2
  1056. package/dist/components/ui/button.cjs.map +0 -1
  1057. package/dist/components/ui/button.js +0 -57
  1058. package/dist/components/ui/button.js.map +0 -1
  1059. package/dist/components/ui/calendar.cjs +0 -2
  1060. package/dist/components/ui/calendar.cjs.map +0 -1
  1061. package/dist/components/ui/calendar.js +0 -174
  1062. package/dist/components/ui/calendar.js.map +0 -1
  1063. package/dist/components/ui/card.cjs +0 -2
  1064. package/dist/components/ui/card.cjs.map +0 -1
  1065. package/dist/components/ui/card.js +0 -102
  1066. package/dist/components/ui/card.js.map +0 -1
  1067. package/dist/components/ui/carousel.cjs +0 -2
  1068. package/dist/components/ui/carousel.cjs.map +0 -1
  1069. package/dist/components/ui/carousel.js +0 -179
  1070. package/dist/components/ui/carousel.js.map +0 -1
  1071. package/dist/components/ui/checkbox.cjs +0 -2
  1072. package/dist/components/ui/checkbox.cjs.map +0 -1
  1073. package/dist/components/ui/checkbox.js +0 -35
  1074. package/dist/components/ui/checkbox.js.map +0 -1
  1075. package/dist/components/ui/code-block.cjs +0 -4
  1076. package/dist/components/ui/code-block.cjs.map +0 -1
  1077. package/dist/components/ui/code-block.js +0 -306
  1078. package/dist/components/ui/code-block.js.map +0 -1
  1079. package/dist/components/ui/code-editor.cjs +0 -2
  1080. package/dist/components/ui/code-editor.cjs.map +0 -1
  1081. package/dist/components/ui/code-editor.js +0 -103
  1082. package/dist/components/ui/code-editor.js.map +0 -1
  1083. package/dist/components/ui/collapsible.cjs.map +0 -1
  1084. package/dist/components/ui/collapsible.js.map +0 -1
  1085. package/dist/components/ui/combobox.cjs +0 -2
  1086. package/dist/components/ui/combobox.cjs.map +0 -1
  1087. package/dist/components/ui/combobox.js +0 -281
  1088. package/dist/components/ui/combobox.js.map +0 -1
  1089. package/dist/components/ui/command.cjs +0 -2
  1090. package/dist/components/ui/command.cjs.map +0 -1
  1091. package/dist/components/ui/command.js +0 -174
  1092. package/dist/components/ui/command.js.map +0 -1
  1093. package/dist/components/ui/context-menu.cjs +0 -2
  1094. package/dist/components/ui/context-menu.cjs.map +0 -1
  1095. package/dist/components/ui/context-menu.js +0 -236
  1096. package/dist/components/ui/context-menu.js.map +0 -1
  1097. package/dist/components/ui/dialog.cjs +0 -2
  1098. package/dist/components/ui/dialog.cjs.map +0 -1
  1099. package/dist/components/ui/dialog.js +0 -165
  1100. package/dist/components/ui/dialog.js.map +0 -1
  1101. package/dist/components/ui/drawer.cjs +0 -2
  1102. package/dist/components/ui/drawer.cjs.map +0 -1
  1103. package/dist/components/ui/drawer.js +0 -125
  1104. package/dist/components/ui/drawer.js.map +0 -1
  1105. package/dist/components/ui/dropdown-menu.cjs +0 -2
  1106. package/dist/components/ui/dropdown-menu.cjs.map +0 -1
  1107. package/dist/components/ui/dropdown-menu.js +0 -252
  1108. package/dist/components/ui/dropdown-menu.js.map +0 -1
  1109. package/dist/components/ui/field.cjs +0 -2
  1110. package/dist/components/ui/field.cjs.map +0 -1
  1111. package/dist/components/ui/field.js +0 -210
  1112. package/dist/components/ui/field.js.map +0 -1
  1113. package/dist/components/ui/hover-card.cjs +0 -2
  1114. package/dist/components/ui/hover-card.cjs.map +0 -1
  1115. package/dist/components/ui/hover-card.js +0 -39
  1116. package/dist/components/ui/hover-card.js.map +0 -1
  1117. package/dist/components/ui/input-group.cjs +0 -2
  1118. package/dist/components/ui/input-group.cjs.map +0 -1
  1119. package/dist/components/ui/input-group.js +0 -145
  1120. package/dist/components/ui/input-group.js.map +0 -1
  1121. package/dist/components/ui/input-otp.cjs +0 -2
  1122. package/dist/components/ui/input-otp.cjs.map +0 -1
  1123. package/dist/components/ui/input-otp.js +0 -82
  1124. package/dist/components/ui/input-otp.js.map +0 -1
  1125. package/dist/components/ui/input.cjs +0 -2
  1126. package/dist/components/ui/input.cjs.map +0 -1
  1127. package/dist/components/ui/input.js +0 -20
  1128. package/dist/components/ui/input.js.map +0 -1
  1129. package/dist/components/ui/item.cjs +0 -2
  1130. package/dist/components/ui/item.cjs.map +0 -1
  1131. package/dist/components/ui/item.js +0 -191
  1132. package/dist/components/ui/item.js.map +0 -1
  1133. package/dist/components/ui/kbd.cjs +0 -2
  1134. package/dist/components/ui/kbd.cjs.map +0 -1
  1135. package/dist/components/ui/kbd.js +0 -30
  1136. package/dist/components/ui/kbd.js.map +0 -1
  1137. package/dist/components/ui/label.cjs +0 -2
  1138. package/dist/components/ui/label.cjs.map +0 -1
  1139. package/dist/components/ui/label.js +0 -23
  1140. package/dist/components/ui/label.js.map +0 -1
  1141. package/dist/components/ui/menubar.cjs +0 -2
  1142. package/dist/components/ui/menubar.cjs.map +0 -1
  1143. package/dist/components/ui/menubar.js +0 -256
  1144. package/dist/components/ui/menubar.js.map +0 -1
  1145. package/dist/components/ui/navigation-menu.cjs +0 -2
  1146. package/dist/components/ui/navigation-menu.cjs.map +0 -1
  1147. package/dist/components/ui/navigation-menu.js +0 -164
  1148. package/dist/components/ui/navigation-menu.js.map +0 -1
  1149. package/dist/components/ui/popover.cjs +0 -2
  1150. package/dist/components/ui/popover.cjs.map +0 -1
  1151. package/dist/components/ui/popover.js +0 -45
  1152. package/dist/components/ui/popover.js.map +0 -1
  1153. package/dist/components/ui/radio-group.cjs +0 -2
  1154. package/dist/components/ui/radio-group.cjs.map +0 -1
  1155. package/dist/components/ui/radio-group.js +0 -45
  1156. package/dist/components/ui/radio-group.js.map +0 -1
  1157. package/dist/components/ui/resizable.cjs +0 -2
  1158. package/dist/components/ui/resizable.cjs.map +0 -1
  1159. package/dist/components/ui/resizable.js +0 -58
  1160. package/dist/components/ui/resizable.js.map +0 -1
  1161. package/dist/components/ui/scroll-area.cjs +0 -2
  1162. package/dist/components/ui/scroll-area.cjs.map +0 -1
  1163. package/dist/components/ui/scroll-area.js +0 -60
  1164. package/dist/components/ui/scroll-area.js.map +0 -1
  1165. package/dist/components/ui/select.cjs +0 -2
  1166. package/dist/components/ui/select.cjs.map +0 -1
  1167. package/dist/components/ui/select.js +0 -184
  1168. package/dist/components/ui/select.js.map +0 -1
  1169. package/dist/components/ui/separator.cjs +0 -2
  1170. package/dist/components/ui/separator.cjs.map +0 -1
  1171. package/dist/components/ui/separator.js +0 -27
  1172. package/dist/components/ui/separator.js.map +0 -1
  1173. package/dist/components/ui/sheet.cjs +0 -2
  1174. package/dist/components/ui/sheet.cjs.map +0 -1
  1175. package/dist/components/ui/sheet.js +0 -137
  1176. package/dist/components/ui/sheet.js.map +0 -1
  1177. package/dist/components/ui/sidebar.cjs +0 -2
  1178. package/dist/components/ui/sidebar.cjs.map +0 -1
  1179. package/dist/components/ui/sidebar.js +0 -579
  1180. package/dist/components/ui/sidebar.js.map +0 -1
  1181. package/dist/components/ui/skeleton.cjs +0 -2
  1182. package/dist/components/ui/skeleton.cjs.map +0 -1
  1183. package/dist/components/ui/skeleton.js +0 -24
  1184. package/dist/components/ui/skeleton.js.map +0 -1
  1185. package/dist/components/ui/slider.cjs +0 -2
  1186. package/dist/components/ui/slider.cjs.map +0 -1
  1187. package/dist/components/ui/slider.js +0 -60
  1188. package/dist/components/ui/slider.js.map +0 -1
  1189. package/dist/components/ui/sonner.cjs +0 -2
  1190. package/dist/components/ui/sonner.cjs.map +0 -1
  1191. package/dist/components/ui/sonner.js +0 -37
  1192. package/dist/components/ui/sonner.js.map +0 -1
  1193. package/dist/components/ui/spinner.cjs +0 -2
  1194. package/dist/components/ui/spinner.cjs.map +0 -1
  1195. package/dist/components/ui/spinner.js +0 -39
  1196. package/dist/components/ui/spinner.js.map +0 -1
  1197. package/dist/components/ui/switch.cjs +0 -2
  1198. package/dist/components/ui/switch.cjs.map +0 -1
  1199. package/dist/components/ui/switch.js +0 -32
  1200. package/dist/components/ui/switch.js.map +0 -1
  1201. package/dist/components/ui/table.cjs +0 -2
  1202. package/dist/components/ui/table.cjs.map +0 -1
  1203. package/dist/components/ui/table.js +0 -152
  1204. package/dist/components/ui/table.js.map +0 -1
  1205. package/dist/components/ui/tabs.cjs +0 -2
  1206. package/dist/components/ui/tabs.cjs.map +0 -1
  1207. package/dist/components/ui/tabs.js +0 -92
  1208. package/dist/components/ui/tabs.js.map +0 -1
  1209. package/dist/components/ui/tetrascience-icon.cjs +0 -2
  1210. package/dist/components/ui/tetrascience-icon.cjs.map +0 -1
  1211. package/dist/components/ui/tetrascience-icon.js +0 -46
  1212. package/dist/components/ui/tetrascience-icon.js.map +0 -1
  1213. package/dist/components/ui/textarea.cjs +0 -2
  1214. package/dist/components/ui/textarea.cjs.map +0 -1
  1215. package/dist/components/ui/textarea.js +0 -19
  1216. package/dist/components/ui/textarea.js.map +0 -1
  1217. package/dist/components/ui/toggle-group.cjs +0 -2
  1218. package/dist/components/ui/toggle-group.cjs.map +0 -1
  1219. package/dist/components/ui/toggle-group.js +0 -77
  1220. package/dist/components/ui/toggle-group.js.map +0 -1
  1221. package/dist/components/ui/toggle.cjs +0 -2
  1222. package/dist/components/ui/toggle.cjs.map +0 -1
  1223. package/dist/components/ui/toggle.js +0 -44
  1224. package/dist/components/ui/toggle.js.map +0 -1
  1225. package/dist/components/ui/tooltip.cjs +0 -2
  1226. package/dist/components/ui/tooltip.cjs.map +0 -1
  1227. package/dist/components/ui/tooltip.js +0 -56
  1228. package/dist/components/ui/tooltip.js.map +0 -1
  1229. package/dist/databricks.d.ts +0 -129
  1230. package/dist/providers/athena.d.ts +0 -9
  1231. package/dist/providers/databricks.d.ts +0 -9
  1232. package/dist/providers/snowflake.d.ts +0 -9
  1233. package/dist/snowflake.d.ts +0 -125
  1234. /package/dist/components/charts/{ChromatogramChart → Chromatogram}/peakDetection.cjs +0 -0
  1235. /package/dist/components/charts/{ChromatogramChart → Chromatogram}/peakDetection.js +0 -0
  1236. /package/dist/{components/composed → composed}/tdp-url.cjs +0 -0
  1237. /package/dist/{components/composed → composed}/tdp-url.js +0 -0
  1238. /package/dist/{components/ui → ui}/aspect-ratio.cjs +0 -0
  1239. /package/dist/{components/ui → ui}/aspect-ratio.js +0 -0
  1240. /package/dist/{components/ui → ui}/collapsible.cjs +0 -0
  1241. /package/dist/{components/ui → ui}/collapsible.js +0 -0
@@ -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 };
@@ -0,0 +1,22 @@
1
+ const r = "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`).";
2
+ let t = null, l = null;
3
+ function n() {
4
+ return l ??= import("plotly.js-dist").then((e) => {
5
+ const o = e;
6
+ return t = o.default ?? o, t;
7
+ }).catch((e) => {
8
+ throw l = null, console.error(r, e), new Error(r);
9
+ }), l;
10
+ }
11
+ function a() {
12
+ if (!t)
13
+ throw new Error(
14
+ "Plotly accessed before loadPlotly() resolved. Call loadPlotly() and draw the plot first."
15
+ );
16
+ return t;
17
+ }
18
+ export {
19
+ a as getLoadedPlotly,
20
+ n as loadPlotly
21
+ };
22
+ //# sourceMappingURL=plotly-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plotly-loader.js","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":"AAsBA,MAAMA,IACJ;AAIF,IAAIC,IAAoC,MACpCC,IAA8C;AAG3C,SAASC,IAAoC;AAClD,SAAAD,MAAkB,OAAO,gBAAgB,EACtC,KAAK,CAACE,MAAQ;AAGb,UAAMC,IAAcD;AACpB,WAAAH,IAAeI,EAAY,WAAWA,GAC/BJ;AAAA,EACT,CAAC,EACA,MAAM,CAACK,MAAmB;AAEzB,UAAAJ,IAAgB,MAChB,QAAQ,MAAMF,GAAwBM,CAAK,GACrC,IAAI,MAAMN,CAAsB;AAAA,EACxC,CAAC,GACIE;AACT;AAOO,SAASK,IAAgC;AAC9C,MAAI,CAACN;AACH,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAGJ,SAAOA;AACT;"}
@@ -0,0 +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 _=[{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
+ //# sourceMappingURL=AssistantLayout.cjs.map
@@ -0,0 +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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"}
@@ -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 {};
@@ -0,0 +1,142 @@
1
+ import { jsxs as N, jsx as n, Fragment as z } from "react/jsx-runtime";
2
+ import { PanelLeft as D, PanelBottom as C, PanelRight as L } from "lucide-react";
3
+ import * as l from "react";
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";
7
+ import { cn as d } from "../../../lib/utils.js";
8
+ const y = l.createContext(null);
9
+ function _(s, t) {
10
+ if (typeof window > "u") return t;
11
+ const e = window.localStorage.getItem(`${s}.dock`);
12
+ return e === "right" || e === "bottom" || e === "left" ? e : t;
13
+ }
14
+ function E(s, t) {
15
+ if (typeof window > "u") return t;
16
+ const e = Number(window.localStorage.getItem(`${s}.size`));
17
+ return !Number.isFinite(e) || e <= 0 || e >= 100 ? t : e;
18
+ }
19
+ function G({
20
+ children: s,
21
+ storageKey: t = "ts-ui.assistant",
22
+ defaultDock: e = "left",
23
+ defaultSize: u = 32,
24
+ defaultVisible: m = !0,
25
+ persist: o = !0
26
+ }) {
27
+ const [i, r] = l.useState(
28
+ () => o ? _(t, e) : e
29
+ ), [f, a] = l.useState(
30
+ () => o ? E(t, u) : u
31
+ ), [b, S] = l.useState(m), w = l.useCallback(
32
+ (c) => {
33
+ r(c), o && typeof window < "u" && window.localStorage.setItem(`${t}.dock`, c);
34
+ },
35
+ [t, o]
36
+ ), h = l.useCallback(
37
+ (c) => {
38
+ a(c), o && typeof window < "u" && window.localStorage.setItem(`${t}.size`, String(Math.round(c)));
39
+ },
40
+ [t, o]
41
+ ), v = l.useMemo(
42
+ () => ({ dock: i, setDock: w, size: f, setSize: h, visible: b, setVisible: S }),
43
+ [i, w, f, h, b]
44
+ );
45
+ return /* @__PURE__ */ n(y.Provider, { value: v, children: s });
46
+ }
47
+ function I() {
48
+ const s = l.useContext(y);
49
+ if (!s) throw new Error("useAssistantLayout must be used within an AssistantLayoutProvider");
50
+ return s;
51
+ }
52
+ const F = [
53
+ { value: "left", label: "Dock assistant left", Icon: D },
54
+ { value: "bottom", label: "Dock assistant bottom", Icon: C },
55
+ { value: "right", label: "Dock assistant right", Icon: L }
56
+ ];
57
+ function q({ label: s = "AI Assistant", className: t }) {
58
+ const { dock: e, setDock: u, visible: m, setVisible: o } = I();
59
+ return /* @__PURE__ */ N("div", { className: d("flex items-center gap-2", t), children: [
60
+ s != null && /* @__PURE__ */ n("span", { className: "text-sm font-medium", children: s }),
61
+ /* @__PURE__ */ n("div", { className: "inline-flex overflow-hidden rounded-lg border border-border", children: F.map(({ value: i, label: r, Icon: f }) => {
62
+ const a = m && e === i;
63
+ return /* @__PURE__ */ n(
64
+ R,
65
+ {
66
+ variant: a ? "secondary" : "ghost",
67
+ size: "icon-sm",
68
+ className: "rounded-none bg-clip-border",
69
+ "aria-label": a ? "Hide AI Assistant" : r,
70
+ "aria-pressed": a,
71
+ title: a ? "Hide AI Assistant" : r,
72
+ onClick: () => {
73
+ a ? o(!1) : (u(i), o(!0));
74
+ },
75
+ children: /* @__PURE__ */ n(f, { className: "size-4" })
76
+ },
77
+ i
78
+ );
79
+ }) })
80
+ ] });
81
+ }
82
+ const A = "flex min-h-0 min-w-0 p-2", x = "flex h-full min-h-0 min-w-0 flex-1 flex-col overflow-hidden rounded-lg border border-border bg-card", k = "assistant";
83
+ function J({
84
+ assistant: s,
85
+ children: t,
86
+ minSize: e = 20,
87
+ maxSize: u = 70,
88
+ className: m,
89
+ assistantClassName: o,
90
+ contentClassName: i
91
+ }) {
92
+ const { dock: r, size: f, setSize: a, visible: b } = I(), { orientation: S, assistantFirst: w } = $(r);
93
+ if (!b)
94
+ return /* @__PURE__ */ n(
95
+ "div",
96
+ {
97
+ "data-slot": "assistant-layout",
98
+ className: d("flex min-h-0 flex-1 overflow-hidden", m),
99
+ children: /* @__PURE__ */ n("div", { className: d(A, "flex-1"), children: /* @__PURE__ */ n("div", { "data-slot": "assistant-layout-content", className: d(x, i), children: t }) })
100
+ }
101
+ );
102
+ const h = /* @__PURE__ */ n(
103
+ P,
104
+ {
105
+ id: k,
106
+ defaultSize: `${f}%`,
107
+ minSize: `${e}%`,
108
+ maxSize: `${u}%`,
109
+ className: A,
110
+ children: /* @__PURE__ */ n("div", { "data-slot": "assistant-layout-assistant", className: d(x, o), children: s })
111
+ }
112
+ ), v = /* @__PURE__ */ n(P, { id: "content", className: A, children: /* @__PURE__ */ n("div", { "data-slot": "assistant-layout-content", className: d(x, i), children: t }) });
113
+ return /* @__PURE__ */ n(
114
+ H,
115
+ {
116
+ orientation: S,
117
+ "data-slot": "assistant-layout",
118
+ className: d("min-h-0 flex-1 overflow-hidden", m),
119
+ onLayoutChanged: (c) => {
120
+ const p = c[k];
121
+ typeof p == "number" && a(p);
122
+ },
123
+ children: w ? /* @__PURE__ */ N(z, { children: [
124
+ h,
125
+ /* @__PURE__ */ n(g, { withHandle: !0 }),
126
+ v
127
+ ] }) : /* @__PURE__ */ N(z, { children: [
128
+ v,
129
+ /* @__PURE__ */ n(g, { withHandle: !0 }),
130
+ h
131
+ ] })
132
+ },
133
+ r
134
+ );
135
+ }
136
+ export {
137
+ q as AssistantDockControls,
138
+ J as AssistantLayout,
139
+ G as AssistantLayoutProvider,
140
+ I as useAssistantLayout
141
+ };
142
+ //# sourceMappingURL=AssistantLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssistantLayout.js","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,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function e(t){return{orientation:t==="bottom"?"vertical":"horizontal",assistantFirst:t==="left"}}exports.dockPanels=e;
2
+ //# sourceMappingURL=dockLayout.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dockLayout.cjs","sources":["../../../../src/components/composed/AssistantLayout/dockLayout.ts"],"sourcesContent":["/** Where the AI Assistant panel docks relative to the main content. */\nexport type AssistantDock = \"left\" | \"right\" | \"bottom\"\n\nexport interface DockPanels {\n /** Resizable group orientation for this dock. */\n orientation: \"horizontal\" | \"vertical\"\n /** Whether the assistant panel renders before the content panel. */\n assistantFirst: boolean\n}\n\n/**\n * Maps a dock position to the resizable group's orientation and panel order.\n * - left → horizontal, assistant first [assistant | content]\n * - right → horizontal, content first [content | assistant]\n * - bottom → vertical, content first [content / assistant]\n */\nexport function dockPanels(dock: AssistantDock): DockPanels {\n return {\n orientation: dock === \"bottom\" ? \"vertical\" : \"horizontal\",\n assistantFirst: dock === \"left\",\n }\n}\n"],"names":["dockPanels","dock"],"mappings":"gFAgBO,SAASA,EAAWC,EAAiC,CAC1D,MAAO,CACL,YAAaA,IAAS,SAAW,WAAa,aAC9C,eAAgBA,IAAS,MAAA,CAE7B"}
@@ -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,10 @@
1
+ function n(t) {
2
+ return {
3
+ orientation: t === "bottom" ? "vertical" : "horizontal",
4
+ assistantFirst: t === "left"
5
+ };
6
+ }
7
+ export {
8
+ n as dockPanels
9
+ };
10
+ //# sourceMappingURL=dockLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dockLayout.js","sources":["../../../../src/components/composed/AssistantLayout/dockLayout.ts"],"sourcesContent":["/** Where the AI Assistant panel docks relative to the main content. */\nexport type AssistantDock = \"left\" | \"right\" | \"bottom\"\n\nexport interface DockPanels {\n /** Resizable group orientation for this dock. */\n orientation: \"horizontal\" | \"vertical\"\n /** Whether the assistant panel renders before the content panel. */\n assistantFirst: boolean\n}\n\n/**\n * Maps a dock position to the resizable group's orientation and panel order.\n * - left → horizontal, assistant first [assistant | content]\n * - right → horizontal, content first [content | assistant]\n * - bottom → vertical, content first [content / assistant]\n */\nexport function dockPanels(dock: AssistantDock): DockPanels {\n return {\n orientation: dock === \"bottom\" ? \"vertical\" : \"horizontal\",\n assistantFirst: dock === \"left\",\n }\n}\n"],"names":["dockPanels","dock"],"mappings":"AAgBO,SAASA,EAAWC,GAAiC;AAC1D,SAAO;AAAA,IACL,aAAaA,MAAS,WAAW,aAAa;AAAA,IAC9C,gBAAgBA,MAAS;AAAA,EAAA;AAE7B;"}
@@ -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,{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
@@ -1 +1 @@
1
- {"version":3,"file":"Chat.cjs","sources":["../../../../src/components/composed/Chat/Chat.tsx"],"sourcesContent":["import { CopyIcon, GlobeIcon, RefreshCcwIcon } from \"lucide-react\"\nimport { useCallback, useId, useState } from \"react\"\n\nimport {\n Conversation,\n ConversationContent,\n ConversationEmptyState,\n ConversationScrollButton,\n} from \"@/components/ai/conversation\"\nimport {\n Message,\n MessageAction,\n MessageActions,\n MessageBranch,\n MessageBranchContent,\n MessageBranchNext,\n MessageBranchPage,\n MessageBranchPrevious,\n MessageBranchSelector,\n MessageContent,\n MessageResponse,\n MessageToolbar,\n} from \"@/components/ai/message\"\nimport {\n PromptInput,\n PromptInputBody,\n PromptInputButton,\n PromptInputFooter,\n PromptInputSelect,\n PromptInputSelectContent,\n PromptInputSelectItem,\n PromptInputSelectTrigger,\n PromptInputSelectValue,\n PromptInputSubmit,\n PromptInputTextarea,\n PromptInputTools,\n type PromptInputMessage,\n} from \"@/components/ai/prompt-input\"\nimport { Reasoning, ReasoningContent, ReasoningTrigger } from \"@/components/ai/reasoning\"\nimport { Source, Sources, SourcesContent, SourcesTrigger } from \"@/components/ai/sources\"\nimport { StreamStatus } from \"@/components/ai/stream-status\"\nimport { Suggestion, Suggestions } from \"@/components/ai/suggestion\"\nimport { cn } from \"@/lib/utils\"\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface ChatSource {\n href: string\n title: string\n}\n\nexport interface ChatMessage {\n id: string\n role: \"user\" | \"assistant\"\n content: string\n /** Displayed in a collapsible Reasoning panel above the message content. */\n reasoning?: string\n /** Web sources used to produce this message. */\n sources?: ChatSource[]\n /** Multiple alternative responses (for branching). When provided, the\n * array should include `content` as one of its items. */\n branches?: string[]\n}\n\nexport interface ChatModel {\n id: string\n name: string\n}\n\nexport interface ChatProps {\n /** Initial messages to pre-populate the conversation. */\n initialMessages?: ChatMessage[]\n /** Available models shown in the model-selector dropdown. */\n models?: ChatModel[]\n /** Initial model id. Defaults to the first model in `models`. */\n defaultModel?: string\n /** Suggestion chips shown when the conversation is empty. */\n suggestions?: string[]\n /** Called when the user submits a message. The returned string (if any)\n * will be appended as the assistant's reply. Defaults to a no-op. */\n onSend?: (message: string, model: string) => Promise<string | undefined> | string | undefined\n className?: string\n}\n\n// ---------------------------------------------------------------------------\n// Default values\n// ---------------------------------------------------------------------------\n\nconst DEFAULT_MODELS: ChatModel[] = [\n { id: \"claude-sonnet-4-6\", name: \"Claude Sonnet\" },\n { id: \"claude-opus-4-7\", name: \"Claude Opus\" },\n]\n\nconst DEFAULT_SUGGESTIONS = [\n \"Explain quantum entanglement simply\",\n \"Write a Python script to rename files\",\n \"Summarise the latest AI research trends\",\n \"What is the difference between TCP and UDP?\",\n]\n\nlet _idCounter = 0\nconst nextId = () => {\n _idCounter += 1\n return `chat-msg-${_idCounter}`\n}\n\nconst STREAM_STATUS_LINGER_MS = 3000\n\n// ---------------------------------------------------------------------------\n// Chat component\n// ---------------------------------------------------------------------------\n\nexport const Chat = ({\n initialMessages = [],\n models = DEFAULT_MODELS,\n defaultModel,\n suggestions = DEFAULT_SUGGESTIONS,\n onSend,\n className,\n}: ChatProps) => {\n const labelId = useId()\n const [messages, setMessages] = useState<ChatMessage[]>(initialMessages)\n const [text, setText] = useState(\"\")\n const [model, setModel] = useState(defaultModel ?? models[0]?.id ?? \"\")\n const [webSearch, setWebSearch] = useState(false)\n const [status, setStatus] = useState<\"ready\" | \"streaming\">(\"ready\")\n const [streamStart, setStreamStart] = useState<Date | undefined>()\n\n const handleSubmit = useCallback(\n async (_msg: PromptInputMessage) => {\n const trimmed = text.trim()\n if (!trimmed || status === \"streaming\") return\n\n const userMsg: ChatMessage = {\n id: nextId(),\n role: \"user\",\n content: trimmed,\n }\n setMessages((prev) => [...prev, userMsg])\n setText(\"\")\n setStatus(\"streaming\")\n setStreamStart(new Date())\n\n try {\n const reply = await onSend?.(trimmed, model)\n const assistantMsg: ChatMessage = {\n id: nextId(),\n role: \"assistant\",\n content: reply ?? \"I received your message.\",\n }\n setMessages((prev) => [...prev, assistantMsg])\n } finally {\n setStatus(\"ready\")\n // Keep streamStart briefly so the bubble-confirm ripple can play out\n setTimeout(() => setStreamStart(undefined), STREAM_STATUS_LINGER_MS)\n }\n },\n [text, status, model, onSend],\n )\n\n const handleSuggestion = useCallback((suggestion: string) => {\n setText(suggestion)\n }, [])\n\n const handleCopy = useCallback((content: string) => {\n navigator.clipboard.writeText(content).catch(() => {})\n }, [])\n\n const handleRetry = useCallback((id: string) => {\n setMessages((prev) => {\n const idx = prev.findIndex((m) => m.id === id)\n if (idx === -1) return prev\n return prev.slice(0, idx)\n })\n }, [])\n\n return (\n <div className={cn(\"mx-auto flex h-full w-full max-w-[980px] flex-col\", className)}>\n {/* Conversation */}\n <Conversation className=\"flex-1\">\n <ConversationContent>\n {messages.length === 0 ? (\n <ConversationEmptyState\n description=\"Send a message or pick a suggestion below to start.\"\n title=\"Start a conversation\"\n />\n ) : null}\n\n {messages.map((msg, index) => (\n <div className=\"space-y-1\" key={msg.id}>\n {/* Branch wrapper — renders alt responses side-by-side when branches exist */}\n {msg.role === \"assistant\" && msg.branches && msg.branches.length > 1 ? (\n <MessageBranch>\n <MessageBranchContent>\n {msg.branches.map((branch, i) => (\n <AssistantMessage\n key={i}\n content={branch}\n id={msg.id}\n onCopy={handleCopy}\n onRetry={handleRetry}\n reasoning={i === 0 ? msg.reasoning : undefined}\n sources={i === 0 ? msg.sources : undefined}\n />\n ))}\n </MessageBranchContent>\n <MessageToolbar>\n <MessageBranchSelector>\n <MessageBranchPrevious />\n <MessageBranchPage />\n <MessageBranchNext />\n </MessageBranchSelector>\n </MessageToolbar>\n </MessageBranch>\n ) : msg.role === \"assistant\" ? (\n <>\n <AssistantMessage\n content={msg.content}\n id={msg.id}\n onCopy={handleCopy}\n onRetry={handleRetry}\n reasoning={msg.reasoning}\n sources={msg.sources}\n />\n </>\n ) : (\n <Message from=\"user\">\n <MessageContent>\n <MessageResponse>{msg.content}</MessageResponse>\n </MessageContent>\n </Message>\n )}\n\n {index === messages.length - 1 && streamStart && (\n <div className=\"mt-3\">\n <StreamStatus\n iconVariant=\"loader-circle\"\n isStreaming={status === \"streaming\"}\n startTime={streamStart}\n />\n </div>\n )}\n </div>\n ))}\n </ConversationContent>\n <ConversationScrollButton />\n </Conversation>\n\n {/* Suggestions — only shown when conversation is empty */}\n {messages.length === 0 && suggestions.length > 0 && (\n <div className=\"px-4 pb-2\">\n <Suggestions>\n {suggestions.map((s) => (\n <Suggestion key={s} onClick={handleSuggestion} suggestion={s} />\n ))}\n </Suggestions>\n </div>\n )}\n\n {/* Prompt input */}\n <div className=\"px-4 pt-3 pb-4\">\n <PromptInput onSubmit={handleSubmit}>\n <PromptInputBody>\n <PromptInputTextarea\n aria-labelledby={labelId}\n onChange={(e) => setText(e.target.value)}\n placeholder=\"Ask anything...\"\n value={text}\n />\n </PromptInputBody>\n <PromptInputFooter>\n <PromptInputTools>\n {/* Model selector */}\n {models.length > 1 && (\n <PromptInputSelect onValueChange={setModel} value={model}>\n <PromptInputSelectTrigger>\n <PromptInputSelectValue />\n </PromptInputSelectTrigger>\n <PromptInputSelectContent>\n {models.map((m) => (\n <PromptInputSelectItem key={m.id} value={m.id}>\n {m.name}\n </PromptInputSelectItem>\n ))}\n </PromptInputSelectContent>\n </PromptInputSelect>\n )}\n\n {/* Web search toggle */}\n <PromptInputButton\n onClick={() => setWebSearch((v) => !v)}\n tooltip={{ content: \"Search the web\" }}\n variant={webSearch ? \"default\" : \"ghost\"}\n >\n <GlobeIcon size={16} />\n <span>Search</span>\n </PromptInputButton>\n </PromptInputTools>\n\n <PromptInputSubmit disabled={!text.trim()} status={status} />\n </PromptInputFooter>\n </PromptInput>\n </div>\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Internal sub-component for assistant messages\n// ---------------------------------------------------------------------------\n\ninterface AssistantMessageProps {\n id: string\n content: string\n reasoning?: string\n sources?: ChatSource[]\n onCopy: (content: string) => void\n onRetry: (id: string) => void\n}\n\nconst AssistantMessage = ({ id, content, reasoning, sources, onCopy, onRetry }: AssistantMessageProps) => (\n <div className=\"space-y-2\">\n {reasoning && (\n <Reasoning>\n <ReasoningTrigger />\n <ReasoningContent>{reasoning}</ReasoningContent>\n </Reasoning>\n )}\n\n <Message from=\"assistant\">\n <MessageContent>\n <MessageResponse>{content}</MessageResponse>\n </MessageContent>\n </Message>\n\n {sources && sources.length > 0 && (\n <Sources>\n <SourcesTrigger count={sources.length} />\n <SourcesContent>\n {sources.map((s) => (\n <Source href={s.href} key={s.href} title={s.title} />\n ))}\n </SourcesContent>\n </Sources>\n )}\n\n <MessageActions>\n <MessageAction label=\"Copy\" onClick={() => onCopy(content)}>\n <CopyIcon className=\"size-3\" />\n </MessageAction>\n <MessageAction label=\"Retry\" onClick={() => onRetry(id)}>\n <RefreshCcwIcon className=\"size-3\" />\n </MessageAction>\n </MessageActions>\n </div>\n)\n"],"names":["DEFAULT_MODELS","DEFAULT_SUGGESTIONS","_idCounter","nextId","STREAM_STATUS_LINGER_MS","Chat","initialMessages","models","defaultModel","suggestions","onSend","className","labelId","useId","messages","setMessages","useState","text","setText","model","setModel","webSearch","setWebSearch","status","setStatus","streamStart","setStreamStart","handleSubmit","useCallback","_msg","trimmed","userMsg","prev","reply","assistantMsg","handleSuggestion","suggestion","handleCopy","content","handleRetry","id","idx","m","cn","jsxs","Conversation","ConversationContent","jsx","ConversationEmptyState","msg","index","MessageBranch","MessageBranchContent","branch","i","AssistantMessage","MessageToolbar","MessageBranchSelector","MessageBranchPrevious","MessageBranchPage","MessageBranchNext","Fragment","Message","MessageContent","MessageResponse","StreamStatus","ConversationScrollButton","Suggestions","Suggestion","PromptInput","PromptInputBody","PromptInputTextarea","e","PromptInputFooter","PromptInputTools","PromptInputSelect","PromptInputSelectTrigger","PromptInputSelectValue","PromptInputSelectContent","PromptInputSelectItem","PromptInputButton","v","GlobeIcon","PromptInputSubmit","reasoning","sources","onCopy","onRetry","Reasoning","ReasoningTrigger","ReasoningContent","Sources","SourcesTrigger","SourcesContent","s","Source","MessageActions","MessageAction","CopyIcon","RefreshCcwIcon"],"mappings":"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"}
1
+ {"version":3,"file":"Chat.cjs","sources":["../../../../src/components/composed/Chat/Chat.tsx"],"sourcesContent":["import { CopyIcon, GlobeIcon, RefreshCcwIcon } from \"lucide-react\"\nimport { useCallback, useId, useState } from \"react\"\n\nimport {\n Conversation,\n ConversationContent,\n ConversationEmptyState,\n ConversationScrollButton,\n} from \"@/components/ai/conversation\"\nimport {\n Message,\n MessageAction,\n MessageActions,\n MessageBranch,\n MessageBranchContent,\n MessageBranchNext,\n MessageBranchPage,\n MessageBranchPrevious,\n MessageBranchSelector,\n MessageContent,\n MessageResponse,\n MessageToolbar,\n} from \"@/components/ai/message\"\nimport {\n PromptInput,\n PromptInputBody,\n PromptInputButton,\n PromptInputFooter,\n PromptInputSelect,\n PromptInputSelectContent,\n PromptInputSelectItem,\n PromptInputSelectTrigger,\n PromptInputSelectValue,\n PromptInputSubmit,\n PromptInputTextarea,\n PromptInputTools,\n type PromptInputMessage,\n} from \"@/components/ai/prompt-input\"\nimport { Reasoning, ReasoningContent, ReasoningTrigger } from \"@/components/ai/reasoning\"\nimport { Source, Sources, SourcesContent, SourcesTrigger } from \"@/components/ai/sources\"\nimport { StreamStatus } from \"@/components/ai/stream-status\"\nimport { Suggestion, Suggestions } from \"@/components/ai/suggestion\"\nimport { cn } from \"@/lib/utils\"\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface ChatSource {\n href: string\n title: string\n}\n\nexport interface ChatMessage {\n id: string\n role: \"user\" | \"assistant\"\n content: string\n /** Displayed in a collapsible Reasoning panel above the message content. */\n reasoning?: string\n /** Web sources used to produce this message. */\n sources?: ChatSource[]\n /** Multiple alternative responses (for branching). When provided, the\n * array should include `content` as one of its items. */\n branches?: string[]\n}\n\nexport interface ChatModel {\n id: string\n name: string\n}\n\nexport interface ChatProps {\n /** Initial messages to pre-populate the conversation. */\n initialMessages?: ChatMessage[]\n /** Available models shown in the model-selector dropdown. */\n models?: ChatModel[]\n /** Initial model id. Defaults to the first model in `models`. */\n defaultModel?: string\n /** Suggestion chips shown when the conversation is empty. */\n suggestions?: string[]\n /** Called when the user submits a message. The returned string (if any)\n * will be appended as the assistant's reply. Defaults to a no-op. */\n onSend?: (message: string, model: string) => Promise<string | undefined> | string | undefined\n className?: string\n}\n\n// ---------------------------------------------------------------------------\n// Default values\n// ---------------------------------------------------------------------------\n\nconst DEFAULT_MODELS: ChatModel[] = [\n { id: \"claude-sonnet-4-6\", name: \"Claude Sonnet\" },\n { id: \"claude-opus-4-7\", name: \"Claude Opus\" },\n]\n\nconst DEFAULT_SUGGESTIONS = [\n \"Explain quantum entanglement simply\",\n \"Write a Python script to rename files\",\n \"Summarise the latest AI research trends\",\n \"What is the difference between TCP and UDP?\",\n]\n\nlet _idCounter = 0\nconst nextId = () => {\n _idCounter += 1\n return `chat-msg-${_idCounter}`\n}\n\nconst STREAM_STATUS_LINGER_MS = 3000\n\n// ---------------------------------------------------------------------------\n// Chat component\n// ---------------------------------------------------------------------------\n\nexport const Chat = ({\n initialMessages = [],\n models = DEFAULT_MODELS,\n defaultModel,\n suggestions = DEFAULT_SUGGESTIONS,\n onSend,\n className,\n}: ChatProps) => {\n const labelId = useId()\n const [messages, setMessages] = useState<ChatMessage[]>(initialMessages)\n const [text, setText] = useState(\"\")\n const [model, setModel] = useState(defaultModel ?? models[0]?.id ?? \"\")\n const [webSearch, setWebSearch] = useState(false)\n const [status, setStatus] = useState<\"ready\" | \"streaming\">(\"ready\")\n const [streamStart, setStreamStart] = useState<Date | undefined>()\n\n const handleSubmit = useCallback(\n async (_msg: PromptInputMessage) => {\n const trimmed = text.trim()\n if (!trimmed || status === \"streaming\") return\n\n const userMsg: ChatMessage = {\n id: nextId(),\n role: \"user\",\n content: trimmed,\n }\n setMessages((prev) => [...prev, userMsg])\n setText(\"\")\n setStatus(\"streaming\")\n setStreamStart(new Date())\n\n try {\n const reply = await onSend?.(trimmed, model)\n const assistantMsg: ChatMessage = {\n id: nextId(),\n role: \"assistant\",\n content: reply ?? \"I received your message.\",\n }\n setMessages((prev) => [...prev, assistantMsg])\n } finally {\n setStatus(\"ready\")\n // Keep streamStart briefly so the bubble-confirm ripple can play out\n setTimeout(() => setStreamStart(undefined), STREAM_STATUS_LINGER_MS)\n }\n },\n [text, status, model, onSend],\n )\n\n const handleSuggestion = useCallback((suggestion: string) => {\n setText(suggestion)\n }, [])\n\n const handleCopy = useCallback((content: string) => {\n navigator.clipboard.writeText(content).catch(() => {})\n }, [])\n\n const handleRetry = useCallback((id: string) => {\n setMessages((prev) => {\n const idx = prev.findIndex((m) => m.id === id)\n if (idx === -1) return prev\n return prev.slice(0, idx)\n })\n }, [])\n\n return (\n <div className={cn(\"mx-auto flex h-full w-full max-w-[980px] flex-col\", className)}>\n {/* Conversation */}\n <Conversation className=\"flex-1\">\n <ConversationContent>\n {messages.length === 0 ? (\n <ConversationEmptyState\n description=\"Send a message or pick a suggestion below to start.\"\n title=\"Start a conversation\"\n />\n ) : null}\n\n {messages.map((msg, index) => (\n <div className=\"space-y-1\" key={msg.id}>\n {/* Branch wrapper — renders alt responses side-by-side when branches exist */}\n {msg.role === \"assistant\" && msg.branches && msg.branches.length > 1 ? (\n <MessageBranch>\n <MessageBranchContent>\n {msg.branches.map((branch, i) => (\n <AssistantMessage\n key={i}\n content={branch}\n id={msg.id}\n onCopy={handleCopy}\n onRetry={handleRetry}\n reasoning={i === 0 ? msg.reasoning : undefined}\n sources={i === 0 ? msg.sources : undefined}\n />\n ))}\n </MessageBranchContent>\n <MessageToolbar>\n <MessageBranchSelector>\n <MessageBranchPrevious />\n <MessageBranchPage />\n <MessageBranchNext />\n </MessageBranchSelector>\n </MessageToolbar>\n </MessageBranch>\n ) : msg.role === \"assistant\" ? (\n <>\n <AssistantMessage\n content={msg.content}\n id={msg.id}\n onCopy={handleCopy}\n onRetry={handleRetry}\n reasoning={msg.reasoning}\n sources={msg.sources}\n />\n </>\n ) : (\n <Message from=\"user\">\n <MessageContent>\n <MessageResponse>{msg.content}</MessageResponse>\n </MessageContent>\n </Message>\n )}\n\n {index === messages.length - 1 && streamStart && (\n <div className=\"mt-3\">\n <StreamStatus\n iconVariant=\"loader-circle\"\n isStreaming={status === \"streaming\"}\n startTime={streamStart}\n />\n </div>\n )}\n </div>\n ))}\n </ConversationContent>\n <ConversationScrollButton />\n </Conversation>\n\n {/* Suggestions — only shown when conversation is empty */}\n {messages.length === 0 && suggestions.length > 0 && (\n <div className=\"px-4 pb-2\">\n <Suggestions>\n {suggestions.map((s) => (\n <Suggestion key={s} onClick={handleSuggestion} suggestion={s} />\n ))}\n </Suggestions>\n </div>\n )}\n\n {/* Prompt input */}\n <div className=\"px-4 pt-3 pb-4\">\n <PromptInput onSubmit={handleSubmit}>\n <PromptInputBody>\n <PromptInputTextarea\n aria-labelledby={labelId}\n onChange={(e) => setText(e.target.value)}\n placeholder=\"Ask anything...\"\n value={text}\n />\n </PromptInputBody>\n <PromptInputFooter>\n <PromptInputTools>\n {/* Model selector */}\n {models.length > 1 && (\n <PromptInputSelect onValueChange={setModel} value={model}>\n <PromptInputSelectTrigger aria-label=\"Select model\">\n <PromptInputSelectValue />\n </PromptInputSelectTrigger>\n <PromptInputSelectContent>\n {models.map((m) => (\n <PromptInputSelectItem key={m.id} value={m.id}>\n {m.name}\n </PromptInputSelectItem>\n ))}\n </PromptInputSelectContent>\n </PromptInputSelect>\n )}\n\n {/* Web search toggle */}\n <PromptInputButton\n onClick={() => setWebSearch((v) => !v)}\n tooltip={{ content: \"Search the web\" }}\n variant={webSearch ? \"default\" : \"ghost\"}\n >\n <GlobeIcon size={16} />\n <span>Search</span>\n </PromptInputButton>\n </PromptInputTools>\n\n <PromptInputSubmit disabled={!text.trim()} status={status} />\n </PromptInputFooter>\n </PromptInput>\n </div>\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Internal sub-component for assistant messages\n// ---------------------------------------------------------------------------\n\ninterface AssistantMessageProps {\n id: string\n content: string\n reasoning?: string\n sources?: ChatSource[]\n onCopy: (content: string) => void\n onRetry: (id: string) => void\n}\n\nconst AssistantMessage = ({ id, content, reasoning, sources, onCopy, onRetry }: AssistantMessageProps) => (\n <div className=\"space-y-2\">\n {reasoning && (\n <Reasoning>\n <ReasoningTrigger />\n <ReasoningContent>{reasoning}</ReasoningContent>\n </Reasoning>\n )}\n\n <Message from=\"assistant\">\n <MessageContent>\n <MessageResponse>{content}</MessageResponse>\n </MessageContent>\n </Message>\n\n {sources && sources.length > 0 && (\n <Sources>\n <SourcesTrigger count={sources.length} />\n <SourcesContent>\n {sources.map((s) => (\n <Source href={s.href} key={s.href} title={s.title} />\n ))}\n </SourcesContent>\n </Sources>\n )}\n\n <MessageActions>\n <MessageAction label=\"Copy\" onClick={() => onCopy(content)}>\n <CopyIcon className=\"size-3\" />\n </MessageAction>\n <MessageAction label=\"Retry\" onClick={() => onRetry(id)}>\n <RefreshCcwIcon className=\"size-3\" />\n </MessageAction>\n </MessageActions>\n </div>\n)\n"],"names":["DEFAULT_MODELS","DEFAULT_SUGGESTIONS","_idCounter","nextId","STREAM_STATUS_LINGER_MS","Chat","initialMessages","models","defaultModel","suggestions","onSend","className","labelId","useId","messages","setMessages","useState","text","setText","model","setModel","webSearch","setWebSearch","status","setStatus","streamStart","setStreamStart","handleSubmit","useCallback","_msg","trimmed","userMsg","prev","reply","assistantMsg","handleSuggestion","suggestion","handleCopy","content","handleRetry","id","idx","m","cn","jsxs","Conversation","ConversationContent","jsx","ConversationEmptyState","msg","index","MessageBranch","MessageBranchContent","branch","AssistantMessage","MessageToolbar","MessageBranchSelector","MessageBranchPrevious","MessageBranchPage","MessageBranchNext","Fragment","Message","MessageContent","MessageResponse","StreamStatus","ConversationScrollButton","Suggestions","Suggestion","PromptInput","PromptInputBody","PromptInputTextarea","e","PromptInputFooter","PromptInputTools","PromptInputSelect","PromptInputSelectTrigger","PromptInputSelectValue","PromptInputSelectContent","PromptInputSelectItem","PromptInputButton","v","GlobeIcon","PromptInputSubmit","reasoning","sources","onCopy","onRetry","Reasoning","ReasoningTrigger","ReasoningContent","Sources","SourcesTrigger","SourcesContent","s","Source","MessageActions","MessageAction","CopyIcon","RefreshCcwIcon"],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ export interface ChatSource {
2
+ href: string;
3
+ title: string;
4
+ }
5
+ export interface ChatMessage {
6
+ id: string;
7
+ role: "user" | "assistant";
8
+ content: string;
9
+ /** Displayed in a collapsible Reasoning panel above the message content. */
10
+ reasoning?: string;
11
+ /** Web sources used to produce this message. */
12
+ sources?: ChatSource[];
13
+ /** Multiple alternative responses (for branching). When provided, the
14
+ * array should include `content` as one of its items. */
15
+ branches?: string[];
16
+ }
17
+ export interface ChatModel {
18
+ id: string;
19
+ name: string;
20
+ }
21
+ export interface ChatProps {
22
+ /** Initial messages to pre-populate the conversation. */
23
+ initialMessages?: ChatMessage[];
24
+ /** Available models shown in the model-selector dropdown. */
25
+ models?: ChatModel[];
26
+ /** Initial model id. Defaults to the first model in `models`. */
27
+ defaultModel?: string;
28
+ /** Suggestion chips shown when the conversation is empty. */
29
+ suggestions?: string[];
30
+ /** Called when the user submits a message. The returned string (if any)
31
+ * will be appended as the assistant's reply. Defaults to a no-op. */
32
+ onSend?: (message: string, model: string) => Promise<string | undefined> | string | undefined;
33
+ className?: string;
34
+ }
35
+ export declare const Chat: ({ initialMessages, models, defaultModel, suggestions, onSend, className, }: ChatProps) => import("react/jsx-runtime").JSX.Element;