@strapi/admin 5.49.0 → 5.50.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (626) hide show
  1. package/dist/admin/admin/src/components/ConfirmDialog.js +2 -2
  2. package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
  3. package/dist/admin/admin/src/components/ContentBox.js +3 -3
  4. package/dist/admin/admin/src/components/ContentBox.js.map +1 -1
  5. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js +8 -8
  6. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js.map +1 -1
  7. package/dist/admin/admin/src/components/DescriptionComponentRenderer.mjs +8 -8
  8. package/dist/admin/admin/src/components/DescriptionComponentRenderer.mjs.map +1 -1
  9. package/dist/admin/admin/src/components/ErrorElement.js +100 -5
  10. package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
  11. package/dist/admin/admin/src/components/ErrorElement.mjs +99 -4
  12. package/dist/admin/admin/src/components/ErrorElement.mjs.map +1 -1
  13. package/dist/admin/admin/src/components/Form.js +41 -27
  14. package/dist/admin/admin/src/components/Form.js.map +1 -1
  15. package/dist/admin/admin/src/components/Form.mjs +41 -27
  16. package/dist/admin/admin/src/components/Form.mjs.map +1 -1
  17. package/dist/admin/admin/src/components/FormInputs/Boolean.js +3 -2
  18. package/dist/admin/admin/src/components/FormInputs/Boolean.js.map +1 -1
  19. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs +3 -2
  20. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs.map +1 -1
  21. package/dist/admin/admin/src/components/FormInputs/Date.js +1 -1
  22. package/dist/admin/admin/src/components/FormInputs/Date.js.map +1 -1
  23. package/dist/admin/admin/src/components/FormInputs/Date.mjs +1 -1
  24. package/dist/admin/admin/src/components/FormInputs/Date.mjs.map +1 -1
  25. package/dist/admin/admin/src/components/FormInputs/Email.js.map +1 -1
  26. package/dist/admin/admin/src/components/FormInputs/Email.mjs.map +1 -1
  27. package/dist/admin/admin/src/components/FormInputs/Enumeration.js +4 -1
  28. package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
  29. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs +4 -1
  30. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
  31. package/dist/admin/admin/src/components/FormInputs/Json.js +2 -1
  32. package/dist/admin/admin/src/components/FormInputs/Json.js.map +1 -1
  33. package/dist/admin/admin/src/components/FormInputs/Json.mjs +2 -1
  34. package/dist/admin/admin/src/components/FormInputs/Json.mjs.map +1 -1
  35. package/dist/admin/admin/src/components/FormInputs/Password.js.map +1 -1
  36. package/dist/admin/admin/src/components/FormInputs/Password.mjs.map +1 -1
  37. package/dist/admin/admin/src/components/FormInputs/Renderer.js +18 -26
  38. package/dist/admin/admin/src/components/FormInputs/Renderer.js.map +1 -1
  39. package/dist/admin/admin/src/components/FormInputs/Renderer.mjs +20 -28
  40. package/dist/admin/admin/src/components/FormInputs/Renderer.mjs.map +1 -1
  41. package/dist/admin/admin/src/components/FormInputs/String.js.map +1 -1
  42. package/dist/admin/admin/src/components/FormInputs/String.mjs.map +1 -1
  43. package/dist/admin/admin/src/components/FormInputs/Textarea.js.map +1 -1
  44. package/dist/admin/admin/src/components/FormInputs/Textarea.mjs.map +1 -1
  45. package/dist/admin/admin/src/components/GapDropZone.js +2 -2
  46. package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
  47. package/dist/admin/admin/src/components/GradientBadge.js +3 -3
  48. package/dist/admin/admin/src/components/GradientBadge.js.map +1 -1
  49. package/dist/admin/admin/src/components/GuidedTour/Overview.js +8 -8
  50. package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
  51. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js +4 -4
  52. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
  53. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.mjs.map +1 -1
  54. package/dist/admin/admin/src/components/GuidedTour/Tours.js +2 -2
  55. package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
  56. package/dist/admin/admin/src/components/Layouts/ActionLayout.js +2 -2
  57. package/dist/admin/admin/src/components/Layouts/ActionLayout.js.map +1 -1
  58. package/dist/admin/admin/src/components/Layouts/GridLayout.js +2 -2
  59. package/dist/admin/admin/src/components/Layouts/GridLayout.js.map +1 -1
  60. package/dist/admin/admin/src/components/Layouts/Layout.js +4 -4
  61. package/dist/admin/admin/src/components/Layouts/Layout.js.map +1 -1
  62. package/dist/admin/admin/src/components/LazyOutlet.js +57 -0
  63. package/dist/admin/admin/src/components/LazyOutlet.js.map +1 -0
  64. package/dist/admin/admin/src/components/LazyOutlet.mjs +35 -0
  65. package/dist/admin/admin/src/components/LazyOutlet.mjs.map +1 -0
  66. package/dist/admin/admin/src/components/LeftMenu.js +3 -3
  67. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  68. package/dist/admin/admin/src/components/MainNav/MainNav.js +2 -2
  69. package/dist/admin/admin/src/components/MainNav/MainNav.js.map +1 -1
  70. package/dist/admin/admin/src/components/MainNav/MainNavLinks.js +4 -4
  71. package/dist/admin/admin/src/components/MainNav/MainNavLinks.js.map +1 -1
  72. package/dist/admin/admin/src/components/MainNav/NavBrand.js +2 -2
  73. package/dist/admin/admin/src/components/MainNav/NavBrand.js.map +1 -1
  74. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js +3 -3
  75. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js.map +1 -1
  76. package/dist/admin/admin/src/components/MainNav/NavLink.js +8 -8
  77. package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
  78. package/dist/admin/admin/src/components/MainNav/NavUser.js +17 -7
  79. package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
  80. package/dist/admin/admin/src/components/MainNav/NavUser.mjs +10 -0
  81. package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
  82. package/dist/admin/admin/src/components/MainNav/TrialCountdown.js +3 -3
  83. package/dist/admin/admin/src/components/MainNav/TrialCountdown.js.map +1 -1
  84. package/dist/admin/admin/src/components/NpsSurvey.js +2 -2
  85. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  86. package/dist/admin/admin/src/components/RelativeTime.js +3 -2
  87. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  88. package/dist/admin/admin/src/components/RelativeTime.mjs +3 -2
  89. package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
  90. package/dist/admin/admin/src/components/ResizeIndicator.js +6 -6
  91. package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
  92. package/dist/admin/admin/src/components/SubNav.js +11 -9
  93. package/dist/admin/admin/src/components/SubNav.js.map +1 -1
  94. package/dist/admin/admin/src/components/SubNav.mjs +4 -2
  95. package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
  96. package/dist/admin/admin/src/components/Table.js +9 -5
  97. package/dist/admin/admin/src/components/Table.js.map +1 -1
  98. package/dist/admin/admin/src/components/Table.mjs +6 -2
  99. package/dist/admin/admin/src/components/Table.mjs.map +1 -1
  100. package/dist/admin/admin/src/components/Theme.js +2 -2
  101. package/dist/admin/admin/src/components/Theme.js.map +1 -1
  102. package/dist/admin/admin/src/components/UnauthenticatedLogo.js +2 -2
  103. package/dist/admin/admin/src/components/UnauthenticatedLogo.js.map +1 -1
  104. package/dist/admin/admin/src/components/UpsellBanner.js +3 -3
  105. package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
  106. package/dist/admin/admin/src/components/WidgetRoot.js +4 -7
  107. package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
  108. package/dist/admin/admin/src/components/WidgetRoot.mjs +1 -1
  109. package/dist/admin/admin/src/components/WidgetRoot.mjs.map +1 -1
  110. package/dist/admin/admin/src/components/Widgets.js +5 -5
  111. package/dist/admin/admin/src/components/Widgets.js.map +1 -1
  112. package/dist/admin/admin/src/core/apis/Plugin.js.map +1 -1
  113. package/dist/admin/admin/src/core/apis/Plugin.mjs.map +1 -1
  114. package/dist/admin/admin/src/core/apis/Widgets.js +1 -1
  115. package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
  116. package/dist/admin/admin/src/core/apis/Widgets.mjs +1 -1
  117. package/dist/admin/admin/src/core/apis/Widgets.mjs.map +1 -1
  118. package/dist/admin/admin/src/core/apis/router.js +19 -17
  119. package/dist/admin/admin/src/core/apis/router.js.map +1 -1
  120. package/dist/admin/admin/src/core/apis/router.mjs +19 -17
  121. package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
  122. package/dist/admin/admin/src/core/store/configure.js.map +1 -1
  123. package/dist/admin/admin/src/core/store/configure.mjs.map +1 -1
  124. package/dist/admin/admin/src/core/utils/createHook.js.map +1 -1
  125. package/dist/admin/admin/src/core/utils/createHook.mjs.map +1 -1
  126. package/dist/admin/admin/src/features/Tracking.js +3 -1
  127. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  128. package/dist/admin/admin/src/features/Tracking.mjs +3 -1
  129. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  130. package/dist/admin/admin/src/features/Widgets.js.map +1 -1
  131. package/dist/admin/admin/src/features/Widgets.mjs.map +1 -1
  132. package/dist/admin/admin/src/hooks/useMediaQuery.js +4 -4
  133. package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -1
  134. package/dist/admin/admin/src/hooks/useMenu.js +5 -3
  135. package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
  136. package/dist/admin/admin/src/hooks/useMenu.mjs +5 -3
  137. package/dist/admin/admin/src/hooks/useMenu.mjs.map +1 -1
  138. package/dist/admin/admin/src/hooks/useQueryParams.js +0 -1
  139. package/dist/admin/admin/src/hooks/useQueryParams.js.map +1 -1
  140. package/dist/admin/admin/src/hooks/useQueryParams.mjs +0 -1
  141. package/dist/admin/admin/src/hooks/useQueryParams.mjs.map +1 -1
  142. package/dist/admin/admin/src/hooks/useThrottledCallback.js.map +1 -1
  143. package/dist/admin/admin/src/hooks/useThrottledCallback.mjs.map +1 -1
  144. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +5 -3
  145. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  146. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +5 -3
  147. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  148. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js +3 -3
  149. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js.map +1 -1
  150. package/dist/admin/admin/src/pages/Auth/AuthPage.js +3 -2
  151. package/dist/admin/admin/src/pages/Auth/AuthPage.js.map +1 -1
  152. package/dist/admin/admin/src/pages/Auth/AuthPage.mjs +3 -2
  153. package/dist/admin/admin/src/pages/Auth/AuthPage.mjs.map +1 -1
  154. package/dist/admin/admin/src/pages/Auth/components/Register.js +17 -9
  155. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  156. package/dist/admin/admin/src/pages/Auth/components/Register.mjs +15 -7
  157. package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
  158. package/dist/admin/admin/src/pages/Home/HomePage.js +2 -2
  159. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  160. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js +3 -6
  161. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -1
  162. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs +1 -1
  163. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs.map +1 -1
  164. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +4 -8
  165. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
  166. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs +1 -1
  167. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -1
  168. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +4 -8
  169. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
  170. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs +1 -1
  171. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs.map +1 -1
  172. package/dist/admin/admin/src/pages/SessionsPage.js +318 -0
  173. package/dist/admin/admin/src/pages/SessionsPage.js.map +1 -0
  174. package/dist/admin/admin/src/pages/SessionsPage.mjs +296 -0
  175. package/dist/admin/admin/src/pages/SessionsPage.mjs.map +1 -0
  176. package/dist/admin/admin/src/pages/Settings/Layout.js +4 -1
  177. package/dist/admin/admin/src/pages/Settings/Layout.js.map +1 -1
  178. package/dist/admin/admin/src/pages/Settings/Layout.mjs +5 -2
  179. package/dist/admin/admin/src/pages/Settings/Layout.mjs.map +1 -1
  180. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +2 -2
  181. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  182. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  183. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +2 -2
  184. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  185. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +2 -2
  186. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  187. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js +2 -2
  188. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js.map +1 -1
  189. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +2 -2
  190. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
  191. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +4 -4
  192. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  193. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js.map +1 -1
  194. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.mjs.map +1 -1
  195. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +1 -2
  196. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  197. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +1 -2
  198. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  199. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +2 -2
  200. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
  201. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +9 -2
  202. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
  203. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs +7 -0
  204. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs.map +1 -1
  205. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js +7 -1
  206. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
  207. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs +7 -1
  208. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs.map +1 -1
  209. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.js +2 -2
  210. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.js.map +1 -1
  211. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +44 -10
  212. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  213. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs +34 -0
  214. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
  215. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js +3 -3
  216. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js.map +1 -1
  217. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +5 -5
  218. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  219. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.js +2 -2
  220. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.js.map +1 -1
  221. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +38 -2
  222. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
  223. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs +38 -2
  224. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
  225. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +3 -3
  226. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  227. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.js.map +1 -1
  228. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.mjs.map +1 -1
  229. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js +18 -1
  230. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js.map +1 -1
  231. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs +18 -1
  232. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs.map +1 -1
  233. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.js +59 -0
  234. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.js.map +1 -0
  235. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.mjs +52 -0
  236. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.mjs.map +1 -0
  237. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
  238. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
  239. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js +3 -3
  240. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js.map +1 -1
  241. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js +2 -2
  242. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js.map +1 -1
  243. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +2 -2
  244. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
  245. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs.map +1 -1
  246. package/dist/admin/admin/src/router.js +9 -0
  247. package/dist/admin/admin/src/router.js.map +1 -1
  248. package/dist/admin/admin/src/router.mjs +9 -0
  249. package/dist/admin/admin/src/router.mjs.map +1 -1
  250. package/dist/admin/admin/src/services/auth.js +43 -2
  251. package/dist/admin/admin/src/services/auth.js.map +1 -1
  252. package/dist/admin/admin/src/services/auth.mjs +41 -3
  253. package/dist/admin/admin/src/services/auth.mjs.map +1 -1
  254. package/dist/admin/admin/src/translations/en.json.js +22 -0
  255. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  256. package/dist/admin/admin/src/translations/en.json.mjs +22 -0
  257. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  258. package/dist/admin/admin/src/translations/ja.json.js +726 -237
  259. package/dist/admin/admin/src/translations/ja.json.js.map +1 -1
  260. package/dist/admin/admin/src/translations/ja.json.mjs +723 -238
  261. package/dist/admin/admin/src/translations/ja.json.mjs.map +1 -1
  262. package/dist/admin/admin/src/translations/languageNativeNames.js +1 -0
  263. package/dist/admin/admin/src/translations/languageNativeNames.js.map +1 -1
  264. package/dist/admin/admin/src/translations/languageNativeNames.mjs +1 -0
  265. package/dist/admin/admin/src/translations/languageNativeNames.mjs.map +1 -1
  266. package/dist/admin/admin/src/translations/pl.json.js +22 -0
  267. package/dist/admin/admin/src/translations/pl.json.js.map +1 -1
  268. package/dist/admin/admin/src/translations/pl.json.mjs +22 -0
  269. package/dist/admin/admin/src/translations/pl.json.mjs.map +1 -1
  270. package/dist/admin/admin/src/utils/arrays.js.map +1 -1
  271. package/dist/admin/admin/src/utils/arrays.mjs.map +1 -1
  272. package/dist/admin/admin/src/utils/baseQuery.js +1 -1
  273. package/dist/admin/admin/src/utils/baseQuery.js.map +1 -1
  274. package/dist/admin/admin/src/utils/baseQuery.mjs +1 -1
  275. package/dist/admin/admin/src/utils/baseQuery.mjs.map +1 -1
  276. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  277. package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
  278. package/dist/admin/admin/src/utils/objects.js +43 -11
  279. package/dist/admin/admin/src/utils/objects.js.map +1 -1
  280. package/dist/admin/admin/src/utils/objects.mjs +43 -11
  281. package/dist/admin/admin/src/utils/objects.mjs.map +1 -1
  282. package/dist/admin/admin/src/utils/once.js.map +1 -1
  283. package/dist/admin/admin/src/utils/once.mjs.map +1 -1
  284. package/dist/admin/admin/src/utils/retryDynamicImport.js +85 -0
  285. package/dist/admin/admin/src/utils/retryDynamicImport.js.map +1 -0
  286. package/dist/admin/admin/src/utils/retryDynamicImport.mjs +80 -0
  287. package/dist/admin/admin/src/utils/retryDynamicImport.mjs.map +1 -0
  288. package/dist/admin/admin/src/utils/rulesEngine.js +2 -1
  289. package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
  290. package/dist/admin/admin/src/utils/rulesEngine.mjs +2 -1
  291. package/dist/admin/admin/src/utils/rulesEngine.mjs.map +1 -1
  292. package/dist/admin/admin/src/utils/shims.js.map +1 -1
  293. package/dist/admin/admin/src/utils/shims.mjs.map +1 -1
  294. package/dist/admin/admin/src/utils/widgetVisibility.js +16 -1
  295. package/dist/admin/admin/src/utils/widgetVisibility.js.map +1 -1
  296. package/dist/admin/admin/src/utils/widgetVisibility.mjs +14 -2
  297. package/dist/admin/admin/src/utils/widgetVisibility.mjs.map +1 -1
  298. package/dist/admin/admin/tests/server.js +25 -0
  299. package/dist/admin/admin/tests/server.js.map +1 -1
  300. package/dist/admin/admin/tests/server.mjs +25 -0
  301. package/dist/admin/admin/tests/server.mjs.map +1 -1
  302. package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js +2 -2
  303. package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js.map +1 -1
  304. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js +2 -2
  305. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
  306. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.mjs +2 -2
  307. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.mjs.map +1 -1
  308. package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js +2 -2
  309. package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js.map +1 -1
  310. package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js +2 -2
  311. package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js.map +1 -1
  312. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js +3 -3
  313. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js.map +1 -1
  314. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js +3 -3
  315. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
  316. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js.map +1 -1
  317. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs.map +1 -1
  318. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.js.map +1 -1
  319. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.mjs.map +1 -1
  320. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js +2 -2
  321. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
  322. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
  323. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
  324. package/dist/admin/index.js +2 -0
  325. package/dist/admin/index.js.map +1 -1
  326. package/dist/admin/index.mjs +1 -0
  327. package/dist/admin/index.mjs.map +1 -1
  328. package/dist/admin/src/StrapiApp.d.ts +7 -7
  329. package/dist/admin/src/components/DescriptionComponentRenderer.d.ts +2 -1
  330. package/dist/admin/src/components/Form.d.ts +14 -12
  331. package/dist/admin/src/components/FormInputs/Boolean.d.ts +0 -1
  332. package/dist/admin/src/components/FormInputs/Checkbox.d.ts +0 -1
  333. package/dist/admin/src/components/FormInputs/DateTime.d.ts +0 -1
  334. package/dist/admin/src/components/FormInputs/Email.d.ts +0 -1
  335. package/dist/admin/src/components/FormInputs/Enumeration.d.ts +0 -1
  336. package/dist/admin/src/components/FormInputs/Number.d.ts +0 -1
  337. package/dist/admin/src/components/FormInputs/Password.d.ts +0 -1
  338. package/dist/admin/src/components/FormInputs/Renderer.d.ts +1 -2
  339. package/dist/admin/src/components/FormInputs/String.d.ts +0 -1
  340. package/dist/admin/src/components/FormInputs/Textarea.d.ts +0 -1
  341. package/dist/admin/src/components/FormInputs/Time.d.ts +0 -1
  342. package/dist/admin/src/components/GuidedTour/GuidedTourProvider.d.ts +0 -1
  343. package/dist/admin/src/components/GuidedTour/Steps/Step.d.ts +1 -1
  344. package/dist/admin/src/components/LazyOutlet.d.ts +20 -0
  345. package/dist/admin/src/components/MainNav/MainNav.d.ts +1 -1
  346. package/dist/admin/src/components/MainNav/NavUser.d.ts +0 -1
  347. package/dist/admin/src/components/SubNav.d.ts +6 -7
  348. package/dist/admin/src/components/Table.d.ts +3 -2
  349. package/dist/admin/src/core/apis/Plugin.d.ts +2 -2
  350. package/dist/admin/src/core/apis/Widgets.d.ts +0 -1
  351. package/dist/admin/src/core/apis/router.d.ts +1 -1
  352. package/dist/admin/src/core/store/configure.d.ts +2 -2
  353. package/dist/admin/src/core/utils/createHook.d.ts +7 -7
  354. package/dist/admin/src/features/AppInfo.d.ts +1 -2
  355. package/dist/admin/src/features/StrapiApp.d.ts +1 -2
  356. package/dist/admin/src/hooks/useAPIErrorHandler.d.ts +1 -1
  357. package/dist/admin/src/hooks/useAdminRoles.d.ts +3 -3
  358. package/dist/admin/src/hooks/useFetchClient.d.ts +1 -1
  359. package/dist/admin/src/hooks/useMenu.d.ts +1 -1
  360. package/dist/admin/src/hooks/usePersistentState.d.ts +0 -1
  361. package/dist/admin/src/hooks/useQueryParams.d.ts +3 -2
  362. package/dist/admin/src/hooks/useThrottledCallback.d.ts +1 -2
  363. package/dist/admin/src/index.d.ts +1 -0
  364. package/dist/admin/src/layouts/UnauthenticatedLayout.d.ts +2 -2
  365. package/dist/admin/src/pages/SessionsPage.d.ts +2 -0
  366. package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.d.ts +1 -1
  367. package/dist/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.d.ts +2 -3
  368. package/dist/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.d.ts +2 -2
  369. package/dist/admin/src/pages/Settings/pages/Roles/components/HiddenAction.d.ts +0 -1
  370. package/dist/admin/src/pages/Settings/pages/Roles/components/Permissions.d.ts +2 -0
  371. package/dist/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.d.ts +1 -1
  372. package/dist/admin/src/pages/Settings/pages/Roles/utils/forms.d.ts +1 -1
  373. package/dist/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.d.ts +5 -0
  374. package/dist/admin/src/pages/Settings/pages/Roles/utils/permissions.d.ts +3 -1
  375. package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +8 -8
  376. package/dist/admin/src/reducer.d.ts +1 -1
  377. package/dist/admin/src/services/admin.d.ts +8 -8
  378. package/dist/admin/src/services/api.d.ts +1 -1
  379. package/dist/admin/src/services/apiTokens.d.ts +3 -3
  380. package/dist/admin/src/services/auth.d.ts +29 -27
  381. package/dist/admin/src/services/contentApi.d.ts +2 -2
  382. package/dist/admin/src/services/contentManager.d.ts +1 -1
  383. package/dist/admin/src/services/homepage.d.ts +3 -3
  384. package/dist/admin/src/services/transferTokens.d.ts +1 -1
  385. package/dist/admin/src/services/users.d.ts +15 -15
  386. package/dist/admin/src/services/webhooks.d.ts +4 -4
  387. package/dist/admin/src/translations/languageNativeNames.d.ts +1 -0
  388. package/dist/admin/src/utils/arrays.d.ts +1 -1
  389. package/dist/admin/src/utils/baseQuery.d.ts +1 -1
  390. package/dist/admin/src/utils/getFetchClient.d.ts +7 -7
  391. package/dist/admin/src/utils/locales.d.ts +0 -1
  392. package/dist/admin/src/utils/objects.d.ts +6 -4
  393. package/dist/admin/src/utils/once.d.ts +1 -1
  394. package/dist/admin/src/utils/retryDynamicImport.d.ts +19 -0
  395. package/dist/admin/src/utils/shims.d.ts +1 -1
  396. package/dist/admin/src/utils/widgetVisibility.d.ts +11 -0
  397. package/dist/admin/tests/store.d.ts +4 -4
  398. package/dist/admin/tests/utils.d.ts +5 -5
  399. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.d.ts +1 -1
  400. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/tableHeaders.d.ts +2 -1
  401. package/dist/ee/admin/src/services/ai.d.ts +5 -5
  402. package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
  403. package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts +1 -1
  404. package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts.map +1 -1
  405. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts +3 -3
  406. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -1
  407. package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts +2 -2
  408. package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts.map +1 -1
  409. package/dist/ee/server/src/bootstrap.d.ts.map +1 -1
  410. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts +30 -31
  411. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts.map +1 -1
  412. package/dist/ee/server/src/controllers/index.d.ts +1 -2
  413. package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
  414. package/dist/ee/server/src/controllers/user.d.ts +1 -1
  415. package/dist/ee/server/src/destroy.d.ts.map +1 -1
  416. package/dist/ee/server/src/index.d.ts +2 -3
  417. package/dist/ee/server/src/index.d.ts.map +1 -1
  418. package/dist/ee/server/src/register.d.ts.map +1 -1
  419. package/dist/ee/server/src/routes/utils.d.ts.map +1 -1
  420. package/dist/ee/server/src/services/auth.d.ts.map +1 -1
  421. package/dist/ee/server/src/services/index.d.ts +1 -1
  422. package/dist/ee/server/src/services/metrics.d.ts.map +1 -1
  423. package/dist/ee/server/src/services/passport/sso.d.ts.map +1 -1
  424. package/dist/ee/server/src/services/persist-tables.d.ts +1 -1
  425. package/dist/ee/server/src/services/persist-tables.d.ts.map +1 -1
  426. package/dist/ee/server/src/services/role.d.ts.map +1 -1
  427. package/dist/ee/server/src/services/user.d.ts.map +1 -1
  428. package/dist/ee/server/src/utils/index.d.ts.map +1 -1
  429. package/dist/ee/server/src/utils/sso-lock.d.ts.map +1 -1
  430. package/dist/ee/server/src/validation/authentication.d.ts +2 -2
  431. package/dist/ee/server/src/validation/role.d.ts +6 -6
  432. package/dist/ee/server/src/validation/role.d.ts.map +1 -1
  433. package/dist/ee/server/src/validation/user.d.ts.map +1 -1
  434. package/dist/server/server/src/content-types/session.js +6 -0
  435. package/dist/server/server/src/content-types/session.js.map +1 -1
  436. package/dist/server/server/src/content-types/session.mjs +6 -0
  437. package/dist/server/server/src/content-types/session.mjs.map +1 -1
  438. package/dist/server/server/src/controllers/admin.js.map +1 -1
  439. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  440. package/dist/server/server/src/controllers/authenticated-session.js +61 -0
  441. package/dist/server/server/src/controllers/authenticated-session.js.map +1 -0
  442. package/dist/server/server/src/controllers/authenticated-session.mjs +59 -0
  443. package/dist/server/server/src/controllers/authenticated-session.mjs.map +1 -0
  444. package/dist/server/server/src/controllers/authentication.js +11 -4
  445. package/dist/server/server/src/controllers/authentication.js.map +1 -1
  446. package/dist/server/server/src/controllers/authentication.mjs +12 -5
  447. package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
  448. package/dist/server/server/src/controllers/index.js +2 -0
  449. package/dist/server/server/src/controllers/index.js.map +1 -1
  450. package/dist/server/server/src/controllers/index.mjs +2 -0
  451. package/dist/server/server/src/controllers/index.mjs.map +1 -1
  452. package/dist/server/server/src/controllers/role.js +2 -4
  453. package/dist/server/server/src/controllers/role.js.map +1 -1
  454. package/dist/server/server/src/controllers/role.mjs +2 -4
  455. package/dist/server/server/src/controllers/role.mjs.map +1 -1
  456. package/dist/server/server/src/routes/serve-admin-panel.js +1 -1
  457. package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
  458. package/dist/server/server/src/routes/serve-admin-panel.mjs +1 -1
  459. package/dist/server/server/src/routes/serve-admin-panel.mjs.map +1 -1
  460. package/dist/server/server/src/routes/users.js +12 -26
  461. package/dist/server/server/src/routes/users.js.map +1 -1
  462. package/dist/server/server/src/routes/users.mjs +12 -26
  463. package/dist/server/server/src/routes/users.mjs.map +1 -1
  464. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js +0 -2
  465. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
  466. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs +0 -2
  467. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
  468. package/dist/server/server/src/services/permission/sections-builder/handlers.js +9 -2
  469. package/dist/server/server/src/services/permission/sections-builder/handlers.js.map +1 -1
  470. package/dist/server/server/src/services/permission/sections-builder/handlers.mjs +9 -2
  471. package/dist/server/server/src/services/permission/sections-builder/handlers.mjs.map +1 -1
  472. package/dist/server/server/src/services/role.js +7 -2
  473. package/dist/server/server/src/services/role.js.map +1 -1
  474. package/dist/server/server/src/services/role.mjs +7 -2
  475. package/dist/server/server/src/services/role.mjs.map +1 -1
  476. package/dist/server/server/src/strategies/admin.js +4 -0
  477. package/dist/server/server/src/strategies/admin.js.map +1 -1
  478. package/dist/server/server/src/strategies/admin.mjs +4 -0
  479. package/dist/server/server/src/strategies/admin.mjs.map +1 -1
  480. package/dist/server/server/src/validation/common-validators.js +19 -11
  481. package/dist/server/server/src/validation/common-validators.js.map +1 -1
  482. package/dist/server/server/src/validation/common-validators.mjs +19 -11
  483. package/dist/server/server/src/validation/common-validators.mjs.map +1 -1
  484. package/dist/server/server/src/validation/permission.js +1 -1
  485. package/dist/server/server/src/validation/permission.js.map +1 -1
  486. package/dist/server/server/src/validation/permission.mjs +1 -1
  487. package/dist/server/server/src/validation/permission.mjs.map +1 -1
  488. package/dist/server/server/src/validation/role.js +2 -2
  489. package/dist/server/server/src/validation/role.js.map +1 -1
  490. package/dist/server/server/src/validation/role.mjs +2 -2
  491. package/dist/server/server/src/validation/role.mjs.map +1 -1
  492. package/dist/server/src/ai/controllers/ai.d.ts +3 -3
  493. package/dist/server/src/ai/services/ai.d.ts.map +1 -1
  494. package/dist/server/src/bootstrap.d.ts.map +1 -1
  495. package/dist/server/src/config/admin-conditions.d.ts +2 -2
  496. package/dist/server/src/config/admin-conditions.d.ts.map +1 -1
  497. package/dist/server/src/content-types/index.d.ts +6 -0
  498. package/dist/server/src/content-types/index.d.ts.map +1 -1
  499. package/dist/server/src/content-types/session.d.ts +6 -0
  500. package/dist/server/src/content-types/session.d.ts.map +1 -1
  501. package/dist/server/src/controllers/admin-token.d.ts +5 -5
  502. package/dist/server/src/controllers/api-token.d.ts +1 -1
  503. package/dist/server/src/controllers/authenticated-session.d.ts +8 -0
  504. package/dist/server/src/controllers/authenticated-session.d.ts.map +1 -0
  505. package/dist/server/src/controllers/authenticated-user.d.ts +1 -1
  506. package/dist/server/src/controllers/authentication.d.ts +4 -4
  507. package/dist/server/src/controllers/authentication.d.ts.map +1 -1
  508. package/dist/server/src/controllers/formatters/conditions.d.ts +0 -1
  509. package/dist/server/src/controllers/formatters/conditions.d.ts.map +1 -1
  510. package/dist/server/src/controllers/formatters/format-actions-by-sections.d.ts.map +1 -1
  511. package/dist/server/src/controllers/homepage.d.ts +2 -2
  512. package/dist/server/src/controllers/homepage.d.ts.map +1 -1
  513. package/dist/server/src/controllers/index.d.ts +33 -43
  514. package/dist/server/src/controllers/index.d.ts.map +1 -1
  515. package/dist/server/src/controllers/role.d.ts +4 -4
  516. package/dist/server/src/controllers/transfer/runner.d.ts +4 -4
  517. package/dist/server/src/controllers/transfer/runner.d.ts.map +1 -1
  518. package/dist/server/src/controllers/transfer/token.d.ts +1 -1
  519. package/dist/server/src/controllers/user.d.ts +2 -2
  520. package/dist/server/src/controllers/webhooks.d.ts +4 -4
  521. package/dist/server/src/domain/action/index.d.ts +4 -65
  522. package/dist/server/src/domain/action/index.d.ts.map +1 -1
  523. package/dist/server/src/domain/action/provider.d.ts +30 -3
  524. package/dist/server/src/domain/action/provider.d.ts.map +1 -1
  525. package/dist/server/src/domain/condition/index.d.ts.map +1 -1
  526. package/dist/server/src/domain/condition/provider.d.ts +19 -2
  527. package/dist/server/src/domain/condition/provider.d.ts.map +1 -1
  528. package/dist/server/src/domain/permission/index.d.ts +0 -1
  529. package/dist/server/src/domain/permission/index.d.ts.map +1 -1
  530. package/dist/server/src/domain/user.d.ts.map +1 -1
  531. package/dist/server/src/index.d.ts +51 -63
  532. package/dist/server/src/index.d.ts.map +1 -1
  533. package/dist/server/src/middlewares/data-transfer.d.ts.map +1 -1
  534. package/dist/server/src/middlewares/index.d.ts +0 -1
  535. package/dist/server/src/middlewares/index.d.ts.map +1 -1
  536. package/dist/server/src/middlewares/rateLimit.d.ts.map +1 -1
  537. package/dist/server/src/policies/hasPermissions.d.ts.map +1 -1
  538. package/dist/server/src/policies/index.d.ts.map +1 -1
  539. package/dist/server/src/policies/isAuthenticatedAdmin.d.ts.map +1 -1
  540. package/dist/server/src/policies/isTelemetryEnabled.d.ts.map +1 -1
  541. package/dist/server/src/register.d.ts.map +1 -1
  542. package/dist/server/src/routes/index.d.ts +0 -1
  543. package/dist/server/src/routes/index.d.ts.map +1 -1
  544. package/dist/server/src/routes/serve-admin-panel.d.ts.map +1 -1
  545. package/dist/server/src/routes/transfer.d.ts +0 -1
  546. package/dist/server/src/routes/transfer.d.ts.map +1 -1
  547. package/dist/server/src/routes/users.d.ts.map +1 -1
  548. package/dist/server/src/services/action.d.ts.map +1 -1
  549. package/dist/server/src/services/api-token.d.ts +5 -6
  550. package/dist/server/src/services/api-token.d.ts.map +1 -1
  551. package/dist/server/src/services/auth.d.ts.map +1 -1
  552. package/dist/server/src/services/condition.d.ts.map +1 -1
  553. package/dist/server/src/services/content-type.d.ts.map +1 -1
  554. package/dist/server/src/services/encryption.d.ts.map +1 -1
  555. package/dist/server/src/services/homepage.d.ts.map +1 -1
  556. package/dist/server/src/services/index.d.ts +12 -21
  557. package/dist/server/src/services/index.d.ts.map +1 -1
  558. package/dist/server/src/services/metrics.d.ts.map +1 -1
  559. package/dist/server/src/services/passport/local-strategy.d.ts.map +1 -1
  560. package/dist/server/src/services/passport.d.ts +0 -1
  561. package/dist/server/src/services/passport.d.ts.map +1 -1
  562. package/dist/server/src/services/permission/engine.d.ts +1 -2
  563. package/dist/server/src/services/permission/engine.d.ts.map +1 -1
  564. package/dist/server/src/services/permission/permissions-manager/index.d.ts +5 -5
  565. package/dist/server/src/services/permission/permissions-manager/index.d.ts.map +1 -1
  566. package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts.map +1 -1
  567. package/dist/server/src/services/permission/permissions-manager/query-builders.d.ts.map +1 -1
  568. package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts +3 -3
  569. package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts.map +1 -1
  570. package/dist/server/src/services/permission/permissions-manager/validate.d.ts.map +1 -1
  571. package/dist/server/src/services/permission/queries.d.ts.map +1 -1
  572. package/dist/server/src/services/permission/sections-builder/builder.d.ts +4 -4
  573. package/dist/server/src/services/permission/sections-builder/builder.d.ts.map +1 -1
  574. package/dist/server/src/services/permission/sections-builder/handlers.d.ts.map +1 -1
  575. package/dist/server/src/services/permission/sections-builder/index.d.ts +4 -4
  576. package/dist/server/src/services/permission/sections-builder/section.d.ts.map +1 -1
  577. package/dist/server/src/services/permission/sections-builder/utils.d.ts +0 -1
  578. package/dist/server/src/services/permission/sections-builder/utils.d.ts.map +1 -1
  579. package/dist/server/src/services/permission.d.ts +13 -38
  580. package/dist/server/src/services/permission.d.ts.map +1 -1
  581. package/dist/server/src/services/project-settings.d.ts +2 -4
  582. package/dist/server/src/services/project-settings.d.ts.map +1 -1
  583. package/dist/server/src/services/role.d.ts +7 -1
  584. package/dist/server/src/services/role.d.ts.map +1 -1
  585. package/dist/server/src/services/token.d.ts +1 -1
  586. package/dist/server/src/services/token.d.ts.map +1 -1
  587. package/dist/server/src/services/transfer/token.d.ts +11 -11
  588. package/dist/server/src/services/transfer/token.d.ts.map +1 -1
  589. package/dist/server/src/services/user.d.ts +3 -3
  590. package/dist/server/src/services/user.d.ts.map +1 -1
  591. package/dist/server/src/strategies/admin-token.d.ts +4 -4
  592. package/dist/server/src/strategies/admin-token.d.ts.map +1 -1
  593. package/dist/server/src/strategies/admin.d.ts.map +1 -1
  594. package/dist/server/src/strategies/api-token-utils.d.ts.map +1 -1
  595. package/dist/server/src/strategies/content-api-token.d.ts.map +1 -1
  596. package/dist/server/src/strategies/data-transfer.d.ts.map +1 -1
  597. package/dist/server/src/utils/normalize-email.d.ts.map +1 -1
  598. package/dist/server/src/validation/action-provider.d.ts +2 -2
  599. package/dist/server/src/validation/action-provider.d.ts.map +1 -1
  600. package/dist/server/src/validation/admin-tokens.d.ts +2 -2
  601. package/dist/server/src/validation/api-tokens.d.ts +4 -4
  602. package/dist/server/src/validation/authentication/forgot-password.d.ts +1 -1
  603. package/dist/server/src/validation/authentication/login.d.ts +1 -1
  604. package/dist/server/src/validation/authentication/register.d.ts +6 -6
  605. package/dist/server/src/validation/authentication/register.d.ts.map +1 -1
  606. package/dist/server/src/validation/authentication/reset-password.d.ts +1 -1
  607. package/dist/server/src/validation/common-functions/check-fields-are-correctly-nested.d.ts.map +1 -1
  608. package/dist/server/src/validation/common-functions/check-fields-dont-have-duplicates.d.ts.map +1 -1
  609. package/dist/server/src/validation/common-validators.d.ts.map +1 -1
  610. package/dist/server/src/validation/permission.d.ts +6 -6
  611. package/dist/server/src/validation/permission.d.ts.map +1 -1
  612. package/dist/server/src/validation/policies/hasPermissions.d.ts +2 -2
  613. package/dist/server/src/validation/project-settings.d.ts +6 -6
  614. package/dist/server/src/validation/role.d.ts +8 -8
  615. package/dist/server/src/validation/role.d.ts.map +1 -1
  616. package/dist/server/src/validation/transfer/token.d.ts +4 -4
  617. package/dist/server/src/validation/user.d.ts +8 -8
  618. package/dist/shared/contracts/permissions.d.ts +1 -0
  619. package/dist/shared/contracts/permissions.d.ts.map +1 -1
  620. package/dist/shared/contracts/sessions.d.ts +62 -0
  621. package/dist/shared/contracts/sessions.d.ts.map +1 -0
  622. package/dist/shared/contracts/shared.d.ts +1 -1
  623. package/dist/shared/contracts/shared.d.ts.map +1 -1
  624. package/dist/shared/utils/session-auth.d.ts +1 -1
  625. package/dist/shared/utils/session-auth.d.ts.map +1 -1
  626. package/package.json +12 -12
@@ -1 +1 @@
1
- {"version":3,"file":"UpsellBanner.js","sources":["../../../../../admin/src/components/UpsellBanner.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useLicenseLimits } from '@strapi/admin/strapi-admin/ee';\nimport { Box, Flex, IconButton, LinkButton, Typography } from '@strapi/design-system';\nimport { ArrowsOut, Cross } from '@strapi/icons';\nimport { isAfter, isValid, subDays } from 'date-fns';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useGetLicenseTrialTimeLeftQuery } from '../../src/services/admin';\nimport { RESPONSIVE_DEFAULT_SPACING } from '../constants/theme';\nimport { useScopedPersistentState } from '../hooks/usePersistentState';\n\nconst BannerBackground = styled(Flex)`\n background: linear-gradient(\n 90deg,\n ${({ theme }) => theme.colors.primary600} 0%,\n ${({ theme }) => theme.colors.alternative600} 121.48%\n );\n position: relative;\n`;\n\nconst FixedButtonWrapper = styled(Box)`\n position: fixed;\n display: flex;\n flex-direction: column;\n z-index: 11;\n align-items: flex-end;\n top: 9px;\n right: 16px;\n`;\n\nconst Banner = ({\n isTrialEndedRecently,\n onDismiss,\n}: {\n isTrialEndedRecently: boolean;\n onDismiss: () => void;\n}) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <BannerBackground width=\"100%\" justifyContent=\"center\">\n <Flex\n justifyContent=\"center\"\n alignItems=\"center\"\n width=\"100%\"\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n gap={2}\n >\n <Box>\n <Typography\n variant=\"delta\"\n fontWeight=\"bold\"\n textColor=\"neutral0\"\n textAlign=\"center\"\n fontSize={2}\n >\n {formatMessage(\n isTrialEndedRecently\n ? {\n id: 'app.components.UpsellBanner.intro.ended',\n defaultMessage: 'Your trial has ended: ',\n }\n : {\n id: 'app.components.UpsellBanner.intro',\n defaultMessage: 'Access to Growth plan features: ',\n }\n )}\n </Typography>\n <Typography\n variant=\"delta\"\n textColor=\"neutral0\"\n textAlign=\"center\"\n paddingRight={4}\n fontSize={2}\n >\n {formatMessage(\n isTrialEndedRecently\n ? {\n id: 'app.components.UpsellBanner.text.ended',\n defaultMessage: 'Keep access to Growth features by upgrading now.',\n }\n : {\n id: 'app.components.UpsellBanner.text',\n defaultMessage:\n 'As part of your trial, you can explore premium tools such as Content History, Releases, and Single Sign-On (SSO).',\n }\n )}\n </Typography>\n </Box>\n <Box>\n <LinkButton\n width=\"max-content\"\n variant=\"tertiary\"\n href=\"https://billing.strapi.io\"\n target=\"_blank\"\n >\n {formatMessage(\n isTrialEndedRecently\n ? {\n id: 'app.components.UpsellBanner.button.ended',\n defaultMessage: 'Keep Growth plan',\n }\n : {\n id: 'app.components.UpsellBanner.button',\n defaultMessage: 'Upgrade now',\n }\n )}\n </LinkButton>\n </Box>\n </Flex>\n </BannerBackground>\n <FixedButtonWrapper>\n <IconButton\n withTooltip={false}\n label={formatMessage({\n id: 'app.components.UpsellBanner.close',\n defaultMessage: 'Close',\n })}\n onClick={onDismiss}\n >\n <Cross />\n </IconButton>\n </FixedButtonWrapper>\n </>\n );\n};\n\nconst UpsellBanner = () => {\n const { license } = useLicenseLimits();\n const { formatMessage } = useIntl();\n\n const [cachedTrialEndsAt, setCachedTrialEndsAt] = useScopedPersistentState<string | undefined>(\n 'STRAPI_FREE_TRIAL_ENDS_AT',\n undefined\n );\n\n const [dismissedFor, setDismissedFor] = useScopedPersistentState<string | undefined>(\n 'STRAPI_UPSELL_BANNER_DISMISSED_FOR',\n undefined\n );\n\n const sevenDaysAgo = subDays(new Date(), 7);\n\n const timeLeftData = useGetLicenseTrialTimeLeftQuery(undefined, {\n skip: !license?.isTrial,\n });\n\n useEffect(() => {\n if (timeLeftData.data?.trialEndsAt) {\n setCachedTrialEndsAt(timeLeftData.data.trialEndsAt);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [timeLeftData.data?.trialEndsAt]);\n\n // When the license is not a trial + not EE, and the cached trial end date is found in the localstorage, that means the trial has ended\n // We show the banner to encourage the user to upgrade (for 7 days after the trial ends)\n const isTrialEndedRecently = Boolean(\n !license?.isTrial &&\n !window.strapi.isEE &&\n cachedTrialEndsAt &&\n isAfter(new Date(cachedTrialEndsAt), sevenDaysAgo)\n );\n\n const trialEndsAt = timeLeftData.data?.trialEndsAt ?? cachedTrialEndsAt;\n\n const toCanonicalISO = (v: string | undefined): string | undefined => {\n if (!v) return undefined;\n const date = new Date(v);\n return isValid(date) ? date.toISOString() : undefined;\n };\n\n const isDismissed = Boolean(\n trialEndsAt && toCanonicalISO(dismissedFor) === toCanonicalISO(trialEndsAt)\n );\n\n const handleDismiss = () => setDismissedFor(toCanonicalISO(trialEndsAt));\n const handleReopen = () => setDismissedFor(undefined);\n\n if (!(timeLeftData.data?.trialEndsAt || isTrialEndedRecently)) {\n return null;\n }\n\n if (isDismissed) {\n return (\n <FixedButtonWrapper>\n <IconButton\n withTooltip={false}\n label={formatMessage({\n id: 'app.components.UpsellBanner.reopen',\n defaultMessage: 'Reopen banner',\n })}\n onClick={handleReopen}\n >\n <ArrowsOut />\n </IconButton>\n </FixedButtonWrapper>\n );\n }\n\n return <Banner isTrialEndedRecently={isTrialEndedRecently} onDismiss={handleDismiss} />;\n};\n\nexport { UpsellBanner };\n"],"names":["BannerBackground","styled","Flex","theme","colors","primary600","alternative600","FixedButtonWrapper","Box","Banner","isTrialEndedRecently","onDismiss","formatMessage","useIntl","_jsxs","_Fragment","_jsx","width","justifyContent","alignItems","paddingTop","paddingBottom","paddingLeft","RESPONSIVE_DEFAULT_SPACING","paddingRight","gap","Typography","variant","fontWeight","textColor","textAlign","fontSize","id","defaultMessage","LinkButton","href","target","IconButton","withTooltip","label","onClick","Cross","UpsellBanner","license","useLicenseLimits","cachedTrialEndsAt","setCachedTrialEndsAt","useScopedPersistentState","undefined","dismissedFor","setDismissedFor","sevenDaysAgo","subDays","Date","timeLeftData","useGetLicenseTrialTimeLeftQuery","skip","isTrial","useEffect","data","trialEndsAt","Boolean","window","strapi","isEE","isAfter","toCanonicalISO","v","date","isValid","toISOString","isDismissed","handleDismiss","handleReopen","ArrowsOut"],"mappings":"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"}
1
+ {"version":3,"file":"UpsellBanner.js","sources":["../../../../../admin/src/components/UpsellBanner.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useLicenseLimits } from '@strapi/admin/strapi-admin/ee';\nimport { Box, Flex, IconButton, LinkButton, Typography } from '@strapi/design-system';\nimport { ArrowsOut, Cross } from '@strapi/icons';\nimport { isAfter, isValid, subDays } from 'date-fns';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useGetLicenseTrialTimeLeftQuery } from '../../src/services/admin';\nimport { RESPONSIVE_DEFAULT_SPACING } from '../constants/theme';\nimport { useScopedPersistentState } from '../hooks/usePersistentState';\n\nconst BannerBackground = styled(Flex)`\n background: linear-gradient(\n 90deg,\n ${({ theme }) => theme.colors.primary600} 0%,\n ${({ theme }) => theme.colors.alternative600} 121.48%\n );\n position: relative;\n`;\n\nconst FixedButtonWrapper = styled(Box)`\n position: fixed;\n display: flex;\n flex-direction: column;\n z-index: 11;\n align-items: flex-end;\n top: 9px;\n right: 16px;\n`;\n\nconst Banner = ({\n isTrialEndedRecently,\n onDismiss,\n}: {\n isTrialEndedRecently: boolean;\n onDismiss: () => void;\n}) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <BannerBackground width=\"100%\" justifyContent=\"center\">\n <Flex\n justifyContent=\"center\"\n alignItems=\"center\"\n width=\"100%\"\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n gap={2}\n >\n <Box>\n <Typography\n variant=\"delta\"\n fontWeight=\"bold\"\n textColor=\"neutral0\"\n textAlign=\"center\"\n fontSize={2}\n >\n {formatMessage(\n isTrialEndedRecently\n ? {\n id: 'app.components.UpsellBanner.intro.ended',\n defaultMessage: 'Your trial has ended: ',\n }\n : {\n id: 'app.components.UpsellBanner.intro',\n defaultMessage: 'Access to Growth plan features: ',\n }\n )}\n </Typography>\n <Typography\n variant=\"delta\"\n textColor=\"neutral0\"\n textAlign=\"center\"\n paddingRight={4}\n fontSize={2}\n >\n {formatMessage(\n isTrialEndedRecently\n ? {\n id: 'app.components.UpsellBanner.text.ended',\n defaultMessage: 'Keep access to Growth features by upgrading now.',\n }\n : {\n id: 'app.components.UpsellBanner.text',\n defaultMessage:\n 'As part of your trial, you can explore premium tools such as Content History, Releases, and Single Sign-On (SSO).',\n }\n )}\n </Typography>\n </Box>\n <Box>\n <LinkButton\n width=\"max-content\"\n variant=\"tertiary\"\n href=\"https://billing.strapi.io\"\n target=\"_blank\"\n >\n {formatMessage(\n isTrialEndedRecently\n ? {\n id: 'app.components.UpsellBanner.button.ended',\n defaultMessage: 'Keep Growth plan',\n }\n : {\n id: 'app.components.UpsellBanner.button',\n defaultMessage: 'Upgrade now',\n }\n )}\n </LinkButton>\n </Box>\n </Flex>\n </BannerBackground>\n <FixedButtonWrapper>\n <IconButton\n withTooltip={false}\n label={formatMessage({\n id: 'app.components.UpsellBanner.close',\n defaultMessage: 'Close',\n })}\n onClick={onDismiss}\n >\n <Cross />\n </IconButton>\n </FixedButtonWrapper>\n </>\n );\n};\n\nconst UpsellBanner = () => {\n const { license } = useLicenseLimits();\n const { formatMessage } = useIntl();\n\n const [cachedTrialEndsAt, setCachedTrialEndsAt] = useScopedPersistentState<string | undefined>(\n 'STRAPI_FREE_TRIAL_ENDS_AT',\n undefined\n );\n\n const [dismissedFor, setDismissedFor] = useScopedPersistentState<string | undefined>(\n 'STRAPI_UPSELL_BANNER_DISMISSED_FOR',\n undefined\n );\n\n const sevenDaysAgo = subDays(new Date(), 7);\n\n const timeLeftData = useGetLicenseTrialTimeLeftQuery(undefined, {\n skip: !license?.isTrial,\n });\n\n useEffect(() => {\n if (timeLeftData.data?.trialEndsAt) {\n setCachedTrialEndsAt(timeLeftData.data.trialEndsAt);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [timeLeftData.data?.trialEndsAt]);\n\n // When the license is not a trial + not EE, and the cached trial end date is found in the localstorage, that means the trial has ended\n // We show the banner to encourage the user to upgrade (for 7 days after the trial ends)\n const isTrialEndedRecently = Boolean(\n !license?.isTrial &&\n !window.strapi.isEE &&\n cachedTrialEndsAt &&\n isAfter(new Date(cachedTrialEndsAt), sevenDaysAgo)\n );\n\n const trialEndsAt = timeLeftData.data?.trialEndsAt ?? cachedTrialEndsAt;\n\n const toCanonicalISO = (v: string | undefined): string | undefined => {\n if (!v) return undefined;\n const date = new Date(v);\n return isValid(date) ? date.toISOString() : undefined;\n };\n\n const isDismissed = Boolean(\n trialEndsAt && toCanonicalISO(dismissedFor) === toCanonicalISO(trialEndsAt)\n );\n\n const handleDismiss = () => setDismissedFor(toCanonicalISO(trialEndsAt));\n const handleReopen = () => setDismissedFor(undefined);\n\n if (!(timeLeftData.data?.trialEndsAt || isTrialEndedRecently)) {\n return null;\n }\n\n if (isDismissed) {\n return (\n <FixedButtonWrapper>\n <IconButton\n withTooltip={false}\n label={formatMessage({\n id: 'app.components.UpsellBanner.reopen',\n defaultMessage: 'Reopen banner',\n })}\n onClick={handleReopen}\n >\n <ArrowsOut />\n </IconButton>\n </FixedButtonWrapper>\n );\n }\n\n return <Banner isTrialEndedRecently={isTrialEndedRecently} onDismiss={handleDismiss} />;\n};\n\nexport { UpsellBanner };\n"],"names":["BannerBackground","styled","Flex","theme","colors","primary600","alternative600","FixedButtonWrapper","Box","Banner","isTrialEndedRecently","onDismiss","formatMessage","useIntl","_jsxs","_Fragment","_jsx","width","justifyContent","alignItems","paddingTop","paddingBottom","paddingLeft","RESPONSIVE_DEFAULT_SPACING","paddingRight","gap","Typography","variant","fontWeight","textColor","textAlign","fontSize","id","defaultMessage","LinkButton","href","target","IconButton","withTooltip","label","onClick","Cross","UpsellBanner","license","useLicenseLimits","cachedTrialEndsAt","setCachedTrialEndsAt","useScopedPersistentState","undefined","dismissedFor","setDismissedFor","sevenDaysAgo","subDays","Date","timeLeftData","useGetLicenseTrialTimeLeftQuery","skip","isTrial","useEffect","data","trialEndsAt","Boolean","window","strapi","isEE","isAfter","toCanonicalISO","v","date","isValid","toISOString","isDismissed","handleDismiss","handleReopen","ArrowsOut"],"mappings":"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"}
@@ -8,12 +8,10 @@ var reactDnd = require('react-dnd');
8
8
  var reactDndHtml5Backend = require('react-dnd-html5-backend');
9
9
  var reactIntl = require('react-intl');
10
10
  var reactRouterDom = require('react-router-dom');
11
- var styled = require('styled-components');
11
+ var styledComponents = require('styled-components');
12
12
  var Tracking = require('../features/Tracking.js');
13
13
  var widgetLayout = require('../utils/widgetLayout.js');
14
14
 
15
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
16
-
17
15
  function _interopNamespace(e) {
18
16
  if (e && e.__esModule) return e;
19
17
  var n = Object.create(null);
@@ -33,23 +31,22 @@ function _interopNamespace(e) {
33
31
  }
34
32
 
35
33
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
36
- var styled__default = /*#__PURE__*/_interopDefault(styled);
37
34
 
38
- const WidgetActions = styled__default.default(designSystem.Flex)`
35
+ const WidgetActions = styledComponents.styled(designSystem.Flex)`
39
36
  display: flex;
40
37
 
41
38
  @media (hover: hover) and (pointer: fine) {
42
39
  display: none;
43
40
  }
44
41
  `;
45
- const DragIconButton = styled__default.default(designSystem.IconButton)`
42
+ const DragIconButton = styledComponents.styled(designSystem.IconButton)`
46
43
  display: none;
47
44
 
48
45
  @media (hover: hover) and (pointer: fine) {
49
46
  display: flex;
50
47
  }
51
48
  `;
52
- const WidgetContainer = styled__default.default(designSystem.Flex)`
49
+ const WidgetContainer = styledComponents.styled(designSystem.Flex)`
53
50
  @media (hover: hover) and (pointer: fine) {
54
51
  &:hover ${WidgetActions} {
55
52
  display: flex;
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetRoot.js","sources":["../../../../../admin/src/components/WidgetRoot.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography, ScrollArea, IconButton } from '@strapi/design-system';\nimport { PuzzlePiece, Trash, Drag } from '@strapi/icons';\nimport { useDrag } from 'react-dnd';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { useTracking } from '../features/Tracking';\nimport { WIDGET_DATA_ATTRIBUTES } from '../utils/widgetLayout';\n\nimport type { FindWidgetFunction, WidgetIdFunction, DragEndFunction } from '../features/Widgets';\nimport type { WidgetType } from '@strapi/admin/strapi-admin';\n\nexport interface BaseWidgetProps\n extends Pick<WidgetType, 'title' | 'icon' | 'permissions' | 'link' | 'uid'> {\n findWidget?: FindWidgetFunction;\n deleteWidget?: WidgetIdFunction;\n onDragStart?: WidgetIdFunction;\n onDragEnd?: DragEndFunction;\n}\n\nexport interface WidgetRootProps extends BaseWidgetProps {\n children: React.ReactNode;\n component?: () => Promise<React.ComponentType>;\n}\n\nconst WidgetActions = styled(Flex)`\n display: flex;\n\n @media (hover: hover) and (pointer: fine) {\n display: none;\n }\n`;\n\nconst DragIconButton = styled(IconButton)`\n display: none;\n\n @media (hover: hover) and (pointer: fine) {\n display: flex;\n }\n`;\n\nconst WidgetContainer = styled(Flex)`\n @media (hover: hover) and (pointer: fine) {\n &:hover ${WidgetActions} {\n display: flex;\n }\n }\n\n &:focus-within ${WidgetActions} {\n display: flex;\n }\n\n &:focus-within ${DragIconButton} {\n pointer-events: none;\n\n ${({ theme }) => theme.breakpoints.medium} {\n pointer-events: auto;\n }\n }\n`;\n\nexport const WidgetRoot = ({\n title,\n icon = PuzzlePiece,\n children,\n link,\n uid,\n findWidget,\n deleteWidget,\n onDragStart,\n onDragEnd,\n component,\n}: WidgetRootProps) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const Icon = icon;\n\n const handleClickOnLink = () => {\n trackUsage('didOpenHomeWidgetLink', { widgetUID: uid });\n };\n\n const handleDeleteWidget = () => {\n deleteWidget?.(uid);\n };\n\n const [, drag, preview] = useDrag(\n () => ({\n type: 'widget',\n item: () => {\n onDragStart?.(uid);\n return {\n id: uid,\n originalIndex: findWidget?.(uid)?.index ?? 0,\n title,\n icon,\n link,\n component,\n };\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n end: () => {\n onDragEnd?.();\n },\n }),\n [uid, findWidget, onDragStart, onDragEnd, title, icon, link, component]\n );\n\n // Suppress default drag preview\n React.useEffect(() => {\n preview(getEmptyImage(), { captureDraggingState: true });\n }, [preview]);\n\n return (\n <WidgetContainer\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 position=\"relative\"\n aria-labelledby={uid}\n tabIndex={0}\n {...{ [WIDGET_DATA_ATTRIBUTES.WIDGET_ID]: uid }}\n style={{\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n }}\n >\n <Flex\n direction=\"row\"\n gap={2}\n width=\"100%\"\n tag=\"header\"\n alignItems=\"center\"\n minHeight=\"2.25rem\"\n >\n <Flex gap={2} marginRight=\"auto\">\n <Icon fill=\"neutral500\" aria-hidden />\n <Typography textColor=\"neutral500\" variant=\"sigma\" tag=\"h2\" id={uid}>\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 <WidgetActions gap={2}>\n <IconButton\n variant=\"danger-light\"\n size=\"XS\"\n onClick={handleDeleteWidget}\n label={formatMessage({\n id: 'HomePage.widget.delete',\n defaultMessage: 'Delete',\n })}\n cursor=\"pointer\"\n >\n <Trash />\n </IconButton>\n <DragIconButton\n variant=\"tertiary\"\n size=\"XS\"\n ref={drag}\n tabIndex={-1}\n label={formatMessage({\n id: 'HomePage.widget.drag',\n defaultMessage: 'Drag to move',\n })}\n cursor=\"grab\"\n >\n <Drag />\n </DragIconButton>\n </WidgetActions>\n </Flex>\n <ScrollArea>\n <Box width=\"100%\" height=\"261px\" overflow=\"auto\" tag=\"main\">\n {children}\n </Box>\n </ScrollArea>\n </WidgetContainer>\n );\n};\n"],"names":["WidgetActions","styled","Flex","DragIconButton","IconButton","WidgetContainer","theme","breakpoints","medium","WidgetRoot","title","icon","PuzzlePiece","children","link","uid","findWidget","deleteWidget","onDragStart","onDragEnd","component","trackUsage","useTracking","formatMessage","useIntl","Icon","handleClickOnLink","widgetUID","handleDeleteWidget","drag","preview","useDrag","type","item","id","originalIndex","index","collect","monitor","isDragging","end","React","useEffect","getEmptyImage","captureDraggingState","_jsxs","width","hasRadius","direction","alignItems","background","borderColor","shadow","tag","gap","padding","position","aria-labelledby","tabIndex","WIDGET_DATA_ATTRIBUTES","WIDGET_ID","style","transition","minHeight","marginRight","_jsx","fill","aria-hidden","Typography","textColor","variant","ReactRouterLink","textDecoration","textAlign","to","href","onClick","label","size","defaultMessage","cursor","Trash","ref","Drag","ScrollArea","Box","height","overflow"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,MAAMA,aAAAA,GAAgBC,uBAAAA,CAAOC,iBAAAA,CAAK;;;;;;AAMlC,CAAC;AAED,MAAMC,cAAAA,GAAiBF,uBAAAA,CAAOG,uBAAAA,CAAW;;;;;;AAMzC,CAAC;AAED,MAAMC,eAAAA,GAAkBJ,uBAAAA,CAAOC,iBAAAA,CAAK;;AAExB,YAAA,EAAEF,aAAAA,CAAc;;;;;AAKX,iBAAA,EAAEA,aAAAA,CAAc;;;;AAIhB,iBAAA,EAAEG,cAAAA,CAAe;;;IAG9B,EAAE,CAAC,EAAEG,KAAK,EAAE,GAAKA,KAAAA,CAAMC,WAAW,CAACC,MAAM,CAAC;;;;AAI9C,CAAC;AAEM,MAAMC,UAAAA,GAAa,CAAC,EACzBC,KAAK,EACLC,IAAAA,GAAOC,iBAAW,EAClBC,QAAQ,EACRC,IAAI,EACJC,GAAG,EACHC,UAAU,EACVC,YAAY,EACZC,WAAW,EACXC,SAAS,EACTC,SAAS,EACO,GAAA;IAChB,MAAM,EAAEC,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;IACvB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,IAAAA,GAAOd,IAAAA;AAEb,IAAA,MAAMe,iBAAAA,GAAoB,IAAA;AACxBL,QAAAA,UAAAA,CAAW,uBAAA,EAAyB;YAAEM,SAAAA,EAAWZ;AAAI,SAAA,CAAA;AACvD,IAAA,CAAA;AAEA,IAAA,MAAMa,kBAAAA,GAAqB,IAAA;QACzBX,YAAAA,GAAeF,GAAAA,CAAAA;AACjB,IAAA,CAAA;AAEA,IAAA,MAAM,GAAGc,IAAAA,EAAMC,OAAAA,CAAQ,GAAGC,gBAAAA,CACxB,KAAO;YACLC,IAAAA,EAAM,QAAA;YACNC,IAAAA,EAAM,IAAA;gBACJf,WAAAA,GAAcH,GAAAA,CAAAA;gBACd,OAAO;oBACLmB,EAAAA,EAAInB,GAAAA;oBACJoB,aAAAA,EAAenB,UAAAA,GAAaD,MAAMqB,KAAAA,IAAS,CAAA;AAC3C1B,oBAAAA,KAAAA;AACAC,oBAAAA,IAAAA;AACAG,oBAAAA,IAAAA;AACAM,oBAAAA;AACF,iBAAA;AACF,YAAA,CAAA;YACAiB,OAAAA,EAAS,CAACC,WAAa;AACrBC,oBAAAA,UAAAA,EAAYD,QAAQC,UAAU;iBAChC,CAAA;YACAC,GAAAA,EAAK,IAAA;AACHrB,gBAAAA,SAAAA,IAAAA;AACF,YAAA;AACF,SAAA,CAAA,EACA;AAACJ,QAAAA,GAAAA;AAAKC,QAAAA,UAAAA;AAAYE,QAAAA,WAAAA;AAAaC,QAAAA,SAAAA;AAAWT,QAAAA,KAAAA;AAAOC,QAAAA,IAAAA;AAAMG,QAAAA,IAAAA;AAAMM,QAAAA;AAAU,KAAA,CAAA;;AAIzEqB,IAAAA,gBAAAA,CAAMC,SAAS,CAAC,IAAA;AACdZ,QAAAA,OAAAA,CAAQa,kCAAAA,EAAAA,EAAiB;YAAEC,oBAAAA,EAAsB;AAAK,SAAA,CAAA;IACxD,CAAA,EAAG;AAACd,QAAAA;AAAQ,KAAA,CAAA;AAEZ,IAAA,qBACEe,eAAA,CAACxC,eAAAA,EAAAA;QACCyC,KAAAA,EAAM,MAAA;QACNC,SAAS,EAAA,IAAA;QACTC,SAAAA,EAAU,QAAA;QACVC,UAAAA,EAAW,YAAA;QACXC,UAAAA,EAAY,UAAA;QACZC,WAAAA,EAAa,YAAA;QACbC,MAAAA,EAAO,aAAA;QACPC,GAAAA,EAAI,SAAA;QACJC,GAAAA,EAAK,CAAA;QACLC,OAAAA,EAAS,CAAA;QACTC,QAAAA,EAAS,UAAA;QACTC,iBAAAA,EAAiB1C,GAAAA;QACjB2C,QAAAA,EAAU,CAAA;QACJ,CAACC,mCAAAA,CAAuBC,SAAS,GAAG7C,GAAAA;QAC1C8C,KAAAA,EAAO;YACLC,UAAAA,EAAY;AACd,SAAA;;0BAEAjB,eAAA,CAAC3C,iBAAAA,EAAAA;gBACC8C,SAAAA,EAAU,KAAA;gBACVM,GAAAA,EAAK,CAAA;gBACLR,KAAAA,EAAM,MAAA;gBACNO,GAAAA,EAAI,QAAA;gBACJJ,UAAAA,EAAW,QAAA;gBACXc,SAAAA,EAAU,SAAA;;kCAEVlB,eAAA,CAAC3C,iBAAAA,EAAAA;wBAAKoD,GAAAA,EAAK,CAAA;wBAAGU,WAAAA,EAAY,MAAA;;0CACxBC,cAAA,CAACxC,IAAAA,EAAAA;gCAAKyC,IAAAA,EAAK,YAAA;gCAAaC,aAAW,EAAA;;0CACnCF,cAAA,CAACG,uBAAAA,EAAAA;gCAAWC,SAAAA,EAAU,YAAA;gCAAaC,OAAAA,EAAQ,OAAA;gCAAQjB,GAAAA,EAAI,IAAA;gCAAKnB,EAAAA,EAAInB,GAAAA;0CAC7DQ,aAAAA,CAAcb,KAAAA;;;;AAGlBI,oBAAAA,IAAAA,kBACCmD,cAAA,CAACG,uBAAAA,EAAAA;wBACCf,GAAAA,EAAKkB,mBAAAA;wBACLD,OAAAA,EAAQ,OAAA;wBACRD,SAAAA,EAAU,YAAA;wBACVR,KAAAA,EAAO;4BAAEW,cAAAA,EAAgB;AAAO,yBAAA;wBAChCC,SAAAA,EAAU,OAAA;AACVC,wBAAAA,EAAAA,EAAI5D,KAAK6D,IAAI;wBACbC,OAAAA,EAASlD,iBAAAA;AAERH,wBAAAA,QAAAA,EAAAA,aAAAA,CAAcT,KAAK+D,KAAK;;kCAG7BhC,eAAA,CAAC7C,aAAAA,EAAAA;wBAAcsD,GAAAA,EAAK,CAAA;;0CAClBW,cAAA,CAAC7D,uBAAAA,EAAAA;gCACCkE,OAAAA,EAAQ,cAAA;gCACRQ,IAAAA,EAAK,IAAA;gCACLF,OAAAA,EAAShD,kBAAAA;AACTiD,gCAAAA,KAAAA,EAAOtD,aAAAA,CAAc;oCACnBW,EAAAA,EAAI,wBAAA;oCACJ6C,cAAAA,EAAgB;AAClB,iCAAA,CAAA;gCACAC,MAAAA,EAAO,SAAA;AAEP,gCAAA,QAAA,gBAAAf,cAAA,CAACgB,WAAAA,EAAAA,EAAAA;;0CAEHhB,cAAA,CAAC9D,cAAAA,EAAAA;gCACCmE,OAAAA,EAAQ,UAAA;gCACRQ,IAAAA,EAAK,IAAA;gCACLI,GAAAA,EAAKrD,IAAAA;AACL6B,gCAAAA,QAAAA,EAAU,EAAC;AACXmB,gCAAAA,KAAAA,EAAOtD,aAAAA,CAAc;oCACnBW,EAAAA,EAAI,sBAAA;oCACJ6C,cAAAA,EAAgB;AAClB,iCAAA,CAAA;gCACAC,MAAAA,EAAO,MAAA;AAEP,gCAAA,QAAA,gBAAAf,cAAA,CAACkB,UAAAA,EAAAA,EAAAA;;;;;;0BAIPlB,cAAA,CAACmB,uBAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAnB,cAAA,CAACoB,gBAAAA,EAAAA;oBAAIvC,KAAAA,EAAM,MAAA;oBAAOwC,MAAAA,EAAO,OAAA;oBAAQC,QAAAA,EAAS,MAAA;oBAAOlC,GAAAA,EAAI,MAAA;AAClDxC,oBAAAA,QAAAA,EAAAA;;;;;AAKX;;;;"}
1
+ {"version":3,"file":"WidgetRoot.js","sources":["../../../../../admin/src/components/WidgetRoot.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography, ScrollArea, IconButton } from '@strapi/design-system';\nimport { PuzzlePiece, Trash, Drag } from '@strapi/icons';\nimport { useDrag } from 'react-dnd';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useTracking } from '../features/Tracking';\nimport { WIDGET_DATA_ATTRIBUTES } from '../utils/widgetLayout';\n\nimport type { FindWidgetFunction, WidgetIdFunction, DragEndFunction } from '../features/Widgets';\nimport type { WidgetType } from '@strapi/admin/strapi-admin';\n\nexport interface BaseWidgetProps\n extends Pick<WidgetType, 'title' | 'icon' | 'permissions' | 'link' | 'uid'> {\n findWidget?: FindWidgetFunction;\n deleteWidget?: WidgetIdFunction;\n onDragStart?: WidgetIdFunction;\n onDragEnd?: DragEndFunction;\n}\n\nexport interface WidgetRootProps extends BaseWidgetProps {\n children: React.ReactNode;\n component?: () => Promise<React.ComponentType>;\n}\n\nconst WidgetActions = styled(Flex)`\n display: flex;\n\n @media (hover: hover) and (pointer: fine) {\n display: none;\n }\n`;\n\nconst DragIconButton = styled(IconButton)`\n display: none;\n\n @media (hover: hover) and (pointer: fine) {\n display: flex;\n }\n`;\n\nconst WidgetContainer = styled(Flex)`\n @media (hover: hover) and (pointer: fine) {\n &:hover ${WidgetActions} {\n display: flex;\n }\n }\n\n &:focus-within ${WidgetActions} {\n display: flex;\n }\n\n &:focus-within ${DragIconButton} {\n pointer-events: none;\n\n ${({ theme }) => theme.breakpoints.medium} {\n pointer-events: auto;\n }\n }\n`;\n\nexport const WidgetRoot = ({\n title,\n icon = PuzzlePiece,\n children,\n link,\n uid,\n findWidget,\n deleteWidget,\n onDragStart,\n onDragEnd,\n component,\n}: WidgetRootProps) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const Icon = icon;\n\n const handleClickOnLink = () => {\n trackUsage('didOpenHomeWidgetLink', { widgetUID: uid });\n };\n\n const handleDeleteWidget = () => {\n deleteWidget?.(uid);\n };\n\n const [, drag, preview] = useDrag(\n () => ({\n type: 'widget',\n item: () => {\n onDragStart?.(uid);\n return {\n id: uid,\n originalIndex: findWidget?.(uid)?.index ?? 0,\n title,\n icon,\n link,\n component,\n };\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n end: () => {\n onDragEnd?.();\n },\n }),\n [uid, findWidget, onDragStart, onDragEnd, title, icon, link, component]\n );\n\n // Suppress default drag preview\n React.useEffect(() => {\n preview(getEmptyImage(), { captureDraggingState: true });\n }, [preview]);\n\n return (\n <WidgetContainer\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 position=\"relative\"\n aria-labelledby={uid}\n tabIndex={0}\n {...{ [WIDGET_DATA_ATTRIBUTES.WIDGET_ID]: uid }}\n style={{\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n }}\n >\n <Flex\n direction=\"row\"\n gap={2}\n width=\"100%\"\n tag=\"header\"\n alignItems=\"center\"\n minHeight=\"2.25rem\"\n >\n <Flex gap={2} marginRight=\"auto\">\n <Icon fill=\"neutral500\" aria-hidden />\n <Typography textColor=\"neutral500\" variant=\"sigma\" tag=\"h2\" id={uid}>\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 <WidgetActions gap={2}>\n <IconButton\n variant=\"danger-light\"\n size=\"XS\"\n onClick={handleDeleteWidget}\n label={formatMessage({\n id: 'HomePage.widget.delete',\n defaultMessage: 'Delete',\n })}\n cursor=\"pointer\"\n >\n <Trash />\n </IconButton>\n <DragIconButton\n variant=\"tertiary\"\n size=\"XS\"\n ref={drag}\n tabIndex={-1}\n label={formatMessage({\n id: 'HomePage.widget.drag',\n defaultMessage: 'Drag to move',\n })}\n cursor=\"grab\"\n >\n <Drag />\n </DragIconButton>\n </WidgetActions>\n </Flex>\n <ScrollArea>\n <Box width=\"100%\" height=\"261px\" overflow=\"auto\" tag=\"main\">\n {children}\n </Box>\n </ScrollArea>\n </WidgetContainer>\n );\n};\n"],"names":["WidgetActions","styled","Flex","DragIconButton","IconButton","WidgetContainer","theme","breakpoints","medium","WidgetRoot","title","icon","PuzzlePiece","children","link","uid","findWidget","deleteWidget","onDragStart","onDragEnd","component","trackUsage","useTracking","formatMessage","useIntl","Icon","handleClickOnLink","widgetUID","handleDeleteWidget","drag","preview","useDrag","type","item","id","originalIndex","index","collect","monitor","isDragging","end","React","useEffect","getEmptyImage","captureDraggingState","_jsxs","width","hasRadius","direction","alignItems","background","borderColor","shadow","tag","gap","padding","position","aria-labelledby","tabIndex","WIDGET_DATA_ATTRIBUTES","WIDGET_ID","style","transition","minHeight","marginRight","_jsx","fill","aria-hidden","Typography","textColor","variant","ReactRouterLink","textDecoration","textAlign","to","href","onClick","label","size","defaultMessage","cursor","Trash","ref","Drag","ScrollArea","Box","height","overflow"],"mappings":"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"}
@@ -6,7 +6,7 @@ import { useDrag } from 'react-dnd';
6
6
  import { getEmptyImage } from 'react-dnd-html5-backend';
7
7
  import { useIntl } from 'react-intl';
8
8
  import { Link } from 'react-router-dom';
9
- import styled from 'styled-components';
9
+ import { styled } from 'styled-components';
10
10
  import { useTracking } from '../features/Tracking.mjs';
11
11
  import { WIDGET_DATA_ATTRIBUTES } from '../utils/widgetLayout.mjs';
12
12
 
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetRoot.mjs","sources":["../../../../../admin/src/components/WidgetRoot.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography, ScrollArea, IconButton } from '@strapi/design-system';\nimport { PuzzlePiece, Trash, Drag } from '@strapi/icons';\nimport { useDrag } from 'react-dnd';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { useTracking } from '../features/Tracking';\nimport { WIDGET_DATA_ATTRIBUTES } from '../utils/widgetLayout';\n\nimport type { FindWidgetFunction, WidgetIdFunction, DragEndFunction } from '../features/Widgets';\nimport type { WidgetType } from '@strapi/admin/strapi-admin';\n\nexport interface BaseWidgetProps\n extends Pick<WidgetType, 'title' | 'icon' | 'permissions' | 'link' | 'uid'> {\n findWidget?: FindWidgetFunction;\n deleteWidget?: WidgetIdFunction;\n onDragStart?: WidgetIdFunction;\n onDragEnd?: DragEndFunction;\n}\n\nexport interface WidgetRootProps extends BaseWidgetProps {\n children: React.ReactNode;\n component?: () => Promise<React.ComponentType>;\n}\n\nconst WidgetActions = styled(Flex)`\n display: flex;\n\n @media (hover: hover) and (pointer: fine) {\n display: none;\n }\n`;\n\nconst DragIconButton = styled(IconButton)`\n display: none;\n\n @media (hover: hover) and (pointer: fine) {\n display: flex;\n }\n`;\n\nconst WidgetContainer = styled(Flex)`\n @media (hover: hover) and (pointer: fine) {\n &:hover ${WidgetActions} {\n display: flex;\n }\n }\n\n &:focus-within ${WidgetActions} {\n display: flex;\n }\n\n &:focus-within ${DragIconButton} {\n pointer-events: none;\n\n ${({ theme }) => theme.breakpoints.medium} {\n pointer-events: auto;\n }\n }\n`;\n\nexport const WidgetRoot = ({\n title,\n icon = PuzzlePiece,\n children,\n link,\n uid,\n findWidget,\n deleteWidget,\n onDragStart,\n onDragEnd,\n component,\n}: WidgetRootProps) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const Icon = icon;\n\n const handleClickOnLink = () => {\n trackUsage('didOpenHomeWidgetLink', { widgetUID: uid });\n };\n\n const handleDeleteWidget = () => {\n deleteWidget?.(uid);\n };\n\n const [, drag, preview] = useDrag(\n () => ({\n type: 'widget',\n item: () => {\n onDragStart?.(uid);\n return {\n id: uid,\n originalIndex: findWidget?.(uid)?.index ?? 0,\n title,\n icon,\n link,\n component,\n };\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n end: () => {\n onDragEnd?.();\n },\n }),\n [uid, findWidget, onDragStart, onDragEnd, title, icon, link, component]\n );\n\n // Suppress default drag preview\n React.useEffect(() => {\n preview(getEmptyImage(), { captureDraggingState: true });\n }, [preview]);\n\n return (\n <WidgetContainer\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 position=\"relative\"\n aria-labelledby={uid}\n tabIndex={0}\n {...{ [WIDGET_DATA_ATTRIBUTES.WIDGET_ID]: uid }}\n style={{\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n }}\n >\n <Flex\n direction=\"row\"\n gap={2}\n width=\"100%\"\n tag=\"header\"\n alignItems=\"center\"\n minHeight=\"2.25rem\"\n >\n <Flex gap={2} marginRight=\"auto\">\n <Icon fill=\"neutral500\" aria-hidden />\n <Typography textColor=\"neutral500\" variant=\"sigma\" tag=\"h2\" id={uid}>\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 <WidgetActions gap={2}>\n <IconButton\n variant=\"danger-light\"\n size=\"XS\"\n onClick={handleDeleteWidget}\n label={formatMessage({\n id: 'HomePage.widget.delete',\n defaultMessage: 'Delete',\n })}\n cursor=\"pointer\"\n >\n <Trash />\n </IconButton>\n <DragIconButton\n variant=\"tertiary\"\n size=\"XS\"\n ref={drag}\n tabIndex={-1}\n label={formatMessage({\n id: 'HomePage.widget.drag',\n defaultMessage: 'Drag to move',\n })}\n cursor=\"grab\"\n >\n <Drag />\n </DragIconButton>\n </WidgetActions>\n </Flex>\n <ScrollArea>\n <Box width=\"100%\" height=\"261px\" overflow=\"auto\" tag=\"main\">\n {children}\n </Box>\n </ScrollArea>\n </WidgetContainer>\n );\n};\n"],"names":["WidgetActions","styled","Flex","DragIconButton","IconButton","WidgetContainer","theme","breakpoints","medium","WidgetRoot","title","icon","PuzzlePiece","children","link","uid","findWidget","deleteWidget","onDragStart","onDragEnd","component","trackUsage","useTracking","formatMessage","useIntl","Icon","handleClickOnLink","widgetUID","handleDeleteWidget","drag","preview","useDrag","type","item","id","originalIndex","index","collect","monitor","isDragging","end","React","useEffect","getEmptyImage","captureDraggingState","_jsxs","width","hasRadius","direction","alignItems","background","borderColor","shadow","tag","gap","padding","position","aria-labelledby","tabIndex","WIDGET_DATA_ATTRIBUTES","WIDGET_ID","style","transition","minHeight","marginRight","_jsx","fill","aria-hidden","Typography","textColor","variant","ReactRouterLink","textDecoration","textAlign","to","href","onClick","label","size","defaultMessage","cursor","Trash","ref","Drag","ScrollArea","Box","height","overflow"],"mappings":"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"}
1
+ {"version":3,"file":"WidgetRoot.mjs","sources":["../../../../../admin/src/components/WidgetRoot.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography, ScrollArea, IconButton } from '@strapi/design-system';\nimport { PuzzlePiece, Trash, Drag } from '@strapi/icons';\nimport { useDrag } from 'react-dnd';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useTracking } from '../features/Tracking';\nimport { WIDGET_DATA_ATTRIBUTES } from '../utils/widgetLayout';\n\nimport type { FindWidgetFunction, WidgetIdFunction, DragEndFunction } from '../features/Widgets';\nimport type { WidgetType } from '@strapi/admin/strapi-admin';\n\nexport interface BaseWidgetProps\n extends Pick<WidgetType, 'title' | 'icon' | 'permissions' | 'link' | 'uid'> {\n findWidget?: FindWidgetFunction;\n deleteWidget?: WidgetIdFunction;\n onDragStart?: WidgetIdFunction;\n onDragEnd?: DragEndFunction;\n}\n\nexport interface WidgetRootProps extends BaseWidgetProps {\n children: React.ReactNode;\n component?: () => Promise<React.ComponentType>;\n}\n\nconst WidgetActions = styled(Flex)`\n display: flex;\n\n @media (hover: hover) and (pointer: fine) {\n display: none;\n }\n`;\n\nconst DragIconButton = styled(IconButton)`\n display: none;\n\n @media (hover: hover) and (pointer: fine) {\n display: flex;\n }\n`;\n\nconst WidgetContainer = styled(Flex)`\n @media (hover: hover) and (pointer: fine) {\n &:hover ${WidgetActions} {\n display: flex;\n }\n }\n\n &:focus-within ${WidgetActions} {\n display: flex;\n }\n\n &:focus-within ${DragIconButton} {\n pointer-events: none;\n\n ${({ theme }) => theme.breakpoints.medium} {\n pointer-events: auto;\n }\n }\n`;\n\nexport const WidgetRoot = ({\n title,\n icon = PuzzlePiece,\n children,\n link,\n uid,\n findWidget,\n deleteWidget,\n onDragStart,\n onDragEnd,\n component,\n}: WidgetRootProps) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const Icon = icon;\n\n const handleClickOnLink = () => {\n trackUsage('didOpenHomeWidgetLink', { widgetUID: uid });\n };\n\n const handleDeleteWidget = () => {\n deleteWidget?.(uid);\n };\n\n const [, drag, preview] = useDrag(\n () => ({\n type: 'widget',\n item: () => {\n onDragStart?.(uid);\n return {\n id: uid,\n originalIndex: findWidget?.(uid)?.index ?? 0,\n title,\n icon,\n link,\n component,\n };\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n end: () => {\n onDragEnd?.();\n },\n }),\n [uid, findWidget, onDragStart, onDragEnd, title, icon, link, component]\n );\n\n // Suppress default drag preview\n React.useEffect(() => {\n preview(getEmptyImage(), { captureDraggingState: true });\n }, [preview]);\n\n return (\n <WidgetContainer\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 position=\"relative\"\n aria-labelledby={uid}\n tabIndex={0}\n {...{ [WIDGET_DATA_ATTRIBUTES.WIDGET_ID]: uid }}\n style={{\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n }}\n >\n <Flex\n direction=\"row\"\n gap={2}\n width=\"100%\"\n tag=\"header\"\n alignItems=\"center\"\n minHeight=\"2.25rem\"\n >\n <Flex gap={2} marginRight=\"auto\">\n <Icon fill=\"neutral500\" aria-hidden />\n <Typography textColor=\"neutral500\" variant=\"sigma\" tag=\"h2\" id={uid}>\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 <WidgetActions gap={2}>\n <IconButton\n variant=\"danger-light\"\n size=\"XS\"\n onClick={handleDeleteWidget}\n label={formatMessage({\n id: 'HomePage.widget.delete',\n defaultMessage: 'Delete',\n })}\n cursor=\"pointer\"\n >\n <Trash />\n </IconButton>\n <DragIconButton\n variant=\"tertiary\"\n size=\"XS\"\n ref={drag}\n tabIndex={-1}\n label={formatMessage({\n id: 'HomePage.widget.drag',\n defaultMessage: 'Drag to move',\n })}\n cursor=\"grab\"\n >\n <Drag />\n </DragIconButton>\n </WidgetActions>\n </Flex>\n <ScrollArea>\n <Box width=\"100%\" height=\"261px\" overflow=\"auto\" tag=\"main\">\n {children}\n </Box>\n </ScrollArea>\n </WidgetContainer>\n );\n};\n"],"names":["WidgetActions","styled","Flex","DragIconButton","IconButton","WidgetContainer","theme","breakpoints","medium","WidgetRoot","title","icon","PuzzlePiece","children","link","uid","findWidget","deleteWidget","onDragStart","onDragEnd","component","trackUsage","useTracking","formatMessage","useIntl","Icon","handleClickOnLink","widgetUID","handleDeleteWidget","drag","preview","useDrag","type","item","id","originalIndex","index","collect","monitor","isDragging","end","React","useEffect","getEmptyImage","captureDraggingState","_jsxs","width","hasRadius","direction","alignItems","background","borderColor","shadow","tag","gap","padding","position","aria-labelledby","tabIndex","WIDGET_DATA_ATTRIBUTES","WIDGET_ID","style","transition","minHeight","marginRight","_jsx","fill","aria-hidden","Typography","textColor","variant","ReactRouterLink","textDecoration","textAlign","to","href","onClick","label","size","defaultMessage","cursor","Trash","ref","Drag","ScrollArea","Box","height","overflow"],"mappings":"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"}
@@ -6,14 +6,14 @@ var designSystem = require('@strapi/design-system');
6
6
  var icons = require('@strapi/icons');
7
7
  var reactIntl = require('react-intl');
8
8
  var reactRouterDom = require('react-router-dom');
9
- var styled = require('styled-components');
9
+ var styledComponents = require('styled-components');
10
10
  var homepage = require('../services/homepage.js');
11
11
  var users = require('../utils/users.js');
12
12
  var WidgetHelpers = require('./WidgetHelpers.js');
13
13
 
14
14
  /* -------------------------------------------------------------------------------------------------
15
15
  * ProfileWidget
16
- * -----------------------------------------------------------------------------------------------*/ const DisplayNameTypography = styled.styled(designSystem.Typography)`
16
+ * -----------------------------------------------------------------------------------------------*/ const DisplayNameTypography = styledComponents.styled(designSystem.Typography)`
17
17
  font-size: 2.4rem;
18
18
  `;
19
19
  const ProfileWidget = ()=>{
@@ -54,7 +54,7 @@ const ProfileWidget = ()=>{
54
54
  };
55
55
  /* -------------------------------------------------------------------------------------------------
56
56
  * Key Statistics
57
- * -----------------------------------------------------------------------------------------------*/ const Grid = styled.styled(designSystem.Box)`
57
+ * -----------------------------------------------------------------------------------------------*/ const Grid = styledComponents.styled(designSystem.Box)`
58
58
  display: grid;
59
59
  grid-template-columns: 1fr 1fr;
60
60
  gap: 0;
@@ -62,7 +62,7 @@ const ProfileWidget = ()=>{
62
62
  border-radius: ${({ theme })=>theme.borderRadius};
63
63
  overflow: hidden;
64
64
  `;
65
- const GridCell = styled.styled(designSystem.Box)`
65
+ const GridCell = styledComponents.styled(designSystem.Box)`
66
66
  border-bottom: 1px solid ${({ theme })=>theme.colors.neutral200};
67
67
  border-right: 1px solid ${({ theme })=>theme.colors.neutral200};
68
68
  display: flex;
@@ -82,7 +82,7 @@ const formatNumber = ({ locale, number })=>{
82
82
  maximumFractionDigits: 1
83
83
  }).format(number);
84
84
  };
85
- const LinkCell = styled.styled(reactRouterDom.Link)`
85
+ const LinkCell = styledComponents.styled(reactRouterDom.Link)`
86
86
  text-decoration: none;
87
87
  padding: ${({ theme })=>theme.spaces[3]};
88
88
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"Widgets.js","sources":["../../../../../admin/src/components/Widgets.tsx"],"sourcesContent":["import { useAuth, useTracking } from '@strapi/admin/strapi-admin';\nimport { Avatar, Badge, Box, Flex, LinkButton, Typography } from '@strapi/design-system';\nimport {\n Cloud,\n CloudUpload,\n Earth,\n Images,\n User,\n Key,\n Files,\n Layout,\n Graph,\n Webhooks,\n} from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useGetCountDocumentsQuery, useGetKeyStatisticsQuery } from '../services/homepage';\nimport { getDisplayName, getInitials } from '../utils/users';\n\nimport { Widget } from './WidgetHelpers';\n\n/* -------------------------------------------------------------------------------------------------\n * ProfileWidget\n * -----------------------------------------------------------------------------------------------*/\n\nconst DisplayNameTypography = styled(Typography)`\n font-size: 2.4rem;\n`;\n\nconst ProfileWidget = () => {\n const user = useAuth('User', (state) => state.user);\n const userDisplayName = getDisplayName(user);\n const initials = getInitials(user);\n\n return (\n <Flex direction=\"column\" gap={3} height=\"100%\" justifyContent=\"center\">\n <Avatar.Item delayMs={0} fallback={initials} />\n {userDisplayName && (\n <DisplayNameTypography fontWeight=\"bold\" textTransform=\"none\" textAlign=\"center\">\n {userDisplayName}\n </DisplayNameTypography>\n )}\n {user?.email && (\n <Typography variant=\"omega\" textColor=\"neutral600\">\n {user?.email}\n </Typography>\n )}\n {user?.roles?.length && (\n <Flex marginTop={2} gap={1} wrap=\"wrap\">\n {user?.roles?.map((role) => <Badge key={role.id}>{role.name}</Badge>)}\n </Flex>\n )}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Key Statistics\n * -----------------------------------------------------------------------------------------------*/\nconst Grid = styled(Box)`\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 0;\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n border-radius: ${({ theme }) => theme.borderRadius};\n overflow: hidden;\n`;\n\nconst GridCell = styled(Box)`\n border-bottom: 1px solid ${({ theme }) => theme.colors.neutral200};\n border-right: 1px solid ${({ theme }) => theme.colors.neutral200};\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n\n &:nth-child(2n) {\n border-right: none;\n }\n &:nth-last-child(-n + 2) {\n border-bottom: none;\n }\n`;\n\nconst formatNumber = ({ locale, number }: { locale: string; number: number }) => {\n return new Intl.NumberFormat(locale, {\n notation: 'compact',\n maximumFractionDigits: 1,\n }).format(number);\n};\n\nconst LinkCell = styled(Link)`\n text-decoration: none;\n padding: ${({ theme }) => theme.spaces[3]};\n`;\n\nconst KeyStatisticsWidget = () => {\n const { trackUsage } = useTracking();\n const { formatMessage, locale } = useIntl();\n const { data: countDocuments, isLoading: isLoadingCountDocuments } = useGetCountDocumentsQuery();\n const { data: countKeyStatistics, isLoading: isLoadingKeyStatistics } =\n useGetKeyStatisticsQuery();\n\n if (isLoadingKeyStatistics || isLoadingCountDocuments) {\n return <Widget.Loading />;\n }\n\n if (!countKeyStatistics || !countDocuments) {\n return <Widget.Error />;\n }\n\n const keyStatisticsList = {\n entries: {\n label: {\n id: 'widget.key-statistics.list.entries',\n defaultMessage: 'Entries',\n },\n icon: {\n component: <Files />,\n background: 'primary100',\n color: 'primary600',\n },\n link: '/content-manager',\n },\n assets: {\n label: {\n id: 'widget.key-statistics.list.assets',\n defaultMessage: 'Assets',\n },\n icon: {\n component: <Images />,\n background: 'warning100',\n color: 'warning600',\n },\n link: '/plugins/upload',\n },\n contentTypes: {\n label: {\n id: 'widget.key-statistics.list.contentTypes',\n defaultMessage: 'Content-Types',\n },\n icon: {\n component: <Layout />,\n background: 'secondary100',\n color: 'secondary600',\n },\n link: '/plugins/content-type-builder',\n },\n components: {\n label: {\n id: 'widget.key-statistics.list.components',\n defaultMessage: 'Components',\n },\n icon: {\n component: <Graph />,\n background: 'alternative100',\n color: 'alternative600',\n },\n link: '/plugins/content-type-builder',\n },\n locales: {\n label: {\n id: 'widget.key-statistics.list.locales',\n defaultMessage: 'Locales',\n },\n icon: {\n component: <Earth />,\n background: 'success100',\n color: 'success600',\n },\n link: '/settings/internationalization',\n },\n admins: {\n label: {\n id: 'widget.key-statistics.list.admins',\n defaultMessage: 'Admins',\n },\n icon: {\n component: <User />,\n background: 'danger100',\n color: 'danger600',\n },\n link: '/settings/users?pageSize=10&page=1&sort=firstname',\n },\n webhooks: {\n label: {\n id: 'widget.key-statistics.list.webhooks',\n defaultMessage: 'Webhooks',\n },\n icon: {\n component: <Webhooks />,\n background: 'alternative100',\n color: 'alternative600',\n },\n link: '/settings/webhooks',\n },\n apiTokens: {\n label: {\n id: 'widget.key-statistics.list.apiTokens',\n defaultMessage: 'API Tokens',\n },\n icon: {\n component: <Key />,\n background: 'neutral100',\n color: 'neutral600',\n },\n link: '/settings/api-tokens?sort=name:ASC',\n },\n };\n\n const { draft, published, modified } = countDocuments ?? {\n draft: 0,\n published: 0,\n modified: 0,\n };\n\n const totalCountEntries = draft + published + modified;\n\n return (\n <Grid>\n {Object.entries(keyStatisticsList).map(([key, item]) => {\n const value = countKeyStatistics?.[key as keyof typeof countKeyStatistics];\n return (\n value !== null && (\n <GridCell\n as={LinkCell}\n to={item.link}\n key={`key-statistics-${key}`}\n data-testid={`stat-${key}`}\n onClick={() => trackUsage('didOpenKeyStatisticsWidgetLink', { itemKey: key })}\n >\n <Flex alignItems=\"center\" gap={2}>\n <Flex\n padding={2}\n borderRadius={1}\n background={item.icon.background}\n color={item.icon.color}\n >\n {item.icon.component}\n </Flex>\n <Flex direction=\"column\" alignItems=\"flex-start\">\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral500\">\n {formatMessage(item.label)}\n </Typography>\n <Typography variant=\"omega\" fontWeight=\"bold\" textColor=\"neutral800\">\n {formatNumber({\n locale,\n number: key === 'entries' ? totalCountEntries : value,\n })}\n </Typography>\n </Flex>\n </Flex>\n </GridCell>\n )\n );\n })}\n </Grid>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DeployNowWidget\n * -----------------------------------------------------------------------------------------------*/\n\nconst DeployNowWidget = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex direction=\"column\" gap={4} height=\"100%\" alignItems=\"center\" justifyContent=\"center\">\n <CloudUpload width=\"3.2rem\" height=\"3.2rem\" />\n <Flex direction=\"column\" gap={2}>\n <Typography variant=\"beta\" textAlign=\"center\">\n {formatMessage({\n id: 'HomePage.widget.deploy-now.title',\n defaultMessage: 'Ready to go live ?',\n })}\n </Typography>\n <Typography variant=\"omega\" textColor=\"neutral600\" textAlign=\"center\">\n {formatMessage({\n id: 'HomePage.widget.deploy-now.description',\n defaultMessage: 'Deploy with Strapi Cloud',\n })}\n </Typography>\n </Flex>\n <LinkButton href=\"https://cloud.strapi.io/login\" isExternal size=\"L\" startIcon={<Cloud />}>\n {formatMessage({ id: 'HomePage.widget.deploy-now.button', defaultMessage: 'Deploy Now' })}\n </LinkButton>\n </Flex>\n );\n};\n\nexport { ProfileWidget, KeyStatisticsWidget, DeployNowWidget };\n"],"names":["DisplayNameTypography","styled","Typography","ProfileWidget","user","useAuth","state","userDisplayName","getDisplayName","initials","getInitials","_jsxs","Flex","direction","gap","height","justifyContent","_jsx","Avatar","Item","delayMs","fallback","fontWeight","textTransform","textAlign","email","variant","textColor","roles","length","marginTop","wrap","map","role","Badge","name","id","Grid","Box","theme","colors","neutral200","borderRadius","GridCell","formatNumber","locale","number","Intl","NumberFormat","notation","maximumFractionDigits","format","LinkCell","Link","spaces","KeyStatisticsWidget","trackUsage","useTracking","formatMessage","useIntl","data","countDocuments","isLoading","isLoadingCountDocuments","useGetCountDocumentsQuery","countKeyStatistics","isLoadingKeyStatistics","useGetKeyStatisticsQuery","Widget","Loading","Error","keyStatisticsList","entries","label","defaultMessage","icon","component","Files","background","color","link","assets","Images","contentTypes","Layout","components","Graph","locales","Earth","admins","User","webhooks","Webhooks","apiTokens","Key","draft","published","modified","totalCountEntries","Object","key","item","value","as","to","data-testid","onClick","itemKey","alignItems","padding","DeployNowWidget","CloudUpload","width","LinkButton","href","isExternal","size","startIcon","Cloud"],"mappings":"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"}
1
+ {"version":3,"file":"Widgets.js","sources":["../../../../../admin/src/components/Widgets.tsx"],"sourcesContent":["import { useAuth, useTracking } from '@strapi/admin/strapi-admin';\nimport { Avatar, Badge, Box, Flex, LinkButton, Typography } from '@strapi/design-system';\nimport {\n Cloud,\n CloudUpload,\n Earth,\n Images,\n User,\n Key,\n Files,\n Layout,\n Graph,\n Webhooks,\n} from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useGetCountDocumentsQuery, useGetKeyStatisticsQuery } from '../services/homepage';\nimport { getDisplayName, getInitials } from '../utils/users';\n\nimport { Widget } from './WidgetHelpers';\n\n/* -------------------------------------------------------------------------------------------------\n * ProfileWidget\n * -----------------------------------------------------------------------------------------------*/\n\nconst DisplayNameTypography = styled(Typography)`\n font-size: 2.4rem;\n`;\n\nconst ProfileWidget = () => {\n const user = useAuth('User', (state) => state.user);\n const userDisplayName = getDisplayName(user);\n const initials = getInitials(user);\n\n return (\n <Flex direction=\"column\" gap={3} height=\"100%\" justifyContent=\"center\">\n <Avatar.Item delayMs={0} fallback={initials} />\n {userDisplayName && (\n <DisplayNameTypography fontWeight=\"bold\" textTransform=\"none\" textAlign=\"center\">\n {userDisplayName}\n </DisplayNameTypography>\n )}\n {user?.email && (\n <Typography variant=\"omega\" textColor=\"neutral600\">\n {user?.email}\n </Typography>\n )}\n {user?.roles?.length && (\n <Flex marginTop={2} gap={1} wrap=\"wrap\">\n {user?.roles?.map((role) => <Badge key={role.id}>{role.name}</Badge>)}\n </Flex>\n )}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Key Statistics\n * -----------------------------------------------------------------------------------------------*/\nconst Grid = styled(Box)`\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 0;\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n border-radius: ${({ theme }) => theme.borderRadius};\n overflow: hidden;\n`;\n\nconst GridCell = styled(Box)`\n border-bottom: 1px solid ${({ theme }) => theme.colors.neutral200};\n border-right: 1px solid ${({ theme }) => theme.colors.neutral200};\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n\n &:nth-child(2n) {\n border-right: none;\n }\n &:nth-last-child(-n + 2) {\n border-bottom: none;\n }\n`;\n\nconst formatNumber = ({ locale, number }: { locale: string; number: number }) => {\n return new Intl.NumberFormat(locale, {\n notation: 'compact',\n maximumFractionDigits: 1,\n }).format(number);\n};\n\nconst LinkCell = styled(Link)`\n text-decoration: none;\n padding: ${({ theme }) => theme.spaces[3]};\n`;\n\nconst KeyStatisticsWidget = () => {\n const { trackUsage } = useTracking();\n const { formatMessage, locale } = useIntl();\n const { data: countDocuments, isLoading: isLoadingCountDocuments } = useGetCountDocumentsQuery();\n const { data: countKeyStatistics, isLoading: isLoadingKeyStatistics } =\n useGetKeyStatisticsQuery();\n\n if (isLoadingKeyStatistics || isLoadingCountDocuments) {\n return <Widget.Loading />;\n }\n\n if (!countKeyStatistics || !countDocuments) {\n return <Widget.Error />;\n }\n\n const keyStatisticsList = {\n entries: {\n label: {\n id: 'widget.key-statistics.list.entries',\n defaultMessage: 'Entries',\n },\n icon: {\n component: <Files />,\n background: 'primary100',\n color: 'primary600',\n },\n link: '/content-manager',\n },\n assets: {\n label: {\n id: 'widget.key-statistics.list.assets',\n defaultMessage: 'Assets',\n },\n icon: {\n component: <Images />,\n background: 'warning100',\n color: 'warning600',\n },\n link: '/plugins/upload',\n },\n contentTypes: {\n label: {\n id: 'widget.key-statistics.list.contentTypes',\n defaultMessage: 'Content-Types',\n },\n icon: {\n component: <Layout />,\n background: 'secondary100',\n color: 'secondary600',\n },\n link: '/plugins/content-type-builder',\n },\n components: {\n label: {\n id: 'widget.key-statistics.list.components',\n defaultMessage: 'Components',\n },\n icon: {\n component: <Graph />,\n background: 'alternative100',\n color: 'alternative600',\n },\n link: '/plugins/content-type-builder',\n },\n locales: {\n label: {\n id: 'widget.key-statistics.list.locales',\n defaultMessage: 'Locales',\n },\n icon: {\n component: <Earth />,\n background: 'success100',\n color: 'success600',\n },\n link: '/settings/internationalization',\n },\n admins: {\n label: {\n id: 'widget.key-statistics.list.admins',\n defaultMessage: 'Admins',\n },\n icon: {\n component: <User />,\n background: 'danger100',\n color: 'danger600',\n },\n link: '/settings/users?pageSize=10&page=1&sort=firstname',\n },\n webhooks: {\n label: {\n id: 'widget.key-statistics.list.webhooks',\n defaultMessage: 'Webhooks',\n },\n icon: {\n component: <Webhooks />,\n background: 'alternative100',\n color: 'alternative600',\n },\n link: '/settings/webhooks',\n },\n apiTokens: {\n label: {\n id: 'widget.key-statistics.list.apiTokens',\n defaultMessage: 'API Tokens',\n },\n icon: {\n component: <Key />,\n background: 'neutral100',\n color: 'neutral600',\n },\n link: '/settings/api-tokens?sort=name:ASC',\n },\n };\n\n const { draft, published, modified } = countDocuments ?? {\n draft: 0,\n published: 0,\n modified: 0,\n };\n\n const totalCountEntries = draft + published + modified;\n\n return (\n <Grid>\n {Object.entries(keyStatisticsList).map(([key, item]) => {\n const value = countKeyStatistics?.[key as keyof typeof countKeyStatistics];\n return (\n value !== null && (\n <GridCell\n as={LinkCell}\n to={item.link}\n key={`key-statistics-${key}`}\n data-testid={`stat-${key}`}\n onClick={() => trackUsage('didOpenKeyStatisticsWidgetLink', { itemKey: key })}\n >\n <Flex alignItems=\"center\" gap={2}>\n <Flex\n padding={2}\n borderRadius={1}\n background={item.icon.background}\n color={item.icon.color}\n >\n {item.icon.component}\n </Flex>\n <Flex direction=\"column\" alignItems=\"flex-start\">\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral500\">\n {formatMessage(item.label)}\n </Typography>\n <Typography variant=\"omega\" fontWeight=\"bold\" textColor=\"neutral800\">\n {formatNumber({\n locale,\n number: key === 'entries' ? totalCountEntries : value,\n })}\n </Typography>\n </Flex>\n </Flex>\n </GridCell>\n )\n );\n })}\n </Grid>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DeployNowWidget\n * -----------------------------------------------------------------------------------------------*/\n\nconst DeployNowWidget = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex direction=\"column\" gap={4} height=\"100%\" alignItems=\"center\" justifyContent=\"center\">\n <CloudUpload width=\"3.2rem\" height=\"3.2rem\" />\n <Flex direction=\"column\" gap={2}>\n <Typography variant=\"beta\" textAlign=\"center\">\n {formatMessage({\n id: 'HomePage.widget.deploy-now.title',\n defaultMessage: 'Ready to go live ?',\n })}\n </Typography>\n <Typography variant=\"omega\" textColor=\"neutral600\" textAlign=\"center\">\n {formatMessage({\n id: 'HomePage.widget.deploy-now.description',\n defaultMessage: 'Deploy with Strapi Cloud',\n })}\n </Typography>\n </Flex>\n <LinkButton href=\"https://cloud.strapi.io/login\" isExternal size=\"L\" startIcon={<Cloud />}>\n {formatMessage({ id: 'HomePage.widget.deploy-now.button', defaultMessage: 'Deploy Now' })}\n </LinkButton>\n </Flex>\n );\n};\n\nexport { ProfileWidget, KeyStatisticsWidget, DeployNowWidget };\n"],"names":["DisplayNameTypography","styled","Typography","ProfileWidget","user","useAuth","state","userDisplayName","getDisplayName","initials","getInitials","_jsxs","Flex","direction","gap","height","justifyContent","_jsx","Avatar","Item","delayMs","fallback","fontWeight","textTransform","textAlign","email","variant","textColor","roles","length","marginTop","wrap","map","role","Badge","name","id","Grid","Box","theme","colors","neutral200","borderRadius","GridCell","formatNumber","locale","number","Intl","NumberFormat","notation","maximumFractionDigits","format","LinkCell","Link","spaces","KeyStatisticsWidget","trackUsage","useTracking","formatMessage","useIntl","data","countDocuments","isLoading","isLoadingCountDocuments","useGetCountDocumentsQuery","countKeyStatistics","isLoadingKeyStatistics","useGetKeyStatisticsQuery","Widget","Loading","Error","keyStatisticsList","entries","label","defaultMessage","icon","component","Files","background","color","link","assets","Images","contentTypes","Layout","components","Graph","locales","Earth","admins","User","webhooks","Webhooks","apiTokens","Key","draft","published","modified","totalCountEntries","Object","key","item","value","as","to","data-testid","onClick","itemKey","alignItems","padding","DeployNowWidget","CloudUpload","width","LinkButton","href","isExternal","size","startIcon","Cloud"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Plugin.js","sources":["../../../../../../admin/src/core/apis/Plugin.ts"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { immerable } from 'immer';\n\nexport interface PluginConfig\n extends Partial<Pick<Plugin, 'apis' | 'initializer' | 'injectionZones' | 'isReady'>> {\n name: string;\n id: string;\n}\n\nexport class Plugin {\n [immerable] = true;\n\n apis: Record<string, unknown>;\n initializer: React.ComponentType<{ setPlugin(pluginId: string): void }> | null;\n injectionZones: Record<\n string,\n Record<string, Array<{ name: string; Component: React.ComponentType }>>\n >;\n isReady: boolean;\n name: string;\n pluginId: PluginConfig['id'];\n\n constructor(pluginConf: PluginConfig) {\n this.apis = pluginConf.apis || {};\n this.initializer = pluginConf.initializer || null;\n this.injectionZones = pluginConf.injectionZones || {};\n this.isReady = pluginConf.isReady !== undefined ? pluginConf.isReady : true;\n this.name = pluginConf.name;\n this.pluginId = pluginConf.id;\n }\n\n getInjectedComponents(containerName: string, blockName: string) {\n try {\n return this.injectionZones[containerName][blockName] || [];\n } catch (err) {\n console.error('Cannot get injected component', err);\n\n return [];\n }\n }\n\n injectComponent(\n containerName: string,\n blockName: string,\n component: { name: string; Component: React.ComponentType }\n ) {\n try {\n this.injectionZones[containerName][blockName].push(component);\n } catch (err) {\n console.error('Cannot inject component', err);\n }\n }\n}\n"],"names":["Plugin","getInjectedComponents","containerName","blockName","injectionZones","err","console","error","injectComponent","component","push","pluginConf","immerable","apis","initializer","isReady","undefined","name","pluginId","id"],"mappings":";;;;AAWO,MAAMA,MAAAA,CAAAA;IAsBXC,qBAAAA,CAAsBC,aAAqB,EAAEC,SAAiB,EAAE;QAC9D,IAAI;YACF,OAAO,IAAI,CAACC,cAAc,CAACF,cAAc,CAACC,SAAAA,CAAU,IAAI,EAAE;AAC5D,QAAA,CAAA,CAAE,OAAOE,GAAAA,EAAK;YACZC,OAAAA,CAAQC,KAAK,CAAC,+BAAA,EAAiCF,GAAAA,CAAAA;AAE/C,YAAA,OAAO,EAAE;AACX,QAAA;AACF,IAAA;AAEAG,IAAAA,eAAAA,CACEN,aAAqB,EACrBC,SAAiB,EACjBM,SAA2D,EAC3D;QACA,IAAI;YACF,IAAI,CAACL,cAAc,CAACF,aAAAA,CAAc,CAACC,SAAAA,CAAU,CAACO,IAAI,CAACD,SAAAA,CAAAA;AACrD,QAAA,CAAA,CAAE,OAAOJ,GAAAA,EAAK;YACZC,OAAAA,CAAQC,KAAK,CAAC,yBAAA,EAA2BF,GAAAA,CAAAA;AAC3C,QAAA;AACF,IAAA;AA7BA,IAAA,WAAA,CAAYM,UAAwB,CAAE;AAZtC,QAAA,IAAA,CAACC,gBAAU,GAAG,IAAA;AAaZ,QAAA,IAAI,CAACC,IAAI,GAAGF,UAAAA,CAAWE,IAAI,IAAI,EAAC;AAChC,QAAA,IAAI,CAACC,WAAW,GAAGH,UAAAA,CAAWG,WAAW,IAAI,IAAA;AAC7C,QAAA,IAAI,CAACV,cAAc,GAAGO,UAAAA,CAAWP,cAAc,IAAI,EAAC;QACpD,IAAI,CAACW,OAAO,GAAGJ,UAAAA,CAAWI,OAAO,KAAKC,SAAAA,GAAYL,UAAAA,CAAWI,OAAO,GAAG,IAAA;AACvE,QAAA,IAAI,CAACE,IAAI,GAAGN,UAAAA,CAAWM,IAAI;AAC3B,QAAA,IAAI,CAACC,QAAQ,GAAGP,UAAAA,CAAWQ,EAAE;AAC/B,IAAA;AAuBF;;;;"}
1
+ {"version":3,"file":"Plugin.js","sources":["../../../../../../admin/src/core/apis/Plugin.ts"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { immerable } from 'immer';\n\nexport interface PluginConfig\n extends Partial<Pick<Plugin, 'apis' | 'initializer' | 'injectionZones' | 'isReady'>> {\n name: string;\n id: string;\n}\n\nexport class Plugin {\n [immerable] = true;\n\n apis: Record<string, unknown>;\n initializer: React.ComponentType<{ setPlugin(_pluginId: string): void }> | null;\n injectionZones: Record<\n string,\n Record<string, Array<{ name: string; Component: React.ComponentType }>>\n >;\n isReady: boolean;\n name: string;\n pluginId: PluginConfig['id'];\n\n constructor(pluginConf: PluginConfig) {\n this.apis = pluginConf.apis || {};\n this.initializer = pluginConf.initializer || null;\n this.injectionZones = pluginConf.injectionZones || {};\n this.isReady = pluginConf.isReady !== undefined ? pluginConf.isReady : true;\n this.name = pluginConf.name;\n this.pluginId = pluginConf.id;\n }\n\n getInjectedComponents(containerName: string, blockName: string) {\n try {\n return this.injectionZones[containerName][blockName] || [];\n } catch (err) {\n console.error('Cannot get injected component', err);\n\n return [];\n }\n }\n\n injectComponent(\n containerName: string,\n blockName: string,\n component: { name: string; Component: React.ComponentType }\n ) {\n try {\n this.injectionZones[containerName][blockName].push(component);\n } catch (err) {\n console.error('Cannot inject component', err);\n }\n }\n}\n"],"names":["Plugin","getInjectedComponents","containerName","blockName","injectionZones","err","console","error","injectComponent","component","push","pluginConf","immerable","apis","initializer","isReady","undefined","name","pluginId","id"],"mappings":";;;;AAWO,MAAMA,MAAAA,CAAAA;IAsBXC,qBAAAA,CAAsBC,aAAqB,EAAEC,SAAiB,EAAE;QAC9D,IAAI;YACF,OAAO,IAAI,CAACC,cAAc,CAACF,cAAc,CAACC,SAAAA,CAAU,IAAI,EAAE;AAC5D,QAAA,CAAA,CAAE,OAAOE,GAAAA,EAAK;YACZC,OAAAA,CAAQC,KAAK,CAAC,+BAAA,EAAiCF,GAAAA,CAAAA;AAE/C,YAAA,OAAO,EAAE;AACX,QAAA;AACF,IAAA;AAEAG,IAAAA,eAAAA,CACEN,aAAqB,EACrBC,SAAiB,EACjBM,SAA2D,EAC3D;QACA,IAAI;YACF,IAAI,CAACL,cAAc,CAACF,aAAAA,CAAc,CAACC,SAAAA,CAAU,CAACO,IAAI,CAACD,SAAAA,CAAAA;AACrD,QAAA,CAAA,CAAE,OAAOJ,GAAAA,EAAK;YACZC,OAAAA,CAAQC,KAAK,CAAC,yBAAA,EAA2BF,GAAAA,CAAAA;AAC3C,QAAA;AACF,IAAA;AA7BA,IAAA,WAAA,CAAYM,UAAwB,CAAE;AAZtC,QAAA,IAAA,CAACC,gBAAU,GAAG,IAAA;AAaZ,QAAA,IAAI,CAACC,IAAI,GAAGF,UAAAA,CAAWE,IAAI,IAAI,EAAC;AAChC,QAAA,IAAI,CAACC,WAAW,GAAGH,UAAAA,CAAWG,WAAW,IAAI,IAAA;AAC7C,QAAA,IAAI,CAACV,cAAc,GAAGO,UAAAA,CAAWP,cAAc,IAAI,EAAC;QACpD,IAAI,CAACW,OAAO,GAAGJ,UAAAA,CAAWI,OAAO,KAAKC,SAAAA,GAAYL,UAAAA,CAAWI,OAAO,GAAG,IAAA;AACvE,QAAA,IAAI,CAACE,IAAI,GAAGN,UAAAA,CAAWM,IAAI;AAC3B,QAAA,IAAI,CAACC,QAAQ,GAAGP,UAAAA,CAAWQ,EAAE;AAC/B,IAAA;AAuBF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Plugin.mjs","sources":["../../../../../../admin/src/core/apis/Plugin.ts"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { immerable } from 'immer';\n\nexport interface PluginConfig\n extends Partial<Pick<Plugin, 'apis' | 'initializer' | 'injectionZones' | 'isReady'>> {\n name: string;\n id: string;\n}\n\nexport class Plugin {\n [immerable] = true;\n\n apis: Record<string, unknown>;\n initializer: React.ComponentType<{ setPlugin(pluginId: string): void }> | null;\n injectionZones: Record<\n string,\n Record<string, Array<{ name: string; Component: React.ComponentType }>>\n >;\n isReady: boolean;\n name: string;\n pluginId: PluginConfig['id'];\n\n constructor(pluginConf: PluginConfig) {\n this.apis = pluginConf.apis || {};\n this.initializer = pluginConf.initializer || null;\n this.injectionZones = pluginConf.injectionZones || {};\n this.isReady = pluginConf.isReady !== undefined ? pluginConf.isReady : true;\n this.name = pluginConf.name;\n this.pluginId = pluginConf.id;\n }\n\n getInjectedComponents(containerName: string, blockName: string) {\n try {\n return this.injectionZones[containerName][blockName] || [];\n } catch (err) {\n console.error('Cannot get injected component', err);\n\n return [];\n }\n }\n\n injectComponent(\n containerName: string,\n blockName: string,\n component: { name: string; Component: React.ComponentType }\n ) {\n try {\n this.injectionZones[containerName][blockName].push(component);\n } catch (err) {\n console.error('Cannot inject component', err);\n }\n }\n}\n"],"names":["Plugin","getInjectedComponents","containerName","blockName","injectionZones","err","console","error","injectComponent","component","push","pluginConf","immerable","apis","initializer","isReady","undefined","name","pluginId","id"],"mappings":";;AAWO,MAAMA,MAAAA,CAAAA;IAsBXC,qBAAAA,CAAsBC,aAAqB,EAAEC,SAAiB,EAAE;QAC9D,IAAI;YACF,OAAO,IAAI,CAACC,cAAc,CAACF,cAAc,CAACC,SAAAA,CAAU,IAAI,EAAE;AAC5D,QAAA,CAAA,CAAE,OAAOE,GAAAA,EAAK;YACZC,OAAAA,CAAQC,KAAK,CAAC,+BAAA,EAAiCF,GAAAA,CAAAA;AAE/C,YAAA,OAAO,EAAE;AACX,QAAA;AACF,IAAA;AAEAG,IAAAA,eAAAA,CACEN,aAAqB,EACrBC,SAAiB,EACjBM,SAA2D,EAC3D;QACA,IAAI;YACF,IAAI,CAACL,cAAc,CAACF,aAAAA,CAAc,CAACC,SAAAA,CAAU,CAACO,IAAI,CAACD,SAAAA,CAAAA;AACrD,QAAA,CAAA,CAAE,OAAOJ,GAAAA,EAAK;YACZC,OAAAA,CAAQC,KAAK,CAAC,yBAAA,EAA2BF,GAAAA,CAAAA;AAC3C,QAAA;AACF,IAAA;AA7BA,IAAA,WAAA,CAAYM,UAAwB,CAAE;AAZtC,QAAA,IAAA,CAACC,UAAU,GAAG,IAAA;AAaZ,QAAA,IAAI,CAACC,IAAI,GAAGF,UAAAA,CAAWE,IAAI,IAAI,EAAC;AAChC,QAAA,IAAI,CAACC,WAAW,GAAGH,UAAAA,CAAWG,WAAW,IAAI,IAAA;AAC7C,QAAA,IAAI,CAACV,cAAc,GAAGO,UAAAA,CAAWP,cAAc,IAAI,EAAC;QACpD,IAAI,CAACW,OAAO,GAAGJ,UAAAA,CAAWI,OAAO,KAAKC,SAAAA,GAAYL,UAAAA,CAAWI,OAAO,GAAG,IAAA;AACvE,QAAA,IAAI,CAACE,IAAI,GAAGN,UAAAA,CAAWM,IAAI;AAC3B,QAAA,IAAI,CAACC,QAAQ,GAAGP,UAAAA,CAAWQ,EAAE;AAC/B,IAAA;AAuBF;;;;"}
1
+ {"version":3,"file":"Plugin.mjs","sources":["../../../../../../admin/src/core/apis/Plugin.ts"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { immerable } from 'immer';\n\nexport interface PluginConfig\n extends Partial<Pick<Plugin, 'apis' | 'initializer' | 'injectionZones' | 'isReady'>> {\n name: string;\n id: string;\n}\n\nexport class Plugin {\n [immerable] = true;\n\n apis: Record<string, unknown>;\n initializer: React.ComponentType<{ setPlugin(_pluginId: string): void }> | null;\n injectionZones: Record<\n string,\n Record<string, Array<{ name: string; Component: React.ComponentType }>>\n >;\n isReady: boolean;\n name: string;\n pluginId: PluginConfig['id'];\n\n constructor(pluginConf: PluginConfig) {\n this.apis = pluginConf.apis || {};\n this.initializer = pluginConf.initializer || null;\n this.injectionZones = pluginConf.injectionZones || {};\n this.isReady = pluginConf.isReady !== undefined ? pluginConf.isReady : true;\n this.name = pluginConf.name;\n this.pluginId = pluginConf.id;\n }\n\n getInjectedComponents(containerName: string, blockName: string) {\n try {\n return this.injectionZones[containerName][blockName] || [];\n } catch (err) {\n console.error('Cannot get injected component', err);\n\n return [];\n }\n }\n\n injectComponent(\n containerName: string,\n blockName: string,\n component: { name: string; Component: React.ComponentType }\n ) {\n try {\n this.injectionZones[containerName][blockName].push(component);\n } catch (err) {\n console.error('Cannot inject component', err);\n }\n }\n}\n"],"names":["Plugin","getInjectedComponents","containerName","blockName","injectionZones","err","console","error","injectComponent","component","push","pluginConf","immerable","apis","initializer","isReady","undefined","name","pluginId","id"],"mappings":";;AAWO,MAAMA,MAAAA,CAAAA;IAsBXC,qBAAAA,CAAsBC,aAAqB,EAAEC,SAAiB,EAAE;QAC9D,IAAI;YACF,OAAO,IAAI,CAACC,cAAc,CAACF,cAAc,CAACC,SAAAA,CAAU,IAAI,EAAE;AAC5D,QAAA,CAAA,CAAE,OAAOE,GAAAA,EAAK;YACZC,OAAAA,CAAQC,KAAK,CAAC,+BAAA,EAAiCF,GAAAA,CAAAA;AAE/C,YAAA,OAAO,EAAE;AACX,QAAA;AACF,IAAA;AAEAG,IAAAA,eAAAA,CACEN,aAAqB,EACrBC,SAAiB,EACjBM,SAA2D,EAC3D;QACA,IAAI;YACF,IAAI,CAACL,cAAc,CAACF,aAAAA,CAAc,CAACC,SAAAA,CAAU,CAACO,IAAI,CAACD,SAAAA,CAAAA;AACrD,QAAA,CAAA,CAAE,OAAOJ,GAAAA,EAAK;YACZC,OAAAA,CAAQC,KAAK,CAAC,yBAAA,EAA2BF,GAAAA,CAAAA;AAC3C,QAAA;AACF,IAAA;AA7BA,IAAA,WAAA,CAAYM,UAAwB,CAAE;AAZtC,QAAA,IAAA,CAACC,UAAU,GAAG,IAAA;AAaZ,QAAA,IAAI,CAACC,IAAI,GAAGF,UAAAA,CAAWE,IAAI,IAAI,EAAC;AAChC,QAAA,IAAI,CAACC,WAAW,GAAGH,UAAAA,CAAWG,WAAW,IAAI,IAAA;AAC7C,QAAA,IAAI,CAACV,cAAc,GAAGO,UAAAA,CAAWP,cAAc,IAAI,EAAC;QACpD,IAAI,CAACW,OAAO,GAAGJ,UAAAA,CAAWI,OAAO,KAAKC,SAAAA,GAAYL,UAAAA,CAAWI,OAAO,GAAG,IAAA;AACvE,QAAA,IAAI,CAACE,IAAI,GAAGN,UAAAA,CAAWM,IAAI;AAC3B,QAAA,IAAI,CAACC,QAAQ,GAAGP,UAAAA,CAAWQ,EAAE;AAC/B,IAAA;AAuBF;;;;"}
@@ -41,7 +41,7 @@ class Widgets {
41
41
  };
42
42
  this.getAll = ()=>{
43
43
  return this.widgets.map((widget)=>{
44
- const { id, pluginId, ...widgetBase } = widget;
44
+ const { id: _id, pluginId: _pluginId, ...widgetBase } = widget;
45
45
  return {
46
46
  ...widgetBase,
47
47
  uid: this.generateUid(widget)
@@ -1 +1 @@
1
- {"version":3,"file":"Widgets.js","sources":["../../../../../../admin/src/core/apis/Widgets.ts"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\n\nimport invariant from 'invariant';\nimport { To } from 'react-router-dom';\n\nimport { Permission } from '../../../../shared/contracts/shared';\n\nimport type { Internal, Utils } from '@strapi/types';\nimport type { MessageDescriptor } from 'react-intl';\n\ntype WidgetUID = Utils.String.Suffix<\n | Internal.Namespace.WithSeparator<Internal.Namespace.Plugin>\n | Internal.Namespace.WithSeparator<Internal.Namespace.Global>,\n string\n>;\n\ntype WidgetArgs = {\n icon?: typeof import('@strapi/icons').PuzzlePiece;\n title: MessageDescriptor;\n link?: {\n label: MessageDescriptor;\n href: To;\n };\n component: () => Promise<React.ComponentType>;\n pluginId?: string;\n id: string;\n permissions?: Array<Pick<Permission, 'action'> & Partial<Omit<Permission, 'action'>>>;\n roles?: string[];\n};\n\ntype WidgetWithUID = Omit<WidgetArgs, 'id' | 'pluginId'> & { uid: WidgetUID };\n\ntype DescriptionReducer = (prev: WidgetArgs[]) => WidgetArgs[];\n\nclass Widgets {\n widgets: WidgetArgs[];\n\n constructor() {\n this.widgets = [];\n }\n\n private generateUid = (widget: WidgetArgs): WidgetUID => {\n return widget.pluginId ? `plugin::${widget.pluginId}.${widget.id}` : `global::${widget.id}`;\n };\n\n private checkWidgets = (widgets: WidgetArgs[]): void => {\n widgets.forEach((widget) => {\n invariant(widget.id, 'An id must be provided');\n invariant(widget.component, 'A component must be provided');\n invariant(widget.title, 'A title must be provided');\n invariant(widget.icon, 'An icon must be provided');\n });\n };\n\n register(widgets: WidgetArgs | WidgetArgs[] | DescriptionReducer) {\n if (Array.isArray(widgets)) {\n this.checkWidgets(widgets);\n this.widgets = [...this.widgets, ...widgets];\n } else if (typeof widgets === 'function') {\n const newWidgets = widgets(this.widgets);\n this.checkWidgets(newWidgets);\n this.widgets = newWidgets;\n } else if (typeof widgets === 'object') {\n this.checkWidgets([widgets]);\n this.widgets.push(widgets);\n } else {\n throw new Error('Expected widgets to be an array or a reducer function');\n }\n }\n\n getAll = (): WidgetWithUID[] => {\n return this.widgets.map((widget) => {\n const { id, pluginId, ...widgetBase } = widget;\n return {\n ...widgetBase,\n uid: this.generateUid(widget),\n };\n });\n };\n}\n\nexport { Widgets };\nexport type { WidgetArgs, WidgetWithUID };\n"],"names":["Widgets","register","widgets","Array","isArray","checkWidgets","newWidgets","push","Error","generateUid","widget","pluginId","id","forEach","invariant","component","title","icon","getAll","map","widgetBase","uid"],"mappings":";;;;;;;;AAkCA,MAAMA,OAAAA,CAAAA;AAoBJC,IAAAA,QAAAA,CAASC,OAAuD,EAAE;QAChE,IAAIC,KAAAA,CAAMC,OAAO,CAACF,OAAAA,CAAAA,EAAU;YAC1B,IAAI,CAACG,YAAY,CAACH,OAAAA,CAAAA;YAClB,IAAI,CAACA,OAAO,GAAG;AAAI,gBAAA,GAAA,IAAI,CAACA,OAAO;AAAKA,gBAAAA,GAAAA;AAAQ,aAAA;QAC9C,CAAA,MAAO,IAAI,OAAOA,OAAAA,KAAY,UAAA,EAAY;AACxC,YAAA,MAAMI,UAAAA,GAAaJ,OAAAA,CAAQ,IAAI,CAACA,OAAO,CAAA;YACvC,IAAI,CAACG,YAAY,CAACC,UAAAA,CAAAA;YAClB,IAAI,CAACJ,OAAO,GAAGI,UAAAA;QACjB,CAAA,MAAO,IAAI,OAAOJ,OAAAA,KAAY,QAAA,EAAU;YACtC,IAAI,CAACG,YAAY,CAAC;AAACH,gBAAAA;AAAQ,aAAA,CAAA;AAC3B,YAAA,IAAI,CAACA,OAAO,CAACK,IAAI,CAACL,OAAAA,CAAAA;QACpB,CAAA,MAAO;AACL,YAAA,MAAM,IAAIM,KAAAA,CAAM,uDAAA,CAAA;AAClB,QAAA;AACF,IAAA;IA/BA,WAAA,EAAc;AAINC,QAAAA,IAAAA,CAAAA,WAAAA,GAAc,CAACC,MAAAA,GAAAA;YACrB,OAAOA,MAAAA,CAAOC,QAAQ,GAAG,CAAC,QAAQ,EAAED,MAAAA,CAAOC,QAAQ,CAAC,CAAC,EAAED,MAAAA,CAAOE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAEF,MAAAA,CAAOE,EAAE,CAAA,CAAE;AAC7F,QAAA,CAAA;AAEQP,QAAAA,IAAAA,CAAAA,YAAAA,GAAe,CAACH,OAAAA,GAAAA;YACtBA,OAAAA,CAAQW,OAAO,CAAC,CAACH,MAAAA,GAAAA;gBACfI,0BAAAA,CAAUJ,MAAAA,CAAOE,EAAE,EAAE,wBAAA,CAAA;gBACrBE,0BAAAA,CAAUJ,MAAAA,CAAOK,SAAS,EAAE,8BAAA,CAAA;gBAC5BD,0BAAAA,CAAUJ,MAAAA,CAAOM,KAAK,EAAE,0BAAA,CAAA;gBACxBF,0BAAAA,CAAUJ,MAAAA,CAAOO,IAAI,EAAE,0BAAA,CAAA;AACzB,YAAA,CAAA,CAAA;AACF,QAAA,CAAA;aAkBAC,MAAAA,GAAS,IAAA;AACP,YAAA,OAAO,IAAI,CAAChB,OAAO,CAACiB,GAAG,CAAC,CAACT,MAAAA,GAAAA;AACvB,gBAAA,MAAM,EAAEE,EAAE,EAAED,QAAQ,EAAE,GAAGS,YAAY,GAAGV,MAAAA;gBACxC,OAAO;AACL,oBAAA,GAAGU,UAAU;oBACbC,GAAAA,EAAK,IAAI,CAACZ,WAAW,CAACC,MAAAA;AACxB,iBAAA;AACF,YAAA,CAAA,CAAA;AACF,QAAA,CAAA;QAxCE,IAAI,CAACR,OAAO,GAAG,EAAE;AACnB,IAAA;AAwCF;;;;"}
1
+ {"version":3,"file":"Widgets.js","sources":["../../../../../../admin/src/core/apis/Widgets.ts"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\n\nimport invariant from 'invariant';\nimport { To } from 'react-router-dom';\n\nimport { Permission } from '../../../../shared/contracts/shared';\n\nimport type { Internal, Utils } from '@strapi/types';\nimport type { MessageDescriptor } from 'react-intl';\n\ntype WidgetUID = Utils.String.Suffix<\n | Internal.Namespace.WithSeparator<Internal.Namespace.Plugin>\n | Internal.Namespace.WithSeparator<Internal.Namespace.Global>,\n string\n>;\n\ntype WidgetArgs = {\n icon?: typeof import('@strapi/icons').PuzzlePiece;\n title: MessageDescriptor;\n link?: {\n label: MessageDescriptor;\n href: To;\n };\n component: () => Promise<React.ComponentType>;\n pluginId?: string;\n id: string;\n permissions?: Array<Pick<Permission, 'action'> & Partial<Omit<Permission, 'action'>>>;\n roles?: string[];\n};\n\ntype WidgetWithUID = Omit<WidgetArgs, 'id' | 'pluginId'> & { uid: WidgetUID };\n\ntype DescriptionReducer = (prev: WidgetArgs[]) => WidgetArgs[];\n\nclass Widgets {\n widgets: WidgetArgs[];\n\n constructor() {\n this.widgets = [];\n }\n\n private generateUid = (widget: WidgetArgs): WidgetUID => {\n return widget.pluginId ? `plugin::${widget.pluginId}.${widget.id}` : `global::${widget.id}`;\n };\n\n private checkWidgets = (widgets: WidgetArgs[]): void => {\n widgets.forEach((widget) => {\n invariant(widget.id, 'An id must be provided');\n invariant(widget.component, 'A component must be provided');\n invariant(widget.title, 'A title must be provided');\n invariant(widget.icon, 'An icon must be provided');\n });\n };\n\n register(widgets: WidgetArgs | WidgetArgs[] | DescriptionReducer) {\n if (Array.isArray(widgets)) {\n this.checkWidgets(widgets);\n this.widgets = [...this.widgets, ...widgets];\n } else if (typeof widgets === 'function') {\n const newWidgets = widgets(this.widgets);\n this.checkWidgets(newWidgets);\n this.widgets = newWidgets;\n } else if (typeof widgets === 'object') {\n this.checkWidgets([widgets]);\n this.widgets.push(widgets);\n } else {\n throw new Error('Expected widgets to be an array or a reducer function');\n }\n }\n\n getAll = (): WidgetWithUID[] => {\n return this.widgets.map((widget) => {\n const { id: _id, pluginId: _pluginId, ...widgetBase } = widget;\n return {\n ...widgetBase,\n uid: this.generateUid(widget),\n };\n });\n };\n}\n\nexport { Widgets };\nexport type { WidgetArgs, WidgetWithUID };\n"],"names":["Widgets","register","widgets","Array","isArray","checkWidgets","newWidgets","push","Error","generateUid","widget","pluginId","id","forEach","invariant","component","title","icon","getAll","map","_id","_pluginId","widgetBase","uid"],"mappings":";;;;;;;;AAkCA,MAAMA,OAAAA,CAAAA;AAoBJC,IAAAA,QAAAA,CAASC,OAAuD,EAAE;QAChE,IAAIC,KAAAA,CAAMC,OAAO,CAACF,OAAAA,CAAAA,EAAU;YAC1B,IAAI,CAACG,YAAY,CAACH,OAAAA,CAAAA;YAClB,IAAI,CAACA,OAAO,GAAG;AAAI,gBAAA,GAAA,IAAI,CAACA,OAAO;AAAKA,gBAAAA,GAAAA;AAAQ,aAAA;QAC9C,CAAA,MAAO,IAAI,OAAOA,OAAAA,KAAY,UAAA,EAAY;AACxC,YAAA,MAAMI,UAAAA,GAAaJ,OAAAA,CAAQ,IAAI,CAACA,OAAO,CAAA;YACvC,IAAI,CAACG,YAAY,CAACC,UAAAA,CAAAA;YAClB,IAAI,CAACJ,OAAO,GAAGI,UAAAA;QACjB,CAAA,MAAO,IAAI,OAAOJ,OAAAA,KAAY,QAAA,EAAU;YACtC,IAAI,CAACG,YAAY,CAAC;AAACH,gBAAAA;AAAQ,aAAA,CAAA;AAC3B,YAAA,IAAI,CAACA,OAAO,CAACK,IAAI,CAACL,OAAAA,CAAAA;QACpB,CAAA,MAAO;AACL,YAAA,MAAM,IAAIM,KAAAA,CAAM,uDAAA,CAAA;AAClB,QAAA;AACF,IAAA;IA/BA,WAAA,EAAc;AAINC,QAAAA,IAAAA,CAAAA,WAAAA,GAAc,CAACC,MAAAA,GAAAA;YACrB,OAAOA,MAAAA,CAAOC,QAAQ,GAAG,CAAC,QAAQ,EAAED,MAAAA,CAAOC,QAAQ,CAAC,CAAC,EAAED,MAAAA,CAAOE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAEF,MAAAA,CAAOE,EAAE,CAAA,CAAE;AAC7F,QAAA,CAAA;AAEQP,QAAAA,IAAAA,CAAAA,YAAAA,GAAe,CAACH,OAAAA,GAAAA;YACtBA,OAAAA,CAAQW,OAAO,CAAC,CAACH,MAAAA,GAAAA;gBACfI,0BAAAA,CAAUJ,MAAAA,CAAOE,EAAE,EAAE,wBAAA,CAAA;gBACrBE,0BAAAA,CAAUJ,MAAAA,CAAOK,SAAS,EAAE,8BAAA,CAAA;gBAC5BD,0BAAAA,CAAUJ,MAAAA,CAAOM,KAAK,EAAE,0BAAA,CAAA;gBACxBF,0BAAAA,CAAUJ,MAAAA,CAAOO,IAAI,EAAE,0BAAA,CAAA;AACzB,YAAA,CAAA,CAAA;AACF,QAAA,CAAA;aAkBAC,MAAAA,GAAS,IAAA;AACP,YAAA,OAAO,IAAI,CAAChB,OAAO,CAACiB,GAAG,CAAC,CAACT,MAAAA,GAAAA;gBACvB,MAAM,EAAEE,IAAIQ,GAAG,EAAET,UAAUU,SAAS,EAAE,GAAGC,UAAAA,EAAY,GAAGZ,MAAAA;gBACxD,OAAO;AACL,oBAAA,GAAGY,UAAU;oBACbC,GAAAA,EAAK,IAAI,CAACd,WAAW,CAACC,MAAAA;AACxB,iBAAA;AACF,YAAA,CAAA,CAAA;AACF,QAAA,CAAA;QAxCE,IAAI,CAACR,OAAO,GAAG,EAAE;AACnB,IAAA;AAwCF;;;;"}
@@ -35,7 +35,7 @@ class Widgets {
35
35
  };
36
36
  this.getAll = ()=>{
37
37
  return this.widgets.map((widget)=>{
38
- const { id, pluginId, ...widgetBase } = widget;
38
+ const { id: _id, pluginId: _pluginId, ...widgetBase } = widget;
39
39
  return {
40
40
  ...widgetBase,
41
41
  uid: this.generateUid(widget)
@@ -1 +1 @@
1
- {"version":3,"file":"Widgets.mjs","sources":["../../../../../../admin/src/core/apis/Widgets.ts"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\n\nimport invariant from 'invariant';\nimport { To } from 'react-router-dom';\n\nimport { Permission } from '../../../../shared/contracts/shared';\n\nimport type { Internal, Utils } from '@strapi/types';\nimport type { MessageDescriptor } from 'react-intl';\n\ntype WidgetUID = Utils.String.Suffix<\n | Internal.Namespace.WithSeparator<Internal.Namespace.Plugin>\n | Internal.Namespace.WithSeparator<Internal.Namespace.Global>,\n string\n>;\n\ntype WidgetArgs = {\n icon?: typeof import('@strapi/icons').PuzzlePiece;\n title: MessageDescriptor;\n link?: {\n label: MessageDescriptor;\n href: To;\n };\n component: () => Promise<React.ComponentType>;\n pluginId?: string;\n id: string;\n permissions?: Array<Pick<Permission, 'action'> & Partial<Omit<Permission, 'action'>>>;\n roles?: string[];\n};\n\ntype WidgetWithUID = Omit<WidgetArgs, 'id' | 'pluginId'> & { uid: WidgetUID };\n\ntype DescriptionReducer = (prev: WidgetArgs[]) => WidgetArgs[];\n\nclass Widgets {\n widgets: WidgetArgs[];\n\n constructor() {\n this.widgets = [];\n }\n\n private generateUid = (widget: WidgetArgs): WidgetUID => {\n return widget.pluginId ? `plugin::${widget.pluginId}.${widget.id}` : `global::${widget.id}`;\n };\n\n private checkWidgets = (widgets: WidgetArgs[]): void => {\n widgets.forEach((widget) => {\n invariant(widget.id, 'An id must be provided');\n invariant(widget.component, 'A component must be provided');\n invariant(widget.title, 'A title must be provided');\n invariant(widget.icon, 'An icon must be provided');\n });\n };\n\n register(widgets: WidgetArgs | WidgetArgs[] | DescriptionReducer) {\n if (Array.isArray(widgets)) {\n this.checkWidgets(widgets);\n this.widgets = [...this.widgets, ...widgets];\n } else if (typeof widgets === 'function') {\n const newWidgets = widgets(this.widgets);\n this.checkWidgets(newWidgets);\n this.widgets = newWidgets;\n } else if (typeof widgets === 'object') {\n this.checkWidgets([widgets]);\n this.widgets.push(widgets);\n } else {\n throw new Error('Expected widgets to be an array or a reducer function');\n }\n }\n\n getAll = (): WidgetWithUID[] => {\n return this.widgets.map((widget) => {\n const { id, pluginId, ...widgetBase } = widget;\n return {\n ...widgetBase,\n uid: this.generateUid(widget),\n };\n });\n };\n}\n\nexport { Widgets };\nexport type { WidgetArgs, WidgetWithUID };\n"],"names":["Widgets","register","widgets","Array","isArray","checkWidgets","newWidgets","push","Error","generateUid","widget","pluginId","id","forEach","invariant","component","title","icon","getAll","map","widgetBase","uid"],"mappings":";;AAkCA,MAAMA,OAAAA,CAAAA;AAoBJC,IAAAA,QAAAA,CAASC,OAAuD,EAAE;QAChE,IAAIC,KAAAA,CAAMC,OAAO,CAACF,OAAAA,CAAAA,EAAU;YAC1B,IAAI,CAACG,YAAY,CAACH,OAAAA,CAAAA;YAClB,IAAI,CAACA,OAAO,GAAG;AAAI,gBAAA,GAAA,IAAI,CAACA,OAAO;AAAKA,gBAAAA,GAAAA;AAAQ,aAAA;QAC9C,CAAA,MAAO,IAAI,OAAOA,OAAAA,KAAY,UAAA,EAAY;AACxC,YAAA,MAAMI,UAAAA,GAAaJ,OAAAA,CAAQ,IAAI,CAACA,OAAO,CAAA;YACvC,IAAI,CAACG,YAAY,CAACC,UAAAA,CAAAA;YAClB,IAAI,CAACJ,OAAO,GAAGI,UAAAA;QACjB,CAAA,MAAO,IAAI,OAAOJ,OAAAA,KAAY,QAAA,EAAU;YACtC,IAAI,CAACG,YAAY,CAAC;AAACH,gBAAAA;AAAQ,aAAA,CAAA;AAC3B,YAAA,IAAI,CAACA,OAAO,CAACK,IAAI,CAACL,OAAAA,CAAAA;QACpB,CAAA,MAAO;AACL,YAAA,MAAM,IAAIM,KAAAA,CAAM,uDAAA,CAAA;AAClB,QAAA;AACF,IAAA;IA/BA,WAAA,EAAc;AAINC,QAAAA,IAAAA,CAAAA,WAAAA,GAAc,CAACC,MAAAA,GAAAA;YACrB,OAAOA,MAAAA,CAAOC,QAAQ,GAAG,CAAC,QAAQ,EAAED,MAAAA,CAAOC,QAAQ,CAAC,CAAC,EAAED,MAAAA,CAAOE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAEF,MAAAA,CAAOE,EAAE,CAAA,CAAE;AAC7F,QAAA,CAAA;AAEQP,QAAAA,IAAAA,CAAAA,YAAAA,GAAe,CAACH,OAAAA,GAAAA;YACtBA,OAAAA,CAAQW,OAAO,CAAC,CAACH,MAAAA,GAAAA;gBACfI,SAAAA,CAAUJ,MAAAA,CAAOE,EAAE,EAAE,wBAAA,CAAA;gBACrBE,SAAAA,CAAUJ,MAAAA,CAAOK,SAAS,EAAE,8BAAA,CAAA;gBAC5BD,SAAAA,CAAUJ,MAAAA,CAAOM,KAAK,EAAE,0BAAA,CAAA;gBACxBF,SAAAA,CAAUJ,MAAAA,CAAOO,IAAI,EAAE,0BAAA,CAAA;AACzB,YAAA,CAAA,CAAA;AACF,QAAA,CAAA;aAkBAC,MAAAA,GAAS,IAAA;AACP,YAAA,OAAO,IAAI,CAAChB,OAAO,CAACiB,GAAG,CAAC,CAACT,MAAAA,GAAAA;AACvB,gBAAA,MAAM,EAAEE,EAAE,EAAED,QAAQ,EAAE,GAAGS,YAAY,GAAGV,MAAAA;gBACxC,OAAO;AACL,oBAAA,GAAGU,UAAU;oBACbC,GAAAA,EAAK,IAAI,CAACZ,WAAW,CAACC,MAAAA;AACxB,iBAAA;AACF,YAAA,CAAA,CAAA;AACF,QAAA,CAAA;QAxCE,IAAI,CAACR,OAAO,GAAG,EAAE;AACnB,IAAA;AAwCF;;;;"}
1
+ {"version":3,"file":"Widgets.mjs","sources":["../../../../../../admin/src/core/apis/Widgets.ts"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\n\nimport invariant from 'invariant';\nimport { To } from 'react-router-dom';\n\nimport { Permission } from '../../../../shared/contracts/shared';\n\nimport type { Internal, Utils } from '@strapi/types';\nimport type { MessageDescriptor } from 'react-intl';\n\ntype WidgetUID = Utils.String.Suffix<\n | Internal.Namespace.WithSeparator<Internal.Namespace.Plugin>\n | Internal.Namespace.WithSeparator<Internal.Namespace.Global>,\n string\n>;\n\ntype WidgetArgs = {\n icon?: typeof import('@strapi/icons').PuzzlePiece;\n title: MessageDescriptor;\n link?: {\n label: MessageDescriptor;\n href: To;\n };\n component: () => Promise<React.ComponentType>;\n pluginId?: string;\n id: string;\n permissions?: Array<Pick<Permission, 'action'> & Partial<Omit<Permission, 'action'>>>;\n roles?: string[];\n};\n\ntype WidgetWithUID = Omit<WidgetArgs, 'id' | 'pluginId'> & { uid: WidgetUID };\n\ntype DescriptionReducer = (prev: WidgetArgs[]) => WidgetArgs[];\n\nclass Widgets {\n widgets: WidgetArgs[];\n\n constructor() {\n this.widgets = [];\n }\n\n private generateUid = (widget: WidgetArgs): WidgetUID => {\n return widget.pluginId ? `plugin::${widget.pluginId}.${widget.id}` : `global::${widget.id}`;\n };\n\n private checkWidgets = (widgets: WidgetArgs[]): void => {\n widgets.forEach((widget) => {\n invariant(widget.id, 'An id must be provided');\n invariant(widget.component, 'A component must be provided');\n invariant(widget.title, 'A title must be provided');\n invariant(widget.icon, 'An icon must be provided');\n });\n };\n\n register(widgets: WidgetArgs | WidgetArgs[] | DescriptionReducer) {\n if (Array.isArray(widgets)) {\n this.checkWidgets(widgets);\n this.widgets = [...this.widgets, ...widgets];\n } else if (typeof widgets === 'function') {\n const newWidgets = widgets(this.widgets);\n this.checkWidgets(newWidgets);\n this.widgets = newWidgets;\n } else if (typeof widgets === 'object') {\n this.checkWidgets([widgets]);\n this.widgets.push(widgets);\n } else {\n throw new Error('Expected widgets to be an array or a reducer function');\n }\n }\n\n getAll = (): WidgetWithUID[] => {\n return this.widgets.map((widget) => {\n const { id: _id, pluginId: _pluginId, ...widgetBase } = widget;\n return {\n ...widgetBase,\n uid: this.generateUid(widget),\n };\n });\n };\n}\n\nexport { Widgets };\nexport type { WidgetArgs, WidgetWithUID };\n"],"names":["Widgets","register","widgets","Array","isArray","checkWidgets","newWidgets","push","Error","generateUid","widget","pluginId","id","forEach","invariant","component","title","icon","getAll","map","_id","_pluginId","widgetBase","uid"],"mappings":";;AAkCA,MAAMA,OAAAA,CAAAA;AAoBJC,IAAAA,QAAAA,CAASC,OAAuD,EAAE;QAChE,IAAIC,KAAAA,CAAMC,OAAO,CAACF,OAAAA,CAAAA,EAAU;YAC1B,IAAI,CAACG,YAAY,CAACH,OAAAA,CAAAA;YAClB,IAAI,CAACA,OAAO,GAAG;AAAI,gBAAA,GAAA,IAAI,CAACA,OAAO;AAAKA,gBAAAA,GAAAA;AAAQ,aAAA;QAC9C,CAAA,MAAO,IAAI,OAAOA,OAAAA,KAAY,UAAA,EAAY;AACxC,YAAA,MAAMI,UAAAA,GAAaJ,OAAAA,CAAQ,IAAI,CAACA,OAAO,CAAA;YACvC,IAAI,CAACG,YAAY,CAACC,UAAAA,CAAAA;YAClB,IAAI,CAACJ,OAAO,GAAGI,UAAAA;QACjB,CAAA,MAAO,IAAI,OAAOJ,OAAAA,KAAY,QAAA,EAAU;YACtC,IAAI,CAACG,YAAY,CAAC;AAACH,gBAAAA;AAAQ,aAAA,CAAA;AAC3B,YAAA,IAAI,CAACA,OAAO,CAACK,IAAI,CAACL,OAAAA,CAAAA;QACpB,CAAA,MAAO;AACL,YAAA,MAAM,IAAIM,KAAAA,CAAM,uDAAA,CAAA;AAClB,QAAA;AACF,IAAA;IA/BA,WAAA,EAAc;AAINC,QAAAA,IAAAA,CAAAA,WAAAA,GAAc,CAACC,MAAAA,GAAAA;YACrB,OAAOA,MAAAA,CAAOC,QAAQ,GAAG,CAAC,QAAQ,EAAED,MAAAA,CAAOC,QAAQ,CAAC,CAAC,EAAED,MAAAA,CAAOE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAEF,MAAAA,CAAOE,EAAE,CAAA,CAAE;AAC7F,QAAA,CAAA;AAEQP,QAAAA,IAAAA,CAAAA,YAAAA,GAAe,CAACH,OAAAA,GAAAA;YACtBA,OAAAA,CAAQW,OAAO,CAAC,CAACH,MAAAA,GAAAA;gBACfI,SAAAA,CAAUJ,MAAAA,CAAOE,EAAE,EAAE,wBAAA,CAAA;gBACrBE,SAAAA,CAAUJ,MAAAA,CAAOK,SAAS,EAAE,8BAAA,CAAA;gBAC5BD,SAAAA,CAAUJ,MAAAA,CAAOM,KAAK,EAAE,0BAAA,CAAA;gBACxBF,SAAAA,CAAUJ,MAAAA,CAAOO,IAAI,EAAE,0BAAA,CAAA;AACzB,YAAA,CAAA,CAAA;AACF,QAAA,CAAA;aAkBAC,MAAAA,GAAS,IAAA;AACP,YAAA,OAAO,IAAI,CAAChB,OAAO,CAACiB,GAAG,CAAC,CAACT,MAAAA,GAAAA;gBACvB,MAAM,EAAEE,IAAIQ,GAAG,EAAET,UAAUU,SAAS,EAAE,GAAGC,UAAAA,EAAY,GAAGZ,MAAAA;gBACxD,OAAO;AACL,oBAAA,GAAGY,UAAU;oBACbC,GAAAA,EAAK,IAAI,CAACd,WAAW,CAACC,MAAAA;AACxB,iBAAA;AACF,YAAA,CAAA,CAAA;AACF,QAAA,CAAA;QAxCE,IAAI,CAACR,OAAO,GAAG,EAAE;AACnB,IAAA;AAwCF;;;;"}
@@ -11,6 +11,7 @@ var LanguageProvider = require('../../components/LanguageProvider.js');
11
11
  var Theme = require('../../components/Theme.js');
12
12
  var NotFoundPage = require('../../pages/NotFoundPage.js');
13
13
  var router = require('../../router.js');
14
+ var retryDynamicImport = require('../../utils/retryDynamicImport.js');
14
15
 
15
16
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
16
17
 
@@ -30,6 +31,22 @@ class Router {
30
31
  * @internal This method is used internally by Strapi to create the router.
31
32
  * It should not be used by plugins, doing so will likely break the application.
32
33
  */ createRouter(strapi, { memory, ...opts } = {}) {
34
+ const authenticatedLayoutRoute = {
35
+ path: '/*',
36
+ lazy: async ()=>{
37
+ const { PrivateAdminLayout } = await Promise.resolve().then(function () { return require('../../layouts/AuthenticatedLayout.js'); });
38
+ return {
39
+ Component: PrivateAdminLayout
40
+ };
41
+ },
42
+ children: [
43
+ ...this.routes,
44
+ {
45
+ path: '*',
46
+ element: /*#__PURE__*/ jsxRuntime.jsx(NotFoundPage.NotFoundPage, {})
47
+ }
48
+ ]
49
+ };
33
50
  const routes = [
34
51
  {
35
52
  path: '/*',
@@ -48,23 +65,8 @@ class Router {
48
65
  store: strapi.store
49
66
  }),
50
67
  children: [
51
- ...router.getImmutableRoutes(),
52
- {
53
- path: '/*',
54
- lazy: async ()=>{
55
- const { PrivateAdminLayout } = await Promise.resolve().then(function () { return require('../../layouts/AuthenticatedLayout.js'); });
56
- return {
57
- Component: PrivateAdminLayout
58
- };
59
- },
60
- children: [
61
- ...this.routes,
62
- {
63
- path: '*',
64
- element: /*#__PURE__*/ jsxRuntime.jsx(NotFoundPage.NotFoundPage, {})
65
- }
66
- ]
67
- }
68
+ ...retryDynamicImport.wrapRouteObjectsLazyWithRetry(router.getImmutableRoutes()),
69
+ retryDynamicImport.wrapRouteObjectLazyWithRetry(authenticatedLayoutRoute)
68
70
  ]
69
71
  }
70
72
  ];