@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":"LintDetail.js","names":["_Fragment"],"sources":["../../../src/data/lint/LintDetail.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Button } from \"../../components/button\";\nimport { Icon } from \"../Icon\";\nimport { cn } from \"../../lib/utils\";\nimport { UiEyeClosed, UiListChecks } from \"../../icons\";\nimport { LintSeverityIcon, ToolIcon } from \"../test-runner/MarkIcons\";\nimport { formatTestDuration } from \"../test-runner/status\";\nimport {\n collectFolderLintStats,\n folderPattern,\n lintNodeActions,\n violationIgnoreAction,\n} from \"./actions\";\nimport { isLinterErrored, lintNodeCount, severityOf } from \"./stats\";\nimport type { LintAction, LintNode, LinterResult, Violation } from \"./types\";\n\ntype IgnoreProps = {\n onIgnore?: ((action: LintAction) => void | Promise<void>) | undefined;\n ignoreBusy?: boolean | undefined;\n};\n\nfunction Section({ title, children }: { title: string; children: ReactNode }) {\n return (\n <section className=\"space-y-1.5\">\n <h3 className=\"text-[10px] uppercase tracking-wide text-muted-foreground\">{title}</h3>\n {children}\n </section>\n );\n}\n\nfunction Mono({ children, className }: { children: ReactNode; className?: string }) {\n return <span className={cn(\"break-all font-mono text-sm\", className)}>{children}</span>;\n}\n\nfunction Pre({ children, tone }: { children: ReactNode; tone?: \"error\" }) {\n return (\n <pre\n className={cn(\n \"max-h-80 overflow-auto whitespace-pre-wrap break-words rounded bg-muted p-3 font-mono text-xs\",\n tone === \"error\" && \"bg-red-500/10 text-red-700 dark:text-red-300\",\n )}\n >\n {children}\n </pre>\n );\n}\n\nfunction IgnoreButton({\n action,\n onIgnore,\n disabled,\n}: {\n action: LintAction;\n onIgnore: (action: LintAction) => void | Promise<void>;\n disabled: boolean;\n}) {\n const subtle = action.variant === \"subtle\";\n return (\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n className={cn(\n \"h-6 gap-1 px-2 text-xs\",\n subtle\n ? \"text-muted-foreground\"\n : \"border-amber-500/50 bg-amber-500/10 text-amber-800 hover:bg-amber-500/20 dark:text-amber-300\",\n )}\n title={action.title}\n disabled={disabled}\n onClick={(event) => {\n event.stopPropagation();\n void onIgnore(action);\n }}\n >\n <Icon icon={UiEyeClosed} className=\"text-xs\" />\n {action.label}\n </Button>\n );\n}\n\nfunction ActionList({ actions, onIgnore, ignoreBusy }: IgnoreProps & { actions: LintAction[] }) {\n if (!onIgnore || actions.length === 0) return null;\n return (\n <Section title=\"Actions\">\n <div className=\"flex flex-wrap gap-1.5\">\n {actions.map((action) => (\n <IgnoreButton\n key={action.key}\n action={action}\n onIgnore={onIgnore}\n disabled={Boolean(ignoreBusy) || (Boolean(action.disabledWithoutWorkDir) && !action.req.work_dir)}\n />\n ))}\n </div>\n </Section>\n );\n}\n\nfunction violationLocation(v: Violation, withFile: boolean): string {\n const position = `:${v.line ?? 0}${v.column ? `:${v.column}` : \"\"}`;\n return withFile && v.file ? `${v.file}${position}` : position;\n}\n\nfunction ViolationCard({\n violation,\n linter,\n file,\n workDir,\n showFile,\n onIgnore,\n ignoreBusy,\n}: IgnoreProps & {\n violation: Violation;\n linter: string;\n /** The file an ignore rule targets; empty when the violation has none. */\n file: string;\n workDir: string;\n showFile?: boolean;\n}) {\n const rule = violation.rule?.method ?? \"\";\n const ignore = onIgnore ? violationIgnoreAction({ violation, linter, file, workDir }) : null;\n return (\n <div className=\"rounded border border-border bg-card p-2\" data-lint-violation=\"\">\n <div className=\"flex items-start gap-2\">\n <LintSeverityIcon severity={severityOf(violation)} className=\"mt-0.5 text-base\" />\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex flex-wrap items-center gap-2 font-mono text-xs text-muted-foreground\">\n <span>{violationLocation(violation, Boolean(showFile))}</span>\n {rule && <span className=\"text-foreground\">[{rule}]</span>}\n </div>\n {violation.message && (\n <div className=\"mt-0.5 whitespace-pre-wrap text-sm\">{violation.message}</div>\n )}\n {violation.code && (\n <pre className=\"mt-1 overflow-x-auto rounded bg-muted p-2 font-mono text-xs\">{violation.code}</pre>\n )}\n {ignore && onIgnore && (\n <div className=\"mt-1.5\">\n <IgnoreButton action={ignore} onIgnore={onIgnore} disabled={Boolean(ignoreBusy)} />\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nfunction groupViolationsByRule(violations: readonly Violation[]): Array<{ rule: string; violations: Violation[] }> {\n const grouped = new Map<string, Violation[]>();\n for (const v of violations) {\n const key = v.rule?.method || \"(no rule)\";\n grouped.set(key, [...(grouped.get(key) ?? []), v]);\n }\n return Array.from(grouped.keys())\n .sort()\n .map((rule) => ({\n rule,\n violations: grouped.get(rule)!.slice().sort((a, b) => (a.line ?? 0) - (b.line ?? 0)),\n }));\n}\n\nfunction shellQuote(s: string): string {\n if (s === \"\") return \"''\";\n return /^[A-Za-z0-9_./:=@%+,-]+$/.test(s) ? s : `'${s.replace(/'/g, `'\\\\''`)}'`;\n}\n\n/** The executed argv, quoted so the line can be pasted into a terminal. */\nfunction formatLinterCommand(result: LinterResult): string {\n return result.command ? [result.command, ...(result.args ?? [])].map(shellQuote).join(\" \") : \"\";\n}\n\nfunction ResultStatus({ result }: { result: LinterResult }) {\n const [label, tone] = result.skipped\n ? [\"skipped\", \"text-muted-foreground\"]\n : result.timed_out\n ? [\"timed out\", \"text-amber-600 dark:text-amber-400\"]\n : isLinterErrored(result)\n ? [\"failed\", \"text-red-600 dark:text-red-400\"]\n : [\"ran\", \"text-emerald-600 dark:text-emerald-400\"];\n const count = (result.violations ?? []).length;\n return (\n <div className=\"flex flex-wrap gap-3 text-sm\">\n <span className={tone}>{label}</span>\n <span className=\"text-muted-foreground\">\n {count} violation{count === 1 ? \"\" : \"s\"}\n </span>\n {result.file_count !== undefined && <span className=\"text-muted-foreground\">{result.file_count} files</span>}\n {result.rule_count !== undefined && <span className=\"text-muted-foreground\">{result.rule_count} rules</span>}\n {result.duration ? (\n <span className=\"text-muted-foreground\">{formatTestDuration(result.duration)}</span>\n ) : null}\n </div>\n );\n}\n\nfunction ResultDetails({ result, workDir }: { result: LinterResult; workDir: string }) {\n return (\n <>\n <Section title=\"Status\">\n <ResultStatus result={result} />\n </Section>\n {result.command && (\n <Section title=\"Command\">\n <Pre>{formatLinterCommand(result)}</Pre>\n {workDir && <div className=\"font-mono text-xs text-muted-foreground\">cwd: {workDir}</div>}\n </Section>\n )}\n </>\n );\n}\n\nfunction NoFileViolations({\n violations,\n linter,\n workDir,\n}: {\n violations: readonly Violation[];\n linter: string;\n workDir: string;\n}) {\n if (violations.length === 0) return null;\n return (\n <Section title=\"Violations Without File\">\n <div className=\"space-y-3\">\n {groupViolationsByRule(violations).map(({ rule, violations: group }) => (\n <div key={rule} className=\"space-y-2 rounded border border-border bg-muted/40 p-3\">\n <div className=\"font-mono text-sm\">\n {rule} <span className=\"text-xs text-muted-foreground\">({group.length})</span>\n </div>\n {group.map((v, i) => (\n <ViolationCard key={i} violation={v} linter={linter} file=\"\" workDir={workDir} />\n ))}\n </div>\n ))}\n </div>\n </Section>\n );\n}\n\nfunction LinterDetail({ node, actions, ...ignore }: IgnoreProps & { node: LintNode; actions: LintAction[] }) {\n const result = node.linter;\n const linter = node.linterName ?? result?.linter ?? \"\";\n const workDir = node.work_dir ?? result?.work_dir ?? \"\";\n return (\n <>\n {result && <ResultDetails result={result} workDir={workDir} />}\n <ActionList actions={actions} {...ignore} />\n {result?.error && (\n <Section title=\"Error\">\n <Pre tone=\"error\">{result.error}</Pre>\n </Section>\n )}\n {result?.raw_output && (\n <Section title=\"Raw output\">\n <Pre>{result.raw_output}</Pre>\n </Section>\n )}\n <NoFileViolations violations={node.noFileViolations ?? []} linter={linter} workDir={workDir} />\n </>\n );\n}\n\nfunction LinterErrorDetail({ node }: { node: LintNode }) {\n const result = node.linter;\n return (\n <>\n <Section title=\"Error\">\n <Pre tone=\"error\">{node.message}</Pre>\n </Section>\n {result && <ResultDetails result={result} workDir={result.work_dir ?? \"\"} />}\n {result?.raw_output && (\n <Section title=\"Raw output\">\n <Pre>{result.raw_output}</Pre>\n </Section>\n )}\n </>\n );\n}\n\nfunction FolderDetail({\n node,\n results,\n actions,\n ...ignore\n}: IgnoreProps & { node: LintNode; results: readonly LinterResult[]; actions: LintAction[] }) {\n const stats = node.ruleName\n ? []\n : collectFolderLintStats(node, results).filter((s) => !node.linterName || s.linter === node.linterName);\n return (\n <>\n <Section title=\"Folder\">\n <div className=\"flex items-center gap-2\">\n <Mono>{node.file || node.name}</Mono>\n {node.target_path !== undefined && (\n <span className=\"text-xs text-muted-foreground\">{folderPattern(node.target_path)}</span>\n )}\n </div>\n </Section>\n <ActionList actions={actions} {...ignore} />\n {node.ruleName ? (\n <Section title=\"Scope\">\n <div className=\"space-y-1 text-sm\">\n <div>\n <span className=\"text-muted-foreground\">Linter:</span> <Mono>{node.linterName}</Mono>\n </div>\n <div>\n <span className=\"text-muted-foreground\">Rule:</span> <Mono>{node.ruleName}</Mono>\n </div>\n </div>\n </Section>\n ) : (\n <Section title=\"Linters\">\n <div className=\"space-y-1\">\n {stats.map(({ linter, count }) => (\n <div key={linter} className=\"flex items-center justify-between text-sm\">\n <Mono>{linter}</Mono>\n <span className=\"text-xs text-muted-foreground\">{count} violations</span>\n </div>\n ))}\n {stats.length === 0 && (\n <div className=\"text-sm text-muted-foreground\">No violations found under this folder.</div>\n )}\n </div>\n </Section>\n )}\n </>\n );\n}\n\nfunction FileDetail({ node, actions, ...ignore }: IgnoreProps & { node: LintNode; actions: LintAction[] }) {\n const violations = node.violations ?? [];\n return (\n <>\n <Section title=\"File\">\n <div className=\"flex items-center gap-2\">\n <Mono>{node.file}</Mono>\n {violations.length > 0 && (\n <span className=\"text-xs text-muted-foreground\">({violations.length} violations)</span>\n )}\n </div>\n </Section>\n <ActionList actions={actions} {...ignore} />\n {violations.length > 0 && (\n <Section title=\"Violations\">\n <div className=\"space-y-2\">\n {violations.map((v, i) => (\n <ViolationCard\n key={i}\n violation={v}\n linter={node.linterName ?? \"\"}\n file={node.target_path || node.file || \"\"}\n workDir={node.work_dir ?? \"\"}\n {...ignore}\n />\n ))}\n </div>\n </Section>\n )}\n </>\n );\n}\n\nfunction RuleDetail({ node, actions, ...ignore }: IgnoreProps & { node: LintNode; actions: LintAction[] }) {\n const violations = node.violations ?? [];\n const linter = node.linterName ?? \"\";\n const workDir = node.work_dir ?? \"\";\n return (\n <>\n <Section title=\"Rule\">\n <Mono>{node.ruleName}</Mono>\n <span className=\"ml-2 text-xs text-muted-foreground\">({lintNodeCount(node)} violations)</span>\n </Section>\n {node.file && (\n <Section title=\"File\">\n <Mono>{node.file}</Mono>\n </Section>\n )}\n <ActionList actions={actions} {...ignore} />\n {violations.length > 0 && (\n <Section title=\"Violations\">\n <div className=\"space-y-2\">\n {violations.map((v, i) => (\n <ViolationCard\n key={i}\n violation={v}\n linter={linter}\n file={v.raw_file || node.target_path || node.file || \"\"}\n workDir={workDir}\n showFile={!node.file}\n {...ignore}\n />\n ))}\n </div>\n </Section>\n )}\n <NoFileViolations violations={node.noFileViolations ?? []} linter={linter} workDir={workDir} />\n </>\n );\n}\n\nconst KIND_LABEL: Record<LintNode[\"kind\"], string> = {\n linter: \"Linter\",\n \"lint-folder\": \"Folder\",\n \"lint-file\": \"File\",\n \"lint-rule\": \"Rule\",\n \"lint-rule-group\": \"Rule\",\n \"linter-error\": \"Linter error\",\n};\n\nfunction DetailHeader({ node }: { node: LintNode }) {\n const count = node.kind === \"linter-error\" ? 0 : lintNodeCount(node);\n return (\n <div\n className=\"flex min-w-0 items-center gap-2 border-b border-border px-density-4 py-density-2\"\n data-detail-header=\"\"\n >\n {node.kind === \"linter\" ? (\n <ToolIcon tool={node.linterName} className=\"text-lg\" />\n ) : node.kind === \"linter-error\" ? (\n <LintSeverityIcon severity=\"error\" className=\"text-lg\" />\n ) : null}\n <h2 className=\"min-w-0 shrink truncate text-base font-semibold\" title={node.name}>\n {node.name}\n </h2>\n <span className=\"inline-flex shrink-0 items-center rounded bg-muted px-1.5 py-0.5 text-xs text-muted-foreground\">\n {KIND_LABEL[node.kind]}\n </span>\n {count > 0 && (\n <span className=\"shrink-0 text-xs text-muted-foreground\">\n {count} violation{count === 1 ? \"\" : \"s\"}\n </span>\n )}\n </div>\n );\n}\n\nexport type LintDetailPanelProps = IgnoreProps & {\n node: LintNode | null;\n /** All results, for the folder summary and for folder-scoped ignore actions. */\n results: readonly LinterResult[];\n};\n\n/**\n * The right pane for a lint node: what it covers, the findings beneath it and,\n * when the host provides `onIgnore`, the ignore actions that fit its scope.\n */\nexport function LintDetailPanel({ node, results, onIgnore, ignoreBusy }: LintDetailPanelProps) {\n if (!node) {\n return (\n <div className=\"flex h-full items-center justify-center text-sm text-muted-foreground\">\n <div className=\"text-center\">\n <Icon icon={UiListChecks} className=\"mb-2 block text-4xl\" />\n Select a linter, rule or file to view its findings.\n </div>\n </div>\n );\n }\n const ignore = { onIgnore, ignoreBusy };\n const actions = lintNodeActions(node, results);\n return (\n <div className=\"flex h-full min-h-0 flex-col\">\n <DetailHeader node={node} />\n <div className=\"min-h-0 flex-1 space-y-4 overflow-y-auto p-density-4\">\n {node.kind === \"linter\" && <LinterDetail node={node} actions={actions} {...ignore} />}\n {node.kind === \"linter-error\" && <LinterErrorDetail node={node} />}\n {node.kind === \"lint-folder\" && <FolderDetail node={node} results={results} actions={actions} {...ignore} />}\n {node.kind === \"lint-file\" && <FileDetail node={node} actions={actions} {...ignore} />}\n {(node.kind === \"lint-rule\" || node.kind === \"lint-rule-group\") && (\n <RuleDetail node={node} actions={actions} {...ignore} />\n )}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"LintDetail.js","names":["_Fragment"],"sources":["../../../src/data/lint/LintDetail.tsx"],"sourcesContent":["import { violationMenuItems, type ViolationProps } from \"./violation-menu-items\";\nimport { ProblemRow } from \"../diagnostics/ProblemRow\";\nimport type { ReactNode } from \"react\";\nimport { CopyButton } from \"../../components/CopyButton\";\nimport { Icon } from \"../Icon\";\nimport { cn } from \"../../lib/utils\";\nimport { UiListChecks } from \"../../icons\";\nimport { LintSeverityIcon, ToolIcon } from \"../test-runner/MarkIcons\";\nimport { formatTestDuration } from \"../test-runner/status\";\nimport {\n collectFolderLintStats,\n folderPattern,\n lintNodeActions,\n} from \"./actions\";\nimport { isLinterErrored, linterToolName, lintNodeCount, severityOf } from \"./stats\";\nimport { OpenInFilesLink, type OpenFileTarget } from \"../OpenInFilesLink\";\nimport { relPath } from \"./paths\";\nimport { ViolationSnippet, type LintSourceLoader } from \"./ViolationSnippet\";\nimport { IgnoreActionsMenu } from \"./LintIgnoreMenu\";\nimport { cachedAge, type LintAction, type LintNode, type LinterResult, type Violation } from \"./types\";\n\nexport type HostActionProps = {\n onIgnore?: ((action: LintAction) => void | Promise<void>) | undefined;\n ignoreBusy?: boolean | undefined;\n /** Adds an \"Open in Files\" link to each violation that names a file. */\n onOpenFile?: ((target: OpenFileTarget) => void) | undefined;\n /** Loads a violation's file so its card shows the flagged lines with context. */\n loadSource?: LintSourceLoader | undefined;\n};\n\ntype RenderRun = (result: LinterResult) => ReactNode;\n\nfunction Section({ title, children }: { title: string; children: ReactNode }) {\n return (\n <section className=\"space-y-1.5\">\n <h3 className=\"text-[10px] uppercase tracking-wide text-muted-foreground\">{title}</h3>\n {children}\n </section>\n );\n}\n\nfunction Mono({ children, className }: { children: ReactNode; className?: string }) {\n return <span className={cn(\"break-all font-mono text-sm\", className)}>{children}</span>;\n}\n\nfunction Pre({ children, tone }: { children: ReactNode; tone?: \"error\" }) {\n return (\n <pre\n className={cn(\n \"max-h-80 overflow-auto whitespace-pre-wrap break-words rounded bg-muted p-3 font-mono text-xs\",\n tone === \"error\" && \"bg-red-500/10 text-red-700 dark:text-red-300\",\n )}\n >\n {children}\n </pre>\n );\n}\n\nfunction violationLocation(v: Violation, withFile: boolean): string {\n const position = `:${v.line ?? 0}${v.column ? `:${v.column}` : \"\"}`;\n return withFile && v.file ? `${v.file}${position}` : position;\n}\n\n// ViolationLocations lists each place a violation one fix resolves applies,\n// relative to the linter's work dir, each opening its own line.\nfunction ViolationLocations({\n violation,\n workDir,\n onOpenFile,\n}: Pick<HostActionProps, \"onOpenFile\"> & { violation: Violation; workDir: string }) {\n const locations = violation.locations ?? [];\n return (\n <div className=\"mt-1 space-y-0.5\">\n <div className=\"text-[10px] uppercase tracking-wide text-muted-foreground\">{`${locations.length} locations`}</div>\n <ul className=\"space-y-0.5\">\n {locations.map((location, i) => {\n const file = relPath(location.file, workDir) ?? location.file;\n return (\n <li key={i} className=\"flex flex-wrap items-baseline gap-2 text-xs\" data-testid=\"lint-violation-location\">\n <span className=\"font-mono text-muted-foreground\">{`${file}${location.line ? `:${location.line}` : \"\"}`}</span>\n {location.message && <span>{location.message}</span>}\n {onOpenFile && (\n <OpenInFilesLink\n target={{ file, ...(workDir ? { workDir } : {}), ...(location.line ? { line: location.line } : {}) }}\n onOpenFile={onOpenFile}\n />\n )}\n </li>\n );\n })}\n </ul>\n </div>\n );\n}\n\nexport function ViolationDetail({ violation, file, workDir, loadSource, onOpenFile, showFile, showMessage = true }: ViolationProps & { showMessage?: boolean }) {\n return <div className=\"space-y-2\" data-lint-violation-detail=\"\">\n {showFile && <p className=\"break-all font-mono text-xs text-muted-foreground\">{violationLocation(violation, true)}</p>}\n <ViolationSnippet violation={violation} file={file} workDir={workDir} loadSource={loadSource} showMessage={showMessage} />\n {(violation.locations?.length ?? 0) > 1 && <ViolationLocations violation={violation} workDir={workDir} onOpenFile={onOpenFile} />}\n </div>;\n}\n\nexport function ViolationCard(props: ViolationProps & { expanded?: boolean; onExpandedChange?: (expanded: boolean) => void }) {\n return <div data-lint-violation=\"\"><ProblemRow {...(props.expanded !== undefined ? { expanded: props.expanded } : {})} {...(props.onExpandedChange ? { onExpandedChange: props.onExpandedChange } : {})} message={props.violation.message ?? \"\"} severity={severityOf(props.violation)} metadata={`${props.linter} ${props.violation.rule?.method ?? \"\"}`} location={violationLocation(props.violation, Boolean(props.showFile))} actions={violationMenuItems(props)}><ViolationDetail {...props} showMessage={false} /></ProblemRow></div>;\n}\n\nfunction groupViolationsByRule(violations: readonly Violation[]): Array<{ rule: string; violations: Violation[] }> {\n const grouped = new Map<string, Violation[]>();\n for (const v of violations) {\n const key = v.rule?.method || \"(no rule)\";\n grouped.set(key, [...(grouped.get(key) ?? []), v]);\n }\n return Array.from(grouped.keys())\n .sort()\n .map((rule) => ({\n rule,\n violations: grouped.get(rule)!.slice().sort((a, b) => (a.line ?? 0) - (b.line ?? 0)),\n }));\n}\n\nfunction shellQuote(s: string): string {\n if (s === \"\") return \"''\";\n return /^[A-Za-z0-9_./:=@%+,-]+$/.test(s) ? s : `'${s.replace(/'/g, `'\\\\''`)}'`;\n}\n\n/** The executed argv, quoted so the line can be pasted into a terminal. */\nfunction formatLinterCommand(result: LinterResult): string {\n return result.command ? [result.command, ...(result.args ?? [])].map(shellQuote).join(\" \") : \"\";\n}\n\nfunction resultStatusLabel(result: LinterResult): [label: string, tone: string] {\n if (result.status === \"pending\") return [\"pending\", \"text-muted-foreground\"];\n if (result.status === \"running\") return [\"running\", \"text-blue-600 dark:text-blue-400\"];\n if (result.skipped) return [\"skipped\", \"text-muted-foreground\"];\n if (result.timed_out) return [\"timed out\", \"text-amber-600 dark:text-amber-400\"];\n if (isLinterErrored(result)) return [\"failed\", \"text-red-600 dark:text-red-400\"];\n return [\"ran\", \"text-emerald-600 dark:text-emerald-400\"];\n}\n\nfunction ResultStatus({ result }: { result: LinterResult }) {\n const [label, tone] = resultStatusLabel(result);\n const count = (result.violations ?? []).length;\n const cached = cachedAge(result);\n return (\n <div className=\"flex flex-wrap gap-3 text-sm\">\n <span className={tone}>{label}</span>\n {cached && result.cache && (\n <span\n className=\"text-muted-foreground\"\n title={`${result.cache.source} fingerprint ${result.cache.fingerprint ?? \"unknown\"}`}\n >\n cached · linted {cached}\n </span>\n )}\n <span className=\"text-muted-foreground\">\n {count} violation{count === 1 ? \"\" : \"s\"}\n </span>\n {result.file_count !== undefined && <span className=\"text-muted-foreground\">{result.file_count} files</span>}\n {result.rule_count !== undefined && <span className=\"text-muted-foreground\">{result.rule_count} rules</span>}\n {result.duration ? (\n <span className=\"text-muted-foreground\">{formatTestDuration(result.duration)}</span>\n ) : null}\n </div>\n );\n}\n\nfunction CopyableId({ label, value }: { label: string; value: string }) {\n return (\n <div className=\"flex items-center gap-1.5 text-xs\">\n <span className=\"text-muted-foreground\">{label}</span>\n <span className=\"break-all font-mono text-xs\">{value}</span>\n <CopyButton value={value} label={`Copy ${label}`} />\n </div>\n );\n}\n\n/** The prompt run and agent session behind a result, when it has them. */\nfunction RunIdentity({ result }: { result: LinterResult }) {\n if (!result.run_id && !result.session_id) return null;\n return (\n <div className=\"space-y-0.5\">\n {result.run_id && <CopyableId label=\"run id\" value={result.run_id} />}\n {result.session_id && <CopyableId label=\"session id\" value={result.session_id} />}\n </div>\n );\n}\n\nfunction ResultDetails({ result, workDir }: { result: LinterResult; workDir: string }) {\n return (\n <>\n <Section title=\"Status\">\n <ResultStatus result={result} />\n <RunIdentity result={result} />\n </Section>\n {result.command && (\n <Section title=\"Command\">\n <Pre>{formatLinterCommand(result)}</Pre>\n {workDir && <div className=\"font-mono text-xs text-muted-foreground\">cwd: {workDir}</div>}\n </Section>\n )}\n </>\n );\n}\n\nfunction NoFileViolations({\n violations,\n linter,\n workDir,\n}: {\n violations: readonly Violation[];\n linter: string;\n workDir: string;\n}) {\n if (violations.length === 0) return null;\n return (\n <Section title=\"Violations Without File\">\n <div className=\"space-y-3\">\n {groupViolationsByRule(violations).map(({ rule, violations: group }) => (\n <div key={rule} className=\"space-y-2 rounded border border-border bg-muted/40 p-3\">\n <div className=\"font-mono text-sm\">\n {rule} <span className=\"text-xs text-muted-foreground\">({group.length})</span>\n </div>\n {group.map((v, i) => (\n <ViolationCard key={i} violation={v} linter={linter} file=\"\" workDir={workDir} />\n ))}\n </div>\n ))}\n </div>\n </Section>\n );\n}\n\nfunction LinterDetail({ node, renderRun }: { node: LintNode; renderRun?: RenderRun | undefined }) {\n const result = node.linter;\n const linter = node.linterName ?? result?.linter ?? \"\";\n const workDir = node.work_dir ?? result?.work_dir ?? \"\";\n const run = result && renderRun?.(result);\n return (\n <>\n {result && <ResultDetails result={result} workDir={workDir} />}\n {run && <Section title=\"Run\">{run}</Section>}\n {result?.error && (\n <Section title=\"Error\">\n <Pre tone=\"error\">{result.error}</Pre>\n </Section>\n )}\n {result?.raw_output && (\n <Section title=\"Raw output\">\n <Pre>{result.raw_output}</Pre>\n </Section>\n )}\n <NoFileViolations violations={node.noFileViolations ?? []} linter={linter} workDir={workDir} />\n </>\n );\n}\n\nfunction LinterErrorDetail({ node }: { node: LintNode }) {\n const result = node.linter;\n return (\n <>\n <Section title=\"Error\">\n <Pre tone=\"error\">{node.message}</Pre>\n </Section>\n {result && <ResultDetails result={result} workDir={result.work_dir ?? \"\"} />}\n {result?.raw_output && (\n <Section title=\"Raw output\">\n <Pre>{result.raw_output}</Pre>\n </Section>\n )}\n </>\n );\n}\n\nfunction FolderDetail({ node, results }: { node: LintNode; results: readonly LinterResult[] }) {\n const stats = node.ruleName\n ? []\n : collectFolderLintStats(node, results).filter((s) => !node.linterName || s.linter === node.linterName);\n return (\n <>\n <Section title=\"Folder\">\n <div className=\"flex items-center gap-2\">\n <Mono>{node.file || node.name}</Mono>\n {node.target_path !== undefined && (\n <span className=\"text-xs text-muted-foreground\">{folderPattern(node.target_path)}</span>\n )}\n </div>\n </Section>\n {node.ruleName ? (\n <Section title=\"Scope\">\n <div className=\"space-y-1 text-sm\">\n <div>\n <span className=\"text-muted-foreground\">Linter:</span> <Mono>{node.linterName}</Mono>\n </div>\n <div>\n <span className=\"text-muted-foreground\">Rule:</span> <Mono>{node.ruleName}</Mono>\n </div>\n </div>\n </Section>\n ) : (\n <Section title=\"Linters\">\n <div className=\"space-y-1\">\n {stats.map(({ linter, count }) => (\n <div key={linter} className=\"flex items-center justify-between text-sm\">\n <Mono>{linter}</Mono>\n <span className=\"text-xs text-muted-foreground\">{count} violations</span>\n </div>\n ))}\n {stats.length === 0 && (\n <div className=\"text-sm text-muted-foreground\">No violations found under this folder.</div>\n )}\n </div>\n </Section>\n )}\n </>\n );\n}\n\nfunction FileDetail({ node, ...ignore }: HostActionProps & { node: LintNode }) {\n const violations = node.violations ?? [];\n return (\n <>\n <Section title=\"File\">\n <div className=\"flex items-center gap-2\">\n <Mono>{node.file}</Mono>\n {violations.length > 0 && (\n <span className=\"text-xs text-muted-foreground\">({violations.length} violations)</span>\n )}\n </div>\n </Section>\n {violations.length > 0 && (\n <Section title=\"Violations\">\n <div className=\"space-y-2\">\n {violations.map((v, i) => (\n <ViolationCard\n key={i}\n violation={v}\n linter={node.linterName ?? \"\"}\n file={node.target_path || node.file || \"\"}\n workDir={node.work_dir ?? \"\"}\n {...ignore}\n />\n ))}\n </div>\n </Section>\n )}\n </>\n );\n}\n\nfunction RuleDetail({ node, ...ignore }: HostActionProps & { node: LintNode }) {\n const violations = node.violations ?? [];\n const linter = node.linterName ?? \"\";\n const workDir = node.work_dir ?? \"\";\n return (\n <>\n <Section title=\"Rule\">\n <Mono>{node.ruleName}</Mono>\n <span className=\"ml-2 text-xs text-muted-foreground\">({lintNodeCount(node)} violations)</span>\n </Section>\n {node.file && (\n <Section title=\"File\">\n <Mono>{node.file}</Mono>\n </Section>\n )}\n {violations.length > 0 && (\n <Section title=\"Violations\">\n <div className=\"space-y-2\">\n {violations.map((v, i) => (\n <ViolationCard\n key={i}\n violation={v}\n linter={linter}\n file={v.raw_file || node.target_path || node.file || \"\"}\n workDir={workDir}\n showFile={!node.file}\n {...ignore}\n />\n ))}\n </div>\n </Section>\n )}\n <NoFileViolations violations={node.noFileViolations ?? []} linter={linter} workDir={workDir} />\n </>\n );\n}\n\nconst KIND_LABEL: Record<LintNode[\"kind\"], string> = {\n linter: \"Linter\",\n \"lint-folder\": \"Folder\",\n \"lint-file\": \"File\",\n \"lint-rule\": \"Rule\",\n \"lint-rule-group\": \"Rule\",\n \"linter-error\": \"Linter error\",\n};\n\nfunction DetailHeader({\n node,\n actions,\n onIgnore,\n ignoreBusy,\n}: Pick<HostActionProps, \"onIgnore\" | \"ignoreBusy\"> & { node: LintNode; actions: LintAction[] }) {\n const count = node.kind === \"linter-error\" ? 0 : lintNodeCount(node);\n return (\n <div\n className=\"flex min-w-0 items-center gap-2 border-b border-border px-density-4 py-density-2\"\n data-detail-header=\"\"\n >\n {node.kind === \"linter\" ? (\n <ToolIcon tool={linterToolName(node)} className=\"text-lg\" />\n ) : node.kind === \"linter-error\" ? (\n <LintSeverityIcon severity=\"error\" className=\"text-lg\" />\n ) : null}\n <h2 className=\"min-w-0 shrink truncate text-base font-semibold\" title={node.name}>\n {node.name}\n </h2>\n <span className=\"inline-flex shrink-0 items-center rounded bg-muted px-1.5 py-0.5 text-xs text-muted-foreground\">\n {KIND_LABEL[node.kind]}\n </span>\n {count > 0 && (\n <span className=\"shrink-0 text-xs text-muted-foreground\">\n {count} violation{count === 1 ? \"\" : \"s\"}\n </span>\n )}\n {onIgnore && actions.length > 0 && (\n <div className=\"ml-auto shrink-0\" data-lint-node-actions=\"\">\n <IgnoreActionsMenu actions={actions} onIgnore={onIgnore} busy={Boolean(ignoreBusy)} align=\"right\" />\n </div>\n )}\n </div>\n );\n}\n\nexport type LintDetailPanelProps = HostActionProps & {\n node: LintNode | null;\n /**\n * Host-rendered view of the prompt run behind a linter (e.g. its live session),\n * shown in the linter detail. Called for every linter result; return nothing for\n * results without a run. Lets the lint bundle stay free of the AI bundle.\n */\n renderRun?: RenderRun | undefined;\n /** All results, for the folder summary and for folder-scoped ignore actions. */\n results: readonly LinterResult[];\n};\n\n/**\n * The right pane for a lint node: what it covers, the findings beneath it and,\n * when the host provides `onIgnore`, the ignore actions that fit its scope.\n */\nexport function LintDetailPanel({\n node,\n results,\n onIgnore,\n ignoreBusy,\n onOpenFile,\n loadSource,\n renderRun,\n}: LintDetailPanelProps) {\n if (!node) {\n return (\n <div className=\"flex h-full items-center justify-center text-sm text-muted-foreground\">\n <div className=\"text-center\">\n <Icon icon={UiListChecks} className=\"mb-2 block text-4xl\" />\n Select a linter, rule or file to view its findings.\n </div>\n </div>\n );\n }\n const ignore = { onIgnore, ignoreBusy, onOpenFile, loadSource };\n return (\n <div className=\"flex h-full min-h-0 flex-col\">\n <DetailHeader node={node} actions={lintNodeActions(node, results)} onIgnore={onIgnore} ignoreBusy={ignoreBusy} />\n <div className=\"min-h-0 flex-1 space-y-4 overflow-y-auto p-density-4\">\n {node.kind === \"linter\" && <LinterDetail node={node} renderRun={renderRun} />}\n {node.kind === \"linter-error\" && <LinterErrorDetail node={node} />}\n {node.kind === \"lint-folder\" && <FolderDetail node={node} results={results} />}\n {node.kind === \"lint-file\" && <FileDetail node={node} {...ignore} />}\n {(node.kind === \"lint-rule\" || node.kind === \"lint-rule-group\") && <RuleDetail node={node} {...ignore} />}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,10 +1,9 @@
1
1
  const require_utils = require("../../lib/utils.cjs");
2
- const require_FilterPill = require("../FilterPill.cjs");
3
- const require_filterState = require("../test-runner/filterState.cjs");
4
- const require_status = require("../test-runner/status.cjs");
5
2
  const require_marks = require("../test-runner/marks.cjs");
6
3
  const require_MarkIcons = require("../test-runner/MarkIcons.cjs");
7
4
  const require_stats = require("./stats.cjs");
5
+ const require_ProblemFacet = require("../diagnostics/ProblemFacet.cjs");
6
+ const require_ProblemViewOptions = require("../diagnostics/ProblemViewOptions.cjs");
8
7
  const require_grouping_options = require("./grouping-options.cjs");
9
8
  let react_jsx_runtime = require("react/jsx-runtime");
10
9
  // src/data/lint/LintFilterBar.tsx
@@ -13,95 +12,68 @@ var SEVERITY_ORDER = [
13
12
  "warning",
14
13
  "info"
15
14
  ];
16
- var SEVERITY_BADGE = {
17
- error: "bg-red-600",
18
- warning: "bg-amber-600",
19
- info: "bg-sky-600"
20
- };
21
- function triStateTitle(label, mode) {
22
- if (mode === "include") return `${label}: included. Click to exclude`;
23
- if (mode === "exclude") return `${label}: excluded. Click to clear`;
24
- return `${label}: neutral. Click to include`;
15
+ /** One pill per lint grouping; the active one is highlighted. */
16
+ function LintGroupingPicker({ grouping, onGroupingChange, className }) {
17
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
18
+ role: "group",
19
+ "aria-label": "Group by",
20
+ className: require_utils.cn("space-y-1", className),
21
+ children: require_grouping_options.LINT_GROUPING_OPTIONS.map((opt) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
22
+ type: "button",
23
+ "aria-pressed": opt.key === grouping,
24
+ className: require_utils.cn("block w-full rounded px-2 py-1 text-left text-xs hover:bg-muted", opt.key === grouping && "bg-muted font-medium"),
25
+ title: `Group by ${opt.label}`,
26
+ onClick: () => onGroupingChange(opt.key),
27
+ children: opt.label
28
+ }, opt.key))
29
+ });
25
30
  }
26
31
  /**
27
- * Grouping picker plus tri-state severity and linter filters for the lint
28
- * tree. Controlled: the host owns grouping and filters (typically in the URL).
29
- * Counts follow the other filter, so each pill shows what picking it would leave.
32
+ * Severity and linter facets: compact triggers that each open a multi-select
33
+ * with icons where every option is included, excluded or left neutral. Counts
34
+ * follow the other facet, so each option shows what picking it would leave. A
35
+ * severity nobody reported is offered only while a severity filter is active.
30
36
  */
31
- function LintFilterBar({ results, grouping, onGroupingChange, filters, onFiltersChange, className }) {
37
+ function LintFilterFacets({ results, filters, onFiltersChange, className }) {
32
38
  const severityCounts = require_stats.countLintBySeverity(results, filters.linter);
33
39
  const linterCounts = require_stats.countLintByLinter(results, filters.severity);
34
- const linters = require_stats.collectLintLinters(results);
40
+ const linters = [.../* @__PURE__ */ new Set([...require_stats.collectLintLinters(results), ...filters.linter.keys()])];
35
41
  const hasActive = filters.severity.size > 0 || filters.linter.size > 0;
42
+ const severityOptions = SEVERITY_ORDER.filter((s) => severityCounts[s] > 0 || filters.severity.size > 0).map((s) => ({
43
+ value: s,
44
+ label: require_marks.LINT_SEVERITIES[s].label,
45
+ icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_MarkIcons.LintSeverityIcon, { severity: s }),
46
+ count: severityCounts[s]
47
+ }));
48
+ const linterOptions = linters.map((linter) => ({
49
+ value: linter,
50
+ label: require_marks.toolMark(linter)?.label ?? linter,
51
+ title: linter,
52
+ icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_MarkIcons.ToolIcon, { tool: linter }),
53
+ count: linterCounts[linter] ?? 0
54
+ }));
36
55
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
37
- className: require_utils.cn("flex flex-wrap items-center gap-1.5", className),
38
- "data-lint-filter-bar": "",
56
+ className: require_utils.cn("space-y-3", className),
57
+ "data-lint-filter-facets": "",
39
58
  children: [
40
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
41
- role: "group",
42
- "aria-label": "Group by",
43
- className: "flex flex-wrap items-center gap-1.5",
44
- children: require_grouping_options.LINT_GROUPING_OPTIONS.map((opt) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_FilterPill.FilterPill, {
45
- mode: opt.key === grouping ? "active" : "neutral",
46
- label: opt.label,
47
- icon: opt.icon,
48
- title: `Group by ${opt.label}`,
49
- onClick: () => onGroupingChange(opt.key)
50
- }, opt.key))
59
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ProblemFacet.ProblemFacet, {
60
+ label: "Severity",
61
+ options: severityOptions,
62
+ state: filters.severity,
63
+ onChange: (severity) => onFiltersChange({
64
+ ...filters,
65
+ severity
66
+ })
51
67
  }),
52
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
53
- className: "mx-0.5 text-border",
54
- "aria-hidden": true,
55
- children: "|"
68
+ (linters.length > 1 || filters.linter.size > 0) && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ProblemFacet.ProblemFacet, {
69
+ label: "Linter",
70
+ options: linterOptions,
71
+ state: filters.linter,
72
+ onChange: (linter) => onFiltersChange({
73
+ ...filters,
74
+ linter
75
+ })
56
76
  }),
57
- SEVERITY_ORDER.map((severity) => {
58
- const count = severityCounts[severity];
59
- if (count === 0 && filters.severity.size === 0) return null;
60
- const mode = filters.severity.get(severity);
61
- const label = require_marks.LINT_SEVERITIES[severity].label;
62
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_FilterPill.FilterPill, {
63
- mode: mode ?? "neutral",
64
- count,
65
- badge: SEVERITY_BADGE[severity],
66
- label: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
67
- className: "inline-flex items-center gap-1",
68
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_MarkIcons.LintSeverityIcon, { severity }), label]
69
- }),
70
- title: triStateTitle(label, mode),
71
- onClick: () => onFiltersChange({
72
- ...filters,
73
- severity: require_filterState.cycleFilterState(filters.severity, severity)
74
- })
75
- }, severity);
76
- }),
77
- linters.length > 1 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
78
- className: "mx-0.5 text-border",
79
- "aria-hidden": true,
80
- children: "|"
81
- }), linters.map((linter) => {
82
- const mode = filters.linter.get(linter);
83
- const name = require_marks.toolMark(linter)?.label ?? linter;
84
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_FilterPill.FilterPill, {
85
- mode: mode ?? "neutral",
86
- label: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
87
- className: "inline-flex items-center gap-1",
88
- children: [
89
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_MarkIcons.ToolIcon, { tool: linter }),
90
- name,
91
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
92
- className: "text-[10px] tabular-nums opacity-70",
93
- title: String(linterCounts[linter] ?? 0),
94
- children: require_status.formatCount(linterCounts[linter] ?? 0)
95
- })
96
- ]
97
- }),
98
- title: triStateTitle(linter, mode),
99
- onClick: () => onFiltersChange({
100
- ...filters,
101
- linter: require_filterState.cycleFilterState(filters.linter, linter)
102
- })
103
- }, linter);
104
- })] }),
105
77
  hasActive && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
106
78
  type: "button",
107
79
  className: "ml-1 inline-flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
@@ -109,11 +81,34 @@ function LintFilterBar({ results, grouping, onGroupingChange, filters, onFilters
109
81
  severity: /* @__PURE__ */ new Map(),
110
82
  linter: /* @__PURE__ */ new Map()
111
83
  }),
112
- children: "Clear"
84
+ children: "Clear filters"
113
85
  })
114
86
  ]
115
87
  });
116
88
  }
89
+ /**
90
+ * Grouping picker plus severity and linter facets for the lint tree.
91
+ * Controlled: the host owns grouping and filters (typically in the URL).
92
+ */
93
+ function LintFilterBar({ className, ...props }) {
94
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
95
+ className: require_utils.cn("flex flex-wrap items-center gap-1.5", className),
96
+ "data-lint-filter-bar": "",
97
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_ProblemViewOptions.ProblemViewOptions, {
98
+ active: props.filters.severity.size + props.filters.linter.size,
99
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(LintGroupingPicker, {
100
+ grouping: props.grouping,
101
+ onGroupingChange: props.onGroupingChange
102
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LintFilterFacets, {
103
+ results: props.results,
104
+ filters: props.filters,
105
+ onFiltersChange: props.onFiltersChange
106
+ })]
107
+ })
108
+ });
109
+ }
117
110
  exports.LintFilterBar = LintFilterBar;
111
+ exports.LintFilterFacets = LintFilterFacets;
112
+ exports.LintGroupingPicker = LintGroupingPicker;
118
113
 
119
114
  //# sourceMappingURL=LintFilterBar.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"LintFilterBar.cjs","names":["countLintBySeverity","countLintByLinter","collectLintLinters","cn","LINT_GROUPING_OPTIONS","FilterPill","LINT_SEVERITIES","LintSeverityIcon","cycleFilterState","_Fragment","toolMark","ToolIcon","formatCount"],"sources":["../../../src/data/lint/LintFilterBar.tsx"],"sourcesContent":["import { cn } from \"../../lib/utils\";\nimport { FilterPill } from \"../FilterPill\";\nimport { LINT_GROUPING_OPTIONS } from \"./grouping-options\";\nimport { cycleFilterState, type FilterMode } from \"../test-runner/filterState\";\nimport { LINT_SEVERITIES, toolMark } from \"../test-runner/marks\";\nimport { LintSeverityIcon, ToolIcon } from \"../test-runner/MarkIcons\";\nimport { formatCount } from \"../test-runner/status\";\nimport { collectLintLinters, countLintByLinter, countLintBySeverity } from \"./stats\";\nimport type { LintFilters, LintGrouping, LintSeverity, LinterResult } from \"./types\";\n\nexport type LintFilterBarProps = {\n results: readonly LinterResult[];\n grouping: LintGrouping;\n onGroupingChange: (next: LintGrouping) => void;\n filters: LintFilters;\n onFiltersChange: (next: LintFilters) => void;\n className?: string;\n};\n\nconst SEVERITY_ORDER: readonly LintSeverity[] = [\"error\", \"warning\", \"info\"];\n\nconst SEVERITY_BADGE: Record<LintSeverity, string> = {\n error: \"bg-red-600\",\n warning: \"bg-amber-600\",\n info: \"bg-sky-600\",\n};\n\nfunction triStateTitle(label: string, mode: FilterMode | undefined): string {\n if (mode === \"include\") return `${label}: included. Click to exclude`;\n if (mode === \"exclude\") return `${label}: excluded. Click to clear`;\n return `${label}: neutral. Click to include`;\n}\n\n/**\n * Grouping picker plus tri-state severity and linter filters for the lint\n * tree. Controlled: the host owns grouping and filters (typically in the URL).\n * Counts follow the other filter, so each pill shows what picking it would leave.\n */\nexport function LintFilterBar({\n results,\n grouping,\n onGroupingChange,\n filters,\n onFiltersChange,\n className,\n}: LintFilterBarProps) {\n const severityCounts = countLintBySeverity(results, filters.linter);\n const linterCounts = countLintByLinter(results, filters.severity);\n const linters = collectLintLinters(results);\n const hasActive = filters.severity.size > 0 || filters.linter.size > 0;\n\n return (\n <div className={cn(\"flex flex-wrap items-center gap-1.5\", className)} data-lint-filter-bar=\"\">\n <div role=\"group\" aria-label=\"Group by\" className=\"flex flex-wrap items-center gap-1.5\">\n {LINT_GROUPING_OPTIONS.map((opt) => (\n <FilterPill\n key={opt.key}\n mode={opt.key === grouping ? \"active\" : \"neutral\"}\n label={opt.label}\n icon={opt.icon}\n title={`Group by ${opt.label}`}\n onClick={() => onGroupingChange(opt.key)}\n />\n ))}\n </div>\n\n <span className=\"mx-0.5 text-border\" aria-hidden>\n |\n </span>\n\n {SEVERITY_ORDER.map((severity) => {\n const count = severityCounts[severity];\n if (count === 0 && filters.severity.size === 0) return null;\n const mode = filters.severity.get(severity);\n const label = LINT_SEVERITIES[severity].label;\n return (\n <FilterPill\n key={severity}\n mode={mode ?? \"neutral\"}\n count={count}\n badge={SEVERITY_BADGE[severity]}\n label={\n <span className=\"inline-flex items-center gap-1\">\n <LintSeverityIcon severity={severity} />\n {label}\n </span>\n }\n title={triStateTitle(label, mode)}\n onClick={() =>\n onFiltersChange({ ...filters, severity: cycleFilterState(filters.severity, severity) })\n }\n />\n );\n })}\n\n {linters.length > 1 && (\n <>\n <span className=\"mx-0.5 text-border\" aria-hidden>\n |\n </span>\n {linters.map((linter) => {\n const mode = filters.linter.get(linter);\n const name = toolMark(linter)?.label ?? linter;\n return (\n <FilterPill\n key={linter}\n mode={mode ?? \"neutral\"}\n label={\n <span className=\"inline-flex items-center gap-1\">\n <ToolIcon tool={linter} />\n {name}\n <span className=\"text-[10px] tabular-nums opacity-70\" title={String(linterCounts[linter] ?? 0)}>\n {formatCount(linterCounts[linter] ?? 0)}\n </span>\n </span>\n }\n title={triStateTitle(linter, mode)}\n onClick={() =>\n onFiltersChange({ ...filters, linter: cycleFilterState(filters.linter, linter) })\n }\n />\n );\n })}\n </>\n )}\n\n {hasActive && (\n <button\n type=\"button\"\n className=\"ml-1 inline-flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n onClick={() => onFiltersChange({ severity: new Map(), linter: new Map() })}\n >\n Clear\n </button>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"LintFilterBar.cjs","names":["cn","LINT_GROUPING_OPTIONS","countLintBySeverity","countLintByLinter","collectLintLinters","LINT_SEVERITIES","LintSeverityIcon","toolMark","ToolIcon","ProblemFacet","ProblemViewOptions"],"sources":["../../../src/data/lint/LintFilterBar.tsx"],"sourcesContent":["import { cn } from \"../../lib/utils\";\nimport type { MultiSelectOption } from \"../../components/MultiSelect\";\nimport { ProblemFacet } from \"../diagnostics/ProblemFacet\";\nimport { ProblemViewOptions } from \"../diagnostics/ProblemViewOptions\";\nimport { LINT_GROUPING_OPTIONS } from \"./grouping-options\";\nimport { LINT_SEVERITIES, toolMark } from \"../test-runner/marks\";\nimport { LintSeverityIcon, ToolIcon } from \"../test-runner/MarkIcons\";\nimport { collectLintLinters, countLintByLinter, countLintBySeverity } from \"./stats\";\nimport type { LintFilters, LintGrouping, LintSeverity, LinterResult } from \"./types\";\n\ntype GroupingProps = {\n grouping: LintGrouping;\n onGroupingChange: (next: LintGrouping) => void;\n};\n\ntype FacetProps = {\n results: readonly LinterResult[];\n filters: LintFilters;\n onFiltersChange: (next: LintFilters) => void;\n};\n\nexport type LintFilterBarProps = GroupingProps & FacetProps & { className?: string };\n\nconst SEVERITY_ORDER: readonly LintSeverity[] = [\"error\", \"warning\", \"info\"];\n\n/** One pill per lint grouping; the active one is highlighted. */\nexport function LintGroupingPicker({ grouping, onGroupingChange, className }: GroupingProps & { className?: string }) {\n return (\n <div role=\"group\" aria-label=\"Group by\" className={cn(\"space-y-1\", className)}>\n {LINT_GROUPING_OPTIONS.map((opt) => (\n <button type=\"button\"\n key={opt.key}\n aria-pressed={opt.key === grouping}\n className={cn(\"block w-full rounded px-2 py-1 text-left text-xs hover:bg-muted\", opt.key === grouping && \"bg-muted font-medium\")}\n title={`Group by ${opt.label}`}\n onClick={() => onGroupingChange(opt.key)}\n >{opt.label}</button>\n ))}\n </div>\n );\n}\n\n/**\n * Severity and linter facets: compact triggers that each open a multi-select\n * with icons where every option is included, excluded or left neutral. Counts\n * follow the other facet, so each option shows what picking it would leave. A\n * severity nobody reported is offered only while a severity filter is active.\n */\nexport function LintFilterFacets({ results, filters, onFiltersChange, className }: FacetProps & { className?: string }) {\n const severityCounts = countLintBySeverity(results, filters.linter);\n const linterCounts = countLintByLinter(results, filters.severity);\n const linters = [...new Set([...collectLintLinters(results), ...filters.linter.keys()])];\n const hasActive = filters.severity.size > 0 || filters.linter.size > 0;\n\n const severityOptions: MultiSelectOption[] = SEVERITY_ORDER.filter(\n (s) => severityCounts[s] > 0 || filters.severity.size > 0,\n ).map((s) => ({\n value: s,\n label: LINT_SEVERITIES[s].label,\n icon: <LintSeverityIcon severity={s} />,\n count: severityCounts[s],\n }));\n const linterOptions: MultiSelectOption[] = linters.map((linter) => ({\n value: linter,\n label: toolMark(linter)?.label ?? linter,\n title: linter,\n icon: <ToolIcon tool={linter} />,\n count: linterCounts[linter] ?? 0,\n }));\n\n return (\n <div className={cn(\"space-y-3\", className)} data-lint-filter-facets=\"\">\n <ProblemFacet\n label=\"Severity\"\n options={severityOptions}\n state={filters.severity}\n onChange={(severity) => onFiltersChange({ ...filters, severity: severity as LintFilters[\"severity\"] })}\n />\n {(linters.length > 1 || filters.linter.size > 0) && (\n <ProblemFacet\n label=\"Linter\"\n options={linterOptions}\n state={filters.linter}\n onChange={(linter) => onFiltersChange({ ...filters, linter })}\n />\n )}\n {hasActive && (\n <button\n type=\"button\"\n className=\"ml-1 inline-flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n onClick={() => onFiltersChange({ severity: new Map(), linter: new Map() })}\n >\n Clear filters\n </button>\n )}\n </div>\n );\n}\n\n/**\n * Grouping picker plus severity and linter facets for the lint tree.\n * Controlled: the host owns grouping and filters (typically in the URL).\n */\nexport function LintFilterBar({ className, ...props }: LintFilterBarProps) {\n return (\n <div className={cn(\"flex flex-wrap items-center gap-1.5\", className)} data-lint-filter-bar=\"\">\n <ProblemViewOptions active={props.filters.severity.size + props.filters.linter.size}>\n <LintGroupingPicker grouping={props.grouping} onGroupingChange={props.onGroupingChange} />\n <LintFilterFacets results={props.results} filters={props.filters} onFiltersChange={props.onFiltersChange} />\n </ProblemViewOptions>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,16 +1,33 @@
1
1
  import { LintFilters, LintGrouping, LinterResult } from './types.js';
2
- export type LintFilterBarProps = {
3
- results: readonly LinterResult[];
2
+ type GroupingProps = {
4
3
  grouping: LintGrouping;
5
4
  onGroupingChange: (next: LintGrouping) => void;
5
+ };
6
+ type FacetProps = {
7
+ results: readonly LinterResult[];
6
8
  filters: LintFilters;
7
9
  onFiltersChange: (next: LintFilters) => void;
10
+ };
11
+ export type LintFilterBarProps = GroupingProps & FacetProps & {
8
12
  className?: string;
9
13
  };
14
+ /** One pill per lint grouping; the active one is highlighted. */
15
+ export declare function LintGroupingPicker({ grouping, onGroupingChange, className }: GroupingProps & {
16
+ className?: string;
17
+ }): import("react").JSX.Element;
18
+ /**
19
+ * Severity and linter facets: compact triggers that each open a multi-select
20
+ * with icons where every option is included, excluded or left neutral. Counts
21
+ * follow the other facet, so each option shows what picking it would leave. A
22
+ * severity nobody reported is offered only while a severity filter is active.
23
+ */
24
+ export declare function LintFilterFacets({ results, filters, onFiltersChange, className }: FacetProps & {
25
+ className?: string;
26
+ }): import("react").JSX.Element;
10
27
  /**
11
- * Grouping picker plus tri-state severity and linter filters for the lint
12
- * tree. Controlled: the host owns grouping and filters (typically in the URL).
13
- * Counts follow the other filter, so each pill shows what picking it would leave.
28
+ * Grouping picker plus severity and linter facets for the lint tree.
29
+ * Controlled: the host owns grouping and filters (typically in the URL).
14
30
  */
15
- export declare function LintFilterBar({ results, grouping, onGroupingChange, filters, onFiltersChange, className, }: LintFilterBarProps): import("react").JSX.Element;
31
+ export declare function LintFilterBar({ className, ...props }: LintFilterBarProps): import("react").JSX.Element;
32
+ export {};
16
33
  //# sourceMappingURL=LintFilterBar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LintFilterBar.d.ts","sourceRoot":"","sources":["../../../src/data/lint/LintFilterBar.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAgB,YAAY,EAAE,MAAM,SAAS,CAAC;AAErF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;IACjC,QAAQ,EAAE,YAAY,CAAC;IACvB,gBAAgB,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAC/C,OAAO,EAAE,WAAW,CAAC;IACrB,eAAe,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAgBF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,QAAQ,EACR,gBAAgB,EAChB,OAAO,EACP,eAAe,EACf,SAAS,GACV,EAAE,kBAAkB,+BA4FpB"}
1
+ {"version":3,"file":"LintFilterBar.d.ts","sourceRoot":"","sources":["../../../src/data/lint/LintFilterBar.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAgB,YAAY,EAAE,MAAM,SAAS,CAAC;AAErF,KAAK,aAAa,GAAG;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,gBAAgB,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;CAChD,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;IACjC,OAAO,EAAE,WAAW,CAAC;IACrB,eAAe,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG,UAAU,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAIrF,iEAAiE;AACjE,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAAE,EAAE,aAAa,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,+BAcnH;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE,UAAU,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,+BAiDrH;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,+BASxE"}