@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 @@
1
+ {"version":3,"file":"message.js","sources":["../../src/components/ai/message.tsx"],"sourcesContent":["import { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\nimport {\n createContext,\n memo,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { Streamdown } from \"streamdown\";\n\nimport { useStreamdownPlugins } from \"./use-streamdown-plugins\";\n\nimport type { UIMessage } from \"ai\";\nimport type { ComponentProps, HTMLAttributes, ReactElement } from \"react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n ButtonGroup,\n ButtonGroupText,\n} from \"@/components/ui/button-group\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\";\nimport { cn } from \"@/lib/utils\";\n\nexport type MessageProps = HTMLAttributes<HTMLDivElement> & {\n from: UIMessage[\"role\"];\n};\n\nexport const Message = ({ className, from, ...props }: MessageProps) => (\n <div\n className={cn(\n \"group flex w-full max-w-[95%] flex-col gap-2\",\n from === \"user\" ? \"is-user ml-auto justify-end\" : \"is-assistant\",\n className\n )}\n {...props}\n />\n);\n\nexport type MessageContentProps = HTMLAttributes<HTMLDivElement>;\n\nexport const MessageContent = ({\n children,\n className,\n ...props\n}: MessageContentProps) => (\n <div\n className={cn(\n \"is-user:dark flex w-fit min-w-0 max-w-full flex-col gap-2 overflow-hidden text-sm\",\n \"group-[.is-user]:ml-auto group-[.is-user]:rounded-lg group-[.is-user]:bg-secondary group-[.is-user]:px-4 group-[.is-user]:py-3 group-[.is-user]:text-foreground\",\n \"group-[.is-assistant]:text-foreground\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n\nexport type MessageActionsProps = ComponentProps<\"div\">;\n\nexport const MessageActions = ({\n className,\n children,\n ...props\n}: MessageActionsProps) => (\n <div className={cn(\"flex items-center gap-1\", className)} {...props}>\n {children}\n </div>\n);\n\nexport type MessageActionProps = ComponentProps<typeof Button> & {\n tooltip?: string;\n label?: string;\n};\n\nexport const MessageAction = ({\n tooltip,\n children,\n label,\n variant = \"ghost\",\n size = \"icon-sm\",\n ...props\n}: MessageActionProps) => {\n const button = (\n <Button size={size} type=\"button\" variant={variant} {...props}>\n {children}\n <span className=\"sr-only\">{label || tooltip}</span>\n </Button>\n );\n\n if (tooltip) {\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent>\n <p>{tooltip}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return button;\n};\n\ninterface MessageBranchContextType {\n currentBranch: number;\n totalBranches: number;\n goToPrevious: () => void;\n goToNext: () => void;\n branches: ReactElement[];\n setBranches: (branches: ReactElement[]) => void;\n}\n\nconst MessageBranchContext = createContext<MessageBranchContextType | null>(\n null\n);\n\nconst useMessageBranch = () => {\n const context = useContext(MessageBranchContext);\n\n if (!context) {\n throw new Error(\n \"MessageBranch components must be used within MessageBranch\"\n );\n }\n\n return context;\n};\n\nexport type MessageBranchProps = HTMLAttributes<HTMLDivElement> & {\n defaultBranch?: number;\n onBranchChange?: (branchIndex: number) => void;\n};\n\nexport const MessageBranch = ({\n defaultBranch = 0,\n onBranchChange,\n className,\n ...props\n}: MessageBranchProps) => {\n const [currentBranch, setCurrentBranch] = useState(defaultBranch);\n const [branches, setBranches] = useState<ReactElement[]>([]);\n\n const handleBranchChange = useCallback(\n (newBranch: number) => {\n setCurrentBranch(newBranch);\n onBranchChange?.(newBranch);\n },\n [onBranchChange]\n );\n\n const goToPrevious = useCallback(() => {\n const newBranch =\n currentBranch > 0 ? currentBranch - 1 : branches.length - 1;\n handleBranchChange(newBranch);\n }, [currentBranch, branches.length, handleBranchChange]);\n\n const goToNext = useCallback(() => {\n const newBranch =\n currentBranch < branches.length - 1 ? currentBranch + 1 : 0;\n handleBranchChange(newBranch);\n }, [currentBranch, branches.length, handleBranchChange]);\n\n const contextValue = useMemo<MessageBranchContextType>(\n () => ({\n branches,\n currentBranch,\n goToNext,\n goToPrevious,\n setBranches,\n totalBranches: branches.length,\n }),\n [branches, currentBranch, goToNext, goToPrevious]\n );\n\n return (\n <MessageBranchContext.Provider value={contextValue}>\n <div\n className={cn(\"grid w-full gap-2 [&>div]:pb-0\", className)}\n {...props}\n />\n </MessageBranchContext.Provider>\n );\n};\n\nexport type MessageBranchContentProps = HTMLAttributes<HTMLDivElement>;\n\nexport const MessageBranchContent = ({\n children,\n ...props\n}: MessageBranchContentProps) => {\n const { currentBranch, setBranches, branches } = useMessageBranch();\n const childrenArray = useMemo(\n () => (Array.isArray(children) ? children : [children]),\n [children]\n );\n\n // Use useEffect to update branches when they change\n useEffect(() => {\n if (branches.length !== childrenArray.length) {\n setBranches(childrenArray);\n }\n }, [childrenArray, branches, setBranches]);\n\n return childrenArray.map((branch, index) => (\n <div\n className={cn(\n \"grid gap-2 overflow-hidden [&>div]:pb-0\",\n index === currentBranch ? \"block\" : \"hidden\"\n )}\n key={branch.key}\n {...props}\n >\n {branch}\n </div>\n ));\n};\n\nexport type MessageBranchSelectorProps = ComponentProps<typeof ButtonGroup>;\n\nexport const MessageBranchSelector = ({\n className,\n ...props\n}: MessageBranchSelectorProps) => {\n const { totalBranches } = useMessageBranch();\n\n // Don't render if there's only one branch\n if (totalBranches <= 1) {\n return null;\n }\n\n return (\n <ButtonGroup\n className={cn(\n \"[&>*:not(:first-child)]:rounded-l-md [&>*:not(:last-child)]:rounded-r-md\",\n className\n )}\n orientation=\"horizontal\"\n {...props}\n />\n );\n};\n\nexport type MessageBranchPreviousProps = ComponentProps<typeof Button>;\n\nexport const MessageBranchPrevious = ({\n children,\n ...props\n}: MessageBranchPreviousProps) => {\n const { goToPrevious, totalBranches } = useMessageBranch();\n\n return (\n <Button\n aria-label=\"Previous branch\"\n disabled={totalBranches <= 1}\n onClick={goToPrevious}\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n {...props}\n >\n {children ?? <ChevronLeftIcon size={14} />}\n </Button>\n );\n};\n\nexport type MessageBranchNextProps = ComponentProps<typeof Button>;\n\nexport const MessageBranchNext = ({\n children,\n ...props\n}: MessageBranchNextProps) => {\n const { goToNext, totalBranches } = useMessageBranch();\n\n return (\n <Button\n aria-label=\"Next branch\"\n disabled={totalBranches <= 1}\n onClick={goToNext}\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n {...props}\n >\n {children ?? <ChevronRightIcon size={14} />}\n </Button>\n );\n};\n\nexport type MessageBranchPageProps = HTMLAttributes<HTMLSpanElement>;\n\nexport const MessageBranchPage = ({\n className,\n ...props\n}: MessageBranchPageProps) => {\n const { currentBranch, totalBranches } = useMessageBranch();\n\n return (\n <ButtonGroupText\n className={cn(\n \"border-none bg-transparent text-muted-foreground shadow-none\",\n className\n )}\n {...props}\n >\n {`${currentBranch + 1} of ${totalBranches}`}\n </ButtonGroupText>\n );\n};\n\nexport type MessageResponseProps = ComponentProps<typeof Streamdown>;\n\nexport const MessageResponse = memo(\n ({ className, ...props }: MessageResponseProps) => {\n // Plugins load lazily (SW-2007): markdown streams in immediately and\n // code/math/mermaid rendering upgrades in place once the chunk arrives.\n const plugins = useStreamdownPlugins();\n\n return (\n <Streamdown\n className={cn(\n \"size-full [&>*:first-child]:mt-0 [&>*:last-child]:mb-0\",\n className\n )}\n plugins={plugins}\n {...props}\n />\n );\n },\n (prevProps, nextProps) =>\n prevProps.children === nextProps.children &&\n nextProps.isAnimating === prevProps.isAnimating\n);\n\nMessageResponse.displayName = \"MessageResponse\";\n\nexport type MessageToolbarProps = ComponentProps<\"div\">;\n\nexport const MessageToolbar = ({\n className,\n children,\n ...props\n}: MessageToolbarProps) => (\n <div\n className={cn(\n \"mt-4 flex w-full items-center justify-between gap-4\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n"],"names":["Message","className","from","props","jsx","cn","MessageContent","children","MessageActions","MessageAction","tooltip","label","variant","size","button","Button","TooltipProvider","jsxs","Tooltip","TooltipTrigger","TooltipContent","MessageBranchContext","createContext","useMessageBranch","context","useContext","MessageBranch","defaultBranch","onBranchChange","currentBranch","setCurrentBranch","useState","branches","setBranches","handleBranchChange","useCallback","newBranch","goToPrevious","goToNext","contextValue","useMemo","MessageBranchContent","childrenArray","useEffect","branch","index","MessageBranchSelector","totalBranches","ButtonGroup","MessageBranchPrevious","ChevronLeftIcon","MessageBranchNext","ChevronRightIcon","MessageBranchPage","ButtonGroupText","MessageResponse","memo","plugins","useStreamdownPlugins","Streamdown","prevProps","nextProps","MessageToolbar"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),l=require("../ui/command.cjs"),c=require("../ui/dialog.cjs"),d=require("../ui/kbd.cjs"),r=require("../lib/utils.cjs"),a=e=>o.jsx(c.Dialog,{...e}),i=e=>o.jsx(c.DialogTrigger,{...e}),m=({className:e,children:t,title:s="Model Selector",...n})=>o.jsxs(c.DialogContent,{"aria-describedby":void 0,className:r.cn("outline! border-none! p-0 outline-border! outline-solid!",e),...n,children:[o.jsx(c.DialogTitle,{className:"sr-only",children:s}),o.jsx(l.Command,{className:"**:data-[slot=command-input-wrapper]:h-auto",children:t})]}),S=e=>o.jsx(l.CommandDialog,{...e}),g=({className:e,...t})=>o.jsx(l.CommandInput,{className:r.cn("h-auto py-3.5",e),...t}),u=e=>o.jsx(l.CommandList,{...e}),M=e=>o.jsx(l.CommandEmpty,{...e}),p=e=>o.jsx(l.CommandGroup,{...e}),x=e=>o.jsx(l.CommandItem,{...e}),j=({className:e,...t})=>o.jsx(d.Kbd,{className:r.cn("ml-auto",e),...t}),b=e=>o.jsx(l.CommandSeparator,{...e}),h=({provider:e,className:t,...s})=>o.jsx("img",{...s,alt:`${e} logo`,className:r.cn("size-3 dark:invert",t),height:12,src:`https://models.dev/logos/${e}.svg`,width:12}),C=({className:e,...t})=>o.jsx("div",{className:r.cn("flex shrink-0 items-center -space-x-1 [&>img]:rounded-full [&>img]:bg-background [&>img]:p-px [&>img]:ring-1 dark:[&>img]:bg-foreground",e),...t}),N=({className:e,...t})=>o.jsx("span",{className:r.cn("flex-1 truncate text-left",e),...t});exports.ModelSelector=a;exports.ModelSelectorContent=m;exports.ModelSelectorDialog=S;exports.ModelSelectorEmpty=M;exports.ModelSelectorGroup=p;exports.ModelSelectorInput=g;exports.ModelSelectorItem=x;exports.ModelSelectorList=u;exports.ModelSelectorLogo=h;exports.ModelSelectorLogoGroup=C;exports.ModelSelectorName=N;exports.ModelSelectorSeparator=b;exports.ModelSelectorShortcut=j;exports.ModelSelectorTrigger=i;
2
+ //# sourceMappingURL=model-selector.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-selector.cjs","sources":["../../src/components/ai/model-selector.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from \"react\";\n\nimport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n} from \"@/components/ui/command\";\nimport {\n Dialog,\n DialogContent,\n DialogTitle,\n DialogTrigger,\n} from \"@/components/ui/dialog\";\nimport { Kbd } from \"@/components/ui/kbd\";\nimport { cn } from \"@/lib/utils\";\n\nexport type ModelSelectorProps = ComponentProps<typeof Dialog>;\n\nexport const ModelSelector = (props: ModelSelectorProps) => (\n <Dialog {...props} />\n);\n\nexport type ModelSelectorTriggerProps = ComponentProps<typeof DialogTrigger>;\n\nexport const ModelSelectorTrigger = (props: ModelSelectorTriggerProps) => (\n <DialogTrigger {...props} />\n);\n\nexport type ModelSelectorContentProps = ComponentProps<typeof DialogContent> & {\n title?: ReactNode;\n};\n\nexport const ModelSelectorContent = ({\n className,\n children,\n title = \"Model Selector\",\n ...props\n}: ModelSelectorContentProps) => (\n <DialogContent\n aria-describedby={undefined}\n className={cn(\n \"outline! border-none! p-0 outline-border! outline-solid!\",\n className\n )}\n {...props}\n >\n <DialogTitle className=\"sr-only\">{title}</DialogTitle>\n <Command className=\"**:data-[slot=command-input-wrapper]:h-auto\">\n {children}\n </Command>\n </DialogContent>\n);\n\nexport type ModelSelectorDialogProps = ComponentProps<typeof CommandDialog>;\n\nexport const ModelSelectorDialog = (props: ModelSelectorDialogProps) => (\n <CommandDialog {...props} />\n);\n\nexport type ModelSelectorInputProps = ComponentProps<typeof CommandInput>;\n\nexport const ModelSelectorInput = ({\n className,\n ...props\n}: ModelSelectorInputProps) => (\n <CommandInput className={cn(\"h-auto py-3.5\", className)} {...props} />\n);\n\nexport type ModelSelectorListProps = ComponentProps<typeof CommandList>;\n\nexport const ModelSelectorList = (props: ModelSelectorListProps) => (\n <CommandList {...props} />\n);\n\nexport type ModelSelectorEmptyProps = ComponentProps<typeof CommandEmpty>;\n\nexport const ModelSelectorEmpty = (props: ModelSelectorEmptyProps) => (\n <CommandEmpty {...props} />\n);\n\nexport type ModelSelectorGroupProps = ComponentProps<typeof CommandGroup>;\n\nexport const ModelSelectorGroup = (props: ModelSelectorGroupProps) => (\n <CommandGroup {...props} />\n);\n\nexport type ModelSelectorItemProps = ComponentProps<typeof CommandItem>;\n\nexport const ModelSelectorItem = (props: ModelSelectorItemProps) => (\n <CommandItem {...props} />\n);\n\nexport type ModelSelectorShortcutProps = ComponentProps<typeof Kbd>;\n\nexport const ModelSelectorShortcut = ({\n className,\n ...props\n}: ModelSelectorShortcutProps) => (\n <Kbd className={cn(\"ml-auto\", className)} {...props} />\n);\n\nexport type ModelSelectorSeparatorProps = ComponentProps<\n typeof CommandSeparator\n>;\n\nexport const ModelSelectorSeparator = (props: ModelSelectorSeparatorProps) => (\n <CommandSeparator {...props} />\n);\n\nexport type ModelSelectorLogoProps = Omit<\n ComponentProps<\"img\">,\n \"src\" | \"alt\"\n> & {\n provider:\n | \"moonshotai-cn\"\n | \"lucidquery\"\n | \"moonshotai\"\n | \"zai-coding-plan\"\n | \"alibaba\"\n | \"xai\"\n | \"vultr\"\n | \"nvidia\"\n | \"upstage\"\n | \"groq\"\n | \"github-copilot\"\n | \"mistral\"\n | \"vercel\"\n | \"nebius\"\n | \"deepseek\"\n | \"alibaba-cn\"\n | \"google-vertex-anthropic\"\n | \"venice\"\n | \"chutes\"\n | \"cortecs\"\n | \"github-models\"\n | \"togetherai\"\n | \"azure\"\n | \"baseten\"\n | \"huggingface\"\n | \"opencode\"\n | \"fastrouter\"\n | \"google\"\n | \"google-vertex\"\n | \"cloudflare-workers-ai\"\n | \"inception\"\n | \"wandb\"\n | \"openai\"\n | \"zhipuai-coding-plan\"\n | \"perplexity\"\n | \"openrouter\"\n | \"zenmux\"\n | \"v0\"\n | \"iflowcn\"\n | \"synthetic\"\n | \"deepinfra\"\n | \"zhipuai\"\n | \"submodel\"\n | \"zai\"\n | \"inference\"\n | \"requesty\"\n | \"morph\"\n | \"lmstudio\"\n | \"anthropic\"\n | \"aihubmix\"\n | \"fireworks-ai\"\n | \"modelscope\"\n | \"llama\"\n | \"scaleway\"\n | \"amazon-bedrock\"\n | \"cerebras\"\n // oxlint-disable-next-line typescript-eslint(ban-types) -- intentional pattern for autocomplete-friendly string union\n | (string & {});\n};\n\nexport const ModelSelectorLogo = ({\n provider,\n className,\n ...props\n}: ModelSelectorLogoProps) => (\n <img\n {...props}\n alt={`${provider} logo`}\n className={cn(\"size-3 dark:invert\", className)}\n height={12}\n src={`https://models.dev/logos/${provider}.svg`}\n width={12}\n />\n);\n\nexport type ModelSelectorLogoGroupProps = ComponentProps<\"div\">;\n\nexport const ModelSelectorLogoGroup = ({\n className,\n ...props\n}: ModelSelectorLogoGroupProps) => (\n <div\n className={cn(\n \"flex shrink-0 items-center -space-x-1 [&>img]:rounded-full [&>img]:bg-background [&>img]:p-px [&>img]:ring-1 dark:[&>img]:bg-foreground\",\n className\n )}\n {...props}\n />\n);\n\nexport type ModelSelectorNameProps = ComponentProps<\"span\">;\n\nexport const ModelSelectorName = ({\n className,\n ...props\n}: ModelSelectorNameProps) => (\n <span className={cn(\"flex-1 truncate text-left\", className)} {...props} />\n);\n"],"names":["ModelSelector","props","jsx","Dialog","ModelSelectorTrigger","DialogTrigger","ModelSelectorContent","className","children","title","jsxs","DialogContent","cn","DialogTitle","Command","ModelSelectorDialog","CommandDialog","ModelSelectorInput","CommandInput","ModelSelectorList","CommandList","ModelSelectorEmpty","CommandEmpty","ModelSelectorGroup","CommandGroup","ModelSelectorItem","CommandItem","ModelSelectorShortcut","Kbd","ModelSelectorSeparator","CommandSeparator","ModelSelectorLogo","provider","ModelSelectorLogoGroup","ModelSelectorName"],"mappings":"2OAuBaA,EAAiBC,GAC5BC,EAAAA,IAACC,EAAAA,OAAA,CAAQ,GAAGF,CAAA,CAAO,EAKRG,EAAwBH,GACnCC,EAAAA,IAACG,EAAAA,cAAA,CAAe,GAAGJ,CAAA,CAAO,EAOfK,EAAuB,CAAC,CACnC,UAAAC,EACA,SAAAC,EACA,MAAAC,EAAQ,iBACR,GAAGR,CACL,IACES,EAAAA,KAACC,EAAAA,cAAA,CACC,mBAAkB,OAClB,UAAWC,EAAAA,GACT,2DACAL,CAAA,EAED,GAAGN,EAEJ,SAAA,CAAAC,EAAAA,IAACW,EAAAA,YAAA,CAAY,UAAU,UAAW,SAAAJ,EAAM,EACxCP,EAAAA,IAACY,EAAAA,QAAA,CAAQ,UAAU,8CAChB,SAAAN,CAAA,CACH,CAAA,CAAA,CACF,EAKWO,EAAuBd,GAClCC,EAAAA,IAACc,EAAAA,cAAA,CAAe,GAAGf,CAAA,CAAO,EAKfgB,EAAqB,CAAC,CACjC,UAAAV,EACA,GAAGN,CACL,IACEC,EAAAA,IAACgB,EAAAA,cAAa,UAAWN,EAAAA,GAAG,gBAAiBL,CAAS,EAAI,GAAGN,CAAA,CAAO,EAKzDkB,EAAqBlB,GAChCC,EAAAA,IAACkB,EAAAA,YAAA,CAAa,GAAGnB,CAAA,CAAO,EAKboB,EAAsBpB,GACjCC,EAAAA,IAACoB,EAAAA,aAAA,CAAc,GAAGrB,CAAA,CAAO,EAKdsB,EAAsBtB,GACjCC,EAAAA,IAACsB,EAAAA,aAAA,CAAc,GAAGvB,CAAA,CAAO,EAKdwB,EAAqBxB,GAChCC,EAAAA,IAACwB,EAAAA,YAAA,CAAa,GAAGzB,CAAA,CAAO,EAKb0B,EAAwB,CAAC,CACpC,UAAApB,EACA,GAAGN,CACL,IACEC,EAAAA,IAAC0B,EAAAA,KAAI,UAAWhB,EAAAA,GAAG,UAAWL,CAAS,EAAI,GAAGN,CAAA,CAAO,EAO1C4B,EAA0B5B,GACrCC,EAAAA,IAAC4B,EAAAA,iBAAA,CAAkB,GAAG7B,CAAA,CAAO,EAoElB8B,EAAoB,CAAC,CAChC,SAAAC,EACA,UAAAzB,EACA,GAAGN,CACL,IACEC,EAAAA,IAAC,MAAA,CACE,GAAGD,EACJ,IAAK,GAAG+B,CAAQ,QAChB,UAAWpB,EAAAA,GAAG,qBAAsBL,CAAS,EAC7C,OAAQ,GACR,IAAK,4BAA4ByB,CAAQ,OACzC,MAAO,EAAA,CACT,EAKWC,EAAyB,CAAC,CACrC,UAAA1B,EACA,GAAGN,CACL,IACEC,EAAAA,IAAC,MAAA,CACC,UAAWU,EAAAA,GACT,0IACAL,CAAA,EAED,GAAGN,CAAA,CACN,EAKWiC,EAAoB,CAAC,CAChC,UAAA3B,EACA,GAAGN,CACL,IACEC,EAAAA,IAAC,QAAK,UAAWU,EAAAA,GAAG,4BAA6BL,CAAS,EAAI,GAAGN,CAAA,CAAO"}
@@ -0,0 +1,77 @@
1
+ import { jsx as e, jsxs as m } from "react/jsx-runtime";
2
+ import { Command as s, CommandDialog as c, CommandEmpty as n, CommandGroup as d, CommandInput as i, CommandItem as g, CommandList as p, CommandSeparator as u } from "../ui/command.js";
3
+ import { Dialog as S, DialogContent as M, DialogTitle as f, DialogTrigger as h } from "../ui/dialog.js";
4
+ import { Kbd as C } from "../ui/kbd.js";
5
+ import { cn as l } from "../lib/utils.js";
6
+ const k = (o) => /* @__PURE__ */ e(S, { ...o }), v = (o) => /* @__PURE__ */ e(h, { ...o }), I = ({
7
+ className: o,
8
+ children: t,
9
+ title: r = "Model Selector",
10
+ ...a
11
+ }) => /* @__PURE__ */ m(
12
+ M,
13
+ {
14
+ "aria-describedby": void 0,
15
+ className: l(
16
+ "outline! border-none! p-0 outline-border! outline-solid!",
17
+ o
18
+ ),
19
+ ...a,
20
+ children: [
21
+ /* @__PURE__ */ e(f, { className: "sr-only", children: r }),
22
+ /* @__PURE__ */ e(s, { className: "**:data-[slot=command-input-wrapper]:h-auto", children: t })
23
+ ]
24
+ }
25
+ ), L = (o) => /* @__PURE__ */ e(c, { ...o }), G = ({
26
+ className: o,
27
+ ...t
28
+ }) => /* @__PURE__ */ e(i, { className: l("h-auto py-3.5", o), ...t }), T = (o) => /* @__PURE__ */ e(p, { ...o }), j = (o) => /* @__PURE__ */ e(n, { ...o }), w = (o) => /* @__PURE__ */ e(d, { ...o }), E = (o) => /* @__PURE__ */ e(g, { ...o }), $ = ({
29
+ className: o,
30
+ ...t
31
+ }) => /* @__PURE__ */ e(C, { className: l("ml-auto", o), ...t }), z = (o) => /* @__PURE__ */ e(u, { ...o }), K = ({
32
+ provider: o,
33
+ className: t,
34
+ ...r
35
+ }) => /* @__PURE__ */ e(
36
+ "img",
37
+ {
38
+ ...r,
39
+ alt: `${o} logo`,
40
+ className: l("size-3 dark:invert", t),
41
+ height: 12,
42
+ src: `https://models.dev/logos/${o}.svg`,
43
+ width: 12
44
+ }
45
+ ), q = ({
46
+ className: o,
47
+ ...t
48
+ }) => /* @__PURE__ */ e(
49
+ "div",
50
+ {
51
+ className: l(
52
+ "flex shrink-0 items-center -space-x-1 [&>img]:rounded-full [&>img]:bg-background [&>img]:p-px [&>img]:ring-1 dark:[&>img]:bg-foreground",
53
+ o
54
+ ),
55
+ ...t
56
+ }
57
+ ), A = ({
58
+ className: o,
59
+ ...t
60
+ }) => /* @__PURE__ */ e("span", { className: l("flex-1 truncate text-left", o), ...t });
61
+ export {
62
+ k as ModelSelector,
63
+ I as ModelSelectorContent,
64
+ L as ModelSelectorDialog,
65
+ j as ModelSelectorEmpty,
66
+ w as ModelSelectorGroup,
67
+ G as ModelSelectorInput,
68
+ E as ModelSelectorItem,
69
+ T as ModelSelectorList,
70
+ K as ModelSelectorLogo,
71
+ q as ModelSelectorLogoGroup,
72
+ A as ModelSelectorName,
73
+ z as ModelSelectorSeparator,
74
+ $ as ModelSelectorShortcut,
75
+ v as ModelSelectorTrigger
76
+ };
77
+ //# sourceMappingURL=model-selector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-selector.js","sources":["../../src/components/ai/model-selector.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from \"react\";\n\nimport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n} from \"@/components/ui/command\";\nimport {\n Dialog,\n DialogContent,\n DialogTitle,\n DialogTrigger,\n} from \"@/components/ui/dialog\";\nimport { Kbd } from \"@/components/ui/kbd\";\nimport { cn } from \"@/lib/utils\";\n\nexport type ModelSelectorProps = ComponentProps<typeof Dialog>;\n\nexport const ModelSelector = (props: ModelSelectorProps) => (\n <Dialog {...props} />\n);\n\nexport type ModelSelectorTriggerProps = ComponentProps<typeof DialogTrigger>;\n\nexport const ModelSelectorTrigger = (props: ModelSelectorTriggerProps) => (\n <DialogTrigger {...props} />\n);\n\nexport type ModelSelectorContentProps = ComponentProps<typeof DialogContent> & {\n title?: ReactNode;\n};\n\nexport const ModelSelectorContent = ({\n className,\n children,\n title = \"Model Selector\",\n ...props\n}: ModelSelectorContentProps) => (\n <DialogContent\n aria-describedby={undefined}\n className={cn(\n \"outline! border-none! p-0 outline-border! outline-solid!\",\n className\n )}\n {...props}\n >\n <DialogTitle className=\"sr-only\">{title}</DialogTitle>\n <Command className=\"**:data-[slot=command-input-wrapper]:h-auto\">\n {children}\n </Command>\n </DialogContent>\n);\n\nexport type ModelSelectorDialogProps = ComponentProps<typeof CommandDialog>;\n\nexport const ModelSelectorDialog = (props: ModelSelectorDialogProps) => (\n <CommandDialog {...props} />\n);\n\nexport type ModelSelectorInputProps = ComponentProps<typeof CommandInput>;\n\nexport const ModelSelectorInput = ({\n className,\n ...props\n}: ModelSelectorInputProps) => (\n <CommandInput className={cn(\"h-auto py-3.5\", className)} {...props} />\n);\n\nexport type ModelSelectorListProps = ComponentProps<typeof CommandList>;\n\nexport const ModelSelectorList = (props: ModelSelectorListProps) => (\n <CommandList {...props} />\n);\n\nexport type ModelSelectorEmptyProps = ComponentProps<typeof CommandEmpty>;\n\nexport const ModelSelectorEmpty = (props: ModelSelectorEmptyProps) => (\n <CommandEmpty {...props} />\n);\n\nexport type ModelSelectorGroupProps = ComponentProps<typeof CommandGroup>;\n\nexport const ModelSelectorGroup = (props: ModelSelectorGroupProps) => (\n <CommandGroup {...props} />\n);\n\nexport type ModelSelectorItemProps = ComponentProps<typeof CommandItem>;\n\nexport const ModelSelectorItem = (props: ModelSelectorItemProps) => (\n <CommandItem {...props} />\n);\n\nexport type ModelSelectorShortcutProps = ComponentProps<typeof Kbd>;\n\nexport const ModelSelectorShortcut = ({\n className,\n ...props\n}: ModelSelectorShortcutProps) => (\n <Kbd className={cn(\"ml-auto\", className)} {...props} />\n);\n\nexport type ModelSelectorSeparatorProps = ComponentProps<\n typeof CommandSeparator\n>;\n\nexport const ModelSelectorSeparator = (props: ModelSelectorSeparatorProps) => (\n <CommandSeparator {...props} />\n);\n\nexport type ModelSelectorLogoProps = Omit<\n ComponentProps<\"img\">,\n \"src\" | \"alt\"\n> & {\n provider:\n | \"moonshotai-cn\"\n | \"lucidquery\"\n | \"moonshotai\"\n | \"zai-coding-plan\"\n | \"alibaba\"\n | \"xai\"\n | \"vultr\"\n | \"nvidia\"\n | \"upstage\"\n | \"groq\"\n | \"github-copilot\"\n | \"mistral\"\n | \"vercel\"\n | \"nebius\"\n | \"deepseek\"\n | \"alibaba-cn\"\n | \"google-vertex-anthropic\"\n | \"venice\"\n | \"chutes\"\n | \"cortecs\"\n | \"github-models\"\n | \"togetherai\"\n | \"azure\"\n | \"baseten\"\n | \"huggingface\"\n | \"opencode\"\n | \"fastrouter\"\n | \"google\"\n | \"google-vertex\"\n | \"cloudflare-workers-ai\"\n | \"inception\"\n | \"wandb\"\n | \"openai\"\n | \"zhipuai-coding-plan\"\n | \"perplexity\"\n | \"openrouter\"\n | \"zenmux\"\n | \"v0\"\n | \"iflowcn\"\n | \"synthetic\"\n | \"deepinfra\"\n | \"zhipuai\"\n | \"submodel\"\n | \"zai\"\n | \"inference\"\n | \"requesty\"\n | \"morph\"\n | \"lmstudio\"\n | \"anthropic\"\n | \"aihubmix\"\n | \"fireworks-ai\"\n | \"modelscope\"\n | \"llama\"\n | \"scaleway\"\n | \"amazon-bedrock\"\n | \"cerebras\"\n // oxlint-disable-next-line typescript-eslint(ban-types) -- intentional pattern for autocomplete-friendly string union\n | (string & {});\n};\n\nexport const ModelSelectorLogo = ({\n provider,\n className,\n ...props\n}: ModelSelectorLogoProps) => (\n <img\n {...props}\n alt={`${provider} logo`}\n className={cn(\"size-3 dark:invert\", className)}\n height={12}\n src={`https://models.dev/logos/${provider}.svg`}\n width={12}\n />\n);\n\nexport type ModelSelectorLogoGroupProps = ComponentProps<\"div\">;\n\nexport const ModelSelectorLogoGroup = ({\n className,\n ...props\n}: ModelSelectorLogoGroupProps) => (\n <div\n className={cn(\n \"flex shrink-0 items-center -space-x-1 [&>img]:rounded-full [&>img]:bg-background [&>img]:p-px [&>img]:ring-1 dark:[&>img]:bg-foreground\",\n className\n )}\n {...props}\n />\n);\n\nexport type ModelSelectorNameProps = ComponentProps<\"span\">;\n\nexport const ModelSelectorName = ({\n className,\n ...props\n}: ModelSelectorNameProps) => (\n <span className={cn(\"flex-1 truncate text-left\", className)} {...props} />\n);\n"],"names":["ModelSelector","props","jsx","Dialog","ModelSelectorTrigger","DialogTrigger","ModelSelectorContent","className","children","title","jsxs","DialogContent","cn","DialogTitle","Command","ModelSelectorDialog","CommandDialog","ModelSelectorInput","CommandInput","ModelSelectorList","CommandList","ModelSelectorEmpty","CommandEmpty","ModelSelectorGroup","CommandGroup","ModelSelectorItem","CommandItem","ModelSelectorShortcut","Kbd","ModelSelectorSeparator","CommandSeparator","ModelSelectorLogo","provider","ModelSelectorLogoGroup","ModelSelectorName"],"mappings":";;;;;AAuBO,MAAMA,IAAgB,CAACC,MAC5B,gBAAAC,EAACC,GAAA,EAAQ,GAAGF,EAAA,CAAO,GAKRG,IAAuB,CAACH,MACnC,gBAAAC,EAACG,GAAA,EAAe,GAAGJ,EAAA,CAAO,GAOfK,IAAuB,CAAC;AAAA,EACnC,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,GAAGR;AACL,MACE,gBAAAS;AAAA,EAACC;AAAA,EAAA;AAAA,IACC,oBAAkB;AAAA,IAClB,WAAWC;AAAA,MACT;AAAA,MACAL;AAAA,IAAA;AAAA,IAED,GAAGN;AAAA,IAEJ,UAAA;AAAA,MAAA,gBAAAC,EAACW,GAAA,EAAY,WAAU,WAAW,UAAAJ,GAAM;AAAA,MACxC,gBAAAP,EAACY,GAAA,EAAQ,WAAU,+CAChB,UAAAN,EAAA,CACH;AAAA,IAAA;AAAA,EAAA;AACF,GAKWO,IAAsB,CAACd,MAClC,gBAAAC,EAACc,GAAA,EAAe,GAAGf,EAAA,CAAO,GAKfgB,IAAqB,CAAC;AAAA,EACjC,WAAAV;AAAA,EACA,GAAGN;AACL,MACE,gBAAAC,EAACgB,KAAa,WAAWN,EAAG,iBAAiBL,CAAS,GAAI,GAAGN,EAAA,CAAO,GAKzDkB,IAAoB,CAAClB,MAChC,gBAAAC,EAACkB,GAAA,EAAa,GAAGnB,EAAA,CAAO,GAKboB,IAAqB,CAACpB,MACjC,gBAAAC,EAACoB,GAAA,EAAc,GAAGrB,EAAA,CAAO,GAKdsB,IAAqB,CAACtB,MACjC,gBAAAC,EAACsB,GAAA,EAAc,GAAGvB,EAAA,CAAO,GAKdwB,IAAoB,CAACxB,MAChC,gBAAAC,EAACwB,GAAA,EAAa,GAAGzB,EAAA,CAAO,GAKb0B,IAAwB,CAAC;AAAA,EACpC,WAAApB;AAAA,EACA,GAAGN;AACL,MACE,gBAAAC,EAAC0B,KAAI,WAAWhB,EAAG,WAAWL,CAAS,GAAI,GAAGN,EAAA,CAAO,GAO1C4B,IAAyB,CAAC5B,MACrC,gBAAAC,EAAC4B,GAAA,EAAkB,GAAG7B,EAAA,CAAO,GAoElB8B,IAAoB,CAAC;AAAA,EAChC,UAAAC;AAAA,EACA,WAAAzB;AAAA,EACA,GAAGN;AACL,MACE,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACE,GAAGD;AAAA,IACJ,KAAK,GAAG+B,CAAQ;AAAA,IAChB,WAAWpB,EAAG,sBAAsBL,CAAS;AAAA,IAC7C,QAAQ;AAAA,IACR,KAAK,4BAA4ByB,CAAQ;AAAA,IACzC,OAAO;AAAA,EAAA;AACT,GAKWC,IAAyB,CAAC;AAAA,EACrC,WAAA1B;AAAA,EACA,GAAGN;AACL,MACE,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWU;AAAA,MACT;AAAA,MACAL;AAAA,IAAA;AAAA,IAED,GAAGN;AAAA,EAAA;AACN,GAKWiC,IAAoB,CAAC;AAAA,EAChC,WAAA3B;AAAA,EACA,GAAGN;AACL,MACE,gBAAAC,EAAC,UAAK,WAAWU,EAAG,6BAA6BL,CAAS,GAAI,GAAGN,EAAA,CAAO;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),M=require("lucide-react"),n=require("react"),D=require("../ui/command.cjs"),E=require("../ui/dropdown-menu.cjs"),K=require("../ui/hover-card.cjs"),_=require("../ui/input-group.cjs"),O=require("../ui/select.cjs"),pe=require("../ui/spinner.cjs"),V=require("../ui/tooltip.cjs"),l=require("../lib/utils.cjs"),de=async e=>{try{const o=await(await fetch(e)).blob();return new Promise(s=>{const u=new FileReader;u.onloadend=()=>s(u.result),u.onerror=()=>s(null),u.readAsDataURL(o)})}catch{return null}},fe=async()=>{if(typeof navigator>"u"||!navigator.mediaDevices?.getDisplayMedia)return null;let e=null;const t=document.createElement("video");t.muted=!0,t.playsInline=!0;try{e=await navigator.mediaDevices.getDisplayMedia({audio:!1,video:!0}),t.srcObject=e,await new Promise((g,v)=>{t.onloadedmetadata=()=>g(),t.onerror=()=>v(new Error("Failed to load screen stream"))}),await t.play();const o=t.videoWidth,s=t.videoHeight;if(!o||!s)return null;const u=document.createElement("canvas");u.width=o,u.height=s;const i=u.getContext("2d");if(!i)return null;i.drawImage(t,0,0,o,s);const c=await new Promise(g=>{u.toBlob(g,"image/png")});if(!c)return null;const h=new Date().toISOString().replace(/[:.]/g,"-").replace("T","_").replace("Z","");return new File([c],`screenshot-${h}.png`,{lastModified:Date.now(),type:"image/png"})}finally{if(e)for(const o of e.getTracks())o.stop();t.pause(),t.srcObject=null}},X=n.createContext(null),Z=n.createContext(null),Ie=()=>{const e=n.useContext(X);if(!e)throw new Error("Wrap your component inside <PromptInputProvider> to use usePromptInputController().");return e},Y=()=>n.useContext(X),he=()=>{const e=n.useContext(Z);if(!e)throw new Error("Wrap your component inside <PromptInputProvider> to use useProviderAttachments().");return e},ge=()=>n.useContext(Z),Pe=({initialInput:e="",children:t})=>{const[o,s]=n.useState(e),u=n.useCallback(()=>s(""),[]),[i,c]=n.useState([]),h=n.useRef(null),g=n.useRef(()=>{}),v=n.useCallback(m=>{const b=[...m];b.length!==0&&c(A=>[...A,...b.map(k=>({filename:k.name,id:crypto.randomUUID(),mediaType:k.type,type:"file",url:URL.createObjectURL(k)}))])},[]),R=n.useCallback(m=>{c(b=>{const A=b.find(k=>k.id===m);return A?.url&&URL.revokeObjectURL(A.url),b.filter(k=>k.id!==m)})},[]),f=n.useCallback(()=>{c(m=>{for(const b of m)b.url&&URL.revokeObjectURL(b.url);return[]})},[]),P=n.useRef(i);n.useEffect(()=>{P.current=i},[i]),n.useEffect(()=>()=>{for(const m of P.current)m.url&&URL.revokeObjectURL(m.url)},[]);const w=n.useCallback(()=>{g.current?.()},[]),d=n.useMemo(()=>({add:v,clear:f,fileInputRef:h,files:i,openFileDialog:w,remove:R}),[i,v,R,f,w]),S=n.useCallback((m,b)=>{h.current=m.current,g.current=b},[]),T=n.useMemo(()=>({__registerFileInput:S,attachments:d,textInput:{clear:u,setInput:s,value:o}}),[o,u,d,S]);return r.jsx(X.Provider,{value:T,children:r.jsx(Z.Provider,{value:d,children:t})})},ee=n.createContext(null),G=()=>{const e=ge(),o=n.useContext(ee)??e;if(!o)throw new Error("usePromptInputAttachments must be used within a PromptInput or PromptInputProvider");return o},$=n.createContext(null),xe=()=>{const e=n.useContext($);if(!e)throw new Error("usePromptInputReferencedSources must be used within a LocalReferencedSourcesContext.Provider");return e},Ce=({label:e="Add photos or files",...t})=>{const o=G(),s=n.useCallback(u=>{u.preventDefault(),o.openFileDialog()},[o]);return r.jsxs(E.DropdownMenuItem,{...t,onSelect:s,children:[r.jsx(M.ImageIcon,{className:"mr-2 size-4"})," ",e]})},be=({label:e="Take screenshot",onSelect:t,...o})=>{const s=G(),u=n.useCallback(async i=>{if(t?.(i),!i.defaultPrevented)try{const c=await fe();c&&s.add([c])}catch(c){if(c instanceof DOMException&&(c.name==="NotAllowedError"||c.name==="AbortError"))return;throw c}},[t,s]);return r.jsxs(E.DropdownMenuItem,{...o,onSelect:u,children:[r.jsx(M.Monitor,{className:"mr-2 size-4"}),e]})},ve=({className:e,accept:t,multiple:o,globalDrop:s,syncHiddenInput:u,maxFiles:i,maxFileSize:c,onError:h,onSubmit:g,children:v,...R})=>{const f=Y(),P=!!f,w=n.useRef(null),d=n.useRef(null),[S,T]=n.useState([]),m=P?f.attachments.files:S,[b,A]=n.useState([]),k=n.useRef(m);n.useEffect(()=>{k.current=m},[m]);const ne=n.useCallback(()=>{w.current?.click()},[]),q=n.useCallback(a=>!t||t.trim()===""?!0:t.split(",").map(p=>p.trim()).filter(Boolean).some(p=>{if(p.endsWith("/*")){const C=p.slice(0,-1);return a.type.startsWith(C)}return a.type===p}),[t]),re=n.useCallback(a=>{const I=[...a],p=I.filter(y=>q(y));if(I.length&&p.length===0){h?.({code:"accept",message:"No files match the accepted types."});return}const C=y=>c?y.size<=c:!0,x=p.filter(C);if(p.length>0&&x.length===0){h?.({code:"max_file_size",message:"All files exceed the maximum size."});return}T(y=>{const j=typeof i=="number"?Math.max(0,i-y.length):void 0,L=typeof j=="number"?x.slice(0,j):x;typeof j=="number"&&x.length>j&&h?.({code:"max_files",message:"Too many files. Some were not added."});const U=[];for(const W of L)U.push({filename:W.name,id:crypto.randomUUID(),mediaType:W.type,type:"file",url:URL.createObjectURL(W)});return[...y,...U]})},[q,i,c,h]),oe=n.useCallback(a=>T(I=>{const p=I.find(C=>C.id===a);return p?.url&&URL.revokeObjectURL(p.url),I.filter(C=>C.id!==a)}),[]),se=n.useCallback(a=>{const I=[...a],p=I.filter(U=>q(U));if(I.length&&p.length===0){h?.({code:"accept",message:"No files match the accepted types."});return}const C=U=>c?U.size<=c:!0,x=p.filter(C);if(p.length>0&&x.length===0){h?.({code:"max_file_size",message:"All files exceed the maximum size."});return}const y=m.length,j=typeof i=="number"?Math.max(0,i-y):void 0,L=typeof j=="number"?x.slice(0,j):x;typeof j=="number"&&x.length>j&&h?.({code:"max_files",message:"Too many files. Some were not added."}),L.length>0&&f?.attachments.add(L)},[q,c,i,h,m.length,f]),z=n.useCallback(()=>P?f?.attachments.clear():T(a=>{for(const I of a)I.url&&URL.revokeObjectURL(I.url);return[]}),[P,f]),B=n.useCallback(()=>A([]),[]),N=P?se:re,J=P?f.attachments.remove:oe,Q=P?f.attachments.openFileDialog:ne,F=n.useCallback(()=>{z(),B()},[z,B]);n.useEffect(()=>{P&&f.__registerFileInput(w,()=>w.current?.click())},[P,f]),n.useEffect(()=>{u&&w.current&&m.length===0&&(w.current.value="")},[m,u]);const H=n.useCallback((a,I)=>{const p=x=>{x.dataTransfer?.types?.includes("Files")&&x.preventDefault()},C=x=>{const y=x;y.dataTransfer?.types?.includes("Files")&&x.preventDefault(),y.dataTransfer?.files&&y.dataTransfer.files.length>0&&I(y.dataTransfer.files)};return a.addEventListener("dragover",p),a.addEventListener("drop",C),()=>{a.removeEventListener("dragover",p),a.removeEventListener("drop",C)}},[]);n.useEffect(()=>{const a=d.current;if(a&&!s)return H(a,N)},[N,s,H]),n.useEffect(()=>{if(s)return H(document,N)},[N,s,H]),n.useEffect(()=>()=>{if(!P)for(const a of k.current)a.url&&URL.revokeObjectURL(a.url)},[P]);const ae=n.useCallback(a=>{a.currentTarget.files&&N(a.currentTarget.files),a.currentTarget.value=""},[N]),ce=n.useMemo(()=>({add:N,clear:z,fileInputRef:w,files:m.map(a=>({...a,id:a.id})),openFileDialog:Q,remove:J}),[m,N,J,z,Q]),ue=n.useMemo(()=>({add:a=>{const I=Array.isArray(a)?a:[a];A(p=>[...p,...I.map(C=>({...C,id:crypto.randomUUID()}))])},clear:B,remove:a=>{A(I=>I.filter(p=>p.id!==a))},sources:b}),[b,B]),ie=n.useCallback(async a=>{a.preventDefault();const I=a.currentTarget,p=P?f.textInput.value:new FormData(I).get("message")||"";P||I.reset();try{const C=await Promise.all(m.map(async({id:y,...j})=>{if(j.url?.startsWith("blob:")){const L=await de(j.url);return{...j,url:L??j.url}}return j})),x=g({files:C,text:p},a);if(x instanceof Promise)try{await x,F(),P&&f.textInput.clear()}catch{}else F(),P&&f.textInput.clear()}catch{}},[P,f,m,g,F]),le=r.jsxs(r.Fragment,{children:[r.jsx("input",{accept:t,"aria-label":"Upload files",className:"hidden",multiple:o,onChange:ae,ref:w,title:"Upload files",type:"file"}),r.jsx("form",{className:l.cn("w-full",e),onSubmit:ie,ref:d,...R,children:r.jsx(_.InputGroup,{className:"border-border overflow-hidden has-[[data-slot=input-group-control]:focus-visible]:ring-0",children:v})})]}),me=r.jsx($.Provider,{value:ue,children:le});return r.jsx(ee.Provider,{value:ce,children:me})},ye=({className:e,...t})=>r.jsx("div",{className:l.cn("contents",e),...t}),je=({onChange:e,onKeyDown:t,className:o,placeholder:s="What would you like to know?",...u})=>{const i=Y(),c=G(),[h,g]=n.useState(!1),v=n.useCallback(d=>{if(t?.(d),!d.defaultPrevented){if(d.key==="Enter"){if(h||d.nativeEvent.isComposing||d.shiftKey)return;d.preventDefault();const{form:S}=d.currentTarget;if(S?.querySelector('button[type="submit"]')?.disabled)return;S?.requestSubmit()}if(d.key==="Backspace"&&d.currentTarget.value===""&&c.files.length>0){d.preventDefault();const S=c.files[c.files.length-1];S&&c.remove(S.id)}}},[t,h,c]),R=n.useCallback(d=>{const S=d.clipboardData?.items;if(!S)return;const T=[];for(const m of S)if(m.kind==="file"){const b=m.getAsFile();b&&T.push(b)}T.length>0&&(d.preventDefault(),c.add(T))},[c]),f=n.useCallback(()=>g(!1),[]),P=n.useCallback(()=>g(!0),[]),w=i?{onChange:d=>{i.textInput.setInput(d.currentTarget.value),e?.(d)},value:i.textInput.value}:{onChange:e};return r.jsx(_.InputGroupTextarea,{className:l.cn("field-sizing-content max-h-48 min-h-16",o),name:"message",onCompositionEnd:f,onCompositionStart:P,onKeyDown:v,onPaste:R,placeholder:s,...u,...w})},Se=({className:e,...t})=>r.jsx(_.InputGroupAddon,{align:"block-end",className:l.cn("order-first flex-wrap gap-1",e),...t}),we=({className:e,...t})=>r.jsx(_.InputGroupAddon,{align:"block-end",className:l.cn("justify-between gap-1",e),...t}),Te=({className:e,...t})=>r.jsx("div",{className:l.cn("flex min-w-0 items-center gap-1",e),...t}),te=({variant:e="ghost",className:t,size:o,tooltip:s,...u})=>{const i=o??(n.Children.count(u.children)>1?"sm":"icon-sm"),c=r.jsx(_.InputGroupButton,{className:l.cn(t),size:i,type:"button",variant:e,...u});if(!s)return c;const h=typeof s=="string"?s:s.content,g=typeof s=="string"?void 0:s.shortcut,v=typeof s=="string"?"top":s.side??"top";return r.jsxs(V.Tooltip,{children:[r.jsx(V.TooltipTrigger,{asChild:!0,children:c}),r.jsxs(V.TooltipContent,{side:v,children:[h,g&&r.jsx("span",{className:"ml-2 text-background/70",children:g})]})]})},ke=e=>r.jsx(E.DropdownMenu,{modal:!1,...e}),Re=({className:e,children:t,tooltip:o,"aria-label":s,...u})=>{const i=s??(typeof o=="string"?o:typeof o?.content=="string"?o.content:void 0);return r.jsx(E.DropdownMenuTrigger,{asChild:!0,children:r.jsx(te,{"aria-label":i,className:e,tooltip:o,...u,children:t??r.jsx(M.PlusIcon,{className:"size-4"})})})},Ae=({className:e,...t})=>r.jsx(E.DropdownMenuContent,{align:"start",className:l.cn(e),...t}),Ne=({className:e,...t})=>r.jsx(E.DropdownMenuItem,{className:l.cn(e),...t}),De=({className:e,variant:t="default",size:o="icon-sm",status:s,onStop:u,onClick:i,children:c,...h})=>{const g=s==="submitted"||s==="streaming";let v=r.jsx(M.CornerDownLeftIcon,{className:"size-4"});s==="submitted"?v=r.jsx(pe.Spinner,{}):s==="streaming"?v=r.jsx(M.SquareIcon,{className:"size-4"}):s==="error"&&(v=r.jsx(M.XIcon,{className:"size-4"}));const R=n.useCallback(f=>{if(g&&u){f.preventDefault(),u();return}i?.(f)},[g,u,i]);return r.jsx(_.InputGroupButton,{"aria-label":g?"Stop":"Submit",className:l.cn(e),onClick:R,size:o,type:g&&u?"button":"submit",variant:t,...h,children:c??v})},Le=e=>r.jsx(O.Select,{...e}),Ue=({className:e,...t})=>r.jsx(O.SelectTrigger,{className:l.cn("border-none bg-transparent font-medium text-muted-foreground shadow-none transition-colors","hover:bg-accent hover:text-foreground aria-expanded:bg-accent aria-expanded:text-foreground",e),...t}),Me=({className:e,...t})=>r.jsx(O.SelectContent,{className:l.cn(e),...t}),Ee=({className:e,...t})=>r.jsx(O.SelectItem,{className:l.cn(e),...t}),_e=({className:e,...t})=>r.jsx(O.SelectValue,{className:l.cn(e),...t}),Oe=({openDelay:e=0,closeDelay:t=0,...o})=>r.jsx(K.HoverCard,{closeDelay:t,openDelay:e,...o}),qe=e=>r.jsx(K.HoverCardTrigger,{...e}),ze=({align:e="start",...t})=>r.jsx(K.HoverCardContent,{align:e,...t}),Be=({a:e,b:t,show:o,className:s})=>r.jsxs("div",{className:l.cn("relative inline-flex items-center justify-center",s),children:[r.jsx("div",{"aria-hidden":o,inert:o,className:l.cn("transition-all duration-200 ease-out",o?"pointer-events-none scale-75 opacity-0":"scale-100 opacity-100"),children:e}),r.jsx("div",{"aria-hidden":!o,inert:!o,className:l.cn("absolute transition-all duration-200 ease-out",o?"scale-100 opacity-100":"pointer-events-none scale-75 opacity-0"),children:t})]}),He=({className:e,...t})=>r.jsx("div",{className:l.cn(e),...t}),Ge=({className:e,...t})=>r.jsx("div",{className:l.cn(e),...t}),Fe=({className:e,children:t,...o})=>r.jsx("h3",{className:l.cn("mb-2 px-3 font-medium text-muted-foreground text-xs",e),...o,children:t}),We=({className:e,...t})=>r.jsx("div",{className:l.cn("space-y-1",e),...t}),Ve=({className:e,...t})=>r.jsx("div",{className:l.cn("flex items-center gap-2 px-3 py-2 text-xs hover:bg-accent",e),...t}),Ke=({className:e,...t})=>r.jsx(D.Command,{className:l.cn(e),...t}),Xe=({className:e,...t})=>r.jsx(D.CommandInput,{className:l.cn(e),...t}),Ze=({className:e,...t})=>r.jsx(D.CommandList,{className:l.cn(e),...t}),$e=({className:e,...t})=>r.jsx(D.CommandEmpty,{className:l.cn(e),...t}),Je=({className:e,...t})=>r.jsx(D.CommandGroup,{className:l.cn(e),...t}),Qe=({className:e,...t})=>r.jsx(D.CommandItem,{className:l.cn(e),...t}),Ye=({className:e,...t})=>r.jsx(D.CommandSeparator,{className:l.cn(e),...t});exports.LocalReferencedSourcesContext=$;exports.PromptInput=ve;exports.PromptInputActionAddAttachments=Ce;exports.PromptInputActionAddScreenshot=be;exports.PromptInputActionMenu=ke;exports.PromptInputActionMenuContent=Ae;exports.PromptInputActionMenuItem=Ne;exports.PromptInputActionMenuTrigger=Re;exports.PromptInputBody=ye;exports.PromptInputButton=te;exports.PromptInputCommand=Ke;exports.PromptInputCommandEmpty=$e;exports.PromptInputCommandGroup=Je;exports.PromptInputCommandInput=Xe;exports.PromptInputCommandItem=Qe;exports.PromptInputCommandList=Ze;exports.PromptInputCommandSeparator=Ye;exports.PromptInputFooter=we;exports.PromptInputHeader=Se;exports.PromptInputHoverCard=Oe;exports.PromptInputHoverCardContent=ze;exports.PromptInputHoverCardTrigger=qe;exports.PromptInputProvider=Pe;exports.PromptInputSelect=Le;exports.PromptInputSelectContent=Me;exports.PromptInputSelectItem=Ee;exports.PromptInputSelectTrigger=Ue;exports.PromptInputSelectValue=_e;exports.PromptInputSlotSwap=Be;exports.PromptInputSubmit=De;exports.PromptInputTab=Ge;exports.PromptInputTabBody=We;exports.PromptInputTabItem=Ve;exports.PromptInputTabLabel=Fe;exports.PromptInputTabsList=He;exports.PromptInputTextarea=je;exports.PromptInputTools=Te;exports.usePromptInputAttachments=G;exports.usePromptInputController=Ie;exports.usePromptInputReferencedSources=xe;exports.useProviderAttachments=he;
2
+ //# sourceMappingURL=prompt-input.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-input.cjs","sources":["../../src/components/ai/prompt-input.tsx"],"sourcesContent":["import {\n CornerDownLeftIcon,\n ImageIcon,\n Monitor,\n PlusIcon,\n SquareIcon,\n XIcon,\n} from \"lucide-react\";\nimport {\n Children,\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport type { ChatStatus, FileUIPart, SourceDocumentUIPart } from \"ai\";\nimport type {\n ChangeEvent,\n ChangeEventHandler,\n ClipboardEventHandler,\n ComponentProps,\n FormEvent,\n FormEventHandler,\n HTMLAttributes,\n KeyboardEventHandler,\n PropsWithChildren,\n ReactNode,\n RefObject,\n} from \"react\";\n\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n} from \"@/components/ui/command\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport {\n HoverCard,\n HoverCardContent,\n HoverCardTrigger,\n} from \"@/components/ui/hover-card\";\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupTextarea,\n} from \"@/components/ui/input-group\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport { Spinner } from \"@/components/ui/spinner\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\";\nimport { cn } from \"@/lib/utils\";\n\n\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nconst convertBlobUrlToDataUrl = async (url: string): Promise<string | null> => {\n try {\n const response = await fetch(url);\n const blob = await response.blob();\n // FileReader uses callback-based API, wrapping in Promise is necessary\n // oxlint-disable-next-line eslint-plugin-promise(avoid-new)\n return new Promise((resolve) => {\n const reader = new FileReader();\n // oxlint-disable-next-line eslint-plugin-unicorn(prefer-add-event-listener)\n reader.onloadend = () => resolve(reader.result as string);\n // oxlint-disable-next-line eslint-plugin-unicorn(prefer-add-event-listener)\n reader.onerror = () => resolve(null);\n reader.readAsDataURL(blob);\n });\n } catch {\n return null;\n }\n};\n\nconst captureScreenshot = async (): Promise<File | null> => {\n if (\n typeof navigator === \"undefined\" ||\n !navigator.mediaDevices?.getDisplayMedia\n ) {\n return null;\n }\n\n let stream: MediaStream | null = null;\n const video = document.createElement(\"video\");\n video.muted = true;\n video.playsInline = true;\n\n try {\n stream = await navigator.mediaDevices.getDisplayMedia({\n audio: false,\n video: true,\n });\n\n video.srcObject = stream;\n\n // Video element uses callback-based API, wrapping in Promise is necessary\n // oxlint-disable-next-line eslint-plugin-promise(avoid-new)\n await new Promise<void>((resolve, reject) => {\n // oxlint-disable-next-line eslint-plugin-unicorn(prefer-add-event-listener)\n video.onloadedmetadata = () => resolve();\n // oxlint-disable-next-line eslint-plugin-unicorn(prefer-add-event-listener)\n video.onerror = () => reject(new Error(\"Failed to load screen stream\"));\n });\n\n await video.play();\n\n const width = video.videoWidth;\n const height = video.videoHeight;\n if (!width || !height) {\n return null;\n }\n\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const context = canvas.getContext(\"2d\");\n if (!context) {\n return null;\n }\n\n context.drawImage(video, 0, 0, width, height);\n // canvas.toBlob uses callback-based API, wrapping in Promise is necessary\n // oxlint-disable-next-line eslint-plugin-promise(avoid-new)\n const blob = await new Promise<Blob | null>((resolve) => {\n canvas.toBlob(resolve, \"image/png\");\n });\n if (!blob) {\n return null;\n }\n\n const timestamp = new Date()\n .toISOString()\n .replace(/[:.]/g, \"-\")\n .replace(\"T\", \"_\")\n .replace(\"Z\", \"\");\n\n return new File([blob], `screenshot-${timestamp}.png`, {\n lastModified: Date.now(),\n type: \"image/png\",\n });\n } finally {\n if (stream) {\n for (const track of stream.getTracks()) {\n track.stop();\n }\n }\n video.pause();\n video.srcObject = null;\n }\n};\n\n// ============================================================================\n// Provider Context & Types\n// ============================================================================\n\nexport interface AttachmentsContext {\n files: (FileUIPart & { id: string })[];\n add: (files: File[] | FileList) => void;\n remove: (id: string) => void;\n clear: () => void;\n openFileDialog: () => void;\n fileInputRef: RefObject<HTMLInputElement | null>;\n}\n\nexport interface TextInputContext {\n value: string;\n setInput: (v: string) => void;\n clear: () => void;\n}\n\nexport interface PromptInputControllerProps {\n textInput: TextInputContext;\n attachments: AttachmentsContext;\n /** INTERNAL: Allows PromptInput to register its file textInput + \"open\" callback */\n __registerFileInput: (\n ref: RefObject<HTMLInputElement | null>,\n open: () => void\n ) => void;\n}\n\nconst PromptInputController = createContext<PromptInputControllerProps | null>(\n null\n);\nconst ProviderAttachmentsContext = createContext<AttachmentsContext | null>(\n null\n);\n\nexport const usePromptInputController = () => {\n const ctx = useContext(PromptInputController);\n if (!ctx) {\n throw new Error(\n \"Wrap your component inside <PromptInputProvider> to use usePromptInputController().\"\n );\n }\n return ctx;\n};\n\n// Optional variants (do NOT throw). Useful for dual-mode components.\nconst useOptionalPromptInputController = () =>\n useContext(PromptInputController);\n\nexport const useProviderAttachments = () => {\n const ctx = useContext(ProviderAttachmentsContext);\n if (!ctx) {\n throw new Error(\n \"Wrap your component inside <PromptInputProvider> to use useProviderAttachments().\"\n );\n }\n return ctx;\n};\n\nconst useOptionalProviderAttachments = () =>\n useContext(ProviderAttachmentsContext);\n\nexport type PromptInputProviderProps = PropsWithChildren<{\n initialInput?: string;\n}>;\n\n/**\n * Optional global provider that lifts PromptInput state outside of PromptInput.\n * If you don't use it, PromptInput stays fully self-managed.\n */\nexport const PromptInputProvider = ({\n initialInput: initialTextInput = \"\",\n children,\n}: PromptInputProviderProps) => {\n // ----- textInput state\n const [textInput, setTextInput] = useState(initialTextInput);\n const clearInput = useCallback(() => setTextInput(\"\"), []);\n\n // ----- attachments state (global when wrapped)\n const [attachmentFiles, setAttachmentFiles] = useState<\n (FileUIPart & { id: string })[]\n >([]);\n const fileInputRef = useRef<HTMLInputElement | null>(null);\n // oxlint-disable-next-line eslint(no-empty-function)\n const openRef = useRef<() => void>(() => {});\n\n const add = useCallback((files: File[] | FileList) => {\n const incoming = [...files];\n if (incoming.length === 0) {\n return;\n }\n\n setAttachmentFiles((prev) => [\n ...prev,\n ...incoming.map((file) => ({\n filename: file.name,\n id: crypto.randomUUID(),\n mediaType: file.type,\n type: \"file\" as const,\n url: URL.createObjectURL(file),\n })),\n ]);\n }, []);\n\n const remove = useCallback((id: string) => {\n setAttachmentFiles((prev) => {\n const found = prev.find((f) => f.id === id);\n if (found?.url) {\n URL.revokeObjectURL(found.url);\n }\n return prev.filter((f) => f.id !== id);\n });\n }, []);\n\n const clear = useCallback(() => {\n setAttachmentFiles((prev) => {\n for (const f of prev) {\n if (f.url) {\n URL.revokeObjectURL(f.url);\n }\n }\n return [];\n });\n }, []);\n\n // Keep a ref to attachments for cleanup on unmount (avoids stale closure)\n const attachmentsRef = useRef(attachmentFiles);\n\n useEffect(() => {\n attachmentsRef.current = attachmentFiles;\n }, [attachmentFiles]);\n\n // Cleanup blob URLs on unmount to prevent memory leaks\n useEffect(\n () => () => {\n for (const f of attachmentsRef.current) {\n if (f.url) {\n URL.revokeObjectURL(f.url);\n }\n }\n },\n []\n );\n\n const openFileDialog = useCallback(() => {\n openRef.current?.();\n }, []);\n\n const attachments = useMemo<AttachmentsContext>(\n () => ({\n add,\n clear,\n fileInputRef,\n files: attachmentFiles,\n openFileDialog,\n remove,\n }),\n [attachmentFiles, add, remove, clear, openFileDialog]\n );\n\n const __registerFileInput = useCallback(\n (ref: RefObject<HTMLInputElement | null>, open: () => void) => {\n fileInputRef.current = ref.current;\n openRef.current = open;\n },\n []\n );\n\n const controller = useMemo<PromptInputControllerProps>(\n () => ({\n __registerFileInput,\n attachments,\n textInput: {\n clear: clearInput,\n setInput: setTextInput,\n value: textInput,\n },\n }),\n [textInput, clearInput, attachments, __registerFileInput]\n );\n\n return (\n <PromptInputController.Provider value={controller}>\n <ProviderAttachmentsContext.Provider value={attachments}>\n {children}\n </ProviderAttachmentsContext.Provider>\n </PromptInputController.Provider>\n );\n};\n\n// ============================================================================\n// Component Context & Hooks\n// ============================================================================\n\nconst LocalAttachmentsContext = createContext<AttachmentsContext | null>(null);\n\nexport const usePromptInputAttachments = () => {\n // Prefer local context (inside PromptInput) as it has validation, fall back to provider\n const provider = useOptionalProviderAttachments();\n const local = useContext(LocalAttachmentsContext);\n const context = local ?? provider;\n if (!context) {\n throw new Error(\n \"usePromptInputAttachments must be used within a PromptInput or PromptInputProvider\"\n );\n }\n return context;\n};\n\n// ============================================================================\n// Referenced Sources (Local to PromptInput)\n// ============================================================================\n\nexport interface ReferencedSourcesContext {\n sources: (SourceDocumentUIPart & { id: string })[];\n add: (sources: SourceDocumentUIPart[] | SourceDocumentUIPart) => void;\n remove: (id: string) => void;\n clear: () => void;\n}\n\nexport const LocalReferencedSourcesContext =\n createContext<ReferencedSourcesContext | null>(null);\n\nexport const usePromptInputReferencedSources = () => {\n const ctx = useContext(LocalReferencedSourcesContext);\n if (!ctx) {\n throw new Error(\n \"usePromptInputReferencedSources must be used within a LocalReferencedSourcesContext.Provider\"\n );\n }\n return ctx;\n};\n\nexport type PromptInputActionAddAttachmentsProps = ComponentProps<\n typeof DropdownMenuItem\n> & {\n label?: string;\n};\n\nexport const PromptInputActionAddAttachments = ({\n label = \"Add photos or files\",\n ...props\n}: PromptInputActionAddAttachmentsProps) => {\n const attachments = usePromptInputAttachments();\n\n const handleSelect = useCallback(\n (e: Event) => {\n e.preventDefault();\n attachments.openFileDialog();\n },\n [attachments]\n );\n\n return (\n <DropdownMenuItem {...props} onSelect={handleSelect}>\n <ImageIcon className=\"mr-2 size-4\" /> {label}\n </DropdownMenuItem>\n );\n};\n\nexport type PromptInputActionAddScreenshotProps = ComponentProps<\n typeof DropdownMenuItem\n> & {\n label?: string;\n};\n\nexport const PromptInputActionAddScreenshot = ({\n label = \"Take screenshot\",\n onSelect,\n ...props\n}: PromptInputActionAddScreenshotProps) => {\n const attachments = usePromptInputAttachments();\n\n const handleSelect = useCallback(\n async (event: Event) => {\n onSelect?.(event);\n if (event.defaultPrevented) {\n return;\n }\n\n try {\n const screenshot = await captureScreenshot();\n if (screenshot) {\n attachments.add([screenshot]);\n }\n } catch (error) {\n if (\n error instanceof DOMException &&\n (error.name === \"NotAllowedError\" || error.name === \"AbortError\")\n ) {\n return;\n }\n throw error;\n }\n },\n [onSelect, attachments]\n );\n\n return (\n <DropdownMenuItem {...props} onSelect={handleSelect}>\n <Monitor className=\"mr-2 size-4\" />\n {label}\n </DropdownMenuItem>\n );\n};\n\nexport interface PromptInputMessage {\n text: string;\n files: FileUIPart[];\n}\n\nexport type PromptInputProps = Omit<\n HTMLAttributes<HTMLFormElement>,\n \"onSubmit\" | \"onError\"\n> & {\n // e.g., \"image/*\" or leave undefined for any\n accept?: string;\n multiple?: boolean;\n // When true, accepts drops anywhere on document. Default false (opt-in).\n globalDrop?: boolean;\n // Render a hidden input with given name and keep it in sync for native form posts. Default false.\n syncHiddenInput?: boolean;\n // Minimal constraints\n maxFiles?: number;\n // bytes\n maxFileSize?: number;\n onError?: (err: {\n code: \"max_files\" | \"max_file_size\" | \"accept\";\n message: string;\n }) => void;\n onSubmit: (\n message: PromptInputMessage,\n event: FormEvent<HTMLFormElement>\n ) => void | Promise<void>;\n};\n\nexport const PromptInput = ({\n className,\n accept,\n multiple,\n globalDrop,\n syncHiddenInput,\n maxFiles,\n maxFileSize,\n onError,\n onSubmit,\n children,\n ...props\n}: PromptInputProps) => {\n // Try to use a provider controller if present\n const controller = useOptionalPromptInputController();\n const usingProvider = !!controller;\n\n // Refs\n const inputRef = useRef<HTMLInputElement | null>(null);\n const formRef = useRef<HTMLFormElement | null>(null);\n\n // ----- Local attachments (only used when no provider)\n const [items, setItems] = useState<(FileUIPart & { id: string })[]>([]);\n const files = usingProvider ? controller.attachments.files : items;\n\n // ----- Local referenced sources (always local to PromptInput)\n const [referencedSources, setReferencedSources] = useState<\n (SourceDocumentUIPart & { id: string })[]\n >([]);\n\n // Keep a ref to files for cleanup on unmount (avoids stale closure)\n const filesRef = useRef(files);\n\n useEffect(() => {\n filesRef.current = files;\n }, [files]);\n\n const openFileDialogLocal = useCallback(() => {\n inputRef.current?.click();\n }, []);\n\n const matchesAccept = useCallback(\n (f: File) => {\n if (!accept || accept.trim() === \"\") {\n return true;\n }\n\n const patterns = accept\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean);\n\n return patterns.some((pattern) => {\n if (pattern.endsWith(\"/*\")) {\n // e.g: image/* -> image/\n const prefix = pattern.slice(0, -1);\n return f.type.startsWith(prefix);\n }\n return f.type === pattern;\n });\n },\n [accept]\n );\n\n const addLocal = useCallback(\n (fileList: File[] | FileList) => {\n const incoming = [...fileList];\n const accepted = incoming.filter((f) => matchesAccept(f));\n if (incoming.length && accepted.length === 0) {\n onError?.({\n code: \"accept\",\n message: \"No files match the accepted types.\",\n });\n return;\n }\n const withinSize = (f: File) =>\n maxFileSize ? f.size <= maxFileSize : true;\n const sized = accepted.filter(withinSize);\n if (accepted.length > 0 && sized.length === 0) {\n onError?.({\n code: \"max_file_size\",\n message: \"All files exceed the maximum size.\",\n });\n return;\n }\n\n setItems((prev) => {\n const capacity =\n typeof maxFiles === \"number\"\n ? Math.max(0, maxFiles - prev.length)\n : undefined;\n const capped =\n typeof capacity === \"number\" ? sized.slice(0, capacity) : sized;\n if (typeof capacity === \"number\" && sized.length > capacity) {\n onError?.({\n code: \"max_files\",\n message: \"Too many files. Some were not added.\",\n });\n }\n const next: (FileUIPart & { id: string })[] = [];\n for (const file of capped) {\n next.push({\n filename: file.name,\n id: crypto.randomUUID(),\n mediaType: file.type,\n type: \"file\",\n url: URL.createObjectURL(file),\n });\n }\n return [...prev, ...next];\n });\n },\n [matchesAccept, maxFiles, maxFileSize, onError]\n );\n\n const removeLocal = useCallback(\n (id: string) =>\n setItems((prev) => {\n const found = prev.find((file) => file.id === id);\n if (found?.url) {\n URL.revokeObjectURL(found.url);\n }\n return prev.filter((file) => file.id !== id);\n }),\n []\n );\n\n // Wrapper that validates files before calling provider's add\n const addWithProviderValidation = useCallback(\n (fileList: File[] | FileList) => {\n const incoming = [...fileList];\n const accepted = incoming.filter((f) => matchesAccept(f));\n if (incoming.length && accepted.length === 0) {\n onError?.({\n code: \"accept\",\n message: \"No files match the accepted types.\",\n });\n return;\n }\n const withinSize = (f: File) =>\n maxFileSize ? f.size <= maxFileSize : true;\n const sized = accepted.filter(withinSize);\n if (accepted.length > 0 && sized.length === 0) {\n onError?.({\n code: \"max_file_size\",\n message: \"All files exceed the maximum size.\",\n });\n return;\n }\n\n const currentCount = files.length;\n const capacity =\n typeof maxFiles === \"number\"\n ? Math.max(0, maxFiles - currentCount)\n : undefined;\n const capped =\n typeof capacity === \"number\" ? sized.slice(0, capacity) : sized;\n if (typeof capacity === \"number\" && sized.length > capacity) {\n onError?.({\n code: \"max_files\",\n message: \"Too many files. Some were not added.\",\n });\n }\n\n if (capped.length > 0) {\n controller?.attachments.add(capped);\n }\n },\n [matchesAccept, maxFileSize, maxFiles, onError, files.length, controller]\n );\n\n const clearAttachments = useCallback(\n () =>\n usingProvider\n ? controller?.attachments.clear()\n : setItems((prev) => {\n for (const file of prev) {\n if (file.url) {\n URL.revokeObjectURL(file.url);\n }\n }\n return [];\n }),\n [usingProvider, controller]\n );\n\n const clearReferencedSources = useCallback(\n () => setReferencedSources([]),\n []\n );\n\n const add = usingProvider ? addWithProviderValidation : addLocal;\n const remove = usingProvider ? controller.attachments.remove : removeLocal;\n const openFileDialog = usingProvider\n ? controller.attachments.openFileDialog\n : openFileDialogLocal;\n\n const clear = useCallback(() => {\n clearAttachments();\n clearReferencedSources();\n }, [clearAttachments, clearReferencedSources]);\n\n // Let provider know about our hidden file input so external menus can call openFileDialog()\n useEffect(() => {\n if (!usingProvider) {\n return;\n }\n controller.__registerFileInput(inputRef, () => inputRef.current?.click());\n }, [usingProvider, controller]);\n\n // Note: File input cannot be programmatically set for security reasons\n // The syncHiddenInput prop is no longer functional\n useEffect(() => {\n if (syncHiddenInput && inputRef.current && files.length === 0) {\n inputRef.current.value = \"\";\n }\n }, [files, syncHiddenInput]);\n\n // Shared drag-and-drop handlers used by both form-level and document-level effects\n const makeDragHandlers = useCallback(\n (target: HTMLElement | Document, onAddFiles: (files: FileList) => void) => {\n const onDragOver = (e: Event) => {\n const drag = e as DragEvent;\n if (drag.dataTransfer?.types?.includes(\"Files\")) {\n e.preventDefault();\n }\n };\n const onDrop = (e: Event) => {\n const drag = e as DragEvent;\n if (drag.dataTransfer?.types?.includes(\"Files\")) {\n e.preventDefault();\n }\n if (drag.dataTransfer?.files && drag.dataTransfer.files.length > 0) {\n onAddFiles(drag.dataTransfer.files);\n }\n };\n target.addEventListener(\"dragover\", onDragOver);\n target.addEventListener(\"drop\", onDrop);\n return () => {\n target.removeEventListener(\"dragover\", onDragOver);\n target.removeEventListener(\"drop\", onDrop);\n };\n },\n []\n );\n\n // Attach drop handlers on nearest form and document (opt-in)\n useEffect(() => {\n const form = formRef.current;\n if (!form) {\n return;\n }\n if (globalDrop) {\n // when global drop is on, let the document-level handler own drops\n return;\n }\n return makeDragHandlers(form, add);\n }, [add, globalDrop, makeDragHandlers]);\n\n useEffect(() => {\n if (!globalDrop) {\n return;\n }\n return makeDragHandlers(document, add);\n }, [add, globalDrop, makeDragHandlers]);\n\n useEffect(\n () => () => {\n if (!usingProvider) {\n for (const f of filesRef.current) {\n if (f.url) {\n URL.revokeObjectURL(f.url);\n }\n }\n }\n },\n [usingProvider]\n );\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n if (event.currentTarget.files) {\n add(event.currentTarget.files);\n }\n // Reset input value to allow selecting files that were previously removed\n event.currentTarget.value = \"\";\n },\n [add]\n );\n\n const attachmentsCtx = useMemo<AttachmentsContext>(\n () => ({\n add,\n clear: clearAttachments,\n fileInputRef: inputRef,\n files: files.map((item) => ({ ...item, id: item.id })),\n openFileDialog,\n remove,\n }),\n [files, add, remove, clearAttachments, openFileDialog]\n );\n\n const refsCtx = useMemo<ReferencedSourcesContext>(\n () => ({\n add: (incoming: SourceDocumentUIPart[] | SourceDocumentUIPart) => {\n const array = Array.isArray(incoming) ? incoming : [incoming];\n setReferencedSources((prev) => [\n ...prev,\n ...array.map((s) => ({ ...s, id: crypto.randomUUID() })),\n ]);\n },\n clear: clearReferencedSources,\n remove: (id: string) => {\n setReferencedSources((prev) => prev.filter((s) => s.id !== id));\n },\n sources: referencedSources,\n }),\n [referencedSources, clearReferencedSources]\n );\n\n const handleSubmit: FormEventHandler<HTMLFormElement> = useCallback(\n async (event) => {\n event.preventDefault();\n\n const form = event.currentTarget;\n const text = usingProvider\n ? controller.textInput.value\n : (() => {\n const formData = new FormData(form);\n return (formData.get(\"message\") as string) || \"\";\n })();\n\n // Reset form immediately after capturing text to avoid race condition\n // where user input during async blob conversion would be lost\n if (!usingProvider) {\n form.reset();\n }\n\n try {\n // Convert blob URLs to data URLs asynchronously\n const convertedFiles: FileUIPart[] = await Promise.all(\n files.map(async ({ id: _id, ...item }) => {\n if (item.url?.startsWith(\"blob:\")) {\n const dataUrl = await convertBlobUrlToDataUrl(item.url);\n // If conversion failed, keep the original blob URL\n return {\n ...item,\n url: dataUrl ?? item.url,\n };\n }\n return item;\n })\n );\n\n const result = onSubmit({ files: convertedFiles, text }, event);\n\n // Handle both sync and async onSubmit\n if (result instanceof Promise) {\n try {\n await result;\n clear();\n if (usingProvider) {\n controller.textInput.clear();\n }\n } catch {\n // Don't clear on error - user may want to retry\n }\n } else {\n // Sync function completed without throwing, clear inputs\n clear();\n if (usingProvider) {\n controller.textInput.clear();\n }\n }\n } catch {\n // Don't clear on error - user may want to retry\n }\n },\n [usingProvider, controller, files, onSubmit, clear]\n );\n\n // Render with or without local provider\n const inner = (\n <>\n <input\n accept={accept}\n aria-label=\"Upload files\"\n className=\"hidden\"\n multiple={multiple}\n onChange={handleChange}\n ref={inputRef}\n title=\"Upload files\"\n type=\"file\"\n />\n <form\n className={cn(\"w-full\", className)}\n onSubmit={handleSubmit}\n ref={formRef}\n {...props}\n >\n <InputGroup className=\"border-border overflow-hidden has-[[data-slot=input-group-control]:focus-visible]:ring-0\">{children}</InputGroup>\n </form>\n </>\n );\n\n const withReferencedSources = (\n <LocalReferencedSourcesContext.Provider value={refsCtx}>\n {inner}\n </LocalReferencedSourcesContext.Provider>\n );\n\n // Always provide LocalAttachmentsContext so children get validated add function\n return (\n <LocalAttachmentsContext.Provider value={attachmentsCtx}>\n {withReferencedSources}\n </LocalAttachmentsContext.Provider>\n );\n};\n\nexport type PromptInputBodyProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputBody = ({\n className,\n ...props\n}: PromptInputBodyProps) => (\n <div className={cn(\"contents\", className)} {...props} />\n);\n\nexport type PromptInputTextareaProps = ComponentProps<\n typeof InputGroupTextarea\n>;\n\nexport const PromptInputTextarea = ({\n onChange,\n onKeyDown,\n className,\n placeholder = \"What would you like to know?\",\n ...props\n}: PromptInputTextareaProps) => {\n const controller = useOptionalPromptInputController();\n const attachments = usePromptInputAttachments();\n const [isComposing, setIsComposing] = useState(false);\n\n const handleKeyDown: KeyboardEventHandler<HTMLTextAreaElement> = useCallback(\n (e) => {\n // Call the external onKeyDown handler first\n onKeyDown?.(e);\n\n // If the external handler prevented default, don't run internal logic\n if (e.defaultPrevented) {\n return;\n }\n\n if (e.key === \"Enter\") {\n if (isComposing || e.nativeEvent.isComposing) {\n return;\n }\n if (e.shiftKey) {\n return;\n }\n e.preventDefault();\n\n // Check if the submit button is disabled before submitting\n const { form } = e.currentTarget;\n const submitButton = form?.querySelector(\n 'button[type=\"submit\"]'\n ) as HTMLButtonElement | null;\n if (submitButton?.disabled) {\n return;\n }\n\n form?.requestSubmit();\n }\n\n // Remove last attachment when Backspace is pressed and textarea is empty\n if (\n e.key === \"Backspace\" &&\n e.currentTarget.value === \"\" &&\n attachments.files.length > 0\n ) {\n e.preventDefault();\n const lastAttachment = attachments.files[attachments.files.length - 1];\n if (lastAttachment) {\n attachments.remove(lastAttachment.id);\n }\n }\n },\n [onKeyDown, isComposing, attachments]\n );\n\n const handlePaste: ClipboardEventHandler<HTMLTextAreaElement> = useCallback(\n (event) => {\n const items = event.clipboardData?.items;\n\n if (!items) {\n return;\n }\n\n const files: File[] = [];\n\n for (const item of items) {\n if (item.kind === \"file\") {\n const file = item.getAsFile();\n if (file) {\n files.push(file);\n }\n }\n }\n\n if (files.length > 0) {\n event.preventDefault();\n attachments.add(files);\n }\n },\n [attachments]\n );\n\n const handleCompositionEnd = useCallback(() => setIsComposing(false), []);\n const handleCompositionStart = useCallback(() => setIsComposing(true), []);\n\n const controlledProps = controller\n ? {\n onChange: (e: ChangeEvent<HTMLTextAreaElement>) => {\n controller.textInput.setInput(e.currentTarget.value);\n onChange?.(e);\n },\n value: controller.textInput.value,\n }\n : {\n onChange,\n };\n\n return (\n <InputGroupTextarea\n className={cn(\"field-sizing-content max-h-48 min-h-16\", className)}\n name=\"message\"\n onCompositionEnd={handleCompositionEnd}\n onCompositionStart={handleCompositionStart}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n placeholder={placeholder}\n {...props}\n {...controlledProps}\n />\n );\n};\n\nexport type PromptInputHeaderProps = Omit<\n ComponentProps<typeof InputGroupAddon>,\n \"align\"\n>;\n\nexport const PromptInputHeader = ({\n className,\n ...props\n}: PromptInputHeaderProps) => (\n <InputGroupAddon\n align=\"block-end\"\n className={cn(\"order-first flex-wrap gap-1\", className)}\n {...props}\n />\n);\n\nexport type PromptInputFooterProps = Omit<\n ComponentProps<typeof InputGroupAddon>,\n \"align\"\n>;\n\nexport const PromptInputFooter = ({\n className,\n ...props\n}: PromptInputFooterProps) => (\n <InputGroupAddon\n align=\"block-end\"\n className={cn(\"justify-between gap-1\", className)}\n {...props}\n />\n);\n\nexport type PromptInputToolsProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTools = ({\n className,\n ...props\n}: PromptInputToolsProps) => (\n <div\n className={cn(\"flex min-w-0 items-center gap-1\", className)}\n {...props}\n />\n);\n\nexport type PromptInputButtonTooltip =\n | string\n | {\n content: ReactNode;\n shortcut?: string;\n side?: ComponentProps<typeof TooltipContent>[\"side\"];\n };\n\nexport type PromptInputButtonProps = ComponentProps<typeof InputGroupButton> & {\n tooltip?: PromptInputButtonTooltip;\n};\n\nexport const PromptInputButton = ({\n variant = \"ghost\",\n className,\n size,\n tooltip,\n ...props\n}: PromptInputButtonProps) => {\n const newSize =\n size ?? (Children.count(props.children) > 1 ? \"sm\" : \"icon-sm\");\n\n const button = (\n <InputGroupButton\n className={cn(className)}\n size={newSize}\n type=\"button\"\n variant={variant}\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n const tooltipContent =\n typeof tooltip === \"string\" ? tooltip : tooltip.content;\n const shortcut = typeof tooltip === \"string\" ? undefined : tooltip.shortcut;\n const side = typeof tooltip === \"string\" ? \"top\" : (tooltip.side ?? \"top\");\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side={side}>\n {tooltipContent}\n {shortcut && (\n <span className=\"ml-2 text-background/70\">{shortcut}</span>\n )}\n </TooltipContent>\n </Tooltip>\n );\n};\n\nexport type PromptInputActionMenuProps = ComponentProps<typeof DropdownMenu>;\nexport const PromptInputActionMenu = (props: PromptInputActionMenuProps) => (\n <DropdownMenu modal={false} {...props} />\n);\n\nexport type PromptInputActionMenuTriggerProps = PromptInputButtonProps;\n\nexport const PromptInputActionMenuTrigger = ({\n className,\n children,\n tooltip,\n \"aria-label\": ariaLabel,\n ...props\n}: PromptInputActionMenuTriggerProps) => {\n const derivedLabel =\n ariaLabel ??\n (typeof tooltip === \"string\"\n ? tooltip\n : typeof tooltip?.content === \"string\"\n ? tooltip.content\n : undefined);\n\n return (\n <DropdownMenuTrigger asChild>\n <PromptInputButton\n aria-label={derivedLabel}\n className={className}\n tooltip={tooltip}\n {...props}\n >\n {children ?? <PlusIcon className=\"size-4\" />}\n </PromptInputButton>\n </DropdownMenuTrigger>\n );\n};\n\nexport type PromptInputActionMenuContentProps = ComponentProps<\n typeof DropdownMenuContent\n>;\nexport const PromptInputActionMenuContent = ({\n className,\n ...props\n}: PromptInputActionMenuContentProps) => (\n <DropdownMenuContent align=\"start\" className={cn(className)} {...props} />\n);\n\nexport type PromptInputActionMenuItemProps = ComponentProps<\n typeof DropdownMenuItem\n>;\nexport const PromptInputActionMenuItem = ({\n className,\n ...props\n}: PromptInputActionMenuItemProps) => (\n <DropdownMenuItem className={cn(className)} {...props} />\n);\n\n// Note: Actions that perform side-effects (like opening a file dialog)\n// are provided in opt-in modules (e.g., prompt-input-attachments).\n\nexport type PromptInputSubmitProps = ComponentProps<typeof InputGroupButton> & {\n status?: ChatStatus;\n onStop?: () => void;\n};\n\nexport const PromptInputSubmit = ({\n className,\n variant = \"default\",\n size = \"icon-sm\",\n status,\n onStop,\n onClick,\n children,\n ...props\n}: PromptInputSubmitProps) => {\n const isGenerating = status === \"submitted\" || status === \"streaming\";\n\n let Icon = <CornerDownLeftIcon className=\"size-4\" />;\n\n if (status === \"submitted\") {\n Icon = <Spinner />;\n } else if (status === \"streaming\") {\n Icon = <SquareIcon className=\"size-4\" />;\n } else if (status === \"error\") {\n Icon = <XIcon className=\"size-4\" />;\n }\n\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n if (isGenerating && onStop) {\n e.preventDefault();\n onStop();\n return;\n }\n onClick?.(e);\n },\n [isGenerating, onStop, onClick]\n );\n\n return (\n <InputGroupButton\n aria-label={isGenerating ? \"Stop\" : \"Submit\"}\n className={cn(className)}\n onClick={handleClick}\n size={size}\n type={isGenerating && onStop ? \"button\" : \"submit\"}\n variant={variant}\n {...props}\n >\n {children ?? Icon}\n </InputGroupButton>\n );\n};\n\nexport type PromptInputSelectProps = ComponentProps<typeof Select>;\n\nexport const PromptInputSelect = (props: PromptInputSelectProps) => (\n <Select {...props} />\n);\n\nexport type PromptInputSelectTriggerProps = ComponentProps<\n typeof SelectTrigger\n>;\n\nexport const PromptInputSelectTrigger = ({\n className,\n ...props\n}: PromptInputSelectTriggerProps) => (\n <SelectTrigger\n className={cn(\n \"border-none bg-transparent font-medium text-muted-foreground shadow-none transition-colors\",\n \"hover:bg-accent hover:text-foreground aria-expanded:bg-accent aria-expanded:text-foreground\",\n className\n )}\n {...props}\n />\n);\n\nexport type PromptInputSelectContentProps = ComponentProps<\n typeof SelectContent\n>;\n\nexport const PromptInputSelectContent = ({\n className,\n ...props\n}: PromptInputSelectContentProps) => (\n <SelectContent className={cn(className)} {...props} />\n);\n\nexport type PromptInputSelectItemProps = ComponentProps<typeof SelectItem>;\n\nexport const PromptInputSelectItem = ({\n className,\n ...props\n}: PromptInputSelectItemProps) => (\n <SelectItem className={cn(className)} {...props} />\n);\n\nexport type PromptInputSelectValueProps = ComponentProps<typeof SelectValue>;\n\nexport const PromptInputSelectValue = ({\n className,\n ...props\n}: PromptInputSelectValueProps) => (\n <SelectValue className={cn(className)} {...props} />\n);\n\nexport type PromptInputHoverCardProps = ComponentProps<typeof HoverCard>;\n\nexport const PromptInputHoverCard = ({\n openDelay = 0,\n closeDelay = 0,\n ...props\n}: PromptInputHoverCardProps) => (\n <HoverCard closeDelay={closeDelay} openDelay={openDelay} {...props} />\n);\n\nexport type PromptInputHoverCardTriggerProps = ComponentProps<\n typeof HoverCardTrigger\n>;\n\nexport const PromptInputHoverCardTrigger = (\n props: PromptInputHoverCardTriggerProps\n) => <HoverCardTrigger {...props} />;\n\nexport type PromptInputHoverCardContentProps = ComponentProps<\n typeof HoverCardContent\n>;\n\nexport const PromptInputHoverCardContent = ({\n align = \"start\",\n ...props\n}: PromptInputHoverCardContentProps) => (\n <HoverCardContent align={align} {...props} />\n);\n\n// ============================================================================\n// PromptInputSlotSwap\n// ============================================================================\n\nexport type PromptInputSlotSwapProps = {\n /** Shown when show=false (e.g. mic button). */\n a: ReactNode;\n /** Shown when show=true (e.g. submit button). */\n b: ReactNode;\n /** When true, b is visible; when false, a is visible. */\n show: boolean;\n className?: string;\n};\n\nexport const PromptInputSlotSwap = ({\n a,\n b,\n show,\n className,\n}: PromptInputSlotSwapProps) => (\n <div\n className={cn(\"relative inline-flex items-center justify-center\", className)}\n >\n <div\n aria-hidden={show}\n inert={show}\n className={cn(\n \"transition-all duration-200 ease-out\",\n show ? \"pointer-events-none scale-75 opacity-0\" : \"scale-100 opacity-100\"\n )}\n >\n {a}\n </div>\n <div\n aria-hidden={!show}\n inert={!show}\n className={cn(\n \"absolute transition-all duration-200 ease-out\",\n show ? \"scale-100 opacity-100\" : \"pointer-events-none scale-75 opacity-0\"\n )}\n >\n {b}\n </div>\n </div>\n);\n\nexport type PromptInputTabsListProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTabsList = ({\n className,\n ...props\n}: PromptInputTabsListProps) => <div className={cn(className)} {...props} />;\n\nexport type PromptInputTabProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTab = ({\n className,\n ...props\n}: PromptInputTabProps) => <div className={cn(className)} {...props} />;\n\nexport type PromptInputTabLabelProps = HTMLAttributes<HTMLHeadingElement>;\n\nexport const PromptInputTabLabel = ({\n className,\n children,\n ...props\n}: PromptInputTabLabelProps) => (\n <h3\n className={cn(\n \"mb-2 px-3 font-medium text-muted-foreground text-xs\",\n className\n )}\n {...props}\n >\n {children}\n </h3>\n);\n\nexport type PromptInputTabBodyProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTabBody = ({\n className,\n ...props\n}: PromptInputTabBodyProps) => (\n <div className={cn(\"space-y-1\", className)} {...props} />\n);\n\nexport type PromptInputTabItemProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTabItem = ({\n className,\n ...props\n}: PromptInputTabItemProps) => (\n <div\n className={cn(\n \"flex items-center gap-2 px-3 py-2 text-xs hover:bg-accent\",\n className\n )}\n {...props}\n />\n);\n\nexport type PromptInputCommandProps = ComponentProps<typeof Command>;\n\nexport const PromptInputCommand = ({\n className,\n ...props\n}: PromptInputCommandProps) => <Command className={cn(className)} {...props} />;\n\nexport type PromptInputCommandInputProps = ComponentProps<typeof CommandInput>;\n\nexport const PromptInputCommandInput = ({\n className,\n ...props\n}: PromptInputCommandInputProps) => (\n <CommandInput className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandListProps = ComponentProps<typeof CommandList>;\n\nexport const PromptInputCommandList = ({\n className,\n ...props\n}: PromptInputCommandListProps) => (\n <CommandList className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandEmptyProps = ComponentProps<typeof CommandEmpty>;\n\nexport const PromptInputCommandEmpty = ({\n className,\n ...props\n}: PromptInputCommandEmptyProps) => (\n <CommandEmpty className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandGroupProps = ComponentProps<typeof CommandGroup>;\n\nexport const PromptInputCommandGroup = ({\n className,\n ...props\n}: PromptInputCommandGroupProps) => (\n <CommandGroup className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandItemProps = ComponentProps<typeof CommandItem>;\n\nexport const PromptInputCommandItem = ({\n className,\n ...props\n}: PromptInputCommandItemProps) => (\n <CommandItem className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandSeparatorProps = ComponentProps<\n typeof CommandSeparator\n>;\n\nexport const PromptInputCommandSeparator = ({\n className,\n ...props\n}: PromptInputCommandSeparatorProps) => (\n <CommandSeparator className={cn(className)} {...props} />\n);\n"],"names":["convertBlobUrlToDataUrl","url","blob","resolve","reader","captureScreenshot","stream","video","reject","width","height","canvas","context","timestamp","track","PromptInputController","createContext","ProviderAttachmentsContext","usePromptInputController","ctx","useContext","useOptionalPromptInputController","useProviderAttachments","useOptionalProviderAttachments","PromptInputProvider","initialTextInput","children","textInput","setTextInput","useState","clearInput","useCallback","attachmentFiles","setAttachmentFiles","fileInputRef","useRef","openRef","add","files","incoming","prev","file","remove","id","found","f","clear","attachmentsRef","useEffect","openFileDialog","attachments","useMemo","__registerFileInput","ref","open","controller","jsx","LocalAttachmentsContext","usePromptInputAttachments","provider","LocalReferencedSourcesContext","usePromptInputReferencedSources","PromptInputActionAddAttachments","label","props","handleSelect","e","jsxs","DropdownMenuItem","ImageIcon","PromptInputActionAddScreenshot","onSelect","event","screenshot","error","Monitor","PromptInput","className","accept","multiple","globalDrop","syncHiddenInput","maxFiles","maxFileSize","onError","onSubmit","usingProvider","inputRef","formRef","items","setItems","referencedSources","setReferencedSources","filesRef","openFileDialogLocal","matchesAccept","s","pattern","prefix","addLocal","fileList","accepted","withinSize","sized","capacity","capped","next","removeLocal","addWithProviderValidation","currentCount","clearAttachments","clearReferencedSources","makeDragHandlers","target","onAddFiles","onDragOver","onDrop","drag","form","handleChange","attachmentsCtx","item","refsCtx","array","handleSubmit","text","convertedFiles","_id","dataUrl","result","inner","Fragment","cn","InputGroup","withReferencedSources","PromptInputBody","PromptInputTextarea","onChange","onKeyDown","placeholder","isComposing","setIsComposing","handleKeyDown","lastAttachment","handlePaste","handleCompositionEnd","handleCompositionStart","controlledProps","InputGroupTextarea","PromptInputHeader","InputGroupAddon","PromptInputFooter","PromptInputTools","PromptInputButton","variant","size","tooltip","newSize","Children","button","InputGroupButton","tooltipContent","shortcut","side","Tooltip","TooltipTrigger","TooltipContent","PromptInputActionMenu","DropdownMenu","PromptInputActionMenuTrigger","ariaLabel","derivedLabel","DropdownMenuTrigger","PlusIcon","PromptInputActionMenuContent","DropdownMenuContent","PromptInputActionMenuItem","PromptInputSubmit","status","onStop","onClick","isGenerating","Icon","CornerDownLeftIcon","Spinner","SquareIcon","XIcon","handleClick","PromptInputSelect","Select","PromptInputSelectTrigger","SelectTrigger","PromptInputSelectContent","SelectContent","PromptInputSelectItem","SelectItem","PromptInputSelectValue","SelectValue","PromptInputHoverCard","openDelay","closeDelay","HoverCard","PromptInputHoverCardTrigger","HoverCardTrigger","PromptInputHoverCardContent","align","HoverCardContent","PromptInputSlotSwap","a","b","show","PromptInputTabsList","PromptInputTab","PromptInputTabLabel","PromptInputTabBody","PromptInputTabItem","PromptInputCommand","Command","PromptInputCommandInput","CommandInput","PromptInputCommandList","CommandList","PromptInputCommandEmpty","CommandEmpty","PromptInputCommandGroup","CommandGroup","PromptInputCommandItem","CommandItem","PromptInputCommandSeparator","CommandSeparator"],"mappings":"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"}