openvsx-webui-test 0.20.0-dev.5 → 0.20.2-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 (136) hide show
  1. package/lib/components/scan-admin/scan-card/scan-card-expanded-content.d.ts +2 -1
  2. package/lib/components/scan-admin/scan-card/scan-card-expanded-content.d.ts.map +1 -1
  3. package/lib/components/scan-admin/scan-card/scan-card-expanded-content.js.map +1 -1
  4. package/lib/components/scan-admin/scan-card/scan-card-header.js +1 -1
  5. package/lib/components/scan-admin/scan-card/scan-card-header.js.map +1 -1
  6. package/lib/components/scan-admin/scan-card/utils.js +1 -1
  7. package/lib/components/scan-admin/scan-card/utils.js.map +1 -1
  8. package/lib/components/sidepanel/navigation-item.d.ts +0 -1
  9. package/lib/components/sidepanel/navigation-item.d.ts.map +1 -1
  10. package/lib/components/sidepanel/navigation-item.js +22 -8
  11. package/lib/components/sidepanel/navigation-item.js.map +1 -1
  12. package/lib/components/sidepanel/sidebar-context.d.ts +16 -0
  13. package/lib/components/sidepanel/sidebar-context.d.ts.map +1 -0
  14. package/lib/components/sidepanel/sidebar-context.js +15 -0
  15. package/lib/components/sidepanel/sidebar-context.js.map +1 -0
  16. package/lib/components/sidepanel/sidepanel.d.ts +4 -4
  17. package/lib/components/sidepanel/sidepanel.d.ts.map +1 -1
  18. package/lib/components/sidepanel/sidepanel.js +47 -10
  19. package/lib/components/sidepanel/sidepanel.js.map +1 -1
  20. package/lib/default/menu-content.d.ts +1 -1
  21. package/lib/default/menu-content.js +1 -1
  22. package/lib/default/menu-content.js.map +1 -1
  23. package/lib/extension-registry-service.d.ts +6 -0
  24. package/lib/extension-registry-service.d.ts.map +1 -1
  25. package/lib/extension-registry-service.js +17 -0
  26. package/lib/extension-registry-service.js.map +1 -1
  27. package/lib/hooks/use-local-storage.d.ts +23 -0
  28. package/lib/hooks/use-local-storage.d.ts.map +1 -0
  29. package/lib/hooks/use-local-storage.js +62 -0
  30. package/lib/hooks/use-local-storage.js.map +1 -0
  31. package/lib/main.d.ts.map +1 -1
  32. package/lib/main.js +5 -5
  33. package/lib/main.js.map +1 -1
  34. package/lib/other-pages.d.ts.map +1 -1
  35. package/lib/other-pages.js +7 -7
  36. package/lib/other-pages.js.map +1 -1
  37. package/lib/pages/admin-dashboard/{admin-routes.d.ts → admin-dashboard-routes.d.ts} +6 -9
  38. package/lib/pages/admin-dashboard/admin-dashboard-routes.d.ts.map +1 -0
  39. package/lib/pages/admin-dashboard/{admin-routes.js → admin-dashboard-routes.js} +6 -9
  40. package/lib/pages/admin-dashboard/admin-dashboard-routes.js.map +1 -0
  41. package/lib/pages/admin-dashboard/admin-dashboard.d.ts.map +1 -1
  42. package/lib/pages/admin-dashboard/admin-dashboard.js +45 -101
  43. package/lib/pages/admin-dashboard/admin-dashboard.js.map +1 -1
  44. package/lib/pages/admin-dashboard/admin-header.d.ts +19 -0
  45. package/lib/pages/admin-dashboard/admin-header.d.ts.map +1 -0
  46. package/lib/pages/admin-dashboard/admin-header.js +16 -0
  47. package/lib/pages/admin-dashboard/admin-header.js.map +1 -0
  48. package/lib/pages/admin-dashboard/admin-sidepanel.d.ts +19 -0
  49. package/lib/pages/admin-dashboard/admin-sidepanel.d.ts.map +1 -0
  50. package/lib/pages/admin-dashboard/admin-sidepanel.js +17 -0
  51. package/lib/pages/admin-dashboard/admin-sidepanel.js.map +1 -0
  52. package/lib/pages/admin-dashboard/customers/customer-member-list.js +1 -1
  53. package/lib/pages/admin-dashboard/customers/customer-member-list.js.map +1 -1
  54. package/lib/pages/admin-dashboard/customers/customers.js +1 -1
  55. package/lib/pages/admin-dashboard/customers/customers.js.map +1 -1
  56. package/lib/pages/admin-dashboard/namespace-admin.d.ts.map +1 -1
  57. package/lib/pages/admin-dashboard/namespace-admin.js +4 -1
  58. package/lib/pages/admin-dashboard/namespace-admin.js.map +1 -1
  59. package/lib/pages/admin-dashboard/namespace-change-dialog.d.ts.map +1 -1
  60. package/lib/pages/admin-dashboard/namespace-change-dialog.js +6 -1
  61. package/lib/pages/admin-dashboard/namespace-change-dialog.js.map +1 -1
  62. package/lib/pages/admin-dashboard/namespace-delete-dialog.d.ts +23 -0
  63. package/lib/pages/admin-dashboard/namespace-delete-dialog.d.ts.map +1 -0
  64. package/lib/pages/admin-dashboard/namespace-delete-dialog.js +53 -0
  65. package/lib/pages/admin-dashboard/namespace-delete-dialog.js.map +1 -0
  66. package/lib/pages/admin-dashboard/nav-types.d.ts +27 -0
  67. package/lib/pages/admin-dashboard/nav-types.d.ts.map +1 -0
  68. package/lib/pages/admin-dashboard/nav-types.js +14 -0
  69. package/lib/pages/admin-dashboard/nav-types.js.map +1 -0
  70. package/lib/pages/admin-dashboard/publisher-admin.js +1 -1
  71. package/lib/pages/admin-dashboard/publisher-admin.js.map +1 -1
  72. package/lib/pages/admin-dashboard/scan-admin.d.ts.map +1 -1
  73. package/lib/pages/admin-dashboard/scan-admin.js +2 -5
  74. package/lib/pages/admin-dashboard/scan-admin.js.map +1 -1
  75. package/lib/pages/admin-dashboard/usage-stats/usage-stats.js +1 -1
  76. package/lib/pages/admin-dashboard/usage-stats/usage-stats.js.map +1 -1
  77. package/lib/pages/admin-dashboard/welcome.d.ts +5 -1
  78. package/lib/pages/admin-dashboard/welcome.d.ts.map +1 -1
  79. package/lib/pages/admin-dashboard/welcome.js +18 -16
  80. package/lib/pages/admin-dashboard/welcome.js.map +1 -1
  81. package/lib/pages/extension-detail/extension-detail-routes.d.ts +0 -1
  82. package/lib/pages/extension-detail/extension-detail-routes.d.ts.map +1 -1
  83. package/lib/pages/extension-detail/extension-detail-routes.js +2 -3
  84. package/lib/pages/extension-detail/extension-detail-routes.js.map +1 -1
  85. package/lib/pages/extension-detail/extension-detail.d.ts.map +1 -1
  86. package/lib/pages/extension-detail/extension-detail.js +120 -249
  87. package/lib/pages/extension-detail/extension-detail.js.map +1 -1
  88. package/lib/pages/extension-detail/use-extension-details.d.ts +23 -0
  89. package/lib/pages/extension-detail/use-extension-details.d.ts.map +1 -0
  90. package/lib/pages/extension-detail/use-extension-details.js +80 -0
  91. package/lib/pages/extension-detail/use-extension-details.js.map +1 -0
  92. package/lib/pages/user/avatar.js +1 -1
  93. package/lib/pages/user/avatar.js.map +1 -1
  94. package/lib/pages/user/user-setting-tabs.d.ts.map +1 -1
  95. package/lib/pages/user/user-setting-tabs.js +1 -1
  96. package/lib/pages/user/user-setting-tabs.js.map +1 -1
  97. package/lib/pages/user/user-settings-namespace-detail.d.ts +1 -0
  98. package/lib/pages/user/user-settings-namespace-detail.d.ts.map +1 -1
  99. package/lib/pages/user/user-settings-namespace-detail.js +19 -3
  100. package/lib/pages/user/user-settings-namespace-detail.js.map +1 -1
  101. package/lib/pages/user/user-settings-namespaces.js.map +1 -1
  102. package/package.json +3 -1
  103. package/src/components/scan-admin/scan-card/scan-card-expanded-content.tsx +4 -4
  104. package/src/components/scan-admin/scan-card/scan-card-header.tsx +1 -1
  105. package/src/components/scan-admin/scan-card/utils.ts +1 -1
  106. package/src/components/sidepanel/navigation-item.tsx +79 -23
  107. package/src/components/sidepanel/sidebar-context.tsx +17 -0
  108. package/src/components/sidepanel/sidepanel.tsx +57 -29
  109. package/src/default/menu-content.tsx +1 -1
  110. package/src/extension-registry-service.ts +18 -0
  111. package/src/hooks/use-local-storage.ts +67 -0
  112. package/src/main.tsx +11 -6
  113. package/src/other-pages.tsx +20 -16
  114. package/src/pages/admin-dashboard/{admin-routes.ts → admin-dashboard-routes.ts} +5 -8
  115. package/src/pages/admin-dashboard/admin-dashboard.tsx +71 -216
  116. package/src/pages/admin-dashboard/admin-header.tsx +59 -0
  117. package/src/pages/admin-dashboard/admin-sidepanel.tsx +59 -0
  118. package/src/pages/admin-dashboard/customers/customer-member-list.tsx +1 -1
  119. package/src/pages/admin-dashboard/customers/customers.tsx +1 -1
  120. package/src/pages/admin-dashboard/namespace-admin.tsx +5 -0
  121. package/src/pages/admin-dashboard/namespace-change-dialog.tsx +55 -46
  122. package/src/pages/admin-dashboard/namespace-delete-dialog.tsx +89 -0
  123. package/src/pages/admin-dashboard/nav-types.ts +31 -0
  124. package/src/pages/admin-dashboard/publisher-admin.tsx +1 -1
  125. package/src/pages/admin-dashboard/scan-admin.tsx +2 -5
  126. package/src/pages/admin-dashboard/usage-stats/usage-stats.tsx +1 -1
  127. package/src/pages/admin-dashboard/welcome.tsx +80 -48
  128. package/src/pages/extension-detail/extension-detail-routes.ts +2 -3
  129. package/src/pages/extension-detail/extension-detail.tsx +290 -409
  130. package/src/pages/extension-detail/use-extension-details.tsx +101 -0
  131. package/src/pages/user/avatar.tsx +1 -1
  132. package/src/pages/user/user-setting-tabs.tsx +3 -2
  133. package/src/pages/user/user-settings-namespace-detail.tsx +38 -5
  134. package/src/pages/user/user-settings-namespaces.tsx +1 -1
  135. package/lib/pages/admin-dashboard/admin-routes.d.ts.map +0 -1
  136. package/lib/pages/admin-dashboard/admin-routes.js.map +0 -1
@@ -15,6 +15,6 @@ export const UserSettingTabs = () => {
15
15
  const generateRoute = (tab) => {
16
16
  return createRoute([UserSettingsRoutes.ROOT, tab]);
17
17
  };
18
- return (_jsxs(Tabs, { value: tab, onChange: handleChange, orientation: isATablet ? 'horizontal' : 'vertical', centered: isAMobile ? true : false, indicatorColor: 'secondary', children: [_jsx(Tab, { value: 'profile', label: 'Profile' }), _jsx(Tab, { value: 'tokens', label: 'Access Tokens' }), _jsx(Tab, { value: 'namespaces', label: 'Namespaces' }), _jsx(Tab, { value: 'extensions', label: 'Extensions' }), _jsx(Tab, { value: 'customers', label: 'Rate Limiting' })] }));
18
+ return (_jsxs(Tabs, { value: tab ?? 'extensions', onChange: handleChange, orientation: isATablet ? 'horizontal' : 'vertical', centered: isAMobile, indicatorColor: 'secondary', children: [_jsx(Tab, { value: 'profile', label: 'Profile' }), _jsx(Tab, { value: 'tokens', label: 'Access Tokens' }), _jsx(Tab, { value: 'namespaces', label: 'Namespaces' }), _jsx(Tab, { value: 'extensions', label: 'Extensions' }), _jsx(Tab, { value: 'customers', label: 'Rate Limiting' })] }));
19
19
  };
20
20
  //# sourceMappingURL=user-setting-tabs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"user-setting-tabs.js","sourceRoot":"","sources":["../../../src/pages/user/user-setting-tabs.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,CAAC,MAAM,eAAe,GAAG,GAAiB,EAAE;IAE9C,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,MAAM,YAAY,GAAG,CAAC,KAAkB,EAAE,MAAc,EAAE,EAAE;QACxD,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,EAAE;QAClC,OAAO,WAAW,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC;IAEF,OAAO,CACH,MAAC,IAAI,IACD,KAAK,EAAE,GAAG,EACV,QAAQ,EAAE,YAAY,EACtB,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAClD,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAClC,cAAc,EAAC,WAAW,aAE1B,KAAC,GAAG,IAAC,KAAK,EAAC,SAAS,EAAC,KAAK,EAAC,SAAS,GAAG,EACvC,KAAC,GAAG,IAAC,KAAK,EAAC,QAAQ,EAAC,KAAK,EAAC,eAAe,GAAG,EAC5C,KAAC,GAAG,IAAC,KAAK,EAAC,YAAY,EAAC,KAAK,EAAC,YAAY,GAAG,EAC7C,KAAC,GAAG,IAAC,KAAK,EAAC,YAAY,EAAC,KAAK,EAAC,YAAY,GAAG,EAC7C,KAAC,GAAG,IAAC,KAAK,EAAC,WAAW,EAAC,KAAK,EAAC,eAAe,GAAG,IAC5C,CACV,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"file":"user-setting-tabs.js","sourceRoot":"","sources":["../../../src/pages/user/user-setting-tabs.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,CAAC,MAAM,eAAe,GAAG,GAAiB,EAAE;IAE9C,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;IAE5B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,MAAM,YAAY,GAAG,CAAC,KAAkB,EAAE,MAAc,EAAE,EAAE;QACxD,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,EAAE;QAClC,OAAO,WAAW,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC;IAEF,OAAO,CACH,MAAC,IAAI,IACD,KAAK,EAAE,GAAG,IAAI,YAAY,EAC1B,QAAQ,EAAE,YAAY,EACtB,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAClD,QAAQ,EAAE,SAAS,EACnB,cAAc,EAAC,WAAW,aAE1B,KAAC,GAAG,IAAC,KAAK,EAAC,SAAS,EAAC,KAAK,EAAC,SAAS,GAAG,EACvC,KAAC,GAAG,IAAC,KAAK,EAAC,QAAQ,EAAC,KAAK,EAAC,eAAe,GAAG,EAC5C,KAAC,GAAG,IAAC,KAAK,EAAC,YAAY,EAAC,KAAK,EAAC,YAAY,GAAG,EAC7C,KAAC,GAAG,IAAC,KAAK,EAAC,YAAY,EAAC,KAAK,EAAC,YAAY,GAAG,EAC7C,KAAC,GAAG,IAAC,KAAK,EAAC,WAAW,EAAC,KAAK,EAAC,eAAe,GAAG,IAC5C,CACV,CAAC;AACN,CAAC,CAAC"}
@@ -21,5 +21,6 @@ export interface NamespaceDetailProps {
21
21
  setLoadingState: (loading: boolean) => void;
22
22
  namespaceAccessUrl?: string;
23
23
  theme?: string;
24
+ onDelete?: () => void;
24
25
  }
25
26
  //# sourceMappingURL=user-settings-namespace-detail.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"user-settings-namespace-detail.d.ts","sourceRoot":"","sources":["../../../src/pages/user/user-settings-namespace-detail.tsx"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;AAElF,OAAO,EAAE,iBAAiB,EAA2B,MAAM,OAAO,CAAC;AAOnE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAKrE,MAAM,WAAW,qBAAqB;IAClC,iBAAiB,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC;CAC/C;AAGD,eAAO,MAAM,4BAA4B,gDAA2C,CAAC;AAkCrF,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAAC,oBAAoB,CA+EnE,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACjC,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB"}
1
+ {"version":3,"file":"user-settings-namespace-detail.d.ts","sourceRoot":"","sources":["../../../src/pages/user/user-settings-namespace-detail.tsx"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;AAElF,OAAO,EAAE,iBAAiB,EAA2B,MAAM,OAAO,CAAC;AAOnE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAMrE,MAAM,WAAW,qBAAqB;IAClC,iBAAiB,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC;CAC/C;AAGD,eAAO,MAAM,4BAA4B,gDAA2C,CAAC;AAkCrF,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAAC,oBAAoB,CA8GnE,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACjC,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB"}
@@ -14,8 +14,9 @@ import { Box, Button, Link, Paper, Grid, Typography } from '@mui/material';
14
14
  import { styled } from '@mui/material/styles';
15
15
  import WarningIcon from '@mui/icons-material/Warning';
16
16
  import { UserNamespaceExtensionListContainer } from './user-namespace-extension-list';
17
- import { AdminDashboardRoutes } from '../admin-dashboard/admin-routes';
17
+ import { AdminDashboardRoutes } from '../admin-dashboard/admin-dashboard-routes';
18
18
  import { NamespaceChangeDialog } from '../admin-dashboard/namespace-change-dialog';
19
+ import { NamespaceDeleteDialog } from '../admin-dashboard/namespace-delete-dialog';
19
20
  import { UserNamespaceMemberList } from './user-namespace-member-list';
20
21
  import { UserNamespaceDetails } from './user-namespace-details';
21
22
  // eslint-disable-next-line react-refresh/only-export-components
@@ -51,6 +52,7 @@ const NamespaceHeader = styled(Box)(({ theme }) => ({
51
52
  }));
52
53
  export const NamespaceDetail = props => {
53
54
  const [changeDialogIsOpen, setChangeDialogIsOpen] = useState(false);
55
+ const [deleteDialogIsOpen, setDeleteDialogIsOpen] = useState(false);
54
56
  const { pathname } = useLocation();
55
57
  const handleCloseChangeDialog = async () => {
56
58
  setChangeDialogIsOpen(false);
@@ -58,6 +60,18 @@ export const NamespaceDetail = props => {
58
60
  const handleOpenChangeDialog = () => {
59
61
  setChangeDialogIsOpen(true);
60
62
  };
63
+ const handleCloseDeleteDialog = async () => {
64
+ setDeleteDialogIsOpen(false);
65
+ };
66
+ const handleDeletedNamespace = async () => {
67
+ setDeleteDialogIsOpen(false);
68
+ if (props.onDelete !== undefined) {
69
+ props.onDelete();
70
+ }
71
+ };
72
+ const handleOpenDeleteDialog = () => {
73
+ setDeleteDialogIsOpen(true);
74
+ };
61
75
  const warningColor = props.theme === 'dark' ? '#fff' : '#151515';
62
76
  return _jsxs(_Fragment, { children: [_jsxs(NamespaceDetailContainer, { container: true, direction: 'column', spacing: 4, children: [!props.namespace.verified && props.namespaceAccessUrl
63
77
  ? _jsx(Grid, { item: true, children: _jsxs(WarningPaper, { sx: {
@@ -69,11 +83,13 @@ export const NamespaceDetail = props => {
69
83
  }
70
84
  }, children: [_jsx(WarningIcon, { fontSize: 'large' }), _jsxs(Box, { ml: 1, children: ["This namespace is not verified. ", _jsx(Link, { href: props.namespaceAccessUrl, target: '_blank', children: "See the documentation" }), " to learn about claiming namespaces."] })] }) })
71
85
  : null, _jsx(Grid, { item: true, children: _jsxs(NamespaceHeader, { children: [_jsx(Typography, { variant: 'h4', children: props.namespace.name }), pathname.startsWith(AdminDashboardRoutes.NAMESPACE_ADMIN)
72
- ? _jsx(Button, { sx: { ml: { xs: 2, sm: 2, md: 2, lg: 0, xl: 0 } }, variant: 'outlined', onClick: handleOpenChangeDialog, children: "Change Namespace" })
86
+ ?
87
+ _jsxs(Box, { children: [_jsx(Button, { sx: { ml: { xs: 2, sm: 2, md: 2, lg: 0, xl: 0 } }, variant: 'outlined', onClick: handleOpenChangeDialog, children: "Change Namespace" }), Object.keys(props.namespace.extensions).length === 0 &&
88
+ _jsx(Button, { variant: 'outlined', sx: { color: 'error.main', height: 36, ml: { xs: 2 } }, onClick: handleOpenDeleteDialog, children: "Delete" })] })
73
89
  : null] }) }), props.namespace.membersUrl
74
90
  ? _jsx(Grid, { item: true, children: _jsx(UserNamespaceMemberList, { setLoadingState: props.setLoadingState, namespace: props.namespace, filterUsers: props.filterUsers, fixSelf: props.fixSelf }) })
75
91
  : null, props.namespace.detailsUrl
76
92
  ? _jsx(Grid, { item: true, children: _jsx(UserNamespaceDetails, { namespace: props.namespace }) })
77
- : null, _jsx(Grid, { item: true, children: _jsx(UserNamespaceExtensionListContainer, { namespace: props.namespace }) })] }), _jsx(NamespaceChangeDialog, { open: changeDialogIsOpen, onClose: handleCloseChangeDialog, namespace: props.namespace, setLoadingState: props.setLoadingState })] });
93
+ : null, _jsx(Grid, { item: true, children: _jsx(UserNamespaceExtensionListContainer, { namespace: props.namespace }) })] }), _jsx(NamespaceChangeDialog, { open: changeDialogIsOpen, onClose: handleCloseChangeDialog, namespace: props.namespace, setLoadingState: props.setLoadingState }), _jsx(NamespaceDeleteDialog, { open: deleteDialogIsOpen, onClose: handleCloseDeleteDialog, onDelete: handleDeletedNamespace, namespace: props.namespace, setLoadingState: props.setLoadingState })] });
78
94
  };
79
95
  //# sourceMappingURL=user-settings-namespace-detail.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"user-settings-namespace-detail.js","sourceRoot":"","sources":["../../../src/pages/user/user-settings-namespace-detail.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-settings-namespace-detail.js","sourceRoot":"","sources":["../../../src/pages/user/user-settings-namespace-detail.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"user-settings-namespaces.js","sourceRoot":"","sources":["../../../src/pages/user/user-settings-namespaces.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-settings-namespaces.js","sourceRoot":"","sources":["../../../src/pages/user/user-settings-namespaces.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openvsx-webui-test",
3
- "version": "0.20.0-dev.5",
3
+ "version": "0.20.2-dev.0",
4
4
  "description": "User interface for Eclipse Open VSX",
5
5
  "keywords": [
6
6
  "react",
@@ -107,6 +107,7 @@
107
107
  "express-rate-limit": "^7.4.0",
108
108
  "mocha": "^11.7.0",
109
109
  "rimraf": "^6.1.0",
110
+ "rollup-plugin-visualizer": "^7.0.1",
110
111
  "ts-mocha": "^11.1.0",
111
112
  "ts-node": "^10.9.2",
112
113
  "typescript": "^5.9.0",
@@ -125,6 +126,7 @@
125
126
  "watch:default": "yarn build:server && vite build --watch",
126
127
  "start:default": "node lib/default/server",
127
128
  "dev": "vite dev",
129
+ "preview": "vite preview",
128
130
  "link2server": "sh -c 'ln -sf $(realpath dist) ../server/build/resources/main/static'"
129
131
  },
130
132
  "packageManager": "yarn@4.9.1"
@@ -11,7 +11,7 @@
11
11
  * SPDX-License-Identifier: EPL-2.0
12
12
  ********************************************************************************/
13
13
 
14
- import { FC } from "react";
14
+ import { FC } from 'react';
15
15
  import { Box, Typography, Collapse, Chip } from '@mui/material';
16
16
  import { useTheme, Theme } from '@mui/material/styles';
17
17
  import { ScanResult, Threat, ValidationFailure, CheckResult } from '../../../context/scan-admin';
@@ -63,7 +63,7 @@ const ThreatItem: FC<ThreatItemProps> = ({ threat }) => {
63
63
  /**
64
64
  * A single validation failure item in the expanded content.
65
65
  */
66
- const ValidationFailureItem: React.FC<ValidationFailureItemProps> = ({ failure }) => {
66
+ const ValidationFailureItem: FC<ValidationFailureItemProps> = ({ failure }) => {
67
67
  const theme = useTheme();
68
68
  const isUnenforced = !failure.enforcedFlag;
69
69
 
@@ -119,7 +119,7 @@ const formatDuration = (ms: number | null): string | undefined => {
119
119
  /**
120
120
  * A single check result item showing what check was run and its outcome.
121
121
  */
122
- const CheckResultItem: React.FC<CheckResultItemProps> = ({ checkResult }) => {
122
+ const CheckResultItem: FC<CheckResultItemProps> = ({ checkResult }) => {
123
123
  const theme = useTheme();
124
124
  const colors = getCheckResultColor(checkResult.result, theme);
125
125
  const isPassed = checkResult.result === 'PASSED';
@@ -182,7 +182,7 @@ const CheckResultItem: React.FC<CheckResultItemProps> = ({ checkResult }) => {
182
182
  * The expanded content section showing threats, validation failures, and check results.
183
183
  * Each item's enforcedFlag controls its individual striping effect.
184
184
  */
185
- export const ScanCardExpandedContent: React.FC<ScanCardExpandedContentProps> = ({ scan, expanded, onCollapseComplete }) => {
185
+ export const ScanCardExpandedContent: FC<ScanCardExpandedContentProps> = ({ scan, expanded, onCollapseComplete }) => {
186
186
  const theme = useTheme();
187
187
  const hasThreats = scan.threats.length > 0;
188
188
  const hasValidationFailures = scan.validationFailures.length > 0;
@@ -32,7 +32,7 @@ import {
32
32
  getStatusColorSx,
33
33
  } from './utils';
34
34
  import { createRoute } from '../../../utils';
35
- import { AdminDashboardRoutes } from '../../../pages/admin-dashboard/admin-routes';
35
+ import { AdminDashboardRoutes } from '../../../pages/admin-dashboard/admin-dashboard-routes';
36
36
  import { ExtensionDetailRoutes } from '../../../pages/extension-detail/extension-detail-routes';
37
37
 
38
38
  interface ScanCardHeaderProps {
@@ -189,7 +189,7 @@ export const shouldShowExpandButton = (scan: ScanResult): boolean => {
189
189
  };
190
190
 
191
191
  export const hasDownload = (scan: ScanResult): boolean => {
192
- return scan.status === 'PASSED' || scan.status === 'QUARANTINED';
192
+ return scan.status === 'PASSED' || scan.status === 'QUARANTINED' || scan.status === 'ERROR';
193
193
  };
194
194
 
195
195
  export const getFileName = (url?: string): string => {
@@ -8,42 +8,99 @@
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  ********************************************************************************/
10
10
 
11
- import { FunctionComponent, PropsWithChildren, ReactNode, useState } from 'react';
12
- import { ListItemButton, ListItemText, Collapse, List, ListItemIcon } from '@mui/material';
11
+ import { FunctionComponent, PropsWithChildren, ReactNode, useContext, useRef, useState } from 'react';
12
+ import {
13
+ Collapse, List, ListItemButton, ListItemIcon, ListItemText,
14
+ Popover, Tooltip,
15
+ } from '@mui/material';
13
16
  import ExpandLess from '@mui/icons-material/ExpandLess';
14
17
  import ExpandMore from '@mui/icons-material/ExpandMore';
15
18
  import { useNavigate } from 'react-router';
19
+ import { SidebarContext } from './sidebar-context';
20
+
21
+ const EXPANDED_CONTEXT = { collapsed: false };
16
22
 
17
23
  export const NavigationItem: FunctionComponent<PropsWithChildren<NavigationProps>> = props => {
18
- const [open, setOpen] = useState(false);
24
+ const [groupExpanded, setGroupExpanded] = useState(false);
25
+ const [popoverOpen, setPopoverOpen] = useState(false);
26
+ const anchorRef = useRef<HTMLDivElement>(null);
27
+ const { collapsed } = useContext(SidebarContext);
19
28
  const navigate = useNavigate();
20
29
 
30
+ const isGroup = !!props.children;
31
+
21
32
  const handleClick = () => {
22
- if (props.children) {
23
- setOpen(!open);
33
+ if (isGroup) {
34
+ if (collapsed) {
35
+ setPopoverOpen(true);
36
+ } else {
37
+ setGroupExpanded(prev => !prev);
38
+ }
24
39
  } else if (props.route) {
25
- props.onOpenRoute?.call(this, props.route);
26
40
  navigate(props.route);
27
41
  }
28
42
  };
29
43
 
30
- return (<>
31
- <ListItemButton sx={ props.active ? { bgcolor: 'action.selected' } : null } onClick={handleClick}>
32
- {
33
- props.icon && <ListItemIcon>{props.icon}</ListItemIcon>
34
- }
35
- <ListItemText primary={props.label} />
36
- {props.children && (open ? <ExpandLess /> : <ExpandMore />)}
44
+ const button = (
45
+ <ListItemButton
46
+ ref={anchorRef}
47
+ selected={props.active}
48
+ onClick={handleClick}
49
+ sx={{
50
+ minHeight: 48,
51
+ px: 2.5,
52
+ justifyContent: collapsed ? 'center' : 'initial',
53
+ }}
54
+ >
55
+ {props.icon && (
56
+ <ListItemIcon sx={{ minWidth: 0, mr: collapsed ? 'auto' : 3, justifyContent: 'center' }}>
57
+ {props.icon}
58
+ </ListItemIcon>
59
+ )}
60
+ {!collapsed && <ListItemText primary={props.label} />}
61
+ {!collapsed && isGroup && (groupExpanded ? <ExpandLess /> : <ExpandMore />)}
37
62
  </ListItemButton>
38
- {
39
- props.children &&
40
- <Collapse in={open} timeout='auto' unmountOnExit>
41
- <List sx={{ pl: 4 }}>
42
- {props.children}
43
- </List>
44
- </Collapse>
45
- }
46
- </>);
63
+ );
64
+
65
+ return (
66
+ <>
67
+ {collapsed ? (
68
+ <Tooltip title={props.label} placement='right'>
69
+ {button}
70
+ </Tooltip>
71
+ ) : (
72
+ button
73
+ )}
74
+
75
+ {/* Inline expand for groups when sidebar is open */}
76
+ {!collapsed && isGroup && (
77
+ <Collapse in={groupExpanded} timeout='auto' unmountOnExit>
78
+ <List sx={{ pl: 2 }} disablePadding>
79
+ {props.children}
80
+ </List>
81
+ </Collapse>
82
+ )}
83
+
84
+ {/* Floating popover for groups when sidebar is collapsed */}
85
+ {isGroup && (
86
+ <Popover
87
+ open={popoverOpen}
88
+ anchorEl={anchorRef.current}
89
+ onClose={() => setPopoverOpen(false)}
90
+ anchorOrigin={{ vertical: 'top', horizontal: 'right' }}
91
+ transformOrigin={{ vertical: 'top', horizontal: 'left' }}
92
+ disableRestoreFocus
93
+ elevation={2}
94
+ >
95
+ <SidebarContext.Provider value={EXPANDED_CONTEXT}>
96
+ <List disablePadding onClick={() => setPopoverOpen(false)}>
97
+ {props.children}
98
+ </List>
99
+ </SidebarContext.Provider>
100
+ </Popover>
101
+ )}
102
+ </>
103
+ );
47
104
  };
48
105
 
49
106
  export interface NavigationProps {
@@ -51,5 +108,4 @@ export interface NavigationProps {
51
108
  icon?: ReactNode;
52
109
  label: string;
53
110
  active?: boolean;
54
- onOpenRoute?: (route: string) => void;
55
111
  }
@@ -0,0 +1,17 @@
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 { createContext } from 'react';
15
+
16
+
17
+ export const SidebarContext = createContext<{ collapsed: boolean; }>({ collapsed: false });
@@ -8,43 +8,71 @@
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  ********************************************************************************/
10
10
 
11
- import { FunctionComponent, PropsWithChildren } from 'react';
11
+ import { FunctionComponent, PropsWithChildren, useMemo } from 'react';
12
12
  import { Divider, Drawer, IconButton, List } from '@mui/material';
13
+ import { styled, Theme, CSSObject } from '@mui/material/styles';
13
14
  import ChevronLeftIcon from '@mui/icons-material/ChevronLeft';
15
+ import ChevronRightIcon from '@mui/icons-material/ChevronRight';
14
16
  import { DrawerHeader } from './drawer-header';
17
+ import { SidebarContext } from './sidebar-context';
15
18
 
16
- export const Sidepanel: FunctionComponent<PropsWithChildren<SidepanelProps>> = props => {
17
- const width = props.width;
19
+ export const DRAWER_WIDTH = 240;
20
+ export const COLLAPSED_WIDTH = 57;
18
21
 
22
+ const openedMixin = (theme: Theme): CSSObject => ({
23
+ width: DRAWER_WIDTH,
24
+ transition: theme.transitions.create('width', {
25
+ easing: theme.transitions.easing.sharp,
26
+ duration: theme.transitions.duration.enteringScreen,
27
+ }),
28
+ overflowX: 'hidden',
29
+ });
30
+
31
+ const closedMixin = (theme: Theme): CSSObject => ({
32
+ width: COLLAPSED_WIDTH,
33
+ transition: theme.transitions.create('width', {
34
+ easing: theme.transitions.easing.sharp,
35
+ duration: theme.transitions.duration.leavingScreen,
36
+ }),
37
+ overflowX: 'hidden',
38
+ });
39
+
40
+ const StyledDrawer = styled(Drawer, { shouldForwardProp: (prop) => prop !== 'open' })(
41
+ ({ theme, open }) => ({
42
+ width: DRAWER_WIDTH,
43
+ flexShrink: 0,
44
+ whiteSpace: 'nowrap',
45
+ boxSizing: 'border-box',
46
+ ...(open ? {
47
+ ...openedMixin(theme),
48
+ '& .MuiDrawer-paper': openedMixin(theme),
49
+ } : {
50
+ ...closedMixin(theme),
51
+ '& .MuiDrawer-paper': closedMixin(theme),
52
+ }),
53
+ })
54
+ );
55
+
56
+ export const Sidepanel: FunctionComponent<PropsWithChildren<SidepanelProps>> = ({ open, onToggle, children }) => {
57
+ const contextValue = useMemo(() => ({ collapsed: !open }), [open]);
19
58
  return (
20
- <Drawer
21
- sx={{
22
- width: width,
23
- flexShrink: 0,
24
- '& .MuiDrawer-paper': {
25
- width: width,
26
- boxSizing: 'border-box',
27
- },
28
- }}
29
- variant='persistent'
30
- anchor='left'
31
- open={props.open}
32
- >
33
- <DrawerHeader>
34
- <IconButton onClick={props.handleDrawerClose}>
35
- <ChevronLeftIcon />
36
- </IconButton>
37
- </DrawerHeader>
38
- <Divider />
39
- <List>
40
- {props.children}
41
- </List>
42
- </Drawer>
59
+ <SidebarContext.Provider value={contextValue}>
60
+ <StyledDrawer variant='permanent' anchor='left' open={open}>
61
+ <DrawerHeader>
62
+ <IconButton onClick={onToggle} aria-label={open ? 'collapse sidebar' : 'expand sidebar'}>
63
+ {open ? <ChevronLeftIcon /> : <ChevronRightIcon />}
64
+ </IconButton>
65
+ </DrawerHeader>
66
+ <Divider />
67
+ <List disablePadding>
68
+ {children}
69
+ </List>
70
+ </StyledDrawer>
71
+ </SidebarContext.Provider>
43
72
  );
44
73
  };
45
74
 
46
- interface SidepanelProps {
47
- width: number;
75
+ export interface SidepanelProps {
48
76
  open: boolean;
49
- handleDrawerClose: () => void;
77
+ onToggle: () => void;
50
78
  }
@@ -25,7 +25,7 @@ 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-routes';
28
+ import { AdminDashboardRoutes } from '../pages/admin-dashboard/admin-dashboard-routes';
29
29
  import { LogoutForm } from '../pages/user/logout';
30
30
  import { LoginComponent } from './login';
31
31
 
@@ -504,6 +504,7 @@ export interface AdminService {
504
504
  deleteExtensions(abortController: AbortController, req: { namespace: string, extension: string, targetPlatformVersions?: object[] }): Promise<Readonly<SuccessResult | ErrorResult>>
505
505
  getNamespace(abortController: AbortController, name: string): Promise<Readonly<Namespace>>
506
506
  createNamespace(abortController: AbortController, namespace: { name: string }): Promise<Readonly<SuccessResult | ErrorResult>>
507
+ deleteNamespace(abortController: AbortController, namespace: { name: string }): Promise<Readonly<SuccessResult | ErrorResult>>
507
508
  changeNamespace(abortController: AbortController, req: {oldNamespace: string, newNamespace: string, removeOldNamespace: boolean, mergeIfNewNamespaceAlreadyExists: boolean}): Promise<Readonly<SuccessResult | ErrorResult>>
508
509
  getPublisherInfo(abortController: AbortController, provider: string, login: string): Promise<Readonly<PublisherInfo>>
509
510
  revokePublisherContributions(abortController: AbortController, provider: string, login: string): Promise<Readonly<SuccessResult | ErrorResult>>
@@ -601,6 +602,23 @@ export class AdminServiceImpl implements AdminService {
601
602
  });
602
603
  }
603
604
 
605
+ async deleteNamespace(abortController: AbortController, namespace: { name: string }): Promise<Readonly<SuccessResult | ErrorResult>> {
606
+ const csrfResponse = await this.registry.getCsrfToken(abortController);
607
+ const headers: Record<string, string> = {
608
+ 'Content-Type': 'application/json;charset=UTF-8'
609
+ };
610
+ if (!isError(csrfResponse)) {
611
+ const csrfToken = csrfResponse as CsrfTokenJson;
612
+ headers[csrfToken.header] = csrfToken.value;
613
+ }
614
+ return sendRequest({
615
+ abortController,
616
+ credentials: true,
617
+ endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'namespace', namespace.name]),
618
+ method: 'DELETE',
619
+ headers
620
+ });
621
+ }
604
622
  async changeNamespace(abortController: AbortController, req: {oldNamespace: string, newNamespace: string, removeOldNamespace: boolean, mergeIfNewNamespaceAlreadyExists: boolean}): Promise<Readonly<SuccessResult | ErrorResult>> {
605
623
  const csrfResponse = await this.registry.getCsrfToken(abortController);
606
624
  const headers: Record<string, string> = {
@@ -0,0 +1,67 @@
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 { Dispatch, SetStateAction, useCallback, useEffect, useState } from 'react';
15
+
16
+ /**
17
+ * Reads a value from localStorage and deserializes it.
18
+ * Returns `fallback` when the key is missing or the stored value cannot be parsed.
19
+ */
20
+ function readStorage<T>(key: string, fallback: T): T {
21
+ try {
22
+ const raw = localStorage.getItem(key);
23
+ return raw === null ? fallback : (JSON.parse(raw) as T);
24
+ } catch {
25
+ return fallback;
26
+ }
27
+ }
28
+
29
+ /**
30
+ * A useState-compatible hook that persists its value in localStorage.
31
+ *
32
+ * - Initialises from localStorage (falling back to `initialValue`).
33
+ * - Keeps multiple tabs in sync by listening to the `storage` event.
34
+ * - The setter accepts both a direct value and an updater function, matching
35
+ * the full useState API.
36
+ */
37
+ export function useLocalStorage<T>(key: string, initialValue: T): [T, Dispatch<SetStateAction<T>>] {
38
+ const [state, setState] = useState<T>(() => readStorage(key, initialValue));
39
+
40
+ // Persist every state change to localStorage.
41
+ useEffect(() => {
42
+ try {
43
+ localStorage.setItem(key, JSON.stringify(state));
44
+ } catch {
45
+ // Quota exceeded or private-browsing restrictions — silently ignore.
46
+ }
47
+ }, [key, state]);
48
+
49
+ // Keep tabs in sync: when another tab writes to the same key, update state.
50
+ useEffect(() => {
51
+ const onStorage = (event: StorageEvent) => {
52
+ if (event.key !== key || event.storageArea !== localStorage) {
53
+ return;
54
+ }
55
+ setState(event.newValue === null ? initialValue : (JSON.parse(event.newValue) as T));
56
+ };
57
+
58
+ globalThis.addEventListener('storage', onStorage);
59
+ return () => globalThis.removeEventListener('storage', onStorage);
60
+ }, [key, initialValue]);
61
+
62
+ const setValue: Dispatch<SetStateAction<T>> = useCallback((action) => {
63
+ setState(prev => (typeof action === 'function' ? (action as (prev: T) => T)(prev) : action));
64
+ }, []);
65
+
66
+ return [state, setValue];
67
+ }
package/src/main.tsx CHANGED
@@ -8,11 +8,10 @@
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  ********************************************************************************/
10
10
 
11
- import { FunctionComponent, ReactNode, useEffect, useState, useRef } from 'react';
11
+ import { FunctionComponent, ReactNode, useEffect, useState, useRef, lazy, Suspense } from 'react';
12
12
  import { CssBaseline } from '@mui/material';
13
13
  import { Route, Routes } from 'react-router-dom';
14
- import { AdminDashboard } from './pages/admin-dashboard/admin-dashboard';
15
- import { AdminDashboardRoutes } from './pages/admin-dashboard/admin-routes';
14
+ import { AdminDashboardRoutes } from './pages/admin-dashboard/admin-dashboard-routes';
16
15
  import { ErrorDialog } from './components/error-dialog';
17
16
  import { handleError } from './utils';
18
17
  import { ExtensionRegistryService } from './extension-registry-service';
@@ -20,9 +19,11 @@ import { UserData, isError, ReportedError, isSuccess, LoginProviders } from './e
20
19
  import { MainContext } from './context';
21
20
  import { PageSettings } from './page-settings';
22
21
  import { ErrorResponse } from './server-request';
22
+ import { OtherPages } from './other-pages';
23
23
 
24
24
  import '../src/main.css';
25
- import { OtherPages } from './other-pages';
25
+
26
+ const AdminDashboard = lazy(() => import('./pages/admin-dashboard/admin-dashboard').then(m => ({ default: m.AdminDashboard })));
26
27
 
27
28
  export const Main: FunctionComponent<MainProps> = props => {
28
29
  const [user, setUser] = useState<UserData>();
@@ -98,8 +99,12 @@ export const Main: FunctionComponent<MainProps> = props => {
98
99
  return <>
99
100
  { MainHeadTagsComponent ? <MainHeadTagsComponent pageSettings={props.pageSettings}/> : null }
100
101
  <Routes>
101
- <Route path={AdminDashboardRoutes.MAIN + '/*'} element={<AdminDashboard userLoading={userLoading} />} />
102
- <Route path='*' element={ <OtherPages user={user} userLoading={userLoading} /> } />
102
+ <Route path={AdminDashboardRoutes.MAIN + '/*'} element={
103
+ <Suspense fallback={null}>
104
+ <AdminDashboard userLoading={userLoading} />
105
+ </Suspense>
106
+ } />
107
+ <Route path='*' element={<OtherPages user={user} userLoading={userLoading} />} />
103
108
  </Routes>
104
109
  {
105
110
  error ?