@tetrascience-npm/tetrascience-react-ui 0.7.0-beta.129.1 → 0.7.0-beta.131.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1042) hide show
  1. package/README.md +49 -0
  2. package/dist/ai/attachments.cjs +2 -0
  3. package/dist/ai/attachments.cjs.map +1 -0
  4. package/dist/ai/attachments.js +224 -0
  5. package/dist/ai/attachments.js.map +1 -0
  6. package/dist/ai/chain-of-thought.cjs +2 -0
  7. package/dist/ai/chain-of-thought.cjs.map +1 -0
  8. package/dist/ai/chain-of-thought.js +145 -0
  9. package/dist/ai/chain-of-thought.js.map +1 -0
  10. package/dist/ai/confirmation.cjs +2 -0
  11. package/dist/ai/confirmation.cjs.map +1 -0
  12. package/dist/ai/confirmation.js +109 -0
  13. package/dist/ai/confirmation.js.map +1 -0
  14. package/dist/ai/context.cjs +2 -0
  15. package/dist/ai/context.cjs.map +1 -0
  16. package/dist/ai/context.js +267 -0
  17. package/dist/ai/context.js.map +1 -0
  18. package/dist/ai/conversation.cjs +4 -0
  19. package/dist/ai/conversation.cjs.map +1 -0
  20. package/dist/ai/conversation.js +108 -0
  21. package/dist/ai/conversation.js.map +1 -0
  22. package/dist/ai/inline-citation.cjs +2 -0
  23. package/dist/ai/inline-citation.cjs.map +1 -0
  24. package/dist/ai/inline-citation.js +182 -0
  25. package/dist/ai/inline-citation.js.map +1 -0
  26. package/dist/ai/message.cjs +2 -0
  27. package/dist/ai/message.cjs.map +1 -0
  28. package/dist/ai/message.js +237 -0
  29. package/dist/ai/message.js.map +1 -0
  30. package/dist/ai/model-selector.cjs +2 -0
  31. package/dist/ai/model-selector.cjs.map +1 -0
  32. package/dist/ai/model-selector.js +77 -0
  33. package/dist/ai/model-selector.js.map +1 -0
  34. package/dist/ai/prompt-input.cjs +2 -0
  35. package/dist/ai/prompt-input.cjs.map +1 -0
  36. package/dist/ai/prompt-input.js +776 -0
  37. package/dist/ai/prompt-input.js.map +1 -0
  38. package/dist/ai/queue.cjs +2 -0
  39. package/dist/ai/queue.cjs.map +1 -0
  40. package/dist/ai/queue.js +209 -0
  41. package/dist/ai/queue.js.map +1 -0
  42. package/dist/ai/reasoning.cjs +2 -0
  43. package/dist/ai/reasoning.cjs.map +1 -0
  44. package/dist/ai/reasoning.js +129 -0
  45. package/dist/ai/reasoning.js.map +1 -0
  46. package/dist/ai/shimmer.cjs +2 -0
  47. package/dist/ai/shimmer.cjs.map +1 -0
  48. package/dist/ai/shimmer.js +49 -0
  49. package/dist/ai/shimmer.js.map +1 -0
  50. package/dist/ai/sources.cjs +2 -0
  51. package/dist/ai/sources.cjs.map +1 -0
  52. package/dist/ai/sources.js +54 -0
  53. package/dist/ai/sources.js.map +1 -0
  54. package/dist/ai/speech-input.cjs +2 -0
  55. package/dist/ai/speech-input.cjs.map +1 -0
  56. package/dist/ai/speech-input.js +123 -0
  57. package/dist/ai/speech-input.js.map +1 -0
  58. package/dist/ai/stream-status.cjs +2 -0
  59. package/dist/ai/stream-status.cjs.map +1 -0
  60. package/dist/ai/stream-status.js +108 -0
  61. package/dist/ai/stream-status.js.map +1 -0
  62. package/dist/ai/suggestion.cjs +2 -0
  63. package/dist/ai/suggestion.cjs.map +1 -0
  64. package/dist/ai/suggestion.js +38 -0
  65. package/dist/ai/suggestion.js.map +1 -0
  66. package/dist/ai/task.cjs +2 -0
  67. package/dist/ai/task.cjs.map +1 -0
  68. package/dist/ai/task.js +101 -0
  69. package/dist/ai/task.js.map +1 -0
  70. package/dist/ai/tool.cjs +2 -0
  71. package/dist/ai/tool.cjs.map +1 -0
  72. package/dist/ai/tool.js +139 -0
  73. package/dist/ai/tool.js.map +1 -0
  74. package/dist/charts/AreaPlot.cjs +2 -0
  75. package/dist/charts/AreaPlot.cjs.map +1 -0
  76. package/dist/charts/AreaPlot.js +5 -0
  77. package/dist/charts/AreaPlot.js.map +1 -0
  78. package/dist/charts/BarChart.cjs +2 -0
  79. package/dist/charts/BarChart.cjs.map +1 -0
  80. package/dist/charts/BarChart.js +5 -0
  81. package/dist/charts/BarChart.js.map +1 -0
  82. package/dist/charts/BoxPlot.cjs +2 -0
  83. package/dist/charts/BoxPlot.cjs.map +1 -0
  84. package/dist/charts/BoxPlot.js +5 -0
  85. package/dist/charts/BoxPlot.js.map +1 -0
  86. package/dist/charts/ChartTooltip.cjs +2 -0
  87. package/dist/charts/ChartTooltip.cjs.map +1 -0
  88. package/dist/charts/ChartTooltip.js +8 -0
  89. package/dist/charts/ChartTooltip.js.map +1 -0
  90. package/dist/charts/Chromatogram.cjs +2 -0
  91. package/dist/charts/Chromatogram.cjs.map +1 -0
  92. package/dist/charts/Chromatogram.js +5 -0
  93. package/dist/charts/Chromatogram.js.map +1 -0
  94. package/dist/charts/Electropherogram.cjs +2 -0
  95. package/dist/charts/Electropherogram.cjs.map +1 -0
  96. package/dist/charts/Electropherogram.js +5 -0
  97. package/dist/charts/Electropherogram.js.map +1 -0
  98. package/dist/charts/Histogram.cjs +2 -0
  99. package/dist/charts/Histogram.cjs.map +1 -0
  100. package/dist/charts/Histogram.js +5 -0
  101. package/dist/charts/Histogram.js.map +1 -0
  102. package/dist/charts/LinePlot.cjs +2 -0
  103. package/dist/charts/LinePlot.cjs.map +1 -0
  104. package/dist/charts/LinePlot.js +5 -0
  105. package/dist/charts/LinePlot.js.map +1 -0
  106. package/dist/charts/PieChart.cjs +2 -0
  107. package/dist/charts/PieChart.cjs.map +1 -0
  108. package/dist/charts/PieChart.js +5 -0
  109. package/dist/charts/PieChart.js.map +1 -0
  110. package/dist/charts/PlateMap.cjs +2 -0
  111. package/dist/charts/PlateMap.cjs.map +1 -0
  112. package/dist/charts/PlateMap.js +5 -0
  113. package/dist/charts/PlateMap.js.map +1 -0
  114. package/dist/charts/ScatterPlot.cjs +2 -0
  115. package/dist/charts/ScatterPlot.cjs.map +1 -0
  116. package/dist/charts/ScatterPlot.js +5 -0
  117. package/dist/charts/ScatterPlot.js.map +1 -0
  118. package/dist/charts/ScatterPlotInteractive.cjs +2 -0
  119. package/dist/charts/ScatterPlotInteractive.cjs.map +1 -0
  120. package/dist/charts/ScatterPlotInteractive.js +14 -0
  121. package/dist/charts/ScatterPlotInteractive.js.map +1 -0
  122. package/dist/charts/StackedChromatogram.cjs +2 -0
  123. package/dist/charts/StackedChromatogram.cjs.map +1 -0
  124. package/dist/charts/StackedChromatogram.js +7 -0
  125. package/dist/charts/StackedChromatogram.js.map +1 -0
  126. package/dist/components/ai/attachments.d.ts +54 -0
  127. package/dist/components/ai/chain-of-thought.d.ts +56 -0
  128. package/dist/components/ai/confirmation.d.ts +47 -0
  129. package/dist/components/ai/context.d.ts +40 -0
  130. package/dist/components/ai/conversation.d.ts +23 -0
  131. package/dist/components/ai/inline-citation.d.ts +38 -0
  132. package/dist/components/ai/message.d.ts +37 -0
  133. package/dist/components/ai/model-selector.d.ts +36 -0
  134. package/dist/components/ai/prompt-input.d.ts +158 -0
  135. package/dist/components/ai/queue.d.ts +72 -0
  136. package/dist/components/ai/reasoning.d.ts +26 -0
  137. package/dist/components/ai/shimmer.d.ts +17 -0
  138. package/dist/components/ai/sources.d.ts +12 -0
  139. package/dist/components/ai/speech-input.d.ts +54 -0
  140. package/dist/components/ai/stream-status.d.ts +66 -0
  141. package/dist/components/ai/streamdown-code-plugin.d.ts +2 -0
  142. package/dist/components/ai/streamdown-plugins.d.ts +2 -0
  143. package/dist/components/ai/suggestion.d.ts +9 -0
  144. package/dist/components/ai/task.d.ts +16 -0
  145. package/dist/components/ai/tool.d.ts +33 -0
  146. package/dist/components/ai/use-streamdown-plugins.d.ts +8 -0
  147. package/dist/components/charts/AreaPlot/AreaPlot.cjs +1 -1
  148. package/dist/components/charts/AreaPlot/AreaPlot.d.ts +39 -0
  149. package/dist/components/charts/AreaPlot/index.d.ts +2 -0
  150. package/dist/components/charts/BarChart/BarChart.cjs +1 -1
  151. package/dist/components/charts/BarChart/BarChart.d.ts +44 -0
  152. package/dist/components/charts/BarChart/index.d.ts +2 -0
  153. package/dist/components/charts/BoxPlot/BoxPlot.cjs +1 -1
  154. package/dist/components/charts/BoxPlot/BoxPlot.d.ts +33 -0
  155. package/dist/components/charts/BoxPlot/index.d.ts +2 -0
  156. package/dist/components/charts/ChartTooltip/ChartTooltip.d.ts +71 -0
  157. package/dist/components/charts/ChartTooltip/index.d.ts +2 -0
  158. package/dist/components/charts/ChartTooltip/lines.d.ts +54 -0
  159. package/dist/components/charts/Chromatogram/Chromatogram.d.ts +5 -0
  160. package/dist/components/charts/Chromatogram/annotations.cjs +1 -1
  161. package/dist/components/charts/Chromatogram/annotations.d.ts +50 -0
  162. package/dist/components/charts/Chromatogram/boundaryMarkers.cjs +1 -1
  163. package/dist/components/charts/Chromatogram/boundaryMarkers.d.ts +14 -0
  164. package/dist/components/charts/Chromatogram/constants.d.ts +46 -0
  165. package/dist/components/charts/Chromatogram/dataProcessing.d.ts +49 -0
  166. package/dist/components/charts/Chromatogram/index.d.ts +2 -0
  167. package/dist/components/charts/Chromatogram/peakDetection.d.ts +33 -0
  168. package/dist/components/charts/Chromatogram/plotBuilder.d.ts +58 -0
  169. package/dist/components/charts/Chromatogram/regionOverlays.cjs +1 -1
  170. package/dist/components/charts/Chromatogram/regionOverlays.d.ts +9 -0
  171. package/dist/components/charts/Chromatogram/types.d.ts +258 -0
  172. package/dist/components/charts/Electropherogram/Electropherogram.cjs +1 -1
  173. package/dist/components/charts/Electropherogram/Electropherogram.d.ts +22 -0
  174. package/dist/components/charts/Electropherogram/index.d.ts +2 -0
  175. package/dist/components/charts/Histogram/Histogram.cjs +1 -1
  176. package/dist/components/charts/Histogram/Histogram.d.ts +36 -0
  177. package/dist/components/charts/Histogram/index.d.ts +2 -0
  178. package/dist/components/charts/LinePlot/LinePlot.cjs +1 -1
  179. package/dist/components/charts/LinePlot/LinePlot.d.ts +45 -0
  180. package/dist/components/charts/LinePlot/index.d.ts +2 -0
  181. package/dist/components/charts/PieChart/PieChart.d.ts +20 -0
  182. package/dist/components/charts/PieChart/index.d.ts +2 -0
  183. package/dist/components/charts/PlateMap/PlateMap.cjs +1 -1
  184. package/dist/components/charts/PlateMap/PlateMap.cjs.map +1 -1
  185. package/dist/components/charts/PlateMap/PlateMap.d.ts +29 -0
  186. package/dist/components/charts/PlateMap/PlateMap.js +1 -1
  187. package/dist/components/charts/PlateMap/constants.d.ts +75 -0
  188. package/dist/components/charts/PlateMap/index.d.ts +2 -0
  189. package/dist/components/charts/PlateMap/types.d.ts +322 -0
  190. package/dist/components/charts/PlateMap/utils.d.ts +133 -0
  191. package/dist/components/charts/ScatterPlot/ScatterPlot.cjs +1 -1
  192. package/dist/components/charts/ScatterPlot/ScatterPlot.d.ts +43 -0
  193. package/dist/components/charts/ScatterPlot/index.d.ts +2 -0
  194. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.d.ts +25 -0
  195. package/dist/components/charts/ScatterPlotInteractive/constants.d.ts +50 -0
  196. package/dist/components/charts/ScatterPlotInteractive/index.d.ts +3 -0
  197. package/dist/components/charts/ScatterPlotInteractive/types.d.ts +226 -0
  198. package/dist/components/charts/ScatterPlotInteractive/utils.d.ts +72 -0
  199. package/dist/components/charts/StackedChromatogram/StackedChromatogram.d.ts +3 -0
  200. package/dist/components/charts/StackedChromatogram/index.d.ts +3 -0
  201. package/dist/components/charts/StackedChromatogram/transforms.d.ts +9 -0
  202. package/dist/components/charts/StackedChromatogram/types.d.ts +26 -0
  203. package/dist/components/charts/plotly-loader.cjs +1 -1
  204. package/dist/components/charts/plotly-loader.cjs.map +1 -1
  205. package/dist/components/charts/plotly-loader.d.ts +29 -0
  206. package/dist/components/composed/AssistantLayout/AssistantLayout.cjs +1 -1
  207. package/dist/components/composed/AssistantLayout/AssistantLayout.cjs.map +1 -1
  208. package/dist/components/composed/AssistantLayout/AssistantLayout.d.ts +63 -0
  209. package/dist/components/composed/AssistantLayout/AssistantLayout.js +2 -2
  210. package/dist/components/composed/AssistantLayout/dockLayout.d.ts +15 -0
  211. package/dist/components/composed/AssistantLayout/index.d.ts +3 -0
  212. package/dist/components/composed/Chat/Chat.cjs +1 -1
  213. package/dist/components/composed/Chat/Chat.cjs.map +1 -1
  214. package/dist/components/composed/Chat/Chat.d.ts +35 -0
  215. package/dist/components/composed/Chat/Chat.js +7 -7
  216. package/dist/components/composed/Chat/index.d.ts +2 -0
  217. package/dist/components/composed/ConfirmDialog/ConfirmDialog.cjs +1 -1
  218. package/dist/components/composed/ConfirmDialog/ConfirmDialog.cjs.map +1 -1
  219. package/dist/components/composed/ConfirmDialog/ConfirmDialog.d.ts +23 -0
  220. package/dist/components/composed/ConfirmDialog/ConfirmDialog.js +4 -4
  221. package/dist/components/composed/ConfirmDialog/index.d.ts +1 -0
  222. package/dist/components/composed/DataAppShell/CollapseButton.cjs +1 -1
  223. package/dist/components/composed/DataAppShell/CollapseButton.cjs.map +1 -1
  224. package/dist/components/composed/DataAppShell/CollapseButton.d.ts +23 -0
  225. package/dist/components/composed/DataAppShell/CollapseButton.js +2 -2
  226. package/dist/components/composed/DataAppShell/DataAppShell.cjs +1 -1
  227. package/dist/components/composed/DataAppShell/DataAppShell.cjs.map +1 -1
  228. package/dist/components/composed/DataAppShell/DataAppShell.d.ts +88 -0
  229. package/dist/components/composed/DataAppShell/DataAppShell.js +5 -5
  230. package/dist/components/composed/DataAppShell/PrimaryNav.cjs +1 -1
  231. package/dist/components/composed/DataAppShell/PrimaryNav.cjs.map +1 -1
  232. package/dist/components/composed/DataAppShell/PrimaryNav.d.ts +64 -0
  233. package/dist/components/composed/DataAppShell/PrimaryNav.js +2 -2
  234. package/dist/components/composed/DataAppShell/RightPanel.cjs +1 -1
  235. package/dist/components/composed/DataAppShell/RightPanel.cjs.map +1 -1
  236. package/dist/components/composed/DataAppShell/RightPanel.d.ts +95 -0
  237. package/dist/components/composed/DataAppShell/RightPanel.js +2 -2
  238. package/dist/components/composed/DataAppShell/SecondaryNav.cjs +1 -1
  239. package/dist/components/composed/DataAppShell/SecondaryNav.cjs.map +1 -1
  240. package/dist/components/composed/DataAppShell/SecondaryNav.d.ts +63 -0
  241. package/dist/components/composed/DataAppShell/SecondaryNav.js +3 -3
  242. package/dist/components/composed/DataAppShell/ShellContext.d.ts +20 -0
  243. package/dist/components/composed/DataAppShell/index.d.ts +12 -0
  244. package/dist/components/composed/EmptyState/EmptyState.d.ts +12 -0
  245. package/dist/components/composed/EmptyState/index.d.ts +2 -0
  246. package/dist/components/composed/FormPatterns/FormSection.cjs +1 -1
  247. package/dist/components/composed/FormPatterns/FormSection.cjs.map +1 -1
  248. package/dist/components/composed/FormPatterns/FormSection.d.ts +7 -0
  249. package/dist/components/composed/FormPatterns/FormSection.js +2 -2
  250. package/dist/components/composed/FormPatterns/index.d.ts +1 -0
  251. package/dist/components/composed/MoleculeStructure/MoleculeStructure.cjs +1 -1
  252. package/dist/components/composed/MoleculeStructure/MoleculeStructure.cjs.map +1 -1
  253. package/dist/components/composed/MoleculeStructure/MoleculeStructure.d.ts +43 -0
  254. package/dist/components/composed/MoleculeStructure/MoleculeStructure.js +1 -1
  255. package/dist/components/composed/MoleculeStructure/index.d.ts +3 -0
  256. package/dist/components/composed/MoleculeStructure/rdkit-loader.cjs +1 -1
  257. package/dist/components/composed/MoleculeStructure/rdkit-loader.cjs.map +1 -1
  258. package/dist/components/composed/MoleculeStructure/rdkit-loader.d.ts +104 -0
  259. package/dist/components/composed/MoleculeStructure/use-rdkit.d.ts +29 -0
  260. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs +1 -1
  261. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs.map +1 -1
  262. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.d.ts +12 -0
  263. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js +4 -4
  264. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs +1 -1
  265. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs.map +1 -1
  266. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.d.ts +22 -0
  267. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js +2 -2
  268. package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs +1 -1
  269. package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs.map +1 -1
  270. package/dist/components/composed/PlateMapEditor/PlateMapEditor.d.ts +106 -0
  271. package/dist/components/composed/PlateMapEditor/PlateMapEditor.js +2 -2
  272. package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs +1 -1
  273. package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs.map +1 -1
  274. package/dist/components/composed/PlateMapEditor/PlateMapForm.d.ts +30 -0
  275. package/dist/components/composed/PlateMapEditor/PlateMapForm.js +1 -1
  276. package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs +1 -1
  277. package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs.map +1 -1
  278. package/dist/components/composed/PlateMapEditor/PlateMapGrid.d.ts +64 -0
  279. package/dist/components/composed/PlateMapEditor/PlateMapGrid.js +1 -1
  280. package/dist/components/composed/PlateMapEditor/PlateMapManifest.d.ts +29 -0
  281. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs +1 -1
  282. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs.map +1 -1
  283. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.d.ts +19 -0
  284. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js +4 -4
  285. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.d.ts +73 -0
  286. package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs +1 -1
  287. package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs.map +1 -1
  288. package/dist/components/composed/PlateMapEditor/PlateZoomControl.d.ts +12 -0
  289. package/dist/components/composed/PlateMapEditor/PlateZoomControl.js +2 -2
  290. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs +1 -1
  291. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs.map +1 -1
  292. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.d.ts +13 -0
  293. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.js +4 -4
  294. package/dist/components/composed/PlateMapEditor/WellLegend.cjs +1 -1
  295. package/dist/components/composed/PlateMapEditor/WellLegend.cjs.map +1 -1
  296. package/dist/components/composed/PlateMapEditor/WellLegend.d.ts +21 -0
  297. package/dist/components/composed/PlateMapEditor/WellLegend.js +2 -2
  298. package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs +1 -1
  299. package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs.map +1 -1
  300. package/dist/components/composed/PlateMapEditor/WellManifestTable.d.ts +46 -0
  301. package/dist/components/composed/PlateMapEditor/WellManifestTable.js +9 -9
  302. package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs +1 -1
  303. package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs.map +1 -1
  304. package/dist/components/composed/PlateMapEditor/WellMetadataForm.d.ts +17 -0
  305. package/dist/components/composed/PlateMapEditor/WellMetadataForm.js +7 -7
  306. package/dist/components/composed/PlateMapEditor/autoFill.d.ts +26 -0
  307. package/dist/components/composed/PlateMapEditor/csvPlateTriage.d.ts +4 -0
  308. package/dist/components/composed/PlateMapEditor/helpers.d.ts +2 -0
  309. package/dist/components/composed/PlateMapEditor/index.d.ts +31 -0
  310. package/dist/components/composed/PlateMapEditor/types.d.ts +137 -0
  311. package/dist/components/composed/PlateMapEditor/wellGrid.d.ts +12 -0
  312. package/dist/components/composed/ProcessFlow/ProcessFlow.d.ts +32 -0
  313. package/dist/components/composed/ProcessFlow/ProcessFlow.utils.d.ts +86 -0
  314. package/dist/components/composed/ProcessFlow/index.d.ts +1 -0
  315. package/dist/components/composed/RichListItem/RichListItem.cjs +1 -1
  316. package/dist/components/composed/RichListItem/RichListItem.cjs.map +1 -1
  317. package/dist/components/composed/RichListItem/RichListItem.d.ts +22 -0
  318. package/dist/components/composed/RichListItem/RichListItem.js +2 -2
  319. package/dist/components/composed/RichListItem/index.d.ts +2 -0
  320. package/dist/components/composed/StatCard/StatCard.cjs +1 -1
  321. package/dist/components/composed/StatCard/StatCard.cjs.map +1 -1
  322. package/dist/components/composed/StatCard/StatCard.d.ts +11 -0
  323. package/dist/components/composed/StatCard/StatCard.js +1 -1
  324. package/dist/components/composed/StatCard/index.d.ts +1 -0
  325. package/dist/components/composed/TdpSearch/TdpSearch.cjs +1 -1
  326. package/dist/components/composed/TdpSearch/TdpSearch.cjs.map +1 -1
  327. package/dist/components/composed/TdpSearch/TdpSearch.d.ts +21 -0
  328. package/dist/components/composed/TdpSearch/TdpSearch.js +14 -13
  329. package/dist/components/composed/TdpSearch/TdpSearch.mocks.d.ts +5 -0
  330. package/dist/components/composed/TdpSearch/components/DefaultFilters.cjs +1 -1
  331. package/dist/components/composed/TdpSearch/components/DefaultFilters.cjs.map +1 -1
  332. package/dist/components/composed/TdpSearch/components/DefaultFilters.d.ts +3 -0
  333. package/dist/components/composed/TdpSearch/components/DefaultFilters.js +1 -1
  334. package/dist/components/composed/TdpSearch/components/DefaultResults.cjs +1 -1
  335. package/dist/components/composed/TdpSearch/components/DefaultResults.cjs.map +1 -1
  336. package/dist/components/composed/TdpSearch/components/DefaultResults.d.ts +3 -0
  337. package/dist/components/composed/TdpSearch/components/DefaultResults.js +2 -2
  338. package/dist/components/composed/TdpSearch/components/DefaultSearchBar.cjs +1 -1
  339. package/dist/components/composed/TdpSearch/components/DefaultSearchBar.cjs.map +1 -1
  340. package/dist/components/composed/TdpSearch/components/DefaultSearchBar.d.ts +3 -0
  341. package/dist/components/composed/TdpSearch/components/DefaultSearchBar.js +2 -2
  342. package/dist/components/composed/TdpSearch/constants.d.ts +3 -0
  343. package/dist/components/composed/TdpSearch/hooks/useSearch.d.ts +2 -0
  344. package/dist/components/composed/TdpSearch/hooks/useTdpCredentials.d.ts +14 -0
  345. package/dist/components/composed/TdpSearch/index.d.ts +3 -0
  346. package/dist/components/composed/TdpSearch/types.d.ts +128 -0
  347. package/dist/components/composed/TdpSearch/utils.d.ts +3 -0
  348. package/dist/components/composed/TopBar/TopBar.d.ts +25 -0
  349. package/dist/components/composed/TopBar/index.d.ts +2 -0
  350. package/dist/components/composed/UserMenu/UserMenu.cjs +1 -1
  351. package/dist/components/composed/UserMenu/UserMenu.cjs.map +1 -1
  352. package/dist/components/composed/UserMenu/UserMenu.d.ts +53 -0
  353. package/dist/components/composed/UserMenu/UserMenu.js +2 -2
  354. package/dist/components/composed/UserMenu/index.d.ts +2 -0
  355. package/dist/components/composed/tdp-link.d.ts +110 -0
  356. package/dist/components/composed/tdp-url.d.ts +68 -0
  357. package/dist/components/ui/accordion.d.ts +7 -0
  358. package/dist/components/ui/alert-dialog.d.ts +18 -0
  359. package/dist/components/ui/alert.d.ts +10 -0
  360. package/dist/components/ui/aspect-ratio.d.ts +3 -0
  361. package/dist/components/ui/avatar.d.ts +11 -0
  362. package/dist/components/ui/badge.d.ts +9 -0
  363. package/dist/components/ui/banner.d.ts +19 -0
  364. package/dist/components/ui/breadcrumb.d.ts +11 -0
  365. package/dist/components/ui/button-group.d.ts +11 -0
  366. package/dist/components/ui/button.d.ts +10 -0
  367. package/dist/components/ui/calendar.d.ts +10 -0
  368. package/dist/components/ui/card.d.ts +11 -0
  369. package/dist/components/ui/carousel.d.ts +28 -0
  370. package/dist/components/ui/checkbox.d.ts +4 -0
  371. package/dist/components/ui/code-block.d.ts +45 -0
  372. package/dist/components/ui/code-editor.d.ts +18 -0
  373. package/dist/components/ui/collapsible.d.ts +5 -0
  374. package/dist/components/ui/combobox.d.ts +24 -0
  375. package/dist/components/ui/command.d.ts +18 -0
  376. package/dist/components/ui/context-menu.d.ts +31 -0
  377. package/dist/components/ui/data-table/data-table-column-toggle.cjs +1 -1
  378. package/dist/components/ui/data-table/data-table-column-toggle.cjs.map +1 -1
  379. package/dist/components/ui/data-table/data-table-column-toggle.d.ts +6 -0
  380. package/dist/components/ui/data-table/data-table-column-toggle.js +1 -1
  381. package/dist/components/ui/data-table/data-table-filter.cjs +1 -1
  382. package/dist/components/ui/data-table/data-table-filter.cjs.map +1 -1
  383. package/dist/components/ui/data-table/data-table-filter.d.ts +9 -0
  384. package/dist/components/ui/data-table/data-table-filter.js +3 -3
  385. package/dist/components/ui/data-table/data-table-group.cjs +1 -1
  386. package/dist/components/ui/data-table/data-table-group.cjs.map +1 -1
  387. package/dist/components/ui/data-table/data-table-group.d.ts +9 -0
  388. package/dist/components/ui/data-table/data-table-group.js +2 -2
  389. package/dist/components/ui/data-table/data-table-pagination.cjs +1 -1
  390. package/dist/components/ui/data-table/data-table-pagination.cjs.map +1 -1
  391. package/dist/components/ui/data-table/data-table-pagination.d.ts +7 -0
  392. package/dist/components/ui/data-table/data-table-pagination.js +2 -2
  393. package/dist/components/ui/data-table/data-table.cjs +1 -1
  394. package/dist/components/ui/data-table/data-table.cjs.map +1 -1
  395. package/dist/components/ui/data-table/data-table.d.ts +82 -0
  396. package/dist/components/ui/data-table/data-table.js +1 -1
  397. package/dist/components/ui/data-table/index.d.ts +5 -0
  398. package/dist/components/ui/dialog.d.ts +18 -0
  399. package/dist/components/ui/dropdown-menu.d.ts +29 -0
  400. package/dist/components/ui/field.d.ts +24 -0
  401. package/dist/components/ui/hover-card.d.ts +6 -0
  402. package/dist/components/ui/input-group.d.ts +16 -0
  403. package/dist/components/ui/input.d.ts +3 -0
  404. package/dist/components/ui/item.d.ts +23 -0
  405. package/dist/components/ui/kbd.d.ts +3 -0
  406. package/dist/components/ui/label.d.ts +4 -0
  407. package/dist/components/ui/menubar.d.ts +30 -0
  408. package/dist/components/ui/navigation-menu.d.ts +14 -0
  409. package/dist/components/ui/popover.d.ts +7 -0
  410. package/dist/components/ui/progress.d.ts +4 -0
  411. package/dist/components/ui/radio-group.d.ts +5 -0
  412. package/dist/components/ui/resizable.d.ts +25 -0
  413. package/dist/components/ui/scroll-area.d.ts +5 -0
  414. package/dist/components/ui/select.d.ts +15 -0
  415. package/dist/components/ui/separator.d.ts +4 -0
  416. package/dist/components/ui/sheet.d.ts +14 -0
  417. package/dist/components/ui/sidebar.d.ts +69 -0
  418. package/dist/components/ui/skeleton.d.ts +2 -0
  419. package/dist/components/ui/slider.d.ts +4 -0
  420. package/dist/components/ui/snippet.d.ts +18 -0
  421. package/dist/components/ui/sonner.d.ts +3 -0
  422. package/dist/components/ui/spinner.d.ts +6 -0
  423. package/dist/components/ui/switch.d.ts +6 -0
  424. package/dist/components/ui/table.d.ts +22 -0
  425. package/dist/components/ui/tabs.d.ts +11 -0
  426. package/dist/components/ui/tetra-molecule-icon.d.ts +11 -0
  427. package/dist/components/ui/tetrascience-icon.d.ts +7 -0
  428. package/dist/components/ui/textarea.d.ts +3 -0
  429. package/dist/components/ui/toggle-group.d.ts +10 -0
  430. package/dist/components/ui/toggle.d.ts +9 -0
  431. package/dist/components/ui/tooltip.d.ts +7 -0
  432. package/dist/composed/AssistantLayout.cjs +2 -0
  433. package/dist/composed/AssistantLayout.cjs.map +1 -0
  434. package/dist/composed/AssistantLayout.js +10 -0
  435. package/dist/composed/AssistantLayout.js.map +1 -0
  436. package/dist/composed/Chat.cjs +2 -0
  437. package/dist/composed/Chat.cjs.map +1 -0
  438. package/dist/composed/Chat.js +5 -0
  439. package/dist/composed/Chat.js.map +1 -0
  440. package/dist/composed/ConfirmDialog.cjs +2 -0
  441. package/dist/composed/ConfirmDialog.cjs.map +1 -0
  442. package/dist/composed/ConfirmDialog.js +5 -0
  443. package/dist/composed/ConfirmDialog.js.map +1 -0
  444. package/dist/composed/DataAppShell.cjs +2 -0
  445. package/dist/composed/DataAppShell.cjs.map +1 -0
  446. package/dist/composed/DataAppShell.js +22 -0
  447. package/dist/composed/DataAppShell.js.map +1 -0
  448. package/dist/composed/EmptyState.cjs +2 -0
  449. package/dist/composed/EmptyState.cjs.map +1 -0
  450. package/dist/composed/EmptyState.js +5 -0
  451. package/dist/composed/EmptyState.js.map +1 -0
  452. package/dist/composed/FormPatterns.cjs +2 -0
  453. package/dist/composed/FormPatterns.cjs.map +1 -0
  454. package/dist/composed/FormPatterns.js +5 -0
  455. package/dist/composed/FormPatterns.js.map +1 -0
  456. package/dist/composed/MoleculeStructure.cjs +2 -0
  457. package/dist/composed/MoleculeStructure.cjs.map +1 -0
  458. package/dist/composed/MoleculeStructure.js +11 -0
  459. package/dist/composed/MoleculeStructure.js.map +1 -0
  460. package/dist/composed/PlateMapEditor.cjs +2 -0
  461. package/dist/composed/PlateMapEditor.cjs.map +1 -0
  462. package/dist/composed/PlateMapEditor.js +45 -0
  463. package/dist/composed/PlateMapEditor.js.map +1 -0
  464. package/dist/composed/ProcessFlow.cjs +2 -0
  465. package/dist/composed/ProcessFlow.cjs.map +1 -0
  466. package/dist/composed/ProcessFlow.js +7 -0
  467. package/dist/composed/ProcessFlow.js.map +1 -0
  468. package/dist/composed/RichListItem.cjs +2 -0
  469. package/dist/composed/RichListItem.cjs.map +1 -0
  470. package/dist/composed/RichListItem.js +6 -0
  471. package/dist/composed/RichListItem.js.map +1 -0
  472. package/dist/composed/StatCard.cjs +2 -0
  473. package/dist/composed/StatCard.cjs.map +1 -0
  474. package/dist/composed/StatCard.js +5 -0
  475. package/dist/composed/StatCard.js.map +1 -0
  476. package/dist/composed/TdpSearch.cjs +2 -0
  477. package/dist/composed/TdpSearch.cjs.map +1 -0
  478. package/dist/composed/TdpSearch.js +8 -0
  479. package/dist/composed/TdpSearch.js.map +1 -0
  480. package/dist/composed/TopBar.cjs +2 -0
  481. package/dist/composed/TopBar.cjs.map +1 -0
  482. package/dist/composed/TopBar.js +6 -0
  483. package/dist/composed/TopBar.js.map +1 -0
  484. package/dist/composed/UserMenu.cjs +2 -0
  485. package/dist/composed/UserMenu.cjs.map +1 -0
  486. package/dist/composed/UserMenu.js +7 -0
  487. package/dist/composed/UserMenu.js.map +1 -0
  488. package/dist/composed/tdp-link.cjs +2 -0
  489. package/dist/composed/tdp-link.cjs.map +1 -0
  490. package/dist/composed/tdp-link.js.map +1 -0
  491. package/dist/composed/tdp-url.cjs.map +1 -0
  492. package/dist/composed/tdp-url.js.map +1 -0
  493. package/dist/hooks/use-code-editor-theme.d.ts +34 -0
  494. package/dist/hooks/use-element-size.d.ts +25 -0
  495. package/dist/hooks/use-is-dark.d.ts +12 -0
  496. package/dist/hooks/use-mobile.d.ts +1 -0
  497. package/dist/hooks/use-plotly-theme.d.ts +49 -0
  498. package/dist/index.cjs +1 -1
  499. package/dist/index.css +1 -1
  500. package/dist/index.d.ts +102 -5448
  501. package/dist/index.js +72 -72
  502. package/dist/jest-setup.cjs +4 -0
  503. package/dist/jest-setup.cjs.map +1 -0
  504. package/dist/jest-setup.d.ts +106 -0
  505. package/dist/jest-setup.js +218 -0
  506. package/dist/jest-setup.js.map +1 -0
  507. package/dist/lib/shiki.cjs +1 -1
  508. package/dist/lib/shiki.cjs.map +1 -1
  509. package/dist/lib/shiki.d.ts +32 -0
  510. package/dist/lib/utils.d.ts +2 -0
  511. package/dist/server/auth/JwtTokenManager.cjs +1 -1
  512. package/dist/server/auth/JwtTokenManager.cjs.map +1 -1
  513. package/dist/server/auth/JwtTokenManager.d.ts +113 -0
  514. package/dist/server/auth/JwtTokenManager.js +44 -21
  515. package/dist/server/auth/JwtTokenManager.js.map +1 -1
  516. package/dist/server/auth/index.d.ts +5 -0
  517. package/dist/server/index.d.ts +8 -0
  518. package/dist/server/providers/AthenaProvider.cjs +1 -1
  519. package/dist/server/providers/AthenaProvider.cjs.map +1 -1
  520. package/dist/server/providers/AthenaProvider.d.ts +75 -0
  521. package/dist/server/providers/DatabricksProvider.cjs +1 -1
  522. package/dist/server/providers/DatabricksProvider.cjs.map +1 -1
  523. package/dist/server/providers/DatabricksProvider.d.ts +38 -0
  524. package/dist/server/providers/SnowflakeProvider.cjs +1 -1
  525. package/dist/server/providers/SnowflakeProvider.cjs.map +1 -1
  526. package/dist/server/providers/SnowflakeProvider.d.ts +36 -0
  527. package/dist/server/providers/buildProvider.d.ts +39 -0
  528. package/dist/server/providers/entries/athena.d.ts +24 -0
  529. package/dist/server/providers/entries/databricks.d.ts +25 -0
  530. package/dist/server/providers/entries/snowflake.d.ts +25 -0
  531. package/dist/server/providers/exceptions.d.ts +36 -0
  532. package/dist/server/providers/getProviderConfigurations.d.ts +45 -0
  533. package/dist/server/providers/index.d.ts +31 -0
  534. package/dist/server/providers/providerDiscovery.d.ts +81 -0
  535. package/dist/server/providers/types.d.ts +145 -0
  536. package/dist/server/search/TdpSearchManager.d.ts +40 -0
  537. package/dist/server/search/index.d.ts +5 -0
  538. package/dist/server.d.ts +17 -540
  539. package/dist/ui/accordion.cjs +2 -0
  540. package/dist/ui/accordion.cjs.map +1 -0
  541. package/dist/ui/accordion.js +83 -0
  542. package/dist/ui/accordion.js.map +1 -0
  543. package/dist/ui/alert-dialog.cjs +2 -0
  544. package/dist/ui/alert-dialog.cjs.map +1 -0
  545. package/dist/ui/alert-dialog.js +181 -0
  546. package/dist/ui/alert-dialog.js.map +1 -0
  547. package/dist/ui/alert.cjs +2 -0
  548. package/dist/ui/alert.cjs.map +1 -0
  549. package/dist/ui/alert.js +81 -0
  550. package/dist/ui/alert.js.map +1 -0
  551. package/dist/ui/aspect-ratio.cjs.map +1 -0
  552. package/dist/ui/aspect-ratio.js.map +1 -0
  553. package/dist/ui/avatar.cjs +2 -0
  554. package/dist/ui/avatar.cjs.map +1 -0
  555. package/dist/ui/avatar.js +107 -0
  556. package/dist/ui/avatar.js.map +1 -0
  557. package/dist/ui/badge.cjs +2 -0
  558. package/dist/ui/badge.cjs.map +1 -0
  559. package/dist/ui/badge.js +47 -0
  560. package/dist/ui/badge.js.map +1 -0
  561. package/dist/ui/banner.cjs +2 -0
  562. package/dist/ui/banner.cjs.map +1 -0
  563. package/dist/ui/banner.js +80 -0
  564. package/dist/ui/banner.js.map +1 -0
  565. package/dist/ui/breadcrumb.cjs +2 -0
  566. package/dist/ui/breadcrumb.cjs.map +1 -0
  567. package/dist/ui/breadcrumb.js +118 -0
  568. package/dist/ui/breadcrumb.js.map +1 -0
  569. package/dist/ui/button-group.cjs +2 -0
  570. package/dist/ui/button-group.cjs.map +1 -0
  571. package/dist/ui/button-group.js +77 -0
  572. package/dist/ui/button-group.js.map +1 -0
  573. package/dist/ui/button.cjs +2 -0
  574. package/dist/ui/button.cjs.map +1 -0
  575. package/dist/ui/button.js +57 -0
  576. package/dist/ui/button.js.map +1 -0
  577. package/dist/ui/calendar.cjs +2 -0
  578. package/dist/ui/calendar.cjs.map +1 -0
  579. package/dist/ui/calendar.js +174 -0
  580. package/dist/ui/calendar.js.map +1 -0
  581. package/dist/ui/card.cjs +2 -0
  582. package/dist/ui/card.cjs.map +1 -0
  583. package/dist/ui/card.js +102 -0
  584. package/dist/ui/card.js.map +1 -0
  585. package/dist/ui/carousel.cjs +2 -0
  586. package/dist/ui/carousel.cjs.map +1 -0
  587. package/dist/ui/carousel.js +179 -0
  588. package/dist/ui/carousel.js.map +1 -0
  589. package/dist/ui/checkbox.cjs +2 -0
  590. package/dist/ui/checkbox.cjs.map +1 -0
  591. package/dist/ui/checkbox.js +35 -0
  592. package/dist/ui/checkbox.js.map +1 -0
  593. package/dist/ui/code-block.cjs +4 -0
  594. package/dist/ui/code-block.cjs.map +1 -0
  595. package/dist/ui/code-block.js +324 -0
  596. package/dist/ui/code-block.js.map +1 -0
  597. package/dist/ui/code-editor.cjs +2 -0
  598. package/dist/ui/code-editor.cjs.map +1 -0
  599. package/dist/ui/code-editor.js +106 -0
  600. package/dist/ui/code-editor.js.map +1 -0
  601. package/dist/ui/collapsible.cjs.map +1 -0
  602. package/dist/ui/collapsible.js.map +1 -0
  603. package/dist/ui/combobox.cjs +2 -0
  604. package/dist/ui/combobox.cjs.map +1 -0
  605. package/dist/ui/combobox.js +285 -0
  606. package/dist/ui/combobox.js.map +1 -0
  607. package/dist/ui/command.cjs +2 -0
  608. package/dist/ui/command.cjs.map +1 -0
  609. package/dist/ui/command.js +178 -0
  610. package/dist/ui/command.js.map +1 -0
  611. package/dist/ui/context-menu.cjs +2 -0
  612. package/dist/ui/context-menu.cjs.map +1 -0
  613. package/dist/ui/context-menu.js +236 -0
  614. package/dist/ui/context-menu.js.map +1 -0
  615. package/dist/ui/data-table.cjs +2 -0
  616. package/dist/ui/data-table.cjs.map +1 -0
  617. package/dist/ui/data-table.js +16 -0
  618. package/dist/ui/data-table.js.map +1 -0
  619. package/dist/ui/dialog.cjs +2 -0
  620. package/dist/ui/dialog.cjs.map +1 -0
  621. package/dist/ui/dialog.js +165 -0
  622. package/dist/ui/dialog.js.map +1 -0
  623. package/dist/ui/dropdown-menu.cjs +2 -0
  624. package/dist/ui/dropdown-menu.cjs.map +1 -0
  625. package/dist/ui/dropdown-menu.js +260 -0
  626. package/dist/ui/dropdown-menu.js.map +1 -0
  627. package/dist/ui/field.cjs +2 -0
  628. package/dist/ui/field.cjs.map +1 -0
  629. package/dist/ui/field.js +210 -0
  630. package/dist/ui/field.js.map +1 -0
  631. package/dist/ui/hover-card.cjs +2 -0
  632. package/dist/ui/hover-card.cjs.map +1 -0
  633. package/dist/ui/hover-card.js +39 -0
  634. package/dist/ui/hover-card.js.map +1 -0
  635. package/dist/ui/input-group.cjs +2 -0
  636. package/dist/ui/input-group.cjs.map +1 -0
  637. package/dist/ui/input-group.js +145 -0
  638. package/dist/ui/input-group.js.map +1 -0
  639. package/dist/ui/input.cjs +2 -0
  640. package/dist/ui/input.cjs.map +1 -0
  641. package/dist/ui/input.js +20 -0
  642. package/dist/ui/input.js.map +1 -0
  643. package/dist/ui/item.cjs +2 -0
  644. package/dist/ui/item.cjs.map +1 -0
  645. package/dist/ui/item.js +199 -0
  646. package/dist/ui/item.js.map +1 -0
  647. package/dist/ui/kbd.cjs +2 -0
  648. package/dist/ui/kbd.cjs.map +1 -0
  649. package/dist/ui/kbd.js +30 -0
  650. package/dist/ui/kbd.js.map +1 -0
  651. package/dist/ui/label.cjs +2 -0
  652. package/dist/ui/label.cjs.map +1 -0
  653. package/dist/ui/label.js +23 -0
  654. package/dist/ui/label.js.map +1 -0
  655. package/dist/ui/menubar.cjs +2 -0
  656. package/dist/ui/menubar.cjs.map +1 -0
  657. package/dist/ui/menubar.js +256 -0
  658. package/dist/ui/menubar.js.map +1 -0
  659. package/dist/ui/navigation-menu.cjs +2 -0
  660. package/dist/ui/navigation-menu.cjs.map +1 -0
  661. package/dist/ui/navigation-menu.js +164 -0
  662. package/dist/ui/navigation-menu.js.map +1 -0
  663. package/dist/ui/popover.cjs +2 -0
  664. package/dist/ui/popover.cjs.map +1 -0
  665. package/dist/ui/popover.js +45 -0
  666. package/dist/ui/popover.js.map +1 -0
  667. package/dist/ui/radio-group.cjs +2 -0
  668. package/dist/ui/radio-group.cjs.map +1 -0
  669. package/dist/ui/radio-group.js +45 -0
  670. package/dist/ui/radio-group.js.map +1 -0
  671. package/dist/ui/resizable.cjs +2 -0
  672. package/dist/ui/resizable.cjs.map +1 -0
  673. package/dist/ui/resizable.js +58 -0
  674. package/dist/ui/resizable.js.map +1 -0
  675. package/dist/ui/scroll-area.cjs +2 -0
  676. package/dist/ui/scroll-area.cjs.map +1 -0
  677. package/dist/ui/scroll-area.js +61 -0
  678. package/dist/ui/scroll-area.js.map +1 -0
  679. package/dist/ui/select.cjs +2 -0
  680. package/dist/ui/select.cjs.map +1 -0
  681. package/dist/ui/select.js +184 -0
  682. package/dist/ui/select.js.map +1 -0
  683. package/dist/ui/separator.cjs +2 -0
  684. package/dist/ui/separator.cjs.map +1 -0
  685. package/dist/ui/separator.js +27 -0
  686. package/dist/ui/separator.js.map +1 -0
  687. package/dist/ui/sheet.cjs +2 -0
  688. package/dist/ui/sheet.cjs.map +1 -0
  689. package/dist/ui/sheet.js +137 -0
  690. package/dist/ui/sheet.js.map +1 -0
  691. package/dist/ui/sidebar.cjs +2 -0
  692. package/dist/ui/sidebar.cjs.map +1 -0
  693. package/dist/ui/sidebar.js +579 -0
  694. package/dist/ui/sidebar.js.map +1 -0
  695. package/dist/ui/skeleton.cjs +2 -0
  696. package/dist/ui/skeleton.cjs.map +1 -0
  697. package/dist/ui/skeleton.js +24 -0
  698. package/dist/ui/skeleton.js.map +1 -0
  699. package/dist/ui/slider.cjs +2 -0
  700. package/dist/ui/slider.cjs.map +1 -0
  701. package/dist/ui/slider.js +61 -0
  702. package/dist/ui/slider.js.map +1 -0
  703. package/dist/ui/sonner.cjs +2 -0
  704. package/dist/ui/sonner.cjs.map +1 -0
  705. package/dist/ui/sonner.js +52 -0
  706. package/dist/ui/sonner.js.map +1 -0
  707. package/dist/ui/spinner.cjs +2 -0
  708. package/dist/ui/spinner.cjs.map +1 -0
  709. package/dist/ui/spinner.js +39 -0
  710. package/dist/ui/spinner.js.map +1 -0
  711. package/dist/ui/switch.cjs +2 -0
  712. package/dist/ui/switch.cjs.map +1 -0
  713. package/dist/ui/switch.js +32 -0
  714. package/dist/ui/switch.js.map +1 -0
  715. package/dist/ui/table.cjs +2 -0
  716. package/dist/ui/table.cjs.map +1 -0
  717. package/dist/ui/table.js +153 -0
  718. package/dist/ui/table.js.map +1 -0
  719. package/dist/ui/tabs.cjs +2 -0
  720. package/dist/ui/tabs.cjs.map +1 -0
  721. package/dist/ui/tabs.js +92 -0
  722. package/dist/ui/tabs.js.map +1 -0
  723. package/dist/ui/tetra-molecule-icon.cjs +2 -0
  724. package/dist/ui/tetra-molecule-icon.cjs.map +1 -0
  725. package/dist/ui/tetra-molecule-icon.js +50 -0
  726. package/dist/ui/tetra-molecule-icon.js.map +1 -0
  727. package/dist/ui/tetrascience-icon.cjs +2 -0
  728. package/dist/ui/tetrascience-icon.cjs.map +1 -0
  729. package/dist/ui/tetrascience-icon.js +47 -0
  730. package/dist/ui/tetrascience-icon.js.map +1 -0
  731. package/dist/ui/textarea.cjs +2 -0
  732. package/dist/ui/textarea.cjs.map +1 -0
  733. package/dist/ui/textarea.js +19 -0
  734. package/dist/ui/textarea.js.map +1 -0
  735. package/dist/ui/toggle-group.cjs +2 -0
  736. package/dist/ui/toggle-group.cjs.map +1 -0
  737. package/dist/ui/toggle-group.js +81 -0
  738. package/dist/ui/toggle-group.js.map +1 -0
  739. package/dist/ui/toggle.cjs +2 -0
  740. package/dist/ui/toggle.cjs.map +1 -0
  741. package/dist/ui/toggle.js +44 -0
  742. package/dist/ui/toggle.js.map +1 -0
  743. package/dist/ui/tooltip.cjs +2 -0
  744. package/dist/ui/tooltip.cjs.map +1 -0
  745. package/dist/ui/tooltip.js +56 -0
  746. package/dist/ui/tooltip.js.map +1 -0
  747. package/dist/utils/colors.d.ts +50 -0
  748. package/package.json +113 -10
  749. package/dist/athena.d.ts +0 -167
  750. package/dist/components/ai/attachments.cjs +0 -2
  751. package/dist/components/ai/attachments.cjs.map +0 -1
  752. package/dist/components/ai/attachments.js +0 -224
  753. package/dist/components/ai/attachments.js.map +0 -1
  754. package/dist/components/ai/chain-of-thought.cjs +0 -2
  755. package/dist/components/ai/chain-of-thought.cjs.map +0 -1
  756. package/dist/components/ai/chain-of-thought.js +0 -145
  757. package/dist/components/ai/chain-of-thought.js.map +0 -1
  758. package/dist/components/ai/confirmation.cjs +0 -2
  759. package/dist/components/ai/confirmation.cjs.map +0 -1
  760. package/dist/components/ai/confirmation.js +0 -109
  761. package/dist/components/ai/confirmation.js.map +0 -1
  762. package/dist/components/ai/context.cjs +0 -2
  763. package/dist/components/ai/context.cjs.map +0 -1
  764. package/dist/components/ai/context.js +0 -267
  765. package/dist/components/ai/context.js.map +0 -1
  766. package/dist/components/ai/conversation.cjs +0 -4
  767. package/dist/components/ai/conversation.cjs.map +0 -1
  768. package/dist/components/ai/conversation.js +0 -108
  769. package/dist/components/ai/conversation.js.map +0 -1
  770. package/dist/components/ai/inline-citation.cjs +0 -2
  771. package/dist/components/ai/inline-citation.cjs.map +0 -1
  772. package/dist/components/ai/inline-citation.js +0 -182
  773. package/dist/components/ai/inline-citation.js.map +0 -1
  774. package/dist/components/ai/message.cjs +0 -2
  775. package/dist/components/ai/message.cjs.map +0 -1
  776. package/dist/components/ai/message.js +0 -237
  777. package/dist/components/ai/message.js.map +0 -1
  778. package/dist/components/ai/model-selector.cjs +0 -2
  779. package/dist/components/ai/model-selector.cjs.map +0 -1
  780. package/dist/components/ai/model-selector.js +0 -77
  781. package/dist/components/ai/model-selector.js.map +0 -1
  782. package/dist/components/ai/prompt-input.cjs +0 -2
  783. package/dist/components/ai/prompt-input.cjs.map +0 -1
  784. package/dist/components/ai/prompt-input.js +0 -776
  785. package/dist/components/ai/prompt-input.js.map +0 -1
  786. package/dist/components/ai/queue.cjs +0 -2
  787. package/dist/components/ai/queue.cjs.map +0 -1
  788. package/dist/components/ai/queue.js +0 -209
  789. package/dist/components/ai/queue.js.map +0 -1
  790. package/dist/components/ai/reasoning.cjs +0 -2
  791. package/dist/components/ai/reasoning.cjs.map +0 -1
  792. package/dist/components/ai/reasoning.js +0 -129
  793. package/dist/components/ai/reasoning.js.map +0 -1
  794. package/dist/components/ai/shimmer.cjs +0 -2
  795. package/dist/components/ai/shimmer.cjs.map +0 -1
  796. package/dist/components/ai/shimmer.js +0 -49
  797. package/dist/components/ai/shimmer.js.map +0 -1
  798. package/dist/components/ai/sources.cjs +0 -2
  799. package/dist/components/ai/sources.cjs.map +0 -1
  800. package/dist/components/ai/sources.js +0 -54
  801. package/dist/components/ai/sources.js.map +0 -1
  802. package/dist/components/ai/speech-input.cjs +0 -2
  803. package/dist/components/ai/speech-input.cjs.map +0 -1
  804. package/dist/components/ai/speech-input.js +0 -123
  805. package/dist/components/ai/speech-input.js.map +0 -1
  806. package/dist/components/ai/stream-status.cjs +0 -2
  807. package/dist/components/ai/stream-status.cjs.map +0 -1
  808. package/dist/components/ai/stream-status.js +0 -108
  809. package/dist/components/ai/stream-status.js.map +0 -1
  810. package/dist/components/ai/suggestion.cjs +0 -2
  811. package/dist/components/ai/suggestion.cjs.map +0 -1
  812. package/dist/components/ai/suggestion.js +0 -38
  813. package/dist/components/ai/suggestion.js.map +0 -1
  814. package/dist/components/ai/task.cjs +0 -2
  815. package/dist/components/ai/task.cjs.map +0 -1
  816. package/dist/components/ai/task.js +0 -101
  817. package/dist/components/ai/task.js.map +0 -1
  818. package/dist/components/ai/tool.cjs +0 -2
  819. package/dist/components/ai/tool.cjs.map +0 -1
  820. package/dist/components/ai/tool.js +0 -139
  821. package/dist/components/ai/tool.js.map +0 -1
  822. package/dist/components/composed/tdp-link.cjs +0 -2
  823. package/dist/components/composed/tdp-link.cjs.map +0 -1
  824. package/dist/components/composed/tdp-link.js.map +0 -1
  825. package/dist/components/composed/tdp-url.cjs.map +0 -1
  826. package/dist/components/composed/tdp-url.js.map +0 -1
  827. package/dist/components/ui/accordion.cjs +0 -2
  828. package/dist/components/ui/accordion.cjs.map +0 -1
  829. package/dist/components/ui/accordion.js +0 -83
  830. package/dist/components/ui/accordion.js.map +0 -1
  831. package/dist/components/ui/alert-dialog.cjs +0 -2
  832. package/dist/components/ui/alert-dialog.cjs.map +0 -1
  833. package/dist/components/ui/alert-dialog.js +0 -181
  834. package/dist/components/ui/alert-dialog.js.map +0 -1
  835. package/dist/components/ui/alert.cjs +0 -2
  836. package/dist/components/ui/alert.cjs.map +0 -1
  837. package/dist/components/ui/alert.js +0 -81
  838. package/dist/components/ui/alert.js.map +0 -1
  839. package/dist/components/ui/aspect-ratio.cjs.map +0 -1
  840. package/dist/components/ui/aspect-ratio.js.map +0 -1
  841. package/dist/components/ui/avatar.cjs +0 -2
  842. package/dist/components/ui/avatar.cjs.map +0 -1
  843. package/dist/components/ui/avatar.js +0 -107
  844. package/dist/components/ui/avatar.js.map +0 -1
  845. package/dist/components/ui/badge.cjs +0 -2
  846. package/dist/components/ui/badge.cjs.map +0 -1
  847. package/dist/components/ui/badge.js +0 -47
  848. package/dist/components/ui/badge.js.map +0 -1
  849. package/dist/components/ui/banner.cjs +0 -2
  850. package/dist/components/ui/banner.cjs.map +0 -1
  851. package/dist/components/ui/banner.js +0 -80
  852. package/dist/components/ui/banner.js.map +0 -1
  853. package/dist/components/ui/breadcrumb.cjs +0 -2
  854. package/dist/components/ui/breadcrumb.cjs.map +0 -1
  855. package/dist/components/ui/breadcrumb.js +0 -118
  856. package/dist/components/ui/breadcrumb.js.map +0 -1
  857. package/dist/components/ui/button-group.cjs +0 -2
  858. package/dist/components/ui/button-group.cjs.map +0 -1
  859. package/dist/components/ui/button-group.js +0 -77
  860. package/dist/components/ui/button-group.js.map +0 -1
  861. package/dist/components/ui/button.cjs +0 -2
  862. package/dist/components/ui/button.cjs.map +0 -1
  863. package/dist/components/ui/button.js +0 -57
  864. package/dist/components/ui/button.js.map +0 -1
  865. package/dist/components/ui/calendar.cjs +0 -2
  866. package/dist/components/ui/calendar.cjs.map +0 -1
  867. package/dist/components/ui/calendar.js +0 -174
  868. package/dist/components/ui/calendar.js.map +0 -1
  869. package/dist/components/ui/card.cjs +0 -2
  870. package/dist/components/ui/card.cjs.map +0 -1
  871. package/dist/components/ui/card.js +0 -102
  872. package/dist/components/ui/card.js.map +0 -1
  873. package/dist/components/ui/carousel.cjs +0 -2
  874. package/dist/components/ui/carousel.cjs.map +0 -1
  875. package/dist/components/ui/carousel.js +0 -179
  876. package/dist/components/ui/carousel.js.map +0 -1
  877. package/dist/components/ui/checkbox.cjs +0 -2
  878. package/dist/components/ui/checkbox.cjs.map +0 -1
  879. package/dist/components/ui/checkbox.js +0 -35
  880. package/dist/components/ui/checkbox.js.map +0 -1
  881. package/dist/components/ui/code-block.cjs +0 -4
  882. package/dist/components/ui/code-block.cjs.map +0 -1
  883. package/dist/components/ui/code-block.js +0 -324
  884. package/dist/components/ui/code-block.js.map +0 -1
  885. package/dist/components/ui/code-editor.cjs +0 -2
  886. package/dist/components/ui/code-editor.cjs.map +0 -1
  887. package/dist/components/ui/code-editor.js +0 -105
  888. package/dist/components/ui/code-editor.js.map +0 -1
  889. package/dist/components/ui/collapsible.cjs.map +0 -1
  890. package/dist/components/ui/collapsible.js.map +0 -1
  891. package/dist/components/ui/combobox.cjs +0 -2
  892. package/dist/components/ui/combobox.cjs.map +0 -1
  893. package/dist/components/ui/combobox.js +0 -285
  894. package/dist/components/ui/combobox.js.map +0 -1
  895. package/dist/components/ui/command.cjs +0 -2
  896. package/dist/components/ui/command.cjs.map +0 -1
  897. package/dist/components/ui/command.js +0 -178
  898. package/dist/components/ui/command.js.map +0 -1
  899. package/dist/components/ui/context-menu.cjs +0 -2
  900. package/dist/components/ui/context-menu.cjs.map +0 -1
  901. package/dist/components/ui/context-menu.js +0 -236
  902. package/dist/components/ui/context-menu.js.map +0 -1
  903. package/dist/components/ui/dialog.cjs +0 -2
  904. package/dist/components/ui/dialog.cjs.map +0 -1
  905. package/dist/components/ui/dialog.js +0 -165
  906. package/dist/components/ui/dialog.js.map +0 -1
  907. package/dist/components/ui/dropdown-menu.cjs +0 -2
  908. package/dist/components/ui/dropdown-menu.cjs.map +0 -1
  909. package/dist/components/ui/dropdown-menu.js +0 -260
  910. package/dist/components/ui/dropdown-menu.js.map +0 -1
  911. package/dist/components/ui/field.cjs +0 -2
  912. package/dist/components/ui/field.cjs.map +0 -1
  913. package/dist/components/ui/field.js +0 -210
  914. package/dist/components/ui/field.js.map +0 -1
  915. package/dist/components/ui/hover-card.cjs +0 -2
  916. package/dist/components/ui/hover-card.cjs.map +0 -1
  917. package/dist/components/ui/hover-card.js +0 -39
  918. package/dist/components/ui/hover-card.js.map +0 -1
  919. package/dist/components/ui/input-group.cjs +0 -2
  920. package/dist/components/ui/input-group.cjs.map +0 -1
  921. package/dist/components/ui/input-group.js +0 -145
  922. package/dist/components/ui/input-group.js.map +0 -1
  923. package/dist/components/ui/input.cjs +0 -2
  924. package/dist/components/ui/input.cjs.map +0 -1
  925. package/dist/components/ui/input.js +0 -20
  926. package/dist/components/ui/input.js.map +0 -1
  927. package/dist/components/ui/item.cjs +0 -2
  928. package/dist/components/ui/item.cjs.map +0 -1
  929. package/dist/components/ui/item.js +0 -199
  930. package/dist/components/ui/item.js.map +0 -1
  931. package/dist/components/ui/kbd.cjs +0 -2
  932. package/dist/components/ui/kbd.cjs.map +0 -1
  933. package/dist/components/ui/kbd.js +0 -30
  934. package/dist/components/ui/kbd.js.map +0 -1
  935. package/dist/components/ui/label.cjs +0 -2
  936. package/dist/components/ui/label.cjs.map +0 -1
  937. package/dist/components/ui/label.js +0 -23
  938. package/dist/components/ui/label.js.map +0 -1
  939. package/dist/components/ui/menubar.cjs +0 -2
  940. package/dist/components/ui/menubar.cjs.map +0 -1
  941. package/dist/components/ui/menubar.js +0 -256
  942. package/dist/components/ui/menubar.js.map +0 -1
  943. package/dist/components/ui/navigation-menu.cjs +0 -2
  944. package/dist/components/ui/navigation-menu.cjs.map +0 -1
  945. package/dist/components/ui/navigation-menu.js +0 -164
  946. package/dist/components/ui/navigation-menu.js.map +0 -1
  947. package/dist/components/ui/popover.cjs +0 -2
  948. package/dist/components/ui/popover.cjs.map +0 -1
  949. package/dist/components/ui/popover.js +0 -45
  950. package/dist/components/ui/popover.js.map +0 -1
  951. package/dist/components/ui/radio-group.cjs +0 -2
  952. package/dist/components/ui/radio-group.cjs.map +0 -1
  953. package/dist/components/ui/radio-group.js +0 -45
  954. package/dist/components/ui/radio-group.js.map +0 -1
  955. package/dist/components/ui/resizable.cjs +0 -2
  956. package/dist/components/ui/resizable.cjs.map +0 -1
  957. package/dist/components/ui/resizable.js +0 -58
  958. package/dist/components/ui/resizable.js.map +0 -1
  959. package/dist/components/ui/scroll-area.cjs +0 -2
  960. package/dist/components/ui/scroll-area.cjs.map +0 -1
  961. package/dist/components/ui/scroll-area.js +0 -61
  962. package/dist/components/ui/scroll-area.js.map +0 -1
  963. package/dist/components/ui/select.cjs +0 -2
  964. package/dist/components/ui/select.cjs.map +0 -1
  965. package/dist/components/ui/select.js +0 -184
  966. package/dist/components/ui/select.js.map +0 -1
  967. package/dist/components/ui/separator.cjs +0 -2
  968. package/dist/components/ui/separator.cjs.map +0 -1
  969. package/dist/components/ui/separator.js +0 -27
  970. package/dist/components/ui/separator.js.map +0 -1
  971. package/dist/components/ui/sheet.cjs +0 -2
  972. package/dist/components/ui/sheet.cjs.map +0 -1
  973. package/dist/components/ui/sheet.js +0 -137
  974. package/dist/components/ui/sheet.js.map +0 -1
  975. package/dist/components/ui/sidebar.cjs +0 -2
  976. package/dist/components/ui/sidebar.cjs.map +0 -1
  977. package/dist/components/ui/sidebar.js +0 -579
  978. package/dist/components/ui/sidebar.js.map +0 -1
  979. package/dist/components/ui/skeleton.cjs +0 -2
  980. package/dist/components/ui/skeleton.cjs.map +0 -1
  981. package/dist/components/ui/skeleton.js +0 -24
  982. package/dist/components/ui/skeleton.js.map +0 -1
  983. package/dist/components/ui/slider.cjs +0 -2
  984. package/dist/components/ui/slider.cjs.map +0 -1
  985. package/dist/components/ui/slider.js +0 -61
  986. package/dist/components/ui/slider.js.map +0 -1
  987. package/dist/components/ui/sonner.cjs +0 -2
  988. package/dist/components/ui/sonner.cjs.map +0 -1
  989. package/dist/components/ui/sonner.js +0 -52
  990. package/dist/components/ui/sonner.js.map +0 -1
  991. package/dist/components/ui/spinner.cjs +0 -2
  992. package/dist/components/ui/spinner.cjs.map +0 -1
  993. package/dist/components/ui/spinner.js +0 -39
  994. package/dist/components/ui/spinner.js.map +0 -1
  995. package/dist/components/ui/switch.cjs +0 -2
  996. package/dist/components/ui/switch.cjs.map +0 -1
  997. package/dist/components/ui/switch.js +0 -32
  998. package/dist/components/ui/switch.js.map +0 -1
  999. package/dist/components/ui/table.cjs +0 -2
  1000. package/dist/components/ui/table.cjs.map +0 -1
  1001. package/dist/components/ui/table.js +0 -153
  1002. package/dist/components/ui/table.js.map +0 -1
  1003. package/dist/components/ui/tabs.cjs +0 -2
  1004. package/dist/components/ui/tabs.cjs.map +0 -1
  1005. package/dist/components/ui/tabs.js +0 -92
  1006. package/dist/components/ui/tabs.js.map +0 -1
  1007. package/dist/components/ui/tetra-molecule-icon.cjs +0 -2
  1008. package/dist/components/ui/tetra-molecule-icon.cjs.map +0 -1
  1009. package/dist/components/ui/tetra-molecule-icon.js +0 -49
  1010. package/dist/components/ui/tetra-molecule-icon.js.map +0 -1
  1011. package/dist/components/ui/tetrascience-icon.cjs +0 -2
  1012. package/dist/components/ui/tetrascience-icon.cjs.map +0 -1
  1013. package/dist/components/ui/tetrascience-icon.js +0 -46
  1014. package/dist/components/ui/tetrascience-icon.js.map +0 -1
  1015. package/dist/components/ui/textarea.cjs +0 -2
  1016. package/dist/components/ui/textarea.cjs.map +0 -1
  1017. package/dist/components/ui/textarea.js +0 -19
  1018. package/dist/components/ui/textarea.js.map +0 -1
  1019. package/dist/components/ui/toggle-group.cjs +0 -2
  1020. package/dist/components/ui/toggle-group.cjs.map +0 -1
  1021. package/dist/components/ui/toggle-group.js +0 -81
  1022. package/dist/components/ui/toggle-group.js.map +0 -1
  1023. package/dist/components/ui/toggle.cjs +0 -2
  1024. package/dist/components/ui/toggle.cjs.map +0 -1
  1025. package/dist/components/ui/toggle.js +0 -44
  1026. package/dist/components/ui/toggle.js.map +0 -1
  1027. package/dist/components/ui/tooltip.cjs +0 -2
  1028. package/dist/components/ui/tooltip.cjs.map +0 -1
  1029. package/dist/components/ui/tooltip.js +0 -56
  1030. package/dist/components/ui/tooltip.js.map +0 -1
  1031. package/dist/databricks.d.ts +0 -129
  1032. package/dist/providers/athena.d.ts +0 -9
  1033. package/dist/providers/databricks.d.ts +0 -9
  1034. package/dist/providers/snowflake.d.ts +0 -9
  1035. package/dist/snowflake.d.ts +0 -125
  1036. /package/dist/{components/composed → composed}/tdp-link.js +0 -0
  1037. /package/dist/{components/composed → composed}/tdp-url.cjs +0 -0
  1038. /package/dist/{components/composed → composed}/tdp-url.js +0 -0
  1039. /package/dist/{components/ui → ui}/aspect-ratio.cjs +0 -0
  1040. /package/dist/{components/ui → ui}/aspect-ratio.js +0 -0
  1041. /package/dist/{components/ui → ui}/collapsible.cjs +0 -0
  1042. /package/dist/{components/ui → ui}/collapsible.js +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"attachments.js","sources":["../../../src/components/ai/attachments.tsx"],"sourcesContent":["import {\n FileTextIcon,\n GlobeIcon,\n ImageIcon,\n Music2Icon,\n PaperclipIcon,\n VideoIcon,\n XIcon,\n} from \"lucide-react\";\nimport { createContext, useCallback, useContext, useMemo } from \"react\";\n\nimport type { FileUIPart, SourceDocumentUIPart } from \"ai\";\nimport type { ComponentProps, HTMLAttributes, ReactNode } from \"react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n HoverCard,\n HoverCardContent,\n HoverCardTrigger,\n} from \"@/components/ui/hover-card\";\nimport { cn } from \"@/lib/utils\";\n\n\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type AttachmentData =\n | (FileUIPart & { id: string })\n | (SourceDocumentUIPart & { id: string });\n\nexport type AttachmentMediaCategory =\n | \"image\"\n | \"video\"\n | \"audio\"\n | \"document\"\n | \"source\"\n | \"unknown\";\n\nexport type AttachmentVariant = \"grid\" | \"inline\" | \"list\";\n\nconst mediaCategoryIcons: Record<AttachmentMediaCategory, typeof ImageIcon> = {\n audio: Music2Icon,\n document: FileTextIcon,\n image: ImageIcon,\n source: GlobeIcon,\n unknown: PaperclipIcon,\n video: VideoIcon,\n};\n\n// ============================================================================\n// Utility Functions\n// ============================================================================\n\nexport const getMediaCategory = (\n data: AttachmentData\n): AttachmentMediaCategory => {\n if (data.type === \"source-document\") {\n return \"source\";\n }\n\n const mediaType = data.mediaType ?? \"\";\n\n if (mediaType.startsWith(\"image/\")) {\n return \"image\";\n }\n if (mediaType.startsWith(\"video/\")) {\n return \"video\";\n }\n if (mediaType.startsWith(\"audio/\")) {\n return \"audio\";\n }\n if (mediaType.startsWith(\"application/\") || mediaType.startsWith(\"text/\")) {\n return \"document\";\n }\n\n return \"unknown\";\n};\n\nexport const getAttachmentLabel = (data: AttachmentData): string => {\n if (data.type === \"source-document\") {\n return data.title || data.filename || \"Source\";\n }\n\n const category = getMediaCategory(data);\n return data.filename || (category === \"image\" ? \"Image\" : \"Attachment\");\n};\n\nconst renderAttachmentImage = (\n url: string,\n filename: string | undefined,\n isGrid: boolean\n) =>\n isGrid ? (\n <img\n alt={filename || \"Image\"}\n className=\"size-full object-cover\"\n height={96}\n src={url}\n width={96}\n />\n ) : (\n <img\n alt={filename || \"Image\"}\n className=\"size-full rounded object-cover\"\n height={20}\n src={url}\n width={20}\n />\n );\n\n// ============================================================================\n// Contexts\n// ============================================================================\n\ninterface AttachmentsContextValue {\n variant: AttachmentVariant;\n}\n\nconst AttachmentsContext = createContext<AttachmentsContextValue | null>(null);\n\ninterface AttachmentContextValue {\n data: AttachmentData;\n mediaCategory: AttachmentMediaCategory;\n onRemove?: () => void;\n variant: AttachmentVariant;\n}\n\nconst AttachmentContext = createContext<AttachmentContextValue | null>(null);\n\n// ============================================================================\n// Hooks\n// ============================================================================\n\nexport const useAttachmentsContext = () =>\n useContext(AttachmentsContext) ?? { variant: \"grid\" as const };\n\nexport const useAttachmentContext = () => {\n const ctx = useContext(AttachmentContext);\n if (!ctx) {\n throw new Error(\"Attachment components must be used within <Attachment>\");\n }\n return ctx;\n};\n\n// ============================================================================\n// Attachments - Container\n// ============================================================================\n\nexport type AttachmentsProps = HTMLAttributes<HTMLDivElement> & {\n variant?: AttachmentVariant;\n};\n\nexport const Attachments = ({\n variant = \"grid\",\n className,\n children,\n ...props\n}: AttachmentsProps) => {\n const contextValue = useMemo(() => ({ variant }), [variant]);\n\n return (\n <AttachmentsContext.Provider value={contextValue}>\n <div\n className={cn(\n \"flex items-start\",\n variant === \"list\" ? \"flex-col gap-2\" : \"flex-wrap gap-2\",\n variant === \"grid\" && \"ml-auto w-fit\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n </AttachmentsContext.Provider>\n );\n};\n\n// ============================================================================\n// Attachment - Item\n// ============================================================================\n\nexport type AttachmentProps = HTMLAttributes<HTMLDivElement> & {\n data: AttachmentData;\n onRemove?: () => void;\n};\n\nexport const Attachment = ({\n data,\n onRemove,\n className,\n children,\n ...props\n}: AttachmentProps) => {\n const { variant } = useAttachmentsContext();\n const mediaCategory = getMediaCategory(data);\n\n const contextValue = useMemo<AttachmentContextValue>(\n () => ({ data, mediaCategory, onRemove, variant }),\n [data, mediaCategory, onRemove, variant]\n );\n\n return (\n <AttachmentContext.Provider value={contextValue}>\n <div\n className={cn(\n \"group relative\",\n variant === \"grid\" && \"size-24 overflow-hidden rounded-lg\",\n variant === \"inline\" && [\n \"flex h-8 cursor-pointer select-none items-center gap-1.5\",\n \"rounded-md border border-border px-1.5\",\n \"font-medium text-sm transition-all\",\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n ],\n variant === \"list\" && [\n \"flex w-full items-center gap-3 rounded-lg border p-3\",\n \"hover:bg-accent/50\",\n ],\n className\n )}\n {...props}\n >\n {children}\n </div>\n </AttachmentContext.Provider>\n );\n};\n\n// ============================================================================\n// AttachmentPreview - Media preview\n// ============================================================================\n\nexport type AttachmentPreviewProps = HTMLAttributes<HTMLDivElement> & {\n fallbackIcon?: ReactNode;\n};\n\nexport const AttachmentPreview = ({\n fallbackIcon,\n className,\n ...props\n}: AttachmentPreviewProps) => {\n const { data, mediaCategory, variant } = useAttachmentContext();\n\n const iconSize = variant === \"inline\" ? \"size-3\" : \"size-4\";\n\n const renderIcon = (Icon: typeof ImageIcon) => (\n <Icon className={cn(iconSize, \"text-muted-foreground\")} />\n );\n\n const renderContent = () => {\n if (mediaCategory === \"image\" && data.type === \"file\" && data.url) {\n return renderAttachmentImage(data.url, data.filename, variant === \"grid\");\n }\n\n if (mediaCategory === \"video\" && data.type === \"file\" && data.url) {\n return <video className=\"size-full object-cover\" muted src={data.url} />;\n }\n\n const Icon = mediaCategoryIcons[mediaCategory];\n return fallbackIcon ?? renderIcon(Icon);\n };\n\n return (\n <div\n className={cn(\n \"flex shrink-0 items-center justify-center overflow-hidden\",\n variant === \"grid\" && \"size-full bg-muted\",\n variant === \"inline\" && \"size-5 rounded bg-background\",\n variant === \"list\" && \"size-12 rounded bg-muted\",\n className\n )}\n {...props}\n >\n {renderContent()}\n </div>\n );\n};\n\n// ============================================================================\n// AttachmentInfo - Name and type display\n// ============================================================================\n\nexport type AttachmentInfoProps = HTMLAttributes<HTMLDivElement> & {\n showMediaType?: boolean;\n};\n\nexport const AttachmentInfo = ({\n showMediaType = false,\n className,\n ...props\n}: AttachmentInfoProps) => {\n const { data, variant } = useAttachmentContext();\n const label = getAttachmentLabel(data);\n\n if (variant === \"grid\") {\n return null;\n }\n\n return (\n <div className={cn(\"min-w-0 flex-1\", className)} {...props}>\n <span className=\"block truncate\">{label}</span>\n {showMediaType && data.mediaType && (\n <span className=\"block truncate text-muted-foreground text-xs\">\n {data.mediaType}\n </span>\n )}\n </div>\n );\n};\n\n// ============================================================================\n// AttachmentRemove - Remove button\n// ============================================================================\n\nexport type AttachmentRemoveProps = ComponentProps<typeof Button> & {\n label?: string;\n};\n\nexport const AttachmentRemove = ({\n label = \"Remove\",\n className,\n children,\n ...props\n}: AttachmentRemoveProps) => {\n const { onRemove, variant } = useAttachmentContext();\n\n const handleClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n onRemove?.();\n },\n [onRemove]\n );\n\n if (!onRemove) {\n return null;\n }\n\n return (\n <Button\n aria-label={label}\n className={cn(\n variant === \"grid\" && [\n \"absolute top-2 right-2 size-6 rounded-full p-0\",\n \"bg-background/80 backdrop-blur-sm\",\n \"opacity-0 transition-opacity group-hover:opacity-100\",\n \"hover:bg-background\",\n \"[&>svg]:size-3\",\n ],\n variant === \"inline\" && [\n \"size-5 rounded p-0\",\n \"opacity-0 transition-opacity group-hover:opacity-100\",\n \"[&>svg]:size-2.5\",\n ],\n variant === \"list\" && [\"size-8 shrink-0 rounded p-0\", \"[&>svg]:size-4\"],\n className\n )}\n onClick={handleClick}\n type=\"button\"\n variant=\"ghost\"\n {...props}\n >\n {children ?? <XIcon />}\n <span className=\"sr-only\">{label}</span>\n </Button>\n );\n};\n\n// ============================================================================\n// AttachmentHoverCard - Hover preview\n// ============================================================================\n\nexport type AttachmentHoverCardProps = ComponentProps<typeof HoverCard>;\n\nexport const AttachmentHoverCard = ({\n openDelay = 0,\n closeDelay = 0,\n ...props\n}: AttachmentHoverCardProps) => (\n <HoverCard closeDelay={closeDelay} openDelay={openDelay} {...props} />\n);\n\nexport type AttachmentHoverCardTriggerProps = ComponentProps<\n typeof HoverCardTrigger\n>;\n\nexport const AttachmentHoverCardTrigger = (\n props: AttachmentHoverCardTriggerProps\n) => <HoverCardTrigger {...props} />;\n\nexport type AttachmentHoverCardContentProps = ComponentProps<\n typeof HoverCardContent\n>;\n\nexport const AttachmentHoverCardContent = ({\n align = \"start\",\n className,\n ...props\n}: AttachmentHoverCardContentProps) => (\n <HoverCardContent\n align={align}\n className={cn(\"w-auto p-2\", className)}\n {...props}\n />\n);\n\n// ============================================================================\n// AttachmentEmpty - Empty state\n// ============================================================================\n\nexport type AttachmentEmptyProps = HTMLAttributes<HTMLDivElement>;\n\nexport const AttachmentEmpty = ({\n className,\n children,\n ...props\n}: AttachmentEmptyProps) => (\n <div\n className={cn(\n \"flex items-center justify-center p-4 text-muted-foreground text-sm\",\n className\n )}\n {...props}\n >\n {children ?? \"No attachments\"}\n </div>\n);\n"],"names":["mediaCategoryIcons","Music2Icon","FileTextIcon","ImageIcon","GlobeIcon","PaperclipIcon","VideoIcon","getMediaCategory","data","mediaType","getAttachmentLabel","category","renderAttachmentImage","url","filename","isGrid","jsx","AttachmentsContext","createContext","AttachmentContext","useAttachmentsContext","useContext","useAttachmentContext","ctx","Attachments","variant","className","children","props","contextValue","useMemo","cn","Attachment","onRemove","mediaCategory","AttachmentPreview","fallbackIcon","iconSize","renderIcon","Icon","renderContent","AttachmentInfo","showMediaType","label","jsxs","AttachmentRemove","handleClick","useCallback","e","Button","XIcon","AttachmentHoverCard","openDelay","closeDelay","HoverCard","AttachmentHoverCardTrigger","HoverCardTrigger","AttachmentHoverCardContent","align","HoverCardContent","AttachmentEmpty"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),l=require("lucide-react"),i=require("../ui/collapsible.cjs"),s=require("../../lib/utils.cjs"),h=({className:t,defaultOpen:a=!0,...o})=>e.jsx(i.Collapsible,{className:s.cn("overflow-hidden rounded-lg text-sm",t),defaultOpen:a,...o}),c=({className:t,children:a,title:o="Chain of Thought",icon:r,isStreaming:n=!1,...p})=>e.jsx(i.CollapsibleTrigger,{className:s.cn("group flex w-full items-center gap-2 text-muted-foreground text-sm transition-colors hover:text-foreground",t),...p,children:a??e.jsxs(e.Fragment,{children:[r??e.jsx(l.Brain,{className:"size-4 text-muted-foreground"}),e.jsxs("span",{className:"flex-1 text-left items-center gap-2",children:[o,n&&e.jsx("span",{className:"size-1.5 animate-pulse rounded-full bg-primary"})]}),e.jsx(l.ChevronUpIcon,{className:"size-4 text-muted-foreground opacity-0 transition-all group-focus-visible:opacity-100 group-hover:opacity-100 group-data-[state=open]:opacity-100 group-data-[state=closed]:rotate-180","data-slot":"collapsible-chevron"})]})}),u=({className:t,...a})=>e.jsx(i.CollapsibleContent,{className:s.cn("flex flex-col gap-2.5 pb-4 pt-3","data-[state=closed]:animate-out data-[state=open]:animate-in","data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0","data-[state=closed]:slide-out-to-top-1 data-[state=open]:slide-in-from-top-1",t),...a}),x={bullet:e.jsx("span",{className:"mt-[7px] ml-1 size-1.5 shrink-0 rounded-full bg-muted-foreground/50"}),search:e.jsx(l.SearchIcon,{className:"mt-0.5 w-[18px] size-3.5 shrink-0 text-muted-foreground"}),image:e.jsx(l.ImageIcon,{className:"mt-0.5 size-3.5 shrink-0 text-muted-foreground"})},d=({variant:t="bullet",className:a,children:o,...r})=>{const n=typeof t=="string"?x[t]:t;return e.jsxs("div",{className:s.cn("flex items-start gap-2 text-muted-foreground",a),...r,children:[e.jsx("span",{className:"flex shrink-0",children:n}),e.jsx("span",{className:"min-w-0 flex-1 leading-relaxed",children:o})]})},g=({className:t,...a})=>e.jsx("div",{className:s.cn("ml-[6px] flex flex-wrap gap-1.5 border-l-2 border-muted-foreground/20 py-0.5 pl-3",t),...a}),m=({className:t,children:a,...o})=>e.jsx("a",{className:s.cn("inline-flex items-center rounded-full border border-border/60 bg-muted/50 px-2 py-0.5 text-xs text-muted-foreground transition-colors",o.href&&"cursor-pointer hover:bg-accent hover:text-accent-foreground",t),rel:"noreferrer",target:"_blank",...o,children:a}),f=({src:t,alt:a="",caption:o,className:r,...n})=>e.jsxs("figure",{className:s.cn("ml-[22px] overflow-hidden rounded-lg border",r),...n,children:[e.jsx("img",{alt:a,className:"max-h-64 w-full object-cover",src:t}),o&&e.jsx("figcaption",{className:"border-t px-3 py-2 text-xs italic text-muted-foreground",children:o})]});h.displayName="ChainOfThought";c.displayName="ChainOfThoughtTrigger";u.displayName="ChainOfThoughtContent";d.displayName="ChainOfThoughtStep";g.displayName="ChainOfThoughtSources";m.displayName="ChainOfThoughtSource";f.displayName="ChainOfThoughtImage";exports.ChainOfThought=h;exports.ChainOfThoughtContent=u;exports.ChainOfThoughtImage=f;exports.ChainOfThoughtSource=m;exports.ChainOfThoughtSources=g;exports.ChainOfThoughtStep=d;exports.ChainOfThoughtTrigger=c;
2
- //# sourceMappingURL=chain-of-thought.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chain-of-thought.cjs","sources":["../../../src/components/ai/chain-of-thought.tsx"],"sourcesContent":["import { Brain, ChevronUpIcon, ImageIcon, SearchIcon } from \"lucide-react\";\n\nimport type { ComponentProps, ReactNode } from \"react\";\n\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"@/components/ui/collapsible\";\nimport { cn } from \"@/lib/utils\";\n\n// ---------------------------------------------------------------------------\n// ChainOfThought (root)\n// ---------------------------------------------------------------------------\n\nexport type ChainOfThoughtProps = ComponentProps<typeof Collapsible>;\n\nexport const ChainOfThought = ({\n className,\n defaultOpen = true,\n ...props\n}: ChainOfThoughtProps) => (\n <Collapsible\n className={cn(\"overflow-hidden rounded-lg text-sm\", className)}\n defaultOpen={defaultOpen}\n {...props}\n />\n);\n\n// ---------------------------------------------------------------------------\n// ChainOfThoughtTrigger\n// ---------------------------------------------------------------------------\n\nexport type ChainOfThoughtTriggerProps = ComponentProps<typeof CollapsibleTrigger> & {\n title?: string;\n icon?: ReactNode;\n /** When true, renders a subtle animated dot next to the title. */\n isStreaming?: boolean;\n};\n\nexport const ChainOfThoughtTrigger = ({\n className,\n children,\n title = \"Chain of Thought\",\n icon,\n isStreaming = false,\n ...props\n}: ChainOfThoughtTriggerProps) => (\n <CollapsibleTrigger\n className={cn(\n \"group flex w-full items-center gap-2 text-muted-foreground text-sm transition-colors hover:text-foreground\",\n className\n )}\n {...props}\n >\n {children ?? (\n <>\n {icon ?? <Brain className=\"size-4 text-muted-foreground\" />}\n <span className=\"flex-1 text-left items-center gap-2\">\n {title}\n {isStreaming && (\n <span className=\"size-1.5 animate-pulse rounded-full bg-primary\" />\n )}\n </span>\n <ChevronUpIcon\n className=\"size-4 text-muted-foreground opacity-0 transition-all group-focus-visible:opacity-100 group-hover:opacity-100 group-data-[state=open]:opacity-100 group-data-[state=closed]:rotate-180\"\n data-slot=\"collapsible-chevron\"\n />\n </>\n )}\n </CollapsibleTrigger>\n);\n\n// ---------------------------------------------------------------------------\n// ChainOfThoughtContent\n// ---------------------------------------------------------------------------\n\nexport type ChainOfThoughtContentProps = ComponentProps<typeof CollapsibleContent>;\n\nexport const ChainOfThoughtContent = ({\n className,\n ...props\n}: ChainOfThoughtContentProps) => (\n <CollapsibleContent\n className={cn(\n \"flex flex-col gap-2.5 pb-4 pt-3\",\n \"data-[state=closed]:animate-out data-[state=open]:animate-in\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:slide-out-to-top-1 data-[state=open]:slide-in-from-top-1\",\n className\n )}\n {...props}\n />\n);\n\n// ---------------------------------------------------------------------------\n// ChainOfThoughtStep\n// ---------------------------------------------------------------------------\n\nexport type ChainOfThoughtStepVariant = \"bullet\" | \"search\" | \"image\";\n\nexport type ChainOfThoughtStepProps = ComponentProps<\"div\"> & {\n /**\n * Visual prefix for the step.\n * - `\"bullet\"` — small dot (default, plain reasoning text)\n * - `\"search\"` — magnifying-glass (web search / tool call)\n * - `\"image\"` — image icon (image fetch / vision step)\n * - ReactNode — custom icon\n */\n variant?: ChainOfThoughtStepVariant | ReactNode;\n};\n\nconst STEP_ICONS: Record<ChainOfThoughtStepVariant, ReactNode> = {\n bullet: (\n <span className=\"mt-[7px] ml-1 size-1.5 shrink-0 rounded-full bg-muted-foreground/50\" />\n ),\n search: <SearchIcon className=\"mt-0.5 w-[18px] size-3.5 shrink-0 text-muted-foreground\" />,\n image: <ImageIcon className=\"mt-0.5 size-3.5 shrink-0 text-muted-foreground\" />,\n};\n\nexport const ChainOfThoughtStep = ({\n variant = \"bullet\",\n className,\n children,\n ...props\n}: ChainOfThoughtStepProps) => {\n const icon =\n typeof variant === \"string\"\n ? STEP_ICONS[variant as ChainOfThoughtStepVariant]\n : variant;\n\n return (\n <div\n className={cn(\"flex items-start gap-2 text-muted-foreground\", className)}\n {...props}\n >\n <span className=\"flex shrink-0\">{icon}</span>\n <span className=\"min-w-0 flex-1 leading-relaxed\">{children}</span>\n </div>\n );\n};\n\n// ---------------------------------------------------------------------------\n// ChainOfThoughtSources — inline chip group with left bar\n// ---------------------------------------------------------------------------\n\nexport type ChainOfThoughtSourcesProps = ComponentProps<\"div\">;\n\nexport const ChainOfThoughtSources = ({\n className,\n ...props\n}: ChainOfThoughtSourcesProps) => (\n <div\n className={cn(\n \"ml-[6px] flex flex-wrap gap-1.5 border-l-2 border-muted-foreground/20 py-0.5 pl-3\",\n className\n )}\n {...props}\n />\n);\n\nexport type ChainOfThoughtSourceProps = ComponentProps<\"a\">;\n\nexport const ChainOfThoughtSource = ({\n className,\n children,\n ...props\n}: ChainOfThoughtSourceProps) => (\n <a\n className={cn(\n \"inline-flex items-center rounded-full border border-border/60 bg-muted/50 px-2 py-0.5 text-xs text-muted-foreground transition-colors\",\n props.href && \"cursor-pointer hover:bg-accent hover:text-accent-foreground\",\n className\n )}\n rel=\"noreferrer\"\n target=\"_blank\"\n {...props}\n >\n {children}\n </a>\n);\n\n// ---------------------------------------------------------------------------\n// ChainOfThoughtImage — inline image with optional caption\n// ---------------------------------------------------------------------------\n\nexport type ChainOfThoughtImageProps = ComponentProps<\"figure\"> & {\n src: string;\n alt?: string;\n caption?: string;\n};\n\nexport const ChainOfThoughtImage = ({\n src,\n alt = \"\",\n caption,\n className,\n ...props\n}: ChainOfThoughtImageProps) => (\n <figure\n className={cn(\"ml-[22px] overflow-hidden rounded-lg border\", className)}\n {...props}\n >\n <img alt={alt} className=\"max-h-64 w-full object-cover\" src={src} />\n {caption && (\n <figcaption className=\"border-t px-3 py-2 text-xs italic text-muted-foreground\">\n {caption}\n </figcaption>\n )}\n </figure>\n);\n\nChainOfThought.displayName = \"ChainOfThought\";\nChainOfThoughtTrigger.displayName = \"ChainOfThoughtTrigger\";\nChainOfThoughtContent.displayName = \"ChainOfThoughtContent\";\nChainOfThoughtStep.displayName = \"ChainOfThoughtStep\";\nChainOfThoughtSources.displayName = \"ChainOfThoughtSources\";\nChainOfThoughtSource.displayName = \"ChainOfThoughtSource\";\nChainOfThoughtImage.displayName = \"ChainOfThoughtImage\";\n"],"names":["ChainOfThought","className","defaultOpen","props","jsx","Collapsible","cn","ChainOfThoughtTrigger","children","title","icon","isStreaming","CollapsibleTrigger","jsxs","Fragment","Brain","ChevronUpIcon","ChainOfThoughtContent","CollapsibleContent","STEP_ICONS","SearchIcon","ImageIcon","ChainOfThoughtStep","variant","ChainOfThoughtSources","ChainOfThoughtSource","ChainOfThoughtImage","src","alt","caption"],"mappings":"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"}
@@ -1,145 +0,0 @@
1
- import { jsx as t, jsxs as l, Fragment as d } from "react/jsx-runtime";
2
- import { Brain as c, ChevronUpIcon as m, ImageIcon as h, SearchIcon as u } from "lucide-react";
3
- import { Collapsible as g, CollapsibleContent as f, CollapsibleTrigger as p } from "../ui/collapsible.js";
4
- import { cn as r } from "../../lib/utils.js";
5
- const x = ({
6
- className: e,
7
- defaultOpen: a = !0,
8
- ...o
9
- }) => /* @__PURE__ */ t(
10
- g,
11
- {
12
- className: r("overflow-hidden rounded-lg text-sm", e),
13
- defaultOpen: a,
14
- ...o
15
- }
16
- ), N = ({
17
- className: e,
18
- children: a,
19
- title: o = "Chain of Thought",
20
- icon: s,
21
- isStreaming: n = !1,
22
- ...i
23
- }) => /* @__PURE__ */ t(
24
- p,
25
- {
26
- className: r(
27
- "group flex w-full items-center gap-2 text-muted-foreground text-sm transition-colors hover:text-foreground",
28
- e
29
- ),
30
- ...i,
31
- children: a ?? /* @__PURE__ */ l(d, { children: [
32
- s ?? /* @__PURE__ */ t(c, { className: "size-4 text-muted-foreground" }),
33
- /* @__PURE__ */ l("span", { className: "flex-1 text-left items-center gap-2", children: [
34
- o,
35
- n && /* @__PURE__ */ t("span", { className: "size-1.5 animate-pulse rounded-full bg-primary" })
36
- ] }),
37
- /* @__PURE__ */ t(
38
- m,
39
- {
40
- className: "size-4 text-muted-foreground opacity-0 transition-all group-focus-visible:opacity-100 group-hover:opacity-100 group-data-[state=open]:opacity-100 group-data-[state=closed]:rotate-180",
41
- "data-slot": "collapsible-chevron"
42
- }
43
- )
44
- ] })
45
- }
46
- ), C = ({
47
- className: e,
48
- ...a
49
- }) => /* @__PURE__ */ t(
50
- f,
51
- {
52
- className: r(
53
- "flex flex-col gap-2.5 pb-4 pt-3",
54
- "data-[state=closed]:animate-out data-[state=open]:animate-in",
55
- "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
56
- "data-[state=closed]:slide-out-to-top-1 data-[state=open]:slide-in-from-top-1",
57
- e
58
- ),
59
- ...a
60
- }
61
- ), b = {
62
- bullet: /* @__PURE__ */ t("span", { className: "mt-[7px] ml-1 size-1.5 shrink-0 rounded-full bg-muted-foreground/50" }),
63
- search: /* @__PURE__ */ t(u, { className: "mt-0.5 w-[18px] size-3.5 shrink-0 text-muted-foreground" }),
64
- image: /* @__PURE__ */ t(h, { className: "mt-0.5 size-3.5 shrink-0 text-muted-foreground" })
65
- }, T = ({
66
- variant: e = "bullet",
67
- className: a,
68
- children: o,
69
- ...s
70
- }) => {
71
- const n = typeof e == "string" ? b[e] : e;
72
- return /* @__PURE__ */ l(
73
- "div",
74
- {
75
- className: r("flex items-start gap-2 text-muted-foreground", a),
76
- ...s,
77
- children: [
78
- /* @__PURE__ */ t("span", { className: "flex shrink-0", children: n }),
79
- /* @__PURE__ */ t("span", { className: "min-w-0 flex-1 leading-relaxed", children: o })
80
- ]
81
- }
82
- );
83
- }, y = ({
84
- className: e,
85
- ...a
86
- }) => /* @__PURE__ */ t(
87
- "div",
88
- {
89
- className: r(
90
- "ml-[6px] flex flex-wrap gap-1.5 border-l-2 border-muted-foreground/20 py-0.5 pl-3",
91
- e
92
- ),
93
- ...a
94
- }
95
- ), O = ({
96
- className: e,
97
- children: a,
98
- ...o
99
- }) => /* @__PURE__ */ t(
100
- "a",
101
- {
102
- className: r(
103
- "inline-flex items-center rounded-full border border-border/60 bg-muted/50 px-2 py-0.5 text-xs text-muted-foreground transition-colors",
104
- o.href && "cursor-pointer hover:bg-accent hover:text-accent-foreground",
105
- e
106
- ),
107
- rel: "noreferrer",
108
- target: "_blank",
109
- ...o,
110
- children: a
111
- }
112
- ), v = ({
113
- src: e,
114
- alt: a = "",
115
- caption: o,
116
- className: s,
117
- ...n
118
- }) => /* @__PURE__ */ l(
119
- "figure",
120
- {
121
- className: r("ml-[22px] overflow-hidden rounded-lg border", s),
122
- ...n,
123
- children: [
124
- /* @__PURE__ */ t("img", { alt: a, className: "max-h-64 w-full object-cover", src: e }),
125
- o && /* @__PURE__ */ t("figcaption", { className: "border-t px-3 py-2 text-xs italic text-muted-foreground", children: o })
126
- ]
127
- }
128
- );
129
- x.displayName = "ChainOfThought";
130
- N.displayName = "ChainOfThoughtTrigger";
131
- C.displayName = "ChainOfThoughtContent";
132
- T.displayName = "ChainOfThoughtStep";
133
- y.displayName = "ChainOfThoughtSources";
134
- O.displayName = "ChainOfThoughtSource";
135
- v.displayName = "ChainOfThoughtImage";
136
- export {
137
- x as ChainOfThought,
138
- C as ChainOfThoughtContent,
139
- v as ChainOfThoughtImage,
140
- O as ChainOfThoughtSource,
141
- y as ChainOfThoughtSources,
142
- T as ChainOfThoughtStep,
143
- N as ChainOfThoughtTrigger
144
- };
145
- //# sourceMappingURL=chain-of-thought.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chain-of-thought.js","sources":["../../../src/components/ai/chain-of-thought.tsx"],"sourcesContent":["import { Brain, ChevronUpIcon, ImageIcon, SearchIcon } from \"lucide-react\";\n\nimport type { ComponentProps, ReactNode } from \"react\";\n\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"@/components/ui/collapsible\";\nimport { cn } from \"@/lib/utils\";\n\n// ---------------------------------------------------------------------------\n// ChainOfThought (root)\n// ---------------------------------------------------------------------------\n\nexport type ChainOfThoughtProps = ComponentProps<typeof Collapsible>;\n\nexport const ChainOfThought = ({\n className,\n defaultOpen = true,\n ...props\n}: ChainOfThoughtProps) => (\n <Collapsible\n className={cn(\"overflow-hidden rounded-lg text-sm\", className)}\n defaultOpen={defaultOpen}\n {...props}\n />\n);\n\n// ---------------------------------------------------------------------------\n// ChainOfThoughtTrigger\n// ---------------------------------------------------------------------------\n\nexport type ChainOfThoughtTriggerProps = ComponentProps<typeof CollapsibleTrigger> & {\n title?: string;\n icon?: ReactNode;\n /** When true, renders a subtle animated dot next to the title. */\n isStreaming?: boolean;\n};\n\nexport const ChainOfThoughtTrigger = ({\n className,\n children,\n title = \"Chain of Thought\",\n icon,\n isStreaming = false,\n ...props\n}: ChainOfThoughtTriggerProps) => (\n <CollapsibleTrigger\n className={cn(\n \"group flex w-full items-center gap-2 text-muted-foreground text-sm transition-colors hover:text-foreground\",\n className\n )}\n {...props}\n >\n {children ?? (\n <>\n {icon ?? <Brain className=\"size-4 text-muted-foreground\" />}\n <span className=\"flex-1 text-left items-center gap-2\">\n {title}\n {isStreaming && (\n <span className=\"size-1.5 animate-pulse rounded-full bg-primary\" />\n )}\n </span>\n <ChevronUpIcon\n className=\"size-4 text-muted-foreground opacity-0 transition-all group-focus-visible:opacity-100 group-hover:opacity-100 group-data-[state=open]:opacity-100 group-data-[state=closed]:rotate-180\"\n data-slot=\"collapsible-chevron\"\n />\n </>\n )}\n </CollapsibleTrigger>\n);\n\n// ---------------------------------------------------------------------------\n// ChainOfThoughtContent\n// ---------------------------------------------------------------------------\n\nexport type ChainOfThoughtContentProps = ComponentProps<typeof CollapsibleContent>;\n\nexport const ChainOfThoughtContent = ({\n className,\n ...props\n}: ChainOfThoughtContentProps) => (\n <CollapsibleContent\n className={cn(\n \"flex flex-col gap-2.5 pb-4 pt-3\",\n \"data-[state=closed]:animate-out data-[state=open]:animate-in\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:slide-out-to-top-1 data-[state=open]:slide-in-from-top-1\",\n className\n )}\n {...props}\n />\n);\n\n// ---------------------------------------------------------------------------\n// ChainOfThoughtStep\n// ---------------------------------------------------------------------------\n\nexport type ChainOfThoughtStepVariant = \"bullet\" | \"search\" | \"image\";\n\nexport type ChainOfThoughtStepProps = ComponentProps<\"div\"> & {\n /**\n * Visual prefix for the step.\n * - `\"bullet\"` — small dot (default, plain reasoning text)\n * - `\"search\"` — magnifying-glass (web search / tool call)\n * - `\"image\"` — image icon (image fetch / vision step)\n * - ReactNode — custom icon\n */\n variant?: ChainOfThoughtStepVariant | ReactNode;\n};\n\nconst STEP_ICONS: Record<ChainOfThoughtStepVariant, ReactNode> = {\n bullet: (\n <span className=\"mt-[7px] ml-1 size-1.5 shrink-0 rounded-full bg-muted-foreground/50\" />\n ),\n search: <SearchIcon className=\"mt-0.5 w-[18px] size-3.5 shrink-0 text-muted-foreground\" />,\n image: <ImageIcon className=\"mt-0.5 size-3.5 shrink-0 text-muted-foreground\" />,\n};\n\nexport const ChainOfThoughtStep = ({\n variant = \"bullet\",\n className,\n children,\n ...props\n}: ChainOfThoughtStepProps) => {\n const icon =\n typeof variant === \"string\"\n ? STEP_ICONS[variant as ChainOfThoughtStepVariant]\n : variant;\n\n return (\n <div\n className={cn(\"flex items-start gap-2 text-muted-foreground\", className)}\n {...props}\n >\n <span className=\"flex shrink-0\">{icon}</span>\n <span className=\"min-w-0 flex-1 leading-relaxed\">{children}</span>\n </div>\n );\n};\n\n// ---------------------------------------------------------------------------\n// ChainOfThoughtSources — inline chip group with left bar\n// ---------------------------------------------------------------------------\n\nexport type ChainOfThoughtSourcesProps = ComponentProps<\"div\">;\n\nexport const ChainOfThoughtSources = ({\n className,\n ...props\n}: ChainOfThoughtSourcesProps) => (\n <div\n className={cn(\n \"ml-[6px] flex flex-wrap gap-1.5 border-l-2 border-muted-foreground/20 py-0.5 pl-3\",\n className\n )}\n {...props}\n />\n);\n\nexport type ChainOfThoughtSourceProps = ComponentProps<\"a\">;\n\nexport const ChainOfThoughtSource = ({\n className,\n children,\n ...props\n}: ChainOfThoughtSourceProps) => (\n <a\n className={cn(\n \"inline-flex items-center rounded-full border border-border/60 bg-muted/50 px-2 py-0.5 text-xs text-muted-foreground transition-colors\",\n props.href && \"cursor-pointer hover:bg-accent hover:text-accent-foreground\",\n className\n )}\n rel=\"noreferrer\"\n target=\"_blank\"\n {...props}\n >\n {children}\n </a>\n);\n\n// ---------------------------------------------------------------------------\n// ChainOfThoughtImage — inline image with optional caption\n// ---------------------------------------------------------------------------\n\nexport type ChainOfThoughtImageProps = ComponentProps<\"figure\"> & {\n src: string;\n alt?: string;\n caption?: string;\n};\n\nexport const ChainOfThoughtImage = ({\n src,\n alt = \"\",\n caption,\n className,\n ...props\n}: ChainOfThoughtImageProps) => (\n <figure\n className={cn(\"ml-[22px] overflow-hidden rounded-lg border\", className)}\n {...props}\n >\n <img alt={alt} className=\"max-h-64 w-full object-cover\" src={src} />\n {caption && (\n <figcaption className=\"border-t px-3 py-2 text-xs italic text-muted-foreground\">\n {caption}\n </figcaption>\n )}\n </figure>\n);\n\nChainOfThought.displayName = \"ChainOfThought\";\nChainOfThoughtTrigger.displayName = \"ChainOfThoughtTrigger\";\nChainOfThoughtContent.displayName = \"ChainOfThoughtContent\";\nChainOfThoughtStep.displayName = \"ChainOfThoughtStep\";\nChainOfThoughtSources.displayName = \"ChainOfThoughtSources\";\nChainOfThoughtSource.displayName = \"ChainOfThoughtSource\";\nChainOfThoughtImage.displayName = \"ChainOfThoughtImage\";\n"],"names":["ChainOfThought","className","defaultOpen","props","jsx","Collapsible","cn","ChainOfThoughtTrigger","children","title","icon","isStreaming","CollapsibleTrigger","jsxs","Fragment","Brain","ChevronUpIcon","ChainOfThoughtContent","CollapsibleContent","STEP_ICONS","SearchIcon","ImageIcon","ChainOfThoughtStep","variant","ChainOfThoughtSources","ChainOfThoughtSource","ChainOfThoughtImage","src","alt","caption"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),l=require("motion/react"),r=require("react"),b=require("../ui/button.cjs"),j=require("../ui/code-block.cjs"),v=require("../ui/kbd.cjs"),i=require("../../lib/utils.cjs"),d=r.createContext(null),a=()=>{const e=r.useContext(d);if(!e)throw new Error("Confirmation components must be used within Confirmation");return e},g=1500,h=({className:e,approval:n,state:t,children:m,...c})=>{const f=r.useMemo(()=>({approval:n,state:t}),[n,t]),[p,C]=r.useState(!0),u=n?.approved===!0&&(t==="approval-responded"||t==="output-available"||t==="output-denied");if(r.useEffect(()=>{if(u){const s=setTimeout(()=>C(!1),g);return()=>clearTimeout(s)}},[u]),!n||t==="input-streaming"||t==="input-available")return null;const x=Object.fromEntries(Object.entries(c).filter(([s])=>s.startsWith("data-")||s.startsWith("aria-")));return o.jsx(d.Provider,{value:f,children:o.jsx(l.AnimatePresence,{children:p&&o.jsx(l.motion.div,{...x,className:i.cn("flex flex-col gap-4 rounded-xl border bg-card p-5 shadow-elevation-3",e),exit:{opacity:0,scale:.96},id:c.id,style:c.style,transition:{duration:.5,ease:"easeOut"},children:m})})})},q=({className:e,children:n,...t})=>o.jsx("h3",{className:i.cn("font-semibold text-base text-foreground",e),...t,children:n}),A=({className:e,children:n,...t})=>o.jsx(j.CodeBlock,{className:i.cn(e),...t,language:"bash",code:n?.toString()??""}),y=({children:e})=>{const{state:n}=a();return n!=="approval-requested"?null:o.jsx(o.Fragment,{children:e})},E=({children:e})=>{const{approval:n,state:t}=a();return!n?.approved||t!=="approval-responded"&&t!=="output-denied"&&t!=="output-available"?null:o.jsx(o.Fragment,{children:e})},N=({children:e})=>{const{approval:n,state:t}=a();return n?.approved!==!1||t!=="approval-responded"&&t!=="output-denied"&&t!=="output-available"?null:o.jsx(o.Fragment,{children:e})},R=({className:e,...n})=>{const{state:t}=a();return t!=="approval-requested"?null:o.jsx("div",{className:i.cn("flex items-center justify-between gap-2",e),...n})},S=({className:e,size:n="sm",...t})=>o.jsx(b.Button,{className:i.cn("gap-1.5",e),size:n,type:"button",...t}),T=({className:e,...n})=>o.jsx(v.Kbd,{className:i.cn("ml-0.5",e),...n});exports.Confirmation=h;exports.ConfirmationAccepted=E;exports.ConfirmationAction=S;exports.ConfirmationActions=R;exports.ConfirmationCode=A;exports.ConfirmationRejected=N;exports.ConfirmationRequest=y;exports.ConfirmationShortcut=T;exports.ConfirmationTitle=q;
2
- //# sourceMappingURL=confirmation.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"confirmation.cjs","sources":["../../../src/components/ai/confirmation.tsx"],"sourcesContent":["import { AnimatePresence, motion } from \"motion/react\";\nimport { createContext, useContext, useEffect, useMemo, useState } from \"react\";\n\n\nimport type { ToolUIPart } from \"ai\";\nimport type { ComponentProps, PropsWithChildren, ReactNode } from \"react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { CodeBlock } from \"@/components/ui/code-block\";\nimport { Kbd } from \"@/components/ui/kbd\";\nimport { cn } from \"@/lib/utils\";\n\n\ntype ToolUIPartApproval =\n | { id: string; approved?: never; reason?: never }\n | { id: string; approved: boolean; reason?: string }\n | { id: string; approved: true; reason?: string }\n | { id: string; approved: false; reason?: string }\n | undefined;\n\ninterface ConfirmationContextValue {\n approval: ToolUIPartApproval;\n state: ToolUIPart[\"state\"];\n}\n\nconst ConfirmationContext = createContext<ConfirmationContextValue | null>(null);\n\nconst useConfirmation = () => {\n const context = useContext(ConfirmationContext);\n if (!context) {\n throw new Error(\"Confirmation components must be used within Confirmation\");\n }\n return context;\n};\n\n// ---------------------------------------------------------------------------\n// Confirmation (root)\n// ---------------------------------------------------------------------------\n\nexport type ConfirmationProps = ComponentProps<\"div\"> & {\n approval?: ToolUIPartApproval;\n state: ToolUIPart[\"state\"];\n};\n\nconst ACCEPTED_HIDE_DELAY = 1500;\n\nexport const Confirmation = ({\n className,\n approval,\n state,\n children,\n ...props\n}: ConfirmationProps) => {\n const contextValue = useMemo(() => ({ approval, state }), [approval, state]);\n const [visible, setVisible] = useState(true);\n\n const isAccepted =\n approval?.approved === true &&\n (state === \"approval-responded\" ||\n state === \"output-available\" ||\n state === \"output-denied\");\n\n useEffect(() => {\n if (isAccepted) {\n const timer = setTimeout(() => setVisible(false), ACCEPTED_HIDE_DELAY);\n return () => clearTimeout(timer);\n }\n }, [isAccepted]);\n\n if (!approval || state === \"input-streaming\" || state === \"input-available\") {\n return null;\n }\n\n // Pass through data-* and aria-* only; drop event handlers to avoid\n // onDrag type conflict between React and framer-motion.\n const passthroughProps = Object.fromEntries(\n Object.entries(props).filter(([k]) => k.startsWith(\"data-\") || k.startsWith(\"aria-\"))\n );\n\n return (\n <ConfirmationContext.Provider value={contextValue}>\n <AnimatePresence>\n {visible && (\n <motion.div\n {...passthroughProps}\n className={cn(\n \"flex flex-col gap-4 rounded-xl border bg-card p-5 shadow-elevation-3\",\n className\n )}\n exit={{ opacity: 0, scale: 0.96 }}\n id={props.id}\n style={props.style}\n transition={{ duration: 0.5, ease: \"easeOut\" }}\n >\n {children}\n </motion.div>\n )}\n </AnimatePresence>\n </ConfirmationContext.Provider>\n );\n};\n\n// ---------------------------------------------------------------------------\n// ConfirmationTitle\n// ---------------------------------------------------------------------------\n\nexport type ConfirmationTitleProps = PropsWithChildren<ComponentProps<\"h3\">>;\n\nexport const ConfirmationTitle = ({\n className,\n children,\n ...props\n}: ConfirmationTitleProps) => (\n <h3\n className={cn(\"font-semibold text-base text-foreground\", className)}\n {...props}\n >\n {children}\n </h3>\n);\n\n// ---------------------------------------------------------------------------\n// ConfirmationCode — monospace command/code block\n// ---------------------------------------------------------------------------\n\nexport type ConfirmationCodeProps = ComponentProps<typeof CodeBlock>;\n\nexport const ConfirmationCode = ({\n className,\n children,\n ...props\n}: ConfirmationCodeProps) => (\n <CodeBlock className={cn(className)} {...props} language=\"bash\" code={children?.toString() ?? ''} />\n);\n\n// ---------------------------------------------------------------------------\n// ConfirmationRequest / Accepted / Rejected — conditional renderers\n// ---------------------------------------------------------------------------\n\nexport const ConfirmationRequest = ({ children }: { children?: ReactNode }) => {\n const { state } = useConfirmation();\n if (state !== \"approval-requested\") return null;\n return <>{children}</>;\n};\n\nexport const ConfirmationAccepted = ({ children }: { children?: ReactNode }) => {\n const { approval, state } = useConfirmation();\n if (\n !approval?.approved ||\n (state !== \"approval-responded\" &&\n state !== \"output-denied\" &&\n state !== \"output-available\")\n ) {\n return null;\n }\n return <>{children}</>;\n};\n\nexport const ConfirmationRejected = ({ children }: { children?: ReactNode }) => {\n const { approval, state } = useConfirmation();\n if (\n approval?.approved !== false ||\n (state !== \"approval-responded\" &&\n state !== \"output-denied\" &&\n state !== \"output-available\")\n ) {\n return null;\n }\n return <>{children}</>;\n};\n\n// ---------------------------------------------------------------------------\n// ConfirmationActions — deny left, allow buttons right\n// ---------------------------------------------------------------------------\n\nexport type ConfirmationActionsProps = ComponentProps<\"div\">;\n\nexport const ConfirmationActions = ({\n className,\n ...props\n}: ConfirmationActionsProps) => {\n const { state } = useConfirmation();\n if (state !== \"approval-requested\") return null;\n return (\n <div\n className={cn(\"flex items-center justify-between gap-2\", className)}\n {...props}\n />\n );\n};\n\n// ---------------------------------------------------------------------------\n// ConfirmationAction — individual button\n// ---------------------------------------------------------------------------\n\nexport type ConfirmationActionProps = ComponentProps<typeof Button>;\n\nexport const ConfirmationAction = ({\n className,\n size = \"sm\",\n ...props\n}: ConfirmationActionProps) => (\n <Button\n className={cn(\"gap-1.5\", className)}\n size={size}\n type=\"button\"\n {...props}\n />\n);\n\n// ---------------------------------------------------------------------------\n// ConfirmationShortcut — keyboard shortcut label inside a button\n// ---------------------------------------------------------------------------\n\nexport type ConfirmationShortcutProps = ComponentProps<typeof Kbd>;\n\nexport const ConfirmationShortcut = ({\n className,\n ...props\n}: ConfirmationShortcutProps) => (\n <Kbd className={cn(\"ml-0.5\", className)} {...props} />\n);\n"],"names":["ConfirmationContext","createContext","useConfirmation","context","useContext","ACCEPTED_HIDE_DELAY","Confirmation","className","approval","state","children","props","contextValue","useMemo","visible","setVisible","useState","isAccepted","useEffect","timer","passthroughProps","k","jsx","AnimatePresence","motion","cn","ConfirmationTitle","ConfirmationCode","CodeBlock","ConfirmationRequest","ConfirmationAccepted","ConfirmationRejected","ConfirmationActions","ConfirmationAction","size","Button","ConfirmationShortcut","Kbd"],"mappings":"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"}
@@ -1,109 +0,0 @@
1
- import { jsx as n, Fragment as u } from "react/jsx-runtime";
2
- import { AnimatePresence as b, motion as v } from "motion/react";
3
- import { createContext as x, useMemo as h, useState as g, useEffect as A, useContext as E } from "react";
4
- import { Button as N } from "../ui/button.js";
5
- import { CodeBlock as j } from "../ui/code-block.js";
6
- import { Kbd as w } from "../ui/kbd.js";
7
- import { cn as r } from "../../lib/utils.js";
8
- const l = x(null), a = () => {
9
- const e = E(l);
10
- if (!e)
11
- throw new Error("Confirmation components must be used within Confirmation");
12
- return e;
13
- }, y = 1500, R = ({
14
- className: e,
15
- approval: o,
16
- state: t,
17
- children: m,
18
- ...s
19
- }) => {
20
- const d = h(() => ({ approval: o, state: t }), [o, t]), [p, f] = g(!0), c = o?.approved === !0 && (t === "approval-responded" || t === "output-available" || t === "output-denied");
21
- if (A(() => {
22
- if (c) {
23
- const i = setTimeout(() => f(!1), y);
24
- return () => clearTimeout(i);
25
- }
26
- }, [c]), !o || t === "input-streaming" || t === "input-available")
27
- return null;
28
- const C = Object.fromEntries(
29
- Object.entries(s).filter(([i]) => i.startsWith("data-") || i.startsWith("aria-"))
30
- );
31
- return /* @__PURE__ */ n(l.Provider, { value: d, children: /* @__PURE__ */ n(b, { children: p && /* @__PURE__ */ n(
32
- v.div,
33
- {
34
- ...C,
35
- className: r(
36
- "flex flex-col gap-4 rounded-xl border bg-card p-5 shadow-elevation-3",
37
- e
38
- ),
39
- exit: { opacity: 0, scale: 0.96 },
40
- id: s.id,
41
- style: s.style,
42
- transition: { duration: 0.5, ease: "easeOut" },
43
- children: m
44
- }
45
- ) }) });
46
- }, V = ({
47
- className: e,
48
- children: o,
49
- ...t
50
- }) => /* @__PURE__ */ n(
51
- "h3",
52
- {
53
- className: r("font-semibold text-base text-foreground", e),
54
- ...t,
55
- children: o
56
- }
57
- ), W = ({
58
- className: e,
59
- children: o,
60
- ...t
61
- }) => /* @__PURE__ */ n(j, { className: r(e), ...t, language: "bash", code: o?.toString() ?? "" }), _ = ({ children: e }) => {
62
- const { state: o } = a();
63
- return o !== "approval-requested" ? null : /* @__PURE__ */ n(u, { children: e });
64
- }, F = ({ children: e }) => {
65
- const { approval: o, state: t } = a();
66
- return !o?.approved || t !== "approval-responded" && t !== "output-denied" && t !== "output-available" ? null : /* @__PURE__ */ n(u, { children: e });
67
- }, H = ({ children: e }) => {
68
- const { approval: o, state: t } = a();
69
- return o?.approved !== !1 || t !== "approval-responded" && t !== "output-denied" && t !== "output-available" ? null : /* @__PURE__ */ n(u, { children: e });
70
- }, I = ({
71
- className: e,
72
- ...o
73
- }) => {
74
- const { state: t } = a();
75
- return t !== "approval-requested" ? null : /* @__PURE__ */ n(
76
- "div",
77
- {
78
- className: r("flex items-center justify-between gap-2", e),
79
- ...o
80
- }
81
- );
82
- }, K = ({
83
- className: e,
84
- size: o = "sm",
85
- ...t
86
- }) => /* @__PURE__ */ n(
87
- N,
88
- {
89
- className: r("gap-1.5", e),
90
- size: o,
91
- type: "button",
92
- ...t
93
- }
94
- ), L = ({
95
- className: e,
96
- ...o
97
- }) => /* @__PURE__ */ n(w, { className: r("ml-0.5", e), ...o });
98
- export {
99
- R as Confirmation,
100
- F as ConfirmationAccepted,
101
- K as ConfirmationAction,
102
- I as ConfirmationActions,
103
- W as ConfirmationCode,
104
- H as ConfirmationRejected,
105
- _ as ConfirmationRequest,
106
- L as ConfirmationShortcut,
107
- V as ConfirmationTitle
108
- };
109
- //# sourceMappingURL=confirmation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"confirmation.js","sources":["../../../src/components/ai/confirmation.tsx"],"sourcesContent":["import { AnimatePresence, motion } from \"motion/react\";\nimport { createContext, useContext, useEffect, useMemo, useState } from \"react\";\n\n\nimport type { ToolUIPart } from \"ai\";\nimport type { ComponentProps, PropsWithChildren, ReactNode } from \"react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { CodeBlock } from \"@/components/ui/code-block\";\nimport { Kbd } from \"@/components/ui/kbd\";\nimport { cn } from \"@/lib/utils\";\n\n\ntype ToolUIPartApproval =\n | { id: string; approved?: never; reason?: never }\n | { id: string; approved: boolean; reason?: string }\n | { id: string; approved: true; reason?: string }\n | { id: string; approved: false; reason?: string }\n | undefined;\n\ninterface ConfirmationContextValue {\n approval: ToolUIPartApproval;\n state: ToolUIPart[\"state\"];\n}\n\nconst ConfirmationContext = createContext<ConfirmationContextValue | null>(null);\n\nconst useConfirmation = () => {\n const context = useContext(ConfirmationContext);\n if (!context) {\n throw new Error(\"Confirmation components must be used within Confirmation\");\n }\n return context;\n};\n\n// ---------------------------------------------------------------------------\n// Confirmation (root)\n// ---------------------------------------------------------------------------\n\nexport type ConfirmationProps = ComponentProps<\"div\"> & {\n approval?: ToolUIPartApproval;\n state: ToolUIPart[\"state\"];\n};\n\nconst ACCEPTED_HIDE_DELAY = 1500;\n\nexport const Confirmation = ({\n className,\n approval,\n state,\n children,\n ...props\n}: ConfirmationProps) => {\n const contextValue = useMemo(() => ({ approval, state }), [approval, state]);\n const [visible, setVisible] = useState(true);\n\n const isAccepted =\n approval?.approved === true &&\n (state === \"approval-responded\" ||\n state === \"output-available\" ||\n state === \"output-denied\");\n\n useEffect(() => {\n if (isAccepted) {\n const timer = setTimeout(() => setVisible(false), ACCEPTED_HIDE_DELAY);\n return () => clearTimeout(timer);\n }\n }, [isAccepted]);\n\n if (!approval || state === \"input-streaming\" || state === \"input-available\") {\n return null;\n }\n\n // Pass through data-* and aria-* only; drop event handlers to avoid\n // onDrag type conflict between React and framer-motion.\n const passthroughProps = Object.fromEntries(\n Object.entries(props).filter(([k]) => k.startsWith(\"data-\") || k.startsWith(\"aria-\"))\n );\n\n return (\n <ConfirmationContext.Provider value={contextValue}>\n <AnimatePresence>\n {visible && (\n <motion.div\n {...passthroughProps}\n className={cn(\n \"flex flex-col gap-4 rounded-xl border bg-card p-5 shadow-elevation-3\",\n className\n )}\n exit={{ opacity: 0, scale: 0.96 }}\n id={props.id}\n style={props.style}\n transition={{ duration: 0.5, ease: \"easeOut\" }}\n >\n {children}\n </motion.div>\n )}\n </AnimatePresence>\n </ConfirmationContext.Provider>\n );\n};\n\n// ---------------------------------------------------------------------------\n// ConfirmationTitle\n// ---------------------------------------------------------------------------\n\nexport type ConfirmationTitleProps = PropsWithChildren<ComponentProps<\"h3\">>;\n\nexport const ConfirmationTitle = ({\n className,\n children,\n ...props\n}: ConfirmationTitleProps) => (\n <h3\n className={cn(\"font-semibold text-base text-foreground\", className)}\n {...props}\n >\n {children}\n </h3>\n);\n\n// ---------------------------------------------------------------------------\n// ConfirmationCode — monospace command/code block\n// ---------------------------------------------------------------------------\n\nexport type ConfirmationCodeProps = ComponentProps<typeof CodeBlock>;\n\nexport const ConfirmationCode = ({\n className,\n children,\n ...props\n}: ConfirmationCodeProps) => (\n <CodeBlock className={cn(className)} {...props} language=\"bash\" code={children?.toString() ?? ''} />\n);\n\n// ---------------------------------------------------------------------------\n// ConfirmationRequest / Accepted / Rejected — conditional renderers\n// ---------------------------------------------------------------------------\n\nexport const ConfirmationRequest = ({ children }: { children?: ReactNode }) => {\n const { state } = useConfirmation();\n if (state !== \"approval-requested\") return null;\n return <>{children}</>;\n};\n\nexport const ConfirmationAccepted = ({ children }: { children?: ReactNode }) => {\n const { approval, state } = useConfirmation();\n if (\n !approval?.approved ||\n (state !== \"approval-responded\" &&\n state !== \"output-denied\" &&\n state !== \"output-available\")\n ) {\n return null;\n }\n return <>{children}</>;\n};\n\nexport const ConfirmationRejected = ({ children }: { children?: ReactNode }) => {\n const { approval, state } = useConfirmation();\n if (\n approval?.approved !== false ||\n (state !== \"approval-responded\" &&\n state !== \"output-denied\" &&\n state !== \"output-available\")\n ) {\n return null;\n }\n return <>{children}</>;\n};\n\n// ---------------------------------------------------------------------------\n// ConfirmationActions — deny left, allow buttons right\n// ---------------------------------------------------------------------------\n\nexport type ConfirmationActionsProps = ComponentProps<\"div\">;\n\nexport const ConfirmationActions = ({\n className,\n ...props\n}: ConfirmationActionsProps) => {\n const { state } = useConfirmation();\n if (state !== \"approval-requested\") return null;\n return (\n <div\n className={cn(\"flex items-center justify-between gap-2\", className)}\n {...props}\n />\n );\n};\n\n// ---------------------------------------------------------------------------\n// ConfirmationAction — individual button\n// ---------------------------------------------------------------------------\n\nexport type ConfirmationActionProps = ComponentProps<typeof Button>;\n\nexport const ConfirmationAction = ({\n className,\n size = \"sm\",\n ...props\n}: ConfirmationActionProps) => (\n <Button\n className={cn(\"gap-1.5\", className)}\n size={size}\n type=\"button\"\n {...props}\n />\n);\n\n// ---------------------------------------------------------------------------\n// ConfirmationShortcut — keyboard shortcut label inside a button\n// ---------------------------------------------------------------------------\n\nexport type ConfirmationShortcutProps = ComponentProps<typeof Kbd>;\n\nexport const ConfirmationShortcut = ({\n className,\n ...props\n}: ConfirmationShortcutProps) => (\n <Kbd className={cn(\"ml-0.5\", className)} {...props} />\n);\n"],"names":["ConfirmationContext","createContext","useConfirmation","context","useContext","ACCEPTED_HIDE_DELAY","Confirmation","className","approval","state","children","props","contextValue","useMemo","visible","setVisible","useState","isAccepted","useEffect","timer","passthroughProps","k","jsx","AnimatePresence","motion","cn","ConfirmationTitle","ConfirmationCode","CodeBlock","ConfirmationRequest","ConfirmationAccepted","ConfirmationRejected","ConfirmationActions","ConfirmationAction","size","Button","ConfirmationShortcut","Kbd"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),f=require("react"),b=require("../ui/button.cjs"),p=require("../ui/hover-card.cjs"),k=require("../ui/progress.cjs"),i=require("../../lib/utils.cjs"),S=100,g=10,h=24,l=12,j=2,U=.75,I=.9,T=e=>e>=I?"danger":e>=U?"warning":"normal",C={normal:"text-muted-foreground",warning:"text-warning",danger:"text-destructive"},O={normal:"",warning:"[&_[data-slot=progress-indicator]]:bg-warning",danger:"[&_[data-slot=progress-indicator]]:bg-destructive"},N=new Intl.NumberFormat("en-US",{currency:"USD",style:"currency"}),x=e=>e===void 0?void 0:N.format(e),w=f.createContext(null),u=()=>{const e=f.useContext(w);if(!e)throw new Error("Context components must be used within Context");return e},R=({usedTokens:e,maxTokens:n,usage:s,cost:o,...c})=>{const r=f.useMemo(()=>({cost:o,maxTokens:n,usage:s,usedTokens:e}),[o,n,s,e]);return t.jsx(w.Provider,{value:r,children:t.jsx(p.HoverCard,{closeDelay:0,openDelay:0,...c})})},D=()=>{const{usedTokens:e,maxTokens:n}=u(),s=2*Math.PI*g,o=e/n,c=s*(1-o);return t.jsxs("svg",{"aria-label":"Model context usage",height:"20",role:"img",style:{color:"currentcolor"},viewBox:`0 0 ${h} ${h}`,width:"20",children:[t.jsx("circle",{cx:l,cy:l,fill:"none",opacity:"0.25",r:g,stroke:"currentColor",strokeWidth:j}),t.jsx("circle",{cx:l,cy:l,fill:"none",opacity:"0.7",r:g,stroke:"currentColor",strokeDasharray:`${s} ${s}`,strokeDashoffset:c,strokeLinecap:"round",strokeWidth:j,style:{transform:"rotate(-90deg)",transformOrigin:"center"}})]})},F=({children:e,showPercentage:n=!1,...s})=>{const{usedTokens:o,maxTokens:c}=u(),r=o/c,a=T(r),m=new Intl.NumberFormat("en-US",{maximumFractionDigits:1,style:"percent"}).format(r);return t.jsx(p.HoverCardTrigger,{asChild:!0,children:e??t.jsxs(b.Button,{type:"button",variant:"ghost",...s,children:[n?t.jsx("span",{className:i.cn("font-medium",C[a]),children:m}):null,t.jsx("span",{className:C[a],children:t.jsx(D,{})})]})})},_=({className:e,...n})=>t.jsx(p.HoverCardContent,{className:i.cn("min-w-60 divide-y overflow-hidden p-0",e),...n}),E=({children:e,className:n,...s})=>{const{usedTokens:o,maxTokens:c}=u(),r=o/c,a=T(r),m=new Intl.NumberFormat("en-US",{maximumFractionDigits:1,style:"percent"}).format(r),y=new Intl.NumberFormat("en-US",{notation:"compact"}).format(o),v=new Intl.NumberFormat("en-US",{notation:"compact"}).format(c);return t.jsx("div",{className:i.cn("w-full space-y-2 p-3",n),...s,children:e??t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"flex items-center justify-between gap-3 text-xs",children:[t.jsx("p",{className:i.cn(C[a]),children:m}),t.jsxs("p",{className:"font-mono text-muted-foreground",children:[y," / ",v]})]}),t.jsx("div",{className:"space-y-2",children:t.jsx(k.Progress,{"aria-label":"Context window usage",className:i.cn("bg-muted",O[a]),value:r*S})})]})})},P=({children:e,className:n,...s})=>t.jsx("div",{className:i.cn("w-full p-3",n),...s,children:e}),H=({children:e,className:n,...s})=>{const{cost:o}=u(),c=o?.total===void 0?"—":N.format(o.total);return t.jsx("div",{className:i.cn("flex w-full items-center justify-between gap-3 bg-muted/50 p-3 text-xs",n),...s,children:e??t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"text-muted-foreground",children:"Total cost"}),t.jsx("span",{children:c})]})})},d=({tokens:e,costText:n})=>t.jsxs("span",{children:[e===void 0?"—":new Intl.NumberFormat("en-US",{notation:"compact"}).format(e),n?t.jsxs("span",{className:"ml-2 text-muted-foreground",children:["• ",n]}):null]}),A=({className:e,children:n,...s})=>{const{usage:o,cost:c}=u(),r=o?.inputTokens??0;if(n)return n;if(!r)return null;const a=x(c?.input);return t.jsxs("div",{className:i.cn("flex items-center justify-between text-xs",e),...s,children:[t.jsx("span",{className:"text-muted-foreground",children:"Input"}),t.jsx(d,{costText:a,tokens:r})]})},q=({className:e,children:n,...s})=>{const{usage:o,cost:c}=u(),r=o?.outputTokens??0;if(n)return n;if(!r)return null;const a=x(c?.output);return t.jsxs("div",{className:i.cn("flex items-center justify-between text-xs",e),...s,children:[t.jsx("span",{className:"text-muted-foreground",children:"Output"}),t.jsx(d,{costText:a,tokens:r})]})},M=({className:e,children:n,...s})=>{const{usage:o,cost:c}=u(),r=o?.reasoningTokens??0;if(n)return n;if(!r)return null;const a=x(c?.reasoning);return t.jsxs("div",{className:i.cn("flex items-center justify-between text-xs",e),...s,children:[t.jsx("span",{className:"text-muted-foreground",children:"Reasoning"}),t.jsx(d,{costText:a,tokens:r})]})},W=({className:e,children:n,...s})=>{const{usage:o,cost:c}=u(),r=o?.cachedInputTokens??0;if(n)return n;if(!r)return null;const a=x(c?.cache);return t.jsxs("div",{className:i.cn("flex items-center justify-between text-xs",e),...s,children:[t.jsx("span",{className:"text-muted-foreground",children:"Cache"}),t.jsx(d,{costText:a,tokens:r})]})};exports.Context=R;exports.ContextCacheUsage=W;exports.ContextContent=_;exports.ContextContentBody=P;exports.ContextContentFooter=H;exports.ContextContentHeader=E;exports.ContextInputUsage=A;exports.ContextOutputUsage=q;exports.ContextReasoningUsage=M;exports.ContextTrigger=F;
2
- //# sourceMappingURL=context.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.cjs","sources":["../../../src/components/ai/context.tsx"],"sourcesContent":["import { createContext, useContext, useMemo } from \"react\";\n\nimport type { LanguageModelUsage } from \"ai\";\nimport type { ComponentProps } from \"react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n HoverCard,\n HoverCardContent,\n HoverCardTrigger,\n} from \"@/components/ui/hover-card\";\nimport { Progress } from \"@/components/ui/progress\";\nimport { cn } from \"@/lib/utils\";\n\n\nconst PERCENT_MAX = 100;\nconst ICON_RADIUS = 10;\nconst ICON_VIEWBOX = 24;\nconst ICON_CENTER = 12;\nconst ICON_STROKE_WIDTH = 2;\nconst WARN_THRESHOLD = 0.75;\nconst DANGER_THRESHOLD = 0.9;\n\ntype UsageStatus = \"normal\" | \"warning\" | \"danger\";\n\nconst getUsageStatus = (pct: number): UsageStatus => {\n if (pct >= DANGER_THRESHOLD) return \"danger\";\n if (pct >= WARN_THRESHOLD) return \"warning\";\n return \"normal\";\n};\n\nconst STATUS_TEXT: Record<UsageStatus, string> = {\n normal: \"text-muted-foreground\",\n warning: \"text-warning\",\n danger: \"text-destructive\",\n};\n\nconst STATUS_PROGRESS: Record<UsageStatus, string> = {\n normal: \"\",\n warning: \"[&_[data-slot=progress-indicator]]:bg-warning\",\n danger: \"[&_[data-slot=progress-indicator]]:bg-destructive\",\n};\n\nconst USD_FORMAT = new Intl.NumberFormat(\"en-US\", {\n currency: \"USD\",\n style: \"currency\",\n});\n\nconst formatUSD = (value: number | undefined): string | undefined =>\n value === undefined ? undefined : USD_FORMAT.format(value);\n\nexport interface CostBreakdown {\n total?: number;\n input?: number;\n output?: number;\n reasoning?: number;\n cache?: number;\n}\n\ninterface ContextSchema {\n usedTokens: number;\n maxTokens: number;\n usage?: LanguageModelUsage;\n cost?: CostBreakdown;\n}\n\nconst ContextContext = createContext<ContextSchema | null>(null);\n\nconst useContextValue = () => {\n const context = useContext(ContextContext);\n\n if (!context) {\n throw new Error(\"Context components must be used within Context\");\n }\n\n return context;\n};\n\nexport type ContextProps = ComponentProps<typeof HoverCard> & ContextSchema;\n\nexport const Context = ({\n usedTokens,\n maxTokens,\n usage,\n cost,\n ...props\n}: ContextProps) => {\n const contextValue = useMemo(\n () => ({ cost, maxTokens, usage, usedTokens }),\n [cost, maxTokens, usage, usedTokens]\n );\n\n return (\n <ContextContext.Provider value={contextValue}>\n <HoverCard closeDelay={0} openDelay={0} {...props} />\n </ContextContext.Provider>\n );\n};\n\nconst ContextIcon = () => {\n const { usedTokens, maxTokens } = useContextValue();\n const circumference = 2 * Math.PI * ICON_RADIUS;\n const usedPercent = usedTokens / maxTokens;\n const dashOffset = circumference * (1 - usedPercent);\n\n return (\n <svg\n aria-label=\"Model context usage\"\n height=\"20\"\n role=\"img\"\n style={{ color: \"currentcolor\" }}\n viewBox={`0 0 ${ICON_VIEWBOX} ${ICON_VIEWBOX}`}\n width=\"20\"\n >\n <circle\n cx={ICON_CENTER}\n cy={ICON_CENTER}\n fill=\"none\"\n opacity=\"0.25\"\n r={ICON_RADIUS}\n stroke=\"currentColor\"\n strokeWidth={ICON_STROKE_WIDTH}\n />\n <circle\n cx={ICON_CENTER}\n cy={ICON_CENTER}\n fill=\"none\"\n opacity=\"0.7\"\n r={ICON_RADIUS}\n stroke=\"currentColor\"\n strokeDasharray={`${circumference} ${circumference}`}\n strokeDashoffset={dashOffset}\n strokeLinecap=\"round\"\n strokeWidth={ICON_STROKE_WIDTH}\n style={{ transform: \"rotate(-90deg)\", transformOrigin: \"center\" }}\n />\n </svg>\n );\n};\n\nexport type ContextTriggerProps = ComponentProps<typeof Button> & {\n showPercentage?: boolean;\n};\n\nexport const ContextTrigger = ({\n children,\n showPercentage = false,\n ...props\n}: ContextTriggerProps) => {\n const { usedTokens, maxTokens } = useContextValue();\n const usedPercent = usedTokens / maxTokens;\n const status = getUsageStatus(usedPercent);\n const renderedPercent = new Intl.NumberFormat(\"en-US\", {\n maximumFractionDigits: 1,\n style: \"percent\",\n }).format(usedPercent);\n\n return (\n <HoverCardTrigger asChild>\n {children ?? (\n <Button type=\"button\" variant=\"ghost\" {...props}>\n {showPercentage ? (\n <span className={cn(\"font-medium\", STATUS_TEXT[status])}>\n {renderedPercent}\n </span>\n ) : null}\n <span className={STATUS_TEXT[status]}>\n <ContextIcon />\n </span>\n </Button>\n )}\n </HoverCardTrigger>\n );\n};\n\nexport type ContextContentProps = ComponentProps<typeof HoverCardContent>;\n\nexport const ContextContent = ({\n className,\n ...props\n}: ContextContentProps) => (\n <HoverCardContent\n className={cn(\"min-w-60 divide-y overflow-hidden p-0\", className)}\n {...props}\n />\n);\n\nexport type ContextContentHeaderProps = ComponentProps<\"div\">;\n\nexport const ContextContentHeader = ({\n children,\n className,\n ...props\n}: ContextContentHeaderProps) => {\n const { usedTokens, maxTokens } = useContextValue();\n const usedPercent = usedTokens / maxTokens;\n const status = getUsageStatus(usedPercent);\n const displayPct = new Intl.NumberFormat(\"en-US\", {\n maximumFractionDigits: 1,\n style: \"percent\",\n }).format(usedPercent);\n const used = new Intl.NumberFormat(\"en-US\", {\n notation: \"compact\",\n }).format(usedTokens);\n const total = new Intl.NumberFormat(\"en-US\", {\n notation: \"compact\",\n }).format(maxTokens);\n\n return (\n <div className={cn(\"w-full space-y-2 p-3\", className)} {...props}>\n {children ?? (\n <>\n <div className=\"flex items-center justify-between gap-3 text-xs\">\n <p className={cn(STATUS_TEXT[status])}>{displayPct}</p>\n <p className=\"font-mono text-muted-foreground\">\n {used} / {total}\n </p>\n </div>\n <div className=\"space-y-2\">\n <Progress\n aria-label=\"Context window usage\"\n className={cn(\"bg-muted\", STATUS_PROGRESS[status])}\n value={usedPercent * PERCENT_MAX}\n />\n </div>\n </>\n )}\n </div>\n );\n};\n\nexport type ContextContentBodyProps = ComponentProps<\"div\">;\n\nexport const ContextContentBody = ({\n children,\n className,\n ...props\n}: ContextContentBodyProps) => (\n <div className={cn(\"w-full p-3\", className)} {...props}>\n {children}\n </div>\n);\n\nexport type ContextContentFooterProps = ComponentProps<\"div\">;\n\nexport const ContextContentFooter = ({\n children,\n className,\n ...props\n}: ContextContentFooterProps) => {\n const { cost } = useContextValue();\n const totalCost = cost?.total === undefined ? \"—\" : USD_FORMAT.format(cost.total);\n\n return (\n <div\n className={cn(\n \"flex w-full items-center justify-between gap-3 bg-muted/50 p-3 text-xs\",\n className\n )}\n {...props}\n >\n {children ?? (\n <>\n <span className=\"text-muted-foreground\">Total cost</span>\n <span>{totalCost}</span>\n </>\n )}\n </div>\n );\n};\n\nconst TokensWithCost = ({\n tokens,\n costText,\n}: {\n tokens?: number;\n costText?: string;\n}) => (\n <span>\n {tokens === undefined\n ? \"—\"\n : new Intl.NumberFormat(\"en-US\", {\n notation: \"compact\",\n }).format(tokens)}\n {costText ? (\n <span className=\"ml-2 text-muted-foreground\">• {costText}</span>\n ) : null}\n </span>\n);\n\nexport type ContextInputUsageProps = ComponentProps<\"div\">;\n\nexport const ContextInputUsage = ({\n className,\n children,\n ...props\n}: ContextInputUsageProps) => {\n const { usage, cost } = useContextValue();\n const inputTokens = usage?.inputTokens ?? 0;\n\n if (children) {\n return children;\n }\n\n if (!inputTokens) {\n return null;\n }\n\n const inputCostText = formatUSD(cost?.input);\n\n return (\n <div\n className={cn(\"flex items-center justify-between text-xs\", className)}\n {...props}\n >\n <span className=\"text-muted-foreground\">Input</span>\n <TokensWithCost costText={inputCostText} tokens={inputTokens} />\n </div>\n );\n};\n\nexport type ContextOutputUsageProps = ComponentProps<\"div\">;\n\nexport const ContextOutputUsage = ({\n className,\n children,\n ...props\n}: ContextOutputUsageProps) => {\n const { usage, cost } = useContextValue();\n const outputTokens = usage?.outputTokens ?? 0;\n\n if (children) {\n return children;\n }\n\n if (!outputTokens) {\n return null;\n }\n\n const outputCostText = formatUSD(cost?.output);\n\n return (\n <div\n className={cn(\"flex items-center justify-between text-xs\", className)}\n {...props}\n >\n <span className=\"text-muted-foreground\">Output</span>\n <TokensWithCost costText={outputCostText} tokens={outputTokens} />\n </div>\n );\n};\n\nexport type ContextReasoningUsageProps = ComponentProps<\"div\">;\n\nexport const ContextReasoningUsage = ({\n className,\n children,\n ...props\n}: ContextReasoningUsageProps) => {\n const { usage, cost } = useContextValue();\n const reasoningTokens = usage?.reasoningTokens ?? 0;\n\n if (children) {\n return children;\n }\n\n if (!reasoningTokens) {\n return null;\n }\n\n const reasoningCostText = formatUSD(cost?.reasoning);\n\n return (\n <div\n className={cn(\"flex items-center justify-between text-xs\", className)}\n {...props}\n >\n <span className=\"text-muted-foreground\">Reasoning</span>\n <TokensWithCost costText={reasoningCostText} tokens={reasoningTokens} />\n </div>\n );\n};\n\nexport type ContextCacheUsageProps = ComponentProps<\"div\">;\n\nexport const ContextCacheUsage = ({\n className,\n children,\n ...props\n}: ContextCacheUsageProps) => {\n const { usage, cost } = useContextValue();\n const cacheTokens = usage?.cachedInputTokens ?? 0;\n\n if (children) {\n return children;\n }\n\n if (!cacheTokens) {\n return null;\n }\n\n const cacheCostText = formatUSD(cost?.cache);\n\n return (\n <div\n className={cn(\"flex items-center justify-between text-xs\", className)}\n {...props}\n >\n <span className=\"text-muted-foreground\">Cache</span>\n <TokensWithCost costText={cacheCostText} tokens={cacheTokens} />\n </div>\n );\n};\n"],"names":["PERCENT_MAX","ICON_RADIUS","ICON_VIEWBOX","ICON_CENTER","ICON_STROKE_WIDTH","WARN_THRESHOLD","DANGER_THRESHOLD","getUsageStatus","pct","STATUS_TEXT","STATUS_PROGRESS","USD_FORMAT","formatUSD","value","ContextContext","createContext","useContextValue","context","useContext","Context","usedTokens","maxTokens","usage","cost","props","contextValue","useMemo","jsx","HoverCard","ContextIcon","circumference","usedPercent","dashOffset","jsxs","ContextTrigger","children","showPercentage","status","renderedPercent","HoverCardTrigger","Button","cn","ContextContent","className","HoverCardContent","ContextContentHeader","displayPct","used","total","Fragment","Progress","ContextContentBody","ContextContentFooter","totalCost","TokensWithCost","tokens","costText","ContextInputUsage","inputTokens","inputCostText","ContextOutputUsage","outputTokens","outputCostText","ContextReasoningUsage","reasoningTokens","reasoningCostText","ContextCacheUsage","cacheTokens","cacheCostText"],"mappings":"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"}