@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
@@ -153,63 +153,64 @@ const WidgetRoot = ({ title, icon = icons.PuzzlePiece, children, link, uid })=>{
153
153
  checkUserHasPermissions,
154
154
  getAllWidgets
155
155
  ]);
156
- return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Main, {
157
- children: [
158
- /*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Title, {
159
- children: formatMessage({
160
- id: 'HomePage.head.title',
161
- defaultMessage: 'Homepage'
162
- })
163
- }),
164
- /*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Header, {
165
- title: formatMessage({
166
- id: 'HomePage.header.title',
167
- defaultMessage: 'Hello {name}'
168
- }, {
169
- name: displayName
156
+ return /*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Root, {
157
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Main, {
158
+ children: [
159
+ /*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Title, {
160
+ children: formatMessage({
161
+ id: 'HomePage.head.title',
162
+ defaultMessage: 'Homepage'
163
+ })
170
164
  }),
171
- subtitle: formatMessage({
172
- id: 'HomePage.header.subtitle',
173
- defaultMessage: 'Welcome to your administration panel'
174
- })
175
- }),
176
- /*#__PURE__*/ jsxRuntime.jsx(FreeTrialWelcomeModal.FreeTrialWelcomeModal, {}),
177
- /*#__PURE__*/ jsxRuntime.jsx(FreeTrialEndedModal.FreeTrialEndedModal, {}),
178
- /*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Content, {
179
- children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
180
- direction: "column",
181
- alignItems: "stretch",
182
- gap: 8,
183
- paddingBottom: 10,
184
- children: [
185
- /*#__PURE__*/ jsxRuntime.jsx(Overview.GuidedTourHomepageOverview, {}),
186
- loading ? /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
187
- position: "absolute",
188
- top: 0,
189
- left: 0,
190
- right: 0,
191
- bottom: 0,
192
- children: /*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Loading, {})
193
- }) : /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Root, {
194
- gap: 5,
195
- children: filteredWidgets.map((widget)=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
196
- col: 6,
197
- s: 12,
198
- children: /*#__PURE__*/ jsxRuntime.jsx(WidgetRoot, {
199
- title: widget.title,
200
- icon: widget.icon,
201
- link: widget.link,
202
- uid: widget.uid,
203
- children: /*#__PURE__*/ jsxRuntime.jsx(WidgetComponent, {
204
- component: widget.component
165
+ /*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Header, {
166
+ title: formatMessage({
167
+ id: 'HomePage.header.title',
168
+ defaultMessage: 'Hello {name}'
169
+ }, {
170
+ name: displayName
171
+ }),
172
+ subtitle: formatMessage({
173
+ id: 'HomePage.header.subtitle',
174
+ defaultMessage: 'Welcome to your administration panel'
175
+ })
176
+ }),
177
+ /*#__PURE__*/ jsxRuntime.jsx(FreeTrialWelcomeModal.FreeTrialWelcomeModal, {}),
178
+ /*#__PURE__*/ jsxRuntime.jsx(FreeTrialEndedModal.FreeTrialEndedModal, {}),
179
+ /*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Content, {
180
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
181
+ direction: "column",
182
+ alignItems: "stretch",
183
+ gap: 8,
184
+ children: [
185
+ /*#__PURE__*/ jsxRuntime.jsx(Overview.GuidedTourHomepageOverview, {}),
186
+ loading ? /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
187
+ position: "absolute",
188
+ top: 0,
189
+ left: 0,
190
+ right: 0,
191
+ bottom: 0,
192
+ children: /*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Loading, {})
193
+ }) : /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Root, {
194
+ gap: 5,
195
+ children: filteredWidgets.map((widget)=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
196
+ col: 6,
197
+ s: 12,
198
+ children: /*#__PURE__*/ jsxRuntime.jsx(WidgetRoot, {
199
+ title: widget.title,
200
+ icon: widget.icon,
201
+ link: widget.link,
202
+ uid: widget.uid,
203
+ children: /*#__PURE__*/ jsxRuntime.jsx(WidgetComponent, {
204
+ component: widget.component
205
+ })
205
206
  })
206
- })
207
- }, widget.uid))
208
- })
209
- ]
207
+ }, widget.uid))
208
+ })
209
+ ]
210
+ })
210
211
  })
211
- })
212
- ]
212
+ ]
213
+ })
213
214
  });
214
215
  };
215
216
  /* -------------------------------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"HomePage.js","sources":["../../../../../../admin/src/pages/Home/HomePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Grid, Main, Typography } from '@strapi/design-system';\nimport { PuzzlePiece } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\n\nimport { GuidedTourHomepageOverview } from '../../components/GuidedTour/Overview';\nimport { Layouts } from '../../components/Layouts/Layout';\nimport { Page } from '../../components/PageHelpers';\nimport { Widget } from '../../components/WidgetHelpers';\nimport { useEnterprise } from '../../ee';\nimport { useAuth } from '../../features/Auth';\nimport { useStrapiApp } from '../../features/StrapiApp';\nimport { useTracking } from '../../features/Tracking';\n\nimport { FreeTrialEndedModal } from './components/FreeTrialEndedModal';\nimport { FreeTrialWelcomeModal } from './components/FreeTrialWelcomeModal';\n\nimport type { WidgetWithUID } from '../../core/apis/Widgets';\nimport type { WidgetType } from '@strapi/admin/strapi-admin';\n\n/* -------------------------------------------------------------------------------------------------\n * WidgetRoot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface WidgetRootProps\n extends Pick<WidgetType, 'title' | 'icon' | 'permissions' | 'link' | 'uid'> {\n children: React.ReactNode;\n}\n\nexport const WidgetRoot = ({ title, icon = PuzzlePiece, children, link, uid }: WidgetRootProps) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const id = React.useId();\n const Icon = icon;\n\n const handleClickOnLink = () => {\n trackUsage('didOpenHomeWidgetLink', { widgetUID: uid });\n };\n\n return (\n <Flex\n width=\"100%\"\n hasRadius\n direction=\"column\"\n alignItems=\"flex-start\"\n background=\"neutral0\"\n borderColor=\"neutral150\"\n shadow=\"tableShadow\"\n tag=\"section\"\n gap={4}\n padding={6}\n aria-labelledby={id}\n >\n <Flex direction=\"row\" gap={2} justifyContent=\"space-between\" width=\"100%\" tag=\"header\">\n <Flex gap={2}>\n <Icon fill=\"neutral500\" aria-hidden />\n <Typography textColor=\"neutral500\" variant=\"sigma\" tag=\"h2\" id={id}>\n {formatMessage(title)}\n </Typography>\n </Flex>\n {link && (\n <Typography\n tag={ReactRouterLink}\n variant=\"omega\"\n textColor=\"primary600\"\n style={{ textDecoration: 'none' }}\n textAlign=\"right\"\n to={link.href}\n onClick={handleClickOnLink}\n >\n {formatMessage(link.label)}\n </Typography>\n )}\n </Flex>\n <Box width=\"100%\" height=\"261px\" overflow=\"auto\" tag=\"main\">\n {children}\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UnstableHomePageCe\n * -----------------------------------------------------------------------------------------------*/\n\nconst WidgetComponent = ({ component }: { component: () => Promise<React.ComponentType> }) => {\n const [loadedComponent, setLoadedComponent] = React.useState<React.ComponentType | null>(null);\n\n React.useEffect(() => {\n const loadComponent = async () => {\n const resolvedComponent = await component();\n\n setLoadedComponent(() => resolvedComponent);\n };\n\n loadComponent();\n }, [component]);\n\n const Component = loadedComponent;\n\n if (!Component) {\n return <Widget.Loading />;\n }\n\n return <Component />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePageCE\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePageCE = () => {\n const { formatMessage } = useIntl();\n const user = useAuth('HomePageCE', (state) => state.user);\n const displayName = user?.firstname ?? user?.username ?? user?.email;\n const getAllWidgets = useStrapiApp('UnstableHomepageCe', (state) => state.widgets.getAll);\n const checkUserHasPermissions = useAuth('WidgetRoot', (state) => state.checkUserHasPermissions);\n const [filteredWidgets, setFilteredWidgets] = React.useState<WidgetWithUID[]>([]);\n const [loading, setLoading] = React.useState(true);\n\n React.useEffect(() => {\n const checkWidgetsPermissions = async () => {\n const allWidgets = getAllWidgets();\n const authorizedWidgets = await Promise.all(\n allWidgets.map(async (widget) => {\n if (!widget.permissions || widget.permissions.length === 0) return true;\n const matchingPermissions = await checkUserHasPermissions(widget.permissions);\n return matchingPermissions.length >= widget.permissions.length;\n })\n );\n setFilteredWidgets(allWidgets.filter((_, i) => authorizedWidgets[i]));\n setLoading(false);\n };\n\n checkWidgetsPermissions();\n }, [checkUserHasPermissions, getAllWidgets]);\n\n return (\n <Main>\n <Page.Title>\n {formatMessage({ id: 'HomePage.head.title', defaultMessage: 'Homepage' })}\n </Page.Title>\n <Layouts.Header\n title={formatMessage(\n { id: 'HomePage.header.title', defaultMessage: 'Hello {name}' },\n { name: displayName }\n )}\n subtitle={formatMessage({\n id: 'HomePage.header.subtitle',\n defaultMessage: 'Welcome to your administration panel',\n })}\n />\n <FreeTrialWelcomeModal />\n <FreeTrialEndedModal />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={8} paddingBottom={10}>\n <GuidedTourHomepageOverview />\n {loading ? (\n <Box position=\"absolute\" top={0} left={0} right={0} bottom={0}>\n <Page.Loading />\n </Box>\n ) : (\n <Grid.Root gap={5}>\n {filteredWidgets.map((widget) => (\n <Grid.Item col={6} s={12} key={widget.uid}>\n <WidgetRoot\n title={widget.title}\n icon={widget.icon}\n link={widget.link}\n uid={widget.uid}\n >\n <WidgetComponent component={widget.component} />\n </WidgetRoot>\n </Grid.Item>\n ))}\n </Grid.Root>\n )}\n </Flex>\n </Layouts.Content>\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePage = () => {\n const Page = useEnterprise(\n HomePageCE,\n // eslint-disable-next-line import/no-cycle\n async () => (await import('../../../../ee/admin/src/pages/HomePage')).HomePageEE\n );\n\n // block rendering until the EE component is fully loaded\n if (!Page) {\n return null;\n }\n\n return <Page />;\n};\n\nexport { HomePage, HomePageCE };\n"],"names":["WidgetRoot","title","icon","PuzzlePiece","children","link","uid","trackUsage","useTracking","formatMessage","useIntl","id","React","useId","Icon","handleClickOnLink","widgetUID","_jsxs","Flex","width","hasRadius","direction","alignItems","background","borderColor","shadow","tag","gap","padding","aria-labelledby","justifyContent","_jsx","fill","aria-hidden","Typography","textColor","variant","ReactRouterLink","style","textDecoration","textAlign","to","href","onClick","label","Box","height","overflow","WidgetComponent","component","loadedComponent","setLoadedComponent","useState","useEffect","loadComponent","resolvedComponent","Component","Widget","Loading","HomePageCE","user","useAuth","state","displayName","firstname","username","email","getAllWidgets","useStrapiApp","widgets","getAll","checkUserHasPermissions","filteredWidgets","setFilteredWidgets","loading","setLoading","checkWidgetsPermissions","allWidgets","authorizedWidgets","Promise","all","map","widget","permissions","length","matchingPermissions","filter","_","i","Main","Page","Title","defaultMessage","Layouts","Header","name","subtitle","FreeTrialWelcomeModal","FreeTrialEndedModal","Content","paddingBottom","GuidedTourHomepageOverview","position","top","left","right","bottom","Grid","Root","Item","col","s","HomePage","useEnterprise","HomePageEE"],"mappings":"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"}
1
+ {"version":3,"file":"HomePage.js","sources":["../../../../../../admin/src/pages/Home/HomePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Grid, Typography, Main } from '@strapi/design-system';\nimport { PuzzlePiece } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\n\nimport { GuidedTourHomepageOverview } from '../../components/GuidedTour/Overview';\nimport { Layouts } from '../../components/Layouts/Layout';\nimport { Page } from '../../components/PageHelpers';\nimport { Widget } from '../../components/WidgetHelpers';\nimport { useEnterprise } from '../../ee';\nimport { useAuth } from '../../features/Auth';\nimport { useStrapiApp } from '../../features/StrapiApp';\nimport { useTracking } from '../../features/Tracking';\n\nimport { FreeTrialEndedModal } from './components/FreeTrialEndedModal';\nimport { FreeTrialWelcomeModal } from './components/FreeTrialWelcomeModal';\n\nimport type { WidgetWithUID } from '../../core/apis/Widgets';\nimport type { WidgetType } from '@strapi/admin/strapi-admin';\n\n/* -------------------------------------------------------------------------------------------------\n * WidgetRoot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface WidgetRootProps\n extends Pick<WidgetType, 'title' | 'icon' | 'permissions' | 'link' | 'uid'> {\n children: React.ReactNode;\n}\n\nexport const WidgetRoot = ({ title, icon = PuzzlePiece, children, link, uid }: WidgetRootProps) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const id = React.useId();\n const Icon = icon;\n\n const handleClickOnLink = () => {\n trackUsage('didOpenHomeWidgetLink', { widgetUID: uid });\n };\n\n return (\n <Flex\n width=\"100%\"\n hasRadius\n direction=\"column\"\n alignItems=\"flex-start\"\n background=\"neutral0\"\n borderColor=\"neutral150\"\n shadow=\"tableShadow\"\n tag=\"section\"\n gap={4}\n padding={6}\n aria-labelledby={id}\n >\n <Flex direction=\"row\" gap={2} justifyContent=\"space-between\" width=\"100%\" tag=\"header\">\n <Flex gap={2}>\n <Icon fill=\"neutral500\" aria-hidden />\n <Typography textColor=\"neutral500\" variant=\"sigma\" tag=\"h2\" id={id}>\n {formatMessage(title)}\n </Typography>\n </Flex>\n {link && (\n <Typography\n tag={ReactRouterLink}\n variant=\"omega\"\n textColor=\"primary600\"\n style={{ textDecoration: 'none' }}\n textAlign=\"right\"\n to={link.href}\n onClick={handleClickOnLink}\n >\n {formatMessage(link.label)}\n </Typography>\n )}\n </Flex>\n <Box width=\"100%\" height=\"261px\" overflow=\"auto\" tag=\"main\">\n {children}\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UnstableHomePageCe\n * -----------------------------------------------------------------------------------------------*/\n\nconst WidgetComponent = ({ component }: { component: () => Promise<React.ComponentType> }) => {\n const [loadedComponent, setLoadedComponent] = React.useState<React.ComponentType | null>(null);\n\n React.useEffect(() => {\n const loadComponent = async () => {\n const resolvedComponent = await component();\n\n setLoadedComponent(() => resolvedComponent);\n };\n\n loadComponent();\n }, [component]);\n\n const Component = loadedComponent;\n\n if (!Component) {\n return <Widget.Loading />;\n }\n\n return <Component />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePageCE\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePageCE = () => {\n const { formatMessage } = useIntl();\n const user = useAuth('HomePageCE', (state) => state.user);\n const displayName = user?.firstname ?? user?.username ?? user?.email;\n const getAllWidgets = useStrapiApp('UnstableHomepageCe', (state) => state.widgets.getAll);\n const checkUserHasPermissions = useAuth('WidgetRoot', (state) => state.checkUserHasPermissions);\n const [filteredWidgets, setFilteredWidgets] = React.useState<WidgetWithUID[]>([]);\n const [loading, setLoading] = React.useState(true);\n\n React.useEffect(() => {\n const checkWidgetsPermissions = async () => {\n const allWidgets = getAllWidgets();\n const authorizedWidgets = await Promise.all(\n allWidgets.map(async (widget) => {\n if (!widget.permissions || widget.permissions.length === 0) return true;\n const matchingPermissions = await checkUserHasPermissions(widget.permissions);\n return matchingPermissions.length >= widget.permissions.length;\n })\n );\n setFilteredWidgets(allWidgets.filter((_, i) => authorizedWidgets[i]));\n setLoading(false);\n };\n\n checkWidgetsPermissions();\n }, [checkUserHasPermissions, getAllWidgets]);\n\n return (\n <Layouts.Root>\n <Main>\n <Page.Title>\n {formatMessage({ id: 'HomePage.head.title', defaultMessage: 'Homepage' })}\n </Page.Title>\n <Layouts.Header\n title={formatMessage(\n { id: 'HomePage.header.title', defaultMessage: 'Hello {name}' },\n { name: displayName }\n )}\n subtitle={formatMessage({\n id: 'HomePage.header.subtitle',\n defaultMessage: 'Welcome to your administration panel',\n })}\n />\n <FreeTrialWelcomeModal />\n <FreeTrialEndedModal />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={8}>\n <GuidedTourHomepageOverview />\n {loading ? (\n <Box position=\"absolute\" top={0} left={0} right={0} bottom={0}>\n <Page.Loading />\n </Box>\n ) : (\n <Grid.Root gap={5}>\n {filteredWidgets.map((widget) => (\n <Grid.Item col={6} s={12} key={widget.uid}>\n <WidgetRoot\n title={widget.title}\n icon={widget.icon}\n link={widget.link}\n uid={widget.uid}\n >\n <WidgetComponent component={widget.component} />\n </WidgetRoot>\n </Grid.Item>\n ))}\n </Grid.Root>\n )}\n </Flex>\n </Layouts.Content>\n </Main>\n </Layouts.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePage = () => {\n const Page = useEnterprise(\n HomePageCE,\n // eslint-disable-next-line import/no-cycle\n async () => (await import('../../../../ee/admin/src/pages/HomePage')).HomePageEE\n );\n\n // block rendering until the EE component is fully loaded\n if (!Page) {\n return null;\n }\n\n return <Page />;\n};\n\nexport { HomePage, HomePageCE };\n"],"names":["WidgetRoot","title","icon","PuzzlePiece","children","link","uid","trackUsage","useTracking","formatMessage","useIntl","id","React","useId","Icon","handleClickOnLink","widgetUID","_jsxs","Flex","width","hasRadius","direction","alignItems","background","borderColor","shadow","tag","gap","padding","aria-labelledby","justifyContent","_jsx","fill","aria-hidden","Typography","textColor","variant","ReactRouterLink","style","textDecoration","textAlign","to","href","onClick","label","Box","height","overflow","WidgetComponent","component","loadedComponent","setLoadedComponent","useState","useEffect","loadComponent","resolvedComponent","Component","Widget","Loading","HomePageCE","user","useAuth","state","displayName","firstname","username","email","getAllWidgets","useStrapiApp","widgets","getAll","checkUserHasPermissions","filteredWidgets","setFilteredWidgets","loading","setLoading","checkWidgetsPermissions","allWidgets","authorizedWidgets","Promise","all","map","widget","permissions","length","matchingPermissions","filter","_","i","Layouts","Root","Main","Page","Title","defaultMessage","Header","name","subtitle","FreeTrialWelcomeModal","FreeTrialEndedModal","Content","GuidedTourHomepageOverview","position","top","left","right","bottom","Grid","Item","col","s","HomePage","useEnterprise","HomePageEE"],"mappings":"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"}
@@ -132,63 +132,64 @@ const WidgetRoot = ({ title, icon = PuzzlePiece, children, link, uid })=>{
132
132
  checkUserHasPermissions,
133
133
  getAllWidgets
134
134
  ]);
135
- return /*#__PURE__*/ jsxs(Main, {
136
- children: [
137
- /*#__PURE__*/ jsx(Page.Title, {
138
- children: formatMessage({
139
- id: 'HomePage.head.title',
140
- defaultMessage: 'Homepage'
141
- })
142
- }),
143
- /*#__PURE__*/ jsx(Layouts.Header, {
144
- title: formatMessage({
145
- id: 'HomePage.header.title',
146
- defaultMessage: 'Hello {name}'
147
- }, {
148
- name: displayName
135
+ return /*#__PURE__*/ jsx(Layouts.Root, {
136
+ children: /*#__PURE__*/ jsxs(Main, {
137
+ children: [
138
+ /*#__PURE__*/ jsx(Page.Title, {
139
+ children: formatMessage({
140
+ id: 'HomePage.head.title',
141
+ defaultMessage: 'Homepage'
142
+ })
149
143
  }),
150
- subtitle: formatMessage({
151
- id: 'HomePage.header.subtitle',
152
- defaultMessage: 'Welcome to your administration panel'
153
- })
154
- }),
155
- /*#__PURE__*/ jsx(FreeTrialWelcomeModal, {}),
156
- /*#__PURE__*/ jsx(FreeTrialEndedModal, {}),
157
- /*#__PURE__*/ jsx(Layouts.Content, {
158
- children: /*#__PURE__*/ jsxs(Flex, {
159
- direction: "column",
160
- alignItems: "stretch",
161
- gap: 8,
162
- paddingBottom: 10,
163
- children: [
164
- /*#__PURE__*/ jsx(GuidedTourHomepageOverview, {}),
165
- loading ? /*#__PURE__*/ jsx(Box, {
166
- position: "absolute",
167
- top: 0,
168
- left: 0,
169
- right: 0,
170
- bottom: 0,
171
- children: /*#__PURE__*/ jsx(Page.Loading, {})
172
- }) : /*#__PURE__*/ jsx(Grid.Root, {
173
- gap: 5,
174
- children: filteredWidgets.map((widget)=>/*#__PURE__*/ jsx(Grid.Item, {
175
- col: 6,
176
- s: 12,
177
- children: /*#__PURE__*/ jsx(WidgetRoot, {
178
- title: widget.title,
179
- icon: widget.icon,
180
- link: widget.link,
181
- uid: widget.uid,
182
- children: /*#__PURE__*/ jsx(WidgetComponent, {
183
- component: widget.component
144
+ /*#__PURE__*/ jsx(Layouts.Header, {
145
+ title: formatMessage({
146
+ id: 'HomePage.header.title',
147
+ defaultMessage: 'Hello {name}'
148
+ }, {
149
+ name: displayName
150
+ }),
151
+ subtitle: formatMessage({
152
+ id: 'HomePage.header.subtitle',
153
+ defaultMessage: 'Welcome to your administration panel'
154
+ })
155
+ }),
156
+ /*#__PURE__*/ jsx(FreeTrialWelcomeModal, {}),
157
+ /*#__PURE__*/ jsx(FreeTrialEndedModal, {}),
158
+ /*#__PURE__*/ jsx(Layouts.Content, {
159
+ children: /*#__PURE__*/ jsxs(Flex, {
160
+ direction: "column",
161
+ alignItems: "stretch",
162
+ gap: 8,
163
+ children: [
164
+ /*#__PURE__*/ jsx(GuidedTourHomepageOverview, {}),
165
+ loading ? /*#__PURE__*/ jsx(Box, {
166
+ position: "absolute",
167
+ top: 0,
168
+ left: 0,
169
+ right: 0,
170
+ bottom: 0,
171
+ children: /*#__PURE__*/ jsx(Page.Loading, {})
172
+ }) : /*#__PURE__*/ jsx(Grid.Root, {
173
+ gap: 5,
174
+ children: filteredWidgets.map((widget)=>/*#__PURE__*/ jsx(Grid.Item, {
175
+ col: 6,
176
+ s: 12,
177
+ children: /*#__PURE__*/ jsx(WidgetRoot, {
178
+ title: widget.title,
179
+ icon: widget.icon,
180
+ link: widget.link,
181
+ uid: widget.uid,
182
+ children: /*#__PURE__*/ jsx(WidgetComponent, {
183
+ component: widget.component
184
+ })
184
185
  })
185
- })
186
- }, widget.uid))
187
- })
188
- ]
186
+ }, widget.uid))
187
+ })
188
+ ]
189
+ })
189
190
  })
190
- })
191
- ]
191
+ ]
192
+ })
192
193
  });
193
194
  };
194
195
  /* -------------------------------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"HomePage.mjs","sources":["../../../../../../admin/src/pages/Home/HomePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Grid, Main, Typography } from '@strapi/design-system';\nimport { PuzzlePiece } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\n\nimport { GuidedTourHomepageOverview } from '../../components/GuidedTour/Overview';\nimport { Layouts } from '../../components/Layouts/Layout';\nimport { Page } from '../../components/PageHelpers';\nimport { Widget } from '../../components/WidgetHelpers';\nimport { useEnterprise } from '../../ee';\nimport { useAuth } from '../../features/Auth';\nimport { useStrapiApp } from '../../features/StrapiApp';\nimport { useTracking } from '../../features/Tracking';\n\nimport { FreeTrialEndedModal } from './components/FreeTrialEndedModal';\nimport { FreeTrialWelcomeModal } from './components/FreeTrialWelcomeModal';\n\nimport type { WidgetWithUID } from '../../core/apis/Widgets';\nimport type { WidgetType } from '@strapi/admin/strapi-admin';\n\n/* -------------------------------------------------------------------------------------------------\n * WidgetRoot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface WidgetRootProps\n extends Pick<WidgetType, 'title' | 'icon' | 'permissions' | 'link' | 'uid'> {\n children: React.ReactNode;\n}\n\nexport const WidgetRoot = ({ title, icon = PuzzlePiece, children, link, uid }: WidgetRootProps) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const id = React.useId();\n const Icon = icon;\n\n const handleClickOnLink = () => {\n trackUsage('didOpenHomeWidgetLink', { widgetUID: uid });\n };\n\n return (\n <Flex\n width=\"100%\"\n hasRadius\n direction=\"column\"\n alignItems=\"flex-start\"\n background=\"neutral0\"\n borderColor=\"neutral150\"\n shadow=\"tableShadow\"\n tag=\"section\"\n gap={4}\n padding={6}\n aria-labelledby={id}\n >\n <Flex direction=\"row\" gap={2} justifyContent=\"space-between\" width=\"100%\" tag=\"header\">\n <Flex gap={2}>\n <Icon fill=\"neutral500\" aria-hidden />\n <Typography textColor=\"neutral500\" variant=\"sigma\" tag=\"h2\" id={id}>\n {formatMessage(title)}\n </Typography>\n </Flex>\n {link && (\n <Typography\n tag={ReactRouterLink}\n variant=\"omega\"\n textColor=\"primary600\"\n style={{ textDecoration: 'none' }}\n textAlign=\"right\"\n to={link.href}\n onClick={handleClickOnLink}\n >\n {formatMessage(link.label)}\n </Typography>\n )}\n </Flex>\n <Box width=\"100%\" height=\"261px\" overflow=\"auto\" tag=\"main\">\n {children}\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UnstableHomePageCe\n * -----------------------------------------------------------------------------------------------*/\n\nconst WidgetComponent = ({ component }: { component: () => Promise<React.ComponentType> }) => {\n const [loadedComponent, setLoadedComponent] = React.useState<React.ComponentType | null>(null);\n\n React.useEffect(() => {\n const loadComponent = async () => {\n const resolvedComponent = await component();\n\n setLoadedComponent(() => resolvedComponent);\n };\n\n loadComponent();\n }, [component]);\n\n const Component = loadedComponent;\n\n if (!Component) {\n return <Widget.Loading />;\n }\n\n return <Component />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePageCE\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePageCE = () => {\n const { formatMessage } = useIntl();\n const user = useAuth('HomePageCE', (state) => state.user);\n const displayName = user?.firstname ?? user?.username ?? user?.email;\n const getAllWidgets = useStrapiApp('UnstableHomepageCe', (state) => state.widgets.getAll);\n const checkUserHasPermissions = useAuth('WidgetRoot', (state) => state.checkUserHasPermissions);\n const [filteredWidgets, setFilteredWidgets] = React.useState<WidgetWithUID[]>([]);\n const [loading, setLoading] = React.useState(true);\n\n React.useEffect(() => {\n const checkWidgetsPermissions = async () => {\n const allWidgets = getAllWidgets();\n const authorizedWidgets = await Promise.all(\n allWidgets.map(async (widget) => {\n if (!widget.permissions || widget.permissions.length === 0) return true;\n const matchingPermissions = await checkUserHasPermissions(widget.permissions);\n return matchingPermissions.length >= widget.permissions.length;\n })\n );\n setFilteredWidgets(allWidgets.filter((_, i) => authorizedWidgets[i]));\n setLoading(false);\n };\n\n checkWidgetsPermissions();\n }, [checkUserHasPermissions, getAllWidgets]);\n\n return (\n <Main>\n <Page.Title>\n {formatMessage({ id: 'HomePage.head.title', defaultMessage: 'Homepage' })}\n </Page.Title>\n <Layouts.Header\n title={formatMessage(\n { id: 'HomePage.header.title', defaultMessage: 'Hello {name}' },\n { name: displayName }\n )}\n subtitle={formatMessage({\n id: 'HomePage.header.subtitle',\n defaultMessage: 'Welcome to your administration panel',\n })}\n />\n <FreeTrialWelcomeModal />\n <FreeTrialEndedModal />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={8} paddingBottom={10}>\n <GuidedTourHomepageOverview />\n {loading ? (\n <Box position=\"absolute\" top={0} left={0} right={0} bottom={0}>\n <Page.Loading />\n </Box>\n ) : (\n <Grid.Root gap={5}>\n {filteredWidgets.map((widget) => (\n <Grid.Item col={6} s={12} key={widget.uid}>\n <WidgetRoot\n title={widget.title}\n icon={widget.icon}\n link={widget.link}\n uid={widget.uid}\n >\n <WidgetComponent component={widget.component} />\n </WidgetRoot>\n </Grid.Item>\n ))}\n </Grid.Root>\n )}\n </Flex>\n </Layouts.Content>\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePage = () => {\n const Page = useEnterprise(\n HomePageCE,\n // eslint-disable-next-line import/no-cycle\n async () => (await import('../../../../ee/admin/src/pages/HomePage')).HomePageEE\n );\n\n // block rendering until the EE component is fully loaded\n if (!Page) {\n return null;\n }\n\n return <Page />;\n};\n\nexport { HomePage, HomePageCE };\n"],"names":["WidgetRoot","title","icon","PuzzlePiece","children","link","uid","trackUsage","useTracking","formatMessage","useIntl","id","React","useId","Icon","handleClickOnLink","widgetUID","_jsxs","Flex","width","hasRadius","direction","alignItems","background","borderColor","shadow","tag","gap","padding","aria-labelledby","justifyContent","_jsx","fill","aria-hidden","Typography","textColor","variant","ReactRouterLink","style","textDecoration","textAlign","to","href","onClick","label","Box","height","overflow","WidgetComponent","component","loadedComponent","setLoadedComponent","useState","useEffect","loadComponent","resolvedComponent","Component","Widget","Loading","HomePageCE","user","useAuth","state","displayName","firstname","username","email","getAllWidgets","useStrapiApp","widgets","getAll","checkUserHasPermissions","filteredWidgets","setFilteredWidgets","loading","setLoading","checkWidgetsPermissions","allWidgets","authorizedWidgets","Promise","all","map","widget","permissions","length","matchingPermissions","filter","_","i","Main","Page","Title","defaultMessage","Layouts","Header","name","subtitle","FreeTrialWelcomeModal","FreeTrialEndedModal","Content","paddingBottom","GuidedTourHomepageOverview","position","top","left","right","bottom","Grid","Root","Item","col","s","HomePage","useEnterprise","HomePageEE"],"mappings":"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"}
1
+ {"version":3,"file":"HomePage.mjs","sources":["../../../../../../admin/src/pages/Home/HomePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Grid, Typography, Main } from '@strapi/design-system';\nimport { PuzzlePiece } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\n\nimport { GuidedTourHomepageOverview } from '../../components/GuidedTour/Overview';\nimport { Layouts } from '../../components/Layouts/Layout';\nimport { Page } from '../../components/PageHelpers';\nimport { Widget } from '../../components/WidgetHelpers';\nimport { useEnterprise } from '../../ee';\nimport { useAuth } from '../../features/Auth';\nimport { useStrapiApp } from '../../features/StrapiApp';\nimport { useTracking } from '../../features/Tracking';\n\nimport { FreeTrialEndedModal } from './components/FreeTrialEndedModal';\nimport { FreeTrialWelcomeModal } from './components/FreeTrialWelcomeModal';\n\nimport type { WidgetWithUID } from '../../core/apis/Widgets';\nimport type { WidgetType } from '@strapi/admin/strapi-admin';\n\n/* -------------------------------------------------------------------------------------------------\n * WidgetRoot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface WidgetRootProps\n extends Pick<WidgetType, 'title' | 'icon' | 'permissions' | 'link' | 'uid'> {\n children: React.ReactNode;\n}\n\nexport const WidgetRoot = ({ title, icon = PuzzlePiece, children, link, uid }: WidgetRootProps) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const id = React.useId();\n const Icon = icon;\n\n const handleClickOnLink = () => {\n trackUsage('didOpenHomeWidgetLink', { widgetUID: uid });\n };\n\n return (\n <Flex\n width=\"100%\"\n hasRadius\n direction=\"column\"\n alignItems=\"flex-start\"\n background=\"neutral0\"\n borderColor=\"neutral150\"\n shadow=\"tableShadow\"\n tag=\"section\"\n gap={4}\n padding={6}\n aria-labelledby={id}\n >\n <Flex direction=\"row\" gap={2} justifyContent=\"space-between\" width=\"100%\" tag=\"header\">\n <Flex gap={2}>\n <Icon fill=\"neutral500\" aria-hidden />\n <Typography textColor=\"neutral500\" variant=\"sigma\" tag=\"h2\" id={id}>\n {formatMessage(title)}\n </Typography>\n </Flex>\n {link && (\n <Typography\n tag={ReactRouterLink}\n variant=\"omega\"\n textColor=\"primary600\"\n style={{ textDecoration: 'none' }}\n textAlign=\"right\"\n to={link.href}\n onClick={handleClickOnLink}\n >\n {formatMessage(link.label)}\n </Typography>\n )}\n </Flex>\n <Box width=\"100%\" height=\"261px\" overflow=\"auto\" tag=\"main\">\n {children}\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UnstableHomePageCe\n * -----------------------------------------------------------------------------------------------*/\n\nconst WidgetComponent = ({ component }: { component: () => Promise<React.ComponentType> }) => {\n const [loadedComponent, setLoadedComponent] = React.useState<React.ComponentType | null>(null);\n\n React.useEffect(() => {\n const loadComponent = async () => {\n const resolvedComponent = await component();\n\n setLoadedComponent(() => resolvedComponent);\n };\n\n loadComponent();\n }, [component]);\n\n const Component = loadedComponent;\n\n if (!Component) {\n return <Widget.Loading />;\n }\n\n return <Component />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePageCE\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePageCE = () => {\n const { formatMessage } = useIntl();\n const user = useAuth('HomePageCE', (state) => state.user);\n const displayName = user?.firstname ?? user?.username ?? user?.email;\n const getAllWidgets = useStrapiApp('UnstableHomepageCe', (state) => state.widgets.getAll);\n const checkUserHasPermissions = useAuth('WidgetRoot', (state) => state.checkUserHasPermissions);\n const [filteredWidgets, setFilteredWidgets] = React.useState<WidgetWithUID[]>([]);\n const [loading, setLoading] = React.useState(true);\n\n React.useEffect(() => {\n const checkWidgetsPermissions = async () => {\n const allWidgets = getAllWidgets();\n const authorizedWidgets = await Promise.all(\n allWidgets.map(async (widget) => {\n if (!widget.permissions || widget.permissions.length === 0) return true;\n const matchingPermissions = await checkUserHasPermissions(widget.permissions);\n return matchingPermissions.length >= widget.permissions.length;\n })\n );\n setFilteredWidgets(allWidgets.filter((_, i) => authorizedWidgets[i]));\n setLoading(false);\n };\n\n checkWidgetsPermissions();\n }, [checkUserHasPermissions, getAllWidgets]);\n\n return (\n <Layouts.Root>\n <Main>\n <Page.Title>\n {formatMessage({ id: 'HomePage.head.title', defaultMessage: 'Homepage' })}\n </Page.Title>\n <Layouts.Header\n title={formatMessage(\n { id: 'HomePage.header.title', defaultMessage: 'Hello {name}' },\n { name: displayName }\n )}\n subtitle={formatMessage({\n id: 'HomePage.header.subtitle',\n defaultMessage: 'Welcome to your administration panel',\n })}\n />\n <FreeTrialWelcomeModal />\n <FreeTrialEndedModal />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={8}>\n <GuidedTourHomepageOverview />\n {loading ? (\n <Box position=\"absolute\" top={0} left={0} right={0} bottom={0}>\n <Page.Loading />\n </Box>\n ) : (\n <Grid.Root gap={5}>\n {filteredWidgets.map((widget) => (\n <Grid.Item col={6} s={12} key={widget.uid}>\n <WidgetRoot\n title={widget.title}\n icon={widget.icon}\n link={widget.link}\n uid={widget.uid}\n >\n <WidgetComponent component={widget.component} />\n </WidgetRoot>\n </Grid.Item>\n ))}\n </Grid.Root>\n )}\n </Flex>\n </Layouts.Content>\n </Main>\n </Layouts.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePage = () => {\n const Page = useEnterprise(\n HomePageCE,\n // eslint-disable-next-line import/no-cycle\n async () => (await import('../../../../ee/admin/src/pages/HomePage')).HomePageEE\n );\n\n // block rendering until the EE component is fully loaded\n if (!Page) {\n return null;\n }\n\n return <Page />;\n};\n\nexport { HomePage, HomePageCE };\n"],"names":["WidgetRoot","title","icon","PuzzlePiece","children","link","uid","trackUsage","useTracking","formatMessage","useIntl","id","React","useId","Icon","handleClickOnLink","widgetUID","_jsxs","Flex","width","hasRadius","direction","alignItems","background","borderColor","shadow","tag","gap","padding","aria-labelledby","justifyContent","_jsx","fill","aria-hidden","Typography","textColor","variant","ReactRouterLink","style","textDecoration","textAlign","to","href","onClick","label","Box","height","overflow","WidgetComponent","component","loadedComponent","setLoadedComponent","useState","useEffect","loadComponent","resolvedComponent","Component","Widget","Loading","HomePageCE","user","useAuth","state","displayName","firstname","username","email","getAllWidgets","useStrapiApp","widgets","getAll","checkUserHasPermissions","filteredWidgets","setFilteredWidgets","loading","setLoading","checkWidgetsPermissions","allWidgets","authorizedWidgets","Promise","all","map","widget","permissions","length","matchingPermissions","filter","_","i","Layouts","Root","Main","Page","Title","defaultMessage","Header","name","subtitle","FreeTrialWelcomeModal","FreeTrialEndedModal","Content","GuidedTourHomepageOverview","position","top","left","right","bottom","Grid","Item","col","s","HomePage","useEnterprise","HomePageEE"],"mappings":"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"}
@@ -17,6 +17,7 @@ var Auth = require('../features/Auth.js');
17
17
  var Notifications = require('../features/Notifications.js');
18
18
  var Tracking = require('../features/Tracking.js');
19
19
  var useAPIErrorHandler = require('../hooks/useAPIErrorHandler.js');
20
+ var useMediaQuery = require('../hooks/useMediaQuery.js');
20
21
  var reducer = require('../reducer.js');
21
22
  var auth = require('../services/auth.js');
22
23
  var baseQuery = require('../utils/baseQuery.js');
@@ -79,6 +80,7 @@ const PROFILE_VALIDTION_SCHEMA = yup__namespace.object().shape({
79
80
  });
80
81
  };
81
82
  const ProfilePage = ()=>{
83
+ const isDesktop = useMediaQuery.useIsDesktop();
82
84
  const localeNames = hooks.useTypedSelector((state)=>state.admin_app.language.localeNames);
83
85
  const { formatMessage } = reactIntl.useIntl();
84
86
  const { trackUsage } = Tracking.useTracking();
@@ -184,62 +186,63 @@ const ProfilePage = ()=>{
184
186
  confirmPassword: '',
185
187
  password: ''
186
188
  };
187
- return /*#__PURE__*/ jsxRuntime.jsxs(PageHelpers.Page.Main, {
188
- "aria-busy": isSubmittingForm,
189
- children: [
190
- /*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Title, {
191
- children: formatMessage({
192
- id: 'Settings.profile.form.section.head.title',
193
- defaultMessage: 'User profile'
194
- })
195
- }),
196
- /*#__PURE__*/ jsxRuntime.jsx(Form.Form, {
197
- method: "PUT",
198
- onSubmit: handleSubmit,
199
- initialValues: initialData,
200
- validationSchema: PROFILE_VALIDTION_SCHEMA,
201
- children: ({ isSubmitting, modified })=>/*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
202
- children: [
203
- /*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Header, {
204
- title: users.getDisplayName(user),
205
- primaryAction: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
206
- startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Check, {}),
207
- loading: isSubmitting,
208
- type: "submit",
209
- disabled: !modified,
210
- children: formatMessage({
211
- id: 'global.save',
212
- defaultMessage: 'Save'
189
+ return /*#__PURE__*/ jsxRuntime.jsx(jsxRuntime.Fragment, {
190
+ children: /*#__PURE__*/ jsxRuntime.jsxs(PageHelpers.Page.Main, {
191
+ "aria-busy": isSubmittingForm,
192
+ children: [
193
+ /*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Title, {
194
+ children: formatMessage({
195
+ id: 'Settings.profile.form.section.head.title',
196
+ defaultMessage: 'User profile'
197
+ })
198
+ }),
199
+ /*#__PURE__*/ jsxRuntime.jsx(Form.Form, {
200
+ method: "PUT",
201
+ onSubmit: handleSubmit,
202
+ initialValues: initialData,
203
+ validationSchema: PROFILE_VALIDTION_SCHEMA,
204
+ children: ({ isSubmitting, modified })=>/*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
205
+ children: [
206
+ /*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Header, {
207
+ title: users.getDisplayName(user),
208
+ primaryAction: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
209
+ startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Check, {}),
210
+ loading: isSubmitting,
211
+ type: "submit",
212
+ disabled: !modified,
213
+ children: formatMessage({
214
+ id: 'global.save',
215
+ defaultMessage: 'Save'
216
+ })
213
217
  })
214
- })
215
- }),
216
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
217
- paddingBottom: 6,
218
- children: /*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Content, {
219
- children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
220
- direction: "column",
221
- alignItems: "stretch",
222
- gap: 6,
223
- children: [
224
- /*#__PURE__*/ jsxRuntime.jsx(UserInfoSection, {}),
225
- !hasLockedRole && /*#__PURE__*/ jsxRuntime.jsx(PasswordSection, {}),
226
- /*#__PURE__*/ jsxRuntime.jsx(PreferencesSection, {
227
- localeNames: localeNames
228
- })
229
- ]
218
+ }),
219
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
220
+ paddingBottom: 6,
221
+ children: /*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Content, {
222
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
223
+ direction: "column",
224
+ alignItems: "stretch",
225
+ gap: 6,
226
+ children: [
227
+ /*#__PURE__*/ jsxRuntime.jsx(UserInfoSection, {}),
228
+ !hasLockedRole && /*#__PURE__*/ jsxRuntime.jsx(PasswordSection, {}),
229
+ /*#__PURE__*/ jsxRuntime.jsx(PreferencesSection, {
230
+ localeNames: localeNames
231
+ })
232
+ ]
233
+ })
230
234
  })
231
235
  })
232
- })
233
- ]
236
+ ]
237
+ })
238
+ }),
239
+ isDesktop && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
240
+ children: /*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Content, {
241
+ children: /*#__PURE__*/ jsxRuntime.jsx(GuidedTourSection, {})
234
242
  })
235
- }),
236
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
237
- paddingBottom: 10,
238
- children: /*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Content, {
239
- children: /*#__PURE__*/ jsxRuntime.jsx(GuidedTourSection, {})
240
243
  })
241
- })
242
- ]
244
+ ]
245
+ })
243
246
  });
244
247
  };
245
248
  /* -------------------------------------------------------------------------------------------------