@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,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),H=require("class-variance-authority"),E=require("lucide-react"),U=require("radix-ui"),$=require("react"),G=require("../../../ui/button.cjs"),m=require("../../../ui/sheet.cjs"),x=require("../../../lib/utils.cjs");function L(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const r in t)if(r!=="default"){const i=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,i.get?i:{enumerable:!0,get:()=>t[r]})}}return e.default=t,Object.freeze(e)}const u=L($),Y="ts-ui.right-panel";function q(t){return`${Y}.${t}.width`}function b(t,e,r){return Math.min(r,Math.max(e,t))}function Z(t,e,r,i){if(typeof window>"u")return e;let l;try{l=Number(window.localStorage.getItem(q(t)))}catch{return e}return!Number.isFinite(l)||l<=0?e:b(l,r,i)}function J(t,e){if(!(typeof window>"u"))try{window.localStorage.setItem(q(t),String(Math.round(e)))}catch{}}const I=H.cva("inline-flex items-center justify-center border-none cursor-pointer transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",{variants:{variant:{fab:"absolute bottom-4 right-4 z-40 rounded-full bg-primary text-primary-foreground shadow-elevation-4 hover:bg-primary/90 focus-visible:ring-offset-2 focus-visible:ring-offset-background motion-safe:animate-in motion-safe:fade-in-0 motion-safe:zoom-in-95",icon:"rounded-lg bg-transparent text-muted-foreground hover:bg-accent hover:text-accent-foreground aria-expanded:bg-accent aria-expanded:text-foreground"},size:{default:"",lg:""}},compoundVariants:[{variant:"fab",size:"default",class:"size-10 [&_svg:not([class*='size-'])]:size-4"},{variant:"fab",size:"lg",class:"size-12 [&_svg:not([class*='size-'])]:size-5"},{variant:"icon",size:"default",class:"size-7 [&_svg:not([class*='size-'])]:size-4"},{variant:"icon",size:"lg",class:"size-8 [&_svg:not([class*='size-'])]:size-4"}],defaultVariants:{variant:"fab",size:"default"}});function M({className:t,variant:e,size:r,asChild:i=!1,children:l,...f}){const s=i?U.Slot.Root:"button";return n.jsx(s,{...i?{}:{type:"button"},"data-slot":"data-app-shell-right-panel-trigger","data-variant":e??"fab",className:x.cn(I({variant:e,size:r}),t),...f,children:i?l:l??n.jsx(E.PanelRightOpen,{})})}const T=16;function Q({width:t,minWidth:e,maxWidth:r,onResize:i,onCommit:l,onDraggingChange:f}){const s=u.useRef(null),c=u.useRef(t);c.current=t;const g=a=>{if(a.button===0){s.current={startX:a.clientX,startWidth:c.current,liveWidth:c.current};try{a.currentTarget.setPointerCapture(a.pointerId)}catch{}f(!0)}},d=a=>{if(!s.current)return;const o=s.current.startX-a.clientX,v=b(s.current.startWidth+o,e,r);s.current.liveWidth=v,i(v)},p=a=>{if(!s.current)return;const o=s.current.liveWidth;s.current=null,a.currentTarget.hasPointerCapture(a.pointerId)&&a.currentTarget.releasePointerCapture(a.pointerId),f(!1),l(o)},y=a=>{let o=null;switch(a.key){case"ArrowLeft":o=b(c.current+T,e,r);break;case"ArrowRight":o=b(c.current-T,e,r);break;case"Home":o=e;break;case"End":o=r;break}o!=null&&(a.preventDefault(),i(o),l(o))};return n.jsx("div",{"data-slot":"data-app-shell-right-panel-drag-handle",role:"separator","aria-orientation":"vertical","aria-label":"Resize panel","aria-valuemin":e,"aria-valuemax":r,"aria-valuenow":Math.round(t),tabIndex:0,className:x.cn("absolute inset-y-0 left-0 z-10 w-px cursor-col-resize touch-none select-none bg-transparent transition-colors","after:absolute after:inset-y-0 after:left-1/2 after:w-3 after:-translate-x-1/2","hover:bg-border active:bg-border focus-visible:outline-none focus-visible:bg-ring","flex items-center justify-center","[&>div]:opacity-0 hover:[&>div]:opacity-100 active:[&>div]:opacity-100 focus-visible:[&>div]:opacity-100"),onPointerDown:g,onPointerMove:d,onPointerUp:p,onPointerCancel:p,onKeyDown:y,children:n.jsx("div",{className:"z-10 h-6 w-1 shrink-0 rounded-lg bg-muted-foreground/40 transition-opacity"})})}function W({id:t,open:e,onOpenChange:r,variant:i="docked",resizable:l=!0,defaultWidth:f=320,minWidth:s=240,maxWidth:c=560,persist:g=!0,title:d,icon:p,headerActions:y,showTrigger:a=!0,triggerIcon:o,triggerLabel:v="Open panel",triggerRef:C,children:O,className:w,ref:X,...R}){const[S,F]=u.useState(()=>g?Z(t,f,s,c):b(f,s,c)),[K,V]=u.useState(!1),z=u.useRef(null),P=u.useRef(null),j=a?P:C,B=u.useCallback(h=>{g&&J(t,h)},[t,g]),D=u.useRef(!1);u.useEffect(()=>{if(!D.current){D.current=!0;return}e?z.current?.focus({preventScroll:!0}):j?.current?.focus({preventScroll:!0})},[e,j]);const k=typeof d=="string"?d:"Side panel",N=a?n.jsx(M,{ref:P,"aria-label":v,"aria-expanded":!1,onClick:()=>r?.(!0),children:o}):null,A=n.jsxs("div",{"data-slot":"data-app-shell-right-panel-header",className:"flex shrink-0 items-center gap-2 border-b border-border px-3 py-2",children:[p!=null&&n.jsx("span",{className:"flex shrink-0 items-center justify-center",children:p}),d!=null&&n.jsx("span",{className:"min-w-0 flex-1 truncate text-sm font-semibold text-foreground",children:d}),d==null&&n.jsx("span",{className:"flex-1"}),y,n.jsx(G.Button,{ref:z,variant:"ghost",size:"icon-sm",className:"text-muted-foreground","aria-label":"Close panel",onClick:()=>r?.(!1),children:n.jsx(E.X,{})})]}),_=n.jsx("div",{"data-slot":"data-app-shell-right-panel-content",className:"flex min-h-0 flex-1 flex-col overflow-auto",children:O});return i==="overlay"?n.jsxs(n.Fragment,{children:[n.jsx(m.Sheet,{open:e,onOpenChange:r,children:n.jsxs(m.SheetContent,{side:"right",showCloseButton:!1,"data-slot":"data-app-shell-right-panel","data-variant":"overlay",onCloseAutoFocus:h=>{h.preventDefault(),j?.current?.focus({preventScroll:!0})},style:{width:S},className:x.cn("gap-0 data-[side=right]:sm:max-w-none",w),...R,children:[n.jsx(m.SheetTitle,{className:"sr-only",children:k}),n.jsx(m.SheetDescription,{className:"sr-only",children:"Side panel overlay"}),A,_]})}),!e&&N]}):e?n.jsxs("aside",{ref:X,"data-slot":"data-app-shell-right-panel","data-variant":"docked","aria-label":k,style:{width:S},className:x.cn("relative flex h-full shrink-0 flex-col overflow-hidden border-l border-border bg-background","motion-safe:animate-in motion-safe:fade-in-0 motion-safe:slide-in-from-right-4",!K&&"motion-safe:transition-[width] motion-safe:duration-200",w),onKeyDown:h=>{h.key==="Escape"&&r?.(!1)},...R,children:[l&&n.jsx(Q,{width:S,minWidth:s,maxWidth:c,onResize:F,onCommit:B,onDraggingChange:V}),A,_]}):N}exports.DataAppShellRightPanel=W;exports.DataAppShellRightPanelTrigger=M;exports.dataAppShellRightPanelTriggerVariants=I;
2
+ //# sourceMappingURL=RightPanel.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RightPanel.cjs","sources":["../../../../src/components/composed/DataAppShell/RightPanel.tsx"],"sourcesContent":["\"use client\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { PanelRightOpen, X } from \"lucide-react\";\nimport { Slot } from \"radix-ui\";\nimport * as React from \"react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { Sheet, SheetContent, SheetDescription, SheetTitle } from \"@/components/ui/sheet\";\nimport { cn } from \"@/lib/utils\";\n\n// =============================================================================\n// Width persistence — one localStorage entry per panel `id`\n// =============================================================================\n\nconst STORAGE_PREFIX = \"ts-ui.right-panel\";\n\nfunction storageKey(id: string): string {\n return `${STORAGE_PREFIX}.${id}.width`;\n}\n\nfunction clampWidth(width: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, width));\n}\n\nfunction readWidth(id: string, fallback: number, min: number, max: number): number {\n if (typeof window === \"undefined\") return fallback;\n let v: number;\n try {\n v = Number(window.localStorage.getItem(storageKey(id)));\n } catch {\n // Storage can be blocked (privacy mode, sandboxed iframe) — fall back.\n return fallback;\n }\n if (!Number.isFinite(v) || v <= 0) return fallback;\n return clampWidth(v, min, max);\n}\n\nfunction persistWidth(id: string, width: number) {\n if (typeof window === \"undefined\") return;\n try {\n window.localStorage.setItem(storageKey(id), String(Math.round(width)));\n } catch {\n // Storage blocked or full — resizing still works, the width just isn't persisted.\n }\n}\n\n// =============================================================================\n// Trigger — FAB over the content area, or an icon button for the top bar\n// =============================================================================\n\nconst dataAppShellRightPanelTriggerVariants = cva(\n \"inline-flex items-center justify-center border-none cursor-pointer transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n {\n variants: {\n variant: {\n /** Floating action button, bottom-right of the nearest `relative` container */\n fab: \"absolute bottom-4 right-4 z-40 rounded-full bg-primary text-primary-foreground shadow-elevation-4 hover:bg-primary/90 focus-visible:ring-offset-2 focus-visible:ring-offset-background motion-safe:animate-in motion-safe:fade-in-0 motion-safe:zoom-in-95\",\n /** Ghost icon button matching top-bar actions — place in `headerActions` */\n icon: \"rounded-lg bg-transparent text-muted-foreground hover:bg-accent hover:text-accent-foreground aria-expanded:bg-accent aria-expanded:text-foreground\",\n },\n size: {\n default: \"\",\n lg: \"\",\n },\n },\n compoundVariants: [\n { variant: \"fab\", size: \"default\", class: \"size-10 [&_svg:not([class*='size-'])]:size-4\" },\n { variant: \"fab\", size: \"lg\", class: \"size-12 [&_svg:not([class*='size-'])]:size-5\" },\n { variant: \"icon\", size: \"default\", class: \"size-7 [&_svg:not([class*='size-'])]:size-4\" },\n { variant: \"icon\", size: \"lg\", class: \"size-8 [&_svg:not([class*='size-'])]:size-4\" },\n ],\n defaultVariants: { variant: \"fab\", size: \"default\" },\n },\n);\n\nexport interface DataAppShellRightPanelTriggerProps\n extends React.ComponentProps<\"button\">,\n VariantProps<typeof dataAppShellRightPanelTriggerVariants> {\n /** Merge the trigger styling/props onto the child element instead of\n * rendering a `<button>` — makes anything clickable a panel trigger. */\n asChild?: boolean;\n}\n\n/**\n * Trigger for a `DataAppShellRightPanel`, in two variants:\n *\n * - `fab` (default) — floating action button; what the panel auto-renders\n * while closed. Positioned `absolute` — place inside a `relative` container\n * (normally the shell's content area).\n * - `icon` — ghost icon button sized like the shell's top-bar actions. Place\n * it in the shell's `headerActions`, set `showTrigger={false}` on the panel,\n * and pass the same ref to the panel's `triggerRef` so focus returns here\n * when the panel closes.\n *\n * With `asChild` the trigger renders no element of its own and instead merges\n * onto its child — any clickable element (a link, menu item, custom button)\n * can act as the trigger.\n */\nfunction DataAppShellRightPanelTrigger({\n className,\n variant,\n size,\n asChild = false,\n children,\n ...props\n}: DataAppShellRightPanelTriggerProps) {\n const Comp = asChild ? Slot.Root : \"button\";\n return (\n <Comp\n // `type` only when we own the element — a slotted child may not be a button\n {...(asChild ? {} : { type: \"button\" as const })}\n data-slot=\"data-app-shell-right-panel-trigger\"\n data-variant={variant ?? \"fab\"}\n className={cn(dataAppShellRightPanelTriggerVariants({ variant, size }), className)}\n {...props}\n >\n {asChild ? children : (children ?? <PanelRightOpen />)}\n </Comp>\n );\n}\n\n// =============================================================================\n// DragHandle — pointer + keyboard resize on the panel's left edge\n// =============================================================================\n\n/** Pixels per arrow-key press when resizing with the keyboard. */\nconst KEYBOARD_RESIZE_STEP = 16;\n\ninterface DragHandleProps {\n width: number;\n minWidth: number;\n maxWidth: number;\n /** Live width updates while dragging (not yet persisted). */\n onResize: (width: number) => void;\n /** Final width once the interaction ends — persist here. */\n onCommit: (width: number) => void;\n onDraggingChange: (dragging: boolean) => void;\n}\n\n/**\n * Vertical resize handle docked on the panel's left edge. Pointer-driven\n * (px-based, unlike the percentage-based `Resizable` group primitive) so the\n * panel keeps an absolute width that can be persisted per `id`. Also a\n * keyboard-operable ARIA separator: arrows resize, Home/End jump to min/max.\n */\nfunction DragHandle({ width, minWidth, maxWidth, onResize, onCommit, onDraggingChange }: DragHandleProps) {\n const dragState = React.useRef<{ startX: number; startWidth: number; liveWidth: number } | null>(null);\n const widthRef = React.useRef(width);\n widthRef.current = width;\n\n const handlePointerDown = (e: React.PointerEvent<HTMLDivElement>) => {\n // Primary button / touch only\n if (e.button !== 0) return;\n dragState.current = { startX: e.clientX, startWidth: widthRef.current, liveWidth: widthRef.current };\n try {\n e.currentTarget.setPointerCapture(e.pointerId);\n } catch {\n // Synthetic pointer events (play tests) have no active pointer to\n // capture; move/up still arrive via the handle's own listeners.\n }\n onDraggingChange(true);\n };\n\n const handlePointerMove = (e: React.PointerEvent<HTMLDivElement>) => {\n if (!dragState.current) return;\n // Handle sits on the left edge — dragging left grows the panel.\n const delta = dragState.current.startX - e.clientX;\n const next = clampWidth(dragState.current.startWidth + delta, minWidth, maxWidth);\n dragState.current.liveWidth = next;\n onResize(next);\n };\n\n const endDrag = (e: React.PointerEvent<HTMLDivElement>) => {\n if (!dragState.current) return;\n // Commit the drag state's own width — pointermove renders lazily, so the\n // width prop can be one frame stale when pointerup lands.\n const finalWidth = dragState.current.liveWidth;\n dragState.current = null;\n if (e.currentTarget.hasPointerCapture(e.pointerId)) {\n e.currentTarget.releasePointerCapture(e.pointerId);\n }\n onDraggingChange(false);\n onCommit(finalWidth);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n let next: number | null = null;\n switch (e.key) {\n case \"ArrowLeft\": // handle moves left → panel grows\n next = clampWidth(widthRef.current + KEYBOARD_RESIZE_STEP, minWidth, maxWidth);\n break;\n case \"ArrowRight\":\n next = clampWidth(widthRef.current - KEYBOARD_RESIZE_STEP, minWidth, maxWidth);\n break;\n case \"Home\":\n next = minWidth;\n break;\n case \"End\":\n next = maxWidth;\n break;\n }\n if (next == null) return;\n e.preventDefault();\n onResize(next);\n onCommit(next);\n };\n\n return (\n <div\n data-slot=\"data-app-shell-right-panel-drag-handle\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label=\"Resize panel\"\n aria-valuemin={minWidth}\n aria-valuemax={maxWidth}\n aria-valuenow={Math.round(width)}\n tabIndex={0}\n className={cn(\n // 1px seam over the panel's left border; wide invisible grab area via ::after\n \"absolute inset-y-0 left-0 z-10 w-px cursor-col-resize touch-none select-none bg-transparent transition-colors\",\n \"after:absolute after:inset-y-0 after:left-1/2 after:w-3 after:-translate-x-1/2\",\n // reveal on hover / drag (border color) and keyboard focus (ring color)\n \"hover:bg-border active:bg-border focus-visible:outline-none focus-visible:bg-ring\",\n // centered grip dots, revealed with the seam\n \"flex items-center justify-center\",\n \"[&>div]:opacity-0 hover:[&>div]:opacity-100 active:[&>div]:opacity-100 focus-visible:[&>div]:opacity-100\",\n )}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={endDrag}\n onPointerCancel={endDrag}\n onKeyDown={handleKeyDown}\n >\n <div className=\"z-10 h-6 w-1 shrink-0 rounded-lg bg-muted-foreground/40 transition-opacity\" />\n </div>\n );\n}\n\n// =============================================================================\n// DataAppShellRightPanel\n// =============================================================================\n\nexport type DataAppShellRightPanelVariant = \"docked\" | \"overlay\";\n\nexport interface DataAppShellRightPanelProps extends Omit<React.ComponentProps<\"aside\">, \"id\" | \"title\"> {\n /** Unique panel id — keys the persisted width in localStorage. */\n id: string;\n /** Whether the panel is shown or collapsed to the FAB trigger. */\n open: boolean;\n /** Called with the next open state (close button, Esc, scrim click, FAB). */\n onOpenChange?: (open: boolean) => void;\n /**\n * `docked` (default) — in-flow flex sibling: opening/resizing pushes main narrower.\n * `overlay` — reuses the design-system `Sheet`: slides in over content with a scrim, no reflow.\n */\n variant?: DataAppShellRightPanelVariant;\n /** Show the drag handle and allow resizing. Defaults to `true`. Docked only — the overlay has a fixed width. */\n resizable?: boolean;\n /** Width in px when nothing is persisted yet. */\n defaultWidth?: number;\n /** Minimum width in px the panel can be resized to. */\n minWidth?: number;\n /** Maximum width in px the panel can be resized to. */\n maxWidth?: number;\n /** Persist the width to localStorage. Defaults to `true`. */\n persist?: boolean;\n /** Header title. The header row also carries the close button. */\n title?: React.ReactNode;\n /** Optional element rendered before the title (e.g. an app icon). */\n icon?: React.ReactNode;\n /** Extra elements rendered in the header, before the close button. */\n headerActions?: React.ReactNode;\n /** Render the floating FAB trigger while closed. Defaults to `true`. Set\n * `false` when the trigger lives elsewhere (e.g. an `icon`-variant\n * `DataAppShellRightPanelTrigger` in the shell's `headerActions`). */\n showTrigger?: boolean;\n /** Icon inside the FAB trigger. Defaults to a panel-open icon. */\n triggerIcon?: React.ReactNode;\n /** Accessible label for the FAB trigger. */\n triggerLabel?: string;\n /** Ref to an external trigger (e.g. a top-bar icon trigger) that receives\n * focus when the panel closes and `showTrigger` is `false`. */\n triggerRef?: React.RefObject<HTMLButtonElement | null>;\n /** Panel content — any React node (a chat, history list, inspector, …). */\n children?: React.ReactNode;\n}\n\n/**\n * Right-hand panel for the Data App Shell (SW-2117), in two variants:\n *\n * - `docked` (default) — rendered in normal flow as a flex sibling of the main\n * content, so opening/resizing pushes main narrower. Width is drag-resizable\n * and persisted per `id`.\n * - `overlay` — reuses the design-system `Sheet` (`side=\"right\"`): slides in\n * over the content with a scrim and does not reflow main.\n *\n * In both variants a floating FAB trigger re-opens the panel while it is\n * closed, and the body is a plain slot — a chat, history list, inspector, ….\n * Pass it to the shell's `rightPanel` slot, or place it after the main content\n * inside a `relative` flex row:\n *\n * ```tsx\n * <div className=\"relative flex flex-1 min-h-0\">\n * <main className=\"flex-1 min-w-0\">…</main>\n * <DataAppShellRightPanel id=\"chat\" open={open} onOpenChange={setOpen} title=\"Chat\">\n * …\n * </DataAppShellRightPanel>\n * </div>\n * ```\n */\nfunction DataAppShellRightPanel({\n id,\n open,\n onOpenChange,\n variant = \"docked\",\n resizable = true,\n defaultWidth = 320,\n minWidth = 240,\n maxWidth = 560,\n persist = true,\n title,\n icon,\n headerActions,\n showTrigger = true,\n triggerIcon,\n triggerLabel = \"Open panel\",\n triggerRef,\n children,\n className,\n ref,\n ...props\n}: DataAppShellRightPanelProps) {\n const [width, setWidth] = React.useState<number>(() =>\n persist ? readWidth(id, defaultWidth, minWidth, maxWidth) : clampWidth(defaultWidth, minWidth, maxWidth),\n );\n const [dragging, setDragging] = React.useState(false);\n\n const closeButtonRef = React.useRef<HTMLButtonElement>(null);\n const fabRef = React.useRef<HTMLButtonElement>(null);\n // Focus lands on the built-in FAB when it renders, else on the external trigger.\n const closeFocusRef = showTrigger ? fabRef : triggerRef;\n\n const commitWidth = React.useCallback(\n (next: number) => {\n if (persist) persistWidth(id, next);\n },\n [id, persist],\n );\n\n // Focus follows the open state: into the panel on open, back to the FAB on\n // close — but only on actual transitions, not on mount.\n const mountedRef = React.useRef(false);\n React.useEffect(() => {\n if (!mountedRef.current) {\n mountedRef.current = true;\n return;\n }\n // preventScroll — plain .focus() scrolls the target into view, which\n // jolts any scrollable ancestor (e.g. a Storybook docs page) on toggle.\n if (open) closeButtonRef.current?.focus({ preventScroll: true });\n else closeFocusRef?.current?.focus({ preventScroll: true });\n }, [open, closeFocusRef]);\n\n const accessibleName = typeof title === \"string\" ? title : \"Side panel\";\n\n const fab = showTrigger ? (\n <DataAppShellRightPanelTrigger\n ref={fabRef}\n aria-label={triggerLabel}\n aria-expanded={false}\n onClick={() => onOpenChange?.(true)}\n >\n {triggerIcon}\n </DataAppShellRightPanelTrigger>\n ) : null;\n\n const header = (\n <div\n data-slot=\"data-app-shell-right-panel-header\"\n className=\"flex shrink-0 items-center gap-2 border-b border-border px-3 py-2\"\n >\n {icon != null && <span className=\"flex shrink-0 items-center justify-center\">{icon}</span>}\n {title != null && <span className=\"min-w-0 flex-1 truncate text-sm font-semibold text-foreground\">{title}</span>}\n {title == null && <span className=\"flex-1\" />}\n {headerActions}\n <Button\n ref={closeButtonRef}\n variant=\"ghost\"\n size=\"icon-sm\"\n className=\"text-muted-foreground\"\n aria-label=\"Close panel\"\n onClick={() => onOpenChange?.(false)}\n >\n <X />\n </Button>\n </div>\n );\n\n const content = (\n <div data-slot=\"data-app-shell-right-panel-content\" className=\"flex min-h-0 flex-1 flex-col overflow-auto\">\n {children}\n </div>\n );\n\n // Overlay — reuse the design-system Sheet: scrim, slide-in, Esc/click-out\n // close and focus trapping all come from the primitive. No reflow of main.\n if (variant === \"overlay\") {\n return (\n <>\n <Sheet open={open} onOpenChange={onOpenChange}>\n <SheetContent\n side=\"right\"\n showCloseButton={false}\n data-slot=\"data-app-shell-right-panel\"\n data-variant=\"overlay\"\n // The FAB remounts on close, so radix's default \"restore previous\n // focus\" targets a dead node — send focus to the new FAB instead.\n onCloseAutoFocus={(e) => {\n e.preventDefault();\n closeFocusRef?.current?.focus({ preventScroll: true });\n }}\n style={{ width }}\n className={cn(\"gap-0 data-[side=right]:sm:max-w-none\", className)}\n {...props}\n >\n <SheetTitle className=\"sr-only\">{accessibleName}</SheetTitle>\n <SheetDescription className=\"sr-only\">Side panel overlay</SheetDescription>\n {header}\n {content}\n </SheetContent>\n </Sheet>\n {!open && fab}\n </>\n );\n }\n\n if (!open) return fab;\n\n return (\n <aside\n ref={ref}\n data-slot=\"data-app-shell-right-panel\"\n data-variant=\"docked\"\n aria-label={accessibleName}\n style={{ width }}\n className={cn(\n \"relative flex h-full shrink-0 flex-col overflow-hidden border-l border-border bg-background\",\n \"motion-safe:animate-in motion-safe:fade-in-0 motion-safe:slide-in-from-right-4\",\n !dragging && \"motion-safe:transition-[width] motion-safe:duration-200\",\n className,\n )}\n onKeyDown={(e) => {\n if (e.key === \"Escape\") onOpenChange?.(false);\n }}\n {...props}\n >\n {resizable && (\n <DragHandle\n width={width}\n minWidth={minWidth}\n maxWidth={maxWidth}\n onResize={setWidth}\n onCommit={commitWidth}\n onDraggingChange={setDragging}\n />\n )}\n\n {header}\n {content}\n </aside>\n );\n}\n\nexport { DataAppShellRightPanel, DataAppShellRightPanelTrigger, dataAppShellRightPanelTriggerVariants };\n"],"names":["STORAGE_PREFIX","storageKey","id","clampWidth","width","min","max","readWidth","fallback","v","persistWidth","dataAppShellRightPanelTriggerVariants","cva","DataAppShellRightPanelTrigger","className","variant","size","asChild","children","props","Comp","Slot","jsx","cn","PanelRightOpen","KEYBOARD_RESIZE_STEP","DragHandle","minWidth","maxWidth","onResize","onCommit","onDraggingChange","dragState","React","widthRef","handlePointerDown","e","handlePointerMove","delta","next","endDrag","finalWidth","handleKeyDown","DataAppShellRightPanel","open","onOpenChange","resizable","defaultWidth","persist","title","icon","headerActions","showTrigger","triggerIcon","triggerLabel","triggerRef","ref","setWidth","dragging","setDragging","closeButtonRef","fabRef","closeFocusRef","commitWidth","mountedRef","accessibleName","fab","header","jsxs","Button","X","content","Fragment","Sheet","SheetContent","SheetTitle","SheetDescription"],"mappings":"mmBAeMA,EAAiB,oBAEvB,SAASC,EAAWC,EAAoB,CACtC,MAAO,GAAGF,CAAc,IAAIE,CAAE,QAChC,CAEA,SAASC,EAAWC,EAAeC,EAAaC,EAAqB,CACnE,OAAO,KAAK,IAAIA,EAAK,KAAK,IAAID,EAAKD,CAAK,CAAC,CAC3C,CAEA,SAASG,EAAUL,EAAYM,EAAkBH,EAAaC,EAAqB,CACjF,GAAI,OAAO,OAAW,IAAa,OAAOE,EAC1C,IAAIC,EACJ,GAAI,CACFA,EAAI,OAAO,OAAO,aAAa,QAAQR,EAAWC,CAAE,CAAC,CAAC,CACxD,MAAQ,CAEN,OAAOM,CACT,CACA,MAAI,CAAC,OAAO,SAASC,CAAC,GAAKA,GAAK,EAAUD,EACnCL,EAAWM,EAAGJ,EAAKC,CAAG,CAC/B,CAEA,SAASI,EAAaR,EAAYE,EAAe,CAC/C,GAAI,SAAO,OAAW,KACtB,GAAI,CACF,OAAO,aAAa,QAAQH,EAAWC,CAAE,EAAG,OAAO,KAAK,MAAME,CAAK,CAAC,CAAC,CACvE,MAAQ,CAER,CACF,CAMA,MAAMO,EAAwCC,EAAAA,IAC5C,+JACA,CACE,SAAU,CACR,QAAS,CAEP,IAAK,6PAEL,KAAM,oJAAA,EAER,KAAM,CACJ,QAAS,GACT,GAAI,EAAA,CACN,EAEF,iBAAkB,CAChB,CAAE,QAAS,MAAO,KAAM,UAAW,MAAO,8CAAA,EAC1C,CAAE,QAAS,MAAO,KAAM,KAAM,MAAO,8CAAA,EACrC,CAAE,QAAS,OAAQ,KAAM,UAAW,MAAO,6CAAA,EAC3C,CAAE,QAAS,OAAQ,KAAM,KAAM,MAAO,6CAAA,CAA8C,EAEtF,gBAAiB,CAAE,QAAS,MAAO,KAAM,SAAA,CAAU,CAEvD,EAyBA,SAASC,EAA8B,CACrC,UAAAC,EACA,QAAAC,EACA,KAAAC,EACA,QAAAC,EAAU,GACV,SAAAC,EACA,GAAGC,CACL,EAAuC,CACrC,MAAMC,EAAOH,EAAUI,EAAAA,KAAK,KAAO,SACnC,OACEC,EAAAA,IAACF,EAAA,CAEE,GAAIH,EAAU,CAAA,EAAK,CAAE,KAAM,QAAA,EAC5B,YAAU,qCACV,eAAcF,GAAW,MACzB,UAAWQ,EAAAA,GAAGZ,EAAsC,CAAE,QAAAI,EAAS,KAAAC,CAAA,CAAM,EAAGF,CAAS,EAChF,GAAGK,EAEH,SAAAF,EAAUC,EAAYA,GAAYI,EAAAA,IAACE,EAAAA,eAAA,CAAA,CAAe,CAAA,CAAA,CAGzD,CAOA,MAAMC,EAAuB,GAmB7B,SAASC,EAAW,CAAE,MAAAtB,EAAO,SAAAuB,EAAU,SAAAC,EAAU,SAAAC,EAAU,SAAAC,EAAU,iBAAAC,GAAqC,CACxG,MAAMC,EAAYC,EAAM,OAAyE,IAAI,EAC/FC,EAAWD,EAAM,OAAO7B,CAAK,EACnC8B,EAAS,QAAU9B,EAEnB,MAAM+B,EAAqBC,GAA0C,CAEnE,GAAIA,EAAE,SAAW,EACjB,CAAAJ,EAAU,QAAU,CAAE,OAAQI,EAAE,QAAS,WAAYF,EAAS,QAAS,UAAWA,EAAS,OAAA,EAC3F,GAAI,CACFE,EAAE,cAAc,kBAAkBA,EAAE,SAAS,CAC/C,MAAQ,CAGR,CACAL,EAAiB,EAAI,EACvB,EAEMM,EAAqBD,GAA0C,CACnE,GAAI,CAACJ,EAAU,QAAS,OAExB,MAAMM,EAAQN,EAAU,QAAQ,OAASI,EAAE,QACrCG,EAAOpC,EAAW6B,EAAU,QAAQ,WAAaM,EAAOX,EAAUC,CAAQ,EAChFI,EAAU,QAAQ,UAAYO,EAC9BV,EAASU,CAAI,CACf,EAEMC,EAAWJ,GAA0C,CACzD,GAAI,CAACJ,EAAU,QAAS,OAGxB,MAAMS,EAAaT,EAAU,QAAQ,UACrCA,EAAU,QAAU,KAChBI,EAAE,cAAc,kBAAkBA,EAAE,SAAS,GAC/CA,EAAE,cAAc,sBAAsBA,EAAE,SAAS,EAEnDL,EAAiB,EAAK,EACtBD,EAASW,CAAU,CACrB,EAEMC,EAAiBN,GAA2C,CAChE,IAAIG,EAAsB,KAC1B,OAAQH,EAAE,IAAA,CACR,IAAK,YACHG,EAAOpC,EAAW+B,EAAS,QAAUT,EAAsBE,EAAUC,CAAQ,EAC7E,MACF,IAAK,aACHW,EAAOpC,EAAW+B,EAAS,QAAUT,EAAsBE,EAAUC,CAAQ,EAC7E,MACF,IAAK,OACHW,EAAOZ,EACP,MACF,IAAK,MACHY,EAAOX,EACP,KAAA,CAEAW,GAAQ,OACZH,EAAE,eAAA,EACFP,EAASU,CAAI,EACbT,EAASS,CAAI,EACf,EAEA,OACEjB,EAAAA,IAAC,MAAA,CACC,YAAU,yCACV,KAAK,YACL,mBAAiB,WACjB,aAAW,eACX,gBAAeK,EACf,gBAAeC,EACf,gBAAe,KAAK,MAAMxB,CAAK,EAC/B,SAAU,EACV,UAAWmB,EAAAA,GAET,gHACA,iFAEA,oFAEA,mCACA,0GAAA,EAEF,cAAeY,EACf,cAAeE,EACf,YAAaG,EACb,gBAAiBA,EACjB,UAAWE,EAEX,SAAApB,EAAAA,IAAC,MAAA,CAAI,UAAU,4EAAA,CAA6E,CAAA,CAAA,CAGlG,CA0EA,SAASqB,EAAuB,CAC9B,GAAAzC,EACA,KAAA0C,EACA,aAAAC,EACA,QAAA9B,EAAU,SACV,UAAA+B,EAAY,GACZ,aAAAC,EAAe,IACf,SAAApB,EAAW,IACX,SAAAC,EAAW,IACX,QAAAoB,EAAU,GACV,MAAAC,EACA,KAAAC,EACA,cAAAC,EACA,YAAAC,EAAc,GACd,YAAAC,EACA,aAAAC,EAAe,aACf,WAAAC,EACA,SAAArC,EACA,UAAAJ,EACA,IAAA0C,EACA,GAAGrC,CACL,EAAgC,CAC9B,KAAM,CAACf,EAAOqD,CAAQ,EAAIxB,EAAM,SAAiB,IAC/Ce,EAAUzC,EAAUL,EAAI6C,EAAcpB,EAAUC,CAAQ,EAAIzB,EAAW4C,EAAcpB,EAAUC,CAAQ,CAAA,EAEnG,CAAC8B,EAAUC,CAAW,EAAI1B,EAAM,SAAS,EAAK,EAE9C2B,EAAiB3B,EAAM,OAA0B,IAAI,EACrD4B,EAAS5B,EAAM,OAA0B,IAAI,EAE7C6B,EAAgBV,EAAcS,EAASN,EAEvCQ,EAAc9B,EAAM,YACvBM,GAAiB,CACZS,GAAStC,EAAaR,EAAIqC,CAAI,CACpC,EACA,CAACrC,EAAI8C,CAAO,CAAA,EAKRgB,EAAa/B,EAAM,OAAO,EAAK,EACrCA,EAAM,UAAU,IAAM,CACpB,GAAI,CAAC+B,EAAW,QAAS,CACvBA,EAAW,QAAU,GACrB,MACF,CAGIpB,EAAMgB,EAAe,SAAS,MAAM,CAAE,cAAe,GAAM,KAC3C,SAAS,MAAM,CAAE,cAAe,GAAM,CAC5D,EAAG,CAAChB,EAAMkB,CAAa,CAAC,EAExB,MAAMG,EAAiB,OAAOhB,GAAU,SAAWA,EAAQ,aAErDiB,EAAMd,EACV9B,EAAAA,IAACT,EAAA,CACC,IAAKgD,EACL,aAAYP,EACZ,gBAAe,GACf,QAAS,IAAMT,IAAe,EAAI,EAEjC,SAAAQ,CAAA,CAAA,EAED,KAEEc,EACJC,EAAAA,KAAC,MAAA,CACC,YAAU,oCACV,UAAU,oEAET,SAAA,CAAAlB,GAAQ,MAAQ5B,EAAAA,IAAC,OAAA,CAAK,UAAU,4CAA6C,SAAA4B,EAAK,EAClFD,GAAS,MAAQ3B,EAAAA,IAAC,OAAA,CAAK,UAAU,gEAAiE,SAAA2B,EAAM,EACxGA,GAAS,MAAQ3B,EAAAA,IAAC,OAAA,CAAK,UAAU,SAAS,EAC1C6B,EACD7B,EAAAA,IAAC+C,EAAAA,OAAA,CACC,IAAKT,EACL,QAAQ,QACR,KAAK,UACL,UAAU,wBACV,aAAW,cACX,QAAS,IAAMf,IAAe,EAAK,EAEnC,eAACyB,EAAAA,EAAA,CAAA,CAAE,CAAA,CAAA,CACL,CAAA,CAAA,EAIEC,EACJjD,MAAC,MAAA,CAAI,YAAU,qCAAqC,UAAU,6CAC3D,SAAAJ,EACH,EAKF,OAAIH,IAAY,UAEZqD,EAAAA,KAAAI,WAAA,CACE,SAAA,CAAAlD,EAAAA,IAACmD,EAAAA,MAAA,CAAM,KAAA7B,EAAY,aAAAC,EACjB,SAAAuB,EAAAA,KAACM,EAAAA,aAAA,CACC,KAAK,QACL,gBAAiB,GACjB,YAAU,6BACV,eAAa,UAGb,iBAAmBtC,GAAM,CACvBA,EAAE,eAAA,EACF0B,GAAe,SAAS,MAAM,CAAE,cAAe,GAAM,CACvD,EACA,MAAO,CAAE,MAAA1D,CAAA,EACT,UAAWmB,EAAAA,GAAG,wCAAyCT,CAAS,EAC/D,GAAGK,EAEJ,SAAA,CAAAG,EAAAA,IAACqD,EAAAA,WAAA,CAAW,UAAU,UAAW,SAAAV,EAAe,EAChD3C,EAAAA,IAACsD,EAAAA,iBAAA,CAAiB,UAAU,UAAU,SAAA,qBAAkB,EACvDT,EACAI,CAAA,CAAA,CAAA,EAEL,EACC,CAAC3B,GAAQsB,CAAA,EACZ,EAICtB,EAGHwB,EAAAA,KAAC,QAAA,CACC,IAAAZ,EACA,YAAU,6BACV,eAAa,SACb,aAAYS,EACZ,MAAO,CAAE,MAAA7D,CAAA,EACT,UAAWmB,EAAAA,GACT,8FACA,iFACA,CAACmC,GAAY,0DACb5C,CAAA,EAEF,UAAYsB,GAAM,CACZA,EAAE,MAAQ,UAAUS,IAAe,EAAK,CAC9C,EACC,GAAG1B,EAEH,SAAA,CAAA2B,GACCxB,EAAAA,IAACI,EAAA,CACC,MAAAtB,EACA,SAAAuB,EACA,SAAAC,EACA,SAAU6B,EACV,SAAUM,EACV,iBAAkBJ,CAAA,CAAA,EAIrBQ,EACAI,CAAA,CAAA,CAAA,EAhCaL,CAmCpB"}
@@ -0,0 +1,95 @@
1
+ import { VariantProps } from 'class-variance-authority';
2
+ import * as React from "react";
3
+ declare const dataAppShellRightPanelTriggerVariants: (props?: ({
4
+ variant?: "icon" | "fab" | null | undefined;
5
+ size?: "default" | "lg" | null | undefined;
6
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
7
+ export interface DataAppShellRightPanelTriggerProps extends React.ComponentProps<"button">, VariantProps<typeof dataAppShellRightPanelTriggerVariants> {
8
+ /** Merge the trigger styling/props onto the child element instead of
9
+ * rendering a `<button>` — makes anything clickable a panel trigger. */
10
+ asChild?: boolean;
11
+ }
12
+ /**
13
+ * Trigger for a `DataAppShellRightPanel`, in two variants:
14
+ *
15
+ * - `fab` (default) — floating action button; what the panel auto-renders
16
+ * while closed. Positioned `absolute` — place inside a `relative` container
17
+ * (normally the shell's content area).
18
+ * - `icon` — ghost icon button sized like the shell's top-bar actions. Place
19
+ * it in the shell's `headerActions`, set `showTrigger={false}` on the panel,
20
+ * and pass the same ref to the panel's `triggerRef` so focus returns here
21
+ * when the panel closes.
22
+ *
23
+ * With `asChild` the trigger renders no element of its own and instead merges
24
+ * onto its child — any clickable element (a link, menu item, custom button)
25
+ * can act as the trigger.
26
+ */
27
+ declare function DataAppShellRightPanelTrigger({ className, variant, size, asChild, children, ...props }: DataAppShellRightPanelTriggerProps): import("react/jsx-runtime").JSX.Element;
28
+ export type DataAppShellRightPanelVariant = "docked" | "overlay";
29
+ export interface DataAppShellRightPanelProps extends Omit<React.ComponentProps<"aside">, "id" | "title"> {
30
+ /** Unique panel id — keys the persisted width in localStorage. */
31
+ id: string;
32
+ /** Whether the panel is shown or collapsed to the FAB trigger. */
33
+ open: boolean;
34
+ /** Called with the next open state (close button, Esc, scrim click, FAB). */
35
+ onOpenChange?: (open: boolean) => void;
36
+ /**
37
+ * `docked` (default) — in-flow flex sibling: opening/resizing pushes main narrower.
38
+ * `overlay` — reuses the design-system `Sheet`: slides in over content with a scrim, no reflow.
39
+ */
40
+ variant?: DataAppShellRightPanelVariant;
41
+ /** Show the drag handle and allow resizing. Defaults to `true`. Docked only — the overlay has a fixed width. */
42
+ resizable?: boolean;
43
+ /** Width in px when nothing is persisted yet. */
44
+ defaultWidth?: number;
45
+ /** Minimum width in px the panel can be resized to. */
46
+ minWidth?: number;
47
+ /** Maximum width in px the panel can be resized to. */
48
+ maxWidth?: number;
49
+ /** Persist the width to localStorage. Defaults to `true`. */
50
+ persist?: boolean;
51
+ /** Header title. The header row also carries the close button. */
52
+ title?: React.ReactNode;
53
+ /** Optional element rendered before the title (e.g. an app icon). */
54
+ icon?: React.ReactNode;
55
+ /** Extra elements rendered in the header, before the close button. */
56
+ headerActions?: React.ReactNode;
57
+ /** Render the floating FAB trigger while closed. Defaults to `true`. Set
58
+ * `false` when the trigger lives elsewhere (e.g. an `icon`-variant
59
+ * `DataAppShellRightPanelTrigger` in the shell's `headerActions`). */
60
+ showTrigger?: boolean;
61
+ /** Icon inside the FAB trigger. Defaults to a panel-open icon. */
62
+ triggerIcon?: React.ReactNode;
63
+ /** Accessible label for the FAB trigger. */
64
+ triggerLabel?: string;
65
+ /** Ref to an external trigger (e.g. a top-bar icon trigger) that receives
66
+ * focus when the panel closes and `showTrigger` is `false`. */
67
+ triggerRef?: React.RefObject<HTMLButtonElement | null>;
68
+ /** Panel content — any React node (a chat, history list, inspector, …). */
69
+ children?: React.ReactNode;
70
+ }
71
+ /**
72
+ * Right-hand panel for the Data App Shell (SW-2117), in two variants:
73
+ *
74
+ * - `docked` (default) — rendered in normal flow as a flex sibling of the main
75
+ * content, so opening/resizing pushes main narrower. Width is drag-resizable
76
+ * and persisted per `id`.
77
+ * - `overlay` — reuses the design-system `Sheet` (`side="right"`): slides in
78
+ * over the content with a scrim and does not reflow main.
79
+ *
80
+ * In both variants a floating FAB trigger re-opens the panel while it is
81
+ * closed, and the body is a plain slot — a chat, history list, inspector, ….
82
+ * Pass it to the shell's `rightPanel` slot, or place it after the main content
83
+ * inside a `relative` flex row:
84
+ *
85
+ * ```tsx
86
+ * <div className="relative flex flex-1 min-h-0">
87
+ * <main className="flex-1 min-w-0">…</main>
88
+ * <DataAppShellRightPanel id="chat" open={open} onOpenChange={setOpen} title="Chat">
89
+ * …
90
+ * </DataAppShellRightPanel>
91
+ * </div>
92
+ * ```
93
+ */
94
+ declare function DataAppShellRightPanel({ id, open, onOpenChange, variant, resizable, defaultWidth, minWidth, maxWidth, persist, title, icon, headerActions, showTrigger, triggerIcon, triggerLabel, triggerRef, children, className, ref, ...props }: DataAppShellRightPanelProps): import("react/jsx-runtime").JSX.Element | null;
95
+ export { DataAppShellRightPanel, DataAppShellRightPanelTrigger, dataAppShellRightPanelTriggerVariants };
@@ -0,0 +1,282 @@
1
+ import { jsxs as b, Fragment as V, jsx as a } from "react/jsx-runtime";
2
+ import { cva as H } from "class-variance-authority";
3
+ import { PanelRightOpen as $, X as G } from "lucide-react";
4
+ import { Slot as L } from "radix-ui";
5
+ import * as u from "react";
6
+ import { Button as O } from "../../../ui/button.js";
7
+ import { Sheet as U, SheetContent as Y, SheetTitle as Z, SheetDescription as q } from "../../../ui/sheet.js";
8
+ import { cn as y } from "../../../lib/utils.js";
9
+ const J = "ts-ui.right-panel";
10
+ function T(t) {
11
+ return `${J}.${t}.width`;
12
+ }
13
+ function m(t, e, n) {
14
+ return Math.min(n, Math.max(e, t));
15
+ }
16
+ function Q(t, e, n, l) {
17
+ if (typeof window > "u") return e;
18
+ let s;
19
+ try {
20
+ s = Number(window.localStorage.getItem(T(t)));
21
+ } catch {
22
+ return e;
23
+ }
24
+ return !Number.isFinite(s) || s <= 0 ? e : m(s, n, l);
25
+ }
26
+ function W(t, e) {
27
+ if (!(typeof window > "u"))
28
+ try {
29
+ window.localStorage.setItem(T(t), String(Math.round(e)));
30
+ } catch {
31
+ }
32
+ }
33
+ const ee = H(
34
+ "inline-flex items-center justify-center border-none cursor-pointer transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
35
+ {
36
+ variants: {
37
+ variant: {
38
+ /** Floating action button, bottom-right of the nearest `relative` container */
39
+ fab: "absolute bottom-4 right-4 z-40 rounded-full bg-primary text-primary-foreground shadow-elevation-4 hover:bg-primary/90 focus-visible:ring-offset-2 focus-visible:ring-offset-background motion-safe:animate-in motion-safe:fade-in-0 motion-safe:zoom-in-95",
40
+ /** Ghost icon button matching top-bar actions — place in `headerActions` */
41
+ icon: "rounded-lg bg-transparent text-muted-foreground hover:bg-accent hover:text-accent-foreground aria-expanded:bg-accent aria-expanded:text-foreground"
42
+ },
43
+ size: {
44
+ default: "",
45
+ lg: ""
46
+ }
47
+ },
48
+ compoundVariants: [
49
+ { variant: "fab", size: "default", class: "size-10 [&_svg:not([class*='size-'])]:size-4" },
50
+ { variant: "fab", size: "lg", class: "size-12 [&_svg:not([class*='size-'])]:size-5" },
51
+ { variant: "icon", size: "default", class: "size-7 [&_svg:not([class*='size-'])]:size-4" },
52
+ { variant: "icon", size: "lg", class: "size-8 [&_svg:not([class*='size-'])]:size-4" }
53
+ ],
54
+ defaultVariants: { variant: "fab", size: "default" }
55
+ }
56
+ );
57
+ function te({
58
+ className: t,
59
+ variant: e,
60
+ size: n,
61
+ asChild: l = !1,
62
+ children: s,
63
+ ...f
64
+ }) {
65
+ const o = l ? L.Root : "button";
66
+ return /* @__PURE__ */ a(
67
+ o,
68
+ {
69
+ ...l ? {} : { type: "button" },
70
+ "data-slot": "data-app-shell-right-panel-trigger",
71
+ "data-variant": e ?? "fab",
72
+ className: y(ee({ variant: e, size: n }), t),
73
+ ...f,
74
+ children: l ? s : s ?? /* @__PURE__ */ a($, {})
75
+ }
76
+ );
77
+ }
78
+ const C = 16;
79
+ function re({ width: t, minWidth: e, maxWidth: n, onResize: l, onCommit: s, onDraggingChange: f }) {
80
+ const o = u.useRef(null), c = u.useRef(t);
81
+ c.current = t;
82
+ const g = (r) => {
83
+ if (r.button === 0) {
84
+ o.current = { startX: r.clientX, startWidth: c.current, liveWidth: c.current };
85
+ try {
86
+ r.currentTarget.setPointerCapture(r.pointerId);
87
+ } catch {
88
+ }
89
+ f(!0);
90
+ }
91
+ }, d = (r) => {
92
+ if (!o.current) return;
93
+ const i = o.current.startX - r.clientX, v = m(o.current.startWidth + i, e, n);
94
+ o.current.liveWidth = v, l(v);
95
+ }, p = (r) => {
96
+ if (!o.current) return;
97
+ const i = o.current.liveWidth;
98
+ o.current = null, r.currentTarget.hasPointerCapture(r.pointerId) && r.currentTarget.releasePointerCapture(r.pointerId), f(!1), s(i);
99
+ }, w = (r) => {
100
+ let i = null;
101
+ switch (r.key) {
102
+ case "ArrowLeft":
103
+ i = m(c.current + C, e, n);
104
+ break;
105
+ case "ArrowRight":
106
+ i = m(c.current - C, e, n);
107
+ break;
108
+ case "Home":
109
+ i = e;
110
+ break;
111
+ case "End":
112
+ i = n;
113
+ break;
114
+ }
115
+ i != null && (r.preventDefault(), l(i), s(i));
116
+ };
117
+ return /* @__PURE__ */ a(
118
+ "div",
119
+ {
120
+ "data-slot": "data-app-shell-right-panel-drag-handle",
121
+ role: "separator",
122
+ "aria-orientation": "vertical",
123
+ "aria-label": "Resize panel",
124
+ "aria-valuemin": e,
125
+ "aria-valuemax": n,
126
+ "aria-valuenow": Math.round(t),
127
+ tabIndex: 0,
128
+ className: y(
129
+ // 1px seam over the panel's left border; wide invisible grab area via ::after
130
+ "absolute inset-y-0 left-0 z-10 w-px cursor-col-resize touch-none select-none bg-transparent transition-colors",
131
+ "after:absolute after:inset-y-0 after:left-1/2 after:w-3 after:-translate-x-1/2",
132
+ // reveal on hover / drag (border color) and keyboard focus (ring color)
133
+ "hover:bg-border active:bg-border focus-visible:outline-none focus-visible:bg-ring",
134
+ // centered grip dots, revealed with the seam
135
+ "flex items-center justify-center",
136
+ "[&>div]:opacity-0 hover:[&>div]:opacity-100 active:[&>div]:opacity-100 focus-visible:[&>div]:opacity-100"
137
+ ),
138
+ onPointerDown: g,
139
+ onPointerMove: d,
140
+ onPointerUp: p,
141
+ onPointerCancel: p,
142
+ onKeyDown: w,
143
+ children: /* @__PURE__ */ a("div", { className: "z-10 h-6 w-1 shrink-0 rounded-lg bg-muted-foreground/40 transition-opacity" })
144
+ }
145
+ );
146
+ }
147
+ function ue({
148
+ id: t,
149
+ open: e,
150
+ onOpenChange: n,
151
+ variant: l = "docked",
152
+ resizable: s = !0,
153
+ defaultWidth: f = 320,
154
+ minWidth: o = 240,
155
+ maxWidth: c = 560,
156
+ persist: g = !0,
157
+ title: d,
158
+ icon: p,
159
+ headerActions: w,
160
+ showTrigger: r = !0,
161
+ triggerIcon: i,
162
+ triggerLabel: v = "Open panel",
163
+ triggerRef: _,
164
+ children: M,
165
+ className: R,
166
+ ref: X,
167
+ ...S
168
+ }) {
169
+ const [x, j] = u.useState(
170
+ () => g ? Q(t, f, o, c) : m(f, o, c)
171
+ ), [F, K] = u.useState(!1), k = u.useRef(null), N = u.useRef(null), z = r ? N : _, B = u.useCallback(
172
+ (h) => {
173
+ g && W(t, h);
174
+ },
175
+ [t, g]
176
+ ), P = u.useRef(!1);
177
+ u.useEffect(() => {
178
+ if (!P.current) {
179
+ P.current = !0;
180
+ return;
181
+ }
182
+ e ? k.current?.focus({ preventScroll: !0 }) : z?.current?.focus({ preventScroll: !0 });
183
+ }, [e, z]);
184
+ const D = typeof d == "string" ? d : "Side panel", E = r ? /* @__PURE__ */ a(
185
+ te,
186
+ {
187
+ ref: N,
188
+ "aria-label": v,
189
+ "aria-expanded": !1,
190
+ onClick: () => n?.(!0),
191
+ children: i
192
+ }
193
+ ) : null, A = /* @__PURE__ */ b(
194
+ "div",
195
+ {
196
+ "data-slot": "data-app-shell-right-panel-header",
197
+ className: "flex shrink-0 items-center gap-2 border-b border-border px-3 py-2",
198
+ children: [
199
+ p != null && /* @__PURE__ */ a("span", { className: "flex shrink-0 items-center justify-center", children: p }),
200
+ d != null && /* @__PURE__ */ a("span", { className: "min-w-0 flex-1 truncate text-sm font-semibold text-foreground", children: d }),
201
+ d == null && /* @__PURE__ */ a("span", { className: "flex-1" }),
202
+ w,
203
+ /* @__PURE__ */ a(
204
+ O,
205
+ {
206
+ ref: k,
207
+ variant: "ghost",
208
+ size: "icon-sm",
209
+ className: "text-muted-foreground",
210
+ "aria-label": "Close panel",
211
+ onClick: () => n?.(!1),
212
+ children: /* @__PURE__ */ a(G, {})
213
+ }
214
+ )
215
+ ]
216
+ }
217
+ ), I = /* @__PURE__ */ a("div", { "data-slot": "data-app-shell-right-panel-content", className: "flex min-h-0 flex-1 flex-col overflow-auto", children: M });
218
+ return l === "overlay" ? /* @__PURE__ */ b(V, { children: [
219
+ /* @__PURE__ */ a(U, { open: e, onOpenChange: n, children: /* @__PURE__ */ b(
220
+ Y,
221
+ {
222
+ side: "right",
223
+ showCloseButton: !1,
224
+ "data-slot": "data-app-shell-right-panel",
225
+ "data-variant": "overlay",
226
+ onCloseAutoFocus: (h) => {
227
+ h.preventDefault(), z?.current?.focus({ preventScroll: !0 });
228
+ },
229
+ style: { width: x },
230
+ className: y("gap-0 data-[side=right]:sm:max-w-none", R),
231
+ ...S,
232
+ children: [
233
+ /* @__PURE__ */ a(Z, { className: "sr-only", children: D }),
234
+ /* @__PURE__ */ a(q, { className: "sr-only", children: "Side panel overlay" }),
235
+ A,
236
+ I
237
+ ]
238
+ }
239
+ ) }),
240
+ !e && E
241
+ ] }) : e ? /* @__PURE__ */ b(
242
+ "aside",
243
+ {
244
+ ref: X,
245
+ "data-slot": "data-app-shell-right-panel",
246
+ "data-variant": "docked",
247
+ "aria-label": D,
248
+ style: { width: x },
249
+ className: y(
250
+ "relative flex h-full shrink-0 flex-col overflow-hidden border-l border-border bg-background",
251
+ "motion-safe:animate-in motion-safe:fade-in-0 motion-safe:slide-in-from-right-4",
252
+ !F && "motion-safe:transition-[width] motion-safe:duration-200",
253
+ R
254
+ ),
255
+ onKeyDown: (h) => {
256
+ h.key === "Escape" && n?.(!1);
257
+ },
258
+ ...S,
259
+ children: [
260
+ s && /* @__PURE__ */ a(
261
+ re,
262
+ {
263
+ width: x,
264
+ minWidth: o,
265
+ maxWidth: c,
266
+ onResize: j,
267
+ onCommit: B,
268
+ onDraggingChange: K
269
+ }
270
+ ),
271
+ A,
272
+ I
273
+ ]
274
+ }
275
+ ) : E;
276
+ }
277
+ export {
278
+ ue as DataAppShellRightPanel,
279
+ te as DataAppShellRightPanelTrigger,
280
+ ee as dataAppShellRightPanelTriggerVariants
281
+ };
282
+ //# sourceMappingURL=RightPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RightPanel.js","sources":["../../../../src/components/composed/DataAppShell/RightPanel.tsx"],"sourcesContent":["\"use client\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { PanelRightOpen, X } from \"lucide-react\";\nimport { Slot } from \"radix-ui\";\nimport * as React from \"react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { Sheet, SheetContent, SheetDescription, SheetTitle } from \"@/components/ui/sheet\";\nimport { cn } from \"@/lib/utils\";\n\n// =============================================================================\n// Width persistence — one localStorage entry per panel `id`\n// =============================================================================\n\nconst STORAGE_PREFIX = \"ts-ui.right-panel\";\n\nfunction storageKey(id: string): string {\n return `${STORAGE_PREFIX}.${id}.width`;\n}\n\nfunction clampWidth(width: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, width));\n}\n\nfunction readWidth(id: string, fallback: number, min: number, max: number): number {\n if (typeof window === \"undefined\") return fallback;\n let v: number;\n try {\n v = Number(window.localStorage.getItem(storageKey(id)));\n } catch {\n // Storage can be blocked (privacy mode, sandboxed iframe) — fall back.\n return fallback;\n }\n if (!Number.isFinite(v) || v <= 0) return fallback;\n return clampWidth(v, min, max);\n}\n\nfunction persistWidth(id: string, width: number) {\n if (typeof window === \"undefined\") return;\n try {\n window.localStorage.setItem(storageKey(id), String(Math.round(width)));\n } catch {\n // Storage blocked or full — resizing still works, the width just isn't persisted.\n }\n}\n\n// =============================================================================\n// Trigger — FAB over the content area, or an icon button for the top bar\n// =============================================================================\n\nconst dataAppShellRightPanelTriggerVariants = cva(\n \"inline-flex items-center justify-center border-none cursor-pointer transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n {\n variants: {\n variant: {\n /** Floating action button, bottom-right of the nearest `relative` container */\n fab: \"absolute bottom-4 right-4 z-40 rounded-full bg-primary text-primary-foreground shadow-elevation-4 hover:bg-primary/90 focus-visible:ring-offset-2 focus-visible:ring-offset-background motion-safe:animate-in motion-safe:fade-in-0 motion-safe:zoom-in-95\",\n /** Ghost icon button matching top-bar actions — place in `headerActions` */\n icon: \"rounded-lg bg-transparent text-muted-foreground hover:bg-accent hover:text-accent-foreground aria-expanded:bg-accent aria-expanded:text-foreground\",\n },\n size: {\n default: \"\",\n lg: \"\",\n },\n },\n compoundVariants: [\n { variant: \"fab\", size: \"default\", class: \"size-10 [&_svg:not([class*='size-'])]:size-4\" },\n { variant: \"fab\", size: \"lg\", class: \"size-12 [&_svg:not([class*='size-'])]:size-5\" },\n { variant: \"icon\", size: \"default\", class: \"size-7 [&_svg:not([class*='size-'])]:size-4\" },\n { variant: \"icon\", size: \"lg\", class: \"size-8 [&_svg:not([class*='size-'])]:size-4\" },\n ],\n defaultVariants: { variant: \"fab\", size: \"default\" },\n },\n);\n\nexport interface DataAppShellRightPanelTriggerProps\n extends React.ComponentProps<\"button\">,\n VariantProps<typeof dataAppShellRightPanelTriggerVariants> {\n /** Merge the trigger styling/props onto the child element instead of\n * rendering a `<button>` — makes anything clickable a panel trigger. */\n asChild?: boolean;\n}\n\n/**\n * Trigger for a `DataAppShellRightPanel`, in two variants:\n *\n * - `fab` (default) — floating action button; what the panel auto-renders\n * while closed. Positioned `absolute` — place inside a `relative` container\n * (normally the shell's content area).\n * - `icon` — ghost icon button sized like the shell's top-bar actions. Place\n * it in the shell's `headerActions`, set `showTrigger={false}` on the panel,\n * and pass the same ref to the panel's `triggerRef` so focus returns here\n * when the panel closes.\n *\n * With `asChild` the trigger renders no element of its own and instead merges\n * onto its child — any clickable element (a link, menu item, custom button)\n * can act as the trigger.\n */\nfunction DataAppShellRightPanelTrigger({\n className,\n variant,\n size,\n asChild = false,\n children,\n ...props\n}: DataAppShellRightPanelTriggerProps) {\n const Comp = asChild ? Slot.Root : \"button\";\n return (\n <Comp\n // `type` only when we own the element — a slotted child may not be a button\n {...(asChild ? {} : { type: \"button\" as const })}\n data-slot=\"data-app-shell-right-panel-trigger\"\n data-variant={variant ?? \"fab\"}\n className={cn(dataAppShellRightPanelTriggerVariants({ variant, size }), className)}\n {...props}\n >\n {asChild ? children : (children ?? <PanelRightOpen />)}\n </Comp>\n );\n}\n\n// =============================================================================\n// DragHandle — pointer + keyboard resize on the panel's left edge\n// =============================================================================\n\n/** Pixels per arrow-key press when resizing with the keyboard. */\nconst KEYBOARD_RESIZE_STEP = 16;\n\ninterface DragHandleProps {\n width: number;\n minWidth: number;\n maxWidth: number;\n /** Live width updates while dragging (not yet persisted). */\n onResize: (width: number) => void;\n /** Final width once the interaction ends — persist here. */\n onCommit: (width: number) => void;\n onDraggingChange: (dragging: boolean) => void;\n}\n\n/**\n * Vertical resize handle docked on the panel's left edge. Pointer-driven\n * (px-based, unlike the percentage-based `Resizable` group primitive) so the\n * panel keeps an absolute width that can be persisted per `id`. Also a\n * keyboard-operable ARIA separator: arrows resize, Home/End jump to min/max.\n */\nfunction DragHandle({ width, minWidth, maxWidth, onResize, onCommit, onDraggingChange }: DragHandleProps) {\n const dragState = React.useRef<{ startX: number; startWidth: number; liveWidth: number } | null>(null);\n const widthRef = React.useRef(width);\n widthRef.current = width;\n\n const handlePointerDown = (e: React.PointerEvent<HTMLDivElement>) => {\n // Primary button / touch only\n if (e.button !== 0) return;\n dragState.current = { startX: e.clientX, startWidth: widthRef.current, liveWidth: widthRef.current };\n try {\n e.currentTarget.setPointerCapture(e.pointerId);\n } catch {\n // Synthetic pointer events (play tests) have no active pointer to\n // capture; move/up still arrive via the handle's own listeners.\n }\n onDraggingChange(true);\n };\n\n const handlePointerMove = (e: React.PointerEvent<HTMLDivElement>) => {\n if (!dragState.current) return;\n // Handle sits on the left edge — dragging left grows the panel.\n const delta = dragState.current.startX - e.clientX;\n const next = clampWidth(dragState.current.startWidth + delta, minWidth, maxWidth);\n dragState.current.liveWidth = next;\n onResize(next);\n };\n\n const endDrag = (e: React.PointerEvent<HTMLDivElement>) => {\n if (!dragState.current) return;\n // Commit the drag state's own width — pointermove renders lazily, so the\n // width prop can be one frame stale when pointerup lands.\n const finalWidth = dragState.current.liveWidth;\n dragState.current = null;\n if (e.currentTarget.hasPointerCapture(e.pointerId)) {\n e.currentTarget.releasePointerCapture(e.pointerId);\n }\n onDraggingChange(false);\n onCommit(finalWidth);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n let next: number | null = null;\n switch (e.key) {\n case \"ArrowLeft\": // handle moves left → panel grows\n next = clampWidth(widthRef.current + KEYBOARD_RESIZE_STEP, minWidth, maxWidth);\n break;\n case \"ArrowRight\":\n next = clampWidth(widthRef.current - KEYBOARD_RESIZE_STEP, minWidth, maxWidth);\n break;\n case \"Home\":\n next = minWidth;\n break;\n case \"End\":\n next = maxWidth;\n break;\n }\n if (next == null) return;\n e.preventDefault();\n onResize(next);\n onCommit(next);\n };\n\n return (\n <div\n data-slot=\"data-app-shell-right-panel-drag-handle\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label=\"Resize panel\"\n aria-valuemin={minWidth}\n aria-valuemax={maxWidth}\n aria-valuenow={Math.round(width)}\n tabIndex={0}\n className={cn(\n // 1px seam over the panel's left border; wide invisible grab area via ::after\n \"absolute inset-y-0 left-0 z-10 w-px cursor-col-resize touch-none select-none bg-transparent transition-colors\",\n \"after:absolute after:inset-y-0 after:left-1/2 after:w-3 after:-translate-x-1/2\",\n // reveal on hover / drag (border color) and keyboard focus (ring color)\n \"hover:bg-border active:bg-border focus-visible:outline-none focus-visible:bg-ring\",\n // centered grip dots, revealed with the seam\n \"flex items-center justify-center\",\n \"[&>div]:opacity-0 hover:[&>div]:opacity-100 active:[&>div]:opacity-100 focus-visible:[&>div]:opacity-100\",\n )}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={endDrag}\n onPointerCancel={endDrag}\n onKeyDown={handleKeyDown}\n >\n <div className=\"z-10 h-6 w-1 shrink-0 rounded-lg bg-muted-foreground/40 transition-opacity\" />\n </div>\n );\n}\n\n// =============================================================================\n// DataAppShellRightPanel\n// =============================================================================\n\nexport type DataAppShellRightPanelVariant = \"docked\" | \"overlay\";\n\nexport interface DataAppShellRightPanelProps extends Omit<React.ComponentProps<\"aside\">, \"id\" | \"title\"> {\n /** Unique panel id — keys the persisted width in localStorage. */\n id: string;\n /** Whether the panel is shown or collapsed to the FAB trigger. */\n open: boolean;\n /** Called with the next open state (close button, Esc, scrim click, FAB). */\n onOpenChange?: (open: boolean) => void;\n /**\n * `docked` (default) — in-flow flex sibling: opening/resizing pushes main narrower.\n * `overlay` — reuses the design-system `Sheet`: slides in over content with a scrim, no reflow.\n */\n variant?: DataAppShellRightPanelVariant;\n /** Show the drag handle and allow resizing. Defaults to `true`. Docked only — the overlay has a fixed width. */\n resizable?: boolean;\n /** Width in px when nothing is persisted yet. */\n defaultWidth?: number;\n /** Minimum width in px the panel can be resized to. */\n minWidth?: number;\n /** Maximum width in px the panel can be resized to. */\n maxWidth?: number;\n /** Persist the width to localStorage. Defaults to `true`. */\n persist?: boolean;\n /** Header title. The header row also carries the close button. */\n title?: React.ReactNode;\n /** Optional element rendered before the title (e.g. an app icon). */\n icon?: React.ReactNode;\n /** Extra elements rendered in the header, before the close button. */\n headerActions?: React.ReactNode;\n /** Render the floating FAB trigger while closed. Defaults to `true`. Set\n * `false` when the trigger lives elsewhere (e.g. an `icon`-variant\n * `DataAppShellRightPanelTrigger` in the shell's `headerActions`). */\n showTrigger?: boolean;\n /** Icon inside the FAB trigger. Defaults to a panel-open icon. */\n triggerIcon?: React.ReactNode;\n /** Accessible label for the FAB trigger. */\n triggerLabel?: string;\n /** Ref to an external trigger (e.g. a top-bar icon trigger) that receives\n * focus when the panel closes and `showTrigger` is `false`. */\n triggerRef?: React.RefObject<HTMLButtonElement | null>;\n /** Panel content — any React node (a chat, history list, inspector, …). */\n children?: React.ReactNode;\n}\n\n/**\n * Right-hand panel for the Data App Shell (SW-2117), in two variants:\n *\n * - `docked` (default) — rendered in normal flow as a flex sibling of the main\n * content, so opening/resizing pushes main narrower. Width is drag-resizable\n * and persisted per `id`.\n * - `overlay` — reuses the design-system `Sheet` (`side=\"right\"`): slides in\n * over the content with a scrim and does not reflow main.\n *\n * In both variants a floating FAB trigger re-opens the panel while it is\n * closed, and the body is a plain slot — a chat, history list, inspector, ….\n * Pass it to the shell's `rightPanel` slot, or place it after the main content\n * inside a `relative` flex row:\n *\n * ```tsx\n * <div className=\"relative flex flex-1 min-h-0\">\n * <main className=\"flex-1 min-w-0\">…</main>\n * <DataAppShellRightPanel id=\"chat\" open={open} onOpenChange={setOpen} title=\"Chat\">\n * …\n * </DataAppShellRightPanel>\n * </div>\n * ```\n */\nfunction DataAppShellRightPanel({\n id,\n open,\n onOpenChange,\n variant = \"docked\",\n resizable = true,\n defaultWidth = 320,\n minWidth = 240,\n maxWidth = 560,\n persist = true,\n title,\n icon,\n headerActions,\n showTrigger = true,\n triggerIcon,\n triggerLabel = \"Open panel\",\n triggerRef,\n children,\n className,\n ref,\n ...props\n}: DataAppShellRightPanelProps) {\n const [width, setWidth] = React.useState<number>(() =>\n persist ? readWidth(id, defaultWidth, minWidth, maxWidth) : clampWidth(defaultWidth, minWidth, maxWidth),\n );\n const [dragging, setDragging] = React.useState(false);\n\n const closeButtonRef = React.useRef<HTMLButtonElement>(null);\n const fabRef = React.useRef<HTMLButtonElement>(null);\n // Focus lands on the built-in FAB when it renders, else on the external trigger.\n const closeFocusRef = showTrigger ? fabRef : triggerRef;\n\n const commitWidth = React.useCallback(\n (next: number) => {\n if (persist) persistWidth(id, next);\n },\n [id, persist],\n );\n\n // Focus follows the open state: into the panel on open, back to the FAB on\n // close — but only on actual transitions, not on mount.\n const mountedRef = React.useRef(false);\n React.useEffect(() => {\n if (!mountedRef.current) {\n mountedRef.current = true;\n return;\n }\n // preventScroll — plain .focus() scrolls the target into view, which\n // jolts any scrollable ancestor (e.g. a Storybook docs page) on toggle.\n if (open) closeButtonRef.current?.focus({ preventScroll: true });\n else closeFocusRef?.current?.focus({ preventScroll: true });\n }, [open, closeFocusRef]);\n\n const accessibleName = typeof title === \"string\" ? title : \"Side panel\";\n\n const fab = showTrigger ? (\n <DataAppShellRightPanelTrigger\n ref={fabRef}\n aria-label={triggerLabel}\n aria-expanded={false}\n onClick={() => onOpenChange?.(true)}\n >\n {triggerIcon}\n </DataAppShellRightPanelTrigger>\n ) : null;\n\n const header = (\n <div\n data-slot=\"data-app-shell-right-panel-header\"\n className=\"flex shrink-0 items-center gap-2 border-b border-border px-3 py-2\"\n >\n {icon != null && <span className=\"flex shrink-0 items-center justify-center\">{icon}</span>}\n {title != null && <span className=\"min-w-0 flex-1 truncate text-sm font-semibold text-foreground\">{title}</span>}\n {title == null && <span className=\"flex-1\" />}\n {headerActions}\n <Button\n ref={closeButtonRef}\n variant=\"ghost\"\n size=\"icon-sm\"\n className=\"text-muted-foreground\"\n aria-label=\"Close panel\"\n onClick={() => onOpenChange?.(false)}\n >\n <X />\n </Button>\n </div>\n );\n\n const content = (\n <div data-slot=\"data-app-shell-right-panel-content\" className=\"flex min-h-0 flex-1 flex-col overflow-auto\">\n {children}\n </div>\n );\n\n // Overlay — reuse the design-system Sheet: scrim, slide-in, Esc/click-out\n // close and focus trapping all come from the primitive. No reflow of main.\n if (variant === \"overlay\") {\n return (\n <>\n <Sheet open={open} onOpenChange={onOpenChange}>\n <SheetContent\n side=\"right\"\n showCloseButton={false}\n data-slot=\"data-app-shell-right-panel\"\n data-variant=\"overlay\"\n // The FAB remounts on close, so radix's default \"restore previous\n // focus\" targets a dead node — send focus to the new FAB instead.\n onCloseAutoFocus={(e) => {\n e.preventDefault();\n closeFocusRef?.current?.focus({ preventScroll: true });\n }}\n style={{ width }}\n className={cn(\"gap-0 data-[side=right]:sm:max-w-none\", className)}\n {...props}\n >\n <SheetTitle className=\"sr-only\">{accessibleName}</SheetTitle>\n <SheetDescription className=\"sr-only\">Side panel overlay</SheetDescription>\n {header}\n {content}\n </SheetContent>\n </Sheet>\n {!open && fab}\n </>\n );\n }\n\n if (!open) return fab;\n\n return (\n <aside\n ref={ref}\n data-slot=\"data-app-shell-right-panel\"\n data-variant=\"docked\"\n aria-label={accessibleName}\n style={{ width }}\n className={cn(\n \"relative flex h-full shrink-0 flex-col overflow-hidden border-l border-border bg-background\",\n \"motion-safe:animate-in motion-safe:fade-in-0 motion-safe:slide-in-from-right-4\",\n !dragging && \"motion-safe:transition-[width] motion-safe:duration-200\",\n className,\n )}\n onKeyDown={(e) => {\n if (e.key === \"Escape\") onOpenChange?.(false);\n }}\n {...props}\n >\n {resizable && (\n <DragHandle\n width={width}\n minWidth={minWidth}\n maxWidth={maxWidth}\n onResize={setWidth}\n onCommit={commitWidth}\n onDraggingChange={setDragging}\n />\n )}\n\n {header}\n {content}\n </aside>\n );\n}\n\nexport { DataAppShellRightPanel, DataAppShellRightPanelTrigger, dataAppShellRightPanelTriggerVariants };\n"],"names":["STORAGE_PREFIX","storageKey","id","clampWidth","width","min","max","readWidth","fallback","v","persistWidth","dataAppShellRightPanelTriggerVariants","cva","DataAppShellRightPanelTrigger","className","variant","size","asChild","children","props","Comp","Slot","jsx","cn","PanelRightOpen","KEYBOARD_RESIZE_STEP","DragHandle","minWidth","maxWidth","onResize","onCommit","onDraggingChange","dragState","React","widthRef","handlePointerDown","e","handlePointerMove","delta","next","endDrag","finalWidth","handleKeyDown","DataAppShellRightPanel","open","onOpenChange","resizable","defaultWidth","persist","title","icon","headerActions","showTrigger","triggerIcon","triggerLabel","triggerRef","ref","setWidth","dragging","setDragging","closeButtonRef","fabRef","closeFocusRef","commitWidth","mountedRef","accessibleName","fab","header","jsxs","Button","X","content","Fragment","Sheet","SheetContent","SheetTitle","SheetDescription"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),B=require("class-variance-authority"),R=require("lucide-react"),$=require("react"),v=require("./CollapseButton.cjs"),F=require("./ShellContext.cjs"),A=require("../../../ui/badge.cjs"),c=require("../../../ui/select.cjs"),m=require("../../../ui/tooltip.cjs"),s=require("../../../lib/utils.cjs");function E(n){const l=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const r in n)if(r!=="default"){const i=Object.getOwnPropertyDescriptor(n,r);Object.defineProperty(l,r,i.get?i:{enumerable:!0,get:()=>n[r]})}}return l.default=n,Object.freeze(l)}const C=E($),k=B.cva("shrink-0",{variants:{orientation:{vertical:"flex flex-col bg-sidebar border-r border-sidebar-border overflow-hidden",horizontal:"flex flex-row items-center min-w-0"}},defaultVariants:{orientation:"vertical"}}),g=B.cva("cursor-pointer bg-transparent transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-45 disabled:cursor-not-allowed",{variants:{orientation:{vertical:"flex items-center gap-2 py-2 px-2.5 w-full text-left whitespace-nowrap leading-tight border-l-[5px] border-r-0 border-t-0 border-b-0",rail:"flex justify-center items-center py-3.5 w-full border-l-[5px] border-r-0 border-t-0 border-b-0",horizontal:"flex items-center gap-2 h-7 px-2.5 text-sm rounded-md whitespace-nowrap border-none focus-visible:ring-inset"},status:{done:"",active:"",todo:""}},compoundVariants:[{orientation:"vertical",status:"active",class:"border-l-sidebar-primary bg-sidebar-accent font-semibold text-sidebar-foreground shadow-sm"},{orientation:"vertical",status:"done",class:"border-l-sidebar-border text-foreground hover:bg-sidebar-accent/50"},{orientation:"vertical",status:"todo",class:"border-l-sidebar-border text-muted-foreground hover:bg-sidebar-accent/50"},{orientation:"rail",status:"active",class:"border-l-primary"},{orientation:"rail",status:"done",class:"border-l-border"},{orientation:"rail",status:"todo",class:"border-l-border"},{orientation:"horizontal",status:"active",class:"bg-primary/10 text-primary font-medium"},{orientation:"horizontal",status:"done",class:"text-foreground hover:bg-accent"},{orientation:"horizontal",status:"todo",class:"text-muted-foreground hover:bg-accent hover:text-foreground"}],defaultVariants:{orientation:"vertical",status:"todo"}});function G(n){return n.flatMap(l=>[l,...l.steps??[]])}function H(n,l,r){return n.status?n.status:r<0?"todo":l===r?"active":l<r?"done":"todo"}function N({step:n,status:l,className:r}){const i=n.icon;return l==="done"?a.jsx(R.Check,{className:s.cn("w-4 h-4 text-positive",r)}):i?a.jsx(i,{className:s.cn("w-4 h-4",l==="active"?"text-primary":"text-muted-foreground",r)}):a.jsx("div",{className:s.cn("w-2.5 h-2.5 rounded-full",l==="active"?"bg-primary":"bg-muted-foreground/40",r)})}function J({orientation:n,steps:l,activeKey:r,onSelect:i,title:z,collapsible:u=!1,collapsed:j,defaultCollapsed:T=!1,onCollapsedChange:I,className:b,...h}){const y=n??"vertical",p=F.useOptionalDataAppShell(),q=j===void 0&&p!=null&&p.hideNavOnCollapse,[_,D]=C.useState(T),O=j??(q?p.collapsed:_),f=e=>{j===void 0&&(q?p.setCollapsed(e):D(e)),I?.(e)},d=G(l),S=new Map(d.map((e,t)=>[e.id,t])),M=r==null?-1:S.get(r)??-1,w=e=>H(e,S.get(e.id)??-1,M),x=e=>{e.disabled||i?.(e.id,e)};if(y==="vertical"&&O)return a.jsx("nav",{"data-slot":"data-app-shell-secondary-nav","data-orientation":"vertical","data-collapsed":"true",className:s.cn("flex flex-col shrink-0 w-[46px] bg-sidebar border-r border-sidebar-border",b),...h,children:a.jsxs(m.TooltipProvider,{children:[a.jsx("div",{className:"flex justify-center items-center h-11 shrink-0 border-b border-sidebar-border",children:a.jsx(v.ShellCollapseButton,{"data-slot":"data-app-shell-secondary-nav-toggle",direction:"right",label:"Expand",onClick:()=>f(!1)})}),a.jsx("div",{"data-slot":"data-app-shell-secondary-nav-items",className:"flex flex-col overflow-y-auto",children:d.map(e=>{const t=w(e);return a.jsxs(m.Tooltip,{children:[a.jsx(m.TooltipTrigger,{asChild:!0,children:a.jsx("button",{type:"button","data-slot":"data-app-shell-secondary-nav-item","data-status":t,"aria-label":e.label,"aria-current":t==="active"?"step":void 0,"aria-disabled":e.disabled||void 0,className:s.cn(g({orientation:"rail",status:t}),e.disabled&&"opacity-45 cursor-not-allowed"),onClick:()=>x(e),children:a.jsx(N,{step:e,status:t})})}),a.jsx(m.TooltipContent,{side:"right",children:e.disabled?e.disabledReason??e.label:e.label})]},e.id)})})]})});if(y==="horizontal"&&u&&O){const e=r==null?void 0:d.find(t=>t.id===r);return a.jsxs("nav",{"data-slot":"data-app-shell-secondary-nav","data-orientation":"horizontal","data-collapsed":"true",className:s.cn("flex items-center gap-1.5 min-w-0",b),...h,children:[a.jsxs(c.Select,{value:r,onValueChange:t=>{const o=d.find(P=>P.id===t);o&&x(o)},children:[a.jsx(c.SelectTrigger,{"data-slot":"data-app-shell-secondary-nav-step-select",size:"sm","aria-label":"Current step",className:"h-7 min-w-0",children:a.jsx(c.SelectValue,{placeholder:"Select step",children:e?`Step ${(S.get(e.id)??0)+1} · ${e.label}`:"Select step"})}),a.jsx(c.SelectContent,{children:d.map((t,o)=>a.jsx(c.SelectItem,{value:t.id,disabled:t.disabled,children:`Step ${o+1} · ${t.label}`},t.id))})]}),a.jsx(v.ShellCollapseButton,{"data-slot":"data-app-shell-secondary-nav-toggle",direction:"down",label:"Show steps",tooltipSide:"bottom",onClick:()=>f(!1)})]})}if(y==="horizontal")return a.jsxs("nav",{"data-slot":"data-app-shell-secondary-nav","data-orientation":"horizontal","data-collapsed":"false",className:s.cn(k({orientation:"horizontal"}),b),...h,children:[a.jsx("div",{"data-slot":"data-app-shell-secondary-nav-items",className:"flex flex-row items-center gap-1 min-w-0 overflow-x-auto flex-1",children:d.map((e,t)=>{const o=w(e);return a.jsxs(C.Fragment,{children:[t>0&&a.jsx(R.ChevronRight,{"aria-hidden":"true",className:"w-4 h-4 shrink-0 text-muted-foreground/50"}),a.jsxs("button",{type:"button","data-slot":"data-app-shell-secondary-nav-item","data-status":o,"aria-current":o==="active"?"step":void 0,title:e.disabled?e.disabledReason??e.label:void 0,className:s.cn(g({orientation:"horizontal",status:o})),onClick:()=>x(e),disabled:e.disabled,children:[a.jsx(N,{step:e,status:o,className:"shrink-0"}),a.jsx("span",{children:e.label}),e.badge!=null&&a.jsx(A.Badge,{variant:"secondary",className:"h-4 px-1.5 text-[10px]",children:e.badge})]})]},e.id)})}),u&&a.jsx(v.ShellCollapseButton,{"data-slot":"data-app-shell-secondary-nav-toggle",direction:"up",label:"Collapse steps",tooltipSide:"bottom",className:"ml-2",onClick:()=>f(!0)})]});const V=(e,t)=>{const o=w(e);return a.jsxs("button",{type:"button","data-slot":"data-app-shell-secondary-nav-item","data-status":o,"aria-current":o==="active"?"step":void 0,title:e.disabled?e.disabledReason??e.label:void 0,className:s.cn(g({orientation:"vertical",status:o}),t&&"pl-8"),onClick:()=>x(e),disabled:e.disabled,children:[a.jsx("span",{className:"flex items-center justify-center w-6 h-6 shrink-0",children:a.jsx(N,{step:e,status:o})}),a.jsx("span",{className:s.cn("text-sm truncate min-w-0",o==="todo"&&"font-light"),children:e.label}),e.badge!=null&&a.jsx(A.Badge,{variant:"secondary",className:"ml-auto h-4 px-1.5 text-[10px]",children:e.badge})]},e.id)};return a.jsxs("nav",{"data-slot":"data-app-shell-secondary-nav","data-orientation":"vertical","data-collapsed":"false",className:s.cn(k({orientation:"vertical"}),"w-[180px]",b),...h,children:[(z!=null||u)&&a.jsxs("div",{"data-slot":"data-app-shell-secondary-nav-header",className:"flex items-center gap-1.5 h-11 px-2.5 pl-4 shrink-0 text-xs font-medium text-muted-foreground whitespace-nowrap border-b border-sidebar-border",children:[a.jsx("span",{className:"flex-1 truncate",children:z}),u&&a.jsx(v.ShellCollapseButton,{"data-slot":"data-app-shell-secondary-nav-toggle",direction:"left",label:"Collapse",onClick:()=>f(!0)})]}),a.jsx("div",{"data-slot":"data-app-shell-secondary-nav-items",className:"flex flex-col overflow-y-auto",children:l.map(e=>a.jsxs(C.Fragment,{children:[V(e,!1),e.steps?.map(t=>V(t,!0))]},e.id))})]})}exports.DataAppShellSecondaryNav=J;exports.dataAppShellSecondaryNavItemVariants=g;exports.dataAppShellSecondaryNavVariants=k;
2
+ //# sourceMappingURL=SecondaryNav.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SecondaryNav.cjs","sources":["../../../../src/components/composed/DataAppShell/SecondaryNav.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\nimport { Check, ChevronRight, type LucideIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { ShellCollapseButton } from \"./CollapseButton\";\nimport { useOptionalDataAppShell } from \"./ShellContext\";\n\nimport { Badge } from \"@/components/ui/badge\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\";\nimport { cn } from \"@/lib/utils\";\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type NavStepStatus = \"done\" | \"active\" | \"todo\";\n\nexport interface NavStep {\n /** Unique identifier */\n id: string;\n /** Display label */\n label: string;\n /** Lucide icon or custom React SVG component */\n icon?: LucideIcon | React.FC<React.SVGProps<SVGSVGElement>>;\n /** Optional count/status badge */\n badge?: React.ReactNode;\n /** Explicit status — overrides the linear derivation from `activeKey` */\n status?: NavStepStatus;\n /** Disables the step */\n disabled?: boolean;\n /** Tooltip/title text explaining why the step is disabled */\n disabledReason?: string;\n /** One level of nesting — child steps rendered indented under this step */\n steps?: NavStep[];\n}\n\nexport type DataAppShellSecondaryNavOrientation = \"vertical\" | \"horizontal\";\n\n// =============================================================================\n// CVA variants\n// =============================================================================\n\nconst dataAppShellSecondaryNavVariants = cva(\"shrink-0\", {\n variants: {\n orientation: {\n /** Collapsible left panel; collapses to an icon-only rail */\n vertical: \"flex flex-col bg-sidebar border-r border-sidebar-border overflow-hidden\",\n /** Wizard/stepper row rendered above the main content */\n horizontal: \"flex flex-row items-center min-w-0\",\n },\n },\n defaultVariants: { orientation: \"vertical\" },\n});\n\nconst dataAppShellSecondaryNavItemVariants = cva(\n \"cursor-pointer bg-transparent transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-45 disabled:cursor-not-allowed\",\n {\n variants: {\n orientation: {\n vertical:\n \"flex items-center gap-2 py-2 px-2.5 w-full text-left whitespace-nowrap leading-tight border-l-[5px] border-r-0 border-t-0 border-b-0\",\n /** Icon-only row in the collapsed rail */\n rail: \"flex justify-center items-center py-3.5 w-full border-l-[5px] border-r-0 border-t-0 border-b-0\",\n // ring-inset — the steps row is an overflow-x-auto scroll container,\n // which would clip an outset ring at the row's edges\n horizontal:\n \"flex items-center gap-2 h-7 px-2.5 text-sm rounded-md whitespace-nowrap border-none focus-visible:ring-inset\",\n },\n status: {\n done: \"\",\n active: \"\",\n todo: \"\",\n },\n },\n compoundVariants: [\n {\n orientation: \"vertical\",\n status: \"active\",\n class: \"border-l-sidebar-primary bg-sidebar-accent font-semibold text-sidebar-foreground shadow-sm\",\n },\n {\n orientation: \"vertical\",\n status: \"done\",\n class: \"border-l-sidebar-border text-foreground hover:bg-sidebar-accent/50\",\n },\n {\n orientation: \"vertical\",\n status: \"todo\",\n class: \"border-l-sidebar-border text-muted-foreground hover:bg-sidebar-accent/50\",\n },\n { orientation: \"rail\", status: \"active\", class: \"border-l-primary\" },\n { orientation: \"rail\", status: \"done\", class: \"border-l-border\" },\n { orientation: \"rail\", status: \"todo\", class: \"border-l-border\" },\n {\n orientation: \"horizontal\",\n status: \"active\",\n class: \"bg-primary/10 text-primary font-medium\",\n },\n {\n orientation: \"horizontal\",\n status: \"done\",\n class: \"text-foreground hover:bg-accent\",\n },\n {\n orientation: \"horizontal\",\n status: \"todo\",\n class: \"text-muted-foreground hover:bg-accent hover:text-foreground\",\n },\n ],\n defaultVariants: { orientation: \"vertical\", status: \"todo\" },\n }\n);\n\n// =============================================================================\n// Props\n// =============================================================================\n\nexport interface DataAppShellSecondaryNavProps\n extends Omit<React.ComponentProps<\"nav\">, \"onSelect\" | \"title\">,\n VariantProps<typeof dataAppShellSecondaryNavVariants> {\n /** Step entries; one level of nesting via `steps` on a step */\n steps: NavStep[];\n /** Controlled active step id — steps before it derive `done`, after it `todo` */\n activeKey?: string;\n /** Called with the selected step id after the step resolves as enabled */\n onSelect?: (key: string, step: NavStep) => void;\n /** Panel title shown in the vertical header (e.g. \"Steps\") */\n title?: React.ReactNode;\n /** Renders the collapse toggle. Vertical collapses to an icon rail;\n * horizontal collapses to a compact step dropdown. */\n collapsible?: boolean;\n /** Controlled collapsed state. When omitted inside a `DataAppShell`, the\n * shell's single collapse state drives it (one toggle for all zones). */\n collapsed?: boolean;\n /** Uncontrolled initial collapsed state */\n defaultCollapsed?: boolean;\n /** Called when the collapse toggle flips the state */\n onCollapsedChange?: (collapsed: boolean) => void;\n}\n\n// =============================================================================\n// Status derivation\n// =============================================================================\n\n/** Depth-first flatten — parents immediately followed by their children. */\nfunction flattenSteps(steps: NavStep[]): NavStep[] {\n return steps.flatMap((step) => [step, ...(step.steps ?? [])]);\n}\n\n/**\n * Explicit `status` wins; otherwise derived linearly from `activeKey`:\n * before the active step → `done`, after it (or no active step) → `todo`.\n */\nfunction resolveStatus(step: NavStep, index: number, activeIndex: number): NavStepStatus {\n if (step.status) return step.status;\n if (activeIndex < 0) return \"todo\";\n if (index === activeIndex) return \"active\";\n return index < activeIndex ? \"done\" : \"todo\";\n}\n\n// =============================================================================\n// Step icon — status-aware (done → check)\n// =============================================================================\n\nfunction StepIcon({\n step,\n status,\n className,\n}: {\n step: NavStep;\n status: NavStepStatus;\n className?: string;\n}) {\n const Icon = step.icon;\n if (status === \"done\") {\n return <Check className={cn(\"w-4 h-4 text-positive\", className)} />;\n }\n if (Icon) {\n return (\n <Icon\n className={cn(\n \"w-4 h-4\",\n status === \"active\" ? \"text-primary\" : \"text-muted-foreground\",\n className\n )}\n />\n );\n }\n return (\n <div\n className={cn(\n \"w-2.5 h-2.5 rounded-full\",\n status === \"active\" ? \"bg-primary\" : \"bg-muted-foreground/40\",\n className\n )}\n />\n );\n}\n\n// =============================================================================\n// DataAppShellSecondaryNav\n// =============================================================================\n\n/**\n * The Data App Shell's secondary (per-page/step) nav — one `steps` model\n * rendered on either axis via `orientation`:\n *\n * - **vertical** — collapsible left panel; collapses to an icon-only rail\n * with tooltips and a ▸ expand toggle\n * - **horizontal** — wizard/stepper row above the main content\n *\n * Step status (`done` / `active` / `todo`) is derived linearly from\n * `activeKey`, or set explicitly per step. Supports one level of nesting.\n */\nfunction DataAppShellSecondaryNav({\n orientation,\n steps,\n activeKey,\n onSelect,\n title,\n collapsible = false,\n collapsed,\n defaultCollapsed = false,\n onCollapsedChange,\n className,\n ...props\n}: DataAppShellSecondaryNavProps) {\n const resolvedOrientation: DataAppShellSecondaryNavOrientation = orientation ?? \"vertical\";\n\n // Inside a DataAppShell with `hideNavOnCollapse`, the shell's single collapse\n // toggle drives this zone too (nav rail + secondary collapse together into\n // one icon rail). Otherwise the zone owns its collapse — unless explicitly\n // controlled via the `collapsed` prop, which always wins.\n const shell = useOptionalDataAppShell();\n const followShell = collapsed === undefined && shell != null && shell.hideNavOnCollapse;\n const [internalCollapsed, setInternalCollapsed] = React.useState(defaultCollapsed);\n const isCollapsed = collapsed ?? (followShell ? shell.collapsed : internalCollapsed);\n const setCollapsed = (next: boolean) => {\n if (collapsed === undefined) {\n if (followShell) shell.setCollapsed(next);\n else setInternalCollapsed(next);\n }\n onCollapsedChange?.(next);\n };\n\n const flat = flattenSteps(steps);\n const indexById = new Map(flat.map((step, index) => [step.id, index] as const));\n const activeIndex = activeKey == null ? -1 : (indexById.get(activeKey) ?? -1);\n const statusOf = (step: NavStep) =>\n resolveStatus(step, indexById.get(step.id) ?? -1, activeIndex);\n\n const handleSelect = (step: NavStep) => {\n if (step.disabled) return;\n onSelect?.(step.id, step);\n };\n\n // ── Collapsed icon rail (vertical) ───────────────────────────────────────\n if (resolvedOrientation === \"vertical\" && isCollapsed) {\n return (\n <nav\n data-slot=\"data-app-shell-secondary-nav\"\n data-orientation=\"vertical\"\n data-collapsed=\"true\"\n className={cn(\n \"flex flex-col shrink-0 w-[46px] bg-sidebar border-r border-sidebar-border\",\n className\n )}\n {...props}\n >\n <TooltipProvider>\n <div className=\"flex justify-center items-center h-11 shrink-0 border-b border-sidebar-border\">\n <ShellCollapseButton\n data-slot=\"data-app-shell-secondary-nav-toggle\"\n direction=\"right\"\n label=\"Expand\"\n onClick={() => setCollapsed(false)}\n />\n </div>\n <div\n data-slot=\"data-app-shell-secondary-nav-items\"\n className=\"flex flex-col overflow-y-auto\"\n >\n {flat.map((step) => {\n const status = statusOf(step);\n return (\n <Tooltip key={step.id}>\n <TooltipTrigger asChild>\n {/* aria-disabled (not disabled) — a disabled button gets no\n pointer/focus events, which would make the tooltip carrying\n the label/disabledReason unreachable in the icon-only rail */}\n <button\n type=\"button\"\n data-slot=\"data-app-shell-secondary-nav-item\"\n data-status={status}\n aria-label={step.label}\n aria-current={status === \"active\" ? \"step\" : undefined}\n aria-disabled={step.disabled || undefined}\n className={cn(\n dataAppShellSecondaryNavItemVariants({ orientation: \"rail\", status }),\n step.disabled && \"opacity-45 cursor-not-allowed\"\n )}\n onClick={() => handleSelect(step)}\n >\n <StepIcon step={step} status={status} />\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"right\">\n {step.disabled ? (step.disabledReason ?? step.label) : step.label}\n </TooltipContent>\n </Tooltip>\n );\n })}\n </div>\n </TooltipProvider>\n </nav>\n );\n }\n\n // ── Collapsed horizontal — compact step dropdown (place in the top bar) ───\n if (resolvedOrientation === \"horizontal\" && collapsible && isCollapsed) {\n const active = activeKey == null ? undefined : flat.find((s) => s.id === activeKey);\n return (\n <nav\n data-slot=\"data-app-shell-secondary-nav\"\n data-orientation=\"horizontal\"\n data-collapsed=\"true\"\n className={cn(\"flex items-center gap-1.5 min-w-0\", className)}\n {...props}\n >\n <Select\n value={activeKey}\n onValueChange={(id) => {\n const step = flat.find((s) => s.id === id);\n if (step) handleSelect(step);\n }}\n >\n <SelectTrigger\n data-slot=\"data-app-shell-secondary-nav-step-select\"\n size=\"sm\"\n aria-label=\"Current step\"\n className=\"h-7 min-w-0\"\n >\n <SelectValue placeholder=\"Select step\">\n {active\n ? `Step ${(indexById.get(active.id) ?? 0) + 1} · ${active.label}`\n : \"Select step\"}\n </SelectValue>\n </SelectTrigger>\n <SelectContent>\n {flat.map((step, index) => (\n <SelectItem key={step.id} value={step.id} disabled={step.disabled}>\n {`Step ${index + 1} · ${step.label}`}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <ShellCollapseButton\n data-slot=\"data-app-shell-secondary-nav-toggle\"\n direction=\"down\"\n label=\"Show steps\"\n tooltipSide=\"bottom\"\n onClick={() => setCollapsed(false)}\n />\n </nav>\n );\n }\n\n // ── Horizontal stepper ───────────────────────────────────────────────────\n if (resolvedOrientation === \"horizontal\") {\n return (\n <nav\n data-slot=\"data-app-shell-secondary-nav\"\n data-orientation=\"horizontal\"\n data-collapsed=\"false\"\n className={cn(dataAppShellSecondaryNavVariants({ orientation: \"horizontal\" }), className)}\n {...props}\n >\n <div\n data-slot=\"data-app-shell-secondary-nav-items\"\n className=\"flex flex-row items-center gap-1 min-w-0 overflow-x-auto flex-1\"\n >\n {flat.map((step, index) => {\n const status = statusOf(step);\n return (\n <React.Fragment key={step.id}>\n {index > 0 && (\n <ChevronRight aria-hidden=\"true\" className=\"w-4 h-4 shrink-0 text-muted-foreground/50\" />\n )}\n <button\n type=\"button\"\n data-slot=\"data-app-shell-secondary-nav-item\"\n data-status={status}\n aria-current={status === \"active\" ? \"step\" : undefined}\n title={step.disabled ? (step.disabledReason ?? step.label) : undefined}\n className={cn(\n dataAppShellSecondaryNavItemVariants({ orientation: \"horizontal\", status })\n )}\n onClick={() => handleSelect(step)}\n disabled={step.disabled}\n >\n <StepIcon step={step} status={status} className=\"shrink-0\" />\n <span>{step.label}</span>\n {step.badge != null && (\n <Badge variant=\"secondary\" className=\"h-4 px-1.5 text-[10px]\">\n {step.badge}\n </Badge>\n )}\n </button>\n </React.Fragment>\n );\n })}\n </div>\n {collapsible && (\n <ShellCollapseButton\n data-slot=\"data-app-shell-secondary-nav-toggle\"\n direction=\"up\"\n label=\"Collapse steps\"\n tooltipSide=\"bottom\"\n className=\"ml-2\"\n onClick={() => setCollapsed(true)}\n />\n )}\n </nav>\n );\n }\n\n // ── Vertical expanded panel ──────────────────────────────────────────────\n const renderStep = (step: NavStep, nested: boolean) => {\n const status = statusOf(step);\n return (\n <button\n type=\"button\"\n key={step.id}\n data-slot=\"data-app-shell-secondary-nav-item\"\n data-status={status}\n aria-current={status === \"active\" ? \"step\" : undefined}\n title={step.disabled ? (step.disabledReason ?? step.label) : undefined}\n className={cn(\n dataAppShellSecondaryNavItemVariants({ orientation: \"vertical\", status }),\n nested && \"pl-8\"\n )}\n onClick={() => handleSelect(step)}\n disabled={step.disabled}\n >\n <span className=\"flex items-center justify-center w-6 h-6 shrink-0\">\n <StepIcon step={step} status={status} />\n </span>\n <span className={cn(\"text-sm truncate min-w-0\", status === \"todo\" && \"font-light\")}>\n {step.label}\n </span>\n {step.badge != null && (\n <Badge variant=\"secondary\" className=\"ml-auto h-4 px-1.5 text-[10px]\">\n {step.badge}\n </Badge>\n )}\n </button>\n );\n };\n\n return (\n <nav\n data-slot=\"data-app-shell-secondary-nav\"\n data-orientation=\"vertical\"\n data-collapsed=\"false\"\n className={cn(\n dataAppShellSecondaryNavVariants({ orientation: \"vertical\" }),\n \"w-[180px]\",\n className\n )}\n {...props}\n >\n {(title != null || collapsible) && (\n <div\n data-slot=\"data-app-shell-secondary-nav-header\"\n className=\"flex items-center gap-1.5 h-11 px-2.5 pl-4 shrink-0 text-xs font-medium text-muted-foreground whitespace-nowrap border-b border-sidebar-border\"\n >\n <span className=\"flex-1 truncate\">{title}</span>\n {collapsible && (\n <ShellCollapseButton\n data-slot=\"data-app-shell-secondary-nav-toggle\"\n direction=\"left\"\n label=\"Collapse\"\n onClick={() => setCollapsed(true)}\n />\n )}\n </div>\n )}\n <div\n data-slot=\"data-app-shell-secondary-nav-items\"\n className=\"flex flex-col overflow-y-auto\"\n >\n {steps.map((step) => (\n <React.Fragment key={step.id}>\n {renderStep(step, false)}\n {step.steps?.map((child) => renderStep(child, true))}\n </React.Fragment>\n ))}\n </div>\n </nav>\n );\n}\n\nexport {\n DataAppShellSecondaryNav,\n dataAppShellSecondaryNavVariants,\n dataAppShellSecondaryNavItemVariants,\n};\n"],"names":["dataAppShellSecondaryNavVariants","cva","dataAppShellSecondaryNavItemVariants","flattenSteps","steps","step","resolveStatus","index","activeIndex","StepIcon","status","className","Icon","Check","cn","jsx","DataAppShellSecondaryNav","orientation","activeKey","onSelect","title","collapsible","collapsed","defaultCollapsed","onCollapsedChange","props","resolvedOrientation","shell","useOptionalDataAppShell","followShell","internalCollapsed","setInternalCollapsed","React","isCollapsed","setCollapsed","next","flat","indexById","statusOf","handleSelect","TooltipProvider","ShellCollapseButton","Tooltip","TooltipTrigger","TooltipContent","active","s","jsxs","Select","id","SelectTrigger","SelectValue","SelectContent","SelectItem","ChevronRight","Badge","renderStep","nested","child"],"mappings":"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"}