@strapi/admin 5.26.0 → 5.27.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 (249) hide show
  1. package/dist/admin/admin/src/components/ErrorElement.js +10 -3
  2. package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
  3. package/dist/admin/admin/src/components/ErrorElement.mjs +10 -3
  4. package/dist/admin/admin/src/components/ErrorElement.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/GuidedTour/Context.js +15 -0
  6. package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
  7. package/dist/admin/admin/src/components/GuidedTour/Context.mjs +15 -0
  8. package/dist/admin/admin/src/components/GuidedTour/Context.mjs.map +1 -1
  9. package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.js +15 -0
  10. package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.js.map +1 -0
  11. package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.mjs +13 -0
  12. package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.mjs.map +1 -0
  13. package/dist/admin/admin/src/components/GuidedTour/Overview.js +2 -1
  14. package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
  15. package/dist/admin/admin/src/components/GuidedTour/Overview.mjs +2 -1
  16. package/dist/admin/admin/src/components/GuidedTour/Overview.mjs.map +1 -1
  17. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js +2 -2
  18. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js.map +1 -1
  19. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs +2 -2
  20. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs.map +1 -1
  21. package/dist/admin/admin/src/components/GuidedTour/Tours.js +1 -1
  22. package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
  23. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs +1 -1
  24. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -1
  25. package/dist/admin/admin/src/components/Layouts/ActionLayout.js +3 -2
  26. package/dist/admin/admin/src/components/Layouts/ActionLayout.js.map +1 -1
  27. package/dist/admin/admin/src/components/Layouts/ActionLayout.mjs +3 -2
  28. package/dist/admin/admin/src/components/Layouts/ActionLayout.mjs.map +1 -1
  29. package/dist/admin/admin/src/components/Layouts/ContentLayout.js +3 -2
  30. package/dist/admin/admin/src/components/Layouts/ContentLayout.js.map +1 -1
  31. package/dist/admin/admin/src/components/Layouts/ContentLayout.mjs +3 -2
  32. package/dist/admin/admin/src/components/Layouts/ContentLayout.mjs.map +1 -1
  33. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +65 -32
  34. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
  35. package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs +66 -33
  36. package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs.map +1 -1
  37. package/dist/admin/admin/src/components/Layouts/Layout.js +29 -6
  38. package/dist/admin/admin/src/components/Layouts/Layout.js.map +1 -1
  39. package/dist/admin/admin/src/components/Layouts/Layout.mjs +30 -7
  40. package/dist/admin/admin/src/components/Layouts/Layout.mjs.map +1 -1
  41. package/dist/admin/admin/src/components/LeftMenu.js +147 -92
  42. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  43. package/dist/admin/admin/src/components/LeftMenu.mjs +131 -95
  44. package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
  45. package/dist/admin/admin/src/components/MainNav/MainNav.js +20 -6
  46. package/dist/admin/admin/src/components/MainNav/MainNav.js.map +1 -1
  47. package/dist/admin/admin/src/components/MainNav/MainNav.mjs +20 -6
  48. package/dist/admin/admin/src/components/MainNav/MainNav.mjs.map +1 -1
  49. package/dist/admin/admin/src/components/MainNav/MainNavLinks.js +157 -0
  50. package/dist/admin/admin/src/components/MainNav/MainNavLinks.js.map +1 -0
  51. package/dist/admin/admin/src/components/MainNav/MainNavLinks.mjs +154 -0
  52. package/dist/admin/admin/src/components/MainNav/MainNavLinks.mjs.map +1 -0
  53. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js +65 -0
  54. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js.map +1 -0
  55. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.mjs +63 -0
  56. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.mjs.map +1 -0
  57. package/dist/admin/admin/src/components/MainNav/NavLink.js +2 -1
  58. package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
  59. package/dist/admin/admin/src/components/MainNav/NavLink.mjs +2 -1
  60. package/dist/admin/admin/src/components/MainNav/NavLink.mjs.map +1 -1
  61. package/dist/admin/admin/src/components/MainNav/NavUser.js +39 -22
  62. package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
  63. package/dist/admin/admin/src/components/MainNav/NavUser.mjs +39 -22
  64. package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
  65. package/dist/admin/admin/src/components/MainNav/TrialCountdown.js +8 -1
  66. package/dist/admin/admin/src/components/MainNav/TrialCountdown.js.map +1 -1
  67. package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs +9 -2
  68. package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs.map +1 -1
  69. package/dist/admin/admin/src/components/NpsSurvey.js +159 -119
  70. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  71. package/dist/admin/admin/src/components/NpsSurvey.mjs +160 -120
  72. package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
  73. package/dist/admin/admin/src/components/PageHelpers.js +1 -1
  74. package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
  75. package/dist/admin/admin/src/components/PageHelpers.mjs +1 -1
  76. package/dist/admin/admin/src/components/PageHelpers.mjs.map +1 -1
  77. package/dist/admin/admin/src/components/Providers.js +2 -4
  78. package/dist/admin/admin/src/components/Providers.js.map +1 -1
  79. package/dist/admin/admin/src/components/Providers.mjs +2 -4
  80. package/dist/admin/admin/src/components/Providers.mjs.map +1 -1
  81. package/dist/admin/admin/src/components/SubNav.js +98 -33
  82. package/dist/admin/admin/src/components/SubNav.js.map +1 -1
  83. package/dist/admin/admin/src/components/SubNav.mjs +99 -34
  84. package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
  85. package/dist/admin/admin/src/components/UpsellBanner.js +3 -2
  86. package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
  87. package/dist/admin/admin/src/components/UpsellBanner.mjs +3 -2
  88. package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
  89. package/dist/admin/admin/src/constants/theme.js +12 -0
  90. package/dist/admin/admin/src/constants/theme.js.map +1 -0
  91. package/dist/admin/admin/src/constants/theme.mjs +9 -0
  92. package/dist/admin/admin/src/constants/theme.mjs.map +1 -0
  93. package/dist/admin/admin/src/features/Notifications.js +14 -7
  94. package/dist/admin/admin/src/features/Notifications.js.map +1 -1
  95. package/dist/admin/admin/src/features/Notifications.mjs +15 -8
  96. package/dist/admin/admin/src/features/Notifications.mjs.map +1 -1
  97. package/dist/admin/admin/src/features/Tracking.js +5 -1
  98. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  99. package/dist/admin/admin/src/features/Tracking.mjs +5 -1
  100. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  101. package/dist/admin/admin/src/hooks/useDeviceType.js +43 -0
  102. package/dist/admin/admin/src/hooks/useDeviceType.js.map +1 -0
  103. package/dist/admin/admin/src/hooks/useDeviceType.mjs +22 -0
  104. package/dist/admin/admin/src/hooks/useDeviceType.mjs.map +1 -0
  105. package/dist/admin/admin/src/hooks/useMediaQuery.js +70 -0
  106. package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -0
  107. package/dist/admin/admin/src/hooks/useMediaQuery.mjs +46 -0
  108. package/dist/admin/admin/src/hooks/useMediaQuery.mjs.map +1 -0
  109. package/dist/admin/admin/src/hooks/useMenu.js +19 -0
  110. package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
  111. package/dist/admin/admin/src/hooks/useMenu.mjs +19 -0
  112. package/dist/admin/admin/src/hooks/useMenu.mjs.map +1 -1
  113. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +15 -2
  114. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  115. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +15 -2
  116. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  117. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js +11 -7
  118. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js.map +1 -1
  119. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.mjs +11 -7
  120. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.mjs.map +1 -1
  121. package/dist/admin/admin/src/pages/Auth/components/Login.js +3 -0
  122. package/dist/admin/admin/src/pages/Auth/components/Login.js.map +1 -1
  123. package/dist/admin/admin/src/pages/Auth/components/Login.mjs +3 -0
  124. package/dist/admin/admin/src/pages/Auth/components/Login.mjs.map +1 -1
  125. package/dist/admin/admin/src/pages/Home/HomePage.js +55 -54
  126. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  127. package/dist/admin/admin/src/pages/Home/HomePage.mjs +55 -54
  128. package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
  129. package/dist/admin/admin/src/pages/ProfilePage.js +54 -51
  130. package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
  131. package/dist/admin/admin/src/pages/ProfilePage.mjs +55 -52
  132. package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
  133. package/dist/admin/admin/src/pages/Settings/Layout.js +42 -6
  134. package/dist/admin/admin/src/pages/Settings/Layout.js.map +1 -1
  135. package/dist/admin/admin/src/pages/Settings/Layout.mjs +43 -7
  136. package/dist/admin/admin/src/pages/Settings/Layout.mjs.map +1 -1
  137. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +44 -32
  138. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  139. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +45 -33
  140. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  141. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +1 -1
  142. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  143. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +2 -2
  144. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  145. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js +1 -1
  146. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js.map +1 -1
  147. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.mjs +2 -2
  148. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.mjs.map +1 -1
  149. package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.js +4 -3
  150. package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.js.map +1 -1
  151. package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.mjs +5 -4
  152. package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.mjs.map +1 -1
  153. package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.js +4 -3
  154. package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.js.map +1 -1
  155. package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.mjs +5 -4
  156. package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.mjs.map +1 -1
  157. package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.js +4 -3
  158. package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.js.map +1 -1
  159. package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.mjs +5 -4
  160. package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.mjs.map +1 -1
  161. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +36 -32
  162. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  163. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs +36 -32
  164. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs.map +1 -1
  165. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js +1 -1
  166. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
  167. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.mjs +1 -1
  168. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.mjs.map +1 -1
  169. package/dist/admin/admin/src/services/api.js +2 -1
  170. package/dist/admin/admin/src/services/api.js.map +1 -1
  171. package/dist/admin/admin/src/services/api.mjs +2 -1
  172. package/dist/admin/admin/src/services/api.mjs.map +1 -1
  173. package/dist/admin/admin/src/services/auth.js +13 -2
  174. package/dist/admin/admin/src/services/auth.js.map +1 -1
  175. package/dist/admin/admin/src/services/auth.mjs +12 -3
  176. package/dist/admin/admin/src/services/auth.mjs.map +1 -1
  177. package/dist/admin/admin/src/translations/en.json.js +1 -0
  178. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  179. package/dist/admin/admin/src/translations/en.json.mjs +1 -0
  180. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  181. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +1 -1
  182. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
  183. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs +1 -1
  184. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
  185. package/dist/admin/ee/admin/src/services/ai.js +5 -2
  186. package/dist/admin/ee/admin/src/services/ai.js.map +1 -1
  187. package/dist/admin/ee/admin/src/services/ai.mjs +5 -2
  188. package/dist/admin/ee/admin/src/services/ai.mjs.map +1 -1
  189. package/dist/admin/index.js +11 -0
  190. package/dist/admin/index.js.map +1 -1
  191. package/dist/admin/index.mjs +4 -0
  192. package/dist/admin/index.mjs.map +1 -1
  193. package/dist/admin/src/components/GuidedTour/Context.d.ts +4 -0
  194. package/dist/admin/src/components/GuidedTour/GuidedTourProvider.d.ts +6 -0
  195. package/dist/admin/src/components/LeftMenu.d.ts +2 -2
  196. package/dist/admin/src/components/MainNav/MainNavLinks.d.ts +11 -0
  197. package/dist/admin/src/components/MainNav/NavBurgerMenu.d.ts +9 -0
  198. package/dist/admin/src/components/MainNav/NavUser.d.ts +5 -4
  199. package/dist/admin/src/components/SubNav.d.ts +18 -5
  200. package/dist/admin/src/constants/theme.d.ts +7 -0
  201. package/dist/admin/src/core/store/configure.d.ts +2 -2
  202. package/dist/admin/src/core/store/hooks.d.ts +2 -2
  203. package/dist/admin/src/hooks/useAdminRoles.d.ts +1 -1
  204. package/dist/admin/src/hooks/useDeviceType.d.ts +6 -0
  205. package/dist/admin/src/hooks/useMediaQuery.d.ts +21 -0
  206. package/dist/admin/src/hooks/useMenu.d.ts +9 -1
  207. package/dist/admin/src/index.d.ts +4 -0
  208. package/dist/admin/src/pages/Settings/components/SettingsNav.d.ts +3 -6
  209. package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +4 -4
  210. package/dist/admin/src/selectors.d.ts +2 -2
  211. package/dist/admin/src/services/admin.d.ts +6 -6
  212. package/dist/admin/src/services/api.d.ts +1 -1
  213. package/dist/admin/src/services/apiTokens.d.ts +1 -1
  214. package/dist/admin/src/services/auth.d.ts +21 -12
  215. package/dist/admin/src/services/contentApi.d.ts +1 -1
  216. package/dist/admin/src/services/contentManager.d.ts +1 -1
  217. package/dist/admin/src/services/homepage.d.ts +3 -3
  218. package/dist/admin/src/services/transferTokens.d.ts +1 -1
  219. package/dist/admin/src/services/users.d.ts +8 -8
  220. package/dist/admin/src/services/webhooks.d.ts +2 -2
  221. package/dist/admin/tests/utils.d.ts +1 -1
  222. package/dist/ee/admin/src/services/ai.d.ts +2 -2
  223. package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
  224. package/dist/server/server/src/controllers/authenticated-user.js +15 -0
  225. package/dist/server/server/src/controllers/authenticated-user.js.map +1 -1
  226. package/dist/server/server/src/controllers/authenticated-user.mjs +15 -0
  227. package/dist/server/server/src/controllers/authenticated-user.mjs.map +1 -1
  228. package/dist/server/server/src/routes/users.js +10 -0
  229. package/dist/server/server/src/routes/users.js.map +1 -1
  230. package/dist/server/server/src/routes/users.mjs +10 -0
  231. package/dist/server/server/src/routes/users.mjs.map +1 -1
  232. package/dist/server/server/src/services/user.js +113 -1
  233. package/dist/server/server/src/services/user.js.map +1 -1
  234. package/dist/server/server/src/services/user.mjs +113 -1
  235. package/dist/server/server/src/services/user.mjs.map +1 -1
  236. package/dist/server/src/controllers/authenticated-user.d.ts +1 -0
  237. package/dist/server/src/controllers/authenticated-user.d.ts.map +1 -1
  238. package/dist/server/src/controllers/index.d.ts +1 -0
  239. package/dist/server/src/controllers/index.d.ts.map +1 -1
  240. package/dist/server/src/index.d.ts +5 -0
  241. package/dist/server/src/index.d.ts.map +1 -1
  242. package/dist/server/src/routes/users.d.ts.map +1 -1
  243. package/dist/server/src/services/index.d.ts +4 -0
  244. package/dist/server/src/services/index.d.ts.map +1 -1
  245. package/dist/server/src/services/user.d.ts +4 -0
  246. package/dist/server/src/services/user.d.ts.map +1 -1
  247. package/dist/shared/contracts/users.d.ts +16 -0
  248. package/dist/shared/contracts/users.d.ts.map +1 -1
  249. package/package.json +7 -7
@@ -1,8 +1,13 @@
1
- import { jsx, jsxs } from 'react/jsx-runtime';
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import { Box } from '@strapi/design-system';
2
3
  import { useIntl } from 'react-intl';
3
4
  import { useMatch, Navigate, Outlet } from 'react-router-dom';
4
5
  import { Layouts } from '../../components/Layouts/Layout.mjs';
5
6
  import { Page } from '../../components/PageHelpers.mjs';
7
+ import { SubNav } from '../../components/SubNav.mjs';
8
+ import { RESPONSIVE_DEFAULT_SPACING } from '../../constants/theme.mjs';
9
+ import { BackButton } from '../../features/BackButton.mjs';
10
+ import { useIsMobile } from '../../hooks/useMediaQuery.mjs';
6
11
  import { useSettingsMenu } from '../../hooks/useSettingsMenu.mjs';
7
12
  import { SettingsNav } from './components/SettingsNav.mjs';
8
13
 
@@ -12,21 +17,40 @@ const Layout = ()=>{
12
17
  * but also lets any nesting after that pass.
13
18
  */ const match = useMatch('/settings/:settingId/*');
14
19
  const { formatMessage } = useIntl();
15
- const { isLoading, menu } = useSettingsMenu();
20
+ const { isLoading } = useSettingsMenu();
21
+ const isMobile = useIsMobile();
16
22
  // Since the useSettingsMenu hook can make API calls in order to check the links permissions
17
23
  // We need to add a loading state to prevent redirecting the user while permissions are being checked
18
24
  if (isLoading) {
19
25
  return /*#__PURE__*/ jsx(Page.Loading, {});
20
26
  }
27
+ // On /settings base route
21
28
  if (!match?.params.settingId) {
22
- return /*#__PURE__*/ jsx(Navigate, {
23
- to: "application-infos"
29
+ // On desktop: redirect to first settings page
30
+ if (!isMobile) {
31
+ return /*#__PURE__*/ jsx(Navigate, {
32
+ to: "application-infos"
33
+ });
34
+ }
35
+ // On mobile: show navigation page
36
+ return /*#__PURE__*/ jsxs(Fragment, {
37
+ children: [
38
+ /*#__PURE__*/ jsx(Page.Title, {
39
+ children: formatMessage({
40
+ id: 'global.settings',
41
+ defaultMessage: 'Settings'
42
+ })
43
+ }),
44
+ /*#__PURE__*/ jsx(SubNav.PageWrapper, {
45
+ children: /*#__PURE__*/ jsx(SettingsNav, {
46
+ isFullPage: true
47
+ })
48
+ })
49
+ ]
24
50
  });
25
51
  }
26
52
  return /*#__PURE__*/ jsxs(Layouts.Root, {
27
- sideNav: /*#__PURE__*/ jsx(SettingsNav, {
28
- menu: menu
29
- }),
53
+ sideNav: /*#__PURE__*/ jsx(SettingsNav, {}),
30
54
  children: [
31
55
  /*#__PURE__*/ jsx(Page.Title, {
32
56
  children: formatMessage({
@@ -34,6 +58,18 @@ const Layout = ()=>{
34
58
  defaultMessage: 'Settings'
35
59
  })
36
60
  }),
61
+ /*#__PURE__*/ jsx(Box, {
62
+ display: {
63
+ initial: 'block',
64
+ medium: 'none'
65
+ },
66
+ paddingLeft: RESPONSIVE_DEFAULT_SPACING,
67
+ paddingRight: RESPONSIVE_DEFAULT_SPACING,
68
+ paddingTop: RESPONSIVE_DEFAULT_SPACING,
69
+ children: /*#__PURE__*/ jsx(BackButton, {
70
+ fallback: "/settings"
71
+ })
72
+ }),
37
73
  /*#__PURE__*/ jsx(Outlet, {})
38
74
  ]
39
75
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Layout.mjs","sources":["../../../../../../admin/src/pages/Settings/Layout.tsx"],"sourcesContent":["import { useIntl } from 'react-intl';\nimport { Navigate, Outlet, useMatch } from 'react-router-dom';\n\nimport { Layouts } from '../../components/Layouts/Layout';\nimport { Page } from '../../components/PageHelpers';\nimport { useSettingsMenu } from '../../hooks/useSettingsMenu';\n\nimport { SettingsNav } from './components/SettingsNav';\n\nconst Layout = () => {\n /**\n * This ensures we're capturing the settingId from the URL\n * but also lets any nesting after that pass.\n */\n const match = useMatch('/settings/:settingId/*');\n const { formatMessage } = useIntl();\n const { isLoading, menu } = useSettingsMenu();\n\n // Since the useSettingsMenu hook can make API calls in order to check the links permissions\n // We need to add a loading state to prevent redirecting the user while permissions are being checked\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (!match?.params.settingId) {\n return <Navigate to=\"application-infos\" />;\n }\n\n return (\n <Layouts.Root sideNav={<SettingsNav menu={menu} />}>\n <Page.Title>\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Page.Title>\n <Outlet />\n </Layouts.Root>\n );\n};\n\nexport { Layout };\n"],"names":["Layout","match","useMatch","formatMessage","useIntl","isLoading","menu","useSettingsMenu","_jsx","Page","Loading","params","settingId","Navigate","to","_jsxs","Layouts","Root","sideNav","SettingsNav","Title","id","defaultMessage","Outlet"],"mappings":";;;;;;;;AASA,MAAMA,MAAS,GAAA,IAAA;AACb;;;MAIA,MAAMC,QAAQC,QAAS,CAAA,wBAAA,CAAA;IACvB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,SAAS,EAAEC,IAAI,EAAE,GAAGC,eAAAA,EAAAA;;;AAI5B,IAAA,IAAIF,SAAW,EAAA;QACb,qBAAOG,GAAA,CAACC,KAAKC,OAAO,EAAA,EAAA,CAAA;AACtB;IAEA,IAAI,CAACT,KAAOU,EAAAA,MAAAA,CAAOC,SAAW,EAAA;AAC5B,QAAA,qBAAOJ,GAACK,CAAAA,QAAAA,EAAAA;YAASC,EAAG,EAAA;;AACtB;IAEA,qBACEC,IAAA,CAACC,QAAQC,IAAI,EAAA;AAACC,QAAAA,OAAAA,gBAASV,GAACW,CAAAA,WAAAA,EAAAA;YAAYb,IAAMA,EAAAA;;;AACxC,0BAAAE,GAAA,CAACC,KAAKW,KAAK,EAAA;0BACRjB,aAAc,CAAA;oBACbkB,EAAI,EAAA,iBAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA;;0BAEFd,GAACe,CAAAA,MAAAA,EAAAA,EAAAA;;;AAGP;;;;"}
1
+ {"version":3,"file":"Layout.mjs","sources":["../../../../../../admin/src/pages/Settings/Layout.tsx"],"sourcesContent":["import { Box } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { Navigate, Outlet, useMatch } from 'react-router-dom';\n\nimport { Layouts } from '../../components/Layouts/Layout';\nimport { Page } from '../../components/PageHelpers';\nimport { SubNav } from '../../components/SubNav';\nimport { RESPONSIVE_DEFAULT_SPACING } from '../../constants/theme';\nimport { BackButton } from '../../features/BackButton';\nimport { useIsMobile } from '../../hooks/useMediaQuery';\nimport { useSettingsMenu } from '../../hooks/useSettingsMenu';\n\nimport { SettingsNav } from './components/SettingsNav';\n\nconst Layout = () => {\n /**\n * This ensures we're capturing the settingId from the URL\n * but also lets any nesting after that pass.\n */\n const match = useMatch('/settings/:settingId/*');\n const { formatMessage } = useIntl();\n const { isLoading } = useSettingsMenu();\n const isMobile = useIsMobile();\n\n // Since the useSettingsMenu hook can make API calls in order to check the links permissions\n // We need to add a loading state to prevent redirecting the user while permissions are being checked\n if (isLoading) {\n return <Page.Loading />;\n }\n\n // On /settings base route\n if (!match?.params.settingId) {\n // On desktop: redirect to first settings page\n if (!isMobile) {\n return <Navigate to=\"application-infos\" />;\n }\n\n // On mobile: show navigation page\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Page.Title>\n <SubNav.PageWrapper>\n <SettingsNav isFullPage />\n </SubNav.PageWrapper>\n </>\n );\n }\n\n return (\n <Layouts.Root sideNav={<SettingsNav />}>\n <Page.Title>\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Page.Title>\n <Box\n display={{ initial: 'block', medium: 'none' }}\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n paddingTop={RESPONSIVE_DEFAULT_SPACING}\n >\n <BackButton fallback=\"/settings\" />\n </Box>\n <Outlet />\n </Layouts.Root>\n );\n};\n\nexport { Layout };\n"],"names":["Layout","match","useMatch","formatMessage","useIntl","isLoading","useSettingsMenu","isMobile","useIsMobile","_jsx","Page","Loading","params","settingId","Navigate","to","_jsxs","_Fragment","Title","id","defaultMessage","SubNav","PageWrapper","SettingsNav","isFullPage","Layouts","Root","sideNav","Box","display","initial","medium","paddingLeft","RESPONSIVE_DEFAULT_SPACING","paddingRight","paddingTop","BackButton","fallback","Outlet"],"mappings":";;;;;;;;;;;;;AAcA,MAAMA,MAAS,GAAA,IAAA;AACb;;;MAIA,MAAMC,QAAQC,QAAS,CAAA,wBAAA,CAAA;IACvB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,SAAS,EAAE,GAAGC,eAAAA,EAAAA;AACtB,IAAA,MAAMC,QAAWC,GAAAA,WAAAA,EAAAA;;;AAIjB,IAAA,IAAIH,SAAW,EAAA;QACb,qBAAOI,GAAA,CAACC,KAAKC,OAAO,EAAA,EAAA,CAAA;AACtB;;IAGA,IAAI,CAACV,KAAOW,EAAAA,MAAAA,CAAOC,SAAW,EAAA;;AAE5B,QAAA,IAAI,CAACN,QAAU,EAAA;AACb,YAAA,qBAAOE,GAACK,CAAAA,QAAAA,EAAAA;gBAASC,EAAG,EAAA;;AACtB;;QAGA,qBACEC,IAAA,CAAAC,QAAA,EAAA;;AACE,8BAAAR,GAAA,CAACC,KAAKQ,KAAK,EAAA;8BACRf,aAAc,CAAA;wBACbgB,EAAI,EAAA,iBAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA;;AAEF,8BAAAX,GAAA,CAACY,OAAOC,WAAW,EAAA;AACjB,oBAAA,QAAA,gBAAAb,GAACc,CAAAA,WAAAA,EAAAA;wBAAYC,UAAU,EAAA;;;;;AAI/B;IAEA,qBACER,IAAA,CAACS,QAAQC,IAAI,EAAA;AAACC,QAAAA,OAAAA,gBAASlB,GAACc,CAAAA,WAAAA,EAAAA,EAAAA,CAAAA;;AACtB,0BAAAd,GAAA,CAACC,KAAKQ,KAAK,EAAA;0BACRf,aAAc,CAAA;oBACbgB,EAAI,EAAA,iBAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA;;0BAEFX,GAACmB,CAAAA,GAAAA,EAAAA;gBACCC,OAAS,EAAA;oBAAEC,OAAS,EAAA,OAAA;oBAASC,MAAQ,EAAA;AAAO,iBAAA;gBAC5CC,WAAaC,EAAAA,0BAAAA;gBACbC,YAAcD,EAAAA,0BAAAA;gBACdE,UAAYF,EAAAA,0BAAAA;AAEZ,gBAAA,QAAA,gBAAAxB,GAAC2B,CAAAA,UAAAA,EAAAA;oBAAWC,QAAS,EAAA;;;0BAEvB5B,GAAC6B,CAAAA,MAAAA,EAAAA,EAAAA;;;AAGP;;;;"}
@@ -9,13 +9,15 @@ var styled = require('styled-components');
9
9
  var useLicenseLimits = require('../../../../../ee/admin/src/hooks/useLicenseLimits.js');
10
10
  var SubNav = require('../../../components/SubNav.js');
11
11
  var Tracking = require('../../../features/Tracking.js');
12
+ var useSettingsMenu = require('../../../hooks/useSettingsMenu.js');
12
13
 
13
14
  const StyledBadge = styled.styled(designSystem.Badge)`
14
15
  border-radius: 50%;
15
16
  padding: ${({ theme })=>theme.spaces[2]};
16
17
  height: 2rem;
17
18
  `;
18
- const SettingsNav = ({ menu })=>{
19
+ const SettingsNav = ({ isFullPage = false })=>{
20
+ const { menu } = useSettingsMenu.useSettingsMenu();
19
21
  const { formatMessage } = reactIntl.useIntl();
20
22
  const { trackUsage } = Tracking.useTracking();
21
23
  const { pathname } = reactRouterDom.useLocation();
@@ -38,7 +40,8 @@ const SettingsNav = ({ menu })=>{
38
40
  ...link,
39
41
  id: link.id,
40
42
  title: link.intlLabel,
41
- name: link.id
43
+ name: link.id,
44
+ to: link.to.startsWith('/') ? link.to : `/settings/${link.to}`
42
45
  };
43
46
  })
44
47
  };
@@ -56,39 +59,48 @@ const SettingsNav = ({ menu })=>{
56
59
  return /*#__PURE__*/ jsxRuntime.jsxs(SubNav.SubNav.Main, {
57
60
  "aria-label": label,
58
61
  children: [
59
- /*#__PURE__*/ jsxRuntime.jsx(SubNav.SubNav.Header, {
60
- label: label
62
+ !isFullPage && /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
63
+ children: [
64
+ /*#__PURE__*/ jsxRuntime.jsx(SubNav.SubNav.Header, {
65
+ label: label
66
+ }),
67
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Divider, {})
68
+ ]
61
69
  }),
62
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Divider, {
63
- background: "neutral150",
64
- marginBottom: 5
65
- }),
66
- /*#__PURE__*/ jsxRuntime.jsx(SubNav.SubNav.Sections, {
67
- children: sections.map((section)=>/*#__PURE__*/ jsxRuntime.jsx(SubNav.SubNav.Section, {
68
- label: formatMessage(section.intlLabel),
69
- children: section.links.map((link)=>{
70
- return /*#__PURE__*/ jsxRuntime.jsx(SubNav.SubNav.Link, {
71
- to: link.to,
72
- onClick: handleClickOnLink(link.to),
73
- label: formatMessage(link.intlLabel),
74
- endAction: /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
75
- children: [
76
- link?.licenseOnly && /*#__PURE__*/ jsxRuntime.jsx(icons.Lightning, {
77
- fill: (availableFeatureNames || []).includes(linksIdsToLicenseFeaturesNames[link.id]) ? 'primary600' : 'neutral300',
78
- width: "1.5rem",
79
- height: "1.5rem"
70
+ /*#__PURE__*/ jsxRuntime.jsxs(SubNav.SubNav.Content, {
71
+ children: [
72
+ isFullPage && /*#__PURE__*/ jsxRuntime.jsx(SubNav.SubNav.Header, {
73
+ label: label
74
+ }),
75
+ /*#__PURE__*/ jsxRuntime.jsx(SubNav.SubNav.Sections, {
76
+ children: sections.map((section)=>/*#__PURE__*/ jsxRuntime.jsx(SubNav.SubNav.Section, {
77
+ label: formatMessage(section.intlLabel),
78
+ children: section.links.map((link)=>{
79
+ return /*#__PURE__*/ jsxRuntime.jsx(SubNav.SubNav.Link, {
80
+ to: link.to,
81
+ onClick: handleClickOnLink(link.to),
82
+ label: formatMessage(link.intlLabel),
83
+ endAction: /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
84
+ children: [
85
+ link?.licenseOnly && /*#__PURE__*/ jsxRuntime.jsx(icons.Lightning, {
86
+ fill: (availableFeatureNames || []).includes(linksIdsToLicenseFeaturesNames[link.id]) ? 'primary600' : 'neutral300',
87
+ width: "1.5rem",
88
+ height: "1.5rem"
89
+ }),
90
+ link?.hasNotification && /*#__PURE__*/ jsxRuntime.jsx(StyledBadge, {
91
+ "aria-label": "Notification",
92
+ backgroundColor: "primary600",
93
+ textColor: "neutral0",
94
+ children: "1"
95
+ })
96
+ ]
80
97
  }),
81
- link?.hasNotification && /*#__PURE__*/ jsxRuntime.jsx(StyledBadge, {
82
- "aria-label": "Notification",
83
- backgroundColor: "primary600",
84
- textColor: "neutral0",
85
- children: "1"
86
- })
87
- ]
98
+ children: formatMessage(link.intlLabel)
99
+ }, link.id);
88
100
  })
89
- }, link.id);
90
- })
91
- }, section.id))
101
+ }, section.id))
102
+ })
103
+ ]
92
104
  })
93
105
  ]
94
106
  });
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsNav.js","sources":["../../../../../../../admin/src/pages/Settings/components/SettingsNav.tsx"],"sourcesContent":["import { Badge, Divider } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport { SubNav } from '../../../components/SubNav';\nimport { useTracking } from '../../../features/Tracking';\nimport { SettingsMenu } from '../../../hooks/useSettingsMenu';\n\ntype LinkId =\n | 'content-releases'\n | 'review-workflows'\n | 'sso'\n | 'auditLogs'\n | 'auditLogs-purchase-page';\n\ntype FeatureName = 'cms-content-releases' | 'review-workflows' | 'sso' | 'audit-logs';\n\ninterface SettingsNavProps {\n menu: SettingsMenu;\n}\n\nconst StyledBadge = styled(Badge)`\n border-radius: 50%;\n padding: ${({ theme }) => theme.spaces[2]};\n height: 2rem;\n`;\n\nconst SettingsNav = ({ menu }: SettingsNavProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const { license } = useLicenseLimits();\n\n const availableFeatureNames = license?.features.map((feature) => feature.name);\n\n const linksIdsToLicenseFeaturesNames: Record<LinkId, FeatureName> = {\n 'content-releases': 'cms-content-releases',\n 'review-workflows': 'review-workflows',\n sso: 'sso',\n auditLogs: 'audit-logs',\n 'auditLogs-purchase-page': 'audit-logs',\n };\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n id: link.id as LinkId,\n title: link.intlLabel,\n name: link.id,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav.Main aria-label={label}>\n <SubNav.Header label={label} />\n <Divider background=\"neutral150\" marginBottom={5} />\n <SubNav.Sections>\n {sections.map((section) => (\n <SubNav.Section key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <SubNav.Link\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n label={formatMessage(link.intlLabel)}\n endAction={\n <>\n {link?.licenseOnly && (\n <Lightning\n fill={\n (availableFeatureNames || []).includes(\n linksIdsToLicenseFeaturesNames[link.id]\n )\n ? 'primary600'\n : 'neutral300'\n }\n width=\"1.5rem\"\n height=\"1.5rem\"\n />\n )}\n {link?.hasNotification && (\n <StyledBadge\n aria-label=\"Notification\"\n backgroundColor=\"primary600\"\n textColor=\"neutral0\"\n >\n 1\n </StyledBadge>\n )}\n </>\n }\n />\n );\n })}\n </SubNav.Section>\n ))}\n </SubNav.Sections>\n </SubNav.Main>\n );\n};\n\nexport { SettingsNav };\nexport type { SettingsNavProps };\n"],"names":["StyledBadge","styled","Badge","theme","spaces","SettingsNav","menu","formatMessage","useIntl","trackUsage","useTracking","pathname","useLocation","license","useLicenseLimits","availableFeatureNames","features","map","feature","name","linksIdsToLicenseFeaturesNames","sso","auditLogs","filteredMenu","filter","section","links","every","link","isDisplayed","sections","title","intlLabel","id","label","defaultMessage","handleClickOnLink","destination","from","to","_jsxs","SubNav","Main","aria-label","_jsx","Header","Divider","background","marginBottom","Sections","Section","Link","onClick","endAction","_Fragment","licenseOnly","Lightning","fill","includes","width","height","hasNotification","backgroundColor","textColor"],"mappings":"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"}
1
+ {"version":3,"file":"SettingsNav.js","sources":["../../../../../../../admin/src/pages/Settings/components/SettingsNav.tsx"],"sourcesContent":["import { Badge, Divider } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport { SubNav } from '../../../components/SubNav';\nimport { useTracking } from '../../../features/Tracking';\nimport { useSettingsMenu } from '../../../hooks/useSettingsMenu';\n\ntype LinkId =\n | 'content-releases'\n | 'review-workflows'\n | 'sso'\n | 'auditLogs'\n | 'auditLogs-purchase-page';\n\ntype FeatureName = 'cms-content-releases' | 'review-workflows' | 'sso' | 'audit-logs';\n\nconst StyledBadge = styled(Badge)`\n border-radius: 50%;\n padding: ${({ theme }) => theme.spaces[2]};\n height: 2rem;\n`;\n\nconst SettingsNav = ({ isFullPage = false }: { isFullPage?: boolean }) => {\n const { menu } = useSettingsMenu();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const { license } = useLicenseLimits();\n\n const availableFeatureNames = license?.features.map((feature) => feature.name);\n\n const linksIdsToLicenseFeaturesNames: Record<LinkId, FeatureName> = {\n 'content-releases': 'cms-content-releases',\n 'review-workflows': 'review-workflows',\n sso: 'sso',\n auditLogs: 'audit-logs',\n 'auditLogs-purchase-page': 'audit-logs',\n };\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n id: link.id as LinkId,\n title: link.intlLabel,\n name: link.id,\n to: link.to.startsWith('/') ? link.to : `/settings/${link.to}`,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav.Main aria-label={label}>\n {!isFullPage && (\n <>\n <SubNav.Header label={label} />\n <Divider />\n </>\n )}\n <SubNav.Content>\n {isFullPage && <SubNav.Header label={label} />}\n <SubNav.Sections>\n {sections.map((section) => (\n <SubNav.Section key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <SubNav.Link\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n label={formatMessage(link.intlLabel)}\n endAction={\n <>\n {link?.licenseOnly && (\n <Lightning\n fill={\n (availableFeatureNames || []).includes(\n linksIdsToLicenseFeaturesNames[link.id]\n )\n ? 'primary600'\n : 'neutral300'\n }\n width=\"1.5rem\"\n height=\"1.5rem\"\n />\n )}\n {link?.hasNotification && (\n <StyledBadge\n aria-label=\"Notification\"\n backgroundColor=\"primary600\"\n textColor=\"neutral0\"\n >\n 1\n </StyledBadge>\n )}\n </>\n }\n >\n {formatMessage(link.intlLabel)}\n </SubNav.Link>\n );\n })}\n </SubNav.Section>\n ))}\n </SubNav.Sections>\n </SubNav.Content>\n </SubNav.Main>\n );\n};\n\nexport { SettingsNav };\n"],"names":["StyledBadge","styled","Badge","theme","spaces","SettingsNav","isFullPage","menu","useSettingsMenu","formatMessage","useIntl","trackUsage","useTracking","pathname","useLocation","license","useLicenseLimits","availableFeatureNames","features","map","feature","name","linksIdsToLicenseFeaturesNames","sso","auditLogs","filteredMenu","filter","section","links","every","link","isDisplayed","sections","title","intlLabel","id","to","startsWith","label","defaultMessage","handleClickOnLink","destination","from","_jsxs","SubNav","Main","aria-label","_Fragment","_jsx","Header","Divider","Content","Sections","Section","Link","onClick","endAction","licenseOnly","Lightning","fill","includes","width","height","hasNotification","backgroundColor","textColor"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import { Badge, Divider } from '@strapi/design-system';
3
3
  import { Lightning } from '@strapi/icons';
4
4
  import { useIntl } from 'react-intl';
@@ -7,13 +7,15 @@ import { styled } from 'styled-components';
7
7
  import { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits.mjs';
8
8
  import { SubNav } from '../../../components/SubNav.mjs';
9
9
  import { useTracking } from '../../../features/Tracking.mjs';
10
+ import { useSettingsMenu } from '../../../hooks/useSettingsMenu.mjs';
10
11
 
11
12
  const StyledBadge = styled(Badge)`
12
13
  border-radius: 50%;
13
14
  padding: ${({ theme })=>theme.spaces[2]};
14
15
  height: 2rem;
15
16
  `;
16
- const SettingsNav = ({ menu })=>{
17
+ const SettingsNav = ({ isFullPage = false })=>{
18
+ const { menu } = useSettingsMenu();
17
19
  const { formatMessage } = useIntl();
18
20
  const { trackUsage } = useTracking();
19
21
  const { pathname } = useLocation();
@@ -36,7 +38,8 @@ const SettingsNav = ({ menu })=>{
36
38
  ...link,
37
39
  id: link.id,
38
40
  title: link.intlLabel,
39
- name: link.id
41
+ name: link.id,
42
+ to: link.to.startsWith('/') ? link.to : `/settings/${link.to}`
40
43
  };
41
44
  })
42
45
  };
@@ -54,39 +57,48 @@ const SettingsNav = ({ menu })=>{
54
57
  return /*#__PURE__*/ jsxs(SubNav.Main, {
55
58
  "aria-label": label,
56
59
  children: [
57
- /*#__PURE__*/ jsx(SubNav.Header, {
58
- label: label
60
+ !isFullPage && /*#__PURE__*/ jsxs(Fragment, {
61
+ children: [
62
+ /*#__PURE__*/ jsx(SubNav.Header, {
63
+ label: label
64
+ }),
65
+ /*#__PURE__*/ jsx(Divider, {})
66
+ ]
59
67
  }),
60
- /*#__PURE__*/ jsx(Divider, {
61
- background: "neutral150",
62
- marginBottom: 5
63
- }),
64
- /*#__PURE__*/ jsx(SubNav.Sections, {
65
- children: sections.map((section)=>/*#__PURE__*/ jsx(SubNav.Section, {
66
- label: formatMessage(section.intlLabel),
67
- children: section.links.map((link)=>{
68
- return /*#__PURE__*/ jsx(SubNav.Link, {
69
- to: link.to,
70
- onClick: handleClickOnLink(link.to),
71
- label: formatMessage(link.intlLabel),
72
- endAction: /*#__PURE__*/ jsxs(Fragment, {
73
- children: [
74
- link?.licenseOnly && /*#__PURE__*/ jsx(Lightning, {
75
- fill: (availableFeatureNames || []).includes(linksIdsToLicenseFeaturesNames[link.id]) ? 'primary600' : 'neutral300',
76
- width: "1.5rem",
77
- height: "1.5rem"
68
+ /*#__PURE__*/ jsxs(SubNav.Content, {
69
+ children: [
70
+ isFullPage && /*#__PURE__*/ jsx(SubNav.Header, {
71
+ label: label
72
+ }),
73
+ /*#__PURE__*/ jsx(SubNav.Sections, {
74
+ children: sections.map((section)=>/*#__PURE__*/ jsx(SubNav.Section, {
75
+ label: formatMessage(section.intlLabel),
76
+ children: section.links.map((link)=>{
77
+ return /*#__PURE__*/ jsx(SubNav.Link, {
78
+ to: link.to,
79
+ onClick: handleClickOnLink(link.to),
80
+ label: formatMessage(link.intlLabel),
81
+ endAction: /*#__PURE__*/ jsxs(Fragment, {
82
+ children: [
83
+ link?.licenseOnly && /*#__PURE__*/ jsx(Lightning, {
84
+ fill: (availableFeatureNames || []).includes(linksIdsToLicenseFeaturesNames[link.id]) ? 'primary600' : 'neutral300',
85
+ width: "1.5rem",
86
+ height: "1.5rem"
87
+ }),
88
+ link?.hasNotification && /*#__PURE__*/ jsx(StyledBadge, {
89
+ "aria-label": "Notification",
90
+ backgroundColor: "primary600",
91
+ textColor: "neutral0",
92
+ children: "1"
93
+ })
94
+ ]
78
95
  }),
79
- link?.hasNotification && /*#__PURE__*/ jsx(StyledBadge, {
80
- "aria-label": "Notification",
81
- backgroundColor: "primary600",
82
- textColor: "neutral0",
83
- children: "1"
84
- })
85
- ]
96
+ children: formatMessage(link.intlLabel)
97
+ }, link.id);
86
98
  })
87
- }, link.id);
88
- })
89
- }, section.id))
99
+ }, section.id))
100
+ })
101
+ ]
90
102
  })
91
103
  ]
92
104
  });
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsNav.mjs","sources":["../../../../../../../admin/src/pages/Settings/components/SettingsNav.tsx"],"sourcesContent":["import { Badge, Divider } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport { SubNav } from '../../../components/SubNav';\nimport { useTracking } from '../../../features/Tracking';\nimport { SettingsMenu } from '../../../hooks/useSettingsMenu';\n\ntype LinkId =\n | 'content-releases'\n | 'review-workflows'\n | 'sso'\n | 'auditLogs'\n | 'auditLogs-purchase-page';\n\ntype FeatureName = 'cms-content-releases' | 'review-workflows' | 'sso' | 'audit-logs';\n\ninterface SettingsNavProps {\n menu: SettingsMenu;\n}\n\nconst StyledBadge = styled(Badge)`\n border-radius: 50%;\n padding: ${({ theme }) => theme.spaces[2]};\n height: 2rem;\n`;\n\nconst SettingsNav = ({ menu }: SettingsNavProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const { license } = useLicenseLimits();\n\n const availableFeatureNames = license?.features.map((feature) => feature.name);\n\n const linksIdsToLicenseFeaturesNames: Record<LinkId, FeatureName> = {\n 'content-releases': 'cms-content-releases',\n 'review-workflows': 'review-workflows',\n sso: 'sso',\n auditLogs: 'audit-logs',\n 'auditLogs-purchase-page': 'audit-logs',\n };\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n id: link.id as LinkId,\n title: link.intlLabel,\n name: link.id,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav.Main aria-label={label}>\n <SubNav.Header label={label} />\n <Divider background=\"neutral150\" marginBottom={5} />\n <SubNav.Sections>\n {sections.map((section) => (\n <SubNav.Section key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <SubNav.Link\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n label={formatMessage(link.intlLabel)}\n endAction={\n <>\n {link?.licenseOnly && (\n <Lightning\n fill={\n (availableFeatureNames || []).includes(\n linksIdsToLicenseFeaturesNames[link.id]\n )\n ? 'primary600'\n : 'neutral300'\n }\n width=\"1.5rem\"\n height=\"1.5rem\"\n />\n )}\n {link?.hasNotification && (\n <StyledBadge\n aria-label=\"Notification\"\n backgroundColor=\"primary600\"\n textColor=\"neutral0\"\n >\n 1\n </StyledBadge>\n )}\n </>\n }\n />\n );\n })}\n </SubNav.Section>\n ))}\n </SubNav.Sections>\n </SubNav.Main>\n );\n};\n\nexport { SettingsNav };\nexport type { SettingsNavProps };\n"],"names":["StyledBadge","styled","Badge","theme","spaces","SettingsNav","menu","formatMessage","useIntl","trackUsage","useTracking","pathname","useLocation","license","useLicenseLimits","availableFeatureNames","features","map","feature","name","linksIdsToLicenseFeaturesNames","sso","auditLogs","filteredMenu","filter","section","links","every","link","isDisplayed","sections","title","intlLabel","id","label","defaultMessage","handleClickOnLink","destination","from","to","_jsxs","SubNav","Main","aria-label","_jsx","Header","Divider","background","marginBottom","Sections","Section","Link","onClick","endAction","_Fragment","licenseOnly","Lightning","fill","includes","width","height","hasNotification","backgroundColor","textColor"],"mappings":"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"}
1
+ {"version":3,"file":"SettingsNav.mjs","sources":["../../../../../../../admin/src/pages/Settings/components/SettingsNav.tsx"],"sourcesContent":["import { Badge, Divider } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport { SubNav } from '../../../components/SubNav';\nimport { useTracking } from '../../../features/Tracking';\nimport { useSettingsMenu } from '../../../hooks/useSettingsMenu';\n\ntype LinkId =\n | 'content-releases'\n | 'review-workflows'\n | 'sso'\n | 'auditLogs'\n | 'auditLogs-purchase-page';\n\ntype FeatureName = 'cms-content-releases' | 'review-workflows' | 'sso' | 'audit-logs';\n\nconst StyledBadge = styled(Badge)`\n border-radius: 50%;\n padding: ${({ theme }) => theme.spaces[2]};\n height: 2rem;\n`;\n\nconst SettingsNav = ({ isFullPage = false }: { isFullPage?: boolean }) => {\n const { menu } = useSettingsMenu();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const { license } = useLicenseLimits();\n\n const availableFeatureNames = license?.features.map((feature) => feature.name);\n\n const linksIdsToLicenseFeaturesNames: Record<LinkId, FeatureName> = {\n 'content-releases': 'cms-content-releases',\n 'review-workflows': 'review-workflows',\n sso: 'sso',\n auditLogs: 'audit-logs',\n 'auditLogs-purchase-page': 'audit-logs',\n };\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n id: link.id as LinkId,\n title: link.intlLabel,\n name: link.id,\n to: link.to.startsWith('/') ? link.to : `/settings/${link.to}`,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav.Main aria-label={label}>\n {!isFullPage && (\n <>\n <SubNav.Header label={label} />\n <Divider />\n </>\n )}\n <SubNav.Content>\n {isFullPage && <SubNav.Header label={label} />}\n <SubNav.Sections>\n {sections.map((section) => (\n <SubNav.Section key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <SubNav.Link\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n label={formatMessage(link.intlLabel)}\n endAction={\n <>\n {link?.licenseOnly && (\n <Lightning\n fill={\n (availableFeatureNames || []).includes(\n linksIdsToLicenseFeaturesNames[link.id]\n )\n ? 'primary600'\n : 'neutral300'\n }\n width=\"1.5rem\"\n height=\"1.5rem\"\n />\n )}\n {link?.hasNotification && (\n <StyledBadge\n aria-label=\"Notification\"\n backgroundColor=\"primary600\"\n textColor=\"neutral0\"\n >\n 1\n </StyledBadge>\n )}\n </>\n }\n >\n {formatMessage(link.intlLabel)}\n </SubNav.Link>\n );\n })}\n </SubNav.Section>\n ))}\n </SubNav.Sections>\n </SubNav.Content>\n </SubNav.Main>\n );\n};\n\nexport { SettingsNav };\n"],"names":["StyledBadge","styled","Badge","theme","spaces","SettingsNav","isFullPage","menu","useSettingsMenu","formatMessage","useIntl","trackUsage","useTracking","pathname","useLocation","license","useLicenseLimits","availableFeatureNames","features","map","feature","name","linksIdsToLicenseFeaturesNames","sso","auditLogs","filteredMenu","filter","section","links","every","link","isDisplayed","sections","title","intlLabel","id","to","startsWith","label","defaultMessage","handleClickOnLink","destination","from","_jsxs","SubNav","Main","aria-label","_Fragment","_jsx","Header","Divider","Content","Sections","Section","Link","onClick","endAction","licenseOnly","Lightning","fill","includes","width","height","hasNotification","backgroundColor","textColor"],"mappings":"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"}
@@ -101,7 +101,7 @@ const AIUageDataCE = ()=>null;
101
101
  return null;
102
102
  }
103
103
  const isSaveDisabled = logos.auth.custom === serverLogos.auth.custom && logos.menu.custom === serverLogos.menu.custom;
104
- return /*#__PURE__*/ jsxRuntime.jsxs(Layout.Layouts.Root, {
104
+ return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
105
105
  children: [
106
106
  /*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Title, {
107
107
  children: formatMessage({
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationInfoPage.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Link, Typography } from '@strapi/design-system';\nimport { Check, ExternalLink } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useAppInfo } from '../../../../features/AppInfo';\nimport { useConfiguration } from '../../../../features/Configuration';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { useFetchClient } from '../../../../hooks/useFetchClient';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\n\nimport { LogoInput, LogoInputProps } from './components/LogoInput';\nimport { DIMENSION, SIZE } from './utils/constants';\n\nconst AdminSeatInfoCE = () => null;\nconst AIUageDataCE = () => null;\n\n/* -------------------------------------------------------------------------------------------------\n * ApplicationInfoPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ApplicationInfoPage = () => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { get } = useFetchClient();\n const { logos: serverLogos, updateProjectSettings } = useConfiguration('ApplicationInfoPage');\n const [logos, setLogos] = React.useState({ menu: serverLogos.menu, auth: serverLogos.auth });\n const { settings } = useSelector(selectAdminPermissions);\n\n const communityEdition = useAppInfo('ApplicationInfoPage', (state) => state.communityEdition);\n const latestStrapiReleaseTag = useAppInfo(\n 'ApplicationInfoPage',\n (state) => state.latestStrapiReleaseTag\n );\n const nodeVersion = useAppInfo('ApplicationInfoPage', (state) => state.nodeVersion);\n const shouldUpdateStrapi = useAppInfo('ApplicationInfoPage', (state) => state.shouldUpdateStrapi);\n const strapiVersion = useAppInfo('ApplicationInfoPage', (state) => state.strapiVersion);\n\n const AdminSeatInfo = useEnterprise(\n AdminSeatInfoCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo'\n )\n ).AdminSeatInfoEE\n );\n const isAiEnabled = window.strapi.ai?.enabled !== false;\n const AIUsageData = useEnterprise(\n AIUageDataCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage'\n )\n ).AIUsage,\n {\n enabled: isAiEnabled,\n }\n );\n\n const {\n allowedActions: { canRead, canUpdate },\n } = useRBAC(settings ? settings['project-settings'] : {});\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = (e) => {\n e.preventDefault();\n\n updateProjectSettings({\n authLogo: logos.auth.custom ?? null,\n menuLogo: logos.menu.custom ?? null,\n });\n };\n\n const handleChangeLogo =\n (logo: 'menu' | 'auth'): LogoInputProps['onChangeLogo'] =>\n (newLogo) => {\n /**\n * If there's no newLogo value we can assume we're reseting.\n */\n if (newLogo === null) {\n trackUsage('didClickResetLogo', {\n logo,\n });\n }\n\n setLogos((prev) => ({\n ...prev,\n [logo]: {\n ...prev[logo],\n custom: newLogo,\n },\n }));\n };\n\n React.useEffect(() => {\n setLogos({\n menu: serverLogos.menu,\n auth: serverLogos.auth,\n });\n }, [serverLogos]);\n\n // block rendering until the EE component is fully loaded\n if (!AdminSeatInfo) {\n return null;\n }\n\n if (!AIUsageData) {\n return null;\n }\n\n const isSaveDisabled =\n logos.auth.custom === serverLogos.auth.custom && logos.menu.custom === serverLogos.menu.custom;\n\n return (\n <Layouts.Root>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: formatMessage({\n id: 'Settings.application.header',\n defaultMessage: 'Application',\n }),\n }\n )}\n </Page.Title>\n <Page.Main>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n title={formatMessage({\n id: 'Settings.application.title',\n defaultMessage: 'Overview',\n })}\n subtitle={formatMessage({\n id: 'Settings.application.description',\n defaultMessage: 'Administration panel’s global information',\n })}\n primaryAction={\n canUpdate && (\n <Button disabled={isSaveDisabled} type=\"submit\" startIcon={<Check />}>\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n )\n }\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingRight={7}\n paddingLeft={7}\n >\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n\n <Grid.Root gap={5} tag=\"dl\">\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"sigma\" textColor=\"neutral600\" tag=\"dt\">\n {formatMessage({\n id: 'Settings.application.strapiVersion',\n defaultMessage: 'strapi version',\n })}\n </Typography>\n <Flex gap={3} direction=\"column\" alignItems=\"start\" tag=\"dd\">\n <Typography>v{strapiVersion}</Typography>\n {shouldUpdateStrapi && (\n <Link\n href={`https://github.com/strapi/strapi/releases/tag/${latestStrapiReleaseTag}`}\n endIcon={<ExternalLink />}\n >\n {formatMessage({\n id: 'Settings.application.link-upgrade',\n defaultMessage: 'Upgrade your admin panel',\n })}\n </Link>\n )}\n </Flex>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"sigma\" textColor=\"neutral600\" tag=\"dt\">\n {formatMessage({\n id: 'Settings.application.edition-title',\n defaultMessage: 'current edition',\n })}\n </Typography>\n <Flex gap={3} direction=\"column\" alignItems=\"start\" tag=\"dd\">\n <Typography>\n {formatMessage(\n {\n id: 'Settings.application.ee-or-ce',\n defaultMessage:\n '{communityEdition, select, true {Community Edition} other {Enterprise Edition}}',\n },\n { communityEdition }\n )}\n </Typography>\n <Link href=\"https://strapi.io/pricing-self-hosted\" endIcon={<ExternalLink />}>\n {formatMessage({\n id: 'Settings.application.link-pricing',\n defaultMessage: 'See all pricing plans',\n })}\n </Link>\n </Flex>\n </Grid.Item>\n\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"sigma\" textColor=\"neutral600\" tag=\"dt\">\n {formatMessage({\n id: 'Settings.application.node-version',\n defaultMessage: 'node version',\n })}\n </Typography>\n <Typography tag=\"dd\">{nodeVersion}</Typography>\n </Grid.Item>\n <AdminSeatInfo />\n <AIUsageData />\n </Grid.Root>\n </Flex>\n {canRead && (\n <Box\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingRight={7}\n paddingLeft={7}\n >\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'Settings.application.customization',\n defaultMessage: 'Customization',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.application.customization.size-details',\n defaultMessage:\n 'Max dimension: {dimension}×{dimension}, Max file size: {size}KB',\n },\n { dimension: DIMENSION, size: SIZE }\n )}\n </Typography>\n <Grid.Root paddingTop={4} gap={4}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <LogoInput\n canUpdate={canUpdate}\n customLogo={logos.menu.custom}\n defaultLogo={logos.menu.default}\n hint={formatMessage({\n id: 'Settings.application.customization.menu-logo.carousel-hint',\n defaultMessage: 'Replace the logo in the main navigation',\n })}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.menu-logo.title',\n defaultMessage: 'Menu logo',\n })}\n onChangeLogo={handleChangeLogo('menu')}\n />\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <LogoInput\n canUpdate={canUpdate}\n customLogo={logos.auth.custom}\n defaultLogo={logos.auth.default}\n hint={formatMessage({\n id: 'Settings.application.customization.auth-logo.carousel-hint',\n defaultMessage: 'Replace the logo in the authentication pages',\n })}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.auth-logo.title',\n defaultMessage: 'Auth logo',\n })}\n onChangeLogo={handleChangeLogo('auth')}\n />\n </Grid.Item>\n </Grid.Root>\n </Box>\n )}\n </Flex>\n </Layouts.Content>\n </form>\n </Page.Main>\n </Layouts.Root>\n );\n};\n\nexport { ApplicationInfoPage };\n"],"names":["AdminSeatInfoCE","AIUageDataCE","ApplicationInfoPage","trackUsage","useTracking","formatMessage","useIntl","useFetchClient","logos","serverLogos","updateProjectSettings","useConfiguration","setLogos","React","useState","menu","auth","settings","useSelector","selectAdminPermissions","communityEdition","useAppInfo","state","latestStrapiReleaseTag","nodeVersion","shouldUpdateStrapi","strapiVersion","AdminSeatInfo","useEnterprise","AdminSeatInfoEE","isAiEnabled","window","strapi","ai","enabled","AIUsageData","AIUsage","allowedActions","canRead","canUpdate","useRBAC","handleSubmit","e","preventDefault","authLogo","custom","menuLogo","handleChangeLogo","logo","newLogo","prev","useEffect","isSaveDisabled","_jsxs","Layouts","Root","_jsx","Page","Title","id","defaultMessage","name","Main","form","onSubmit","Header","title","subtitle","primaryAction","Button","disabled","type","startIcon","Check","Content","Flex","direction","alignItems","gap","hasRadius","background","shadow","paddingTop","paddingBottom","paddingRight","paddingLeft","Typography","variant","tag","Grid","Item","col","s","textColor","Link","href","endIcon","ExternalLink","Box","dimension","DIMENSION","size","SIZE","LogoInput","customLogo","defaultLogo","default","hint","label","onChangeLogo"],"mappings":"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"}
1
+ {"version":3,"file":"ApplicationInfoPage.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Link, Typography } from '@strapi/design-system';\nimport { Check, ExternalLink } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useAppInfo } from '../../../../features/AppInfo';\nimport { useConfiguration } from '../../../../features/Configuration';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { useFetchClient } from '../../../../hooks/useFetchClient';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\n\nimport { LogoInput, LogoInputProps } from './components/LogoInput';\nimport { DIMENSION, SIZE } from './utils/constants';\n\nconst AdminSeatInfoCE = () => null;\nconst AIUageDataCE = () => null;\n\n/* -------------------------------------------------------------------------------------------------\n * ApplicationInfoPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ApplicationInfoPage = () => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { get } = useFetchClient();\n const { logos: serverLogos, updateProjectSettings } = useConfiguration('ApplicationInfoPage');\n const [logos, setLogos] = React.useState({ menu: serverLogos.menu, auth: serverLogos.auth });\n const { settings } = useSelector(selectAdminPermissions);\n\n const communityEdition = useAppInfo('ApplicationInfoPage', (state) => state.communityEdition);\n const latestStrapiReleaseTag = useAppInfo(\n 'ApplicationInfoPage',\n (state) => state.latestStrapiReleaseTag\n );\n const nodeVersion = useAppInfo('ApplicationInfoPage', (state) => state.nodeVersion);\n const shouldUpdateStrapi = useAppInfo('ApplicationInfoPage', (state) => state.shouldUpdateStrapi);\n const strapiVersion = useAppInfo('ApplicationInfoPage', (state) => state.strapiVersion);\n\n const AdminSeatInfo = useEnterprise(\n AdminSeatInfoCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo'\n )\n ).AdminSeatInfoEE\n );\n const isAiEnabled = window.strapi.ai?.enabled !== false;\n const AIUsageData = useEnterprise(\n AIUageDataCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage'\n )\n ).AIUsage,\n {\n enabled: isAiEnabled,\n }\n );\n\n const {\n allowedActions: { canRead, canUpdate },\n } = useRBAC(settings ? settings['project-settings'] : {});\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = (e) => {\n e.preventDefault();\n\n updateProjectSettings({\n authLogo: logos.auth.custom ?? null,\n menuLogo: logos.menu.custom ?? null,\n });\n };\n\n const handleChangeLogo =\n (logo: 'menu' | 'auth'): LogoInputProps['onChangeLogo'] =>\n (newLogo) => {\n /**\n * If there's no newLogo value we can assume we're reseting.\n */\n if (newLogo === null) {\n trackUsage('didClickResetLogo', {\n logo,\n });\n }\n\n setLogos((prev) => ({\n ...prev,\n [logo]: {\n ...prev[logo],\n custom: newLogo,\n },\n }));\n };\n\n React.useEffect(() => {\n setLogos({\n menu: serverLogos.menu,\n auth: serverLogos.auth,\n });\n }, [serverLogos]);\n\n // block rendering until the EE component is fully loaded\n if (!AdminSeatInfo) {\n return null;\n }\n\n if (!AIUsageData) {\n return null;\n }\n\n const isSaveDisabled =\n logos.auth.custom === serverLogos.auth.custom && logos.menu.custom === serverLogos.menu.custom;\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: formatMessage({\n id: 'Settings.application.header',\n defaultMessage: 'Application',\n }),\n }\n )}\n </Page.Title>\n <Page.Main>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n title={formatMessage({\n id: 'Settings.application.title',\n defaultMessage: 'Overview',\n })}\n subtitle={formatMessage({\n id: 'Settings.application.description',\n defaultMessage: 'Administration panel’s global information',\n })}\n primaryAction={\n canUpdate && (\n <Button disabled={isSaveDisabled} type=\"submit\" startIcon={<Check />}>\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n )\n }\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingRight={7}\n paddingLeft={7}\n >\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n\n <Grid.Root gap={5} tag=\"dl\">\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"sigma\" textColor=\"neutral600\" tag=\"dt\">\n {formatMessage({\n id: 'Settings.application.strapiVersion',\n defaultMessage: 'strapi version',\n })}\n </Typography>\n <Flex gap={3} direction=\"column\" alignItems=\"start\" tag=\"dd\">\n <Typography>v{strapiVersion}</Typography>\n {shouldUpdateStrapi && (\n <Link\n href={`https://github.com/strapi/strapi/releases/tag/${latestStrapiReleaseTag}`}\n endIcon={<ExternalLink />}\n >\n {formatMessage({\n id: 'Settings.application.link-upgrade',\n defaultMessage: 'Upgrade your admin panel',\n })}\n </Link>\n )}\n </Flex>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"sigma\" textColor=\"neutral600\" tag=\"dt\">\n {formatMessage({\n id: 'Settings.application.edition-title',\n defaultMessage: 'current edition',\n })}\n </Typography>\n <Flex gap={3} direction=\"column\" alignItems=\"start\" tag=\"dd\">\n <Typography>\n {formatMessage(\n {\n id: 'Settings.application.ee-or-ce',\n defaultMessage:\n '{communityEdition, select, true {Community Edition} other {Enterprise Edition}}',\n },\n { communityEdition }\n )}\n </Typography>\n <Link href=\"https://strapi.io/pricing-self-hosted\" endIcon={<ExternalLink />}>\n {formatMessage({\n id: 'Settings.application.link-pricing',\n defaultMessage: 'See all pricing plans',\n })}\n </Link>\n </Flex>\n </Grid.Item>\n\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"sigma\" textColor=\"neutral600\" tag=\"dt\">\n {formatMessage({\n id: 'Settings.application.node-version',\n defaultMessage: 'node version',\n })}\n </Typography>\n <Typography tag=\"dd\">{nodeVersion}</Typography>\n </Grid.Item>\n <AdminSeatInfo />\n <AIUsageData />\n </Grid.Root>\n </Flex>\n {canRead && (\n <Box\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingRight={7}\n paddingLeft={7}\n >\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'Settings.application.customization',\n defaultMessage: 'Customization',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.application.customization.size-details',\n defaultMessage:\n 'Max dimension: {dimension}×{dimension}, Max file size: {size}KB',\n },\n { dimension: DIMENSION, size: SIZE }\n )}\n </Typography>\n <Grid.Root paddingTop={4} gap={4}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <LogoInput\n canUpdate={canUpdate}\n customLogo={logos.menu.custom}\n defaultLogo={logos.menu.default}\n hint={formatMessage({\n id: 'Settings.application.customization.menu-logo.carousel-hint',\n defaultMessage: 'Replace the logo in the main navigation',\n })}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.menu-logo.title',\n defaultMessage: 'Menu logo',\n })}\n onChangeLogo={handleChangeLogo('menu')}\n />\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <LogoInput\n canUpdate={canUpdate}\n customLogo={logos.auth.custom}\n defaultLogo={logos.auth.default}\n hint={formatMessage({\n id: 'Settings.application.customization.auth-logo.carousel-hint',\n defaultMessage: 'Replace the logo in the authentication pages',\n })}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.auth-logo.title',\n defaultMessage: 'Auth logo',\n })}\n onChangeLogo={handleChangeLogo('auth')}\n />\n </Grid.Item>\n </Grid.Root>\n </Box>\n )}\n </Flex>\n </Layouts.Content>\n </form>\n </Page.Main>\n </>\n );\n};\n\nexport { ApplicationInfoPage };\n"],"names":["AdminSeatInfoCE","AIUageDataCE","ApplicationInfoPage","trackUsage","useTracking","formatMessage","useIntl","useFetchClient","logos","serverLogos","updateProjectSettings","useConfiguration","setLogos","React","useState","menu","auth","settings","useSelector","selectAdminPermissions","communityEdition","useAppInfo","state","latestStrapiReleaseTag","nodeVersion","shouldUpdateStrapi","strapiVersion","AdminSeatInfo","useEnterprise","AdminSeatInfoEE","isAiEnabled","window","strapi","ai","enabled","AIUsageData","AIUsage","allowedActions","canRead","canUpdate","useRBAC","handleSubmit","e","preventDefault","authLogo","custom","menuLogo","handleChangeLogo","logo","newLogo","prev","useEffect","isSaveDisabled","_jsxs","_Fragment","_jsx","Page","Title","id","defaultMessage","name","Main","form","onSubmit","Layouts","Header","title","subtitle","primaryAction","Button","disabled","type","startIcon","Check","Content","Flex","direction","alignItems","gap","hasRadius","background","shadow","paddingTop","paddingBottom","paddingRight","paddingLeft","Typography","variant","tag","Grid","Root","Item","col","s","textColor","Link","href","endIcon","ExternalLink","Box","dimension","DIMENSION","size","SIZE","LogoInput","customLogo","defaultLogo","default","hint","label","onChangeLogo"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,MAAMA,kBAAkB,IAAM,IAAA;AAC9B,MAAMC,eAAe,IAAM,IAAA;AAE3B;;AAEkG,2GAE5FC,mBAAsB,GAAA,IAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;IACvB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IACVC,6BAAAA;AAChB,IAAA,MAAM,EAAEC,KAAOC,EAAAA,WAAW,EAAEC,qBAAqB,EAAE,GAAGC,8BAAiB,CAAA,qBAAA,CAAA;AACvE,IAAA,MAAM,CAACH,KAAOI,EAAAA,QAAAA,CAAS,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC;AAAEC,QAAAA,IAAAA,EAAMN,YAAYM,IAAI;AAAEC,QAAAA,IAAAA,EAAMP,YAAYO;AAAK,KAAA,CAAA;AAC1F,IAAA,MAAM,EAAEC,QAAQ,EAAE,GAAGC,sBAAYC,CAAAA,gCAAAA,CAAAA;AAEjC,IAAA,MAAMC,mBAAmBC,kBAAW,CAAA,qBAAA,EAAuB,CAACC,KAAAA,GAAUA,MAAMF,gBAAgB,CAAA;AAC5F,IAAA,MAAMG,yBAAyBF,kBAC7B,CAAA,qBAAA,EACA,CAACC,KAAAA,GAAUA,MAAMC,sBAAsB,CAAA;AAEzC,IAAA,MAAMC,cAAcH,kBAAW,CAAA,qBAAA,EAAuB,CAACC,KAAAA,GAAUA,MAAME,WAAW,CAAA;AAClF,IAAA,MAAMC,qBAAqBJ,kBAAW,CAAA,qBAAA,EAAuB,CAACC,KAAAA,GAAUA,MAAMG,kBAAkB,CAAA;AAChG,IAAA,MAAMC,gBAAgBL,kBAAW,CAAA,qBAAA,EAAuB,CAACC,KAAAA,GAAUA,MAAMI,aAAa,CAAA;IAEtF,MAAMC,aAAAA,GAAgBC,2BACpB5B,CAAAA,eAAAA,EACA,UAEI,CAAA,MAAM,oDACJ,yGACF,KAAA,EACA6B,eAAe,CAAA;AAErB,IAAA,MAAMC,cAAcC,MAAOC,CAAAA,MAAM,CAACC,EAAE,EAAEC,OAAY,KAAA,KAAA;AAClD,IAAA,MAAMC,WAAcP,GAAAA,2BAAAA,CAClB3B,YACA,EAAA,UACE,CACE,MAAM,oDACJ,mGAAA,KACF,EACAmC,OAAO,EACX;QACEF,OAASJ,EAAAA;AACX,KAAA,CAAA;AAGF,IAAA,MAAM,EACJO,cAAAA,EAAgB,EAAEC,OAAO,EAAEC,SAAS,EAAE,EACvC,GAAGC,gBAAQvB,QAAWA,GAAAA,QAAQ,CAAC,kBAAA,CAAmB,GAAG,EAAC,CAAA;AAEvD,IAAA,MAAMwB,eAAwD,CAACC,CAAAA,GAAAA;AAC7DA,QAAAA,CAAAA,CAAEC,cAAc,EAAA;QAEhBjC,qBAAsB,CAAA;AACpBkC,YAAAA,QAAAA,EAAUpC,KAAMQ,CAAAA,IAAI,CAAC6B,MAAM,IAAI,IAAA;AAC/BC,YAAAA,QAAAA,EAAUtC,KAAMO,CAAAA,IAAI,CAAC8B,MAAM,IAAI;AACjC,SAAA,CAAA;AACF,KAAA;IAEA,MAAME,gBAAAA,GACJ,CAACC,IAAAA,GACD,CAACC,OAAAA,GAAAA;AACC;;UAGA,IAAIA,YAAY,IAAM,EAAA;AACpB9C,gBAAAA,UAAAA,CAAW,mBAAqB,EAAA;AAC9B6C,oBAAAA;AACF,iBAAA,CAAA;AACF;YAEApC,QAAS,CAAA,CAACsC,QAAU;AAClB,oBAAA,GAAGA,IAAI;AACP,oBAAA,CAACF,OAAO;wBACN,GAAGE,IAAI,CAACF,IAAK,CAAA;wBACbH,MAAQI,EAAAA;AACV;iBACF,CAAA,CAAA;AACF,SAAA;AAEFpC,IAAAA,gBAAAA,CAAMsC,SAAS,CAAC,IAAA;QACdvC,QAAS,CAAA;AACPG,YAAAA,IAAAA,EAAMN,YAAYM,IAAI;AACtBC,YAAAA,IAAAA,EAAMP,YAAYO;AACpB,SAAA,CAAA;KACC,EAAA;AAACP,QAAAA;AAAY,KAAA,CAAA;;AAGhB,IAAA,IAAI,CAACkB,aAAe,EAAA;QAClB,OAAO,IAAA;AACT;AAEA,IAAA,IAAI,CAACQ,WAAa,EAAA;QAChB,OAAO,IAAA;AACT;AAEA,IAAA,MAAMiB,iBACJ5C,KAAMQ,CAAAA,IAAI,CAAC6B,MAAM,KAAKpC,YAAYO,IAAI,CAAC6B,MAAM,IAAIrC,KAAAA,CAAMO,IAAI,CAAC8B,MAAM,KAAKpC,WAAYM,CAAAA,IAAI,CAAC8B,MAAM;IAEhG,qBACEQ,eAAA,CAAAC,mBAAA,EAAA;;AACE,0BAAAC,cAAA,CAACC,iBAAKC,KAAK,EAAA;0BACRpD,aACC,CAAA;oBAAEqD,EAAI,EAAA,oBAAA;oBAAsBC,cAAgB,EAAA;iBAC5C,EAAA;AACEC,oBAAAA,IAAAA,EAAMvD,aAAc,CAAA;wBAClBqD,EAAI,EAAA,6BAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA;AACF,iBAAA;;AAGJ,0BAAAJ,cAAA,CAACC,iBAAKK,IAAI,EAAA;AACR,gBAAA,QAAA,gBAAAR,eAACS,CAAAA,MAAAA,EAAAA;oBAAKC,QAAUtB,EAAAA,YAAAA;;AACd,sCAAAc,cAAA,CAACS,eAAQC,MAAM,EAAA;AACbC,4BAAAA,KAAAA,EAAO7D,aAAc,CAAA;gCACnBqD,EAAI,EAAA,4BAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA,CAAA;AACAQ,4BAAAA,QAAAA,EAAU9D,aAAc,CAAA;gCACtBqD,EAAI,EAAA,kCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA,CAAA;AACAS,4BAAAA,aAAAA,EACE7B,2BACEgB,cAACc,CAAAA,mBAAAA,EAAAA;gCAAOC,QAAUlB,EAAAA,cAAAA;gCAAgBmB,IAAK,EAAA,QAAA;AAASC,gCAAAA,SAAAA,gBAAWjB,cAACkB,CAAAA,WAAAA,EAAAA,EAAAA,CAAAA;0CACzDpE,aAAc,CAAA;oCAAEqD,EAAI,EAAA,aAAA;oCAAeC,cAAgB,EAAA;AAAO,iCAAA;;;AAKnE,sCAAAJ,cAAA,CAACS,eAAQU,OAAO,EAAA;AACd,4BAAA,QAAA,gBAAArB,eAACsB,CAAAA,iBAAAA,EAAAA;gCAAKC,SAAU,EAAA,QAAA;gCAASC,UAAW,EAAA,SAAA;gCAAUC,GAAK,EAAA,CAAA;;kDACjDzB,eAACsB,CAAAA,iBAAAA,EAAAA;wCACCC,SAAU,EAAA,QAAA;wCACVC,UAAW,EAAA,SAAA;wCACXC,GAAK,EAAA,CAAA;wCACLC,SAAS,EAAA,IAAA;wCACTC,UAAW,EAAA,UAAA;wCACXC,MAAO,EAAA,aAAA;wCACPC,UAAY,EAAA,CAAA;wCACZC,aAAe,EAAA,CAAA;wCACfC,YAAc,EAAA,CAAA;wCACdC,WAAa,EAAA,CAAA;;0DAEb9B,cAAC+B,CAAAA,uBAAAA,EAAAA;gDAAWC,OAAQ,EAAA,OAAA;gDAAQC,GAAI,EAAA,IAAA;0DAC7BnF,aAAc,CAAA;oDACbqD,EAAI,EAAA,gBAAA;oDACJC,cAAgB,EAAA;AAClB,iDAAA;;AAGF,0DAAAN,eAAA,CAACoC,kBAAKC,IAAI,EAAA;gDAACZ,GAAK,EAAA,CAAA;gDAAGU,GAAI,EAAA,IAAA;;AACrB,kEAAAnC,eAAA,CAACoC,kBAAKE,IAAI,EAAA;wDAACC,GAAK,EAAA,CAAA;wDAAGC,CAAG,EAAA,EAAA;wDAAIjB,SAAU,EAAA,QAAA;wDAASC,UAAW,EAAA,OAAA;;0EACtDtB,cAAC+B,CAAAA,uBAAAA,EAAAA;gEAAWC,OAAQ,EAAA,OAAA;gEAAQO,SAAU,EAAA,YAAA;gEAAaN,GAAI,EAAA,IAAA;0EACpDnF,aAAc,CAAA;oEACbqD,EAAI,EAAA,oCAAA;oEACJC,cAAgB,EAAA;AAClB,iEAAA;;0EAEFN,eAACsB,CAAAA,iBAAAA,EAAAA;gEAAKG,GAAK,EAAA,CAAA;gEAAGF,SAAU,EAAA,QAAA;gEAASC,UAAW,EAAA,OAAA;gEAAQW,GAAI,EAAA,IAAA;;kFACtDnC,eAACiC,CAAAA,uBAAAA,EAAAA;;AAAW,4EAAA,GAAA;AAAE5D,4EAAAA;;;AACbD,oEAAAA,kBAAAA,kBACC8B,cAACwC,CAAAA,iBAAAA,EAAAA;AACCC,wEAAAA,IAAAA,EAAM,CAAC,8CAA8C,EAAEzE,sBAAAA,CAAuB,CAAC;AAC/E0E,wEAAAA,OAAAA,gBAAS1C,cAAC2C,CAAAA,kBAAAA,EAAAA,EAAAA,CAAAA;kFAET7F,aAAc,CAAA;4EACbqD,EAAI,EAAA,mCAAA;4EACJC,cAAgB,EAAA;AAClB,yEAAA;;;;;;AAKR,kEAAAN,eAAA,CAACoC,kBAAKE,IAAI,EAAA;wDAACC,GAAK,EAAA,CAAA;wDAAGC,CAAG,EAAA,EAAA;wDAAIjB,SAAU,EAAA,QAAA;wDAASC,UAAW,EAAA,OAAA;;0EACtDtB,cAAC+B,CAAAA,uBAAAA,EAAAA;gEAAWC,OAAQ,EAAA,OAAA;gEAAQO,SAAU,EAAA,YAAA;gEAAaN,GAAI,EAAA,IAAA;0EACpDnF,aAAc,CAAA;oEACbqD,EAAI,EAAA,oCAAA;oEACJC,cAAgB,EAAA;AAClB,iEAAA;;0EAEFN,eAACsB,CAAAA,iBAAAA,EAAAA;gEAAKG,GAAK,EAAA,CAAA;gEAAGF,SAAU,EAAA,QAAA;gEAASC,UAAW,EAAA,OAAA;gEAAQW,GAAI,EAAA,IAAA;;kFACtDjC,cAAC+B,CAAAA,uBAAAA,EAAAA;kFACEjF,aACC,CAAA;4EACEqD,EAAI,EAAA,+BAAA;4EACJC,cACE,EAAA;yEAEJ,EAAA;AAAEvC,4EAAAA;AAAiB,yEAAA;;kFAGvBmC,cAACwC,CAAAA,iBAAAA,EAAAA;wEAAKC,IAAK,EAAA,uCAAA;AAAwCC,wEAAAA,OAAAA,gBAAS1C,cAAC2C,CAAAA,kBAAAA,EAAAA,EAAAA,CAAAA;kFAC1D7F,aAAc,CAAA;4EACbqD,EAAI,EAAA,mCAAA;4EACJC,cAAgB,EAAA;AAClB,yEAAA;;;;;;AAKN,kEAAAN,eAAA,CAACoC,kBAAKE,IAAI,EAAA;wDAACC,GAAK,EAAA,CAAA;wDAAGC,CAAG,EAAA,EAAA;wDAAIjB,SAAU,EAAA,QAAA;wDAASC,UAAW,EAAA,OAAA;;0EACtDtB,cAAC+B,CAAAA,uBAAAA,EAAAA;gEAAWC,OAAQ,EAAA,OAAA;gEAAQO,SAAU,EAAA,YAAA;gEAAaN,GAAI,EAAA,IAAA;0EACpDnF,aAAc,CAAA;oEACbqD,EAAI,EAAA,mCAAA;oEACJC,cAAgB,EAAA;AAClB,iEAAA;;0EAEFJ,cAAC+B,CAAAA,uBAAAA,EAAAA;gEAAWE,GAAI,EAAA,IAAA;AAAMhE,gEAAAA,QAAAA,EAAAA;;;;kEAExB+B,cAAC5B,CAAAA,aAAAA,EAAAA,EAAAA,CAAAA;kEACD4B,cAACpB,CAAAA,WAAAA,EAAAA,EAAAA;;;;;AAGJG,oCAAAA,OAAAA,kBACCe,eAAC8C,CAAAA,gBAAAA,EAAAA;wCACCpB,SAAS,EAAA,IAAA;wCACTC,UAAW,EAAA,UAAA;wCACXC,MAAO,EAAA,aAAA;wCACPC,UAAY,EAAA,CAAA;wCACZC,aAAe,EAAA,CAAA;wCACfC,YAAc,EAAA,CAAA;wCACdC,WAAa,EAAA,CAAA;;0DAEb9B,cAAC+B,CAAAA,uBAAAA,EAAAA;gDAAWC,OAAQ,EAAA,OAAA;gDAAQC,GAAI,EAAA,IAAA;0DAC7BnF,aAAc,CAAA;oDACbqD,EAAI,EAAA,oCAAA;oDACJC,cAAgB,EAAA;AAClB,iDAAA;;0DAEFJ,cAAC+B,CAAAA,uBAAAA,EAAAA;gDAAWC,OAAQ,EAAA,IAAA;gDAAKO,SAAU,EAAA,YAAA;0DAChCzF,aACC,CAAA;oDACEqD,EAAI,EAAA,iDAAA;oDACJC,cACE,EAAA;iDAEJ,EAAA;oDAAEyC,SAAWC,EAAAA,mBAAAA;oDAAWC,IAAMC,EAAAA;AAAK,iDAAA;;AAGvC,0DAAAlD,eAAA,CAACoC,kBAAKC,IAAI,EAAA;gDAACR,UAAY,EAAA,CAAA;gDAAGJ,GAAK,EAAA,CAAA;;AAC7B,kEAAAvB,cAAA,CAACkC,kBAAKE,IAAI,EAAA;wDAACC,GAAK,EAAA,CAAA;wDAAGC,CAAG,EAAA,EAAA;wDAAIjB,SAAU,EAAA,QAAA;wDAASC,UAAW,EAAA,SAAA;AACtD,wDAAA,QAAA,gBAAAtB,cAACiD,CAAAA,mBAAAA,EAAAA;4DACCjE,SAAWA,EAAAA,SAAAA;4DACXkE,UAAYjG,EAAAA,KAAAA,CAAMO,IAAI,CAAC8B,MAAM;4DAC7B6D,WAAalG,EAAAA,KAAAA,CAAMO,IAAI,CAAC4F,OAAO;AAC/BC,4DAAAA,IAAAA,EAAMvG,aAAc,CAAA;gEAClBqD,EAAI,EAAA,4DAAA;gEACJC,cAAgB,EAAA;AAClB,6DAAA,CAAA;AACAkD,4DAAAA,KAAAA,EAAOxG,aAAc,CAAA;gEACnBqD,EAAI,EAAA,6DAAA;gEACJC,cAAgB,EAAA;AAClB,6DAAA,CAAA;AACAmD,4DAAAA,YAAAA,EAAc/D,gBAAiB,CAAA,MAAA;;;AAGnC,kEAAAQ,cAAA,CAACkC,kBAAKE,IAAI,EAAA;wDAACC,GAAK,EAAA,CAAA;wDAAGC,CAAG,EAAA,EAAA;wDAAIjB,SAAU,EAAA,QAAA;wDAASC,UAAW,EAAA,SAAA;AACtD,wDAAA,QAAA,gBAAAtB,cAACiD,CAAAA,mBAAAA,EAAAA;4DACCjE,SAAWA,EAAAA,SAAAA;4DACXkE,UAAYjG,EAAAA,KAAAA,CAAMQ,IAAI,CAAC6B,MAAM;4DAC7B6D,WAAalG,EAAAA,KAAAA,CAAMQ,IAAI,CAAC2F,OAAO;AAC/BC,4DAAAA,IAAAA,EAAMvG,aAAc,CAAA;gEAClBqD,EAAI,EAAA,4DAAA;gEACJC,cAAgB,EAAA;AAClB,6DAAA,CAAA;AACAkD,4DAAAA,KAAAA,EAAOxG,aAAc,CAAA;gEACnBqD,EAAI,EAAA,6DAAA;gEACJC,cAAgB,EAAA;AAClB,6DAAA,CAAA;AACAmD,4DAAAA,YAAAA,EAAc/D,gBAAiB,CAAA,MAAA;;;;;;;;;;;;;;;AAYvD;;;;"}
@@ -1,4 +1,4 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import { Button, Flex, Typography, Grid, Link, Box } from '@strapi/design-system';
4
4
  import { Check, ExternalLink } from '@strapi/icons';
@@ -80,7 +80,7 @@ const AIUageDataCE = ()=>null;
80
80
  return null;
81
81
  }
82
82
  const isSaveDisabled = logos.auth.custom === serverLogos.auth.custom && logos.menu.custom === serverLogos.menu.custom;
83
- return /*#__PURE__*/ jsxs(Layouts.Root, {
83
+ return /*#__PURE__*/ jsxs(Fragment, {
84
84
  children: [
85
85
  /*#__PURE__*/ jsx(Page.Title, {
86
86
  children: formatMessage({