openvsx-webui-test 0.17.1 → 0.18.0-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (337) hide show
  1. package/lib/components/button-with-progress.d.ts +1 -0
  2. package/lib/components/button-with-progress.d.ts.map +1 -1
  3. package/lib/components/button-with-progress.js +1 -1
  4. package/lib/components/button-with-progress.js.map +1 -1
  5. package/lib/components/sanitized-markdown.d.ts.map +1 -1
  6. package/lib/components/sanitized-markdown.js +79 -1
  7. package/lib/components/sanitized-markdown.js.map +1 -1
  8. package/lib/components/scan-admin/common/auto-refresh.d.ts +21 -0
  9. package/lib/components/scan-admin/common/auto-refresh.d.ts.map +1 -0
  10. package/lib/components/scan-admin/common/auto-refresh.js +45 -0
  11. package/lib/components/scan-admin/common/auto-refresh.js.map +1 -0
  12. package/lib/components/scan-admin/common/conditional-tooltip.d.ts +24 -0
  13. package/lib/components/scan-admin/common/conditional-tooltip.d.ts.map +1 -0
  14. package/lib/components/scan-admin/common/conditional-tooltip.js +63 -0
  15. package/lib/components/scan-admin/common/conditional-tooltip.js.map +1 -0
  16. package/lib/components/scan-admin/common/file-table.d.ts +23 -0
  17. package/lib/components/scan-admin/common/file-table.d.ts.map +1 -0
  18. package/lib/components/scan-admin/common/file-table.js +350 -0
  19. package/lib/components/scan-admin/common/file-table.js.map +1 -0
  20. package/lib/components/scan-admin/common/index.d.ts +18 -0
  21. package/lib/components/scan-admin/common/index.d.ts.map +1 -0
  22. package/lib/components/scan-admin/common/index.js +18 -0
  23. package/lib/components/scan-admin/common/index.js.map +1 -0
  24. package/lib/components/scan-admin/common/tab-panel.d.ts +25 -0
  25. package/lib/components/scan-admin/common/tab-panel.d.ts.map +1 -0
  26. package/lib/components/scan-admin/common/tab-panel.js +22 -0
  27. package/lib/components/scan-admin/common/tab-panel.js.map +1 -0
  28. package/lib/components/scan-admin/common/utils.d.ts +15 -0
  29. package/lib/components/scan-admin/common/utils.d.ts.map +1 -0
  30. package/lib/components/scan-admin/common/utils.js +46 -0
  31. package/lib/components/scan-admin/common/utils.js.map +1 -0
  32. package/lib/components/scan-admin/dialogs/file-dialog.d.ts +19 -0
  33. package/lib/components/scan-admin/dialogs/file-dialog.d.ts.map +1 -0
  34. package/lib/components/scan-admin/dialogs/file-dialog.js +85 -0
  35. package/lib/components/scan-admin/dialogs/file-dialog.js.map +1 -0
  36. package/lib/components/scan-admin/dialogs/index.d.ts +15 -0
  37. package/lib/components/scan-admin/dialogs/index.d.ts.map +1 -0
  38. package/lib/components/scan-admin/dialogs/index.js +15 -0
  39. package/lib/components/scan-admin/dialogs/index.js.map +1 -0
  40. package/lib/components/scan-admin/dialogs/quarantine-dialog.d.ts +23 -0
  41. package/lib/components/scan-admin/dialogs/quarantine-dialog.d.ts.map +1 -0
  42. package/lib/components/scan-admin/dialogs/quarantine-dialog.js +192 -0
  43. package/lib/components/scan-admin/dialogs/quarantine-dialog.js.map +1 -0
  44. package/lib/components/scan-admin/index.d.ts +20 -0
  45. package/lib/components/scan-admin/index.d.ts.map +1 -0
  46. package/lib/components/scan-admin/index.js +25 -0
  47. package/lib/components/scan-admin/index.js.map +1 -0
  48. package/lib/components/scan-admin/scan-card/index.d.ts +20 -0
  49. package/lib/components/scan-admin/scan-card/index.d.ts.map +1 -0
  50. package/lib/components/scan-admin/scan-card/index.js +20 -0
  51. package/lib/components/scan-admin/scan-card/index.js.map +1 -0
  52. package/lib/components/scan-admin/scan-card/scan-card-content.d.ts +30 -0
  53. package/lib/components/scan-admin/scan-card/scan-card-content.d.ts.map +1 -0
  54. package/lib/components/scan-admin/scan-card/scan-card-content.js +232 -0
  55. package/lib/components/scan-admin/scan-card/scan-card-content.js.map +1 -0
  56. package/lib/components/scan-admin/scan-card/scan-card-expand-strip-badges.d.ts +26 -0
  57. package/lib/components/scan-admin/scan-card/scan-card-expand-strip-badges.d.ts.map +1 -0
  58. package/lib/components/scan-admin/scan-card/scan-card-expand-strip-badges.js +121 -0
  59. package/lib/components/scan-admin/scan-card/scan-card-expand-strip-badges.js.map +1 -0
  60. package/lib/components/scan-admin/scan-card/scan-card-expand-strip.d.ts +27 -0
  61. package/lib/components/scan-admin/scan-card/scan-card-expand-strip.d.ts.map +1 -0
  62. package/lib/components/scan-admin/scan-card/scan-card-expand-strip.js +66 -0
  63. package/lib/components/scan-admin/scan-card/scan-card-expand-strip.js.map +1 -0
  64. package/lib/components/scan-admin/scan-card/scan-card-expanded-content.d.ts +26 -0
  65. package/lib/components/scan-admin/scan-card/scan-card-expanded-content.d.ts.map +1 -0
  66. package/lib/components/scan-admin/scan-card/scan-card-expanded-content.js +151 -0
  67. package/lib/components/scan-admin/scan-card/scan-card-expanded-content.js.map +1 -0
  68. package/lib/components/scan-admin/scan-card/scan-card-header.d.ts +26 -0
  69. package/lib/components/scan-admin/scan-card/scan-card-header.d.ts.map +1 -0
  70. package/lib/components/scan-admin/scan-card/scan-card-header.js +101 -0
  71. package/lib/components/scan-admin/scan-card/scan-card-header.js.map +1 -0
  72. package/lib/components/scan-admin/scan-card/scan-card.d.ts +34 -0
  73. package/lib/components/scan-admin/scan-card/scan-card.d.ts.map +1 -0
  74. package/lib/components/scan-admin/scan-card/scan-card.js +90 -0
  75. package/lib/components/scan-admin/scan-card/scan-card.js.map +1 -0
  76. package/lib/components/scan-admin/scan-card/scan-detail-card.d.ts +38 -0
  77. package/lib/components/scan-admin/scan-card/scan-detail-card.d.ts.map +1 -0
  78. package/lib/components/scan-admin/scan-card/scan-detail-card.js +72 -0
  79. package/lib/components/scan-admin/scan-card/scan-detail-card.js.map +1 -0
  80. package/lib/components/scan-admin/scan-card/utils.d.ts +48 -0
  81. package/lib/components/scan-admin/scan-card/utils.d.ts.map +1 -0
  82. package/lib/components/scan-admin/scan-card/utils.js +166 -0
  83. package/lib/components/scan-admin/scan-card/utils.js.map +1 -0
  84. package/lib/components/scan-admin/tab-contents/allow-list-tab-content.d.ts +19 -0
  85. package/lib/components/scan-admin/tab-contents/allow-list-tab-content.d.ts.map +1 -0
  86. package/lib/components/scan-admin/tab-contents/allow-list-tab-content.js +55 -0
  87. package/lib/components/scan-admin/tab-contents/allow-list-tab-content.js.map +1 -0
  88. package/lib/components/scan-admin/tab-contents/auto-rejected-tab-content.d.ts +19 -0
  89. package/lib/components/scan-admin/tab-contents/auto-rejected-tab-content.d.ts.map +1 -0
  90. package/lib/components/scan-admin/tab-contents/auto-rejected-tab-content.js +43 -0
  91. package/lib/components/scan-admin/tab-contents/auto-rejected-tab-content.js.map +1 -0
  92. package/lib/components/scan-admin/tab-contents/block-list-tab-content.d.ts +19 -0
  93. package/lib/components/scan-admin/tab-contents/block-list-tab-content.d.ts.map +1 -0
  94. package/lib/components/scan-admin/tab-contents/block-list-tab-content.js +55 -0
  95. package/lib/components/scan-admin/tab-contents/block-list-tab-content.js.map +1 -0
  96. package/lib/components/scan-admin/tab-contents/index.d.ts +18 -0
  97. package/lib/components/scan-admin/tab-contents/index.d.ts.map +1 -0
  98. package/lib/components/scan-admin/tab-contents/index.js +18 -0
  99. package/lib/components/scan-admin/tab-contents/index.js.map +1 -0
  100. package/lib/components/scan-admin/tab-contents/quarantined-tab-content.d.ts +19 -0
  101. package/lib/components/scan-admin/tab-contents/quarantined-tab-content.d.ts.map +1 -0
  102. package/lib/components/scan-admin/tab-contents/quarantined-tab-content.js +78 -0
  103. package/lib/components/scan-admin/tab-contents/quarantined-tab-content.js.map +1 -0
  104. package/lib/components/scan-admin/tab-contents/scans-tab-content.d.ts +19 -0
  105. package/lib/components/scan-admin/tab-contents/scans-tab-content.d.ts.map +1 -0
  106. package/lib/components/scan-admin/tab-contents/scans-tab-content.js +52 -0
  107. package/lib/components/scan-admin/tab-contents/scans-tab-content.js.map +1 -0
  108. package/lib/components/scan-admin/toolbars/counts-toolbar.d.ts +35 -0
  109. package/lib/components/scan-admin/toolbars/counts-toolbar.d.ts.map +1 -0
  110. package/lib/components/scan-admin/toolbars/counts-toolbar.js +132 -0
  111. package/lib/components/scan-admin/toolbars/counts-toolbar.js.map +1 -0
  112. package/lib/components/scan-admin/toolbars/index.d.ts +16 -0
  113. package/lib/components/scan-admin/toolbars/index.d.ts.map +1 -0
  114. package/lib/components/scan-admin/toolbars/index.js +16 -0
  115. package/lib/components/scan-admin/toolbars/index.js.map +1 -0
  116. package/lib/components/scan-admin/toolbars/search-toolbar.d.ts +43 -0
  117. package/lib/components/scan-admin/toolbars/search-toolbar.d.ts.map +1 -0
  118. package/lib/components/scan-admin/toolbars/search-toolbar.js +106 -0
  119. package/lib/components/scan-admin/toolbars/search-toolbar.js.map +1 -0
  120. package/lib/components/scan-admin/toolbars/tab-toolbar.d.ts +25 -0
  121. package/lib/components/scan-admin/toolbars/tab-toolbar.d.ts.map +1 -0
  122. package/lib/components/scan-admin/toolbars/tab-toolbar.js +33 -0
  123. package/lib/components/scan-admin/toolbars/tab-toolbar.js.map +1 -0
  124. package/lib/context/scan-admin/index.d.ts +21 -0
  125. package/lib/context/scan-admin/index.d.ts.map +1 -0
  126. package/lib/context/scan-admin/index.js +27 -0
  127. package/lib/context/scan-admin/index.js.map +1 -0
  128. package/lib/context/scan-admin/scan-actions.d.ts +19 -0
  129. package/lib/context/scan-admin/scan-actions.d.ts.map +1 -0
  130. package/lib/context/scan-admin/scan-actions.js +64 -0
  131. package/lib/context/scan-admin/scan-actions.js.map +1 -0
  132. package/lib/context/scan-admin/scan-api-actions.d.ts +26 -0
  133. package/lib/context/scan-admin/scan-api-actions.d.ts.map +1 -0
  134. package/lib/context/scan-admin/scan-api-actions.js +118 -0
  135. package/lib/context/scan-admin/scan-api-actions.js.map +1 -0
  136. package/lib/context/scan-admin/scan-api-effects.d.ts +40 -0
  137. package/lib/context/scan-admin/scan-api-effects.d.ts.map +1 -0
  138. package/lib/context/scan-admin/scan-api-effects.js +446 -0
  139. package/lib/context/scan-admin/scan-api-effects.js.map +1 -0
  140. package/lib/context/scan-admin/scan-context-types.d.ts +69 -0
  141. package/lib/context/scan-admin/scan-context-types.d.ts.map +1 -0
  142. package/lib/context/scan-admin/scan-context-types.js +14 -0
  143. package/lib/context/scan-admin/scan-context-types.js.map +1 -0
  144. package/lib/context/scan-admin/scan-context.d.ts +17 -0
  145. package/lib/context/scan-admin/scan-context.d.ts.map +1 -0
  146. package/lib/context/scan-admin/scan-context.js +90 -0
  147. package/lib/context/scan-admin/scan-context.js.map +1 -0
  148. package/lib/context/scan-admin/scan-helpers.d.ts +28 -0
  149. package/lib/context/scan-admin/scan-helpers.d.ts.map +1 -0
  150. package/lib/context/scan-admin/scan-helpers.js +56 -0
  151. package/lib/context/scan-admin/scan-helpers.js.map +1 -0
  152. package/lib/context/scan-admin/scan-reducer.d.ts +18 -0
  153. package/lib/context/scan-admin/scan-reducer.d.ts.map +1 -0
  154. package/lib/context/scan-admin/scan-reducer.js +194 -0
  155. package/lib/context/scan-admin/scan-reducer.js.map +1 -0
  156. package/lib/context/scan-admin/scan-types.d.ts +292 -0
  157. package/lib/context/scan-admin/scan-types.d.ts.map +1 -0
  158. package/lib/context/scan-admin/scan-types.js +67 -0
  159. package/lib/context/scan-admin/scan-types.js.map +1 -0
  160. package/lib/default/page-settings.d.ts.map +1 -1
  161. package/lib/default/page-settings.js +3 -0
  162. package/lib/default/page-settings.js.map +1 -1
  163. package/lib/default/theme.d.ts +50 -12
  164. package/lib/default/theme.d.ts.map +1 -1
  165. package/lib/default/theme.js +42 -0
  166. package/lib/default/theme.js.map +1 -1
  167. package/lib/extension-registry-service.d.ts +85 -1
  168. package/lib/extension-registry-service.d.ts.map +1 -1
  169. package/lib/extension-registry-service.js +197 -0
  170. package/lib/extension-registry-service.js.map +1 -1
  171. package/lib/extension-registry-types.d.ts +140 -0
  172. package/lib/extension-registry-types.d.ts.map +1 -1
  173. package/lib/extension-registry-types.js.map +1 -1
  174. package/lib/hooks/scan-admin/index.d.ts +34 -0
  175. package/lib/hooks/scan-admin/index.d.ts.map +1 -0
  176. package/lib/hooks/scan-admin/index.js +28 -0
  177. package/lib/hooks/scan-admin/index.js.map +1 -0
  178. package/lib/hooks/scan-admin/use-auto-rejected-tab.d.ts +76 -0
  179. package/lib/hooks/scan-admin/use-auto-rejected-tab.d.ts.map +1 -0
  180. package/lib/hooks/scan-admin/use-auto-rejected-tab.js +79 -0
  181. package/lib/hooks/scan-admin/use-auto-rejected-tab.js.map +1 -0
  182. package/lib/hooks/scan-admin/use-dialogs.d.ts +43 -0
  183. package/lib/hooks/scan-admin/use-dialogs.d.ts.map +1 -0
  184. package/lib/hooks/scan-admin/use-dialogs.js +55 -0
  185. package/lib/hooks/scan-admin/use-dialogs.js.map +1 -0
  186. package/lib/hooks/scan-admin/use-file-list-tab.d.ts +208 -0
  187. package/lib/hooks/scan-admin/use-file-list-tab.d.ts.map +1 -0
  188. package/lib/hooks/scan-admin/use-file-list-tab.js +125 -0
  189. package/lib/hooks/scan-admin/use-file-list-tab.js.map +1 -0
  190. package/lib/hooks/scan-admin/use-pagination.d.ts +36 -0
  191. package/lib/hooks/scan-admin/use-pagination.d.ts.map +1 -0
  192. package/lib/hooks/scan-admin/use-pagination.js +79 -0
  193. package/lib/hooks/scan-admin/use-pagination.js.map +1 -0
  194. package/lib/hooks/scan-admin/use-quarantined-tab.d.ts +92 -0
  195. package/lib/hooks/scan-admin/use-quarantined-tab.d.ts.map +1 -0
  196. package/lib/hooks/scan-admin/use-quarantined-tab.js +125 -0
  197. package/lib/hooks/scan-admin/use-quarantined-tab.js.map +1 -0
  198. package/lib/hooks/scan-admin/use-scan-card-state.d.ts +29 -0
  199. package/lib/hooks/scan-admin/use-scan-card-state.d.ts.map +1 -0
  200. package/lib/hooks/scan-admin/use-scan-card-state.js +50 -0
  201. package/lib/hooks/scan-admin/use-scan-card-state.js.map +1 -0
  202. package/lib/hooks/scan-admin/use-scan-filters.d.ts +53 -0
  203. package/lib/hooks/scan-admin/use-scan-filters.d.ts.map +1 -0
  204. package/lib/hooks/scan-admin/use-scan-filters.js +75 -0
  205. package/lib/hooks/scan-admin/use-scan-filters.js.map +1 -0
  206. package/lib/hooks/scan-admin/use-scans-tab.d.ts +85 -0
  207. package/lib/hooks/scan-admin/use-scans-tab.d.ts.map +1 -0
  208. package/lib/hooks/scan-admin/use-scans-tab.js +87 -0
  209. package/lib/hooks/scan-admin/use-scans-tab.js.map +1 -0
  210. package/lib/hooks/scan-admin/use-search.d.ts +32 -0
  211. package/lib/hooks/scan-admin/use-search.d.ts.map +1 -0
  212. package/lib/hooks/scan-admin/use-search.js +48 -0
  213. package/lib/hooks/scan-admin/use-search.js.map +1 -0
  214. package/lib/hooks/scan-admin/use-tab-navigation.d.ts +96 -0
  215. package/lib/hooks/scan-admin/use-tab-navigation.d.ts.map +1 -0
  216. package/lib/hooks/scan-admin/use-tab-navigation.js +70 -0
  217. package/lib/hooks/scan-admin/use-tab-navigation.js.map +1 -0
  218. package/lib/hooks/scan-admin/use-url-sync.d.ts +22 -0
  219. package/lib/hooks/scan-admin/use-url-sync.d.ts.map +1 -0
  220. package/lib/hooks/scan-admin/use-url-sync.js +252 -0
  221. package/lib/hooks/scan-admin/use-url-sync.js.map +1 -0
  222. package/lib/page-settings.d.ts +4 -0
  223. package/lib/page-settings.d.ts.map +1 -1
  224. package/lib/pages/admin-dashboard/admin-dashboard.d.ts +1 -0
  225. package/lib/pages/admin-dashboard/admin-dashboard.d.ts.map +1 -1
  226. package/lib/pages/admin-dashboard/admin-dashboard.js +23 -3
  227. package/lib/pages/admin-dashboard/admin-dashboard.js.map +1 -1
  228. package/lib/pages/admin-dashboard/publisher-admin.js +1 -1
  229. package/lib/pages/admin-dashboard/publisher-admin.js.map +1 -1
  230. package/lib/pages/admin-dashboard/publisher-revoke-dialog.d.ts.map +1 -1
  231. package/lib/pages/admin-dashboard/publisher-revoke-dialog.js +1 -1
  232. package/lib/pages/admin-dashboard/publisher-revoke-dialog.js.map +1 -1
  233. package/lib/pages/admin-dashboard/scan-admin.d.ts +20 -0
  234. package/lib/pages/admin-dashboard/scan-admin.d.ts.map +1 -0
  235. package/lib/pages/admin-dashboard/scan-admin.js +66 -0
  236. package/lib/pages/admin-dashboard/scan-admin.js.map +1 -0
  237. package/lib/pages/admin-dashboard/welcome.d.ts.map +1 -1
  238. package/lib/pages/admin-dashboard/welcome.js +2 -1
  239. package/lib/pages/admin-dashboard/welcome.js.map +1 -1
  240. package/lib/pages/extension-detail/extension-detail-overview.d.ts.map +1 -1
  241. package/lib/pages/extension-detail/extension-detail-overview.js +9 -1
  242. package/lib/pages/extension-detail/extension-detail-overview.js.map +1 -1
  243. package/lib/pages/extension-detail/extension-detail-reviews.d.ts.map +1 -1
  244. package/lib/pages/extension-detail/extension-detail-reviews.js +67 -18
  245. package/lib/pages/extension-detail/extension-detail-reviews.js.map +1 -1
  246. package/lib/pages/extension-detail/extension-detail.js +2 -2
  247. package/lib/pages/extension-detail/extension-detail.js.map +1 -1
  248. package/lib/pages/extension-detail/extension-rating-stars.d.ts +2 -2
  249. package/lib/pages/extension-detail/extension-rating-stars.d.ts.map +1 -1
  250. package/lib/pages/extension-detail/extension-rating-stars.js +1 -1
  251. package/lib/pages/extension-detail/extension-rating-stars.js.map +1 -1
  252. package/lib/pages/extension-list/extension-list-item.js +2 -2
  253. package/lib/pages/extension-list/extension-list-item.js.map +1 -1
  254. package/lib/pages/user/user-namespace-extension-list-item.d.ts.map +1 -1
  255. package/lib/pages/user/user-namespace-extension-list-item.js +23 -9
  256. package/lib/pages/user/user-namespace-extension-list-item.js.map +1 -1
  257. package/lib/pages/user/user-publisher-agreement.d.ts.map +1 -1
  258. package/lib/pages/user/user-publisher-agreement.js +34 -13
  259. package/lib/pages/user/user-publisher-agreement.js.map +1 -1
  260. package/lib/pages/user/user-settings-profile.d.ts.map +1 -1
  261. package/lib/pages/user/user-settings-profile.js +10 -5
  262. package/lib/pages/user/user-settings-profile.js.map +1 -1
  263. package/lib/pages/user/user-settings-tokens.d.ts.map +1 -1
  264. package/lib/pages/user/user-settings-tokens.js +13 -5
  265. package/lib/pages/user/user-settings-tokens.js.map +1 -1
  266. package/package.json +10 -9
  267. package/src/components/button-with-progress.tsx +2 -1
  268. package/src/components/sanitized-markdown.tsx +81 -1
  269. package/src/components/scan-admin/common/auto-refresh.tsx +79 -0
  270. package/src/components/scan-admin/common/conditional-tooltip.tsx +74 -0
  271. package/src/components/scan-admin/common/file-table.tsx +508 -0
  272. package/src/components/scan-admin/common/index.ts +18 -0
  273. package/src/components/scan-admin/common/tab-panel.tsx +42 -0
  274. package/src/components/scan-admin/common/utils.ts +48 -0
  275. package/src/components/scan-admin/dialogs/file-dialog.tsx +137 -0
  276. package/src/components/scan-admin/dialogs/index.ts +15 -0
  277. package/src/components/scan-admin/dialogs/quarantine-dialog.tsx +270 -0
  278. package/src/components/scan-admin/index.ts +52 -0
  279. package/src/components/scan-admin/scan-card/index.ts +20 -0
  280. package/src/components/scan-admin/scan-card/scan-card-content.tsx +457 -0
  281. package/src/components/scan-admin/scan-card/scan-card-expand-strip-badges.tsx +186 -0
  282. package/src/components/scan-admin/scan-card/scan-card-expand-strip.tsx +104 -0
  283. package/src/components/scan-admin/scan-card/scan-card-expanded-content.tsx +262 -0
  284. package/src/components/scan-admin/scan-card/scan-card-header.tsx +176 -0
  285. package/src/components/scan-admin/scan-card/scan-card.tsx +152 -0
  286. package/src/components/scan-admin/scan-card/scan-detail-card.tsx +144 -0
  287. package/src/components/scan-admin/scan-card/utils.ts +199 -0
  288. package/src/components/scan-admin/tab-contents/allow-list-tab-content.tsx +119 -0
  289. package/src/components/scan-admin/tab-contents/auto-rejected-tab-content.tsx +106 -0
  290. package/src/components/scan-admin/tab-contents/block-list-tab-content.tsx +119 -0
  291. package/src/components/scan-admin/tab-contents/index.ts +18 -0
  292. package/src/components/scan-admin/tab-contents/quarantined-tab-content.tsx +158 -0
  293. package/src/components/scan-admin/tab-contents/scans-tab-content.tsx +113 -0
  294. package/src/components/scan-admin/toolbars/counts-toolbar.tsx +262 -0
  295. package/src/components/scan-admin/toolbars/index.ts +16 -0
  296. package/src/components/scan-admin/toolbars/search-toolbar.tsx +255 -0
  297. package/src/components/scan-admin/toolbars/tab-toolbar.tsx +56 -0
  298. package/src/context/scan-admin/index.ts +43 -0
  299. package/src/context/scan-admin/scan-actions.ts +87 -0
  300. package/src/context/scan-admin/scan-api-actions.ts +137 -0
  301. package/src/context/scan-admin/scan-api-effects.ts +491 -0
  302. package/src/context/scan-admin/scan-context-types.ts +102 -0
  303. package/src/context/scan-admin/scan-context.tsx +123 -0
  304. package/src/context/scan-admin/scan-helpers.ts +63 -0
  305. package/src/context/scan-admin/scan-reducer.ts +321 -0
  306. package/src/context/scan-admin/scan-types.ts +337 -0
  307. package/src/default/page-settings.tsx +3 -0
  308. package/src/default/theme.tsx +102 -13
  309. package/src/extension-registry-service.ts +216 -1
  310. package/src/extension-registry-types.ts +157 -0
  311. package/src/hooks/scan-admin/index.ts +48 -0
  312. package/src/hooks/scan-admin/use-auto-rejected-tab.ts +85 -0
  313. package/src/hooks/scan-admin/use-dialogs.ts +83 -0
  314. package/src/hooks/scan-admin/use-file-list-tab.ts +149 -0
  315. package/src/hooks/scan-admin/use-pagination.ts +90 -0
  316. package/src/hooks/scan-admin/use-quarantined-tab.ts +138 -0
  317. package/src/hooks/scan-admin/use-scan-card-state.ts +73 -0
  318. package/src/hooks/scan-admin/use-scan-filters.ts +83 -0
  319. package/src/hooks/scan-admin/use-scans-tab.ts +92 -0
  320. package/src/hooks/scan-admin/use-search.ts +54 -0
  321. package/src/hooks/scan-admin/use-tab-navigation.ts +82 -0
  322. package/src/hooks/scan-admin/use-url-sync.ts +293 -0
  323. package/src/page-settings.ts +4 -0
  324. package/src/pages/admin-dashboard/admin-dashboard.tsx +26 -2
  325. package/src/pages/admin-dashboard/publisher-admin.tsx +1 -1
  326. package/src/pages/admin-dashboard/publisher-revoke-dialog.tsx +2 -1
  327. package/src/pages/admin-dashboard/scan-admin.tsx +109 -0
  328. package/src/pages/admin-dashboard/welcome.tsx +1 -0
  329. package/src/pages/extension-detail/extension-detail-overview.tsx +16 -2
  330. package/src/pages/extension-detail/extension-detail-reviews.tsx +116 -30
  331. package/src/pages/extension-detail/extension-detail.tsx +2 -2
  332. package/src/pages/extension-detail/extension-rating-stars.tsx +2 -2
  333. package/src/pages/extension-list/extension-list-item.tsx +2 -2
  334. package/src/pages/user/user-namespace-extension-list-item.tsx +38 -13
  335. package/src/pages/user/user-publisher-agreement.tsx +30 -11
  336. package/src/pages/user/user-settings-profile.tsx +10 -6
  337. package/src/pages/user/user-settings-tokens.tsx +15 -6
@@ -0,0 +1,137 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2026 Contributors to the Eclipse Foundation
3
+ *
4
+ * See the NOTICE file(s) distributed with this work for additional
5
+ * information regarding copyright ownership.
6
+ *
7
+ * This program and the accompanying materials are made available under the
8
+ * terms of the Eclipse Public License 2.0 which is available at
9
+ * https://www.eclipse.org/legal/epl-2.0
10
+ *
11
+ * SPDX-License-Identifier: EPL-2.0
12
+ ********************************************************************************/
13
+
14
+ import React, { FunctionComponent } from 'react';
15
+ import { Dialog, DialogTitle, DialogContent, DialogActions, Button, Typography, List, ListItem, ListItemText, Box } from '@mui/material';
16
+ import { useDialogs } from '../../../hooks/scan-admin';
17
+ import { useTheme } from '@mui/material/styles';
18
+ import { FileDecision } from '../../../context/scan-admin';
19
+
20
+ /**
21
+ * Confirmation dialog for file-level allow/block/delete actions.
22
+ * Uses the useDialogs hook to consume context.
23
+ */
24
+ export const FileDialog: FunctionComponent = () => {
25
+ const theme = useTheme();
26
+ const { fileDialog } = useDialogs();
27
+
28
+ return (
29
+ <Dialog
30
+ open={fileDialog.isOpen}
31
+ onClose={fileDialog.close}
32
+ maxWidth='md'
33
+ fullWidth
34
+ >
35
+ <DialogTitle>
36
+ {fileDialog.actionType === 'allow' ? 'Confirm Allow Files' : fileDialog.actionType === 'block' ? 'Confirm Block Files' : 'Confirm Delete Files'}
37
+ </DialogTitle>
38
+ <DialogContent>
39
+ <Typography variant='body1' sx={{ mb: 2 }}>
40
+ Are you sure you want to {fileDialog.actionType} {fileDialog.selectedFiles.length !== 1 ? 'these' : 'this'} {fileDialog.selectedFiles.length} file{fileDialog.selectedFiles.length !== 1 ? 's' : ''}?
41
+ </Typography>
42
+ <List sx={{
43
+ maxHeight: '400px',
44
+ overflow: 'auto',
45
+ border: `1px solid ${theme.palette.scanBackground.default}`,
46
+ borderRadius: 1,
47
+ }}>
48
+ {fileDialog.selectedFiles.map((file: FileDecision) => (
49
+ <ListItem
50
+ key={file.id}
51
+ sx={{
52
+ borderBottom: `1px solid ${theme.palette.scanBackground.dark}`,
53
+ '&:last-child': { borderBottom: 'none' },
54
+ }}
55
+ >
56
+ <ListItemText
57
+ primary={
58
+ <Typography
59
+ variant='body1'
60
+ sx={{
61
+ fontWeight: 500,
62
+ overflow: 'hidden',
63
+ textOverflow: 'ellipsis',
64
+ whiteSpace: 'nowrap',
65
+ }}
66
+ >
67
+ {file.fileName}
68
+ </Typography>
69
+ }
70
+ secondary={
71
+ <Box sx={{ display: 'flex', flexDirection: 'column', gap: 0.25 }}>
72
+ <Typography
73
+ variant='body2'
74
+ color='text.secondary'
75
+ sx={{
76
+ overflow: 'hidden',
77
+ textOverflow: 'ellipsis',
78
+ whiteSpace: 'nowrap',
79
+ }}
80
+ >
81
+ Hash: {file.fileHash}
82
+ </Typography>
83
+ <Typography
84
+ variant='body2'
85
+ color='text.secondary'
86
+ sx={{
87
+ overflow: 'hidden',
88
+ textOverflow: 'ellipsis',
89
+ whiteSpace: 'nowrap',
90
+ }}
91
+ >
92
+ {file.displayName}
93
+ </Typography>
94
+ <Typography
95
+ variant='body2'
96
+ color='text.secondary'
97
+ sx={{
98
+ overflow: 'hidden',
99
+ textOverflow: 'ellipsis',
100
+ whiteSpace: 'nowrap',
101
+ }}
102
+ >
103
+ {file.namespace}.{file.extensionName}
104
+ </Typography>
105
+ <Typography
106
+ variant='body2'
107
+ color='text.secondary'
108
+ sx={{
109
+ overflow: 'hidden',
110
+ textOverflow: 'ellipsis',
111
+ whiteSpace: 'nowrap',
112
+ }}
113
+ >
114
+ Version: {file.version}
115
+ </Typography>
116
+ </Box>
117
+ }
118
+ />
119
+ </ListItem>
120
+ ))}
121
+ </List>
122
+ </DialogContent>
123
+ <DialogActions sx={{ px: 3, pb: 2 }}>
124
+ <Button onClick={fileDialog.close} color='inherit'>
125
+ Cancel
126
+ </Button>
127
+ <Button
128
+ onClick={fileDialog.execute}
129
+ variant='contained'
130
+ color={fileDialog.actionType === 'allow' ? 'success' : fileDialog.actionType === 'block' ? 'error' : 'secondary'}
131
+ >
132
+ Confirm {fileDialog.actionType === 'allow' ? 'Allow' : fileDialog.actionType === 'block' ? 'Block' : 'Delete'}
133
+ </Button>
134
+ </DialogActions>
135
+ </Dialog>
136
+ );
137
+ };
@@ -0,0 +1,15 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2026 Contributors to the Eclipse Foundation
3
+ *
4
+ * See the NOTICE file(s) distributed with this work for additional
5
+ * information regarding copyright ownership.
6
+ *
7
+ * This program and the accompanying materials are made available under the
8
+ * terms of the Eclipse Public License 2.0 which is available at
9
+ * https://www.eclipse.org/legal/epl-2.0
10
+ *
11
+ * SPDX-License-Identifier: EPL-2.0
12
+ ********************************************************************************/
13
+
14
+ export { QuarantineDialog } from './quarantine-dialog';
15
+ export { FileDialog } from './file-dialog';
@@ -0,0 +1,270 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2026 Contributors to the Eclipse Foundation
3
+ *
4
+ * See the NOTICE file(s) distributed with this work for additional
5
+ * information regarding copyright ownership.
6
+ *
7
+ * This program and the accompanying materials are made available under the
8
+ * terms of the Eclipse Public License 2.0 which is available at
9
+ * https://www.eclipse.org/legal/epl-2.0
10
+ *
11
+ * SPDX-License-Identifier: EPL-2.0
12
+ ********************************************************************************/
13
+
14
+ import React, { FunctionComponent, useMemo } from 'react';
15
+ import { Dialog, DialogTitle, DialogContent, DialogActions, Button, Typography, List, ListItem, ListItemText, Box, Tooltip } from '@mui/material';
16
+ import { Info as InfoIcon } from '@mui/icons-material';
17
+ import { useDialogs } from '../../../hooks/scan-admin';
18
+ import { useTheme } from '@mui/material/styles';
19
+ import { ScanResult } from '../../../context/scan-admin';
20
+
21
+ /**
22
+ * Get only the enforced threats from a scan.
23
+ */
24
+ const getEnforcedThreats = (scan: ScanResult) => {
25
+ return scan.threats?.filter(threat => threat.enforcedFlag) || [];
26
+ };
27
+
28
+ /**
29
+ * Get only the unenforced threats from a scan.
30
+ */
31
+ const getUnenforcedThreats = (scan: ScanResult) => {
32
+ return scan.threats?.filter(threat => !threat.enforcedFlag) || [];
33
+ };
34
+
35
+ /**
36
+ * Get actionable threats - enforced threats that have file information.
37
+ * Only these can be added to allow/block lists.
38
+ */
39
+ const getActionableThreats = (scan: ScanResult) => {
40
+ return scan.threats?.filter(threat => threat.enforcedFlag && threat.fileName) || [];
41
+ };
42
+
43
+ /**
44
+ * Get threats without file information (not actionable for allow/block).
45
+ * These are from scanners that don't report individual files.
46
+ */
47
+ const getThreatsWithoutFileInfo = (scan: ScanResult) => {
48
+ return scan.threats?.filter(threat => !threat.fileName) || [];
49
+ };
50
+
51
+ /**
52
+ * Confirmation dialog for extension-level allow/block actions.
53
+ * Uses the useDialogs hook to consume context.
54
+ *
55
+ * Only files from ENFORCED threats are actionable.
56
+ * Unenforced threats are informational only and
57
+ * should not have allow/block decisions made on them.
58
+ */
59
+ export const QuarantineDialog: FunctionComponent = () => {
60
+ const theme = useTheme();
61
+ const { confirmDialog } = useDialogs();
62
+
63
+ // Check if any extension has unenforced threats (to show info message)
64
+ const hasAnyUnenforcedThreats = useMemo(() => {
65
+ return confirmDialog.selectedExtensions.some((scan: ScanResult) => getUnenforcedThreats(scan).length > 0);
66
+ }, [confirmDialog.selectedExtensions]);
67
+
68
+ // Check if any extension has threats without file info (not actionable)
69
+ const hasThreatsWithoutFileInfo = useMemo(() => {
70
+ return confirmDialog.selectedExtensions.some((scan: ScanResult) => getThreatsWithoutFileInfo(scan).length > 0);
71
+ }, [confirmDialog.selectedExtensions]);
72
+
73
+ // Calculate total actionable files across all selected extensions
74
+ // Only counts enforced threats that have file information
75
+ const totalActionableFiles = useMemo(() => {
76
+ return confirmDialog.selectedExtensions.reduce(
77
+ (total: number, scan: ScanResult) => total + getActionableThreats(scan).length,
78
+ 0
79
+ );
80
+ }, [confirmDialog.selectedExtensions]);
81
+
82
+ return (
83
+ <Dialog
84
+ open={confirmDialog.isOpen}
85
+ onClose={confirmDialog.close}
86
+ maxWidth='md'
87
+ fullWidth
88
+ >
89
+ <DialogTitle>
90
+ {confirmDialog.action === 'allow' ? 'Confirm Allow' : 'Confirm Block'}
91
+ </DialogTitle>
92
+ <DialogContent>
93
+ <Typography variant='body1' sx={{ mb: 2 }}>
94
+ Are you sure you want to {confirmDialog.action} {totalActionableFiles} file{totalActionableFiles !== 1 ? 's' : ''} from {confirmDialog.selectedExtensions.length !== 1 ? 'these' : 'this'} {confirmDialog.selectedExtensions.length} extension{confirmDialog.selectedExtensions.length !== 1 ? 's' : ''}?
95
+ </Typography>
96
+
97
+ {/* Info message about unenforced threats */}
98
+ {hasAnyUnenforcedThreats && (
99
+ <Box sx={{
100
+ display: 'flex',
101
+ alignItems: 'flex-start',
102
+ gap: 1,
103
+ mb: 2,
104
+ p: 1.5,
105
+ backgroundColor: theme.palette.info.dark + '20',
106
+ borderRadius: 1,
107
+ border: `1px solid ${theme.palette.info.dark}40`,
108
+ }}>
109
+ <InfoIcon sx={{ fontSize: 18, color: theme.palette.info.main, mt: 0.25 }} />
110
+ <Typography variant='body2' color='text.secondary'>
111
+ Some extensions have unenforced threats. These are informational only and will not be added to the {confirmDialog.action === 'allow' ? 'allow' : 'block'} list.
112
+ </Typography>
113
+ </Box>
114
+ )}
115
+
116
+ {/* Info message about threats without file info */}
117
+ {hasThreatsWithoutFileInfo && (
118
+ <Box sx={{
119
+ display: 'flex',
120
+ alignItems: 'flex-start',
121
+ gap: 1,
122
+ mb: 2,
123
+ p: 1.5,
124
+ backgroundColor: theme.palette.info.dark + '20',
125
+ borderRadius: 1,
126
+ border: `1px solid ${theme.palette.info.dark}40`,
127
+ }}>
128
+ <InfoIcon sx={{ fontSize: 18, color: theme.palette.info.main, mt: 0.25 }} />
129
+ <Typography variant='body2' color='text.secondary'>
130
+ Some threats do not have file-level information (e.g., from scanners that analyze the whole package). These cannot be added to allow/block lists.
131
+ </Typography>
132
+ </Box>
133
+ )}
134
+
135
+ <List sx={{
136
+ maxHeight: '400px',
137
+ overflow: 'auto',
138
+ border: `1px solid ${theme.palette.scanBackground.default}`,
139
+ borderRadius: 1,
140
+ }}>
141
+ {confirmDialog.selectedExtensions.map((scan: ScanResult) => {
142
+ const actionableThreats = getActionableThreats(scan);
143
+ const enforcedThreats = getEnforcedThreats(scan);
144
+ const unenforcedThreats = getUnenforcedThreats(scan);
145
+
146
+ return (
147
+ <ListItem
148
+ key={scan.id}
149
+ sx={{
150
+ borderBottom: `1px solid ${theme.palette.scanBackground.dark}`,
151
+ '&:last-child': { borderBottom: 'none' },
152
+ display: 'flex',
153
+ alignItems: 'flex-start',
154
+ gap: 2,
155
+ }}
156
+ >
157
+ <ListItemText
158
+ sx={{ flex: 1, minWidth: 0 }}
159
+ primary={
160
+ <Typography
161
+ variant='body1'
162
+ sx={{
163
+ fontWeight: 500,
164
+ overflow: 'hidden',
165
+ textOverflow: 'ellipsis',
166
+ whiteSpace: 'nowrap',
167
+ }}
168
+ >
169
+ {scan.displayName}
170
+ </Typography>
171
+ }
172
+ secondary={
173
+ <Box sx={{ display: 'flex', flexDirection: 'column', gap: 0.25 }}>
174
+ <Typography
175
+ variant='body2'
176
+ color='text.secondary'
177
+ sx={{
178
+ overflow: 'hidden',
179
+ textOverflow: 'ellipsis',
180
+ whiteSpace: 'nowrap',
181
+ }}
182
+ >
183
+ {scan.namespace}.{scan.extensionName}
184
+ </Typography>
185
+ <Typography
186
+ variant='body2'
187
+ color='text.secondary'
188
+ sx={{
189
+ overflow: 'hidden',
190
+ textOverflow: 'ellipsis',
191
+ whiteSpace: 'nowrap',
192
+ }}
193
+ >
194
+ Publisher: {scan.publisher}
195
+ </Typography>
196
+ <Typography
197
+ variant='body2'
198
+ color='text.secondary'
199
+ sx={{
200
+ overflow: 'hidden',
201
+ textOverflow: 'ellipsis',
202
+ whiteSpace: 'nowrap',
203
+ }}
204
+ >
205
+ Version: {scan.version}
206
+ </Typography>
207
+ </Box>
208
+ }
209
+ />
210
+ <Tooltip
211
+ title={
212
+ actionableThreats.length > 0 ? (
213
+ <Box>
214
+ <Typography variant='caption' sx={{ fontWeight: 600 }}>
215
+ Files to {confirmDialog.action}:
216
+ </Typography>
217
+ <Box sx={{ whiteSpace: 'pre-line', mt: 0.5 }}>
218
+ {actionableThreats.map((threat, index) => (
219
+ <div key={index}>{threat.fileName}</div>
220
+ ))}
221
+ </Box>
222
+ </Box>
223
+ ) : (
224
+ 'No actionable files (no file-level info)'
225
+ )
226
+ }
227
+ arrow
228
+ >
229
+ <Box sx={{
230
+ flexShrink: 0,
231
+ alignSelf: 'flex-start',
232
+ mt: 0.5,
233
+ cursor: 'pointer',
234
+ textAlign: 'right',
235
+ }}>
236
+ <Typography variant='body2' color='text.secondary'>
237
+ {actionableThreats.length} file{actionableThreats.length !== 1 ? 's' : ''}
238
+ </Typography>
239
+ {(enforcedThreats.length - actionableThreats.length) > 0 && (
240
+ <Typography variant='caption' sx={{ color: 'text.disabled', display: 'block' }}>
241
+ +{enforcedThreats.length - actionableThreats.length} without file info
242
+ </Typography>
243
+ )}
244
+ {unenforcedThreats.length > 0 && (
245
+ <Typography variant='caption' sx={{ color: 'text.disabled', display: 'block' }}>
246
+ +{unenforcedThreats.length} unenforced
247
+ </Typography>
248
+ )}
249
+ </Box>
250
+ </Tooltip>
251
+ </ListItem>
252
+ );
253
+ })}
254
+ </List>
255
+ </DialogContent>
256
+ <DialogActions sx={{ px: 3, pb: 2 }}>
257
+ <Button onClick={confirmDialog.close} color='inherit'>
258
+ Cancel
259
+ </Button>
260
+ <Button
261
+ onClick={confirmDialog.execute}
262
+ variant='contained'
263
+ color={confirmDialog.action === 'allow' ? 'success' : 'error'}
264
+ >
265
+ Confirm {confirmDialog.action === 'allow' ? 'Allow' : 'Block'}
266
+ </Button>
267
+ </DialogActions>
268
+ </Dialog>
269
+ );
270
+ };
@@ -0,0 +1,52 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2026 Contributors to the Eclipse Foundation
3
+ *
4
+ * See the NOTICE file(s) distributed with this work for additional
5
+ * information regarding copyright ownership.
6
+ *
7
+ * This program and the accompanying materials are made available under the
8
+ * terms of the Eclipse Public License 2.0 which is available at
9
+ * https://www.eclipse.org/legal/epl-2.0
10
+ *
11
+ * SPDX-License-Identifier: EPL-2.0
12
+ ********************************************************************************/
13
+
14
+ // Common components
15
+ export {
16
+ ConditionalTooltip,
17
+ FileTable,
18
+ AutoRefresh,
19
+ TabPanel,
20
+ } from './common';
21
+
22
+ // Dialog components
23
+ export {
24
+ QuarantineDialog,
25
+ FileDialog,
26
+ } from './dialogs';
27
+
28
+ // Toolbar components
29
+ export {
30
+ TabToolbar,
31
+ SearchToolbar,
32
+ CountsToolbar,
33
+ } from './toolbars';
34
+
35
+ // Tab content components
36
+ export {
37
+ ScansTabContent,
38
+ QuarantinedTabContent,
39
+ AutoRejectedTabContent,
40
+ AllowListTabContent,
41
+ BlockListTabContent,
42
+ } from './tab-contents';
43
+
44
+ // ScanCard components
45
+ export { ScanCard } from './scan-card';
46
+ export {
47
+ ScanCardHeader,
48
+ ScanCardContent,
49
+ ScanCardExpandStrip,
50
+ ScanCardExpandedContent,
51
+ } from './scan-card';
52
+ export * from './scan-card/utils';
@@ -0,0 +1,20 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2026 Contributors to the Eclipse Foundation
3
+ *
4
+ * See the NOTICE file(s) distributed with this work for additional
5
+ * information regarding copyright ownership.
6
+ *
7
+ * This program and the accompanying materials are made available under the
8
+ * terms of the Eclipse Public License 2.0 which is available at
9
+ * https://www.eclipse.org/legal/epl-2.0
10
+ *
11
+ * SPDX-License-Identifier: EPL-2.0
12
+ ********************************************************************************/
13
+
14
+ export { ScanCard } from './scan-card';
15
+ export { ScanCardHeader } from './scan-card-header';
16
+ export { ScanCardContent } from './scan-card-content';
17
+ export { ScanCardExpandStrip } from './scan-card-expand-strip';
18
+ export { ScanCardExpandedContent } from './scan-card-expanded-content';
19
+ export { ScanDetailCard } from './scan-detail-card';
20
+ export * from './utils';