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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1241) hide show
  1. package/README.md +58 -4
  2. package/dist/ai/attachments.cjs +2 -0
  3. package/dist/ai/attachments.cjs.map +1 -0
  4. package/dist/ai/attachments.js +224 -0
  5. package/dist/ai/attachments.js.map +1 -0
  6. package/dist/ai/chain-of-thought.cjs +2 -0
  7. package/dist/ai/chain-of-thought.cjs.map +1 -0
  8. package/dist/ai/chain-of-thought.js +145 -0
  9. package/dist/ai/chain-of-thought.js.map +1 -0
  10. package/dist/ai/confirmation.cjs +2 -0
  11. package/dist/ai/confirmation.cjs.map +1 -0
  12. package/dist/ai/confirmation.js +109 -0
  13. package/dist/ai/confirmation.js.map +1 -0
  14. package/dist/ai/context.cjs +2 -0
  15. package/dist/ai/context.cjs.map +1 -0
  16. package/dist/ai/context.js +267 -0
  17. package/dist/ai/context.js.map +1 -0
  18. package/dist/ai/conversation.cjs +4 -0
  19. package/dist/ai/conversation.cjs.map +1 -0
  20. package/dist/ai/conversation.js +108 -0
  21. package/dist/ai/conversation.js.map +1 -0
  22. package/dist/ai/inline-citation.cjs +2 -0
  23. package/dist/ai/inline-citation.cjs.map +1 -0
  24. package/dist/ai/inline-citation.js +182 -0
  25. package/dist/ai/inline-citation.js.map +1 -0
  26. package/dist/ai/message.cjs +2 -0
  27. package/dist/ai/message.cjs.map +1 -0
  28. package/dist/ai/message.js +237 -0
  29. package/dist/ai/message.js.map +1 -0
  30. package/dist/ai/model-selector.cjs +2 -0
  31. package/dist/ai/model-selector.cjs.map +1 -0
  32. package/dist/ai/model-selector.js +77 -0
  33. package/dist/ai/model-selector.js.map +1 -0
  34. package/dist/ai/prompt-input.cjs +2 -0
  35. package/dist/ai/prompt-input.cjs.map +1 -0
  36. package/dist/ai/prompt-input.js +776 -0
  37. package/dist/ai/prompt-input.js.map +1 -0
  38. package/dist/ai/queue.cjs +2 -0
  39. package/dist/ai/queue.cjs.map +1 -0
  40. package/dist/ai/queue.js +209 -0
  41. package/dist/ai/queue.js.map +1 -0
  42. package/dist/ai/reasoning.cjs +2 -0
  43. package/dist/ai/reasoning.cjs.map +1 -0
  44. package/dist/ai/reasoning.js +129 -0
  45. package/dist/ai/reasoning.js.map +1 -0
  46. package/dist/ai/shimmer.cjs +2 -0
  47. package/dist/ai/shimmer.cjs.map +1 -0
  48. package/dist/ai/shimmer.js +49 -0
  49. package/dist/ai/shimmer.js.map +1 -0
  50. package/dist/ai/sources.cjs +2 -0
  51. package/dist/ai/sources.cjs.map +1 -0
  52. package/dist/ai/sources.js +54 -0
  53. package/dist/ai/sources.js.map +1 -0
  54. package/dist/ai/speech-input.cjs +2 -0
  55. package/dist/ai/speech-input.cjs.map +1 -0
  56. package/dist/ai/speech-input.js +123 -0
  57. package/dist/ai/speech-input.js.map +1 -0
  58. package/dist/ai/stream-status.cjs +2 -0
  59. package/dist/ai/stream-status.cjs.map +1 -0
  60. package/dist/ai/stream-status.js +108 -0
  61. package/dist/ai/stream-status.js.map +1 -0
  62. package/dist/ai/suggestion.cjs +2 -0
  63. package/dist/ai/suggestion.cjs.map +1 -0
  64. package/dist/ai/suggestion.js +38 -0
  65. package/dist/ai/suggestion.js.map +1 -0
  66. package/dist/ai/task.cjs +2 -0
  67. package/dist/ai/task.cjs.map +1 -0
  68. package/dist/ai/task.js +101 -0
  69. package/dist/ai/task.js.map +1 -0
  70. package/dist/ai/tool.cjs +2 -0
  71. package/dist/ai/tool.cjs.map +1 -0
  72. package/dist/ai/tool.js +139 -0
  73. package/dist/ai/tool.js.map +1 -0
  74. package/dist/charts/AreaPlot.cjs +2 -0
  75. package/dist/charts/AreaPlot.cjs.map +1 -0
  76. package/dist/charts/AreaPlot.js +5 -0
  77. package/dist/charts/AreaPlot.js.map +1 -0
  78. package/dist/charts/BarChart.cjs +2 -0
  79. package/dist/charts/BarChart.cjs.map +1 -0
  80. package/dist/charts/BarChart.js +5 -0
  81. package/dist/charts/BarChart.js.map +1 -0
  82. package/dist/charts/BoxPlot.cjs +2 -0
  83. package/dist/charts/BoxPlot.cjs.map +1 -0
  84. package/dist/charts/BoxPlot.js +5 -0
  85. package/dist/charts/BoxPlot.js.map +1 -0
  86. package/dist/charts/ChartTooltip.cjs +2 -0
  87. package/dist/charts/ChartTooltip.cjs.map +1 -0
  88. package/dist/charts/ChartTooltip.js +8 -0
  89. package/dist/charts/ChartTooltip.js.map +1 -0
  90. package/dist/charts/Chromatogram.cjs +2 -0
  91. package/dist/charts/Chromatogram.cjs.map +1 -0
  92. package/dist/charts/Chromatogram.js +5 -0
  93. package/dist/charts/Chromatogram.js.map +1 -0
  94. package/dist/charts/Electropherogram.cjs +2 -0
  95. package/dist/charts/Electropherogram.cjs.map +1 -0
  96. package/dist/charts/Electropherogram.js +5 -0
  97. package/dist/charts/Electropherogram.js.map +1 -0
  98. package/dist/charts/Histogram.cjs +2 -0
  99. package/dist/charts/Histogram.cjs.map +1 -0
  100. package/dist/charts/Histogram.js +5 -0
  101. package/dist/charts/Histogram.js.map +1 -0
  102. package/dist/charts/LinePlot.cjs +2 -0
  103. package/dist/charts/LinePlot.cjs.map +1 -0
  104. package/dist/charts/LinePlot.js +5 -0
  105. package/dist/charts/LinePlot.js.map +1 -0
  106. package/dist/charts/PieChart.cjs +2 -0
  107. package/dist/charts/PieChart.cjs.map +1 -0
  108. package/dist/charts/PieChart.js +5 -0
  109. package/dist/charts/PieChart.js.map +1 -0
  110. package/dist/charts/PlateMap.cjs +2 -0
  111. package/dist/charts/PlateMap.cjs.map +1 -0
  112. package/dist/charts/PlateMap.js +5 -0
  113. package/dist/charts/PlateMap.js.map +1 -0
  114. package/dist/charts/ScatterPlot.cjs +2 -0
  115. package/dist/charts/ScatterPlot.cjs.map +1 -0
  116. package/dist/charts/ScatterPlot.js +5 -0
  117. package/dist/charts/ScatterPlot.js.map +1 -0
  118. package/dist/charts/ScatterPlotInteractive.cjs +2 -0
  119. package/dist/charts/ScatterPlotInteractive.cjs.map +1 -0
  120. package/dist/charts/ScatterPlotInteractive.js +14 -0
  121. package/dist/charts/ScatterPlotInteractive.js.map +1 -0
  122. package/dist/charts/StackedChromatogram.cjs +2 -0
  123. package/dist/charts/StackedChromatogram.cjs.map +1 -0
  124. package/dist/charts/StackedChromatogram.js +7 -0
  125. package/dist/charts/StackedChromatogram.js.map +1 -0
  126. package/dist/components/ai/attachments.d.ts +54 -0
  127. package/dist/components/ai/chain-of-thought.d.ts +56 -0
  128. package/dist/components/ai/confirmation.d.ts +47 -0
  129. package/dist/components/ai/context.d.ts +40 -0
  130. package/dist/components/ai/conversation.d.ts +23 -0
  131. package/dist/components/ai/inline-citation.d.ts +38 -0
  132. package/dist/components/ai/message.d.ts +37 -0
  133. package/dist/components/ai/model-selector.d.ts +36 -0
  134. package/dist/components/ai/prompt-input.d.ts +158 -0
  135. package/dist/components/ai/queue.d.ts +72 -0
  136. package/dist/components/ai/reasoning.d.ts +26 -0
  137. package/dist/components/ai/shimmer.d.ts +17 -0
  138. package/dist/components/ai/sources.d.ts +12 -0
  139. package/dist/components/ai/speech-input.d.ts +54 -0
  140. package/dist/components/ai/stream-status.d.ts +66 -0
  141. package/dist/components/ai/streamdown-code-plugin.cjs +2 -0
  142. package/dist/components/ai/streamdown-code-plugin.cjs.map +1 -0
  143. package/dist/components/ai/streamdown-code-plugin.d.ts +2 -0
  144. package/dist/components/ai/streamdown-code-plugin.js +42 -0
  145. package/dist/components/ai/streamdown-code-plugin.js.map +1 -0
  146. package/dist/components/ai/streamdown-plugins.cjs +2 -0
  147. package/dist/components/ai/streamdown-plugins.cjs.map +1 -0
  148. package/dist/components/ai/streamdown-plugins.d.ts +2 -0
  149. package/dist/components/ai/streamdown-plugins.js +14 -0
  150. package/dist/components/ai/streamdown-plugins.js.map +1 -0
  151. package/dist/components/ai/suggestion.d.ts +9 -0
  152. package/dist/components/ai/task.d.ts +16 -0
  153. package/dist/components/ai/tool.d.ts +33 -0
  154. package/dist/components/ai/use-streamdown-plugins.cjs +2 -0
  155. package/dist/components/ai/use-streamdown-plugins.cjs.map +1 -0
  156. package/dist/components/ai/use-streamdown-plugins.d.ts +8 -0
  157. package/dist/components/ai/use-streamdown-plugins.js +25 -0
  158. package/dist/components/ai/use-streamdown-plugins.js.map +1 -0
  159. package/dist/components/charts/AreaPlot/AreaPlot.cjs +2 -0
  160. package/dist/components/charts/AreaPlot/AreaPlot.cjs.map +1 -0
  161. package/dist/components/charts/AreaPlot/AreaPlot.d.ts +39 -0
  162. package/dist/components/charts/AreaPlot/AreaPlot.js +270 -0
  163. package/dist/components/charts/AreaPlot/AreaPlot.js.map +1 -0
  164. package/dist/components/charts/AreaPlot/index.d.ts +2 -0
  165. package/dist/components/charts/BarChart/BarChart.cjs +2 -0
  166. package/dist/components/charts/BarChart/BarChart.cjs.map +1 -0
  167. package/dist/components/charts/BarChart/BarChart.d.ts +44 -0
  168. package/dist/components/charts/BarChart/BarChart.js +219 -0
  169. package/dist/components/charts/BarChart/BarChart.js.map +1 -0
  170. package/dist/components/charts/BarChart/index.d.ts +2 -0
  171. package/dist/components/charts/BoxPlot/BoxPlot.cjs +2 -0
  172. package/dist/components/charts/BoxPlot/BoxPlot.cjs.map +1 -0
  173. package/dist/components/charts/BoxPlot/BoxPlot.d.ts +33 -0
  174. package/dist/components/charts/BoxPlot/BoxPlot.js +208 -0
  175. package/dist/components/charts/BoxPlot/BoxPlot.js.map +1 -0
  176. package/dist/components/charts/BoxPlot/index.d.ts +2 -0
  177. package/dist/components/charts/ChartTooltip/ChartTooltip.cjs +1 -1
  178. package/dist/components/charts/ChartTooltip/ChartTooltip.cjs.map +1 -1
  179. package/dist/components/charts/ChartTooltip/ChartTooltip.d.ts +71 -0
  180. package/dist/components/charts/ChartTooltip/ChartTooltip.js +22 -22
  181. package/dist/components/charts/ChartTooltip/ChartTooltip.js.map +1 -1
  182. package/dist/components/charts/ChartTooltip/index.d.ts +2 -0
  183. package/dist/components/charts/ChartTooltip/lines.d.ts +54 -0
  184. package/dist/components/charts/Chromatogram/Chromatogram.cjs +1 -1
  185. package/dist/components/charts/Chromatogram/Chromatogram.cjs.map +1 -1
  186. package/dist/components/charts/Chromatogram/Chromatogram.d.ts +5 -0
  187. package/dist/components/charts/Chromatogram/Chromatogram.js +232 -170
  188. package/dist/components/charts/Chromatogram/Chromatogram.js.map +1 -1
  189. package/dist/components/charts/Chromatogram/annotations.cjs +2 -0
  190. package/dist/components/charts/Chromatogram/annotations.cjs.map +1 -0
  191. package/dist/components/charts/Chromatogram/annotations.d.ts +50 -0
  192. package/dist/components/charts/Chromatogram/annotations.js +137 -0
  193. package/dist/components/charts/Chromatogram/annotations.js.map +1 -0
  194. package/dist/components/charts/Chromatogram/boundaryMarkers.cjs +2 -0
  195. package/dist/components/charts/Chromatogram/boundaryMarkers.cjs.map +1 -0
  196. package/dist/components/charts/Chromatogram/boundaryMarkers.d.ts +14 -0
  197. package/dist/components/charts/Chromatogram/boundaryMarkers.js +34 -0
  198. package/dist/components/charts/Chromatogram/boundaryMarkers.js.map +1 -0
  199. package/dist/components/charts/Chromatogram/constants.cjs +2 -0
  200. package/dist/components/charts/Chromatogram/constants.cjs.map +1 -0
  201. package/dist/components/charts/Chromatogram/constants.d.ts +46 -0
  202. package/dist/components/charts/Chromatogram/constants.js +36 -0
  203. package/dist/components/charts/Chromatogram/constants.js.map +1 -0
  204. package/dist/components/charts/Chromatogram/dataProcessing.cjs +2 -0
  205. package/dist/components/charts/Chromatogram/dataProcessing.cjs.map +1 -0
  206. package/dist/components/charts/Chromatogram/dataProcessing.d.ts +49 -0
  207. package/dist/components/charts/Chromatogram/dataProcessing.js +90 -0
  208. package/dist/components/charts/Chromatogram/dataProcessing.js.map +1 -0
  209. package/dist/components/charts/Chromatogram/index.d.ts +2 -0
  210. package/dist/components/charts/Chromatogram/peakDetection.cjs.map +1 -0
  211. package/dist/components/charts/Chromatogram/peakDetection.d.ts +33 -0
  212. package/dist/components/charts/Chromatogram/peakDetection.js.map +1 -0
  213. package/dist/components/charts/Chromatogram/plotBuilder.cjs +2 -0
  214. package/dist/components/charts/Chromatogram/plotBuilder.cjs.map +1 -0
  215. package/dist/components/charts/Chromatogram/plotBuilder.d.ts +58 -0
  216. package/dist/components/charts/Chromatogram/plotBuilder.js +216 -0
  217. package/dist/components/charts/Chromatogram/plotBuilder.js.map +1 -0
  218. package/dist/components/charts/Chromatogram/regionOverlays.cjs +2 -0
  219. package/dist/components/charts/Chromatogram/regionOverlays.cjs.map +1 -0
  220. package/dist/components/charts/Chromatogram/regionOverlays.d.ts +9 -0
  221. package/dist/components/charts/Chromatogram/regionOverlays.js +26 -0
  222. package/dist/components/charts/Chromatogram/regionOverlays.js.map +1 -0
  223. package/dist/components/charts/Chromatogram/types.d.ts +258 -0
  224. package/dist/components/charts/Electropherogram/Electropherogram.cjs +2 -0
  225. package/dist/components/charts/Electropherogram/Electropherogram.cjs.map +1 -0
  226. package/dist/components/charts/Electropherogram/Electropherogram.d.ts +22 -0
  227. package/dist/components/charts/Electropherogram/Electropherogram.js +180 -0
  228. package/dist/components/charts/Electropherogram/Electropherogram.js.map +1 -0
  229. package/dist/components/charts/Electropherogram/index.d.ts +2 -0
  230. package/dist/components/charts/Histogram/Histogram.cjs +1 -1
  231. package/dist/components/charts/Histogram/Histogram.cjs.map +1 -1
  232. package/dist/components/charts/Histogram/Histogram.d.ts +36 -0
  233. package/dist/components/charts/Histogram/Histogram.js +107 -108
  234. package/dist/components/charts/Histogram/Histogram.js.map +1 -1
  235. package/dist/components/charts/Histogram/index.d.ts +2 -0
  236. package/dist/components/charts/LinePlot/LinePlot.cjs +2 -0
  237. package/dist/components/charts/LinePlot/LinePlot.cjs.map +1 -0
  238. package/dist/components/charts/LinePlot/LinePlot.d.ts +45 -0
  239. package/dist/components/charts/LinePlot/LinePlot.js +224 -0
  240. package/dist/components/charts/LinePlot/LinePlot.js.map +1 -0
  241. package/dist/components/charts/LinePlot/index.d.ts +2 -0
  242. package/dist/components/charts/PieChart/PieChart.cjs +1 -1
  243. package/dist/components/charts/PieChart/PieChart.cjs.map +1 -1
  244. package/dist/components/charts/PieChart/PieChart.d.ts +20 -0
  245. package/dist/components/charts/PieChart/PieChart.js +62 -61
  246. package/dist/components/charts/PieChart/PieChart.js.map +1 -1
  247. package/dist/components/charts/PieChart/index.d.ts +2 -0
  248. package/dist/components/charts/PlateMap/PlateMap.cjs +1 -1
  249. package/dist/components/charts/PlateMap/PlateMap.cjs.map +1 -1
  250. package/dist/components/charts/PlateMap/PlateMap.d.ts +29 -0
  251. package/dist/components/charts/PlateMap/PlateMap.js +246 -242
  252. package/dist/components/charts/PlateMap/PlateMap.js.map +1 -1
  253. package/dist/components/charts/PlateMap/constants.d.ts +75 -0
  254. package/dist/components/charts/PlateMap/index.d.ts +2 -0
  255. package/dist/components/charts/PlateMap/types.d.ts +322 -0
  256. package/dist/components/charts/PlateMap/utils.d.ts +133 -0
  257. package/dist/components/charts/ScatterPlot/ScatterPlot.cjs +2 -0
  258. package/dist/components/charts/ScatterPlot/ScatterPlot.cjs.map +1 -0
  259. package/dist/components/charts/ScatterPlot/ScatterPlot.d.ts +43 -0
  260. package/dist/components/charts/ScatterPlot/ScatterPlot.js +252 -0
  261. package/dist/components/charts/ScatterPlot/ScatterPlot.js.map +1 -0
  262. package/dist/components/charts/ScatterPlot/index.d.ts +2 -0
  263. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.cjs +2 -0
  264. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.cjs.map +1 -0
  265. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.d.ts +25 -0
  266. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.js +215 -0
  267. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.js.map +1 -0
  268. package/dist/components/charts/ScatterPlotInteractive/constants.cjs +2 -0
  269. package/dist/components/charts/ScatterPlotInteractive/constants.cjs.map +1 -0
  270. package/dist/components/charts/ScatterPlotInteractive/constants.d.ts +50 -0
  271. package/dist/components/charts/ScatterPlotInteractive/constants.js +38 -0
  272. package/dist/components/charts/ScatterPlotInteractive/constants.js.map +1 -0
  273. package/dist/components/charts/ScatterPlotInteractive/index.d.ts +3 -0
  274. package/dist/components/charts/ScatterPlotInteractive/types.d.ts +226 -0
  275. package/dist/components/charts/ScatterPlotInteractive/utils.cjs +2 -0
  276. package/dist/components/charts/ScatterPlotInteractive/utils.cjs.map +1 -0
  277. package/dist/components/charts/ScatterPlotInteractive/utils.d.ts +72 -0
  278. package/dist/components/charts/ScatterPlotInteractive/utils.js +261 -0
  279. package/dist/components/charts/ScatterPlotInteractive/utils.js.map +1 -0
  280. package/dist/components/charts/StackedChromatogram/StackedChromatogram.cjs +2 -0
  281. package/dist/components/charts/StackedChromatogram/StackedChromatogram.cjs.map +1 -0
  282. package/dist/components/charts/StackedChromatogram/StackedChromatogram.d.ts +3 -0
  283. package/dist/components/charts/StackedChromatogram/StackedChromatogram.js +40 -0
  284. package/dist/components/charts/StackedChromatogram/StackedChromatogram.js.map +1 -0
  285. package/dist/components/charts/StackedChromatogram/index.d.ts +3 -0
  286. package/dist/components/charts/StackedChromatogram/transforms.cjs +2 -0
  287. package/dist/components/charts/StackedChromatogram/transforms.cjs.map +1 -0
  288. package/dist/components/charts/StackedChromatogram/transforms.d.ts +9 -0
  289. package/dist/components/charts/StackedChromatogram/transforms.js +31 -0
  290. package/dist/components/charts/StackedChromatogram/transforms.js.map +1 -0
  291. package/dist/components/charts/StackedChromatogram/types.d.ts +26 -0
  292. package/dist/components/charts/plotly-loader.cjs +2 -0
  293. package/dist/components/charts/plotly-loader.cjs.map +1 -0
  294. package/dist/components/charts/plotly-loader.d.ts +29 -0
  295. package/dist/components/charts/plotly-loader.js +22 -0
  296. package/dist/components/charts/plotly-loader.js.map +1 -0
  297. package/dist/components/composed/AssistantLayout/AssistantLayout.cjs +2 -0
  298. package/dist/components/composed/AssistantLayout/AssistantLayout.cjs.map +1 -0
  299. package/dist/components/composed/AssistantLayout/AssistantLayout.d.ts +63 -0
  300. package/dist/components/composed/AssistantLayout/AssistantLayout.js +142 -0
  301. package/dist/components/composed/AssistantLayout/AssistantLayout.js.map +1 -0
  302. package/dist/components/composed/AssistantLayout/dockLayout.cjs +2 -0
  303. package/dist/components/composed/AssistantLayout/dockLayout.cjs.map +1 -0
  304. package/dist/components/composed/AssistantLayout/dockLayout.d.ts +15 -0
  305. package/dist/components/composed/AssistantLayout/dockLayout.js +10 -0
  306. package/dist/components/composed/AssistantLayout/dockLayout.js.map +1 -0
  307. package/dist/components/composed/AssistantLayout/index.d.ts +3 -0
  308. package/dist/components/composed/Chat/Chat.cjs +1 -1
  309. package/dist/components/composed/Chat/Chat.cjs.map +1 -1
  310. package/dist/components/composed/Chat/Chat.d.ts +35 -0
  311. package/dist/components/composed/Chat/Chat.js +28 -28
  312. package/dist/components/composed/Chat/Chat.js.map +1 -1
  313. package/dist/components/composed/Chat/index.d.ts +2 -0
  314. package/dist/components/composed/ConfirmDialog/ConfirmDialog.cjs +1 -1
  315. package/dist/components/composed/ConfirmDialog/ConfirmDialog.cjs.map +1 -1
  316. package/dist/components/composed/ConfirmDialog/ConfirmDialog.d.ts +23 -0
  317. package/dist/components/composed/ConfirmDialog/ConfirmDialog.js +33 -29
  318. package/dist/components/composed/ConfirmDialog/ConfirmDialog.js.map +1 -1
  319. package/dist/components/composed/ConfirmDialog/index.d.ts +1 -0
  320. package/dist/components/composed/DataAppShell/CollapseButton.cjs +2 -0
  321. package/dist/components/composed/DataAppShell/CollapseButton.cjs.map +1 -0
  322. package/dist/components/composed/DataAppShell/CollapseButton.d.ts +23 -0
  323. package/dist/components/composed/DataAppShell/CollapseButton.js +42 -0
  324. package/dist/components/composed/DataAppShell/CollapseButton.js.map +1 -0
  325. package/dist/components/composed/DataAppShell/DataAppShell.cjs +1 -1
  326. package/dist/components/composed/DataAppShell/DataAppShell.cjs.map +1 -1
  327. package/dist/components/composed/DataAppShell/DataAppShell.d.ts +88 -0
  328. package/dist/components/composed/DataAppShell/DataAppShell.js +350 -328
  329. package/dist/components/composed/DataAppShell/DataAppShell.js.map +1 -1
  330. package/dist/components/composed/DataAppShell/PrimaryNav.cjs +2 -0
  331. package/dist/components/composed/DataAppShell/PrimaryNav.cjs.map +1 -0
  332. package/dist/components/composed/DataAppShell/PrimaryNav.d.ts +64 -0
  333. package/dist/components/composed/DataAppShell/PrimaryNav.js +268 -0
  334. package/dist/components/composed/DataAppShell/PrimaryNav.js.map +1 -0
  335. package/dist/components/composed/DataAppShell/RightPanel.cjs +2 -0
  336. package/dist/components/composed/DataAppShell/RightPanel.cjs.map +1 -0
  337. package/dist/components/composed/DataAppShell/RightPanel.d.ts +95 -0
  338. package/dist/components/composed/DataAppShell/RightPanel.js +282 -0
  339. package/dist/components/composed/DataAppShell/RightPanel.js.map +1 -0
  340. package/dist/components/composed/DataAppShell/SecondaryNav.cjs +2 -0
  341. package/dist/components/composed/DataAppShell/SecondaryNav.cjs.map +1 -0
  342. package/dist/components/composed/DataAppShell/SecondaryNav.d.ts +63 -0
  343. package/dist/components/composed/DataAppShell/SecondaryNav.js +364 -0
  344. package/dist/components/composed/DataAppShell/SecondaryNav.js.map +1 -0
  345. package/dist/components/composed/DataAppShell/ShellContext.cjs +2 -0
  346. package/dist/components/composed/DataAppShell/ShellContext.cjs.map +1 -0
  347. package/dist/components/composed/DataAppShell/ShellContext.d.ts +20 -0
  348. package/dist/components/composed/DataAppShell/ShellContext.js +23 -0
  349. package/dist/components/composed/DataAppShell/ShellContext.js.map +1 -0
  350. package/dist/components/composed/DataAppShell/index.d.ts +12 -0
  351. package/dist/components/composed/EmptyState/EmptyState.d.ts +12 -0
  352. package/dist/components/composed/EmptyState/index.d.ts +2 -0
  353. package/dist/components/composed/FormPatterns/FormSection.cjs +1 -1
  354. package/dist/components/composed/FormPatterns/FormSection.cjs.map +1 -1
  355. package/dist/components/composed/FormPatterns/FormSection.d.ts +7 -0
  356. package/dist/components/composed/FormPatterns/FormSection.js +2 -2
  357. package/dist/components/composed/FormPatterns/index.d.ts +1 -0
  358. package/dist/components/composed/MoleculeStructure/MoleculeStructure.cjs +2 -0
  359. package/dist/components/composed/MoleculeStructure/MoleculeStructure.cjs.map +1 -0
  360. package/dist/components/composed/MoleculeStructure/MoleculeStructure.d.ts +43 -0
  361. package/dist/components/composed/MoleculeStructure/MoleculeStructure.js +87 -0
  362. package/dist/components/composed/MoleculeStructure/MoleculeStructure.js.map +1 -0
  363. package/dist/components/composed/MoleculeStructure/index.d.ts +3 -0
  364. package/dist/components/composed/MoleculeStructure/rdkit-loader.cjs +2 -0
  365. package/dist/components/composed/MoleculeStructure/rdkit-loader.cjs.map +1 -0
  366. package/dist/components/composed/MoleculeStructure/rdkit-loader.d.ts +104 -0
  367. package/dist/components/composed/MoleculeStructure/rdkit-loader.js +89 -0
  368. package/dist/components/composed/MoleculeStructure/rdkit-loader.js.map +1 -0
  369. package/dist/components/composed/MoleculeStructure/use-rdkit.cjs +2 -0
  370. package/dist/components/composed/MoleculeStructure/use-rdkit.cjs.map +1 -0
  371. package/dist/components/composed/MoleculeStructure/use-rdkit.d.ts +29 -0
  372. package/dist/components/composed/MoleculeStructure/use-rdkit.js +19 -0
  373. package/dist/components/composed/MoleculeStructure/use-rdkit.js.map +1 -0
  374. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs +1 -1
  375. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs.map +1 -1
  376. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.d.ts +12 -0
  377. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js +21 -21
  378. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js.map +1 -1
  379. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs +1 -1
  380. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs.map +1 -1
  381. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.d.ts +22 -0
  382. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js +34 -34
  383. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js.map +1 -1
  384. package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs +1 -1
  385. package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs.map +1 -1
  386. package/dist/components/composed/PlateMapEditor/PlateMapEditor.d.ts +106 -0
  387. package/dist/components/composed/PlateMapEditor/PlateMapEditor.js +2 -2
  388. package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs +1 -1
  389. package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs.map +1 -1
  390. package/dist/components/composed/PlateMapEditor/PlateMapForm.d.ts +30 -0
  391. package/dist/components/composed/PlateMapEditor/PlateMapForm.js +1 -1
  392. package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs +1 -1
  393. package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs.map +1 -1
  394. package/dist/components/composed/PlateMapEditor/PlateMapGrid.d.ts +64 -0
  395. package/dist/components/composed/PlateMapEditor/PlateMapGrid.js +1 -1
  396. package/dist/components/composed/PlateMapEditor/PlateMapManifest.d.ts +29 -0
  397. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs +1 -1
  398. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs.map +1 -1
  399. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.d.ts +19 -0
  400. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js +11 -11
  401. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js.map +1 -1
  402. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs +1 -1
  403. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs.map +1 -1
  404. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.d.ts +73 -0
  405. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js +1 -1
  406. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js.map +1 -1
  407. package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs +1 -1
  408. package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs.map +1 -1
  409. package/dist/components/composed/PlateMapEditor/PlateZoomControl.d.ts +12 -0
  410. package/dist/components/composed/PlateMapEditor/PlateZoomControl.js +2 -2
  411. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs +1 -1
  412. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs.map +1 -1
  413. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.d.ts +13 -0
  414. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.js +4 -4
  415. package/dist/components/composed/PlateMapEditor/WellLegend.cjs +1 -1
  416. package/dist/components/composed/PlateMapEditor/WellLegend.cjs.map +1 -1
  417. package/dist/components/composed/PlateMapEditor/WellLegend.d.ts +21 -0
  418. package/dist/components/composed/PlateMapEditor/WellLegend.js +24 -12
  419. package/dist/components/composed/PlateMapEditor/WellLegend.js.map +1 -1
  420. package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs +1 -1
  421. package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs.map +1 -1
  422. package/dist/components/composed/PlateMapEditor/WellManifestTable.d.ts +46 -0
  423. package/dist/components/composed/PlateMapEditor/WellManifestTable.js +10 -10
  424. package/dist/components/composed/PlateMapEditor/WellManifestTable.js.map +1 -1
  425. package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs +1 -1
  426. package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs.map +1 -1
  427. package/dist/components/composed/PlateMapEditor/WellMetadataForm.d.ts +17 -0
  428. package/dist/components/composed/PlateMapEditor/WellMetadataForm.js +7 -7
  429. package/dist/components/composed/PlateMapEditor/autoFill.d.ts +26 -0
  430. package/dist/components/composed/PlateMapEditor/csvPlateTriage.d.ts +4 -0
  431. package/dist/components/composed/PlateMapEditor/helpers.d.ts +2 -0
  432. package/dist/components/composed/PlateMapEditor/index.d.ts +31 -0
  433. package/dist/components/composed/PlateMapEditor/types.d.ts +137 -0
  434. package/dist/components/composed/PlateMapEditor/wellGrid.d.ts +12 -0
  435. package/dist/components/composed/ProcessFlow/ProcessFlow.d.ts +32 -0
  436. package/dist/components/composed/ProcessFlow/ProcessFlow.utils.d.ts +86 -0
  437. package/dist/components/composed/ProcessFlow/index.d.ts +1 -0
  438. package/dist/components/composed/RichListItem/RichListItem.cjs +1 -1
  439. package/dist/components/composed/RichListItem/RichListItem.cjs.map +1 -1
  440. package/dist/components/composed/RichListItem/RichListItem.d.ts +22 -0
  441. package/dist/components/composed/RichListItem/RichListItem.js +2 -2
  442. package/dist/components/composed/RichListItem/index.d.ts +2 -0
  443. package/dist/components/composed/StatCard/StatCard.cjs +1 -1
  444. package/dist/components/composed/StatCard/StatCard.cjs.map +1 -1
  445. package/dist/components/composed/StatCard/StatCard.d.ts +11 -0
  446. package/dist/components/composed/StatCard/StatCard.js +1 -1
  447. package/dist/components/composed/StatCard/index.d.ts +1 -0
  448. package/dist/components/composed/TdpSearch/TdpSearch.cjs +1 -1
  449. package/dist/components/composed/TdpSearch/TdpSearch.cjs.map +1 -1
  450. package/dist/components/composed/TdpSearch/TdpSearch.d.ts +21 -0
  451. package/dist/components/composed/TdpSearch/TdpSearch.js +14 -13
  452. package/dist/components/composed/TdpSearch/TdpSearch.mocks.d.ts +5 -0
  453. package/dist/components/composed/TdpSearch/components/DefaultFilters.cjs +1 -1
  454. package/dist/components/composed/TdpSearch/components/DefaultFilters.cjs.map +1 -1
  455. package/dist/components/composed/TdpSearch/components/DefaultFilters.d.ts +3 -0
  456. package/dist/components/composed/TdpSearch/components/DefaultFilters.js +4 -4
  457. package/dist/components/composed/TdpSearch/components/DefaultFilters.js.map +1 -1
  458. package/dist/components/composed/TdpSearch/components/DefaultResults.cjs +1 -1
  459. package/dist/components/composed/TdpSearch/components/DefaultResults.cjs.map +1 -1
  460. package/dist/components/composed/TdpSearch/components/DefaultResults.d.ts +3 -0
  461. package/dist/components/composed/TdpSearch/components/DefaultResults.js +2 -2
  462. package/dist/components/composed/TdpSearch/components/DefaultSearchBar.cjs +1 -1
  463. package/dist/components/composed/TdpSearch/components/DefaultSearchBar.cjs.map +1 -1
  464. package/dist/components/composed/TdpSearch/components/DefaultSearchBar.d.ts +3 -0
  465. package/dist/components/composed/TdpSearch/components/DefaultSearchBar.js +2 -2
  466. package/dist/components/composed/TdpSearch/constants.d.ts +3 -0
  467. package/dist/components/composed/TdpSearch/hooks/useSearch.d.ts +2 -0
  468. package/dist/components/composed/TdpSearch/hooks/useTdpCredentials.d.ts +14 -0
  469. package/dist/components/composed/TdpSearch/index.d.ts +3 -0
  470. package/dist/components/composed/TdpSearch/types.d.ts +128 -0
  471. package/dist/components/composed/TdpSearch/utils.d.ts +3 -0
  472. package/dist/components/composed/TopBar/TopBar.cjs +2 -0
  473. package/dist/components/composed/TopBar/TopBar.cjs.map +1 -0
  474. package/dist/components/composed/TopBar/TopBar.d.ts +25 -0
  475. package/dist/components/composed/TopBar/TopBar.js +56 -0
  476. package/dist/components/composed/TopBar/TopBar.js.map +1 -0
  477. package/dist/components/composed/TopBar/index.d.ts +2 -0
  478. package/dist/components/composed/UserMenu/UserMenu.cjs +2 -0
  479. package/dist/components/composed/UserMenu/UserMenu.cjs.map +1 -0
  480. package/dist/components/composed/UserMenu/UserMenu.d.ts +53 -0
  481. package/dist/components/composed/UserMenu/UserMenu.js +99 -0
  482. package/dist/components/composed/UserMenu/UserMenu.js.map +1 -0
  483. package/dist/components/composed/UserMenu/index.d.ts +2 -0
  484. package/dist/components/composed/tdp-link.d.ts +110 -0
  485. package/dist/components/composed/tdp-url.d.ts +68 -0
  486. package/dist/components/ui/accordion.d.ts +7 -0
  487. package/dist/components/ui/alert-dialog.d.ts +18 -0
  488. package/dist/components/ui/alert.d.ts +10 -0
  489. package/dist/components/ui/aspect-ratio.d.ts +3 -0
  490. package/dist/components/ui/avatar.d.ts +11 -0
  491. package/dist/components/ui/badge.d.ts +9 -0
  492. package/dist/components/ui/banner.d.ts +19 -0
  493. package/dist/components/ui/breadcrumb.d.ts +11 -0
  494. package/dist/components/ui/button-group.d.ts +11 -0
  495. package/dist/components/ui/button.d.ts +10 -0
  496. package/dist/components/ui/calendar.d.ts +10 -0
  497. package/dist/components/ui/card.d.ts +11 -0
  498. package/dist/components/ui/carousel.d.ts +28 -0
  499. package/dist/components/ui/checkbox.d.ts +4 -0
  500. package/dist/components/ui/code-block.d.ts +45 -0
  501. package/dist/components/ui/code-editor.d.ts +18 -0
  502. package/dist/components/ui/collapsible.d.ts +5 -0
  503. package/dist/components/ui/combobox.d.ts +24 -0
  504. package/dist/components/ui/command.d.ts +18 -0
  505. package/dist/components/ui/context-menu.d.ts +31 -0
  506. package/dist/components/ui/data-table/data-table-column-toggle.cjs +1 -1
  507. package/dist/components/ui/data-table/data-table-column-toggle.cjs.map +1 -1
  508. package/dist/components/ui/data-table/data-table-column-toggle.d.ts +6 -0
  509. package/dist/components/ui/data-table/data-table-column-toggle.js +71 -63
  510. package/dist/components/ui/data-table/data-table-column-toggle.js.map +1 -1
  511. package/dist/components/ui/data-table/data-table-filter.cjs +1 -1
  512. package/dist/components/ui/data-table/data-table-filter.cjs.map +1 -1
  513. package/dist/components/ui/data-table/data-table-filter.d.ts +9 -0
  514. package/dist/components/ui/data-table/data-table-filter.js +26 -25
  515. package/dist/components/ui/data-table/data-table-filter.js.map +1 -1
  516. package/dist/components/ui/data-table/data-table-group.cjs +1 -1
  517. package/dist/components/ui/data-table/data-table-group.cjs.map +1 -1
  518. package/dist/components/ui/data-table/data-table-group.d.ts +9 -0
  519. package/dist/components/ui/data-table/data-table-group.js +18 -17
  520. package/dist/components/ui/data-table/data-table-group.js.map +1 -1
  521. package/dist/components/ui/data-table/data-table-pagination.cjs +1 -1
  522. package/dist/components/ui/data-table/data-table-pagination.cjs.map +1 -1
  523. package/dist/components/ui/data-table/data-table-pagination.d.ts +7 -0
  524. package/dist/components/ui/data-table/data-table-pagination.js +16 -16
  525. package/dist/components/ui/data-table/data-table-pagination.js.map +1 -1
  526. package/dist/components/ui/data-table/data-table.cjs +1 -1
  527. package/dist/components/ui/data-table/data-table.cjs.map +1 -1
  528. package/dist/components/ui/data-table/data-table.d.ts +82 -0
  529. package/dist/components/ui/data-table/data-table.js +191 -190
  530. package/dist/components/ui/data-table/data-table.js.map +1 -1
  531. package/dist/components/ui/data-table/index.d.ts +5 -0
  532. package/dist/components/ui/dialog.d.ts +18 -0
  533. package/dist/components/ui/dropdown-menu.d.ts +29 -0
  534. package/dist/components/ui/field.d.ts +24 -0
  535. package/dist/components/ui/hover-card.d.ts +6 -0
  536. package/dist/components/ui/input-group.d.ts +16 -0
  537. package/dist/components/ui/input.d.ts +3 -0
  538. package/dist/components/ui/item.d.ts +23 -0
  539. package/dist/components/ui/kbd.d.ts +3 -0
  540. package/dist/components/ui/label.d.ts +4 -0
  541. package/dist/components/ui/menubar.d.ts +30 -0
  542. package/dist/components/ui/navigation-menu.d.ts +14 -0
  543. package/dist/components/ui/popover.d.ts +7 -0
  544. package/dist/components/ui/progress.d.ts +4 -0
  545. package/dist/components/ui/radio-group.d.ts +5 -0
  546. package/dist/components/ui/resizable.d.ts +25 -0
  547. package/dist/components/ui/scroll-area.d.ts +5 -0
  548. package/dist/components/ui/select.d.ts +15 -0
  549. package/dist/components/ui/separator.d.ts +4 -0
  550. package/dist/components/ui/sheet.d.ts +14 -0
  551. package/dist/components/ui/sidebar.d.ts +69 -0
  552. package/dist/components/ui/skeleton.d.ts +2 -0
  553. package/dist/components/ui/slider.d.ts +4 -0
  554. package/dist/components/ui/snippet.d.ts +18 -0
  555. package/dist/components/ui/sonner.d.ts +3 -0
  556. package/dist/components/ui/spinner.d.ts +6 -0
  557. package/dist/components/ui/switch.d.ts +6 -0
  558. package/dist/components/ui/table.d.ts +22 -0
  559. package/dist/components/ui/tabs.d.ts +11 -0
  560. package/dist/components/ui/tetra-molecule-icon.d.ts +11 -0
  561. package/dist/components/ui/tetrascience-icon.d.ts +7 -0
  562. package/dist/components/ui/textarea.d.ts +3 -0
  563. package/dist/components/ui/toggle-group.d.ts +10 -0
  564. package/dist/components/ui/toggle.d.ts +9 -0
  565. package/dist/components/ui/tooltip.d.ts +7 -0
  566. package/dist/composed/AssistantLayout.cjs +2 -0
  567. package/dist/composed/AssistantLayout.cjs.map +1 -0
  568. package/dist/composed/AssistantLayout.js +10 -0
  569. package/dist/composed/AssistantLayout.js.map +1 -0
  570. package/dist/composed/Chat.cjs +2 -0
  571. package/dist/composed/Chat.cjs.map +1 -0
  572. package/dist/composed/Chat.js +5 -0
  573. package/dist/composed/Chat.js.map +1 -0
  574. package/dist/composed/ConfirmDialog.cjs +2 -0
  575. package/dist/composed/ConfirmDialog.cjs.map +1 -0
  576. package/dist/composed/ConfirmDialog.js +5 -0
  577. package/dist/composed/ConfirmDialog.js.map +1 -0
  578. package/dist/composed/DataAppShell.cjs +2 -0
  579. package/dist/composed/DataAppShell.cjs.map +1 -0
  580. package/dist/composed/DataAppShell.js +22 -0
  581. package/dist/composed/DataAppShell.js.map +1 -0
  582. package/dist/composed/EmptyState.cjs +2 -0
  583. package/dist/composed/EmptyState.cjs.map +1 -0
  584. package/dist/composed/EmptyState.js +5 -0
  585. package/dist/composed/EmptyState.js.map +1 -0
  586. package/dist/composed/FormPatterns.cjs +2 -0
  587. package/dist/composed/FormPatterns.cjs.map +1 -0
  588. package/dist/composed/FormPatterns.js +5 -0
  589. package/dist/composed/FormPatterns.js.map +1 -0
  590. package/dist/composed/MoleculeStructure.cjs +2 -0
  591. package/dist/composed/MoleculeStructure.cjs.map +1 -0
  592. package/dist/composed/MoleculeStructure.js +11 -0
  593. package/dist/composed/MoleculeStructure.js.map +1 -0
  594. package/dist/composed/PlateMapEditor.cjs +2 -0
  595. package/dist/composed/PlateMapEditor.cjs.map +1 -0
  596. package/dist/composed/PlateMapEditor.js +45 -0
  597. package/dist/composed/PlateMapEditor.js.map +1 -0
  598. package/dist/composed/ProcessFlow.cjs +2 -0
  599. package/dist/composed/ProcessFlow.cjs.map +1 -0
  600. package/dist/composed/ProcessFlow.js +7 -0
  601. package/dist/composed/ProcessFlow.js.map +1 -0
  602. package/dist/composed/RichListItem.cjs +2 -0
  603. package/dist/composed/RichListItem.cjs.map +1 -0
  604. package/dist/composed/RichListItem.js +6 -0
  605. package/dist/composed/RichListItem.js.map +1 -0
  606. package/dist/composed/StatCard.cjs +2 -0
  607. package/dist/composed/StatCard.cjs.map +1 -0
  608. package/dist/composed/StatCard.js +5 -0
  609. package/dist/composed/StatCard.js.map +1 -0
  610. package/dist/composed/TdpSearch.cjs +2 -0
  611. package/dist/composed/TdpSearch.cjs.map +1 -0
  612. package/dist/composed/TdpSearch.js +8 -0
  613. package/dist/composed/TdpSearch.js.map +1 -0
  614. package/dist/composed/TopBar.cjs +2 -0
  615. package/dist/composed/TopBar.cjs.map +1 -0
  616. package/dist/composed/TopBar.js +6 -0
  617. package/dist/composed/TopBar.js.map +1 -0
  618. package/dist/composed/UserMenu.cjs +2 -0
  619. package/dist/composed/UserMenu.cjs.map +1 -0
  620. package/dist/composed/UserMenu.js +7 -0
  621. package/dist/composed/UserMenu.js.map +1 -0
  622. package/dist/composed/tdp-link.cjs +2 -0
  623. package/dist/composed/tdp-link.cjs.map +1 -0
  624. package/dist/composed/tdp-link.js +84 -0
  625. package/dist/composed/tdp-link.js.map +1 -0
  626. package/dist/composed/tdp-url.cjs.map +1 -0
  627. package/dist/composed/tdp-url.js.map +1 -0
  628. package/dist/hooks/use-code-editor-theme.d.ts +34 -0
  629. package/dist/hooks/use-element-size.d.ts +25 -0
  630. package/dist/hooks/use-is-dark.d.ts +12 -0
  631. package/dist/hooks/use-mobile.d.ts +1 -0
  632. package/dist/hooks/use-plotly-theme.cjs +1 -1
  633. package/dist/hooks/use-plotly-theme.cjs.map +1 -1
  634. package/dist/hooks/use-plotly-theme.d.ts +49 -0
  635. package/dist/hooks/use-plotly-theme.js +4 -3
  636. package/dist/hooks/use-plotly-theme.js.map +1 -1
  637. package/dist/index.cjs +1 -1
  638. package/dist/index.css +1 -1
  639. package/dist/index.d.ts +102 -4404
  640. package/dist/index.js +698 -659
  641. package/dist/index.js.map +1 -1
  642. package/dist/index.tailwind.css +1 -1
  643. package/dist/jest-setup.cjs +4 -0
  644. package/dist/jest-setup.cjs.map +1 -0
  645. package/dist/jest-setup.d.ts +106 -0
  646. package/dist/jest-setup.js +218 -0
  647. package/dist/jest-setup.js.map +1 -0
  648. package/dist/lib/shiki.cjs +2 -0
  649. package/dist/lib/shiki.cjs.map +1 -0
  650. package/dist/lib/shiki.d.ts +32 -0
  651. package/dist/lib/shiki.js +72 -0
  652. package/dist/lib/shiki.js.map +1 -0
  653. package/dist/lib/utils.d.ts +2 -0
  654. package/dist/server/auth/JwtTokenManager.cjs +1 -1
  655. package/dist/server/auth/JwtTokenManager.cjs.map +1 -1
  656. package/dist/server/auth/JwtTokenManager.d.ts +113 -0
  657. package/dist/server/auth/JwtTokenManager.js +44 -21
  658. package/dist/server/auth/JwtTokenManager.js.map +1 -1
  659. package/dist/server/auth/index.d.ts +5 -0
  660. package/dist/server/index.d.ts +8 -0
  661. package/dist/server/providers/AthenaProvider.cjs +1 -1
  662. package/dist/server/providers/AthenaProvider.cjs.map +1 -1
  663. package/dist/server/providers/AthenaProvider.d.ts +75 -0
  664. package/dist/server/providers/DatabricksProvider.cjs +1 -1
  665. package/dist/server/providers/DatabricksProvider.cjs.map +1 -1
  666. package/dist/server/providers/DatabricksProvider.d.ts +38 -0
  667. package/dist/server/providers/SnowflakeProvider.cjs +1 -1
  668. package/dist/server/providers/SnowflakeProvider.cjs.map +1 -1
  669. package/dist/server/providers/SnowflakeProvider.d.ts +36 -0
  670. package/dist/server/providers/buildProvider.d.ts +39 -0
  671. package/dist/server/providers/entries/athena.d.ts +24 -0
  672. package/dist/server/providers/entries/databricks.d.ts +25 -0
  673. package/dist/server/providers/entries/snowflake.d.ts +25 -0
  674. package/dist/server/providers/exceptions.d.ts +36 -0
  675. package/dist/server/providers/getProviderConfigurations.d.ts +45 -0
  676. package/dist/server/providers/index.d.ts +31 -0
  677. package/dist/server/providers/providerDiscovery.d.ts +81 -0
  678. package/dist/server/providers/types.d.ts +145 -0
  679. package/dist/server/search/TdpSearchManager.d.ts +40 -0
  680. package/dist/server/search/index.d.ts +5 -0
  681. package/dist/server.d.ts +17 -540
  682. package/dist/ui/accordion.cjs +2 -0
  683. package/dist/ui/accordion.cjs.map +1 -0
  684. package/dist/ui/accordion.js +83 -0
  685. package/dist/ui/accordion.js.map +1 -0
  686. package/dist/ui/alert-dialog.cjs +2 -0
  687. package/dist/ui/alert-dialog.cjs.map +1 -0
  688. package/dist/ui/alert-dialog.js +181 -0
  689. package/dist/ui/alert-dialog.js.map +1 -0
  690. package/dist/ui/alert.cjs +2 -0
  691. package/dist/ui/alert.cjs.map +1 -0
  692. package/dist/ui/alert.js +81 -0
  693. package/dist/ui/alert.js.map +1 -0
  694. package/dist/ui/aspect-ratio.cjs.map +1 -0
  695. package/dist/ui/aspect-ratio.js.map +1 -0
  696. package/dist/ui/avatar.cjs +2 -0
  697. package/dist/ui/avatar.cjs.map +1 -0
  698. package/dist/ui/avatar.js +107 -0
  699. package/dist/ui/avatar.js.map +1 -0
  700. package/dist/ui/badge.cjs +2 -0
  701. package/dist/ui/badge.cjs.map +1 -0
  702. package/dist/ui/badge.js +47 -0
  703. package/dist/ui/badge.js.map +1 -0
  704. package/dist/ui/banner.cjs +2 -0
  705. package/dist/ui/banner.cjs.map +1 -0
  706. package/dist/ui/banner.js +80 -0
  707. package/dist/ui/banner.js.map +1 -0
  708. package/dist/ui/breadcrumb.cjs +2 -0
  709. package/dist/ui/breadcrumb.cjs.map +1 -0
  710. package/dist/ui/breadcrumb.js +118 -0
  711. package/dist/ui/breadcrumb.js.map +1 -0
  712. package/dist/ui/button-group.cjs +2 -0
  713. package/dist/ui/button-group.cjs.map +1 -0
  714. package/dist/ui/button-group.js +77 -0
  715. package/dist/ui/button-group.js.map +1 -0
  716. package/dist/ui/button.cjs +2 -0
  717. package/dist/ui/button.cjs.map +1 -0
  718. package/dist/ui/button.js +57 -0
  719. package/dist/ui/button.js.map +1 -0
  720. package/dist/ui/calendar.cjs +2 -0
  721. package/dist/ui/calendar.cjs.map +1 -0
  722. package/dist/ui/calendar.js +174 -0
  723. package/dist/ui/calendar.js.map +1 -0
  724. package/dist/ui/card.cjs +2 -0
  725. package/dist/ui/card.cjs.map +1 -0
  726. package/dist/ui/card.js +102 -0
  727. package/dist/ui/card.js.map +1 -0
  728. package/dist/ui/carousel.cjs +2 -0
  729. package/dist/ui/carousel.cjs.map +1 -0
  730. package/dist/ui/carousel.js +179 -0
  731. package/dist/ui/carousel.js.map +1 -0
  732. package/dist/ui/checkbox.cjs +2 -0
  733. package/dist/ui/checkbox.cjs.map +1 -0
  734. package/dist/ui/checkbox.js +35 -0
  735. package/dist/ui/checkbox.js.map +1 -0
  736. package/dist/ui/code-block.cjs +4 -0
  737. package/dist/ui/code-block.cjs.map +1 -0
  738. package/dist/ui/code-block.js +324 -0
  739. package/dist/ui/code-block.js.map +1 -0
  740. package/dist/ui/code-editor.cjs +2 -0
  741. package/dist/ui/code-editor.cjs.map +1 -0
  742. package/dist/ui/code-editor.js +106 -0
  743. package/dist/ui/code-editor.js.map +1 -0
  744. package/dist/ui/collapsible.cjs.map +1 -0
  745. package/dist/ui/collapsible.js.map +1 -0
  746. package/dist/ui/combobox.cjs +2 -0
  747. package/dist/ui/combobox.cjs.map +1 -0
  748. package/dist/ui/combobox.js +285 -0
  749. package/dist/ui/combobox.js.map +1 -0
  750. package/dist/ui/command.cjs +2 -0
  751. package/dist/ui/command.cjs.map +1 -0
  752. package/dist/ui/command.js +178 -0
  753. package/dist/ui/command.js.map +1 -0
  754. package/dist/ui/context-menu.cjs +2 -0
  755. package/dist/ui/context-menu.cjs.map +1 -0
  756. package/dist/ui/context-menu.js +236 -0
  757. package/dist/ui/context-menu.js.map +1 -0
  758. package/dist/ui/data-table.cjs +2 -0
  759. package/dist/ui/data-table.cjs.map +1 -0
  760. package/dist/ui/data-table.js +16 -0
  761. package/dist/ui/data-table.js.map +1 -0
  762. package/dist/ui/dialog.cjs +2 -0
  763. package/dist/ui/dialog.cjs.map +1 -0
  764. package/dist/ui/dialog.js +165 -0
  765. package/dist/ui/dialog.js.map +1 -0
  766. package/dist/ui/dropdown-menu.cjs +2 -0
  767. package/dist/ui/dropdown-menu.cjs.map +1 -0
  768. package/dist/ui/dropdown-menu.js +260 -0
  769. package/dist/ui/dropdown-menu.js.map +1 -0
  770. package/dist/ui/field.cjs +2 -0
  771. package/dist/ui/field.cjs.map +1 -0
  772. package/dist/ui/field.js +210 -0
  773. package/dist/ui/field.js.map +1 -0
  774. package/dist/ui/hover-card.cjs +2 -0
  775. package/dist/ui/hover-card.cjs.map +1 -0
  776. package/dist/ui/hover-card.js +39 -0
  777. package/dist/ui/hover-card.js.map +1 -0
  778. package/dist/ui/input-group.cjs +2 -0
  779. package/dist/ui/input-group.cjs.map +1 -0
  780. package/dist/ui/input-group.js +145 -0
  781. package/dist/ui/input-group.js.map +1 -0
  782. package/dist/ui/input.cjs +2 -0
  783. package/dist/ui/input.cjs.map +1 -0
  784. package/dist/ui/input.js +20 -0
  785. package/dist/ui/input.js.map +1 -0
  786. package/dist/ui/item.cjs +2 -0
  787. package/dist/ui/item.cjs.map +1 -0
  788. package/dist/ui/item.js +199 -0
  789. package/dist/ui/item.js.map +1 -0
  790. package/dist/ui/kbd.cjs +2 -0
  791. package/dist/ui/kbd.cjs.map +1 -0
  792. package/dist/ui/kbd.js +30 -0
  793. package/dist/ui/kbd.js.map +1 -0
  794. package/dist/ui/label.cjs +2 -0
  795. package/dist/ui/label.cjs.map +1 -0
  796. package/dist/ui/label.js +23 -0
  797. package/dist/ui/label.js.map +1 -0
  798. package/dist/ui/menubar.cjs +2 -0
  799. package/dist/ui/menubar.cjs.map +1 -0
  800. package/dist/ui/menubar.js +256 -0
  801. package/dist/ui/menubar.js.map +1 -0
  802. package/dist/ui/navigation-menu.cjs +2 -0
  803. package/dist/ui/navigation-menu.cjs.map +1 -0
  804. package/dist/ui/navigation-menu.js +164 -0
  805. package/dist/ui/navigation-menu.js.map +1 -0
  806. package/dist/ui/popover.cjs +2 -0
  807. package/dist/ui/popover.cjs.map +1 -0
  808. package/dist/ui/popover.js +45 -0
  809. package/dist/ui/popover.js.map +1 -0
  810. package/dist/ui/radio-group.cjs +2 -0
  811. package/dist/ui/radio-group.cjs.map +1 -0
  812. package/dist/ui/radio-group.js +45 -0
  813. package/dist/ui/radio-group.js.map +1 -0
  814. package/dist/ui/resizable.cjs +2 -0
  815. package/dist/ui/resizable.cjs.map +1 -0
  816. package/dist/ui/resizable.js +58 -0
  817. package/dist/ui/resizable.js.map +1 -0
  818. package/dist/ui/scroll-area.cjs +2 -0
  819. package/dist/ui/scroll-area.cjs.map +1 -0
  820. package/dist/ui/scroll-area.js +61 -0
  821. package/dist/ui/scroll-area.js.map +1 -0
  822. package/dist/ui/select.cjs +2 -0
  823. package/dist/ui/select.cjs.map +1 -0
  824. package/dist/ui/select.js +184 -0
  825. package/dist/ui/select.js.map +1 -0
  826. package/dist/ui/separator.cjs +2 -0
  827. package/dist/ui/separator.cjs.map +1 -0
  828. package/dist/ui/separator.js +27 -0
  829. package/dist/ui/separator.js.map +1 -0
  830. package/dist/ui/sheet.cjs +2 -0
  831. package/dist/ui/sheet.cjs.map +1 -0
  832. package/dist/ui/sheet.js +137 -0
  833. package/dist/ui/sheet.js.map +1 -0
  834. package/dist/ui/sidebar.cjs +2 -0
  835. package/dist/ui/sidebar.cjs.map +1 -0
  836. package/dist/ui/sidebar.js +579 -0
  837. package/dist/ui/sidebar.js.map +1 -0
  838. package/dist/ui/skeleton.cjs +2 -0
  839. package/dist/ui/skeleton.cjs.map +1 -0
  840. package/dist/ui/skeleton.js +24 -0
  841. package/dist/ui/skeleton.js.map +1 -0
  842. package/dist/ui/slider.cjs +2 -0
  843. package/dist/ui/slider.cjs.map +1 -0
  844. package/dist/ui/slider.js +61 -0
  845. package/dist/ui/slider.js.map +1 -0
  846. package/dist/ui/sonner.cjs +2 -0
  847. package/dist/ui/sonner.cjs.map +1 -0
  848. package/dist/ui/sonner.js +52 -0
  849. package/dist/ui/sonner.js.map +1 -0
  850. package/dist/ui/spinner.cjs +2 -0
  851. package/dist/ui/spinner.cjs.map +1 -0
  852. package/dist/ui/spinner.js +39 -0
  853. package/dist/ui/spinner.js.map +1 -0
  854. package/dist/ui/switch.cjs +2 -0
  855. package/dist/ui/switch.cjs.map +1 -0
  856. package/dist/ui/switch.js +32 -0
  857. package/dist/ui/switch.js.map +1 -0
  858. package/dist/ui/table.cjs +2 -0
  859. package/dist/ui/table.cjs.map +1 -0
  860. package/dist/ui/table.js +153 -0
  861. package/dist/ui/table.js.map +1 -0
  862. package/dist/ui/tabs.cjs +2 -0
  863. package/dist/ui/tabs.cjs.map +1 -0
  864. package/dist/ui/tabs.js +92 -0
  865. package/dist/ui/tabs.js.map +1 -0
  866. package/dist/ui/tetra-molecule-icon.cjs +2 -0
  867. package/dist/ui/tetra-molecule-icon.cjs.map +1 -0
  868. package/dist/ui/tetra-molecule-icon.js +50 -0
  869. package/dist/ui/tetra-molecule-icon.js.map +1 -0
  870. package/dist/ui/tetrascience-icon.cjs +2 -0
  871. package/dist/ui/tetrascience-icon.cjs.map +1 -0
  872. package/dist/ui/tetrascience-icon.js +47 -0
  873. package/dist/ui/tetrascience-icon.js.map +1 -0
  874. package/dist/ui/textarea.cjs +2 -0
  875. package/dist/ui/textarea.cjs.map +1 -0
  876. package/dist/ui/textarea.js +19 -0
  877. package/dist/ui/textarea.js.map +1 -0
  878. package/dist/ui/toggle-group.cjs +2 -0
  879. package/dist/ui/toggle-group.cjs.map +1 -0
  880. package/dist/ui/toggle-group.js +81 -0
  881. package/dist/ui/toggle-group.js.map +1 -0
  882. package/dist/ui/toggle.cjs +2 -0
  883. package/dist/ui/toggle.cjs.map +1 -0
  884. package/dist/ui/toggle.js +44 -0
  885. package/dist/ui/toggle.js.map +1 -0
  886. package/dist/ui/tooltip.cjs +2 -0
  887. package/dist/ui/tooltip.cjs.map +1 -0
  888. package/dist/ui/tooltip.js +56 -0
  889. package/dist/ui/tooltip.js.map +1 -0
  890. package/dist/utils/colors.d.ts +50 -0
  891. package/package.json +137 -24
  892. package/dist/athena.d.ts +0 -167
  893. package/dist/components/ai/attachments.cjs +0 -2
  894. package/dist/components/ai/attachments.cjs.map +0 -1
  895. package/dist/components/ai/attachments.js +0 -224
  896. package/dist/components/ai/attachments.js.map +0 -1
  897. package/dist/components/ai/chain-of-thought.cjs +0 -2
  898. package/dist/components/ai/chain-of-thought.cjs.map +0 -1
  899. package/dist/components/ai/chain-of-thought.js +0 -145
  900. package/dist/components/ai/chain-of-thought.js.map +0 -1
  901. package/dist/components/ai/confirmation.cjs +0 -2
  902. package/dist/components/ai/confirmation.cjs.map +0 -1
  903. package/dist/components/ai/confirmation.js +0 -109
  904. package/dist/components/ai/confirmation.js.map +0 -1
  905. package/dist/components/ai/context.cjs +0 -2
  906. package/dist/components/ai/context.cjs.map +0 -1
  907. package/dist/components/ai/context.js +0 -266
  908. package/dist/components/ai/context.js.map +0 -1
  909. package/dist/components/ai/conversation.cjs +0 -4
  910. package/dist/components/ai/conversation.cjs.map +0 -1
  911. package/dist/components/ai/conversation.js +0 -108
  912. package/dist/components/ai/conversation.js.map +0 -1
  913. package/dist/components/ai/inline-citation.cjs +0 -2
  914. package/dist/components/ai/inline-citation.cjs.map +0 -1
  915. package/dist/components/ai/inline-citation.js +0 -182
  916. package/dist/components/ai/inline-citation.js.map +0 -1
  917. package/dist/components/ai/message.cjs +0 -2
  918. package/dist/components/ai/message.cjs.map +0 -1
  919. package/dist/components/ai/message.js +0 -237
  920. package/dist/components/ai/message.js.map +0 -1
  921. package/dist/components/ai/model-selector.cjs +0 -2
  922. package/dist/components/ai/model-selector.cjs.map +0 -1
  923. package/dist/components/ai/model-selector.js +0 -77
  924. package/dist/components/ai/model-selector.js.map +0 -1
  925. package/dist/components/ai/prompt-input.cjs +0 -2
  926. package/dist/components/ai/prompt-input.cjs.map +0 -1
  927. package/dist/components/ai/prompt-input.js +0 -774
  928. package/dist/components/ai/prompt-input.js.map +0 -1
  929. package/dist/components/ai/queue.cjs +0 -2
  930. package/dist/components/ai/queue.cjs.map +0 -1
  931. package/dist/components/ai/queue.js +0 -209
  932. package/dist/components/ai/queue.js.map +0 -1
  933. package/dist/components/ai/reasoning.cjs +0 -2
  934. package/dist/components/ai/reasoning.cjs.map +0 -1
  935. package/dist/components/ai/reasoning.js +0 -129
  936. package/dist/components/ai/reasoning.js.map +0 -1
  937. package/dist/components/ai/shimmer.cjs +0 -2
  938. package/dist/components/ai/shimmer.cjs.map +0 -1
  939. package/dist/components/ai/shimmer.js +0 -49
  940. package/dist/components/ai/shimmer.js.map +0 -1
  941. package/dist/components/ai/sources.cjs +0 -2
  942. package/dist/components/ai/sources.cjs.map +0 -1
  943. package/dist/components/ai/sources.js +0 -54
  944. package/dist/components/ai/sources.js.map +0 -1
  945. package/dist/components/ai/speech-input.cjs +0 -2
  946. package/dist/components/ai/speech-input.cjs.map +0 -1
  947. package/dist/components/ai/speech-input.js +0 -123
  948. package/dist/components/ai/speech-input.js.map +0 -1
  949. package/dist/components/ai/stream-status.cjs +0 -2
  950. package/dist/components/ai/stream-status.cjs.map +0 -1
  951. package/dist/components/ai/stream-status.js +0 -106
  952. package/dist/components/ai/stream-status.js.map +0 -1
  953. package/dist/components/ai/suggestion.cjs +0 -2
  954. package/dist/components/ai/suggestion.cjs.map +0 -1
  955. package/dist/components/ai/suggestion.js +0 -38
  956. package/dist/components/ai/suggestion.js.map +0 -1
  957. package/dist/components/ai/task.cjs +0 -2
  958. package/dist/components/ai/task.cjs.map +0 -1
  959. package/dist/components/ai/task.js +0 -94
  960. package/dist/components/ai/task.js.map +0 -1
  961. package/dist/components/ai/tool.cjs +0 -2
  962. package/dist/components/ai/tool.cjs.map +0 -1
  963. package/dist/components/ai/tool.js +0 -143
  964. package/dist/components/ai/tool.js.map +0 -1
  965. package/dist/components/charts/AreaGraph/AreaGraph.cjs +0 -2
  966. package/dist/components/charts/AreaGraph/AreaGraph.cjs.map +0 -1
  967. package/dist/components/charts/AreaGraph/AreaGraph.js +0 -271
  968. package/dist/components/charts/AreaGraph/AreaGraph.js.map +0 -1
  969. package/dist/components/charts/BarGraph/BarGraph.cjs +0 -2
  970. package/dist/components/charts/BarGraph/BarGraph.cjs.map +0 -1
  971. package/dist/components/charts/BarGraph/BarGraph.js +0 -220
  972. package/dist/components/charts/BarGraph/BarGraph.js.map +0 -1
  973. package/dist/components/charts/Boxplot/Boxplot.cjs +0 -2
  974. package/dist/components/charts/Boxplot/Boxplot.cjs.map +0 -1
  975. package/dist/components/charts/Boxplot/Boxplot.js +0 -209
  976. package/dist/components/charts/Boxplot/Boxplot.js.map +0 -1
  977. package/dist/components/charts/ChromatogramChart/ChromatogramChart.cjs +0 -2
  978. package/dist/components/charts/ChromatogramChart/ChromatogramChart.cjs.map +0 -1
  979. package/dist/components/charts/ChromatogramChart/ChromatogramChart.js +0 -227
  980. package/dist/components/charts/ChromatogramChart/ChromatogramChart.js.map +0 -1
  981. package/dist/components/charts/ChromatogramChart/annotations.cjs +0 -2
  982. package/dist/components/charts/ChromatogramChart/annotations.cjs.map +0 -1
  983. package/dist/components/charts/ChromatogramChart/annotations.js +0 -73
  984. package/dist/components/charts/ChromatogramChart/annotations.js.map +0 -1
  985. package/dist/components/charts/ChromatogramChart/boundaryMarkers.cjs +0 -2
  986. package/dist/components/charts/ChromatogramChart/boundaryMarkers.cjs.map +0 -1
  987. package/dist/components/charts/ChromatogramChart/boundaryMarkers.js +0 -34
  988. package/dist/components/charts/ChromatogramChart/boundaryMarkers.js.map +0 -1
  989. package/dist/components/charts/ChromatogramChart/constants.cjs +0 -2
  990. package/dist/components/charts/ChromatogramChart/constants.cjs.map +0 -1
  991. package/dist/components/charts/ChromatogramChart/constants.js +0 -30
  992. package/dist/components/charts/ChromatogramChart/constants.js.map +0 -1
  993. package/dist/components/charts/ChromatogramChart/dataProcessing.cjs +0 -2
  994. package/dist/components/charts/ChromatogramChart/dataProcessing.cjs.map +0 -1
  995. package/dist/components/charts/ChromatogramChart/dataProcessing.js +0 -79
  996. package/dist/components/charts/ChromatogramChart/dataProcessing.js.map +0 -1
  997. package/dist/components/charts/ChromatogramChart/peakDetection.cjs.map +0 -1
  998. package/dist/components/charts/ChromatogramChart/peakDetection.js.map +0 -1
  999. package/dist/components/charts/DotPlot/DotPlot.cjs +0 -2
  1000. package/dist/components/charts/DotPlot/DotPlot.cjs.map +0 -1
  1001. package/dist/components/charts/DotPlot/DotPlot.js +0 -208
  1002. package/dist/components/charts/DotPlot/DotPlot.js.map +0 -1
  1003. package/dist/components/charts/Heatmap/Heatmap.cjs +0 -2
  1004. package/dist/components/charts/Heatmap/Heatmap.cjs.map +0 -1
  1005. package/dist/components/charts/Heatmap/Heatmap.js +0 -67
  1006. package/dist/components/charts/Heatmap/Heatmap.js.map +0 -1
  1007. package/dist/components/charts/LineGraph/LineGraph.cjs +0 -2
  1008. package/dist/components/charts/LineGraph/LineGraph.cjs.map +0 -1
  1009. package/dist/components/charts/LineGraph/LineGraph.js +0 -225
  1010. package/dist/components/charts/LineGraph/LineGraph.js.map +0 -1
  1011. package/dist/components/charts/ScatterGraph/ScatterGraph.cjs +0 -2
  1012. package/dist/components/charts/ScatterGraph/ScatterGraph.cjs.map +0 -1
  1013. package/dist/components/charts/ScatterGraph/ScatterGraph.js +0 -234
  1014. package/dist/components/charts/ScatterGraph/ScatterGraph.js.map +0 -1
  1015. package/dist/components/composed/tdp-link.cjs +0 -2
  1016. package/dist/components/composed/tdp-link.cjs.map +0 -1
  1017. package/dist/components/composed/tdp-link.js +0 -84
  1018. package/dist/components/composed/tdp-link.js.map +0 -1
  1019. package/dist/components/composed/tdp-url.cjs.map +0 -1
  1020. package/dist/components/composed/tdp-url.js.map +0 -1
  1021. package/dist/components/ui/accordion.cjs +0 -2
  1022. package/dist/components/ui/accordion.cjs.map +0 -1
  1023. package/dist/components/ui/accordion.js +0 -83
  1024. package/dist/components/ui/accordion.js.map +0 -1
  1025. package/dist/components/ui/alert-dialog.cjs +0 -2
  1026. package/dist/components/ui/alert-dialog.cjs.map +0 -1
  1027. package/dist/components/ui/alert-dialog.js +0 -181
  1028. package/dist/components/ui/alert-dialog.js.map +0 -1
  1029. package/dist/components/ui/alert.cjs +0 -2
  1030. package/dist/components/ui/alert.cjs.map +0 -1
  1031. package/dist/components/ui/alert.js +0 -81
  1032. package/dist/components/ui/alert.js.map +0 -1
  1033. package/dist/components/ui/aspect-ratio.cjs.map +0 -1
  1034. package/dist/components/ui/aspect-ratio.js.map +0 -1
  1035. package/dist/components/ui/avatar.cjs +0 -2
  1036. package/dist/components/ui/avatar.cjs.map +0 -1
  1037. package/dist/components/ui/avatar.js +0 -107
  1038. package/dist/components/ui/avatar.js.map +0 -1
  1039. package/dist/components/ui/badge.cjs +0 -2
  1040. package/dist/components/ui/badge.cjs.map +0 -1
  1041. package/dist/components/ui/badge.js +0 -47
  1042. package/dist/components/ui/badge.js.map +0 -1
  1043. package/dist/components/ui/banner.cjs +0 -2
  1044. package/dist/components/ui/banner.cjs.map +0 -1
  1045. package/dist/components/ui/banner.js +0 -80
  1046. package/dist/components/ui/banner.js.map +0 -1
  1047. package/dist/components/ui/breadcrumb.cjs +0 -2
  1048. package/dist/components/ui/breadcrumb.cjs.map +0 -1
  1049. package/dist/components/ui/breadcrumb.js +0 -118
  1050. package/dist/components/ui/breadcrumb.js.map +0 -1
  1051. package/dist/components/ui/button-group.cjs +0 -2
  1052. package/dist/components/ui/button-group.cjs.map +0 -1
  1053. package/dist/components/ui/button-group.js +0 -77
  1054. package/dist/components/ui/button-group.js.map +0 -1
  1055. package/dist/components/ui/button.cjs +0 -2
  1056. package/dist/components/ui/button.cjs.map +0 -1
  1057. package/dist/components/ui/button.js +0 -57
  1058. package/dist/components/ui/button.js.map +0 -1
  1059. package/dist/components/ui/calendar.cjs +0 -2
  1060. package/dist/components/ui/calendar.cjs.map +0 -1
  1061. package/dist/components/ui/calendar.js +0 -174
  1062. package/dist/components/ui/calendar.js.map +0 -1
  1063. package/dist/components/ui/card.cjs +0 -2
  1064. package/dist/components/ui/card.cjs.map +0 -1
  1065. package/dist/components/ui/card.js +0 -102
  1066. package/dist/components/ui/card.js.map +0 -1
  1067. package/dist/components/ui/carousel.cjs +0 -2
  1068. package/dist/components/ui/carousel.cjs.map +0 -1
  1069. package/dist/components/ui/carousel.js +0 -179
  1070. package/dist/components/ui/carousel.js.map +0 -1
  1071. package/dist/components/ui/checkbox.cjs +0 -2
  1072. package/dist/components/ui/checkbox.cjs.map +0 -1
  1073. package/dist/components/ui/checkbox.js +0 -35
  1074. package/dist/components/ui/checkbox.js.map +0 -1
  1075. package/dist/components/ui/code-block.cjs +0 -4
  1076. package/dist/components/ui/code-block.cjs.map +0 -1
  1077. package/dist/components/ui/code-block.js +0 -306
  1078. package/dist/components/ui/code-block.js.map +0 -1
  1079. package/dist/components/ui/code-editor.cjs +0 -2
  1080. package/dist/components/ui/code-editor.cjs.map +0 -1
  1081. package/dist/components/ui/code-editor.js +0 -103
  1082. package/dist/components/ui/code-editor.js.map +0 -1
  1083. package/dist/components/ui/collapsible.cjs.map +0 -1
  1084. package/dist/components/ui/collapsible.js.map +0 -1
  1085. package/dist/components/ui/combobox.cjs +0 -2
  1086. package/dist/components/ui/combobox.cjs.map +0 -1
  1087. package/dist/components/ui/combobox.js +0 -281
  1088. package/dist/components/ui/combobox.js.map +0 -1
  1089. package/dist/components/ui/command.cjs +0 -2
  1090. package/dist/components/ui/command.cjs.map +0 -1
  1091. package/dist/components/ui/command.js +0 -174
  1092. package/dist/components/ui/command.js.map +0 -1
  1093. package/dist/components/ui/context-menu.cjs +0 -2
  1094. package/dist/components/ui/context-menu.cjs.map +0 -1
  1095. package/dist/components/ui/context-menu.js +0 -236
  1096. package/dist/components/ui/context-menu.js.map +0 -1
  1097. package/dist/components/ui/dialog.cjs +0 -2
  1098. package/dist/components/ui/dialog.cjs.map +0 -1
  1099. package/dist/components/ui/dialog.js +0 -165
  1100. package/dist/components/ui/dialog.js.map +0 -1
  1101. package/dist/components/ui/drawer.cjs +0 -2
  1102. package/dist/components/ui/drawer.cjs.map +0 -1
  1103. package/dist/components/ui/drawer.js +0 -125
  1104. package/dist/components/ui/drawer.js.map +0 -1
  1105. package/dist/components/ui/dropdown-menu.cjs +0 -2
  1106. package/dist/components/ui/dropdown-menu.cjs.map +0 -1
  1107. package/dist/components/ui/dropdown-menu.js +0 -252
  1108. package/dist/components/ui/dropdown-menu.js.map +0 -1
  1109. package/dist/components/ui/field.cjs +0 -2
  1110. package/dist/components/ui/field.cjs.map +0 -1
  1111. package/dist/components/ui/field.js +0 -210
  1112. package/dist/components/ui/field.js.map +0 -1
  1113. package/dist/components/ui/hover-card.cjs +0 -2
  1114. package/dist/components/ui/hover-card.cjs.map +0 -1
  1115. package/dist/components/ui/hover-card.js +0 -39
  1116. package/dist/components/ui/hover-card.js.map +0 -1
  1117. package/dist/components/ui/input-group.cjs +0 -2
  1118. package/dist/components/ui/input-group.cjs.map +0 -1
  1119. package/dist/components/ui/input-group.js +0 -145
  1120. package/dist/components/ui/input-group.js.map +0 -1
  1121. package/dist/components/ui/input-otp.cjs +0 -2
  1122. package/dist/components/ui/input-otp.cjs.map +0 -1
  1123. package/dist/components/ui/input-otp.js +0 -82
  1124. package/dist/components/ui/input-otp.js.map +0 -1
  1125. package/dist/components/ui/input.cjs +0 -2
  1126. package/dist/components/ui/input.cjs.map +0 -1
  1127. package/dist/components/ui/input.js +0 -20
  1128. package/dist/components/ui/input.js.map +0 -1
  1129. package/dist/components/ui/item.cjs +0 -2
  1130. package/dist/components/ui/item.cjs.map +0 -1
  1131. package/dist/components/ui/item.js +0 -191
  1132. package/dist/components/ui/item.js.map +0 -1
  1133. package/dist/components/ui/kbd.cjs +0 -2
  1134. package/dist/components/ui/kbd.cjs.map +0 -1
  1135. package/dist/components/ui/kbd.js +0 -30
  1136. package/dist/components/ui/kbd.js.map +0 -1
  1137. package/dist/components/ui/label.cjs +0 -2
  1138. package/dist/components/ui/label.cjs.map +0 -1
  1139. package/dist/components/ui/label.js +0 -23
  1140. package/dist/components/ui/label.js.map +0 -1
  1141. package/dist/components/ui/menubar.cjs +0 -2
  1142. package/dist/components/ui/menubar.cjs.map +0 -1
  1143. package/dist/components/ui/menubar.js +0 -256
  1144. package/dist/components/ui/menubar.js.map +0 -1
  1145. package/dist/components/ui/navigation-menu.cjs +0 -2
  1146. package/dist/components/ui/navigation-menu.cjs.map +0 -1
  1147. package/dist/components/ui/navigation-menu.js +0 -164
  1148. package/dist/components/ui/navigation-menu.js.map +0 -1
  1149. package/dist/components/ui/popover.cjs +0 -2
  1150. package/dist/components/ui/popover.cjs.map +0 -1
  1151. package/dist/components/ui/popover.js +0 -45
  1152. package/dist/components/ui/popover.js.map +0 -1
  1153. package/dist/components/ui/radio-group.cjs +0 -2
  1154. package/dist/components/ui/radio-group.cjs.map +0 -1
  1155. package/dist/components/ui/radio-group.js +0 -45
  1156. package/dist/components/ui/radio-group.js.map +0 -1
  1157. package/dist/components/ui/resizable.cjs +0 -2
  1158. package/dist/components/ui/resizable.cjs.map +0 -1
  1159. package/dist/components/ui/resizable.js +0 -58
  1160. package/dist/components/ui/resizable.js.map +0 -1
  1161. package/dist/components/ui/scroll-area.cjs +0 -2
  1162. package/dist/components/ui/scroll-area.cjs.map +0 -1
  1163. package/dist/components/ui/scroll-area.js +0 -60
  1164. package/dist/components/ui/scroll-area.js.map +0 -1
  1165. package/dist/components/ui/select.cjs +0 -2
  1166. package/dist/components/ui/select.cjs.map +0 -1
  1167. package/dist/components/ui/select.js +0 -184
  1168. package/dist/components/ui/select.js.map +0 -1
  1169. package/dist/components/ui/separator.cjs +0 -2
  1170. package/dist/components/ui/separator.cjs.map +0 -1
  1171. package/dist/components/ui/separator.js +0 -27
  1172. package/dist/components/ui/separator.js.map +0 -1
  1173. package/dist/components/ui/sheet.cjs +0 -2
  1174. package/dist/components/ui/sheet.cjs.map +0 -1
  1175. package/dist/components/ui/sheet.js +0 -137
  1176. package/dist/components/ui/sheet.js.map +0 -1
  1177. package/dist/components/ui/sidebar.cjs +0 -2
  1178. package/dist/components/ui/sidebar.cjs.map +0 -1
  1179. package/dist/components/ui/sidebar.js +0 -579
  1180. package/dist/components/ui/sidebar.js.map +0 -1
  1181. package/dist/components/ui/skeleton.cjs +0 -2
  1182. package/dist/components/ui/skeleton.cjs.map +0 -1
  1183. package/dist/components/ui/skeleton.js +0 -24
  1184. package/dist/components/ui/skeleton.js.map +0 -1
  1185. package/dist/components/ui/slider.cjs +0 -2
  1186. package/dist/components/ui/slider.cjs.map +0 -1
  1187. package/dist/components/ui/slider.js +0 -60
  1188. package/dist/components/ui/slider.js.map +0 -1
  1189. package/dist/components/ui/sonner.cjs +0 -2
  1190. package/dist/components/ui/sonner.cjs.map +0 -1
  1191. package/dist/components/ui/sonner.js +0 -37
  1192. package/dist/components/ui/sonner.js.map +0 -1
  1193. package/dist/components/ui/spinner.cjs +0 -2
  1194. package/dist/components/ui/spinner.cjs.map +0 -1
  1195. package/dist/components/ui/spinner.js +0 -39
  1196. package/dist/components/ui/spinner.js.map +0 -1
  1197. package/dist/components/ui/switch.cjs +0 -2
  1198. package/dist/components/ui/switch.cjs.map +0 -1
  1199. package/dist/components/ui/switch.js +0 -32
  1200. package/dist/components/ui/switch.js.map +0 -1
  1201. package/dist/components/ui/table.cjs +0 -2
  1202. package/dist/components/ui/table.cjs.map +0 -1
  1203. package/dist/components/ui/table.js +0 -152
  1204. package/dist/components/ui/table.js.map +0 -1
  1205. package/dist/components/ui/tabs.cjs +0 -2
  1206. package/dist/components/ui/tabs.cjs.map +0 -1
  1207. package/dist/components/ui/tabs.js +0 -92
  1208. package/dist/components/ui/tabs.js.map +0 -1
  1209. package/dist/components/ui/tetrascience-icon.cjs +0 -2
  1210. package/dist/components/ui/tetrascience-icon.cjs.map +0 -1
  1211. package/dist/components/ui/tetrascience-icon.js +0 -46
  1212. package/dist/components/ui/tetrascience-icon.js.map +0 -1
  1213. package/dist/components/ui/textarea.cjs +0 -2
  1214. package/dist/components/ui/textarea.cjs.map +0 -1
  1215. package/dist/components/ui/textarea.js +0 -19
  1216. package/dist/components/ui/textarea.js.map +0 -1
  1217. package/dist/components/ui/toggle-group.cjs +0 -2
  1218. package/dist/components/ui/toggle-group.cjs.map +0 -1
  1219. package/dist/components/ui/toggle-group.js +0 -77
  1220. package/dist/components/ui/toggle-group.js.map +0 -1
  1221. package/dist/components/ui/toggle.cjs +0 -2
  1222. package/dist/components/ui/toggle.cjs.map +0 -1
  1223. package/dist/components/ui/toggle.js +0 -44
  1224. package/dist/components/ui/toggle.js.map +0 -1
  1225. package/dist/components/ui/tooltip.cjs +0 -2
  1226. package/dist/components/ui/tooltip.cjs.map +0 -1
  1227. package/dist/components/ui/tooltip.js +0 -56
  1228. package/dist/components/ui/tooltip.js.map +0 -1
  1229. package/dist/databricks.d.ts +0 -129
  1230. package/dist/providers/athena.d.ts +0 -9
  1231. package/dist/providers/databricks.d.ts +0 -9
  1232. package/dist/providers/snowflake.d.ts +0 -9
  1233. package/dist/snowflake.d.ts +0 -125
  1234. /package/dist/components/charts/{ChromatogramChart → Chromatogram}/peakDetection.cjs +0 -0
  1235. /package/dist/components/charts/{ChromatogramChart → Chromatogram}/peakDetection.js +0 -0
  1236. /package/dist/{components/composed → composed}/tdp-url.cjs +0 -0
  1237. /package/dist/{components/composed → composed}/tdp-url.js +0 -0
  1238. /package/dist/{components/ui → ui}/aspect-ratio.cjs +0 -0
  1239. /package/dist/{components/ui → ui}/aspect-ratio.js +0 -0
  1240. /package/dist/{components/ui → ui}/collapsible.cjs +0 -0
  1241. /package/dist/{components/ui → ui}/collapsible.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"DataAppShell.js","sources":["../../../../src/components/composed/DataAppShell/DataAppShell.tsx"],"sourcesContent":["import { cva } from \"class-variance-authority\";\nimport {\n ArrowLeft,\n HelpCircle,\n Menu,\n type LucideIcon,\n} from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { TDPLink } from \"@/components/composed/tdp-link\";\nimport {\n Breadcrumb,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetTitle,\n SheetTrigger,\n} from \"@/components/ui/sheet\";\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 interface NavPage {\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 /** Whether this page is currently active */\n isActive?: boolean;\n /** Click handler */\n onClick?: () => void;\n}\n\nexport interface NavGroup {\n /** Optional group label shown as a section header in expanded nav */\n label?: string;\n /** Page entries in this group */\n pages: NavPage[];\n}\n\nexport interface BreadcrumbItemConfig {\n /** Display label */\n label: string;\n /** If provided, renders as a link */\n href?: string;\n /** Click handler (used when no href is provided) */\n onClick?: () => void;\n}\n\nexport interface DataAppShellProps {\n // -- Sidebar --\n /** Application name/abbreviation shown in the logo button */\n appName: string;\n /** Full application name shown in the app dropdown and mobile nav header */\n appFullName?: string;\n /** Custom icon element shown in the logo area */\n appIcon?: React.ReactNode;\n /** Optional version string shown below the app name/icon in the sidebar header */\n version?: string;\n /** Navigation groups; each group contains one or more pages */\n navGroups: NavGroup[];\n /** Callback when the app name / icon is clicked in the dropdown */\n onAppNameClick?: () => void;\n /** TDP path to navigate to when \"Back to TDP Platform\" is clicked (uses TDPLink — requires TdpNavigationProvider) */\n backToPlatformPath?: string;\n /** Fallback callback when \"Back to TDP Platform\" is clicked and no backToPlatformPath is set */\n onBackToPlatform?: () => void;\n /** Slot rendered at the bottom of the sidebar (e.g. user avatar + menu) */\n userMenu?: React.ReactNode;\n\n // -- Top nav --\n /** Breadcrumb items from root to current page */\n breadcrumbs?: BreadcrumbItemConfig[];\n /** Callback when the help button is clicked; omit to hide the button */\n onHelpClick?: () => void;\n /** Slot for right-side actions in the top nav (e.g. data count pills, next button) */\n headerActions?: React.ReactNode;\n\n // -- Shell --\n /** Slot rendered between the icon rail and the content (e.g. WorkflowPanel) */\n sidebarPanel?: React.ReactNode;\n /** Show the desktop icon nav rail. Set false to reclaim width when the panel is collapsed. */\n showNavRail?: boolean; // default true\n /** Main content area */\n children: React.ReactNode;\n /** Additional className for the root container */\n className?: string;\n}\n\n// =============================================================================\n// Sidebar shared body (used by desktop rail + mobile Sheet)\n// =============================================================================\n\ninterface SidebarBodyProps\n extends Pick<\n DataAppShellProps,\n | \"appName\"\n | \"appFullName\"\n | \"appIcon\"\n | \"version\"\n | \"navGroups\"\n | \"onAppNameClick\"\n | \"backToPlatformPath\"\n | \"onBackToPlatform\"\n | \"userMenu\"\n > {\n /**\n * compact=true → narrow icon rail (60px): icons + tiny labels stacked, tooltips on hover\n * compact=false → expanded mobile sheet (220px): icon + label side-by-side rows\n */\n compact: boolean;\n /** Called after a nav page item is clicked — used by mobile sheet to close itself */\n onAfterNavClick?: () => void;\n}\n\nconst pageIconVariants = cva(\n \"flex items-center justify-center rounded-lg transition-colors duration-150\",\n {\n variants: {\n active: {\n true: \"bg-primary/10\",\n false: \"bg-transparent\",\n },\n compact: {\n true: \"w-9 h-9 hover:bg-accent\",\n false: \"w-8 h-8\",\n },\n },\n defaultVariants: { active: false, compact: true },\n }\n);\n\nfunction SidebarBody({\n appName,\n appFullName,\n appIcon,\n version,\n navGroups,\n onAppNameClick,\n backToPlatformPath,\n onBackToPlatform,\n userMenu,\n compact,\n onAfterNavClick,\n}: SidebarBodyProps) {\n return (\n <TooltipProvider>\n {/* ── Header: app icon / name + version ──────────────────────────────── */}\n <div\n className={cn(\n \"shrink-0 flex\",\n // Expanded: full-width header border. Collapsed: no full-width border —\n // a short centered divider (below) aligns under the icon column instead.\n compact ? \"justify-center py-2\" : \"px-3 py-2.5 border-b border-sidebar-border\"\n )}\n >\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n className={cn(\n \"cursor-pointer bg-transparent border-none p-0\",\n !compact && \"flex items-center gap-3 w-full text-left\"\n )}\n >\n {/* Icon */}\n <span\n className={cn(\n \"flex items-center justify-center rounded-lg bg-sidebar-accent border border-sidebar-border font-bold text-foreground shrink-0\",\n compact ? \"w-9 h-9 text-[11px]\" : \"w-8 h-8 text-[10px]\"\n )}\n >\n {appIcon ?? appName}\n </span>\n\n {/* Name (expanded only — no version here) */}\n {!compact && (\n <span className=\"text-sm font-semibold text-foreground truncate leading-snug\">\n {appFullName ?? appName}\n </span>\n )}\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent side=\"right\" align=\"start\" className=\"min-w-[220px]\">\n <div\n className=\"flex items-center gap-3 px-3 py-2.5 cursor-pointer\"\n onClick={onAppNameClick}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") onAppNameClick?.();\n }}\n >\n <div className=\"w-8 h-8 rounded-lg bg-sidebar-accent border border-sidebar-border flex items-center justify-center shrink-0\">\n <span className=\"text-[10px] font-bold text-foreground\">\n {appIcon ?? appName}\n </span>\n </div>\n <div className=\"flex flex-col min-w-0\">\n <span className=\"text-sm font-semibold text-foreground truncate\">\n {appFullName ?? appName}\n </span>\n {version && (\n <span className=\"text-[10px] text-muted-foreground/70 font-mono leading-none mt-0.5\">\n {version}\n </span>\n )}\n </div>\n </div>\n <DropdownMenuSeparator />\n <DropdownMenuItem className=\"gap-2.5 p-0\" asChild>\n {backToPlatformPath ? (\n <TDPLink\n path={backToPlatformPath}\n navigationOptions={{ newTab: false }}\n className=\"flex items-center gap-2.5 w-full px-2 py-1.5 !no-underline hover:!no-underline\"\n >\n <ArrowLeft className=\"w-4 h-4 text-muted-foreground\" />\n Back to TDP Platform\n </TDPLink>\n ) : (\n <button\n type=\"button\"\n className=\"flex items-center gap-2.5 w-full px-2 py-1.5 bg-transparent border-none cursor-pointer\"\n onClick={onBackToPlatform}\n >\n <ArrowLeft className=\"w-4 h-4 text-muted-foreground\" />\n Back to TDP Platform\n </button>\n )}\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n\n {/* Collapsed: short centered divider aligned under the icon column\n (matches the nav-group dividers). Expanded uses the header's border-b. */}\n {compact && <div className=\"shrink-0 mx-auto w-8 border-t border-sidebar-border\" />}\n\n {/* ── Nav groups ──────────────────────────────────────────────────────── */}\n <div\n className={cn(\n \"flex-1 min-h-0\",\n compact\n ? \"flex flex-col items-center gap-1 px-2 pt-3 overflow-y-auto\"\n : \"flex flex-col py-2 overflow-y-auto\"\n )}\n >\n {navGroups.map((group, groupIndex) => (\n <React.Fragment key={`${groupIndex}-${group.label ?? \"\"}`}>\n {groupIndex > 0 && (\n <div\n className={cn(\n \"border-t border-sidebar-border\",\n compact ? \"w-8 my-2\" : \"mx-3 my-1\"\n )}\n />\n )}\n {!compact && group.label && (\n <span className=\"px-3 py-1 text-[10px] uppercase tracking-widest text-muted-foreground/60 font-semibold\">\n {group.label}\n </span>\n )}\n <div\n className={cn(\n \"flex flex-col\",\n compact ? \"items-center gap-3 w-full\" : \"gap-0.5\"\n )}\n >\n {group.pages.map((page) => {\n const Icon = page.icon;\n const iconEl = Icon ? (\n <Icon\n className={cn(\n \"w-5 h-5\",\n page.isActive ? \"text-primary\" : \"text-muted-foreground\"\n )}\n />\n ) : (\n <div\n className={cn(\n \"w-2 h-2 rounded-full\",\n page.isActive ? \"bg-primary\" : \"bg-muted-foreground/40\"\n )}\n />\n );\n\n const handleClick = () => {\n page.onClick?.();\n onAfterNavClick?.();\n };\n\n if (compact) {\n return (\n <Tooltip key={page.id}>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n className=\"flex flex-col items-center gap-0.5 cursor-pointer bg-transparent border-none p-0 w-full\"\n onClick={handleClick}\n >\n <div className={cn(pageIconVariants({ active: page.isActive ?? false, compact: true }))}>\n {iconEl}\n </div>\n <span\n className={cn(\n \"text-[10px] font-medium leading-tight text-center\",\n page.isActive\n ? \"text-foreground font-semibold\"\n : \"text-muted-foreground\"\n )}\n >\n {page.label}\n </span>\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"right\">{page.label}</TooltipContent>\n </Tooltip>\n );\n }\n\n // Expanded (mobile) row\n return (\n <button\n key={page.id}\n type=\"button\"\n className={cn(\n \"flex items-center gap-3 w-full px-3 py-2 text-sm cursor-pointer bg-transparent border-none text-left transition-colors duration-150 rounded-md mx-1\",\n page.isActive\n ? \"bg-sidebar-accent text-sidebar-foreground font-medium\"\n : \"text-muted-foreground hover:bg-sidebar-accent/60 hover:text-foreground\"\n )}\n onClick={handleClick}\n >\n <div className={cn(pageIconVariants({ active: page.isActive ?? false, compact: false }))}>\n {iconEl}\n </div>\n <span>{page.label}</span>\n </button>\n );\n })}\n </div>\n </React.Fragment>\n ))}\n </div>\n\n {/* ── Bottom: user menu slot ──────────────────────────────────────────── */}\n {userMenu && (\n <>\n {/* Collapsed: short centered divider aligned under the icon column.\n Expanded uses the full-width border on the wrapper below. */}\n {compact && (\n <div className=\"shrink-0 mx-auto w-8 border-t border-sidebar-border\" />\n )}\n <div\n className={cn(\n \"shrink-0\",\n compact\n ? \"flex flex-col items-center py-2\"\n : \"p-2 border-t border-sidebar-border\"\n )}\n >\n {userMenu}\n </div>\n </>\n )}\n </TooltipProvider>\n );\n}\n\n// =============================================================================\n// Icon rail sidebar (desktop only — hidden on mobile)\n// =============================================================================\n\nfunction IconRailSidebar(props: Omit<SidebarBodyProps, \"compact\" | \"onAfterNavClick\">) {\n return (\n <nav\n data-slot=\"data-app-sidebar-rail\"\n aria-label=\"Application navigation\"\n className=\"hidden md:flex w-[60px] flex-col shrink-0 bg-sidebar border-r border-sidebar-border h-full z-50\"\n >\n <SidebarBody compact {...props} />\n </nav>\n );\n}\n\n// =============================================================================\n// Top nav\n// =============================================================================\n\nfunction TopNav({\n breadcrumbs = [],\n onHelpClick,\n headerActions,\n mobileTrigger,\n}: {\n breadcrumbs?: BreadcrumbItemConfig[];\n onHelpClick?: () => void;\n headerActions?: React.ReactNode;\n mobileTrigger?: React.ReactNode;\n}) {\n return (\n <div\n data-slot=\"data-app-top-nav\"\n className=\"flex items-center h-10 px-3 bg-sidebar border-b border-sidebar-border sticky top-0 z-40 w-full gap-2\"\n >\n {/* Mobile hamburger (hidden on md+) */}\n {mobileTrigger}\n\n {/* Left: Breadcrumbs */}\n <Breadcrumb className=\"flex-1 min-w-0\">\n <BreadcrumbList>\n {breadcrumbs.map((item, index) => {\n const isLast = index === breadcrumbs.length - 1;\n const isClickable = !isLast && (!!item.href || !!item.onClick);\n return (\n <React.Fragment key={`${item.label}-${index}`}>\n {index > 0 && <BreadcrumbSeparator>/</BreadcrumbSeparator>}\n <BreadcrumbItem>\n {isLast ? (\n <BreadcrumbPage>{item.label}</BreadcrumbPage>\n ) : isClickable && item.href ? (\n <BreadcrumbLink href={item.href}>{item.label}</BreadcrumbLink>\n ) : isClickable && item.onClick ? (\n <button\n type=\"button\"\n className=\"text-[13px] text-primary hover:underline cursor-pointer bg-transparent border-none p-0 font-normal\"\n onClick={item.onClick}\n >\n {item.label}\n </button>\n ) : (\n <span className=\"text-[13px] text-muted-foreground\">{item.label}</span>\n )}\n </BreadcrumbItem>\n </React.Fragment>\n );\n })}\n </BreadcrumbList>\n </Breadcrumb>\n\n {/* Right: header actions + help */}\n <div className=\"flex items-center gap-2 shrink-0\">\n {headerActions}\n\n {onHelpClick && (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"w-7 h-7 text-muted-foreground\"\n onClick={onHelpClick}\n aria-label=\"Help\"\n >\n <HelpCircle className=\"w-4 h-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">Help</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n </div>\n </div>\n );\n}\n\n// =============================================================================\n// DataAppShell\n// =============================================================================\n\nfunction DataAppShell({\n appName,\n appFullName,\n appIcon,\n version,\n navGroups,\n onAppNameClick,\n backToPlatformPath,\n onBackToPlatform,\n userMenu,\n breadcrumbs = [],\n onHelpClick,\n headerActions,\n sidebarPanel,\n showNavRail = true,\n children,\n className,\n}: DataAppShellProps) {\n const [mobileNavOpen, setMobileNavOpen] = React.useState(false);\n\n const sidebarProps = {\n appName,\n appFullName,\n appIcon,\n version,\n navGroups,\n onAppNameClick,\n backToPlatformPath,\n onBackToPlatform,\n userMenu,\n };\n\n return (\n <Sheet open={mobileNavOpen} onOpenChange={setMobileNavOpen}>\n <div\n data-slot=\"data-app-shell\"\n className={cn(\"flex flex-row w-full h-screen overflow-hidden\", className)}\n >\n {/* Desktop icon rail (hidden on mobile, or when showNavRail is false) */}\n {showNavRail && <IconRailSidebar {...sidebarProps} />}\n\n {/* Mobile sidebar Sheet */}\n <SheetContent\n side=\"left\"\n showCloseButton={false}\n className=\"p-0 bg-sidebar border-r border-sidebar-border data-[side=left]:w-[220px] data-[side=left]:sm:w-[220px] data-[side=left]:sm:max-w-[220px] flex flex-col\"\n >\n <SheetTitle className=\"sr-only\">Navigation</SheetTitle>\n <SheetDescription className=\"sr-only\">\n Application navigation menu\n </SheetDescription>\n <nav aria-label=\"Application navigation\" className=\"flex flex-col h-full\">\n <SidebarBody\n compact={false}\n onAfterNavClick={() => setMobileNavOpen(false)}\n {...sidebarProps}\n />\n </nav>\n </SheetContent>\n\n {/* Right: top nav + panel + content */}\n <div className=\"flex flex-1 flex-col min-w-0 overflow-hidden\">\n <TopNav\n breadcrumbs={breadcrumbs}\n onHelpClick={onHelpClick}\n headerActions={headerActions}\n mobileTrigger={\n <SheetTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n aria-label=\"Open navigation menu\"\n className=\"md:hidden w-7 h-7 shrink-0 text-muted-foreground\"\n >\n <Menu className=\"w-4 h-4\" />\n </Button>\n </SheetTrigger>\n }\n />\n\n <div className=\"flex flex-1 min-h-0 overflow-hidden\">\n {/* Sidebar panel slot (e.g. WorkflowPanel) */}\n {sidebarPanel}\n\n {/* Content area */}\n <main\n data-slot=\"data-app-shell-content\"\n className=\"flex-1 overflow-auto bg-background\"\n >\n {children}\n </main>\n </div>\n </div>\n </div>\n </Sheet>\n );\n}\n\nexport default DataAppShell;\nexport { DataAppShell };\n"],"names":["pageIconVariants","cva","SidebarBody","appName","appFullName","appIcon","version","navGroups","onAppNameClick","backToPlatformPath","onBackToPlatform","userMenu","compact","onAfterNavClick","TooltipProvider","jsx","cn","DropdownMenu","DropdownMenuTrigger","jsxs","DropdownMenuContent","e","DropdownMenuSeparator","DropdownMenuItem","TDPLink","ArrowLeft","group","groupIndex","React","page","Icon","iconEl","handleClick","Tooltip","TooltipTrigger","TooltipContent","Fragment","IconRailSidebar","props","TopNav","breadcrumbs","onHelpClick","headerActions","mobileTrigger","Breadcrumb","BreadcrumbList","item","index","isLast","isClickable","BreadcrumbSeparator","BreadcrumbItem","BreadcrumbPage","BreadcrumbLink","Button","HelpCircle","DataAppShell","sidebarPanel","showNavRail","children","className","mobileNavOpen","setMobileNavOpen","sidebarProps","Sheet","SheetContent","SheetTitle","SheetDescription","SheetTrigger","Menu"],"mappings":"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"}
1
+ {"version":3,"file":"DataAppShell.js","sources":["../../../../src/components/composed/DataAppShell/DataAppShell.tsx"],"sourcesContent":["import { ArrowLeft, ChevronRight, Menu } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { ShellCollapseButton } from \"./CollapseButton\";\nimport { DataAppShellPrimaryNav } from \"./PrimaryNav\";\nimport { DataAppShellProvider, type DataAppShellNavVariant } from \"./ShellContext\";\n\nimport type { NavGroup } from \"./PrimaryNav\";\n\nimport { TDPLink } from \"@/components/composed/tdp-link\";\nimport { TopBar } from \"@/components/composed/TopBar\";\nimport {\n Breadcrumb,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetTitle,\n SheetTrigger,\n} from \"@/components/ui/sheet\";\nimport { cn } from \"@/lib/utils\";\n\n// =============================================================================\n// Types\n// =============================================================================\n\n// Nav item types live with the nav engine — re-exported here for back-compat.\nexport type { NavPage, NavGroup } from \"./PrimaryNav\";\n\nexport interface BreadcrumbItemConfig {\n /** Display label */\n label: string;\n /** If provided, renders as a link */\n href?: string;\n /** Click handler (used when no href is provided) */\n onClick?: () => void;\n}\n\nexport interface DataAppShellProps {\n // -- Sidebar --\n /** Application name/abbreviation shown in the logo button */\n appName: string;\n /** Full application name shown in the app dropdown and mobile nav header */\n appFullName?: string;\n /** Custom icon element shown in the logo area */\n appIcon?: React.ReactNode;\n /** Optional version string shown below the app name/icon in the sidebar header */\n version?: string;\n /** Navigation groups; each group contains one or more pages */\n navGroups: NavGroup[];\n /** Callback when the app name / icon is clicked in the dropdown */\n onAppNameClick?: () => void;\n /** TDP path to navigate to when \"Back to TDP Platform\" is clicked (uses TDPLink — requires TdpNavigationProvider) */\n backToPlatformPath?: string;\n /** Fallback callback when \"Back to TDP Platform\" is clicked and no backToPlatformPath is set */\n onBackToPlatform?: () => void;\n /** Slot rendered at the bottom of the sidebar (e.g. user avatar + menu) */\n userMenu?: React.ReactNode;\n\n // -- Top nav --\n /** Breadcrumb items from root to current page */\n breadcrumbs?: BreadcrumbItemConfig[];\n /** Slot rendered after the breadcrumbs in the top bar's left group\n * (e.g. a collapsed horizontal workflow's step dropdown) */\n headerLeft?: React.ReactNode;\n /** Center \"context\" slot in the top bar (e.g. a version / status selector) */\n headerCenter?: React.ReactNode;\n /** Slot for right-side actions in the top nav (e.g. data count pills, next button) */\n headerActions?: React.ReactNode;\n\n // -- Shell zones --\n /** Primary nav axis — `vertical` (sidebar/rail, default) or `horizontal` (top nav row) */\n navVariant?: DataAppShellNavVariant;\n /**\n * Vertical primary nav presentation:\n * - `rail` (default) — permanent 48px icon-only rail.\n * - `sidebar` — collapsible 220px sidebar with labels; its brand-row chevron\n * collapses it to an icon rail (with an expand chevron under the logo),\n * driven by the shell's `collapsed` state.\n */\n primaryNav?: \"rail\" | \"sidebar\";\n /** Slot rendered between the primary nav and the content (e.g. a vertical `DataAppShellSecondaryNav`) */\n sidebarPanel?: React.ReactNode;\n /** Full-width zone between the top bar and the content row (e.g. a horizontal `DataAppShellSecondaryNav`) */\n secondaryBar?: React.ReactNode;\n /** Slot rendered after the content (e.g. a DataAppShellRightPanel) — its FAB anchors to the content row */\n rightPanel?: React.ReactNode;\n /** Show the primary nav zone. Set false to hide it entirely. */\n showNavRail?: boolean; // default true\n /** Show the top bar zone. Set false to hide it entirely. */\n showTopBar?: boolean; // default true\n\n // -- Collapse (vertical nav only) --\n /** Controlled collapse state — drives the secondary zone (via ShellContext)\n * and, with `hideNavOnCollapse`, the primary rail */\n collapsed?: boolean;\n /** Uncontrolled initial collapse state */\n defaultCollapsed?: boolean;\n /** Called whenever the shell collapse state flips */\n onCollapsedChange?: (collapsed: boolean) => void;\n /** Collapsing also hides the primary rail, leaving one icon rail (the secondary\n * nav) with an expand affordance — or a floating expand button if there is none. */\n hideNavOnCollapse?: boolean;\n /** Media query that auto-collapses the shell while it matches.\n * Pass `false` to disable. Defaults to `\"(max-width: 1023px)\"`. */\n autoCollapse?: string | false;\n\n /** Main content area */\n children: React.ReactNode;\n /** Additional className for the root container */\n className?: string;\n}\n\n// =============================================================================\n// Sidebar shared body (used by desktop rail + mobile Sheet)\n// =============================================================================\n\ninterface SidebarBodyProps\n extends Pick<\n DataAppShellProps,\n | \"appName\"\n | \"appFullName\"\n | \"appIcon\"\n | \"version\"\n | \"navGroups\"\n | \"onAppNameClick\"\n | \"backToPlatformPath\"\n | \"onBackToPlatform\"\n | \"userMenu\"\n > {\n /**\n * compact=true → narrow icon rail (48px): icon-only nav buttons, tooltips on hover\n * compact=false → expanded mobile sheet (220px): icon + label side-by-side rows\n */\n compact: boolean;\n /** Called after a nav page item is clicked — used by mobile sheet to close itself */\n onAfterNavClick?: () => void;\n}\n\n// =============================================================================\n// App header menu — logo/name button opening the app dropdown\n// =============================================================================\n\ninterface AppHeaderMenuProps\n extends Pick<\n DataAppShellProps,\n | \"appName\"\n | \"appFullName\"\n | \"appIcon\"\n | \"version\"\n | \"onAppNameClick\"\n | \"backToPlatformPath\"\n | \"onBackToPlatform\"\n > {\n /** compact=true → icon-only trigger (rail); compact=false → icon + name row */\n compact: boolean;\n /** Which side of the trigger the dropdown opens on — `right` beside a rail, `bottom` under a top bar */\n menuSide?: \"right\" | \"bottom\";\n}\n\nfunction AppHeaderMenu({\n appName,\n appFullName,\n appIcon,\n version,\n onAppNameClick,\n backToPlatformPath,\n onBackToPlatform,\n compact,\n menuSide = \"right\",\n}: AppHeaderMenuProps) {\n return (\n <DropdownMenu modal={false}>\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n className={cn(\n \"cursor-pointer bg-transparent border-none p-0\",\n !compact && \"flex items-center gap-3 w-full text-left\"\n )}\n >\n {/* Icon */}\n <span\n className={cn(\n \"flex items-center justify-center rounded-lg bg-sidebar-accent border border-sidebar-border font-bold text-foreground shrink-0 w-8 h-8 text-[10px]\"\n )}\n >\n {appIcon ?? appName}\n </span>\n\n {/* Name (expanded only — no version here) */}\n {!compact && (\n <span className=\"text-sm font-semibold text-foreground truncate leading-snug\">\n {appFullName ?? appName}\n </span>\n )}\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent side={menuSide} align=\"start\" className=\"min-w-[220px]\">\n <DropdownMenuItem\n className=\"gap-3 px-3 py-2.5\"\n onSelect={() => onAppNameClick?.()}\n >\n <div className=\"w-8 h-8 rounded-lg bg-sidebar-accent border border-sidebar-border flex items-center justify-center shrink-0\">\n <span className=\"text-[10px] font-bold text-foreground\">\n {appIcon ?? appName}\n </span>\n </div>\n <div className=\"flex flex-col min-w-0\">\n <span className=\"text-sm font-semibold text-foreground truncate\">\n {appFullName ?? appName}\n </span>\n {version && (\n <span className=\"text-[10px] text-muted-foreground/70 font-mono leading-none mt-0.5\">\n {version}\n </span>\n )}\n </div>\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem className=\"gap-2.5 p-0\" asChild>\n {backToPlatformPath ? (\n <TDPLink\n path={backToPlatformPath}\n navigationOptions={{ newTab: false }}\n className=\"flex items-center gap-2.5 w-full px-2 py-1.5 !no-underline hover:!no-underline\"\n >\n <ArrowLeft className=\"w-4 h-4 text-muted-foreground\" />\n Back to TDP Platform\n </TDPLink>\n ) : (\n <button\n type=\"button\"\n className=\"flex items-center gap-2.5 w-full px-2 py-1.5 bg-transparent border-none cursor-pointer\"\n onClick={onBackToPlatform}\n >\n <ArrowLeft className=\"w-4 h-4 text-muted-foreground\" />\n Back to TDP Platform\n </button>\n )}\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\n// =============================================================================\n// Sidebar shared body — the PrimaryNav engine with the app header + user slots\n// =============================================================================\n\nfunction SidebarBody({\n appName,\n appFullName,\n appIcon,\n version,\n navGroups,\n onAppNameClick,\n backToPlatformPath,\n onBackToPlatform,\n userMenu,\n compact,\n onAfterNavClick,\n}: SidebarBodyProps) {\n return (\n <DataAppShellPrimaryNav\n variant={compact ? \"rail\" : \"sidebar\"}\n aria-label=\"Application navigation\"\n navGroups={navGroups}\n onSelect={() => onAfterNavClick?.()}\n header={\n <AppHeaderMenu\n appName={appName}\n appFullName={appFullName}\n appIcon={appIcon}\n version={version}\n onAppNameClick={onAppNameClick}\n backToPlatformPath={backToPlatformPath}\n onBackToPlatform={onBackToPlatform}\n compact={compact}\n />\n }\n user={userMenu}\n className=\"h-full w-full\"\n />\n );\n}\n\n// =============================================================================\n// Icon rail sidebar (desktop only — hidden on mobile)\n// =============================================================================\n\nfunction IconRailSidebar(props: Omit<SidebarBodyProps, \"compact\" | \"onAfterNavClick\">) {\n return (\n <div\n data-slot=\"data-app-sidebar-rail\"\n className=\"hidden md:flex w-12 flex-col shrink-0 bg-sidebar border-r border-sidebar-border h-full z-50\"\n >\n <SidebarBody compact {...props} />\n </div>\n );\n}\n\n// =============================================================================\n// Collapsible primary sidebar (desktop only — hidden on mobile). Expanded, it\n// shows the app name, labelled nav, and a collapse chevron in the brand row;\n// collapsed, it becomes an icon rail with the expand chevron directly under\n// the logo (mirrors the SW-2118 playground).\n// =============================================================================\n\ninterface PrimarySidebarProps extends Omit<SidebarBodyProps, \"compact\" | \"onAfterNavClick\"> {\n collapsed: boolean;\n onCollapsedChange: (collapsed: boolean) => void;\n}\n\nfunction PrimarySidebar({ collapsed, onCollapsedChange, ...sidebarProps }: PrimarySidebarProps) {\n const { appName, appFullName, appIcon, version, onAppNameClick, backToPlatformPath, onBackToPlatform } =\n sidebarProps;\n const headerMenuProps = {\n appName,\n appFullName,\n appIcon,\n version,\n onAppNameClick,\n backToPlatformPath,\n onBackToPlatform,\n };\n\n if (collapsed) {\n return (\n <div\n data-slot=\"data-app-sidebar-rail\"\n data-collapsed=\"true\"\n className=\"hidden md:flex w-12 flex-col shrink-0 bg-sidebar border-r border-sidebar-border h-full z-50\"\n >\n <DataAppShellPrimaryNav\n variant=\"rail\"\n aria-label=\"Application navigation\"\n navGroups={sidebarProps.navGroups}\n header={\n <div className=\"flex flex-col items-center gap-2\">\n <AppHeaderMenu {...headerMenuProps} compact />\n <ShellCollapseButton\n direction=\"right\"\n label=\"Expand navigation\"\n onClick={() => onCollapsedChange(false)}\n />\n </div>\n }\n user={sidebarProps.userMenu}\n className=\"h-full w-full\"\n />\n </div>\n );\n }\n\n return (\n <div\n data-slot=\"data-app-sidebar\"\n data-collapsed=\"false\"\n className=\"hidden md:flex w-[220px] flex-col shrink-0 bg-sidebar border-r border-sidebar-border h-full z-50\"\n >\n <DataAppShellPrimaryNav\n variant=\"sidebar\"\n aria-label=\"Application navigation\"\n navGroups={sidebarProps.navGroups}\n header={\n <div className=\"flex items-center gap-2 w-full min-w-0\">\n <div className=\"flex-1 min-w-0\">\n <AppHeaderMenu {...headerMenuProps} compact={false} />\n </div>\n <ShellCollapseButton\n direction=\"left\"\n label=\"Collapse navigation\"\n onClick={() => onCollapsedChange(true)}\n />\n </div>\n }\n user={sidebarProps.userMenu}\n className=\"h-full w-full\"\n />\n </div>\n );\n}\n\n// =============================================================================\n// Breadcrumb trail — rendered from the shell's breadcrumb config\n// =============================================================================\n\nfunction TopNavBreadcrumb({ items }: { items: BreadcrumbItemConfig[] }) {\n return (\n // min-w-0 lets the trail shrink inside the top bar's flex-1 left group;\n // flex-nowrap keeps it one line instead of Breadcrumb's default wrap\n // (which, combined with a squeezed left group, wrapped mid-trail and\n // pushed the rest of the top bar around — SW-2118).\n <Breadcrumb className=\"min-w-0\">\n <BreadcrumbList className=\"flex-nowrap min-w-0\">\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n const isClickable = !isLast && (!!item.href || !!item.onClick);\n // Only the current (last) crumb truncates — earlier crumbs keep\n // their natural width so the trail reads left-to-right.\n const itemClassName = isLast ? \"min-w-0\" : \"shrink-0\";\n return (\n <React.Fragment key={`${item.label}-${index}`}>\n {index > 0 && <BreadcrumbSeparator className=\"shrink-0\">/</BreadcrumbSeparator>}\n <BreadcrumbItem className={itemClassName}>\n {isLast ? (\n <BreadcrumbPage className=\"truncate\">{item.label}</BreadcrumbPage>\n ) : isClickable && item.href ? (\n <BreadcrumbLink href={item.href} className=\"whitespace-nowrap\">\n {item.label}\n </BreadcrumbLink>\n ) : isClickable && item.onClick ? (\n <button\n type=\"button\"\n className=\"text-sm text-primary hover:underline cursor-pointer bg-transparent border-none p-0 font-normal whitespace-nowrap\"\n onClick={item.onClick}\n >\n {item.label}\n </button>\n ) : (\n <span className=\"text-sm text-muted-foreground whitespace-nowrap\">\n {item.label}\n </span>\n )}\n </BreadcrumbItem>\n </React.Fragment>\n );\n })}\n </BreadcrumbList>\n </Breadcrumb>\n );\n}\n\n// =============================================================================\n// Top nav — maps shell props onto the reusable TopBar (left/center/right)\n// =============================================================================\n\nfunction TopNav({\n breadcrumbs = [],\n headerLeft,\n headerCenter,\n headerActions,\n mobileTrigger,\n}: {\n breadcrumbs?: BreadcrumbItemConfig[];\n headerLeft?: React.ReactNode;\n headerCenter?: React.ReactNode;\n headerActions?: React.ReactNode;\n mobileTrigger?: React.ReactNode;\n}) {\n return (\n <TopBar\n data-slot=\"data-app-top-nav\"\n left={\n <>\n {/* Mobile hamburger (hidden on md+). shrink-0 — only the\n breadcrumb trail gives up width when the left group is tight. */}\n {mobileTrigger && <div className=\"shrink-0\">{mobileTrigger}</div>}\n <TopNavBreadcrumb items={breadcrumbs} />\n {headerLeft != null && <div className=\"shrink-0\">{headerLeft}</div>}\n </>\n }\n center={headerCenter}\n right={headerActions}\n />\n );\n}\n\n// =============================================================================\n// DataAppShell\n// =============================================================================\n\nfunction DataAppShell({\n appName,\n appFullName,\n appIcon,\n version,\n navGroups,\n onAppNameClick,\n backToPlatformPath,\n onBackToPlatform,\n userMenu,\n breadcrumbs = [],\n headerLeft,\n headerCenter,\n headerActions,\n navVariant = \"vertical\",\n primaryNav = \"rail\",\n sidebarPanel,\n secondaryBar,\n rightPanel,\n showNavRail = true,\n showTopBar = true,\n collapsed: collapsedProp,\n defaultCollapsed = false,\n onCollapsedChange,\n hideNavOnCollapse = false,\n autoCollapse = \"(max-width: 1023px)\",\n children,\n className,\n}: DataAppShellProps) {\n const [mobileNavOpen, setMobileNavOpen] = React.useState(false);\n\n // ── Single collapse toggle (controlled/uncontrolled) ───────────────────────\n const [internalCollapsed, setInternalCollapsed] = React.useState(defaultCollapsed);\n const collapsed = collapsedProp ?? internalCollapsed;\n const collapsedRef = React.useRef(collapsed);\n collapsedRef.current = collapsed;\n // Set when the media query (not the user) collapsed the shell, so leaving\n // the breakpoint restores the expanded state without fighting manual toggles.\n const autoCollapsedRef = React.useRef(false);\n\n const setCollapsed = React.useCallback(\n (next: boolean) => {\n autoCollapsedRef.current = false;\n if (collapsedProp === undefined) setInternalCollapsed(next);\n onCollapsedChange?.(next);\n },\n [collapsedProp, onCollapsedChange],\n );\n\n // ── Responsive auto-collapse below the breakpoint ───────────────────────────\n // The media-query handler lives in a ref so the subscription survives\n // re-renders without re-running for every collapse/callback change.\n const applyAutoCollapseRef = React.useRef((matches: boolean) => void matches);\n applyAutoCollapseRef.current = (matches: boolean) => {\n if (matches && !collapsedRef.current) {\n if (collapsedProp === undefined) setInternalCollapsed(true);\n onCollapsedChange?.(true);\n autoCollapsedRef.current = true;\n } else if (!matches && autoCollapsedRef.current) {\n autoCollapsedRef.current = false;\n if (collapsedProp === undefined) setInternalCollapsed(false);\n onCollapsedChange?.(false);\n }\n };\n\n React.useEffect(() => {\n if (autoCollapse === false || navVariant !== \"vertical\") return;\n const mql = window.matchMedia(autoCollapse);\n applyAutoCollapseRef.current(mql.matches);\n const onChange = (e: MediaQueryListEvent) => applyAutoCollapseRef.current(e.matches);\n mql.addEventListener(\"change\", onChange);\n return () => mql.removeEventListener(\"change\", onChange);\n }, [autoCollapse, navVariant]);\n\n const sidebarProps = {\n appName,\n appFullName,\n appIcon,\n version,\n navGroups,\n onAppNameClick,\n backToPlatformPath,\n onBackToPlatform,\n userMenu,\n };\n\n const isVertical = navVariant === \"vertical\";\n // A collapsible sidebar renders its own collapsed rail, so it is never\n // hidden by collapse. hideNavOnCollapse only removes the permanent icon rail.\n const isCollapsibleSidebar = isVertical && primaryNav === \"sidebar\";\n const navHidden =\n !showNavRail || (hideNavOnCollapse && collapsed && !isCollapsibleSidebar);\n\n // CSS-grid template areas per navVariant — the shell knows zones, never\n // domain concepts. Zones absent from the tree simply collapse their track.\n // The secondary (side) zone starts below the top bar / secondary bar, so\n // breadcrumbs span the full width beside the primary nav.\n const gridClass = isVertical\n ? \"grid h-screen w-full overflow-hidden [grid-template-columns:auto_auto_minmax(0,1fr)] [grid-template-rows:auto_auto_minmax(0,1fr)] [grid-template-areas:'nav_top_top'_'nav_sub_sub'_'nav_side_body']\"\n : \"grid h-screen w-full overflow-hidden [grid-template-columns:auto_minmax(0,1fr)] [grid-template-rows:auto_auto_auto_minmax(0,1fr)] [grid-template-areas:'pnav_pnav'_'top_top'_'sub_sub'_'side_body']\";\n\n return (\n <DataAppShellProvider value={{ navVariant, collapsed, setCollapsed, hideNavOnCollapse }}>\n <Sheet open={mobileNavOpen} onOpenChange={setMobileNavOpen}>\n <div\n data-slot=\"data-app-shell\"\n data-nav-variant={navVariant}\n data-collapsed={collapsed || undefined}\n className={cn(gridClass, className)}\n >\n {/* Primary nav zone */}\n {!navHidden &&\n (isVertical ? (\n <div className=\"[grid-area:nav] min-h-0\">\n {isCollapsibleSidebar ? (\n <PrimarySidebar\n collapsed={collapsed}\n onCollapsedChange={setCollapsed}\n {...sidebarProps}\n />\n ) : (\n <IconRailSidebar {...sidebarProps} />\n )}\n </div>\n ) : (\n <div className=\"[grid-area:pnav] hidden md:block border-b border-sidebar-border bg-sidebar px-3 py-1.5\">\n <DataAppShellPrimaryNav\n variant=\"top\"\n aria-label=\"Application navigation\"\n navGroups={navGroups}\n header={<AppHeaderMenu {...sidebarProps} compact menuSide=\"bottom\" />}\n user={userMenu}\n />\n </div>\n ))}\n\n {/* Floating expand affordance — hideNavOnCollapse with no secondary rail */}\n {hideNavOnCollapse && collapsed && !sidebarPanel && (\n <Button\n data-slot=\"data-app-shell-expand-fab\"\n variant=\"outline\"\n size=\"icon-sm\"\n aria-label=\"Expand navigation\"\n className=\"absolute left-2 top-2 z-50 shadow-elevation-2\"\n onClick={() => setCollapsed(false)}\n >\n <ChevronRight className=\"w-4 h-4\" />\n </Button>\n )}\n\n {/* Mobile sidebar Sheet */}\n <SheetContent\n side=\"left\"\n showCloseButton={false}\n className=\"p-0 bg-sidebar border-r border-sidebar-border data-[side=left]:w-[220px] data-[side=left]:sm:w-[220px] data-[side=left]:sm:max-w-[220px] flex flex-col\"\n >\n <SheetTitle className=\"sr-only\">Navigation</SheetTitle>\n <SheetDescription className=\"sr-only\">\n Application navigation menu\n </SheetDescription>\n <SidebarBody\n compact={false}\n onAfterNavClick={() => setMobileNavOpen(false)}\n {...sidebarProps}\n />\n </SheetContent>\n\n {/* Secondary (side) zone — e.g. a vertical DataAppShellSecondaryNav */}\n {sidebarPanel && <div className=\"[grid-area:side] min-h-0 flex\">{sidebarPanel}</div>}\n\n {/* Top bar zone */}\n {showTopBar && (\n <div className=\"[grid-area:top] min-w-0\">\n <TopNav\n breadcrumbs={breadcrumbs}\n headerLeft={headerLeft}\n headerCenter={headerCenter}\n headerActions={headerActions}\n mobileTrigger={\n <SheetTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n aria-label=\"Open navigation menu\"\n className=\"md:hidden w-7 h-7 shrink-0 text-muted-foreground\"\n >\n <Menu className=\"w-4 h-4\" />\n </Button>\n </SheetTrigger>\n }\n />\n </div>\n )}\n\n {/* Secondary bar zone — e.g. a horizontal DataAppShellSecondaryNav */}\n {secondaryBar && <div className=\"[grid-area:sub] min-w-0\">{secondaryBar}</div>}\n\n {/* Body zone: content + right panel. relative — anchors the right\n panel's floating FAB trigger */}\n <div className=\"[grid-area:body] relative flex min-h-0 min-w-0 overflow-hidden\">\n <main\n data-slot=\"data-app-shell-content\"\n className=\"flex-1 min-w-0 overflow-auto bg-background\"\n >\n {children}\n </main>\n\n {/* Right panel slot (e.g. DataAppShellRightPanel) */}\n {rightPanel}\n </div>\n </div>\n </Sheet>\n </DataAppShellProvider>\n );\n}\n\nexport default DataAppShell;\nexport { AppHeaderMenu, DataAppShell };\n"],"names":["AppHeaderMenu","appName","appFullName","appIcon","version","onAppNameClick","backToPlatformPath","onBackToPlatform","compact","menuSide","jsxs","DropdownMenu","jsx","DropdownMenuTrigger","cn","DropdownMenuContent","DropdownMenuItem","DropdownMenuSeparator","TDPLink","ArrowLeft","SidebarBody","navGroups","userMenu","onAfterNavClick","DataAppShellPrimaryNav","IconRailSidebar","props","PrimarySidebar","collapsed","onCollapsedChange","sidebarProps","headerMenuProps","ShellCollapseButton","TopNavBreadcrumb","items","Breadcrumb","BreadcrumbList","item","index","isLast","isClickable","itemClassName","React","BreadcrumbSeparator","BreadcrumbItem","BreadcrumbPage","BreadcrumbLink","TopNav","breadcrumbs","headerLeft","headerCenter","headerActions","mobileTrigger","TopBar","Fragment","DataAppShell","navVariant","primaryNav","sidebarPanel","secondaryBar","rightPanel","showNavRail","showTopBar","collapsedProp","defaultCollapsed","hideNavOnCollapse","autoCollapse","children","className","mobileNavOpen","setMobileNavOpen","internalCollapsed","setInternalCollapsed","collapsedRef","autoCollapsedRef","setCollapsed","next","applyAutoCollapseRef","matches","mql","onChange","e","isVertical","isCollapsibleSidebar","navHidden","DataAppShellProvider","Sheet","Button","ChevronRight","SheetContent","SheetTitle","SheetDescription","SheetTrigger","Menu"],"mappings":";;;;;;;;;;;;;AA8KA,SAASA,EAAc;AAAA,EACrB,SAAAC;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC,IAAW;AACb,GAAuB;AACrB,SACE,gBAAAC,EAACC,IAAA,EAAa,OAAO,IACf,UAAA;AAAA,IAAA,gBAAAC,EAACC,IAAA,EAAoB,SAAO,IAC1B,UAAA,gBAAAH;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAWI;AAAA,UACT;AAAA,UACA,CAACN,KAAW;AAAA,QAAA;AAAA,QAId,UAAA;AAAA,UAAA,gBAAAI;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWE;AAAA,gBACT;AAAA,cAAA;AAAA,cAGD,UAAAX,KAAWF;AAAA,YAAA;AAAA,UAAA;AAAA,UAIb,CAACO,KACA,gBAAAI,EAAC,UAAK,WAAU,+DACb,eAAeX,EAAA,CAClB;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,GAGN;AAAA,sBACCc,IAAA,EAAoB,MAAMN,GAAU,OAAM,SAAQ,WAAU,iBAC3D,UAAA;AAAA,MAAA,gBAAAC;AAAA,QAACM;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,UAAU,MAAMX,IAAA;AAAA,UAEhB,UAAA;AAAA,YAAA,gBAAAO,EAAC,OAAA,EAAI,WAAU,+GACb,UAAA,gBAAAA,EAAC,UAAK,WAAU,yCACb,UAAAT,KAAWF,EAAA,CACd,EAAA,CACF;AAAA,YACA,gBAAAS,EAAC,OAAA,EAAI,WAAU,yBACb,UAAA;AAAA,cAAA,gBAAAE,EAAC,QAAA,EAAK,WAAU,kDACb,UAAAV,KAAeD,GAClB;AAAA,cACCG,KACC,gBAAAQ,EAAC,QAAA,EAAK,WAAU,sEACb,UAAAR,EAAA,CACH;AAAA,YAAA,EAAA,CAEJ;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,wBAEDa,IAAA,EAAsB;AAAA,wBACtBD,GAAA,EAAiB,WAAU,eAAc,SAAO,IAC9C,UAAAV,IACC,gBAAAI;AAAA,QAACQ;AAAA,QAAA;AAAA,UACC,MAAMZ;AAAA,UACN,mBAAmB,EAAE,QAAQ,GAAA;AAAA,UAC7B,WAAU;AAAA,UAEV,UAAA;AAAA,YAAA,gBAAAM,EAACO,GAAA,EAAU,WAAU,gCAAA,CAAgC;AAAA,YAAE;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA,IAIzD,gBAAAT;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAU;AAAA,UACV,SAASH;AAAA,UAET,UAAA;AAAA,YAAA,gBAAAK,EAACO,GAAA,EAAU,WAAU,gCAAA,CAAgC;AAAA,YAAE;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA,EAEzD,CAEJ;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,GACN;AAEJ;AAMA,SAASC,EAAY;AAAA,EACnB,SAAAnB;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAiB;AAAA,EACA,gBAAAhB;AAAA,EACA,oBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,UAAAe;AAAA,EACA,SAAAd;AAAA,EACA,iBAAAe;AACF,GAAqB;AACnB,SACE,gBAAAX;AAAA,IAACY;AAAA,IAAA;AAAA,MACC,SAAShB,IAAU,SAAS;AAAA,MAC5B,cAAW;AAAA,MACX,WAAAa;AAAA,MACA,UAAU,MAAME,IAAA;AAAA,MAChB,QACE,gBAAAX;AAAA,QAACZ;AAAA,QAAA;AAAA,UACC,SAAAC;AAAA,UACA,aAAAC;AAAA,UACA,SAAAC;AAAA,UACA,SAAAC;AAAA,UACA,gBAAAC;AAAA,UACA,oBAAAC;AAAA,UACA,kBAAAC;AAAA,UACA,SAAAC;AAAA,QAAA;AAAA,MAAA;AAAA,MAGJ,MAAMc;AAAA,MACN,WAAU;AAAA,IAAA;AAAA,EAAA;AAGhB;AAMA,SAASG,GAAgBC,GAA8D;AACrF,SACE,gBAAAd;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA,MAEV,UAAA,gBAAAA,EAACQ,GAAA,EAAY,SAAO,IAAE,GAAGM,EAAA,CAAO;AAAA,IAAA;AAAA,EAAA;AAGtC;AAcA,SAASC,GAAe,EAAE,WAAAC,GAAW,mBAAAC,GAAmB,GAAGC,KAAqC;AAC9F,QAAM,EAAE,SAAA7B,GAAS,aAAAC,GAAa,SAAAC,GAAS,SAAAC,GAAS,gBAAAC,GAAgB,oBAAAC,GAAoB,kBAAAC,MAClFuB,GACIC,IAAkB;AAAA,IACtB,SAAA9B;AAAA,IACA,aAAAC;AAAA,IACA,SAAAC;AAAA,IACA,SAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,kBAAAC;AAAA,EAAA;AAGF,SAAIqB,IAEA,gBAAAhB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,kBAAe;AAAA,MACf,WAAU;AAAA,MAEV,UAAA,gBAAAA;AAAA,QAACY;AAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,cAAW;AAAA,UACX,WAAWM,EAAa;AAAA,UACxB,QACE,gBAAApB,EAAC,OAAA,EAAI,WAAU,oCACb,UAAA;AAAA,YAAA,gBAAAE,EAACZ,GAAA,EAAe,GAAG+B,GAAiB,SAAO,GAAA,CAAC;AAAA,YAC5C,gBAAAnB;AAAA,cAACoB;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,OAAM;AAAA,gBACN,SAAS,MAAMH,EAAkB,EAAK;AAAA,cAAA;AAAA,YAAA;AAAA,UACxC,GACF;AAAA,UAEF,MAAMC,EAAa;AAAA,UACnB,WAAU;AAAA,QAAA;AAAA,MAAA;AAAA,IACZ;AAAA,EAAA,IAMJ,gBAAAlB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,kBAAe;AAAA,MACf,WAAU;AAAA,MAEV,UAAA,gBAAAA;AAAA,QAACY;AAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,cAAW;AAAA,UACX,WAAWM,EAAa;AAAA,UACxB,QACE,gBAAApB,EAAC,OAAA,EAAI,WAAU,0CACb,UAAA;AAAA,YAAA,gBAAAE,EAAC,OAAA,EAAI,WAAU,kBACb,UAAA,gBAAAA,EAACZ,KAAe,GAAG+B,GAAiB,SAAS,GAAA,CAAO,EAAA,CACtD;AAAA,YACA,gBAAAnB;AAAA,cAACoB;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,OAAM;AAAA,gBACN,SAAS,MAAMH,EAAkB,EAAI;AAAA,cAAA;AAAA,YAAA;AAAA,UACvC,GACF;AAAA,UAEF,MAAMC,EAAa;AAAA,UACnB,WAAU;AAAA,QAAA;AAAA,MAAA;AAAA,IACZ;AAAA,EAAA;AAGN;AAMA,SAASG,GAAiB,EAAE,OAAAC,KAA4C;AACtE;AAAA;AAAA;AAAA;AAAA;AAAA,IAKE,gBAAAtB,EAACuB,IAAA,EAAW,WAAU,WACpB,UAAA,gBAAAvB,EAACwB,IAAA,EAAe,WAAU,uBACvB,UAAAF,EAAM,IAAI,CAACG,GAAMC,MAAU;AAC1B,YAAMC,IAASD,MAAUJ,EAAM,SAAS,GAClCM,IAAc,CAACD,MAAW,CAAC,CAACF,EAAK,QAAQ,CAAC,CAACA,EAAK,UAGhDI,IAAgBF,IAAS,YAAY;AAC3C,aACE,gBAAA7B,EAACgC,EAAM,UAAN,EACE,UAAA;AAAA,QAAAJ,IAAQ,KAAK,gBAAA1B,EAAC+B,IAAA,EAAoB,WAAU,YAAW,UAAA,KAAC;AAAA,QACzD,gBAAA/B,EAACgC,IAAA,EAAe,WAAWH,GACxB,UAAAF,IACC,gBAAA3B,EAACiC,IAAA,EAAe,WAAU,YAAY,UAAAR,EAAK,MAAA,CAAM,IAC/CG,KAAeH,EAAK,OACtB,gBAAAzB,EAACkC,IAAA,EAAe,MAAMT,EAAK,MAAM,WAAU,qBACxC,UAAAA,EAAK,MAAA,CACR,IACEG,KAAeH,EAAK,UACtB,gBAAAzB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAU;AAAA,YACV,SAASyB,EAAK;AAAA,YAEb,UAAAA,EAAK;AAAA,UAAA;AAAA,QAAA,IAGR,gBAAAzB,EAAC,QAAA,EAAK,WAAU,mDACb,UAAAyB,EAAK,OACR,EAAA,CAEJ;AAAA,MAAA,EAAA,GAtBmB,GAAGA,EAAK,KAAK,IAAIC,CAAK,EAuB3C;AAAA,IAEJ,CAAC,GACH,EAAA,CACF;AAAA;AAEJ;AAMA,SAASS,GAAO;AAAA,EACd,aAAAC,IAAc,CAAA;AAAA,EACd,YAAAC;AAAA,EACA,cAAAC;AAAA,EACA,eAAAC;AAAA,EACA,eAAAC;AACF,GAMG;AACD,SACE,gBAAAxC;AAAA,IAACyC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,MACE,gBAAA3C,EAAA4C,IAAA,EAGG,UAAA;AAAA,QAAAF,KAAiB,gBAAAxC,EAAC,OAAA,EAAI,WAAU,YAAY,UAAAwC,GAAc;AAAA,QAC3D,gBAAAxC,EAACqB,IAAA,EAAiB,OAAOe,EAAA,CAAa;AAAA,QACrCC,KAAc,QAAQ,gBAAArC,EAAC,OAAA,EAAI,WAAU,YAAY,UAAAqC,EAAA,CAAW;AAAA,MAAA,GAC/D;AAAA,MAEF,QAAQC;AAAA,MACR,OAAOC;AAAA,IAAA;AAAA,EAAA;AAGb;AAMA,SAASI,GAAa;AAAA,EACpB,SAAAtD;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAiB;AAAA,EACA,gBAAAhB;AAAA,EACA,oBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,UAAAe;AAAA,EACA,aAAA0B,IAAc,CAAA;AAAA,EACd,YAAAC;AAAA,EACA,cAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAK,IAAa;AAAA,EACb,YAAAC,IAAa;AAAA,EACb,cAAAC;AAAA,EACA,cAAAC;AAAA,EACA,YAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,YAAAC,IAAa;AAAA,EACb,WAAWC;AAAA,EACX,kBAAAC,IAAmB;AAAA,EACnB,mBAAAnC;AAAA,EACA,mBAAAoC,IAAoB;AAAA,EACpB,cAAAC,IAAe;AAAA,EACf,UAAAC;AAAA,EACA,WAAAC;AACF,GAAsB;AACpB,QAAM,CAACC,GAAeC,CAAgB,IAAI5B,EAAM,SAAS,EAAK,GAGxD,CAAC6B,GAAmBC,CAAoB,IAAI9B,EAAM,SAASsB,CAAgB,GAC3EpC,IAAYmC,KAAiBQ,GAC7BE,IAAe/B,EAAM,OAAOd,CAAS;AAC3C,EAAA6C,EAAa,UAAU7C;AAGvB,QAAM8C,IAAmBhC,EAAM,OAAO,EAAK,GAErCiC,IAAejC,EAAM;AAAA,IACzB,CAACkC,MAAkB;AACjB,MAAAF,EAAiB,UAAU,IACvBX,MAAkB,UAAWS,EAAqBI,CAAI,GAC1D/C,IAAoB+C,CAAI;AAAA,IAC1B;AAAA,IACA,CAACb,GAAelC,CAAiB;AAAA,EAAA,GAM7BgD,IAAuBnC,EAAM,OAAO,CAACoC,MAAA;AAAA,GAAiC;AAC5E,EAAAD,EAAqB,UAAU,CAACC,MAAqB;AACnD,IAAIA,KAAW,CAACL,EAAa,WACvBV,MAAkB,UAAWS,EAAqB,EAAI,GAC1D3C,IAAoB,EAAI,GACxB6C,EAAiB,UAAU,MAClB,CAACI,KAAWJ,EAAiB,YACtCA,EAAiB,UAAU,IACvBX,MAAkB,UAAWS,EAAqB,EAAK,GAC3D3C,IAAoB,EAAK;AAAA,EAE7B,GAEAa,EAAM,UAAU,MAAM;AACpB,QAAIwB,MAAiB,MAASV,MAAe,WAAY;AACzD,UAAMuB,IAAM,OAAO,WAAWb,CAAY;AAC1C,IAAAW,EAAqB,QAAQE,EAAI,OAAO;AACxC,UAAMC,IAAW,CAACC,MAA2BJ,EAAqB,QAAQI,EAAE,OAAO;AACnF,WAAAF,EAAI,iBAAiB,UAAUC,CAAQ,GAChC,MAAMD,EAAI,oBAAoB,UAAUC,CAAQ;AAAA,EACzD,GAAG,CAACd,GAAcV,CAAU,CAAC;AAE7B,QAAM1B,IAAe;AAAA,IACnB,SAAA7B;AAAA,IACA,aAAAC;AAAA,IACA,SAAAC;AAAA,IACA,SAAAC;AAAA,IACA,WAAAiB;AAAA,IACA,gBAAAhB;AAAA,IACA,oBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,UAAAe;AAAA,EAAA,GAGI4D,IAAa1B,MAAe,YAG5B2B,IAAuBD,KAAczB,MAAe,WACpD2B,IACJ,CAACvB,KAAgBI,KAAqBrC,KAAa,CAACuD;AAUtD,SACE,gBAAAvE,EAACyE,IAAA,EAAqB,OAAO,EAAE,YAAA7B,GAAY,WAAA5B,GAAW,cAAA+C,GAAc,mBAAAV,EAAA,GAClE,UAAA,gBAAArD,EAAC0E,IAAA,EAAM,MAAMjB,GAAe,cAAcC,GACxC,UAAA,gBAAA5D;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,oBAAkB8C;AAAA,MAClB,kBAAgB5B,KAAa;AAAA,MAC7B,WAAWd,EAXDoE,IACd,wMACA,uMAS6Bd,CAAS;AAAA,MAGjC,UAAA;AAAA,QAAA,CAACgB,MACCF,IACC,gBAAAtE,EAAC,OAAA,EAAI,WAAU,2BACZ,UAAAuE,IACC,gBAAAvE;AAAA,UAACe;AAAA,UAAA;AAAA,YACC,WAAAC;AAAA,YACA,mBAAmB+C;AAAA,YAClB,GAAG7C;AAAA,UAAA;AAAA,QAAA,IAGN,gBAAAlB,EAACa,IAAA,EAAiB,GAAGK,EAAA,CAAc,GAEvC,IAEA,gBAAAlB,EAAC,OAAA,EAAI,WAAU,0FACb,UAAA,gBAAAA;AAAA,UAACY;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,cAAW;AAAA,YACX,WAAAH;AAAA,YACA,0BAASrB,GAAA,EAAe,GAAG8B,GAAc,SAAO,IAAC,UAAS,UAAS;AAAA,YACnE,MAAMR;AAAA,UAAA;AAAA,QAAA,EACR,CACF;AAAA,QAIH2C,KAAqBrC,KAAa,CAAC8B,KAClC,gBAAA9C;AAAA,UAAC2E;AAAA,UAAA;AAAA,YACC,aAAU;AAAA,YACV,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,cAAW;AAAA,YACX,WAAU;AAAA,YACV,SAAS,MAAMZ,EAAa,EAAK;AAAA,YAEjC,UAAA,gBAAA/D,EAAC4E,IAAA,EAAa,WAAU,UAAA,CAAU;AAAA,UAAA;AAAA,QAAA;AAAA,QAKtC,gBAAA9E;AAAA,UAAC+E;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,iBAAiB;AAAA,YACjB,WAAU;AAAA,YAEV,UAAA;AAAA,cAAA,gBAAA7E,EAAC8E,IAAA,EAAW,WAAU,WAAU,UAAA,cAAU;AAAA,cAC1C,gBAAA9E,EAAC+E,IAAA,EAAiB,WAAU,WAAU,UAAA,+BAEtC;AAAA,cACA,gBAAA/E;AAAA,gBAACQ;AAAA,gBAAA;AAAA,kBACC,SAAS;AAAA,kBACT,iBAAiB,MAAMkD,EAAiB,EAAK;AAAA,kBAC5C,GAAGxC;AAAA,gBAAA;AAAA,cAAA;AAAA,YACN;AAAA,UAAA;AAAA,QAAA;AAAA,QAID4B,KAAgB,gBAAA9C,EAAC,OAAA,EAAI,WAAU,iCAAiC,UAAA8C,GAAa;AAAA,QAG7EI,KACC,gBAAAlD,EAAC,OAAA,EAAI,WAAU,2BACb,UAAA,gBAAAA;AAAA,UAACmC;AAAA,UAAA;AAAA,YACC,aAAAC;AAAA,YACA,YAAAC;AAAA,YACA,cAAAC;AAAA,YACA,eAAAC;AAAA,YACA,eACE,gBAAAvC,EAACgF,IAAA,EAAa,SAAO,IACnB,UAAA,gBAAAhF;AAAA,cAAC2E;AAAA,cAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,cAAW;AAAA,gBACX,WAAU;AAAA,gBAEV,UAAA,gBAAA3E,EAACiF,IAAA,EAAK,WAAU,UAAA,CAAU;AAAA,cAAA;AAAA,YAAA,EAC5B,CACF;AAAA,UAAA;AAAA,QAAA,GAGN;AAAA,QAIDlC,KAAgB,gBAAA/C,EAAC,OAAA,EAAI,WAAU,2BAA2B,UAAA+C,GAAa;AAAA,QAIxE,gBAAAjD,EAAC,OAAA,EAAI,WAAU,kEACb,UAAA;AAAA,UAAA,gBAAAE;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,aAAU;AAAA,cACV,WAAU;AAAA,cAET,UAAAuD;AAAA,YAAA;AAAA,UAAA;AAAA,UAIFP;AAAA,QAAA,EAAA,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEJ,EAAA,CACF;AAEJ;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),l=require("class-variance-authority"),V=require("react"),b=require("../../../ui/badge.cjs"),x=require("../../../ui/tooltip.cjs"),i=require("../../../lib/utils.cjs");function k(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const y=k(V),j=l.cva("flex min-w-0",{variants:{variant:{rail:"flex-col",sidebar:"flex-col",top:"flex-row items-center w-full gap-2"}},defaultVariants:{variant:"rail"}}),A=l.cva("shrink-0 flex",{variants:{variant:{rail:"justify-center py-2",sidebar:"px-3 py-2.5 border-b border-sidebar-border",top:"items-center"}},defaultVariants:{variant:"rail"}}),S=l.cva("flex min-h-0",{variants:{variant:{rail:"flex-1 flex-col items-center gap-1 px-2 pt-2 overflow-y-auto",sidebar:"flex-1 flex-col px-1 py-2 overflow-y-auto",top:"flex-1 flex-row items-center gap-1 min-w-0 overflow-x-auto"}},defaultVariants:{variant:"rail"}}),P=l.cva("flex",{variants:{variant:{rail:"flex-col items-center gap-3 w-full",sidebar:"flex-col gap-0.5",top:"flex-row items-center gap-1"}},defaultVariants:{variant:"rail"}}),C=l.cva("border-sidebar-border",{variants:{variant:{rail:"border-t w-8 my-2",sidebar:"border-t mx-3 my-1",top:"border-l h-5 mx-1 self-center"}},defaultVariants:{variant:"rail"}}),T=l.cva("shrink-0",{variants:{variant:{rail:"flex flex-col items-center py-2",sidebar:"p-2 border-t border-sidebar-border",top:"flex items-center gap-2"}},defaultVariants:{variant:"rail"}}),v=l.cva("cursor-pointer bg-transparent border-none transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",{variants:{variant:{rail:"flex flex-col items-center p-0 w-full",sidebar:"flex items-center gap-3 w-full px-3 py-2 text-sm text-left rounded-md",top:"flex items-center gap-2 h-7 px-2.5 text-sm rounded-md whitespace-nowrap focus-visible:ring-inset"},active:{true:"",false:""}},compoundVariants:[{variant:"sidebar",active:!0,class:"bg-sidebar-accent text-sidebar-foreground font-medium"},{variant:"sidebar",active:!1,class:"text-muted-foreground hover:bg-sidebar-accent/60 hover:text-foreground"},{variant:"top",active:!0,class:"bg-primary/10 text-primary font-medium"},{variant:"top",active:!1,class:"text-muted-foreground hover:bg-accent hover:text-foreground"}],defaultVariants:{variant:"rail",active:!1}}),q=l.cva("relative flex items-center justify-center rounded-lg transition-colors duration-150",{variants:{active:{true:"bg-primary/10",false:"bg-transparent"},variant:{rail:"w-[30px] h-[30px] hover:bg-accent",sidebar:"w-8 h-8",top:""}},defaultVariants:{active:!1,variant:"rail"}});function O({page:e,variant:t,active:r,onSelect:o}){const s=e.icon,c=()=>{e.onClick?.(),o?.(e.id,e)};if(t==="top")return a.jsxs("button",{type:"button","data-slot":"data-app-shell-primary-nav-item","aria-current":r?"page":void 0,className:i.cn(v({variant:t,active:r})),onClick:c,children:[s&&a.jsx(s,{className:"w-4 h-4"}),a.jsx("span",{children:e.label}),e.badge!=null&&a.jsx(b.Badge,{variant:"secondary",className:"h-4 px-1.5 text-[10px]",children:e.badge})]});const p=s?a.jsx(s,{className:i.cn("w-4 h-4",r?"text-primary":"text-muted-foreground")}):a.jsx("div",{className:i.cn("w-2 h-2 rounded-full",r?"bg-primary":"bg-muted-foreground/40")}),u=a.jsxs("div",{className:i.cn(q({active:r,variant:t})),children:[p,t==="rail"&&e.badge!=null&&a.jsx(b.Badge,{className:"absolute -top-1 -right-1 h-3.5 min-w-3.5 px-1 text-[9px] leading-none",children:e.badge})]});return t==="rail"?a.jsxs(x.Tooltip,{children:[a.jsx(x.TooltipTrigger,{asChild:!0,children:a.jsx("button",{type:"button","data-slot":"data-app-shell-primary-nav-item","aria-label":e.label,"aria-current":r?"page":void 0,className:i.cn(v({variant:t,active:r})),onClick:c,children:u})}),a.jsx(x.TooltipContent,{side:"right",children:e.label})]}):a.jsxs("button",{type:"button","data-slot":"data-app-shell-primary-nav-item","aria-current":r?"page":void 0,className:i.cn(v({variant:t,active:r})),onClick:c,children:[u,a.jsx("span",{className:"truncate",children:e.label}),e.badge!=null&&a.jsx(b.Badge,{variant:"secondary",className:"ml-auto h-4 px-1.5 text-[10px]",children:e.badge})]})}function _({variant:e,navGroups:t,activeKey:r,onSelect:o,header:s,user:c,actions:p,renderItem:u,className:N,...w}){const n=e??"rail",f=n==="rail";return a.jsx("nav",{"data-slot":"data-app-shell-primary-nav","data-variant":n,className:i.cn(j({variant:n}),N),...w,children:a.jsxs(x.TooltipProvider,{children:[s!=null&&a.jsx("div",{"data-slot":"data-app-shell-primary-nav-header",className:i.cn(A({variant:n})),children:s}),f&&s!=null&&a.jsx("div",{className:"shrink-0 mx-auto w-8 border-t border-sidebar-border"}),a.jsx("div",{"data-slot":"data-app-shell-primary-nav-items",className:i.cn(S({variant:n})),children:t.map((m,h)=>a.jsxs(y.Fragment,{children:[h>0&&a.jsx("div",{className:i.cn(C({variant:n}))}),n==="sidebar"&&m.label&&a.jsx("span",{className:"px-3 py-1 text-[10px] uppercase tracking-widest text-muted-foreground/60 font-semibold",children:m.label}),a.jsx("div",{className:i.cn(P({variant:n})),children:m.pages.map(d=>{const g=r==null?d.isActive??!1:d.id===r;return u?a.jsx(y.Fragment,{children:u(d,{active:g,variant:n})},d.id):a.jsx(O,{page:d,variant:n,active:g,onSelect:o},d.id)})})]},`${h}-${m.label??""}`))}),(c!=null||p!=null)&&a.jsxs(a.Fragment,{children:[f&&a.jsx("div",{className:"shrink-0 mx-auto w-8 border-t border-sidebar-border"}),a.jsxs("div",{"data-slot":"data-app-shell-primary-nav-user",className:i.cn(T({variant:n})),children:[p,c]})]})]})})}exports.DataAppShellPrimaryNav=_;exports.dataAppShellPrimaryNavItemVariants=v;exports.dataAppShellPrimaryNavVariants=j;
2
+ //# sourceMappingURL=PrimaryNav.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrimaryNav.cjs","sources":["../../../../src/components/composed/DataAppShell/PrimaryNav.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\nimport { type LucideIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Badge } from \"@/components/ui/badge\";\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 interface NavPage {\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 — overlaid on the icon in `rail`, inline in `sidebar`/`top` */\n badge?: React.ReactNode;\n /** Whether this page is currently active (ignored when `activeKey` is set on the nav) */\n isActive?: boolean;\n /** Click handler */\n onClick?: () => void;\n}\n\nexport interface NavGroup {\n /** Optional group label shown as a section header in the `sidebar` variant */\n label?: string;\n /** Page entries in this group */\n pages: NavPage[];\n}\n\nexport type DataAppShellPrimaryNavVariant = \"rail\" | \"sidebar\" | \"top\";\n\n// =============================================================================\n// CVA variants — one placement per `variant`\n// =============================================================================\n\nconst dataAppShellPrimaryNavVariants = cva(\"flex min-w-0\", {\n variants: {\n variant: {\n /** Vertical icon-only rail — tooltips on hover, user slot at the bottom */\n rail: \"flex-col\",\n /** Vertical icon + label panel — group labels, user slot at the bottom */\n sidebar: \"flex-col\",\n /** Horizontal bar — labels inline, user/actions slot on the right */\n top: \"flex-row items-center w-full gap-2\",\n },\n },\n defaultVariants: { variant: \"rail\" },\n});\n\nconst headerAreaVariants = cva(\"shrink-0 flex\", {\n variants: {\n variant: {\n rail: \"justify-center py-2\",\n sidebar: \"px-3 py-2.5 border-b border-sidebar-border\",\n top: \"items-center\",\n },\n },\n defaultVariants: { variant: \"rail\" },\n});\n\nconst itemsAreaVariants = cva(\"flex min-h-0\", {\n variants: {\n variant: {\n rail: \"flex-1 flex-col items-center gap-1 px-2 pt-2 overflow-y-auto\",\n // px-1 — the inset previously lived on each row as `mx-1` alongside\n // `w-full`, which made every row 8px wider than its container and got\n // clipped by this scroll area (SW-2118 sidebar row cut-off).\n sidebar: \"flex-1 flex-col px-1 py-2 overflow-y-auto\",\n top: \"flex-1 flex-row items-center gap-1 min-w-0 overflow-x-auto\",\n },\n },\n defaultVariants: { variant: \"rail\" },\n});\n\nconst groupItemsVariants = cva(\"flex\", {\n variants: {\n variant: {\n rail: \"flex-col items-center gap-3 w-full\",\n sidebar: \"flex-col gap-0.5\",\n top: \"flex-row items-center gap-1\",\n },\n },\n defaultVariants: { variant: \"rail\" },\n});\n\nconst groupSeparatorVariants = cva(\"border-sidebar-border\", {\n variants: {\n variant: {\n rail: \"border-t w-8 my-2\",\n sidebar: \"border-t mx-3 my-1\",\n top: \"border-l h-5 mx-1 self-center\",\n },\n },\n defaultVariants: { variant: \"rail\" },\n});\n\nconst userAreaVariants = cva(\"shrink-0\", {\n variants: {\n variant: {\n rail: \"flex flex-col items-center py-2\",\n sidebar: \"p-2 border-t border-sidebar-border\",\n top: \"flex items-center gap-2\",\n },\n },\n defaultVariants: { variant: \"rail\" },\n});\n\nconst dataAppShellPrimaryNavItemVariants = cva(\n \"cursor-pointer bg-transparent border-none transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n {\n variants: {\n variant: {\n rail: \"flex flex-col items-center p-0 w-full\",\n sidebar: \"flex items-center gap-3 w-full px-3 py-2 text-sm text-left rounded-md\",\n // ring-inset — the items row is an overflow-x-auto scroll container,\n // which would clip an outset ring at the row's edges\n top: \"flex items-center gap-2 h-7 px-2.5 text-sm rounded-md whitespace-nowrap focus-visible:ring-inset\",\n },\n active: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n variant: \"sidebar\",\n active: true,\n class: \"bg-sidebar-accent text-sidebar-foreground font-medium\",\n },\n {\n variant: \"sidebar\",\n active: false,\n class: \"text-muted-foreground hover:bg-sidebar-accent/60 hover:text-foreground\",\n },\n {\n variant: \"top\",\n active: true,\n class: \"bg-primary/10 text-primary font-medium\",\n },\n {\n variant: \"top\",\n active: false,\n class: \"text-muted-foreground hover:bg-accent hover:text-foreground\",\n },\n ],\n defaultVariants: { variant: \"rail\", active: false },\n }\n);\n\nconst pageIconVariants = cva(\n \"relative flex items-center justify-center rounded-lg transition-colors duration-150\",\n {\n variants: {\n active: {\n true: \"bg-primary/10\",\n false: \"bg-transparent\",\n },\n variant: {\n rail: \"w-[30px] h-[30px] hover:bg-accent\",\n sidebar: \"w-8 h-8\",\n top: \"\",\n },\n },\n defaultVariants: { active: false, variant: \"rail\" },\n }\n);\n\n// =============================================================================\n// Props\n// =============================================================================\n\nexport interface DataAppShellPrimaryNavProps\n extends Omit<React.ComponentProps<\"nav\">, \"children\" | \"onSelect\">,\n VariantProps<typeof dataAppShellPrimaryNavVariants> {\n /** Navigation groups; each group contains one or more pages */\n navGroups: NavGroup[];\n /** Controlled active page id — takes precedence over per-page `isActive` */\n activeKey?: string;\n /** Called with the selected page id after the page's own `onClick` */\n onSelect?: (key: string, page: NavPage) => void;\n /** Slot above the items in `rail`/`sidebar`, left of the items in `top` (e.g. app logo) */\n header?: React.ReactNode;\n /** User slot (e.g. `<UserMenu/>`) — bottom in `rail`/`sidebar`, right in `top` */\n user?: React.ReactNode;\n /** Action slot rendered alongside `user` */\n actions?: React.ReactNode;\n /** Escape hatch — full control over an item's rendering */\n renderItem?: (\n page: NavPage,\n state: { active: boolean; variant: DataAppShellPrimaryNavVariant }\n ) => React.ReactNode;\n}\n\n// =============================================================================\n// NavItem\n// =============================================================================\n\ninterface NavItemProps {\n page: NavPage;\n variant: DataAppShellPrimaryNavVariant;\n active: boolean;\n onSelect?: (key: string, page: NavPage) => void;\n}\n\nfunction NavItem({ page, variant, active, onSelect }: NavItemProps) {\n const Icon = page.icon;\n\n const handleClick = () => {\n page.onClick?.();\n onSelect?.(page.id, page);\n };\n\n if (variant === \"top\") {\n return (\n <button\n type=\"button\"\n data-slot=\"data-app-shell-primary-nav-item\"\n aria-current={active ? \"page\" : undefined}\n className={cn(dataAppShellPrimaryNavItemVariants({ variant, active }))}\n onClick={handleClick}\n >\n {Icon && <Icon className=\"w-4 h-4\" />}\n <span>{page.label}</span>\n {page.badge != null && (\n <Badge variant=\"secondary\" className=\"h-4 px-1.5 text-[10px]\">\n {page.badge}\n </Badge>\n )}\n </button>\n );\n }\n\n const iconEl = Icon ? (\n <Icon\n className={cn(\"w-4 h-4\", active ? \"text-primary\" : \"text-muted-foreground\")}\n />\n ) : (\n <div\n className={cn(\n \"w-2 h-2 rounded-full\",\n active ? \"bg-primary\" : \"bg-muted-foreground/40\"\n )}\n />\n );\n\n const iconBox = (\n <div className={cn(pageIconVariants({ active, variant }))}>\n {iconEl}\n {variant === \"rail\" && page.badge != null && (\n <Badge className=\"absolute -top-1 -right-1 h-3.5 min-w-3.5 px-1 text-[9px] leading-none\">\n {page.badge}\n </Badge>\n )}\n </div>\n );\n\n if (variant === \"rail\") {\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n data-slot=\"data-app-shell-primary-nav-item\"\n aria-label={page.label}\n aria-current={active ? \"page\" : undefined}\n className={cn(dataAppShellPrimaryNavItemVariants({ variant, active }))}\n onClick={handleClick}\n >\n {iconBox}\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"right\">{page.label}</TooltipContent>\n </Tooltip>\n );\n }\n\n // sidebar — icon + label row\n return (\n <button\n type=\"button\"\n data-slot=\"data-app-shell-primary-nav-item\"\n aria-current={active ? \"page\" : undefined}\n className={cn(dataAppShellPrimaryNavItemVariants({ variant, active }))}\n onClick={handleClick}\n >\n {iconBox}\n <span className=\"truncate\">{page.label}</span>\n {page.badge != null && (\n <Badge variant=\"secondary\" className=\"ml-auto h-4 px-1.5 text-[10px]\">\n {page.badge}\n </Badge>\n )}\n </button>\n );\n}\n\n// =============================================================================\n// DataAppShellPrimaryNav\n// =============================================================================\n\n/**\n * The Data App Shell's nav engine — one `navGroups` model rendered in three\n * placements via `variant`:\n *\n * - **rail** — vertical icon-only (48px rail); labels via tooltip, user slot at the bottom\n * - **sidebar** — vertical icon + label with group headers, user slot at the bottom\n * - **top** — horizontal bar; user/actions slot on the right\n *\n * Active state is either controlled via `activeKey` or per-page `isActive`.\n * Width/background chrome is owned by the container (the shell's rail wrapper,\n * a Sheet, or a TopBar) — this component is layout-neutral.\n */\nfunction DataAppShellPrimaryNav({\n variant,\n navGroups,\n activeKey,\n onSelect,\n header,\n user,\n actions,\n renderItem,\n className,\n ...props\n}: DataAppShellPrimaryNavProps) {\n const resolvedVariant: DataAppShellPrimaryNavVariant = variant ?? \"rail\";\n const isRail = resolvedVariant === \"rail\";\n\n return (\n <nav\n data-slot=\"data-app-shell-primary-nav\"\n data-variant={resolvedVariant}\n className={cn(dataAppShellPrimaryNavVariants({ variant: resolvedVariant }), className)}\n {...props}\n >\n <TooltipProvider>\n {header != null && (\n <div\n data-slot=\"data-app-shell-primary-nav-header\"\n className={cn(headerAreaVariants({ variant: resolvedVariant }))}\n >\n {header}\n </div>\n )}\n {/* Rail: short centered divider under the header, aligned with the icon column */}\n {isRail && header != null && (\n <div className=\"shrink-0 mx-auto w-8 border-t border-sidebar-border\" />\n )}\n\n <div\n data-slot=\"data-app-shell-primary-nav-items\"\n className={cn(itemsAreaVariants({ variant: resolvedVariant }))}\n >\n {navGroups.map((group, groupIndex) => (\n <React.Fragment key={`${groupIndex}-${group.label ?? \"\"}`}>\n {groupIndex > 0 && (\n <div className={cn(groupSeparatorVariants({ variant: resolvedVariant }))} />\n )}\n {resolvedVariant === \"sidebar\" && group.label && (\n <span className=\"px-3 py-1 text-[10px] uppercase tracking-widest text-muted-foreground/60 font-semibold\">\n {group.label}\n </span>\n )}\n <div className={cn(groupItemsVariants({ variant: resolvedVariant }))}>\n {group.pages.map((page) => {\n const active =\n activeKey == null ? (page.isActive ?? false) : page.id === activeKey;\n if (renderItem) {\n return (\n <React.Fragment key={page.id}>\n {renderItem(page, { active, variant: resolvedVariant })}\n </React.Fragment>\n );\n }\n return (\n <NavItem\n key={page.id}\n page={page}\n variant={resolvedVariant}\n active={active}\n onSelect={onSelect}\n />\n );\n })}\n </div>\n </React.Fragment>\n ))}\n </div>\n\n {(user != null || actions != null) && (\n <>\n {/* Rail: short centered divider above the user slot */}\n {isRail && (\n <div className=\"shrink-0 mx-auto w-8 border-t border-sidebar-border\" />\n )}\n <div\n data-slot=\"data-app-shell-primary-nav-user\"\n className={cn(userAreaVariants({ variant: resolvedVariant }))}\n >\n {actions}\n {user}\n </div>\n </>\n )}\n </TooltipProvider>\n </nav>\n );\n}\n\nexport {\n DataAppShellPrimaryNav,\n dataAppShellPrimaryNavVariants,\n dataAppShellPrimaryNavItemVariants,\n};\n"],"names":["dataAppShellPrimaryNavVariants","cva","headerAreaVariants","itemsAreaVariants","groupItemsVariants","groupSeparatorVariants","userAreaVariants","dataAppShellPrimaryNavItemVariants","pageIconVariants","NavItem","page","variant","active","onSelect","Icon","handleClick","jsxs","cn","jsx","Badge","iconEl","iconBox","Tooltip","TooltipTrigger","TooltipContent","DataAppShellPrimaryNav","navGroups","activeKey","header","user","actions","renderItem","className","props","resolvedVariant","isRail","TooltipProvider","group","groupIndex","React","Fragment"],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import { VariantProps } from 'class-variance-authority';
2
+ import { LucideIcon } from 'lucide-react';
3
+ import * as React from "react";
4
+ export interface NavPage {
5
+ /** Unique identifier */
6
+ id: string;
7
+ /** Display label */
8
+ label: string;
9
+ /** Lucide icon or custom React SVG component */
10
+ icon?: LucideIcon | React.FC<React.SVGProps<SVGSVGElement>>;
11
+ /** Optional count/status badge — overlaid on the icon in `rail`, inline in `sidebar`/`top` */
12
+ badge?: React.ReactNode;
13
+ /** Whether this page is currently active (ignored when `activeKey` is set on the nav) */
14
+ isActive?: boolean;
15
+ /** Click handler */
16
+ onClick?: () => void;
17
+ }
18
+ export interface NavGroup {
19
+ /** Optional group label shown as a section header in the `sidebar` variant */
20
+ label?: string;
21
+ /** Page entries in this group */
22
+ pages: NavPage[];
23
+ }
24
+ export type DataAppShellPrimaryNavVariant = "rail" | "sidebar" | "top";
25
+ declare const dataAppShellPrimaryNavVariants: (props?: ({
26
+ variant?: "top" | "rail" | "sidebar" | null | undefined;
27
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
28
+ declare const dataAppShellPrimaryNavItemVariants: (props?: ({
29
+ variant?: "top" | "rail" | "sidebar" | null | undefined;
30
+ active?: boolean | null | undefined;
31
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
32
+ export interface DataAppShellPrimaryNavProps extends Omit<React.ComponentProps<"nav">, "children" | "onSelect">, VariantProps<typeof dataAppShellPrimaryNavVariants> {
33
+ /** Navigation groups; each group contains one or more pages */
34
+ navGroups: NavGroup[];
35
+ /** Controlled active page id — takes precedence over per-page `isActive` */
36
+ activeKey?: string;
37
+ /** Called with the selected page id after the page's own `onClick` */
38
+ onSelect?: (key: string, page: NavPage) => void;
39
+ /** Slot above the items in `rail`/`sidebar`, left of the items in `top` (e.g. app logo) */
40
+ header?: React.ReactNode;
41
+ /** User slot (e.g. `<UserMenu/>`) — bottom in `rail`/`sidebar`, right in `top` */
42
+ user?: React.ReactNode;
43
+ /** Action slot rendered alongside `user` */
44
+ actions?: React.ReactNode;
45
+ /** Escape hatch — full control over an item's rendering */
46
+ renderItem?: (page: NavPage, state: {
47
+ active: boolean;
48
+ variant: DataAppShellPrimaryNavVariant;
49
+ }) => React.ReactNode;
50
+ }
51
+ /**
52
+ * The Data App Shell's nav engine — one `navGroups` model rendered in three
53
+ * placements via `variant`:
54
+ *
55
+ * - **rail** — vertical icon-only (48px rail); labels via tooltip, user slot at the bottom
56
+ * - **sidebar** — vertical icon + label with group headers, user slot at the bottom
57
+ * - **top** — horizontal bar; user/actions slot on the right
58
+ *
59
+ * Active state is either controlled via `activeKey` or per-page `isActive`.
60
+ * Width/background chrome is owned by the container (the shell's rail wrapper,
61
+ * a Sheet, or a TopBar) — this component is layout-neutral.
62
+ */
63
+ declare function DataAppShellPrimaryNav({ variant, navGroups, activeKey, onSelect, header, user, actions, renderItem, className, ...props }: DataAppShellPrimaryNavProps): import("react/jsx-runtime").JSX.Element;
64
+ export { DataAppShellPrimaryNav, dataAppShellPrimaryNavVariants, dataAppShellPrimaryNavItemVariants, };
@@ -0,0 +1,268 @@
1
+ import { jsx as a, jsxs as s, Fragment as V } from "react/jsx-runtime";
2
+ import { cva as o } from "class-variance-authority";
3
+ import * as y from "react";
4
+ import { Badge as b } from "../../../ui/badge.js";
5
+ import { TooltipProvider as k, Tooltip as A, TooltipTrigger as C, TooltipContent as T } from "../../../ui/tooltip.js";
6
+ import { cn as t } from "../../../lib/utils.js";
7
+ const j = o("flex min-w-0", {
8
+ variants: {
9
+ variant: {
10
+ /** Vertical icon-only rail — tooltips on hover, user slot at the bottom */
11
+ rail: "flex-col",
12
+ /** Vertical icon + label panel — group labels, user slot at the bottom */
13
+ sidebar: "flex-col",
14
+ /** Horizontal bar — labels inline, user/actions slot on the right */
15
+ top: "flex-row items-center w-full gap-2"
16
+ }
17
+ },
18
+ defaultVariants: { variant: "rail" }
19
+ }), P = o("shrink-0 flex", {
20
+ variants: {
21
+ variant: {
22
+ rail: "justify-center py-2",
23
+ sidebar: "px-3 py-2.5 border-b border-sidebar-border",
24
+ top: "items-center"
25
+ }
26
+ },
27
+ defaultVariants: { variant: "rail" }
28
+ }), S = o("flex min-h-0", {
29
+ variants: {
30
+ variant: {
31
+ rail: "flex-1 flex-col items-center gap-1 px-2 pt-2 overflow-y-auto",
32
+ // px-1 — the inset previously lived on each row as `mx-1` alongside
33
+ // `w-full`, which made every row 8px wider than its container and got
34
+ // clipped by this scroll area (SW-2118 sidebar row cut-off).
35
+ sidebar: "flex-1 flex-col px-1 py-2 overflow-y-auto",
36
+ top: "flex-1 flex-row items-center gap-1 min-w-0 overflow-x-auto"
37
+ }
38
+ },
39
+ defaultVariants: { variant: "rail" }
40
+ }), F = o("flex", {
41
+ variants: {
42
+ variant: {
43
+ rail: "flex-col items-center gap-3 w-full",
44
+ sidebar: "flex-col gap-0.5",
45
+ top: "flex-row items-center gap-1"
46
+ }
47
+ },
48
+ defaultVariants: { variant: "rail" }
49
+ }), I = o("border-sidebar-border", {
50
+ variants: {
51
+ variant: {
52
+ rail: "border-t w-8 my-2",
53
+ sidebar: "border-t mx-3 my-1",
54
+ top: "border-l h-5 mx-1 self-center"
55
+ }
56
+ },
57
+ defaultVariants: { variant: "rail" }
58
+ }), B = o("shrink-0", {
59
+ variants: {
60
+ variant: {
61
+ rail: "flex flex-col items-center py-2",
62
+ sidebar: "p-2 border-t border-sidebar-border",
63
+ top: "flex items-center gap-2"
64
+ }
65
+ },
66
+ defaultVariants: { variant: "rail" }
67
+ }), v = o(
68
+ "cursor-pointer bg-transparent border-none transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
69
+ {
70
+ variants: {
71
+ variant: {
72
+ rail: "flex flex-col items-center p-0 w-full",
73
+ sidebar: "flex items-center gap-3 w-full px-3 py-2 text-sm text-left rounded-md",
74
+ // ring-inset — the items row is an overflow-x-auto scroll container,
75
+ // which would clip an outset ring at the row's edges
76
+ top: "flex items-center gap-2 h-7 px-2.5 text-sm rounded-md whitespace-nowrap focus-visible:ring-inset"
77
+ },
78
+ active: {
79
+ true: "",
80
+ false: ""
81
+ }
82
+ },
83
+ compoundVariants: [
84
+ {
85
+ variant: "sidebar",
86
+ active: !0,
87
+ class: "bg-sidebar-accent text-sidebar-foreground font-medium"
88
+ },
89
+ {
90
+ variant: "sidebar",
91
+ active: !1,
92
+ class: "text-muted-foreground hover:bg-sidebar-accent/60 hover:text-foreground"
93
+ },
94
+ {
95
+ variant: "top",
96
+ active: !0,
97
+ class: "bg-primary/10 text-primary font-medium"
98
+ },
99
+ {
100
+ variant: "top",
101
+ active: !1,
102
+ class: "text-muted-foreground hover:bg-accent hover:text-foreground"
103
+ }
104
+ ],
105
+ defaultVariants: { variant: "rail", active: !1 }
106
+ }
107
+ ), R = o(
108
+ "relative flex items-center justify-center rounded-lg transition-colors duration-150",
109
+ {
110
+ variants: {
111
+ active: {
112
+ true: "bg-primary/10",
113
+ false: "bg-transparent"
114
+ },
115
+ variant: {
116
+ rail: "w-[30px] h-[30px] hover:bg-accent",
117
+ sidebar: "w-8 h-8",
118
+ top: ""
119
+ }
120
+ },
121
+ defaultVariants: { active: !1, variant: "rail" }
122
+ }
123
+ );
124
+ function $({ page: r, variant: l, active: e, onSelect: f }) {
125
+ const n = r.icon, d = () => {
126
+ r.onClick?.(), f?.(r.id, r);
127
+ };
128
+ if (l === "top")
129
+ return /* @__PURE__ */ s(
130
+ "button",
131
+ {
132
+ type: "button",
133
+ "data-slot": "data-app-shell-primary-nav-item",
134
+ "aria-current": e ? "page" : void 0,
135
+ className: t(v({ variant: l, active: e })),
136
+ onClick: d,
137
+ children: [
138
+ n && /* @__PURE__ */ a(n, { className: "w-4 h-4" }),
139
+ /* @__PURE__ */ a("span", { children: r.label }),
140
+ r.badge != null && /* @__PURE__ */ a(b, { variant: "secondary", className: "h-4 px-1.5 text-[10px]", children: r.badge })
141
+ ]
142
+ }
143
+ );
144
+ const p = n ? /* @__PURE__ */ a(
145
+ n,
146
+ {
147
+ className: t("w-4 h-4", e ? "text-primary" : "text-muted-foreground")
148
+ }
149
+ ) : /* @__PURE__ */ a(
150
+ "div",
151
+ {
152
+ className: t(
153
+ "w-2 h-2 rounded-full",
154
+ e ? "bg-primary" : "bg-muted-foreground/40"
155
+ )
156
+ }
157
+ ), m = /* @__PURE__ */ s("div", { className: t(R({ active: e, variant: l })), children: [
158
+ p,
159
+ l === "rail" && r.badge != null && /* @__PURE__ */ a(b, { className: "absolute -top-1 -right-1 h-3.5 min-w-3.5 px-1 text-[9px] leading-none", children: r.badge })
160
+ ] });
161
+ return l === "rail" ? /* @__PURE__ */ s(A, { children: [
162
+ /* @__PURE__ */ a(C, { asChild: !0, children: /* @__PURE__ */ a(
163
+ "button",
164
+ {
165
+ type: "button",
166
+ "data-slot": "data-app-shell-primary-nav-item",
167
+ "aria-label": r.label,
168
+ "aria-current": e ? "page" : void 0,
169
+ className: t(v({ variant: l, active: e })),
170
+ onClick: d,
171
+ children: m
172
+ }
173
+ ) }),
174
+ /* @__PURE__ */ a(T, { side: "right", children: r.label })
175
+ ] }) : /* @__PURE__ */ s(
176
+ "button",
177
+ {
178
+ type: "button",
179
+ "data-slot": "data-app-shell-primary-nav-item",
180
+ "aria-current": e ? "page" : void 0,
181
+ className: t(v({ variant: l, active: e })),
182
+ onClick: d,
183
+ children: [
184
+ m,
185
+ /* @__PURE__ */ a("span", { className: "truncate", children: r.label }),
186
+ r.badge != null && /* @__PURE__ */ a(b, { variant: "secondary", className: "ml-auto h-4 px-1.5 text-[10px]", children: r.badge })
187
+ ]
188
+ }
189
+ );
190
+ }
191
+ function H({
192
+ variant: r,
193
+ navGroups: l,
194
+ activeKey: e,
195
+ onSelect: f,
196
+ header: n,
197
+ user: d,
198
+ actions: p,
199
+ renderItem: m,
200
+ className: w,
201
+ ...N
202
+ }) {
203
+ const i = r ?? "rail", x = i === "rail";
204
+ return /* @__PURE__ */ a(
205
+ "nav",
206
+ {
207
+ "data-slot": "data-app-shell-primary-nav",
208
+ "data-variant": i,
209
+ className: t(j({ variant: i }), w),
210
+ ...N,
211
+ children: /* @__PURE__ */ s(k, { children: [
212
+ n != null && /* @__PURE__ */ a(
213
+ "div",
214
+ {
215
+ "data-slot": "data-app-shell-primary-nav-header",
216
+ className: t(P({ variant: i })),
217
+ children: n
218
+ }
219
+ ),
220
+ x && n != null && /* @__PURE__ */ a("div", { className: "shrink-0 mx-auto w-8 border-t border-sidebar-border" }),
221
+ /* @__PURE__ */ a(
222
+ "div",
223
+ {
224
+ "data-slot": "data-app-shell-primary-nav-items",
225
+ className: t(S({ variant: i })),
226
+ children: l.map((u, h) => /* @__PURE__ */ s(y.Fragment, { children: [
227
+ h > 0 && /* @__PURE__ */ a("div", { className: t(I({ variant: i })) }),
228
+ i === "sidebar" && u.label && /* @__PURE__ */ a("span", { className: "px-3 py-1 text-[10px] uppercase tracking-widest text-muted-foreground/60 font-semibold", children: u.label }),
229
+ /* @__PURE__ */ a("div", { className: t(F({ variant: i })), children: u.pages.map((c) => {
230
+ const g = e == null ? c.isActive ?? !1 : c.id === e;
231
+ return m ? /* @__PURE__ */ a(y.Fragment, { children: m(c, { active: g, variant: i }) }, c.id) : /* @__PURE__ */ a(
232
+ $,
233
+ {
234
+ page: c,
235
+ variant: i,
236
+ active: g,
237
+ onSelect: f
238
+ },
239
+ c.id
240
+ );
241
+ }) })
242
+ ] }, `${h}-${u.label ?? ""}`))
243
+ }
244
+ ),
245
+ (d != null || p != null) && /* @__PURE__ */ s(V, { children: [
246
+ x && /* @__PURE__ */ a("div", { className: "shrink-0 mx-auto w-8 border-t border-sidebar-border" }),
247
+ /* @__PURE__ */ s(
248
+ "div",
249
+ {
250
+ "data-slot": "data-app-shell-primary-nav-user",
251
+ className: t(B({ variant: i })),
252
+ children: [
253
+ p,
254
+ d
255
+ ]
256
+ }
257
+ )
258
+ ] })
259
+ ] })
260
+ }
261
+ );
262
+ }
263
+ export {
264
+ H as DataAppShellPrimaryNav,
265
+ v as dataAppShellPrimaryNavItemVariants,
266
+ j as dataAppShellPrimaryNavVariants
267
+ };
268
+ //# sourceMappingURL=PrimaryNav.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrimaryNav.js","sources":["../../../../src/components/composed/DataAppShell/PrimaryNav.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\nimport { type LucideIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Badge } from \"@/components/ui/badge\";\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 interface NavPage {\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 — overlaid on the icon in `rail`, inline in `sidebar`/`top` */\n badge?: React.ReactNode;\n /** Whether this page is currently active (ignored when `activeKey` is set on the nav) */\n isActive?: boolean;\n /** Click handler */\n onClick?: () => void;\n}\n\nexport interface NavGroup {\n /** Optional group label shown as a section header in the `sidebar` variant */\n label?: string;\n /** Page entries in this group */\n pages: NavPage[];\n}\n\nexport type DataAppShellPrimaryNavVariant = \"rail\" | \"sidebar\" | \"top\";\n\n// =============================================================================\n// CVA variants — one placement per `variant`\n// =============================================================================\n\nconst dataAppShellPrimaryNavVariants = cva(\"flex min-w-0\", {\n variants: {\n variant: {\n /** Vertical icon-only rail — tooltips on hover, user slot at the bottom */\n rail: \"flex-col\",\n /** Vertical icon + label panel — group labels, user slot at the bottom */\n sidebar: \"flex-col\",\n /** Horizontal bar — labels inline, user/actions slot on the right */\n top: \"flex-row items-center w-full gap-2\",\n },\n },\n defaultVariants: { variant: \"rail\" },\n});\n\nconst headerAreaVariants = cva(\"shrink-0 flex\", {\n variants: {\n variant: {\n rail: \"justify-center py-2\",\n sidebar: \"px-3 py-2.5 border-b border-sidebar-border\",\n top: \"items-center\",\n },\n },\n defaultVariants: { variant: \"rail\" },\n});\n\nconst itemsAreaVariants = cva(\"flex min-h-0\", {\n variants: {\n variant: {\n rail: \"flex-1 flex-col items-center gap-1 px-2 pt-2 overflow-y-auto\",\n // px-1 — the inset previously lived on each row as `mx-1` alongside\n // `w-full`, which made every row 8px wider than its container and got\n // clipped by this scroll area (SW-2118 sidebar row cut-off).\n sidebar: \"flex-1 flex-col px-1 py-2 overflow-y-auto\",\n top: \"flex-1 flex-row items-center gap-1 min-w-0 overflow-x-auto\",\n },\n },\n defaultVariants: { variant: \"rail\" },\n});\n\nconst groupItemsVariants = cva(\"flex\", {\n variants: {\n variant: {\n rail: \"flex-col items-center gap-3 w-full\",\n sidebar: \"flex-col gap-0.5\",\n top: \"flex-row items-center gap-1\",\n },\n },\n defaultVariants: { variant: \"rail\" },\n});\n\nconst groupSeparatorVariants = cva(\"border-sidebar-border\", {\n variants: {\n variant: {\n rail: \"border-t w-8 my-2\",\n sidebar: \"border-t mx-3 my-1\",\n top: \"border-l h-5 mx-1 self-center\",\n },\n },\n defaultVariants: { variant: \"rail\" },\n});\n\nconst userAreaVariants = cva(\"shrink-0\", {\n variants: {\n variant: {\n rail: \"flex flex-col items-center py-2\",\n sidebar: \"p-2 border-t border-sidebar-border\",\n top: \"flex items-center gap-2\",\n },\n },\n defaultVariants: { variant: \"rail\" },\n});\n\nconst dataAppShellPrimaryNavItemVariants = cva(\n \"cursor-pointer bg-transparent border-none transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n {\n variants: {\n variant: {\n rail: \"flex flex-col items-center p-0 w-full\",\n sidebar: \"flex items-center gap-3 w-full px-3 py-2 text-sm text-left rounded-md\",\n // ring-inset — the items row is an overflow-x-auto scroll container,\n // which would clip an outset ring at the row's edges\n top: \"flex items-center gap-2 h-7 px-2.5 text-sm rounded-md whitespace-nowrap focus-visible:ring-inset\",\n },\n active: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n variant: \"sidebar\",\n active: true,\n class: \"bg-sidebar-accent text-sidebar-foreground font-medium\",\n },\n {\n variant: \"sidebar\",\n active: false,\n class: \"text-muted-foreground hover:bg-sidebar-accent/60 hover:text-foreground\",\n },\n {\n variant: \"top\",\n active: true,\n class: \"bg-primary/10 text-primary font-medium\",\n },\n {\n variant: \"top\",\n active: false,\n class: \"text-muted-foreground hover:bg-accent hover:text-foreground\",\n },\n ],\n defaultVariants: { variant: \"rail\", active: false },\n }\n);\n\nconst pageIconVariants = cva(\n \"relative flex items-center justify-center rounded-lg transition-colors duration-150\",\n {\n variants: {\n active: {\n true: \"bg-primary/10\",\n false: \"bg-transparent\",\n },\n variant: {\n rail: \"w-[30px] h-[30px] hover:bg-accent\",\n sidebar: \"w-8 h-8\",\n top: \"\",\n },\n },\n defaultVariants: { active: false, variant: \"rail\" },\n }\n);\n\n// =============================================================================\n// Props\n// =============================================================================\n\nexport interface DataAppShellPrimaryNavProps\n extends Omit<React.ComponentProps<\"nav\">, \"children\" | \"onSelect\">,\n VariantProps<typeof dataAppShellPrimaryNavVariants> {\n /** Navigation groups; each group contains one or more pages */\n navGroups: NavGroup[];\n /** Controlled active page id — takes precedence over per-page `isActive` */\n activeKey?: string;\n /** Called with the selected page id after the page's own `onClick` */\n onSelect?: (key: string, page: NavPage) => void;\n /** Slot above the items in `rail`/`sidebar`, left of the items in `top` (e.g. app logo) */\n header?: React.ReactNode;\n /** User slot (e.g. `<UserMenu/>`) — bottom in `rail`/`sidebar`, right in `top` */\n user?: React.ReactNode;\n /** Action slot rendered alongside `user` */\n actions?: React.ReactNode;\n /** Escape hatch — full control over an item's rendering */\n renderItem?: (\n page: NavPage,\n state: { active: boolean; variant: DataAppShellPrimaryNavVariant }\n ) => React.ReactNode;\n}\n\n// =============================================================================\n// NavItem\n// =============================================================================\n\ninterface NavItemProps {\n page: NavPage;\n variant: DataAppShellPrimaryNavVariant;\n active: boolean;\n onSelect?: (key: string, page: NavPage) => void;\n}\n\nfunction NavItem({ page, variant, active, onSelect }: NavItemProps) {\n const Icon = page.icon;\n\n const handleClick = () => {\n page.onClick?.();\n onSelect?.(page.id, page);\n };\n\n if (variant === \"top\") {\n return (\n <button\n type=\"button\"\n data-slot=\"data-app-shell-primary-nav-item\"\n aria-current={active ? \"page\" : undefined}\n className={cn(dataAppShellPrimaryNavItemVariants({ variant, active }))}\n onClick={handleClick}\n >\n {Icon && <Icon className=\"w-4 h-4\" />}\n <span>{page.label}</span>\n {page.badge != null && (\n <Badge variant=\"secondary\" className=\"h-4 px-1.5 text-[10px]\">\n {page.badge}\n </Badge>\n )}\n </button>\n );\n }\n\n const iconEl = Icon ? (\n <Icon\n className={cn(\"w-4 h-4\", active ? \"text-primary\" : \"text-muted-foreground\")}\n />\n ) : (\n <div\n className={cn(\n \"w-2 h-2 rounded-full\",\n active ? \"bg-primary\" : \"bg-muted-foreground/40\"\n )}\n />\n );\n\n const iconBox = (\n <div className={cn(pageIconVariants({ active, variant }))}>\n {iconEl}\n {variant === \"rail\" && page.badge != null && (\n <Badge className=\"absolute -top-1 -right-1 h-3.5 min-w-3.5 px-1 text-[9px] leading-none\">\n {page.badge}\n </Badge>\n )}\n </div>\n );\n\n if (variant === \"rail\") {\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n data-slot=\"data-app-shell-primary-nav-item\"\n aria-label={page.label}\n aria-current={active ? \"page\" : undefined}\n className={cn(dataAppShellPrimaryNavItemVariants({ variant, active }))}\n onClick={handleClick}\n >\n {iconBox}\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"right\">{page.label}</TooltipContent>\n </Tooltip>\n );\n }\n\n // sidebar — icon + label row\n return (\n <button\n type=\"button\"\n data-slot=\"data-app-shell-primary-nav-item\"\n aria-current={active ? \"page\" : undefined}\n className={cn(dataAppShellPrimaryNavItemVariants({ variant, active }))}\n onClick={handleClick}\n >\n {iconBox}\n <span className=\"truncate\">{page.label}</span>\n {page.badge != null && (\n <Badge variant=\"secondary\" className=\"ml-auto h-4 px-1.5 text-[10px]\">\n {page.badge}\n </Badge>\n )}\n </button>\n );\n}\n\n// =============================================================================\n// DataAppShellPrimaryNav\n// =============================================================================\n\n/**\n * The Data App Shell's nav engine — one `navGroups` model rendered in three\n * placements via `variant`:\n *\n * - **rail** — vertical icon-only (48px rail); labels via tooltip, user slot at the bottom\n * - **sidebar** — vertical icon + label with group headers, user slot at the bottom\n * - **top** — horizontal bar; user/actions slot on the right\n *\n * Active state is either controlled via `activeKey` or per-page `isActive`.\n * Width/background chrome is owned by the container (the shell's rail wrapper,\n * a Sheet, or a TopBar) — this component is layout-neutral.\n */\nfunction DataAppShellPrimaryNav({\n variant,\n navGroups,\n activeKey,\n onSelect,\n header,\n user,\n actions,\n renderItem,\n className,\n ...props\n}: DataAppShellPrimaryNavProps) {\n const resolvedVariant: DataAppShellPrimaryNavVariant = variant ?? \"rail\";\n const isRail = resolvedVariant === \"rail\";\n\n return (\n <nav\n data-slot=\"data-app-shell-primary-nav\"\n data-variant={resolvedVariant}\n className={cn(dataAppShellPrimaryNavVariants({ variant: resolvedVariant }), className)}\n {...props}\n >\n <TooltipProvider>\n {header != null && (\n <div\n data-slot=\"data-app-shell-primary-nav-header\"\n className={cn(headerAreaVariants({ variant: resolvedVariant }))}\n >\n {header}\n </div>\n )}\n {/* Rail: short centered divider under the header, aligned with the icon column */}\n {isRail && header != null && (\n <div className=\"shrink-0 mx-auto w-8 border-t border-sidebar-border\" />\n )}\n\n <div\n data-slot=\"data-app-shell-primary-nav-items\"\n className={cn(itemsAreaVariants({ variant: resolvedVariant }))}\n >\n {navGroups.map((group, groupIndex) => (\n <React.Fragment key={`${groupIndex}-${group.label ?? \"\"}`}>\n {groupIndex > 0 && (\n <div className={cn(groupSeparatorVariants({ variant: resolvedVariant }))} />\n )}\n {resolvedVariant === \"sidebar\" && group.label && (\n <span className=\"px-3 py-1 text-[10px] uppercase tracking-widest text-muted-foreground/60 font-semibold\">\n {group.label}\n </span>\n )}\n <div className={cn(groupItemsVariants({ variant: resolvedVariant }))}>\n {group.pages.map((page) => {\n const active =\n activeKey == null ? (page.isActive ?? false) : page.id === activeKey;\n if (renderItem) {\n return (\n <React.Fragment key={page.id}>\n {renderItem(page, { active, variant: resolvedVariant })}\n </React.Fragment>\n );\n }\n return (\n <NavItem\n key={page.id}\n page={page}\n variant={resolvedVariant}\n active={active}\n onSelect={onSelect}\n />\n );\n })}\n </div>\n </React.Fragment>\n ))}\n </div>\n\n {(user != null || actions != null) && (\n <>\n {/* Rail: short centered divider above the user slot */}\n {isRail && (\n <div className=\"shrink-0 mx-auto w-8 border-t border-sidebar-border\" />\n )}\n <div\n data-slot=\"data-app-shell-primary-nav-user\"\n className={cn(userAreaVariants({ variant: resolvedVariant }))}\n >\n {actions}\n {user}\n </div>\n </>\n )}\n </TooltipProvider>\n </nav>\n );\n}\n\nexport {\n DataAppShellPrimaryNav,\n dataAppShellPrimaryNavVariants,\n dataAppShellPrimaryNavItemVariants,\n};\n"],"names":["dataAppShellPrimaryNavVariants","cva","headerAreaVariants","itemsAreaVariants","groupItemsVariants","groupSeparatorVariants","userAreaVariants","dataAppShellPrimaryNavItemVariants","pageIconVariants","NavItem","page","variant","active","onSelect","Icon","handleClick","jsxs","cn","jsx","Badge","iconEl","iconBox","Tooltip","TooltipTrigger","TooltipContent","DataAppShellPrimaryNav","navGroups","activeKey","header","user","actions","renderItem","className","props","resolvedVariant","isRail","TooltipProvider","group","groupIndex","React","Fragment"],"mappings":"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"}