@flanksource/clicky-ui 0.3.55 → 0.3.56

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 (991) hide show
  1. package/NOTICE.md +6 -0
  2. package/dist/ai.cjs +6 -0
  3. package/dist/ai.js +3 -1
  4. package/dist/chat.cjs +2 -0
  5. package/dist/chat.d.ts +1 -0
  6. package/dist/chat.d.ts.map +1 -1
  7. package/dist/chat.js +2 -1
  8. package/dist/comments/CommentCard.cjs +37 -7
  9. package/dist/comments/CommentCard.cjs.map +1 -1
  10. package/dist/comments/CommentCard.d.ts +11 -1
  11. package/dist/comments/CommentCard.d.ts.map +1 -1
  12. package/dist/comments/CommentCard.js +37 -7
  13. package/dist/comments/CommentCard.js.map +1 -1
  14. package/dist/comments/CommentCardParts.cjs +9 -4
  15. package/dist/comments/CommentCardParts.cjs.map +1 -1
  16. package/dist/comments/CommentCardParts.d.ts.map +1 -1
  17. package/dist/comments/CommentCardParts.js +9 -4
  18. package/dist/comments/CommentCardParts.js.map +1 -1
  19. package/dist/comments/CommentComposer.cjs +8 -8
  20. package/dist/comments/CommentComposer.cjs.map +1 -1
  21. package/dist/comments/CommentComposer.d.ts.map +1 -1
  22. package/dist/comments/CommentComposer.js +8 -8
  23. package/dist/comments/CommentComposer.js.map +1 -1
  24. package/dist/comments/CommentProvider.cjs +5 -1
  25. package/dist/comments/CommentProvider.cjs.map +1 -1
  26. package/dist/comments/CommentProvider.d.ts +1 -1
  27. package/dist/comments/CommentProvider.d.ts.map +1 -1
  28. package/dist/comments/CommentProvider.js +5 -1
  29. package/dist/comments/CommentProvider.js.map +1 -1
  30. package/dist/comments/CommentSidePanel.cjs +17 -11
  31. package/dist/comments/CommentSidePanel.cjs.map +1 -1
  32. package/dist/comments/CommentSidePanel.d.ts +6 -0
  33. package/dist/comments/CommentSidePanel.d.ts.map +1 -1
  34. package/dist/comments/CommentSidePanel.js +17 -11
  35. package/dist/comments/CommentSidePanel.js.map +1 -1
  36. package/dist/comments/CommentThread.cjs +4 -1
  37. package/dist/comments/CommentThread.cjs.map +1 -1
  38. package/dist/comments/CommentThread.d.ts +4 -1
  39. package/dist/comments/CommentThread.d.ts.map +1 -1
  40. package/dist/comments/CommentThread.js +4 -1
  41. package/dist/comments/CommentThread.js.map +1 -1
  42. package/dist/comments/CommentThreadList.cjs +6 -3
  43. package/dist/comments/CommentThreadList.cjs.map +1 -1
  44. package/dist/comments/CommentThreadList.d.ts +7 -2
  45. package/dist/comments/CommentThreadList.d.ts.map +1 -1
  46. package/dist/comments/CommentThreadList.js +6 -3
  47. package/dist/comments/CommentThreadList.js.map +1 -1
  48. package/dist/comments/MentionTextarea.cjs +1 -1
  49. package/dist/comments/MentionTextarea.cjs.map +1 -1
  50. package/dist/comments/MentionTextarea.d.ts.map +1 -1
  51. package/dist/comments/MentionTextarea.js +1 -1
  52. package/dist/comments/MentionTextarea.js.map +1 -1
  53. package/dist/comments/comment-assign.cjs +68 -0
  54. package/dist/comments/comment-assign.cjs.map +1 -0
  55. package/dist/comments/comment-assign.d.ts +31 -0
  56. package/dist/comments/comment-assign.d.ts.map +1 -0
  57. package/dist/comments/comment-assign.js +67 -0
  58. package/dist/comments/comment-assign.js.map +1 -0
  59. package/dist/comments/comment-types.cjs.map +1 -1
  60. package/dist/comments/comment-types.d.ts +39 -0
  61. package/dist/comments/comment-types.d.ts.map +1 -1
  62. package/dist/comments/comment-types.js.map +1 -1
  63. package/dist/comments/comment-utils.cjs +2 -0
  64. package/dist/comments/comment-utils.cjs.map +1 -1
  65. package/dist/comments/comment-utils.d.ts +2 -0
  66. package/dist/comments/comment-utils.d.ts.map +1 -1
  67. package/dist/comments/comment-utils.js +2 -0
  68. package/dist/comments/comment-utils.js.map +1 -1
  69. package/dist/comments.cjs +3 -0
  70. package/dist/comments.d.ts +1 -0
  71. package/dist/comments.d.ts.map +1 -1
  72. package/dist/comments.js +2 -1
  73. package/dist/components/ComboboxMenu.cjs +23 -13
  74. package/dist/components/ComboboxMenu.cjs.map +1 -1
  75. package/dist/components/ComboboxMenu.d.ts.map +1 -1
  76. package/dist/components/ComboboxMenu.js +23 -13
  77. package/dist/components/ComboboxMenu.js.map +1 -1
  78. package/dist/components/FilterBar.cjs +29 -6
  79. package/dist/components/FilterBar.cjs.map +1 -1
  80. package/dist/components/FilterBar.d.ts +3 -1
  81. package/dist/components/FilterBar.d.ts.map +1 -1
  82. package/dist/components/FilterBar.js +29 -6
  83. package/dist/components/FilterBar.js.map +1 -1
  84. package/dist/components/ItemActions.cjs +1 -1
  85. package/dist/components/ItemActions.cjs.map +1 -1
  86. package/dist/components/ItemActions.js +1 -1
  87. package/dist/components/ItemActions.js.map +1 -1
  88. package/dist/components/ListMenu.cjs +33 -3
  89. package/dist/components/ListMenu.cjs.map +1 -1
  90. package/dist/components/ListMenu.d.ts +4 -1
  91. package/dist/components/ListMenu.d.ts.map +1 -1
  92. package/dist/components/ListMenu.js +33 -3
  93. package/dist/components/ListMenu.js.map +1 -1
  94. package/dist/components/ListMenuItems.cjs +80 -0
  95. package/dist/components/ListMenuItems.cjs.map +1 -0
  96. package/dist/components/ListMenuItems.d.ts +8 -0
  97. package/dist/components/ListMenuItems.d.ts.map +1 -0
  98. package/dist/components/ListMenuItems.js +80 -0
  99. package/dist/components/ListMenuItems.js.map +1 -0
  100. package/dist/components/LocalPathPicker.cjs +182 -0
  101. package/dist/components/LocalPathPicker.cjs.map +1 -0
  102. package/dist/components/LocalPathPicker.d.ts +11 -0
  103. package/dist/components/LocalPathPicker.d.ts.map +1 -0
  104. package/dist/components/LocalPathPicker.js +182 -0
  105. package/dist/components/LocalPathPicker.js.map +1 -0
  106. package/dist/components/LocalPathTree.cjs +89 -0
  107. package/dist/components/LocalPathTree.cjs.map +1 -0
  108. package/dist/components/LocalPathTree.d.ts +9 -0
  109. package/dist/components/LocalPathTree.d.ts.map +1 -0
  110. package/dist/components/LocalPathTree.js +89 -0
  111. package/dist/components/LocalPathTree.js.map +1 -0
  112. package/dist/components/RangeSlider.cjs +10 -30
  113. package/dist/components/RangeSlider.cjs.map +1 -1
  114. package/dist/components/RangeSlider.d.ts.map +1 -1
  115. package/dist/components/RangeSlider.js +4 -24
  116. package/dist/components/RangeSlider.js.map +1 -1
  117. package/dist/components/Slider.cjs +79 -0
  118. package/dist/components/Slider.cjs.map +1 -0
  119. package/dist/components/Slider.d.ts +23 -0
  120. package/dist/components/Slider.d.ts.map +1 -0
  121. package/dist/components/Slider.js +79 -0
  122. package/dist/components/Slider.js.map +1 -0
  123. package/dist/components/combobox-types.d.ts +4 -1
  124. package/dist/components/combobox-types.d.ts.map +1 -1
  125. package/dist/components/filter-bar-field-utils.cjs +3 -5
  126. package/dist/components/filter-bar-field-utils.cjs.map +1 -1
  127. package/dist/components/filter-bar-field-utils.d.ts.map +1 -1
  128. package/dist/components/filter-bar-field-utils.js +3 -5
  129. package/dist/components/filter-bar-field-utils.js.map +1 -1
  130. package/dist/components/filter-bar-tree-model.cjs +22 -0
  131. package/dist/components/filter-bar-tree-model.cjs.map +1 -0
  132. package/dist/components/filter-bar-tree-model.d.ts +33 -0
  133. package/dist/components/filter-bar-tree-model.d.ts.map +1 -0
  134. package/dist/components/filter-bar-tree-model.js +21 -0
  135. package/dist/components/filter-bar-tree-model.js.map +1 -0
  136. package/dist/components/filter-bar-tree.cjs +84 -0
  137. package/dist/components/filter-bar-tree.cjs.map +1 -0
  138. package/dist/components/filter-bar-tree.d.ts +7 -0
  139. package/dist/components/filter-bar-tree.d.ts.map +1 -0
  140. package/dist/components/filter-bar-tree.js +84 -0
  141. package/dist/components/filter-bar-tree.js.map +1 -0
  142. package/dist/components/json-schema-form-debug-glyph-map.cjs +2 -0
  143. package/dist/components/json-schema-form-debug-glyph-map.cjs.map +1 -1
  144. package/dist/components/json-schema-form-debug-glyph-map.d.ts.map +1 -1
  145. package/dist/components/json-schema-form-debug-glyph-map.js +2 -0
  146. package/dist/components/json-schema-form-debug-glyph-map.js.map +1 -1
  147. package/dist/components/json-schema-form-help-links.cjs +18 -0
  148. package/dist/components/json-schema-form-help-links.cjs.map +1 -0
  149. package/dist/components/json-schema-form-help-links.d.ts +5 -0
  150. package/dist/components/json-schema-form-help-links.d.ts.map +1 -0
  151. package/dist/components/json-schema-form-help-links.js +18 -0
  152. package/dist/components/json-schema-form-help-links.js.map +1 -0
  153. package/dist/components/json-schema-form-help-model.cjs +7 -0
  154. package/dist/components/json-schema-form-help-model.cjs.map +1 -0
  155. package/dist/components/json-schema-form-help-model.d.ts +3 -0
  156. package/dist/components/json-schema-form-help-model.d.ts.map +1 -0
  157. package/dist/components/json-schema-form-help-model.js +7 -0
  158. package/dist/components/json-schema-form-help-model.js.map +1 -0
  159. package/dist/components/json-schema-form-json.cjs +48 -0
  160. package/dist/components/json-schema-form-json.cjs.map +1 -0
  161. package/dist/components/json-schema-form-json.d.ts +7 -0
  162. package/dist/components/json-schema-form-json.d.ts.map +1 -0
  163. package/dist/components/json-schema-form-json.js +48 -0
  164. package/dist/components/json-schema-form-json.js.map +1 -0
  165. package/dist/components/json-schema-form-layout.cjs +7 -5
  166. package/dist/components/json-schema-form-layout.cjs.map +1 -1
  167. package/dist/components/json-schema-form-layout.d.ts +2 -2
  168. package/dist/components/json-schema-form-layout.d.ts.map +1 -1
  169. package/dist/components/json-schema-form-layout.js +7 -5
  170. package/dist/components/json-schema-form-layout.js.map +1 -1
  171. package/dist/components/json-schema-form-object.cjs +2 -13
  172. package/dist/components/json-schema-form-object.cjs.map +1 -1
  173. package/dist/components/json-schema-form-object.d.ts.map +1 -1
  174. package/dist/components/json-schema-form-object.js +2 -13
  175. package/dist/components/json-schema-form-object.js.map +1 -1
  176. package/dist/components/json-schema-form-refs.cjs +1 -1
  177. package/dist/components/json-schema-form-refs.cjs.map +1 -1
  178. package/dist/components/json-schema-form-refs.d.ts.map +1 -1
  179. package/dist/components/json-schema-form-refs.js +1 -1
  180. package/dist/components/json-schema-form-refs.js.map +1 -1
  181. package/dist/components/json-schema-form-render.cjs +20 -6
  182. package/dist/components/json-schema-form-render.cjs.map +1 -1
  183. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  184. package/dist/components/json-schema-form-render.js +20 -6
  185. package/dist/components/json-schema-form-render.js.map +1 -1
  186. package/dist/components/json-schema-form-resolve.cjs +22 -2
  187. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  188. package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
  189. package/dist/components/json-schema-form-resolve.js +22 -2
  190. package/dist/components/json-schema-form-resolve.js.map +1 -1
  191. package/dist/components/json-schema-form-types.d.ts +5 -1
  192. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  193. package/dist/components/json-schema-form-union-model.cjs +46 -0
  194. package/dist/components/json-schema-form-union-model.cjs.map +1 -0
  195. package/dist/components/json-schema-form-union-model.d.ts +6 -0
  196. package/dist/components/json-schema-form-union-model.d.ts.map +1 -0
  197. package/dist/components/json-schema-form-union-model.js +43 -0
  198. package/dist/components/json-schema-form-union-model.js.map +1 -0
  199. package/dist/components/json-schema-form-union.cjs +52 -0
  200. package/dist/components/json-schema-form-union.cjs.map +1 -0
  201. package/dist/components/json-schema-form-union.d.ts +7 -0
  202. package/dist/components/json-schema-form-union.d.ts.map +1 -0
  203. package/dist/components/json-schema-form-union.js +52 -0
  204. package/dist/components/json-schema-form-union.js.map +1 -0
  205. package/dist/components/list-menu-virtual.cjs +5 -0
  206. package/dist/components/list-menu-virtual.cjs.map +1 -0
  207. package/dist/components/list-menu-virtual.d.ts +12 -0
  208. package/dist/components/list-menu-virtual.d.ts.map +1 -0
  209. package/dist/components/list-menu-virtual.js +6 -0
  210. package/dist/components/list-menu-virtual.js.map +1 -0
  211. package/dist/components/local-path.cjs +12 -0
  212. package/dist/components/local-path.cjs.map +1 -0
  213. package/dist/components/local-path.d.ts +14 -0
  214. package/dist/components/local-path.d.ts.map +1 -0
  215. package/dist/components/local-path.js +12 -0
  216. package/dist/components/local-path.js.map +1 -0
  217. package/dist/components/slider-shared.cjs +32 -0
  218. package/dist/components/slider-shared.cjs.map +1 -0
  219. package/dist/components/slider-shared.d.ts +18 -0
  220. package/dist/components/slider-shared.d.ts.map +1 -0
  221. package/dist/components/slider-shared.js +27 -0
  222. package/dist/components/slider-shared.js.map +1 -0
  223. package/dist/components.cjs +8 -0
  224. package/dist/components.d.ts +6 -1
  225. package/dist/components.d.ts.map +1 -1
  226. package/dist/components.js +5 -1
  227. package/dist/connections/ConnectionsPage.cjs +51 -19
  228. package/dist/connections/ConnectionsPage.cjs.map +1 -1
  229. package/dist/connections/ConnectionsPage.d.ts +9 -1
  230. package/dist/connections/ConnectionsPage.d.ts.map +1 -1
  231. package/dist/connections/ConnectionsPage.js +52 -20
  232. package/dist/connections/ConnectionsPage.js.map +1 -1
  233. package/dist/connections/connectionDashboard.cjs +13 -8
  234. package/dist/connections/connectionDashboard.cjs.map +1 -1
  235. package/dist/connections/connectionDashboard.d.ts +8 -3
  236. package/dist/connections/connectionDashboard.d.ts.map +1 -1
  237. package/dist/connections/connectionDashboard.js +14 -9
  238. package/dist/connections/connectionDashboard.js.map +1 -1
  239. package/dist/connections/connectionDashboardModel.cjs.map +1 -1
  240. package/dist/connections/connectionDashboardModel.d.ts +4 -0
  241. package/dist/connections/connectionDashboardModel.d.ts.map +1 -1
  242. package/dist/connections/connectionDashboardModel.js.map +1 -1
  243. package/dist/connections/connectionDashboardRow.cjs +75 -55
  244. package/dist/connections/connectionDashboardRow.cjs.map +1 -1
  245. package/dist/connections/connectionDashboardRow.d.ts +3 -2
  246. package/dist/connections/connectionDashboardRow.d.ts.map +1 -1
  247. package/dist/connections/connectionDashboardRow.js +75 -55
  248. package/dist/connections/connectionDashboardRow.js.map +1 -1
  249. package/dist/connections/connectionNamespaceField.cjs +17 -0
  250. package/dist/connections/connectionNamespaceField.cjs.map +1 -0
  251. package/dist/connections/connectionNamespaceField.d.ts +10 -0
  252. package/dist/connections/connectionNamespaceField.d.ts.map +1 -0
  253. package/dist/connections/connectionNamespaceField.js +17 -0
  254. package/dist/connections/connectionNamespaceField.js.map +1 -0
  255. package/dist/connections/connectionSchemaFormExtensions.cjs +98 -0
  256. package/dist/connections/connectionSchemaFormExtensions.cjs.map +1 -0
  257. package/dist/connections/connectionSchemaFormExtensions.d.ts +41 -0
  258. package/dist/connections/connectionSchemaFormExtensions.d.ts.map +1 -0
  259. package/dist/connections/connectionSchemaFormExtensions.js +96 -0
  260. package/dist/connections/connectionSchemaFormExtensions.js.map +1 -0
  261. package/dist/connections/connectionsPageModel.cjs +11 -0
  262. package/dist/connections/connectionsPageModel.cjs.map +1 -1
  263. package/dist/connections/connectionsPageModel.d.ts +5 -0
  264. package/dist/connections/connectionsPageModel.d.ts.map +1 -1
  265. package/dist/connections/connectionsPageModel.js +11 -1
  266. package/dist/connections/connectionsPageModel.js.map +1 -1
  267. package/dist/connections.cjs +5 -0
  268. package/dist/connections.d.ts +2 -1
  269. package/dist/connections.d.ts.map +1 -1
  270. package/dist/connections.js +3 -2
  271. package/dist/data/AvatarBadge.cjs +3 -3
  272. package/dist/data/AvatarBadge.cjs.map +1 -1
  273. package/dist/data/AvatarBadge.js +3 -3
  274. package/dist/data/AvatarBadge.js.map +1 -1
  275. package/dist/data/CodeDiff.cjs +2 -0
  276. package/dist/data/CodeDiff.cjs.map +1 -1
  277. package/dist/data/CodeDiff.js +2 -0
  278. package/dist/data/CodeDiff.js.map +1 -1
  279. package/dist/data/DataTable.cjs +3 -2
  280. package/dist/data/DataTable.cjs.map +1 -1
  281. package/dist/data/DataTable.d.ts.map +1 -1
  282. package/dist/data/DataTable.js +3 -2
  283. package/dist/data/DataTable.js.map +1 -1
  284. package/dist/data/Gauge.cjs +1 -1
  285. package/dist/data/Gauge.cjs.map +1 -1
  286. package/dist/data/Gauge.js +1 -1
  287. package/dist/data/Gauge.js.map +1 -1
  288. package/dist/data/HighlightedTokens.cjs +2 -10
  289. package/dist/data/HighlightedTokens.cjs.map +1 -1
  290. package/dist/data/HighlightedTokens.d.ts.map +1 -1
  291. package/dist/data/HighlightedTokens.js +1 -9
  292. package/dist/data/HighlightedTokens.js.map +1 -1
  293. package/dist/data/Markdown.cjs +38 -11
  294. package/dist/data/Markdown.cjs.map +1 -1
  295. package/dist/data/Markdown.d.ts +9 -1
  296. package/dist/data/Markdown.d.ts.map +1 -1
  297. package/dist/data/Markdown.js +39 -12
  298. package/dist/data/Markdown.js.map +1 -1
  299. package/dist/data/MultiGaugeBar.cjs +157 -0
  300. package/dist/data/MultiGaugeBar.cjs.map +1 -0
  301. package/dist/data/MultiGaugeBar.d.ts +29 -0
  302. package/dist/data/MultiGaugeBar.d.ts.map +1 -0
  303. package/dist/data/MultiGaugeBar.js +157 -0
  304. package/dist/data/MultiGaugeBar.js.map +1 -0
  305. package/dist/data/OpenInFilesLink.cjs +27 -0
  306. package/dist/data/OpenInFilesLink.cjs.map +1 -0
  307. package/dist/data/OpenInFilesLink.d.ts +15 -0
  308. package/dist/data/OpenInFilesLink.d.ts.map +1 -0
  309. package/dist/data/OpenInFilesLink.js +27 -0
  310. package/dist/data/OpenInFilesLink.js.map +1 -0
  311. package/dist/data/ProgressBar.cjs +5 -3
  312. package/dist/data/ProgressBar.cjs.map +1 -1
  313. package/dist/data/ProgressBar.d.ts +5 -1
  314. package/dist/data/ProgressBar.d.ts.map +1 -1
  315. package/dist/data/ProgressBar.js +5 -3
  316. package/dist/data/ProgressBar.js.map +1 -1
  317. package/dist/data/ProgressBars.cjs +13 -5
  318. package/dist/data/ProgressBars.cjs.map +1 -1
  319. package/dist/data/ProgressBars.d.ts +6 -1
  320. package/dist/data/ProgressBars.d.ts.map +1 -1
  321. package/dist/data/ProgressBars.js +13 -5
  322. package/dist/data/ProgressBars.js.map +1 -1
  323. package/dist/data/Properties.cjs +3 -3
  324. package/dist/data/Properties.cjs.map +1 -1
  325. package/dist/data/Properties.js +3 -3
  326. package/dist/data/Properties.js.map +1 -1
  327. package/dist/data/TaskProgress.cjs +14 -6
  328. package/dist/data/TaskProgress.cjs.map +1 -1
  329. package/dist/data/TaskProgress.d.ts +3 -1
  330. package/dist/data/TaskProgress.d.ts.map +1 -1
  331. package/dist/data/TaskProgress.js +14 -6
  332. package/dist/data/TaskProgress.js.map +1 -1
  333. package/dist/data/TaskPrompts.cjs +96 -0
  334. package/dist/data/TaskPrompts.cjs.map +1 -0
  335. package/dist/data/TaskPrompts.d.ts +6 -0
  336. package/dist/data/TaskPrompts.d.ts.map +1 -0
  337. package/dist/data/TaskPrompts.js +96 -0
  338. package/dist/data/TaskPrompts.js.map +1 -0
  339. package/dist/data/TaskSnapshot.cjs.map +1 -1
  340. package/dist/data/TaskSnapshot.d.ts +3 -0
  341. package/dist/data/TaskSnapshot.d.ts.map +1 -1
  342. package/dist/data/TaskSnapshot.js.map +1 -1
  343. package/dist/data/TimeseriesCoreBars.cjs +7 -3
  344. package/dist/data/TimeseriesCoreBars.cjs.map +1 -1
  345. package/dist/data/TimeseriesCoreBars.d.ts.map +1 -1
  346. package/dist/data/TimeseriesCoreBars.js +8 -4
  347. package/dist/data/TimeseriesCoreBars.js.map +1 -1
  348. package/dist/data/TimeseriesGauge.cjs +12 -5
  349. package/dist/data/TimeseriesGauge.cjs.map +1 -1
  350. package/dist/data/TimeseriesGauge.d.ts.map +1 -1
  351. package/dist/data/TimeseriesGauge.js +13 -6
  352. package/dist/data/TimeseriesGauge.js.map +1 -1
  353. package/dist/data/TimeseriesPanel.cjs +10 -9
  354. package/dist/data/TimeseriesPanel.cjs.map +1 -1
  355. package/dist/data/TimeseriesPanel.d.ts +1 -1
  356. package/dist/data/TimeseriesPanel.d.ts.map +1 -1
  357. package/dist/data/TimeseriesPanel.js +11 -10
  358. package/dist/data/TimeseriesPanel.js.map +1 -1
  359. package/dist/data/TimeseriesPanel.model.cjs +62 -10
  360. package/dist/data/TimeseriesPanel.model.cjs.map +1 -1
  361. package/dist/data/TimeseriesPanel.model.d.ts +40 -1
  362. package/dist/data/TimeseriesPanel.model.d.ts.map +1 -1
  363. package/dist/data/TimeseriesPanel.model.js +62 -11
  364. package/dist/data/TimeseriesPanel.model.js.map +1 -1
  365. package/dist/data/WorkloadCard.cjs +7 -3
  366. package/dist/data/WorkloadCard.cjs.map +1 -1
  367. package/dist/data/WorkloadCard.d.ts +3 -1
  368. package/dist/data/WorkloadCard.d.ts.map +1 -1
  369. package/dist/data/WorkloadCard.js +7 -3
  370. package/dist/data/WorkloadCard.js.map +1 -1
  371. package/dist/data/WorkloadCard.model.cjs.map +1 -1
  372. package/dist/data/WorkloadCard.model.d.ts +2 -0
  373. package/dist/data/WorkloadCard.model.d.ts.map +1 -1
  374. package/dist/data/WorkloadCard.model.js.map +1 -1
  375. package/dist/data/ai/ChatWindow.placement.cjs +2 -1
  376. package/dist/data/ai/ChatWindow.placement.cjs.map +1 -1
  377. package/dist/data/ai/ChatWindow.placement.d.ts +1 -1
  378. package/dist/data/ai/ChatWindow.placement.d.ts.map +1 -1
  379. package/dist/data/ai/ChatWindow.placement.js +2 -1
  380. package/dist/data/ai/ChatWindow.placement.js.map +1 -1
  381. package/dist/data/ai/SpecRuntimeBar.cjs +2 -2
  382. package/dist/data/ai/SpecRuntimeBar.cjs.map +1 -1
  383. package/dist/data/ai/SpecRuntimeBar.d.ts +4 -1
  384. package/dist/data/ai/SpecRuntimeBar.d.ts.map +1 -1
  385. package/dist/data/ai/SpecRuntimeBar.js +2 -2
  386. package/dist/data/ai/SpecRuntimeBar.js.map +1 -1
  387. package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs +1 -1
  388. package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs.map +1 -1
  389. package/dist/data/ai/SpecRuntimeEditor/PromptSection.js +1 -1
  390. package/dist/data/ai/SpecRuntimeEditor/PromptSection.js.map +1 -1
  391. package/dist/data/ai/SpecRuntimeEditor.model.cjs +2 -2
  392. package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -1
  393. package/dist/data/ai/SpecRuntimeEditor.model.d.ts +2 -2
  394. package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -1
  395. package/dist/data/ai/SpecRuntimeEditor.model.js +2 -2
  396. package/dist/data/ai/SpecRuntimeEditor.model.js.map +1 -1
  397. package/dist/data/ai/ThreadPicker.cjs +2 -2
  398. package/dist/data/ai/ThreadPicker.cjs.map +1 -1
  399. package/dist/data/ai/ThreadPicker.js +2 -2
  400. package/dist/data/ai/ThreadPicker.js.map +1 -1
  401. package/dist/data/ai/index.d.ts +2 -0
  402. package/dist/data/ai/index.d.ts.map +1 -1
  403. package/dist/data/ai/use-prompt-run-stream.cjs +126 -0
  404. package/dist/data/ai/use-prompt-run-stream.cjs.map +1 -0
  405. package/dist/data/ai/use-prompt-run-stream.d.ts +52 -0
  406. package/dist/data/ai/use-prompt-run-stream.d.ts.map +1 -0
  407. package/dist/data/ai/use-prompt-run-stream.js +126 -0
  408. package/dist/data/ai/use-prompt-run-stream.js.map +1 -0
  409. package/dist/data/cache-browser/CacheBrowser.cjs +1 -0
  410. package/dist/data/cache-browser/CacheBrowser.cjs.map +1 -1
  411. package/dist/data/cache-browser/CacheBrowser.d.ts.map +1 -1
  412. package/dist/data/cache-browser/CacheBrowser.js +1 -0
  413. package/dist/data/cache-browser/CacheBrowser.js.map +1 -1
  414. package/dist/data/charts/BarChart.cjs +194 -0
  415. package/dist/data/charts/BarChart.cjs.map +1 -0
  416. package/dist/data/charts/BarChart.d.ts +19 -0
  417. package/dist/data/charts/BarChart.d.ts.map +1 -0
  418. package/dist/data/charts/BarChart.js +194 -0
  419. package/dist/data/charts/BarChart.js.map +1 -0
  420. package/dist/data/charts/ChartLegend.cjs +54 -0
  421. package/dist/data/charts/ChartLegend.cjs.map +1 -0
  422. package/dist/data/charts/ChartLegend.d.ts +17 -0
  423. package/dist/data/charts/ChartLegend.d.ts.map +1 -0
  424. package/dist/data/charts/ChartLegend.js +54 -0
  425. package/dist/data/charts/ChartLegend.js.map +1 -0
  426. package/dist/data/charts/Sparkline.cjs +56 -0
  427. package/dist/data/charts/Sparkline.cjs.map +1 -0
  428. package/dist/data/charts/Sparkline.d.ts +15 -0
  429. package/dist/data/charts/Sparkline.d.ts.map +1 -0
  430. package/dist/data/charts/Sparkline.js +56 -0
  431. package/dist/data/charts/Sparkline.js.map +1 -0
  432. package/dist/data/charts/StackedBarChart.cjs +241 -0
  433. package/dist/data/charts/StackedBarChart.cjs.map +1 -0
  434. package/dist/data/charts/StackedBarChart.d.ts +20 -0
  435. package/dist/data/charts/StackedBarChart.d.ts.map +1 -0
  436. package/dist/data/charts/StackedBarChart.js +241 -0
  437. package/dist/data/charts/StackedBarChart.js.map +1 -0
  438. package/dist/data/charts/TrendChart.cjs +157 -0
  439. package/dist/data/charts/TrendChart.cjs.map +1 -0
  440. package/dist/data/charts/TrendChart.d.ts +20 -0
  441. package/dist/data/charts/TrendChart.d.ts.map +1 -0
  442. package/dist/data/charts/TrendChart.js +157 -0
  443. package/dist/data/charts/TrendChart.js.map +1 -0
  444. package/dist/data/charts/chart-marks.cjs +115 -0
  445. package/dist/data/charts/chart-marks.cjs.map +1 -0
  446. package/dist/data/charts/chart-marks.d.ts +39 -0
  447. package/dist/data/charts/chart-marks.d.ts.map +1 -0
  448. package/dist/data/charts/chart-marks.js +112 -0
  449. package/dist/data/charts/chart-marks.js.map +1 -0
  450. package/dist/data/charts/chart-palette.cjs +74 -0
  451. package/dist/data/charts/chart-palette.cjs.map +1 -0
  452. package/dist/data/charts/chart-palette.d.ts +58 -0
  453. package/dist/data/charts/chart-palette.d.ts.map +1 -0
  454. package/dist/data/charts/chart-palette.js +72 -0
  455. package/dist/data/charts/chart-palette.js.map +1 -0
  456. package/dist/data/charts/chart-scale.cjs +115 -0
  457. package/dist/data/charts/chart-scale.cjs.map +1 -0
  458. package/dist/data/charts/chart-scale.d.ts +41 -0
  459. package/dist/data/charts/chart-scale.d.ts.map +1 -0
  460. package/dist/data/charts/chart-scale.js +104 -0
  461. package/dist/data/charts/chart-scale.js.map +1 -0
  462. package/dist/data/charts/chart.test-utils.d.ts +7 -0
  463. package/dist/data/charts/chart.test-utils.d.ts.map +1 -0
  464. package/dist/data/charts/index.d.ts +7 -0
  465. package/dist/data/charts/index.d.ts.map +1 -0
  466. package/dist/data/chat/MessageActions.cjs +1 -1
  467. package/dist/data/chat/MessageActions.cjs.map +1 -1
  468. package/dist/data/chat/MessageActions.js +1 -1
  469. package/dist/data/chat/MessageActions.js.map +1 -1
  470. package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs +1 -1
  471. package/dist/data/diagnostics/DiagnosticsDetailPanel.js +1 -1
  472. package/dist/data/diagnostics/DiagnosticsTree.cjs +1 -1
  473. package/dist/data/diagnostics/DiagnosticsTree.cjs.map +1 -1
  474. package/dist/data/diagnostics/DiagnosticsTree.js +1 -1
  475. package/dist/data/diagnostics/DiagnosticsTree.js.map +1 -1
  476. package/dist/data/diagnostics/FrameSourceWindow.cjs +9 -2
  477. package/dist/data/diagnostics/FrameSourceWindow.cjs.map +1 -1
  478. package/dist/data/diagnostics/FrameSourceWindow.d.ts +1 -1
  479. package/dist/data/diagnostics/FrameSourceWindow.d.ts.map +1 -1
  480. package/dist/data/diagnostics/FrameSourceWindow.js +9 -2
  481. package/dist/data/diagnostics/FrameSourceWindow.js.map +1 -1
  482. package/dist/data/diagnostics/ProblemActions.cjs +37 -0
  483. package/dist/data/diagnostics/ProblemActions.cjs.map +1 -0
  484. package/dist/data/diagnostics/ProblemActions.d.ts +6 -0
  485. package/dist/data/diagnostics/ProblemActions.d.ts.map +1 -0
  486. package/dist/data/diagnostics/ProblemActions.js +37 -0
  487. package/dist/data/diagnostics/ProblemActions.js.map +1 -0
  488. package/dist/data/diagnostics/ProblemFacet.cjs +33 -0
  489. package/dist/data/diagnostics/ProblemFacet.cjs.map +1 -0
  490. package/dist/data/diagnostics/ProblemFacet.d.ts +9 -0
  491. package/dist/data/diagnostics/ProblemFacet.d.ts.map +1 -0
  492. package/dist/data/diagnostics/ProblemFacet.js +33 -0
  493. package/dist/data/diagnostics/ProblemFacet.js.map +1 -0
  494. package/dist/data/diagnostics/ProblemRow.cjs +62 -0
  495. package/dist/data/diagnostics/ProblemRow.cjs.map +1 -0
  496. package/dist/data/diagnostics/ProblemRow.d.ts +14 -0
  497. package/dist/data/diagnostics/ProblemRow.d.ts.map +1 -0
  498. package/dist/data/diagnostics/ProblemRow.js +62 -0
  499. package/dist/data/diagnostics/ProblemRow.js.map +1 -0
  500. package/dist/data/diagnostics/ProblemViewOptions.cjs +18 -0
  501. package/dist/data/diagnostics/ProblemViewOptions.cjs.map +1 -0
  502. package/dist/data/diagnostics/ProblemViewOptions.d.ts +6 -0
  503. package/dist/data/diagnostics/ProblemViewOptions.d.ts.map +1 -0
  504. package/dist/data/diagnostics/ProblemViewOptions.js +18 -0
  505. package/dist/data/diagnostics/ProblemViewOptions.js.map +1 -0
  506. package/dist/data/diagnostics/StackFrameRow.cjs +1 -1
  507. package/dist/data/diagnostics/StackFrameRow.cjs.map +1 -1
  508. package/dist/data/diagnostics/StackFrameRow.js +1 -1
  509. package/dist/data/diagnostics/StackFrameRow.js.map +1 -1
  510. package/dist/data/diagnostics/diagnostic-identity.cjs +14 -0
  511. package/dist/data/diagnostics/diagnostic-identity.cjs.map +1 -0
  512. package/dist/data/diagnostics/diagnostic-identity.d.ts +3 -0
  513. package/dist/data/diagnostics/diagnostic-identity.d.ts.map +1 -0
  514. package/dist/data/diagnostics/diagnostic-identity.js +14 -0
  515. package/dist/data/diagnostics/diagnostic-identity.js.map +1 -0
  516. package/dist/data/diagnostics/use-problem-expansion.cjs +16 -0
  517. package/dist/data/diagnostics/use-problem-expansion.cjs.map +1 -0
  518. package/dist/data/diagnostics/use-problem-expansion.d.ts +3 -0
  519. package/dist/data/diagnostics/use-problem-expansion.d.ts.map +1 -0
  520. package/dist/data/diagnostics/use-problem-expansion.js +16 -0
  521. package/dist/data/diagnostics/use-problem-expansion.js.map +1 -0
  522. package/dist/data/git/GitChangeList.cjs +9 -6
  523. package/dist/data/git/GitChangeList.cjs.map +1 -1
  524. package/dist/data/git/GitChangeList.d.ts +6 -0
  525. package/dist/data/git/GitChangeList.d.ts.map +1 -1
  526. package/dist/data/git/GitChangeList.js +9 -6
  527. package/dist/data/git/GitChangeList.js.map +1 -1
  528. package/dist/data/git/pickers/GitPickersDemo.d.ts.map +1 -1
  529. package/dist/data/git/pickers/ReferencePicker.cjs +1 -0
  530. package/dist/data/git/pickers/ReferencePicker.cjs.map +1 -1
  531. package/dist/data/git/pickers/ReferencePicker.js +1 -0
  532. package/dist/data/git/pickers/ReferencePicker.js.map +1 -1
  533. package/dist/data/lint/LintDetail.cjs +230 -189
  534. package/dist/data/lint/LintDetail.cjs.map +1 -1
  535. package/dist/data/lint/LintDetail.d.ts +25 -3
  536. package/dist/data/lint/LintDetail.d.ts.map +1 -1
  537. package/dist/data/lint/LintDetail.js +231 -192
  538. package/dist/data/lint/LintDetail.js.map +1 -1
  539. package/dist/data/lint/LintFilterBar.cjs +78 -83
  540. package/dist/data/lint/LintFilterBar.cjs.map +1 -1
  541. package/dist/data/lint/LintFilterBar.d.ts +23 -6
  542. package/dist/data/lint/LintFilterBar.d.ts.map +1 -1
  543. package/dist/data/lint/LintFilterBar.js +78 -85
  544. package/dist/data/lint/LintFilterBar.js.map +1 -1
  545. package/dist/data/lint/LintIgnoreMenu.cjs +59 -0
  546. package/dist/data/lint/LintIgnoreMenu.cjs.map +1 -0
  547. package/dist/data/lint/LintIgnoreMenu.d.ts +20 -0
  548. package/dist/data/lint/LintIgnoreMenu.d.ts.map +1 -0
  549. package/dist/data/lint/LintIgnoreMenu.js +58 -0
  550. package/dist/data/lint/LintIgnoreMenu.js.map +1 -0
  551. package/dist/data/lint/LintResults.cjs +59 -14
  552. package/dist/data/lint/LintResults.cjs.map +1 -1
  553. package/dist/data/lint/LintResults.d.ts +25 -1
  554. package/dist/data/lint/LintResults.d.ts.map +1 -1
  555. package/dist/data/lint/LintResults.fixtures.d.ts +19 -0
  556. package/dist/data/lint/LintResults.fixtures.d.ts.map +1 -1
  557. package/dist/data/lint/LintResults.js +60 -15
  558. package/dist/data/lint/LintResults.js.map +1 -1
  559. package/dist/data/lint/LintTable.cjs +156 -0
  560. package/dist/data/lint/LintTable.cjs.map +1 -0
  561. package/dist/data/lint/LintTable.d.ts +13 -0
  562. package/dist/data/lint/LintTable.d.ts.map +1 -0
  563. package/dist/data/lint/LintTable.js +156 -0
  564. package/dist/data/lint/LintTable.js.map +1 -0
  565. package/dist/data/lint/LintTreeNode.cjs +42 -19
  566. package/dist/data/lint/LintTreeNode.cjs.map +1 -1
  567. package/dist/data/lint/LintTreeNode.d.ts +7 -2
  568. package/dist/data/lint/LintTreeNode.d.ts.map +1 -1
  569. package/dist/data/lint/LintTreeNode.js +44 -21
  570. package/dist/data/lint/LintTreeNode.js.map +1 -1
  571. package/dist/data/lint/ViolationSnippet.cjs +113 -0
  572. package/dist/data/lint/ViolationSnippet.cjs.map +1 -0
  573. package/dist/data/lint/ViolationSnippet.d.ts +20 -0
  574. package/dist/data/lint/ViolationSnippet.d.ts.map +1 -0
  575. package/dist/data/lint/ViolationSnippet.js +112 -0
  576. package/dist/data/lint/ViolationSnippet.js.map +1 -0
  577. package/dist/data/lint/actions.cjs +44 -16
  578. package/dist/data/lint/actions.cjs.map +1 -1
  579. package/dist/data/lint/actions.d.ts +7 -3
  580. package/dist/data/lint/actions.d.ts.map +1 -1
  581. package/dist/data/lint/actions.js +44 -16
  582. package/dist/data/lint/actions.js.map +1 -1
  583. package/dist/data/lint/grouping.cjs +105 -8
  584. package/dist/data/lint/grouping.cjs.map +1 -1
  585. package/dist/data/lint/grouping.d.ts +21 -1
  586. package/dist/data/lint/grouping.d.ts.map +1 -1
  587. package/dist/data/lint/grouping.js +105 -10
  588. package/dist/data/lint/grouping.js.map +1 -1
  589. package/dist/data/lint/ignore-menu-items.cjs +18 -0
  590. package/dist/data/lint/ignore-menu-items.cjs.map +1 -0
  591. package/dist/data/lint/ignore-menu-items.d.ts +6 -0
  592. package/dist/data/lint/ignore-menu-items.d.ts.map +1 -0
  593. package/dist/data/lint/ignore-menu-items.js +17 -0
  594. package/dist/data/lint/ignore-menu-items.js.map +1 -0
  595. package/dist/data/lint/index.d.ts +7 -5
  596. package/dist/data/lint/index.d.ts.map +1 -1
  597. package/dist/data/lint/stats.cjs +19 -4
  598. package/dist/data/lint/stats.cjs.map +1 -1
  599. package/dist/data/lint/stats.d.ts +13 -3
  600. package/dist/data/lint/stats.d.ts.map +1 -1
  601. package/dist/data/lint/stats.js +17 -5
  602. package/dist/data/lint/stats.js.map +1 -1
  603. package/dist/data/lint/types.cjs +8 -0
  604. package/dist/data/lint/types.cjs.map +1 -1
  605. package/dist/data/lint/types.d.ts +47 -0
  606. package/dist/data/lint/types.d.ts.map +1 -1
  607. package/dist/data/lint/types.js +8 -1
  608. package/dist/data/lint/types.js.map +1 -1
  609. package/dist/data/lint/violation-menu-items.cjs +31 -0
  610. package/dist/data/lint/violation-menu-items.cjs.map +1 -0
  611. package/dist/data/lint/violation-menu-items.d.ts +12 -0
  612. package/dist/data/lint/violation-menu-items.d.ts.map +1 -0
  613. package/dist/data/lint/violation-menu-items.js +31 -0
  614. package/dist/data/lint/violation-menu-items.js.map +1 -0
  615. package/dist/data/markdown-source-blocks.cjs +38 -0
  616. package/dist/data/markdown-source-blocks.cjs.map +1 -0
  617. package/dist/data/markdown-source-blocks.d.ts +32 -0
  618. package/dist/data/markdown-source-blocks.d.ts.map +1 -0
  619. package/dist/data/markdown-source-blocks.js +35 -0
  620. package/dist/data/markdown-source-blocks.js.map +1 -0
  621. package/dist/data/test-runner/FilterFacet.cjs +52 -0
  622. package/dist/data/test-runner/FilterFacet.cjs.map +1 -0
  623. package/dist/data/test-runner/FilterFacet.d.ts +13 -0
  624. package/dist/data/test-runner/FilterFacet.d.ts.map +1 -0
  625. package/dist/data/test-runner/FilterFacet.js +52 -0
  626. package/dist/data/test-runner/FilterFacet.js.map +1 -0
  627. package/dist/data/test-runner/MatrixMarks.cjs +19 -29
  628. package/dist/data/test-runner/MatrixMarks.cjs.map +1 -1
  629. package/dist/data/test-runner/MatrixMarks.d.ts +4 -4
  630. package/dist/data/test-runner/MatrixMarks.d.ts.map +1 -1
  631. package/dist/data/test-runner/MatrixMarks.js +19 -29
  632. package/dist/data/test-runner/MatrixMarks.js.map +1 -1
  633. package/dist/data/test-runner/TestAttemptDetail.cjs +1 -1
  634. package/dist/data/test-runner/TestAttemptDetail.js +1 -1
  635. package/dist/data/test-runner/TestDetailPanel.cjs +11 -0
  636. package/dist/data/test-runner/TestDetailPanel.cjs.map +1 -1
  637. package/dist/data/test-runner/TestDetailPanel.d.ts.map +1 -1
  638. package/dist/data/test-runner/TestDetailPanel.js +11 -0
  639. package/dist/data/test-runner/TestDetailPanel.js.map +1 -1
  640. package/dist/data/test-runner/TestFilterBar.cjs +3 -44
  641. package/dist/data/test-runner/TestFilterBar.cjs.map +1 -1
  642. package/dist/data/test-runner/TestFilterBar.d.ts.map +1 -1
  643. package/dist/data/test-runner/TestFilterBar.js +3 -44
  644. package/dist/data/test-runner/TestFilterBar.js.map +1 -1
  645. package/dist/data/test-runner/TestRunner.cjs +3 -1
  646. package/dist/data/test-runner/TestRunner.cjs.map +1 -1
  647. package/dist/data/test-runner/TestRunner.d.ts +7 -1
  648. package/dist/data/test-runner/TestRunner.d.ts.map +1 -1
  649. package/dist/data/test-runner/TestRunner.js +3 -1
  650. package/dist/data/test-runner/TestRunner.js.map +1 -1
  651. package/dist/data/test-runner/context.cjs.map +1 -1
  652. package/dist/data/test-runner/context.d.ts +3 -0
  653. package/dist/data/test-runner/context.d.ts.map +1 -1
  654. package/dist/data/test-runner/context.js.map +1 -1
  655. package/dist/data/test-runner/types.d.ts +2 -0
  656. package/dist/data/test-runner/types.d.ts.map +1 -1
  657. package/dist/data/timeseries-query.cjs +98 -2
  658. package/dist/data/timeseries-query.cjs.map +1 -1
  659. package/dist/data/timeseries-query.d.ts +31 -5
  660. package/dist/data/timeseries-query.d.ts.map +1 -1
  661. package/dist/data/timeseries-query.js +98 -3
  662. package/dist/data/timeseries-query.js.map +1 -1
  663. package/dist/data/timeseries-stream-provider.cjs +38 -0
  664. package/dist/data/timeseries-stream-provider.cjs.map +1 -0
  665. package/dist/data/timeseries-stream-provider.d.ts +26 -0
  666. package/dist/data/timeseries-stream-provider.d.ts.map +1 -0
  667. package/dist/data/timeseries-stream-provider.js +38 -0
  668. package/dist/data/timeseries-stream-provider.js.map +1 -0
  669. package/dist/data/timeseries-stream.cjs +304 -0
  670. package/dist/data/timeseries-stream.cjs.map +1 -0
  671. package/dist/data/timeseries-stream.d.ts +81 -0
  672. package/dist/data/timeseries-stream.d.ts.map +1 -0
  673. package/dist/data/timeseries-stream.fixtures.d.ts +36 -0
  674. package/dist/data/timeseries-stream.fixtures.d.ts.map +1 -0
  675. package/dist/data/timeseries-stream.js +296 -0
  676. package/dist/data/timeseries-stream.js.map +1 -0
  677. package/dist/data/token-style.cjs +13 -0
  678. package/dist/data/token-style.cjs.map +1 -0
  679. package/dist/data/token-style.d.ts +4 -0
  680. package/dist/data/token-style.d.ts.map +1 -0
  681. package/dist/data/token-style.js +13 -0
  682. package/dist/data/token-style.js.map +1 -0
  683. package/dist/data/traces/ProcessTraceDetail.cjs +1 -1
  684. package/dist/data/traces/ProcessTraceDetail.js +1 -1
  685. package/dist/data/traces/index.d.ts +1 -1
  686. package/dist/data/traces/index.d.ts.map +1 -1
  687. package/dist/data/use-data-table-virtual.d.ts +1 -1
  688. package/dist/data/version-info.cjs +3 -3
  689. package/dist/data/version-info.js +3 -3
  690. package/dist/data/workload-panel/MemoryStack.cjs +49 -0
  691. package/dist/data/workload-panel/MemoryStack.cjs.map +1 -0
  692. package/dist/data/workload-panel/MemoryStack.d.ts +11 -0
  693. package/dist/data/workload-panel/MemoryStack.d.ts.map +1 -0
  694. package/dist/data/workload-panel/MemoryStack.js +48 -0
  695. package/dist/data/workload-panel/MemoryStack.js.map +1 -0
  696. package/dist/data/workload-panel/Metrics.cjs +197 -0
  697. package/dist/data/workload-panel/Metrics.cjs.map +1 -0
  698. package/dist/data/workload-panel/Metrics.d.ts +11 -0
  699. package/dist/data/workload-panel/Metrics.d.ts.map +1 -0
  700. package/dist/data/workload-panel/Metrics.js +196 -0
  701. package/dist/data/workload-panel/Metrics.js.map +1 -0
  702. package/dist/data/workload-panel/WorkloadPanel.cjs +66 -0
  703. package/dist/data/workload-panel/WorkloadPanel.cjs.map +1 -0
  704. package/dist/data/workload-panel/WorkloadPanel.d.ts +3 -0
  705. package/dist/data/workload-panel/WorkloadPanel.d.ts.map +1 -0
  706. package/dist/data/workload-panel/WorkloadPanel.js +66 -0
  707. package/dist/data/workload-panel/WorkloadPanel.js.map +1 -0
  708. package/dist/data/workload-panel/fixtures.d.ts +60 -0
  709. package/dist/data/workload-panel/fixtures.d.ts.map +1 -0
  710. package/dist/data/workload-panel/model.cjs +137 -0
  711. package/dist/data/workload-panel/model.cjs.map +1 -0
  712. package/dist/data/workload-panel/model.d.ts +53 -0
  713. package/dist/data/workload-panel/model.d.ts.map +1 -0
  714. package/dist/data/workload-panel/model.js +133 -0
  715. package/dist/data/workload-panel/model.js.map +1 -0
  716. package/dist/data/workload-panel/types.d.ts +56 -0
  717. package/dist/data/workload-panel/types.d.ts.map +1 -0
  718. package/dist/data.cjs +57 -6
  719. package/dist/data.d.ts +9 -1
  720. package/dist/data.d.ts.map +1 -1
  721. package/dist/data.js +27 -10
  722. package/dist/file-findings/AnnotatedCode.cjs +243 -0
  723. package/dist/file-findings/AnnotatedCode.cjs.map +1 -0
  724. package/dist/file-findings/AnnotatedCode.d.ts +30 -0
  725. package/dist/file-findings/AnnotatedCode.d.ts.map +1 -0
  726. package/dist/file-findings/AnnotatedCode.js +243 -0
  727. package/dist/file-findings/AnnotatedCode.js.map +1 -0
  728. package/dist/file-findings/FileFindingsView.cjs +213 -0
  729. package/dist/file-findings/FileFindingsView.cjs.map +1 -0
  730. package/dist/file-findings/FileFindingsView.d.ts +35 -0
  731. package/dist/file-findings/FileFindingsView.d.ts.map +1 -0
  732. package/dist/file-findings/FileFindingsView.js +213 -0
  733. package/dist/file-findings/FileFindingsView.js.map +1 -0
  734. package/dist/file-findings/LazyAnnotatedCode.cjs +22 -0
  735. package/dist/file-findings/LazyAnnotatedCode.cjs.map +1 -0
  736. package/dist/file-findings/LazyAnnotatedCode.d.ts +5 -0
  737. package/dist/file-findings/LazyAnnotatedCode.d.ts.map +1 -0
  738. package/dist/file-findings/LazyAnnotatedCode.js +22 -0
  739. package/dist/file-findings/LazyAnnotatedCode.js.map +1 -0
  740. package/dist/file-findings/adapters.cjs +155 -0
  741. package/dist/file-findings/adapters.cjs.map +1 -0
  742. package/dist/file-findings/adapters.d.ts +24 -0
  743. package/dist/file-findings/adapters.d.ts.map +1 -0
  744. package/dist/file-findings/adapters.js +153 -0
  745. package/dist/file-findings/adapters.js.map +1 -0
  746. package/dist/file-findings/file-review/CommentDraft.cjs +97 -0
  747. package/dist/file-findings/file-review/CommentDraft.cjs.map +1 -0
  748. package/dist/file-findings/file-review/CommentDraft.d.ts +25 -0
  749. package/dist/file-findings/file-review/CommentDraft.d.ts.map +1 -0
  750. package/dist/file-findings/file-review/CommentDraft.js +97 -0
  751. package/dist/file-findings/file-review/CommentDraft.js.map +1 -0
  752. package/dist/file-findings/file-review/FileReview.cjs +863 -0
  753. package/dist/file-findings/file-review/FileReview.cjs.map +1 -0
  754. package/dist/file-findings/file-review/FileReview.d.ts +79 -0
  755. package/dist/file-findings/file-review/FileReview.d.ts.map +1 -0
  756. package/dist/file-findings/file-review/FileReview.fixtures.d.ts +25 -0
  757. package/dist/file-findings/file-review/FileReview.fixtures.d.ts.map +1 -0
  758. package/dist/file-findings/file-review/FileReview.js +863 -0
  759. package/dist/file-findings/file-review/FileReview.js.map +1 -0
  760. package/dist/file-findings/file-review/InlineAuthors.cjs +77 -0
  761. package/dist/file-findings/file-review/InlineAuthors.cjs.map +1 -0
  762. package/dist/file-findings/file-review/InlineAuthors.d.ts +9 -0
  763. package/dist/file-findings/file-review/InlineAuthors.d.ts.map +1 -0
  764. package/dist/file-findings/file-review/InlineAuthors.js +77 -0
  765. package/dist/file-findings/file-review/InlineAuthors.js.map +1 -0
  766. package/dist/file-findings/file-review/InlineThread.cjs +77 -0
  767. package/dist/file-findings/file-review/InlineThread.cjs.map +1 -0
  768. package/dist/file-findings/file-review/InlineThread.d.ts +27 -0
  769. package/dist/file-findings/file-review/InlineThread.d.ts.map +1 -0
  770. package/dist/file-findings/file-review/InlineThread.js +77 -0
  771. package/dist/file-findings/file-review/InlineThread.js.map +1 -0
  772. package/dist/file-findings/file-review/ProblemsList.cjs +164 -0
  773. package/dist/file-findings/file-review/ProblemsList.cjs.map +1 -0
  774. package/dist/file-findings/file-review/ProblemsList.d.ts +15 -0
  775. package/dist/file-findings/file-review/ProblemsList.d.ts.map +1 -0
  776. package/dist/file-findings/file-review/ProblemsList.js +164 -0
  777. package/dist/file-findings/file-review/ProblemsList.js.map +1 -0
  778. package/dist/file-findings/file-review/SourceView.cjs +179 -0
  779. package/dist/file-findings/file-review/SourceView.cjs.map +1 -0
  780. package/dist/file-findings/file-review/SourceView.d.ts +29 -0
  781. package/dist/file-findings/file-review/SourceView.d.ts.map +1 -0
  782. package/dist/file-findings/file-review/SourceView.js +179 -0
  783. package/dist/file-findings/file-review/SourceView.js.map +1 -0
  784. package/dist/file-findings/file-review/blame.cjs +35 -0
  785. package/dist/file-findings/file-review/blame.cjs.map +1 -0
  786. package/dist/file-findings/file-review/blame.d.ts +28 -0
  787. package/dist/file-findings/file-review/blame.d.ts.map +1 -0
  788. package/dist/file-findings/file-review/blame.js +33 -0
  789. package/dist/file-findings/file-review/blame.js.map +1 -0
  790. package/dist/file-findings/file-review/geometry.cjs +101 -0
  791. package/dist/file-findings/file-review/geometry.cjs.map +1 -0
  792. package/dist/file-findings/file-review/geometry.d.ts +45 -0
  793. package/dist/file-findings/file-review/geometry.d.ts.map +1 -0
  794. package/dist/file-findings/file-review/geometry.js +98 -0
  795. package/dist/file-findings/file-review/geometry.js.map +1 -0
  796. package/dist/file-findings/file-review/hooks.cjs +101 -0
  797. package/dist/file-findings/file-review/hooks.cjs.map +1 -0
  798. package/dist/file-findings/file-review/hooks.d.ts +22 -0
  799. package/dist/file-findings/file-review/hooks.d.ts.map +1 -0
  800. package/dist/file-findings/file-review/hooks.js +99 -0
  801. package/dist/file-findings/file-review/hooks.js.map +1 -0
  802. package/dist/file-findings/file-review/marks.cjs +52 -0
  803. package/dist/file-findings/file-review/marks.cjs.map +1 -0
  804. package/dist/file-findings/file-review/marks.d.ts +23 -0
  805. package/dist/file-findings/file-review/marks.d.ts.map +1 -0
  806. package/dist/file-findings/file-review/marks.js +47 -0
  807. package/dist/file-findings/file-review/marks.js.map +1 -0
  808. package/dist/file-findings/file-review/problem-filters.cjs +14 -0
  809. package/dist/file-findings/file-review/problem-filters.cjs.map +1 -0
  810. package/dist/file-findings/file-review/problem-filters.d.ts +10 -0
  811. package/dist/file-findings/file-review/problem-filters.d.ts.map +1 -0
  812. package/dist/file-findings/file-review/problem-filters.js +13 -0
  813. package/dist/file-findings/file-review/problem-filters.js.map +1 -0
  814. package/dist/file-findings/file-review/quote-anchor.cjs +234 -0
  815. package/dist/file-findings/file-review/quote-anchor.cjs.map +1 -0
  816. package/dist/file-findings/file-review/quote-anchor.d.ts +54 -0
  817. package/dist/file-findings/file-review/quote-anchor.d.ts.map +1 -0
  818. package/dist/file-findings/file-review/quote-anchor.js +226 -0
  819. package/dist/file-findings/file-review/quote-anchor.js.map +1 -0
  820. package/dist/file-findings/file-review/source-anchor.cjs +104 -0
  821. package/dist/file-findings/file-review/source-anchor.cjs.map +1 -0
  822. package/dist/file-findings/file-review/source-anchor.d.ts +27 -0
  823. package/dist/file-findings/file-review/source-anchor.d.ts.map +1 -0
  824. package/dist/file-findings/file-review/source-anchor.js +99 -0
  825. package/dist/file-findings/file-review/source-anchor.js.map +1 -0
  826. package/dist/file-findings/file-review/source-marks.cjs +71 -0
  827. package/dist/file-findings/file-review/source-marks.cjs.map +1 -0
  828. package/dist/file-findings/file-review/source-marks.d.ts +27 -0
  829. package/dist/file-findings/file-review/source-marks.d.ts.map +1 -0
  830. package/dist/file-findings/file-review/source-marks.js +68 -0
  831. package/dist/file-findings/file-review/source-marks.js.map +1 -0
  832. package/dist/file-findings/findings-comments.cjs +136 -0
  833. package/dist/file-findings/findings-comments.cjs.map +1 -0
  834. package/dist/file-findings/findings-comments.d.ts +28 -0
  835. package/dist/file-findings/findings-comments.d.ts.map +1 -0
  836. package/dist/file-findings/findings-comments.js +131 -0
  837. package/dist/file-findings/findings-comments.js.map +1 -0
  838. package/dist/file-findings/findings-languages.cjs +53 -0
  839. package/dist/file-findings/findings-languages.cjs.map +1 -0
  840. package/dist/file-findings/findings-languages.d.ts +11 -0
  841. package/dist/file-findings/findings-languages.d.ts.map +1 -0
  842. package/dist/file-findings/findings-languages.js +53 -0
  843. package/dist/file-findings/findings-languages.js.map +1 -0
  844. package/dist/file-findings/mdx-source.cjs +48 -0
  845. package/dist/file-findings/mdx-source.cjs.map +1 -0
  846. package/dist/file-findings/mdx-source.d.ts +7 -0
  847. package/dist/file-findings/mdx-source.d.ts.map +1 -0
  848. package/dist/file-findings/mdx-source.js +48 -0
  849. package/dist/file-findings/mdx-source.js.map +1 -0
  850. package/dist/file-findings/monaco-language.cjs +73 -0
  851. package/dist/file-findings/monaco-language.cjs.map +1 -0
  852. package/dist/file-findings/monaco-language.d.ts +11 -0
  853. package/dist/file-findings/monaco-language.d.ts.map +1 -0
  854. package/dist/file-findings/monaco-language.js +72 -0
  855. package/dist/file-findings/monaco-language.js.map +1 -0
  856. package/dist/file-findings/severity-counts.cjs +20 -0
  857. package/dist/file-findings/severity-counts.cjs.map +1 -0
  858. package/dist/file-findings/severity-counts.d.ts +5 -0
  859. package/dist/file-findings/severity-counts.d.ts.map +1 -0
  860. package/dist/file-findings/severity-counts.js +19 -0
  861. package/dist/file-findings/severity-counts.js.map +1 -0
  862. package/dist/file-findings/types.cjs +12 -0
  863. package/dist/file-findings/types.cjs.map +1 -0
  864. package/dist/file-findings/types.d.ts +43 -0
  865. package/dist/file-findings/types.d.ts.map +1 -0
  866. package/dist/file-findings/types.js +11 -0
  867. package/dist/file-findings/types.js.map +1 -0
  868. package/dist/file-findings.cjs +47 -0
  869. package/dist/file-findings.d.ts +15 -0
  870. package/dist/file-findings.d.ts.map +1 -0
  871. package/dist/file-findings.js +15 -0
  872. package/dist/hooks/event-hub.cjs +22 -8
  873. package/dist/hooks/event-hub.cjs.map +1 -1
  874. package/dist/hooks/event-hub.d.ts.map +1 -1
  875. package/dist/hooks/event-hub.js +22 -8
  876. package/dist/hooks/event-hub.js.map +1 -1
  877. package/dist/icons/components/UiBrowser.cjs +51 -0
  878. package/dist/icons/components/UiBrowser.cjs.map +1 -0
  879. package/dist/icons/components/UiBrowser.d.ts +15 -0
  880. package/dist/icons/components/UiBrowser.d.ts.map +1 -0
  881. package/dist/icons/components/UiBrowser.js +48 -0
  882. package/dist/icons/components/UiBrowser.js.map +1 -0
  883. package/dist/icons/components/UiCreditCard.cjs +51 -0
  884. package/dist/icons/components/UiCreditCard.cjs.map +1 -0
  885. package/dist/icons/components/UiCreditCard.d.ts +15 -0
  886. package/dist/icons/components/UiCreditCard.d.ts.map +1 -0
  887. package/dist/icons/components/UiCreditCard.js +48 -0
  888. package/dist/icons/components/UiCreditCard.js.map +1 -0
  889. package/dist/icons/components/UiShoppingCart.cjs +51 -0
  890. package/dist/icons/components/UiShoppingCart.cjs.map +1 -0
  891. package/dist/icons/components/UiShoppingCart.d.ts +15 -0
  892. package/dist/icons/components/UiShoppingCart.d.ts.map +1 -0
  893. package/dist/icons/components/UiShoppingCart.js +48 -0
  894. package/dist/icons/components/UiShoppingCart.js.map +1 -0
  895. package/dist/icons/index.d.ts +6 -0
  896. package/dist/icons/index.d.ts.map +1 -1
  897. package/dist/icons/registry.cjs +6 -0
  898. package/dist/icons/registry.cjs.map +1 -1
  899. package/dist/icons/registry.d.ts.map +1 -1
  900. package/dist/icons/registry.js +6 -0
  901. package/dist/icons/registry.js.map +1 -1
  902. package/dist/icons.cjs +9 -0
  903. package/dist/icons.js +4 -1
  904. package/dist/index.cjs +75 -7
  905. package/dist/index.d.ts +1 -0
  906. package/dist/index.d.ts.map +1 -1
  907. package/dist/index.js +35 -12
  908. package/dist/layout/AppShell.cjs +37 -21
  909. package/dist/layout/AppShell.cjs.map +1 -1
  910. package/dist/layout/AppShell.d.ts +13 -2
  911. package/dist/layout/AppShell.d.ts.map +1 -1
  912. package/dist/layout/AppShell.js +37 -21
  913. package/dist/layout/AppShell.js.map +1 -1
  914. package/dist/layout/AppShell.nav.cjs +7 -6
  915. package/dist/layout/AppShell.nav.cjs.map +1 -1
  916. package/dist/layout/AppShell.nav.d.ts.map +1 -1
  917. package/dist/layout/AppShell.nav.js +7 -6
  918. package/dist/layout/AppShell.nav.js.map +1 -1
  919. package/dist/layout/SplitPane.cjs +16 -6
  920. package/dist/layout/SplitPane.cjs.map +1 -1
  921. package/dist/layout/SplitPane.d.ts +12 -2
  922. package/dist/layout/SplitPane.d.ts.map +1 -1
  923. package/dist/layout/SplitPane.js +16 -6
  924. package/dist/layout/SplitPane.js.map +1 -1
  925. package/dist/layout/Workspace.cjs +37 -33
  926. package/dist/layout/Workspace.cjs.map +1 -1
  927. package/dist/layout/Workspace.d.ts.map +1 -1
  928. package/dist/layout/Workspace.js +37 -33
  929. package/dist/layout/Workspace.js.map +1 -1
  930. package/dist/layout/Workspace.regions.cjs +3 -3
  931. package/dist/layout/Workspace.regions.cjs.map +1 -1
  932. package/dist/layout/Workspace.regions.js +3 -3
  933. package/dist/layout/Workspace.regions.js.map +1 -1
  934. package/dist/lib/breakpoints.cjs +102 -0
  935. package/dist/lib/breakpoints.cjs.map +1 -0
  936. package/dist/lib/breakpoints.d.ts +36 -0
  937. package/dist/lib/breakpoints.d.ts.map +1 -0
  938. package/dist/lib/breakpoints.js +99 -0
  939. package/dist/lib/breakpoints.js.map +1 -0
  940. package/dist/lib/combobox.cjs +2 -1
  941. package/dist/lib/combobox.cjs.map +1 -1
  942. package/dist/lib/combobox.d.ts +1 -1
  943. package/dist/lib/combobox.d.ts.map +1 -1
  944. package/dist/lib/combobox.js +2 -1
  945. package/dist/lib/combobox.js.map +1 -1
  946. package/dist/lib/path-tree.cjs +21 -0
  947. package/dist/lib/path-tree.cjs.map +1 -1
  948. package/dist/lib/path-tree.d.ts +15 -0
  949. package/dist/lib/path-tree.d.ts.map +1 -1
  950. package/dist/lib/path-tree.js +21 -1
  951. package/dist/lib/path-tree.js.map +1 -1
  952. package/dist/overlay/Modal.cjs +2 -1
  953. package/dist/overlay/Modal.cjs.map +1 -1
  954. package/dist/overlay/Modal.d.ts.map +1 -1
  955. package/dist/overlay/Modal.js +2 -1
  956. package/dist/overlay/Modal.js.map +1 -1
  957. package/dist/overlay/dropdownMenuContext.d.ts +1 -1
  958. package/dist/profiles/editor/profileEditor.cjs +1 -1
  959. package/dist/profiles/editor/profileEditor.cjs.map +1 -1
  960. package/dist/profiles/editor/profileEditor.js +1 -1
  961. package/dist/profiles/editor/profileEditor.js.map +1 -1
  962. package/dist/profiles/editor/profileEditorSections.cjs +2 -2
  963. package/dist/profiles/editor/profileEditorSections.cjs.map +1 -1
  964. package/dist/profiles/editor/profileEditorSections.js +2 -2
  965. package/dist/profiles/editor/profileEditorSections.js.map +1 -1
  966. package/dist/profiles/query/prometheusResults.cjs +24 -36
  967. package/dist/profiles/query/prometheusResults.cjs.map +1 -1
  968. package/dist/profiles/query/prometheusResults.d.ts.map +1 -1
  969. package/dist/profiles/query/prometheusResults.js +24 -36
  970. package/dist/profiles/query/prometheusResults.js.map +1 -1
  971. package/dist/rpc/CommandForm.cjs +1 -1
  972. package/dist/rpc/CommandForm.cjs.map +1 -1
  973. package/dist/rpc/CommandForm.js +1 -1
  974. package/dist/rpc/CommandForm.js.map +1 -1
  975. package/dist/rpc/classify.cjs +1 -1
  976. package/dist/rpc/classify.cjs.map +1 -1
  977. package/dist/rpc/classify.d.ts.map +1 -1
  978. package/dist/rpc/classify.js +1 -1
  979. package/dist/rpc/classify.js.map +1 -1
  980. package/dist/rpc/useOperations.d.ts +24 -24
  981. package/dist/rpc.cjs +0 -2
  982. package/dist/rpc.d.ts +0 -1
  983. package/dist/rpc.d.ts.map +1 -1
  984. package/dist/rpc.js +1 -2
  985. package/dist/styles.css +1 -1
  986. package/dist/utils.cjs +6 -0
  987. package/dist/utils.d.ts +2 -1
  988. package/dist/utils.d.ts.map +1 -1
  989. package/dist/utils.js +3 -2
  990. package/package.json +9 -3
  991. package/schemas/json-schema-form.schema.json +9 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Markdown.js","names":["_Fragment"],"sources":["../../src/data/Markdown.tsx"],"sourcesContent":["import {\n isValidElement,\n useEffect,\n useState,\n type ComponentType,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { ConfirmDialog } from \"../overlay/ConfirmDialog\";\nimport { useRouter } from \"../rpc/router\";\nimport { Callout, type CalloutProps } from \"./Callout\";\nimport { CodeBlock } from \"./CodeBlock\";\n\nexport type MarkdownProps = {\n /** Markdown source text. */\n text: string;\n /** Classes applied to the rendered markdown wrapper. */\n className?: string;\n /**\n * Render `<CalloutBox …>` authored inline in the markdown as a\n * {@link Callout}.\n *\n * Off by default. It admits exactly one extra tag with exactly the callout's\n * own attributes — no other markup in `text` becomes live — so it is safe to\n * turn on wherever callouts are wanted.\n */\n callouts?: boolean | undefined;\n};\n\n// Streamdown routes a fenced code block to the `code` override with a `data-block`\n// marker (injected by its default `pre` handler); inline code arrives without it.\ntype MarkdownCodeProps = {\n className?: string;\n children?: ReactNode;\n \"data-block\"?: string;\n};\n\n// Every override also receives the source `node`, which is not a DOM attribute —\n// each one drops it rather than spreading it onto the element. `style` carries\n// the per-column alignment GFM puts on table cells.\ntype MarkdownElementProps = {\n className?: string;\n children?: ReactNode;\n style?: CSSProperties;\n node?: unknown;\n};\n\ntype MarkdownHeadingTag = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\ntype MarkdownHeadingProps = HTMLAttributes<HTMLHeadingElement> & { node?: unknown };\n\nconst headingClasses: Record<MarkdownHeadingTag, string> = {\n h1: \"mt-4 mb-2 text-lg font-semibold\",\n h2: \"mt-3 mb-1.5 text-base font-semibold\",\n h3: \"mt-3 mb-1 text-sm font-semibold\",\n h4: \"mt-2 mb-1 text-sm font-semibold\",\n h5: \"mt-2 mb-1 text-sm font-medium\",\n h6: \"mt-2 mb-1 text-sm font-medium\",\n};\n\nfunction MarkdownHeading({\n as: Tag,\n className,\n children,\n node: _node,\n ...props\n}: MarkdownHeadingProps & { as: MarkdownHeadingTag }) {\n return (\n <Tag\n className={cn(headingClasses[Tag], className)}\n data-streamdown={`heading-${Tag.slice(1)}`}\n {...props}\n >\n {children}\n </Tag>\n );\n}\n\ntype StreamdownComponent = ComponentType<{\n children: string;\n className?: string | undefined;\n parseIncompleteMarkdown?: boolean | undefined;\n // Tag name -> the attribute names it may carry. Streamdown drops every other\n // raw tag, so this is an allowlist rather than raw-HTML passthrough.\n allowedTags?: Record<string, string[]> | undefined;\n components?: {\n h1?: ComponentType<MarkdownHeadingProps>;\n h2?: ComponentType<MarkdownHeadingProps>;\n h3?: ComponentType<MarkdownHeadingProps>;\n h4?: ComponentType<MarkdownHeadingProps>;\n h5?: ComponentType<MarkdownHeadingProps>;\n h6?: ComponentType<MarkdownHeadingProps>;\n a?: ComponentType<MarkdownLinkProps>;\n code?: ComponentType<MarkdownCodeProps>;\n ul?: ComponentType<MarkdownElementProps>;\n ol?: ComponentType<MarkdownElementProps>;\n table?: ComponentType<MarkdownElementProps>;\n thead?: ComponentType<MarkdownElementProps>;\n tbody?: ComponentType<MarkdownElementProps>;\n th?: ComponentType<MarkdownElementProps>;\n td?: ComponentType<MarkdownElementProps>;\n // Streamdown lowercases every tag name, so an authored `<CalloutBox>`\n // arrives here as `calloutbox`.\n calloutbox?: ComponentType<CalloutProps & { node?: unknown }>;\n };\n}>;\n\nlet loadPromise: Promise<StreamdownComponent | null> | null = null;\n\n// Streamdown is an optional peer dependency (like marked/shiki). It is loaded on\n// demand so the core library does not force it on consumers; while it loads (or\n// if it is absent) we fall back to preformatted text.\nfunction loadStreamdown(): Promise<StreamdownComponent | null> {\n if (!loadPromise) {\n loadPromise = import(\"streamdown\")\n .then((m) => m.Streamdown as unknown as StreamdownComponent)\n .catch((err) => {\n console.warn(\"clicky-ui: streamdown not available; rendering markdown as plain text\", err);\n return null;\n });\n }\n return loadPromise;\n}\n\nfunction nodeText(node: ReactNode): string {\n if (typeof node === \"string\") return node;\n if (typeof node === \"number\") return String(node);\n if (Array.isArray(node)) return node.map(nodeText).join(\"\");\n if (isValidElement(node)) return nodeText((node.props as { children?: ReactNode }).children);\n return \"\";\n}\n\n// Render fenced code blocks with the library's theme-aware CodeBlock instead of\n// Streamdown's built-in block, whose Shiki `<pre>` keeps a light background that\n// clashes with the app theme (a white code body inside the dark block chrome).\n// Inline code keeps Streamdown's default inline styling.\nfunction MarkdownCode({ className, children, ...rest }: MarkdownCodeProps) {\n if (!(\"data-block\" in rest)) {\n return (\n <code className={cn(\"rounded bg-muted px-1.5 py-0.5 font-mono text-sm\", className)}>\n {children}\n </code>\n );\n }\n const language = /language-([\\w-]+)/.exec(className ?? \"\")?.[1];\n const source = nodeText(children).replace(/\\n$/, \"\");\n return (\n <CodeBlock\n source={source}\n language={language}\n className=\"not-prose my-4\"\n copyable\n downloadable\n themeToggle\n />\n );\n}\n\n// Streamdown indents nested lists with `[li_&]:pl-6`, an arbitrary-variant class\n// that only compiles if the consumer's Tailwind happens to scan streamdown's\n// dist — otherwise every level renders flush left. Own the list styling here so\n// the marker and the indent ship from this library's own source. Markers sit\n// outside the padding so each level steps in cleanly. Task lists drop both: the\n// checkbox is the marker.\nfunction MarkdownList({ className, children }: MarkdownElementProps) {\n const isTaskList = className?.includes(\"contains-task-list\");\n return (\n <ul\n className={cn(\"whitespace-normal\", isTaskList ? \"list-none pl-0\" : \"list-disc pl-6\", className)}\n >\n {children}\n </ul>\n );\n}\n\nfunction MarkdownOrderedList({ className, children }: MarkdownElementProps) {\n return <ol className={cn(\"list-decimal whitespace-normal pl-6\", className)}>{children}</ol>;\n}\n\n// Streamdown wraps tables in a `bg-sidebar` card with its own copy/download/\n// fullscreen chrome — a dark navy box around a light table under this library's\n// tokens — and puts the header shading behind `bg-muted/80`, an opacity-modifier\n// class the consumer's Tailwind never sees. Own the whole table instead, styled\n// like DataTable: a bordered scroll container so wide tables scroll rather than\n// overflow the page.\nfunction MarkdownTable({ className, children }: MarkdownElementProps) {\n return (\n <div className=\"not-prose my-4 max-w-full overflow-x-auto rounded-md border border-border\">\n <table className={cn(\"w-max min-w-full table-auto text-left text-sm\", className)}>\n {children}\n </table>\n </div>\n );\n}\n\nfunction MarkdownTableHead({ className, children }: MarkdownElementProps) {\n return <thead className={cn(\"border-b border-border bg-muted\", className)}>{children}</thead>;\n}\n\nfunction MarkdownTableBody({ className, children }: MarkdownElementProps) {\n return <tbody className={cn(\"divide-y divide-border\", className)}>{children}</tbody>;\n}\n\n// `style` holds the column alignment from the delimiter row, so it must survive.\nfunction MarkdownTableHeaderCell({ className, style, children }: MarkdownElementProps) {\n return (\n <th\n className={cn(\"whitespace-nowrap px-density-3 py-density-2 font-semibold\", className)}\n style={style}\n >\n {children}\n </th>\n );\n}\n\nfunction MarkdownTableCell({ className, style, children }: MarkdownElementProps) {\n return (\n <td className={cn(\"px-density-3 py-density-2 align-top\", className)} style={style}>\n {children}\n </td>\n );\n}\n\ntype MarkdownLinkProps = MarkdownElementProps & { href?: string; title?: string };\n\n// Streamdown renders every link as a button behind an \"Open external link?\"\n// prompt that always opens a new tab, so an in-app link such as `/connections`\n// left the app. Root-relative links route through the host's RouterAdapter and\n// hash links scroll in place; only external links keep the confirm prompt.\nfunction MarkdownLink({ href, title, className, children }: MarkdownLinkProps) {\n const { renderLink } = useRouter();\n const [confirming, setConfirming] = useState(false);\n const linkClass = cn(\"wrap-anywhere font-medium text-primary underline\", className);\n\n if (!href) return <span className={className}>{children}</span>;\n if (href.startsWith(\"#\")) {\n return (\n <a href={href} title={title} className={linkClass}>\n {children}\n </a>\n );\n }\n if (href.startsWith(\"/\") && !href.startsWith(\"//\")) {\n return renderLink({ to: href, className: linkClass, children, ...(title ? { title } : {}) });\n }\n return (\n <>\n <a\n href={href}\n title={title}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={linkClass}\n onClick={(event) => {\n event.preventDefault();\n setConfirming(true);\n }}\n >\n {children}\n </a>\n <ConfirmDialog\n open={confirming}\n title=\"Open external link?\"\n message={<code className=\"break-all font-mono text-sm\">{href}</code>}\n confirmLabel=\"Open link\"\n onCancel={() => setConfirming(false)}\n onConfirm={() => {\n setConfirming(false);\n window.open(href, \"_blank\", \"noopener,noreferrer\");\n }}\n />\n </>\n );\n}\n\nconst markdownComponents = {\n h1: (props: MarkdownHeadingProps) => <MarkdownHeading as=\"h1\" {...props} />,\n h2: (props: MarkdownHeadingProps) => <MarkdownHeading as=\"h2\" {...props} />,\n h3: (props: MarkdownHeadingProps) => <MarkdownHeading as=\"h3\" {...props} />,\n h4: (props: MarkdownHeadingProps) => <MarkdownHeading as=\"h4\" {...props} />,\n h5: (props: MarkdownHeadingProps) => <MarkdownHeading as=\"h5\" {...props} />,\n h6: (props: MarkdownHeadingProps) => <MarkdownHeading as=\"h6\" {...props} />,\n a: MarkdownLink,\n code: MarkdownCode,\n ul: MarkdownList,\n ol: MarkdownOrderedList,\n table: MarkdownTable,\n thead: MarkdownTableHead,\n tbody: MarkdownTableBody,\n th: MarkdownTableHeaderCell,\n td: MarkdownTableCell,\n};\n\n// The tag arrives lowercased with every attribute as a string, and carries the\n// source hast node too — listing the props drops that rather than spreading it\n// onto the element.\nfunction MarkdownCallout({ badge, children, className, emphasis, icon, label, source, title, variant }: CalloutProps) {\n return (\n <Callout\n badge={badge}\n className={className}\n emphasis={emphasis}\n icon={icon}\n label={label}\n source={source}\n title={title}\n variant={variant}\n >\n {children}\n </Callout>\n );\n}\n\nconst calloutComponents = { ...markdownComponents, calloutbox: MarkdownCallout };\n\nconst CALLOUT_ALLOWED_TAGS = {\n calloutbox: [\"variant\", \"label\", \"badge\", \"source\", \"icon\", \"emphasis\", \"title\"],\n};\n\n/** Renders markdown with Streamdown, which is purpose-built for streaming LLM\n * output (it gracefully handles incomplete markdown mid-stream). Fenced code\n * blocks render via the library CodeBlock, and lists and tables are styled\n * here rather than by Streamdown. Falls back to preformatted text until\n * Streamdown loads or when it is not installed. */\nexport function Markdown({ text, className, callouts = false }: MarkdownProps) {\n const [Streamdown, setStreamdown] = useState<StreamdownComponent | null>(null);\n\n useEffect(() => {\n let cancelled = false;\n loadStreamdown().then((comp) => {\n if (!cancelled) setStreamdown(() => comp);\n });\n return () => {\n cancelled = true;\n };\n }, []);\n\n if (!Streamdown) {\n return <pre className={cn(\"whitespace-pre-wrap text-sm\", className)}>{text}</pre>;\n }\n\n return (\n <div className={cn(\"prose prose-sm max-w-none dark:prose-invert\", className)}>\n <Streamdown\n parseIncompleteMarkdown\n components={callouts ? calloutComponents : markdownComponents}\n allowedTags={callouts ? CALLOUT_ALLOWED_TAGS : undefined}\n >\n {text}\n </Streamdown>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Markdown.js","names":["_Fragment"],"sources":["../../src/data/Markdown.tsx"],"sourcesContent":["import {\n cloneElement,\n isValidElement,\n useEffect,\n useMemo,\n useState,\n type ComponentType,\n type CSSProperties,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { ConfirmDialog } from \"../overlay/ConfirmDialog\";\nimport { useRouter } from \"../rpc/router\";\nimport { Callout, type CalloutProps } from \"./Callout\";\nimport { CodeBlock } from \"./CodeBlock\";\nimport { rehypeSourceBlocks, sourceAttributes, type SourceAttributes } from \"./markdown-source-blocks\";\n\nexport type MarkdownProps = {\n /** Markdown source text. */\n text: string;\n /** Classes applied to the rendered markdown wrapper. */\n className?: string;\n /**\n * Render `<CalloutBox …>` authored inline in the markdown as a\n * {@link Callout}.\n *\n * Off by default. It admits exactly one extra tag with exactly the callout's\n * own attributes — no other markup in `text` becomes live — so it is safe to\n * turn on wherever callouts are wanted.\n */\n callouts?: boolean | undefined;\n /**\n * Stamp each top-level block with `data-source-start` / `data-source-end`, the\n * 1-based line range of `text` it renders, so a host can anchor annotations\n * to source lines. The document renders as one static block (no streaming),\n * which keeps the line numbers absolute; Streamdown's default sanitising\n * stays in place. Cannot be combined with `callouts`.\n */\n sourceBlocks?: boolean | undefined;\n};\n\n// Streamdown routes a fenced code block to the `code` override with a `data-block`\n// marker (injected by its default `pre` handler); inline code arrives without it.\ntype MarkdownCodeProps = SourceAttributes & {\n className?: string;\n children?: ReactNode;\n \"data-block\"?: string;\n};\n\n// Every override also receives the source `node`, which is not a DOM attribute —\n// each one drops it rather than spreading it onto the element. `style` carries\n// the per-column alignment GFM puts on table cells. `data-source-*` is the one\n// pair of extra attributes forwarded, so `sourceBlocks` anchors survive.\ntype MarkdownElementProps = SourceAttributes & {\n className?: string;\n children?: ReactNode;\n style?: CSSProperties;\n node?: unknown;\n};\n\ntype MarkdownHeadingTag = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\ntype MarkdownHeadingProps = HTMLAttributes<HTMLHeadingElement> & { node?: unknown };\n\nconst headingClasses: Record<MarkdownHeadingTag, string> = {\n h1: \"mt-4 mb-2 text-lg font-semibold\",\n h2: \"mt-3 mb-1.5 text-base font-semibold\",\n h3: \"mt-3 mb-1 text-sm font-semibold\",\n h4: \"mt-2 mb-1 text-sm font-semibold\",\n h5: \"mt-2 mb-1 text-sm font-medium\",\n h6: \"mt-2 mb-1 text-sm font-medium\",\n};\n\nfunction MarkdownHeading({\n as: Tag,\n className,\n children,\n node: _node,\n ...props\n}: MarkdownHeadingProps & { as: MarkdownHeadingTag }) {\n return (\n <Tag\n className={cn(headingClasses[Tag], className)}\n data-streamdown={`heading-${Tag.slice(1)}`}\n {...props}\n >\n {children}\n </Tag>\n );\n}\n\ntype StreamdownComponent = ComponentType<{\n children: string;\n className?: string | undefined;\n parseIncompleteMarkdown?: boolean | undefined;\n // \"static\" parses the whole document as one block instead of streaming it in\n // blocks, so hast positions are relative to the document.\n mode?: \"static\" | \"streaming\" | undefined;\n rehypePlugins?: readonly unknown[] | undefined;\n // Tag name -> the attribute names it may carry. Streamdown drops every other\n // raw tag, so this is an allowlist rather than raw-HTML passthrough.\n allowedTags?: Record<string, string[]> | undefined;\n components?: {\n pre?: ComponentType<{ children?: ReactNode; node?: unknown } & SourceAttributes>;\n p?: ComponentType<MarkdownElementProps>;\n blockquote?: ComponentType<MarkdownElementProps>;\n hr?: ComponentType<MarkdownElementProps>;\n h1?: ComponentType<MarkdownHeadingProps>;\n h2?: ComponentType<MarkdownHeadingProps>;\n h3?: ComponentType<MarkdownHeadingProps>;\n h4?: ComponentType<MarkdownHeadingProps>;\n h5?: ComponentType<MarkdownHeadingProps>;\n h6?: ComponentType<MarkdownHeadingProps>;\n a?: ComponentType<MarkdownLinkProps>;\n code?: ComponentType<MarkdownCodeProps>;\n ul?: ComponentType<MarkdownElementProps>;\n ol?: ComponentType<MarkdownElementProps>;\n table?: ComponentType<MarkdownElementProps>;\n thead?: ComponentType<MarkdownElementProps>;\n tbody?: ComponentType<MarkdownElementProps>;\n th?: ComponentType<MarkdownElementProps>;\n td?: ComponentType<MarkdownElementProps>;\n // Streamdown lowercases every tag name, so an authored `<CalloutBox>`\n // arrives here as `calloutbox`.\n calloutbox?: ComponentType<CalloutProps & { node?: unknown }>;\n };\n}>;\n\ntype StreamdownModule = {\n Streamdown: StreamdownComponent;\n /** Streamdown's own raw -> sanitize -> harden rehype chain, in that order. */\n defaultRehypePlugins: Record<string, unknown>;\n};\n\nlet loadPromise: Promise<StreamdownModule | null> | null = null;\n\n// Streamdown is an optional peer dependency (like marked/shiki). It is loaded on\n// demand so the core library does not force it on consumers; while it loads (or\n// if it is absent) we fall back to preformatted text.\nfunction loadStreamdown(): Promise<StreamdownModule | null> {\n if (!loadPromise) {\n loadPromise = import(\"streamdown\")\n .then((m) => ({\n Streamdown: m.Streamdown as unknown as StreamdownComponent,\n defaultRehypePlugins: m.defaultRehypePlugins,\n }))\n .catch((err) => {\n console.warn(\"clicky-ui: streamdown not available; rendering markdown as plain text\", err);\n return null;\n });\n }\n return loadPromise;\n}\n\nfunction nodeText(node: ReactNode): string {\n if (typeof node === \"string\") return node;\n if (typeof node === \"number\") return String(node);\n if (Array.isArray(node)) return node.map(nodeText).join(\"\");\n if (isValidElement(node)) return nodeText((node.props as { children?: ReactNode }).children);\n return \"\";\n}\n\n// Render fenced code blocks with the library's theme-aware CodeBlock instead of\n// Streamdown's built-in block, whose Shiki `<pre>` keeps a light background that\n// clashes with the app theme (a white code body inside the dark block chrome).\n// Inline code keeps Streamdown's default inline styling.\nfunction MarkdownCode({ className, children, ...rest }: MarkdownCodeProps) {\n if (!(\"data-block\" in rest)) {\n return (\n <code className={cn(\"rounded bg-muted px-1.5 py-0.5 font-mono text-sm\", className)}>\n {children}\n </code>\n );\n }\n const language = /language-([\\w-]+)/.exec(className ?? \"\")?.[1];\n const source = nodeText(children).replace(/\\n$/, \"\");\n const block = (\n <CodeBlock\n source={source}\n language={language}\n className=\"not-prose my-4\"\n copyable\n downloadable\n themeToggle\n />\n );\n const anchors = sourceAttributes(rest);\n return Object.keys(anchors).length > 0 ? <div {...anchors}>{block}</div> : block;\n}\n\n// Streamdown's default `pre` unwraps to its `code` child, marking it as a block.\n// The source range is stamped on the `pre`, so it is carried over to that child.\nfunction MarkdownPre({ children, ...props }: { children?: ReactNode; node?: unknown } & SourceAttributes) {\n return isValidElement(children)\n ? cloneElement(children as ReactElement<Record<string, unknown>>, {\n \"data-block\": \"true\",\n ...sourceAttributes(props),\n })\n : children;\n}\n\n// Streamdown indents nested lists with `[li_&]:pl-6`, an arbitrary-variant class\n// that only compiles if the consumer's Tailwind happens to scan streamdown's\n// dist — otherwise every level renders flush left. Own the list styling here so\n// the marker and the indent ship from this library's own source. Markers sit\n// outside the padding so each level steps in cleanly. Task lists drop both: the\n// checkbox is the marker.\nfunction MarkdownList({ className, children, ...props }: MarkdownElementProps) {\n const isTaskList = className?.includes(\"contains-task-list\");\n return (\n <ul\n className={cn(\"whitespace-normal\", isTaskList ? \"list-none pl-0\" : \"list-disc pl-6\", className)}\n {...sourceAttributes(props)}\n >\n {children}\n </ul>\n );\n}\n\nfunction MarkdownOrderedList({ className, children, ...props }: MarkdownElementProps) {\n return (\n <ol className={cn(\"list-decimal whitespace-normal pl-6\", className)} {...sourceAttributes(props)}>\n {children}\n </ol>\n );\n}\n\n// Streamdown wraps tables in a `bg-sidebar` card with its own copy/download/\n// fullscreen chrome — a dark navy box around a light table under this library's\n// tokens — and puts the header shading behind `bg-muted/80`, an opacity-modifier\n// class the consumer's Tailwind never sees. Own the whole table instead, styled\n// like DataTable: a bordered scroll container so wide tables scroll rather than\n// overflow the page.\nfunction MarkdownTable({ className, children, ...props }: MarkdownElementProps) {\n return (\n <div\n className=\"not-prose my-4 max-w-full overflow-x-auto rounded-md border border-border\"\n {...sourceAttributes(props)}\n >\n <table className={cn(\"w-max min-w-full table-auto text-left text-sm\", className)}>\n {children}\n </table>\n </div>\n );\n}\n\nfunction MarkdownTableHead({ className, children }: MarkdownElementProps) {\n return <thead className={cn(\"border-b border-border bg-muted\", className)}>{children}</thead>;\n}\n\nfunction MarkdownTableBody({ className, children }: MarkdownElementProps) {\n return <tbody className={cn(\"divide-y divide-border\", className)}>{children}</tbody>;\n}\n\n// `style` holds the column alignment from the delimiter row, so it must survive.\nfunction MarkdownTableHeaderCell({ className, style, children }: MarkdownElementProps) {\n return (\n <th\n className={cn(\"whitespace-nowrap px-density-3 py-density-2 font-semibold\", className)}\n style={style}\n >\n {children}\n </th>\n );\n}\n\nfunction MarkdownTableCell({ className, style, children }: MarkdownElementProps) {\n return (\n <td className={cn(\"px-density-3 py-density-2 align-top\", className)} style={style}>\n {children}\n </td>\n );\n}\n\ntype MarkdownLinkProps = MarkdownElementProps & { href?: string; title?: string };\n\n// Streamdown renders every link as a button behind an \"Open external link?\"\n// prompt that always opens a new tab, so an in-app link such as `/connections`\n// left the app. Root-relative links route through the host's RouterAdapter and\n// hash links scroll in place; only external links keep the confirm prompt.\nfunction MarkdownLink({ href, title, className, children }: MarkdownLinkProps) {\n const { renderLink } = useRouter();\n const [confirming, setConfirming] = useState(false);\n const linkClass = cn(\"wrap-anywhere font-medium text-primary underline\", className);\n\n if (!href) return <span className={className}>{children}</span>;\n if (href.startsWith(\"#\")) {\n return (\n <a href={href} title={title} className={linkClass}>\n {children}\n </a>\n );\n }\n if (href.startsWith(\"/\") && !href.startsWith(\"//\")) {\n return renderLink({ to: href, className: linkClass, children, ...(title ? { title } : {}) });\n }\n return (\n <>\n <a\n href={href}\n title={title}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={linkClass}\n onClick={(event) => {\n event.preventDefault();\n setConfirming(true);\n }}\n >\n {children}\n </a>\n <ConfirmDialog\n open={confirming}\n title=\"Open external link?\"\n message={<code className=\"break-all font-mono text-sm\">{href}</code>}\n confirmLabel=\"Open link\"\n onCancel={() => setConfirming(false)}\n onConfirm={() => {\n setConfirming(false);\n window.open(href, \"_blank\", \"noopener,noreferrer\");\n }}\n />\n </>\n );\n}\n\nconst markdownComponents = {\n h1: (props: MarkdownHeadingProps) => <MarkdownHeading as=\"h1\" {...props} />,\n h2: (props: MarkdownHeadingProps) => <MarkdownHeading as=\"h2\" {...props} />,\n h3: (props: MarkdownHeadingProps) => <MarkdownHeading as=\"h3\" {...props} />,\n h4: (props: MarkdownHeadingProps) => <MarkdownHeading as=\"h4\" {...props} />,\n h5: (props: MarkdownHeadingProps) => <MarkdownHeading as=\"h5\" {...props} />,\n h6: (props: MarkdownHeadingProps) => <MarkdownHeading as=\"h6\" {...props} />,\n a: MarkdownLink,\n pre: MarkdownPre,\n code: MarkdownCode,\n ul: MarkdownList,\n ol: MarkdownOrderedList,\n table: MarkdownTable,\n thead: MarkdownTableHead,\n tbody: MarkdownTableBody,\n th: MarkdownTableHeaderCell,\n td: MarkdownTableCell,\n};\n\n// The tag arrives lowercased with every attribute as a string, and carries the\n// source hast node too — listing the props drops that rather than spreading it\n// onto the element.\nfunction MarkdownCallout({ badge, children, className, emphasis, icon, label, source, title, variant }: CalloutProps) {\n return (\n <Callout\n badge={badge}\n className={className}\n emphasis={emphasis}\n icon={icon}\n label={label}\n source={source}\n title={title}\n variant={variant}\n >\n {children}\n </Callout>\n );\n}\n\nconst calloutComponents = { ...markdownComponents, calloutbox: MarkdownCallout };\n\nconst CALLOUT_ALLOWED_TAGS = {\n calloutbox: [\"variant\", \"label\", \"badge\", \"source\", \"icon\", \"emphasis\", \"title\"],\n};\n\n/** Renders markdown with Streamdown, which is purpose-built for streaming LLM\n * output (it gracefully handles incomplete markdown mid-stream). Fenced code\n * blocks render via the library CodeBlock, and lists and tables are styled\n * here rather than by Streamdown. Falls back to preformatted text until\n * Streamdown loads or when it is not installed. */\nexport function Markdown({ text, className, callouts = false, sourceBlocks = false }: MarkdownProps) {\n if (sourceBlocks && callouts) {\n throw new Error(\n \"Markdown: sourceBlocks and callouts cannot be combined; callouts replaces the sanitiser schema that sourceBlocks keeps\",\n );\n }\n const [streamdown, setStreamdown] = useState<StreamdownModule | null>(null);\n\n useEffect(() => {\n let cancelled = false;\n loadStreamdown().then((loaded) => {\n if (!cancelled) setStreamdown(loaded);\n });\n return () => {\n cancelled = true;\n };\n }, []);\n\n // Streamdown's own chain (raw, sanitize, harden) followed by the stamping\n // plugin. Appending, rather than replacing, keeps the document sanitised, and\n // running last lets the attributes survive the sanitiser.\n const sourceRehypePlugins = useMemo(\n () => (streamdown ? [...Object.values(streamdown.defaultRehypePlugins), rehypeSourceBlocks] : undefined),\n [streamdown],\n );\n\n if (!streamdown) {\n return <pre className={cn(\"whitespace-pre-wrap text-sm\", className)}>{text}</pre>;\n }\n const { Streamdown } = streamdown;\n\n return (\n <div className={cn(\"prose prose-sm max-w-none dark:prose-invert\", className)}>\n {sourceBlocks ? (\n <Streamdown mode=\"static\" components={markdownComponents} rehypePlugins={sourceRehypePlugins}>\n {text}\n </Streamdown>\n ) : (\n <Streamdown\n parseIncompleteMarkdown\n components={callouts ? calloutComponents : markdownComponents}\n allowedTags={callouts ? CALLOUT_ALLOWED_TAGS : undefined}\n >\n {text}\n </Streamdown>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,157 @@
1
+ const require_utils = require("../lib/utils.cjs");
2
+ let react_jsx_runtime = require("react/jsx-runtime");
3
+ // src/data/MultiGaugeBar.tsx
4
+ var markerTone = {
5
+ neutral: "text-muted-foreground",
6
+ success: "text-[var(--fs-success)]",
7
+ warning: "text-[var(--fs-warning)]",
8
+ danger: "text-[var(--fs-error)]",
9
+ info: "text-[var(--fs-info)]"
10
+ };
11
+ function MultiGaugeBar({ label, icon, average, averageId, max, markers = [], formatValue = String, unit, variant = "default", size = "md", className }) {
12
+ const values = [
13
+ ...markers.map((marker) => marker.value),
14
+ ...average === void 0 ? [] : [average],
15
+ ...max === void 0 ? [] : [max]
16
+ ];
17
+ if (values.some((value) => !Number.isFinite(value) || value < 0)) throw new Error("Gauge observations must be finite and non-negative");
18
+ const ceiling = Math.max(0, ...values);
19
+ const position = (value) => ceiling === 0 ? 0 : value / ceiling * 100;
20
+ const placed = [];
21
+ const layout = markers.map((marker) => {
22
+ const x = position(marker.value);
23
+ let lane = 0;
24
+ while (marker.shape !== "range" && placed.some((item) => item.lane === lane && Math.abs(item.position - x) < 5)) lane++;
25
+ if (marker.shape !== "range") placed.push({
26
+ position: x,
27
+ lane
28
+ });
29
+ return {
30
+ ...marker,
31
+ position: x,
32
+ lane
33
+ };
34
+ });
35
+ const lanes = Math.max(0, ...placed.map((item) => item.lane));
36
+ const usageLabel = average === void 0 ? "Not collected" : formatValue(average);
37
+ const summary = `${label}${unit ? ` (${unit})` : ""}. ${average === void 0 ? "Average not collected" : `Average ${formatValue(average)}`}. ${markers.map((marker) => `${marker.label} ${formatValue(marker.value)}`).join(". ")}. Scale 0 to ${formatValue(ceiling)}`;
38
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
39
+ className: require_utils.cn("min-w-0 w-full text-sm tabular-nums", variant === "default" && "rounded-xl border border-border bg-card p-4", className),
40
+ role: "img",
41
+ "aria-label": summary,
42
+ title: variant === "cell" ? summary : void 0,
43
+ children: [
44
+ variant === "default" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
45
+ className: "flex items-center gap-1.5 font-medium text-foreground",
46
+ children: [icon, label]
47
+ }),
48
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
49
+ className: require_utils.cn("flex items-start gap-3", variant === "default" ? "mt-3" : "py-1"),
50
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
51
+ className: "relative mx-1 min-w-0 flex-1",
52
+ style: { paddingTop: `${8 + lanes * 8}px` },
53
+ children: [
54
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
55
+ "data-gauge-track": "",
56
+ className: require_utils.cn("relative overflow-hidden bg-muted", size === "sm" ? "h-2 rounded-sm" : "h-6 rounded-md"),
57
+ children: [size === "md" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
58
+ id: averageId,
59
+ "data-gauge-usage": "",
60
+ className: "relative block truncate px-2 text-xs font-medium leading-6 text-foreground",
61
+ children: usageLabel
62
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
63
+ "data-gauge-fill": "",
64
+ ...size === "sm" && averageId ? { id: averageId } : {},
65
+ className: require_utils.cn("absolute inset-y-0 left-0 overflow-hidden bg-[var(--fs-success-500)]", size === "sm" ? "rounded-sm" : "rounded-md"),
66
+ style: { width: `${average === void 0 ? 0 : position(average)}%` },
67
+ children: size === "md" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
68
+ "aria-hidden": "true",
69
+ className: "block whitespace-nowrap px-2 text-xs font-medium leading-6 text-white",
70
+ children: usageLabel
71
+ })
72
+ })]
73
+ }),
74
+ [...layout].sort((a, b) => b.lane - a.lane).map((marker, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
75
+ "data-gauge-marker": marker.label,
76
+ "data-gauge-shape": marker.shape ?? "pointer",
77
+ id: marker.id,
78
+ title: `${marker.label}: ${formatValue(marker.value)}`,
79
+ className: require_utils.cn("absolute", markerTone[marker.tone ?? "neutral"], marker.shape === "range" ? require_utils.cn("border-dashed border-current", size === "sm" ? "h-2 rounded-sm border" : "h-6 rounded-md border-2") : "w-2.5 -translate-x-1/2"),
80
+ style: marker.shape === "range" ? {
81
+ left: "0%",
82
+ width: `${marker.position}%`,
83
+ top: `${8 + lanes * 8}px`
84
+ } : {
85
+ left: `${marker.position}%`,
86
+ top: `${(lanes - marker.lane) * 8}px`,
87
+ height: "8px"
88
+ },
89
+ children: marker.shape !== "range" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
90
+ className: "h-2 w-2.5 fill-current",
91
+ viewBox: "0 0 10 8",
92
+ "aria-hidden": "true",
93
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M0 0H10L5 8Z" })
94
+ })
95
+ }, index)),
96
+ variant === "default" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
97
+ className: "relative mt-3 h-5 text-xs text-muted-foreground",
98
+ children: (ceiling === 0 ? [0] : [
99
+ 0,
100
+ 1,
101
+ 2,
102
+ 3
103
+ ]).map((tick) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
104
+ "data-gauge-tick": "",
105
+ className: "absolute -translate-x-1/2",
106
+ style: { left: `${tick * 25}%` },
107
+ children: formatValue(ceiling / 4 * tick)
108
+ }, tick))
109
+ })
110
+ ]
111
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
112
+ "data-gauge-max": "",
113
+ className: require_utils.cn("shrink-0 text-xs text-muted-foreground", size === "sm" ? "leading-[8px]" : "leading-6"),
114
+ style: { paddingTop: `${8 + lanes * 8}px` },
115
+ children: [formatValue(ceiling), unit ? ` ${unit}` : ""]
116
+ })]
117
+ }),
118
+ variant === "default" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
119
+ className: "mt-3 flex flex-wrap items-center gap-x-4 gap-y-2 text-xs text-muted-foreground",
120
+ children: [average === void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "Avg not collected" }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
121
+ className: "inline-flex items-center gap-1.5",
122
+ children: [
123
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
124
+ className: "h-3 w-1 rounded-full bg-[var(--fs-success-500)]",
125
+ "aria-hidden": "true"
126
+ }),
127
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "Avg" }),
128
+ " ",
129
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
130
+ className: "font-medium text-foreground",
131
+ children: formatValue(average)
132
+ })
133
+ ]
134
+ }), markers.map((marker, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
135
+ className: "inline-flex items-center gap-1.5",
136
+ children: [
137
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
138
+ className: require_utils.cn("h-2 w-2.5 fill-current", markerTone[marker.tone ?? "neutral"]),
139
+ viewBox: "0 0 10 8",
140
+ "aria-hidden": "true",
141
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M0 0H10L5 8Z" })
142
+ }),
143
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: marker.label }),
144
+ " ",
145
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
146
+ className: "font-medium text-foreground",
147
+ children: formatValue(marker.value)
148
+ })
149
+ ]
150
+ }, index))]
151
+ })
152
+ ]
153
+ });
154
+ }
155
+ exports.MultiGaugeBar = MultiGaugeBar;
156
+
157
+ //# sourceMappingURL=MultiGaugeBar.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiGaugeBar.cjs","names":["cn"],"sources":["../../src/data/MultiGaugeBar.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../lib/utils\";\nimport type { GaugeTone } from \"./Gauge\";\n\nexport interface GaugeMarker {\n label: string;\n value: number;\n id?: string;\n /** Ranges outline zero to value; pointers mark observations and ceilings. */\n shape?: \"pointer\" | \"range\";\n tone?: GaugeTone;\n}\nexport interface MultiGaugeBarProps {\n label: string;\n icon?: ReactNode;\n average?: number;\n averageId?: string;\n /** Configured ceiling in the same units. Observations above it remain visible. */\n max?: number;\n markers?: readonly GaugeMarker[];\n formatValue?: (value: number) => string;\n /** Shared unit shown beside the scale, e.g. cores or GiB. */\n unit?: string;\n /** Compact inline presentation for table cells, with marker values in the tooltip. */\n variant?: \"default\" | \"cell\";\n /** `sm` draws a thin 8px track without the inline usage text; values stay in the summary. */\n size?: \"md\" | \"sm\";\n className?: string;\n}\n\nconst markerTone: Record<GaugeTone, string> = {\n neutral: \"text-muted-foreground\",\n success: \"text-[var(--fs-success)]\",\n warning: \"text-[var(--fs-warning)]\",\n danger: \"text-[var(--fs-error)]\",\n info: \"text-[var(--fs-info)]\",\n};\n\nexport function MultiGaugeBar({\n label,\n icon,\n average,\n averageId,\n max,\n markers = [],\n formatValue = String,\n unit,\n variant = \"default\",\n size = \"md\",\n className,\n}: MultiGaugeBarProps) {\n const values = [\n ...markers.map((marker) => marker.value),\n ...(average === undefined ? [] : [average]),\n ...(max === undefined ? [] : [max]),\n ];\n if (values.some((value) => !Number.isFinite(value) || value < 0))\n throw new Error(\"Gauge observations must be finite and non-negative\");\n const ceiling = Math.max(0, ...values);\n const position = (value: number) =>\n ceiling === 0 ? 0 : (value / ceiling) * 100;\n const placed: { position: number; lane: number }[] = [];\n const layout = markers.map((marker) => {\n const x = position(marker.value);\n let lane = 0;\n while (\n marker.shape !== \"range\" &&\n placed.some(\n (item) => item.lane === lane && Math.abs(item.position - x) < 5,\n )\n )\n lane++;\n if (marker.shape !== \"range\") placed.push({ position: x, lane });\n return { ...marker, position: x, lane };\n });\n const lanes = Math.max(0, ...placed.map((item) => item.lane));\n const usageLabel =\n average === undefined ? \"Not collected\" : formatValue(average);\n const summary = `${label}${unit ? ` (${unit})` : \"\"}. ${average === undefined ? \"Average not collected\" : `Average ${formatValue(average)}`}. ${markers.map((marker) => `${marker.label} ${formatValue(marker.value)}`).join(\". \")}. Scale 0 to ${formatValue(ceiling)}`;\n return (\n <div\n className={cn(\n \"min-w-0 w-full text-sm tabular-nums\",\n variant === \"default\" && \"rounded-xl border border-border bg-card p-4\",\n className,\n )}\n role=\"img\"\n aria-label={summary}\n title={variant === \"cell\" ? summary : undefined}\n >\n {variant === \"default\" && (\n <div className=\"flex items-center gap-1.5 font-medium text-foreground\">\n {icon}\n {label}\n </div>\n )}\n <div\n className={cn(\n \"flex items-start gap-3\",\n variant === \"default\" ? \"mt-3\" : \"py-1\",\n )}\n >\n <div\n className=\"relative mx-1 min-w-0 flex-1\"\n style={{ paddingTop: `${8 + lanes * 8}px` }}\n >\n <div\n data-gauge-track=\"\"\n className={cn(\n \"relative overflow-hidden bg-muted\",\n size === \"sm\" ? \"h-2 rounded-sm\" : \"h-6 rounded-md\",\n )}\n >\n {size === \"md\" && (\n <span\n id={averageId}\n data-gauge-usage=\"\"\n className=\"relative block truncate px-2 text-xs font-medium leading-6 text-foreground\"\n >\n {usageLabel}\n </span>\n )}\n <div\n data-gauge-fill=\"\"\n {...(size === \"sm\" && averageId ? { id: averageId } : {})}\n className={cn(\n \"absolute inset-y-0 left-0 overflow-hidden bg-[var(--fs-success-500)]\",\n size === \"sm\" ? \"rounded-sm\" : \"rounded-md\",\n )}\n style={{\n width: `${average === undefined ? 0 : position(average)}%`,\n }}\n >\n {size === \"md\" && (\n <span\n aria-hidden=\"true\"\n className=\"block whitespace-nowrap px-2 text-xs font-medium leading-6 text-white\"\n >\n {usageLabel}\n </span>\n )}\n </div>\n </div>\n {[...layout]\n .sort((a, b) => b.lane - a.lane)\n .map((marker, index) => (\n <span\n key={index}\n data-gauge-marker={marker.label}\n data-gauge-shape={marker.shape ?? \"pointer\"}\n id={marker.id}\n title={`${marker.label}: ${formatValue(marker.value)}`}\n className={cn(\n \"absolute\",\n markerTone[marker.tone ?? \"neutral\"],\n marker.shape === \"range\"\n ? cn(\n \"border-dashed border-current\",\n size === \"sm\"\n ? \"h-2 rounded-sm border\"\n : \"h-6 rounded-md border-2\",\n )\n : \"w-2.5 -translate-x-1/2\",\n )}\n style={\n marker.shape === \"range\"\n ? {\n left: \"0%\",\n width: `${marker.position}%`,\n top: `${8 + lanes * 8}px`,\n }\n : {\n left: `${marker.position}%`,\n top: `${(lanes - marker.lane) * 8}px`,\n height: \"8px\",\n }\n }\n >\n {marker.shape !== \"range\" && (\n <svg\n className=\"h-2 w-2.5 fill-current\"\n viewBox=\"0 0 10 8\"\n aria-hidden=\"true\"\n >\n <path d=\"M0 0H10L5 8Z\" />\n </svg>\n )}\n </span>\n ))}\n {variant === \"default\" && (\n <div className=\"relative mt-3 h-5 text-xs text-muted-foreground\">\n {(ceiling === 0 ? [0] : [0, 1, 2, 3]).map((tick) => (\n <span\n key={tick}\n data-gauge-tick=\"\"\n className=\"absolute -translate-x-1/2\"\n style={{ left: `${tick * 25}%` }}\n >\n {formatValue((ceiling / 4) * tick)}\n </span>\n ))}\n </div>\n )}\n </div>\n <span\n data-gauge-max=\"\"\n className={cn(\n \"shrink-0 text-xs text-muted-foreground\",\n size === \"sm\" ? \"leading-[8px]\" : \"leading-6\",\n )}\n style={{ paddingTop: `${8 + lanes * 8}px` }}\n >\n {formatValue(ceiling)}\n {unit ? ` ${unit}` : \"\"}\n </span>\n </div>\n {variant === \"default\" && (\n <div className=\"mt-3 flex flex-wrap items-center gap-x-4 gap-y-2 text-xs text-muted-foreground\">\n {average === undefined ? (\n <span>Avg not collected</span>\n ) : (\n <span className=\"inline-flex items-center gap-1.5\">\n <span\n className=\"h-3 w-1 rounded-full bg-[var(--fs-success-500)]\"\n aria-hidden=\"true\"\n />\n <span>Avg</span>{\" \"}\n <span className=\"font-medium text-foreground\">\n {formatValue(average)}\n </span>\n </span>\n )}\n {markers.map((marker, index) => (\n <span key={index} className=\"inline-flex items-center gap-1.5\">\n <svg\n className={cn(\n \"h-2 w-2.5 fill-current\",\n markerTone[marker.tone ?? \"neutral\"],\n )}\n viewBox=\"0 0 10 8\"\n aria-hidden=\"true\"\n >\n <path d=\"M0 0H10L5 8Z\" />\n </svg>\n <span>{marker.label}</span>{\" \"}\n <span className=\"font-medium text-foreground\">\n {formatValue(marker.value)}\n </span>\n </span>\n ))}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { ReactNode } from 'react';
2
+ import { GaugeTone } from './Gauge.js';
3
+ export interface GaugeMarker {
4
+ label: string;
5
+ value: number;
6
+ id?: string;
7
+ /** Ranges outline zero to value; pointers mark observations and ceilings. */
8
+ shape?: "pointer" | "range";
9
+ tone?: GaugeTone;
10
+ }
11
+ export interface MultiGaugeBarProps {
12
+ label: string;
13
+ icon?: ReactNode;
14
+ average?: number;
15
+ averageId?: string;
16
+ /** Configured ceiling in the same units. Observations above it remain visible. */
17
+ max?: number;
18
+ markers?: readonly GaugeMarker[];
19
+ formatValue?: (value: number) => string;
20
+ /** Shared unit shown beside the scale, e.g. cores or GiB. */
21
+ unit?: string;
22
+ /** Compact inline presentation for table cells, with marker values in the tooltip. */
23
+ variant?: "default" | "cell";
24
+ /** `sm` draws a thin 8px track without the inline usage text; values stay in the summary. */
25
+ size?: "md" | "sm";
26
+ className?: string;
27
+ }
28
+ export declare function MultiGaugeBar({ label, icon, average, averageId, max, markers, formatValue, unit, variant, size, className, }: MultiGaugeBarProps): import("react").JSX.Element;
29
+ //# sourceMappingURL=MultiGaugeBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiGaugeBar.d.ts","sourceRoot":"","sources":["../../src/data/MultiGaugeBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,6EAA6E;IAC7E,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AACD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IACjC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sFAAsF;IACtF,OAAO,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC7B,6FAA6F;IAC7F,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAUD,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,IAAI,EACJ,OAAO,EACP,SAAS,EACT,GAAG,EACH,OAAY,EACZ,WAAoB,EACpB,IAAI,EACJ,OAAmB,EACnB,IAAW,EACX,SAAS,GACV,EAAE,kBAAkB,+BA4MpB"}
@@ -0,0 +1,157 @@
1
+ import { cn } from "../lib/utils.js";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ // src/data/MultiGaugeBar.tsx
4
+ var markerTone = {
5
+ neutral: "text-muted-foreground",
6
+ success: "text-[var(--fs-success)]",
7
+ warning: "text-[var(--fs-warning)]",
8
+ danger: "text-[var(--fs-error)]",
9
+ info: "text-[var(--fs-info)]"
10
+ };
11
+ function MultiGaugeBar({ label, icon, average, averageId, max, markers = [], formatValue = String, unit, variant = "default", size = "md", className }) {
12
+ const values = [
13
+ ...markers.map((marker) => marker.value),
14
+ ...average === void 0 ? [] : [average],
15
+ ...max === void 0 ? [] : [max]
16
+ ];
17
+ if (values.some((value) => !Number.isFinite(value) || value < 0)) throw new Error("Gauge observations must be finite and non-negative");
18
+ const ceiling = Math.max(0, ...values);
19
+ const position = (value) => ceiling === 0 ? 0 : value / ceiling * 100;
20
+ const placed = [];
21
+ const layout = markers.map((marker) => {
22
+ const x = position(marker.value);
23
+ let lane = 0;
24
+ while (marker.shape !== "range" && placed.some((item) => item.lane === lane && Math.abs(item.position - x) < 5)) lane++;
25
+ if (marker.shape !== "range") placed.push({
26
+ position: x,
27
+ lane
28
+ });
29
+ return {
30
+ ...marker,
31
+ position: x,
32
+ lane
33
+ };
34
+ });
35
+ const lanes = Math.max(0, ...placed.map((item) => item.lane));
36
+ const usageLabel = average === void 0 ? "Not collected" : formatValue(average);
37
+ const summary = `${label}${unit ? ` (${unit})` : ""}. ${average === void 0 ? "Average not collected" : `Average ${formatValue(average)}`}. ${markers.map((marker) => `${marker.label} ${formatValue(marker.value)}`).join(". ")}. Scale 0 to ${formatValue(ceiling)}`;
38
+ return /* @__PURE__ */ jsxs("div", {
39
+ className: cn("min-w-0 w-full text-sm tabular-nums", variant === "default" && "rounded-xl border border-border bg-card p-4", className),
40
+ role: "img",
41
+ "aria-label": summary,
42
+ title: variant === "cell" ? summary : void 0,
43
+ children: [
44
+ variant === "default" && /* @__PURE__ */ jsxs("div", {
45
+ className: "flex items-center gap-1.5 font-medium text-foreground",
46
+ children: [icon, label]
47
+ }),
48
+ /* @__PURE__ */ jsxs("div", {
49
+ className: cn("flex items-start gap-3", variant === "default" ? "mt-3" : "py-1"),
50
+ children: [/* @__PURE__ */ jsxs("div", {
51
+ className: "relative mx-1 min-w-0 flex-1",
52
+ style: { paddingTop: `${8 + lanes * 8}px` },
53
+ children: [
54
+ /* @__PURE__ */ jsxs("div", {
55
+ "data-gauge-track": "",
56
+ className: cn("relative overflow-hidden bg-muted", size === "sm" ? "h-2 rounded-sm" : "h-6 rounded-md"),
57
+ children: [size === "md" && /* @__PURE__ */ jsx("span", {
58
+ id: averageId,
59
+ "data-gauge-usage": "",
60
+ className: "relative block truncate px-2 text-xs font-medium leading-6 text-foreground",
61
+ children: usageLabel
62
+ }), /* @__PURE__ */ jsx("div", {
63
+ "data-gauge-fill": "",
64
+ ...size === "sm" && averageId ? { id: averageId } : {},
65
+ className: cn("absolute inset-y-0 left-0 overflow-hidden bg-[var(--fs-success-500)]", size === "sm" ? "rounded-sm" : "rounded-md"),
66
+ style: { width: `${average === void 0 ? 0 : position(average)}%` },
67
+ children: size === "md" && /* @__PURE__ */ jsx("span", {
68
+ "aria-hidden": "true",
69
+ className: "block whitespace-nowrap px-2 text-xs font-medium leading-6 text-white",
70
+ children: usageLabel
71
+ })
72
+ })]
73
+ }),
74
+ [...layout].sort((a, b) => b.lane - a.lane).map((marker, index) => /* @__PURE__ */ jsx("span", {
75
+ "data-gauge-marker": marker.label,
76
+ "data-gauge-shape": marker.shape ?? "pointer",
77
+ id: marker.id,
78
+ title: `${marker.label}: ${formatValue(marker.value)}`,
79
+ className: cn("absolute", markerTone[marker.tone ?? "neutral"], marker.shape === "range" ? cn("border-dashed border-current", size === "sm" ? "h-2 rounded-sm border" : "h-6 rounded-md border-2") : "w-2.5 -translate-x-1/2"),
80
+ style: marker.shape === "range" ? {
81
+ left: "0%",
82
+ width: `${marker.position}%`,
83
+ top: `${8 + lanes * 8}px`
84
+ } : {
85
+ left: `${marker.position}%`,
86
+ top: `${(lanes - marker.lane) * 8}px`,
87
+ height: "8px"
88
+ },
89
+ children: marker.shape !== "range" && /* @__PURE__ */ jsx("svg", {
90
+ className: "h-2 w-2.5 fill-current",
91
+ viewBox: "0 0 10 8",
92
+ "aria-hidden": "true",
93
+ children: /* @__PURE__ */ jsx("path", { d: "M0 0H10L5 8Z" })
94
+ })
95
+ }, index)),
96
+ variant === "default" && /* @__PURE__ */ jsx("div", {
97
+ className: "relative mt-3 h-5 text-xs text-muted-foreground",
98
+ children: (ceiling === 0 ? [0] : [
99
+ 0,
100
+ 1,
101
+ 2,
102
+ 3
103
+ ]).map((tick) => /* @__PURE__ */ jsx("span", {
104
+ "data-gauge-tick": "",
105
+ className: "absolute -translate-x-1/2",
106
+ style: { left: `${tick * 25}%` },
107
+ children: formatValue(ceiling / 4 * tick)
108
+ }, tick))
109
+ })
110
+ ]
111
+ }), /* @__PURE__ */ jsxs("span", {
112
+ "data-gauge-max": "",
113
+ className: cn("shrink-0 text-xs text-muted-foreground", size === "sm" ? "leading-[8px]" : "leading-6"),
114
+ style: { paddingTop: `${8 + lanes * 8}px` },
115
+ children: [formatValue(ceiling), unit ? ` ${unit}` : ""]
116
+ })]
117
+ }),
118
+ variant === "default" && /* @__PURE__ */ jsxs("div", {
119
+ className: "mt-3 flex flex-wrap items-center gap-x-4 gap-y-2 text-xs text-muted-foreground",
120
+ children: [average === void 0 ? /* @__PURE__ */ jsx("span", { children: "Avg not collected" }) : /* @__PURE__ */ jsxs("span", {
121
+ className: "inline-flex items-center gap-1.5",
122
+ children: [
123
+ /* @__PURE__ */ jsx("span", {
124
+ className: "h-3 w-1 rounded-full bg-[var(--fs-success-500)]",
125
+ "aria-hidden": "true"
126
+ }),
127
+ /* @__PURE__ */ jsx("span", { children: "Avg" }),
128
+ " ",
129
+ /* @__PURE__ */ jsx("span", {
130
+ className: "font-medium text-foreground",
131
+ children: formatValue(average)
132
+ })
133
+ ]
134
+ }), markers.map((marker, index) => /* @__PURE__ */ jsxs("span", {
135
+ className: "inline-flex items-center gap-1.5",
136
+ children: [
137
+ /* @__PURE__ */ jsx("svg", {
138
+ className: cn("h-2 w-2.5 fill-current", markerTone[marker.tone ?? "neutral"]),
139
+ viewBox: "0 0 10 8",
140
+ "aria-hidden": "true",
141
+ children: /* @__PURE__ */ jsx("path", { d: "M0 0H10L5 8Z" })
142
+ }),
143
+ /* @__PURE__ */ jsx("span", { children: marker.label }),
144
+ " ",
145
+ /* @__PURE__ */ jsx("span", {
146
+ className: "font-medium text-foreground",
147
+ children: formatValue(marker.value)
148
+ })
149
+ ]
150
+ }, index))]
151
+ })
152
+ ]
153
+ });
154
+ }
155
+ export { MultiGaugeBar };
156
+
157
+ //# sourceMappingURL=MultiGaugeBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiGaugeBar.js","names":[],"sources":["../../src/data/MultiGaugeBar.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../lib/utils\";\nimport type { GaugeTone } from \"./Gauge\";\n\nexport interface GaugeMarker {\n label: string;\n value: number;\n id?: string;\n /** Ranges outline zero to value; pointers mark observations and ceilings. */\n shape?: \"pointer\" | \"range\";\n tone?: GaugeTone;\n}\nexport interface MultiGaugeBarProps {\n label: string;\n icon?: ReactNode;\n average?: number;\n averageId?: string;\n /** Configured ceiling in the same units. Observations above it remain visible. */\n max?: number;\n markers?: readonly GaugeMarker[];\n formatValue?: (value: number) => string;\n /** Shared unit shown beside the scale, e.g. cores or GiB. */\n unit?: string;\n /** Compact inline presentation for table cells, with marker values in the tooltip. */\n variant?: \"default\" | \"cell\";\n /** `sm` draws a thin 8px track without the inline usage text; values stay in the summary. */\n size?: \"md\" | \"sm\";\n className?: string;\n}\n\nconst markerTone: Record<GaugeTone, string> = {\n neutral: \"text-muted-foreground\",\n success: \"text-[var(--fs-success)]\",\n warning: \"text-[var(--fs-warning)]\",\n danger: \"text-[var(--fs-error)]\",\n info: \"text-[var(--fs-info)]\",\n};\n\nexport function MultiGaugeBar({\n label,\n icon,\n average,\n averageId,\n max,\n markers = [],\n formatValue = String,\n unit,\n variant = \"default\",\n size = \"md\",\n className,\n}: MultiGaugeBarProps) {\n const values = [\n ...markers.map((marker) => marker.value),\n ...(average === undefined ? [] : [average]),\n ...(max === undefined ? [] : [max]),\n ];\n if (values.some((value) => !Number.isFinite(value) || value < 0))\n throw new Error(\"Gauge observations must be finite and non-negative\");\n const ceiling = Math.max(0, ...values);\n const position = (value: number) =>\n ceiling === 0 ? 0 : (value / ceiling) * 100;\n const placed: { position: number; lane: number }[] = [];\n const layout = markers.map((marker) => {\n const x = position(marker.value);\n let lane = 0;\n while (\n marker.shape !== \"range\" &&\n placed.some(\n (item) => item.lane === lane && Math.abs(item.position - x) < 5,\n )\n )\n lane++;\n if (marker.shape !== \"range\") placed.push({ position: x, lane });\n return { ...marker, position: x, lane };\n });\n const lanes = Math.max(0, ...placed.map((item) => item.lane));\n const usageLabel =\n average === undefined ? \"Not collected\" : formatValue(average);\n const summary = `${label}${unit ? ` (${unit})` : \"\"}. ${average === undefined ? \"Average not collected\" : `Average ${formatValue(average)}`}. ${markers.map((marker) => `${marker.label} ${formatValue(marker.value)}`).join(\". \")}. Scale 0 to ${formatValue(ceiling)}`;\n return (\n <div\n className={cn(\n \"min-w-0 w-full text-sm tabular-nums\",\n variant === \"default\" && \"rounded-xl border border-border bg-card p-4\",\n className,\n )}\n role=\"img\"\n aria-label={summary}\n title={variant === \"cell\" ? summary : undefined}\n >\n {variant === \"default\" && (\n <div className=\"flex items-center gap-1.5 font-medium text-foreground\">\n {icon}\n {label}\n </div>\n )}\n <div\n className={cn(\n \"flex items-start gap-3\",\n variant === \"default\" ? \"mt-3\" : \"py-1\",\n )}\n >\n <div\n className=\"relative mx-1 min-w-0 flex-1\"\n style={{ paddingTop: `${8 + lanes * 8}px` }}\n >\n <div\n data-gauge-track=\"\"\n className={cn(\n \"relative overflow-hidden bg-muted\",\n size === \"sm\" ? \"h-2 rounded-sm\" : \"h-6 rounded-md\",\n )}\n >\n {size === \"md\" && (\n <span\n id={averageId}\n data-gauge-usage=\"\"\n className=\"relative block truncate px-2 text-xs font-medium leading-6 text-foreground\"\n >\n {usageLabel}\n </span>\n )}\n <div\n data-gauge-fill=\"\"\n {...(size === \"sm\" && averageId ? { id: averageId } : {})}\n className={cn(\n \"absolute inset-y-0 left-0 overflow-hidden bg-[var(--fs-success-500)]\",\n size === \"sm\" ? \"rounded-sm\" : \"rounded-md\",\n )}\n style={{\n width: `${average === undefined ? 0 : position(average)}%`,\n }}\n >\n {size === \"md\" && (\n <span\n aria-hidden=\"true\"\n className=\"block whitespace-nowrap px-2 text-xs font-medium leading-6 text-white\"\n >\n {usageLabel}\n </span>\n )}\n </div>\n </div>\n {[...layout]\n .sort((a, b) => b.lane - a.lane)\n .map((marker, index) => (\n <span\n key={index}\n data-gauge-marker={marker.label}\n data-gauge-shape={marker.shape ?? \"pointer\"}\n id={marker.id}\n title={`${marker.label}: ${formatValue(marker.value)}`}\n className={cn(\n \"absolute\",\n markerTone[marker.tone ?? \"neutral\"],\n marker.shape === \"range\"\n ? cn(\n \"border-dashed border-current\",\n size === \"sm\"\n ? \"h-2 rounded-sm border\"\n : \"h-6 rounded-md border-2\",\n )\n : \"w-2.5 -translate-x-1/2\",\n )}\n style={\n marker.shape === \"range\"\n ? {\n left: \"0%\",\n width: `${marker.position}%`,\n top: `${8 + lanes * 8}px`,\n }\n : {\n left: `${marker.position}%`,\n top: `${(lanes - marker.lane) * 8}px`,\n height: \"8px\",\n }\n }\n >\n {marker.shape !== \"range\" && (\n <svg\n className=\"h-2 w-2.5 fill-current\"\n viewBox=\"0 0 10 8\"\n aria-hidden=\"true\"\n >\n <path d=\"M0 0H10L5 8Z\" />\n </svg>\n )}\n </span>\n ))}\n {variant === \"default\" && (\n <div className=\"relative mt-3 h-5 text-xs text-muted-foreground\">\n {(ceiling === 0 ? [0] : [0, 1, 2, 3]).map((tick) => (\n <span\n key={tick}\n data-gauge-tick=\"\"\n className=\"absolute -translate-x-1/2\"\n style={{ left: `${tick * 25}%` }}\n >\n {formatValue((ceiling / 4) * tick)}\n </span>\n ))}\n </div>\n )}\n </div>\n <span\n data-gauge-max=\"\"\n className={cn(\n \"shrink-0 text-xs text-muted-foreground\",\n size === \"sm\" ? \"leading-[8px]\" : \"leading-6\",\n )}\n style={{ paddingTop: `${8 + lanes * 8}px` }}\n >\n {formatValue(ceiling)}\n {unit ? ` ${unit}` : \"\"}\n </span>\n </div>\n {variant === \"default\" && (\n <div className=\"mt-3 flex flex-wrap items-center gap-x-4 gap-y-2 text-xs text-muted-foreground\">\n {average === undefined ? (\n <span>Avg not collected</span>\n ) : (\n <span className=\"inline-flex items-center gap-1.5\">\n <span\n className=\"h-3 w-1 rounded-full bg-[var(--fs-success-500)]\"\n aria-hidden=\"true\"\n />\n <span>Avg</span>{\" \"}\n <span className=\"font-medium text-foreground\">\n {formatValue(average)}\n </span>\n </span>\n )}\n {markers.map((marker, index) => (\n <span key={index} className=\"inline-flex items-center gap-1.5\">\n <svg\n className={cn(\n \"h-2 w-2.5 fill-current\",\n markerTone[marker.tone ?? \"neutral\"],\n )}\n viewBox=\"0 0 10 8\"\n aria-hidden=\"true\"\n >\n <path d=\"M0 0H10L5 8Z\" />\n </svg>\n <span>{marker.label}</span>{\" \"}\n <span className=\"font-medium text-foreground\">\n {formatValue(marker.value)}\n </span>\n </span>\n ))}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":";;;AA8BA,IAAM,aAAwC;CAC5C,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;CACR,MAAM;AACR;AAEA,SAAgB,cAAc,EAC5B,OACA,MACA,SACA,WACA,KACA,UAAU,CAAC,GACX,cAAc,QACd,MACA,UAAU,WACV,OAAO,MACP,aACqB;CACrB,MAAM,SAAS;EACb,GAAG,QAAQ,KAAK,WAAW,OAAO,KAAK;EACvC,GAAI,YAAY,KAAA,IAAY,CAAC,IAAI,CAAC,OAAO;EACzC,GAAI,QAAQ,KAAA,IAAY,CAAC,IAAI,CAAC,GAAG;CACnC;CACA,IAAI,OAAO,MAAM,UAAU,CAAC,OAAO,SAAS,KAAK,KAAK,QAAQ,CAAC,GAC7D,MAAM,IAAI,MAAM,oDAAoD;CACtE,MAAM,UAAU,KAAK,IAAI,GAAG,GAAG,MAAM;CACrC,MAAM,YAAY,UAChB,YAAY,IAAI,IAAK,QAAQ,UAAW;CAC1C,MAAM,SAA+C,CAAC;CACtD,MAAM,SAAS,QAAQ,KAAK,WAAW;EACrC,MAAM,IAAI,SAAS,OAAO,KAAK;EAC/B,IAAI,OAAO;EACX,OACE,OAAO,UAAU,WACjB,OAAO,MACJ,SAAS,KAAK,SAAS,QAAQ,KAAK,IAAI,KAAK,WAAW,CAAC,IAAI,CAChE,GAEA;EACF,IAAI,OAAO,UAAU,SAAS,OAAO,KAAK;GAAE,UAAU;GAAG;EAAK,CAAC;EAC/D,OAAO;GAAE,GAAG;GAAQ,UAAU;GAAG;EAAK;CACxC,CAAC;CACD,MAAM,QAAQ,KAAK,IAAI,GAAG,GAAG,OAAO,KAAK,SAAS,KAAK,IAAI,CAAC;CAC5D,MAAM,aACJ,YAAY,KAAA,IAAY,kBAAkB,YAAY,OAAO;CAC/D,MAAM,UAAU,GAAG,QAAQ,OAAO,KAAK,KAAK,KAAK,GAAG,IAAI,YAAY,KAAA,IAAY,0BAA0B,WAAW,YAAY,OAAO,IAAI,IAAI,QAAQ,KAAK,WAAW,GAAG,OAAO,MAAM,GAAG,YAAY,OAAO,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,eAAe,YAAY,OAAO;CACrQ,OACE,qBAAC,OAAD;EACE,WAAW,GACT,uCACA,YAAY,aAAa,+CACzB,SACF;EACA,MAAK;EACL,cAAY;EACZ,OAAO,YAAY,SAAS,UAAU,KAAA;EARxC,UAAA;GAUG,YAAY,aACX,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACG,MACA,KACE;;GAEP,qBAAC,OAAD;IACE,WAAW,GACT,0BACA,YAAY,YAAY,SAAS,MACnC;IAJF,UAAA,CAME,qBAAC,OAAD;KACE,WAAU;KACV,OAAO,EAAE,YAAY,GAAG,IAAI,QAAQ,EAAE,IAAI;KAF5C,UAAA;MAIE,qBAAC,OAAD;OACE,oBAAiB;OACjB,WAAW,GACT,qCACA,SAAS,OAAO,mBAAmB,gBACrC;OALF,UAAA,CAOG,SAAS,QACR,oBAAC,QAAD;QACE,IAAI;QACJ,oBAAiB;QACjB,WAAU;QAET,UAAA;OACG,CAAA,GAER,oBAAC,OAAD;QACE,mBAAgB;QAChB,GAAK,SAAS,QAAQ,YAAY,EAAE,IAAI,UAAU,IAAI,CAAC;QACvD,WAAW,GACT,wEACA,SAAS,OAAO,eAAe,YACjC;QACA,OAAO,EACL,OAAO,GAAG,YAAY,KAAA,IAAY,IAAI,SAAS,OAAO,EAAE,GAC1D;QAEC,UAAA,SAAS,QACR,oBAAC,QAAD;SACE,eAAY;SACZ,WAAU;SAET,UAAA;QACG,CAAA;OAEL,CAAA,CACF;;MACJ,CAAC,GAAG,MAAM,CAAC,CACT,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAC/B,KAAK,QAAQ,UACZ,oBAAC,QAAD;OAEE,qBAAmB,OAAO;OAC1B,oBAAkB,OAAO,SAAS;OAClC,IAAI,OAAO;OACX,OAAO,GAAG,OAAO,MAAM,IAAI,YAAY,OAAO,KAAK;OACnD,WAAW,GACT,YACA,WAAW,OAAO,QAAQ,YAC1B,OAAO,UAAU,UACb,GACE,gCACA,SAAS,OACL,0BACA,yBACN,IACA,wBACN;OACA,OACE,OAAO,UAAU,UACb;QACE,MAAM;QACN,OAAO,GAAG,OAAO,SAAS;QAC1B,KAAK,GAAG,IAAI,QAAQ,EAAE;OACxB,IACA;QACE,MAAM,GAAG,OAAO,SAAS;QACzB,KAAK,IAAI,QAAQ,OAAO,QAAQ,EAAE;QAClC,QAAQ;OACV;OAGL,UAAA,OAAO,UAAU,WAChB,oBAAC,OAAD;QACE,WAAU;QACV,SAAQ;QACR,eAAY;QAEZ,UAAA,oBAAC,QAAD,EAAM,GAAE,eAAgB,CAAA;OACrB,CAAA;MAEH,GAxCC,KAwCD,CACP;MACF,YAAY,aACX,oBAAC,OAAD;OAAK,WAAU;OACX,WAAA,YAAY,IAAI,CAAC,CAAC,IAAI;QAAC;QAAG;QAAG;QAAG;OAAC,EAAA,CAAG,KAAK,SACzC,oBAAC,QAAD;QAEE,mBAAgB;QAChB,WAAU;QACV,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,GAAG;QAE9B,UAAA,YAAa,UAAU,IAAK,IAAI;OAC7B,GANC,IAMD,CACP;MACE,CAAA;KAEJ;IACL,CAAA,GAAA,qBAAC,QAAD;KACE,kBAAe;KACf,WAAW,GACT,0CACA,SAAS,OAAO,kBAAkB,WACpC;KACA,OAAO,EAAE,YAAY,GAAG,IAAI,QAAQ,EAAE,IAAI;KAN5C,UAAA,CAQG,YAAY,OAAO,GACnB,OAAO,IAAI,SAAS,EACjB;IACH,CAAA,CAAA;;GACJ,YAAY,aACX,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACG,YAAY,KAAA,IACX,oBAAC,QAAD,EAAA,UAAM,oBAAuB,CAAA,IAE7B,qBAAC,QAAD;KAAM,WAAU;KAAhB,UAAA;MACE,oBAAC,QAAD;OACE,WAAU;OACV,eAAY;MACb,CAAA;MACD,oBAAC,QAAD,EAAA,UAAM,MAAS,CAAA;MAAE;MACjB,oBAAC,QAAD;OAAM,WAAU;OACb,UAAA,YAAY,OAAO;MAChB,CAAA;KACF;IAEP,CAAA,GAAA,QAAQ,KAAK,QAAQ,UACpB,qBAAC,QAAD;KAAkB,WAAU;KAA5B,UAAA;MACE,oBAAC,OAAD;OACE,WAAW,GACT,0BACA,WAAW,OAAO,QAAQ,UAC5B;OACA,SAAQ;OACR,eAAY;OAEZ,UAAA,oBAAC,QAAD,EAAM,GAAE,eAAgB,CAAA;MACrB,CAAA;MACL,oBAAC,QAAD,EAAA,UAAO,OAAO,MAAY,CAAA;MAAE;MAC5B,oBAAC,QAAD;OAAM,WAAU;OACb,UAAA,YAAY,OAAO,KAAK;MACrB,CAAA;KACF;IAfK,GAAA,KAeL,CACP,CACE;;EAEJ;;AAET"}
@@ -0,0 +1,27 @@
1
+ const require_utils = require("../lib/utils.cjs");
2
+ const require_UiExternalLink = require("../icons/components/UiExternalLink.cjs");
3
+ const require_Icon = require("./Icon.cjs");
4
+ const require_button = require("../components/button.cjs");
5
+ let react_jsx_runtime = require("react/jsx-runtime");
6
+ // src/data/OpenInFilesLink.tsx
7
+ /** A small "Open in Files" link that hands `target` to the host's `onOpenFile`. */
8
+ function OpenInFilesLink({ target, onOpenFile, className }) {
9
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_button.Button, {
10
+ type: "button",
11
+ variant: "link",
12
+ size: "sm",
13
+ className: require_utils.cn("h-auto gap-1 p-0 text-xs", className),
14
+ title: `Open ${target.file}${target.line ? `:${target.line}` : ""} in Files`,
15
+ onClick: (event) => {
16
+ event.stopPropagation();
17
+ onOpenFile(target);
18
+ },
19
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Icon.Icon, {
20
+ icon: require_UiExternalLink.UiExternalLink,
21
+ className: "text-xs"
22
+ }), "Open in Files"]
23
+ });
24
+ }
25
+ exports.OpenInFilesLink = OpenInFilesLink;
26
+
27
+ //# sourceMappingURL=OpenInFilesLink.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenInFilesLink.cjs","names":["Button","cn","Icon","UiExternalLink"],"sources":["../../src/data/OpenInFilesLink.tsx"],"sourcesContent":["import { Button } from \"../components/button\";\nimport { UiExternalLink } from \"../icons\";\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"./Icon\";\n\n/** A file, and optionally a line in it, for a host to open in its annotated file view. */\nexport type OpenFileTarget = {\n /** Path relative to `workDir` when it lives under it. */\n file: string;\n workDir?: string | undefined;\n line?: number | undefined;\n};\n\nexport type OpenInFilesLinkProps = {\n target: OpenFileTarget;\n onOpenFile: (target: OpenFileTarget) => void;\n className?: string | undefined;\n};\n\n/** A small \"Open in Files\" link that hands `target` to the host's `onOpenFile`. */\nexport function OpenInFilesLink({ target, onOpenFile, className }: OpenInFilesLinkProps) {\n return (\n <Button\n type=\"button\"\n variant=\"link\"\n size=\"sm\"\n className={cn(\"h-auto gap-1 p-0 text-xs\", className)}\n title={`Open ${target.file}${target.line ? `:${target.line}` : \"\"} in Files`}\n onClick={(event) => {\n event.stopPropagation();\n onOpenFile(target);\n }}\n >\n <Icon icon={UiExternalLink} className=\"text-xs\" />\n Open in Files\n </Button>\n );\n}\n"],"mappings":";;;;;;;AAoBA,SAAgB,gBAAgB,EAAE,QAAQ,YAAY,aAAmC;CACvF,OACE,iBAAA,GAAA,kBAAA,KAAA,CAACA,eAAAA,QAAD;EACE,MAAK;EACL,SAAQ;EACR,MAAK;EACL,WAAWC,cAAAA,GAAG,4BAA4B,SAAS;EACnD,OAAO,QAAQ,OAAO,OAAO,OAAO,OAAO,IAAI,OAAO,SAAS,GAAG;EAClE,UAAU,UAAU;GAClB,MAAM,gBAAgB;GACtB,WAAW,MAAM;EACnB;EATF,UAAA,CAWE,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,MAAD;GAAM,MAAMC,uBAAAA;GAAgB,WAAU;EAAW,CAAA,GAAC,eAE5C;;AAEZ"}
@@ -0,0 +1,15 @@
1
+ /** A file, and optionally a line in it, for a host to open in its annotated file view. */
2
+ export type OpenFileTarget = {
3
+ /** Path relative to `workDir` when it lives under it. */
4
+ file: string;
5
+ workDir?: string | undefined;
6
+ line?: number | undefined;
7
+ };
8
+ export type OpenInFilesLinkProps = {
9
+ target: OpenFileTarget;
10
+ onOpenFile: (target: OpenFileTarget) => void;
11
+ className?: string | undefined;
12
+ };
13
+ /** A small "Open in Files" link that hands `target` to the host's `onOpenFile`. */
14
+ export declare function OpenInFilesLink({ target, onOpenFile, className }: OpenInFilesLinkProps): import("react").JSX.Element;
15
+ //# sourceMappingURL=OpenInFilesLink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenInFilesLink.d.ts","sourceRoot":"","sources":["../../src/data/OpenInFilesLink.tsx"],"names":[],"mappings":"AAKA,0FAA0F;AAC1F,MAAM,MAAM,cAAc,GAAG;IAC3B,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,CAAC;AAEF,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,oBAAoB,+BAiBtF"}
@@ -0,0 +1,27 @@
1
+ import { cn } from "../lib/utils.js";
2
+ import { UiExternalLink } from "../icons/components/UiExternalLink.js";
3
+ import { Icon } from "./Icon.js";
4
+ import { Button } from "../components/button.js";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ // src/data/OpenInFilesLink.tsx
7
+ /** A small "Open in Files" link that hands `target` to the host's `onOpenFile`. */
8
+ function OpenInFilesLink({ target, onOpenFile, className }) {
9
+ return /* @__PURE__ */ jsxs(Button, {
10
+ type: "button",
11
+ variant: "link",
12
+ size: "sm",
13
+ className: cn("h-auto gap-1 p-0 text-xs", className),
14
+ title: `Open ${target.file}${target.line ? `:${target.line}` : ""} in Files`,
15
+ onClick: (event) => {
16
+ event.stopPropagation();
17
+ onOpenFile(target);
18
+ },
19
+ children: [/* @__PURE__ */ jsx(Icon, {
20
+ icon: UiExternalLink,
21
+ className: "text-xs"
22
+ }), "Open in Files"]
23
+ });
24
+ }
25
+ export { OpenInFilesLink };
26
+
27
+ //# sourceMappingURL=OpenInFilesLink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenInFilesLink.js","names":[],"sources":["../../src/data/OpenInFilesLink.tsx"],"sourcesContent":["import { Button } from \"../components/button\";\nimport { UiExternalLink } from \"../icons\";\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"./Icon\";\n\n/** A file, and optionally a line in it, for a host to open in its annotated file view. */\nexport type OpenFileTarget = {\n /** Path relative to `workDir` when it lives under it. */\n file: string;\n workDir?: string | undefined;\n line?: number | undefined;\n};\n\nexport type OpenInFilesLinkProps = {\n target: OpenFileTarget;\n onOpenFile: (target: OpenFileTarget) => void;\n className?: string | undefined;\n};\n\n/** A small \"Open in Files\" link that hands `target` to the host's `onOpenFile`. */\nexport function OpenInFilesLink({ target, onOpenFile, className }: OpenInFilesLinkProps) {\n return (\n <Button\n type=\"button\"\n variant=\"link\"\n size=\"sm\"\n className={cn(\"h-auto gap-1 p-0 text-xs\", className)}\n title={`Open ${target.file}${target.line ? `:${target.line}` : \"\"} in Files`}\n onClick={(event) => {\n event.stopPropagation();\n onOpenFile(target);\n }}\n >\n <Icon icon={UiExternalLink} className=\"text-xs\" />\n Open in Files\n </Button>\n );\n}\n"],"mappings":";;;;;;;AAoBA,SAAgB,gBAAgB,EAAE,QAAQ,YAAY,aAAmC;CACvF,OACE,qBAAC,QAAD;EACE,MAAK;EACL,SAAQ;EACR,MAAK;EACL,WAAW,GAAG,4BAA4B,SAAS;EACnD,OAAO,QAAQ,OAAO,OAAO,OAAO,OAAO,IAAI,OAAO,SAAS,GAAG;EAClE,UAAU,UAAU;GAClB,MAAM,gBAAgB;GACtB,WAAW,MAAM;EACnB;EATF,UAAA,CAWE,oBAAC,MAAD;GAAM,MAAM;GAAgB,WAAU;EAAW,CAAA,GAAC,eAE5C;;AAEZ"}