@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,38 +0,0 @@
1
- import { jsx as t } from "react/jsx-runtime";
2
- import { useCallback as i } from "react";
3
- import { Button as p } from "../ui/button.js";
4
- import { cn as l } from "../../lib/utils.js";
5
- const w = ({
6
- className: o,
7
- children: r,
8
- ...e
9
- }) => /* @__PURE__ */ t("div", { className: "w-full overflow-x-auto py-1", ...e, children: /* @__PURE__ */ t("div", { className: l("flex w-max flex-nowrap items-center gap-2 px-4", o), children: r }) }), h = ({
10
- suggestion: o,
11
- onClick: r,
12
- className: e,
13
- variant: n = "outline",
14
- size: m = "sm",
15
- children: a,
16
- ...c
17
- }) => {
18
- const s = i(() => {
19
- r?.(o);
20
- }, [r, o]);
21
- return /* @__PURE__ */ t(
22
- p,
23
- {
24
- className: l("cursor-pointer rounded-full px-4", e),
25
- onClick: s,
26
- size: m,
27
- type: "button",
28
- variant: n,
29
- ...c,
30
- children: a || o
31
- }
32
- );
33
- };
34
- export {
35
- h as Suggestion,
36
- w as Suggestions
37
- };
38
- //# sourceMappingURL=suggestion.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"suggestion.js","sources":["../../../src/components/ai/suggestion.tsx"],"sourcesContent":["import { useCallback } from \"react\";\n\nimport type { ComponentProps } from \"react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\n\nexport type SuggestionsProps = ComponentProps<\"div\">;\n\nexport const Suggestions = ({\n className,\n children,\n ...props\n}: SuggestionsProps) => (\n <div className=\"w-full overflow-x-auto py-1\" {...props}>\n <div className={cn(\"flex w-max flex-nowrap items-center gap-2 px-4\", className)}>\n {children}\n </div>\n </div>\n);\n\nexport type SuggestionProps = Omit<ComponentProps<typeof Button>, \"onClick\"> & {\n suggestion: string;\n onClick?: (suggestion: string) => void;\n};\n\nexport const Suggestion = ({\n suggestion,\n onClick,\n className,\n variant = \"outline\",\n size = \"sm\",\n children,\n ...props\n}: SuggestionProps) => {\n const handleClick = useCallback(() => {\n onClick?.(suggestion);\n }, [onClick, suggestion]);\n\n return (\n <Button\n className={cn(\"cursor-pointer rounded-full px-4\", className)}\n onClick={handleClick}\n size={size}\n type=\"button\"\n variant={variant}\n {...props}\n >\n {children || suggestion}\n </Button>\n );\n};\n"],"names":["Suggestions","className","children","props","jsx","cn","Suggestion","suggestion","onClick","variant","size","handleClick","useCallback","Button"],"mappings":";;;;AASO,MAAMA,IAAc,CAAC;AAAA,EAC1B,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,MACE,gBAAAC,EAAC,OAAA,EAAI,WAAU,+BAA+B,GAAGD,GAC/C,UAAA,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAG,kDAAkDJ,CAAS,GAC3E,UAAAC,GACH,EAAA,CACF,GAQWI,IAAa,CAAC;AAAA,EACzB,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAP;AAAA,EACA,SAAAQ,IAAU;AAAA,EACV,MAAAC,IAAO;AAAA,EACP,UAAAR;AAAA,EACA,GAAGC;AACL,MAAuB;AACrB,QAAMQ,IAAcC,EAAY,MAAM;AACpC,IAAAJ,IAAUD,CAAU;AAAA,EACtB,GAAG,CAACC,GAASD,CAAU,CAAC;AAExB,SACE,gBAAAH;AAAA,IAACS;AAAA,IAAA;AAAA,MACC,WAAWR,EAAG,oCAAoCJ,CAAS;AAAA,MAC3D,SAASU;AAAA,MACT,MAAAD;AAAA,MACA,MAAK;AAAA,MACL,SAAAD;AAAA,MACC,GAAGN;AAAA,MAEH,UAAAD,KAAYK;AAAA,IAAA;AAAA,EAAA;AAGnB;"}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),C=require("@radix-ui/react-use-controllable-state"),m=require("lucide-react"),a=require("react"),i=require("../ui/collapsible.cjs"),r=require("../../lib/utils.cjs"),T=({children:s,className:e,...o})=>t.jsx("div",{className:r.cn("inline-flex items-center gap-1 rounded-md border bg-secondary px-1.5 py-0.5 text-foreground text-xs",e),...o,children:s}),h=({children:s,className:e,...o})=>t.jsx("div",{className:r.cn("text-muted-foreground text-sm",e),...o,children:s}),j=1e3,k=({defaultOpen:s=!0,isStreaming:e=!1,open:o,onOpenChange:l,className:f,...x})=>{const[c,n]=C.useControllableState({defaultProp:s,onChange:l,prop:o}),d=a.useRef(e),[p,g]=a.useState(!1);a.useEffect(()=>{e&&(d.current=!0)},[e]),a.useEffect(()=>{if(d.current&&!e&&c&&!p){const u=setTimeout(()=>{n(!1),g(!0)},j);return()=>clearTimeout(u)}},[e,c,n,p]);const b=a.useCallback(u=>n(u),[n]);return t.jsx(i.Collapsible,{className:r.cn(f),onOpenChange:b,open:c,...x})},v=({children:s,className:e,title:o,...l})=>t.jsx(i.CollapsibleTrigger,{asChild:!0,className:r.cn("group",e),...l,children:s??t.jsxs("button",{type:"button",className:"group flex w-full cursor-pointer items-center gap-2 text-muted-foreground text-sm transition-colors hover:text-foreground",children:[t.jsx(m.SearchIcon,{className:"size-4"}),t.jsx("span",{className:"text-sm",children:o}),t.jsx(m.ChevronDownIcon,{className:"size-4 opacity-0 transition-all group-focus-visible:opacity-100 group-hover:opacity-100 group-data-[state=open]:rotate-180 group-data-[state=open]:opacity-100","data-slot":"collapsible-chevron"})]})}),y=({children:s,className:e,...o})=>t.jsx(i.CollapsibleContent,{className:r.cn("data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in",e),...o,children:t.jsx("div",{className:"mt-4 space-y-2 border-border border-l-2 pl-4",children:s})});exports.Task=k;exports.TaskContent=y;exports.TaskItem=h;exports.TaskItemFile=T;exports.TaskTrigger=v;
2
- //# sourceMappingURL=task.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task.cjs","sources":["../../../src/components/ai/task.tsx"],"sourcesContent":["import { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { ChevronDownIcon, SearchIcon } from \"lucide-react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport type { ComponentProps } from \"react\";\n\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"@/components/ui/collapsible\";\nimport { cn } from \"@/lib/utils\";\n\nexport type TaskItemFileProps = ComponentProps<\"div\">;\n\nexport const TaskItemFile = ({\n children,\n className,\n ...props\n}: TaskItemFileProps) => (\n <div\n className={cn(\n \"inline-flex items-center gap-1 rounded-md border bg-secondary px-1.5 py-0.5 text-foreground text-xs\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n\nexport type TaskItemProps = ComponentProps<\"div\">;\n\nexport const TaskItem = ({ children, className, ...props }: TaskItemProps) => (\n <div className={cn(\"text-muted-foreground text-sm\", className)} {...props}>\n {children}\n </div>\n);\n\nconst AUTO_CLOSE_DELAY = 1000;\n\nexport type TaskProps = ComponentProps<typeof Collapsible> & {\n isStreaming?: boolean;\n};\n\nexport const Task = ({\n defaultOpen = true,\n isStreaming = false,\n open,\n onOpenChange,\n className,\n ...props\n}: TaskProps) => {\n const [isOpen, setIsOpen] = useControllableState<boolean>({\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n prop: open,\n });\n\n const hasEverStreamedRef = useRef(isStreaming);\n const [hasAutoClosed, setHasAutoClosed] = useState(false);\n\n useEffect(() => {\n if (isStreaming) hasEverStreamedRef.current = true;\n }, [isStreaming]);\n\n useEffect(() => {\n if (hasEverStreamedRef.current && !isStreaming && isOpen && !hasAutoClosed) {\n const timer = setTimeout(() => {\n setIsOpen(false);\n setHasAutoClosed(true);\n }, AUTO_CLOSE_DELAY);\n return () => clearTimeout(timer);\n }\n }, [isStreaming, isOpen, setIsOpen, hasAutoClosed]);\n\n const handleOpenChange = useCallback(\n (newOpen: boolean) => setIsOpen(newOpen),\n [setIsOpen]\n );\n\n return (\n <Collapsible\n className={cn(className)}\n onOpenChange={handleOpenChange}\n open={isOpen}\n {...props}\n />\n );\n};\n\nexport type TaskTriggerProps = ComponentProps<typeof CollapsibleTrigger> & {\n title: string;\n};\n\nexport const TaskTrigger = ({\n children,\n className,\n title,\n ...props\n}: TaskTriggerProps) => (\n <CollapsibleTrigger asChild className={cn(\"group\", className)} {...props}>\n {children ?? (\n <button\n type=\"button\"\n className=\"group flex w-full cursor-pointer items-center gap-2 text-muted-foreground text-sm transition-colors hover:text-foreground\"\n >\n <SearchIcon className=\"size-4\" />\n <span className=\"text-sm\">{title}</span>\n <ChevronDownIcon\n className=\"size-4 opacity-0 transition-all group-focus-visible:opacity-100 group-hover:opacity-100 group-data-[state=open]:rotate-180 group-data-[state=open]:opacity-100\"\n data-slot=\"collapsible-chevron\"\n />\n </button>\n )}\n </CollapsibleTrigger>\n);\n\nexport type TaskContentProps = ComponentProps<typeof CollapsibleContent>;\n\nexport const TaskContent = ({\n children,\n className,\n ...props\n}: TaskContentProps) => (\n <CollapsibleContent\n className={cn(\n \"data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in\",\n className\n )}\n {...props}\n >\n <div className=\"mt-4 space-y-2 border-border border-l-2 pl-4\">\n {children}\n </div>\n </CollapsibleContent>\n);\n"],"names":["TaskItemFile","children","className","props","jsx","cn","TaskItem","AUTO_CLOSE_DELAY","Task","defaultOpen","isStreaming","open","onOpenChange","isOpen","setIsOpen","useControllableState","hasEverStreamedRef","useRef","hasAutoClosed","setHasAutoClosed","useState","useEffect","timer","handleOpenChange","useCallback","newOpen","Collapsible","TaskTrigger","title","CollapsibleTrigger","jsxs","SearchIcon","ChevronDownIcon","TaskContent","CollapsibleContent"],"mappings":"0RAeaA,EAAe,CAAC,CAC3B,SAAAC,EACA,UAAAC,EACA,GAAGC,CACL,IACEC,EAAAA,IAAC,MAAA,CACC,UAAWC,EAAAA,GACT,sGACAH,CAAA,EAED,GAAGC,EAEH,SAAAF,CAAA,CACH,EAKWK,EAAW,CAAC,CAAE,SAAAL,EAAU,UAAAC,EAAW,GAAGC,CAAA,IACjDC,MAAC,MAAA,CAAI,UAAWC,EAAAA,GAAG,gCAAiCH,CAAS,EAAI,GAAGC,EACjE,SAAAF,CAAA,CACH,EAGIM,EAAmB,IAMZC,EAAO,CAAC,CACnB,YAAAC,EAAc,GACd,YAAAC,EAAc,GACd,KAAAC,EACA,aAAAC,EACA,UAAAV,EACA,GAAGC,CACL,IAAiB,CACf,KAAM,CAACU,EAAQC,CAAS,EAAIC,uBAA8B,CACxD,YAAaN,EACb,SAAUG,EACV,KAAMD,CAAA,CACP,EAEKK,EAAqBC,EAAAA,OAAOP,CAAW,EACvC,CAACQ,EAAeC,CAAgB,EAAIC,EAAAA,SAAS,EAAK,EAExDC,EAAAA,UAAU,IAAM,CACVX,MAAgC,QAAU,GAChD,EAAG,CAACA,CAAW,CAAC,EAEhBW,EAAAA,UAAU,IAAM,CACd,GAAIL,EAAmB,SAAW,CAACN,GAAeG,GAAU,CAACK,EAAe,CAC1E,MAAMI,EAAQ,WAAW,IAAM,CAC7BR,EAAU,EAAK,EACfK,EAAiB,EAAI,CACvB,EAAGZ,CAAgB,EACnB,MAAO,IAAM,aAAae,CAAK,CACjC,CACF,EAAG,CAACZ,EAAaG,EAAQC,EAAWI,CAAa,CAAC,EAElD,MAAMK,EAAmBC,EAAAA,YACtBC,GAAqBX,EAAUW,CAAO,EACvC,CAACX,CAAS,CAAA,EAGZ,OACEV,EAAAA,IAACsB,EAAAA,YAAA,CACC,UAAWrB,EAAAA,GAAGH,CAAS,EACvB,aAAcqB,EACd,KAAMV,EACL,GAAGV,CAAA,CAAA,CAGV,EAMawB,EAAc,CAAC,CAC1B,SAAA1B,EACA,UAAAC,EACA,MAAA0B,EACA,GAAGzB,CACL,IACEC,EAAAA,IAACyB,EAAAA,mBAAA,CAAmB,QAAO,GAAC,UAAWxB,EAAAA,GAAG,QAASH,CAAS,EAAI,GAAGC,EAChE,SAAAF,GACC6B,EAAAA,KAAC,SAAA,CACC,KAAK,SACL,UAAU,4HAEV,SAAA,CAAA1B,EAAAA,IAAC2B,EAAAA,WAAA,CAAW,UAAU,QAAA,CAAS,EAC/B3B,EAAAA,IAAC,OAAA,CAAK,UAAU,UAAW,SAAAwB,EAAM,EACjCxB,EAAAA,IAAC4B,EAAAA,gBAAA,CACC,UAAU,iKACV,YAAU,qBAAA,CAAA,CACZ,CAAA,CACF,CAAA,CAEJ,EAKWC,EAAc,CAAC,CAC1B,SAAAhC,EACA,UAAAC,EACA,GAAGC,CACL,IACEC,EAAAA,IAAC8B,EAAAA,mBAAA,CACC,UAAW7B,EAAAA,GACT,gNACAH,CAAA,EAED,GAAGC,EAEJ,SAAAC,EAAAA,IAAC,MAAA,CAAI,UAAU,+CACZ,SAAAH,CAAA,CACH,CAAA,CACF"}
@@ -1,101 +0,0 @@
1
- import { jsx as s, jsxs as h } from "react/jsx-runtime";
2
- import { useControllableState as x } from "@radix-ui/react-use-controllable-state";
3
- import { SearchIcon as C, ChevronDownIcon as b } from "lucide-react";
4
- import { useRef as v, useState as N, useEffect as d, useCallback as T } from "react";
5
- import { Collapsible as y, CollapsibleContent as k, CollapsibleTrigger as O } from "../ui/collapsible.js";
6
- import { cn as a } from "../../lib/utils.js";
7
- const L = ({
8
- children: t,
9
- className: e,
10
- ...o
11
- }) => /* @__PURE__ */ s(
12
- "div",
13
- {
14
- className: a(
15
- "inline-flex items-center gap-1 rounded-md border bg-secondary px-1.5 py-0.5 text-foreground text-xs",
16
- e
17
- ),
18
- ...o,
19
- children: t
20
- }
21
- ), R = ({ children: t, className: e, ...o }) => /* @__PURE__ */ s("div", { className: a("text-muted-foreground text-sm", e), ...o, children: t }), I = 1e3, _ = ({
22
- defaultOpen: t = !0,
23
- isStreaming: e = !1,
24
- open: o,
25
- onOpenChange: n,
26
- className: u,
27
- ...m
28
- }) => {
29
- const [l, r] = x({
30
- defaultProp: t,
31
- onChange: n,
32
- prop: o
33
- }), p = v(e), [i, f] = N(!1);
34
- d(() => {
35
- e && (p.current = !0);
36
- }, [e]), d(() => {
37
- if (p.current && !e && l && !i) {
38
- const c = setTimeout(() => {
39
- r(!1), f(!0);
40
- }, I);
41
- return () => clearTimeout(c);
42
- }
43
- }, [e, l, r, i]);
44
- const g = T(
45
- (c) => r(c),
46
- [r]
47
- );
48
- return /* @__PURE__ */ s(
49
- y,
50
- {
51
- className: a(u),
52
- onOpenChange: g,
53
- open: l,
54
- ...m
55
- }
56
- );
57
- }, F = ({
58
- children: t,
59
- className: e,
60
- title: o,
61
- ...n
62
- }) => /* @__PURE__ */ s(O, { asChild: !0, className: a("group", e), ...n, children: t ?? /* @__PURE__ */ h(
63
- "button",
64
- {
65
- type: "button",
66
- className: "group flex w-full cursor-pointer items-center gap-2 text-muted-foreground text-sm transition-colors hover:text-foreground",
67
- children: [
68
- /* @__PURE__ */ s(C, { className: "size-4" }),
69
- /* @__PURE__ */ s("span", { className: "text-sm", children: o }),
70
- /* @__PURE__ */ s(
71
- b,
72
- {
73
- className: "size-4 opacity-0 transition-all group-focus-visible:opacity-100 group-hover:opacity-100 group-data-[state=open]:rotate-180 group-data-[state=open]:opacity-100",
74
- "data-slot": "collapsible-chevron"
75
- }
76
- )
77
- ]
78
- }
79
- ) }), H = ({
80
- children: t,
81
- className: e,
82
- ...o
83
- }) => /* @__PURE__ */ s(
84
- k,
85
- {
86
- className: a(
87
- "data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in",
88
- e
89
- ),
90
- ...o,
91
- children: /* @__PURE__ */ s("div", { className: "mt-4 space-y-2 border-border border-l-2 pl-4", children: t })
92
- }
93
- );
94
- export {
95
- _ as Task,
96
- H as TaskContent,
97
- R as TaskItem,
98
- L as TaskItemFile,
99
- F as TaskTrigger
100
- };
101
- //# sourceMappingURL=task.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task.js","sources":["../../../src/components/ai/task.tsx"],"sourcesContent":["import { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { ChevronDownIcon, SearchIcon } from \"lucide-react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport type { ComponentProps } from \"react\";\n\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"@/components/ui/collapsible\";\nimport { cn } from \"@/lib/utils\";\n\nexport type TaskItemFileProps = ComponentProps<\"div\">;\n\nexport const TaskItemFile = ({\n children,\n className,\n ...props\n}: TaskItemFileProps) => (\n <div\n className={cn(\n \"inline-flex items-center gap-1 rounded-md border bg-secondary px-1.5 py-0.5 text-foreground text-xs\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n\nexport type TaskItemProps = ComponentProps<\"div\">;\n\nexport const TaskItem = ({ children, className, ...props }: TaskItemProps) => (\n <div className={cn(\"text-muted-foreground text-sm\", className)} {...props}>\n {children}\n </div>\n);\n\nconst AUTO_CLOSE_DELAY = 1000;\n\nexport type TaskProps = ComponentProps<typeof Collapsible> & {\n isStreaming?: boolean;\n};\n\nexport const Task = ({\n defaultOpen = true,\n isStreaming = false,\n open,\n onOpenChange,\n className,\n ...props\n}: TaskProps) => {\n const [isOpen, setIsOpen] = useControllableState<boolean>({\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n prop: open,\n });\n\n const hasEverStreamedRef = useRef(isStreaming);\n const [hasAutoClosed, setHasAutoClosed] = useState(false);\n\n useEffect(() => {\n if (isStreaming) hasEverStreamedRef.current = true;\n }, [isStreaming]);\n\n useEffect(() => {\n if (hasEverStreamedRef.current && !isStreaming && isOpen && !hasAutoClosed) {\n const timer = setTimeout(() => {\n setIsOpen(false);\n setHasAutoClosed(true);\n }, AUTO_CLOSE_DELAY);\n return () => clearTimeout(timer);\n }\n }, [isStreaming, isOpen, setIsOpen, hasAutoClosed]);\n\n const handleOpenChange = useCallback(\n (newOpen: boolean) => setIsOpen(newOpen),\n [setIsOpen]\n );\n\n return (\n <Collapsible\n className={cn(className)}\n onOpenChange={handleOpenChange}\n open={isOpen}\n {...props}\n />\n );\n};\n\nexport type TaskTriggerProps = ComponentProps<typeof CollapsibleTrigger> & {\n title: string;\n};\n\nexport const TaskTrigger = ({\n children,\n className,\n title,\n ...props\n}: TaskTriggerProps) => (\n <CollapsibleTrigger asChild className={cn(\"group\", className)} {...props}>\n {children ?? (\n <button\n type=\"button\"\n className=\"group flex w-full cursor-pointer items-center gap-2 text-muted-foreground text-sm transition-colors hover:text-foreground\"\n >\n <SearchIcon className=\"size-4\" />\n <span className=\"text-sm\">{title}</span>\n <ChevronDownIcon\n className=\"size-4 opacity-0 transition-all group-focus-visible:opacity-100 group-hover:opacity-100 group-data-[state=open]:rotate-180 group-data-[state=open]:opacity-100\"\n data-slot=\"collapsible-chevron\"\n />\n </button>\n )}\n </CollapsibleTrigger>\n);\n\nexport type TaskContentProps = ComponentProps<typeof CollapsibleContent>;\n\nexport const TaskContent = ({\n children,\n className,\n ...props\n}: TaskContentProps) => (\n <CollapsibleContent\n className={cn(\n \"data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in\",\n className\n )}\n {...props}\n >\n <div className=\"mt-4 space-y-2 border-border border-l-2 pl-4\">\n {children}\n </div>\n </CollapsibleContent>\n);\n"],"names":["TaskItemFile","children","className","props","jsx","cn","TaskItem","AUTO_CLOSE_DELAY","Task","defaultOpen","isStreaming","open","onOpenChange","isOpen","setIsOpen","useControllableState","hasEverStreamedRef","useRef","hasAutoClosed","setHasAutoClosed","useState","useEffect","timer","handleOpenChange","useCallback","newOpen","Collapsible","TaskTrigger","title","CollapsibleTrigger","jsxs","SearchIcon","ChevronDownIcon","TaskContent","CollapsibleContent"],"mappings":";;;;;;AAeO,MAAMA,IAAe,CAAC;AAAA,EAC3B,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,MACE,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC;AAAA,MACT;AAAA,MACAH;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,IAEH,UAAAF;AAAA,EAAA;AACH,GAKWK,IAAW,CAAC,EAAE,UAAAL,GAAU,WAAAC,GAAW,GAAGC,EAAA,MACjD,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAG,iCAAiCH,CAAS,GAAI,GAAGC,GACjE,UAAAF,EAAA,CACH,GAGIM,IAAmB,KAMZC,IAAO,CAAC;AAAA,EACnB,aAAAC,IAAc;AAAA,EACd,aAAAC,IAAc;AAAA,EACd,MAAAC;AAAA,EACA,cAAAC;AAAA,EACA,WAAAV;AAAA,EACA,GAAGC;AACL,MAAiB;AACf,QAAM,CAACU,GAAQC,CAAS,IAAIC,EAA8B;AAAA,IACxD,aAAaN;AAAA,IACb,UAAUG;AAAA,IACV,MAAMD;AAAA,EAAA,CACP,GAEKK,IAAqBC,EAAOP,CAAW,GACvC,CAACQ,GAAeC,CAAgB,IAAIC,EAAS,EAAK;AAExD,EAAAC,EAAU,MAAM;AACd,IAAIX,QAAgC,UAAU;AAAA,EAChD,GAAG,CAACA,CAAW,CAAC,GAEhBW,EAAU,MAAM;AACd,QAAIL,EAAmB,WAAW,CAACN,KAAeG,KAAU,CAACK,GAAe;AAC1E,YAAMI,IAAQ,WAAW,MAAM;AAC7B,QAAAR,EAAU,EAAK,GACfK,EAAiB,EAAI;AAAA,MACvB,GAAGZ,CAAgB;AACnB,aAAO,MAAM,aAAae,CAAK;AAAA,IACjC;AAAA,EACF,GAAG,CAACZ,GAAaG,GAAQC,GAAWI,CAAa,CAAC;AAElD,QAAMK,IAAmBC;AAAA,IACvB,CAACC,MAAqBX,EAAUW,CAAO;AAAA,IACvC,CAACX,CAAS;AAAA,EAAA;AAGZ,SACE,gBAAAV;AAAA,IAACsB;AAAA,IAAA;AAAA,MACC,WAAWrB,EAAGH,CAAS;AAAA,MACvB,cAAcqB;AAAA,MACd,MAAMV;AAAA,MACL,GAAGV;AAAA,IAAA;AAAA,EAAA;AAGV,GAMawB,IAAc,CAAC;AAAA,EAC1B,UAAA1B;AAAA,EACA,WAAAC;AAAA,EACA,OAAA0B;AAAA,EACA,GAAGzB;AACL,MACE,gBAAAC,EAACyB,GAAA,EAAmB,SAAO,IAAC,WAAWxB,EAAG,SAASH,CAAS,GAAI,GAAGC,GAChE,UAAAF,KACC,gBAAA6B;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,MAAK;AAAA,IACL,WAAU;AAAA,IAEV,UAAA;AAAA,MAAA,gBAAA1B,EAAC2B,GAAA,EAAW,WAAU,SAAA,CAAS;AAAA,MAC/B,gBAAA3B,EAAC,QAAA,EAAK,WAAU,WAAW,UAAAwB,GAAM;AAAA,MACjC,gBAAAxB;AAAA,QAAC4B;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,aAAU;AAAA,QAAA;AAAA,MAAA;AAAA,IACZ;AAAA,EAAA;AACF,EAAA,CAEJ,GAKWC,IAAc,CAAC;AAAA,EAC1B,UAAAhC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,MACE,gBAAAC;AAAA,EAAC8B;AAAA,EAAA;AAAA,IACC,WAAW7B;AAAA,MACT;AAAA,MACAH;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,IAEJ,UAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,gDACZ,UAAAH,EAAA,CACH;AAAA,EAAA;AACF;"}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),h=require("@radix-ui/react-use-controllable-state"),a=require("lucide-react"),l=require("react"),v=require("../ui/badge.cjs"),N=require("../ui/banner.cjs"),m=require("../ui/code-block.cjs"),x=require("../ui/collapsible.cjs"),i=require("../../lib/utils.cjs"),y=1e3,I=({className:s,isStreaming:t=!1,open:o,onOpenChange:r,defaultOpen:n,...u})=>{const[c,d]=h.useControllableState({defaultProp:n??!0,onChange:r,prop:o}),g=l.useRef(t),[f,C]=l.useState(!1);l.useEffect(()=>{t&&(g.current=!0)},[t]),l.useEffect(()=>{if(g.current&&!t&&c&&!f){const p=setTimeout(()=>{d(!1),C(!0)},y);return()=>clearTimeout(p)}},[t,c,d,f]);const b=l.useCallback(p=>d(p),[d]);return e.jsx(x.Collapsible,{className:i.cn("group not-prose mb-4 w-full rounded-md border bg-background",s),onOpenChange:b,open:c,...u})},k={"approval-requested":"Awaiting Approval","approval-responded":"Responded","input-available":"Running","input-streaming":"Pending","output-available":"Completed","output-denied":"Denied","output-error":"Error"},w={"approval-requested":e.jsx(a.ClockIcon,{className:"size-4 text-yellow-600"}),"approval-responded":e.jsx(a.CheckCircleIcon,{className:"size-4 text-blue-600"}),"input-available":e.jsx(a.ClockIcon,{className:"size-4 animate-pulse"}),"input-streaming":e.jsx(a.CircleIcon,{className:"size-4"}),"output-available":e.jsx(a.CheckCircleIcon,{className:"size-4 text-green-600"}),"output-denied":e.jsx(a.XCircleIcon,{className:"size-4 text-orange-600"}),"output-error":e.jsx(a.XCircleIcon,{className:"size-4 text-red-600"})},j=s=>e.jsxs(v.Badge,{className:"gap-1.5 rounded-full text-xs",variant:"secondary",children:[w[s],k[s]]}),O=({className:s,title:t,type:o,state:r,toolName:n,...u})=>{const c=o==="dynamic-tool"?n:o.split("-").slice(1).join("-");return e.jsxs(x.CollapsibleTrigger,{className:i.cn("flex w-full items-center justify-between gap-4 p-3",s),...u,children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.WrenchIcon,{className:"size-4 text-muted-foreground"}),e.jsx("span",{className:"font-medium text-sm",children:t??c}),j(r)]}),e.jsx(a.ChevronDownIcon,{className:"size-4 text-muted-foreground opacity-0 transition-all group-focus-within:opacity-100 group-hover:opacity-100 group-data-[state=open]:rotate-180 group-data-[state=open]:opacity-100","data-slot":"collapsible-chevron"})]})},T=({className:s,...t})=>e.jsx(x.CollapsibleContent,{className:i.cn("data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 space-y-4 p-4 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in",s),...t}),q=({className:s,input:t,...o})=>e.jsxs("div",{className:i.cn("space-y-2 overflow-hidden",s),...o,children:[e.jsx("h4",{className:"font-medium text-muted-foreground text-xs uppercase tracking-wide",children:"Parameters"}),e.jsx("div",{className:"rounded-md bg-muted/50",children:e.jsx(m.CodeBlock,{code:JSON.stringify(t,null,2),language:"json"})})]}),z=({className:s,output:t,errorText:o,...r})=>{if(!(t||o))return null;let n=e.jsx("div",{children:t});return typeof t=="object"&&!l.isValidElement(t)?n=e.jsx(m.CodeBlock,{code:JSON.stringify(t,null,2),language:"json"}):typeof t=="string"&&(n=e.jsx(m.CodeBlock,{code:t,language:"json"})),e.jsxs("div",{className:i.cn("space-y-2",s),...r,children:[e.jsx("h4",{className:"font-medium text-muted-foreground text-xs uppercase tracking-wide",children:o?"Error":"Result"}),o?e.jsx(N.Banner,{variant:"destructive",description:o,className:"rounded-md text-xs"}):e.jsx("div",{className:"overflow-x-auto rounded-md bg-muted/50 text-foreground text-xs [&_table]:w-full",children:n})]})};exports.Tool=I;exports.ToolContent=T;exports.ToolHeader=O;exports.ToolInput=q;exports.ToolOutput=z;exports.getStatusBadge=j;
2
- //# sourceMappingURL=tool.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool.cjs","sources":["../../../src/components/ai/tool.tsx"],"sourcesContent":["import { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport {\n CheckCircleIcon,\n ChevronDownIcon,\n CircleIcon,\n ClockIcon,\n WrenchIcon,\n XCircleIcon,\n} from \"lucide-react\";\nimport { isValidElement, useCallback, useEffect, useRef, useState } from \"react\";\n\n\nimport type { DynamicToolUIPart, ToolUIPart } from \"ai\";\nimport type { ComponentProps, ReactNode } from \"react\";\n\nimport { Badge } from \"@/components/ui/badge\";\nimport { Banner } from \"@/components/ui/banner\";\nimport { CodeBlock } from \"@/components/ui/code-block\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"@/components/ui/collapsible\";\nimport { cn } from \"@/lib/utils\";\n\n\n\n\nconst AUTO_CLOSE_DELAY = 1000;\n\nexport type ToolProps = ComponentProps<typeof Collapsible> & {\n isStreaming?: boolean;\n};\n\nexport const Tool = ({\n className,\n isStreaming = false,\n open,\n onOpenChange,\n defaultOpen,\n ...props\n}: ToolProps) => {\n const [isOpen, setIsOpen] = useControllableState<boolean>({\n defaultProp: defaultOpen ?? true,\n onChange: onOpenChange,\n prop: open,\n });\n\n const hasEverStreamedRef = useRef(isStreaming);\n const [hasAutoClosed, setHasAutoClosed] = useState(false);\n\n useEffect(() => {\n if (isStreaming) hasEverStreamedRef.current = true;\n }, [isStreaming]);\n\n useEffect(() => {\n if (hasEverStreamedRef.current && !isStreaming && isOpen && !hasAutoClosed) {\n const timer = setTimeout(() => {\n setIsOpen(false);\n setHasAutoClosed(true);\n }, AUTO_CLOSE_DELAY);\n return () => clearTimeout(timer);\n }\n }, [isStreaming, isOpen, setIsOpen, hasAutoClosed]);\n\n const handleOpenChange = useCallback(\n (newOpen: boolean) => setIsOpen(newOpen),\n [setIsOpen]\n );\n\n return (\n <Collapsible\n className={cn(\"group not-prose mb-4 w-full rounded-md border bg-background\", className)}\n onOpenChange={handleOpenChange}\n open={isOpen}\n {...props}\n />\n );\n};\n\nexport type ToolPart = ToolUIPart | DynamicToolUIPart;\n\nexport type ToolHeaderProps = {\n title?: string;\n className?: string;\n} & (\n | { type: ToolUIPart[\"type\"]; state: ToolUIPart[\"state\"]; toolName?: never }\n | {\n type: DynamicToolUIPart[\"type\"];\n state: DynamicToolUIPart[\"state\"];\n toolName: string;\n }\n);\n\nconst statusLabels: Record<ToolPart[\"state\"], string> = {\n \"approval-requested\": \"Awaiting Approval\",\n \"approval-responded\": \"Responded\",\n \"input-available\": \"Running\",\n \"input-streaming\": \"Pending\",\n \"output-available\": \"Completed\",\n \"output-denied\": \"Denied\",\n \"output-error\": \"Error\",\n};\n\nconst statusIcons: Record<ToolPart[\"state\"], ReactNode> = {\n \"approval-requested\": <ClockIcon className=\"size-4 text-yellow-600\" />,\n \"approval-responded\": <CheckCircleIcon className=\"size-4 text-blue-600\" />,\n \"input-available\": <ClockIcon className=\"size-4 animate-pulse\" />,\n \"input-streaming\": <CircleIcon className=\"size-4\" />,\n \"output-available\": <CheckCircleIcon className=\"size-4 text-green-600\" />,\n \"output-denied\": <XCircleIcon className=\"size-4 text-orange-600\" />,\n \"output-error\": <XCircleIcon className=\"size-4 text-red-600\" />,\n};\n\nexport const getStatusBadge = (status: ToolPart[\"state\"]) => (\n <Badge className=\"gap-1.5 rounded-full text-xs\" variant=\"secondary\">\n {statusIcons[status]}\n {statusLabels[status]}\n </Badge>\n);\n\nexport const ToolHeader = ({\n className,\n title,\n type,\n state,\n toolName,\n ...props\n}: ToolHeaderProps) => {\n const derivedName =\n type === \"dynamic-tool\" ? toolName : type.split(\"-\").slice(1).join(\"-\");\n\n return (\n <CollapsibleTrigger\n className={cn(\n \"flex w-full items-center justify-between gap-4 p-3\",\n className\n )}\n {...props}\n >\n <div className=\"flex items-center gap-2\">\n <WrenchIcon className=\"size-4 text-muted-foreground\" />\n <span className=\"font-medium text-sm\">{title ?? derivedName}</span>\n {getStatusBadge(state)}\n </div>\n <ChevronDownIcon\n className=\"size-4 text-muted-foreground opacity-0 transition-all group-focus-within:opacity-100 group-hover:opacity-100 group-data-[state=open]:rotate-180 group-data-[state=open]:opacity-100\"\n data-slot=\"collapsible-chevron\"\n />\n </CollapsibleTrigger>\n );\n};\n\nexport type ToolContentProps = ComponentProps<typeof CollapsibleContent>;\n\nexport const ToolContent = ({ className, ...props }: ToolContentProps) => (\n <CollapsibleContent\n className={cn(\n \"data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 space-y-4 p-4 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in\",\n className\n )}\n {...props}\n />\n);\n\nexport type ToolInputProps = ComponentProps<\"div\"> & {\n input: ToolPart[\"input\"];\n};\n\nexport const ToolInput = ({ className, input, ...props }: ToolInputProps) => (\n <div className={cn(\"space-y-2 overflow-hidden\", className)} {...props}>\n <h4 className=\"font-medium text-muted-foreground text-xs uppercase tracking-wide\">\n Parameters\n </h4>\n <div className=\"rounded-md bg-muted/50\">\n <CodeBlock code={JSON.stringify(input, null, 2)} language=\"json\" />\n </div>\n </div>\n);\n\nexport type ToolOutputProps = ComponentProps<\"div\"> & {\n output: ToolPart[\"output\"];\n errorText: ToolPart[\"errorText\"];\n};\n\nexport const ToolOutput = ({\n className,\n output,\n errorText,\n ...props\n}: ToolOutputProps) => {\n if (!(output || errorText)) {\n return null;\n }\n\n let Output = <div>{output as ReactNode}</div>;\n\n if (typeof output === \"object\" && !isValidElement(output)) {\n Output = (\n <CodeBlock code={JSON.stringify(output, null, 2)} language=\"json\" />\n );\n } else if (typeof output === \"string\") {\n Output = <CodeBlock code={output} language=\"json\" />;\n }\n\n return (\n <div className={cn(\"space-y-2\", className)} {...props}>\n <h4 className=\"font-medium text-muted-foreground text-xs uppercase tracking-wide\">\n {errorText ? \"Error\" : \"Result\"}\n </h4>\n {errorText ? (\n <Banner\n variant=\"destructive\"\n description={errorText}\n className=\"rounded-md text-xs\"\n />\n ) : (\n <div className=\"overflow-x-auto rounded-md bg-muted/50 text-foreground text-xs [&_table]:w-full\">\n {Output}\n </div>\n )}\n </div>\n );\n};\n"],"names":["AUTO_CLOSE_DELAY","Tool","className","isStreaming","open","onOpenChange","defaultOpen","props","isOpen","setIsOpen","useControllableState","hasEverStreamedRef","useRef","hasAutoClosed","setHasAutoClosed","useState","useEffect","timer","handleOpenChange","useCallback","newOpen","jsx","Collapsible","cn","statusLabels","statusIcons","ClockIcon","CheckCircleIcon","CircleIcon","XCircleIcon","getStatusBadge","status","jsxs","Badge","ToolHeader","title","type","state","toolName","derivedName","CollapsibleTrigger","WrenchIcon","ChevronDownIcon","ToolContent","CollapsibleContent","ToolInput","input","CodeBlock","ToolOutput","output","errorText","Output","isValidElement","Banner"],"mappings":"uXA4BMA,EAAmB,IAMZC,EAAO,CAAC,CACnB,UAAAC,EACA,YAAAC,EAAc,GACd,KAAAC,EACA,aAAAC,EACA,YAAAC,EACA,GAAGC,CACL,IAAiB,CACf,KAAM,CAACC,EAAQC,CAAS,EAAIC,uBAA8B,CACxD,YAAaJ,GAAe,GAC5B,SAAUD,EACV,KAAMD,CAAA,CACP,EAEKO,EAAqBC,EAAAA,OAAOT,CAAW,EACvC,CAACU,EAAeC,CAAgB,EAAIC,EAAAA,SAAS,EAAK,EAExDC,EAAAA,UAAU,IAAM,CACVb,MAAgC,QAAU,GAChD,EAAG,CAACA,CAAW,CAAC,EAEhBa,EAAAA,UAAU,IAAM,CACd,GAAIL,EAAmB,SAAW,CAACR,GAAeK,GAAU,CAACK,EAAe,CAC1E,MAAMI,EAAQ,WAAW,IAAM,CAC7BR,EAAU,EAAK,EACfK,EAAiB,EAAI,CACvB,EAAGd,CAAgB,EACnB,MAAO,IAAM,aAAaiB,CAAK,CACjC,CACF,EAAG,CAACd,EAAaK,EAAQC,EAAWI,CAAa,CAAC,EAElD,MAAMK,EAAmBC,EAAAA,YACtBC,GAAqBX,EAAUW,CAAO,EACvC,CAACX,CAAS,CAAA,EAGZ,OACEY,EAAAA,IAACC,EAAAA,YAAA,CACC,UAAWC,EAAAA,GAAG,8DAA+DrB,CAAS,EACtF,aAAcgB,EACd,KAAMV,EACL,GAAGD,CAAA,CAAA,CAGV,EAgBMiB,EAAkD,CACtD,qBAAsB,oBACtB,qBAAsB,YACtB,kBAAmB,UACnB,kBAAmB,UACnB,mBAAoB,YACpB,gBAAiB,SACjB,eAAgB,OAClB,EAEMC,EAAoD,CACxD,qBAAsBJ,EAAAA,IAACK,EAAAA,UAAA,CAAU,UAAU,wBAAA,CAAyB,EACpE,qBAAsBL,EAAAA,IAACM,EAAAA,gBAAA,CAAgB,UAAU,sBAAA,CAAuB,EACxE,kBAAmBN,EAAAA,IAACK,EAAAA,UAAA,CAAU,UAAU,sBAAA,CAAuB,EAC/D,kBAAmBL,EAAAA,IAACO,EAAAA,WAAA,CAAW,UAAU,QAAA,CAAS,EAClD,mBAAoBP,EAAAA,IAACM,EAAAA,gBAAA,CAAgB,UAAU,uBAAA,CAAwB,EACvE,gBAAiBN,EAAAA,IAACQ,EAAAA,YAAA,CAAY,UAAU,wBAAA,CAAyB,EACjE,eAAgBR,EAAAA,IAACQ,EAAAA,YAAA,CAAY,UAAU,qBAAA,CAAsB,CAC/D,EAEaC,EAAkBC,GAC7BC,EAAAA,KAACC,EAAAA,OAAM,UAAU,+BAA+B,QAAQ,YACrD,SAAA,CAAAR,EAAYM,CAAM,EAClBP,EAAaO,CAAM,CAAA,CAAA,CACtB,EAGWG,EAAa,CAAC,CACzB,UAAAhC,EACA,MAAAiC,EACA,KAAAC,EACA,MAAAC,EACA,SAAAC,EACA,GAAG/B,CACL,IAAuB,CACrB,MAAMgC,EACJH,IAAS,eAAiBE,EAAWF,EAAK,MAAM,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,EAExE,OACEJ,EAAAA,KAACQ,EAAAA,mBAAA,CACC,UAAWjB,EAAAA,GACT,qDACArB,CAAA,EAED,GAAGK,EAEJ,SAAA,CAAAyB,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAX,EAAAA,IAACoB,EAAAA,WAAA,CAAW,UAAU,8BAAA,CAA+B,EACrDpB,EAAAA,IAAC,OAAA,CAAK,UAAU,sBAAuB,YAASkB,EAAY,EAC3DT,EAAeO,CAAK,CAAA,EACvB,EACAhB,EAAAA,IAACqB,EAAAA,gBAAA,CACC,UAAU,sLACV,YAAU,qBAAA,CAAA,CACZ,CAAA,CAAA,CAGN,EAIaC,EAAc,CAAC,CAAE,UAAAzC,EAAW,GAAGK,KAC1Cc,EAAAA,IAACuB,EAAAA,mBAAA,CACC,UAAWrB,EAAAA,GACT,8NACArB,CAAA,EAED,GAAGK,CAAA,CACN,EAOWsC,EAAY,CAAC,CAAE,UAAA3C,EAAW,MAAA4C,EAAO,GAAGvC,CAAA,IAC/CyB,OAAC,MAAA,CAAI,UAAWT,EAAAA,GAAG,4BAA6BrB,CAAS,EAAI,GAAGK,EAC9D,SAAA,CAAAc,EAAAA,IAAC,KAAA,CAAG,UAAU,oEAAoE,SAAA,aAElF,EACAA,EAAAA,IAAC,MAAA,CAAI,UAAU,yBACb,eAAC0B,EAAAA,UAAA,CAAU,KAAM,KAAK,UAAUD,EAAO,KAAM,CAAC,EAAG,SAAS,OAAO,CAAA,CACnE,CAAA,CAAA,CACF,EAQWE,EAAa,CAAC,CACzB,UAAA9C,EACA,OAAA+C,EACA,UAAAC,EACA,GAAG3C,CACL,IAAuB,CACrB,GAAI,EAAE0C,GAAUC,GACd,OAAO,KAGT,IAAIC,EAAS9B,EAAAA,IAAC,MAAA,CAAK,SAAA4B,CAAA,CAAoB,EAEvC,OAAI,OAAOA,GAAW,UAAY,CAACG,EAAAA,eAAeH,CAAM,EACtDE,EACE9B,EAAAA,IAAC0B,EAAAA,UAAA,CAAU,KAAM,KAAK,UAAUE,EAAQ,KAAM,CAAC,EAAG,SAAS,MAAA,CAAO,EAE3D,OAAOA,GAAW,WAC3BE,EAAS9B,EAAAA,IAAC0B,YAAA,CAAU,KAAME,EAAQ,SAAS,OAAO,GAIlDjB,EAAAA,KAAC,OAAI,UAAWT,EAAAA,GAAG,YAAarB,CAAS,EAAI,GAAGK,EAC9C,SAAA,CAAAc,MAAC,KAAA,CAAG,UAAU,oEACX,SAAA6B,EAAY,QAAU,SACzB,EACCA,EACC7B,EAAAA,IAACgC,EAAAA,OAAA,CACC,QAAQ,cACR,YAAaH,EACb,UAAU,oBAAA,CAAA,EAGZ7B,EAAAA,IAAC,MAAA,CAAI,UAAU,kFACZ,SAAA8B,CAAA,CACH,CAAA,EAEJ,CAEJ"}
@@ -1,139 +0,0 @@
1
- import { jsx as e, jsxs as l } from "react/jsx-runtime";
2
- import { useControllableState as C } from "@radix-ui/react-use-controllable-state";
3
- import { WrenchIcon as y, ChevronDownIcon as w, XCircleIcon as g, CheckCircleIcon as h, CircleIcon as O, ClockIcon as v } from "lucide-react";
4
- import { useRef as z, useState as I, useEffect as x, useCallback as j, isValidElement as k } from "react";
5
- import { Badge as E } from "../ui/badge.js";
6
- import { Banner as A } from "../ui/banner.js";
7
- import { CodeBlock as p } from "../ui/code-block.js";
8
- import { Collapsible as T, CollapsibleContent as R, CollapsibleTrigger as B } from "../ui/collapsible.js";
9
- import { cn as i } from "../../lib/utils.js";
10
- const D = 1e3, F = ({
11
- className: o,
12
- isStreaming: t = !1,
13
- open: a,
14
- onOpenChange: n,
15
- defaultOpen: s,
16
- ...c
17
- }) => {
18
- const [r, d] = C({
19
- defaultProp: s ?? !0,
20
- onChange: n,
21
- prop: a
22
- }), m = z(t), [f, N] = I(!1);
23
- x(() => {
24
- t && (m.current = !0);
25
- }, [t]), x(() => {
26
- if (m.current && !t && r && !f) {
27
- const u = setTimeout(() => {
28
- d(!1), N(!0);
29
- }, D);
30
- return () => clearTimeout(u);
31
- }
32
- }, [t, r, d, f]);
33
- const b = j(
34
- (u) => d(u),
35
- [d]
36
- );
37
- return /* @__PURE__ */ e(
38
- T,
39
- {
40
- className: i("group not-prose mb-4 w-full rounded-md border bg-background", o),
41
- onOpenChange: b,
42
- open: r,
43
- ...c
44
- }
45
- );
46
- }, L = {
47
- "approval-requested": "Awaiting Approval",
48
- "approval-responded": "Responded",
49
- "input-available": "Running",
50
- "input-streaming": "Pending",
51
- "output-available": "Completed",
52
- "output-denied": "Denied",
53
- "output-error": "Error"
54
- }, P = {
55
- "approval-requested": /* @__PURE__ */ e(v, { className: "size-4 text-yellow-600" }),
56
- "approval-responded": /* @__PURE__ */ e(h, { className: "size-4 text-blue-600" }),
57
- "input-available": /* @__PURE__ */ e(v, { className: "size-4 animate-pulse" }),
58
- "input-streaming": /* @__PURE__ */ e(O, { className: "size-4" }),
59
- "output-available": /* @__PURE__ */ e(h, { className: "size-4 text-green-600" }),
60
- "output-denied": /* @__PURE__ */ e(g, { className: "size-4 text-orange-600" }),
61
- "output-error": /* @__PURE__ */ e(g, { className: "size-4 text-red-600" })
62
- }, S = (o) => /* @__PURE__ */ l(E, { className: "gap-1.5 rounded-full text-xs", variant: "secondary", children: [
63
- P[o],
64
- L[o]
65
- ] }), G = ({
66
- className: o,
67
- title: t,
68
- type: a,
69
- state: n,
70
- toolName: s,
71
- ...c
72
- }) => {
73
- const r = a === "dynamic-tool" ? s : a.split("-").slice(1).join("-");
74
- return /* @__PURE__ */ l(
75
- B,
76
- {
77
- className: i(
78
- "flex w-full items-center justify-between gap-4 p-3",
79
- o
80
- ),
81
- ...c,
82
- children: [
83
- /* @__PURE__ */ l("div", { className: "flex items-center gap-2", children: [
84
- /* @__PURE__ */ e(y, { className: "size-4 text-muted-foreground" }),
85
- /* @__PURE__ */ e("span", { className: "font-medium text-sm", children: t ?? r }),
86
- S(n)
87
- ] }),
88
- /* @__PURE__ */ e(
89
- w,
90
- {
91
- className: "size-4 text-muted-foreground opacity-0 transition-all group-focus-within:opacity-100 group-hover:opacity-100 group-data-[state=open]:rotate-180 group-data-[state=open]:opacity-100",
92
- "data-slot": "collapsible-chevron"
93
- }
94
- )
95
- ]
96
- }
97
- );
98
- }, K = ({ className: o, ...t }) => /* @__PURE__ */ e(
99
- R,
100
- {
101
- className: i(
102
- "data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 space-y-4 p-4 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in",
103
- o
104
- ),
105
- ...t
106
- }
107
- ), M = ({ className: o, input: t, ...a }) => /* @__PURE__ */ l("div", { className: i("space-y-2 overflow-hidden", o), ...a, children: [
108
- /* @__PURE__ */ e("h4", { className: "font-medium text-muted-foreground text-xs uppercase tracking-wide", children: "Parameters" }),
109
- /* @__PURE__ */ e("div", { className: "rounded-md bg-muted/50", children: /* @__PURE__ */ e(p, { code: JSON.stringify(t, null, 2), language: "json" }) })
110
- ] }), Q = ({
111
- className: o,
112
- output: t,
113
- errorText: a,
114
- ...n
115
- }) => {
116
- if (!(t || a))
117
- return null;
118
- let s = /* @__PURE__ */ e("div", { children: t });
119
- return typeof t == "object" && !k(t) ? s = /* @__PURE__ */ e(p, { code: JSON.stringify(t, null, 2), language: "json" }) : typeof t == "string" && (s = /* @__PURE__ */ e(p, { code: t, language: "json" })), /* @__PURE__ */ l("div", { className: i("space-y-2", o), ...n, children: [
120
- /* @__PURE__ */ e("h4", { className: "font-medium text-muted-foreground text-xs uppercase tracking-wide", children: a ? "Error" : "Result" }),
121
- a ? /* @__PURE__ */ e(
122
- A,
123
- {
124
- variant: "destructive",
125
- description: a,
126
- className: "rounded-md text-xs"
127
- }
128
- ) : /* @__PURE__ */ e("div", { className: "overflow-x-auto rounded-md bg-muted/50 text-foreground text-xs [&_table]:w-full", children: s })
129
- ] });
130
- };
131
- export {
132
- F as Tool,
133
- K as ToolContent,
134
- G as ToolHeader,
135
- M as ToolInput,
136
- Q as ToolOutput,
137
- S as getStatusBadge
138
- };
139
- //# sourceMappingURL=tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool.js","sources":["../../../src/components/ai/tool.tsx"],"sourcesContent":["import { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport {\n CheckCircleIcon,\n ChevronDownIcon,\n CircleIcon,\n ClockIcon,\n WrenchIcon,\n XCircleIcon,\n} from \"lucide-react\";\nimport { isValidElement, useCallback, useEffect, useRef, useState } from \"react\";\n\n\nimport type { DynamicToolUIPart, ToolUIPart } from \"ai\";\nimport type { ComponentProps, ReactNode } from \"react\";\n\nimport { Badge } from \"@/components/ui/badge\";\nimport { Banner } from \"@/components/ui/banner\";\nimport { CodeBlock } from \"@/components/ui/code-block\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"@/components/ui/collapsible\";\nimport { cn } from \"@/lib/utils\";\n\n\n\n\nconst AUTO_CLOSE_DELAY = 1000;\n\nexport type ToolProps = ComponentProps<typeof Collapsible> & {\n isStreaming?: boolean;\n};\n\nexport const Tool = ({\n className,\n isStreaming = false,\n open,\n onOpenChange,\n defaultOpen,\n ...props\n}: ToolProps) => {\n const [isOpen, setIsOpen] = useControllableState<boolean>({\n defaultProp: defaultOpen ?? true,\n onChange: onOpenChange,\n prop: open,\n });\n\n const hasEverStreamedRef = useRef(isStreaming);\n const [hasAutoClosed, setHasAutoClosed] = useState(false);\n\n useEffect(() => {\n if (isStreaming) hasEverStreamedRef.current = true;\n }, [isStreaming]);\n\n useEffect(() => {\n if (hasEverStreamedRef.current && !isStreaming && isOpen && !hasAutoClosed) {\n const timer = setTimeout(() => {\n setIsOpen(false);\n setHasAutoClosed(true);\n }, AUTO_CLOSE_DELAY);\n return () => clearTimeout(timer);\n }\n }, [isStreaming, isOpen, setIsOpen, hasAutoClosed]);\n\n const handleOpenChange = useCallback(\n (newOpen: boolean) => setIsOpen(newOpen),\n [setIsOpen]\n );\n\n return (\n <Collapsible\n className={cn(\"group not-prose mb-4 w-full rounded-md border bg-background\", className)}\n onOpenChange={handleOpenChange}\n open={isOpen}\n {...props}\n />\n );\n};\n\nexport type ToolPart = ToolUIPart | DynamicToolUIPart;\n\nexport type ToolHeaderProps = {\n title?: string;\n className?: string;\n} & (\n | { type: ToolUIPart[\"type\"]; state: ToolUIPart[\"state\"]; toolName?: never }\n | {\n type: DynamicToolUIPart[\"type\"];\n state: DynamicToolUIPart[\"state\"];\n toolName: string;\n }\n);\n\nconst statusLabels: Record<ToolPart[\"state\"], string> = {\n \"approval-requested\": \"Awaiting Approval\",\n \"approval-responded\": \"Responded\",\n \"input-available\": \"Running\",\n \"input-streaming\": \"Pending\",\n \"output-available\": \"Completed\",\n \"output-denied\": \"Denied\",\n \"output-error\": \"Error\",\n};\n\nconst statusIcons: Record<ToolPart[\"state\"], ReactNode> = {\n \"approval-requested\": <ClockIcon className=\"size-4 text-yellow-600\" />,\n \"approval-responded\": <CheckCircleIcon className=\"size-4 text-blue-600\" />,\n \"input-available\": <ClockIcon className=\"size-4 animate-pulse\" />,\n \"input-streaming\": <CircleIcon className=\"size-4\" />,\n \"output-available\": <CheckCircleIcon className=\"size-4 text-green-600\" />,\n \"output-denied\": <XCircleIcon className=\"size-4 text-orange-600\" />,\n \"output-error\": <XCircleIcon className=\"size-4 text-red-600\" />,\n};\n\nexport const getStatusBadge = (status: ToolPart[\"state\"]) => (\n <Badge className=\"gap-1.5 rounded-full text-xs\" variant=\"secondary\">\n {statusIcons[status]}\n {statusLabels[status]}\n </Badge>\n);\n\nexport const ToolHeader = ({\n className,\n title,\n type,\n state,\n toolName,\n ...props\n}: ToolHeaderProps) => {\n const derivedName =\n type === \"dynamic-tool\" ? toolName : type.split(\"-\").slice(1).join(\"-\");\n\n return (\n <CollapsibleTrigger\n className={cn(\n \"flex w-full items-center justify-between gap-4 p-3\",\n className\n )}\n {...props}\n >\n <div className=\"flex items-center gap-2\">\n <WrenchIcon className=\"size-4 text-muted-foreground\" />\n <span className=\"font-medium text-sm\">{title ?? derivedName}</span>\n {getStatusBadge(state)}\n </div>\n <ChevronDownIcon\n className=\"size-4 text-muted-foreground opacity-0 transition-all group-focus-within:opacity-100 group-hover:opacity-100 group-data-[state=open]:rotate-180 group-data-[state=open]:opacity-100\"\n data-slot=\"collapsible-chevron\"\n />\n </CollapsibleTrigger>\n );\n};\n\nexport type ToolContentProps = ComponentProps<typeof CollapsibleContent>;\n\nexport const ToolContent = ({ className, ...props }: ToolContentProps) => (\n <CollapsibleContent\n className={cn(\n \"data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 space-y-4 p-4 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in\",\n className\n )}\n {...props}\n />\n);\n\nexport type ToolInputProps = ComponentProps<\"div\"> & {\n input: ToolPart[\"input\"];\n};\n\nexport const ToolInput = ({ className, input, ...props }: ToolInputProps) => (\n <div className={cn(\"space-y-2 overflow-hidden\", className)} {...props}>\n <h4 className=\"font-medium text-muted-foreground text-xs uppercase tracking-wide\">\n Parameters\n </h4>\n <div className=\"rounded-md bg-muted/50\">\n <CodeBlock code={JSON.stringify(input, null, 2)} language=\"json\" />\n </div>\n </div>\n);\n\nexport type ToolOutputProps = ComponentProps<\"div\"> & {\n output: ToolPart[\"output\"];\n errorText: ToolPart[\"errorText\"];\n};\n\nexport const ToolOutput = ({\n className,\n output,\n errorText,\n ...props\n}: ToolOutputProps) => {\n if (!(output || errorText)) {\n return null;\n }\n\n let Output = <div>{output as ReactNode}</div>;\n\n if (typeof output === \"object\" && !isValidElement(output)) {\n Output = (\n <CodeBlock code={JSON.stringify(output, null, 2)} language=\"json\" />\n );\n } else if (typeof output === \"string\") {\n Output = <CodeBlock code={output} language=\"json\" />;\n }\n\n return (\n <div className={cn(\"space-y-2\", className)} {...props}>\n <h4 className=\"font-medium text-muted-foreground text-xs uppercase tracking-wide\">\n {errorText ? \"Error\" : \"Result\"}\n </h4>\n {errorText ? (\n <Banner\n variant=\"destructive\"\n description={errorText}\n className=\"rounded-md text-xs\"\n />\n ) : (\n <div className=\"overflow-x-auto rounded-md bg-muted/50 text-foreground text-xs [&_table]:w-full\">\n {Output}\n </div>\n )}\n </div>\n );\n};\n"],"names":["AUTO_CLOSE_DELAY","Tool","className","isStreaming","open","onOpenChange","defaultOpen","props","isOpen","setIsOpen","useControllableState","hasEverStreamedRef","useRef","hasAutoClosed","setHasAutoClosed","useState","useEffect","timer","handleOpenChange","useCallback","newOpen","jsx","Collapsible","cn","statusLabels","statusIcons","ClockIcon","CheckCircleIcon","CircleIcon","XCircleIcon","getStatusBadge","status","jsxs","Badge","ToolHeader","title","type","state","toolName","derivedName","CollapsibleTrigger","WrenchIcon","ChevronDownIcon","ToolContent","CollapsibleContent","ToolInput","input","CodeBlock","ToolOutput","output","errorText","Output","isValidElement","Banner"],"mappings":";;;;;;;;;AA4BA,MAAMA,IAAmB,KAMZC,IAAO,CAAC;AAAA,EACnB,WAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,MAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,EACA,GAAGC;AACL,MAAiB;AACf,QAAM,CAACC,GAAQC,CAAS,IAAIC,EAA8B;AAAA,IACxD,aAAaJ,KAAe;AAAA,IAC5B,UAAUD;AAAA,IACV,MAAMD;AAAA,EAAA,CACP,GAEKO,IAAqBC,EAAOT,CAAW,GACvC,CAACU,GAAeC,CAAgB,IAAIC,EAAS,EAAK;AAExD,EAAAC,EAAU,MAAM;AACd,IAAIb,QAAgC,UAAU;AAAA,EAChD,GAAG,CAACA,CAAW,CAAC,GAEhBa,EAAU,MAAM;AACd,QAAIL,EAAmB,WAAW,CAACR,KAAeK,KAAU,CAACK,GAAe;AAC1E,YAAMI,IAAQ,WAAW,MAAM;AAC7B,QAAAR,EAAU,EAAK,GACfK,EAAiB,EAAI;AAAA,MACvB,GAAGd,CAAgB;AACnB,aAAO,MAAM,aAAaiB,CAAK;AAAA,IACjC;AAAA,EACF,GAAG,CAACd,GAAaK,GAAQC,GAAWI,CAAa,CAAC;AAElD,QAAMK,IAAmBC;AAAA,IACvB,CAACC,MAAqBX,EAAUW,CAAO;AAAA,IACvC,CAACX,CAAS;AAAA,EAAA;AAGZ,SACE,gBAAAY;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAG,+DAA+DrB,CAAS;AAAA,MACtF,cAAcgB;AAAA,MACd,MAAMV;AAAA,MACL,GAAGD;AAAA,IAAA;AAAA,EAAA;AAGV,GAgBMiB,IAAkD;AAAA,EACtD,sBAAsB;AAAA,EACtB,sBAAsB;AAAA,EACtB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB,gBAAgB;AAClB,GAEMC,IAAoD;AAAA,EACxD,sBAAsB,gBAAAJ,EAACK,GAAA,EAAU,WAAU,yBAAA,CAAyB;AAAA,EACpE,sBAAsB,gBAAAL,EAACM,GAAA,EAAgB,WAAU,uBAAA,CAAuB;AAAA,EACxE,mBAAmB,gBAAAN,EAACK,GAAA,EAAU,WAAU,uBAAA,CAAuB;AAAA,EAC/D,mBAAmB,gBAAAL,EAACO,GAAA,EAAW,WAAU,SAAA,CAAS;AAAA,EAClD,oBAAoB,gBAAAP,EAACM,GAAA,EAAgB,WAAU,wBAAA,CAAwB;AAAA,EACvE,iBAAiB,gBAAAN,EAACQ,GAAA,EAAY,WAAU,yBAAA,CAAyB;AAAA,EACjE,gBAAgB,gBAAAR,EAACQ,GAAA,EAAY,WAAU,sBAAA,CAAsB;AAC/D,GAEaC,IAAiB,CAACC,MAC7B,gBAAAC,EAACC,KAAM,WAAU,gCAA+B,SAAQ,aACrD,UAAA;AAAA,EAAAR,EAAYM,CAAM;AAAA,EAClBP,EAAaO,CAAM;AAAA,EAAA,CACtB,GAGWG,IAAa,CAAC;AAAA,EACzB,WAAAhC;AAAA,EACA,OAAAiC;AAAA,EACA,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAG/B;AACL,MAAuB;AACrB,QAAMgC,IACJH,MAAS,iBAAiBE,IAAWF,EAAK,MAAM,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG;AAExE,SACE,gBAAAJ;AAAA,IAACQ;AAAA,IAAA;AAAA,MACC,WAAWjB;AAAA,QACT;AAAA,QACArB;AAAA,MAAA;AAAA,MAED,GAAGK;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAyB,EAAC,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,UAAA,gBAAAX,EAACoB,GAAA,EAAW,WAAU,+BAAA,CAA+B;AAAA,UACrD,gBAAApB,EAAC,QAAA,EAAK,WAAU,uBAAuB,eAASkB,GAAY;AAAA,UAC3DT,EAAeO,CAAK;AAAA,QAAA,GACvB;AAAA,QACA,gBAAAhB;AAAA,UAACqB;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,aAAU;AAAA,UAAA;AAAA,QAAA;AAAA,MACZ;AAAA,IAAA;AAAA,EAAA;AAGN,GAIaC,IAAc,CAAC,EAAE,WAAAzC,GAAW,GAAGK,QAC1C,gBAAAc;AAAA,EAACuB;AAAA,EAAA;AAAA,IACC,WAAWrB;AAAA,MACT;AAAA,MACArB;AAAA,IAAA;AAAA,IAED,GAAGK;AAAA,EAAA;AACN,GAOWsC,IAAY,CAAC,EAAE,WAAA3C,GAAW,OAAA4C,GAAO,GAAGvC,EAAA,MAC/C,gBAAAyB,EAAC,OAAA,EAAI,WAAWT,EAAG,6BAA6BrB,CAAS,GAAI,GAAGK,GAC9D,UAAA;AAAA,EAAA,gBAAAc,EAAC,MAAA,EAAG,WAAU,qEAAoE,UAAA,cAElF;AAAA,EACA,gBAAAA,EAAC,OAAA,EAAI,WAAU,0BACb,4BAAC0B,GAAA,EAAU,MAAM,KAAK,UAAUD,GAAO,MAAM,CAAC,GAAG,UAAS,QAAO,EAAA,CACnE;AAAA,EAAA,CACF,GAQWE,IAAa,CAAC;AAAA,EACzB,WAAA9C;AAAA,EACA,QAAA+C;AAAA,EACA,WAAAC;AAAA,EACA,GAAG3C;AACL,MAAuB;AACrB,MAAI,EAAE0C,KAAUC;AACd,WAAO;AAGT,MAAIC,IAAS,gBAAA9B,EAAC,OAAA,EAAK,UAAA4B,EAAA,CAAoB;AAEvC,SAAI,OAAOA,KAAW,YAAY,CAACG,EAAeH,CAAM,IACtDE,IACE,gBAAA9B,EAAC0B,GAAA,EAAU,MAAM,KAAK,UAAUE,GAAQ,MAAM,CAAC,GAAG,UAAS,OAAA,CAAO,IAE3D,OAAOA,KAAW,aAC3BE,IAAS,gBAAA9B,EAAC0B,GAAA,EAAU,MAAME,GAAQ,UAAS,QAAO,IAIlD,gBAAAjB,EAAC,SAAI,WAAWT,EAAG,aAAarB,CAAS,GAAI,GAAGK,GAC9C,UAAA;AAAA,IAAA,gBAAAc,EAAC,MAAA,EAAG,WAAU,qEACX,UAAA6B,IAAY,UAAU,UACzB;AAAA,IACCA,IACC,gBAAA7B;AAAA,MAACgC;AAAA,MAAA;AAAA,QACC,SAAQ;AAAA,QACR,aAAaH;AAAA,QACb,WAAU;AAAA,MAAA;AAAA,IAAA,IAGZ,gBAAA7B,EAAC,OAAA,EAAI,WAAU,mFACZ,UAAA8B,EAAA,CACH;AAAA,EAAA,GAEJ;AAEJ;"}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const T=require("react/jsx-runtime"),u=require("react"),n=require("./tdp-url.cjs"),l=u.createContext(null);function p(){const r=u.useContext(l);if(!r)throw new Error("useTdpNavigationContext must be used within a TdpNavigationProvider. Wrap your app with <TdpNavigationProvider> or use the standalone useTdpNavigation() hook instead.");return r}const f=({tdpBaseUrl:r,children:t})=>{const e=u.useMemo(()=>r?r.replace(/\/$/u,""):n.getTdpBaseUrlFromReferrer(),[r]),o=u.useMemo(()=>({tdpBaseUrl:e,getTdpUrl:i=>e?n.buildTdpUrl(e,i):null,navigateToTdp:(i,a)=>{if(!e){console.warn("[TdpNavigation] Cannot navigate: TDP base URL not resolved");return}const d=n.buildTdpUrl(e,i);d&&n.navigateToTdpUrl(d,a)}}),[e]);return T.jsx(l.Provider,{value:o,children:t})};function b(r={}){const{tdpBaseUrl:t}=r,e=u.useMemo(()=>t?t.replace(/\/$/u,""):n.getTdpBaseUrlFromReferrer(),[t]);return u.useMemo(()=>({tdpBaseUrl:e,getTdpUrl:o=>e?n.buildTdpUrl(e,o):null,navigateToTdp:(o,i)=>{if(!e){console.warn("[useTdpNavigation] Cannot navigate: TDP base URL not resolved");return}const a=n.buildTdpUrl(e,o);a&&n.navigateToTdpUrl(a,i)}}),[e])}const U=({path:r,navigationOptions:t={newTab:!0},children:e,onClick:o,className:i,...a})=>{const{getTdpUrl:d,navigateToTdp:c}=p(),v=d(r),g=s=>{s.metaKey||s.ctrlKey||s.shiftKey||(s.preventDefault(),o?.(s),c(r,t))};return T.jsx("a",{href:v??"#",target:t.newTab?"_blank":void 0,rel:t.newTab?"noopener noreferrer":void 0,onClick:g,className:`underline underline-offset-2 cursor-pointer focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:rounded-[2px] ${i??""}`,style:{color:"var(--primary)",outlineColor:"var(--border)"},...a,children:e})};exports.TDPLink=U;exports.TdpNavigationContext=l;exports.TdpNavigationProvider=f;exports.useTdpNavigation=b;exports.useTdpNavigationContext=p;
2
- //# sourceMappingURL=tdp-link.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tdp-link.cjs","sources":["../../../src/components/composed/tdp-link.tsx"],"sourcesContent":["import React, { createContext, useContext, useMemo } from 'react';\n\nimport { buildTdpUrl, getTdpBaseUrlFromReferrer, navigateToTdpUrl } from './tdp-url';\n\nimport type { TdpNavigationOptions } from './tdp-url';\n\nexport interface TdpNavigationContextValue {\n /** The resolved TDP base URL (origin + org path prefix), or null if not resolved */\n tdpBaseUrl: string | null;\n /** Construct a full TDP URL from a path. Returns null if base URL is not resolved. */\n getTdpUrl: (path: string) => string | null;\n /** Navigate to a TDP page. */\n navigateToTdp: (path: string, options?: TdpNavigationOptions) => void;\n}\n\nexport const TdpNavigationContext = createContext<TdpNavigationContextValue | null>(null);\n\n/**\n * Access TDP navigation helpers from the nearest TdpNavigationProvider.\n *\n * @throws Error if used outside a TdpNavigationProvider\n *\n * @example\n * ```tsx\n * const { getTdpUrl, navigateToTdp } = useTdpNavigationContext();\n * ```\n */\nexport function useTdpNavigationContext(): TdpNavigationContextValue {\n const context = useContext(TdpNavigationContext);\n if (!context) {\n throw new Error(\n 'useTdpNavigationContext must be used within a TdpNavigationProvider. ' +\n 'Wrap your app with <TdpNavigationProvider> or use the standalone useTdpNavigation() hook instead.',\n );\n }\n return context;\n}\n\n/** Props for the TdpNavigationProvider component */\nexport interface TdpNavigationProviderProps {\n /**\n * Explicit TDP base URL override. Skips auto-detection when provided.\n */\n tdpBaseUrl?: string;\n children: React.ReactNode;\n}\n\n/**\n * Provider that resolves the TDP base URL and exposes navigation helpers.\n *\n * Resolution order:\n * 1. Explicit `tdpBaseUrl` prop (if provided)\n * 2. `document.referrer` parsing (production iframe)\n *\n * @example\n * ```tsx\n * <TdpNavigationProvider tdpBaseUrl=\"https://tetrascience.com/my-org\">\n * <App />\n * </TdpNavigationProvider>\n * ```\n */\nexport const TdpNavigationProvider: React.FC<TdpNavigationProviderProps> = ({\n tdpBaseUrl: explicitBaseUrl,\n children,\n}) => {\n const tdpBaseUrl = useMemo(() => {\n if (explicitBaseUrl) {\n return explicitBaseUrl.replace(/\\/$/u, '');\n }\n return getTdpBaseUrlFromReferrer();\n }, [explicitBaseUrl]);\n\n const contextValue = useMemo<TdpNavigationContextValue>(\n () => ({\n tdpBaseUrl,\n getTdpUrl: (path: string) => {\n if (!tdpBaseUrl) return null;\n return buildTdpUrl(tdpBaseUrl, path);\n },\n navigateToTdp: (path: string, options?: TdpNavigationOptions) => {\n if (!tdpBaseUrl) {\n console.warn('[TdpNavigation] Cannot navigate: TDP base URL not resolved');\n return;\n }\n const url = buildTdpUrl(tdpBaseUrl, path);\n if (url) {\n navigateToTdpUrl(url, options);\n }\n },\n }),\n [tdpBaseUrl],\n );\n\n return <TdpNavigationContext.Provider value={contextValue}>{children}</TdpNavigationContext.Provider>;\n};\n\nexport interface UseTdpNavigationOptions {\n /** Explicit TDP base URL override */\n tdpBaseUrl?: string;\n}\n\nexport interface UseTdpNavigationReturn {\n /** The resolved TDP base URL, or null */\n tdpBaseUrl: string | null;\n /** Construct a full TDP URL from a path */\n getTdpUrl: (path: string) => string | null;\n /** Navigate to a TDP page */\n navigateToTdp: (path: string, options?: TdpNavigationOptions) => void;\n}\n\n/**\n * Standalone hook for TDP navigation (no provider required).\n *\n * For simple use cases where you don't need a TdpNavigationProvider.\n * If multiple components need navigation, prefer the provider approach.\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const { getTdpUrl, navigateToTdp } = useTdpNavigation({\n * tdpBaseUrl: \"https://tetrascience.com/my-org\",\n * });\n *\n * return (\n * <a href={getTdpUrl(\"/file/abc\") ?? \"#\"} target=\"_blank\" rel=\"noopener noreferrer\">\n * View File\n * </a>\n * );\n * }\n * ```\n */\nexport function useTdpNavigation(options: UseTdpNavigationOptions = {}): UseTdpNavigationReturn {\n const { tdpBaseUrl: explicitBaseUrl } = options;\n\n const tdpBaseUrl = useMemo(() => {\n if (explicitBaseUrl) return explicitBaseUrl.replace(/\\/$/u, '');\n return getTdpBaseUrlFromReferrer();\n }, [explicitBaseUrl]);\n\n return useMemo(\n () => ({\n tdpBaseUrl,\n getTdpUrl: (path: string) => (tdpBaseUrl ? buildTdpUrl(tdpBaseUrl, path) : null),\n navigateToTdp: (path: string, opts?: TdpNavigationOptions) => {\n if (!tdpBaseUrl) {\n console.warn('[useTdpNavigation] Cannot navigate: TDP base URL not resolved');\n return;\n }\n const url = buildTdpUrl(tdpBaseUrl, path);\n if (url) navigateToTdpUrl(url, opts);\n },\n }),\n [tdpBaseUrl],\n );\n}\n\n/** Props for the TDPLink component */\nexport interface TDPLinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> {\n /** TDP page path (e.g., \"/file/abc-123\" or use tdpPaths helpers) */\n path: string;\n /** Navigation behavior. Default: { newTab: true } */\n navigationOptions?: TdpNavigationOptions;\n children: React.ReactNode;\n ref?: React.Ref<HTMLAnchorElement>;\n}\n\n/**\n * A link component that navigates to TDP pages.\n *\n * Renders a standard `<a>` tag with the correct href for right-click\n * \"Open in new tab\" support, accessibility, and SEO.\n *\n * Must be used inside a `<TdpNavigationProvider>`.\n *\n * @example\n * ```tsx\n * import { TDPLink, tdpPaths } from '@tetrascience-npm/tetrascience-react-ui';\n *\n * <TDPLink path={tdpPaths.fileDetails(\"abc-123\")}>\n * View File Details\n * </TDPLink>\n *\n * <TDPLink path=\"/search?q=test\" navigationOptions={{ newTab: false }}>\n * Search in TDP (same tab)\n * </TDPLink>\n * ```\n */\nexport const TDPLink: React.FC<TDPLinkProps> = ({\n path,\n navigationOptions = { newTab: true },\n children,\n onClick,\n className,\n ...rest\n}) => {\n const { getTdpUrl, navigateToTdp } = useTdpNavigationContext();\n const href = getTdpUrl(path);\n\n const handleClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n // Let modifier-key clicks through for native \"open in new tab\" behavior\n if (e.metaKey || e.ctrlKey || e.shiftKey) {\n return;\n }\n\n e.preventDefault();\n onClick?.(e);\n navigateToTdp(path, navigationOptions);\n };\n\n return (\n <a\n href={href ?? '#'}\n target={navigationOptions.newTab ? '_blank' : undefined}\n rel={navigationOptions.newTab ? 'noopener noreferrer' : undefined}\n onClick={handleClick}\n className={`underline underline-offset-2 cursor-pointer focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:rounded-[2px] ${className ?? ''}`}\n style={{ color: 'var(--primary)', outlineColor: 'var(--border)' }}\n {...rest}\n >\n {children}\n </a>\n );\n};\n"],"names":["TdpNavigationContext","createContext","useTdpNavigationContext","context","useContext","TdpNavigationProvider","explicitBaseUrl","children","tdpBaseUrl","useMemo","getTdpBaseUrlFromReferrer","contextValue","path","buildTdpUrl","options","url","navigateToTdpUrl","useTdpNavigation","opts","TDPLink","navigationOptions","onClick","className","rest","getTdpUrl","navigateToTdp","href","handleClick","e","jsx"],"mappings":"mKAeaA,EAAuBC,EAAAA,cAAgD,IAAI,EAYjF,SAASC,GAAqD,CACnE,MAAMC,EAAUC,EAAAA,WAAWJ,CAAoB,EAC/C,GAAI,CAACG,EACH,MAAM,IAAI,MACR,wKAAA,EAIJ,OAAOA,CACT,CAyBO,MAAME,EAA8D,CAAC,CAC1E,WAAYC,EACZ,SAAAC,CACF,IAAM,CACJ,MAAMC,EAAaC,EAAAA,QAAQ,IACrBH,EACKA,EAAgB,QAAQ,OAAQ,EAAE,EAEpCI,4BAAA,EACN,CAACJ,CAAe,CAAC,EAEdK,EAAeF,EAAAA,QACnB,KAAO,CACL,WAAAD,EACA,UAAYI,GACLJ,EACEK,EAAAA,YAAYL,EAAYI,CAAI,EADX,KAG1B,cAAe,CAACA,EAAcE,IAAmC,CAC/D,GAAI,CAACN,EAAY,CACf,QAAQ,KAAK,4DAA4D,EACzE,MACF,CACA,MAAMO,EAAMF,EAAAA,YAAYL,EAAYI,CAAI,EACpCG,GACFC,EAAAA,iBAAiBD,EAAKD,CAAO,CAEjC,CAAA,GAEF,CAACN,CAAU,CAAA,EAGb,aAAQR,EAAqB,SAArB,CAA8B,MAAOW,EAAe,SAAAJ,EAAS,CACvE,EAqCO,SAASU,EAAiBH,EAAmC,GAA4B,CAC9F,KAAM,CAAE,WAAYR,CAAA,EAAoBQ,EAElCN,EAAaC,EAAAA,QAAQ,IACrBH,EAAwBA,EAAgB,QAAQ,OAAQ,EAAE,EACvDI,4BAAA,EACN,CAACJ,CAAe,CAAC,EAEpB,OAAOG,EAAAA,QACL,KAAO,CACL,WAAAD,EACA,UAAYI,GAAkBJ,EAAaK,EAAAA,YAAYL,EAAYI,CAAI,EAAI,KAC3E,cAAe,CAACA,EAAcM,IAAgC,CAC5D,GAAI,CAACV,EAAY,CACf,QAAQ,KAAK,+DAA+D,EAC5E,MACF,CACA,MAAMO,EAAMF,EAAAA,YAAYL,EAAYI,CAAI,EACpCG,GAAKC,EAAAA,iBAAiBD,EAAKG,CAAI,CACrC,CAAA,GAEF,CAACV,CAAU,CAAA,CAEf,CAiCO,MAAMW,EAAkC,CAAC,CAC9C,KAAAP,EACA,kBAAAQ,EAAoB,CAAE,OAAQ,EAAA,EAC9B,SAAAb,EACA,QAAAc,EACA,UAAAC,EACA,GAAGC,CACL,IAAM,CACJ,KAAM,CAAE,UAAAC,EAAW,cAAAC,CAAA,EAAkBvB,EAAA,EAC/BwB,EAAOF,EAAUZ,CAAI,EAErBe,EAAeC,GAA2C,CAE1DA,EAAE,SAAWA,EAAE,SAAWA,EAAE,WAIhCA,EAAE,eAAA,EACFP,IAAUO,CAAC,EACXH,EAAcb,EAAMQ,CAAiB,EACvC,EAEA,OACES,EAAAA,IAAC,IAAA,CACC,KAAMH,GAAQ,IACd,OAAQN,EAAkB,OAAS,SAAW,OAC9C,IAAKA,EAAkB,OAAS,sBAAwB,OACxD,QAASO,EACT,UAAW,kIAAkIL,GAAa,EAAE,GAC5J,MAAO,CAAE,MAAO,iBAAkB,aAAc,eAAA,EAC/C,GAAGC,EAEH,SAAAhB,CAAA,CAAA,CAGP"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tdp-link.js","sources":["../../../src/components/composed/tdp-link.tsx"],"sourcesContent":["import React, { createContext, useContext, useMemo } from 'react';\n\nimport { buildTdpUrl, getTdpBaseUrlFromReferrer, navigateToTdpUrl } from './tdp-url';\n\nimport type { TdpNavigationOptions } from './tdp-url';\n\nexport interface TdpNavigationContextValue {\n /** The resolved TDP base URL (origin + org path prefix), or null if not resolved */\n tdpBaseUrl: string | null;\n /** Construct a full TDP URL from a path. Returns null if base URL is not resolved. */\n getTdpUrl: (path: string) => string | null;\n /** Navigate to a TDP page. */\n navigateToTdp: (path: string, options?: TdpNavigationOptions) => void;\n}\n\nexport const TdpNavigationContext = createContext<TdpNavigationContextValue | null>(null);\n\n/**\n * Access TDP navigation helpers from the nearest TdpNavigationProvider.\n *\n * @throws Error if used outside a TdpNavigationProvider\n *\n * @example\n * ```tsx\n * const { getTdpUrl, navigateToTdp } = useTdpNavigationContext();\n * ```\n */\nexport function useTdpNavigationContext(): TdpNavigationContextValue {\n const context = useContext(TdpNavigationContext);\n if (!context) {\n throw new Error(\n 'useTdpNavigationContext must be used within a TdpNavigationProvider. ' +\n 'Wrap your app with <TdpNavigationProvider> or use the standalone useTdpNavigation() hook instead.',\n );\n }\n return context;\n}\n\n/** Props for the TdpNavigationProvider component */\nexport interface TdpNavigationProviderProps {\n /**\n * Explicit TDP base URL override. Skips auto-detection when provided.\n */\n tdpBaseUrl?: string;\n children: React.ReactNode;\n}\n\n/**\n * Provider that resolves the TDP base URL and exposes navigation helpers.\n *\n * Resolution order:\n * 1. Explicit `tdpBaseUrl` prop (if provided)\n * 2. `document.referrer` parsing (production iframe)\n *\n * @example\n * ```tsx\n * <TdpNavigationProvider tdpBaseUrl=\"https://tetrascience.com/my-org\">\n * <App />\n * </TdpNavigationProvider>\n * ```\n */\nexport const TdpNavigationProvider: React.FC<TdpNavigationProviderProps> = ({\n tdpBaseUrl: explicitBaseUrl,\n children,\n}) => {\n const tdpBaseUrl = useMemo(() => {\n if (explicitBaseUrl) {\n return explicitBaseUrl.replace(/\\/$/u, '');\n }\n return getTdpBaseUrlFromReferrer();\n }, [explicitBaseUrl]);\n\n const contextValue = useMemo<TdpNavigationContextValue>(\n () => ({\n tdpBaseUrl,\n getTdpUrl: (path: string) => {\n if (!tdpBaseUrl) return null;\n return buildTdpUrl(tdpBaseUrl, path);\n },\n navigateToTdp: (path: string, options?: TdpNavigationOptions) => {\n if (!tdpBaseUrl) {\n console.warn('[TdpNavigation] Cannot navigate: TDP base URL not resolved');\n return;\n }\n const url = buildTdpUrl(tdpBaseUrl, path);\n if (url) {\n navigateToTdpUrl(url, options);\n }\n },\n }),\n [tdpBaseUrl],\n );\n\n return <TdpNavigationContext.Provider value={contextValue}>{children}</TdpNavigationContext.Provider>;\n};\n\nexport interface UseTdpNavigationOptions {\n /** Explicit TDP base URL override */\n tdpBaseUrl?: string;\n}\n\nexport interface UseTdpNavigationReturn {\n /** The resolved TDP base URL, or null */\n tdpBaseUrl: string | null;\n /** Construct a full TDP URL from a path */\n getTdpUrl: (path: string) => string | null;\n /** Navigate to a TDP page */\n navigateToTdp: (path: string, options?: TdpNavigationOptions) => void;\n}\n\n/**\n * Standalone hook for TDP navigation (no provider required).\n *\n * For simple use cases where you don't need a TdpNavigationProvider.\n * If multiple components need navigation, prefer the provider approach.\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const { getTdpUrl, navigateToTdp } = useTdpNavigation({\n * tdpBaseUrl: \"https://tetrascience.com/my-org\",\n * });\n *\n * return (\n * <a href={getTdpUrl(\"/file/abc\") ?? \"#\"} target=\"_blank\" rel=\"noopener noreferrer\">\n * View File\n * </a>\n * );\n * }\n * ```\n */\nexport function useTdpNavigation(options: UseTdpNavigationOptions = {}): UseTdpNavigationReturn {\n const { tdpBaseUrl: explicitBaseUrl } = options;\n\n const tdpBaseUrl = useMemo(() => {\n if (explicitBaseUrl) return explicitBaseUrl.replace(/\\/$/u, '');\n return getTdpBaseUrlFromReferrer();\n }, [explicitBaseUrl]);\n\n return useMemo(\n () => ({\n tdpBaseUrl,\n getTdpUrl: (path: string) => (tdpBaseUrl ? buildTdpUrl(tdpBaseUrl, path) : null),\n navigateToTdp: (path: string, opts?: TdpNavigationOptions) => {\n if (!tdpBaseUrl) {\n console.warn('[useTdpNavigation] Cannot navigate: TDP base URL not resolved');\n return;\n }\n const url = buildTdpUrl(tdpBaseUrl, path);\n if (url) navigateToTdpUrl(url, opts);\n },\n }),\n [tdpBaseUrl],\n );\n}\n\n/** Props for the TDPLink component */\nexport interface TDPLinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> {\n /** TDP page path (e.g., \"/file/abc-123\" or use tdpPaths helpers) */\n path: string;\n /** Navigation behavior. Default: { newTab: true } */\n navigationOptions?: TdpNavigationOptions;\n children: React.ReactNode;\n ref?: React.Ref<HTMLAnchorElement>;\n}\n\n/**\n * A link component that navigates to TDP pages.\n *\n * Renders a standard `<a>` tag with the correct href for right-click\n * \"Open in new tab\" support, accessibility, and SEO.\n *\n * Must be used inside a `<TdpNavigationProvider>`.\n *\n * @example\n * ```tsx\n * import { TDPLink, tdpPaths } from '@tetrascience-npm/tetrascience-react-ui';\n *\n * <TDPLink path={tdpPaths.fileDetails(\"abc-123\")}>\n * View File Details\n * </TDPLink>\n *\n * <TDPLink path=\"/search?q=test\" navigationOptions={{ newTab: false }}>\n * Search in TDP (same tab)\n * </TDPLink>\n * ```\n */\nexport const TDPLink: React.FC<TDPLinkProps> = ({\n path,\n navigationOptions = { newTab: true },\n children,\n onClick,\n className,\n ...rest\n}) => {\n const { getTdpUrl, navigateToTdp } = useTdpNavigationContext();\n const href = getTdpUrl(path);\n\n const handleClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n // Let modifier-key clicks through for native \"open in new tab\" behavior\n if (e.metaKey || e.ctrlKey || e.shiftKey) {\n return;\n }\n\n e.preventDefault();\n onClick?.(e);\n navigateToTdp(path, navigationOptions);\n };\n\n return (\n <a\n href={href ?? '#'}\n target={navigationOptions.newTab ? '_blank' : undefined}\n rel={navigationOptions.newTab ? 'noopener noreferrer' : undefined}\n onClick={handleClick}\n className={`underline underline-offset-2 cursor-pointer focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:rounded-[2px] ${className ?? ''}`}\n style={{ color: 'var(--primary)', outlineColor: 'var(--border)' }}\n {...rest}\n >\n {children}\n </a>\n );\n};\n"],"names":["TdpNavigationContext","createContext","useTdpNavigationContext","context","useContext","TdpNavigationProvider","explicitBaseUrl","children","tdpBaseUrl","useMemo","getTdpBaseUrlFromReferrer","contextValue","path","buildTdpUrl","options","url","navigateToTdpUrl","useTdpNavigation","opts","TDPLink","navigationOptions","onClick","className","rest","getTdpUrl","navigateToTdp","href","handleClick","e","jsx"],"mappings":";;;AAeO,MAAMA,IAAuBC,EAAgD,IAAI;AAYjF,SAASC,IAAqD;AACnE,QAAMC,IAAUC,EAAWJ,CAAoB;AAC/C,MAAI,CAACG;AACH,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAIJ,SAAOA;AACT;AAyBO,MAAME,IAA8D,CAAC;AAAA,EAC1E,YAAYC;AAAA,EACZ,UAAAC;AACF,MAAM;AACJ,QAAMC,IAAaC,EAAQ,MACrBH,IACKA,EAAgB,QAAQ,QAAQ,EAAE,IAEpCI,EAAA,GACN,CAACJ,CAAe,CAAC,GAEdK,IAAeF;AAAA,IACnB,OAAO;AAAA,MACL,YAAAD;AAAA,MACA,WAAW,CAACI,MACLJ,IACEK,EAAYL,GAAYI,CAAI,IADX;AAAA,MAG1B,eAAe,CAACA,GAAcE,MAAmC;AAC/D,YAAI,CAACN,GAAY;AACf,kBAAQ,KAAK,4DAA4D;AACzE;AAAA,QACF;AACA,cAAMO,IAAMF,EAAYL,GAAYI,CAAI;AACxC,QAAIG,KACFC,EAAiBD,GAAKD,CAAO;AAAA,MAEjC;AAAA,IAAA;AAAA,IAEF,CAACN,CAAU;AAAA,EAAA;AAGb,2BAAQR,EAAqB,UAArB,EAA8B,OAAOW,GAAe,UAAAJ,GAAS;AACvE;AAqCO,SAASU,EAAiBH,IAAmC,IAA4B;AAC9F,QAAM,EAAE,YAAYR,EAAA,IAAoBQ,GAElCN,IAAaC,EAAQ,MACrBH,IAAwBA,EAAgB,QAAQ,QAAQ,EAAE,IACvDI,EAAA,GACN,CAACJ,CAAe,CAAC;AAEpB,SAAOG;AAAA,IACL,OAAO;AAAA,MACL,YAAAD;AAAA,MACA,WAAW,CAACI,MAAkBJ,IAAaK,EAAYL,GAAYI,CAAI,IAAI;AAAA,MAC3E,eAAe,CAACA,GAAcM,MAAgC;AAC5D,YAAI,CAACV,GAAY;AACf,kBAAQ,KAAK,+DAA+D;AAC5E;AAAA,QACF;AACA,cAAMO,IAAMF,EAAYL,GAAYI,CAAI;AACxC,QAAIG,KAAKC,EAAiBD,GAAKG,CAAI;AAAA,MACrC;AAAA,IAAA;AAAA,IAEF,CAACV,CAAU;AAAA,EAAA;AAEf;AAiCO,MAAMW,IAAkC,CAAC;AAAA,EAC9C,MAAAP;AAAA,EACA,mBAAAQ,IAAoB,EAAE,QAAQ,GAAA;AAAA,EAC9B,UAAAb;AAAA,EACA,SAAAc;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAM,EAAE,WAAAC,GAAW,eAAAC,EAAA,IAAkBvB,EAAA,GAC/BwB,IAAOF,EAAUZ,CAAI,GAErBe,IAAc,CAACC,MAA2C;AAE9D,IAAIA,EAAE,WAAWA,EAAE,WAAWA,EAAE,aAIhCA,EAAE,eAAA,GACFP,IAAUO,CAAC,GACXH,EAAcb,GAAMQ,CAAiB;AAAA,EACvC;AAEA,SACE,gBAAAS;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAMH,KAAQ;AAAA,MACd,QAAQN,EAAkB,SAAS,WAAW;AAAA,MAC9C,KAAKA,EAAkB,SAAS,wBAAwB;AAAA,MACxD,SAASO;AAAA,MACT,WAAW,kIAAkIL,KAAa,EAAE;AAAA,MAC5J,OAAO,EAAE,OAAO,kBAAkB,cAAc,gBAAA;AAAA,MAC/C,GAAGC;AAAA,MAEH,UAAAhB;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tdp-url.cjs","sources":["../../../src/components/composed/tdp-url.ts"],"sourcesContent":["/**\n * TDP Navigation Utilities\n *\n * Pure utility functions for constructing and navigating to TDP URLs.\n * These work independently of React and can be used in any context.\n *\n * Data apps run inside iframes within TDP. These utilities help resolve\n * the TDP base URL from the iframe context and construct navigation URLs.\n */\n\n/**\n * Known TDP route prefixes. When found in a referrer URL's pathname,\n * everything from the prefix onward is stripped to derive the TDP base URL.\n */\nconst TDP_ROUTE_PREFIXES = [\n '/data-workspace',\n '/data-apps',\n '/pipelines',\n '/pipeline-edit/',\n '/pipeline-details/',\n '/pipeline-processing/',\n '/file/',\n '/file-details/',\n '/files',\n '/search',\n '/search-classic',\n '/artifacts/',\n '/admin',\n '/settings',\n '/agent-studio',\n];\n\n/**\n * Extract the TDP base URL from `document.referrer`.\n *\n * In production, data apps run inside iframes within TDP. The browser\n * provides `document.referrer` containing the parent TDP page URL.\n * This function strips the known route path to get the base URL\n * (origin + org slug path prefix).\n *\n * @example\n * // referrer: \"https://tetrascience-uat.com/my-org/data-workspace/abc\"\n * getTdpBaseUrlFromReferrer() // \"https://tetrascience-uat.com/my-org\"\n *\n * @returns The TDP base URL, or null if detection fails\n */\nexport function getTdpBaseUrlFromReferrer(): string | null {\n if (typeof document === 'undefined' || !document.referrer) {\n return null;\n }\n\n try {\n const referrerUrl = new URL(document.referrer);\n const pathname = referrerUrl.pathname;\n\n for (const prefix of TDP_ROUTE_PREFIXES) {\n const prefixIndex = pathname.indexOf(prefix);\n if (prefixIndex !== -1) {\n const basePath = pathname.slice(0, prefixIndex).replace(/\\/$/u, '');\n return `${referrerUrl.origin}${basePath}`;\n }\n }\n\n // No known route matched — return origin (handles TDP root pages)\n return referrerUrl.origin;\n } catch {\n return null;\n }\n}\n\n/**\n * Construct a full TDP URL by joining a base URL with a path.\n *\n * @example\n * buildTdpUrl(\"https://tetrascience.com/my-org\", \"/file/abc-123\")\n * // \"https://tetrascience.com/my-org/file/abc-123\"\n *\n * @param baseUrl - The TDP base URL (origin + optional org prefix)\n * @param path - The TDP page path (e.g., \"/file/abc-123\")\n * @returns The full TDP URL, or null if construction fails\n */\nexport function buildTdpUrl(baseUrl: string, path: string): string | null {\n try {\n const normalizedPath = path.startsWith('/') ? path : `/${path}`;\n const url = new URL(baseUrl);\n url.pathname = `${url.pathname.replace(/\\/$/u, '')}${normalizedPath}`;\n return url.href;\n } catch {\n return null;\n }\n}\n\nexport interface TdpNavigationOptions {\n /** Open in a new tab instead of navigating the parent TDP frame. Default: false */\n newTab?: boolean;\n}\n\n/**\n * Navigate to a TDP URL.\n *\n * - `{ newTab: true }` opens the URL in a new browser tab.\n * - Default: sends a `postMessage` to the parent TDP frame (same-tab navigation\n * when inside an iframe), or navigates the current window (standalone).\n *\n * @param url - Full TDP URL to navigate to\n * @param options - Navigation options\n */\nexport function navigateToTdpUrl(url: string, options: TdpNavigationOptions = {}): void {\n if (options.newTab) {\n window.open(url, '_blank', 'noopener,noreferrer');\n return;\n }\n\n // In a cross-origin iframe (TDP), use postMessage to navigate the parent frame.\n // Same-origin iframes (e.g., Storybook) fall through to direct navigation.\n if (window.parent !== window) {\n try {\n // Accessing window.parent.location.href throws SecurityError if cross-origin\n void window.parent.location.href;\n } catch {\n // Cross-origin iframe — use postMessage to navigate the parent TDP frame\n try {\n const tdpUrl = new URL(url);\n const relativePath = `${tdpUrl.pathname}${tdpUrl.search}${tdpUrl.hash}`;\n window.parent.postMessage({ type: 'navigate', path: relativePath }, '*');\n return;\n } catch {\n // Fall through to direct navigation\n }\n }\n }\n\n // Fallback: direct navigation (local dev or non-iframe)\n window.location.href = url;\n}\n\n/**\n * Convenience helpers for constructing common TDP page paths.\n * Returns path strings for use with `getTdpUrl()` or `buildTdpUrl()`.\n *\n * @example\n * const { getTdpUrl } = useTdpNavigation();\n * const url = getTdpUrl(tdpPaths.fileDetails(\"abc-123\"));\n */\nexport const tdpPaths = {\n fileDetails: (fileId: string) => `/file/${fileId}`,\n pipelineEdit: (pipelineId: string) => `/pipeline-edit/${pipelineId}`,\n pipelineDetails: (pipelineId: string) => `/pipeline-details/${pipelineId}`,\n search: (query?: string) => (query ? `/search?q=${encodeURIComponent(query)}` : '/search'),\n dataWorkspace: () => '/data-workspace',\n dataApps: () => '/data-apps',\n artifact: (type: string, namespace: string, slug: string) => `/artifacts/${type}/${namespace}/${slug}`,\n};\n"],"names":["TDP_ROUTE_PREFIXES","getTdpBaseUrlFromReferrer","referrerUrl","pathname","prefix","prefixIndex","basePath","buildTdpUrl","baseUrl","path","normalizedPath","url","navigateToTdpUrl","options","tdpUrl","relativePath","tdpPaths","fileId","pipelineId","query","type","namespace","slug"],"mappings":"gFAcA,MAAMA,EAAqB,CACzB,kBACA,aACA,aACA,kBACA,qBACA,wBACA,SACA,iBACA,SACA,UACA,kBACA,cACA,SACA,YACA,eACF,EAgBO,SAASC,GAA2C,CACzD,GAAI,OAAO,SAAa,KAAe,CAAC,SAAS,SAC/C,OAAO,KAGT,GAAI,CACF,MAAMC,EAAc,IAAI,IAAI,SAAS,QAAQ,EACvCC,EAAWD,EAAY,SAE7B,UAAWE,KAAUJ,EAAoB,CACvC,MAAMK,EAAcF,EAAS,QAAQC,CAAM,EAC3C,GAAIC,IAAgB,GAAI,CACtB,MAAMC,EAAWH,EAAS,MAAM,EAAGE,CAAW,EAAE,QAAQ,OAAQ,EAAE,EAClE,MAAO,GAAGH,EAAY,MAAM,GAAGI,CAAQ,EACzC,CACF,CAGA,OAAOJ,EAAY,MACrB,MAAQ,CACN,OAAO,IACT,CACF,CAaO,SAASK,EAAYC,EAAiBC,EAA6B,CACxE,GAAI,CACF,MAAMC,EAAiBD,EAAK,WAAW,GAAG,EAAIA,EAAO,IAAIA,CAAI,GACvDE,EAAM,IAAI,IAAIH,CAAO,EAC3B,OAAAG,EAAI,SAAW,GAAGA,EAAI,SAAS,QAAQ,OAAQ,EAAE,CAAC,GAAGD,CAAc,GAC5DC,EAAI,IACb,MAAQ,CACN,OAAO,IACT,CACF,CAiBO,SAASC,EAAiBD,EAAaE,EAAgC,GAAU,CACtF,GAAIA,EAAQ,OAAQ,CAClB,OAAO,KAAKF,EAAK,SAAU,qBAAqB,EAChD,MACF,CAIA,GAAI,OAAO,SAAW,OACpB,GAAI,CAEG,OAAO,OAAO,SAAS,IAC9B,MAAQ,CAEN,GAAI,CACF,MAAMG,EAAS,IAAI,IAAIH,CAAG,EACpBI,EAAe,GAAGD,EAAO,QAAQ,GAAGA,EAAO,MAAM,GAAGA,EAAO,IAAI,GACrE,OAAO,OAAO,YAAY,CAAE,KAAM,WAAY,KAAMC,CAAA,EAAgB,GAAG,EACvE,MACF,MAAQ,CAER,CACF,CAIF,OAAO,SAAS,KAAOJ,CACzB,CAUO,MAAMK,EAAW,CACtB,YAAcC,GAAmB,SAASA,CAAM,GAChD,aAAeC,GAAuB,kBAAkBA,CAAU,GAClE,gBAAkBA,GAAuB,qBAAqBA,CAAU,GACxE,OAASC,GAAoBA,EAAQ,aAAa,mBAAmBA,CAAK,CAAC,GAAK,UAChF,cAAe,IAAM,kBACrB,SAAU,IAAM,aAChB,SAAU,CAACC,EAAcC,EAAmBC,IAAiB,cAAcF,CAAI,IAAIC,CAAS,IAAIC,CAAI,EACtG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tdp-url.js","sources":["../../../src/components/composed/tdp-url.ts"],"sourcesContent":["/**\n * TDP Navigation Utilities\n *\n * Pure utility functions for constructing and navigating to TDP URLs.\n * These work independently of React and can be used in any context.\n *\n * Data apps run inside iframes within TDP. These utilities help resolve\n * the TDP base URL from the iframe context and construct navigation URLs.\n */\n\n/**\n * Known TDP route prefixes. When found in a referrer URL's pathname,\n * everything from the prefix onward is stripped to derive the TDP base URL.\n */\nconst TDP_ROUTE_PREFIXES = [\n '/data-workspace',\n '/data-apps',\n '/pipelines',\n '/pipeline-edit/',\n '/pipeline-details/',\n '/pipeline-processing/',\n '/file/',\n '/file-details/',\n '/files',\n '/search',\n '/search-classic',\n '/artifacts/',\n '/admin',\n '/settings',\n '/agent-studio',\n];\n\n/**\n * Extract the TDP base URL from `document.referrer`.\n *\n * In production, data apps run inside iframes within TDP. The browser\n * provides `document.referrer` containing the parent TDP page URL.\n * This function strips the known route path to get the base URL\n * (origin + org slug path prefix).\n *\n * @example\n * // referrer: \"https://tetrascience-uat.com/my-org/data-workspace/abc\"\n * getTdpBaseUrlFromReferrer() // \"https://tetrascience-uat.com/my-org\"\n *\n * @returns The TDP base URL, or null if detection fails\n */\nexport function getTdpBaseUrlFromReferrer(): string | null {\n if (typeof document === 'undefined' || !document.referrer) {\n return null;\n }\n\n try {\n const referrerUrl = new URL(document.referrer);\n const pathname = referrerUrl.pathname;\n\n for (const prefix of TDP_ROUTE_PREFIXES) {\n const prefixIndex = pathname.indexOf(prefix);\n if (prefixIndex !== -1) {\n const basePath = pathname.slice(0, prefixIndex).replace(/\\/$/u, '');\n return `${referrerUrl.origin}${basePath}`;\n }\n }\n\n // No known route matched — return origin (handles TDP root pages)\n return referrerUrl.origin;\n } catch {\n return null;\n }\n}\n\n/**\n * Construct a full TDP URL by joining a base URL with a path.\n *\n * @example\n * buildTdpUrl(\"https://tetrascience.com/my-org\", \"/file/abc-123\")\n * // \"https://tetrascience.com/my-org/file/abc-123\"\n *\n * @param baseUrl - The TDP base URL (origin + optional org prefix)\n * @param path - The TDP page path (e.g., \"/file/abc-123\")\n * @returns The full TDP URL, or null if construction fails\n */\nexport function buildTdpUrl(baseUrl: string, path: string): string | null {\n try {\n const normalizedPath = path.startsWith('/') ? path : `/${path}`;\n const url = new URL(baseUrl);\n url.pathname = `${url.pathname.replace(/\\/$/u, '')}${normalizedPath}`;\n return url.href;\n } catch {\n return null;\n }\n}\n\nexport interface TdpNavigationOptions {\n /** Open in a new tab instead of navigating the parent TDP frame. Default: false */\n newTab?: boolean;\n}\n\n/**\n * Navigate to a TDP URL.\n *\n * - `{ newTab: true }` opens the URL in a new browser tab.\n * - Default: sends a `postMessage` to the parent TDP frame (same-tab navigation\n * when inside an iframe), or navigates the current window (standalone).\n *\n * @param url - Full TDP URL to navigate to\n * @param options - Navigation options\n */\nexport function navigateToTdpUrl(url: string, options: TdpNavigationOptions = {}): void {\n if (options.newTab) {\n window.open(url, '_blank', 'noopener,noreferrer');\n return;\n }\n\n // In a cross-origin iframe (TDP), use postMessage to navigate the parent frame.\n // Same-origin iframes (e.g., Storybook) fall through to direct navigation.\n if (window.parent !== window) {\n try {\n // Accessing window.parent.location.href throws SecurityError if cross-origin\n void window.parent.location.href;\n } catch {\n // Cross-origin iframe — use postMessage to navigate the parent TDP frame\n try {\n const tdpUrl = new URL(url);\n const relativePath = `${tdpUrl.pathname}${tdpUrl.search}${tdpUrl.hash}`;\n window.parent.postMessage({ type: 'navigate', path: relativePath }, '*');\n return;\n } catch {\n // Fall through to direct navigation\n }\n }\n }\n\n // Fallback: direct navigation (local dev or non-iframe)\n window.location.href = url;\n}\n\n/**\n * Convenience helpers for constructing common TDP page paths.\n * Returns path strings for use with `getTdpUrl()` or `buildTdpUrl()`.\n *\n * @example\n * const { getTdpUrl } = useTdpNavigation();\n * const url = getTdpUrl(tdpPaths.fileDetails(\"abc-123\"));\n */\nexport const tdpPaths = {\n fileDetails: (fileId: string) => `/file/${fileId}`,\n pipelineEdit: (pipelineId: string) => `/pipeline-edit/${pipelineId}`,\n pipelineDetails: (pipelineId: string) => `/pipeline-details/${pipelineId}`,\n search: (query?: string) => (query ? `/search?q=${encodeURIComponent(query)}` : '/search'),\n dataWorkspace: () => '/data-workspace',\n dataApps: () => '/data-apps',\n artifact: (type: string, namespace: string, slug: string) => `/artifacts/${type}/${namespace}/${slug}`,\n};\n"],"names":["TDP_ROUTE_PREFIXES","getTdpBaseUrlFromReferrer","referrerUrl","pathname","prefix","prefixIndex","basePath","buildTdpUrl","baseUrl","path","normalizedPath","url","navigateToTdpUrl","options","tdpUrl","relativePath","tdpPaths","fileId","pipelineId","query","type","namespace","slug"],"mappings":"AAcA,MAAMA,IAAqB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAgBO,SAASC,IAA2C;AACzD,MAAI,OAAO,WAAa,OAAe,CAAC,SAAS;AAC/C,WAAO;AAGT,MAAI;AACF,UAAMC,IAAc,IAAI,IAAI,SAAS,QAAQ,GACvCC,IAAWD,EAAY;AAE7B,eAAWE,KAAUJ,GAAoB;AACvC,YAAMK,IAAcF,EAAS,QAAQC,CAAM;AAC3C,UAAIC,MAAgB,IAAI;AACtB,cAAMC,IAAWH,EAAS,MAAM,GAAGE,CAAW,EAAE,QAAQ,QAAQ,EAAE;AAClE,eAAO,GAAGH,EAAY,MAAM,GAAGI,CAAQ;AAAA,MACzC;AAAA,IACF;AAGA,WAAOJ,EAAY;AAAA,EACrB,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAaO,SAASK,EAAYC,GAAiBC,GAA6B;AACxE,MAAI;AACF,UAAMC,IAAiBD,EAAK,WAAW,GAAG,IAAIA,IAAO,IAAIA,CAAI,IACvDE,IAAM,IAAI,IAAIH,CAAO;AAC3B,WAAAG,EAAI,WAAW,GAAGA,EAAI,SAAS,QAAQ,QAAQ,EAAE,CAAC,GAAGD,CAAc,IAC5DC,EAAI;AAAA,EACb,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAiBO,SAASC,EAAiBD,GAAaE,IAAgC,IAAU;AACtF,MAAIA,EAAQ,QAAQ;AAClB,WAAO,KAAKF,GAAK,UAAU,qBAAqB;AAChD;AAAA,EACF;AAIA,MAAI,OAAO,WAAW;AACpB,QAAI;AAEF,MAAK,OAAO,OAAO,SAAS;AAAA,IAC9B,QAAQ;AAEN,UAAI;AACF,cAAMG,IAAS,IAAI,IAAIH,CAAG,GACpBI,IAAe,GAAGD,EAAO,QAAQ,GAAGA,EAAO,MAAM,GAAGA,EAAO,IAAI;AACrE,eAAO,OAAO,YAAY,EAAE,MAAM,YAAY,MAAMC,EAAA,GAAgB,GAAG;AACvE;AAAA,MACF,QAAQ;AAAA,MAER;AAAA,IACF;AAIF,SAAO,SAAS,OAAOJ;AACzB;AAUO,MAAMK,IAAW;AAAA,EACtB,aAAa,CAACC,MAAmB,SAASA,CAAM;AAAA,EAChD,cAAc,CAACC,MAAuB,kBAAkBA,CAAU;AAAA,EAClE,iBAAiB,CAACA,MAAuB,qBAAqBA,CAAU;AAAA,EACxE,QAAQ,CAACC,MAAoBA,IAAQ,aAAa,mBAAmBA,CAAK,CAAC,KAAK;AAAA,EAChF,eAAe,MAAM;AAAA,EACrB,UAAU,MAAM;AAAA,EAChB,UAAU,CAACC,GAAcC,GAAmBC,MAAiB,cAAcF,CAAI,IAAIC,CAAS,IAAIC,CAAI;AACtG;"}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),c=require("lucide-react"),r=require("radix-ui"),t=require("../../lib/utils.cjs");function a({className:e,...n}){return o.jsx(r.Accordion.Root,{"data-slot":"accordion",className:t.cn("flex w-full flex-col",e),...n})}function d({className:e,...n}){return o.jsx(r.Accordion.Item,{"data-slot":"accordion-item",className:t.cn("not-last:border-b",e),...n})}function s({className:e,children:n,...i}){return o.jsx(r.Accordion.Header,{className:"flex",children:o.jsxs(r.Accordion.Trigger,{"data-slot":"accordion-trigger",className:t.cn("group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:shadow-focus disabled:pointer-events-none disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground",e),...i,children:[n,o.jsx(c.ChevronDownIcon,{"data-slot":"accordion-trigger-icon",className:"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden"}),o.jsx(c.ChevronUpIcon,{"data-slot":"accordion-trigger-icon",className:"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline"})]})})}function l({className:e,children:n,...i}){return o.jsx(r.Accordion.Content,{"data-slot":"accordion-content",className:"overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up",...i,children:o.jsx("div",{className:t.cn("h-(--radix-accordion-content-height) pt-0 pb-2.5 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4",e),children:n})})}exports.Accordion=a;exports.AccordionContent=l;exports.AccordionItem=d;exports.AccordionTrigger=s;
2
- //# sourceMappingURL=accordion.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"accordion.cjs","sources":["../../../src/components/ui/accordion.tsx"],"sourcesContent":["import { ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\nimport { Accordion as AccordionPrimitive } from \"radix-ui\"\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\n\nfunction Accordion({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return (\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n className={cn(\"flex w-full flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\"not-last:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:shadow-focus disabled:pointer-events-none disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon data-slot=\"accordion-trigger-icon\" className=\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\" />\n <ChevronUpIcon data-slot=\"accordion-trigger-icon\" className=\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up\"\n {...props}\n >\n <div\n className={cn(\n \"h-(--radix-accordion-content-height) pt-0 pb-2.5 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\",\n className\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Content>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n"],"names":["Accordion","className","props","jsx","AccordionPrimitive","cn","AccordionItem","AccordionTrigger","children","jsxs","ChevronDownIcon","ChevronUpIcon","AccordionContent"],"mappings":"sMAOA,SAASA,EAAU,CACjB,UAAAC,EACA,GAAGC,CACL,EAAyD,CACvD,OACEC,EAAAA,IAACC,EAAAA,UAAmB,KAAnB,CACC,YAAU,YACV,UAAWC,EAAAA,GAAG,uBAAwBJ,CAAS,EAC9C,GAAGC,CAAA,CAAA,CAGV,CAEA,SAASI,EAAc,CACrB,UAAAL,EACA,GAAGC,CACL,EAAyD,CACvD,OACEC,EAAAA,IAACC,EAAAA,UAAmB,KAAnB,CACC,YAAU,iBACV,UAAWC,EAAAA,GAAG,oBAAqBJ,CAAS,EAC3C,GAAGC,CAAA,CAAA,CAGV,CAEA,SAASK,EAAiB,CACxB,UAAAN,EACA,SAAAO,EACA,GAAGN,CACL,EAA4D,CAC1D,OACEC,EAAAA,IAACC,EAAAA,UAAmB,OAAnB,CAA0B,UAAU,OACnC,SAAAK,EAAAA,KAACL,EAAAA,UAAmB,QAAnB,CACC,YAAU,oBACV,UAAWC,EAAAA,GACT,8bACAJ,CAAA,EAED,GAAGC,EAEH,SAAA,CAAAM,EACDL,EAAAA,IAACO,EAAAA,gBAAA,CAAgB,YAAU,yBAAyB,UAAU,4EAA4E,EAC1IP,EAAAA,IAACQ,EAAAA,cAAA,CAAc,YAAU,yBAAyB,UAAU,kFAAA,CAAmF,CAAA,CAAA,CAAA,EAEnJ,CAEJ,CAEA,SAASC,EAAiB,CACxB,UAAAX,EACA,SAAAO,EACA,GAAGN,CACL,EAA4D,CAC1D,OACEC,EAAAA,IAACC,EAAAA,UAAmB,QAAnB,CACC,YAAU,oBACV,UAAU,4FACT,GAAGF,EAEJ,SAAAC,EAAAA,IAAC,MAAA,CACC,UAAWE,EAAAA,GACT,oJACAJ,CAAA,EAGD,SAAAO,CAAA,CAAA,CACH,CAAA,CAGN"}
@@ -1,83 +0,0 @@
1
- import { jsx as r, jsxs as a } from "react/jsx-runtime";
2
- import { ChevronDownIcon as c, ChevronUpIcon as d } from "lucide-react";
3
- import { Accordion as n } from "radix-ui";
4
- import { cn as t } from "../../lib/utils.js";
5
- function u({
6
- className: o,
7
- ...e
8
- }) {
9
- return /* @__PURE__ */ r(
10
- n.Root,
11
- {
12
- "data-slot": "accordion",
13
- className: t("flex w-full flex-col", o),
14
- ...e
15
- }
16
- );
17
- }
18
- function f({
19
- className: o,
20
- ...e
21
- }) {
22
- return /* @__PURE__ */ r(
23
- n.Item,
24
- {
25
- "data-slot": "accordion-item",
26
- className: t("not-last:border-b", o),
27
- ...e
28
- }
29
- );
30
- }
31
- function p({
32
- className: o,
33
- children: e,
34
- ...i
35
- }) {
36
- return /* @__PURE__ */ r(n.Header, { className: "flex", children: /* @__PURE__ */ a(
37
- n.Trigger,
38
- {
39
- "data-slot": "accordion-trigger",
40
- className: t(
41
- "group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:shadow-focus disabled:pointer-events-none disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground",
42
- o
43
- ),
44
- ...i,
45
- children: [
46
- e,
47
- /* @__PURE__ */ r(c, { "data-slot": "accordion-trigger-icon", className: "pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden" }),
48
- /* @__PURE__ */ r(d, { "data-slot": "accordion-trigger-icon", className: "pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline" })
49
- ]
50
- }
51
- ) });
52
- }
53
- function h({
54
- className: o,
55
- children: e,
56
- ...i
57
- }) {
58
- return /* @__PURE__ */ r(
59
- n.Content,
60
- {
61
- "data-slot": "accordion-content",
62
- className: "overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up",
63
- ...i,
64
- children: /* @__PURE__ */ r(
65
- "div",
66
- {
67
- className: t(
68
- "h-(--radix-accordion-content-height) pt-0 pb-2.5 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4",
69
- o
70
- ),
71
- children: e
72
- }
73
- )
74
- }
75
- );
76
- }
77
- export {
78
- u as Accordion,
79
- h as AccordionContent,
80
- f as AccordionItem,
81
- p as AccordionTrigger
82
- };
83
- //# sourceMappingURL=accordion.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"accordion.js","sources":["../../../src/components/ui/accordion.tsx"],"sourcesContent":["import { ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\nimport { Accordion as AccordionPrimitive } from \"radix-ui\"\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\n\nfunction Accordion({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return (\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n className={cn(\"flex w-full flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\"not-last:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:shadow-focus disabled:pointer-events-none disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon data-slot=\"accordion-trigger-icon\" className=\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\" />\n <ChevronUpIcon data-slot=\"accordion-trigger-icon\" className=\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up\"\n {...props}\n >\n <div\n className={cn(\n \"h-(--radix-accordion-content-height) pt-0 pb-2.5 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\",\n className\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Content>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n"],"names":["Accordion","className","props","jsx","AccordionPrimitive","cn","AccordionItem","AccordionTrigger","children","jsxs","ChevronDownIcon","ChevronUpIcon","AccordionContent"],"mappings":";;;;AAOA,SAASA,EAAU;AAAA,EACjB,WAAAC;AAAA,EACA,GAAGC;AACL,GAAyD;AACvD,SACE,gBAAAC;AAAA,IAACC,EAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,wBAAwBJ,CAAS;AAAA,MAC9C,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASI,EAAc;AAAA,EACrB,WAAAL;AAAA,EACA,GAAGC;AACL,GAAyD;AACvD,SACE,gBAAAC;AAAA,IAACC,EAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,qBAAqBJ,CAAS;AAAA,MAC3C,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASK,EAAiB;AAAA,EACxB,WAAAN;AAAA,EACA,UAAAO;AAAA,EACA,GAAGN;AACL,GAA4D;AAC1D,SACE,gBAAAC,EAACC,EAAmB,QAAnB,EAA0B,WAAU,QACnC,UAAA,gBAAAK;AAAA,IAACL,EAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAJ;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,MAEH,UAAA;AAAA,QAAAM;AAAA,QACD,gBAAAL,EAACO,GAAA,EAAgB,aAAU,0BAAyB,WAAU,6EAA4E;AAAA,QAC1I,gBAAAP,EAACQ,GAAA,EAAc,aAAU,0BAAyB,WAAU,mFAAA,CAAmF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEnJ;AAEJ;AAEA,SAASC,EAAiB;AAAA,EACxB,WAAAX;AAAA,EACA,UAAAO;AAAA,EACA,GAAGN;AACL,GAA4D;AAC1D,SACE,gBAAAC;AAAA,IAACC,EAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA,MACT,GAAGF;AAAA,MAEJ,UAAA,gBAAAC;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWE;AAAA,YACT;AAAA,YACAJ;AAAA,UAAA;AAAA,UAGD,UAAAO;AAAA,QAAA;AAAA,MAAA;AAAA,IACH;AAAA,EAAA;AAGN;"}