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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1241) hide show
  1. package/README.md +58 -4
  2. package/dist/ai/attachments.cjs +2 -0
  3. package/dist/ai/attachments.cjs.map +1 -0
  4. package/dist/ai/attachments.js +224 -0
  5. package/dist/ai/attachments.js.map +1 -0
  6. package/dist/ai/chain-of-thought.cjs +2 -0
  7. package/dist/ai/chain-of-thought.cjs.map +1 -0
  8. package/dist/ai/chain-of-thought.js +145 -0
  9. package/dist/ai/chain-of-thought.js.map +1 -0
  10. package/dist/ai/confirmation.cjs +2 -0
  11. package/dist/ai/confirmation.cjs.map +1 -0
  12. package/dist/ai/confirmation.js +109 -0
  13. package/dist/ai/confirmation.js.map +1 -0
  14. package/dist/ai/context.cjs +2 -0
  15. package/dist/ai/context.cjs.map +1 -0
  16. package/dist/ai/context.js +267 -0
  17. package/dist/ai/context.js.map +1 -0
  18. package/dist/ai/conversation.cjs +4 -0
  19. package/dist/ai/conversation.cjs.map +1 -0
  20. package/dist/ai/conversation.js +108 -0
  21. package/dist/ai/conversation.js.map +1 -0
  22. package/dist/ai/inline-citation.cjs +2 -0
  23. package/dist/ai/inline-citation.cjs.map +1 -0
  24. package/dist/ai/inline-citation.js +182 -0
  25. package/dist/ai/inline-citation.js.map +1 -0
  26. package/dist/ai/message.cjs +2 -0
  27. package/dist/ai/message.cjs.map +1 -0
  28. package/dist/ai/message.js +237 -0
  29. package/dist/ai/message.js.map +1 -0
  30. package/dist/ai/model-selector.cjs +2 -0
  31. package/dist/ai/model-selector.cjs.map +1 -0
  32. package/dist/ai/model-selector.js +77 -0
  33. package/dist/ai/model-selector.js.map +1 -0
  34. package/dist/ai/prompt-input.cjs +2 -0
  35. package/dist/ai/prompt-input.cjs.map +1 -0
  36. package/dist/ai/prompt-input.js +776 -0
  37. package/dist/ai/prompt-input.js.map +1 -0
  38. package/dist/ai/queue.cjs +2 -0
  39. package/dist/ai/queue.cjs.map +1 -0
  40. package/dist/ai/queue.js +209 -0
  41. package/dist/ai/queue.js.map +1 -0
  42. package/dist/ai/reasoning.cjs +2 -0
  43. package/dist/ai/reasoning.cjs.map +1 -0
  44. package/dist/ai/reasoning.js +129 -0
  45. package/dist/ai/reasoning.js.map +1 -0
  46. package/dist/ai/shimmer.cjs +2 -0
  47. package/dist/ai/shimmer.cjs.map +1 -0
  48. package/dist/ai/shimmer.js +49 -0
  49. package/dist/ai/shimmer.js.map +1 -0
  50. package/dist/ai/sources.cjs +2 -0
  51. package/dist/ai/sources.cjs.map +1 -0
  52. package/dist/ai/sources.js +54 -0
  53. package/dist/ai/sources.js.map +1 -0
  54. package/dist/ai/speech-input.cjs +2 -0
  55. package/dist/ai/speech-input.cjs.map +1 -0
  56. package/dist/ai/speech-input.js +123 -0
  57. package/dist/ai/speech-input.js.map +1 -0
  58. package/dist/ai/stream-status.cjs +2 -0
  59. package/dist/ai/stream-status.cjs.map +1 -0
  60. package/dist/ai/stream-status.js +108 -0
  61. package/dist/ai/stream-status.js.map +1 -0
  62. package/dist/ai/suggestion.cjs +2 -0
  63. package/dist/ai/suggestion.cjs.map +1 -0
  64. package/dist/ai/suggestion.js +38 -0
  65. package/dist/ai/suggestion.js.map +1 -0
  66. package/dist/ai/task.cjs +2 -0
  67. package/dist/ai/task.cjs.map +1 -0
  68. package/dist/ai/task.js +101 -0
  69. package/dist/ai/task.js.map +1 -0
  70. package/dist/ai/tool.cjs +2 -0
  71. package/dist/ai/tool.cjs.map +1 -0
  72. package/dist/ai/tool.js +139 -0
  73. package/dist/ai/tool.js.map +1 -0
  74. package/dist/charts/AreaPlot.cjs +2 -0
  75. package/dist/charts/AreaPlot.cjs.map +1 -0
  76. package/dist/charts/AreaPlot.js +5 -0
  77. package/dist/charts/AreaPlot.js.map +1 -0
  78. package/dist/charts/BarChart.cjs +2 -0
  79. package/dist/charts/BarChart.cjs.map +1 -0
  80. package/dist/charts/BarChart.js +5 -0
  81. package/dist/charts/BarChart.js.map +1 -0
  82. package/dist/charts/BoxPlot.cjs +2 -0
  83. package/dist/charts/BoxPlot.cjs.map +1 -0
  84. package/dist/charts/BoxPlot.js +5 -0
  85. package/dist/charts/BoxPlot.js.map +1 -0
  86. package/dist/charts/ChartTooltip.cjs +2 -0
  87. package/dist/charts/ChartTooltip.cjs.map +1 -0
  88. package/dist/charts/ChartTooltip.js +8 -0
  89. package/dist/charts/ChartTooltip.js.map +1 -0
  90. package/dist/charts/Chromatogram.cjs +2 -0
  91. package/dist/charts/Chromatogram.cjs.map +1 -0
  92. package/dist/charts/Chromatogram.js +5 -0
  93. package/dist/charts/Chromatogram.js.map +1 -0
  94. package/dist/charts/Electropherogram.cjs +2 -0
  95. package/dist/charts/Electropherogram.cjs.map +1 -0
  96. package/dist/charts/Electropherogram.js +5 -0
  97. package/dist/charts/Electropherogram.js.map +1 -0
  98. package/dist/charts/Histogram.cjs +2 -0
  99. package/dist/charts/Histogram.cjs.map +1 -0
  100. package/dist/charts/Histogram.js +5 -0
  101. package/dist/charts/Histogram.js.map +1 -0
  102. package/dist/charts/LinePlot.cjs +2 -0
  103. package/dist/charts/LinePlot.cjs.map +1 -0
  104. package/dist/charts/LinePlot.js +5 -0
  105. package/dist/charts/LinePlot.js.map +1 -0
  106. package/dist/charts/PieChart.cjs +2 -0
  107. package/dist/charts/PieChart.cjs.map +1 -0
  108. package/dist/charts/PieChart.js +5 -0
  109. package/dist/charts/PieChart.js.map +1 -0
  110. package/dist/charts/PlateMap.cjs +2 -0
  111. package/dist/charts/PlateMap.cjs.map +1 -0
  112. package/dist/charts/PlateMap.js +5 -0
  113. package/dist/charts/PlateMap.js.map +1 -0
  114. package/dist/charts/ScatterPlot.cjs +2 -0
  115. package/dist/charts/ScatterPlot.cjs.map +1 -0
  116. package/dist/charts/ScatterPlot.js +5 -0
  117. package/dist/charts/ScatterPlot.js.map +1 -0
  118. package/dist/charts/ScatterPlotInteractive.cjs +2 -0
  119. package/dist/charts/ScatterPlotInteractive.cjs.map +1 -0
  120. package/dist/charts/ScatterPlotInteractive.js +14 -0
  121. package/dist/charts/ScatterPlotInteractive.js.map +1 -0
  122. package/dist/charts/StackedChromatogram.cjs +2 -0
  123. package/dist/charts/StackedChromatogram.cjs.map +1 -0
  124. package/dist/charts/StackedChromatogram.js +7 -0
  125. package/dist/charts/StackedChromatogram.js.map +1 -0
  126. package/dist/components/ai/attachments.d.ts +54 -0
  127. package/dist/components/ai/chain-of-thought.d.ts +56 -0
  128. package/dist/components/ai/confirmation.d.ts +47 -0
  129. package/dist/components/ai/context.d.ts +40 -0
  130. package/dist/components/ai/conversation.d.ts +23 -0
  131. package/dist/components/ai/inline-citation.d.ts +38 -0
  132. package/dist/components/ai/message.d.ts +37 -0
  133. package/dist/components/ai/model-selector.d.ts +36 -0
  134. package/dist/components/ai/prompt-input.d.ts +158 -0
  135. package/dist/components/ai/queue.d.ts +72 -0
  136. package/dist/components/ai/reasoning.d.ts +26 -0
  137. package/dist/components/ai/shimmer.d.ts +17 -0
  138. package/dist/components/ai/sources.d.ts +12 -0
  139. package/dist/components/ai/speech-input.d.ts +54 -0
  140. package/dist/components/ai/stream-status.d.ts +66 -0
  141. package/dist/components/ai/streamdown-code-plugin.cjs +2 -0
  142. package/dist/components/ai/streamdown-code-plugin.cjs.map +1 -0
  143. package/dist/components/ai/streamdown-code-plugin.d.ts +2 -0
  144. package/dist/components/ai/streamdown-code-plugin.js +42 -0
  145. package/dist/components/ai/streamdown-code-plugin.js.map +1 -0
  146. package/dist/components/ai/streamdown-plugins.cjs +2 -0
  147. package/dist/components/ai/streamdown-plugins.cjs.map +1 -0
  148. package/dist/components/ai/streamdown-plugins.d.ts +2 -0
  149. package/dist/components/ai/streamdown-plugins.js +14 -0
  150. package/dist/components/ai/streamdown-plugins.js.map +1 -0
  151. package/dist/components/ai/suggestion.d.ts +9 -0
  152. package/dist/components/ai/task.d.ts +16 -0
  153. package/dist/components/ai/tool.d.ts +33 -0
  154. package/dist/components/ai/use-streamdown-plugins.cjs +2 -0
  155. package/dist/components/ai/use-streamdown-plugins.cjs.map +1 -0
  156. package/dist/components/ai/use-streamdown-plugins.d.ts +8 -0
  157. package/dist/components/ai/use-streamdown-plugins.js +25 -0
  158. package/dist/components/ai/use-streamdown-plugins.js.map +1 -0
  159. package/dist/components/charts/AreaPlot/AreaPlot.cjs +2 -0
  160. package/dist/components/charts/AreaPlot/AreaPlot.cjs.map +1 -0
  161. package/dist/components/charts/AreaPlot/AreaPlot.d.ts +39 -0
  162. package/dist/components/charts/AreaPlot/AreaPlot.js +270 -0
  163. package/dist/components/charts/AreaPlot/AreaPlot.js.map +1 -0
  164. package/dist/components/charts/AreaPlot/index.d.ts +2 -0
  165. package/dist/components/charts/BarChart/BarChart.cjs +2 -0
  166. package/dist/components/charts/BarChart/BarChart.cjs.map +1 -0
  167. package/dist/components/charts/BarChart/BarChart.d.ts +44 -0
  168. package/dist/components/charts/BarChart/BarChart.js +219 -0
  169. package/dist/components/charts/BarChart/BarChart.js.map +1 -0
  170. package/dist/components/charts/BarChart/index.d.ts +2 -0
  171. package/dist/components/charts/BoxPlot/BoxPlot.cjs +2 -0
  172. package/dist/components/charts/BoxPlot/BoxPlot.cjs.map +1 -0
  173. package/dist/components/charts/BoxPlot/BoxPlot.d.ts +33 -0
  174. package/dist/components/charts/BoxPlot/BoxPlot.js +208 -0
  175. package/dist/components/charts/BoxPlot/BoxPlot.js.map +1 -0
  176. package/dist/components/charts/BoxPlot/index.d.ts +2 -0
  177. package/dist/components/charts/ChartTooltip/ChartTooltip.cjs +1 -1
  178. package/dist/components/charts/ChartTooltip/ChartTooltip.cjs.map +1 -1
  179. package/dist/components/charts/ChartTooltip/ChartTooltip.d.ts +71 -0
  180. package/dist/components/charts/ChartTooltip/ChartTooltip.js +22 -22
  181. package/dist/components/charts/ChartTooltip/ChartTooltip.js.map +1 -1
  182. package/dist/components/charts/ChartTooltip/index.d.ts +2 -0
  183. package/dist/components/charts/ChartTooltip/lines.d.ts +54 -0
  184. package/dist/components/charts/Chromatogram/Chromatogram.cjs +1 -1
  185. package/dist/components/charts/Chromatogram/Chromatogram.cjs.map +1 -1
  186. package/dist/components/charts/Chromatogram/Chromatogram.d.ts +5 -0
  187. package/dist/components/charts/Chromatogram/Chromatogram.js +232 -170
  188. package/dist/components/charts/Chromatogram/Chromatogram.js.map +1 -1
  189. package/dist/components/charts/Chromatogram/annotations.cjs +2 -0
  190. package/dist/components/charts/Chromatogram/annotations.cjs.map +1 -0
  191. package/dist/components/charts/Chromatogram/annotations.d.ts +50 -0
  192. package/dist/components/charts/Chromatogram/annotations.js +137 -0
  193. package/dist/components/charts/Chromatogram/annotations.js.map +1 -0
  194. package/dist/components/charts/Chromatogram/boundaryMarkers.cjs +2 -0
  195. package/dist/components/charts/Chromatogram/boundaryMarkers.cjs.map +1 -0
  196. package/dist/components/charts/Chromatogram/boundaryMarkers.d.ts +14 -0
  197. package/dist/components/charts/Chromatogram/boundaryMarkers.js +34 -0
  198. package/dist/components/charts/Chromatogram/boundaryMarkers.js.map +1 -0
  199. package/dist/components/charts/Chromatogram/constants.cjs +2 -0
  200. package/dist/components/charts/Chromatogram/constants.cjs.map +1 -0
  201. package/dist/components/charts/Chromatogram/constants.d.ts +46 -0
  202. package/dist/components/charts/Chromatogram/constants.js +36 -0
  203. package/dist/components/charts/Chromatogram/constants.js.map +1 -0
  204. package/dist/components/charts/Chromatogram/dataProcessing.cjs +2 -0
  205. package/dist/components/charts/Chromatogram/dataProcessing.cjs.map +1 -0
  206. package/dist/components/charts/Chromatogram/dataProcessing.d.ts +49 -0
  207. package/dist/components/charts/Chromatogram/dataProcessing.js +90 -0
  208. package/dist/components/charts/Chromatogram/dataProcessing.js.map +1 -0
  209. package/dist/components/charts/Chromatogram/index.d.ts +2 -0
  210. package/dist/components/charts/Chromatogram/peakDetection.cjs.map +1 -0
  211. package/dist/components/charts/Chromatogram/peakDetection.d.ts +33 -0
  212. package/dist/components/charts/Chromatogram/peakDetection.js.map +1 -0
  213. package/dist/components/charts/Chromatogram/plotBuilder.cjs +2 -0
  214. package/dist/components/charts/Chromatogram/plotBuilder.cjs.map +1 -0
  215. package/dist/components/charts/Chromatogram/plotBuilder.d.ts +58 -0
  216. package/dist/components/charts/Chromatogram/plotBuilder.js +216 -0
  217. package/dist/components/charts/Chromatogram/plotBuilder.js.map +1 -0
  218. package/dist/components/charts/Chromatogram/regionOverlays.cjs +2 -0
  219. package/dist/components/charts/Chromatogram/regionOverlays.cjs.map +1 -0
  220. package/dist/components/charts/Chromatogram/regionOverlays.d.ts +9 -0
  221. package/dist/components/charts/Chromatogram/regionOverlays.js +26 -0
  222. package/dist/components/charts/Chromatogram/regionOverlays.js.map +1 -0
  223. package/dist/components/charts/Chromatogram/types.d.ts +258 -0
  224. package/dist/components/charts/Electropherogram/Electropherogram.cjs +2 -0
  225. package/dist/components/charts/Electropherogram/Electropherogram.cjs.map +1 -0
  226. package/dist/components/charts/Electropherogram/Electropherogram.d.ts +22 -0
  227. package/dist/components/charts/Electropherogram/Electropherogram.js +180 -0
  228. package/dist/components/charts/Electropherogram/Electropherogram.js.map +1 -0
  229. package/dist/components/charts/Electropherogram/index.d.ts +2 -0
  230. package/dist/components/charts/Histogram/Histogram.cjs +1 -1
  231. package/dist/components/charts/Histogram/Histogram.cjs.map +1 -1
  232. package/dist/components/charts/Histogram/Histogram.d.ts +36 -0
  233. package/dist/components/charts/Histogram/Histogram.js +107 -108
  234. package/dist/components/charts/Histogram/Histogram.js.map +1 -1
  235. package/dist/components/charts/Histogram/index.d.ts +2 -0
  236. package/dist/components/charts/LinePlot/LinePlot.cjs +2 -0
  237. package/dist/components/charts/LinePlot/LinePlot.cjs.map +1 -0
  238. package/dist/components/charts/LinePlot/LinePlot.d.ts +45 -0
  239. package/dist/components/charts/LinePlot/LinePlot.js +224 -0
  240. package/dist/components/charts/LinePlot/LinePlot.js.map +1 -0
  241. package/dist/components/charts/LinePlot/index.d.ts +2 -0
  242. package/dist/components/charts/PieChart/PieChart.cjs +1 -1
  243. package/dist/components/charts/PieChart/PieChart.cjs.map +1 -1
  244. package/dist/components/charts/PieChart/PieChart.d.ts +20 -0
  245. package/dist/components/charts/PieChart/PieChart.js +62 -61
  246. package/dist/components/charts/PieChart/PieChart.js.map +1 -1
  247. package/dist/components/charts/PieChart/index.d.ts +2 -0
  248. package/dist/components/charts/PlateMap/PlateMap.cjs +1 -1
  249. package/dist/components/charts/PlateMap/PlateMap.cjs.map +1 -1
  250. package/dist/components/charts/PlateMap/PlateMap.d.ts +29 -0
  251. package/dist/components/charts/PlateMap/PlateMap.js +246 -242
  252. package/dist/components/charts/PlateMap/PlateMap.js.map +1 -1
  253. package/dist/components/charts/PlateMap/constants.d.ts +75 -0
  254. package/dist/components/charts/PlateMap/index.d.ts +2 -0
  255. package/dist/components/charts/PlateMap/types.d.ts +322 -0
  256. package/dist/components/charts/PlateMap/utils.d.ts +133 -0
  257. package/dist/components/charts/ScatterPlot/ScatterPlot.cjs +2 -0
  258. package/dist/components/charts/ScatterPlot/ScatterPlot.cjs.map +1 -0
  259. package/dist/components/charts/ScatterPlot/ScatterPlot.d.ts +43 -0
  260. package/dist/components/charts/ScatterPlot/ScatterPlot.js +252 -0
  261. package/dist/components/charts/ScatterPlot/ScatterPlot.js.map +1 -0
  262. package/dist/components/charts/ScatterPlot/index.d.ts +2 -0
  263. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.cjs +2 -0
  264. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.cjs.map +1 -0
  265. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.d.ts +25 -0
  266. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.js +215 -0
  267. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.js.map +1 -0
  268. package/dist/components/charts/ScatterPlotInteractive/constants.cjs +2 -0
  269. package/dist/components/charts/ScatterPlotInteractive/constants.cjs.map +1 -0
  270. package/dist/components/charts/ScatterPlotInteractive/constants.d.ts +50 -0
  271. package/dist/components/charts/ScatterPlotInteractive/constants.js +38 -0
  272. package/dist/components/charts/ScatterPlotInteractive/constants.js.map +1 -0
  273. package/dist/components/charts/ScatterPlotInteractive/index.d.ts +3 -0
  274. package/dist/components/charts/ScatterPlotInteractive/types.d.ts +226 -0
  275. package/dist/components/charts/ScatterPlotInteractive/utils.cjs +2 -0
  276. package/dist/components/charts/ScatterPlotInteractive/utils.cjs.map +1 -0
  277. package/dist/components/charts/ScatterPlotInteractive/utils.d.ts +72 -0
  278. package/dist/components/charts/ScatterPlotInteractive/utils.js +261 -0
  279. package/dist/components/charts/ScatterPlotInteractive/utils.js.map +1 -0
  280. package/dist/components/charts/StackedChromatogram/StackedChromatogram.cjs +2 -0
  281. package/dist/components/charts/StackedChromatogram/StackedChromatogram.cjs.map +1 -0
  282. package/dist/components/charts/StackedChromatogram/StackedChromatogram.d.ts +3 -0
  283. package/dist/components/charts/StackedChromatogram/StackedChromatogram.js +40 -0
  284. package/dist/components/charts/StackedChromatogram/StackedChromatogram.js.map +1 -0
  285. package/dist/components/charts/StackedChromatogram/index.d.ts +3 -0
  286. package/dist/components/charts/StackedChromatogram/transforms.cjs +2 -0
  287. package/dist/components/charts/StackedChromatogram/transforms.cjs.map +1 -0
  288. package/dist/components/charts/StackedChromatogram/transforms.d.ts +9 -0
  289. package/dist/components/charts/StackedChromatogram/transforms.js +31 -0
  290. package/dist/components/charts/StackedChromatogram/transforms.js.map +1 -0
  291. package/dist/components/charts/StackedChromatogram/types.d.ts +26 -0
  292. package/dist/components/charts/plotly-loader.cjs +2 -0
  293. package/dist/components/charts/plotly-loader.cjs.map +1 -0
  294. package/dist/components/charts/plotly-loader.d.ts +29 -0
  295. package/dist/components/charts/plotly-loader.js +22 -0
  296. package/dist/components/charts/plotly-loader.js.map +1 -0
  297. package/dist/components/composed/AssistantLayout/AssistantLayout.cjs +2 -0
  298. package/dist/components/composed/AssistantLayout/AssistantLayout.cjs.map +1 -0
  299. package/dist/components/composed/AssistantLayout/AssistantLayout.d.ts +63 -0
  300. package/dist/components/composed/AssistantLayout/AssistantLayout.js +142 -0
  301. package/dist/components/composed/AssistantLayout/AssistantLayout.js.map +1 -0
  302. package/dist/components/composed/AssistantLayout/dockLayout.cjs +2 -0
  303. package/dist/components/composed/AssistantLayout/dockLayout.cjs.map +1 -0
  304. package/dist/components/composed/AssistantLayout/dockLayout.d.ts +15 -0
  305. package/dist/components/composed/AssistantLayout/dockLayout.js +10 -0
  306. package/dist/components/composed/AssistantLayout/dockLayout.js.map +1 -0
  307. package/dist/components/composed/AssistantLayout/index.d.ts +3 -0
  308. package/dist/components/composed/Chat/Chat.cjs +1 -1
  309. package/dist/components/composed/Chat/Chat.cjs.map +1 -1
  310. package/dist/components/composed/Chat/Chat.d.ts +35 -0
  311. package/dist/components/composed/Chat/Chat.js +28 -28
  312. package/dist/components/composed/Chat/Chat.js.map +1 -1
  313. package/dist/components/composed/Chat/index.d.ts +2 -0
  314. package/dist/components/composed/ConfirmDialog/ConfirmDialog.cjs +1 -1
  315. package/dist/components/composed/ConfirmDialog/ConfirmDialog.cjs.map +1 -1
  316. package/dist/components/composed/ConfirmDialog/ConfirmDialog.d.ts +23 -0
  317. package/dist/components/composed/ConfirmDialog/ConfirmDialog.js +33 -29
  318. package/dist/components/composed/ConfirmDialog/ConfirmDialog.js.map +1 -1
  319. package/dist/components/composed/ConfirmDialog/index.d.ts +1 -0
  320. package/dist/components/composed/DataAppShell/CollapseButton.cjs +2 -0
  321. package/dist/components/composed/DataAppShell/CollapseButton.cjs.map +1 -0
  322. package/dist/components/composed/DataAppShell/CollapseButton.d.ts +23 -0
  323. package/dist/components/composed/DataAppShell/CollapseButton.js +42 -0
  324. package/dist/components/composed/DataAppShell/CollapseButton.js.map +1 -0
  325. package/dist/components/composed/DataAppShell/DataAppShell.cjs +1 -1
  326. package/dist/components/composed/DataAppShell/DataAppShell.cjs.map +1 -1
  327. package/dist/components/composed/DataAppShell/DataAppShell.d.ts +88 -0
  328. package/dist/components/composed/DataAppShell/DataAppShell.js +350 -328
  329. package/dist/components/composed/DataAppShell/DataAppShell.js.map +1 -1
  330. package/dist/components/composed/DataAppShell/PrimaryNav.cjs +2 -0
  331. package/dist/components/composed/DataAppShell/PrimaryNav.cjs.map +1 -0
  332. package/dist/components/composed/DataAppShell/PrimaryNav.d.ts +64 -0
  333. package/dist/components/composed/DataAppShell/PrimaryNav.js +268 -0
  334. package/dist/components/composed/DataAppShell/PrimaryNav.js.map +1 -0
  335. package/dist/components/composed/DataAppShell/RightPanel.cjs +2 -0
  336. package/dist/components/composed/DataAppShell/RightPanel.cjs.map +1 -0
  337. package/dist/components/composed/DataAppShell/RightPanel.d.ts +95 -0
  338. package/dist/components/composed/DataAppShell/RightPanel.js +282 -0
  339. package/dist/components/composed/DataAppShell/RightPanel.js.map +1 -0
  340. package/dist/components/composed/DataAppShell/SecondaryNav.cjs +2 -0
  341. package/dist/components/composed/DataAppShell/SecondaryNav.cjs.map +1 -0
  342. package/dist/components/composed/DataAppShell/SecondaryNav.d.ts +63 -0
  343. package/dist/components/composed/DataAppShell/SecondaryNav.js +364 -0
  344. package/dist/components/composed/DataAppShell/SecondaryNav.js.map +1 -0
  345. package/dist/components/composed/DataAppShell/ShellContext.cjs +2 -0
  346. package/dist/components/composed/DataAppShell/ShellContext.cjs.map +1 -0
  347. package/dist/components/composed/DataAppShell/ShellContext.d.ts +20 -0
  348. package/dist/components/composed/DataAppShell/ShellContext.js +23 -0
  349. package/dist/components/composed/DataAppShell/ShellContext.js.map +1 -0
  350. package/dist/components/composed/DataAppShell/index.d.ts +12 -0
  351. package/dist/components/composed/EmptyState/EmptyState.d.ts +12 -0
  352. package/dist/components/composed/EmptyState/index.d.ts +2 -0
  353. package/dist/components/composed/FormPatterns/FormSection.cjs +1 -1
  354. package/dist/components/composed/FormPatterns/FormSection.cjs.map +1 -1
  355. package/dist/components/composed/FormPatterns/FormSection.d.ts +7 -0
  356. package/dist/components/composed/FormPatterns/FormSection.js +2 -2
  357. package/dist/components/composed/FormPatterns/index.d.ts +1 -0
  358. package/dist/components/composed/MoleculeStructure/MoleculeStructure.cjs +2 -0
  359. package/dist/components/composed/MoleculeStructure/MoleculeStructure.cjs.map +1 -0
  360. package/dist/components/composed/MoleculeStructure/MoleculeStructure.d.ts +43 -0
  361. package/dist/components/composed/MoleculeStructure/MoleculeStructure.js +87 -0
  362. package/dist/components/composed/MoleculeStructure/MoleculeStructure.js.map +1 -0
  363. package/dist/components/composed/MoleculeStructure/index.d.ts +3 -0
  364. package/dist/components/composed/MoleculeStructure/rdkit-loader.cjs +2 -0
  365. package/dist/components/composed/MoleculeStructure/rdkit-loader.cjs.map +1 -0
  366. package/dist/components/composed/MoleculeStructure/rdkit-loader.d.ts +104 -0
  367. package/dist/components/composed/MoleculeStructure/rdkit-loader.js +89 -0
  368. package/dist/components/composed/MoleculeStructure/rdkit-loader.js.map +1 -0
  369. package/dist/components/composed/MoleculeStructure/use-rdkit.cjs +2 -0
  370. package/dist/components/composed/MoleculeStructure/use-rdkit.cjs.map +1 -0
  371. package/dist/components/composed/MoleculeStructure/use-rdkit.d.ts +29 -0
  372. package/dist/components/composed/MoleculeStructure/use-rdkit.js +19 -0
  373. package/dist/components/composed/MoleculeStructure/use-rdkit.js.map +1 -0
  374. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs +1 -1
  375. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs.map +1 -1
  376. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.d.ts +12 -0
  377. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js +21 -21
  378. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js.map +1 -1
  379. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs +1 -1
  380. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs.map +1 -1
  381. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.d.ts +22 -0
  382. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js +34 -34
  383. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js.map +1 -1
  384. package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs +1 -1
  385. package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs.map +1 -1
  386. package/dist/components/composed/PlateMapEditor/PlateMapEditor.d.ts +106 -0
  387. package/dist/components/composed/PlateMapEditor/PlateMapEditor.js +2 -2
  388. package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs +1 -1
  389. package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs.map +1 -1
  390. package/dist/components/composed/PlateMapEditor/PlateMapForm.d.ts +30 -0
  391. package/dist/components/composed/PlateMapEditor/PlateMapForm.js +1 -1
  392. package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs +1 -1
  393. package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs.map +1 -1
  394. package/dist/components/composed/PlateMapEditor/PlateMapGrid.d.ts +64 -0
  395. package/dist/components/composed/PlateMapEditor/PlateMapGrid.js +1 -1
  396. package/dist/components/composed/PlateMapEditor/PlateMapManifest.d.ts +29 -0
  397. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs +1 -1
  398. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs.map +1 -1
  399. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.d.ts +19 -0
  400. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js +11 -11
  401. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js.map +1 -1
  402. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs +1 -1
  403. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs.map +1 -1
  404. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.d.ts +73 -0
  405. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js +1 -1
  406. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js.map +1 -1
  407. package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs +1 -1
  408. package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs.map +1 -1
  409. package/dist/components/composed/PlateMapEditor/PlateZoomControl.d.ts +12 -0
  410. package/dist/components/composed/PlateMapEditor/PlateZoomControl.js +2 -2
  411. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs +1 -1
  412. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs.map +1 -1
  413. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.d.ts +13 -0
  414. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.js +4 -4
  415. package/dist/components/composed/PlateMapEditor/WellLegend.cjs +1 -1
  416. package/dist/components/composed/PlateMapEditor/WellLegend.cjs.map +1 -1
  417. package/dist/components/composed/PlateMapEditor/WellLegend.d.ts +21 -0
  418. package/dist/components/composed/PlateMapEditor/WellLegend.js +24 -12
  419. package/dist/components/composed/PlateMapEditor/WellLegend.js.map +1 -1
  420. package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs +1 -1
  421. package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs.map +1 -1
  422. package/dist/components/composed/PlateMapEditor/WellManifestTable.d.ts +46 -0
  423. package/dist/components/composed/PlateMapEditor/WellManifestTable.js +10 -10
  424. package/dist/components/composed/PlateMapEditor/WellManifestTable.js.map +1 -1
  425. package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs +1 -1
  426. package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs.map +1 -1
  427. package/dist/components/composed/PlateMapEditor/WellMetadataForm.d.ts +17 -0
  428. package/dist/components/composed/PlateMapEditor/WellMetadataForm.js +7 -7
  429. package/dist/components/composed/PlateMapEditor/autoFill.d.ts +26 -0
  430. package/dist/components/composed/PlateMapEditor/csvPlateTriage.d.ts +4 -0
  431. package/dist/components/composed/PlateMapEditor/helpers.d.ts +2 -0
  432. package/dist/components/composed/PlateMapEditor/index.d.ts +31 -0
  433. package/dist/components/composed/PlateMapEditor/types.d.ts +137 -0
  434. package/dist/components/composed/PlateMapEditor/wellGrid.d.ts +12 -0
  435. package/dist/components/composed/ProcessFlow/ProcessFlow.d.ts +32 -0
  436. package/dist/components/composed/ProcessFlow/ProcessFlow.utils.d.ts +86 -0
  437. package/dist/components/composed/ProcessFlow/index.d.ts +1 -0
  438. package/dist/components/composed/RichListItem/RichListItem.cjs +1 -1
  439. package/dist/components/composed/RichListItem/RichListItem.cjs.map +1 -1
  440. package/dist/components/composed/RichListItem/RichListItem.d.ts +22 -0
  441. package/dist/components/composed/RichListItem/RichListItem.js +2 -2
  442. package/dist/components/composed/RichListItem/index.d.ts +2 -0
  443. package/dist/components/composed/StatCard/StatCard.cjs +1 -1
  444. package/dist/components/composed/StatCard/StatCard.cjs.map +1 -1
  445. package/dist/components/composed/StatCard/StatCard.d.ts +11 -0
  446. package/dist/components/composed/StatCard/StatCard.js +1 -1
  447. package/dist/components/composed/StatCard/index.d.ts +1 -0
  448. package/dist/components/composed/TdpSearch/TdpSearch.cjs +1 -1
  449. package/dist/components/composed/TdpSearch/TdpSearch.cjs.map +1 -1
  450. package/dist/components/composed/TdpSearch/TdpSearch.d.ts +21 -0
  451. package/dist/components/composed/TdpSearch/TdpSearch.js +14 -13
  452. package/dist/components/composed/TdpSearch/TdpSearch.mocks.d.ts +5 -0
  453. package/dist/components/composed/TdpSearch/components/DefaultFilters.cjs +1 -1
  454. package/dist/components/composed/TdpSearch/components/DefaultFilters.cjs.map +1 -1
  455. package/dist/components/composed/TdpSearch/components/DefaultFilters.d.ts +3 -0
  456. package/dist/components/composed/TdpSearch/components/DefaultFilters.js +4 -4
  457. package/dist/components/composed/TdpSearch/components/DefaultFilters.js.map +1 -1
  458. package/dist/components/composed/TdpSearch/components/DefaultResults.cjs +1 -1
  459. package/dist/components/composed/TdpSearch/components/DefaultResults.cjs.map +1 -1
  460. package/dist/components/composed/TdpSearch/components/DefaultResults.d.ts +3 -0
  461. package/dist/components/composed/TdpSearch/components/DefaultResults.js +2 -2
  462. package/dist/components/composed/TdpSearch/components/DefaultSearchBar.cjs +1 -1
  463. package/dist/components/composed/TdpSearch/components/DefaultSearchBar.cjs.map +1 -1
  464. package/dist/components/composed/TdpSearch/components/DefaultSearchBar.d.ts +3 -0
  465. package/dist/components/composed/TdpSearch/components/DefaultSearchBar.js +2 -2
  466. package/dist/components/composed/TdpSearch/constants.d.ts +3 -0
  467. package/dist/components/composed/TdpSearch/hooks/useSearch.d.ts +2 -0
  468. package/dist/components/composed/TdpSearch/hooks/useTdpCredentials.d.ts +14 -0
  469. package/dist/components/composed/TdpSearch/index.d.ts +3 -0
  470. package/dist/components/composed/TdpSearch/types.d.ts +128 -0
  471. package/dist/components/composed/TdpSearch/utils.d.ts +3 -0
  472. package/dist/components/composed/TopBar/TopBar.cjs +2 -0
  473. package/dist/components/composed/TopBar/TopBar.cjs.map +1 -0
  474. package/dist/components/composed/TopBar/TopBar.d.ts +25 -0
  475. package/dist/components/composed/TopBar/TopBar.js +56 -0
  476. package/dist/components/composed/TopBar/TopBar.js.map +1 -0
  477. package/dist/components/composed/TopBar/index.d.ts +2 -0
  478. package/dist/components/composed/UserMenu/UserMenu.cjs +2 -0
  479. package/dist/components/composed/UserMenu/UserMenu.cjs.map +1 -0
  480. package/dist/components/composed/UserMenu/UserMenu.d.ts +53 -0
  481. package/dist/components/composed/UserMenu/UserMenu.js +99 -0
  482. package/dist/components/composed/UserMenu/UserMenu.js.map +1 -0
  483. package/dist/components/composed/UserMenu/index.d.ts +2 -0
  484. package/dist/components/composed/tdp-link.d.ts +110 -0
  485. package/dist/components/composed/tdp-url.d.ts +68 -0
  486. package/dist/components/ui/accordion.d.ts +7 -0
  487. package/dist/components/ui/alert-dialog.d.ts +18 -0
  488. package/dist/components/ui/alert.d.ts +10 -0
  489. package/dist/components/ui/aspect-ratio.d.ts +3 -0
  490. package/dist/components/ui/avatar.d.ts +11 -0
  491. package/dist/components/ui/badge.d.ts +9 -0
  492. package/dist/components/ui/banner.d.ts +19 -0
  493. package/dist/components/ui/breadcrumb.d.ts +11 -0
  494. package/dist/components/ui/button-group.d.ts +11 -0
  495. package/dist/components/ui/button.d.ts +10 -0
  496. package/dist/components/ui/calendar.d.ts +10 -0
  497. package/dist/components/ui/card.d.ts +11 -0
  498. package/dist/components/ui/carousel.d.ts +28 -0
  499. package/dist/components/ui/checkbox.d.ts +4 -0
  500. package/dist/components/ui/code-block.d.ts +45 -0
  501. package/dist/components/ui/code-editor.d.ts +18 -0
  502. package/dist/components/ui/collapsible.d.ts +5 -0
  503. package/dist/components/ui/combobox.d.ts +24 -0
  504. package/dist/components/ui/command.d.ts +18 -0
  505. package/dist/components/ui/context-menu.d.ts +31 -0
  506. package/dist/components/ui/data-table/data-table-column-toggle.cjs +1 -1
  507. package/dist/components/ui/data-table/data-table-column-toggle.cjs.map +1 -1
  508. package/dist/components/ui/data-table/data-table-column-toggle.d.ts +6 -0
  509. package/dist/components/ui/data-table/data-table-column-toggle.js +71 -63
  510. package/dist/components/ui/data-table/data-table-column-toggle.js.map +1 -1
  511. package/dist/components/ui/data-table/data-table-filter.cjs +1 -1
  512. package/dist/components/ui/data-table/data-table-filter.cjs.map +1 -1
  513. package/dist/components/ui/data-table/data-table-filter.d.ts +9 -0
  514. package/dist/components/ui/data-table/data-table-filter.js +26 -25
  515. package/dist/components/ui/data-table/data-table-filter.js.map +1 -1
  516. package/dist/components/ui/data-table/data-table-group.cjs +1 -1
  517. package/dist/components/ui/data-table/data-table-group.cjs.map +1 -1
  518. package/dist/components/ui/data-table/data-table-group.d.ts +9 -0
  519. package/dist/components/ui/data-table/data-table-group.js +18 -17
  520. package/dist/components/ui/data-table/data-table-group.js.map +1 -1
  521. package/dist/components/ui/data-table/data-table-pagination.cjs +1 -1
  522. package/dist/components/ui/data-table/data-table-pagination.cjs.map +1 -1
  523. package/dist/components/ui/data-table/data-table-pagination.d.ts +7 -0
  524. package/dist/components/ui/data-table/data-table-pagination.js +16 -16
  525. package/dist/components/ui/data-table/data-table-pagination.js.map +1 -1
  526. package/dist/components/ui/data-table/data-table.cjs +1 -1
  527. package/dist/components/ui/data-table/data-table.cjs.map +1 -1
  528. package/dist/components/ui/data-table/data-table.d.ts +82 -0
  529. package/dist/components/ui/data-table/data-table.js +191 -190
  530. package/dist/components/ui/data-table/data-table.js.map +1 -1
  531. package/dist/components/ui/data-table/index.d.ts +5 -0
  532. package/dist/components/ui/dialog.d.ts +18 -0
  533. package/dist/components/ui/dropdown-menu.d.ts +29 -0
  534. package/dist/components/ui/field.d.ts +24 -0
  535. package/dist/components/ui/hover-card.d.ts +6 -0
  536. package/dist/components/ui/input-group.d.ts +16 -0
  537. package/dist/components/ui/input.d.ts +3 -0
  538. package/dist/components/ui/item.d.ts +23 -0
  539. package/dist/components/ui/kbd.d.ts +3 -0
  540. package/dist/components/ui/label.d.ts +4 -0
  541. package/dist/components/ui/menubar.d.ts +30 -0
  542. package/dist/components/ui/navigation-menu.d.ts +14 -0
  543. package/dist/components/ui/popover.d.ts +7 -0
  544. package/dist/components/ui/progress.d.ts +4 -0
  545. package/dist/components/ui/radio-group.d.ts +5 -0
  546. package/dist/components/ui/resizable.d.ts +25 -0
  547. package/dist/components/ui/scroll-area.d.ts +5 -0
  548. package/dist/components/ui/select.d.ts +15 -0
  549. package/dist/components/ui/separator.d.ts +4 -0
  550. package/dist/components/ui/sheet.d.ts +14 -0
  551. package/dist/components/ui/sidebar.d.ts +69 -0
  552. package/dist/components/ui/skeleton.d.ts +2 -0
  553. package/dist/components/ui/slider.d.ts +4 -0
  554. package/dist/components/ui/snippet.d.ts +18 -0
  555. package/dist/components/ui/sonner.d.ts +3 -0
  556. package/dist/components/ui/spinner.d.ts +6 -0
  557. package/dist/components/ui/switch.d.ts +6 -0
  558. package/dist/components/ui/table.d.ts +22 -0
  559. package/dist/components/ui/tabs.d.ts +11 -0
  560. package/dist/components/ui/tetra-molecule-icon.d.ts +11 -0
  561. package/dist/components/ui/tetrascience-icon.d.ts +7 -0
  562. package/dist/components/ui/textarea.d.ts +3 -0
  563. package/dist/components/ui/toggle-group.d.ts +10 -0
  564. package/dist/components/ui/toggle.d.ts +9 -0
  565. package/dist/components/ui/tooltip.d.ts +7 -0
  566. package/dist/composed/AssistantLayout.cjs +2 -0
  567. package/dist/composed/AssistantLayout.cjs.map +1 -0
  568. package/dist/composed/AssistantLayout.js +10 -0
  569. package/dist/composed/AssistantLayout.js.map +1 -0
  570. package/dist/composed/Chat.cjs +2 -0
  571. package/dist/composed/Chat.cjs.map +1 -0
  572. package/dist/composed/Chat.js +5 -0
  573. package/dist/composed/Chat.js.map +1 -0
  574. package/dist/composed/ConfirmDialog.cjs +2 -0
  575. package/dist/composed/ConfirmDialog.cjs.map +1 -0
  576. package/dist/composed/ConfirmDialog.js +5 -0
  577. package/dist/composed/ConfirmDialog.js.map +1 -0
  578. package/dist/composed/DataAppShell.cjs +2 -0
  579. package/dist/composed/DataAppShell.cjs.map +1 -0
  580. package/dist/composed/DataAppShell.js +22 -0
  581. package/dist/composed/DataAppShell.js.map +1 -0
  582. package/dist/composed/EmptyState.cjs +2 -0
  583. package/dist/composed/EmptyState.cjs.map +1 -0
  584. package/dist/composed/EmptyState.js +5 -0
  585. package/dist/composed/EmptyState.js.map +1 -0
  586. package/dist/composed/FormPatterns.cjs +2 -0
  587. package/dist/composed/FormPatterns.cjs.map +1 -0
  588. package/dist/composed/FormPatterns.js +5 -0
  589. package/dist/composed/FormPatterns.js.map +1 -0
  590. package/dist/composed/MoleculeStructure.cjs +2 -0
  591. package/dist/composed/MoleculeStructure.cjs.map +1 -0
  592. package/dist/composed/MoleculeStructure.js +11 -0
  593. package/dist/composed/MoleculeStructure.js.map +1 -0
  594. package/dist/composed/PlateMapEditor.cjs +2 -0
  595. package/dist/composed/PlateMapEditor.cjs.map +1 -0
  596. package/dist/composed/PlateMapEditor.js +45 -0
  597. package/dist/composed/PlateMapEditor.js.map +1 -0
  598. package/dist/composed/ProcessFlow.cjs +2 -0
  599. package/dist/composed/ProcessFlow.cjs.map +1 -0
  600. package/dist/composed/ProcessFlow.js +7 -0
  601. package/dist/composed/ProcessFlow.js.map +1 -0
  602. package/dist/composed/RichListItem.cjs +2 -0
  603. package/dist/composed/RichListItem.cjs.map +1 -0
  604. package/dist/composed/RichListItem.js +6 -0
  605. package/dist/composed/RichListItem.js.map +1 -0
  606. package/dist/composed/StatCard.cjs +2 -0
  607. package/dist/composed/StatCard.cjs.map +1 -0
  608. package/dist/composed/StatCard.js +5 -0
  609. package/dist/composed/StatCard.js.map +1 -0
  610. package/dist/composed/TdpSearch.cjs +2 -0
  611. package/dist/composed/TdpSearch.cjs.map +1 -0
  612. package/dist/composed/TdpSearch.js +8 -0
  613. package/dist/composed/TdpSearch.js.map +1 -0
  614. package/dist/composed/TopBar.cjs +2 -0
  615. package/dist/composed/TopBar.cjs.map +1 -0
  616. package/dist/composed/TopBar.js +6 -0
  617. package/dist/composed/TopBar.js.map +1 -0
  618. package/dist/composed/UserMenu.cjs +2 -0
  619. package/dist/composed/UserMenu.cjs.map +1 -0
  620. package/dist/composed/UserMenu.js +7 -0
  621. package/dist/composed/UserMenu.js.map +1 -0
  622. package/dist/composed/tdp-link.cjs +2 -0
  623. package/dist/composed/tdp-link.cjs.map +1 -0
  624. package/dist/composed/tdp-link.js +84 -0
  625. package/dist/composed/tdp-link.js.map +1 -0
  626. package/dist/composed/tdp-url.cjs.map +1 -0
  627. package/dist/composed/tdp-url.js.map +1 -0
  628. package/dist/hooks/use-code-editor-theme.d.ts +34 -0
  629. package/dist/hooks/use-element-size.d.ts +25 -0
  630. package/dist/hooks/use-is-dark.d.ts +12 -0
  631. package/dist/hooks/use-mobile.d.ts +1 -0
  632. package/dist/hooks/use-plotly-theme.cjs +1 -1
  633. package/dist/hooks/use-plotly-theme.cjs.map +1 -1
  634. package/dist/hooks/use-plotly-theme.d.ts +49 -0
  635. package/dist/hooks/use-plotly-theme.js +4 -3
  636. package/dist/hooks/use-plotly-theme.js.map +1 -1
  637. package/dist/index.cjs +1 -1
  638. package/dist/index.css +1 -1
  639. package/dist/index.d.ts +102 -4404
  640. package/dist/index.js +698 -659
  641. package/dist/index.js.map +1 -1
  642. package/dist/index.tailwind.css +1 -1
  643. package/dist/jest-setup.cjs +4 -0
  644. package/dist/jest-setup.cjs.map +1 -0
  645. package/dist/jest-setup.d.ts +106 -0
  646. package/dist/jest-setup.js +218 -0
  647. package/dist/jest-setup.js.map +1 -0
  648. package/dist/lib/shiki.cjs +2 -0
  649. package/dist/lib/shiki.cjs.map +1 -0
  650. package/dist/lib/shiki.d.ts +32 -0
  651. package/dist/lib/shiki.js +72 -0
  652. package/dist/lib/shiki.js.map +1 -0
  653. package/dist/lib/utils.d.ts +2 -0
  654. package/dist/server/auth/JwtTokenManager.cjs +1 -1
  655. package/dist/server/auth/JwtTokenManager.cjs.map +1 -1
  656. package/dist/server/auth/JwtTokenManager.d.ts +113 -0
  657. package/dist/server/auth/JwtTokenManager.js +44 -21
  658. package/dist/server/auth/JwtTokenManager.js.map +1 -1
  659. package/dist/server/auth/index.d.ts +5 -0
  660. package/dist/server/index.d.ts +8 -0
  661. package/dist/server/providers/AthenaProvider.cjs +1 -1
  662. package/dist/server/providers/AthenaProvider.cjs.map +1 -1
  663. package/dist/server/providers/AthenaProvider.d.ts +75 -0
  664. package/dist/server/providers/DatabricksProvider.cjs +1 -1
  665. package/dist/server/providers/DatabricksProvider.cjs.map +1 -1
  666. package/dist/server/providers/DatabricksProvider.d.ts +38 -0
  667. package/dist/server/providers/SnowflakeProvider.cjs +1 -1
  668. package/dist/server/providers/SnowflakeProvider.cjs.map +1 -1
  669. package/dist/server/providers/SnowflakeProvider.d.ts +36 -0
  670. package/dist/server/providers/buildProvider.d.ts +39 -0
  671. package/dist/server/providers/entries/athena.d.ts +24 -0
  672. package/dist/server/providers/entries/databricks.d.ts +25 -0
  673. package/dist/server/providers/entries/snowflake.d.ts +25 -0
  674. package/dist/server/providers/exceptions.d.ts +36 -0
  675. package/dist/server/providers/getProviderConfigurations.d.ts +45 -0
  676. package/dist/server/providers/index.d.ts +31 -0
  677. package/dist/server/providers/providerDiscovery.d.ts +81 -0
  678. package/dist/server/providers/types.d.ts +145 -0
  679. package/dist/server/search/TdpSearchManager.d.ts +40 -0
  680. package/dist/server/search/index.d.ts +5 -0
  681. package/dist/server.d.ts +17 -540
  682. package/dist/ui/accordion.cjs +2 -0
  683. package/dist/ui/accordion.cjs.map +1 -0
  684. package/dist/ui/accordion.js +83 -0
  685. package/dist/ui/accordion.js.map +1 -0
  686. package/dist/ui/alert-dialog.cjs +2 -0
  687. package/dist/ui/alert-dialog.cjs.map +1 -0
  688. package/dist/ui/alert-dialog.js +181 -0
  689. package/dist/ui/alert-dialog.js.map +1 -0
  690. package/dist/ui/alert.cjs +2 -0
  691. package/dist/ui/alert.cjs.map +1 -0
  692. package/dist/ui/alert.js +81 -0
  693. package/dist/ui/alert.js.map +1 -0
  694. package/dist/ui/aspect-ratio.cjs.map +1 -0
  695. package/dist/ui/aspect-ratio.js.map +1 -0
  696. package/dist/ui/avatar.cjs +2 -0
  697. package/dist/ui/avatar.cjs.map +1 -0
  698. package/dist/ui/avatar.js +107 -0
  699. package/dist/ui/avatar.js.map +1 -0
  700. package/dist/ui/badge.cjs +2 -0
  701. package/dist/ui/badge.cjs.map +1 -0
  702. package/dist/ui/badge.js +47 -0
  703. package/dist/ui/badge.js.map +1 -0
  704. package/dist/ui/banner.cjs +2 -0
  705. package/dist/ui/banner.cjs.map +1 -0
  706. package/dist/ui/banner.js +80 -0
  707. package/dist/ui/banner.js.map +1 -0
  708. package/dist/ui/breadcrumb.cjs +2 -0
  709. package/dist/ui/breadcrumb.cjs.map +1 -0
  710. package/dist/ui/breadcrumb.js +118 -0
  711. package/dist/ui/breadcrumb.js.map +1 -0
  712. package/dist/ui/button-group.cjs +2 -0
  713. package/dist/ui/button-group.cjs.map +1 -0
  714. package/dist/ui/button-group.js +77 -0
  715. package/dist/ui/button-group.js.map +1 -0
  716. package/dist/ui/button.cjs +2 -0
  717. package/dist/ui/button.cjs.map +1 -0
  718. package/dist/ui/button.js +57 -0
  719. package/dist/ui/button.js.map +1 -0
  720. package/dist/ui/calendar.cjs +2 -0
  721. package/dist/ui/calendar.cjs.map +1 -0
  722. package/dist/ui/calendar.js +174 -0
  723. package/dist/ui/calendar.js.map +1 -0
  724. package/dist/ui/card.cjs +2 -0
  725. package/dist/ui/card.cjs.map +1 -0
  726. package/dist/ui/card.js +102 -0
  727. package/dist/ui/card.js.map +1 -0
  728. package/dist/ui/carousel.cjs +2 -0
  729. package/dist/ui/carousel.cjs.map +1 -0
  730. package/dist/ui/carousel.js +179 -0
  731. package/dist/ui/carousel.js.map +1 -0
  732. package/dist/ui/checkbox.cjs +2 -0
  733. package/dist/ui/checkbox.cjs.map +1 -0
  734. package/dist/ui/checkbox.js +35 -0
  735. package/dist/ui/checkbox.js.map +1 -0
  736. package/dist/ui/code-block.cjs +4 -0
  737. package/dist/ui/code-block.cjs.map +1 -0
  738. package/dist/ui/code-block.js +324 -0
  739. package/dist/ui/code-block.js.map +1 -0
  740. package/dist/ui/code-editor.cjs +2 -0
  741. package/dist/ui/code-editor.cjs.map +1 -0
  742. package/dist/ui/code-editor.js +106 -0
  743. package/dist/ui/code-editor.js.map +1 -0
  744. package/dist/ui/collapsible.cjs.map +1 -0
  745. package/dist/ui/collapsible.js.map +1 -0
  746. package/dist/ui/combobox.cjs +2 -0
  747. package/dist/ui/combobox.cjs.map +1 -0
  748. package/dist/ui/combobox.js +285 -0
  749. package/dist/ui/combobox.js.map +1 -0
  750. package/dist/ui/command.cjs +2 -0
  751. package/dist/ui/command.cjs.map +1 -0
  752. package/dist/ui/command.js +178 -0
  753. package/dist/ui/command.js.map +1 -0
  754. package/dist/ui/context-menu.cjs +2 -0
  755. package/dist/ui/context-menu.cjs.map +1 -0
  756. package/dist/ui/context-menu.js +236 -0
  757. package/dist/ui/context-menu.js.map +1 -0
  758. package/dist/ui/data-table.cjs +2 -0
  759. package/dist/ui/data-table.cjs.map +1 -0
  760. package/dist/ui/data-table.js +16 -0
  761. package/dist/ui/data-table.js.map +1 -0
  762. package/dist/ui/dialog.cjs +2 -0
  763. package/dist/ui/dialog.cjs.map +1 -0
  764. package/dist/ui/dialog.js +165 -0
  765. package/dist/ui/dialog.js.map +1 -0
  766. package/dist/ui/dropdown-menu.cjs +2 -0
  767. package/dist/ui/dropdown-menu.cjs.map +1 -0
  768. package/dist/ui/dropdown-menu.js +260 -0
  769. package/dist/ui/dropdown-menu.js.map +1 -0
  770. package/dist/ui/field.cjs +2 -0
  771. package/dist/ui/field.cjs.map +1 -0
  772. package/dist/ui/field.js +210 -0
  773. package/dist/ui/field.js.map +1 -0
  774. package/dist/ui/hover-card.cjs +2 -0
  775. package/dist/ui/hover-card.cjs.map +1 -0
  776. package/dist/ui/hover-card.js +39 -0
  777. package/dist/ui/hover-card.js.map +1 -0
  778. package/dist/ui/input-group.cjs +2 -0
  779. package/dist/ui/input-group.cjs.map +1 -0
  780. package/dist/ui/input-group.js +145 -0
  781. package/dist/ui/input-group.js.map +1 -0
  782. package/dist/ui/input.cjs +2 -0
  783. package/dist/ui/input.cjs.map +1 -0
  784. package/dist/ui/input.js +20 -0
  785. package/dist/ui/input.js.map +1 -0
  786. package/dist/ui/item.cjs +2 -0
  787. package/dist/ui/item.cjs.map +1 -0
  788. package/dist/ui/item.js +199 -0
  789. package/dist/ui/item.js.map +1 -0
  790. package/dist/ui/kbd.cjs +2 -0
  791. package/dist/ui/kbd.cjs.map +1 -0
  792. package/dist/ui/kbd.js +30 -0
  793. package/dist/ui/kbd.js.map +1 -0
  794. package/dist/ui/label.cjs +2 -0
  795. package/dist/ui/label.cjs.map +1 -0
  796. package/dist/ui/label.js +23 -0
  797. package/dist/ui/label.js.map +1 -0
  798. package/dist/ui/menubar.cjs +2 -0
  799. package/dist/ui/menubar.cjs.map +1 -0
  800. package/dist/ui/menubar.js +256 -0
  801. package/dist/ui/menubar.js.map +1 -0
  802. package/dist/ui/navigation-menu.cjs +2 -0
  803. package/dist/ui/navigation-menu.cjs.map +1 -0
  804. package/dist/ui/navigation-menu.js +164 -0
  805. package/dist/ui/navigation-menu.js.map +1 -0
  806. package/dist/ui/popover.cjs +2 -0
  807. package/dist/ui/popover.cjs.map +1 -0
  808. package/dist/ui/popover.js +45 -0
  809. package/dist/ui/popover.js.map +1 -0
  810. package/dist/ui/radio-group.cjs +2 -0
  811. package/dist/ui/radio-group.cjs.map +1 -0
  812. package/dist/ui/radio-group.js +45 -0
  813. package/dist/ui/radio-group.js.map +1 -0
  814. package/dist/ui/resizable.cjs +2 -0
  815. package/dist/ui/resizable.cjs.map +1 -0
  816. package/dist/ui/resizable.js +58 -0
  817. package/dist/ui/resizable.js.map +1 -0
  818. package/dist/ui/scroll-area.cjs +2 -0
  819. package/dist/ui/scroll-area.cjs.map +1 -0
  820. package/dist/ui/scroll-area.js +61 -0
  821. package/dist/ui/scroll-area.js.map +1 -0
  822. package/dist/ui/select.cjs +2 -0
  823. package/dist/ui/select.cjs.map +1 -0
  824. package/dist/ui/select.js +184 -0
  825. package/dist/ui/select.js.map +1 -0
  826. package/dist/ui/separator.cjs +2 -0
  827. package/dist/ui/separator.cjs.map +1 -0
  828. package/dist/ui/separator.js +27 -0
  829. package/dist/ui/separator.js.map +1 -0
  830. package/dist/ui/sheet.cjs +2 -0
  831. package/dist/ui/sheet.cjs.map +1 -0
  832. package/dist/ui/sheet.js +137 -0
  833. package/dist/ui/sheet.js.map +1 -0
  834. package/dist/ui/sidebar.cjs +2 -0
  835. package/dist/ui/sidebar.cjs.map +1 -0
  836. package/dist/ui/sidebar.js +579 -0
  837. package/dist/ui/sidebar.js.map +1 -0
  838. package/dist/ui/skeleton.cjs +2 -0
  839. package/dist/ui/skeleton.cjs.map +1 -0
  840. package/dist/ui/skeleton.js +24 -0
  841. package/dist/ui/skeleton.js.map +1 -0
  842. package/dist/ui/slider.cjs +2 -0
  843. package/dist/ui/slider.cjs.map +1 -0
  844. package/dist/ui/slider.js +61 -0
  845. package/dist/ui/slider.js.map +1 -0
  846. package/dist/ui/sonner.cjs +2 -0
  847. package/dist/ui/sonner.cjs.map +1 -0
  848. package/dist/ui/sonner.js +52 -0
  849. package/dist/ui/sonner.js.map +1 -0
  850. package/dist/ui/spinner.cjs +2 -0
  851. package/dist/ui/spinner.cjs.map +1 -0
  852. package/dist/ui/spinner.js +39 -0
  853. package/dist/ui/spinner.js.map +1 -0
  854. package/dist/ui/switch.cjs +2 -0
  855. package/dist/ui/switch.cjs.map +1 -0
  856. package/dist/ui/switch.js +32 -0
  857. package/dist/ui/switch.js.map +1 -0
  858. package/dist/ui/table.cjs +2 -0
  859. package/dist/ui/table.cjs.map +1 -0
  860. package/dist/ui/table.js +153 -0
  861. package/dist/ui/table.js.map +1 -0
  862. package/dist/ui/tabs.cjs +2 -0
  863. package/dist/ui/tabs.cjs.map +1 -0
  864. package/dist/ui/tabs.js +92 -0
  865. package/dist/ui/tabs.js.map +1 -0
  866. package/dist/ui/tetra-molecule-icon.cjs +2 -0
  867. package/dist/ui/tetra-molecule-icon.cjs.map +1 -0
  868. package/dist/ui/tetra-molecule-icon.js +50 -0
  869. package/dist/ui/tetra-molecule-icon.js.map +1 -0
  870. package/dist/ui/tetrascience-icon.cjs +2 -0
  871. package/dist/ui/tetrascience-icon.cjs.map +1 -0
  872. package/dist/ui/tetrascience-icon.js +47 -0
  873. package/dist/ui/tetrascience-icon.js.map +1 -0
  874. package/dist/ui/textarea.cjs +2 -0
  875. package/dist/ui/textarea.cjs.map +1 -0
  876. package/dist/ui/textarea.js +19 -0
  877. package/dist/ui/textarea.js.map +1 -0
  878. package/dist/ui/toggle-group.cjs +2 -0
  879. package/dist/ui/toggle-group.cjs.map +1 -0
  880. package/dist/ui/toggle-group.js +81 -0
  881. package/dist/ui/toggle-group.js.map +1 -0
  882. package/dist/ui/toggle.cjs +2 -0
  883. package/dist/ui/toggle.cjs.map +1 -0
  884. package/dist/ui/toggle.js +44 -0
  885. package/dist/ui/toggle.js.map +1 -0
  886. package/dist/ui/tooltip.cjs +2 -0
  887. package/dist/ui/tooltip.cjs.map +1 -0
  888. package/dist/ui/tooltip.js +56 -0
  889. package/dist/ui/tooltip.js.map +1 -0
  890. package/dist/utils/colors.d.ts +50 -0
  891. package/package.json +137 -24
  892. package/dist/athena.d.ts +0 -167
  893. package/dist/components/ai/attachments.cjs +0 -2
  894. package/dist/components/ai/attachments.cjs.map +0 -1
  895. package/dist/components/ai/attachments.js +0 -224
  896. package/dist/components/ai/attachments.js.map +0 -1
  897. package/dist/components/ai/chain-of-thought.cjs +0 -2
  898. package/dist/components/ai/chain-of-thought.cjs.map +0 -1
  899. package/dist/components/ai/chain-of-thought.js +0 -145
  900. package/dist/components/ai/chain-of-thought.js.map +0 -1
  901. package/dist/components/ai/confirmation.cjs +0 -2
  902. package/dist/components/ai/confirmation.cjs.map +0 -1
  903. package/dist/components/ai/confirmation.js +0 -109
  904. package/dist/components/ai/confirmation.js.map +0 -1
  905. package/dist/components/ai/context.cjs +0 -2
  906. package/dist/components/ai/context.cjs.map +0 -1
  907. package/dist/components/ai/context.js +0 -266
  908. package/dist/components/ai/context.js.map +0 -1
  909. package/dist/components/ai/conversation.cjs +0 -4
  910. package/dist/components/ai/conversation.cjs.map +0 -1
  911. package/dist/components/ai/conversation.js +0 -108
  912. package/dist/components/ai/conversation.js.map +0 -1
  913. package/dist/components/ai/inline-citation.cjs +0 -2
  914. package/dist/components/ai/inline-citation.cjs.map +0 -1
  915. package/dist/components/ai/inline-citation.js +0 -182
  916. package/dist/components/ai/inline-citation.js.map +0 -1
  917. package/dist/components/ai/message.cjs +0 -2
  918. package/dist/components/ai/message.cjs.map +0 -1
  919. package/dist/components/ai/message.js +0 -237
  920. package/dist/components/ai/message.js.map +0 -1
  921. package/dist/components/ai/model-selector.cjs +0 -2
  922. package/dist/components/ai/model-selector.cjs.map +0 -1
  923. package/dist/components/ai/model-selector.js +0 -77
  924. package/dist/components/ai/model-selector.js.map +0 -1
  925. package/dist/components/ai/prompt-input.cjs +0 -2
  926. package/dist/components/ai/prompt-input.cjs.map +0 -1
  927. package/dist/components/ai/prompt-input.js +0 -774
  928. package/dist/components/ai/prompt-input.js.map +0 -1
  929. package/dist/components/ai/queue.cjs +0 -2
  930. package/dist/components/ai/queue.cjs.map +0 -1
  931. package/dist/components/ai/queue.js +0 -209
  932. package/dist/components/ai/queue.js.map +0 -1
  933. package/dist/components/ai/reasoning.cjs +0 -2
  934. package/dist/components/ai/reasoning.cjs.map +0 -1
  935. package/dist/components/ai/reasoning.js +0 -129
  936. package/dist/components/ai/reasoning.js.map +0 -1
  937. package/dist/components/ai/shimmer.cjs +0 -2
  938. package/dist/components/ai/shimmer.cjs.map +0 -1
  939. package/dist/components/ai/shimmer.js +0 -49
  940. package/dist/components/ai/shimmer.js.map +0 -1
  941. package/dist/components/ai/sources.cjs +0 -2
  942. package/dist/components/ai/sources.cjs.map +0 -1
  943. package/dist/components/ai/sources.js +0 -54
  944. package/dist/components/ai/sources.js.map +0 -1
  945. package/dist/components/ai/speech-input.cjs +0 -2
  946. package/dist/components/ai/speech-input.cjs.map +0 -1
  947. package/dist/components/ai/speech-input.js +0 -123
  948. package/dist/components/ai/speech-input.js.map +0 -1
  949. package/dist/components/ai/stream-status.cjs +0 -2
  950. package/dist/components/ai/stream-status.cjs.map +0 -1
  951. package/dist/components/ai/stream-status.js +0 -106
  952. package/dist/components/ai/stream-status.js.map +0 -1
  953. package/dist/components/ai/suggestion.cjs +0 -2
  954. package/dist/components/ai/suggestion.cjs.map +0 -1
  955. package/dist/components/ai/suggestion.js +0 -38
  956. package/dist/components/ai/suggestion.js.map +0 -1
  957. package/dist/components/ai/task.cjs +0 -2
  958. package/dist/components/ai/task.cjs.map +0 -1
  959. package/dist/components/ai/task.js +0 -94
  960. package/dist/components/ai/task.js.map +0 -1
  961. package/dist/components/ai/tool.cjs +0 -2
  962. package/dist/components/ai/tool.cjs.map +0 -1
  963. package/dist/components/ai/tool.js +0 -143
  964. package/dist/components/ai/tool.js.map +0 -1
  965. package/dist/components/charts/AreaGraph/AreaGraph.cjs +0 -2
  966. package/dist/components/charts/AreaGraph/AreaGraph.cjs.map +0 -1
  967. package/dist/components/charts/AreaGraph/AreaGraph.js +0 -271
  968. package/dist/components/charts/AreaGraph/AreaGraph.js.map +0 -1
  969. package/dist/components/charts/BarGraph/BarGraph.cjs +0 -2
  970. package/dist/components/charts/BarGraph/BarGraph.cjs.map +0 -1
  971. package/dist/components/charts/BarGraph/BarGraph.js +0 -220
  972. package/dist/components/charts/BarGraph/BarGraph.js.map +0 -1
  973. package/dist/components/charts/Boxplot/Boxplot.cjs +0 -2
  974. package/dist/components/charts/Boxplot/Boxplot.cjs.map +0 -1
  975. package/dist/components/charts/Boxplot/Boxplot.js +0 -209
  976. package/dist/components/charts/Boxplot/Boxplot.js.map +0 -1
  977. package/dist/components/charts/ChromatogramChart/ChromatogramChart.cjs +0 -2
  978. package/dist/components/charts/ChromatogramChart/ChromatogramChart.cjs.map +0 -1
  979. package/dist/components/charts/ChromatogramChart/ChromatogramChart.js +0 -227
  980. package/dist/components/charts/ChromatogramChart/ChromatogramChart.js.map +0 -1
  981. package/dist/components/charts/ChromatogramChart/annotations.cjs +0 -2
  982. package/dist/components/charts/ChromatogramChart/annotations.cjs.map +0 -1
  983. package/dist/components/charts/ChromatogramChart/annotations.js +0 -73
  984. package/dist/components/charts/ChromatogramChart/annotations.js.map +0 -1
  985. package/dist/components/charts/ChromatogramChart/boundaryMarkers.cjs +0 -2
  986. package/dist/components/charts/ChromatogramChart/boundaryMarkers.cjs.map +0 -1
  987. package/dist/components/charts/ChromatogramChart/boundaryMarkers.js +0 -34
  988. package/dist/components/charts/ChromatogramChart/boundaryMarkers.js.map +0 -1
  989. package/dist/components/charts/ChromatogramChart/constants.cjs +0 -2
  990. package/dist/components/charts/ChromatogramChart/constants.cjs.map +0 -1
  991. package/dist/components/charts/ChromatogramChart/constants.js +0 -30
  992. package/dist/components/charts/ChromatogramChart/constants.js.map +0 -1
  993. package/dist/components/charts/ChromatogramChart/dataProcessing.cjs +0 -2
  994. package/dist/components/charts/ChromatogramChart/dataProcessing.cjs.map +0 -1
  995. package/dist/components/charts/ChromatogramChart/dataProcessing.js +0 -79
  996. package/dist/components/charts/ChromatogramChart/dataProcessing.js.map +0 -1
  997. package/dist/components/charts/ChromatogramChart/peakDetection.cjs.map +0 -1
  998. package/dist/components/charts/ChromatogramChart/peakDetection.js.map +0 -1
  999. package/dist/components/charts/DotPlot/DotPlot.cjs +0 -2
  1000. package/dist/components/charts/DotPlot/DotPlot.cjs.map +0 -1
  1001. package/dist/components/charts/DotPlot/DotPlot.js +0 -208
  1002. package/dist/components/charts/DotPlot/DotPlot.js.map +0 -1
  1003. package/dist/components/charts/Heatmap/Heatmap.cjs +0 -2
  1004. package/dist/components/charts/Heatmap/Heatmap.cjs.map +0 -1
  1005. package/dist/components/charts/Heatmap/Heatmap.js +0 -67
  1006. package/dist/components/charts/Heatmap/Heatmap.js.map +0 -1
  1007. package/dist/components/charts/LineGraph/LineGraph.cjs +0 -2
  1008. package/dist/components/charts/LineGraph/LineGraph.cjs.map +0 -1
  1009. package/dist/components/charts/LineGraph/LineGraph.js +0 -225
  1010. package/dist/components/charts/LineGraph/LineGraph.js.map +0 -1
  1011. package/dist/components/charts/ScatterGraph/ScatterGraph.cjs +0 -2
  1012. package/dist/components/charts/ScatterGraph/ScatterGraph.cjs.map +0 -1
  1013. package/dist/components/charts/ScatterGraph/ScatterGraph.js +0 -234
  1014. package/dist/components/charts/ScatterGraph/ScatterGraph.js.map +0 -1
  1015. package/dist/components/composed/tdp-link.cjs +0 -2
  1016. package/dist/components/composed/tdp-link.cjs.map +0 -1
  1017. package/dist/components/composed/tdp-link.js +0 -84
  1018. package/dist/components/composed/tdp-link.js.map +0 -1
  1019. package/dist/components/composed/tdp-url.cjs.map +0 -1
  1020. package/dist/components/composed/tdp-url.js.map +0 -1
  1021. package/dist/components/ui/accordion.cjs +0 -2
  1022. package/dist/components/ui/accordion.cjs.map +0 -1
  1023. package/dist/components/ui/accordion.js +0 -83
  1024. package/dist/components/ui/accordion.js.map +0 -1
  1025. package/dist/components/ui/alert-dialog.cjs +0 -2
  1026. package/dist/components/ui/alert-dialog.cjs.map +0 -1
  1027. package/dist/components/ui/alert-dialog.js +0 -181
  1028. package/dist/components/ui/alert-dialog.js.map +0 -1
  1029. package/dist/components/ui/alert.cjs +0 -2
  1030. package/dist/components/ui/alert.cjs.map +0 -1
  1031. package/dist/components/ui/alert.js +0 -81
  1032. package/dist/components/ui/alert.js.map +0 -1
  1033. package/dist/components/ui/aspect-ratio.cjs.map +0 -1
  1034. package/dist/components/ui/aspect-ratio.js.map +0 -1
  1035. package/dist/components/ui/avatar.cjs +0 -2
  1036. package/dist/components/ui/avatar.cjs.map +0 -1
  1037. package/dist/components/ui/avatar.js +0 -107
  1038. package/dist/components/ui/avatar.js.map +0 -1
  1039. package/dist/components/ui/badge.cjs +0 -2
  1040. package/dist/components/ui/badge.cjs.map +0 -1
  1041. package/dist/components/ui/badge.js +0 -47
  1042. package/dist/components/ui/badge.js.map +0 -1
  1043. package/dist/components/ui/banner.cjs +0 -2
  1044. package/dist/components/ui/banner.cjs.map +0 -1
  1045. package/dist/components/ui/banner.js +0 -80
  1046. package/dist/components/ui/banner.js.map +0 -1
  1047. package/dist/components/ui/breadcrumb.cjs +0 -2
  1048. package/dist/components/ui/breadcrumb.cjs.map +0 -1
  1049. package/dist/components/ui/breadcrumb.js +0 -118
  1050. package/dist/components/ui/breadcrumb.js.map +0 -1
  1051. package/dist/components/ui/button-group.cjs +0 -2
  1052. package/dist/components/ui/button-group.cjs.map +0 -1
  1053. package/dist/components/ui/button-group.js +0 -77
  1054. package/dist/components/ui/button-group.js.map +0 -1
  1055. package/dist/components/ui/button.cjs +0 -2
  1056. package/dist/components/ui/button.cjs.map +0 -1
  1057. package/dist/components/ui/button.js +0 -57
  1058. package/dist/components/ui/button.js.map +0 -1
  1059. package/dist/components/ui/calendar.cjs +0 -2
  1060. package/dist/components/ui/calendar.cjs.map +0 -1
  1061. package/dist/components/ui/calendar.js +0 -174
  1062. package/dist/components/ui/calendar.js.map +0 -1
  1063. package/dist/components/ui/card.cjs +0 -2
  1064. package/dist/components/ui/card.cjs.map +0 -1
  1065. package/dist/components/ui/card.js +0 -102
  1066. package/dist/components/ui/card.js.map +0 -1
  1067. package/dist/components/ui/carousel.cjs +0 -2
  1068. package/dist/components/ui/carousel.cjs.map +0 -1
  1069. package/dist/components/ui/carousel.js +0 -179
  1070. package/dist/components/ui/carousel.js.map +0 -1
  1071. package/dist/components/ui/checkbox.cjs +0 -2
  1072. package/dist/components/ui/checkbox.cjs.map +0 -1
  1073. package/dist/components/ui/checkbox.js +0 -35
  1074. package/dist/components/ui/checkbox.js.map +0 -1
  1075. package/dist/components/ui/code-block.cjs +0 -4
  1076. package/dist/components/ui/code-block.cjs.map +0 -1
  1077. package/dist/components/ui/code-block.js +0 -306
  1078. package/dist/components/ui/code-block.js.map +0 -1
  1079. package/dist/components/ui/code-editor.cjs +0 -2
  1080. package/dist/components/ui/code-editor.cjs.map +0 -1
  1081. package/dist/components/ui/code-editor.js +0 -103
  1082. package/dist/components/ui/code-editor.js.map +0 -1
  1083. package/dist/components/ui/collapsible.cjs.map +0 -1
  1084. package/dist/components/ui/collapsible.js.map +0 -1
  1085. package/dist/components/ui/combobox.cjs +0 -2
  1086. package/dist/components/ui/combobox.cjs.map +0 -1
  1087. package/dist/components/ui/combobox.js +0 -281
  1088. package/dist/components/ui/combobox.js.map +0 -1
  1089. package/dist/components/ui/command.cjs +0 -2
  1090. package/dist/components/ui/command.cjs.map +0 -1
  1091. package/dist/components/ui/command.js +0 -174
  1092. package/dist/components/ui/command.js.map +0 -1
  1093. package/dist/components/ui/context-menu.cjs +0 -2
  1094. package/dist/components/ui/context-menu.cjs.map +0 -1
  1095. package/dist/components/ui/context-menu.js +0 -236
  1096. package/dist/components/ui/context-menu.js.map +0 -1
  1097. package/dist/components/ui/dialog.cjs +0 -2
  1098. package/dist/components/ui/dialog.cjs.map +0 -1
  1099. package/dist/components/ui/dialog.js +0 -165
  1100. package/dist/components/ui/dialog.js.map +0 -1
  1101. package/dist/components/ui/drawer.cjs +0 -2
  1102. package/dist/components/ui/drawer.cjs.map +0 -1
  1103. package/dist/components/ui/drawer.js +0 -125
  1104. package/dist/components/ui/drawer.js.map +0 -1
  1105. package/dist/components/ui/dropdown-menu.cjs +0 -2
  1106. package/dist/components/ui/dropdown-menu.cjs.map +0 -1
  1107. package/dist/components/ui/dropdown-menu.js +0 -252
  1108. package/dist/components/ui/dropdown-menu.js.map +0 -1
  1109. package/dist/components/ui/field.cjs +0 -2
  1110. package/dist/components/ui/field.cjs.map +0 -1
  1111. package/dist/components/ui/field.js +0 -210
  1112. package/dist/components/ui/field.js.map +0 -1
  1113. package/dist/components/ui/hover-card.cjs +0 -2
  1114. package/dist/components/ui/hover-card.cjs.map +0 -1
  1115. package/dist/components/ui/hover-card.js +0 -39
  1116. package/dist/components/ui/hover-card.js.map +0 -1
  1117. package/dist/components/ui/input-group.cjs +0 -2
  1118. package/dist/components/ui/input-group.cjs.map +0 -1
  1119. package/dist/components/ui/input-group.js +0 -145
  1120. package/dist/components/ui/input-group.js.map +0 -1
  1121. package/dist/components/ui/input-otp.cjs +0 -2
  1122. package/dist/components/ui/input-otp.cjs.map +0 -1
  1123. package/dist/components/ui/input-otp.js +0 -82
  1124. package/dist/components/ui/input-otp.js.map +0 -1
  1125. package/dist/components/ui/input.cjs +0 -2
  1126. package/dist/components/ui/input.cjs.map +0 -1
  1127. package/dist/components/ui/input.js +0 -20
  1128. package/dist/components/ui/input.js.map +0 -1
  1129. package/dist/components/ui/item.cjs +0 -2
  1130. package/dist/components/ui/item.cjs.map +0 -1
  1131. package/dist/components/ui/item.js +0 -191
  1132. package/dist/components/ui/item.js.map +0 -1
  1133. package/dist/components/ui/kbd.cjs +0 -2
  1134. package/dist/components/ui/kbd.cjs.map +0 -1
  1135. package/dist/components/ui/kbd.js +0 -30
  1136. package/dist/components/ui/kbd.js.map +0 -1
  1137. package/dist/components/ui/label.cjs +0 -2
  1138. package/dist/components/ui/label.cjs.map +0 -1
  1139. package/dist/components/ui/label.js +0 -23
  1140. package/dist/components/ui/label.js.map +0 -1
  1141. package/dist/components/ui/menubar.cjs +0 -2
  1142. package/dist/components/ui/menubar.cjs.map +0 -1
  1143. package/dist/components/ui/menubar.js +0 -256
  1144. package/dist/components/ui/menubar.js.map +0 -1
  1145. package/dist/components/ui/navigation-menu.cjs +0 -2
  1146. package/dist/components/ui/navigation-menu.cjs.map +0 -1
  1147. package/dist/components/ui/navigation-menu.js +0 -164
  1148. package/dist/components/ui/navigation-menu.js.map +0 -1
  1149. package/dist/components/ui/popover.cjs +0 -2
  1150. package/dist/components/ui/popover.cjs.map +0 -1
  1151. package/dist/components/ui/popover.js +0 -45
  1152. package/dist/components/ui/popover.js.map +0 -1
  1153. package/dist/components/ui/radio-group.cjs +0 -2
  1154. package/dist/components/ui/radio-group.cjs.map +0 -1
  1155. package/dist/components/ui/radio-group.js +0 -45
  1156. package/dist/components/ui/radio-group.js.map +0 -1
  1157. package/dist/components/ui/resizable.cjs +0 -2
  1158. package/dist/components/ui/resizable.cjs.map +0 -1
  1159. package/dist/components/ui/resizable.js +0 -58
  1160. package/dist/components/ui/resizable.js.map +0 -1
  1161. package/dist/components/ui/scroll-area.cjs +0 -2
  1162. package/dist/components/ui/scroll-area.cjs.map +0 -1
  1163. package/dist/components/ui/scroll-area.js +0 -60
  1164. package/dist/components/ui/scroll-area.js.map +0 -1
  1165. package/dist/components/ui/select.cjs +0 -2
  1166. package/dist/components/ui/select.cjs.map +0 -1
  1167. package/dist/components/ui/select.js +0 -184
  1168. package/dist/components/ui/select.js.map +0 -1
  1169. package/dist/components/ui/separator.cjs +0 -2
  1170. package/dist/components/ui/separator.cjs.map +0 -1
  1171. package/dist/components/ui/separator.js +0 -27
  1172. package/dist/components/ui/separator.js.map +0 -1
  1173. package/dist/components/ui/sheet.cjs +0 -2
  1174. package/dist/components/ui/sheet.cjs.map +0 -1
  1175. package/dist/components/ui/sheet.js +0 -137
  1176. package/dist/components/ui/sheet.js.map +0 -1
  1177. package/dist/components/ui/sidebar.cjs +0 -2
  1178. package/dist/components/ui/sidebar.cjs.map +0 -1
  1179. package/dist/components/ui/sidebar.js +0 -579
  1180. package/dist/components/ui/sidebar.js.map +0 -1
  1181. package/dist/components/ui/skeleton.cjs +0 -2
  1182. package/dist/components/ui/skeleton.cjs.map +0 -1
  1183. package/dist/components/ui/skeleton.js +0 -24
  1184. package/dist/components/ui/skeleton.js.map +0 -1
  1185. package/dist/components/ui/slider.cjs +0 -2
  1186. package/dist/components/ui/slider.cjs.map +0 -1
  1187. package/dist/components/ui/slider.js +0 -60
  1188. package/dist/components/ui/slider.js.map +0 -1
  1189. package/dist/components/ui/sonner.cjs +0 -2
  1190. package/dist/components/ui/sonner.cjs.map +0 -1
  1191. package/dist/components/ui/sonner.js +0 -37
  1192. package/dist/components/ui/sonner.js.map +0 -1
  1193. package/dist/components/ui/spinner.cjs +0 -2
  1194. package/dist/components/ui/spinner.cjs.map +0 -1
  1195. package/dist/components/ui/spinner.js +0 -39
  1196. package/dist/components/ui/spinner.js.map +0 -1
  1197. package/dist/components/ui/switch.cjs +0 -2
  1198. package/dist/components/ui/switch.cjs.map +0 -1
  1199. package/dist/components/ui/switch.js +0 -32
  1200. package/dist/components/ui/switch.js.map +0 -1
  1201. package/dist/components/ui/table.cjs +0 -2
  1202. package/dist/components/ui/table.cjs.map +0 -1
  1203. package/dist/components/ui/table.js +0 -152
  1204. package/dist/components/ui/table.js.map +0 -1
  1205. package/dist/components/ui/tabs.cjs +0 -2
  1206. package/dist/components/ui/tabs.cjs.map +0 -1
  1207. package/dist/components/ui/tabs.js +0 -92
  1208. package/dist/components/ui/tabs.js.map +0 -1
  1209. package/dist/components/ui/tetrascience-icon.cjs +0 -2
  1210. package/dist/components/ui/tetrascience-icon.cjs.map +0 -1
  1211. package/dist/components/ui/tetrascience-icon.js +0 -46
  1212. package/dist/components/ui/tetrascience-icon.js.map +0 -1
  1213. package/dist/components/ui/textarea.cjs +0 -2
  1214. package/dist/components/ui/textarea.cjs.map +0 -1
  1215. package/dist/components/ui/textarea.js +0 -19
  1216. package/dist/components/ui/textarea.js.map +0 -1
  1217. package/dist/components/ui/toggle-group.cjs +0 -2
  1218. package/dist/components/ui/toggle-group.cjs.map +0 -1
  1219. package/dist/components/ui/toggle-group.js +0 -77
  1220. package/dist/components/ui/toggle-group.js.map +0 -1
  1221. package/dist/components/ui/toggle.cjs +0 -2
  1222. package/dist/components/ui/toggle.cjs.map +0 -1
  1223. package/dist/components/ui/toggle.js +0 -44
  1224. package/dist/components/ui/toggle.js.map +0 -1
  1225. package/dist/components/ui/tooltip.cjs +0 -2
  1226. package/dist/components/ui/tooltip.cjs.map +0 -1
  1227. package/dist/components/ui/tooltip.js +0 -56
  1228. package/dist/components/ui/tooltip.js.map +0 -1
  1229. package/dist/databricks.d.ts +0 -129
  1230. package/dist/providers/athena.d.ts +0 -9
  1231. package/dist/providers/databricks.d.ts +0 -9
  1232. package/dist/providers/snowflake.d.ts +0 -9
  1233. package/dist/snowflake.d.ts +0 -125
  1234. /package/dist/components/charts/{ChromatogramChart → Chromatogram}/peakDetection.cjs +0 -0
  1235. /package/dist/components/charts/{ChromatogramChart → Chromatogram}/peakDetection.js +0 -0
  1236. /package/dist/{components/composed → composed}/tdp-url.cjs +0 -0
  1237. /package/dist/{components/composed → composed}/tdp-url.js +0 -0
  1238. /package/dist/{components/ui → ui}/aspect-ratio.cjs +0 -0
  1239. /package/dist/{components/ui → ui}/aspect-ratio.js +0 -0
  1240. /package/dist/{components/ui → ui}/collapsible.cjs +0 -0
  1241. /package/dist/{components/ui → ui}/collapsible.js +0 -0
@@ -0,0 +1,4 @@
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,i)=>({key:`line-${o}-${i}`,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}),_=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"),M=({keyedLine:e,showLineNumbers:t})=>s.jsx("span",{className:t?_:"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),i=x.get(n);return i||(o&&(h.has(n)||h.set(n,new Set),h.get(n)?.add(o)),T.getCodeBlockHighlighter(t).then(({highlighter:d,lang:r})=>{const a=d.codeToTokens(e,{colorReplacements:q,lang:r,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(i=>s.jsx(M,{keyedLine:i,showLineNumbers:t},i.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]),i=c.useMemo(()=>C(e,t)??n,[e,t,n]),[d,r]=c.useState(null),a=c.useRef({code:e,language:t});(a.current.code!==e||a.current.language!==t)&&(a.current={code:e,language:t},r(null)),c.useEffect(()=>{let k=!1;return C(e,t,g=>{k||r(g)}),()=>{k=!0}},[e,t]);const u=d??i;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:i,...d})=>{const r=c.useMemo(()=>({code:e}),[e]);return s.jsx(v.Provider,{value:r,children:s.jsxs(y,{className:n,language:t,...d,children:[i,s.jsx(p,{code:e,language:t,showLineNumbers:o})]})})},O=({onCopy:e,onError:t,timeout:o=2e3,children:n,className:i,...d})=>{const[r,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{r||(await navigator.clipboard.writeText(k),a(!0),e?.(),u.current=window.setTimeout(()=>a(!1),o))}catch(j){t?.(j)}},[k,e,t,o,r]);c.useEffect(()=>()=>{window.clearTimeout(u.current)},[]);const S=r?b.CheckIcon:b.CopyIcon;return s.jsx(w.Button,{"aria-label":"Copy code",className:l.cn("shrink-0",i),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
@@ -0,0 +1 @@
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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"}
@@ -0,0 +1,324 @@
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
@@ -0,0 +1 @@
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":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),_=require("@monaco-editor/react"),h=require("lucide-react"),i=require("react"),m=require("./button.cjs"),o=require("./tooltip.cjs"),k=require("../hooks/use-code-editor-theme.cjs"),N=require("../lib/utils.cjs"),R={light:"vs",dark:"vs-dark"},p=({value:r,onChange:f,language:x="python",theme:c,height:j=400,width:C="100%",options:T={},onCopy:l,onLaunch:n,disabled:t=!1})=>{const y=k.useCodeEditorTheme(),E=i.useRef(null),[v,a]=i.useState("Copy"),[S,u]=i.useState("Launch"),d=1e3,g=i.useCallback(s=>{l&&!t&&(l(s),a("Copied"),setTimeout(()=>{a("Copy")},d))},[l,t]),b=i.useCallback(s=>{n&&!t&&(n(s),u("Launched"),setTimeout(()=>{u("Launch")},d))},[n,t]),q=async s=>{E.current=s},M={minimap:{enabled:!1},scrollBeyondLastLine:!1,lineNumbers:"on",padding:{top:12,bottom:12,left:20,right:20},scrollbar:{vertical:"hidden",verticalScrollbarSize:0},readOnly:t,...T};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:[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:()=>g(r),disabled:t,"aria-label":"Copy code",children:e.jsx(h.Copy,{})})})}),e.jsx(o.TooltipContent,{side:"bottom",children:v})]}),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:()=>b(r),disabled:t,"aria-label":"Launch code",children:e.jsx(h.Rocket,{})})})}),e.jsx(o.TooltipContent,{side:"bottom",children:S})]})]}),e.jsx(_,{value:r,onChange:f,language:x,theme:c?R[c]:y.monacoTheme,height:j,width:C,options:M,beforeMount:q})]})};exports.CodeEditor=p;exports.default=p;
2
+ //# sourceMappingURL=code-editor.cjs.map
@@ -0,0 +1 @@
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":"mWA2BMA,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"}
@@ -0,0 +1,106 @@
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
+ I as default
105
+ };
106
+ //# sourceMappingURL=code-editor.js.map
@@ -0,0 +1 @@
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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"}
@@ -0,0 +1 @@
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"}
@@ -0,0 +1 @@
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;"}