@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,4 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),b=require("lucide-react"),c=require("react"),w=require("./button.cjs"),f=require("./select.cjs"),T=require("../../lib/shiki.cjs"),l=require("../../lib/utils.cjs"),N=e=>e&&e&1,L=e=>e&&e&2,I=e=>e&&e&4,R=e=>e.map((t,o)=>({key:`line-${o}`,tokens:t.map((n,r)=>({key:`line-${o}-${r}`,token:n}))})),E=({token:e})=>s.jsx("span",{className:"dark:!bg-[var(--shiki-dark-bg)] dark:!text-[var(--shiki-dark)]",style:{backgroundColor:e.bgColor,color:e.color,fontStyle:N(e.fontStyle)?"italic":void 0,fontWeight:L(e.fontStyle)?"bold":void 0,textDecoration:I(e.fontStyle)?"underline":void 0,...e.htmlStyle},children:e.content}),M=l.cn("block","before:content-[counter(line)]","before:inline-block","before:[counter-increment:line]","before:w-8","before:mr-4","before:text-right","before:text-muted-foreground/50","before:font-mono","before:select-none"),_=({keyedLine:e,showLineNumbers:t})=>s.jsx("span",{className:t?M:"block",children:e.tokens.length===0?`
2
- `:e.tokens.map(({token:o,key:n})=>s.jsx(E,{token:o},n))}),v=c.createContext({code:""}),q={"github-light":{"#24292e":"var(--shiki-fg)","#6a737d":"var(--shiki-comment)","#586069":"var(--shiki-comment)","#d73a49":"var(--shiki-keyword)","#b31d28":"var(--shiki-keyword)","#005cc5":"var(--shiki-constant)","#6f42c1":"var(--shiki-entity)","#22863a":"var(--shiki-tag)","#032f62":"var(--shiki-string)","#e36209":"var(--shiki-variable)"},"github-dark":{"#e1e4e8":"var(--shiki-fg)","#6a737d":"var(--shiki-comment)","#d1d5da":"var(--shiki-comment)","#f97583":"var(--shiki-keyword)","#fdaeb7":"var(--shiki-keyword)","#79b8ff":"var(--shiki-constant)","#b392f0":"var(--shiki-entity)","#85e89d":"var(--shiki-tag)","#9ecbff":"var(--shiki-string)","#dbedff":"var(--shiki-string)","#ffab70":"var(--shiki-variable)"}},x=new Map,h=new Map,m=100,z=(e,t)=>{const o=e.slice(0,m),n=e.length>m?e.slice(-m):"";return`${t}:${e.length}:${o}:${n}`},A=e=>({bg:"transparent",fg:"inherit",tokens:e.split(`
3
- `).map(t=>t===""?[]:[{color:"inherit",content:t}])}),C=(e,t,o)=>{const n=z(e,t),r=x.get(n);return r||(o&&(h.has(n)||h.set(n,new Set),h.get(n)?.add(o)),T.getCodeBlockHighlighter(t).then(({highlighter:d,lang:i})=>{const a=d.codeToTokens(e,{colorReplacements:q,lang:i,themes:{dark:"github-dark",light:"github-light"}}),u={bg:a.bg??"transparent",fg:a.fg??"inherit",tokens:a.tokens};x.set(n,u);const k=h.get(n);if(k){for(const g of k)g(u);h.delete(n)}}).catch(d=>{console.error("Failed to highlight code:",d),h.delete(n)}),null)},B=c.memo(({tokenized:e,showLineNumbers:t,className:o})=>{const n=c.useMemo(()=>R(e.tokens),[e.tokens]);return s.jsx("pre",{className:l.cn("!bg-[var(--shiki-bg)] !text-[var(--shiki-fg)] m-0 p-4 text-sm",o),children:s.jsx("code",{className:l.cn("font-mono text-sm",t&&"[counter-increment:line_0] [counter-reset:line]"),children:n.map(r=>s.jsx(_,{keyedLine:r,showLineNumbers:t},r.key))})})},(e,t)=>e.tokenized===t.tokenized&&e.showLineNumbers===t.showLineNumbers&&e.className===t.className);B.displayName="CodeBlockBody";const y=({className:e,language:t,style:o,...n})=>s.jsx("div",{className:l.cn("group relative w-full overflow-hidden rounded-md border bg-background text-foreground",e),"data-language":t,style:{containIntrinsicSize:"auto 200px",contentVisibility:"auto",...o},...n}),$=({children:e,className:t,...o})=>s.jsx("div",{className:l.cn("flex items-center justify-between border-b bg-muted/80 px-3 py-2 text-muted-foreground text-xs",t),...o,children:e}),H=({children:e,className:t,...o})=>s.jsx("div",{className:l.cn("flex items-center gap-2",t),...o,children:e}),K=({children:e,className:t,...o})=>s.jsx("span",{className:l.cn("font-mono",t),...o,children:e}),V=({children:e,className:t,...o})=>s.jsx("div",{className:l.cn("-my-1 -mr-1 flex items-center gap-2",t),...o,children:e}),p=({code:e,language:t,showLineNumbers:o=!1})=>{const n=c.useMemo(()=>A(e),[e]),r=c.useMemo(()=>C(e,t)??n,[e,t,n]),[d,i]=c.useState(null),a=c.useRef({code:e,language:t});(a.current.code!==e||a.current.language!==t)&&(a.current={code:e,language:t},i(null)),c.useEffect(()=>{let k=!1;return C(e,t,g=>{k||i(g)}),()=>{k=!0}},[e,t]);const u=d??r;return s.jsx("div",{className:"relative overflow-auto",tabIndex:0,children:s.jsx(B,{showLineNumbers:o,tokenized:u})})},F=({code:e,language:t,showLineNumbers:o=!1,className:n,children:r,...d})=>{const i=c.useMemo(()=>({code:e}),[e]);return s.jsx(v.Provider,{value:i,children:s.jsxs(y,{className:n,language:t,...d,children:[r,s.jsx(p,{code:e,language:t,showLineNumbers:o})]})})},O=({onCopy:e,onError:t,timeout:o=2e3,children:n,className:r,...d})=>{const[i,a]=c.useState(!1),u=c.useRef(0),{code:k}=c.useContext(v),g=c.useCallback(async()=>{if(typeof window>"u"||!navigator?.clipboard?.writeText){t?.(new Error("Clipboard API not available"));return}try{i||(await navigator.clipboard.writeText(k),a(!0),e?.(),u.current=window.setTimeout(()=>a(!1),o))}catch(j){t?.(j)}},[k,e,t,o,i]);c.useEffect(()=>()=>{window.clearTimeout(u.current)},[]);const S=i?b.CheckIcon:b.CopyIcon;return s.jsx(w.Button,{"aria-label":"Copy code",className:l.cn("shrink-0",r),onClick:g,size:"icon",variant:"ghost",...d,children:n??s.jsx(S,{size:14})})},U=e=>s.jsx(f.Select,{...e}),D=({className:e,...t})=>s.jsx(f.SelectTrigger,{"aria-label":"Select language",className:l.cn("h-7 border-none bg-transparent px-2 text-xs shadow-none",e),size:"sm",...t}),G=e=>s.jsx(f.SelectValue,{...e}),W=({align:e="end",...t})=>s.jsx(f.SelectContent,{align:e,...t}),Y=e=>s.jsx(f.SelectItem,{...e});exports.CodeBlock=F;exports.CodeBlockActions=V;exports.CodeBlockContainer=y;exports.CodeBlockContent=p;exports.CodeBlockCopyButton=O;exports.CodeBlockFilename=K;exports.CodeBlockHeader=$;exports.CodeBlockLanguageSelector=U;exports.CodeBlockLanguageSelectorContent=W;exports.CodeBlockLanguageSelectorItem=Y;exports.CodeBlockLanguageSelectorTrigger=D;exports.CodeBlockLanguageSelectorValue=G;exports.CodeBlockTitle=H;exports.highlightCode=C;
4
- //# sourceMappingURL=code-block.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"code-block.cjs","sources":["../../../src/components/ui/code-block.tsx"],"sourcesContent":["import { CheckIcon, CopyIcon } from \"lucide-react\";\nimport {\n createContext,\n memo,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport type { ComponentProps, CSSProperties, HTMLAttributes } from \"react\";\nimport type { BundledLanguage, ThemedToken } from \"shiki\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport { getCodeBlockHighlighter } from \"@/lib/shiki\";\nimport { cn } from \"@/lib/utils\";\n\n\n\n\n// Shiki uses bitflags for font styles: 1=italic, 2=bold, 4=underline\n// oxlint-disable-next-line eslint(no-bitwise)\nconst isItalic = (fontStyle: number | undefined) => fontStyle && fontStyle & 1;\n// oxlint-disable-next-line eslint(no-bitwise)\nconst isBold = (fontStyle: number | undefined) => fontStyle && fontStyle & 2;\nconst isUnderline = (fontStyle: number | undefined) =>\n // oxlint-disable-next-line eslint(no-bitwise)\n fontStyle && fontStyle & 4;\n\n// Transform tokens to include pre-computed keys to avoid noArrayIndexKey lint\ninterface KeyedToken {\n token: ThemedToken;\n key: string;\n}\ninterface KeyedLine {\n tokens: KeyedToken[];\n key: string;\n}\n\nconst addKeysToTokens = (lines: ThemedToken[][]): KeyedLine[] =>\n lines.map((line, lineIdx) => ({\n key: `line-${lineIdx}`,\n tokens: line.map((token, tokenIdx) => ({\n key: `line-${lineIdx}-${tokenIdx}`,\n token,\n })),\n }));\n\n// Token rendering component\nconst TokenSpan = ({ token }: { token: ThemedToken }) => (\n <span\n className=\"dark:!bg-[var(--shiki-dark-bg)] dark:!text-[var(--shiki-dark)]\"\n style={\n {\n backgroundColor: token.bgColor,\n color: token.color,\n fontStyle: isItalic(token.fontStyle) ? \"italic\" : undefined,\n fontWeight: isBold(token.fontStyle) ? \"bold\" : undefined,\n textDecoration: isUnderline(token.fontStyle) ? \"underline\" : undefined,\n ...token.htmlStyle,\n } as CSSProperties\n }\n >\n {token.content}\n </span>\n);\n\n// Line number styles using CSS counters\nconst LINE_NUMBER_CLASSES = cn(\n \"block\",\n \"before:content-[counter(line)]\",\n \"before:inline-block\",\n \"before:[counter-increment:line]\",\n \"before:w-8\",\n \"before:mr-4\",\n \"before:text-right\",\n \"before:text-muted-foreground/50\",\n \"before:font-mono\",\n \"before:select-none\"\n);\n\n// Line rendering component\nconst LineSpan = ({\n keyedLine,\n showLineNumbers,\n}: {\n keyedLine: KeyedLine;\n showLineNumbers: boolean;\n}) => (\n <span className={showLineNumbers ? LINE_NUMBER_CLASSES : \"block\"}>\n {keyedLine.tokens.length === 0\n ? \"\\n\"\n : keyedLine.tokens.map(({ token, key }) => (\n <TokenSpan key={key} token={token} />\n ))}\n </span>\n);\n\n// Types\ntype CodeBlockProps = HTMLAttributes<HTMLDivElement> & {\n code: string;\n language: BundledLanguage;\n showLineNumbers?: boolean;\n};\n\ninterface TokenizedCode {\n tokens: ThemedToken[][];\n fg: string;\n bg: string;\n}\n\ninterface CodeBlockContextType {\n code: string;\n}\n\n// Context\nconst CodeBlockContext = createContext<CodeBlockContextType>({\n code: \"\",\n});\n\n// Maps every github-light/github-dark token color onto a --shiki-* CSS\n// variable backed by the design-token palette (defined in index.tailwind.css\n// for :root and .dark), so code colors follow the active theme and meet\n// WCAG AA contrast on --shiki-bg in both modes.\nconst SHIKI_COLOR_REPLACEMENTS: Record<string, Record<string, string>> = {\n \"github-light\": {\n \"#24292e\": \"var(--shiki-fg)\",\n \"#6a737d\": \"var(--shiki-comment)\",\n \"#586069\": \"var(--shiki-comment)\",\n \"#d73a49\": \"var(--shiki-keyword)\",\n \"#b31d28\": \"var(--shiki-keyword)\",\n \"#005cc5\": \"var(--shiki-constant)\",\n \"#6f42c1\": \"var(--shiki-entity)\",\n \"#22863a\": \"var(--shiki-tag)\",\n \"#032f62\": \"var(--shiki-string)\",\n \"#e36209\": \"var(--shiki-variable)\",\n },\n \"github-dark\": {\n \"#e1e4e8\": \"var(--shiki-fg)\",\n \"#6a737d\": \"var(--shiki-comment)\",\n \"#d1d5da\": \"var(--shiki-comment)\",\n \"#f97583\": \"var(--shiki-keyword)\",\n \"#fdaeb7\": \"var(--shiki-keyword)\",\n \"#79b8ff\": \"var(--shiki-constant)\",\n \"#b392f0\": \"var(--shiki-entity)\",\n \"#85e89d\": \"var(--shiki-tag)\",\n \"#9ecbff\": \"var(--shiki-string)\",\n \"#dbedff\": \"var(--shiki-string)\",\n \"#ffab70\": \"var(--shiki-variable)\",\n },\n};\n\n// Token cache\nconst tokensCache = new Map<string, TokenizedCode>();\n\n// Subscribers for async token updates\nconst subscribers = new Map<string, Set<(result: TokenizedCode) => void>>();\n\nconst CACHE_KEY_SLICE_LENGTH = 100;\n\nconst getTokensCacheKey = (code: string, language: BundledLanguage) => {\n const start = code.slice(0, CACHE_KEY_SLICE_LENGTH);\n const end = code.length > CACHE_KEY_SLICE_LENGTH ? code.slice(-CACHE_KEY_SLICE_LENGTH) : \"\";\n return `${language}:${code.length}:${start}:${end}`;\n};\n\n// Create raw tokens for immediate display while highlighting loads\nconst createRawTokens = (code: string): TokenizedCode => ({\n bg: \"transparent\",\n fg: \"inherit\",\n tokens: code.split(\"\\n\").map((line) =>\n line === \"\"\n ? []\n : [\n {\n color: \"inherit\",\n content: line,\n } as ThemedToken,\n ]\n ),\n});\n\n// Synchronous highlight with callback for async results\nexport const highlightCode = (\n code: string,\n language: BundledLanguage,\n // oxlint-disable-next-line eslint-plugin-promise(prefer-await-to-callbacks)\n callback?: (result: TokenizedCode) => void\n): TokenizedCode | null => {\n const tokensCacheKey = getTokensCacheKey(code, language);\n\n // Return cached result if available\n const cached = tokensCache.get(tokensCacheKey);\n if (cached) {\n return cached;\n }\n\n // Subscribe callback if provided\n if (callback) {\n if (!subscribers.has(tokensCacheKey)) {\n subscribers.set(tokensCacheKey, new Set());\n }\n subscribers.get(tokensCacheKey)?.add(callback);\n }\n\n // Start highlighting in background - fire-and-forget async pattern.\n // The shared slim highlighter (SW-2007) loads shiki/core, the grammar, and\n // the themes through dynamic imports; unsupported languages fall back to\n // plaintext via the resolved `lang`.\n getCodeBlockHighlighter(language)\n // oxlint-disable-next-line eslint-plugin-promise(prefer-await-to-then)\n .then(({ highlighter, lang }) => {\n const result = highlighter.codeToTokens(code, {\n colorReplacements: SHIKI_COLOR_REPLACEMENTS,\n lang,\n themes: {\n dark: \"github-dark\",\n light: \"github-light\",\n },\n });\n\n const tokenized: TokenizedCode = {\n bg: result.bg ?? \"transparent\",\n fg: result.fg ?? \"inherit\",\n tokens: result.tokens,\n };\n\n // Cache the result\n tokensCache.set(tokensCacheKey, tokenized);\n\n // Notify all subscribers\n const subs = subscribers.get(tokensCacheKey);\n if (subs) {\n for (const sub of subs) {\n sub(tokenized);\n }\n subscribers.delete(tokensCacheKey);\n }\n })\n // oxlint-disable-next-line eslint-plugin-promise(prefer-await-to-then), eslint-plugin-promise(prefer-await-to-callbacks)\n .catch((error) => {\n console.error(\"Failed to highlight code:\", error);\n subscribers.delete(tokensCacheKey);\n });\n\n return null;\n};\n\nconst CodeBlockBody = memo(\n ({\n tokenized,\n showLineNumbers,\n className,\n }: {\n tokenized: TokenizedCode;\n showLineNumbers: boolean;\n className?: string;\n }) => {\n const keyedLines = useMemo(\n () => addKeysToTokens(tokenized.tokens),\n [tokenized.tokens]\n );\n\n return (\n <pre\n className={cn(\n // Shiki's dual-theme codeToTokens() returns \"transparent\"/\"inherit\"\n // for the top-level bg/fg in multi-theme mode — the real per-theme\n // colors only exist per-token (read via CSS vars in TokenSpan).\n // --shiki-bg/--shiki-fg re-resolve under .dark, so no dark: variant\n // is needed here.\n \"!bg-[var(--shiki-bg)] !text-[var(--shiki-fg)] m-0 p-4 text-sm\",\n className\n )}\n >\n <code\n className={cn(\n \"font-mono text-sm\",\n showLineNumbers && \"[counter-increment:line_0] [counter-reset:line]\"\n )}\n >\n {keyedLines.map((keyedLine) => (\n <LineSpan\n key={keyedLine.key}\n keyedLine={keyedLine}\n showLineNumbers={showLineNumbers}\n />\n ))}\n </code>\n </pre>\n );\n },\n (prevProps, nextProps) =>\n prevProps.tokenized === nextProps.tokenized &&\n prevProps.showLineNumbers === nextProps.showLineNumbers &&\n prevProps.className === nextProps.className\n);\n\nCodeBlockBody.displayName = \"CodeBlockBody\";\n\nexport const CodeBlockContainer = ({\n className,\n language,\n style,\n ...props\n}: HTMLAttributes<HTMLDivElement> & { language: string }) => (\n <div\n className={cn(\n \"group relative w-full overflow-hidden rounded-md border bg-background text-foreground\",\n className\n )}\n data-language={language}\n style={{\n containIntrinsicSize: \"auto 200px\",\n contentVisibility: \"auto\",\n ...style,\n }}\n {...props}\n />\n);\n\nexport const CodeBlockHeader = ({\n children,\n className,\n ...props\n}: HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex items-center justify-between border-b bg-muted/80 px-3 py-2 text-muted-foreground text-xs\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n\nexport const CodeBlockTitle = ({\n children,\n className,\n ...props\n}: HTMLAttributes<HTMLDivElement>) => (\n <div className={cn(\"flex items-center gap-2\", className)} {...props}>\n {children}\n </div>\n);\n\nexport const CodeBlockFilename = ({\n children,\n className,\n ...props\n}: HTMLAttributes<HTMLSpanElement>) => (\n <span className={cn(\"font-mono\", className)} {...props}>\n {children}\n </span>\n);\n\nexport const CodeBlockActions = ({\n children,\n className,\n ...props\n}: HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"-my-1 -mr-1 flex items-center gap-2\", className)}\n {...props}\n >\n {children}\n </div>\n);\n\nexport const CodeBlockContent = ({\n code,\n language,\n showLineNumbers = false,\n}: {\n code: string;\n language: BundledLanguage;\n showLineNumbers?: boolean;\n}) => {\n // Memoized raw tokens for immediate display\n const rawTokens = useMemo(() => createRawTokens(code), [code]);\n\n // Synchronous cache lookup — avoids setState in effect for cached results\n const syncTokens = useMemo(\n () => highlightCode(code, language) ?? rawTokens,\n [code, language, rawTokens]\n );\n\n // Async highlighting result (populated after shiki loads)\n const [asyncTokens, setAsyncTokens] = useState<TokenizedCode | null>(null);\n const asyncKeyRef = useRef({ code, language });\n\n // Invalidate stale async tokens synchronously during render\n if (\n asyncKeyRef.current.code !== code ||\n asyncKeyRef.current.language !== language\n ) {\n asyncKeyRef.current = { code, language };\n setAsyncTokens(null);\n }\n\n useEffect(() => {\n let cancelled = false;\n\n highlightCode(code, language, (result) => {\n if (!cancelled) {\n setAsyncTokens(result);\n }\n });\n\n return () => {\n cancelled = true;\n };\n }, [code, language]);\n\n const tokenized = asyncTokens ?? syncTokens;\n\n return (\n <div className=\"relative overflow-auto\" tabIndex={0}>\n <CodeBlockBody showLineNumbers={showLineNumbers} tokenized={tokenized} />\n </div>\n );\n};\n\nexport const CodeBlock = ({\n code,\n language,\n showLineNumbers = false,\n className,\n children,\n ...props\n}: CodeBlockProps) => {\n const contextValue = useMemo(() => ({ code }), [code]);\n\n return (\n <CodeBlockContext.Provider value={contextValue}>\n <CodeBlockContainer className={className} language={language} {...props}>\n {children}\n <CodeBlockContent\n code={code}\n language={language}\n showLineNumbers={showLineNumbers}\n />\n </CodeBlockContainer>\n </CodeBlockContext.Provider>\n );\n};\n\nexport type CodeBlockCopyButtonProps = ComponentProps<typeof Button> & {\n onCopy?: () => void;\n onError?: (error: Error) => void;\n timeout?: number;\n};\n\nexport const CodeBlockCopyButton = ({\n onCopy,\n onError,\n timeout = 2000,\n children,\n className,\n ...props\n}: CodeBlockCopyButtonProps) => {\n const [isCopied, setIsCopied] = useState(false);\n const timeoutRef = useRef<number>(0);\n const { code } = useContext(CodeBlockContext);\n\n const copyToClipboard = useCallback(async () => {\n if (typeof window === \"undefined\" || !navigator?.clipboard?.writeText) {\n onError?.(new Error(\"Clipboard API not available\"));\n return;\n }\n\n try {\n if (!isCopied) {\n await navigator.clipboard.writeText(code);\n setIsCopied(true);\n onCopy?.();\n timeoutRef.current = window.setTimeout(\n () => setIsCopied(false),\n timeout\n );\n }\n } catch (error) {\n onError?.(error as Error);\n }\n }, [code, onCopy, onError, timeout, isCopied]);\n\n useEffect(\n () => () => {\n window.clearTimeout(timeoutRef.current);\n },\n []\n );\n\n const Icon = isCopied ? CheckIcon : CopyIcon;\n\n return (\n <Button\n aria-label=\"Copy code\"\n className={cn(\"shrink-0\", className)}\n onClick={copyToClipboard}\n size=\"icon\"\n variant=\"ghost\"\n {...props}\n >\n {children ?? <Icon size={14} />}\n </Button>\n );\n};\n\nexport type CodeBlockLanguageSelectorProps = ComponentProps<typeof Select>;\n\nexport const CodeBlockLanguageSelector = (\n props: CodeBlockLanguageSelectorProps\n) => <Select {...props} />;\n\nexport type CodeBlockLanguageSelectorTriggerProps = ComponentProps<\n typeof SelectTrigger\n>;\n\nexport const CodeBlockLanguageSelectorTrigger = ({\n className,\n ...props\n}: CodeBlockLanguageSelectorTriggerProps) => (\n <SelectTrigger\n aria-label=\"Select language\"\n className={cn(\n \"h-7 border-none bg-transparent px-2 text-xs shadow-none\",\n className\n )}\n size=\"sm\"\n {...props}\n />\n);\n\nexport type CodeBlockLanguageSelectorValueProps = ComponentProps<\n typeof SelectValue\n>;\n\nexport const CodeBlockLanguageSelectorValue = (\n props: CodeBlockLanguageSelectorValueProps\n) => <SelectValue {...props} />;\n\nexport type CodeBlockLanguageSelectorContentProps = ComponentProps<\n typeof SelectContent\n>;\n\nexport const CodeBlockLanguageSelectorContent = ({\n align = \"end\",\n ...props\n}: CodeBlockLanguageSelectorContentProps) => (\n <SelectContent align={align} {...props} />\n);\n\nexport type CodeBlockLanguageSelectorItemProps = ComponentProps<\n typeof SelectItem\n>;\n\nexport const CodeBlockLanguageSelectorItem = (\n props: CodeBlockLanguageSelectorItemProps\n) => <SelectItem {...props} />;\n"],"names":["isItalic","fontStyle","isBold","isUnderline","addKeysToTokens","lines","line","lineIdx","token","tokenIdx","TokenSpan","jsx","LINE_NUMBER_CLASSES","cn","LineSpan","keyedLine","showLineNumbers","key","CodeBlockContext","createContext","SHIKI_COLOR_REPLACEMENTS","tokensCache","subscribers","CACHE_KEY_SLICE_LENGTH","getTokensCacheKey","code","language","start","end","createRawTokens","highlightCode","callback","tokensCacheKey","cached","getCodeBlockHighlighter","highlighter","lang","result","tokenized","subs","sub","error","CodeBlockBody","memo","className","keyedLines","useMemo","prevProps","nextProps","CodeBlockContainer","style","props","CodeBlockHeader","children","CodeBlockTitle","CodeBlockFilename","CodeBlockActions","CodeBlockContent","rawTokens","syncTokens","asyncTokens","setAsyncTokens","useState","asyncKeyRef","useRef","useEffect","cancelled","CodeBlock","contextValue","jsxs","CodeBlockCopyButton","onCopy","onError","timeout","isCopied","setIsCopied","timeoutRef","useContext","copyToClipboard","useCallback","Icon","CheckIcon","CopyIcon","Button","CodeBlockLanguageSelector","Select","CodeBlockLanguageSelectorTrigger","SelectTrigger","CodeBlockLanguageSelectorValue","SelectValue","CodeBlockLanguageSelectorContent","align","SelectContent","CodeBlockLanguageSelectorItem","SelectItem"],"mappings":"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"}
@@ -1,324 +0,0 @@
1
- import { jsx as s, jsxs as B } from "react/jsx-runtime";
2
- import { CheckIcon as T, CopyIcon as N } from "lucide-react";
3
- import { createContext as I, memo as L, useMemo as f, useState as C, useRef as v, useEffect as p, useContext as E, useCallback as z } from "react";
4
- import { Button as R } from "./button.js";
5
- import { Select as _, SelectContent as $, SelectItem as A, SelectTrigger as K, SelectValue as H } from "./select.js";
6
- import { getCodeBlockHighlighter as M } from "../../lib/shiki.js";
7
- import { cn as a } from "../../lib/utils.js";
8
- const V = (e) => e && e & 1, j = (e) => e && e & 2, F = (e) => (
9
- // oxlint-disable-next-line eslint(no-bitwise)
10
- e && e & 4
11
- ), O = (e) => e.map((t, o) => ({
12
- key: `line-${o}`,
13
- tokens: t.map((n, r) => ({
14
- key: `line-${o}-${r}`,
15
- token: n
16
- }))
17
- })), U = ({ token: e }) => /* @__PURE__ */ s(
18
- "span",
19
- {
20
- className: "dark:!bg-[var(--shiki-dark-bg)] dark:!text-[var(--shiki-dark)]",
21
- style: {
22
- backgroundColor: e.bgColor,
23
- color: e.color,
24
- fontStyle: V(e.fontStyle) ? "italic" : void 0,
25
- fontWeight: j(e.fontStyle) ? "bold" : void 0,
26
- textDecoration: F(e.fontStyle) ? "underline" : void 0,
27
- ...e.htmlStyle
28
- },
29
- children: e.content
30
- }
31
- ), D = a(
32
- "block",
33
- "before:content-[counter(line)]",
34
- "before:inline-block",
35
- "before:[counter-increment:line]",
36
- "before:w-8",
37
- "before:mr-4",
38
- "before:text-right",
39
- "before:text-muted-foreground/50",
40
- "before:font-mono",
41
- "before:select-none"
42
- ), G = ({
43
- keyedLine: e,
44
- showLineNumbers: t
45
- }) => /* @__PURE__ */ s("span", { className: t ? D : "block", children: e.tokens.length === 0 ? `
46
- ` : e.tokens.map(({ token: o, key: n }) => /* @__PURE__ */ s(U, { token: o }, n)) }), y = I({
47
- code: ""
48
- }), W = {
49
- "github-light": {
50
- "#24292e": "var(--shiki-fg)",
51
- "#6a737d": "var(--shiki-comment)",
52
- "#586069": "var(--shiki-comment)",
53
- "#d73a49": "var(--shiki-keyword)",
54
- "#b31d28": "var(--shiki-keyword)",
55
- "#005cc5": "var(--shiki-constant)",
56
- "#6f42c1": "var(--shiki-entity)",
57
- "#22863a": "var(--shiki-tag)",
58
- "#032f62": "var(--shiki-string)",
59
- "#e36209": "var(--shiki-variable)"
60
- },
61
- "github-dark": {
62
- "#e1e4e8": "var(--shiki-fg)",
63
- "#6a737d": "var(--shiki-comment)",
64
- "#d1d5da": "var(--shiki-comment)",
65
- "#f97583": "var(--shiki-keyword)",
66
- "#fdaeb7": "var(--shiki-keyword)",
67
- "#79b8ff": "var(--shiki-constant)",
68
- "#b392f0": "var(--shiki-entity)",
69
- "#85e89d": "var(--shiki-tag)",
70
- "#9ecbff": "var(--shiki-string)",
71
- "#dbedff": "var(--shiki-string)",
72
- "#ffab70": "var(--shiki-variable)"
73
- }
74
- }, g = /* @__PURE__ */ new Map(), h = /* @__PURE__ */ new Map(), u = 100, Y = (e, t) => {
75
- const o = e.slice(0, u), n = e.length > u ? e.slice(-u) : "";
76
- return `${t}:${e.length}:${o}:${n}`;
77
- }, q = (e) => ({
78
- bg: "transparent",
79
- fg: "inherit",
80
- tokens: e.split(`
81
- `).map(
82
- (t) => t === "" ? [] : [
83
- {
84
- color: "inherit",
85
- content: t
86
- }
87
- ]
88
- )
89
- }), b = (e, t, o) => {
90
- const n = Y(e, t), r = g.get(n);
91
- return r || (o && (h.has(n) || h.set(n, /* @__PURE__ */ new Set()), h.get(n)?.add(o)), M(t).then(({ highlighter: l, lang: i }) => {
92
- const c = l.codeToTokens(e, {
93
- colorReplacements: W,
94
- lang: i,
95
- themes: {
96
- dark: "github-dark",
97
- light: "github-light"
98
- }
99
- }), k = {
100
- bg: c.bg ?? "transparent",
101
- fg: c.fg ?? "inherit",
102
- tokens: c.tokens
103
- };
104
- g.set(n, k);
105
- const d = h.get(n);
106
- if (d) {
107
- for (const m of d)
108
- m(k);
109
- h.delete(n);
110
- }
111
- }).catch((l) => {
112
- console.error("Failed to highlight code:", l), h.delete(n);
113
- }), null);
114
- }, w = L(
115
- ({
116
- tokenized: e,
117
- showLineNumbers: t,
118
- className: o
119
- }) => {
120
- const n = f(
121
- () => O(e.tokens),
122
- [e.tokens]
123
- );
124
- return /* @__PURE__ */ s(
125
- "pre",
126
- {
127
- className: a(
128
- // Shiki's dual-theme codeToTokens() returns "transparent"/"inherit"
129
- // for the top-level bg/fg in multi-theme mode — the real per-theme
130
- // colors only exist per-token (read via CSS vars in TokenSpan).
131
- // --shiki-bg/--shiki-fg re-resolve under .dark, so no dark: variant
132
- // is needed here.
133
- "!bg-[var(--shiki-bg)] !text-[var(--shiki-fg)] m-0 p-4 text-sm",
134
- o
135
- ),
136
- children: /* @__PURE__ */ s(
137
- "code",
138
- {
139
- className: a(
140
- "font-mono text-sm",
141
- t && "[counter-increment:line_0] [counter-reset:line]"
142
- ),
143
- children: n.map((r) => /* @__PURE__ */ s(
144
- G,
145
- {
146
- keyedLine: r,
147
- showLineNumbers: t
148
- },
149
- r.key
150
- ))
151
- }
152
- )
153
- }
154
- );
155
- },
156
- (e, t) => e.tokenized === t.tokenized && e.showLineNumbers === t.showLineNumbers && e.className === t.className
157
- );
158
- w.displayName = "CodeBlockBody";
159
- const J = ({
160
- className: e,
161
- language: t,
162
- style: o,
163
- ...n
164
- }) => /* @__PURE__ */ s(
165
- "div",
166
- {
167
- className: a(
168
- "group relative w-full overflow-hidden rounded-md border bg-background text-foreground",
169
- e
170
- ),
171
- "data-language": t,
172
- style: {
173
- containIntrinsicSize: "auto 200px",
174
- contentVisibility: "auto",
175
- ...o
176
- },
177
- ...n
178
- }
179
- ), se = ({
180
- children: e,
181
- className: t,
182
- ...o
183
- }) => /* @__PURE__ */ s(
184
- "div",
185
- {
186
- className: a(
187
- "flex items-center justify-between border-b bg-muted/80 px-3 py-2 text-muted-foreground text-xs",
188
- t
189
- ),
190
- ...o,
191
- children: e
192
- }
193
- ), re = ({
194
- children: e,
195
- className: t,
196
- ...o
197
- }) => /* @__PURE__ */ s("div", { className: a("flex items-center gap-2", t), ...o, children: e }), ie = ({
198
- children: e,
199
- className: t,
200
- ...o
201
- }) => /* @__PURE__ */ s("span", { className: a("font-mono", t), ...o, children: e }), ce = ({
202
- children: e,
203
- className: t,
204
- ...o
205
- }) => /* @__PURE__ */ s(
206
- "div",
207
- {
208
- className: a("-my-1 -mr-1 flex items-center gap-2", t),
209
- ...o,
210
- children: e
211
- }
212
- ), Q = ({
213
- code: e,
214
- language: t,
215
- showLineNumbers: o = !1
216
- }) => {
217
- const n = f(() => q(e), [e]), r = f(
218
- () => b(e, t) ?? n,
219
- [e, t, n]
220
- ), [l, i] = C(null), c = v({ code: e, language: t });
221
- return (c.current.code !== e || c.current.language !== t) && (c.current = { code: e, language: t }, i(null)), p(() => {
222
- let d = !1;
223
- return b(e, t, (m) => {
224
- d || i(m);
225
- }), () => {
226
- d = !0;
227
- };
228
- }, [e, t]), /* @__PURE__ */ s("div", { className: "relative overflow-auto", tabIndex: 0, children: /* @__PURE__ */ s(w, { showLineNumbers: o, tokenized: l ?? r }) });
229
- }, ae = ({
230
- code: e,
231
- language: t,
232
- showLineNumbers: o = !1,
233
- className: n,
234
- children: r,
235
- ...l
236
- }) => {
237
- const i = f(() => ({ code: e }), [e]);
238
- return /* @__PURE__ */ s(y.Provider, { value: i, children: /* @__PURE__ */ B(J, { className: n, language: t, ...l, children: [
239
- r,
240
- /* @__PURE__ */ s(
241
- Q,
242
- {
243
- code: e,
244
- language: t,
245
- showLineNumbers: o
246
- }
247
- )
248
- ] }) });
249
- }, le = ({
250
- onCopy: e,
251
- onError: t,
252
- timeout: o = 2e3,
253
- children: n,
254
- className: r,
255
- ...l
256
- }) => {
257
- const [i, c] = C(!1), k = v(0), { code: d } = E(y), m = z(async () => {
258
- if (typeof window > "u" || !navigator?.clipboard?.writeText) {
259
- t?.(new Error("Clipboard API not available"));
260
- return;
261
- }
262
- try {
263
- i || (await navigator.clipboard.writeText(d), c(!0), e?.(), k.current = window.setTimeout(
264
- () => c(!1),
265
- o
266
- ));
267
- } catch (S) {
268
- t?.(S);
269
- }
270
- }, [d, e, t, o, i]);
271
- p(
272
- () => () => {
273
- window.clearTimeout(k.current);
274
- },
275
- []
276
- );
277
- const x = i ? T : N;
278
- return /* @__PURE__ */ s(
279
- R,
280
- {
281
- "aria-label": "Copy code",
282
- className: a("shrink-0", r),
283
- onClick: m,
284
- size: "icon",
285
- variant: "ghost",
286
- ...l,
287
- children: n ?? /* @__PURE__ */ s(x, { size: 14 })
288
- }
289
- );
290
- }, de = (e) => /* @__PURE__ */ s(_, { ...e }), ke = ({
291
- className: e,
292
- ...t
293
- }) => /* @__PURE__ */ s(
294
- K,
295
- {
296
- "aria-label": "Select language",
297
- className: a(
298
- "h-7 border-none bg-transparent px-2 text-xs shadow-none",
299
- e
300
- ),
301
- size: "sm",
302
- ...t
303
- }
304
- ), he = (e) => /* @__PURE__ */ s(H, { ...e }), me = ({
305
- align: e = "end",
306
- ...t
307
- }) => /* @__PURE__ */ s($, { align: e, ...t }), fe = (e) => /* @__PURE__ */ s(A, { ...e });
308
- export {
309
- ae as CodeBlock,
310
- ce as CodeBlockActions,
311
- J as CodeBlockContainer,
312
- Q as CodeBlockContent,
313
- le as CodeBlockCopyButton,
314
- ie as CodeBlockFilename,
315
- se as CodeBlockHeader,
316
- de as CodeBlockLanguageSelector,
317
- me as CodeBlockLanguageSelectorContent,
318
- fe as CodeBlockLanguageSelectorItem,
319
- ke as CodeBlockLanguageSelectorTrigger,
320
- he as CodeBlockLanguageSelectorValue,
321
- re as CodeBlockTitle,
322
- b as highlightCode
323
- };
324
- //# sourceMappingURL=code-block.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"code-block.js","sources":["../../../src/components/ui/code-block.tsx"],"sourcesContent":["import { CheckIcon, CopyIcon } from \"lucide-react\";\nimport {\n createContext,\n memo,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport type { ComponentProps, CSSProperties, HTMLAttributes } from \"react\";\nimport type { BundledLanguage, ThemedToken } from \"shiki\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport { getCodeBlockHighlighter } from \"@/lib/shiki\";\nimport { cn } from \"@/lib/utils\";\n\n\n\n\n// Shiki uses bitflags for font styles: 1=italic, 2=bold, 4=underline\n// oxlint-disable-next-line eslint(no-bitwise)\nconst isItalic = (fontStyle: number | undefined) => fontStyle && fontStyle & 1;\n// oxlint-disable-next-line eslint(no-bitwise)\nconst isBold = (fontStyle: number | undefined) => fontStyle && fontStyle & 2;\nconst isUnderline = (fontStyle: number | undefined) =>\n // oxlint-disable-next-line eslint(no-bitwise)\n fontStyle && fontStyle & 4;\n\n// Transform tokens to include pre-computed keys to avoid noArrayIndexKey lint\ninterface KeyedToken {\n token: ThemedToken;\n key: string;\n}\ninterface KeyedLine {\n tokens: KeyedToken[];\n key: string;\n}\n\nconst addKeysToTokens = (lines: ThemedToken[][]): KeyedLine[] =>\n lines.map((line, lineIdx) => ({\n key: `line-${lineIdx}`,\n tokens: line.map((token, tokenIdx) => ({\n key: `line-${lineIdx}-${tokenIdx}`,\n token,\n })),\n }));\n\n// Token rendering component\nconst TokenSpan = ({ token }: { token: ThemedToken }) => (\n <span\n className=\"dark:!bg-[var(--shiki-dark-bg)] dark:!text-[var(--shiki-dark)]\"\n style={\n {\n backgroundColor: token.bgColor,\n color: token.color,\n fontStyle: isItalic(token.fontStyle) ? \"italic\" : undefined,\n fontWeight: isBold(token.fontStyle) ? \"bold\" : undefined,\n textDecoration: isUnderline(token.fontStyle) ? \"underline\" : undefined,\n ...token.htmlStyle,\n } as CSSProperties\n }\n >\n {token.content}\n </span>\n);\n\n// Line number styles using CSS counters\nconst LINE_NUMBER_CLASSES = cn(\n \"block\",\n \"before:content-[counter(line)]\",\n \"before:inline-block\",\n \"before:[counter-increment:line]\",\n \"before:w-8\",\n \"before:mr-4\",\n \"before:text-right\",\n \"before:text-muted-foreground/50\",\n \"before:font-mono\",\n \"before:select-none\"\n);\n\n// Line rendering component\nconst LineSpan = ({\n keyedLine,\n showLineNumbers,\n}: {\n keyedLine: KeyedLine;\n showLineNumbers: boolean;\n}) => (\n <span className={showLineNumbers ? LINE_NUMBER_CLASSES : \"block\"}>\n {keyedLine.tokens.length === 0\n ? \"\\n\"\n : keyedLine.tokens.map(({ token, key }) => (\n <TokenSpan key={key} token={token} />\n ))}\n </span>\n);\n\n// Types\ntype CodeBlockProps = HTMLAttributes<HTMLDivElement> & {\n code: string;\n language: BundledLanguage;\n showLineNumbers?: boolean;\n};\n\ninterface TokenizedCode {\n tokens: ThemedToken[][];\n fg: string;\n bg: string;\n}\n\ninterface CodeBlockContextType {\n code: string;\n}\n\n// Context\nconst CodeBlockContext = createContext<CodeBlockContextType>({\n code: \"\",\n});\n\n// Maps every github-light/github-dark token color onto a --shiki-* CSS\n// variable backed by the design-token palette (defined in index.tailwind.css\n// for :root and .dark), so code colors follow the active theme and meet\n// WCAG AA contrast on --shiki-bg in both modes.\nconst SHIKI_COLOR_REPLACEMENTS: Record<string, Record<string, string>> = {\n \"github-light\": {\n \"#24292e\": \"var(--shiki-fg)\",\n \"#6a737d\": \"var(--shiki-comment)\",\n \"#586069\": \"var(--shiki-comment)\",\n \"#d73a49\": \"var(--shiki-keyword)\",\n \"#b31d28\": \"var(--shiki-keyword)\",\n \"#005cc5\": \"var(--shiki-constant)\",\n \"#6f42c1\": \"var(--shiki-entity)\",\n \"#22863a\": \"var(--shiki-tag)\",\n \"#032f62\": \"var(--shiki-string)\",\n \"#e36209\": \"var(--shiki-variable)\",\n },\n \"github-dark\": {\n \"#e1e4e8\": \"var(--shiki-fg)\",\n \"#6a737d\": \"var(--shiki-comment)\",\n \"#d1d5da\": \"var(--shiki-comment)\",\n \"#f97583\": \"var(--shiki-keyword)\",\n \"#fdaeb7\": \"var(--shiki-keyword)\",\n \"#79b8ff\": \"var(--shiki-constant)\",\n \"#b392f0\": \"var(--shiki-entity)\",\n \"#85e89d\": \"var(--shiki-tag)\",\n \"#9ecbff\": \"var(--shiki-string)\",\n \"#dbedff\": \"var(--shiki-string)\",\n \"#ffab70\": \"var(--shiki-variable)\",\n },\n};\n\n// Token cache\nconst tokensCache = new Map<string, TokenizedCode>();\n\n// Subscribers for async token updates\nconst subscribers = new Map<string, Set<(result: TokenizedCode) => void>>();\n\nconst CACHE_KEY_SLICE_LENGTH = 100;\n\nconst getTokensCacheKey = (code: string, language: BundledLanguage) => {\n const start = code.slice(0, CACHE_KEY_SLICE_LENGTH);\n const end = code.length > CACHE_KEY_SLICE_LENGTH ? code.slice(-CACHE_KEY_SLICE_LENGTH) : \"\";\n return `${language}:${code.length}:${start}:${end}`;\n};\n\n// Create raw tokens for immediate display while highlighting loads\nconst createRawTokens = (code: string): TokenizedCode => ({\n bg: \"transparent\",\n fg: \"inherit\",\n tokens: code.split(\"\\n\").map((line) =>\n line === \"\"\n ? []\n : [\n {\n color: \"inherit\",\n content: line,\n } as ThemedToken,\n ]\n ),\n});\n\n// Synchronous highlight with callback for async results\nexport const highlightCode = (\n code: string,\n language: BundledLanguage,\n // oxlint-disable-next-line eslint-plugin-promise(prefer-await-to-callbacks)\n callback?: (result: TokenizedCode) => void\n): TokenizedCode | null => {\n const tokensCacheKey = getTokensCacheKey(code, language);\n\n // Return cached result if available\n const cached = tokensCache.get(tokensCacheKey);\n if (cached) {\n return cached;\n }\n\n // Subscribe callback if provided\n if (callback) {\n if (!subscribers.has(tokensCacheKey)) {\n subscribers.set(tokensCacheKey, new Set());\n }\n subscribers.get(tokensCacheKey)?.add(callback);\n }\n\n // Start highlighting in background - fire-and-forget async pattern.\n // The shared slim highlighter (SW-2007) loads shiki/core, the grammar, and\n // the themes through dynamic imports; unsupported languages fall back to\n // plaintext via the resolved `lang`.\n getCodeBlockHighlighter(language)\n // oxlint-disable-next-line eslint-plugin-promise(prefer-await-to-then)\n .then(({ highlighter, lang }) => {\n const result = highlighter.codeToTokens(code, {\n colorReplacements: SHIKI_COLOR_REPLACEMENTS,\n lang,\n themes: {\n dark: \"github-dark\",\n light: \"github-light\",\n },\n });\n\n const tokenized: TokenizedCode = {\n bg: result.bg ?? \"transparent\",\n fg: result.fg ?? \"inherit\",\n tokens: result.tokens,\n };\n\n // Cache the result\n tokensCache.set(tokensCacheKey, tokenized);\n\n // Notify all subscribers\n const subs = subscribers.get(tokensCacheKey);\n if (subs) {\n for (const sub of subs) {\n sub(tokenized);\n }\n subscribers.delete(tokensCacheKey);\n }\n })\n // oxlint-disable-next-line eslint-plugin-promise(prefer-await-to-then), eslint-plugin-promise(prefer-await-to-callbacks)\n .catch((error) => {\n console.error(\"Failed to highlight code:\", error);\n subscribers.delete(tokensCacheKey);\n });\n\n return null;\n};\n\nconst CodeBlockBody = memo(\n ({\n tokenized,\n showLineNumbers,\n className,\n }: {\n tokenized: TokenizedCode;\n showLineNumbers: boolean;\n className?: string;\n }) => {\n const keyedLines = useMemo(\n () => addKeysToTokens(tokenized.tokens),\n [tokenized.tokens]\n );\n\n return (\n <pre\n className={cn(\n // Shiki's dual-theme codeToTokens() returns \"transparent\"/\"inherit\"\n // for the top-level bg/fg in multi-theme mode — the real per-theme\n // colors only exist per-token (read via CSS vars in TokenSpan).\n // --shiki-bg/--shiki-fg re-resolve under .dark, so no dark: variant\n // is needed here.\n \"!bg-[var(--shiki-bg)] !text-[var(--shiki-fg)] m-0 p-4 text-sm\",\n className\n )}\n >\n <code\n className={cn(\n \"font-mono text-sm\",\n showLineNumbers && \"[counter-increment:line_0] [counter-reset:line]\"\n )}\n >\n {keyedLines.map((keyedLine) => (\n <LineSpan\n key={keyedLine.key}\n keyedLine={keyedLine}\n showLineNumbers={showLineNumbers}\n />\n ))}\n </code>\n </pre>\n );\n },\n (prevProps, nextProps) =>\n prevProps.tokenized === nextProps.tokenized &&\n prevProps.showLineNumbers === nextProps.showLineNumbers &&\n prevProps.className === nextProps.className\n);\n\nCodeBlockBody.displayName = \"CodeBlockBody\";\n\nexport const CodeBlockContainer = ({\n className,\n language,\n style,\n ...props\n}: HTMLAttributes<HTMLDivElement> & { language: string }) => (\n <div\n className={cn(\n \"group relative w-full overflow-hidden rounded-md border bg-background text-foreground\",\n className\n )}\n data-language={language}\n style={{\n containIntrinsicSize: \"auto 200px\",\n contentVisibility: \"auto\",\n ...style,\n }}\n {...props}\n />\n);\n\nexport const CodeBlockHeader = ({\n children,\n className,\n ...props\n}: HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex items-center justify-between border-b bg-muted/80 px-3 py-2 text-muted-foreground text-xs\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n\nexport const CodeBlockTitle = ({\n children,\n className,\n ...props\n}: HTMLAttributes<HTMLDivElement>) => (\n <div className={cn(\"flex items-center gap-2\", className)} {...props}>\n {children}\n </div>\n);\n\nexport const CodeBlockFilename = ({\n children,\n className,\n ...props\n}: HTMLAttributes<HTMLSpanElement>) => (\n <span className={cn(\"font-mono\", className)} {...props}>\n {children}\n </span>\n);\n\nexport const CodeBlockActions = ({\n children,\n className,\n ...props\n}: HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"-my-1 -mr-1 flex items-center gap-2\", className)}\n {...props}\n >\n {children}\n </div>\n);\n\nexport const CodeBlockContent = ({\n code,\n language,\n showLineNumbers = false,\n}: {\n code: string;\n language: BundledLanguage;\n showLineNumbers?: boolean;\n}) => {\n // Memoized raw tokens for immediate display\n const rawTokens = useMemo(() => createRawTokens(code), [code]);\n\n // Synchronous cache lookup — avoids setState in effect for cached results\n const syncTokens = useMemo(\n () => highlightCode(code, language) ?? rawTokens,\n [code, language, rawTokens]\n );\n\n // Async highlighting result (populated after shiki loads)\n const [asyncTokens, setAsyncTokens] = useState<TokenizedCode | null>(null);\n const asyncKeyRef = useRef({ code, language });\n\n // Invalidate stale async tokens synchronously during render\n if (\n asyncKeyRef.current.code !== code ||\n asyncKeyRef.current.language !== language\n ) {\n asyncKeyRef.current = { code, language };\n setAsyncTokens(null);\n }\n\n useEffect(() => {\n let cancelled = false;\n\n highlightCode(code, language, (result) => {\n if (!cancelled) {\n setAsyncTokens(result);\n }\n });\n\n return () => {\n cancelled = true;\n };\n }, [code, language]);\n\n const tokenized = asyncTokens ?? syncTokens;\n\n return (\n <div className=\"relative overflow-auto\" tabIndex={0}>\n <CodeBlockBody showLineNumbers={showLineNumbers} tokenized={tokenized} />\n </div>\n );\n};\n\nexport const CodeBlock = ({\n code,\n language,\n showLineNumbers = false,\n className,\n children,\n ...props\n}: CodeBlockProps) => {\n const contextValue = useMemo(() => ({ code }), [code]);\n\n return (\n <CodeBlockContext.Provider value={contextValue}>\n <CodeBlockContainer className={className} language={language} {...props}>\n {children}\n <CodeBlockContent\n code={code}\n language={language}\n showLineNumbers={showLineNumbers}\n />\n </CodeBlockContainer>\n </CodeBlockContext.Provider>\n );\n};\n\nexport type CodeBlockCopyButtonProps = ComponentProps<typeof Button> & {\n onCopy?: () => void;\n onError?: (error: Error) => void;\n timeout?: number;\n};\n\nexport const CodeBlockCopyButton = ({\n onCopy,\n onError,\n timeout = 2000,\n children,\n className,\n ...props\n}: CodeBlockCopyButtonProps) => {\n const [isCopied, setIsCopied] = useState(false);\n const timeoutRef = useRef<number>(0);\n const { code } = useContext(CodeBlockContext);\n\n const copyToClipboard = useCallback(async () => {\n if (typeof window === \"undefined\" || !navigator?.clipboard?.writeText) {\n onError?.(new Error(\"Clipboard API not available\"));\n return;\n }\n\n try {\n if (!isCopied) {\n await navigator.clipboard.writeText(code);\n setIsCopied(true);\n onCopy?.();\n timeoutRef.current = window.setTimeout(\n () => setIsCopied(false),\n timeout\n );\n }\n } catch (error) {\n onError?.(error as Error);\n }\n }, [code, onCopy, onError, timeout, isCopied]);\n\n useEffect(\n () => () => {\n window.clearTimeout(timeoutRef.current);\n },\n []\n );\n\n const Icon = isCopied ? CheckIcon : CopyIcon;\n\n return (\n <Button\n aria-label=\"Copy code\"\n className={cn(\"shrink-0\", className)}\n onClick={copyToClipboard}\n size=\"icon\"\n variant=\"ghost\"\n {...props}\n >\n {children ?? <Icon size={14} />}\n </Button>\n );\n};\n\nexport type CodeBlockLanguageSelectorProps = ComponentProps<typeof Select>;\n\nexport const CodeBlockLanguageSelector = (\n props: CodeBlockLanguageSelectorProps\n) => <Select {...props} />;\n\nexport type CodeBlockLanguageSelectorTriggerProps = ComponentProps<\n typeof SelectTrigger\n>;\n\nexport const CodeBlockLanguageSelectorTrigger = ({\n className,\n ...props\n}: CodeBlockLanguageSelectorTriggerProps) => (\n <SelectTrigger\n aria-label=\"Select language\"\n className={cn(\n \"h-7 border-none bg-transparent px-2 text-xs shadow-none\",\n className\n )}\n size=\"sm\"\n {...props}\n />\n);\n\nexport type CodeBlockLanguageSelectorValueProps = ComponentProps<\n typeof SelectValue\n>;\n\nexport const CodeBlockLanguageSelectorValue = (\n props: CodeBlockLanguageSelectorValueProps\n) => <SelectValue {...props} />;\n\nexport type CodeBlockLanguageSelectorContentProps = ComponentProps<\n typeof SelectContent\n>;\n\nexport const CodeBlockLanguageSelectorContent = ({\n align = \"end\",\n ...props\n}: CodeBlockLanguageSelectorContentProps) => (\n <SelectContent align={align} {...props} />\n);\n\nexport type CodeBlockLanguageSelectorItemProps = ComponentProps<\n typeof SelectItem\n>;\n\nexport const CodeBlockLanguageSelectorItem = (\n props: CodeBlockLanguageSelectorItemProps\n) => <SelectItem {...props} />;\n"],"names":["isItalic","fontStyle","isBold","isUnderline","addKeysToTokens","lines","line","lineIdx","token","tokenIdx","TokenSpan","jsx","LINE_NUMBER_CLASSES","cn","LineSpan","keyedLine","showLineNumbers","key","CodeBlockContext","createContext","SHIKI_COLOR_REPLACEMENTS","tokensCache","subscribers","CACHE_KEY_SLICE_LENGTH","getTokensCacheKey","code","language","start","end","createRawTokens","highlightCode","callback","tokensCacheKey","cached","getCodeBlockHighlighter","highlighter","lang","result","tokenized","subs","sub","error","CodeBlockBody","memo","className","keyedLines","useMemo","prevProps","nextProps","CodeBlockContainer","style","props","CodeBlockHeader","children","CodeBlockTitle","CodeBlockFilename","CodeBlockActions","CodeBlockContent","rawTokens","syncTokens","asyncTokens","setAsyncTokens","useState","asyncKeyRef","useRef","useEffect","cancelled","CodeBlock","contextValue","jsxs","CodeBlockCopyButton","onCopy","onError","timeout","isCopied","setIsCopied","timeoutRef","useContext","copyToClipboard","useCallback","Icon","CheckIcon","CopyIcon","Button","CodeBlockLanguageSelector","Select","CodeBlockLanguageSelectorTrigger","SelectTrigger","CodeBlockLanguageSelectorValue","SelectValue","CodeBlockLanguageSelectorContent","align","SelectContent","CodeBlockLanguageSelectorItem","SelectItem"],"mappings":";;;;;;;AA+BA,MAAMA,IAAW,CAACC,MAAkCA,KAAaA,IAAY,GAEvEC,IAAS,CAACD,MAAkCA,KAAaA,IAAY,GACrEE,IAAc,CAACF;AAAA;AAAA,EAEnBA,KAAaA,IAAY;AAAA,GAYrBG,IAAkB,CAACC,MACvBA,EAAM,IAAI,CAACC,GAAMC,OAAa;AAAA,EAC5B,KAAK,QAAQA,CAAO;AAAA,EACpB,QAAQD,EAAK,IAAI,CAACE,GAAOC,OAAc;AAAA,IACrC,KAAK,QAAQF,CAAO,IAAIE,CAAQ;AAAA,IAChC,OAAAD;AAAA,EAAA,EACA;AACJ,EAAE,GAGEE,IAAY,CAAC,EAAE,OAAAF,EAAA,MACnB,gBAAAG;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAU;AAAA,IACV,OACE;AAAA,MACE,iBAAiBH,EAAM;AAAA,MACvB,OAAOA,EAAM;AAAA,MACb,WAAWR,EAASQ,EAAM,SAAS,IAAI,WAAW;AAAA,MAClD,YAAYN,EAAOM,EAAM,SAAS,IAAI,SAAS;AAAA,MAC/C,gBAAgBL,EAAYK,EAAM,SAAS,IAAI,cAAc;AAAA,MAC7D,GAAGA,EAAM;AAAA,IAAA;AAAA,IAIZ,UAAAA,EAAM;AAAA,EAAA;AACT,GAIII,IAAsBC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAGMC,IAAW,CAAC;AAAA,EAChB,WAAAC;AAAA,EACA,iBAAAC;AACF,MAIE,gBAAAL,EAAC,QAAA,EAAK,WAAWK,IAAkBJ,IAAsB,SACtD,UAAAG,EAAU,OAAO,WAAW,IACzB;AAAA,IACAA,EAAU,OAAO,IAAI,CAAC,EAAE,OAAAP,GAAO,KAAAS,EAAA,wBAC5BP,GAAA,EAAoB,OAAAF,EAAA,GAALS,CAAmB,CACpC,EAAA,CACP,GAqBIC,IAAmBC,EAAoC;AAAA,EAC3D,MAAM;AACR,CAAC,GAMKC,IAAmE;AAAA,EACvE,gBAAgB;AAAA,IACd,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,EAAA;AAAA,EAEb,eAAe;AAAA,IACb,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,EAAA;AAEf,GAGMC,wBAAkB,IAAA,GAGlBC,wBAAkB,IAAA,GAElBC,IAAyB,KAEzBC,IAAoB,CAACC,GAAcC,MAA8B;AACrE,QAAMC,IAAQF,EAAK,MAAM,GAAGF,CAAsB,GAC5CK,IAAMH,EAAK,SAASF,IAAyBE,EAAK,MAAM,CAACF,CAAsB,IAAI;AACzF,SAAO,GAAGG,CAAQ,IAAID,EAAK,MAAM,IAAIE,CAAK,IAAIC,CAAG;AACnD,GAGMC,IAAkB,CAACJ,OAAiC;AAAA,EACxD,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,QAAQA,EAAK,MAAM;AAAA,CAAI,EAAE;AAAA,IAAI,CAACnB,MAC5BA,MAAS,KACL,KACA;AAAA,MACE;AAAA,QACE,OAAO;AAAA,QACP,SAASA;AAAA,MAAA;AAAA,IACX;AAAA,EACF;AAER,IAGawB,IAAgB,CAC3BL,GACAC,GAEAK,MACyB;AACzB,QAAMC,IAAiBR,EAAkBC,GAAMC,CAAQ,GAGjDO,IAASZ,EAAY,IAAIW,CAAc;AAC7C,SAAIC,MAKAF,MACGT,EAAY,IAAIU,CAAc,KACjCV,EAAY,IAAIU,GAAgB,oBAAI,IAAA,CAAK,GAE3CV,EAAY,IAAIU,CAAc,GAAG,IAAID,CAAQ,IAO/CG,EAAwBR,CAAQ,EAE7B,KAAK,CAAC,EAAE,aAAAS,GAAa,MAAAC,QAAW;AAC/B,UAAMC,IAASF,EAAY,aAAaV,GAAM;AAAA,MAC5C,mBAAmBL;AAAA,MACnB,MAAAgB;AAAA,MACA,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT,CACD,GAEKE,IAA2B;AAAA,MAC/B,IAAID,EAAO,MAAM;AAAA,MACjB,IAAIA,EAAO,MAAM;AAAA,MACjB,QAAQA,EAAO;AAAA,IAAA;AAIjB,IAAAhB,EAAY,IAAIW,GAAgBM,CAAS;AAGzC,UAAMC,IAAOjB,EAAY,IAAIU,CAAc;AAC3C,QAAIO,GAAM;AACR,iBAAWC,KAAOD;AAChB,QAAAC,EAAIF,CAAS;AAEf,MAAAhB,EAAY,OAAOU,CAAc;AAAA,IACnC;AAAA,EACF,CAAC,EAEA,MAAM,CAACS,MAAU;AAChB,YAAQ,MAAM,6BAA6BA,CAAK,GAChDnB,EAAY,OAAOU,CAAc;AAAA,EACnC,CAAC,GAEI;AACT,GAEMU,IAAgBC;AAAA,EACpB,CAAC;AAAA,IACC,WAAAL;AAAA,IACA,iBAAAtB;AAAA,IACA,WAAA4B;AAAA,EAAA,MAKI;AACJ,UAAMC,IAAaC;AAAA,MACjB,MAAM1C,EAAgBkC,EAAU,MAAM;AAAA,MACtC,CAACA,EAAU,MAAM;AAAA,IAAA;AAGnB,WACE,gBAAA3B;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAMT;AAAA,UACA+B;AAAA,QAAA;AAAA,QAGF,UAAA,gBAAAjC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWE;AAAA,cACT;AAAA,cACAG,KAAmB;AAAA,YAAA;AAAA,YAGpB,UAAA6B,EAAW,IAAI,CAAC9B,MACf,gBAAAJ;AAAA,cAACG;AAAA,cAAA;AAAA,gBAEC,WAAAC;AAAA,gBACA,iBAAAC;AAAA,cAAA;AAAA,cAFKD,EAAU;AAAA,YAAA,CAIlB;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAGN;AAAA,EACA,CAACgC,GAAWC,MACVD,EAAU,cAAcC,EAAU,aAClCD,EAAU,oBAAoBC,EAAU,mBACxCD,EAAU,cAAcC,EAAU;AACtC;AAEAN,EAAc,cAAc;AAErB,MAAMO,IAAqB,CAAC;AAAA,EACjC,WAAAL;AAAA,EACA,UAAAlB;AAAA,EACA,OAAAwB;AAAA,EACA,GAAGC;AACL,MACE,gBAAAxC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWE;AAAA,MACT;AAAA,MACA+B;AAAA,IAAA;AAAA,IAEF,iBAAelB;AAAA,IACf,OAAO;AAAA,MACL,sBAAsB;AAAA,MACtB,mBAAmB;AAAA,MACnB,GAAGwB;AAAA,IAAA;AAAA,IAEJ,GAAGC;AAAA,EAAA;AACN,GAGWC,KAAkB,CAAC;AAAA,EAC9B,UAAAC;AAAA,EACA,WAAAT;AAAA,EACA,GAAGO;AACL,MACE,gBAAAxC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWE;AAAA,MACT;AAAA,MACA+B;AAAA,IAAA;AAAA,IAED,GAAGO;AAAA,IAEH,UAAAE;AAAA,EAAA;AACH,GAGWC,KAAiB,CAAC;AAAA,EAC7B,UAAAD;AAAA,EACA,WAAAT;AAAA,EACA,GAAGO;AACL,MACE,gBAAAxC,EAAC,SAAI,WAAWE,EAAG,2BAA2B+B,CAAS,GAAI,GAAGO,GAC3D,UAAAE,EAAA,CACH,GAGWE,KAAoB,CAAC;AAAA,EAChC,UAAAF;AAAA,EACA,WAAAT;AAAA,EACA,GAAGO;AACL,MACE,gBAAAxC,EAAC,UAAK,WAAWE,EAAG,aAAa+B,CAAS,GAAI,GAAGO,GAC9C,UAAAE,EAAA,CACH,GAGWG,KAAmB,CAAC;AAAA,EAC/B,UAAAH;AAAA,EACA,WAAAT;AAAA,EACA,GAAGO;AACL,MACE,gBAAAxC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWE,EAAG,uCAAuC+B,CAAS;AAAA,IAC7D,GAAGO;AAAA,IAEH,UAAAE;AAAA,EAAA;AACH,GAGWI,IAAmB,CAAC;AAAA,EAC/B,MAAAhC;AAAA,EACA,UAAAC;AAAA,EACA,iBAAAV,IAAkB;AACpB,MAIM;AAEJ,QAAM0C,IAAYZ,EAAQ,MAAMjB,EAAgBJ,CAAI,GAAG,CAACA,CAAI,CAAC,GAGvDkC,IAAab;AAAA,IACjB,MAAMhB,EAAcL,GAAMC,CAAQ,KAAKgC;AAAA,IACvC,CAACjC,GAAMC,GAAUgC,CAAS;AAAA,EAAA,GAItB,CAACE,GAAaC,CAAc,IAAIC,EAA+B,IAAI,GACnEC,IAAcC,EAAO,EAAE,MAAAvC,GAAM,UAAAC,GAAU;AAG7C,UACEqC,EAAY,QAAQ,SAAStC,KAC7BsC,EAAY,QAAQ,aAAarC,OAEjCqC,EAAY,UAAU,EAAE,MAAAtC,GAAM,UAAAC,EAAA,GAC9BmC,EAAe,IAAI,IAGrBI,EAAU,MAAM;AACd,QAAIC,IAAY;AAEhB,WAAApC,EAAcL,GAAMC,GAAU,CAACW,MAAW;AACxC,MAAK6B,KACHL,EAAexB,CAAM;AAAA,IAEzB,CAAC,GAEM,MAAM;AACX,MAAA6B,IAAY;AAAA,IACd;AAAA,EACF,GAAG,CAACzC,GAAMC,CAAQ,CAAC,GAKjB,gBAAAf,EAAC,OAAA,EAAI,WAAU,0BAAyB,UAAU,GAChD,UAAA,gBAAAA,EAAC+B,GAAA,EAAc,iBAAA1B,GAAkC,WAJnC4C,KAAeD,EAIoB,CAAsB,EAAA,CACzE;AAEJ,GAEaQ,KAAY,CAAC;AAAA,EACxB,MAAA1C;AAAA,EACA,UAAAC;AAAA,EACA,iBAAAV,IAAkB;AAAA,EAClB,WAAA4B;AAAA,EACA,UAAAS;AAAA,EACA,GAAGF;AACL,MAAsB;AACpB,QAAMiB,IAAetB,EAAQ,OAAO,EAAE,MAAArB,MAAS,CAACA,CAAI,CAAC;AAErD,SACE,gBAAAd,EAACO,EAAiB,UAAjB,EAA0B,OAAOkD,GAChC,UAAA,gBAAAC,EAACpB,GAAA,EAAmB,WAAAL,GAAsB,UAAAlB,GAAqB,GAAGyB,GAC/D,UAAA;AAAA,IAAAE;AAAA,IACD,gBAAA1C;AAAA,MAAC8C;AAAA,MAAA;AAAA,QACC,MAAAhC;AAAA,QACA,UAAAC;AAAA,QACA,iBAAAV;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,EAAA,CACF,EAAA,CACF;AAEJ,GAQasD,KAAsB,CAAC;AAAA,EAClC,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,UAAApB;AAAA,EACA,WAAAT;AAAA,EACA,GAAGO;AACL,MAAgC;AAC9B,QAAM,CAACuB,GAAUC,CAAW,IAAIb,EAAS,EAAK,GACxCc,IAAaZ,EAAe,CAAC,GAC7B,EAAE,MAAAvC,EAAA,IAASoD,EAAW3D,CAAgB,GAEtC4D,IAAkBC,EAAY,YAAY;AAC9C,QAAI,OAAO,SAAW,OAAe,CAAC,WAAW,WAAW,WAAW;AACrE,MAAAP,IAAU,IAAI,MAAM,6BAA6B,CAAC;AAClD;AAAA,IACF;AAEA,QAAI;AACF,MAAKE,MACH,MAAM,UAAU,UAAU,UAAUjD,CAAI,GACxCkD,EAAY,EAAI,GAChBJ,IAAA,GACAK,EAAW,UAAU,OAAO;AAAA,QAC1B,MAAMD,EAAY,EAAK;AAAA,QACvBF;AAAA,MAAA;AAAA,IAGN,SAAShC,GAAO;AACd,MAAA+B,IAAU/B,CAAc;AAAA,IAC1B;AAAA,EACF,GAAG,CAAChB,GAAM8C,GAAQC,GAASC,GAASC,CAAQ,CAAC;AAE7C,EAAAT;AAAA,IACE,MAAM,MAAM;AACV,aAAO,aAAaW,EAAW,OAAO;AAAA,IACxC;AAAA,IACA,CAAA;AAAA,EAAC;AAGH,QAAMI,IAAON,IAAWO,IAAYC;AAEpC,SACE,gBAAAvE;AAAA,IAACwE;AAAA,IAAA;AAAA,MACC,cAAW;AAAA,MACX,WAAWtE,EAAG,YAAY+B,CAAS;AAAA,MACnC,SAASkC;AAAA,MACT,MAAK;AAAA,MACL,SAAQ;AAAA,MACP,GAAG3B;AAAA,MAEH,UAAAE,KAAY,gBAAA1C,EAACqE,GAAA,EAAK,MAAM,GAAA,CAAI;AAAA,IAAA;AAAA,EAAA;AAGnC,GAIaI,KAA4B,CACvCjC,MACG,gBAAAxC,EAAC0E,GAAA,EAAQ,GAAGlC,EAAA,CAAO,GAMXmC,KAAmC,CAAC;AAAA,EAC/C,WAAA1C;AAAA,EACA,GAAGO;AACL,MACE,gBAAAxC;AAAA,EAAC4E;AAAA,EAAA;AAAA,IACC,cAAW;AAAA,IACX,WAAW1E;AAAA,MACT;AAAA,MACA+B;AAAA,IAAA;AAAA,IAEF,MAAK;AAAA,IACJ,GAAGO;AAAA,EAAA;AACN,GAOWqC,KAAiC,CAC5CrC,MACG,gBAAAxC,EAAC8E,GAAA,EAAa,GAAGtC,EAAA,CAAO,GAMhBuC,KAAmC,CAAC;AAAA,EAC/C,OAAAC,IAAQ;AAAA,EACR,GAAGxC;AACL,MACE,gBAAAxC,EAACiF,GAAA,EAAc,OAAAD,GAAe,GAAGxC,EAAA,CAAO,GAO7B0C,KAAgC,CAC3C1C,MACG,gBAAAxC,EAACmF,GAAA,EAAY,GAAG3C,EAAA,CAAO;"}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),k=require("@monaco-editor/react"),h=require("lucide-react"),i=require("react"),m=require("./button.cjs"),o=require("./tooltip.cjs"),M=require("../../hooks/use-code-editor-theme.cjs"),N=require("../../lib/utils.cjs"),R={light:"vs",dark:"vs-dark"},w=({value:r,onChange:p,language:f="python",theme:c,height:x=400,width:j="100%",options:C={},onCopy:n,onLaunch:l,disabled:t=!1})=>{const T=M.useCodeEditorTheme(),y=i.useRef(null),[E,a]=i.useState("Copy"),[S,u]=i.useState("Launch"),d=1e3,g=i.useCallback(s=>{n&&!t&&(n(s),a("Copied"),setTimeout(()=>{a("Copy")},d))},[n,t]),v=i.useCallback(s=>{l&&!t&&(l(s),u("Launched"),setTimeout(()=>{u("Launch")},d))},[l,t]),b=async s=>{y.current=s},q={minimap:{enabled:!1},scrollBeyondLastLine:!1,lineNumbers:"on",padding:{top:12,bottom:12,left:20,right:20},scrollbar:{vertical:"hidden",verticalScrollbarSize:0},readOnly:t,...C};return e.jsxs("div",{className:N.cn("rounded-2xl overflow-hidden relative border",t&&"opacity-60 cursor-not-allowed"),children:[e.jsxs("div",{className:"ml-auto flex gap-2 px-4 py-2 absolute top-0 right-0 z-[1]",children:[n&&e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:e.jsx("div",{className:"w-8 h-8 flex items-center justify-center",children:e.jsx(m.Button,{className:"w-full h-full",variant:"outline",size:"icon-sm",onClick:()=>g(r),disabled:t,"aria-label":"Copy code",children:e.jsx(h.Copy,{})})})}),e.jsx(o.TooltipContent,{side:"bottom",children:E})]}),l&&e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:e.jsx("div",{className:"w-8 h-8 flex items-center justify-center",children:e.jsx(m.Button,{className:"w-full h-full",variant:"outline",size:"icon-sm",onClick:()=>v(r),disabled:t,"aria-label":"Launch code",children:e.jsx(h.Rocket,{})})})}),e.jsx(o.TooltipContent,{side:"bottom",children:S})]})]}),e.jsx(k,{value:r,onChange:p,language:f,theme:c?R[c]:T.monacoTheme,height:x,width:j,options:q,beforeMount:b})]})};exports.CodeEditor=w;
2
- //# sourceMappingURL=code-editor.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"code-editor.cjs","sources":["../../../src/components/ui/code-editor.tsx"],"sourcesContent":["import MonacoEditor from \"@monaco-editor/react\";\nimport { Copy, Rocket } from \"lucide-react\";\nimport React, { useCallback, useRef, useState } from \"react\";\n\nimport type { Monaco, OnChange } from \"@monaco-editor/react\";\nimport type { editor } from \"monaco-editor\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"@/components/ui/tooltip\";\nimport { useCodeEditorTheme } from \"@/hooks/use-code-editor-theme\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface CodeEditorProps {\n value: string;\n onChange: OnChange;\n language?: string;\n theme?: \"light\" | \"dark\";\n height?: string | number;\n width?: string | number;\n options?: Record<string, unknown>;\n label?: string;\n onCopy?: (code: string) => void;\n onLaunch?: (code: string) => void;\n disabled?: boolean;\n}\n\n// Theme mapping for explicit theme prop overrides\nconst THEME_MAP = {\n light: \"vs\" as const,\n dark: \"vs-dark\" as const,\n};\n\nconst CodeEditor: React.FC<CodeEditorProps> = ({\n value,\n onChange,\n language = \"python\",\n theme: themeProp,\n height = 400,\n width = \"100%\",\n options = {},\n onCopy,\n onLaunch,\n disabled = false,\n}) => {\n const editorTheme = useCodeEditorTheme();\n\n const monacoRef = useRef<Monaco | null>(null);\n const [copyState, setCopyState] = useState<\"Copy\" | \"Copied\">(\"Copy\");\n const [launchState, setLaunchState] = useState<\"Launch\" | \"Launched\">(\n \"Launch\"\n );\n /** Feedback reset delay in milliseconds */\n const FEEDBACK_RESET_DELAY_MS = 1000;\n\n const handleCopy = useCallback(\n (code: string) => {\n if (onCopy && !disabled) {\n onCopy(code);\n setCopyState(\"Copied\");\n setTimeout(() => {\n setCopyState(\"Copy\");\n }, FEEDBACK_RESET_DELAY_MS);\n }\n },\n [onCopy, disabled]\n );\n\n const handleLaunch = useCallback(\n (code: string) => {\n if (onLaunch && !disabled) {\n onLaunch(code);\n setLaunchState(\"Launched\");\n setTimeout(() => {\n setLaunchState(\"Launch\");\n }, FEEDBACK_RESET_DELAY_MS);\n }\n },\n [onLaunch, disabled]\n );\n\n const handleEditorWillMount = async (monaco: Monaco) => {\n monacoRef.current = monaco;\n };\n\n const defaultOptions = {\n minimap: { enabled: false },\n scrollBeyondLastLine: false,\n lineNumbers: \"on\" as editor.LineNumbersType,\n padding: { top: 12, bottom: 12, left: 20, right: 20 },\n scrollbar: {\n vertical: \"hidden\" as const,\n verticalScrollbarSize: 0,\n },\n readOnly: disabled,\n ...options,\n };\n\n\n\n return (\n <div className={cn(\"rounded-2xl overflow-hidden relative border\", disabled && \"opacity-60 cursor-not-allowed\")}>\n <div className=\"ml-auto flex gap-2 px-4 py-2 absolute top-0 right-0 z-[1]\">\n {onCopy && (\n <Tooltip>\n <TooltipTrigger asChild>\n <div className=\"w-8 h-8 flex items-center justify-center\">\n <Button\n className=\"w-full h-full\"\n variant=\"outline\"\n size=\"icon-sm\"\n onClick={() => handleCopy(value)}\n disabled={disabled}\n aria-label=\"Copy code\"\n >\n <Copy />\n </Button>\n </div>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">\n {copyState}\n </TooltipContent>\n </Tooltip>\n )}\n {onLaunch && (\n <Tooltip >\n <TooltipTrigger asChild>\n <div className=\"w-8 h-8 flex items-center justify-center\">\n <Button\n className=\"w-full h-full\"\n variant=\"outline\"\n size=\"icon-sm\"\n onClick={() => handleLaunch(value)}\n disabled={disabled}\n aria-label=\"Launch code\"\n >\n <Rocket />\n </Button>\n </div>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">\n {launchState}\n </TooltipContent>\n </Tooltip>\n )}\n </div>\n <MonacoEditor\n value={value}\n onChange={onChange}\n language={language}\n theme={themeProp ? THEME_MAP[themeProp] : editorTheme.monacoTheme}\n height={height}\n width={width}\n options={defaultOptions}\n beforeMount={handleEditorWillMount}\n />\n </div>\n );\n};\n\nexport { CodeEditor };\nexport default CodeEditor;\n"],"names":["THEME_MAP","CodeEditor","value","onChange","language","themeProp","height","width","options","onCopy","onLaunch","disabled","editorTheme","useCodeEditorTheme","monacoRef","useRef","copyState","setCopyState","useState","launchState","setLaunchState","FEEDBACK_RESET_DELAY_MS","handleCopy","useCallback","code","handleLaunch","handleEditorWillMount","monaco","defaultOptions","cn","jsxs","Tooltip","jsx","TooltipTrigger","Button","Copy","TooltipContent","Rocket","MonacoEditor"],"mappings":"6UA2BMA,EAAY,CAChB,MAAO,KACP,KAAM,SACR,EAEMC,EAAwC,CAAC,CAC7C,MAAAC,EACA,SAAAC,EACA,SAAAC,EAAW,SACX,MAAOC,EACP,OAAAC,EAAS,IACT,MAAAC,EAAQ,OACR,QAAAC,EAAU,CAAA,EACV,OAAAC,EACA,SAAAC,EACA,SAAAC,EAAW,EACb,IAAM,CACJ,MAAMC,EAAcC,EAAAA,mBAAA,EAEdC,EAAYC,EAAAA,OAAsB,IAAI,EACtC,CAACC,EAAWC,CAAY,EAAIC,EAAAA,SAA4B,MAAM,EAC9D,CAACC,EAAaC,CAAc,EAAIF,EAAAA,SACpC,QAAA,EAGIG,EAA0B,IAE1BC,EAAaC,EAAAA,YAChBC,GAAiB,CACZf,GAAU,CAACE,IACbF,EAAOe,CAAI,EACXP,EAAa,QAAQ,EACrB,WAAW,IAAM,CACfA,EAAa,MAAM,CACrB,EAAGI,CAAuB,EAE9B,EACA,CAACZ,EAAQE,CAAQ,CAAA,EAGbc,EAAeF,EAAAA,YAClBC,GAAiB,CACZd,GAAY,CAACC,IACfD,EAASc,CAAI,EACbJ,EAAe,UAAU,EACzB,WAAW,IAAM,CACfA,EAAe,QAAQ,CACzB,EAAGC,CAAuB,EAE9B,EACA,CAACX,EAAUC,CAAQ,CAAA,EAGfe,EAAwB,MAAOC,GAAmB,CACtDb,EAAU,QAAUa,CACtB,EAEMC,EAAiB,CACrB,QAAS,CAAE,QAAS,EAAA,EACpB,qBAAsB,GACtB,YAAa,KACb,QAAS,CAAE,IAAK,GAAI,OAAQ,GAAI,KAAM,GAAI,MAAO,EAAA,EACjD,UAAW,CACT,SAAU,SACV,sBAAuB,CAAA,EAEzB,SAAUjB,EACV,GAAGH,CAAA,EAKL,cACG,MAAA,CAAI,UAAWqB,EAAAA,GAAG,8CAA+ClB,GAAY,+BAA+B,EAC3G,SAAA,CAAAmB,EAAAA,KAAC,MAAA,CAAI,UAAU,4DACZ,SAAA,CAAArB,UACEsB,UAAA,CACC,SAAA,CAAAC,EAAAA,IAACC,EAAAA,gBAAe,QAAO,GACrB,SAAAD,MAAC,MAAA,CAAI,UAAU,2CACb,SAAAA,EAAAA,IAACE,EAAAA,OAAA,CACC,UAAU,gBACV,QAAQ,UACR,KAAK,UACL,QAAS,IAAMZ,EAAWpB,CAAK,EAC/B,SAAAS,EACA,aAAW,YAEX,eAACwB,EAAAA,KAAA,CAAA,CAAK,CAAA,CAAA,EAEV,CAAA,CACF,EACAH,EAAAA,IAACI,EAAAA,eAAA,CAAe,KAAK,SAClB,SAAApB,CAAA,CACH,CAAA,EACF,EAEDN,UACEqB,UAAA,CACC,SAAA,CAAAC,EAAAA,IAACC,EAAAA,gBAAe,QAAO,GACrB,SAAAD,MAAC,MAAA,CAAI,UAAU,2CACb,SAAAA,EAAAA,IAACE,EAAAA,OAAA,CACC,UAAU,gBACV,QAAQ,UACR,KAAK,UACL,QAAS,IAAMT,EAAavB,CAAK,EACjC,SAAAS,EACA,aAAW,cAEX,eAAC0B,EAAAA,OAAA,CAAA,CAAO,CAAA,CAAA,EAEZ,CAAA,CACF,EACAL,EAAAA,IAACI,EAAAA,eAAA,CAAe,KAAK,SAClB,SAAAjB,CAAA,CACH,CAAA,CAAA,CACF,CAAA,EAEJ,EACAa,EAAAA,IAACM,EAAA,CACC,MAAApC,EACA,SAAAC,EACA,SAAAC,EACA,MAAOC,EAAYL,EAAUK,CAAS,EAAIO,EAAY,YACtD,OAAAN,EACA,MAAAC,EACA,QAASqB,EACT,YAAaF,CAAA,CAAA,CACf,EACF,CAEJ"}
@@ -1,105 +0,0 @@
1
- import { jsxs as l, jsx as e } from "react/jsx-runtime";
2
- import j from "@monaco-editor/react";
3
- import { Copy as z, Rocket as R } from "lucide-react";
4
- import { useRef as _, useState as d, useCallback as h } from "react";
5
- import { Button as u } from "./button.js";
6
- import { Tooltip as f, TooltipTrigger as p, TooltipContent as C } from "./tooltip.js";
7
- import { useCodeEditorTheme as A } from "../../hooks/use-code-editor-theme.js";
8
- import { cn as B } from "../../lib/utils.js";
9
- const D = {
10
- light: "vs",
11
- dark: "vs-dark"
12
- }, I = ({
13
- value: n,
14
- onChange: y,
15
- language: E = "python",
16
- theme: c,
17
- height: T = 400,
18
- width: v = "100%",
19
- options: S = {},
20
- onCopy: r,
21
- onLaunch: i,
22
- disabled: t = !1
23
- }) => {
24
- const x = A(), g = _(null), [N, a] = d("Copy"), [b, s] = d(
25
- "Launch"
26
- ), m = 1e3, k = h(
27
- (o) => {
28
- r && !t && (r(o), a("Copied"), setTimeout(() => {
29
- a("Copy");
30
- }, m));
31
- },
32
- [r, t]
33
- ), w = h(
34
- (o) => {
35
- i && !t && (i(o), s("Launched"), setTimeout(() => {
36
- s("Launch");
37
- }, m));
38
- },
39
- [i, t]
40
- ), L = async (o) => {
41
- g.current = o;
42
- }, M = {
43
- minimap: { enabled: !1 },
44
- scrollBeyondLastLine: !1,
45
- lineNumbers: "on",
46
- padding: { top: 12, bottom: 12, left: 20, right: 20 },
47
- scrollbar: {
48
- vertical: "hidden",
49
- verticalScrollbarSize: 0
50
- },
51
- readOnly: t,
52
- ...S
53
- };
54
- return /* @__PURE__ */ l("div", { className: B("rounded-2xl overflow-hidden relative border", t && "opacity-60 cursor-not-allowed"), children: [
55
- /* @__PURE__ */ l("div", { className: "ml-auto flex gap-2 px-4 py-2 absolute top-0 right-0 z-[1]", children: [
56
- r && /* @__PURE__ */ l(f, { children: [
57
- /* @__PURE__ */ e(p, { asChild: !0, children: /* @__PURE__ */ e("div", { className: "w-8 h-8 flex items-center justify-center", children: /* @__PURE__ */ e(
58
- u,
59
- {
60
- className: "w-full h-full",
61
- variant: "outline",
62
- size: "icon-sm",
63
- onClick: () => k(n),
64
- disabled: t,
65
- "aria-label": "Copy code",
66
- children: /* @__PURE__ */ e(z, {})
67
- }
68
- ) }) }),
69
- /* @__PURE__ */ e(C, { side: "bottom", children: N })
70
- ] }),
71
- i && /* @__PURE__ */ l(f, { children: [
72
- /* @__PURE__ */ e(p, { asChild: !0, children: /* @__PURE__ */ e("div", { className: "w-8 h-8 flex items-center justify-center", children: /* @__PURE__ */ e(
73
- u,
74
- {
75
- className: "w-full h-full",
76
- variant: "outline",
77
- size: "icon-sm",
78
- onClick: () => w(n),
79
- disabled: t,
80
- "aria-label": "Launch code",
81
- children: /* @__PURE__ */ e(R, {})
82
- }
83
- ) }) }),
84
- /* @__PURE__ */ e(C, { side: "bottom", children: b })
85
- ] })
86
- ] }),
87
- /* @__PURE__ */ e(
88
- j,
89
- {
90
- value: n,
91
- onChange: y,
92
- language: E,
93
- theme: c ? D[c] : x.monacoTheme,
94
- height: T,
95
- width: v,
96
- options: M,
97
- beforeMount: L
98
- }
99
- )
100
- ] });
101
- };
102
- export {
103
- I as CodeEditor
104
- };
105
- //# sourceMappingURL=code-editor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"code-editor.js","sources":["../../../src/components/ui/code-editor.tsx"],"sourcesContent":["import MonacoEditor from \"@monaco-editor/react\";\nimport { Copy, Rocket } from \"lucide-react\";\nimport React, { useCallback, useRef, useState } from \"react\";\n\nimport type { Monaco, OnChange } from \"@monaco-editor/react\";\nimport type { editor } from \"monaco-editor\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"@/components/ui/tooltip\";\nimport { useCodeEditorTheme } from \"@/hooks/use-code-editor-theme\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface CodeEditorProps {\n value: string;\n onChange: OnChange;\n language?: string;\n theme?: \"light\" | \"dark\";\n height?: string | number;\n width?: string | number;\n options?: Record<string, unknown>;\n label?: string;\n onCopy?: (code: string) => void;\n onLaunch?: (code: string) => void;\n disabled?: boolean;\n}\n\n// Theme mapping for explicit theme prop overrides\nconst THEME_MAP = {\n light: \"vs\" as const,\n dark: \"vs-dark\" as const,\n};\n\nconst CodeEditor: React.FC<CodeEditorProps> = ({\n value,\n onChange,\n language = \"python\",\n theme: themeProp,\n height = 400,\n width = \"100%\",\n options = {},\n onCopy,\n onLaunch,\n disabled = false,\n}) => {\n const editorTheme = useCodeEditorTheme();\n\n const monacoRef = useRef<Monaco | null>(null);\n const [copyState, setCopyState] = useState<\"Copy\" | \"Copied\">(\"Copy\");\n const [launchState, setLaunchState] = useState<\"Launch\" | \"Launched\">(\n \"Launch\"\n );\n /** Feedback reset delay in milliseconds */\n const FEEDBACK_RESET_DELAY_MS = 1000;\n\n const handleCopy = useCallback(\n (code: string) => {\n if (onCopy && !disabled) {\n onCopy(code);\n setCopyState(\"Copied\");\n setTimeout(() => {\n setCopyState(\"Copy\");\n }, FEEDBACK_RESET_DELAY_MS);\n }\n },\n [onCopy, disabled]\n );\n\n const handleLaunch = useCallback(\n (code: string) => {\n if (onLaunch && !disabled) {\n onLaunch(code);\n setLaunchState(\"Launched\");\n setTimeout(() => {\n setLaunchState(\"Launch\");\n }, FEEDBACK_RESET_DELAY_MS);\n }\n },\n [onLaunch, disabled]\n );\n\n const handleEditorWillMount = async (monaco: Monaco) => {\n monacoRef.current = monaco;\n };\n\n const defaultOptions = {\n minimap: { enabled: false },\n scrollBeyondLastLine: false,\n lineNumbers: \"on\" as editor.LineNumbersType,\n padding: { top: 12, bottom: 12, left: 20, right: 20 },\n scrollbar: {\n vertical: \"hidden\" as const,\n verticalScrollbarSize: 0,\n },\n readOnly: disabled,\n ...options,\n };\n\n\n\n return (\n <div className={cn(\"rounded-2xl overflow-hidden relative border\", disabled && \"opacity-60 cursor-not-allowed\")}>\n <div className=\"ml-auto flex gap-2 px-4 py-2 absolute top-0 right-0 z-[1]\">\n {onCopy && (\n <Tooltip>\n <TooltipTrigger asChild>\n <div className=\"w-8 h-8 flex items-center justify-center\">\n <Button\n className=\"w-full h-full\"\n variant=\"outline\"\n size=\"icon-sm\"\n onClick={() => handleCopy(value)}\n disabled={disabled}\n aria-label=\"Copy code\"\n >\n <Copy />\n </Button>\n </div>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">\n {copyState}\n </TooltipContent>\n </Tooltip>\n )}\n {onLaunch && (\n <Tooltip >\n <TooltipTrigger asChild>\n <div className=\"w-8 h-8 flex items-center justify-center\">\n <Button\n className=\"w-full h-full\"\n variant=\"outline\"\n size=\"icon-sm\"\n onClick={() => handleLaunch(value)}\n disabled={disabled}\n aria-label=\"Launch code\"\n >\n <Rocket />\n </Button>\n </div>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">\n {launchState}\n </TooltipContent>\n </Tooltip>\n )}\n </div>\n <MonacoEditor\n value={value}\n onChange={onChange}\n language={language}\n theme={themeProp ? THEME_MAP[themeProp] : editorTheme.monacoTheme}\n height={height}\n width={width}\n options={defaultOptions}\n beforeMount={handleEditorWillMount}\n />\n </div>\n );\n};\n\nexport { CodeEditor };\nexport default CodeEditor;\n"],"names":["THEME_MAP","CodeEditor","value","onChange","language","themeProp","height","width","options","onCopy","onLaunch","disabled","editorTheme","useCodeEditorTheme","monacoRef","useRef","copyState","setCopyState","useState","launchState","setLaunchState","FEEDBACK_RESET_DELAY_MS","handleCopy","useCallback","code","handleLaunch","handleEditorWillMount","monaco","defaultOptions","cn","jsxs","Tooltip","jsx","TooltipTrigger","Button","Copy","TooltipContent","Rocket","MonacoEditor"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"collapsible.cjs","sources":["../../../src/components/ui/collapsible.tsx"],"sourcesContent":["\"use client\"\n\nimport { Collapsible as CollapsiblePrimitive } from \"radix-ui\"\n\nfunction Collapsible({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />\n}\n\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n return (\n <CollapsiblePrimitive.CollapsibleTrigger\n data-slot=\"collapsible-trigger\"\n {...props}\n />\n )\n}\n\nfunction CollapsibleContent({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n return (\n <CollapsiblePrimitive.CollapsibleContent\n data-slot=\"collapsible-content\"\n {...props}\n />\n )\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n"],"names":["Collapsible","props","CollapsiblePrimitive","CollapsibleTrigger","jsx","CollapsibleContent"],"mappings":"2IAIA,SAASA,EAAY,CACnB,GAAGC,CACL,EAA2D,CACzD,aAAQC,EAAAA,YAAqB,KAArB,CAA0B,YAAU,cAAe,GAAGD,EAAO,CACvE,CAEA,SAASE,EAAmB,CAC1B,GAAGF,CACL,EAAyE,CACvE,OACEG,EAAAA,IAACF,EAAAA,YAAqB,mBAArB,CACC,YAAU,sBACT,GAAGD,CAAA,CAAA,CAGV,CAEA,SAASI,EAAmB,CAC1B,GAAGJ,CACL,EAAyE,CACvE,OACEG,EAAAA,IAACF,EAAAA,YAAqB,mBAArB,CACC,YAAU,sBACT,GAAGD,CAAA,CAAA,CAGV"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"collapsible.js","sources":["../../../src/components/ui/collapsible.tsx"],"sourcesContent":["\"use client\"\n\nimport { Collapsible as CollapsiblePrimitive } from \"radix-ui\"\n\nfunction Collapsible({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />\n}\n\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n return (\n <CollapsiblePrimitive.CollapsibleTrigger\n data-slot=\"collapsible-trigger\"\n {...props}\n />\n )\n}\n\nfunction CollapsibleContent({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n return (\n <CollapsiblePrimitive.CollapsibleContent\n data-slot=\"collapsible-content\"\n {...props}\n />\n )\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n"],"names":["Collapsible","props","CollapsiblePrimitive","CollapsibleTrigger","jsx","CollapsibleContent"],"mappings":";;AAIA,SAASA,EAAY;AAAA,EACnB,GAAGC;AACL,GAA2D;AACzD,2BAAQC,EAAqB,MAArB,EAA0B,aAAU,eAAe,GAAGD,GAAO;AACvE;AAEA,SAASE,EAAmB;AAAA,EAC1B,GAAGF;AACL,GAAyE;AACvE,SACE,gBAAAG;AAAA,IAACF,EAAqB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACT,GAAGD;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASI,EAAmB;AAAA,EAC1B,GAAGJ;AACL,GAAyE;AACvE,SACE,gBAAAG;AAAA,IAACF,EAAqB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACT,GAAGD;AAAA,IAAA;AAAA,EAAA;AAGV;"}