@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
@@ -46,6 +46,25 @@ const useMenu = (shouldUpdateStrapi)=>{
46
46
  }
47
47
  ],
48
48
  pluginsSectionLinks: [],
49
+ topMobileNavigation: [
50
+ {
51
+ to: '/'
52
+ },
53
+ {
54
+ to: 'content-manager'
55
+ },
56
+ {
57
+ to: 'plugins/content-releases'
58
+ },
59
+ {
60
+ to: 'plugins/upload'
61
+ }
62
+ ],
63
+ burgerMobileNavigation: [
64
+ {
65
+ to: '/settings'
66
+ }
67
+ ],
49
68
  isLoading: true
50
69
  });
51
70
  const generalSectionLinksRef = React.useRef(menuWithUserPermissions.generalSectionLinks);
@@ -1 +1 @@
1
- {"version":3,"file":"useMenu.mjs","sources":["../../../../../admin/src/hooks/useMenu.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { Cog, ShoppingCart, House } from '@strapi/icons';\nimport cloneDeep from 'lodash/cloneDeep';\n\nimport { useTypedSelector } from '../core/store/hooks';\nimport { useAuth, AuthContextValue } from '../features/Auth';\nimport { StrapiAppContextValue, useStrapiApp } from '../features/StrapiApp';\n\n/* -------------------------------------------------------------------------------------------------\n * useMenu\n * -----------------------------------------------------------------------------------------------*/\n\nexport type MenuItem = Omit<StrapiAppContextValue['menu'][number], 'Component'>;\n\nexport interface Menu {\n generalSectionLinks: MenuItem[];\n pluginsSectionLinks: MenuItem[];\n isLoading: boolean;\n}\n\nconst useMenu = (shouldUpdateStrapi: boolean) => {\n const checkUserHasPermissions = useAuth('useMenu', (state) => state.checkUserHasPermissions);\n const menu = useStrapiApp('useMenu', (state) => state.menu);\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const [menuWithUserPermissions, setMenuWithUserPermissions] = React.useState<Menu>({\n generalSectionLinks: [\n {\n icon: House,\n intlLabel: {\n id: 'global.home',\n defaultMessage: 'Home',\n },\n to: '/',\n permissions: [],\n position: 0,\n },\n {\n icon: ShoppingCart,\n intlLabel: {\n id: 'global.marketplace',\n defaultMessage: 'Marketplace',\n },\n to: '/marketplace',\n permissions: permissions.marketplace?.main ?? [],\n position: 7,\n },\n {\n icon: Cog,\n intlLabel: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n to: '/settings',\n // Permissions of this link are retrieved in the init phase\n // using the settings menu\n permissions: [],\n notificationsCount: 0,\n position: 9,\n },\n ],\n pluginsSectionLinks: [],\n isLoading: true,\n });\n const generalSectionLinksRef = React.useRef(menuWithUserPermissions.generalSectionLinks);\n\n React.useEffect(() => {\n async function applyMenuPermissions() {\n const authorizedPluginSectionLinks = await getPluginSectionLinks(\n menu,\n checkUserHasPermissions\n );\n\n const authorizedGeneralSectionLinks = await getGeneralLinks(\n generalSectionLinksRef.current,\n shouldUpdateStrapi,\n checkUserHasPermissions\n );\n\n setMenuWithUserPermissions((state) => ({\n ...state,\n generalSectionLinks: authorizedGeneralSectionLinks,\n pluginsSectionLinks: authorizedPluginSectionLinks,\n isLoading: false,\n }));\n }\n\n applyMenuPermissions();\n }, [\n setMenuWithUserPermissions,\n generalSectionLinksRef,\n menu,\n permissions,\n shouldUpdateStrapi,\n checkUserHasPermissions,\n ]);\n\n return menuWithUserPermissions;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\nconst getGeneralLinks = async (\n generalSectionRawLinks: MenuItem[],\n shouldUpdateStrapi: boolean = false,\n checkUserHasPermissions: AuthContextValue['checkUserHasPermissions']\n) => {\n const generalSectionLinksPermissions = await Promise.all(\n generalSectionRawLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedGeneralSectionLinks = generalSectionRawLinks.filter(\n (_, index) => generalSectionLinksPermissions[index].length > 0\n );\n\n const settingsLinkIndex = authorizedGeneralSectionLinks.findIndex(\n (obj) => obj.to === '/settings'\n );\n\n if (settingsLinkIndex === -1) {\n return [];\n }\n\n const authorizedGeneralLinksClone = cloneDeep(authorizedGeneralSectionLinks);\n\n authorizedGeneralLinksClone[settingsLinkIndex].notificationsCount = shouldUpdateStrapi ? 1 : 0;\n\n return authorizedGeneralLinksClone;\n};\n\nconst getPluginSectionLinks = async (\n pluginsSectionRawLinks: MenuItem[],\n checkUserHasPermissions: AuthContextValue['checkUserHasPermissions']\n) => {\n const pluginSectionLinksPermissions = await Promise.all(\n pluginsSectionRawLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedPluginSectionLinks = pluginsSectionRawLinks.filter(\n (_, index) => pluginSectionLinksPermissions[index].length > 0\n );\n\n return authorizedPluginSectionLinks;\n};\n\nexport { useMenu };\n"],"names":["useMenu","shouldUpdateStrapi","checkUserHasPermissions","useAuth","state","menu","useStrapiApp","permissions","useTypedSelector","admin_app","menuWithUserPermissions","setMenuWithUserPermissions","React","useState","generalSectionLinks","icon","House","intlLabel","id","defaultMessage","to","position","ShoppingCart","marketplace","main","Cog","notificationsCount","pluginsSectionLinks","isLoading","generalSectionLinksRef","useRef","useEffect","applyMenuPermissions","authorizedPluginSectionLinks","getPluginSectionLinks","authorizedGeneralSectionLinks","getGeneralLinks","current","generalSectionRawLinks","generalSectionLinksPermissions","Promise","all","map","filter","_","index","length","settingsLinkIndex","findIndex","obj","authorizedGeneralLinksClone","cloneDeep","pluginsSectionRawLinks","pluginSectionLinksPermissions"],"mappings":"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"}
1
+ {"version":3,"file":"useMenu.mjs","sources":["../../../../../admin/src/hooks/useMenu.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { Cog, ShoppingCart, House } from '@strapi/icons';\nimport cloneDeep from 'lodash/cloneDeep';\n\nimport { useTypedSelector } from '../core/store/hooks';\nimport { useAuth, AuthContextValue } from '../features/Auth';\nimport { StrapiAppContextValue, useStrapiApp } from '../features/StrapiApp';\n\n/* -------------------------------------------------------------------------------------------------\n * useMenu\n * -----------------------------------------------------------------------------------------------*/\n\nexport type MenuItem = Omit<StrapiAppContextValue['menu'][number], 'Component'> & {\n navigationLink?: string;\n};\nexport type MobileMenuItem = {\n to: string;\n link?: string;\n};\n\nexport interface Menu {\n generalSectionLinks: MenuItem[];\n pluginsSectionLinks: MenuItem[];\n topMobileNavigation: MobileMenuItem[];\n burgerMobileNavigation: MobileMenuItem[];\n isLoading: boolean;\n}\n\nconst useMenu = (shouldUpdateStrapi: boolean) => {\n const checkUserHasPermissions = useAuth('useMenu', (state) => state.checkUserHasPermissions);\n const menu = useStrapiApp('useMenu', (state) => state.menu);\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const [menuWithUserPermissions, setMenuWithUserPermissions] = React.useState<Menu>({\n generalSectionLinks: [\n {\n icon: House,\n intlLabel: {\n id: 'global.home',\n defaultMessage: 'Home',\n },\n to: '/',\n permissions: [],\n position: 0,\n },\n {\n icon: ShoppingCart,\n intlLabel: {\n id: 'global.marketplace',\n defaultMessage: 'Marketplace',\n },\n to: '/marketplace',\n permissions: permissions.marketplace?.main ?? [],\n position: 7,\n },\n {\n icon: Cog,\n intlLabel: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n to: '/settings',\n // Permissions of this link are retrieved in the init phase\n // using the settings menu\n permissions: [],\n notificationsCount: 0,\n position: 9,\n },\n ],\n pluginsSectionLinks: [],\n topMobileNavigation: [\n {\n to: '/',\n },\n {\n to: 'content-manager',\n },\n {\n to: 'plugins/content-releases',\n },\n {\n to: 'plugins/upload',\n },\n ],\n burgerMobileNavigation: [\n {\n to: '/settings',\n },\n ],\n isLoading: true,\n });\n const generalSectionLinksRef = React.useRef(menuWithUserPermissions.generalSectionLinks);\n\n React.useEffect(() => {\n async function applyMenuPermissions() {\n const authorizedPluginSectionLinks = await getPluginSectionLinks(\n menu,\n checkUserHasPermissions\n );\n\n const authorizedGeneralSectionLinks = await getGeneralLinks(\n generalSectionLinksRef.current,\n shouldUpdateStrapi,\n checkUserHasPermissions\n );\n\n setMenuWithUserPermissions((state) => ({\n ...state,\n generalSectionLinks: authorizedGeneralSectionLinks,\n pluginsSectionLinks: authorizedPluginSectionLinks,\n isLoading: false,\n }));\n }\n\n applyMenuPermissions();\n }, [\n setMenuWithUserPermissions,\n generalSectionLinksRef,\n menu,\n permissions,\n shouldUpdateStrapi,\n checkUserHasPermissions,\n ]);\n\n return menuWithUserPermissions;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\nconst getGeneralLinks = async (\n generalSectionRawLinks: MenuItem[],\n shouldUpdateStrapi: boolean = false,\n checkUserHasPermissions: AuthContextValue['checkUserHasPermissions']\n) => {\n const generalSectionLinksPermissions = await Promise.all(\n generalSectionRawLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedGeneralSectionLinks = generalSectionRawLinks.filter(\n (_, index) => generalSectionLinksPermissions[index].length > 0\n );\n\n const settingsLinkIndex = authorizedGeneralSectionLinks.findIndex(\n (obj) => obj.to === '/settings'\n );\n\n if (settingsLinkIndex === -1) {\n return [];\n }\n\n const authorizedGeneralLinksClone = cloneDeep(authorizedGeneralSectionLinks);\n\n authorizedGeneralLinksClone[settingsLinkIndex].notificationsCount = shouldUpdateStrapi ? 1 : 0;\n\n return authorizedGeneralLinksClone;\n};\n\nconst getPluginSectionLinks = async (\n pluginsSectionRawLinks: MenuItem[],\n checkUserHasPermissions: AuthContextValue['checkUserHasPermissions']\n) => {\n const pluginSectionLinksPermissions = await Promise.all(\n pluginsSectionRawLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedPluginSectionLinks = pluginsSectionRawLinks.filter(\n (_, index) => pluginSectionLinksPermissions[index].length > 0\n );\n\n return authorizedPluginSectionLinks;\n};\n\nexport { useMenu };\n"],"names":["useMenu","shouldUpdateStrapi","checkUserHasPermissions","useAuth","state","menu","useStrapiApp","permissions","useTypedSelector","admin_app","menuWithUserPermissions","setMenuWithUserPermissions","React","useState","generalSectionLinks","icon","House","intlLabel","id","defaultMessage","to","position","ShoppingCart","marketplace","main","Cog","notificationsCount","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","isLoading","generalSectionLinksRef","useRef","useEffect","applyMenuPermissions","authorizedPluginSectionLinks","getPluginSectionLinks","authorizedGeneralSectionLinks","getGeneralLinks","current","generalSectionRawLinks","generalSectionLinksPermissions","Promise","all","map","filter","_","index","length","settingsLinkIndex","findIndex","obj","authorizedGeneralLinksClone","cloneDeep","pluginsSectionRawLinks","pluginSectionLinksPermissions"],"mappings":"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"}
@@ -81,7 +81,7 @@ const AdminLayout = ()=>{
81
81
  userInfo
82
82
  ]);
83
83
  const { trackUsage } = Tracking.useTracking();
84
- const { isLoading: isLoadingMenu, generalSectionLinks, pluginsSectionLinks } = useMenu.useMenu(checkLatestStrapiVersion(strapiVersion, tagName));
84
+ const { isLoading: isLoadingMenu, generalSectionLinks, pluginsSectionLinks, topMobileNavigation, burgerMobileNavigation } = useMenu.useMenu(checkLatestStrapiVersion(strapiVersion, tagName));
85
85
  const getAllWidgets = StrapiApp.useStrapiApp('TrackingProvider', (state)=>state.widgets.getAll);
86
86
  const projectId = appInfo?.projectId;
87
87
  React__namespace.useEffect(()=>{
@@ -121,14 +121,27 @@ const AdminLayout = ()=>{
121
121
  })
122
122
  }),
123
123
  /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
124
+ height: "100dvh",
125
+ direction: {
126
+ initial: 'column',
127
+ large: 'row'
128
+ },
124
129
  alignItems: "flex-start",
125
130
  children: [
126
131
  /*#__PURE__*/ jsxRuntime.jsx(LeftMenu.LeftMenu, {
127
132
  generalSectionLinks: generalSectionLinks,
128
- pluginsSectionLinks: pluginsSectionLinks
133
+ pluginsSectionLinks: pluginsSectionLinks,
134
+ topMobileNavigation: topMobileNavigation,
135
+ burgerMobileNavigation: burgerMobileNavigation
129
136
  }),
130
137
  /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Box, {
131
138
  flex: 1,
139
+ overflow: "auto",
140
+ width: "100%",
141
+ height: {
142
+ initial: 'auto',
143
+ large: '100%'
144
+ },
132
145
  children: [
133
146
  /*#__PURE__*/ jsxRuntime.jsx(UpsellBanner.UpsellBanner, {}),
134
147
  /*#__PURE__*/ jsxRuntime.jsx(reactRouterDom.Outlet, {})
@@ -1 +1 @@
1
- {"version":3,"file":"AuthenticatedLayout.js","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n const getAllWidgets = useStrapiApp('TrackingProvider', (state) => state.widgets.getAll);\n const projectId = appInfo?.projectId;\n React.useEffect(() => {\n if (projectId) {\n trackUsage('didAccessAuthenticatedAdministration', {\n registeredWidgets: getAllWidgets().map((widget) => widget.uid),\n projectId,\n });\n }\n }, [projectId, getAllWidgets, trackUsage]);\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex alignItems=\"flex-start\">\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n />\n <Box flex={1}>\n <UpsellBanner />\n <Outlet />\n </Box>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","formatMessage","useIntl","userInfo","useAuth","state","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","useMenu","checkLatestStrapiVersion","getAllWidgets","useStrapiApp","widgets","getAll","projectId","registeredWidgets","map","widget","uid","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","alignItems","LeftMenu","flex","UpsellBanner","Outlet","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}
1
+ {"version":3,"file":"AuthenticatedLayout.js","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { HEIGHT_TOP_NAVIGATION } from '../constants/theme';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n topMobileNavigation,\n burgerMobileNavigation,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n const getAllWidgets = useStrapiApp('TrackingProvider', (state) => state.widgets.getAll);\n const projectId = appInfo?.projectId;\n React.useEffect(() => {\n if (projectId) {\n trackUsage('didAccessAuthenticatedAdministration', {\n registeredWidgets: getAllWidgets().map((widget) => widget.uid),\n projectId,\n });\n }\n }, [projectId, getAllWidgets, trackUsage]);\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex\n height=\"100dvh\"\n direction={{\n initial: 'column',\n large: 'row',\n }}\n alignItems=\"flex-start\"\n >\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n topMobileNavigation={topMobileNavigation}\n burgerMobileNavigation={burgerMobileNavigation}\n />\n <Box\n flex={1}\n overflow=\"auto\"\n width=\"100%\"\n height={{\n initial: 'auto',\n large: '100%',\n }}\n >\n <UpsellBanner />\n <Outlet />\n </Box>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","formatMessage","useIntl","userInfo","useAuth","state","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","useMenu","checkLatestStrapiVersion","getAllWidgets","useStrapiApp","widgets","getAll","projectId","registeredWidgets","map","widget","uid","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","height","direction","initial","large","alignItems","LeftMenu","flex","overflow","width","UpsellBanner","Outlet","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,MAAM,EAAEA,OAAAA,EAASC,aAAa,EAAE,GAAGC,WAAAA;AAEnC,MAAMC,WAAc,GAAA,IAAA;IAClB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,WAAWC,YAAQ,CAAA,kBAAA,EAAoB,CAACC,KAAAA,GAAUA,MAAMC,IAAI,CAAA;AAClE,IAAA,MAAM,CAACC,MAAAA,EAAQC,SAAU,CAAA,GAAGC,iBAAMC,QAAQ,EAAA;AAC1C,IAAA,MAAM,EAAEC,uBAAuB,EAAE,GAAGC,8BAAiB,CAAA,kBAAA,CAAA;AAErD,IAAA,MAAM,EAAEC,IAAMC,EAAAA,OAAO,EAAEC,SAAWC,EAAAA,gBAAgB,EAAE,GAAGC,yBAAAA,EAAAA;AACvD,IAAA,MAAM,CAACC,OAASC,EAAAA,UAAAA,CAAW,GAAGV,gBAAAA,CAAMC,QAAQ,CAASZ,aAAAA,CAAAA;AAErDW,IAAAA,gBAAAA,CAAMW,SAAS,CAAC,IAAA;AACd,QAAA,IAAIT,uBAAyB,EAAA;YAC3BU,KAAM,CAAA,4DAAA,CAAA,CACHC,IAAI,CAAC,OAAOC,GAAAA,GAAAA;gBACX,IAAI,CAACA,GAAIC,CAAAA,EAAE,EAAE;AACX,oBAAA;AACF;gBAEA,MAAMC,QAAAA,GAAY,MAAMF,GAAAA,CAAIG,IAAI,EAAA;gBAEhC,IAAI,CAACD,QAASE,CAAAA,QAAQ,EAAE;AACtB,oBAAA,MAAM,IAAIC,KAAAA,EAAAA;AACZ;AAEAT,gBAAAA,UAAAA,CAAWM,SAASE,QAAQ,CAAA;AAC9B,aAAA,CAAA,CACCE,KAAK,CAAC,IAAA;AACL;;eAGF,CAAA;AACJ;KACC,EAAA;AAAClB,QAAAA;AAAwB,KAAA,CAAA;AAE5BF,IAAAA,gBAAAA,CAAMW,SAAS,CAAC,IAAA;QACdU,wBAAmB3B,CAAAA,QAAAA,CAAAA,CAAUmB,IAAI,CAAC,CAACS,EAAAA,GAAAA;AACjC,YAAA,IAAIA,EAAI,EAAA;gBACNvB,SAAUuB,CAAAA,EAAAA,CAAAA;AACZ;AACF,SAAA,CAAA;KACC,EAAA;AAAC5B,QAAAA;AAAS,KAAA,CAAA;IAEb,MAAM,EAAE6B,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;AAEvB,IAAA,MAAM,EACJlB,SAAAA,EAAWmB,aAAa,EACxBC,mBAAmB,EACnBC,mBAAmB,EACnBC,mBAAmB,EACnBC,sBAAsB,EACvB,GAAGC,eAAAA,CAAQC,yBAAyB1C,aAAeoB,EAAAA,OAAAA,CAAAA,CAAAA;IAEpD,MAAMuB,aAAAA,GAAgBC,uBAAa,kBAAoB,EAAA,CAACrC,QAAUA,KAAMsC,CAAAA,OAAO,CAACC,MAAM,CAAA;AACtF,IAAA,MAAMC,YAAY/B,OAAS+B,EAAAA,SAAAA;AAC3BpC,IAAAA,gBAAAA,CAAMW,SAAS,CAAC,IAAA;AACd,QAAA,IAAIyB,SAAW,EAAA;AACbb,YAAAA,UAAAA,CAAW,sCAAwC,EAAA;AACjDc,gBAAAA,iBAAAA,EAAmBL,gBAAgBM,GAAG,CAAC,CAACC,MAAAA,GAAWA,OAAOC,GAAG,CAAA;AAC7DJ,gBAAAA;AACF,aAAA,CAAA;AACF;KACC,EAAA;AAACA,QAAAA,SAAAA;AAAWJ,QAAAA,aAAAA;AAAeT,QAAAA;AAAW,KAAA,CAAA;;;AAIzC,IAAA,IAAIE,iBAAiBlB,gBAAkB,EAAA;QACrC,qBAAOkC,cAAA,CAACC,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB;AAEA,IAAA,qBACEC,eAACC,CAAAA,uBAAAA,EAAAA;AACE,QAAA,GAAGxC,OAAO;QACXP,MAAQA,EAAAA,MAAAA;QACRgD,sBAAwBrC,EAAAA,OAAAA;AACxBsC,QAAAA,kBAAAA,EAAoBhB,yBAAyB1C,aAAeoB,EAAAA,OAAAA,CAAAA;;0BAE5DgC,cAACO,CAAAA,mBAAAA,EAAAA,EAAAA,CAAAA;0BACDP,cAACQ,CAAAA,qCAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAR,cAACS,CAAAA,oBAAAA,EAAAA;oBAAYC,OAASC,EAAAA,iCAAAA;AACpB,oBAAA,QAAA,gBAAAR,eAACS,CAAAA,gBAAAA,EAAAA;wBAAIC,UAAW,EAAA,YAAA;;0CACdb,cAACc,CAAAA,0BAAAA,EAAAA;0CACE/D,aAAc,CAAA;oCAAE8B,EAAI,EAAA,eAAA;oCAAiBkC,cAAgB,EAAA;AAAkB,iCAAA;;0CAE1EZ,eAACa,CAAAA,iBAAAA,EAAAA;gCACCC,MAAO,EAAA,QAAA;gCACPC,SAAW,EAAA;oCACTC,OAAS,EAAA,QAAA;oCACTC,KAAO,EAAA;AACT,iCAAA;gCACAC,UAAW,EAAA,YAAA;;kDAEXrB,cAACsB,CAAAA,iBAAAA,EAAAA;wCACCrC,mBAAqBA,EAAAA,mBAAAA;wCACrBC,mBAAqBA,EAAAA,mBAAAA;wCACrBC,mBAAqBA,EAAAA,mBAAAA;wCACrBC,sBAAwBA,EAAAA;;kDAE1Be,eAACS,CAAAA,gBAAAA,EAAAA;wCACCW,IAAM,EAAA,CAAA;wCACNC,QAAS,EAAA,MAAA;wCACTC,KAAM,EAAA,MAAA;wCACNR,MAAQ,EAAA;4CACNE,OAAS,EAAA,MAAA;4CACTC,KAAO,EAAA;AACT,yCAAA;;0DAEApB,cAAC0B,CAAAA,yBAAAA,EAAAA,EAAAA,CAAAA;0DACD1B,cAAC2B,CAAAA,qBAAAA,EAAAA,EAAAA;;;;;;;;;;;AAQjB;AAEA,MAAMC,kBAAqB,GAAA,IAAA;AACzB,IAAA,qBACE5B,cAAC6B,CAAAA,yBAAAA,EAAAA;AACC,QAAA,QAAA,gBAAA7B,cAAClD,CAAAA,WAAAA,EAAAA,EAAAA;;AAGP;AAEA,MAAMwC,wBAA2B,GAAA,CAC/BwC,qBACAC,EAAAA,sBAAAA,GAAiC,EAAE,GAAA;AAEnC,IAAA,IAAI,CAACC,KAAAA,CAAMF,qBAA0B,CAAA,IAAA,CAACE,MAAMD,sBAAyB,CAAA,EAAA;QACnE,OAAO,KAAA;AACT;AAEA,IAAA,OAAOE,GAAGH,qBAAuBC,EAAAA,sBAAAA,CAAAA;AACnC,CAAA;;;;;"}
@@ -60,7 +60,7 @@ const AdminLayout = ()=>{
60
60
  userInfo
61
61
  ]);
62
62
  const { trackUsage } = useTracking();
63
- const { isLoading: isLoadingMenu, generalSectionLinks, pluginsSectionLinks } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));
63
+ const { isLoading: isLoadingMenu, generalSectionLinks, pluginsSectionLinks, topMobileNavigation, burgerMobileNavigation } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));
64
64
  const getAllWidgets = useStrapiApp('TrackingProvider', (state)=>state.widgets.getAll);
65
65
  const projectId = appInfo?.projectId;
66
66
  React.useEffect(()=>{
@@ -100,14 +100,27 @@ const AdminLayout = ()=>{
100
100
  })
101
101
  }),
102
102
  /*#__PURE__*/ jsxs(Flex, {
103
+ height: "100dvh",
104
+ direction: {
105
+ initial: 'column',
106
+ large: 'row'
107
+ },
103
108
  alignItems: "flex-start",
104
109
  children: [
105
110
  /*#__PURE__*/ jsx(LeftMenu, {
106
111
  generalSectionLinks: generalSectionLinks,
107
- pluginsSectionLinks: pluginsSectionLinks
112
+ pluginsSectionLinks: pluginsSectionLinks,
113
+ topMobileNavigation: topMobileNavigation,
114
+ burgerMobileNavigation: burgerMobileNavigation
108
115
  }),
109
116
  /*#__PURE__*/ jsxs(Box, {
110
117
  flex: 1,
118
+ overflow: "auto",
119
+ width: "100%",
120
+ height: {
121
+ initial: 'auto',
122
+ large: '100%'
123
+ },
111
124
  children: [
112
125
  /*#__PURE__*/ jsx(UpsellBanner, {}),
113
126
  /*#__PURE__*/ jsx(Outlet, {})
@@ -1 +1 @@
1
- {"version":3,"file":"AuthenticatedLayout.mjs","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n const getAllWidgets = useStrapiApp('TrackingProvider', (state) => state.widgets.getAll);\n const projectId = appInfo?.projectId;\n React.useEffect(() => {\n if (projectId) {\n trackUsage('didAccessAuthenticatedAdministration', {\n registeredWidgets: getAllWidgets().map((widget) => widget.uid),\n projectId,\n });\n }\n }, [projectId, getAllWidgets, trackUsage]);\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex alignItems=\"flex-start\">\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n />\n <Box flex={1}>\n <UpsellBanner />\n <Outlet />\n </Box>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","formatMessage","useIntl","userInfo","useAuth","state","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","useMenu","checkLatestStrapiVersion","getAllWidgets","useStrapiApp","widgets","getAll","projectId","registeredWidgets","map","widget","uid","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","alignItems","LeftMenu","flex","UpsellBanner","Outlet","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}
1
+ {"version":3,"file":"AuthenticatedLayout.mjs","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { HEIGHT_TOP_NAVIGATION } from '../constants/theme';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n topMobileNavigation,\n burgerMobileNavigation,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n const getAllWidgets = useStrapiApp('TrackingProvider', (state) => state.widgets.getAll);\n const projectId = appInfo?.projectId;\n React.useEffect(() => {\n if (projectId) {\n trackUsage('didAccessAuthenticatedAdministration', {\n registeredWidgets: getAllWidgets().map((widget) => widget.uid),\n projectId,\n });\n }\n }, [projectId, getAllWidgets, trackUsage]);\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex\n height=\"100dvh\"\n direction={{\n initial: 'column',\n large: 'row',\n }}\n alignItems=\"flex-start\"\n >\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n topMobileNavigation={topMobileNavigation}\n burgerMobileNavigation={burgerMobileNavigation}\n />\n <Box\n flex={1}\n overflow=\"auto\"\n width=\"100%\"\n height={{\n initial: 'auto',\n large: '100%',\n }}\n >\n <UpsellBanner />\n <Outlet />\n </Box>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","formatMessage","useIntl","userInfo","useAuth","state","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","useMenu","checkLatestStrapiVersion","getAllWidgets","useStrapiApp","widgets","getAll","projectId","registeredWidgets","map","widget","uid","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","height","direction","initial","large","alignItems","LeftMenu","flex","overflow","width","UpsellBanner","Outlet","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}
@@ -5,12 +5,14 @@ require('react');
5
5
  var designSystem = require('@strapi/design-system');
6
6
  var reactIntl = require('react-intl');
7
7
  var styled = require('styled-components');
8
+ var theme = require('../constants/theme.js');
8
9
  var hooks = require('../core/store/hooks.js');
9
10
  var reducer = require('../reducer.js');
10
11
 
11
12
  const Wrapper = styled.styled(designSystem.Box)`
12
13
  margin: 0 auto;
13
- width: 552px;
14
+ width: 100%;
15
+ max-width: 55.2rem;
14
16
  `;
15
17
  const Column = styled.styled(designSystem.Flex)`
16
18
  flex-direction: column;
@@ -37,10 +39,10 @@ const LocaleToggle = ()=>{
37
39
  const LayoutContent = ({ children })=>/*#__PURE__*/ jsxRuntime.jsx(Wrapper, {
38
40
  shadow: "tableShadow",
39
41
  hasRadius: true,
40
- paddingTop: 9,
41
- paddingBottom: 9,
42
- paddingLeft: 10,
43
- paddingRight: 10,
42
+ paddingTop: theme.RESPONSIVE_DEFAULT_SPACING,
43
+ paddingBottom: theme.RESPONSIVE_DEFAULT_SPACING,
44
+ paddingLeft: theme.RESPONSIVE_DEFAULT_SPACING,
45
+ paddingRight: theme.RESPONSIVE_DEFAULT_SPACING,
44
46
  background: "neutral0",
45
47
  children: children
46
48
  });
@@ -52,13 +54,15 @@ const UnauthenticatedLayout = ({ children })=>{
52
54
  justifyContent: "flex-end",
53
55
  children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
54
56
  paddingTop: 6,
55
- paddingRight: 8,
57
+ paddingRight: theme.RESPONSIVE_DEFAULT_SPACING,
56
58
  children: /*#__PURE__*/ jsxRuntime.jsx(LocaleToggle, {})
57
59
  })
58
60
  }),
59
61
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
60
62
  paddingTop: 2,
61
- paddingBottom: 11,
63
+ paddingBottom: theme.RESPONSIVE_DEFAULT_SPACING,
64
+ marginLeft: theme.RESPONSIVE_DEFAULT_SPACING,
65
+ marginRight: theme.RESPONSIVE_DEFAULT_SPACING,
62
66
  children: children
63
67
  })
64
68
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"UnauthenticatedLayout.js","sources":["../../../../../admin/src/layouts/UnauthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n BoxComponent,\n Flex,\n FlexComponent,\n SingleSelect,\n SingleSelectOption,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { setLocale } from '../reducer';\n\nconst Wrapper = styled<BoxComponent>(Box)`\n margin: 0 auto;\n width: 552px;\n`;\n\nexport const Column = styled<FlexComponent>(Flex)`\n flex-direction: column;\n`;\n\nconst LocaleToggle = () => {\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const dispatch = useTypedDispatch();\n const { formatMessage, locale } = useIntl();\n\n return (\n <SingleSelect\n aria-label={formatMessage({\n id: 'global.localeToggle.label',\n defaultMessage: 'Select interface language',\n })}\n value={locale}\n onChange={(language) => {\n dispatch(setLocale(language as string));\n }}\n >\n {Object.entries(localeNames).map(([language, name]) => (\n <SingleSelectOption key={language} value={language}>\n {name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n\ninterface LayoutContentProps {\n children: React.ReactNode;\n}\n\nexport const LayoutContent = ({ children }: LayoutContentProps) => (\n <Wrapper\n shadow=\"tableShadow\"\n hasRadius\n paddingTop={9}\n paddingBottom={9}\n paddingLeft={10}\n paddingRight={10}\n background=\"neutral0\"\n >\n {children}\n </Wrapper>\n);\n\ninterface UnauthenticatedLayoutProps {\n children: React.ReactNode;\n}\n\nexport const UnauthenticatedLayout = ({ children }: UnauthenticatedLayoutProps) => {\n return (\n <div>\n <Flex tag=\"header\" justifyContent=\"flex-end\">\n <Box paddingTop={6} paddingRight={8}>\n <LocaleToggle />\n </Box>\n </Flex>\n <Box paddingTop={2} paddingBottom={11}>\n {children}\n </Box>\n </div>\n );\n};\n"],"names":["Wrapper","styled","Box","Column","Flex","LocaleToggle","localeNames","useTypedSelector","state","admin_app","language","dispatch","useTypedDispatch","formatMessage","locale","useIntl","_jsx","SingleSelect","aria-label","id","defaultMessage","value","onChange","setLocale","Object","entries","map","name","SingleSelectOption","LayoutContent","children","shadow","hasRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","background","UnauthenticatedLayout","_jsxs","div","tag","justifyContent"],"mappings":";;;;;;;;;;AAgBA,MAAMA,OAAAA,GAAUC,aAAqBC,CAAAA,gBAAAA,CAAI;;;AAGzC,CAAC;AAEYC,MAAAA,MAAAA,GAASF,aAAsBG,CAAAA,iBAAAA,CAAK;;AAEjD;AAEA,MAAMC,YAAe,GAAA,IAAA;IACnB,MAAMC,WAAAA,GAAcC,uBAAiB,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAACC,QAAQ,CAACJ,WAAW,CAAA;AACpF,IAAA,MAAMK,QAAWC,GAAAA,sBAAAA,EAAAA;AACjB,IAAA,MAAM,EAAEC,aAAa,EAAEC,MAAM,EAAE,GAAGC,iBAAAA,EAAAA;AAElC,IAAA,qBACEC,cAACC,CAAAA,yBAAAA,EAAAA;AACCC,QAAAA,YAAAA,EAAYL,aAAc,CAAA;YACxBM,EAAI,EAAA,2BAAA;YACJC,cAAgB,EAAA;AAClB,SAAA,CAAA;QACAC,KAAOP,EAAAA,MAAAA;AACPQ,QAAAA,QAAAA,EAAU,CAACZ,QAAAA,GAAAA;AACTC,YAAAA,QAAAA,CAASY,iBAAUb,CAAAA,QAAAA,CAAAA,CAAAA;AACrB,SAAA;kBAECc,MAAOC,CAAAA,OAAO,CAACnB,WAAAA,CAAAA,CAAaoB,GAAG,CAAC,CAAC,CAAChB,QAAAA,EAAUiB,IAAK,CAAA,iBAChDX,cAACY,CAAAA,+BAAAA,EAAAA;gBAAkCP,KAAOX,EAAAA,QAAAA;AACvCiB,gBAAAA,QAAAA,EAAAA;AADsBjB,aAAAA,EAAAA,QAAAA,CAAAA;;AAMjC,CAAA;MAMamB,aAAgB,GAAA,CAAC,EAAEC,QAAQ,EAAsB,iBAC5Dd,cAAChB,CAAAA,OAAAA,EAAAA;QACC+B,MAAO,EAAA,aAAA;QACPC,SAAS,EAAA,IAAA;QACTC,UAAY,EAAA,CAAA;QACZC,aAAe,EAAA,CAAA;QACfC,WAAa,EAAA,EAAA;QACbC,YAAc,EAAA,EAAA;QACdC,UAAW,EAAA,UAAA;AAEVP,QAAAA,QAAAA,EAAAA;AAEH,KAAA;AAMWQ,MAAAA,qBAAAA,GAAwB,CAAC,EAAER,QAAQ,EAA8B,GAAA;AAC5E,IAAA,qBACES,eAACC,CAAAA,KAAAA,EAAAA;;0BACCxB,cAACZ,CAAAA,iBAAAA,EAAAA;gBAAKqC,GAAI,EAAA,QAAA;gBAASC,cAAe,EAAA,UAAA;AAChC,gBAAA,QAAA,gBAAA1B,cAACd,CAAAA,gBAAAA,EAAAA;oBAAI+B,UAAY,EAAA,CAAA;oBAAGG,YAAc,EAAA,CAAA;AAChC,oBAAA,QAAA,gBAAApB,cAACX,CAAAA,YAAAA,EAAAA,EAAAA;;;0BAGLW,cAACd,CAAAA,gBAAAA,EAAAA;gBAAI+B,UAAY,EAAA,CAAA;gBAAGC,aAAe,EAAA,EAAA;AAChCJ,gBAAAA,QAAAA,EAAAA;;;;AAIT;;;;;;"}
1
+ {"version":3,"file":"UnauthenticatedLayout.js","sources":["../../../../../admin/src/layouts/UnauthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n BoxComponent,\n Flex,\n FlexComponent,\n SingleSelect,\n SingleSelectOption,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { RESPONSIVE_DEFAULT_SPACING } from '../constants/theme';\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { setLocale } from '../reducer';\n\nconst Wrapper = styled<BoxComponent>(Box)`\n margin: 0 auto;\n width: 100%;\n max-width: 55.2rem;\n`;\n\nexport const Column = styled<FlexComponent>(Flex)`\n flex-direction: column;\n`;\n\nconst LocaleToggle = () => {\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const dispatch = useTypedDispatch();\n const { formatMessage, locale } = useIntl();\n\n return (\n <SingleSelect\n aria-label={formatMessage({\n id: 'global.localeToggle.label',\n defaultMessage: 'Select interface language',\n })}\n value={locale}\n onChange={(language) => {\n dispatch(setLocale(language as string));\n }}\n >\n {Object.entries(localeNames).map(([language, name]) => (\n <SingleSelectOption key={language} value={language}>\n {name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n\ninterface LayoutContentProps {\n children: React.ReactNode;\n}\n\nexport const LayoutContent = ({ children }: LayoutContentProps) => (\n <Wrapper\n shadow=\"tableShadow\"\n hasRadius\n paddingTop={RESPONSIVE_DEFAULT_SPACING}\n paddingBottom={RESPONSIVE_DEFAULT_SPACING}\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n background=\"neutral0\"\n >\n {children}\n </Wrapper>\n);\n\ninterface UnauthenticatedLayoutProps {\n children: React.ReactNode;\n}\n\nexport const UnauthenticatedLayout = ({ children }: UnauthenticatedLayoutProps) => {\n return (\n <div>\n <Flex tag=\"header\" justifyContent=\"flex-end\">\n <Box paddingTop={6} paddingRight={RESPONSIVE_DEFAULT_SPACING}>\n <LocaleToggle />\n </Box>\n </Flex>\n <Box\n paddingTop={2}\n paddingBottom={RESPONSIVE_DEFAULT_SPACING}\n marginLeft={RESPONSIVE_DEFAULT_SPACING}\n marginRight={RESPONSIVE_DEFAULT_SPACING}\n >\n {children}\n </Box>\n </div>\n );\n};\n"],"names":["Wrapper","styled","Box","Column","Flex","LocaleToggle","localeNames","useTypedSelector","state","admin_app","language","dispatch","useTypedDispatch","formatMessage","locale","useIntl","_jsx","SingleSelect","aria-label","id","defaultMessage","value","onChange","setLocale","Object","entries","map","name","SingleSelectOption","LayoutContent","children","shadow","hasRadius","paddingTop","RESPONSIVE_DEFAULT_SPACING","paddingBottom","paddingLeft","paddingRight","background","UnauthenticatedLayout","_jsxs","div","tag","justifyContent","marginLeft","marginRight"],"mappings":";;;;;;;;;;;AAiBA,MAAMA,OAAAA,GAAUC,aAAqBC,CAAAA,gBAAAA,CAAI;;;;AAIzC,CAAC;AAEYC,MAAAA,MAAAA,GAASF,aAAsBG,CAAAA,iBAAAA,CAAK;;AAEjD;AAEA,MAAMC,YAAe,GAAA,IAAA;IACnB,MAAMC,WAAAA,GAAcC,uBAAiB,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAACC,QAAQ,CAACJ,WAAW,CAAA;AACpF,IAAA,MAAMK,QAAWC,GAAAA,sBAAAA,EAAAA;AACjB,IAAA,MAAM,EAAEC,aAAa,EAAEC,MAAM,EAAE,GAAGC,iBAAAA,EAAAA;AAElC,IAAA,qBACEC,cAACC,CAAAA,yBAAAA,EAAAA;AACCC,QAAAA,YAAAA,EAAYL,aAAc,CAAA;YACxBM,EAAI,EAAA,2BAAA;YACJC,cAAgB,EAAA;AAClB,SAAA,CAAA;QACAC,KAAOP,EAAAA,MAAAA;AACPQ,QAAAA,QAAAA,EAAU,CAACZ,QAAAA,GAAAA;AACTC,YAAAA,QAAAA,CAASY,iBAAUb,CAAAA,QAAAA,CAAAA,CAAAA;AACrB,SAAA;kBAECc,MAAOC,CAAAA,OAAO,CAACnB,WAAAA,CAAAA,CAAaoB,GAAG,CAAC,CAAC,CAAChB,QAAAA,EAAUiB,IAAK,CAAA,iBAChDX,cAACY,CAAAA,+BAAAA,EAAAA;gBAAkCP,KAAOX,EAAAA,QAAAA;AACvCiB,gBAAAA,QAAAA,EAAAA;AADsBjB,aAAAA,EAAAA,QAAAA,CAAAA;;AAMjC,CAAA;MAMamB,aAAgB,GAAA,CAAC,EAAEC,QAAQ,EAAsB,iBAC5Dd,cAAChB,CAAAA,OAAAA,EAAAA;QACC+B,MAAO,EAAA,aAAA;QACPC,SAAS,EAAA,IAAA;QACTC,UAAYC,EAAAA,gCAAAA;QACZC,aAAeD,EAAAA,gCAAAA;QACfE,WAAaF,EAAAA,gCAAAA;QACbG,YAAcH,EAAAA,gCAAAA;QACdI,UAAW,EAAA,UAAA;AAEVR,QAAAA,QAAAA,EAAAA;AAEH,KAAA;AAMWS,MAAAA,qBAAAA,GAAwB,CAAC,EAAET,QAAQ,EAA8B,GAAA;AAC5E,IAAA,qBACEU,eAACC,CAAAA,KAAAA,EAAAA;;0BACCzB,cAACZ,CAAAA,iBAAAA,EAAAA;gBAAKsC,GAAI,EAAA,QAAA;gBAASC,cAAe,EAAA,UAAA;AAChC,gBAAA,QAAA,gBAAA3B,cAACd,CAAAA,gBAAAA,EAAAA;oBAAI+B,UAAY,EAAA,CAAA;oBAAGI,YAAcH,EAAAA,gCAAAA;AAChC,oBAAA,QAAA,gBAAAlB,cAACX,CAAAA,YAAAA,EAAAA,EAAAA;;;0BAGLW,cAACd,CAAAA,gBAAAA,EAAAA;gBACC+B,UAAY,EAAA,CAAA;gBACZE,aAAeD,EAAAA,gCAAAA;gBACfU,UAAYV,EAAAA,gCAAAA;gBACZW,WAAaX,EAAAA,gCAAAA;AAEZJ,gBAAAA,QAAAA,EAAAA;;;;AAIT;;;;;;"}
@@ -3,12 +3,14 @@ import 'react';
3
3
  import { Box, Flex, SingleSelect, SingleSelectOption } from '@strapi/design-system';
4
4
  import { useIntl } from 'react-intl';
5
5
  import { styled } from 'styled-components';
6
+ import { RESPONSIVE_DEFAULT_SPACING } from '../constants/theme.mjs';
6
7
  import { useTypedSelector, useTypedDispatch } from '../core/store/hooks.mjs';
7
8
  import { setLocale } from '../reducer.mjs';
8
9
 
9
10
  const Wrapper = styled(Box)`
10
11
  margin: 0 auto;
11
- width: 552px;
12
+ width: 100%;
13
+ max-width: 55.2rem;
12
14
  `;
13
15
  const Column = styled(Flex)`
14
16
  flex-direction: column;
@@ -35,10 +37,10 @@ const LocaleToggle = ()=>{
35
37
  const LayoutContent = ({ children })=>/*#__PURE__*/ jsx(Wrapper, {
36
38
  shadow: "tableShadow",
37
39
  hasRadius: true,
38
- paddingTop: 9,
39
- paddingBottom: 9,
40
- paddingLeft: 10,
41
- paddingRight: 10,
40
+ paddingTop: RESPONSIVE_DEFAULT_SPACING,
41
+ paddingBottom: RESPONSIVE_DEFAULT_SPACING,
42
+ paddingLeft: RESPONSIVE_DEFAULT_SPACING,
43
+ paddingRight: RESPONSIVE_DEFAULT_SPACING,
42
44
  background: "neutral0",
43
45
  children: children
44
46
  });
@@ -50,13 +52,15 @@ const UnauthenticatedLayout = ({ children })=>{
50
52
  justifyContent: "flex-end",
51
53
  children: /*#__PURE__*/ jsx(Box, {
52
54
  paddingTop: 6,
53
- paddingRight: 8,
55
+ paddingRight: RESPONSIVE_DEFAULT_SPACING,
54
56
  children: /*#__PURE__*/ jsx(LocaleToggle, {})
55
57
  })
56
58
  }),
57
59
  /*#__PURE__*/ jsx(Box, {
58
60
  paddingTop: 2,
59
- paddingBottom: 11,
61
+ paddingBottom: RESPONSIVE_DEFAULT_SPACING,
62
+ marginLeft: RESPONSIVE_DEFAULT_SPACING,
63
+ marginRight: RESPONSIVE_DEFAULT_SPACING,
60
64
  children: children
61
65
  })
62
66
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"UnauthenticatedLayout.mjs","sources":["../../../../../admin/src/layouts/UnauthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n BoxComponent,\n Flex,\n FlexComponent,\n SingleSelect,\n SingleSelectOption,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { setLocale } from '../reducer';\n\nconst Wrapper = styled<BoxComponent>(Box)`\n margin: 0 auto;\n width: 552px;\n`;\n\nexport const Column = styled<FlexComponent>(Flex)`\n flex-direction: column;\n`;\n\nconst LocaleToggle = () => {\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const dispatch = useTypedDispatch();\n const { formatMessage, locale } = useIntl();\n\n return (\n <SingleSelect\n aria-label={formatMessage({\n id: 'global.localeToggle.label',\n defaultMessage: 'Select interface language',\n })}\n value={locale}\n onChange={(language) => {\n dispatch(setLocale(language as string));\n }}\n >\n {Object.entries(localeNames).map(([language, name]) => (\n <SingleSelectOption key={language} value={language}>\n {name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n\ninterface LayoutContentProps {\n children: React.ReactNode;\n}\n\nexport const LayoutContent = ({ children }: LayoutContentProps) => (\n <Wrapper\n shadow=\"tableShadow\"\n hasRadius\n paddingTop={9}\n paddingBottom={9}\n paddingLeft={10}\n paddingRight={10}\n background=\"neutral0\"\n >\n {children}\n </Wrapper>\n);\n\ninterface UnauthenticatedLayoutProps {\n children: React.ReactNode;\n}\n\nexport const UnauthenticatedLayout = ({ children }: UnauthenticatedLayoutProps) => {\n return (\n <div>\n <Flex tag=\"header\" justifyContent=\"flex-end\">\n <Box paddingTop={6} paddingRight={8}>\n <LocaleToggle />\n </Box>\n </Flex>\n <Box paddingTop={2} paddingBottom={11}>\n {children}\n </Box>\n </div>\n );\n};\n"],"names":["Wrapper","styled","Box","Column","Flex","LocaleToggle","localeNames","useTypedSelector","state","admin_app","language","dispatch","useTypedDispatch","formatMessage","locale","useIntl","_jsx","SingleSelect","aria-label","id","defaultMessage","value","onChange","setLocale","Object","entries","map","name","SingleSelectOption","LayoutContent","children","shadow","hasRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","background","UnauthenticatedLayout","_jsxs","div","tag","justifyContent"],"mappings":";;;;;;;;AAgBA,MAAMA,OAAAA,GAAUC,MAAqBC,CAAAA,GAAAA,CAAI;;;AAGzC,CAAC;AAEYC,MAAAA,MAAAA,GAASF,MAAsBG,CAAAA,IAAAA,CAAK;;AAEjD;AAEA,MAAMC,YAAe,GAAA,IAAA;IACnB,MAAMC,WAAAA,GAAcC,iBAAiB,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAACC,QAAQ,CAACJ,WAAW,CAAA;AACpF,IAAA,MAAMK,QAAWC,GAAAA,gBAAAA,EAAAA;AACjB,IAAA,MAAM,EAAEC,aAAa,EAAEC,MAAM,EAAE,GAAGC,OAAAA,EAAAA;AAElC,IAAA,qBACEC,GAACC,CAAAA,YAAAA,EAAAA;AACCC,QAAAA,YAAAA,EAAYL,aAAc,CAAA;YACxBM,EAAI,EAAA,2BAAA;YACJC,cAAgB,EAAA;AAClB,SAAA,CAAA;QACAC,KAAOP,EAAAA,MAAAA;AACPQ,QAAAA,QAAAA,EAAU,CAACZ,QAAAA,GAAAA;AACTC,YAAAA,QAAAA,CAASY,SAAUb,CAAAA,QAAAA,CAAAA,CAAAA;AACrB,SAAA;kBAECc,MAAOC,CAAAA,OAAO,CAACnB,WAAAA,CAAAA,CAAaoB,GAAG,CAAC,CAAC,CAAChB,QAAAA,EAAUiB,IAAK,CAAA,iBAChDX,GAACY,CAAAA,kBAAAA,EAAAA;gBAAkCP,KAAOX,EAAAA,QAAAA;AACvCiB,gBAAAA,QAAAA,EAAAA;AADsBjB,aAAAA,EAAAA,QAAAA,CAAAA;;AAMjC,CAAA;MAMamB,aAAgB,GAAA,CAAC,EAAEC,QAAQ,EAAsB,iBAC5Dd,GAAChB,CAAAA,OAAAA,EAAAA;QACC+B,MAAO,EAAA,aAAA;QACPC,SAAS,EAAA,IAAA;QACTC,UAAY,EAAA,CAAA;QACZC,aAAe,EAAA,CAAA;QACfC,WAAa,EAAA,EAAA;QACbC,YAAc,EAAA,EAAA;QACdC,UAAW,EAAA,UAAA;AAEVP,QAAAA,QAAAA,EAAAA;AAEH,KAAA;AAMWQ,MAAAA,qBAAAA,GAAwB,CAAC,EAAER,QAAQ,EAA8B,GAAA;AAC5E,IAAA,qBACES,IAACC,CAAAA,KAAAA,EAAAA;;0BACCxB,GAACZ,CAAAA,IAAAA,EAAAA;gBAAKqC,GAAI,EAAA,QAAA;gBAASC,cAAe,EAAA,UAAA;AAChC,gBAAA,QAAA,gBAAA1B,GAACd,CAAAA,GAAAA,EAAAA;oBAAI+B,UAAY,EAAA,CAAA;oBAAGG,YAAc,EAAA,CAAA;AAChC,oBAAA,QAAA,gBAAApB,GAACX,CAAAA,YAAAA,EAAAA,EAAAA;;;0BAGLW,GAACd,CAAAA,GAAAA,EAAAA;gBAAI+B,UAAY,EAAA,CAAA;gBAAGC,aAAe,EAAA,EAAA;AAChCJ,gBAAAA,QAAAA,EAAAA;;;;AAIT;;;;"}
1
+ {"version":3,"file":"UnauthenticatedLayout.mjs","sources":["../../../../../admin/src/layouts/UnauthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n BoxComponent,\n Flex,\n FlexComponent,\n SingleSelect,\n SingleSelectOption,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { RESPONSIVE_DEFAULT_SPACING } from '../constants/theme';\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { setLocale } from '../reducer';\n\nconst Wrapper = styled<BoxComponent>(Box)`\n margin: 0 auto;\n width: 100%;\n max-width: 55.2rem;\n`;\n\nexport const Column = styled<FlexComponent>(Flex)`\n flex-direction: column;\n`;\n\nconst LocaleToggle = () => {\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const dispatch = useTypedDispatch();\n const { formatMessage, locale } = useIntl();\n\n return (\n <SingleSelect\n aria-label={formatMessage({\n id: 'global.localeToggle.label',\n defaultMessage: 'Select interface language',\n })}\n value={locale}\n onChange={(language) => {\n dispatch(setLocale(language as string));\n }}\n >\n {Object.entries(localeNames).map(([language, name]) => (\n <SingleSelectOption key={language} value={language}>\n {name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n\ninterface LayoutContentProps {\n children: React.ReactNode;\n}\n\nexport const LayoutContent = ({ children }: LayoutContentProps) => (\n <Wrapper\n shadow=\"tableShadow\"\n hasRadius\n paddingTop={RESPONSIVE_DEFAULT_SPACING}\n paddingBottom={RESPONSIVE_DEFAULT_SPACING}\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n background=\"neutral0\"\n >\n {children}\n </Wrapper>\n);\n\ninterface UnauthenticatedLayoutProps {\n children: React.ReactNode;\n}\n\nexport const UnauthenticatedLayout = ({ children }: UnauthenticatedLayoutProps) => {\n return (\n <div>\n <Flex tag=\"header\" justifyContent=\"flex-end\">\n <Box paddingTop={6} paddingRight={RESPONSIVE_DEFAULT_SPACING}>\n <LocaleToggle />\n </Box>\n </Flex>\n <Box\n paddingTop={2}\n paddingBottom={RESPONSIVE_DEFAULT_SPACING}\n marginLeft={RESPONSIVE_DEFAULT_SPACING}\n marginRight={RESPONSIVE_DEFAULT_SPACING}\n >\n {children}\n </Box>\n </div>\n );\n};\n"],"names":["Wrapper","styled","Box","Column","Flex","LocaleToggle","localeNames","useTypedSelector","state","admin_app","language","dispatch","useTypedDispatch","formatMessage","locale","useIntl","_jsx","SingleSelect","aria-label","id","defaultMessage","value","onChange","setLocale","Object","entries","map","name","SingleSelectOption","LayoutContent","children","shadow","hasRadius","paddingTop","RESPONSIVE_DEFAULT_SPACING","paddingBottom","paddingLeft","paddingRight","background","UnauthenticatedLayout","_jsxs","div","tag","justifyContent","marginLeft","marginRight"],"mappings":";;;;;;;;;AAiBA,MAAMA,OAAAA,GAAUC,MAAqBC,CAAAA,GAAAA,CAAI;;;;AAIzC,CAAC;AAEYC,MAAAA,MAAAA,GAASF,MAAsBG,CAAAA,IAAAA,CAAK;;AAEjD;AAEA,MAAMC,YAAe,GAAA,IAAA;IACnB,MAAMC,WAAAA,GAAcC,iBAAiB,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAACC,QAAQ,CAACJ,WAAW,CAAA;AACpF,IAAA,MAAMK,QAAWC,GAAAA,gBAAAA,EAAAA;AACjB,IAAA,MAAM,EAAEC,aAAa,EAAEC,MAAM,EAAE,GAAGC,OAAAA,EAAAA;AAElC,IAAA,qBACEC,GAACC,CAAAA,YAAAA,EAAAA;AACCC,QAAAA,YAAAA,EAAYL,aAAc,CAAA;YACxBM,EAAI,EAAA,2BAAA;YACJC,cAAgB,EAAA;AAClB,SAAA,CAAA;QACAC,KAAOP,EAAAA,MAAAA;AACPQ,QAAAA,QAAAA,EAAU,CAACZ,QAAAA,GAAAA;AACTC,YAAAA,QAAAA,CAASY,SAAUb,CAAAA,QAAAA,CAAAA,CAAAA;AACrB,SAAA;kBAECc,MAAOC,CAAAA,OAAO,CAACnB,WAAAA,CAAAA,CAAaoB,GAAG,CAAC,CAAC,CAAChB,QAAAA,EAAUiB,IAAK,CAAA,iBAChDX,GAACY,CAAAA,kBAAAA,EAAAA;gBAAkCP,KAAOX,EAAAA,QAAAA;AACvCiB,gBAAAA,QAAAA,EAAAA;AADsBjB,aAAAA,EAAAA,QAAAA,CAAAA;;AAMjC,CAAA;MAMamB,aAAgB,GAAA,CAAC,EAAEC,QAAQ,EAAsB,iBAC5Dd,GAAChB,CAAAA,OAAAA,EAAAA;QACC+B,MAAO,EAAA,aAAA;QACPC,SAAS,EAAA,IAAA;QACTC,UAAYC,EAAAA,0BAAAA;QACZC,aAAeD,EAAAA,0BAAAA;QACfE,WAAaF,EAAAA,0BAAAA;QACbG,YAAcH,EAAAA,0BAAAA;QACdI,UAAW,EAAA,UAAA;AAEVR,QAAAA,QAAAA,EAAAA;AAEH,KAAA;AAMWS,MAAAA,qBAAAA,GAAwB,CAAC,EAAET,QAAQ,EAA8B,GAAA;AAC5E,IAAA,qBACEU,IAACC,CAAAA,KAAAA,EAAAA;;0BACCzB,GAACZ,CAAAA,IAAAA,EAAAA;gBAAKsC,GAAI,EAAA,QAAA;gBAASC,cAAe,EAAA,UAAA;AAChC,gBAAA,QAAA,gBAAA3B,GAACd,CAAAA,GAAAA,EAAAA;oBAAI+B,UAAY,EAAA,CAAA;oBAAGI,YAAcH,EAAAA,0BAAAA;AAChC,oBAAA,QAAA,gBAAAlB,GAACX,CAAAA,YAAAA,EAAAA,EAAAA;;;0BAGLW,GAACd,CAAAA,GAAAA,EAAAA;gBACC+B,UAAY,EAAA,CAAA;gBACZE,aAAeD,EAAAA,0BAAAA;gBACfU,UAAYV,EAAAA,0BAAAA;gBACZW,WAAaX,EAAAA,0BAAAA;AAEZJ,gBAAAA,QAAAA,EAAAA;;;;AAIT;;;;"}
@@ -81,6 +81,7 @@ const Login = ({ children })=>{
81
81
  children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
82
82
  variant: "alpha",
83
83
  tag: "h1",
84
+ textAlign: "center",
84
85
  children: formatMessage({
85
86
  id: 'Auth.form.welcome.title',
86
87
  defaultMessage: 'Welcome!'
@@ -92,6 +93,8 @@ const Login = ({ children })=>{
92
93
  children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
93
94
  variant: "epsilon",
94
95
  textColor: "neutral600",
96
+ textAlign: "center",
97
+ display: "block",
95
98
  children: formatMessage({
96
99
  id: 'Auth.form.welcome.subtitle',
97
100
  defaultMessage: 'Log in to your Strapi account'
@@ -1 +1 @@
1
- {"version":3,"file":"Login.js","sources":["../../../../../../../admin/src/pages/Auth/components/Login.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Main, Typography, Link } from '@strapi/design-system';\nimport camelCase from 'lodash/camelCase';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useLocation, useNavigate } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { Form } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useAuth } from '../../../features/Auth';\nimport {\n UnauthenticatedLayout,\n Column,\n LayoutContent,\n} from '../../../layouts/UnauthenticatedLayout';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nimport type { Login } from '../../../../../shared/contracts/authentication';\n\ninterface LoginProps {\n children?: React.ReactNode;\n}\n\nconst LOGIN_SCHEMA = yup.object().shape({\n email: yup\n .string()\n .nullable()\n .email({\n id: translatedErrors.email.id,\n defaultMessage: 'Not a valid email',\n })\n .required(translatedErrors.required),\n password: yup.string().required(translatedErrors.required).nullable(),\n rememberMe: yup.bool().nullable(),\n});\n\nconst Login = ({ children }: LoginProps) => {\n const [apiError, setApiError] = React.useState<string>();\n const { formatMessage } = useIntl();\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const navigate = useNavigate();\n\n const { login } = useAuth('Login', (auth) => auth);\n\n const handleLogin = async (body: Parameters<typeof login>[0]) => {\n setApiError(undefined);\n\n const res = await login(body);\n\n if ('error' in res) {\n const message = res.error.message ?? 'Something went wrong';\n\n if (camelCase(message).toLowerCase() === 'usernotactive') {\n navigate('/auth/oops');\n return;\n }\n\n setApiError(message);\n } else {\n const redirectTo = query.get('redirectTo');\n const redirectUrl = redirectTo ? decodeURIComponent(redirectTo) : '/';\n\n navigate(redirectUrl);\n }\n };\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={1}>\n <Typography variant=\"alpha\" tag=\"h1\">\n {formatMessage({\n id: 'Auth.form.welcome.title',\n defaultMessage: 'Welcome!',\n })}\n </Typography>\n </Box>\n <Box paddingBottom={7}>\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Auth.form.welcome.subtitle',\n defaultMessage: 'Log in to your Strapi account',\n })}\n </Typography>\n </Box>\n {apiError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {apiError}\n </Typography>\n ) : null}\n </Column>\n <Form\n method=\"PUT\"\n initialValues={{\n email: '',\n password: '',\n rememberMe: false,\n }}\n onSubmit={(values) => {\n handleLogin(values);\n }}\n validationSchema={LOGIN_SCHEMA}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {[\n {\n label: formatMessage({ id: 'Auth.form.email.label', defaultMessage: 'Email' }),\n name: 'email',\n placeholder: formatMessage({\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'kai@doe.com',\n }),\n required: true,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n required: true,\n type: 'password' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.rememberMe.label',\n defaultMessage: 'Remember me',\n }),\n name: 'rememberMe',\n type: 'checkbox' as const,\n },\n ].map((field) => (\n <InputRenderer key={field.name} {...field} />\n ))}\n <Button fullWidth type=\"submit\">\n {formatMessage({ id: 'Auth.form.button.login', defaultMessage: 'Login' })}\n </Button>\n </Flex>\n </Form>\n {children}\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n <Link isExternal={false} tag={NavLink} to=\"/auth/forgot-password\">\n {formatMessage({\n id: 'Auth.link.forgot-password',\n defaultMessage: 'Forgot your password?',\n })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nexport { Login };\nexport type { LoginProps };\n"],"names":["LOGIN_SCHEMA","yup","object","shape","email","string","nullable","id","translatedErrors","defaultMessage","required","password","rememberMe","bool","Login","children","apiError","setApiError","React","useState","formatMessage","useIntl","search","searchString","useLocation","query","useMemo","URLSearchParams","navigate","useNavigate","login","useAuth","auth","handleLogin","body","undefined","res","message","error","camelCase","toLowerCase","redirectTo","get","redirectUrl","decodeURIComponent","_jsx","UnauthenticatedLayout","_jsxs","Main","LayoutContent","Column","Logo","Box","paddingTop","paddingBottom","Typography","variant","tag","textColor","role","tabIndex","Form","method","initialValues","onSubmit","values","validationSchema","Flex","direction","alignItems","gap","label","name","placeholder","type","map","field","InputRenderer","Button","fullWidth","justifyContent","Link","isExternal","NavLink","to"],"mappings":"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"}
1
+ {"version":3,"file":"Login.js","sources":["../../../../../../../admin/src/pages/Auth/components/Login.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Main, Typography, Link } from '@strapi/design-system';\nimport camelCase from 'lodash/camelCase';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useLocation, useNavigate } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { Form } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useAuth } from '../../../features/Auth';\nimport {\n UnauthenticatedLayout,\n Column,\n LayoutContent,\n} from '../../../layouts/UnauthenticatedLayout';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nimport type { Login } from '../../../../../shared/contracts/authentication';\n\ninterface LoginProps {\n children?: React.ReactNode;\n}\n\nconst LOGIN_SCHEMA = yup.object().shape({\n email: yup\n .string()\n .nullable()\n .email({\n id: translatedErrors.email.id,\n defaultMessage: 'Not a valid email',\n })\n .required(translatedErrors.required),\n password: yup.string().required(translatedErrors.required).nullable(),\n rememberMe: yup.bool().nullable(),\n});\n\nconst Login = ({ children }: LoginProps) => {\n const [apiError, setApiError] = React.useState<string>();\n const { formatMessage } = useIntl();\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const navigate = useNavigate();\n\n const { login } = useAuth('Login', (auth) => auth);\n\n const handleLogin = async (body: Parameters<typeof login>[0]) => {\n setApiError(undefined);\n\n const res = await login(body);\n\n if ('error' in res) {\n const message = res.error.message ?? 'Something went wrong';\n\n if (camelCase(message).toLowerCase() === 'usernotactive') {\n navigate('/auth/oops');\n return;\n }\n\n setApiError(message);\n } else {\n const redirectTo = query.get('redirectTo');\n const redirectUrl = redirectTo ? decodeURIComponent(redirectTo) : '/';\n\n navigate(redirectUrl);\n }\n };\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={1}>\n <Typography variant=\"alpha\" tag=\"h1\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.welcome.title',\n defaultMessage: 'Welcome!',\n })}\n </Typography>\n </Box>\n <Box paddingBottom={7}>\n <Typography\n variant=\"epsilon\"\n textColor=\"neutral600\"\n textAlign=\"center\"\n display=\"block\"\n >\n {formatMessage({\n id: 'Auth.form.welcome.subtitle',\n defaultMessage: 'Log in to your Strapi account',\n })}\n </Typography>\n </Box>\n {apiError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {apiError}\n </Typography>\n ) : null}\n </Column>\n <Form\n method=\"PUT\"\n initialValues={{\n email: '',\n password: '',\n rememberMe: false,\n }}\n onSubmit={(values) => {\n handleLogin(values);\n }}\n validationSchema={LOGIN_SCHEMA}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {[\n {\n label: formatMessage({ id: 'Auth.form.email.label', defaultMessage: 'Email' }),\n name: 'email',\n placeholder: formatMessage({\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'kai@doe.com',\n }),\n required: true,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n required: true,\n type: 'password' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.rememberMe.label',\n defaultMessage: 'Remember me',\n }),\n name: 'rememberMe',\n type: 'checkbox' as const,\n },\n ].map((field) => (\n <InputRenderer key={field.name} {...field} />\n ))}\n <Button fullWidth type=\"submit\">\n {formatMessage({ id: 'Auth.form.button.login', defaultMessage: 'Login' })}\n </Button>\n </Flex>\n </Form>\n {children}\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n <Link isExternal={false} tag={NavLink} to=\"/auth/forgot-password\">\n {formatMessage({\n id: 'Auth.link.forgot-password',\n defaultMessage: 'Forgot your password?',\n })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nexport { Login };\nexport type { LoginProps };\n"],"names":["LOGIN_SCHEMA","yup","object","shape","email","string","nullable","id","translatedErrors","defaultMessage","required","password","rememberMe","bool","Login","children","apiError","setApiError","React","useState","formatMessage","useIntl","search","searchString","useLocation","query","useMemo","URLSearchParams","navigate","useNavigate","login","useAuth","auth","handleLogin","body","undefined","res","message","error","camelCase","toLowerCase","redirectTo","get","redirectUrl","decodeURIComponent","_jsx","UnauthenticatedLayout","_jsxs","Main","LayoutContent","Column","Logo","Box","paddingTop","paddingBottom","Typography","variant","tag","textAlign","textColor","display","role","tabIndex","Form","method","initialValues","onSubmit","values","validationSchema","Flex","direction","alignItems","gap","label","name","placeholder","type","map","field","InputRenderer","Button","fullWidth","justifyContent","Link","isExternal","NavLink","to"],"mappings":"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"}
@@ -59,6 +59,7 @@ const Login = ({ children })=>{
59
59
  children: /*#__PURE__*/ jsx(Typography, {
60
60
  variant: "alpha",
61
61
  tag: "h1",
62
+ textAlign: "center",
62
63
  children: formatMessage({
63
64
  id: 'Auth.form.welcome.title',
64
65
  defaultMessage: 'Welcome!'
@@ -70,6 +71,8 @@ const Login = ({ children })=>{
70
71
  children: /*#__PURE__*/ jsx(Typography, {
71
72
  variant: "epsilon",
72
73
  textColor: "neutral600",
74
+ textAlign: "center",
75
+ display: "block",
73
76
  children: formatMessage({
74
77
  id: 'Auth.form.welcome.subtitle',
75
78
  defaultMessage: 'Log in to your Strapi account'
@@ -1 +1 @@
1
- {"version":3,"file":"Login.mjs","sources":["../../../../../../../admin/src/pages/Auth/components/Login.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Main, Typography, Link } from '@strapi/design-system';\nimport camelCase from 'lodash/camelCase';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useLocation, useNavigate } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { Form } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useAuth } from '../../../features/Auth';\nimport {\n UnauthenticatedLayout,\n Column,\n LayoutContent,\n} from '../../../layouts/UnauthenticatedLayout';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nimport type { Login } from '../../../../../shared/contracts/authentication';\n\ninterface LoginProps {\n children?: React.ReactNode;\n}\n\nconst LOGIN_SCHEMA = yup.object().shape({\n email: yup\n .string()\n .nullable()\n .email({\n id: translatedErrors.email.id,\n defaultMessage: 'Not a valid email',\n })\n .required(translatedErrors.required),\n password: yup.string().required(translatedErrors.required).nullable(),\n rememberMe: yup.bool().nullable(),\n});\n\nconst Login = ({ children }: LoginProps) => {\n const [apiError, setApiError] = React.useState<string>();\n const { formatMessage } = useIntl();\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const navigate = useNavigate();\n\n const { login } = useAuth('Login', (auth) => auth);\n\n const handleLogin = async (body: Parameters<typeof login>[0]) => {\n setApiError(undefined);\n\n const res = await login(body);\n\n if ('error' in res) {\n const message = res.error.message ?? 'Something went wrong';\n\n if (camelCase(message).toLowerCase() === 'usernotactive') {\n navigate('/auth/oops');\n return;\n }\n\n setApiError(message);\n } else {\n const redirectTo = query.get('redirectTo');\n const redirectUrl = redirectTo ? decodeURIComponent(redirectTo) : '/';\n\n navigate(redirectUrl);\n }\n };\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={1}>\n <Typography variant=\"alpha\" tag=\"h1\">\n {formatMessage({\n id: 'Auth.form.welcome.title',\n defaultMessage: 'Welcome!',\n })}\n </Typography>\n </Box>\n <Box paddingBottom={7}>\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Auth.form.welcome.subtitle',\n defaultMessage: 'Log in to your Strapi account',\n })}\n </Typography>\n </Box>\n {apiError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {apiError}\n </Typography>\n ) : null}\n </Column>\n <Form\n method=\"PUT\"\n initialValues={{\n email: '',\n password: '',\n rememberMe: false,\n }}\n onSubmit={(values) => {\n handleLogin(values);\n }}\n validationSchema={LOGIN_SCHEMA}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {[\n {\n label: formatMessage({ id: 'Auth.form.email.label', defaultMessage: 'Email' }),\n name: 'email',\n placeholder: formatMessage({\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'kai@doe.com',\n }),\n required: true,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n required: true,\n type: 'password' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.rememberMe.label',\n defaultMessage: 'Remember me',\n }),\n name: 'rememberMe',\n type: 'checkbox' as const,\n },\n ].map((field) => (\n <InputRenderer key={field.name} {...field} />\n ))}\n <Button fullWidth type=\"submit\">\n {formatMessage({ id: 'Auth.form.button.login', defaultMessage: 'Login' })}\n </Button>\n </Flex>\n </Form>\n {children}\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n <Link isExternal={false} tag={NavLink} to=\"/auth/forgot-password\">\n {formatMessage({\n id: 'Auth.link.forgot-password',\n defaultMessage: 'Forgot your password?',\n })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nexport { Login };\nexport type { LoginProps };\n"],"names":["LOGIN_SCHEMA","yup","object","shape","email","string","nullable","id","translatedErrors","defaultMessage","required","password","rememberMe","bool","Login","children","apiError","setApiError","React","useState","formatMessage","useIntl","search","searchString","useLocation","query","useMemo","URLSearchParams","navigate","useNavigate","login","useAuth","auth","handleLogin","body","undefined","res","message","error","camelCase","toLowerCase","redirectTo","get","redirectUrl","decodeURIComponent","_jsx","UnauthenticatedLayout","_jsxs","Main","LayoutContent","Column","Logo","Box","paddingTop","paddingBottom","Typography","variant","tag","textColor","role","tabIndex","Form","method","initialValues","onSubmit","values","validationSchema","Flex","direction","alignItems","gap","label","name","placeholder","type","map","field","InputRenderer","Button","fullWidth","justifyContent","Link","isExternal","NavLink","to"],"mappings":"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"}
1
+ {"version":3,"file":"Login.mjs","sources":["../../../../../../../admin/src/pages/Auth/components/Login.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Main, Typography, Link } from '@strapi/design-system';\nimport camelCase from 'lodash/camelCase';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useLocation, useNavigate } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { Form } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useAuth } from '../../../features/Auth';\nimport {\n UnauthenticatedLayout,\n Column,\n LayoutContent,\n} from '../../../layouts/UnauthenticatedLayout';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nimport type { Login } from '../../../../../shared/contracts/authentication';\n\ninterface LoginProps {\n children?: React.ReactNode;\n}\n\nconst LOGIN_SCHEMA = yup.object().shape({\n email: yup\n .string()\n .nullable()\n .email({\n id: translatedErrors.email.id,\n defaultMessage: 'Not a valid email',\n })\n .required(translatedErrors.required),\n password: yup.string().required(translatedErrors.required).nullable(),\n rememberMe: yup.bool().nullable(),\n});\n\nconst Login = ({ children }: LoginProps) => {\n const [apiError, setApiError] = React.useState<string>();\n const { formatMessage } = useIntl();\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const navigate = useNavigate();\n\n const { login } = useAuth('Login', (auth) => auth);\n\n const handleLogin = async (body: Parameters<typeof login>[0]) => {\n setApiError(undefined);\n\n const res = await login(body);\n\n if ('error' in res) {\n const message = res.error.message ?? 'Something went wrong';\n\n if (camelCase(message).toLowerCase() === 'usernotactive') {\n navigate('/auth/oops');\n return;\n }\n\n setApiError(message);\n } else {\n const redirectTo = query.get('redirectTo');\n const redirectUrl = redirectTo ? decodeURIComponent(redirectTo) : '/';\n\n navigate(redirectUrl);\n }\n };\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={1}>\n <Typography variant=\"alpha\" tag=\"h1\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.welcome.title',\n defaultMessage: 'Welcome!',\n })}\n </Typography>\n </Box>\n <Box paddingBottom={7}>\n <Typography\n variant=\"epsilon\"\n textColor=\"neutral600\"\n textAlign=\"center\"\n display=\"block\"\n >\n {formatMessage({\n id: 'Auth.form.welcome.subtitle',\n defaultMessage: 'Log in to your Strapi account',\n })}\n </Typography>\n </Box>\n {apiError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {apiError}\n </Typography>\n ) : null}\n </Column>\n <Form\n method=\"PUT\"\n initialValues={{\n email: '',\n password: '',\n rememberMe: false,\n }}\n onSubmit={(values) => {\n handleLogin(values);\n }}\n validationSchema={LOGIN_SCHEMA}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {[\n {\n label: formatMessage({ id: 'Auth.form.email.label', defaultMessage: 'Email' }),\n name: 'email',\n placeholder: formatMessage({\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'kai@doe.com',\n }),\n required: true,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n required: true,\n type: 'password' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.rememberMe.label',\n defaultMessage: 'Remember me',\n }),\n name: 'rememberMe',\n type: 'checkbox' as const,\n },\n ].map((field) => (\n <InputRenderer key={field.name} {...field} />\n ))}\n <Button fullWidth type=\"submit\">\n {formatMessage({ id: 'Auth.form.button.login', defaultMessage: 'Login' })}\n </Button>\n </Flex>\n </Form>\n {children}\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n <Link isExternal={false} tag={NavLink} to=\"/auth/forgot-password\">\n {formatMessage({\n id: 'Auth.link.forgot-password',\n defaultMessage: 'Forgot your password?',\n })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nexport { Login };\nexport type { LoginProps };\n"],"names":["LOGIN_SCHEMA","yup","object","shape","email","string","nullable","id","translatedErrors","defaultMessage","required","password","rememberMe","bool","Login","children","apiError","setApiError","React","useState","formatMessage","useIntl","search","searchString","useLocation","query","useMemo","URLSearchParams","navigate","useNavigate","login","useAuth","auth","handleLogin","body","undefined","res","message","error","camelCase","toLowerCase","redirectTo","get","redirectUrl","decodeURIComponent","_jsx","UnauthenticatedLayout","_jsxs","Main","LayoutContent","Column","Logo","Box","paddingTop","paddingBottom","Typography","variant","tag","textAlign","textColor","display","role","tabIndex","Form","method","initialValues","onSubmit","values","validationSchema","Flex","direction","alignItems","gap","label","name","placeholder","type","map","field","InputRenderer","Button","fullWidth","justifyContent","Link","isExternal","NavLink","to"],"mappings":"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"}