openvsx-webui-test 0.19.0-dev.2 → 0.20.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/lib/components/banner.js +1 -2
  2. package/lib/components/banner.js.map +1 -1
  3. package/lib/components/delayed-load-indicator.js +2 -4
  4. package/lib/components/delayed-load-indicator.js.map +1 -1
  5. package/lib/components/generate-token-dialog.d.ts +22 -0
  6. package/lib/components/generate-token-dialog.d.ts.map +1 -0
  7. package/lib/components/generate-token-dialog.js +91 -0
  8. package/lib/components/generate-token-dialog.js.map +1 -0
  9. package/lib/components/rate-limiting/customer/general-details.d.ts +20 -0
  10. package/lib/components/rate-limiting/customer/general-details.d.ts.map +1 -0
  11. package/lib/components/rate-limiting/customer/general-details.js +8 -0
  12. package/lib/components/rate-limiting/customer/general-details.js.map +1 -0
  13. package/lib/components/rate-limiting/customer/index.d.ts +17 -0
  14. package/lib/components/rate-limiting/customer/index.d.ts.map +1 -0
  15. package/lib/components/rate-limiting/customer/index.js +15 -0
  16. package/lib/components/rate-limiting/customer/index.js.map +1 -0
  17. package/lib/components/rate-limiting/customer/usage-stats.d.ts +24 -0
  18. package/lib/components/rate-limiting/customer/usage-stats.d.ts.map +1 -0
  19. package/lib/components/rate-limiting/customer/usage-stats.js +6 -0
  20. package/lib/components/rate-limiting/customer/usage-stats.js.map +1 -0
  21. package/lib/{pages/admin-dashboard → components/rate-limiting}/usage-stats/usage-stats-chart.d.ts +5 -2
  22. package/lib/components/rate-limiting/usage-stats/usage-stats-chart.d.ts.map +1 -0
  23. package/lib/{pages/admin-dashboard → components/rate-limiting}/usage-stats/usage-stats-chart.js +32 -22
  24. package/lib/components/rate-limiting/usage-stats/usage-stats-chart.js.map +1 -0
  25. package/lib/components/rate-limiting/usage-stats/usage-stats-utils.d.ts +15 -0
  26. package/lib/components/rate-limiting/usage-stats/usage-stats-utils.d.ts.map +1 -0
  27. package/{src/pages/admin-dashboard/usage-stats/usage-stats-utils.ts → lib/components/rate-limiting/usage-stats/usage-stats-utils.js} +4 -3
  28. package/lib/components/rate-limiting/usage-stats/usage-stats-utils.js.map +1 -0
  29. package/lib/components/rate-limiting/usage-stats/use-usage-stats.d.ts +22 -0
  30. package/lib/components/rate-limiting/usage-stats/use-usage-stats.d.ts.map +1 -0
  31. package/lib/components/rate-limiting/usage-stats/use-usage-stats.js +58 -0
  32. package/lib/components/rate-limiting/usage-stats/use-usage-stats.js.map +1 -0
  33. package/lib/components/scan-admin/common/conditional-tooltip.js +4 -16
  34. package/lib/components/scan-admin/common/conditional-tooltip.js.map +1 -1
  35. package/lib/components/scan-admin/common/file-table.js +24 -13
  36. package/lib/components/scan-admin/common/file-table.js.map +1 -1
  37. package/lib/components/scan-admin/dialogs/quarantine-dialog.js +4 -8
  38. package/lib/components/scan-admin/dialogs/quarantine-dialog.js.map +1 -1
  39. package/lib/components/scan-admin/scan-card/scan-card-content.js +2 -2
  40. package/lib/components/scan-admin/scan-card/scan-card-content.js.map +1 -1
  41. package/lib/components/scan-admin/scan-card/scan-card-expand-strip-badges.js +21 -16
  42. package/lib/components/scan-admin/scan-card/scan-card-expand-strip-badges.js.map +1 -1
  43. package/lib/components/scan-admin/scan-card/scan-card-expanded-content.js +1 -2
  44. package/lib/components/scan-admin/scan-card/scan-card-expanded-content.js.map +1 -1
  45. package/lib/components/scan-admin/scan-card/scan-card-header.js +10 -5
  46. package/lib/components/scan-admin/scan-card/scan-card-header.js.map +1 -1
  47. package/lib/components/scan-admin/scan-card/utils.js +1 -2
  48. package/lib/components/scan-admin/scan-card/utils.js.map +1 -1
  49. package/lib/components/scan-admin/tab-contents/quarantined-tab-content.js +4 -6
  50. package/lib/components/scan-admin/tab-contents/quarantined-tab-content.js.map +1 -1
  51. package/lib/components/sidepanel/drawer-header.d.ts +14 -0
  52. package/lib/components/sidepanel/drawer-header.d.ts.map +1 -0
  53. package/lib/components/sidepanel/drawer-header.js +22 -0
  54. package/lib/components/sidepanel/drawer-header.js.map +1 -0
  55. package/lib/components/sidepanel/navigation-item.d.ts.map +1 -1
  56. package/lib/components/sidepanel/navigation-item.js +3 -3
  57. package/lib/components/sidepanel/navigation-item.js.map +1 -1
  58. package/lib/components/sidepanel/sidepanel.d.ts +7 -1
  59. package/lib/components/sidepanel/sidepanel.d.ts.map +1 -1
  60. package/lib/components/sidepanel/sidepanel.js +12 -13
  61. package/lib/components/sidepanel/sidepanel.js.map +1 -1
  62. package/lib/components/text-divider.js +1 -2
  63. package/lib/components/text-divider.js.map +1 -1
  64. package/lib/components/timestamp.js +2 -3
  65. package/lib/components/timestamp.js.map +1 -1
  66. package/lib/context/scan-admin/scan-api-actions.js +7 -16
  67. package/lib/context/scan-admin/scan-api-actions.js.map +1 -1
  68. package/lib/context/scan-admin/scan-api-effects.js +77 -93
  69. package/lib/context/scan-admin/scan-api-effects.js.map +1 -1
  70. package/lib/context/scan-admin/scan-context.d.ts.map +1 -1
  71. package/lib/context/scan-admin/scan-context.js +1 -0
  72. package/lib/context/scan-admin/scan-context.js.map +1 -1
  73. package/lib/context/scan-admin/scan-reducer.js +134 -53
  74. package/lib/context/scan-admin/scan-reducer.js.map +1 -1
  75. package/lib/default/default-app.d.ts +1 -1
  76. package/lib/default/default-app.d.ts.map +1 -1
  77. package/lib/default/default-app.js +11 -22
  78. package/lib/default/default-app.js.map +1 -1
  79. package/lib/default/menu-content.d.ts +1 -1
  80. package/lib/default/menu-content.d.ts.map +1 -1
  81. package/lib/default/menu-content.js +7 -3
  82. package/lib/default/menu-content.js.map +1 -1
  83. package/lib/default/page-settings.js +13 -18
  84. package/lib/default/page-settings.js.map +1 -1
  85. package/lib/extension-registry-service.d.ts +17 -1
  86. package/lib/extension-registry-service.d.ts.map +1 -1
  87. package/lib/extension-registry-service.js +659 -629
  88. package/lib/extension-registry-service.js.map +1 -1
  89. package/lib/extension-registry-types.d.ts +13 -0
  90. package/lib/extension-registry-types.d.ts.map +1 -1
  91. package/lib/hooks/scan-admin/use-auto-rejected-tab.js +5 -7
  92. package/lib/hooks/scan-admin/use-auto-rejected-tab.js.map +1 -1
  93. package/lib/hooks/scan-admin/use-quarantined-tab.js +5 -7
  94. package/lib/hooks/scan-admin/use-quarantined-tab.js.map +1 -1
  95. package/lib/main.d.ts.map +1 -1
  96. package/lib/main.js +8 -16
  97. package/lib/main.js.map +1 -1
  98. package/lib/other-pages.d.ts +12 -0
  99. package/lib/other-pages.d.ts.map +1 -1
  100. package/lib/other-pages.js +25 -12
  101. package/lib/other-pages.js.map +1 -1
  102. package/lib/pages/admin-dashboard/admin-dashboard.d.ts +0 -12
  103. package/lib/pages/admin-dashboard/admin-dashboard.d.ts.map +1 -1
  104. package/lib/pages/admin-dashboard/admin-dashboard.js +126 -49
  105. package/lib/pages/admin-dashboard/admin-dashboard.js.map +1 -1
  106. package/lib/pages/admin-dashboard/admin-routes.d.ts +25 -0
  107. package/lib/pages/admin-dashboard/admin-routes.d.ts.map +1 -0
  108. package/lib/pages/admin-dashboard/admin-routes.js +27 -0
  109. package/lib/pages/admin-dashboard/admin-routes.js.map +1 -0
  110. package/lib/pages/admin-dashboard/components/data-grid-filter-operators.d.ts +1 -9
  111. package/lib/pages/admin-dashboard/components/data-grid-filter-operators.d.ts.map +1 -1
  112. package/lib/pages/admin-dashboard/components/data-grid-filter-operators.js +17 -15
  113. package/lib/pages/admin-dashboard/components/data-grid-filter-operators.js.map +1 -1
  114. package/lib/pages/admin-dashboard/components/data-grid-filter.d.ts +22 -0
  115. package/lib/pages/admin-dashboard/components/data-grid-filter.d.ts.map +1 -0
  116. package/lib/pages/admin-dashboard/components/data-grid-filter.js +13 -0
  117. package/lib/pages/admin-dashboard/components/data-grid-filter.js.map +1 -0
  118. package/lib/pages/admin-dashboard/components/index.d.ts +2 -1
  119. package/lib/pages/admin-dashboard/components/index.d.ts.map +1 -1
  120. package/lib/pages/admin-dashboard/components/index.js +2 -1
  121. package/lib/pages/admin-dashboard/components/index.js.map +1 -1
  122. package/lib/pages/admin-dashboard/{usage-stats/usage-stats-utils.d.ts → customers/customer-details.d.ts} +3 -2
  123. package/lib/pages/admin-dashboard/customers/customer-details.d.ts.map +1 -0
  124. package/lib/pages/admin-dashboard/customers/customer-details.js +78 -0
  125. package/lib/pages/admin-dashboard/customers/customer-details.js.map +1 -0
  126. package/lib/pages/admin-dashboard/customers/customer-form-dialog.d.ts +1 -1
  127. package/lib/pages/admin-dashboard/customers/customer-form-dialog.d.ts.map +1 -1
  128. package/lib/pages/admin-dashboard/customers/customer-form-dialog.js +33 -34
  129. package/lib/pages/admin-dashboard/customers/customer-form-dialog.js.map +1 -1
  130. package/lib/pages/admin-dashboard/customers/customer-member-list.d.ts +19 -0
  131. package/lib/pages/admin-dashboard/customers/customer-member-list.d.ts.map +1 -0
  132. package/lib/pages/admin-dashboard/customers/customer-member-list.js +88 -0
  133. package/lib/pages/admin-dashboard/customers/customer-member-list.js.map +1 -0
  134. package/lib/pages/admin-dashboard/customers/customer-token-list.d.ts +19 -0
  135. package/lib/pages/admin-dashboard/customers/customer-token-list.d.ts.map +1 -0
  136. package/lib/pages/admin-dashboard/customers/customer-token-list.js +70 -0
  137. package/lib/pages/admin-dashboard/customers/customer-token-list.js.map +1 -0
  138. package/lib/pages/admin-dashboard/customers/customers.d.ts +1 -1
  139. package/lib/pages/admin-dashboard/customers/customers.js +20 -29
  140. package/lib/pages/admin-dashboard/customers/customers.js.map +1 -1
  141. package/lib/pages/admin-dashboard/customers/delete-customer-dialog.js +4 -14
  142. package/lib/pages/admin-dashboard/customers/delete-customer-dialog.js.map +1 -1
  143. package/lib/pages/admin-dashboard/extension-admin.js +7 -16
  144. package/lib/pages/admin-dashboard/extension-admin.js.map +1 -1
  145. package/lib/pages/admin-dashboard/extension-remove-dialog.js +3 -12
  146. package/lib/pages/admin-dashboard/extension-remove-dialog.js.map +1 -1
  147. package/lib/pages/admin-dashboard/extension-version-container.js +3 -5
  148. package/lib/pages/admin-dashboard/extension-version-container.js.map +1 -1
  149. package/lib/pages/admin-dashboard/logs/logs.d.ts.map +1 -1
  150. package/lib/pages/admin-dashboard/logs/logs.js +6 -24
  151. package/lib/pages/admin-dashboard/logs/logs.js.map +1 -1
  152. package/lib/pages/admin-dashboard/namespace-admin.js +7 -16
  153. package/lib/pages/admin-dashboard/namespace-admin.js.map +1 -1
  154. package/lib/pages/admin-dashboard/namespace-change-dialog.js +3 -12
  155. package/lib/pages/admin-dashboard/namespace-change-dialog.js.map +1 -1
  156. package/lib/pages/admin-dashboard/namespace-input.js +1 -1
  157. package/lib/pages/admin-dashboard/namespace-input.js.map +1 -1
  158. package/lib/pages/admin-dashboard/publisher-admin.d.ts.map +1 -1
  159. package/lib/pages/admin-dashboard/publisher-admin.js +28 -22
  160. package/lib/pages/admin-dashboard/publisher-admin.js.map +1 -1
  161. package/lib/pages/admin-dashboard/publisher-revoke-dialog.js +5 -15
  162. package/lib/pages/admin-dashboard/publisher-revoke-dialog.js.map +1 -1
  163. package/lib/pages/admin-dashboard/publisher-revoke-tokens-button.js +3 -12
  164. package/lib/pages/admin-dashboard/publisher-revoke-tokens-button.js.map +1 -1
  165. package/lib/pages/admin-dashboard/tiers/delete-tier-dialog.js +4 -13
  166. package/lib/pages/admin-dashboard/tiers/delete-tier-dialog.js.map +1 -1
  167. package/lib/pages/admin-dashboard/tiers/tier-form-dialog.js +34 -23
  168. package/lib/pages/admin-dashboard/tiers/tier-form-dialog.js.map +1 -1
  169. package/lib/pages/admin-dashboard/tiers/tiers.js +12 -21
  170. package/lib/pages/admin-dashboard/tiers/tiers.js.map +1 -1
  171. package/lib/pages/admin-dashboard/usage-stats/usage-stats-search.js +3 -14
  172. package/lib/pages/admin-dashboard/usage-stats/usage-stats-search.js.map +1 -1
  173. package/lib/pages/admin-dashboard/usage-stats/usage-stats.d.ts.map +1 -1
  174. package/lib/pages/admin-dashboard/usage-stats/usage-stats.js +11 -45
  175. package/lib/pages/admin-dashboard/usage-stats/usage-stats.js.map +1 -1
  176. package/lib/pages/admin-dashboard/usage-stats/use-usage-stats.d.ts +22 -0
  177. package/lib/pages/admin-dashboard/usage-stats/use-usage-stats.d.ts.map +1 -0
  178. package/lib/pages/admin-dashboard/usage-stats/use-usage-stats.js +58 -0
  179. package/lib/pages/admin-dashboard/usage-stats/use-usage-stats.js.map +1 -0
  180. package/lib/pages/admin-dashboard/welcome.js +1 -1
  181. package/lib/pages/admin-dashboard/welcome.js.map +1 -1
  182. package/lib/pages/extension-detail/extension-detail-changes.js +3 -12
  183. package/lib/pages/extension-detail/extension-detail-changes.js.map +1 -1
  184. package/lib/pages/extension-detail/extension-detail-overview.js +6 -16
  185. package/lib/pages/extension-detail/extension-detail-overview.js.map +1 -1
  186. package/lib/pages/extension-detail/extension-detail-reviews.js +12 -24
  187. package/lib/pages/extension-detail/extension-detail-reviews.js.map +1 -1
  188. package/lib/pages/extension-detail/extension-detail-routes.d.ts +32 -0
  189. package/lib/pages/extension-detail/extension-detail-routes.d.ts.map +1 -0
  190. package/lib/pages/extension-detail/extension-detail-routes.js +35 -0
  191. package/lib/pages/extension-detail/extension-detail-routes.js.map +1 -0
  192. package/lib/pages/extension-detail/extension-detail.d.ts +0 -19
  193. package/lib/pages/extension-detail/extension-detail.d.ts.map +1 -1
  194. package/lib/pages/extension-detail/extension-detail.js +28 -50
  195. package/lib/pages/extension-detail/extension-detail.js.map +1 -1
  196. package/lib/pages/extension-detail/extension-rating-stars.js +1 -2
  197. package/lib/pages/extension-detail/extension-rating-stars.js.map +1 -1
  198. package/lib/pages/extension-detail/extension-review-dialog.js +4 -14
  199. package/lib/pages/extension-detail/extension-review-dialog.js.map +1 -1
  200. package/lib/pages/extension-list/extension-list-container.d.ts +0 -3
  201. package/lib/pages/extension-list/extension-list-container.d.ts.map +1 -1
  202. package/lib/pages/extension-list/extension-list-container.js +5 -10
  203. package/lib/pages/extension-list/extension-list-container.js.map +1 -1
  204. package/lib/pages/extension-list/extension-list-header.js +3 -6
  205. package/lib/pages/extension-list/extension-list-header.js.map +1 -1
  206. package/lib/pages/extension-list/extension-list-item.js +7 -17
  207. package/lib/pages/extension-list/extension-list-item.js.map +1 -1
  208. package/lib/pages/extension-list/extension-list-routes.d.ts +16 -0
  209. package/lib/pages/extension-list/extension-list-routes.d.ts.map +1 -0
  210. package/lib/pages/extension-list/extension-list-routes.js +18 -0
  211. package/lib/pages/extension-list/extension-list-routes.js.map +1 -0
  212. package/lib/pages/extension-list/extension-list-searchfield.js +4 -7
  213. package/lib/pages/extension-list/extension-list-searchfield.js.map +1 -1
  214. package/lib/pages/extension-list/extension-list.js +8 -19
  215. package/lib/pages/extension-list/extension-list.js.map +1 -1
  216. package/lib/pages/namespace-detail/namespace-detail-routes.d.ts +20 -0
  217. package/lib/pages/namespace-detail/namespace-detail-routes.d.ts.map +1 -0
  218. package/lib/pages/namespace-detail/namespace-detail-routes.js +23 -0
  219. package/lib/pages/namespace-detail/namespace-detail-routes.js.map +1 -0
  220. package/lib/pages/namespace-detail/namespace-detail.d.ts +0 -7
  221. package/lib/pages/namespace-detail/namespace-detail.d.ts.map +1 -1
  222. package/lib/pages/namespace-detail/namespace-detail.js +4 -24
  223. package/lib/pages/namespace-detail/namespace-detail.js.map +1 -1
  224. package/lib/pages/user/add-namespace-member-dialog.d.ts.map +1 -1
  225. package/lib/pages/user/add-namespace-member-dialog.js +8 -67
  226. package/lib/pages/user/add-namespace-member-dialog.js.map +1 -1
  227. package/lib/pages/user/add-user-dialog.d.ts +25 -0
  228. package/lib/pages/user/add-user-dialog.d.ts.map +1 -0
  229. package/lib/pages/user/add-user-dialog.js +66 -0
  230. package/lib/pages/user/add-user-dialog.js.map +1 -0
  231. package/lib/pages/user/avatar.js +3 -3
  232. package/lib/pages/user/avatar.js.map +1 -1
  233. package/lib/pages/user/create-namespace-dialog.js +3 -12
  234. package/lib/pages/user/create-namespace-dialog.js.map +1 -1
  235. package/lib/pages/user/{generate-token-dialog.d.ts → generate-access-token-dialog.d.ts} +2 -2
  236. package/lib/pages/user/generate-access-token-dialog.d.ts.map +1 -0
  237. package/lib/pages/user/generate-access-token-dialog.js +33 -0
  238. package/lib/pages/user/generate-access-token-dialog.js.map +1 -0
  239. package/lib/pages/user/logout.js +3 -12
  240. package/lib/pages/user/logout.js.map +1 -1
  241. package/lib/pages/user/publish-extension-dialog.js +12 -21
  242. package/lib/pages/user/publish-extension-dialog.js.map +1 -1
  243. package/lib/pages/user/user-namespace-details.js +29 -42
  244. package/lib/pages/user/user-namespace-details.js.map +1 -1
  245. package/lib/pages/user/user-namespace-extension-list-item.js +6 -8
  246. package/lib/pages/user/user-namespace-extension-list-item.js.map +1 -1
  247. package/lib/pages/user/user-namespace-extension-list.js +6 -15
  248. package/lib/pages/user/user-namespace-extension-list.js.map +1 -1
  249. package/lib/pages/user/user-namespace-member-component.js +1 -1
  250. package/lib/pages/user/user-namespace-member-component.js.map +1 -1
  251. package/lib/pages/user/user-namespace-member-list.js +9 -18
  252. package/lib/pages/user/user-namespace-member-list.js.map +1 -1
  253. package/lib/pages/user/user-publisher-agreement.js +8 -18
  254. package/lib/pages/user/user-publisher-agreement.js.map +1 -1
  255. package/lib/pages/user/user-setting-tabs.d.ts.map +1 -1
  256. package/lib/pages/user/user-setting-tabs.js +2 -2
  257. package/lib/pages/user/user-setting-tabs.js.map +1 -1
  258. package/lib/pages/user/user-settings-customer-detail.d.ts +19 -0
  259. package/lib/pages/user/user-settings-customer-detail.d.ts.map +1 -0
  260. package/lib/pages/user/user-settings-customer-detail.js +9 -0
  261. package/lib/pages/user/user-settings-customer-detail.js.map +1 -0
  262. package/lib/pages/user/user-settings-customers.d.ts +15 -0
  263. package/lib/pages/user/user-settings-customers.d.ts.map +1 -0
  264. package/lib/pages/user/user-settings-customers.js +66 -0
  265. package/lib/pages/user/user-settings-customers.js.map +1 -0
  266. package/lib/pages/user/user-settings-delete-extension.js +8 -17
  267. package/lib/pages/user/user-settings-delete-extension.js.map +1 -1
  268. package/lib/pages/user/user-settings-extensions.js +3 -12
  269. package/lib/pages/user/user-settings-extensions.js.map +1 -1
  270. package/lib/pages/user/user-settings-namespace-detail.d.ts.map +1 -1
  271. package/lib/pages/user/user-settings-namespace-detail.js +4 -12
  272. package/lib/pages/user/user-settings-namespace-detail.js.map +1 -1
  273. package/lib/pages/user/user-settings-namespaces.js +6 -15
  274. package/lib/pages/user/user-settings-namespaces.js.map +1 -1
  275. package/lib/pages/user/user-settings-profile.js +1 -2
  276. package/lib/pages/user/user-settings-profile.js.map +1 -1
  277. package/lib/pages/user/user-settings-routes.d.ts +23 -0
  278. package/lib/pages/user/user-settings-routes.d.ts.map +1 -0
  279. package/lib/pages/user/user-settings-routes.js +25 -0
  280. package/lib/pages/user/user-settings-routes.js.map +1 -0
  281. package/lib/pages/user/user-settings-tokens.d.ts +0 -7
  282. package/lib/pages/user/user-settings-tokens.d.ts.map +1 -1
  283. package/lib/pages/user/user-settings-tokens.js +15 -25
  284. package/lib/pages/user/user-settings-tokens.js.map +1 -1
  285. package/lib/pages/user/user-settings.d.ts +0 -9
  286. package/lib/pages/user/user-settings.d.ts.map +1 -1
  287. package/lib/pages/user/user-settings.js +4 -12
  288. package/lib/pages/user/user-settings.js.map +1 -1
  289. package/lib/server-request.js +64 -76
  290. package/lib/server-request.js.map +1 -1
  291. package/lib/utils.js +2 -4
  292. package/lib/utils.js.map +1 -1
  293. package/package.json +9 -7
  294. package/src/components/generate-token-dialog.tsx +167 -0
  295. package/src/components/rate-limiting/customer/general-details.tsx +106 -0
  296. package/src/components/rate-limiting/customer/index.ts +18 -0
  297. package/src/components/rate-limiting/customer/usage-stats.tsx +50 -0
  298. package/src/{pages/admin-dashboard → components/rate-limiting}/usage-stats/usage-stats-chart.tsx +57 -31
  299. package/{lib/pages/admin-dashboard/usage-stats/usage-stats-utils.js → src/components/rate-limiting/usage-stats/usage-stats-utils.ts} +4 -2
  300. package/src/components/rate-limiting/usage-stats/use-usage-stats.ts +70 -0
  301. package/src/components/scan-admin/scan-card/scan-card-header.tsx +2 -2
  302. package/src/components/sidepanel/drawer-header.tsx +23 -0
  303. package/src/components/sidepanel/navigation-item.tsx +3 -2
  304. package/src/components/sidepanel/sidepanel.tsx +29 -17
  305. package/src/context/scan-admin/scan-context.tsx +1 -0
  306. package/src/default/default-app.tsx +1 -1
  307. package/src/default/menu-content.tsx +6 -2
  308. package/src/default/page-settings.tsx +1 -1
  309. package/src/extension-registry-service.ts +153 -26
  310. package/src/extension-registry-types.ts +16 -0
  311. package/src/main.tsx +2 -1
  312. package/src/other-pages.tsx +21 -4
  313. package/src/pages/admin-dashboard/admin-dashboard.tsx +250 -83
  314. package/src/pages/admin-dashboard/admin-routes.ts +27 -0
  315. package/src/pages/admin-dashboard/components/data-grid-filter-operators.tsx +1 -31
  316. package/src/pages/admin-dashboard/components/data-grid-filter.tsx +45 -0
  317. package/src/pages/admin-dashboard/components/index.ts +1 -1
  318. package/src/pages/admin-dashboard/customers/customer-details.tsx +133 -0
  319. package/src/pages/admin-dashboard/customers/customer-form-dialog.tsx +3 -4
  320. package/src/pages/admin-dashboard/customers/customer-member-list.tsx +174 -0
  321. package/src/pages/admin-dashboard/customers/customer-token-list.tsx +135 -0
  322. package/src/pages/admin-dashboard/customers/customers.tsx +8 -8
  323. package/src/pages/admin-dashboard/logs/logs.tsx +1 -10
  324. package/src/pages/admin-dashboard/publisher-admin.tsx +29 -11
  325. package/src/pages/admin-dashboard/usage-stats/usage-stats.tsx +10 -39
  326. package/src/pages/admin-dashboard/usage-stats/use-usage-stats.ts +70 -0
  327. package/src/pages/admin-dashboard/welcome.tsx +1 -1
  328. package/src/pages/extension-detail/extension-detail-overview.tsx +2 -2
  329. package/src/pages/extension-detail/extension-detail-routes.ts +35 -0
  330. package/src/pages/extension-detail/extension-detail.tsx +3 -23
  331. package/src/pages/extension-list/extension-list-container.tsx +1 -5
  332. package/src/pages/extension-list/extension-list-item.tsx +1 -1
  333. package/src/pages/extension-list/extension-list-routes.ts +18 -0
  334. package/src/pages/namespace-detail/namespace-detail-routes.ts +23 -0
  335. package/src/pages/namespace-detail/namespace-detail.tsx +0 -10
  336. package/src/pages/user/add-namespace-member-dialog.tsx +17 -116
  337. package/src/pages/user/add-user-dialog.tsx +141 -0
  338. package/src/pages/user/avatar.tsx +2 -2
  339. package/src/pages/user/generate-access-token-dialog.tsx +49 -0
  340. package/src/pages/user/user-namespace-extension-list-item.tsx +2 -2
  341. package/src/pages/user/user-setting-tabs.tsx +2 -1
  342. package/src/pages/user/user-settings-customer-detail.tsx +39 -0
  343. package/src/pages/user/user-settings-customers.tsx +120 -0
  344. package/src/pages/user/user-settings-delete-extension.tsx +1 -1
  345. package/src/pages/user/user-settings-namespace-detail.tsx +3 -1
  346. package/src/pages/user/user-settings-routes.ts +25 -0
  347. package/src/pages/user/user-settings-tokens.tsx +3 -10
  348. package/src/pages/user/user-settings.tsx +4 -12
  349. package/lib/components/copy-to-clipboard.d.ts +0 -21
  350. package/lib/components/copy-to-clipboard.d.ts.map +0 -1
  351. package/lib/components/copy-to-clipboard.js +0 -26
  352. package/lib/components/copy-to-clipboard.js.map +0 -1
  353. package/lib/pages/admin-dashboard/usage-stats/usage-stats-chart.d.ts.map +0 -1
  354. package/lib/pages/admin-dashboard/usage-stats/usage-stats-chart.js.map +0 -1
  355. package/lib/pages/admin-dashboard/usage-stats/usage-stats-utils.d.ts.map +0 -1
  356. package/lib/pages/admin-dashboard/usage-stats/usage-stats-utils.js.map +0 -1
  357. package/lib/pages/user/generate-token-dialog.d.ts.map +0 -1
  358. package/lib/pages/user/generate-token-dialog.js +0 -88
  359. package/lib/pages/user/generate-token-dialog.js.map +0 -1
  360. package/src/components/copy-to-clipboard.tsx +0 -50
  361. package/src/pages/user/generate-token-dialog.tsx +0 -157
@@ -0,0 +1,18 @@
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 { GeneralDetails } from './general-details';
15
+ export type { GeneralDetailsProps } from './general-details';
16
+
17
+ export { UsageStats } from './usage-stats';
18
+ export type { UsageStatsProps } from './usage-stats';
@@ -0,0 +1,50 @@
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 { FC } from 'react';
15
+ import {
16
+ Typography,
17
+ Paper,
18
+ type PaperProps,
19
+ Divider,
20
+ } from '@mui/material';
21
+ import type { Customer, UsageStats as UsageStatsType } from '../../../extension-registry-types';
22
+ import type { DateTime } from 'luxon';
23
+ import { UsageStatsChart } from '../usage-stats/usage-stats-chart';
24
+
25
+ const sectionPaperProps: PaperProps = { elevation: 1, sx: { p: 3, mb: 3 } };
26
+
27
+ export interface UsageStatsProps {
28
+ usageStats: readonly UsageStatsType[];
29
+ customer: Customer;
30
+ startDate: DateTime;
31
+ onStartDateChange: (date: DateTime) => void;
32
+ compact?: boolean;
33
+ }
34
+
35
+ export const UsageStats: FC<UsageStatsProps> = ({ usageStats, customer, startDate, onStartDateChange, compact }) => (
36
+ <Paper {...sectionPaperProps}>
37
+ <Typography variant='h6' gutterBottom>
38
+ Usage Statistics
39
+ </Typography>
40
+ <Divider sx={{ mb: 2 }} />
41
+ <UsageStatsChart
42
+ usageStats={usageStats}
43
+ customer={customer}
44
+ startDate={startDate}
45
+ onStartDateChange={onStartDateChange}
46
+ embedded
47
+ compact={compact}
48
+ />
49
+ </Paper>
50
+ );
@@ -17,48 +17,60 @@ import {
17
17
  Paper,
18
18
  Typography,
19
19
  Alert,
20
- Stack
20
+ Stack,
21
+ IconButton
21
22
  } from "@mui/material";
22
23
  import { BarPlot } from "@mui/x-charts/BarChart";
23
24
  import { DatePicker } from "@mui/x-date-pickers/DatePicker";
24
25
  import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider";
25
- import { AdapterDateFns } from "@mui/x-date-pickers/AdapterDateFns";
26
+ import { AdapterLuxon } from "@mui/x-date-pickers/AdapterLuxon";
27
+ import ChevronLeftIcon from "@mui/icons-material/ChevronLeft";
28
+ import ChevronRightIcon from "@mui/icons-material/ChevronRight";
26
29
  import type { Customer, UsageStats } from "../../../extension-registry-types";
27
- import { addDays, format, startOfDay } from "date-fns";
28
30
  import {
29
31
  ChartsReferenceLine,
30
32
  ChartsTooltip,
31
33
  ChartsXAxis,
32
34
  ChartsYAxis,
33
- ResponsiveChartContainer
35
+ ChartsContainer,
34
36
  } from "@mui/x-charts";
37
+ import { DateTime } from "luxon";
35
38
 
36
39
  interface UsageStatsChartProps {
37
40
  usageStats: readonly UsageStats[];
38
41
  customer: Customer | null;
39
- startDate: Date;
40
- onStartDateChange: (date: Date) => void;
42
+ startDate: DateTime;
43
+ onStartDateChange: (date: DateTime) => void;
44
+ embedded?: boolean;
45
+ compact?: boolean;
41
46
  }
42
47
 
43
48
  export const UsageStatsChart: FC<UsageStatsChartProps> = ({
44
49
  usageStats,
45
50
  customer,
46
51
  startDate,
47
- onStartDateChange
52
+ onStartDateChange,
53
+ embedded = false,
54
+ compact = false
48
55
  }) => {
49
- const dayStart = startOfDay(startDate).getTime() / 1000;
50
- const dayEnd = startOfDay(addDays(startDate, 1)).getTime() / 1000;
56
+ const dayStart = startDate.startOf('day').toMillis() / 1000;
57
+ const dayEnd = startDate.endOf('day').toMillis() / 1000;
58
+
59
+ const formatter = Intl.NumberFormat('en', { notation: 'compact' });
51
60
 
52
61
  // we have 5min steps
53
62
  const step = 5 * 60;
54
63
  const tierCapacity =
55
64
  customer?.tier !== undefined ? customer.tier.capacity * step / customer.tier.duration : 0;
65
+ const tierRps =
66
+ customer?.tier !== undefined ? customer.tier.capacity / customer.tier.duration : 0;
67
+ const tierRpsRounded = Math.round(tierRps * 100) / 100;
56
68
 
57
69
  const data: UsageStats[] = useMemo(
58
70
  () => {
59
71
  const arr: UsageStats[] = [];
60
72
 
61
- for (let idx = dayStart; idx < dayEnd; idx += step) {
73
+ for (let idx = dayStart; idx <= dayEnd; idx += step) {
62
74
  arr.push({
63
75
  windowStart: idx,
64
76
  duration: step,
@@ -68,7 +80,9 @@ export const UsageStatsChart: FC<UsageStatsChartProps> = ({
68
80
 
69
81
  for (const stat of usageStats) {
70
82
  const idx = (stat.windowStart - dayStart) / step;
71
- arr[idx].count = stat.count;
83
+ if (idx >= 0 && idx < arr.length) {
84
+ arr[idx].count = stat.count;
85
+ }
72
86
  }
73
87
  return arr;
74
88
  }, [usageStats]
@@ -89,9 +103,11 @@ export const UsageStatsChart: FC<UsageStatsChartProps> = ({
89
103
  [usageStats]
90
104
  );
91
105
 
106
+ const Wrapper: typeof Box = embedded ? Box : Paper;
107
+
92
108
  return (
93
- <LocalizationProvider dateAdapter={AdapterDateFns}>
94
- <Paper sx={{ p: 2, mb: 3 }}>
109
+ <LocalizationProvider dateAdapter={AdapterLuxon}>
110
+ <Wrapper sx={{ p: 2, mb: embedded ? 2 : 3 }}>
95
111
  <Typography variant='subtitle2' gutterBottom color='text.secondary'>
96
112
  Filters
97
113
  </Typography>
@@ -100,17 +116,24 @@ export const UsageStatsChart: FC<UsageStatsChartProps> = ({
100
116
  label='Start Date'
101
117
  value={startDate}
102
118
  onChange={onStartDateChange}
103
- slotProps={{ textField: { size: 'small' } }}
119
+ timezone='UTC'
120
+ slotProps={{ textField: { size: 'small' }, actionBar: { actions: ['today'] } }}
104
121
  />
122
+ <IconButton size='small' onClick={() => onStartDateChange(startDate.minus({ days: 1 }))}>
123
+ <ChevronLeftIcon />
124
+ </IconButton>
125
+ <IconButton size='small' onClick={() => onStartDateChange(startDate.plus({ days: 1 }))}>
126
+ <ChevronRightIcon />
127
+ </IconButton>
105
128
  </Stack>
106
- </Paper>
129
+ </Wrapper>
107
130
 
108
131
  {usageStats.length === 0 ?
109
132
  <Alert severity='info'>No usage data available for this customer.</Alert>
110
133
  :
111
134
  <>
112
- <Paper sx={{ p: 2 }}>
113
- <ResponsiveChartContainer
135
+ <Wrapper sx={{ p: 2 }}>
136
+ <ChartsContainer
114
137
  series={[{
115
138
  type: 'bar',
116
139
  data: data.map(d => d.count),
@@ -118,14 +141,15 @@ export const UsageStatsChart: FC<UsageStatsChartProps> = ({
118
141
  color: 'lightgray',
119
142
  }]}
120
143
 
121
- height={400}
122
- margin={{ top: 10 }}
144
+ height={compact ? 300 : 400}
145
+ margin={{ top: 30 }}
123
146
  xAxis={[
124
147
  {
125
148
  id: 'date',
126
- data: data.map((value) => new Date(value.windowStart * 1000)),
149
+ data: data.map((value) => value.windowStart * 1000),
150
+ valueFormatter: (value) => DateTime.fromMillis(value, { zone: 'UTC' }).toLocaleString(DateTime.TIME_24_SIMPLE),
127
151
  scaleType: 'band',
128
- valueFormatter: (value) => format(new Date(value), 'HH:mm'),
152
+ height: 50,
129
153
  },
130
154
  ]}
131
155
  yAxis={[
@@ -133,7 +157,9 @@ export const UsageStatsChart: FC<UsageStatsChartProps> = ({
133
157
  id: 'requests',
134
158
  scaleType: 'linear',
135
159
  min: 0,
136
- max: Math.max(tierCapacity, maxDataValue) + 10
160
+ max: Math.max(tierCapacity, maxDataValue) * 1.2,
161
+ valueFormatter: (value) => formatter.format(value),
162
+ width: 50
137
163
  },
138
164
  ]}
139
165
  >
@@ -142,7 +168,7 @@ export const UsageStatsChart: FC<UsageStatsChartProps> = ({
142
168
  {tierCapacity > 0 &&
143
169
  <ChartsReferenceLine
144
170
  y={tierCapacity}
145
- label='Tier Limit'
171
+ label={`Tier Limit (${tierRpsRounded} rps)`}
146
172
  labelAlign='end'
147
173
  lineStyle={{
148
174
  strokeDasharray: '10 5',
@@ -153,15 +179,15 @@ export const UsageStatsChart: FC<UsageStatsChartProps> = ({
153
179
  }
154
180
 
155
181
  <ChartsXAxis
156
- label='Time'
182
+ label='Time (UTC)'
157
183
  position='bottom'
158
184
  axisId='date'
159
- tickInterval={(value, index) => {
160
- return new Date(value).getMinutes() === 0;
161
- }}
185
+ tickInterval='auto'
162
186
  tickLabelInterval={(value, index) => {
163
- return new Date(value).getMinutes() === 0;
187
+ const d = new Date(value);
188
+ return d.getMinutes() === 0 && (!compact || d.getHours() % 3 === 0);
164
189
  }}
190
+ tickLabelPlacement='middle'
165
191
  tickLabelStyle={{
166
192
  fontSize: 10,
167
193
  }}
@@ -173,8 +199,8 @@ export const UsageStatsChart: FC<UsageStatsChartProps> = ({
173
199
  tickLabelStyle={{ fontSize: 10 }}
174
200
  />
175
201
  <ChartsTooltip />
176
- </ResponsiveChartContainer>
177
- </Paper>
202
+ </ChartsContainer>
203
+ </Wrapper>
178
204
 
179
205
  <Box mt={2}>
180
206
  <Typography variant='body2' color='text.secondary'>
@@ -186,4 +212,4 @@ export const UsageStatsChart: FC<UsageStatsChartProps> = ({
186
212
  }
187
213
  </LocalizationProvider>
188
214
  );
189
- };
215
+ };
@@ -10,7 +10,9 @@
10
10
  *
11
11
  * SPDX-License-Identifier: EPL-2.0
12
12
  *****************************************************************************/
13
+
14
+ import { DateTime } from "luxon";
15
+
13
16
  export const getDefaultStartDate = () => {
14
- return new Date();
17
+ return DateTime.now().setZone("UTC");
15
18
  };
16
- //# sourceMappingURL=usage-stats-utils.js.map
@@ -0,0 +1,70 @@
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 { useContext, useState, useEffect, useRef, useCallback } from "react";
15
+ import { MainContext } from "../../../context";
16
+ import type { UsageStats } from "../../../extension-registry-types";
17
+ import { handleError } from "../../../utils";
18
+ import { getDefaultStartDate } from "./usage-stats-utils";
19
+ import { DateTime } from "luxon";
20
+
21
+ export const useUsageStats = (customerName: string | undefined) => {
22
+ const abortController = useRef(new AbortController());
23
+ const { service } = useContext(MainContext);
24
+
25
+ const [usageStats, setUsageStats] = useState<readonly UsageStats[]>([]);
26
+ const [loading, setLoading] = useState(false);
27
+ const [error, setError] = useState<string | null>(null);
28
+ const [internalStartDate, setInternalStartDate] = useState<DateTime>(getDefaultStartDate);
29
+
30
+ const startDateRef = useRef(internalStartDate);
31
+ startDateRef.current = internalStartDate;
32
+
33
+ const fetchUsageStats = useCallback(async (date: DateTime) => {
34
+ if (!customerName) {
35
+ setUsageStats([]);
36
+ setLoading(false);
37
+ return;
38
+ }
39
+
40
+ try {
41
+ setLoading(true);
42
+ setError(null);
43
+ const data = await service.getUsageStats(
44
+ abortController.current,
45
+ customerName,
46
+ date.toJSDate()
47
+ );
48
+ setUsageStats(data.stats);
49
+ } catch (err) {
50
+ setError(handleError(err as Error));
51
+ } finally {
52
+ setLoading(false);
53
+ }
54
+ }, [service, customerName]);
55
+
56
+ const setStartDate = useCallback((date: DateTime) => {
57
+ setInternalStartDate(date);
58
+ fetchUsageStats(date);
59
+ }, [fetchUsageStats]);
60
+
61
+ useEffect(() => {
62
+ fetchUsageStats(startDateRef.current);
63
+ return () => {
64
+ abortController.current.abort();
65
+ abortController.current = new AbortController();
66
+ };
67
+ }, [fetchUsageStats]);
68
+
69
+ return { usageStats, loading, error, startDate: internalStartDate, setStartDate };
70
+ };
@@ -32,8 +32,8 @@ import {
32
32
  getStatusColorSx,
33
33
  } from './utils';
34
34
  import { createRoute } from '../../../utils';
35
- import { AdminDashboardRoutes } from '../../../pages/admin-dashboard/admin-dashboard';
36
- import { ExtensionDetailRoutes } from '../../../pages/extension-detail/extension-detail';
35
+ import { AdminDashboardRoutes } from '../../../pages/admin-dashboard/admin-routes';
36
+ import { ExtensionDetailRoutes } from '../../../pages/extension-detail/extension-detail-routes';
37
37
 
38
38
  interface ScanCardHeaderProps {
39
39
  scan: ScanResult;
@@ -0,0 +1,23 @@
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 { styled } from '@mui/material/styles';
15
+
16
+ export const DrawerHeader = styled('div')(({ theme }) => ({
17
+ display: 'flex',
18
+ alignItems: 'center',
19
+ padding: theme.spacing(0, 1),
20
+ // necessary for content to be below app bar
21
+ ...theme.mixins.toolbar,
22
+ justifyContent: 'flex-end',
23
+ }));
@@ -11,6 +11,7 @@
11
11
  import { FunctionComponent, PropsWithChildren, ReactNode, useState } from 'react';
12
12
  import { ListItemButton, ListItemText, Collapse, List, ListItemIcon } from '@mui/material';
13
13
  import ExpandLess from '@mui/icons-material/ExpandLess';
14
+ import ExpandMore from '@mui/icons-material/ExpandMore';
14
15
  import { useNavigate } from 'react-router';
15
16
 
16
17
  export const NavigationItem: FunctionComponent<PropsWithChildren<NavigationProps>> = props => {
@@ -21,7 +22,7 @@ export const NavigationItem: FunctionComponent<PropsWithChildren<NavigationProps
21
22
  if (props.children) {
22
23
  setOpen(!open);
23
24
  } else if (props.route) {
24
- props.onOpenRoute?.call(props.route);
25
+ props.onOpenRoute?.call(this, props.route);
25
26
  navigate(props.route);
26
27
  }
27
28
  };
@@ -32,7 +33,7 @@ export const NavigationItem: FunctionComponent<PropsWithChildren<NavigationProps
32
33
  props.icon && <ListItemIcon>{props.icon}</ListItemIcon>
33
34
  }
34
35
  <ListItemText primary={props.label} />
35
- {props.children && open && <ExpandLess />}
36
+ {props.children && (open ? <ExpandLess /> : <ExpandMore />)}
36
37
  </ListItemButton>
37
38
  {
38
39
  props.children &&
@@ -9,30 +9,42 @@
9
9
  ********************************************************************************/
10
10
 
11
11
  import { FunctionComponent, PropsWithChildren } from 'react';
12
- import { Drawer, List } from '@mui/material';
13
- import { Theme } from '@mui/material/styles';
12
+ import { Divider, Drawer, IconButton, List } from '@mui/material';
13
+ import ChevronLeftIcon from '@mui/icons-material/ChevronLeft';
14
+ import { DrawerHeader } from './drawer-header';
15
+
16
+ export const Sidepanel: FunctionComponent<PropsWithChildren<SidepanelProps>> = props => {
17
+ const width = props.width;
14
18
 
15
- export const Sidepanel: FunctionComponent<PropsWithChildren> = props => {
16
19
  return (
17
20
  <Drawer
18
- variant='permanent'
19
- PaperProps={{ elevation: 3 }}
20
- sx={(theme: Theme) => ({
21
+ sx={{
22
+ width: width,
23
+ flexShrink: 0,
21
24
  '& .MuiDrawer-paper': {
22
- position: 'relative',
23
- justifyContent: 'space-between',
24
- transition: theme.transitions.create('width', {
25
- easing: theme.transitions.easing.sharp,
26
- duration: theme.transitions.duration.enteringScreen
27
- }),
28
- overflowX: { xs: 'hidden', sm: 'hidden', md: 'none', lg: 'none', xl: 'none' },
29
- width: { xs: theme.spacing(7) + 1, sm: theme.spacing(9) + 1, md: 240 },
30
- }
31
- })}
25
+ width: width,
26
+ boxSizing: 'border-box',
27
+ },
28
+ }}
29
+ variant='persistent'
30
+ anchor='left'
31
+ open={props.open}
32
32
  >
33
+ <DrawerHeader>
34
+ <IconButton onClick={props.handleDrawerClose}>
35
+ <ChevronLeftIcon />
36
+ </IconButton>
37
+ </DrawerHeader>
38
+ <Divider />
33
39
  <List>
34
40
  {props.children}
35
41
  </List>
36
42
  </Drawer>
37
43
  );
38
- };
44
+ };
45
+
46
+ interface SidepanelProps {
47
+ width: number;
48
+ open: boolean;
49
+ handleDrawerClose: () => void;
50
+ }
@@ -114,6 +114,7 @@ export const ScanProvider: FC<ScanProviderProps> = ({ children, service, handleE
114
114
  // Custom Hook
115
115
  // ============================================================================
116
116
 
117
+ // eslint-disable-next-line react-refresh/only-export-components
117
118
  export const useScanContext = (): ScanContextValue => {
118
119
  const context = useContext(ScanContext);
119
120
  if (!context) {
@@ -48,7 +48,7 @@ async function getServerVersion(): Promise<string> {
48
48
  }
49
49
  }
50
50
 
51
- const App = () => {
51
+ export const App = () => {
52
52
  const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)');
53
53
  const theme = useMemo(
54
54
  () => createDefaultTheme(prefersDarkMode ? 'dark' : 'light'),
@@ -19,17 +19,18 @@ import InfoIcon from '@mui/icons-material/Info';
19
19
  import PublishIcon from '@mui/icons-material/Publish';
20
20
  import AccountBoxIcon from '@mui/icons-material/AccountBox';
21
21
  import { UserAvatar } from '../pages/user/avatar';
22
- import { UserSettingsRoutes } from '../pages/user/user-settings';
22
+ import { UserSettingsRoutes } from '../pages/user/user-settings-routes';
23
23
  import { styled, Theme } from '@mui/material/styles';
24
24
  import { MainContext } from '../context';
25
25
  import SettingsIcon from '@mui/icons-material/Settings';
26
26
  import AdminPanelSettingsIcon from '@mui/icons-material/AdminPanelSettings';
27
27
  import LogoutIcon from '@mui/icons-material/Logout';
28
- import { AdminDashboardRoutes } from '../pages/admin-dashboard/admin-dashboard';
28
+ import { AdminDashboardRoutes } from '../pages/admin-dashboard/admin-routes';
29
29
  import { LogoutForm } from '../pages/user/logout';
30
30
  import { LoginComponent } from './login';
31
31
 
32
32
  //-------------------- Mobile View --------------------//
33
+ // eslint-disable-next-line react-refresh/only-export-components
33
34
  export const itemIcon = {
34
35
  mr: 1,
35
36
  width: '16px',
@@ -161,6 +162,7 @@ export const MobileMenuContent: FunctionComponent = () => {
161
162
 
162
163
  //-------------------- Default View --------------------//
163
164
 
165
+ // eslint-disable-next-line react-refresh/only-export-components
164
166
  export const headerItem = ({ theme }: { theme: Theme }) => ({
165
167
  margin: theme.spacing(2.5),
166
168
  color: theme.palette.text.primary,
@@ -175,7 +177,9 @@ export const headerItem = ({ theme }: { theme: Theme }) => ({
175
177
  }
176
178
  });
177
179
 
180
+ // eslint-disable-next-line react-refresh/only-export-components
178
181
  export const MenuLink = styled(Link)(headerItem);
182
+ // eslint-disable-next-line react-refresh/only-export-components
179
183
  export const MenuRouteLink = styled(RouteLink)(headerItem);
180
184
 
181
185
  export const DefaultMenuContent: FunctionComponent = () => {
@@ -16,7 +16,7 @@ import { Link as RouteLink, Route, useParams } from 'react-router-dom';
16
16
  import GitHubIcon from '@mui/icons-material/GitHub';
17
17
  import { Extension, NamespaceDetails } from '../extension-registry-types';
18
18
  import { PageSettings } from '../page-settings';
19
- import { ExtensionListRoutes } from '../pages/extension-list/extension-list-container';
19
+ import { ExtensionListRoutes } from '../pages/extension-list/extension-list-routes';
20
20
  import { DefaultMenuContent, MobileMenuContent } from './menu-content';
21
21
  import OpenVSXLogo from './openvsx-registry-logo';
22
22
  import About from './about';