@tetrascience-npm/tetrascience-react-ui 0.7.0 → 1.0.0-beta.134.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1246) 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/components/ui/tree.d.ts +79 -0
  567. package/dist/composed/AssistantLayout.cjs +2 -0
  568. package/dist/composed/AssistantLayout.cjs.map +1 -0
  569. package/dist/composed/AssistantLayout.js +10 -0
  570. package/dist/composed/AssistantLayout.js.map +1 -0
  571. package/dist/composed/Chat.cjs +2 -0
  572. package/dist/composed/Chat.cjs.map +1 -0
  573. package/dist/composed/Chat.js +5 -0
  574. package/dist/composed/Chat.js.map +1 -0
  575. package/dist/composed/ConfirmDialog.cjs +2 -0
  576. package/dist/composed/ConfirmDialog.cjs.map +1 -0
  577. package/dist/composed/ConfirmDialog.js +5 -0
  578. package/dist/composed/ConfirmDialog.js.map +1 -0
  579. package/dist/composed/DataAppShell.cjs +2 -0
  580. package/dist/composed/DataAppShell.cjs.map +1 -0
  581. package/dist/composed/DataAppShell.js +22 -0
  582. package/dist/composed/DataAppShell.js.map +1 -0
  583. package/dist/composed/EmptyState.cjs +2 -0
  584. package/dist/composed/EmptyState.cjs.map +1 -0
  585. package/dist/composed/EmptyState.js +5 -0
  586. package/dist/composed/EmptyState.js.map +1 -0
  587. package/dist/composed/FormPatterns.cjs +2 -0
  588. package/dist/composed/FormPatterns.cjs.map +1 -0
  589. package/dist/composed/FormPatterns.js +5 -0
  590. package/dist/composed/FormPatterns.js.map +1 -0
  591. package/dist/composed/MoleculeStructure.cjs +2 -0
  592. package/dist/composed/MoleculeStructure.cjs.map +1 -0
  593. package/dist/composed/MoleculeStructure.js +11 -0
  594. package/dist/composed/MoleculeStructure.js.map +1 -0
  595. package/dist/composed/PlateMapEditor.cjs +2 -0
  596. package/dist/composed/PlateMapEditor.cjs.map +1 -0
  597. package/dist/composed/PlateMapEditor.js +45 -0
  598. package/dist/composed/PlateMapEditor.js.map +1 -0
  599. package/dist/composed/ProcessFlow.cjs +2 -0
  600. package/dist/composed/ProcessFlow.cjs.map +1 -0
  601. package/dist/composed/ProcessFlow.js +7 -0
  602. package/dist/composed/ProcessFlow.js.map +1 -0
  603. package/dist/composed/RichListItem.cjs +2 -0
  604. package/dist/composed/RichListItem.cjs.map +1 -0
  605. package/dist/composed/RichListItem.js +6 -0
  606. package/dist/composed/RichListItem.js.map +1 -0
  607. package/dist/composed/StatCard.cjs +2 -0
  608. package/dist/composed/StatCard.cjs.map +1 -0
  609. package/dist/composed/StatCard.js +5 -0
  610. package/dist/composed/StatCard.js.map +1 -0
  611. package/dist/composed/TdpSearch.cjs +2 -0
  612. package/dist/composed/TdpSearch.cjs.map +1 -0
  613. package/dist/composed/TdpSearch.js +8 -0
  614. package/dist/composed/TdpSearch.js.map +1 -0
  615. package/dist/composed/TopBar.cjs +2 -0
  616. package/dist/composed/TopBar.cjs.map +1 -0
  617. package/dist/composed/TopBar.js +6 -0
  618. package/dist/composed/TopBar.js.map +1 -0
  619. package/dist/composed/UserMenu.cjs +2 -0
  620. package/dist/composed/UserMenu.cjs.map +1 -0
  621. package/dist/composed/UserMenu.js +7 -0
  622. package/dist/composed/UserMenu.js.map +1 -0
  623. package/dist/composed/tdp-link.cjs +2 -0
  624. package/dist/composed/tdp-link.cjs.map +1 -0
  625. package/dist/composed/tdp-link.js +84 -0
  626. package/dist/composed/tdp-link.js.map +1 -0
  627. package/dist/composed/tdp-url.cjs.map +1 -0
  628. package/dist/composed/tdp-url.js.map +1 -0
  629. package/dist/hooks/use-code-editor-theme.d.ts +34 -0
  630. package/dist/hooks/use-element-size.d.ts +25 -0
  631. package/dist/hooks/use-is-dark.d.ts +12 -0
  632. package/dist/hooks/use-mobile.d.ts +1 -0
  633. package/dist/hooks/use-plotly-theme.cjs +1 -1
  634. package/dist/hooks/use-plotly-theme.cjs.map +1 -1
  635. package/dist/hooks/use-plotly-theme.d.ts +49 -0
  636. package/dist/hooks/use-plotly-theme.js +4 -3
  637. package/dist/hooks/use-plotly-theme.js.map +1 -1
  638. package/dist/index.cjs +1 -1
  639. package/dist/index.css +1 -1
  640. package/dist/index.d.ts +103 -4404
  641. package/dist/index.js +705 -659
  642. package/dist/index.js.map +1 -1
  643. package/dist/index.tailwind.css +1 -1
  644. package/dist/jest-setup.cjs +4 -0
  645. package/dist/jest-setup.cjs.map +1 -0
  646. package/dist/jest-setup.d.ts +106 -0
  647. package/dist/jest-setup.js +218 -0
  648. package/dist/jest-setup.js.map +1 -0
  649. package/dist/lib/shiki.cjs +2 -0
  650. package/dist/lib/shiki.cjs.map +1 -0
  651. package/dist/lib/shiki.d.ts +32 -0
  652. package/dist/lib/shiki.js +72 -0
  653. package/dist/lib/shiki.js.map +1 -0
  654. package/dist/lib/utils.d.ts +2 -0
  655. package/dist/server/auth/JwtTokenManager.cjs +1 -1
  656. package/dist/server/auth/JwtTokenManager.cjs.map +1 -1
  657. package/dist/server/auth/JwtTokenManager.d.ts +113 -0
  658. package/dist/server/auth/JwtTokenManager.js +44 -21
  659. package/dist/server/auth/JwtTokenManager.js.map +1 -1
  660. package/dist/server/auth/index.d.ts +5 -0
  661. package/dist/server/index.d.ts +8 -0
  662. package/dist/server/providers/AthenaProvider.cjs +1 -1
  663. package/dist/server/providers/AthenaProvider.cjs.map +1 -1
  664. package/dist/server/providers/AthenaProvider.d.ts +75 -0
  665. package/dist/server/providers/DatabricksProvider.cjs +1 -1
  666. package/dist/server/providers/DatabricksProvider.cjs.map +1 -1
  667. package/dist/server/providers/DatabricksProvider.d.ts +38 -0
  668. package/dist/server/providers/SnowflakeProvider.cjs +1 -1
  669. package/dist/server/providers/SnowflakeProvider.cjs.map +1 -1
  670. package/dist/server/providers/SnowflakeProvider.d.ts +36 -0
  671. package/dist/server/providers/buildProvider.d.ts +39 -0
  672. package/dist/server/providers/entries/athena.d.ts +24 -0
  673. package/dist/server/providers/entries/databricks.d.ts +25 -0
  674. package/dist/server/providers/entries/snowflake.d.ts +25 -0
  675. package/dist/server/providers/exceptions.d.ts +36 -0
  676. package/dist/server/providers/getProviderConfigurations.d.ts +45 -0
  677. package/dist/server/providers/index.d.ts +31 -0
  678. package/dist/server/providers/providerDiscovery.d.ts +81 -0
  679. package/dist/server/providers/types.d.ts +145 -0
  680. package/dist/server/search/TdpSearchManager.d.ts +40 -0
  681. package/dist/server/search/index.d.ts +5 -0
  682. package/dist/server.d.ts +17 -540
  683. package/dist/ui/accordion.cjs +2 -0
  684. package/dist/ui/accordion.cjs.map +1 -0
  685. package/dist/ui/accordion.js +83 -0
  686. package/dist/ui/accordion.js.map +1 -0
  687. package/dist/ui/alert-dialog.cjs +2 -0
  688. package/dist/ui/alert-dialog.cjs.map +1 -0
  689. package/dist/ui/alert-dialog.js +181 -0
  690. package/dist/ui/alert-dialog.js.map +1 -0
  691. package/dist/ui/alert.cjs +2 -0
  692. package/dist/ui/alert.cjs.map +1 -0
  693. package/dist/ui/alert.js +81 -0
  694. package/dist/ui/alert.js.map +1 -0
  695. package/dist/ui/aspect-ratio.cjs.map +1 -0
  696. package/dist/ui/aspect-ratio.js.map +1 -0
  697. package/dist/ui/avatar.cjs +2 -0
  698. package/dist/ui/avatar.cjs.map +1 -0
  699. package/dist/ui/avatar.js +107 -0
  700. package/dist/ui/avatar.js.map +1 -0
  701. package/dist/ui/badge.cjs +2 -0
  702. package/dist/ui/badge.cjs.map +1 -0
  703. package/dist/ui/badge.js +47 -0
  704. package/dist/ui/badge.js.map +1 -0
  705. package/dist/ui/banner.cjs +2 -0
  706. package/dist/ui/banner.cjs.map +1 -0
  707. package/dist/ui/banner.js +80 -0
  708. package/dist/ui/banner.js.map +1 -0
  709. package/dist/ui/breadcrumb.cjs +2 -0
  710. package/dist/ui/breadcrumb.cjs.map +1 -0
  711. package/dist/ui/breadcrumb.js +118 -0
  712. package/dist/ui/breadcrumb.js.map +1 -0
  713. package/dist/ui/button-group.cjs +2 -0
  714. package/dist/ui/button-group.cjs.map +1 -0
  715. package/dist/ui/button-group.js +77 -0
  716. package/dist/ui/button-group.js.map +1 -0
  717. package/dist/ui/button.cjs +2 -0
  718. package/dist/ui/button.cjs.map +1 -0
  719. package/dist/ui/button.js +57 -0
  720. package/dist/ui/button.js.map +1 -0
  721. package/dist/ui/calendar.cjs +2 -0
  722. package/dist/ui/calendar.cjs.map +1 -0
  723. package/dist/ui/calendar.js +174 -0
  724. package/dist/ui/calendar.js.map +1 -0
  725. package/dist/ui/card.cjs +2 -0
  726. package/dist/ui/card.cjs.map +1 -0
  727. package/dist/ui/card.js +102 -0
  728. package/dist/ui/card.js.map +1 -0
  729. package/dist/ui/carousel.cjs +2 -0
  730. package/dist/ui/carousel.cjs.map +1 -0
  731. package/dist/ui/carousel.js +179 -0
  732. package/dist/ui/carousel.js.map +1 -0
  733. package/dist/ui/checkbox.cjs +2 -0
  734. package/dist/ui/checkbox.cjs.map +1 -0
  735. package/dist/ui/checkbox.js +35 -0
  736. package/dist/ui/checkbox.js.map +1 -0
  737. package/dist/ui/code-block.cjs +4 -0
  738. package/dist/ui/code-block.cjs.map +1 -0
  739. package/dist/ui/code-block.js +324 -0
  740. package/dist/ui/code-block.js.map +1 -0
  741. package/dist/ui/code-editor.cjs +2 -0
  742. package/dist/ui/code-editor.cjs.map +1 -0
  743. package/dist/ui/code-editor.js +106 -0
  744. package/dist/ui/code-editor.js.map +1 -0
  745. package/dist/ui/collapsible.cjs.map +1 -0
  746. package/dist/ui/collapsible.js.map +1 -0
  747. package/dist/ui/combobox.cjs +2 -0
  748. package/dist/ui/combobox.cjs.map +1 -0
  749. package/dist/ui/combobox.js +285 -0
  750. package/dist/ui/combobox.js.map +1 -0
  751. package/dist/ui/command.cjs +2 -0
  752. package/dist/ui/command.cjs.map +1 -0
  753. package/dist/ui/command.js +178 -0
  754. package/dist/ui/command.js.map +1 -0
  755. package/dist/ui/context-menu.cjs +2 -0
  756. package/dist/ui/context-menu.cjs.map +1 -0
  757. package/dist/ui/context-menu.js +236 -0
  758. package/dist/ui/context-menu.js.map +1 -0
  759. package/dist/ui/data-table.cjs +2 -0
  760. package/dist/ui/data-table.cjs.map +1 -0
  761. package/dist/ui/data-table.js +16 -0
  762. package/dist/ui/data-table.js.map +1 -0
  763. package/dist/ui/dialog.cjs +2 -0
  764. package/dist/ui/dialog.cjs.map +1 -0
  765. package/dist/ui/dialog.js +165 -0
  766. package/dist/ui/dialog.js.map +1 -0
  767. package/dist/ui/dropdown-menu.cjs +2 -0
  768. package/dist/ui/dropdown-menu.cjs.map +1 -0
  769. package/dist/ui/dropdown-menu.js +260 -0
  770. package/dist/ui/dropdown-menu.js.map +1 -0
  771. package/dist/ui/field.cjs +2 -0
  772. package/dist/ui/field.cjs.map +1 -0
  773. package/dist/ui/field.js +210 -0
  774. package/dist/ui/field.js.map +1 -0
  775. package/dist/ui/hover-card.cjs +2 -0
  776. package/dist/ui/hover-card.cjs.map +1 -0
  777. package/dist/ui/hover-card.js +39 -0
  778. package/dist/ui/hover-card.js.map +1 -0
  779. package/dist/ui/input-group.cjs +2 -0
  780. package/dist/ui/input-group.cjs.map +1 -0
  781. package/dist/ui/input-group.js +145 -0
  782. package/dist/ui/input-group.js.map +1 -0
  783. package/dist/ui/input.cjs +2 -0
  784. package/dist/ui/input.cjs.map +1 -0
  785. package/dist/ui/input.js +20 -0
  786. package/dist/ui/input.js.map +1 -0
  787. package/dist/ui/item.cjs +2 -0
  788. package/dist/ui/item.cjs.map +1 -0
  789. package/dist/ui/item.js +199 -0
  790. package/dist/ui/item.js.map +1 -0
  791. package/dist/ui/kbd.cjs +2 -0
  792. package/dist/ui/kbd.cjs.map +1 -0
  793. package/dist/ui/kbd.js +30 -0
  794. package/dist/ui/kbd.js.map +1 -0
  795. package/dist/ui/label.cjs +2 -0
  796. package/dist/ui/label.cjs.map +1 -0
  797. package/dist/ui/label.js +23 -0
  798. package/dist/ui/label.js.map +1 -0
  799. package/dist/ui/menubar.cjs +2 -0
  800. package/dist/ui/menubar.cjs.map +1 -0
  801. package/dist/ui/menubar.js +256 -0
  802. package/dist/ui/menubar.js.map +1 -0
  803. package/dist/ui/navigation-menu.cjs +2 -0
  804. package/dist/ui/navigation-menu.cjs.map +1 -0
  805. package/dist/ui/navigation-menu.js +164 -0
  806. package/dist/ui/navigation-menu.js.map +1 -0
  807. package/dist/ui/popover.cjs +2 -0
  808. package/dist/ui/popover.cjs.map +1 -0
  809. package/dist/ui/popover.js +45 -0
  810. package/dist/ui/popover.js.map +1 -0
  811. package/dist/ui/radio-group.cjs +2 -0
  812. package/dist/ui/radio-group.cjs.map +1 -0
  813. package/dist/ui/radio-group.js +45 -0
  814. package/dist/ui/radio-group.js.map +1 -0
  815. package/dist/ui/resizable.cjs +2 -0
  816. package/dist/ui/resizable.cjs.map +1 -0
  817. package/dist/ui/resizable.js +58 -0
  818. package/dist/ui/resizable.js.map +1 -0
  819. package/dist/ui/scroll-area.cjs +2 -0
  820. package/dist/ui/scroll-area.cjs.map +1 -0
  821. package/dist/ui/scroll-area.js +61 -0
  822. package/dist/ui/scroll-area.js.map +1 -0
  823. package/dist/ui/select.cjs +2 -0
  824. package/dist/ui/select.cjs.map +1 -0
  825. package/dist/ui/select.js +184 -0
  826. package/dist/ui/select.js.map +1 -0
  827. package/dist/ui/separator.cjs +2 -0
  828. package/dist/ui/separator.cjs.map +1 -0
  829. package/dist/ui/separator.js +27 -0
  830. package/dist/ui/separator.js.map +1 -0
  831. package/dist/ui/sheet.cjs +2 -0
  832. package/dist/ui/sheet.cjs.map +1 -0
  833. package/dist/ui/sheet.js +137 -0
  834. package/dist/ui/sheet.js.map +1 -0
  835. package/dist/ui/sidebar.cjs +2 -0
  836. package/dist/ui/sidebar.cjs.map +1 -0
  837. package/dist/ui/sidebar.js +579 -0
  838. package/dist/ui/sidebar.js.map +1 -0
  839. package/dist/ui/skeleton.cjs +2 -0
  840. package/dist/ui/skeleton.cjs.map +1 -0
  841. package/dist/ui/skeleton.js +24 -0
  842. package/dist/ui/skeleton.js.map +1 -0
  843. package/dist/ui/slider.cjs +2 -0
  844. package/dist/ui/slider.cjs.map +1 -0
  845. package/dist/ui/slider.js +61 -0
  846. package/dist/ui/slider.js.map +1 -0
  847. package/dist/ui/sonner.cjs +2 -0
  848. package/dist/ui/sonner.cjs.map +1 -0
  849. package/dist/ui/sonner.js +52 -0
  850. package/dist/ui/sonner.js.map +1 -0
  851. package/dist/ui/spinner.cjs +2 -0
  852. package/dist/ui/spinner.cjs.map +1 -0
  853. package/dist/ui/spinner.js +39 -0
  854. package/dist/ui/spinner.js.map +1 -0
  855. package/dist/ui/switch.cjs +2 -0
  856. package/dist/ui/switch.cjs.map +1 -0
  857. package/dist/ui/switch.js +32 -0
  858. package/dist/ui/switch.js.map +1 -0
  859. package/dist/ui/table.cjs +2 -0
  860. package/dist/ui/table.cjs.map +1 -0
  861. package/dist/ui/table.js +153 -0
  862. package/dist/ui/table.js.map +1 -0
  863. package/dist/ui/tabs.cjs +2 -0
  864. package/dist/ui/tabs.cjs.map +1 -0
  865. package/dist/ui/tabs.js +92 -0
  866. package/dist/ui/tabs.js.map +1 -0
  867. package/dist/ui/tetra-molecule-icon.cjs +2 -0
  868. package/dist/ui/tetra-molecule-icon.cjs.map +1 -0
  869. package/dist/ui/tetra-molecule-icon.js +50 -0
  870. package/dist/ui/tetra-molecule-icon.js.map +1 -0
  871. package/dist/ui/tetrascience-icon.cjs +2 -0
  872. package/dist/ui/tetrascience-icon.cjs.map +1 -0
  873. package/dist/ui/tetrascience-icon.js +47 -0
  874. package/dist/ui/tetrascience-icon.js.map +1 -0
  875. package/dist/ui/textarea.cjs +2 -0
  876. package/dist/ui/textarea.cjs.map +1 -0
  877. package/dist/ui/textarea.js +19 -0
  878. package/dist/ui/textarea.js.map +1 -0
  879. package/dist/ui/toggle-group.cjs +2 -0
  880. package/dist/ui/toggle-group.cjs.map +1 -0
  881. package/dist/ui/toggle-group.js +81 -0
  882. package/dist/ui/toggle-group.js.map +1 -0
  883. package/dist/ui/toggle.cjs +2 -0
  884. package/dist/ui/toggle.cjs.map +1 -0
  885. package/dist/ui/toggle.js +44 -0
  886. package/dist/ui/toggle.js.map +1 -0
  887. package/dist/ui/tooltip.cjs +2 -0
  888. package/dist/ui/tooltip.cjs.map +1 -0
  889. package/dist/ui/tooltip.js +56 -0
  890. package/dist/ui/tooltip.js.map +1 -0
  891. package/dist/ui/tree.cjs +2 -0
  892. package/dist/ui/tree.cjs.map +1 -0
  893. package/dist/ui/tree.js +406 -0
  894. package/dist/ui/tree.js.map +1 -0
  895. package/dist/utils/colors.d.ts +50 -0
  896. package/package.json +137 -24
  897. package/dist/athena.d.ts +0 -167
  898. package/dist/components/ai/attachments.cjs +0 -2
  899. package/dist/components/ai/attachments.cjs.map +0 -1
  900. package/dist/components/ai/attachments.js +0 -224
  901. package/dist/components/ai/attachments.js.map +0 -1
  902. package/dist/components/ai/chain-of-thought.cjs +0 -2
  903. package/dist/components/ai/chain-of-thought.cjs.map +0 -1
  904. package/dist/components/ai/chain-of-thought.js +0 -145
  905. package/dist/components/ai/chain-of-thought.js.map +0 -1
  906. package/dist/components/ai/confirmation.cjs +0 -2
  907. package/dist/components/ai/confirmation.cjs.map +0 -1
  908. package/dist/components/ai/confirmation.js +0 -109
  909. package/dist/components/ai/confirmation.js.map +0 -1
  910. package/dist/components/ai/context.cjs +0 -2
  911. package/dist/components/ai/context.cjs.map +0 -1
  912. package/dist/components/ai/context.js +0 -266
  913. package/dist/components/ai/context.js.map +0 -1
  914. package/dist/components/ai/conversation.cjs +0 -4
  915. package/dist/components/ai/conversation.cjs.map +0 -1
  916. package/dist/components/ai/conversation.js +0 -108
  917. package/dist/components/ai/conversation.js.map +0 -1
  918. package/dist/components/ai/inline-citation.cjs +0 -2
  919. package/dist/components/ai/inline-citation.cjs.map +0 -1
  920. package/dist/components/ai/inline-citation.js +0 -182
  921. package/dist/components/ai/inline-citation.js.map +0 -1
  922. package/dist/components/ai/message.cjs +0 -2
  923. package/dist/components/ai/message.cjs.map +0 -1
  924. package/dist/components/ai/message.js +0 -237
  925. package/dist/components/ai/message.js.map +0 -1
  926. package/dist/components/ai/model-selector.cjs +0 -2
  927. package/dist/components/ai/model-selector.cjs.map +0 -1
  928. package/dist/components/ai/model-selector.js +0 -77
  929. package/dist/components/ai/model-selector.js.map +0 -1
  930. package/dist/components/ai/prompt-input.cjs +0 -2
  931. package/dist/components/ai/prompt-input.cjs.map +0 -1
  932. package/dist/components/ai/prompt-input.js +0 -774
  933. package/dist/components/ai/prompt-input.js.map +0 -1
  934. package/dist/components/ai/queue.cjs +0 -2
  935. package/dist/components/ai/queue.cjs.map +0 -1
  936. package/dist/components/ai/queue.js +0 -209
  937. package/dist/components/ai/queue.js.map +0 -1
  938. package/dist/components/ai/reasoning.cjs +0 -2
  939. package/dist/components/ai/reasoning.cjs.map +0 -1
  940. package/dist/components/ai/reasoning.js +0 -129
  941. package/dist/components/ai/reasoning.js.map +0 -1
  942. package/dist/components/ai/shimmer.cjs +0 -2
  943. package/dist/components/ai/shimmer.cjs.map +0 -1
  944. package/dist/components/ai/shimmer.js +0 -49
  945. package/dist/components/ai/shimmer.js.map +0 -1
  946. package/dist/components/ai/sources.cjs +0 -2
  947. package/dist/components/ai/sources.cjs.map +0 -1
  948. package/dist/components/ai/sources.js +0 -54
  949. package/dist/components/ai/sources.js.map +0 -1
  950. package/dist/components/ai/speech-input.cjs +0 -2
  951. package/dist/components/ai/speech-input.cjs.map +0 -1
  952. package/dist/components/ai/speech-input.js +0 -123
  953. package/dist/components/ai/speech-input.js.map +0 -1
  954. package/dist/components/ai/stream-status.cjs +0 -2
  955. package/dist/components/ai/stream-status.cjs.map +0 -1
  956. package/dist/components/ai/stream-status.js +0 -106
  957. package/dist/components/ai/stream-status.js.map +0 -1
  958. package/dist/components/ai/suggestion.cjs +0 -2
  959. package/dist/components/ai/suggestion.cjs.map +0 -1
  960. package/dist/components/ai/suggestion.js +0 -38
  961. package/dist/components/ai/suggestion.js.map +0 -1
  962. package/dist/components/ai/task.cjs +0 -2
  963. package/dist/components/ai/task.cjs.map +0 -1
  964. package/dist/components/ai/task.js +0 -94
  965. package/dist/components/ai/task.js.map +0 -1
  966. package/dist/components/ai/tool.cjs +0 -2
  967. package/dist/components/ai/tool.cjs.map +0 -1
  968. package/dist/components/ai/tool.js +0 -143
  969. package/dist/components/ai/tool.js.map +0 -1
  970. package/dist/components/charts/AreaGraph/AreaGraph.cjs +0 -2
  971. package/dist/components/charts/AreaGraph/AreaGraph.cjs.map +0 -1
  972. package/dist/components/charts/AreaGraph/AreaGraph.js +0 -271
  973. package/dist/components/charts/AreaGraph/AreaGraph.js.map +0 -1
  974. package/dist/components/charts/BarGraph/BarGraph.cjs +0 -2
  975. package/dist/components/charts/BarGraph/BarGraph.cjs.map +0 -1
  976. package/dist/components/charts/BarGraph/BarGraph.js +0 -220
  977. package/dist/components/charts/BarGraph/BarGraph.js.map +0 -1
  978. package/dist/components/charts/Boxplot/Boxplot.cjs +0 -2
  979. package/dist/components/charts/Boxplot/Boxplot.cjs.map +0 -1
  980. package/dist/components/charts/Boxplot/Boxplot.js +0 -209
  981. package/dist/components/charts/Boxplot/Boxplot.js.map +0 -1
  982. package/dist/components/charts/ChromatogramChart/ChromatogramChart.cjs +0 -2
  983. package/dist/components/charts/ChromatogramChart/ChromatogramChart.cjs.map +0 -1
  984. package/dist/components/charts/ChromatogramChart/ChromatogramChart.js +0 -227
  985. package/dist/components/charts/ChromatogramChart/ChromatogramChart.js.map +0 -1
  986. package/dist/components/charts/ChromatogramChart/annotations.cjs +0 -2
  987. package/dist/components/charts/ChromatogramChart/annotations.cjs.map +0 -1
  988. package/dist/components/charts/ChromatogramChart/annotations.js +0 -73
  989. package/dist/components/charts/ChromatogramChart/annotations.js.map +0 -1
  990. package/dist/components/charts/ChromatogramChart/boundaryMarkers.cjs +0 -2
  991. package/dist/components/charts/ChromatogramChart/boundaryMarkers.cjs.map +0 -1
  992. package/dist/components/charts/ChromatogramChart/boundaryMarkers.js +0 -34
  993. package/dist/components/charts/ChromatogramChart/boundaryMarkers.js.map +0 -1
  994. package/dist/components/charts/ChromatogramChart/constants.cjs +0 -2
  995. package/dist/components/charts/ChromatogramChart/constants.cjs.map +0 -1
  996. package/dist/components/charts/ChromatogramChart/constants.js +0 -30
  997. package/dist/components/charts/ChromatogramChart/constants.js.map +0 -1
  998. package/dist/components/charts/ChromatogramChart/dataProcessing.cjs +0 -2
  999. package/dist/components/charts/ChromatogramChart/dataProcessing.cjs.map +0 -1
  1000. package/dist/components/charts/ChromatogramChart/dataProcessing.js +0 -79
  1001. package/dist/components/charts/ChromatogramChart/dataProcessing.js.map +0 -1
  1002. package/dist/components/charts/ChromatogramChart/peakDetection.cjs.map +0 -1
  1003. package/dist/components/charts/ChromatogramChart/peakDetection.js.map +0 -1
  1004. package/dist/components/charts/DotPlot/DotPlot.cjs +0 -2
  1005. package/dist/components/charts/DotPlot/DotPlot.cjs.map +0 -1
  1006. package/dist/components/charts/DotPlot/DotPlot.js +0 -208
  1007. package/dist/components/charts/DotPlot/DotPlot.js.map +0 -1
  1008. package/dist/components/charts/Heatmap/Heatmap.cjs +0 -2
  1009. package/dist/components/charts/Heatmap/Heatmap.cjs.map +0 -1
  1010. package/dist/components/charts/Heatmap/Heatmap.js +0 -67
  1011. package/dist/components/charts/Heatmap/Heatmap.js.map +0 -1
  1012. package/dist/components/charts/LineGraph/LineGraph.cjs +0 -2
  1013. package/dist/components/charts/LineGraph/LineGraph.cjs.map +0 -1
  1014. package/dist/components/charts/LineGraph/LineGraph.js +0 -225
  1015. package/dist/components/charts/LineGraph/LineGraph.js.map +0 -1
  1016. package/dist/components/charts/ScatterGraph/ScatterGraph.cjs +0 -2
  1017. package/dist/components/charts/ScatterGraph/ScatterGraph.cjs.map +0 -1
  1018. package/dist/components/charts/ScatterGraph/ScatterGraph.js +0 -234
  1019. package/dist/components/charts/ScatterGraph/ScatterGraph.js.map +0 -1
  1020. package/dist/components/composed/tdp-link.cjs +0 -2
  1021. package/dist/components/composed/tdp-link.cjs.map +0 -1
  1022. package/dist/components/composed/tdp-link.js +0 -84
  1023. package/dist/components/composed/tdp-link.js.map +0 -1
  1024. package/dist/components/composed/tdp-url.cjs.map +0 -1
  1025. package/dist/components/composed/tdp-url.js.map +0 -1
  1026. package/dist/components/ui/accordion.cjs +0 -2
  1027. package/dist/components/ui/accordion.cjs.map +0 -1
  1028. package/dist/components/ui/accordion.js +0 -83
  1029. package/dist/components/ui/accordion.js.map +0 -1
  1030. package/dist/components/ui/alert-dialog.cjs +0 -2
  1031. package/dist/components/ui/alert-dialog.cjs.map +0 -1
  1032. package/dist/components/ui/alert-dialog.js +0 -181
  1033. package/dist/components/ui/alert-dialog.js.map +0 -1
  1034. package/dist/components/ui/alert.cjs +0 -2
  1035. package/dist/components/ui/alert.cjs.map +0 -1
  1036. package/dist/components/ui/alert.js +0 -81
  1037. package/dist/components/ui/alert.js.map +0 -1
  1038. package/dist/components/ui/aspect-ratio.cjs.map +0 -1
  1039. package/dist/components/ui/aspect-ratio.js.map +0 -1
  1040. package/dist/components/ui/avatar.cjs +0 -2
  1041. package/dist/components/ui/avatar.cjs.map +0 -1
  1042. package/dist/components/ui/avatar.js +0 -107
  1043. package/dist/components/ui/avatar.js.map +0 -1
  1044. package/dist/components/ui/badge.cjs +0 -2
  1045. package/dist/components/ui/badge.cjs.map +0 -1
  1046. package/dist/components/ui/badge.js +0 -47
  1047. package/dist/components/ui/badge.js.map +0 -1
  1048. package/dist/components/ui/banner.cjs +0 -2
  1049. package/dist/components/ui/banner.cjs.map +0 -1
  1050. package/dist/components/ui/banner.js +0 -80
  1051. package/dist/components/ui/banner.js.map +0 -1
  1052. package/dist/components/ui/breadcrumb.cjs +0 -2
  1053. package/dist/components/ui/breadcrumb.cjs.map +0 -1
  1054. package/dist/components/ui/breadcrumb.js +0 -118
  1055. package/dist/components/ui/breadcrumb.js.map +0 -1
  1056. package/dist/components/ui/button-group.cjs +0 -2
  1057. package/dist/components/ui/button-group.cjs.map +0 -1
  1058. package/dist/components/ui/button-group.js +0 -77
  1059. package/dist/components/ui/button-group.js.map +0 -1
  1060. package/dist/components/ui/button.cjs +0 -2
  1061. package/dist/components/ui/button.cjs.map +0 -1
  1062. package/dist/components/ui/button.js +0 -57
  1063. package/dist/components/ui/button.js.map +0 -1
  1064. package/dist/components/ui/calendar.cjs +0 -2
  1065. package/dist/components/ui/calendar.cjs.map +0 -1
  1066. package/dist/components/ui/calendar.js +0 -174
  1067. package/dist/components/ui/calendar.js.map +0 -1
  1068. package/dist/components/ui/card.cjs +0 -2
  1069. package/dist/components/ui/card.cjs.map +0 -1
  1070. package/dist/components/ui/card.js +0 -102
  1071. package/dist/components/ui/card.js.map +0 -1
  1072. package/dist/components/ui/carousel.cjs +0 -2
  1073. package/dist/components/ui/carousel.cjs.map +0 -1
  1074. package/dist/components/ui/carousel.js +0 -179
  1075. package/dist/components/ui/carousel.js.map +0 -1
  1076. package/dist/components/ui/checkbox.cjs +0 -2
  1077. package/dist/components/ui/checkbox.cjs.map +0 -1
  1078. package/dist/components/ui/checkbox.js +0 -35
  1079. package/dist/components/ui/checkbox.js.map +0 -1
  1080. package/dist/components/ui/code-block.cjs +0 -4
  1081. package/dist/components/ui/code-block.cjs.map +0 -1
  1082. package/dist/components/ui/code-block.js +0 -306
  1083. package/dist/components/ui/code-block.js.map +0 -1
  1084. package/dist/components/ui/code-editor.cjs +0 -2
  1085. package/dist/components/ui/code-editor.cjs.map +0 -1
  1086. package/dist/components/ui/code-editor.js +0 -103
  1087. package/dist/components/ui/code-editor.js.map +0 -1
  1088. package/dist/components/ui/collapsible.cjs.map +0 -1
  1089. package/dist/components/ui/collapsible.js.map +0 -1
  1090. package/dist/components/ui/combobox.cjs +0 -2
  1091. package/dist/components/ui/combobox.cjs.map +0 -1
  1092. package/dist/components/ui/combobox.js +0 -281
  1093. package/dist/components/ui/combobox.js.map +0 -1
  1094. package/dist/components/ui/command.cjs +0 -2
  1095. package/dist/components/ui/command.cjs.map +0 -1
  1096. package/dist/components/ui/command.js +0 -174
  1097. package/dist/components/ui/command.js.map +0 -1
  1098. package/dist/components/ui/context-menu.cjs +0 -2
  1099. package/dist/components/ui/context-menu.cjs.map +0 -1
  1100. package/dist/components/ui/context-menu.js +0 -236
  1101. package/dist/components/ui/context-menu.js.map +0 -1
  1102. package/dist/components/ui/dialog.cjs +0 -2
  1103. package/dist/components/ui/dialog.cjs.map +0 -1
  1104. package/dist/components/ui/dialog.js +0 -165
  1105. package/dist/components/ui/dialog.js.map +0 -1
  1106. package/dist/components/ui/drawer.cjs +0 -2
  1107. package/dist/components/ui/drawer.cjs.map +0 -1
  1108. package/dist/components/ui/drawer.js +0 -125
  1109. package/dist/components/ui/drawer.js.map +0 -1
  1110. package/dist/components/ui/dropdown-menu.cjs +0 -2
  1111. package/dist/components/ui/dropdown-menu.cjs.map +0 -1
  1112. package/dist/components/ui/dropdown-menu.js +0 -252
  1113. package/dist/components/ui/dropdown-menu.js.map +0 -1
  1114. package/dist/components/ui/field.cjs +0 -2
  1115. package/dist/components/ui/field.cjs.map +0 -1
  1116. package/dist/components/ui/field.js +0 -210
  1117. package/dist/components/ui/field.js.map +0 -1
  1118. package/dist/components/ui/hover-card.cjs +0 -2
  1119. package/dist/components/ui/hover-card.cjs.map +0 -1
  1120. package/dist/components/ui/hover-card.js +0 -39
  1121. package/dist/components/ui/hover-card.js.map +0 -1
  1122. package/dist/components/ui/input-group.cjs +0 -2
  1123. package/dist/components/ui/input-group.cjs.map +0 -1
  1124. package/dist/components/ui/input-group.js +0 -145
  1125. package/dist/components/ui/input-group.js.map +0 -1
  1126. package/dist/components/ui/input-otp.cjs +0 -2
  1127. package/dist/components/ui/input-otp.cjs.map +0 -1
  1128. package/dist/components/ui/input-otp.js +0 -82
  1129. package/dist/components/ui/input-otp.js.map +0 -1
  1130. package/dist/components/ui/input.cjs +0 -2
  1131. package/dist/components/ui/input.cjs.map +0 -1
  1132. package/dist/components/ui/input.js +0 -20
  1133. package/dist/components/ui/input.js.map +0 -1
  1134. package/dist/components/ui/item.cjs +0 -2
  1135. package/dist/components/ui/item.cjs.map +0 -1
  1136. package/dist/components/ui/item.js +0 -191
  1137. package/dist/components/ui/item.js.map +0 -1
  1138. package/dist/components/ui/kbd.cjs +0 -2
  1139. package/dist/components/ui/kbd.cjs.map +0 -1
  1140. package/dist/components/ui/kbd.js +0 -30
  1141. package/dist/components/ui/kbd.js.map +0 -1
  1142. package/dist/components/ui/label.cjs +0 -2
  1143. package/dist/components/ui/label.cjs.map +0 -1
  1144. package/dist/components/ui/label.js +0 -23
  1145. package/dist/components/ui/label.js.map +0 -1
  1146. package/dist/components/ui/menubar.cjs +0 -2
  1147. package/dist/components/ui/menubar.cjs.map +0 -1
  1148. package/dist/components/ui/menubar.js +0 -256
  1149. package/dist/components/ui/menubar.js.map +0 -1
  1150. package/dist/components/ui/navigation-menu.cjs +0 -2
  1151. package/dist/components/ui/navigation-menu.cjs.map +0 -1
  1152. package/dist/components/ui/navigation-menu.js +0 -164
  1153. package/dist/components/ui/navigation-menu.js.map +0 -1
  1154. package/dist/components/ui/popover.cjs +0 -2
  1155. package/dist/components/ui/popover.cjs.map +0 -1
  1156. package/dist/components/ui/popover.js +0 -45
  1157. package/dist/components/ui/popover.js.map +0 -1
  1158. package/dist/components/ui/radio-group.cjs +0 -2
  1159. package/dist/components/ui/radio-group.cjs.map +0 -1
  1160. package/dist/components/ui/radio-group.js +0 -45
  1161. package/dist/components/ui/radio-group.js.map +0 -1
  1162. package/dist/components/ui/resizable.cjs +0 -2
  1163. package/dist/components/ui/resizable.cjs.map +0 -1
  1164. package/dist/components/ui/resizable.js +0 -58
  1165. package/dist/components/ui/resizable.js.map +0 -1
  1166. package/dist/components/ui/scroll-area.cjs +0 -2
  1167. package/dist/components/ui/scroll-area.cjs.map +0 -1
  1168. package/dist/components/ui/scroll-area.js +0 -60
  1169. package/dist/components/ui/scroll-area.js.map +0 -1
  1170. package/dist/components/ui/select.cjs +0 -2
  1171. package/dist/components/ui/select.cjs.map +0 -1
  1172. package/dist/components/ui/select.js +0 -184
  1173. package/dist/components/ui/select.js.map +0 -1
  1174. package/dist/components/ui/separator.cjs +0 -2
  1175. package/dist/components/ui/separator.cjs.map +0 -1
  1176. package/dist/components/ui/separator.js +0 -27
  1177. package/dist/components/ui/separator.js.map +0 -1
  1178. package/dist/components/ui/sheet.cjs +0 -2
  1179. package/dist/components/ui/sheet.cjs.map +0 -1
  1180. package/dist/components/ui/sheet.js +0 -137
  1181. package/dist/components/ui/sheet.js.map +0 -1
  1182. package/dist/components/ui/sidebar.cjs +0 -2
  1183. package/dist/components/ui/sidebar.cjs.map +0 -1
  1184. package/dist/components/ui/sidebar.js +0 -579
  1185. package/dist/components/ui/sidebar.js.map +0 -1
  1186. package/dist/components/ui/skeleton.cjs +0 -2
  1187. package/dist/components/ui/skeleton.cjs.map +0 -1
  1188. package/dist/components/ui/skeleton.js +0 -24
  1189. package/dist/components/ui/skeleton.js.map +0 -1
  1190. package/dist/components/ui/slider.cjs +0 -2
  1191. package/dist/components/ui/slider.cjs.map +0 -1
  1192. package/dist/components/ui/slider.js +0 -60
  1193. package/dist/components/ui/slider.js.map +0 -1
  1194. package/dist/components/ui/sonner.cjs +0 -2
  1195. package/dist/components/ui/sonner.cjs.map +0 -1
  1196. package/dist/components/ui/sonner.js +0 -37
  1197. package/dist/components/ui/sonner.js.map +0 -1
  1198. package/dist/components/ui/spinner.cjs +0 -2
  1199. package/dist/components/ui/spinner.cjs.map +0 -1
  1200. package/dist/components/ui/spinner.js +0 -39
  1201. package/dist/components/ui/spinner.js.map +0 -1
  1202. package/dist/components/ui/switch.cjs +0 -2
  1203. package/dist/components/ui/switch.cjs.map +0 -1
  1204. package/dist/components/ui/switch.js +0 -32
  1205. package/dist/components/ui/switch.js.map +0 -1
  1206. package/dist/components/ui/table.cjs +0 -2
  1207. package/dist/components/ui/table.cjs.map +0 -1
  1208. package/dist/components/ui/table.js +0 -152
  1209. package/dist/components/ui/table.js.map +0 -1
  1210. package/dist/components/ui/tabs.cjs +0 -2
  1211. package/dist/components/ui/tabs.cjs.map +0 -1
  1212. package/dist/components/ui/tabs.js +0 -92
  1213. package/dist/components/ui/tabs.js.map +0 -1
  1214. package/dist/components/ui/tetrascience-icon.cjs +0 -2
  1215. package/dist/components/ui/tetrascience-icon.cjs.map +0 -1
  1216. package/dist/components/ui/tetrascience-icon.js +0 -46
  1217. package/dist/components/ui/tetrascience-icon.js.map +0 -1
  1218. package/dist/components/ui/textarea.cjs +0 -2
  1219. package/dist/components/ui/textarea.cjs.map +0 -1
  1220. package/dist/components/ui/textarea.js +0 -19
  1221. package/dist/components/ui/textarea.js.map +0 -1
  1222. package/dist/components/ui/toggle-group.cjs +0 -2
  1223. package/dist/components/ui/toggle-group.cjs.map +0 -1
  1224. package/dist/components/ui/toggle-group.js +0 -77
  1225. package/dist/components/ui/toggle-group.js.map +0 -1
  1226. package/dist/components/ui/toggle.cjs +0 -2
  1227. package/dist/components/ui/toggle.cjs.map +0 -1
  1228. package/dist/components/ui/toggle.js +0 -44
  1229. package/dist/components/ui/toggle.js.map +0 -1
  1230. package/dist/components/ui/tooltip.cjs +0 -2
  1231. package/dist/components/ui/tooltip.cjs.map +0 -1
  1232. package/dist/components/ui/tooltip.js +0 -56
  1233. package/dist/components/ui/tooltip.js.map +0 -1
  1234. package/dist/databricks.d.ts +0 -129
  1235. package/dist/providers/athena.d.ts +0 -9
  1236. package/dist/providers/databricks.d.ts +0 -9
  1237. package/dist/providers/snowflake.d.ts +0 -9
  1238. package/dist/snowflake.d.ts +0 -125
  1239. /package/dist/components/charts/{ChromatogramChart → Chromatogram}/peakDetection.cjs +0 -0
  1240. /package/dist/components/charts/{ChromatogramChart → Chromatogram}/peakDetection.js +0 -0
  1241. /package/dist/{components/composed → composed}/tdp-url.cjs +0 -0
  1242. /package/dist/{components/composed → composed}/tdp-url.js +0 -0
  1243. /package/dist/{components/ui → ui}/aspect-ratio.cjs +0 -0
  1244. /package/dist/{components/ui → ui}/aspect-ratio.js +0 -0
  1245. /package/dist/{components/ui → ui}/collapsible.cjs +0 -0
  1246. /package/dist/{components/ui → ui}/collapsible.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.cjs","sources":["../../src/components/ui/tree.tsx"],"sourcesContent":["import { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { ChevronRightIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"./tooltip\";\n\nimport { cn } from \"@/lib/utils\";\n\n/* -------------------------------------------------------------------------------------------------\n * Contexts\n *\n * The tree is intentionally headless about *data*: it never fetches, never owns a node array, and\n * derives every ARIA attribute from where a `TreeItem` sits in the React tree. Four contexts carry\n * that positional information down:\n *\n * TreeContext — per-tree state (expansion, selection, roving focus) and the key handler\n * TreeLevelContext — the current depth; `Tree` seeds 1, each `TreeItemGroup` increments\n * TreeIndexContext — `aria-posinset` / `aria-setsize`, injected by whichever container renders\n * the item (`Tree` for roots, `TreeItemGroup` for children)\n * TreeItemContext — the nearest enclosing item, read by `TreeItemLabel` / `TreeItemGroup`\n * -----------------------------------------------------------------------------------------------*/\n\ntype TreeContextValue = {\n expandedIds: Set<string>;\n setExpanded: (id: string, expanded: boolean) => void;\n selectedId: string | null;\n /**\n * The one activation path: selection, optional expansion and `onActivate`, shared by `Enter` and\n * by clicking a node so the two never diverge.\n */\n activateItem: (id: string, hasChildren: boolean, expanded: boolean) => void;\n focusedId: string | null;\n setFocusedId: (id: string) => void;\n expandOnSelect: boolean;\n guides: TreeGuides;\n /** Attached to each `TreeItem` rather than to the tree root, so the node is its own key target. */\n onItemKeyDown: (event: React.KeyboardEvent<HTMLElement>) => void;\n};\n\nconst TreeContext = React.createContext<TreeContextValue | null>(null);\n\nfunction useTreeContext(component: string) {\n const context = React.useContext(TreeContext);\n if (!context) {\n throw new Error(`\\`${component}\\` must be rendered inside a \\`Tree\\`.`);\n }\n return context;\n}\n\nconst TreeLevelContext = React.createContext(1);\n\ntype TreeIndexContextValue = {\n posinset: number;\n setsize: number;\n /**\n * Position of the last sibling that is itself a branch, or 0 if none are. Connectors only join a\n * folder to its subfolders, so this is where the trunk has to stop — running it to the last child\n * would leave it dangling past any trailing leaf rows.\n */\n lastBranchPos: number;\n};\n\nconst TreeIndexContext = React.createContext<TreeIndexContextValue>({\n posinset: 1,\n setsize: 1,\n lastBranchPos: 0,\n});\n\ntype TreeItemContextValue = {\n id: string;\n labelId: string;\n level: number;\n expanded: boolean;\n hasChildren: boolean;\n selected: boolean;\n disabled: boolean;\n /**\n * Parent levels whose trunk passes through this row. The row draws one vertical segment per\n * entry, so a trunk survives crossing an expanded branch's descendant rows.\n */\n trunkLevels: readonly number[];\n toggle: () => void;\n select: () => void;\n};\n\nconst TreeItemContext = React.createContext<TreeItemContextValue | null>(null);\n\n/** Stable empty set, so inheriting \"no trunks\" doesn't remake the item context every render. */\nconst NO_TRUNKS: readonly number[] = [];\n\nfunction useTreeItemContext(component: string) {\n const context = React.useContext(TreeItemContext);\n if (!context) {\n throw new Error(`\\`${component}\\` must be rendered inside a \\`TreeItem\\`.`);\n }\n return context;\n}\n\n/**\n * Reads the item's position among its siblings and whether it is currently expanded. Exposed for\n * consumers composing their own row content (badges, action buttons, counts) inside a `TreeItem`.\n */\nfunction useTreeItem() {\n return useTreeItemContext(\"useTreeItem\");\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Sibling indexing\n *\n * `aria-setsize` / `aria-posinset` need sibling counts, which only the container knows. Rather than\n * a mount-order registry (two render passes, StrictMode-sensitive, wrong under conditional\n * rendering) each container walks its own children and wraps them in an index provider. Purely\n * positional, so it is correct on the first render and under SSR.\n *\n * Caveat: every valid element child occupies a set slot, so non-item children of a group (a \"Load\n * more\" control, for instance) would be counted. That placement question is deliberately deferred\n * to SW-2542.\n * -----------------------------------------------------------------------------------------------*/\n\nfunction useIndexedTreeChildren(children: React.ReactNode) {\n return React.useMemo(() => {\n const array = React.Children.toArray(children);\n const elements = array.filter(React.isValidElement);\n const setsize = elements.length;\n\n // Which siblings are branches is read off `hasChildren` in the element's own props. A child\n // wrapped in a consumer's own component reads as a leaf, which costs a connector rather than\n // breaking anything — the alternative is a mount-order registry, and the whole point of doing\n // this positionally is to stay correct on the first render.\n const isBranch = (child: React.ReactElement) => (child.props as TreeItemProps)?.hasChildren === true;\n const lastBranchPos = elements.reduce((last, child, index) => (isBranch(child) ? index + 1 : last), 0);\n\n let posinset = 0;\n\n return array.map((child, index) => {\n if (!React.isValidElement(child)) return child;\n posinset += 1;\n return (\n <TreeIndexContext.Provider key={child.key ?? index} value={{ posinset, setsize, lastBranchPos }}>\n {child}\n </TreeIndexContext.Provider>\n );\n });\n }, [children]);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Keyboard navigation\n *\n * Visible-node order is read from the DOM instead of a JS registry: collapsed groups are not\n * rendered at all, so `querySelectorAll('[role=\"treeitem\"]')` in document order *is* the visible\n * node sequence, and ancestor/descendant lookups are one `closest()` call. This keeps the traversal\n * correct for arbitrary consumer markup between the levels.\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_SELECTOR = '[role=\"treeitem\"]';\n\nfunction getVisibleItems(root: HTMLElement | null) {\n if (!root) return [];\n return [...root.querySelectorAll<HTMLElement>(ITEM_SELECTOR)];\n}\n\nfunction moveFocus(element: HTMLElement | null | undefined, setFocusedId: (id: string) => void) {\n const id = element?.dataset.treeItemId;\n if (!element || !id) return;\n setFocusedId(id);\n element.focus();\n}\n\ntype TreeKeyEvent = {\n event: React.KeyboardEvent<HTMLElement>;\n root: HTMLElement;\n /** The `role=\"treeitem\"` element the key was pressed on. */\n current: HTMLElement;\n id: string;\n hasChildren: boolean;\n expanded: boolean;\n disabled: boolean;\n setExpanded: (id: string, expanded: boolean) => void;\n setFocusedId: (id: string) => void;\n activate: (id: string, hasChildren: boolean, expanded: boolean) => void;\n};\n\n/** Moves focus to `element`, if there is one, and claims the key press. */\nfunction navigateTo({ event, setFocusedId }: TreeKeyEvent, element: HTMLElement | null | undefined) {\n event.preventDefault();\n moveFocus(element, setFocusedId);\n}\n\nfunction stepBy(context: TreeKeyEvent, offset: number) {\n const items = getVisibleItems(context.root);\n navigateTo(context, items[items.indexOf(context.current) + offset]);\n}\n\n/**\n * `Space` is deliberately unbound: the WAI-ARIA pattern reserves it for multi-select trees, which\n * are out of scope here but should not be precluded.\n */\nconst TREE_KEY_HANDLERS: Record<string, (context: TreeKeyEvent) => void> = {\n ArrowDown: (context) => stepBy(context, 1),\n ArrowUp: (context) => stepBy(context, -1),\n ArrowRight: (context) => {\n const { event, current, id, hasChildren, expanded, setExpanded } = context;\n if (hasChildren && !expanded) {\n event.preventDefault();\n setExpanded(id, true);\n return;\n }\n if (expanded) navigateTo(context, current.querySelector<HTMLElement>(ITEM_SELECTOR));\n },\n ArrowLeft: (context) => {\n const { event, current, id, expanded, setExpanded } = context;\n if (expanded) {\n event.preventDefault();\n setExpanded(id, false);\n return;\n }\n navigateTo(context, current.parentElement?.closest<HTMLElement>(ITEM_SELECTOR));\n },\n Home: (context) => navigateTo(context, getVisibleItems(context.root)[0]),\n End: (context) => {\n const items = getVisibleItems(context.root);\n navigateTo(context, items[items.length - 1]);\n },\n Enter: (context) => {\n if (context.disabled) return;\n context.event.preventDefault();\n context.activate(context.id, context.hasChildren, context.expanded);\n },\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Tree\n * -----------------------------------------------------------------------------------------------*/\n\ntype TreeGuides = \"none\" | \"hover\" | \"always\";\n\ntype TreeProps = Omit<React.ComponentProps<\"div\">, \"onSelect\"> & {\n /** Expanded node ids (controlled). */\n expandedIds?: Set<string>;\n /** Initially expanded node ids (uncontrolled). */\n defaultExpandedIds?: Set<string>;\n onExpandedChange?: (expandedIds: Set<string>) => void;\n /** Selected node id (controlled). Pass `null` for \"nothing selected\". */\n selectedId?: string | null;\n /** Initially selected node id (uncontrolled). */\n defaultSelectedId?: string | null;\n onSelectedChange?: (selectedId: string) => void;\n /** Fired by `Enter` and by clicking a label — the node's default action. */\n onActivate?: (id: string) => void;\n /** Whether selecting a parent node also toggles its expansion. */\n expandOnSelect?: boolean;\n /**\n * Vertical indent guides joining each level to its parent. `\"hover\"` reveals them while the\n * pointer is anywhere over the tree, which keeps a dense tree quiet at rest but still lets you\n * trace a deep branch; `\"always\"` pins them on; `\"none\"` turns them off.\n */\n guides?: TreeGuides;\n};\n\nfunction Tree({\n className,\n children,\n expandedIds: expandedIdsProp,\n defaultExpandedIds,\n onExpandedChange,\n selectedId: selectedIdProp,\n defaultSelectedId = null,\n onSelectedChange,\n onActivate,\n expandOnSelect = true,\n guides = \"hover\",\n ...props\n}: TreeProps) {\n const treeRef = React.useRef<HTMLDivElement>(null);\n\n const [expandedIds, setExpandedIds] = useControllableState<Set<string>>({\n prop: expandedIdsProp,\n defaultProp: defaultExpandedIds ?? new Set<string>(),\n onChange: onExpandedChange,\n });\n const [selectedId, setSelectedId] = useControllableState<string | null>({\n prop: selectedIdProp,\n defaultProp: defaultSelectedId,\n onChange: (id) => {\n if (id != null) onSelectedChange?.(id);\n },\n });\n const [focusedId, setFocusedId] = React.useState<string | null>(null);\n\n const setExpanded = React.useCallback(\n (id: string, expanded: boolean) => {\n setExpandedIds((current) => {\n const next = new Set(current);\n if (expanded) next.add(id);\n else next.delete(id);\n return next;\n });\n },\n [setExpandedIds],\n );\n\n const activateItem = React.useCallback(\n (activatedId: string, hasChildren: boolean, expanded: boolean) => {\n setSelectedId(activatedId);\n if (expandOnSelect && hasChildren) setExpanded(activatedId, !expanded);\n onActivate?.(activatedId);\n },\n [setSelectedId, expandOnSelect, setExpanded, onActivate],\n );\n\n const handleItemKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLElement>) => {\n const root = treeRef.current;\n const current = (event.target as HTMLElement | null)?.closest<HTMLElement>(ITEM_SELECTOR);\n const id = current?.dataset.treeItemId;\n if (!root || !current || !id || !root.contains(current)) return;\n\n const handler = TREE_KEY_HANDLERS[event.key];\n if (!handler) return;\n\n handler({\n event,\n root,\n current,\n id,\n hasChildren: current.dataset.treeHasChildren === \"true\",\n expanded: current.getAttribute(\"aria-expanded\") === \"true\",\n disabled: current.getAttribute(\"aria-disabled\") === \"true\",\n setExpanded,\n setFocusedId,\n activate: activateItem,\n });\n },\n [setExpanded, activateItem],\n );\n\n const context = React.useMemo<TreeContextValue>(\n () => ({\n expandedIds: expandedIds ?? new Set<string>(),\n setExpanded,\n selectedId: selectedId ?? null,\n activateItem,\n focusedId,\n setFocusedId,\n expandOnSelect,\n guides,\n onItemKeyDown: handleItemKeyDown,\n }),\n [expandedIds, setExpanded, selectedId, activateItem, focusedId, expandOnSelect, guides, handleItemKeyDown],\n );\n\n return (\n <TreeContext.Provider value={context}>\n <TreeLevelContext.Provider value={1}>\n <div\n ref={treeRef}\n data-slot=\"tree\"\n data-guides={guides}\n role=\"tree\"\n tabIndex={-1}\n // `group/tree` is what the `\"hover\"` guide mode hangs off: hovering anywhere in the tree\n // reveals every guide at once, so you can trace a branch without hunting row by row.\n //\n // `--tree-indent` is 1.25rem so that a child's chevron lands exactly on its parent's\n // icon: the icon sits 1.5rem into the content box (chevron 0.875 + gap 0.375 + the\n // 0.25rem lead-in), and the chevron sits at the lead-in, so one step must be\n // 1.5rem - 0.25rem. Indentation, the guide offsets and the elbow reach are all derived\n // from this one value — override it and the connectors follow.\n //\n // `--tree-guide-color` is deliberately *opaque*, via `color-mix`, even though it is meant\n // to look like a 40% tint. Guide segments necessarily overlap — each row's line overshoots\n // into the row above so the two meet across the label's border, and an elbow shares its\n // column with the trunk it branches from. With a semi-transparent colour every overlap\n // composites twice and shows up as a darker stretch of line. Mixing to an opaque value up\n // front makes overlapping draws idempotent, so the tree reads as one uniform hairline.\n className={cn(\n \"group/tree text-foreground flex w-full flex-col text-sm\",\n \"[--tree-indent:1.25rem] [--tree-guide-color:color-mix(in_oklch,var(--muted-foreground)_40%,var(--background))]\",\n className,\n )}\n {...props}\n >\n {/*\n Radix requires a `Tooltip.Provider` above any `Tooltip`, and the labels mount one each\n to reveal truncated text. Providing it here rather than asking consumers to wrap their\n app keeps `Tree` self-contained; nesting inside a consumer's own provider is supported,\n and the longer delay is deliberate — instant tooltips while sweeping the pointer down a\n dense tree are noise.\n */}\n <TooltipProvider delayDuration={500}>\n <TreeItemsContainer>{children}</TreeItemsContainer>\n </TooltipProvider>\n </div>\n </TreeLevelContext.Provider>\n </TreeContext.Provider>\n );\n}\n\nfunction TreeItemsContainer({ children }: { children: React.ReactNode }) {\n return useIndexedTreeChildren(children);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * TreeItem\n * -----------------------------------------------------------------------------------------------*/\n\ntype TreeItemProps = React.ComponentProps<\"div\"> & {\n id: string;\n /**\n * Whether the node can be expanded. Kept explicit rather than inferred from rendered children so\n * a node whose children have not been fetched yet still reports `aria-expanded=\"false\"`.\n */\n hasChildren?: boolean;\n disabled?: boolean;\n};\n\nfunction TreeItem({\n className,\n children,\n id,\n hasChildren = false,\n disabled = false,\n onClick,\n onFocus,\n onKeyDown,\n style,\n ...props\n}: TreeItemProps) {\n const { expandedIds, setExpanded, selectedId, activateItem, focusedId, setFocusedId, onItemKeyDown } =\n useTreeContext(\"TreeItem\");\n const level = React.useContext(TreeLevelContext);\n const { posinset, setsize, lastBranchPos } = React.useContext(TreeIndexContext);\n const labelId = `${React.useId()}-label`;\n\n const expanded = hasChildren && expandedIds.has(id);\n const selected = selectedId === id;\n\n const toggle = React.useCallback(() => {\n if (hasChildren) setExpanded(id, !expanded);\n }, [hasChildren, setExpanded, id, expanded]);\n\n // Routed through the tree's `activateItem` so a click and `Enter` are the same code path —\n // notably, both fire `onActivate`.\n const select = React.useCallback(() => {\n if (disabled) return;\n setFocusedId(id);\n activateItem(id, hasChildren, expanded);\n }, [disabled, setFocusedId, id, activateItem, hasChildren, expanded]);\n\n // Roving tabindex, minimal form: the focused node is the single tab stop, falling back to the\n // first root node before the tree has been entered. SW-2541 extends this (selection-aware entry\n // point, focus retention across collapse and lazy load).\n const tabbable = focusedId ? focusedId === id : level === 1 && posinset === 1;\n\n // Guides are drawn on the row (see `TreeItemLabel`), so a row has to know every ancestor trunk\n // crossing it, not just its own parent's. The set is threaded down the tree: inherit the parent's\n // and add this row's own parent level when a later sibling folder needs the line to continue past\n // this entire subtree.\n const parentItem = React.useContext(TreeItemContext);\n const inheritedTrunkLevels = parentItem?.trunkLevels ?? NO_TRUNKS;\n const trunkLevels = React.useMemo(\n () => (level > 1 && posinset < lastBranchPos ? [...inheritedTrunkLevels, level - 1] : inheritedTrunkLevels),\n [inheritedTrunkLevels, level, posinset, lastBranchPos],\n );\n\n const itemContext = React.useMemo<TreeItemContextValue>(\n () => ({\n id,\n labelId,\n level,\n expanded,\n hasChildren,\n selected,\n disabled,\n trunkLevels,\n toggle,\n select,\n }),\n [id, labelId, level, expanded, hasChildren, selected, disabled, trunkLevels, toggle, select],\n );\n\n return (\n <TreeItemContext.Provider value={itemContext}>\n <div\n // Spread first, for the same reason as `TreeItemLabel`: every ARIA attribute below is\n // maintained by the tree and must not be overridable from props.\n {...props}\n data-slot=\"tree-item\"\n data-tree-item-id={id}\n data-tree-has-children={hasChildren}\n data-state={expanded ? \"expanded\" : \"collapsed\"}\n role=\"treeitem\"\n // The accessible name comes from the label alone. Without this, name-from-content would\n // sweep in every descendant node's text once a branch is expanded.\n aria-labelledby={labelId}\n aria-expanded={hasChildren ? expanded : undefined}\n aria-level={level}\n aria-posinset={posinset}\n aria-setsize={setsize}\n aria-selected={selected}\n aria-disabled={disabled || undefined}\n tabIndex={tabbable ? 0 : -1}\n onKeyDown={(event) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n onItemKeyDown(event);\n }}\n onClick={(event) => {\n onClick?.(event);\n if (event.defaultPrevented) return;\n // Clicks on a descendant node are that node's business — every treeitem in the ancestor\n // chain sees the bubbled event.\n if ((event.target as HTMLElement).closest(ITEM_SELECTOR) !== event.currentTarget) return;\n select();\n }}\n onFocus={(event) => {\n onFocus?.(event);\n if (event.target === event.currentTarget) setFocusedId(id);\n }}\n style={\n {\n // Inherited by the label, which draws the elbow from the same two values.\n \"--tree-guide-left\": `calc(var(--tree-indent) * ${level - 2} + 0.6875rem)`,\n // Stops 0.25rem short of the row's chevron rather than touching it, so the connector\n // reads as pointing at the row instead of welded to the glyph.\n \"--tree-elbow-run\": \"calc(var(--tree-indent) - 0.6875rem)\",\n // Shared by the elbow's corner and by where the same-column trunk picks up, so the two\n // meet exactly instead of overlapping or leaving a gap.\n \"--tree-elbow-radius\": \"0.5rem\",\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"relative outline-none\",\n // Direct-child selectors, deliberately not `group-*/tree-item`: tree items nest, and a\n // group variant matches *any* ancestor, so a focused or selected parent painted its focus\n // ring onto every descendant row. Backgrounds live on the label for the same reason —\n // anything painted here would spread behind the whole subtree.\n \"focus-visible:[&>[data-slot=tree-item-label]]:border-ring focus-visible:[&>[data-slot=tree-item-label]]:shadow-focus\",\n className,\n )}\n >\n {children}\n </div>\n </TreeItemContext.Provider>\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * TreeItemLabel\n * -----------------------------------------------------------------------------------------------*/\n\nconst treeItemLabelVariants = cva(\n \"flex w-full min-w-0 cursor-default items-center gap-1.5 rounded-md pr-2 text-left transition-colors select-none\",\n {\n variants: {\n size: {\n sm: \"h-6 text-xs\",\n default: \"h-7 text-sm\",\n lg: \"h-9 text-sm\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n },\n);\n\ntype TreeItemLabelProps = React.ComponentProps<\"div\"> &\n VariantProps<typeof treeItemLabelVariants> & {\n /**\n * Decorative leading icon, rendered between the chevron and the label text. Hidden from\n * assistive tech — the node's accessible name comes from the label text alone, so anything a\n * screen reader must convey belongs in the text, not here. Swap it on expansion (open/closed\n * folders) by reading `expanded` from `useTreeItem()` inside your own icon component.\n */\n icon?: React.ReactNode;\n /**\n * Right-aligned slot for per-node adornments — a count `Badge`, a `Spinner`, a status dot. It\n * sits inside the label, so its text joins the node's accessible name: a count reads as\n * \"Onboarding 3\", which is usually what you want. Wrap it in `aria-hidden` yourself for purely\n * decorative content such as a spinner.\n */\n trailing?: React.ReactNode;\n };\n\nfunction TreeItemLabel({ className, children, size, style, icon, trailing, ...props }: TreeItemLabelProps) {\n const { labelId, level, expanded, hasChildren, selected, disabled, trunkLevels, toggle } =\n useTreeItemContext(\"TreeItemLabel\");\n const { guides } = useTreeContext(\"TreeItemLabel\");\n\n // The elbow lives on the row because the label element *is* the row, so it can be sized in\n // halves of it — the curve has to land on the row's vertical centre. A connector joins a folder\n // to its subfolders, so only a branch row gets one.\n const showElbow = guides !== \"none\" && level > 1 && hasChildren;\n const showGuides = guides !== \"none\" && (showElbow || trunkLevels.length > 0);\n\n const textRef = React.useRef<HTMLSpanElement>(null);\n const [tooltipOpen, setTooltipOpen] = React.useState(false);\n\n // Truncation is measured when the tooltip would open, not tracked continuously: a\n // `ResizeObserver` per row would cost every row in a large tree for a hint almost none of them\n // need, and this answers the same question at the only moment it matters.\n const handleTooltipOpenChange = (next: boolean) => {\n const text = textRef.current;\n setTooltipOpen(next && !!text && text.scrollWidth > text.clientWidth);\n };\n\n return (\n <div\n // Spread first: the derived ARIA wiring below is authoritative. A consumer-supplied `id` would\n // otherwise break the `TreeItem` → `aria-labelledby` link that names the node.\n {...props}\n id={labelId}\n data-slot=\"tree-item-label\"\n // The row is a passive label, not a control: the parent `role=\"treeitem\"` owns focus, click\n // handling, keyboard handling and the accessible name, so a nested control would fight it.\n // `--tree-guide-left` / `--tree-elbow-run` are inherited from the `TreeItem`.\n style={{ paddingInlineStart: `calc(var(--tree-indent) * ${level - 1} + 0.25rem)`, ...style }}\n className={cn(\n treeItemLabelVariants({ size }),\n \"relative border border-transparent\",\n // Only selection paints a background — an open folder is already marked by its rotated\n // chevron, open-folder icon and the connectors running down from it.\n selected ? \"bg-accent text-accent-foreground font-medium\" : \"hover:bg-muted\",\n // From this node's own state, not an ancestor selector: `aria-disabled` is per-node, so a\n // disabled folder must not dim the contents underneath it.\n disabled && \"pointer-events-none opacity-50\",\n className,\n )}\n >\n {showGuides ? (\n // One absolutely-positioned layer owns every guide on this row, fixing two bugs at once.\n //\n // Paint order: the trunk used to be drawn by the `TreeItem`, an *ancestor* of every\n // descendant row. Those rows are positioned and paint an opaque hover/selected background\n // over anything an ancestor drew, so the trunk vanished behind whichever row you pointed\n // at. Drawn here it belongs to the row's own box, so it paints above that row's background\n // — and no sibling row can cover it, because every row draws its own segments.\n //\n // One coordinate system: `left` resolves against the nearest positioned ancestor's\n // *padding* box. The label carries `border border-transparent` for its focus ring while the\n // `TreeItem` carries none, so one `--tree-guide-left` landed 1px apart on the two elements\n // and the elbow/trunk overlap read as a 2px line. Both now share this container.\n <span\n data-slot=\"tree-item-guides\"\n aria-hidden=\"true\"\n className={cn(\n \"pointer-events-none absolute inset-0\",\n // The fade lives on the container, not on each line. Opacity on the parent renders the\n // whole layer into one buffer and composites it once, so a seam between two segments\n // can never double-expose mid-transition.\n guides === \"hover\" &&\n \"opacity-0 transition-opacity group-hover/tree:opacity-100 motion-reduce:transition-none\",\n )}\n >\n {trunkLevels.map((trunkLevel) => (\n <span\n key={trunkLevel}\n data-slot=\"tree-item-guide-trunk\"\n style={{ left: `calc(var(--tree-indent) * ${trunkLevel - 1} + 0.6875rem)` }}\n // Overshoots upward by half a chevron to cross the label's border into the row above,\n // so consecutive rows tile into one unbroken line.\n className=\"absolute top-[-0.4375rem] bottom-0 w-0 border-l border-[var(--tree-guide-color)]\"\n />\n ))}\n {showElbow ? (\n // Down the guide line, then a rounded turn right, stopping just short of this row's\n // chevron. Starts half a chevron above the row so the line emerges from under the\n // parent's chevron instead of leaving a half-row gap.\n <span\n data-slot=\"tree-item-guide-elbow\"\n className={cn(\n \"absolute top-[-0.4375rem] left-[var(--tree-guide-left)] border-[var(--tree-guide-color)]\",\n \"h-[calc(50%+0.4375rem)] w-[var(--tree-elbow-run)] border-b border-l\",\n \"rounded-bl-[var(--tree-elbow-radius)]\",\n )}\n />\n ) : null}\n </span>\n ) : null}\n {hasChildren ? (\n // A pointer-only affordance, deliberately not a `<button>`: expansion is reachable from the\n // keyboard through the parent treeitem's arrow keys, so this stays non-focusable. A focusable\n // element hidden from assistive tech is a contradiction, and inside a single-tab-stop widget\n // it would also be a second focus stop reachable by pointer.\n <span\n data-slot=\"tree-item-indicator\"\n aria-hidden=\"true\"\n onClick={(event) => {\n // Toggle from the chevron alone, without changing the selection.\n event.stopPropagation();\n toggle();\n }}\n className=\"flex size-3.5 shrink-0 items-center justify-center text-muted-foreground\"\n >\n <ChevronRightIcon className={cn(\"size-3.5 transition-transform\", expanded && \"rotate-90\")} />\n </span>\n ) : (\n <span data-slot=\"tree-item-indicator-spacer\" aria-hidden=\"true\" className=\"size-3.5 shrink-0\" />\n )}\n {icon ? (\n <span\n data-slot=\"tree-item-icon\"\n aria-hidden=\"true\"\n className={cn(\n \"flex size-4 shrink-0 items-center justify-center [&_svg]:size-4 [&_svg]:shrink-0\",\n selected ? \"text-accent-foreground\" : \"text-muted-foreground\",\n )}\n >\n {icon}\n </span>\n ) : null}\n <Tooltip open={tooltipOpen} onOpenChange={handleTooltipOpenChange}>\n <TooltipTrigger asChild>\n <span ref={textRef} className=\"min-w-0 flex-1 truncate\">\n {children}\n </span>\n </TooltipTrigger>\n {/*\n A purely visual repair for clipped text. The trigger is a plain `span`, so it never takes\n focus and this only ever opens on hover — and the node's accessible name already carries\n the label in full, so a screen reader is not relying on it.\n */}\n <TooltipContent>{children}</TooltipContent>\n </Tooltip>\n {trailing ? (\n <span\n data-slot=\"tree-item-trailing\"\n className=\"ml-auto flex shrink-0 items-center gap-1 [&_svg]:size-3.5\"\n >\n {trailing}\n </span>\n ) : null}\n </div>\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * TreeItemGroup\n * -----------------------------------------------------------------------------------------------*/\n\nfunction TreeItemGroup({ className, children, ...props }: React.ComponentProps<\"div\">) {\n const { expanded, level } = useTreeItemContext(\"TreeItemGroup\");\n\n // Not rendered while collapsed: keeps collapsed subtrees out of the accessibility tree entirely,\n // and makes DOM order equal visible order for keyboard traversal.\n if (!expanded) return null;\n\n return (\n <TreeLevelContext.Provider value={level + 1}>\n <div {...props} data-slot=\"tree-item-group\" role=\"group\" className={cn(\"flex flex-col\", className)}>\n <TreeItemsContainer>{children}</TreeItemsContainer>\n </div>\n </TreeLevelContext.Provider>\n );\n}\n\nexport {\n Tree,\n TreeItem,\n TreeItemGroup,\n TreeItemLabel,\n treeItemLabelVariants,\n useTreeItem,\n type TreeGuides,\n type TreeItemLabelProps,\n type TreeItemProps,\n type TreeProps,\n};\n"],"names":["TreeContext","React","useTreeContext","component","context","TreeLevelContext","TreeIndexContext","TreeItemContext","NO_TRUNKS","useTreeItemContext","useTreeItem","useIndexedTreeChildren","children","array","elements","setsize","isBranch","child","lastBranchPos","last","index","posinset","jsx","ITEM_SELECTOR","getVisibleItems","root","moveFocus","element","setFocusedId","id","navigateTo","event","stepBy","offset","items","TREE_KEY_HANDLERS","current","hasChildren","expanded","setExpanded","Tree","className","expandedIdsProp","defaultExpandedIds","onExpandedChange","selectedIdProp","defaultSelectedId","onSelectedChange","onActivate","expandOnSelect","guides","props","treeRef","expandedIds","setExpandedIds","useControllableState","selectedId","setSelectedId","focusedId","next","activateItem","activatedId","handleItemKeyDown","handler","cn","TooltipProvider","TreeItemsContainer","TreeItem","disabled","onClick","onFocus","onKeyDown","style","onItemKeyDown","level","labelId","selected","toggle","select","tabbable","inheritedTrunkLevels","trunkLevels","itemContext","treeItemLabelVariants","cva","TreeItemLabel","size","icon","trailing","showElbow","showGuides","textRef","tooltipOpen","setTooltipOpen","handleTooltipOpenChange","text","jsxs","trunkLevel","ChevronRightIcon","Tooltip","TooltipTrigger","TooltipContent","TreeItemGroup"],"mappings":"+kBAwCMA,EAAcC,EAAM,cAAuC,IAAI,EAErE,SAASC,EAAeC,EAAmB,CACzC,MAAMC,EAAUH,EAAM,WAAWD,CAAW,EAC5C,GAAI,CAACI,EACH,MAAM,IAAI,MAAM,KAAKD,CAAS,wCAAwC,EAExE,OAAOC,CACT,CAEA,MAAMC,EAAmBJ,EAAM,cAAc,CAAC,EAaxCK,EAAmBL,EAAM,cAAqC,CAClE,SAAU,EACV,QAAS,EACT,cAAe,CACjB,CAAC,EAmBKM,EAAkBN,EAAM,cAA2C,IAAI,EAGvEO,EAA+B,CAAA,EAErC,SAASC,EAAmBN,EAAmB,CAC7C,MAAMC,EAAUH,EAAM,WAAWM,CAAe,EAChD,GAAI,CAACH,EACH,MAAM,IAAI,MAAM,KAAKD,CAAS,4CAA4C,EAE5E,OAAOC,CACT,CAMA,SAASM,IAAc,CACrB,OAAOD,EAAmB,aAAa,CACzC,CAeA,SAASE,GAAuBC,EAA2B,CACzD,OAAOX,EAAM,QAAQ,IAAM,CACzB,MAAMY,EAAQZ,EAAM,SAAS,QAAQW,CAAQ,EACvCE,EAAWD,EAAM,OAAOZ,EAAM,cAAc,EAC5Cc,EAAUD,EAAS,OAMnBE,EAAYC,GAA+BA,EAAM,OAAyB,cAAgB,GAC1FC,EAAgBJ,EAAS,OAAO,CAACK,EAAMF,EAAOG,IAAWJ,EAASC,CAAK,EAAIG,EAAQ,EAAID,EAAO,CAAC,EAErG,IAAIE,EAAW,EAEf,OAAOR,EAAM,IAAI,CAACI,EAAOG,IAClBnB,EAAM,eAAegB,CAAK,GAC/BI,GAAY,EAEVC,EAAAA,IAAChB,EAAiB,SAAjB,CAAmD,MAAO,CAAE,SAAAe,EAAU,QAAAN,EAAS,cAAAG,CAAA,EAC7E,SAAAD,CAAA,EAD6BA,EAAM,KAAOG,CAE7C,GALuCH,CAO1C,CACH,EAAG,CAACL,CAAQ,CAAC,CACf,CAWA,MAAMW,EAAgB,oBAEtB,SAASC,EAAgBC,EAA0B,CACjD,OAAKA,EACE,CAAC,GAAGA,EAAK,iBAA8BF,CAAa,CAAC,EAD1C,CAAA,CAEpB,CAEA,SAASG,GAAUC,EAAyCC,EAAoC,CAC9F,MAAMC,EAAKF,GAAS,QAAQ,WACxB,CAACA,GAAW,CAACE,IACjBD,EAAaC,CAAE,EACfF,EAAQ,MAAA,EACV,CAiBA,SAASG,EAAW,CAAE,MAAAC,EAAO,aAAAH,CAAA,EAA8BD,EAAyC,CAClGI,EAAM,eAAA,EACNL,GAAUC,EAASC,CAAY,CACjC,CAEA,SAASI,EAAO5B,EAAuB6B,EAAgB,CACrD,MAAMC,EAAQV,EAAgBpB,EAAQ,IAAI,EAC1C0B,EAAW1B,EAAS8B,EAAMA,EAAM,QAAQ9B,EAAQ,OAAO,EAAI6B,CAAM,CAAC,CACpE,CAMA,MAAME,GAAqE,CACzE,UAAY/B,GAAY4B,EAAO5B,EAAS,CAAC,EACzC,QAAUA,GAAY4B,EAAO5B,EAAS,EAAE,EACxC,WAAaA,GAAY,CACvB,KAAM,CAAE,MAAA2B,EAAO,QAAAK,EAAS,GAAAP,EAAI,YAAAQ,EAAa,SAAAC,EAAU,YAAAC,GAAgBnC,EACnE,GAAIiC,GAAe,CAACC,EAAU,CAC5BP,EAAM,eAAA,EACNQ,EAAYV,EAAI,EAAI,EACpB,MACF,CACIS,GAAUR,EAAW1B,EAASgC,EAAQ,cAA2Bb,CAAa,CAAC,CACrF,EACA,UAAYnB,GAAY,CACtB,KAAM,CAAE,MAAA2B,EAAO,QAAAK,EAAS,GAAAP,EAAI,SAAAS,EAAU,YAAAC,GAAgBnC,EACtD,GAAIkC,EAAU,CACZP,EAAM,eAAA,EACNQ,EAAYV,EAAI,EAAK,EACrB,MACF,CACAC,EAAW1B,EAASgC,EAAQ,eAAe,QAAqBb,CAAa,CAAC,CAChF,EACA,KAAOnB,GAAY0B,EAAW1B,EAASoB,EAAgBpB,EAAQ,IAAI,EAAE,CAAC,CAAC,EACvE,IAAMA,GAAY,CAChB,MAAM8B,EAAQV,EAAgBpB,EAAQ,IAAI,EAC1C0B,EAAW1B,EAAS8B,EAAMA,EAAM,OAAS,CAAC,CAAC,CAC7C,EACA,MAAQ9B,GAAY,CACdA,EAAQ,WACZA,EAAQ,MAAM,eAAA,EACdA,EAAQ,SAASA,EAAQ,GAAIA,EAAQ,YAAaA,EAAQ,QAAQ,EACpE,CACF,EA+BA,SAASoC,GAAK,CACZ,UAAAC,EACA,SAAA7B,EACA,YAAa8B,EACb,mBAAAC,EACA,iBAAAC,EACA,WAAYC,EACZ,kBAAAC,EAAoB,KACpB,iBAAAC,EACA,WAAAC,EACA,eAAAC,EAAiB,GACjB,OAAAC,EAAS,QACT,GAAGC,CACL,EAAc,CACZ,MAAMC,EAAUnD,EAAM,OAAuB,IAAI,EAE3C,CAACoD,EAAaC,CAAc,EAAIC,uBAAkC,CACtE,KAAMb,EACN,YAAaC,GAAsB,IAAI,IACvC,SAAUC,CAAA,CACX,EACK,CAACY,EAAYC,CAAa,EAAIF,uBAAoC,CACtE,KAAMV,EACN,YAAaC,EACb,SAAWjB,GAAO,CACZA,GAAM,MAAMkB,IAAmBlB,CAAE,CACvC,CAAA,CACD,EACK,CAAC6B,EAAW9B,CAAY,EAAI3B,EAAM,SAAwB,IAAI,EAE9DsC,EAActC,EAAM,YACxB,CAAC4B,EAAYS,IAAsB,CACjCgB,EAAgBlB,GAAY,CAC1B,MAAMuB,EAAO,IAAI,IAAIvB,CAAO,EAC5B,OAAIE,EAAUqB,EAAK,IAAI9B,CAAE,EACpB8B,EAAK,OAAO9B,CAAE,EACZ8B,CACT,CAAC,CACH,EACA,CAACL,CAAc,CAAA,EAGXM,EAAe3D,EAAM,YACzB,CAAC4D,EAAqBxB,EAAsBC,IAAsB,CAChEmB,EAAcI,CAAW,EACrBZ,GAAkBZ,GAAaE,EAAYsB,EAAa,CAACvB,CAAQ,EACrEU,IAAaa,CAAW,CAC1B,EACA,CAACJ,EAAeR,EAAgBV,EAAaS,CAAU,CAAA,EAGnDc,EAAoB7D,EAAM,YAC7B8B,GAA4C,CAC3C,MAAMN,EAAO2B,EAAQ,QACfhB,EAAWL,EAAM,QAA+B,QAAqBR,CAAa,EAClFM,EAAKO,GAAS,QAAQ,WAC5B,GAAI,CAACX,GAAQ,CAACW,GAAW,CAACP,GAAM,CAACJ,EAAK,SAASW,CAAO,EAAG,OAEzD,MAAM2B,EAAU5B,GAAkBJ,EAAM,GAAG,EACtCgC,GAELA,EAAQ,CACN,MAAAhC,EACA,KAAAN,EACA,QAAAW,EACA,GAAAP,EACA,YAAaO,EAAQ,QAAQ,kBAAoB,OACjD,SAAUA,EAAQ,aAAa,eAAe,IAAM,OACpD,SAAUA,EAAQ,aAAa,eAAe,IAAM,OACpD,YAAAG,EACA,aAAAX,EACA,SAAUgC,CAAA,CACX,CACH,EACA,CAACrB,EAAaqB,CAAY,CAAA,EAGtBxD,EAAUH,EAAM,QACpB,KAAO,CACL,YAAaoD,GAAe,IAAI,IAChC,YAAAd,EACA,WAAYiB,GAAc,KAC1B,aAAAI,EACA,UAAAF,EACA,aAAA9B,EACA,eAAAqB,EACA,OAAAC,EACA,cAAeY,CAAA,GAEjB,CAACT,EAAad,EAAaiB,EAAYI,EAAcF,EAAWT,EAAgBC,EAAQY,CAAiB,CAAA,EAG3G,OACExC,EAAAA,IAACtB,EAAY,SAAZ,CAAqB,MAAOI,EAC3B,SAAAkB,EAAAA,IAACjB,EAAiB,SAAjB,CAA0B,MAAO,EAChC,SAAAiB,EAAAA,IAAC,MAAA,CACC,IAAK8B,EACL,YAAU,OACV,cAAaF,EACb,KAAK,OACL,SAAU,GAgBV,UAAWc,EAAAA,GACT,0DACA,iHACAvB,CAAA,EAED,GAAGU,EASJ,eAACc,kBAAA,CAAgB,cAAe,IAC9B,SAAA3C,MAAC4C,EAAA,CAAoB,SAAAtD,EAAS,CAAA,CAChC,CAAA,CAAA,EAEJ,CAAA,CACF,CAEJ,CAEA,SAASsD,EAAmB,CAAE,SAAAtD,GAA2C,CACvE,OAAOD,GAAuBC,CAAQ,CACxC,CAgBA,SAASuD,GAAS,CAChB,UAAA1B,EACA,SAAA7B,EACA,GAAAiB,EACA,YAAAQ,EAAc,GACd,SAAA+B,EAAW,GACX,QAAAC,EACA,QAAAC,EACA,UAAAC,EACA,MAAAC,EACA,GAAGrB,CACL,EAAkB,CAChB,KAAM,CAAE,YAAAE,EAAa,YAAAd,EAAa,WAAAiB,EAAY,aAAAI,EAAc,UAAAF,EAAW,aAAA9B,EAAc,cAAA6C,CAAA,EACnFvE,EAAe,UAAU,EACrBwE,EAAQzE,EAAM,WAAWI,CAAgB,EACzC,CAAE,SAAAgB,EAAU,QAAAN,EAAS,cAAAG,GAAkBjB,EAAM,WAAWK,CAAgB,EACxEqE,EAAU,GAAG1E,EAAM,MAAA,CAAO,SAE1BqC,EAAWD,GAAegB,EAAY,IAAIxB,CAAE,EAC5C+C,EAAWpB,IAAe3B,EAE1BgD,EAAS5E,EAAM,YAAY,IAAM,CACjCoC,GAAaE,EAAYV,EAAI,CAACS,CAAQ,CAC5C,EAAG,CAACD,EAAaE,EAAaV,EAAIS,CAAQ,CAAC,EAIrCwC,EAAS7E,EAAM,YAAY,IAAM,CACjCmE,IACJxC,EAAaC,CAAE,EACf+B,EAAa/B,EAAIQ,EAAaC,CAAQ,EACxC,EAAG,CAAC8B,EAAUxC,EAAcC,EAAI+B,EAAcvB,EAAaC,CAAQ,CAAC,EAK9DyC,EAAWrB,EAAYA,IAAc7B,EAAK6C,IAAU,GAAKrD,IAAa,EAOtE2D,EADa/E,EAAM,WAAWM,CAAe,GACV,aAAeC,EAClDyE,EAAchF,EAAM,QACxB,IAAOyE,EAAQ,GAAKrD,EAAWH,EAAgB,CAAC,GAAG8D,EAAsBN,EAAQ,CAAC,EAAIM,EACtF,CAACA,EAAsBN,EAAOrD,EAAUH,CAAa,CAAA,EAGjDgE,EAAcjF,EAAM,QACxB,KAAO,CACL,GAAA4B,EACA,QAAA8C,EACA,MAAAD,EACA,SAAApC,EACA,YAAAD,EACA,SAAAuC,EACA,SAAAR,EACA,YAAAa,EACA,OAAAJ,EACA,OAAAC,CAAA,GAEF,CAACjD,EAAI8C,EAASD,EAAOpC,EAAUD,EAAauC,EAAUR,EAAUa,EAAaJ,EAAQC,CAAM,CAAA,EAG7F,OACExD,EAAAA,IAACf,EAAgB,SAAhB,CAAyB,MAAO2E,EAC/B,SAAA5D,EAAAA,IAAC,MAAA,CAGE,GAAG6B,EACJ,YAAU,YACV,oBAAmBtB,EACnB,yBAAwBQ,EACxB,aAAYC,EAAW,WAAa,YACpC,KAAK,WAGL,kBAAiBqC,EACjB,gBAAetC,EAAcC,EAAW,OACxC,aAAYoC,EACZ,gBAAerD,EACf,eAAcN,EACd,gBAAe6D,EACf,gBAAeR,GAAY,OAC3B,SAAUW,EAAW,EAAI,GACzB,UAAYhD,GAAU,CACpBwC,IAAYxC,CAAK,EACb,CAAAA,EAAM,kBACV0C,EAAc1C,CAAK,CACrB,EACA,QAAUA,GAAU,CAClBsC,IAAUtC,CAAK,EACX,CAAAA,EAAM,kBAGLA,EAAM,OAAuB,QAAQR,CAAa,IAAMQ,EAAM,eACnE+C,EAAA,CACF,EACA,QAAU/C,GAAU,CAClBuC,IAAUvC,CAAK,EACXA,EAAM,SAAWA,EAAM,iBAA4BF,CAAE,CAC3D,EACA,MACE,CAEE,oBAAqB,6BAA6B6C,EAAQ,CAAC,gBAG3D,mBAAoB,uCAGpB,sBAAuB,SACvB,GAAGF,CAAA,EAGP,UAAWR,EAAAA,GACT,wBAKA,uHACAvB,CAAA,EAGD,SAAA7B,CAAA,CAAA,EAEL,CAEJ,CAMA,MAAMuE,EAAwBC,EAAAA,IAC5B,kHACA,CACE,SAAU,CACR,KAAM,CACJ,GAAI,cACJ,QAAS,cACT,GAAI,aAAA,CACN,EAEF,gBAAiB,CACf,KAAM,SAAA,CACR,CAEJ,EAoBA,SAASC,GAAc,CAAE,UAAA5C,EAAW,SAAA7B,EAAU,KAAA0E,EAAM,MAAAd,EAAO,KAAAe,EAAM,SAAAC,EAAU,GAAGrC,GAA6B,CACzG,KAAM,CAAE,QAAAwB,EAAS,MAAAD,EAAO,SAAApC,EAAU,YAAAD,EAAa,SAAAuC,EAAU,SAAAR,EAAU,YAAAa,EAAa,OAAAJ,GAC9EpE,EAAmB,eAAe,EAC9B,CAAE,OAAAyC,CAAA,EAAWhD,EAAe,eAAe,EAK3CuF,EAAYvC,IAAW,QAAUwB,EAAQ,GAAKrC,EAC9CqD,EAAaxC,IAAW,SAAWuC,GAAaR,EAAY,OAAS,GAErEU,EAAU1F,EAAM,OAAwB,IAAI,EAC5C,CAAC2F,EAAaC,CAAc,EAAI5F,EAAM,SAAS,EAAK,EAKpD6F,EAA2BnC,GAAkB,CACjD,MAAMoC,EAAOJ,EAAQ,QACrBE,EAAelC,GAAQ,CAAC,CAACoC,GAAQA,EAAK,YAAcA,EAAK,WAAW,CACtE,EAEA,OACEC,EAAAA,KAAC,MAAA,CAGE,GAAG7C,EACJ,GAAIwB,EACJ,YAAU,kBAIV,MAAO,CAAE,mBAAoB,6BAA6BD,EAAQ,CAAC,cAAe,GAAGF,CAAA,EACrF,UAAWR,EAAAA,GACTmB,EAAsB,CAAE,KAAAG,EAAM,EAC9B,qCAGAV,EAAW,+CAAiD,iBAG5DR,GAAY,iCACZ3B,CAAA,EAGD,SAAA,CAAAiD,EAaCM,EAAAA,KAAC,OAAA,CACC,YAAU,mBACV,cAAY,OACZ,UAAWhC,EAAAA,GACT,uCAIAd,IAAW,SACT,yFAAA,EAGH,SAAA,CAAA+B,EAAY,IAAKgB,GAChB3E,EAAAA,IAAC,OAAA,CAEC,YAAU,wBACV,MAAO,CAAE,KAAM,6BAA6B2E,EAAa,CAAC,eAAA,EAG1D,UAAU,kFAAA,EALLA,CAAA,CAOR,EACAR,EAICnE,EAAAA,IAAC,OAAA,CACC,YAAU,wBACV,UAAW0C,EAAAA,GACT,2FACA,sEACA,uCAAA,CACF,CAAA,EAEA,IAAA,CAAA,CAAA,EAEJ,KACH3B,EAKCf,EAAAA,IAAC,OAAA,CACC,YAAU,sBACV,cAAY,OACZ,QAAUS,GAAU,CAElBA,EAAM,gBAAA,EACN8C,EAAA,CACF,EACA,UAAU,2EAEV,eAACqB,EAAAA,iBAAA,CAAiB,UAAWlC,EAAAA,GAAG,gCAAiC1B,GAAY,WAAW,CAAA,CAAG,CAAA,CAAA,QAG5F,OAAA,CAAK,YAAU,6BAA6B,cAAY,OAAO,UAAU,oBAAoB,EAE/FiD,EACCjE,EAAAA,IAAC,OAAA,CACC,YAAU,iBACV,cAAY,OACZ,UAAW0C,EAAAA,GACT,mFACAY,EAAW,yBAA2B,uBAAA,EAGvC,SAAAW,CAAA,CAAA,EAED,KACJS,EAAAA,KAACG,EAAAA,QAAA,CAAQ,KAAMP,EAAa,aAAcE,EACxC,SAAA,CAAAxE,EAAAA,IAAC8E,EAAAA,eAAA,CAAe,QAAO,GACrB,SAAA9E,EAAAA,IAAC,OAAA,CAAK,IAAKqE,EAAS,UAAU,0BAC3B,SAAA/E,CAAA,CACH,CAAA,CACF,EAMAU,MAAC+E,EAAAA,gBAAgB,SAAAzF,CAAA,CAAS,CAAA,EAC5B,EACC4E,EACClE,EAAAA,IAAC,OAAA,CACC,YAAU,qBACV,UAAU,4DAET,SAAAkE,CAAA,CAAA,EAED,IAAA,CAAA,CAAA,CAGV,CAMA,SAASc,GAAc,CAAE,UAAA7D,EAAW,SAAA7B,EAAU,GAAGuC,GAAsC,CACrF,KAAM,CAAE,SAAAb,EAAU,MAAAoC,GAAUjE,EAAmB,eAAe,EAI9D,OAAK6B,EAGHhB,EAAAA,IAACjB,EAAiB,SAAjB,CAA0B,MAAOqE,EAAQ,EACxC,SAAApD,EAAAA,IAAC,MAAA,CAAK,GAAG6B,EAAO,YAAU,kBAAkB,KAAK,QAAQ,UAAWa,KAAG,gBAAiBvB,CAAS,EAC/F,SAAAnB,EAAAA,IAAC4C,EAAA,CAAoB,SAAAtD,CAAA,CAAS,CAAA,CAChC,CAAA,CACF,EAPoB,IASxB"}
@@ -0,0 +1,406 @@
1
+ import { jsx as a, jsxs as A } from "react/jsx-runtime";
2
+ import { useControllableState as j } from "@radix-ui/react-use-controllable-state";
3
+ import { cva as W } from "class-variance-authority";
4
+ import { ChevronRightIcon as Y } from "lucide-react";
5
+ import * as n from "react";
6
+ import { TooltipProvider as J, Tooltip as Q, TooltipTrigger as X, TooltipContent as Z } from "./tooltip.js";
7
+ import { cn as E } from "../lib/utils.js";
8
+ const O = n.createContext(null);
9
+ function G(e) {
10
+ const r = n.useContext(O);
11
+ if (!r)
12
+ throw new Error(`\`${e}\` must be rendered inside a \`Tree\`.`);
13
+ return r;
14
+ }
15
+ const B = n.createContext(1), H = n.createContext({
16
+ posinset: 1,
17
+ setsize: 1,
18
+ lastBranchPos: 0
19
+ }), K = n.createContext(null), ee = [];
20
+ function M(e) {
21
+ const r = n.useContext(K);
22
+ if (!r)
23
+ throw new Error(`\`${e}\` must be rendered inside a \`TreeItem\`.`);
24
+ return r;
25
+ }
26
+ function ue() {
27
+ return M("useTreeItem");
28
+ }
29
+ function te(e) {
30
+ return n.useMemo(() => {
31
+ const r = n.Children.toArray(e), t = r.filter(n.isValidElement), o = t.length, l = (c) => c.props?.hasChildren === !0, u = t.reduce((c, p, v) => l(p) ? v + 1 : c, 0);
32
+ let x = 0;
33
+ return r.map((c, p) => n.isValidElement(c) ? (x += 1, /* @__PURE__ */ a(H.Provider, { value: { posinset: x, setsize: o, lastBranchPos: u }, children: c }, c.key ?? p)) : c);
34
+ }, [e]);
35
+ }
36
+ const R = '[role="treeitem"]';
37
+ function $(e) {
38
+ return e ? [...e.querySelectorAll(R)] : [];
39
+ }
40
+ function re(e, r) {
41
+ const t = e?.dataset.treeItemId;
42
+ !e || !t || (r(t), e.focus());
43
+ }
44
+ function L({ event: e, setFocusedId: r }, t) {
45
+ e.preventDefault(), re(t, r);
46
+ }
47
+ function F(e, r) {
48
+ const t = $(e.root);
49
+ L(e, t[t.indexOf(e.current) + r]);
50
+ }
51
+ const ne = {
52
+ ArrowDown: (e) => F(e, 1),
53
+ ArrowUp: (e) => F(e, -1),
54
+ ArrowRight: (e) => {
55
+ const { event: r, current: t, id: o, hasChildren: l, expanded: u, setExpanded: x } = e;
56
+ if (l && !u) {
57
+ r.preventDefault(), x(o, !0);
58
+ return;
59
+ }
60
+ u && L(e, t.querySelector(R));
61
+ },
62
+ ArrowLeft: (e) => {
63
+ const { event: r, current: t, id: o, expanded: l, setExpanded: u } = e;
64
+ if (l) {
65
+ r.preventDefault(), u(o, !1);
66
+ return;
67
+ }
68
+ L(e, t.parentElement?.closest(R));
69
+ },
70
+ Home: (e) => L(e, $(e.root)[0]),
71
+ End: (e) => {
72
+ const r = $(e.root);
73
+ L(e, r[r.length - 1]);
74
+ },
75
+ Enter: (e) => {
76
+ e.disabled || (e.event.preventDefault(), e.activate(e.id, e.hasChildren, e.expanded));
77
+ }
78
+ };
79
+ function me({
80
+ className: e,
81
+ children: r,
82
+ expandedIds: t,
83
+ defaultExpandedIds: o,
84
+ onExpandedChange: l,
85
+ selectedId: u,
86
+ defaultSelectedId: x = null,
87
+ onSelectedChange: c,
88
+ onActivate: p,
89
+ expandOnSelect: v = !0,
90
+ guides: C = "hover",
91
+ ...N
92
+ }) {
93
+ const D = n.useRef(null), [w, P] = j({
94
+ prop: t,
95
+ defaultProp: o ?? /* @__PURE__ */ new Set(),
96
+ onChange: l
97
+ }), [b, z] = j({
98
+ prop: u,
99
+ defaultProp: x,
100
+ onChange: (s) => {
101
+ s != null && c?.(s);
102
+ }
103
+ }), [m, g] = n.useState(null), h = n.useCallback(
104
+ (s, I) => {
105
+ P((d) => {
106
+ const k = new Set(d);
107
+ return I ? k.add(s) : k.delete(s), k;
108
+ });
109
+ },
110
+ [P]
111
+ ), T = n.useCallback(
112
+ (s, I, d) => {
113
+ z(s), v && I && h(s, !d), p?.(s);
114
+ },
115
+ [z, v, h, p]
116
+ ), y = n.useCallback(
117
+ (s) => {
118
+ const I = D.current, d = s.target?.closest(R), k = d?.dataset.treeItemId;
119
+ if (!I || !d || !k || !I.contains(d)) return;
120
+ const S = ne[s.key];
121
+ S && S({
122
+ event: s,
123
+ root: I,
124
+ current: d,
125
+ id: k,
126
+ hasChildren: d.dataset.treeHasChildren === "true",
127
+ expanded: d.getAttribute("aria-expanded") === "true",
128
+ disabled: d.getAttribute("aria-disabled") === "true",
129
+ setExpanded: h,
130
+ setFocusedId: g,
131
+ activate: T
132
+ });
133
+ },
134
+ [h, T]
135
+ ), i = n.useMemo(
136
+ () => ({
137
+ expandedIds: w ?? /* @__PURE__ */ new Set(),
138
+ setExpanded: h,
139
+ selectedId: b ?? null,
140
+ activateItem: T,
141
+ focusedId: m,
142
+ setFocusedId: g,
143
+ expandOnSelect: v,
144
+ guides: C,
145
+ onItemKeyDown: y
146
+ }),
147
+ [w, h, b, T, m, v, C, y]
148
+ );
149
+ return /* @__PURE__ */ a(O.Provider, { value: i, children: /* @__PURE__ */ a(B.Provider, { value: 1, children: /* @__PURE__ */ a(
150
+ "div",
151
+ {
152
+ ref: D,
153
+ "data-slot": "tree",
154
+ "data-guides": C,
155
+ role: "tree",
156
+ tabIndex: -1,
157
+ className: E(
158
+ "group/tree text-foreground flex w-full flex-col text-sm",
159
+ "[--tree-indent:1.25rem] [--tree-guide-color:color-mix(in_oklch,var(--muted-foreground)_40%,var(--background))]",
160
+ e
161
+ ),
162
+ ...N,
163
+ children: /* @__PURE__ */ a(J, { delayDuration: 500, children: /* @__PURE__ */ a(q, { children: r }) })
164
+ }
165
+ ) }) });
166
+ }
167
+ function q({ children: e }) {
168
+ return te(e);
169
+ }
170
+ function fe({
171
+ className: e,
172
+ children: r,
173
+ id: t,
174
+ hasChildren: o = !1,
175
+ disabled: l = !1,
176
+ onClick: u,
177
+ onFocus: x,
178
+ onKeyDown: c,
179
+ style: p,
180
+ ...v
181
+ }) {
182
+ const { expandedIds: C, setExpanded: N, selectedId: D, activateItem: w, focusedId: P, setFocusedId: b, onItemKeyDown: z } = G("TreeItem"), m = n.useContext(B), { posinset: g, setsize: h, lastBranchPos: T } = n.useContext(H), y = `${n.useId()}-label`, i = o && C.has(t), s = D === t, I = n.useCallback(() => {
183
+ o && N(t, !i);
184
+ }, [o, N, t, i]), d = n.useCallback(() => {
185
+ l || (b(t), w(t, o, i));
186
+ }, [l, b, t, w, o, i]), k = P ? P === t : m === 1 && g === 1, _ = n.useContext(K)?.trunkLevels ?? ee, V = n.useMemo(
187
+ () => m > 1 && g < T ? [..._, m - 1] : _,
188
+ [_, m, g, T]
189
+ ), U = n.useMemo(
190
+ () => ({
191
+ id: t,
192
+ labelId: y,
193
+ level: m,
194
+ expanded: i,
195
+ hasChildren: o,
196
+ selected: s,
197
+ disabled: l,
198
+ trunkLevels: V,
199
+ toggle: I,
200
+ select: d
201
+ }),
202
+ [t, y, m, i, o, s, l, V, I, d]
203
+ );
204
+ return /* @__PURE__ */ a(K.Provider, { value: U, children: /* @__PURE__ */ a(
205
+ "div",
206
+ {
207
+ ...v,
208
+ "data-slot": "tree-item",
209
+ "data-tree-item-id": t,
210
+ "data-tree-has-children": o,
211
+ "data-state": i ? "expanded" : "collapsed",
212
+ role: "treeitem",
213
+ "aria-labelledby": y,
214
+ "aria-expanded": o ? i : void 0,
215
+ "aria-level": m,
216
+ "aria-posinset": g,
217
+ "aria-setsize": h,
218
+ "aria-selected": s,
219
+ "aria-disabled": l || void 0,
220
+ tabIndex: k ? 0 : -1,
221
+ onKeyDown: (f) => {
222
+ c?.(f), !f.defaultPrevented && z(f);
223
+ },
224
+ onClick: (f) => {
225
+ u?.(f), !f.defaultPrevented && f.target.closest(R) === f.currentTarget && d();
226
+ },
227
+ onFocus: (f) => {
228
+ x?.(f), f.target === f.currentTarget && b(t);
229
+ },
230
+ style: {
231
+ // Inherited by the label, which draws the elbow from the same two values.
232
+ "--tree-guide-left": `calc(var(--tree-indent) * ${m - 2} + 0.6875rem)`,
233
+ // Stops 0.25rem short of the row's chevron rather than touching it, so the connector
234
+ // reads as pointing at the row instead of welded to the glyph.
235
+ "--tree-elbow-run": "calc(var(--tree-indent) - 0.6875rem)",
236
+ // Shared by the elbow's corner and by where the same-column trunk picks up, so the two
237
+ // meet exactly instead of overlapping or leaving a gap.
238
+ "--tree-elbow-radius": "0.5rem",
239
+ ...p
240
+ },
241
+ className: E(
242
+ "relative outline-none",
243
+ // Direct-child selectors, deliberately not `group-*/tree-item`: tree items nest, and a
244
+ // group variant matches *any* ancestor, so a focused or selected parent painted its focus
245
+ // ring onto every descendant row. Backgrounds live on the label for the same reason —
246
+ // anything painted here would spread behind the whole subtree.
247
+ "focus-visible:[&>[data-slot=tree-item-label]]:border-ring focus-visible:[&>[data-slot=tree-item-label]]:shadow-focus",
248
+ e
249
+ ),
250
+ children: r
251
+ }
252
+ ) });
253
+ }
254
+ const oe = W(
255
+ "flex w-full min-w-0 cursor-default items-center gap-1.5 rounded-md pr-2 text-left transition-colors select-none",
256
+ {
257
+ variants: {
258
+ size: {
259
+ sm: "h-6 text-xs",
260
+ default: "h-7 text-sm",
261
+ lg: "h-9 text-sm"
262
+ }
263
+ },
264
+ defaultVariants: {
265
+ size: "default"
266
+ }
267
+ }
268
+ );
269
+ function pe({ className: e, children: r, size: t, style: o, icon: l, trailing: u, ...x }) {
270
+ const { labelId: c, level: p, expanded: v, hasChildren: C, selected: N, disabled: D, trunkLevels: w, toggle: P } = M("TreeItemLabel"), { guides: b } = G("TreeItemLabel"), z = b !== "none" && p > 1 && C, m = b !== "none" && (z || w.length > 0), g = n.useRef(null), [h, T] = n.useState(!1), y = (i) => {
271
+ const s = g.current;
272
+ T(i && !!s && s.scrollWidth > s.clientWidth);
273
+ };
274
+ return /* @__PURE__ */ A(
275
+ "div",
276
+ {
277
+ ...x,
278
+ id: c,
279
+ "data-slot": "tree-item-label",
280
+ style: { paddingInlineStart: `calc(var(--tree-indent) * ${p - 1} + 0.25rem)`, ...o },
281
+ className: E(
282
+ oe({ size: t }),
283
+ "relative border border-transparent",
284
+ // Only selection paints a background — an open folder is already marked by its rotated
285
+ // chevron, open-folder icon and the connectors running down from it.
286
+ N ? "bg-accent text-accent-foreground font-medium" : "hover:bg-muted",
287
+ // From this node's own state, not an ancestor selector: `aria-disabled` is per-node, so a
288
+ // disabled folder must not dim the contents underneath it.
289
+ D && "pointer-events-none opacity-50",
290
+ e
291
+ ),
292
+ children: [
293
+ m ? (
294
+ // One absolutely-positioned layer owns every guide on this row, fixing two bugs at once.
295
+ //
296
+ // Paint order: the trunk used to be drawn by the `TreeItem`, an *ancestor* of every
297
+ // descendant row. Those rows are positioned and paint an opaque hover/selected background
298
+ // over anything an ancestor drew, so the trunk vanished behind whichever row you pointed
299
+ // at. Drawn here it belongs to the row's own box, so it paints above that row's background
300
+ // — and no sibling row can cover it, because every row draws its own segments.
301
+ //
302
+ // One coordinate system: `left` resolves against the nearest positioned ancestor's
303
+ // *padding* box. The label carries `border border-transparent` for its focus ring while the
304
+ // `TreeItem` carries none, so one `--tree-guide-left` landed 1px apart on the two elements
305
+ // and the elbow/trunk overlap read as a 2px line. Both now share this container.
306
+ /* @__PURE__ */ A(
307
+ "span",
308
+ {
309
+ "data-slot": "tree-item-guides",
310
+ "aria-hidden": "true",
311
+ className: E(
312
+ "pointer-events-none absolute inset-0",
313
+ // The fade lives on the container, not on each line. Opacity on the parent renders the
314
+ // whole layer into one buffer and composites it once, so a seam between two segments
315
+ // can never double-expose mid-transition.
316
+ b === "hover" && "opacity-0 transition-opacity group-hover/tree:opacity-100 motion-reduce:transition-none"
317
+ ),
318
+ children: [
319
+ w.map((i) => /* @__PURE__ */ a(
320
+ "span",
321
+ {
322
+ "data-slot": "tree-item-guide-trunk",
323
+ style: { left: `calc(var(--tree-indent) * ${i - 1} + 0.6875rem)` },
324
+ className: "absolute top-[-0.4375rem] bottom-0 w-0 border-l border-[var(--tree-guide-color)]"
325
+ },
326
+ i
327
+ )),
328
+ z ? (
329
+ // Down the guide line, then a rounded turn right, stopping just short of this row's
330
+ // chevron. Starts half a chevron above the row so the line emerges from under the
331
+ // parent's chevron instead of leaving a half-row gap.
332
+ /* @__PURE__ */ a(
333
+ "span",
334
+ {
335
+ "data-slot": "tree-item-guide-elbow",
336
+ className: E(
337
+ "absolute top-[-0.4375rem] left-[var(--tree-guide-left)] border-[var(--tree-guide-color)]",
338
+ "h-[calc(50%+0.4375rem)] w-[var(--tree-elbow-run)] border-b border-l",
339
+ "rounded-bl-[var(--tree-elbow-radius)]"
340
+ )
341
+ }
342
+ )
343
+ ) : null
344
+ ]
345
+ }
346
+ )
347
+ ) : null,
348
+ C ? (
349
+ // A pointer-only affordance, deliberately not a `<button>`: expansion is reachable from the
350
+ // keyboard through the parent treeitem's arrow keys, so this stays non-focusable. A focusable
351
+ // element hidden from assistive tech is a contradiction, and inside a single-tab-stop widget
352
+ // it would also be a second focus stop reachable by pointer.
353
+ /* @__PURE__ */ a(
354
+ "span",
355
+ {
356
+ "data-slot": "tree-item-indicator",
357
+ "aria-hidden": "true",
358
+ onClick: (i) => {
359
+ i.stopPropagation(), P();
360
+ },
361
+ className: "flex size-3.5 shrink-0 items-center justify-center text-muted-foreground",
362
+ children: /* @__PURE__ */ a(Y, { className: E("size-3.5 transition-transform", v && "rotate-90") })
363
+ }
364
+ )
365
+ ) : /* @__PURE__ */ a("span", { "data-slot": "tree-item-indicator-spacer", "aria-hidden": "true", className: "size-3.5 shrink-0" }),
366
+ l ? /* @__PURE__ */ a(
367
+ "span",
368
+ {
369
+ "data-slot": "tree-item-icon",
370
+ "aria-hidden": "true",
371
+ className: E(
372
+ "flex size-4 shrink-0 items-center justify-center [&_svg]:size-4 [&_svg]:shrink-0",
373
+ N ? "text-accent-foreground" : "text-muted-foreground"
374
+ ),
375
+ children: l
376
+ }
377
+ ) : null,
378
+ /* @__PURE__ */ A(Q, { open: h, onOpenChange: y, children: [
379
+ /* @__PURE__ */ a(X, { asChild: !0, children: /* @__PURE__ */ a("span", { ref: g, className: "min-w-0 flex-1 truncate", children: r }) }),
380
+ /* @__PURE__ */ a(Z, { children: r })
381
+ ] }),
382
+ u ? /* @__PURE__ */ a(
383
+ "span",
384
+ {
385
+ "data-slot": "tree-item-trailing",
386
+ className: "ml-auto flex shrink-0 items-center gap-1 [&_svg]:size-3.5",
387
+ children: u
388
+ }
389
+ ) : null
390
+ ]
391
+ }
392
+ );
393
+ }
394
+ function xe({ className: e, children: r, ...t }) {
395
+ const { expanded: o, level: l } = M("TreeItemGroup");
396
+ return o ? /* @__PURE__ */ a(B.Provider, { value: l + 1, children: /* @__PURE__ */ a("div", { ...t, "data-slot": "tree-item-group", role: "group", className: E("flex flex-col", e), children: /* @__PURE__ */ a(q, { children: r }) }) }) : null;
397
+ }
398
+ export {
399
+ me as Tree,
400
+ fe as TreeItem,
401
+ xe as TreeItemGroup,
402
+ pe as TreeItemLabel,
403
+ oe as treeItemLabelVariants,
404
+ ue as useTreeItem
405
+ };
406
+ //# sourceMappingURL=tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.js","sources":["../../src/components/ui/tree.tsx"],"sourcesContent":["import { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { ChevronRightIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"./tooltip\";\n\nimport { cn } from \"@/lib/utils\";\n\n/* -------------------------------------------------------------------------------------------------\n * Contexts\n *\n * The tree is intentionally headless about *data*: it never fetches, never owns a node array, and\n * derives every ARIA attribute from where a `TreeItem` sits in the React tree. Four contexts carry\n * that positional information down:\n *\n * TreeContext — per-tree state (expansion, selection, roving focus) and the key handler\n * TreeLevelContext — the current depth; `Tree` seeds 1, each `TreeItemGroup` increments\n * TreeIndexContext — `aria-posinset` / `aria-setsize`, injected by whichever container renders\n * the item (`Tree` for roots, `TreeItemGroup` for children)\n * TreeItemContext — the nearest enclosing item, read by `TreeItemLabel` / `TreeItemGroup`\n * -----------------------------------------------------------------------------------------------*/\n\ntype TreeContextValue = {\n expandedIds: Set<string>;\n setExpanded: (id: string, expanded: boolean) => void;\n selectedId: string | null;\n /**\n * The one activation path: selection, optional expansion and `onActivate`, shared by `Enter` and\n * by clicking a node so the two never diverge.\n */\n activateItem: (id: string, hasChildren: boolean, expanded: boolean) => void;\n focusedId: string | null;\n setFocusedId: (id: string) => void;\n expandOnSelect: boolean;\n guides: TreeGuides;\n /** Attached to each `TreeItem` rather than to the tree root, so the node is its own key target. */\n onItemKeyDown: (event: React.KeyboardEvent<HTMLElement>) => void;\n};\n\nconst TreeContext = React.createContext<TreeContextValue | null>(null);\n\nfunction useTreeContext(component: string) {\n const context = React.useContext(TreeContext);\n if (!context) {\n throw new Error(`\\`${component}\\` must be rendered inside a \\`Tree\\`.`);\n }\n return context;\n}\n\nconst TreeLevelContext = React.createContext(1);\n\ntype TreeIndexContextValue = {\n posinset: number;\n setsize: number;\n /**\n * Position of the last sibling that is itself a branch, or 0 if none are. Connectors only join a\n * folder to its subfolders, so this is where the trunk has to stop — running it to the last child\n * would leave it dangling past any trailing leaf rows.\n */\n lastBranchPos: number;\n};\n\nconst TreeIndexContext = React.createContext<TreeIndexContextValue>({\n posinset: 1,\n setsize: 1,\n lastBranchPos: 0,\n});\n\ntype TreeItemContextValue = {\n id: string;\n labelId: string;\n level: number;\n expanded: boolean;\n hasChildren: boolean;\n selected: boolean;\n disabled: boolean;\n /**\n * Parent levels whose trunk passes through this row. The row draws one vertical segment per\n * entry, so a trunk survives crossing an expanded branch's descendant rows.\n */\n trunkLevels: readonly number[];\n toggle: () => void;\n select: () => void;\n};\n\nconst TreeItemContext = React.createContext<TreeItemContextValue | null>(null);\n\n/** Stable empty set, so inheriting \"no trunks\" doesn't remake the item context every render. */\nconst NO_TRUNKS: readonly number[] = [];\n\nfunction useTreeItemContext(component: string) {\n const context = React.useContext(TreeItemContext);\n if (!context) {\n throw new Error(`\\`${component}\\` must be rendered inside a \\`TreeItem\\`.`);\n }\n return context;\n}\n\n/**\n * Reads the item's position among its siblings and whether it is currently expanded. Exposed for\n * consumers composing their own row content (badges, action buttons, counts) inside a `TreeItem`.\n */\nfunction useTreeItem() {\n return useTreeItemContext(\"useTreeItem\");\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Sibling indexing\n *\n * `aria-setsize` / `aria-posinset` need sibling counts, which only the container knows. Rather than\n * a mount-order registry (two render passes, StrictMode-sensitive, wrong under conditional\n * rendering) each container walks its own children and wraps them in an index provider. Purely\n * positional, so it is correct on the first render and under SSR.\n *\n * Caveat: every valid element child occupies a set slot, so non-item children of a group (a \"Load\n * more\" control, for instance) would be counted. That placement question is deliberately deferred\n * to SW-2542.\n * -----------------------------------------------------------------------------------------------*/\n\nfunction useIndexedTreeChildren(children: React.ReactNode) {\n return React.useMemo(() => {\n const array = React.Children.toArray(children);\n const elements = array.filter(React.isValidElement);\n const setsize = elements.length;\n\n // Which siblings are branches is read off `hasChildren` in the element's own props. A child\n // wrapped in a consumer's own component reads as a leaf, which costs a connector rather than\n // breaking anything — the alternative is a mount-order registry, and the whole point of doing\n // this positionally is to stay correct on the first render.\n const isBranch = (child: React.ReactElement) => (child.props as TreeItemProps)?.hasChildren === true;\n const lastBranchPos = elements.reduce((last, child, index) => (isBranch(child) ? index + 1 : last), 0);\n\n let posinset = 0;\n\n return array.map((child, index) => {\n if (!React.isValidElement(child)) return child;\n posinset += 1;\n return (\n <TreeIndexContext.Provider key={child.key ?? index} value={{ posinset, setsize, lastBranchPos }}>\n {child}\n </TreeIndexContext.Provider>\n );\n });\n }, [children]);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Keyboard navigation\n *\n * Visible-node order is read from the DOM instead of a JS registry: collapsed groups are not\n * rendered at all, so `querySelectorAll('[role=\"treeitem\"]')` in document order *is* the visible\n * node sequence, and ancestor/descendant lookups are one `closest()` call. This keeps the traversal\n * correct for arbitrary consumer markup between the levels.\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_SELECTOR = '[role=\"treeitem\"]';\n\nfunction getVisibleItems(root: HTMLElement | null) {\n if (!root) return [];\n return [...root.querySelectorAll<HTMLElement>(ITEM_SELECTOR)];\n}\n\nfunction moveFocus(element: HTMLElement | null | undefined, setFocusedId: (id: string) => void) {\n const id = element?.dataset.treeItemId;\n if (!element || !id) return;\n setFocusedId(id);\n element.focus();\n}\n\ntype TreeKeyEvent = {\n event: React.KeyboardEvent<HTMLElement>;\n root: HTMLElement;\n /** The `role=\"treeitem\"` element the key was pressed on. */\n current: HTMLElement;\n id: string;\n hasChildren: boolean;\n expanded: boolean;\n disabled: boolean;\n setExpanded: (id: string, expanded: boolean) => void;\n setFocusedId: (id: string) => void;\n activate: (id: string, hasChildren: boolean, expanded: boolean) => void;\n};\n\n/** Moves focus to `element`, if there is one, and claims the key press. */\nfunction navigateTo({ event, setFocusedId }: TreeKeyEvent, element: HTMLElement | null | undefined) {\n event.preventDefault();\n moveFocus(element, setFocusedId);\n}\n\nfunction stepBy(context: TreeKeyEvent, offset: number) {\n const items = getVisibleItems(context.root);\n navigateTo(context, items[items.indexOf(context.current) + offset]);\n}\n\n/**\n * `Space` is deliberately unbound: the WAI-ARIA pattern reserves it for multi-select trees, which\n * are out of scope here but should not be precluded.\n */\nconst TREE_KEY_HANDLERS: Record<string, (context: TreeKeyEvent) => void> = {\n ArrowDown: (context) => stepBy(context, 1),\n ArrowUp: (context) => stepBy(context, -1),\n ArrowRight: (context) => {\n const { event, current, id, hasChildren, expanded, setExpanded } = context;\n if (hasChildren && !expanded) {\n event.preventDefault();\n setExpanded(id, true);\n return;\n }\n if (expanded) navigateTo(context, current.querySelector<HTMLElement>(ITEM_SELECTOR));\n },\n ArrowLeft: (context) => {\n const { event, current, id, expanded, setExpanded } = context;\n if (expanded) {\n event.preventDefault();\n setExpanded(id, false);\n return;\n }\n navigateTo(context, current.parentElement?.closest<HTMLElement>(ITEM_SELECTOR));\n },\n Home: (context) => navigateTo(context, getVisibleItems(context.root)[0]),\n End: (context) => {\n const items = getVisibleItems(context.root);\n navigateTo(context, items[items.length - 1]);\n },\n Enter: (context) => {\n if (context.disabled) return;\n context.event.preventDefault();\n context.activate(context.id, context.hasChildren, context.expanded);\n },\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Tree\n * -----------------------------------------------------------------------------------------------*/\n\ntype TreeGuides = \"none\" | \"hover\" | \"always\";\n\ntype TreeProps = Omit<React.ComponentProps<\"div\">, \"onSelect\"> & {\n /** Expanded node ids (controlled). */\n expandedIds?: Set<string>;\n /** Initially expanded node ids (uncontrolled). */\n defaultExpandedIds?: Set<string>;\n onExpandedChange?: (expandedIds: Set<string>) => void;\n /** Selected node id (controlled). Pass `null` for \"nothing selected\". */\n selectedId?: string | null;\n /** Initially selected node id (uncontrolled). */\n defaultSelectedId?: string | null;\n onSelectedChange?: (selectedId: string) => void;\n /** Fired by `Enter` and by clicking a label — the node's default action. */\n onActivate?: (id: string) => void;\n /** Whether selecting a parent node also toggles its expansion. */\n expandOnSelect?: boolean;\n /**\n * Vertical indent guides joining each level to its parent. `\"hover\"` reveals them while the\n * pointer is anywhere over the tree, which keeps a dense tree quiet at rest but still lets you\n * trace a deep branch; `\"always\"` pins them on; `\"none\"` turns them off.\n */\n guides?: TreeGuides;\n};\n\nfunction Tree({\n className,\n children,\n expandedIds: expandedIdsProp,\n defaultExpandedIds,\n onExpandedChange,\n selectedId: selectedIdProp,\n defaultSelectedId = null,\n onSelectedChange,\n onActivate,\n expandOnSelect = true,\n guides = \"hover\",\n ...props\n}: TreeProps) {\n const treeRef = React.useRef<HTMLDivElement>(null);\n\n const [expandedIds, setExpandedIds] = useControllableState<Set<string>>({\n prop: expandedIdsProp,\n defaultProp: defaultExpandedIds ?? new Set<string>(),\n onChange: onExpandedChange,\n });\n const [selectedId, setSelectedId] = useControllableState<string | null>({\n prop: selectedIdProp,\n defaultProp: defaultSelectedId,\n onChange: (id) => {\n if (id != null) onSelectedChange?.(id);\n },\n });\n const [focusedId, setFocusedId] = React.useState<string | null>(null);\n\n const setExpanded = React.useCallback(\n (id: string, expanded: boolean) => {\n setExpandedIds((current) => {\n const next = new Set(current);\n if (expanded) next.add(id);\n else next.delete(id);\n return next;\n });\n },\n [setExpandedIds],\n );\n\n const activateItem = React.useCallback(\n (activatedId: string, hasChildren: boolean, expanded: boolean) => {\n setSelectedId(activatedId);\n if (expandOnSelect && hasChildren) setExpanded(activatedId, !expanded);\n onActivate?.(activatedId);\n },\n [setSelectedId, expandOnSelect, setExpanded, onActivate],\n );\n\n const handleItemKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLElement>) => {\n const root = treeRef.current;\n const current = (event.target as HTMLElement | null)?.closest<HTMLElement>(ITEM_SELECTOR);\n const id = current?.dataset.treeItemId;\n if (!root || !current || !id || !root.contains(current)) return;\n\n const handler = TREE_KEY_HANDLERS[event.key];\n if (!handler) return;\n\n handler({\n event,\n root,\n current,\n id,\n hasChildren: current.dataset.treeHasChildren === \"true\",\n expanded: current.getAttribute(\"aria-expanded\") === \"true\",\n disabled: current.getAttribute(\"aria-disabled\") === \"true\",\n setExpanded,\n setFocusedId,\n activate: activateItem,\n });\n },\n [setExpanded, activateItem],\n );\n\n const context = React.useMemo<TreeContextValue>(\n () => ({\n expandedIds: expandedIds ?? new Set<string>(),\n setExpanded,\n selectedId: selectedId ?? null,\n activateItem,\n focusedId,\n setFocusedId,\n expandOnSelect,\n guides,\n onItemKeyDown: handleItemKeyDown,\n }),\n [expandedIds, setExpanded, selectedId, activateItem, focusedId, expandOnSelect, guides, handleItemKeyDown],\n );\n\n return (\n <TreeContext.Provider value={context}>\n <TreeLevelContext.Provider value={1}>\n <div\n ref={treeRef}\n data-slot=\"tree\"\n data-guides={guides}\n role=\"tree\"\n tabIndex={-1}\n // `group/tree` is what the `\"hover\"` guide mode hangs off: hovering anywhere in the tree\n // reveals every guide at once, so you can trace a branch without hunting row by row.\n //\n // `--tree-indent` is 1.25rem so that a child's chevron lands exactly on its parent's\n // icon: the icon sits 1.5rem into the content box (chevron 0.875 + gap 0.375 + the\n // 0.25rem lead-in), and the chevron sits at the lead-in, so one step must be\n // 1.5rem - 0.25rem. Indentation, the guide offsets and the elbow reach are all derived\n // from this one value — override it and the connectors follow.\n //\n // `--tree-guide-color` is deliberately *opaque*, via `color-mix`, even though it is meant\n // to look like a 40% tint. Guide segments necessarily overlap — each row's line overshoots\n // into the row above so the two meet across the label's border, and an elbow shares its\n // column with the trunk it branches from. With a semi-transparent colour every overlap\n // composites twice and shows up as a darker stretch of line. Mixing to an opaque value up\n // front makes overlapping draws idempotent, so the tree reads as one uniform hairline.\n className={cn(\n \"group/tree text-foreground flex w-full flex-col text-sm\",\n \"[--tree-indent:1.25rem] [--tree-guide-color:color-mix(in_oklch,var(--muted-foreground)_40%,var(--background))]\",\n className,\n )}\n {...props}\n >\n {/*\n Radix requires a `Tooltip.Provider` above any `Tooltip`, and the labels mount one each\n to reveal truncated text. Providing it here rather than asking consumers to wrap their\n app keeps `Tree` self-contained; nesting inside a consumer's own provider is supported,\n and the longer delay is deliberate — instant tooltips while sweeping the pointer down a\n dense tree are noise.\n */}\n <TooltipProvider delayDuration={500}>\n <TreeItemsContainer>{children}</TreeItemsContainer>\n </TooltipProvider>\n </div>\n </TreeLevelContext.Provider>\n </TreeContext.Provider>\n );\n}\n\nfunction TreeItemsContainer({ children }: { children: React.ReactNode }) {\n return useIndexedTreeChildren(children);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * TreeItem\n * -----------------------------------------------------------------------------------------------*/\n\ntype TreeItemProps = React.ComponentProps<\"div\"> & {\n id: string;\n /**\n * Whether the node can be expanded. Kept explicit rather than inferred from rendered children so\n * a node whose children have not been fetched yet still reports `aria-expanded=\"false\"`.\n */\n hasChildren?: boolean;\n disabled?: boolean;\n};\n\nfunction TreeItem({\n className,\n children,\n id,\n hasChildren = false,\n disabled = false,\n onClick,\n onFocus,\n onKeyDown,\n style,\n ...props\n}: TreeItemProps) {\n const { expandedIds, setExpanded, selectedId, activateItem, focusedId, setFocusedId, onItemKeyDown } =\n useTreeContext(\"TreeItem\");\n const level = React.useContext(TreeLevelContext);\n const { posinset, setsize, lastBranchPos } = React.useContext(TreeIndexContext);\n const labelId = `${React.useId()}-label`;\n\n const expanded = hasChildren && expandedIds.has(id);\n const selected = selectedId === id;\n\n const toggle = React.useCallback(() => {\n if (hasChildren) setExpanded(id, !expanded);\n }, [hasChildren, setExpanded, id, expanded]);\n\n // Routed through the tree's `activateItem` so a click and `Enter` are the same code path —\n // notably, both fire `onActivate`.\n const select = React.useCallback(() => {\n if (disabled) return;\n setFocusedId(id);\n activateItem(id, hasChildren, expanded);\n }, [disabled, setFocusedId, id, activateItem, hasChildren, expanded]);\n\n // Roving tabindex, minimal form: the focused node is the single tab stop, falling back to the\n // first root node before the tree has been entered. SW-2541 extends this (selection-aware entry\n // point, focus retention across collapse and lazy load).\n const tabbable = focusedId ? focusedId === id : level === 1 && posinset === 1;\n\n // Guides are drawn on the row (see `TreeItemLabel`), so a row has to know every ancestor trunk\n // crossing it, not just its own parent's. The set is threaded down the tree: inherit the parent's\n // and add this row's own parent level when a later sibling folder needs the line to continue past\n // this entire subtree.\n const parentItem = React.useContext(TreeItemContext);\n const inheritedTrunkLevels = parentItem?.trunkLevels ?? NO_TRUNKS;\n const trunkLevels = React.useMemo(\n () => (level > 1 && posinset < lastBranchPos ? [...inheritedTrunkLevels, level - 1] : inheritedTrunkLevels),\n [inheritedTrunkLevels, level, posinset, lastBranchPos],\n );\n\n const itemContext = React.useMemo<TreeItemContextValue>(\n () => ({\n id,\n labelId,\n level,\n expanded,\n hasChildren,\n selected,\n disabled,\n trunkLevels,\n toggle,\n select,\n }),\n [id, labelId, level, expanded, hasChildren, selected, disabled, trunkLevels, toggle, select],\n );\n\n return (\n <TreeItemContext.Provider value={itemContext}>\n <div\n // Spread first, for the same reason as `TreeItemLabel`: every ARIA attribute below is\n // maintained by the tree and must not be overridable from props.\n {...props}\n data-slot=\"tree-item\"\n data-tree-item-id={id}\n data-tree-has-children={hasChildren}\n data-state={expanded ? \"expanded\" : \"collapsed\"}\n role=\"treeitem\"\n // The accessible name comes from the label alone. Without this, name-from-content would\n // sweep in every descendant node's text once a branch is expanded.\n aria-labelledby={labelId}\n aria-expanded={hasChildren ? expanded : undefined}\n aria-level={level}\n aria-posinset={posinset}\n aria-setsize={setsize}\n aria-selected={selected}\n aria-disabled={disabled || undefined}\n tabIndex={tabbable ? 0 : -1}\n onKeyDown={(event) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n onItemKeyDown(event);\n }}\n onClick={(event) => {\n onClick?.(event);\n if (event.defaultPrevented) return;\n // Clicks on a descendant node are that node's business — every treeitem in the ancestor\n // chain sees the bubbled event.\n if ((event.target as HTMLElement).closest(ITEM_SELECTOR) !== event.currentTarget) return;\n select();\n }}\n onFocus={(event) => {\n onFocus?.(event);\n if (event.target === event.currentTarget) setFocusedId(id);\n }}\n style={\n {\n // Inherited by the label, which draws the elbow from the same two values.\n \"--tree-guide-left\": `calc(var(--tree-indent) * ${level - 2} + 0.6875rem)`,\n // Stops 0.25rem short of the row's chevron rather than touching it, so the connector\n // reads as pointing at the row instead of welded to the glyph.\n \"--tree-elbow-run\": \"calc(var(--tree-indent) - 0.6875rem)\",\n // Shared by the elbow's corner and by where the same-column trunk picks up, so the two\n // meet exactly instead of overlapping or leaving a gap.\n \"--tree-elbow-radius\": \"0.5rem\",\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"relative outline-none\",\n // Direct-child selectors, deliberately not `group-*/tree-item`: tree items nest, and a\n // group variant matches *any* ancestor, so a focused or selected parent painted its focus\n // ring onto every descendant row. Backgrounds live on the label for the same reason —\n // anything painted here would spread behind the whole subtree.\n \"focus-visible:[&>[data-slot=tree-item-label]]:border-ring focus-visible:[&>[data-slot=tree-item-label]]:shadow-focus\",\n className,\n )}\n >\n {children}\n </div>\n </TreeItemContext.Provider>\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * TreeItemLabel\n * -----------------------------------------------------------------------------------------------*/\n\nconst treeItemLabelVariants = cva(\n \"flex w-full min-w-0 cursor-default items-center gap-1.5 rounded-md pr-2 text-left transition-colors select-none\",\n {\n variants: {\n size: {\n sm: \"h-6 text-xs\",\n default: \"h-7 text-sm\",\n lg: \"h-9 text-sm\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n },\n);\n\ntype TreeItemLabelProps = React.ComponentProps<\"div\"> &\n VariantProps<typeof treeItemLabelVariants> & {\n /**\n * Decorative leading icon, rendered between the chevron and the label text. Hidden from\n * assistive tech — the node's accessible name comes from the label text alone, so anything a\n * screen reader must convey belongs in the text, not here. Swap it on expansion (open/closed\n * folders) by reading `expanded` from `useTreeItem()` inside your own icon component.\n */\n icon?: React.ReactNode;\n /**\n * Right-aligned slot for per-node adornments — a count `Badge`, a `Spinner`, a status dot. It\n * sits inside the label, so its text joins the node's accessible name: a count reads as\n * \"Onboarding 3\", which is usually what you want. Wrap it in `aria-hidden` yourself for purely\n * decorative content such as a spinner.\n */\n trailing?: React.ReactNode;\n };\n\nfunction TreeItemLabel({ className, children, size, style, icon, trailing, ...props }: TreeItemLabelProps) {\n const { labelId, level, expanded, hasChildren, selected, disabled, trunkLevels, toggle } =\n useTreeItemContext(\"TreeItemLabel\");\n const { guides } = useTreeContext(\"TreeItemLabel\");\n\n // The elbow lives on the row because the label element *is* the row, so it can be sized in\n // halves of it — the curve has to land on the row's vertical centre. A connector joins a folder\n // to its subfolders, so only a branch row gets one.\n const showElbow = guides !== \"none\" && level > 1 && hasChildren;\n const showGuides = guides !== \"none\" && (showElbow || trunkLevels.length > 0);\n\n const textRef = React.useRef<HTMLSpanElement>(null);\n const [tooltipOpen, setTooltipOpen] = React.useState(false);\n\n // Truncation is measured when the tooltip would open, not tracked continuously: a\n // `ResizeObserver` per row would cost every row in a large tree for a hint almost none of them\n // need, and this answers the same question at the only moment it matters.\n const handleTooltipOpenChange = (next: boolean) => {\n const text = textRef.current;\n setTooltipOpen(next && !!text && text.scrollWidth > text.clientWidth);\n };\n\n return (\n <div\n // Spread first: the derived ARIA wiring below is authoritative. A consumer-supplied `id` would\n // otherwise break the `TreeItem` → `aria-labelledby` link that names the node.\n {...props}\n id={labelId}\n data-slot=\"tree-item-label\"\n // The row is a passive label, not a control: the parent `role=\"treeitem\"` owns focus, click\n // handling, keyboard handling and the accessible name, so a nested control would fight it.\n // `--tree-guide-left` / `--tree-elbow-run` are inherited from the `TreeItem`.\n style={{ paddingInlineStart: `calc(var(--tree-indent) * ${level - 1} + 0.25rem)`, ...style }}\n className={cn(\n treeItemLabelVariants({ size }),\n \"relative border border-transparent\",\n // Only selection paints a background — an open folder is already marked by its rotated\n // chevron, open-folder icon and the connectors running down from it.\n selected ? \"bg-accent text-accent-foreground font-medium\" : \"hover:bg-muted\",\n // From this node's own state, not an ancestor selector: `aria-disabled` is per-node, so a\n // disabled folder must not dim the contents underneath it.\n disabled && \"pointer-events-none opacity-50\",\n className,\n )}\n >\n {showGuides ? (\n // One absolutely-positioned layer owns every guide on this row, fixing two bugs at once.\n //\n // Paint order: the trunk used to be drawn by the `TreeItem`, an *ancestor* of every\n // descendant row. Those rows are positioned and paint an opaque hover/selected background\n // over anything an ancestor drew, so the trunk vanished behind whichever row you pointed\n // at. Drawn here it belongs to the row's own box, so it paints above that row's background\n // — and no sibling row can cover it, because every row draws its own segments.\n //\n // One coordinate system: `left` resolves against the nearest positioned ancestor's\n // *padding* box. The label carries `border border-transparent` for its focus ring while the\n // `TreeItem` carries none, so one `--tree-guide-left` landed 1px apart on the two elements\n // and the elbow/trunk overlap read as a 2px line. Both now share this container.\n <span\n data-slot=\"tree-item-guides\"\n aria-hidden=\"true\"\n className={cn(\n \"pointer-events-none absolute inset-0\",\n // The fade lives on the container, not on each line. Opacity on the parent renders the\n // whole layer into one buffer and composites it once, so a seam between two segments\n // can never double-expose mid-transition.\n guides === \"hover\" &&\n \"opacity-0 transition-opacity group-hover/tree:opacity-100 motion-reduce:transition-none\",\n )}\n >\n {trunkLevels.map((trunkLevel) => (\n <span\n key={trunkLevel}\n data-slot=\"tree-item-guide-trunk\"\n style={{ left: `calc(var(--tree-indent) * ${trunkLevel - 1} + 0.6875rem)` }}\n // Overshoots upward by half a chevron to cross the label's border into the row above,\n // so consecutive rows tile into one unbroken line.\n className=\"absolute top-[-0.4375rem] bottom-0 w-0 border-l border-[var(--tree-guide-color)]\"\n />\n ))}\n {showElbow ? (\n // Down the guide line, then a rounded turn right, stopping just short of this row's\n // chevron. Starts half a chevron above the row so the line emerges from under the\n // parent's chevron instead of leaving a half-row gap.\n <span\n data-slot=\"tree-item-guide-elbow\"\n className={cn(\n \"absolute top-[-0.4375rem] left-[var(--tree-guide-left)] border-[var(--tree-guide-color)]\",\n \"h-[calc(50%+0.4375rem)] w-[var(--tree-elbow-run)] border-b border-l\",\n \"rounded-bl-[var(--tree-elbow-radius)]\",\n )}\n />\n ) : null}\n </span>\n ) : null}\n {hasChildren ? (\n // A pointer-only affordance, deliberately not a `<button>`: expansion is reachable from the\n // keyboard through the parent treeitem's arrow keys, so this stays non-focusable. A focusable\n // element hidden from assistive tech is a contradiction, and inside a single-tab-stop widget\n // it would also be a second focus stop reachable by pointer.\n <span\n data-slot=\"tree-item-indicator\"\n aria-hidden=\"true\"\n onClick={(event) => {\n // Toggle from the chevron alone, without changing the selection.\n event.stopPropagation();\n toggle();\n }}\n className=\"flex size-3.5 shrink-0 items-center justify-center text-muted-foreground\"\n >\n <ChevronRightIcon className={cn(\"size-3.5 transition-transform\", expanded && \"rotate-90\")} />\n </span>\n ) : (\n <span data-slot=\"tree-item-indicator-spacer\" aria-hidden=\"true\" className=\"size-3.5 shrink-0\" />\n )}\n {icon ? (\n <span\n data-slot=\"tree-item-icon\"\n aria-hidden=\"true\"\n className={cn(\n \"flex size-4 shrink-0 items-center justify-center [&_svg]:size-4 [&_svg]:shrink-0\",\n selected ? \"text-accent-foreground\" : \"text-muted-foreground\",\n )}\n >\n {icon}\n </span>\n ) : null}\n <Tooltip open={tooltipOpen} onOpenChange={handleTooltipOpenChange}>\n <TooltipTrigger asChild>\n <span ref={textRef} className=\"min-w-0 flex-1 truncate\">\n {children}\n </span>\n </TooltipTrigger>\n {/*\n A purely visual repair for clipped text. The trigger is a plain `span`, so it never takes\n focus and this only ever opens on hover — and the node's accessible name already carries\n the label in full, so a screen reader is not relying on it.\n */}\n <TooltipContent>{children}</TooltipContent>\n </Tooltip>\n {trailing ? (\n <span\n data-slot=\"tree-item-trailing\"\n className=\"ml-auto flex shrink-0 items-center gap-1 [&_svg]:size-3.5\"\n >\n {trailing}\n </span>\n ) : null}\n </div>\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * TreeItemGroup\n * -----------------------------------------------------------------------------------------------*/\n\nfunction TreeItemGroup({ className, children, ...props }: React.ComponentProps<\"div\">) {\n const { expanded, level } = useTreeItemContext(\"TreeItemGroup\");\n\n // Not rendered while collapsed: keeps collapsed subtrees out of the accessibility tree entirely,\n // and makes DOM order equal visible order for keyboard traversal.\n if (!expanded) return null;\n\n return (\n <TreeLevelContext.Provider value={level + 1}>\n <div {...props} data-slot=\"tree-item-group\" role=\"group\" className={cn(\"flex flex-col\", className)}>\n <TreeItemsContainer>{children}</TreeItemsContainer>\n </div>\n </TreeLevelContext.Provider>\n );\n}\n\nexport {\n Tree,\n TreeItem,\n TreeItemGroup,\n TreeItemLabel,\n treeItemLabelVariants,\n useTreeItem,\n type TreeGuides,\n type TreeItemLabelProps,\n type TreeItemProps,\n type TreeProps,\n};\n"],"names":["TreeContext","React","useTreeContext","component","context","TreeLevelContext","TreeIndexContext","TreeItemContext","NO_TRUNKS","useTreeItemContext","useTreeItem","useIndexedTreeChildren","children","array","elements","setsize","isBranch","child","lastBranchPos","last","index","posinset","jsx","ITEM_SELECTOR","getVisibleItems","root","moveFocus","element","setFocusedId","id","navigateTo","event","stepBy","offset","items","TREE_KEY_HANDLERS","current","hasChildren","expanded","setExpanded","Tree","className","expandedIdsProp","defaultExpandedIds","onExpandedChange","selectedIdProp","defaultSelectedId","onSelectedChange","onActivate","expandOnSelect","guides","props","treeRef","expandedIds","setExpandedIds","useControllableState","selectedId","setSelectedId","focusedId","next","activateItem","activatedId","handleItemKeyDown","handler","cn","TooltipProvider","TreeItemsContainer","TreeItem","disabled","onClick","onFocus","onKeyDown","style","onItemKeyDown","level","labelId","selected","toggle","select","tabbable","inheritedTrunkLevels","trunkLevels","itemContext","treeItemLabelVariants","cva","TreeItemLabel","size","icon","trailing","showElbow","showGuides","textRef","tooltipOpen","setTooltipOpen","handleTooltipOpenChange","text","jsxs","trunkLevel","ChevronRightIcon","Tooltip","TooltipTrigger","TooltipContent","TreeItemGroup"],"mappings":";;;;;;;AAwCA,MAAMA,IAAcC,EAAM,cAAuC,IAAI;AAErE,SAASC,EAAeC,GAAmB;AACzC,QAAMC,IAAUH,EAAM,WAAWD,CAAW;AAC5C,MAAI,CAACI;AACH,UAAM,IAAI,MAAM,KAAKD,CAAS,wCAAwC;AAExE,SAAOC;AACT;AAEA,MAAMC,IAAmBJ,EAAM,cAAc,CAAC,GAaxCK,IAAmBL,EAAM,cAAqC;AAAA,EAClE,UAAU;AAAA,EACV,SAAS;AAAA,EACT,eAAe;AACjB,CAAC,GAmBKM,IAAkBN,EAAM,cAA2C,IAAI,GAGvEO,KAA+B,CAAA;AAErC,SAASC,EAAmBN,GAAmB;AAC7C,QAAMC,IAAUH,EAAM,WAAWM,CAAe;AAChD,MAAI,CAACH;AACH,UAAM,IAAI,MAAM,KAAKD,CAAS,4CAA4C;AAE5E,SAAOC;AACT;AAMA,SAASM,KAAc;AACrB,SAAOD,EAAmB,aAAa;AACzC;AAeA,SAASE,GAAuBC,GAA2B;AACzD,SAAOX,EAAM,QAAQ,MAAM;AACzB,UAAMY,IAAQZ,EAAM,SAAS,QAAQW,CAAQ,GACvCE,IAAWD,EAAM,OAAOZ,EAAM,cAAc,GAC5Cc,IAAUD,EAAS,QAMnBE,IAAW,CAACC,MAA+BA,EAAM,OAAyB,gBAAgB,IAC1FC,IAAgBJ,EAAS,OAAO,CAACK,GAAMF,GAAOG,MAAWJ,EAASC,CAAK,IAAIG,IAAQ,IAAID,GAAO,CAAC;AAErG,QAAIE,IAAW;AAEf,WAAOR,EAAM,IAAI,CAACI,GAAOG,MAClBnB,EAAM,eAAegB,CAAK,KAC/BI,KAAY,GAEV,gBAAAC,EAAChB,EAAiB,UAAjB,EAAmD,OAAO,EAAE,UAAAe,GAAU,SAAAN,GAAS,eAAAG,EAAA,GAC7E,UAAAD,EAAA,GAD6BA,EAAM,OAAOG,CAE7C,KALuCH,CAO1C;AAAA,EACH,GAAG,CAACL,CAAQ,CAAC;AACf;AAWA,MAAMW,IAAgB;AAEtB,SAASC,EAAgBC,GAA0B;AACjD,SAAKA,IACE,CAAC,GAAGA,EAAK,iBAA8BF,CAAa,CAAC,IAD1C,CAAA;AAEpB;AAEA,SAASG,GAAUC,GAAyCC,GAAoC;AAC9F,QAAMC,IAAKF,GAAS,QAAQ;AAC5B,EAAI,CAACA,KAAW,CAACE,MACjBD,EAAaC,CAAE,GACfF,EAAQ,MAAA;AACV;AAiBA,SAASG,EAAW,EAAE,OAAAC,GAAO,cAAAH,EAAA,GAA8BD,GAAyC;AAClG,EAAAI,EAAM,eAAA,GACNL,GAAUC,GAASC,CAAY;AACjC;AAEA,SAASI,EAAO5B,GAAuB6B,GAAgB;AACrD,QAAMC,IAAQV,EAAgBpB,EAAQ,IAAI;AAC1C,EAAA0B,EAAW1B,GAAS8B,EAAMA,EAAM,QAAQ9B,EAAQ,OAAO,IAAI6B,CAAM,CAAC;AACpE;AAMA,MAAME,KAAqE;AAAA,EACzE,WAAW,CAAC/B,MAAY4B,EAAO5B,GAAS,CAAC;AAAA,EACzC,SAAS,CAACA,MAAY4B,EAAO5B,GAAS,EAAE;AAAA,EACxC,YAAY,CAACA,MAAY;AACvB,UAAM,EAAE,OAAA2B,GAAO,SAAAK,GAAS,IAAAP,GAAI,aAAAQ,GAAa,UAAAC,GAAU,aAAAC,MAAgBnC;AACnE,QAAIiC,KAAe,CAACC,GAAU;AAC5B,MAAAP,EAAM,eAAA,GACNQ,EAAYV,GAAI,EAAI;AACpB;AAAA,IACF;AACA,IAAIS,KAAUR,EAAW1B,GAASgC,EAAQ,cAA2Bb,CAAa,CAAC;AAAA,EACrF;AAAA,EACA,WAAW,CAACnB,MAAY;AACtB,UAAM,EAAE,OAAA2B,GAAO,SAAAK,GAAS,IAAAP,GAAI,UAAAS,GAAU,aAAAC,MAAgBnC;AACtD,QAAIkC,GAAU;AACZ,MAAAP,EAAM,eAAA,GACNQ,EAAYV,GAAI,EAAK;AACrB;AAAA,IACF;AACA,IAAAC,EAAW1B,GAASgC,EAAQ,eAAe,QAAqBb,CAAa,CAAC;AAAA,EAChF;AAAA,EACA,MAAM,CAACnB,MAAY0B,EAAW1B,GAASoB,EAAgBpB,EAAQ,IAAI,EAAE,CAAC,CAAC;AAAA,EACvE,KAAK,CAACA,MAAY;AAChB,UAAM8B,IAAQV,EAAgBpB,EAAQ,IAAI;AAC1C,IAAA0B,EAAW1B,GAAS8B,EAAMA,EAAM,SAAS,CAAC,CAAC;AAAA,EAC7C;AAAA,EACA,OAAO,CAAC9B,MAAY;AAClB,IAAIA,EAAQ,aACZA,EAAQ,MAAM,eAAA,GACdA,EAAQ,SAASA,EAAQ,IAAIA,EAAQ,aAAaA,EAAQ,QAAQ;AAAA,EACpE;AACF;AA+BA,SAASoC,GAAK;AAAA,EACZ,WAAAC;AAAA,EACA,UAAA7B;AAAA,EACA,aAAa8B;AAAA,EACb,oBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,YAAYC;AAAA,EACZ,mBAAAC,IAAoB;AAAA,EACpB,kBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,gBAAAC,IAAiB;AAAA,EACjB,QAAAC,IAAS;AAAA,EACT,GAAGC;AACL,GAAc;AACZ,QAAMC,IAAUnD,EAAM,OAAuB,IAAI,GAE3C,CAACoD,GAAaC,CAAc,IAAIC,EAAkC;AAAA,IACtE,MAAMb;AAAA,IACN,aAAaC,KAAsB,oBAAI,IAAA;AAAA,IACvC,UAAUC;AAAA,EAAA,CACX,GACK,CAACY,GAAYC,CAAa,IAAIF,EAAoC;AAAA,IACtE,MAAMV;AAAA,IACN,aAAaC;AAAA,IACb,UAAU,CAACjB,MAAO;AAChB,MAAIA,KAAM,QAAMkB,IAAmBlB,CAAE;AAAA,IACvC;AAAA,EAAA,CACD,GACK,CAAC6B,GAAW9B,CAAY,IAAI3B,EAAM,SAAwB,IAAI,GAE9DsC,IAActC,EAAM;AAAA,IACxB,CAAC4B,GAAYS,MAAsB;AACjC,MAAAgB,EAAe,CAAClB,MAAY;AAC1B,cAAMuB,IAAO,IAAI,IAAIvB,CAAO;AAC5B,eAAIE,IAAUqB,EAAK,IAAI9B,CAAE,IACpB8B,EAAK,OAAO9B,CAAE,GACZ8B;AAAA,MACT,CAAC;AAAA,IACH;AAAA,IACA,CAACL,CAAc;AAAA,EAAA,GAGXM,IAAe3D,EAAM;AAAA,IACzB,CAAC4D,GAAqBxB,GAAsBC,MAAsB;AAChE,MAAAmB,EAAcI,CAAW,GACrBZ,KAAkBZ,KAAaE,EAAYsB,GAAa,CAACvB,CAAQ,GACrEU,IAAaa,CAAW;AAAA,IAC1B;AAAA,IACA,CAACJ,GAAeR,GAAgBV,GAAaS,CAAU;AAAA,EAAA,GAGnDc,IAAoB7D,EAAM;AAAA,IAC9B,CAAC8B,MAA4C;AAC3C,YAAMN,IAAO2B,EAAQ,SACfhB,IAAWL,EAAM,QAA+B,QAAqBR,CAAa,GAClFM,IAAKO,GAAS,QAAQ;AAC5B,UAAI,CAACX,KAAQ,CAACW,KAAW,CAACP,KAAM,CAACJ,EAAK,SAASW,CAAO,EAAG;AAEzD,YAAM2B,IAAU5B,GAAkBJ,EAAM,GAAG;AAC3C,MAAKgC,KAELA,EAAQ;AAAA,QACN,OAAAhC;AAAA,QACA,MAAAN;AAAA,QACA,SAAAW;AAAA,QACA,IAAAP;AAAA,QACA,aAAaO,EAAQ,QAAQ,oBAAoB;AAAA,QACjD,UAAUA,EAAQ,aAAa,eAAe,MAAM;AAAA,QACpD,UAAUA,EAAQ,aAAa,eAAe,MAAM;AAAA,QACpD,aAAAG;AAAA,QACA,cAAAX;AAAA,QACA,UAAUgC;AAAA,MAAA,CACX;AAAA,IACH;AAAA,IACA,CAACrB,GAAaqB,CAAY;AAAA,EAAA,GAGtBxD,IAAUH,EAAM;AAAA,IACpB,OAAO;AAAA,MACL,aAAaoD,KAAe,oBAAI,IAAA;AAAA,MAChC,aAAAd;AAAA,MACA,YAAYiB,KAAc;AAAA,MAC1B,cAAAI;AAAA,MACA,WAAAF;AAAA,MACA,cAAA9B;AAAA,MACA,gBAAAqB;AAAA,MACA,QAAAC;AAAA,MACA,eAAeY;AAAA,IAAA;AAAA,IAEjB,CAACT,GAAad,GAAaiB,GAAYI,GAAcF,GAAWT,GAAgBC,GAAQY,CAAiB;AAAA,EAAA;AAG3G,SACE,gBAAAxC,EAACtB,EAAY,UAAZ,EAAqB,OAAOI,GAC3B,UAAA,gBAAAkB,EAACjB,EAAiB,UAAjB,EAA0B,OAAO,GAChC,UAAA,gBAAAiB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAK8B;AAAA,MACL,aAAU;AAAA,MACV,eAAaF;AAAA,MACb,MAAK;AAAA,MACL,UAAU;AAAA,MAgBV,WAAWc;AAAA,QACT;AAAA,QACA;AAAA,QACAvB;AAAA,MAAA;AAAA,MAED,GAAGU;AAAA,MASJ,4BAACc,GAAA,EAAgB,eAAe,KAC9B,UAAA,gBAAA3C,EAAC4C,GAAA,EAAoB,UAAAtD,GAAS,EAAA,CAChC;AAAA,IAAA;AAAA,EAAA,GAEJ,EAAA,CACF;AAEJ;AAEA,SAASsD,EAAmB,EAAE,UAAAtD,KAA2C;AACvE,SAAOD,GAAuBC,CAAQ;AACxC;AAgBA,SAASuD,GAAS;AAAA,EAChB,WAAA1B;AAAA,EACA,UAAA7B;AAAA,EACA,IAAAiB;AAAA,EACA,aAAAQ,IAAc;AAAA,EACd,UAAA+B,IAAW;AAAA,EACX,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,GAAGrB;AACL,GAAkB;AAChB,QAAM,EAAE,aAAAE,GAAa,aAAAd,GAAa,YAAAiB,GAAY,cAAAI,GAAc,WAAAF,GAAW,cAAA9B,GAAc,eAAA6C,EAAA,IACnFvE,EAAe,UAAU,GACrBwE,IAAQzE,EAAM,WAAWI,CAAgB,GACzC,EAAE,UAAAgB,GAAU,SAAAN,GAAS,eAAAG,MAAkBjB,EAAM,WAAWK,CAAgB,GACxEqE,IAAU,GAAG1E,EAAM,MAAA,CAAO,UAE1BqC,IAAWD,KAAegB,EAAY,IAAIxB,CAAE,GAC5C+C,IAAWpB,MAAe3B,GAE1BgD,IAAS5E,EAAM,YAAY,MAAM;AACrC,IAAIoC,KAAaE,EAAYV,GAAI,CAACS,CAAQ;AAAA,EAC5C,GAAG,CAACD,GAAaE,GAAaV,GAAIS,CAAQ,CAAC,GAIrCwC,IAAS7E,EAAM,YAAY,MAAM;AACrC,IAAImE,MACJxC,EAAaC,CAAE,GACf+B,EAAa/B,GAAIQ,GAAaC,CAAQ;AAAA,EACxC,GAAG,CAAC8B,GAAUxC,GAAcC,GAAI+B,GAAcvB,GAAaC,CAAQ,CAAC,GAK9DyC,IAAWrB,IAAYA,MAAc7B,IAAK6C,MAAU,KAAKrD,MAAa,GAOtE2D,IADa/E,EAAM,WAAWM,CAAe,GACV,eAAeC,IAClDyE,IAAchF,EAAM;AAAA,IACxB,MAAOyE,IAAQ,KAAKrD,IAAWH,IAAgB,CAAC,GAAG8D,GAAsBN,IAAQ,CAAC,IAAIM;AAAA,IACtF,CAACA,GAAsBN,GAAOrD,GAAUH,CAAa;AAAA,EAAA,GAGjDgE,IAAcjF,EAAM;AAAA,IACxB,OAAO;AAAA,MACL,IAAA4B;AAAA,MACA,SAAA8C;AAAA,MACA,OAAAD;AAAA,MACA,UAAApC;AAAA,MACA,aAAAD;AAAA,MACA,UAAAuC;AAAA,MACA,UAAAR;AAAA,MACA,aAAAa;AAAA,MACA,QAAAJ;AAAA,MACA,QAAAC;AAAA,IAAA;AAAA,IAEF,CAACjD,GAAI8C,GAASD,GAAOpC,GAAUD,GAAauC,GAAUR,GAAUa,GAAaJ,GAAQC,CAAM;AAAA,EAAA;AAG7F,SACE,gBAAAxD,EAACf,EAAgB,UAAhB,EAAyB,OAAO2E,GAC/B,UAAA,gBAAA5D;AAAA,IAAC;AAAA,IAAA;AAAA,MAGE,GAAG6B;AAAA,MACJ,aAAU;AAAA,MACV,qBAAmBtB;AAAA,MACnB,0BAAwBQ;AAAA,MACxB,cAAYC,IAAW,aAAa;AAAA,MACpC,MAAK;AAAA,MAGL,mBAAiBqC;AAAA,MACjB,iBAAetC,IAAcC,IAAW;AAAA,MACxC,cAAYoC;AAAA,MACZ,iBAAerD;AAAA,MACf,gBAAcN;AAAA,MACd,iBAAe6D;AAAA,MACf,iBAAeR,KAAY;AAAA,MAC3B,UAAUW,IAAW,IAAI;AAAA,MACzB,WAAW,CAAChD,MAAU;AAEpB,QADAwC,IAAYxC,CAAK,GACb,CAAAA,EAAM,oBACV0C,EAAc1C,CAAK;AAAA,MACrB;AAAA,MACA,SAAS,CAACA,MAAU;AAElB,QADAsC,IAAUtC,CAAK,GACX,CAAAA,EAAM,oBAGLA,EAAM,OAAuB,QAAQR,CAAa,MAAMQ,EAAM,iBACnE+C,EAAA;AAAA,MACF;AAAA,MACA,SAAS,CAAC/C,MAAU;AAClB,QAAAuC,IAAUvC,CAAK,GACXA,EAAM,WAAWA,EAAM,mBAA4BF,CAAE;AAAA,MAC3D;AAAA,MACA,OACE;AAAA;AAAA,QAEE,qBAAqB,6BAA6B6C,IAAQ,CAAC;AAAA;AAAA;AAAA,QAG3D,oBAAoB;AAAA;AAAA;AAAA,QAGpB,uBAAuB;AAAA,QACvB,GAAGF;AAAA,MAAA;AAAA,MAGP,WAAWR;AAAA,QACT;AAAA;AAAA;AAAA;AAAA;AAAA,QAKA;AAAA,QACAvB;AAAA,MAAA;AAAA,MAGD,UAAA7B;AAAA,IAAA;AAAA,EAAA,GAEL;AAEJ;AAMA,MAAMuE,KAAwBC;AAAA,EAC5B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,MAAA;AAAA,IACN;AAAA,IAEF,iBAAiB;AAAA,MACf,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ;AAoBA,SAASC,GAAc,EAAE,WAAA5C,GAAW,UAAA7B,GAAU,MAAA0E,GAAM,OAAAd,GAAO,MAAAe,GAAM,UAAAC,GAAU,GAAGrC,KAA6B;AACzG,QAAM,EAAE,SAAAwB,GAAS,OAAAD,GAAO,UAAApC,GAAU,aAAAD,GAAa,UAAAuC,GAAU,UAAAR,GAAU,aAAAa,GAAa,QAAAJ,MAC9EpE,EAAmB,eAAe,GAC9B,EAAE,QAAAyC,EAAA,IAAWhD,EAAe,eAAe,GAK3CuF,IAAYvC,MAAW,UAAUwB,IAAQ,KAAKrC,GAC9CqD,IAAaxC,MAAW,WAAWuC,KAAaR,EAAY,SAAS,IAErEU,IAAU1F,EAAM,OAAwB,IAAI,GAC5C,CAAC2F,GAAaC,CAAc,IAAI5F,EAAM,SAAS,EAAK,GAKpD6F,IAA0B,CAACnC,MAAkB;AACjD,UAAMoC,IAAOJ,EAAQ;AACrB,IAAAE,EAAelC,KAAQ,CAAC,CAACoC,KAAQA,EAAK,cAAcA,EAAK,WAAW;AAAA,EACtE;AAEA,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MAGE,GAAG7C;AAAA,MACJ,IAAIwB;AAAA,MACJ,aAAU;AAAA,MAIV,OAAO,EAAE,oBAAoB,6BAA6BD,IAAQ,CAAC,eAAe,GAAGF,EAAA;AAAA,MACrF,WAAWR;AAAA,QACTmB,GAAsB,EAAE,MAAAG,GAAM;AAAA,QAC9B;AAAA;AAAA;AAAA,QAGAV,IAAW,iDAAiD;AAAA;AAAA;AAAA,QAG5DR,KAAY;AAAA,QACZ3B;AAAA,MAAA;AAAA,MAGD,UAAA;AAAA,QAAAiD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAaC,gBAAAM;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,aAAU;AAAA,cACV,eAAY;AAAA,cACZ,WAAWhC;AAAA,gBACT;AAAA;AAAA;AAAA;AAAA,gBAIAd,MAAW,WACT;AAAA,cAAA;AAAA,cAGH,UAAA;AAAA,gBAAA+B,EAAY,IAAI,CAACgB,MAChB,gBAAA3E;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBAEC,aAAU;AAAA,oBACV,OAAO,EAAE,MAAM,6BAA6B2E,IAAa,CAAC,gBAAA;AAAA,oBAG1D,WAAU;AAAA,kBAAA;AAAA,kBALLA;AAAA,gBAAA,CAOR;AAAA,gBACAR;AAAA;AAAA;AAAA;AAAA,kBAIC,gBAAAnE;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,aAAU;AAAA,sBACV,WAAW0C;AAAA,wBACT;AAAA,wBACA;AAAA,wBACA;AAAA,sBAAA;AAAA,oBACF;AAAA,kBAAA;AAAA,oBAEA;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,YAEJ;AAAA,QACH3B;AAAA;AAAA;AAAA;AAAA;AAAA,UAKC,gBAAAf;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,aAAU;AAAA,cACV,eAAY;AAAA,cACZ,SAAS,CAACS,MAAU;AAElB,gBAAAA,EAAM,gBAAA,GACN8C,EAAA;AAAA,cACF;AAAA,cACA,WAAU;AAAA,cAEV,4BAACqB,GAAA,EAAiB,WAAWlC,EAAG,iCAAiC1B,KAAY,WAAW,EAAA,CAAG;AAAA,YAAA;AAAA,UAAA;AAAA,8BAG5F,QAAA,EAAK,aAAU,8BAA6B,eAAY,QAAO,WAAU,qBAAoB;AAAA,QAE/FiD,IACC,gBAAAjE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,aAAU;AAAA,YACV,eAAY;AAAA,YACZ,WAAW0C;AAAA,cACT;AAAA,cACAY,IAAW,2BAA2B;AAAA,YAAA;AAAA,YAGvC,UAAAW;AAAA,UAAA;AAAA,QAAA,IAED;AAAA,QACJ,gBAAAS,EAACG,GAAA,EAAQ,MAAMP,GAAa,cAAcE,GACxC,UAAA;AAAA,UAAA,gBAAAxE,EAAC8E,GAAA,EAAe,SAAO,IACrB,UAAA,gBAAA9E,EAAC,QAAA,EAAK,KAAKqE,GAAS,WAAU,2BAC3B,UAAA/E,EAAA,CACH,EAAA,CACF;AAAA,UAMA,gBAAAU,EAAC+E,KAAgB,UAAAzF,EAAA,CAAS;AAAA,QAAA,GAC5B;AAAA,QACC4E,IACC,gBAAAlE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,aAAU;AAAA,YACV,WAAU;AAAA,YAET,UAAAkE;AAAA,UAAA;AAAA,QAAA,IAED;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGV;AAMA,SAASc,GAAc,EAAE,WAAA7D,GAAW,UAAA7B,GAAU,GAAGuC,KAAsC;AACrF,QAAM,EAAE,UAAAb,GAAU,OAAAoC,MAAUjE,EAAmB,eAAe;AAI9D,SAAK6B,IAGH,gBAAAhB,EAACjB,EAAiB,UAAjB,EAA0B,OAAOqE,IAAQ,GACxC,UAAA,gBAAApD,EAAC,OAAA,EAAK,GAAG6B,GAAO,aAAU,mBAAkB,MAAK,SAAQ,WAAWa,EAAG,iBAAiBvB,CAAS,GAC/F,UAAA,gBAAAnB,EAAC4C,GAAA,EAAoB,UAAAtD,EAAA,CAAS,EAAA,CAChC,EAAA,CACF,IAPoB;AASxB;"}