@strapi/admin 5.6.0 → 5.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/dist/admin/{AdminSeatInfo-CfbjPdSS.mjs → AdminSeatInfo-Bpyschk4.mjs} +3 -3
  2. package/dist/admin/{AdminSeatInfo-CfbjPdSS.mjs.map → AdminSeatInfo-Bpyschk4.mjs.map} +1 -1
  3. package/dist/admin/{ApplicationInfoPage-DGet0m1z.mjs → ApplicationInfoPage-BlX64-1T.mjs} +5 -5
  4. package/dist/admin/{ApplicationInfoPage-DGet0m1z.mjs.map → ApplicationInfoPage-BlX64-1T.mjs.map} +1 -1
  5. package/dist/admin/{ApplicationInfoPage-__zpHK8U.js → ApplicationInfoPage-Cx9Z4tfk.js} +2 -2
  6. package/dist/admin/{ApplicationInfoPage-__zpHK8U.js.map → ApplicationInfoPage-Cx9Z4tfk.js.map} +1 -1
  7. package/dist/admin/{AuthResponse-CWs8VL81.mjs → AuthResponse-BI0D7fJC.mjs} +2 -2
  8. package/dist/admin/{AuthResponse-CWs8VL81.mjs.map → AuthResponse-BI0D7fJC.mjs.map} +1 -1
  9. package/dist/admin/{AuthenticatedLayout-CERzLY03.mjs → AuthenticatedLayout-Br8Ujef5.mjs} +11 -11
  10. package/dist/admin/{AuthenticatedLayout-CERzLY03.mjs.map → AuthenticatedLayout-Br8Ujef5.mjs.map} +1 -1
  11. package/dist/admin/{AuthenticatedLayout-CchQ7f0Q.js → AuthenticatedLayout-CCwt0AgG.js} +9 -9
  12. package/dist/admin/{AuthenticatedLayout-CchQ7f0Q.js.map → AuthenticatedLayout-CCwt0AgG.js.map} +1 -1
  13. package/dist/admin/{CreatePage-DfdEecPk.mjs → CreatePage-CaMDsF7E.mjs} +3 -3
  14. package/dist/admin/{CreatePage-DfdEecPk.mjs.map → CreatePage-CaMDsF7E.mjs.map} +1 -1
  15. package/dist/admin/{CreatePage-yGgGidu3.js → CreatePage-DtK2k2xj.js} +2 -2
  16. package/dist/admin/{CreatePage-yGgGidu3.js.map → CreatePage-DtK2k2xj.js.map} +1 -1
  17. package/dist/admin/{CreatePage-CPnVtQdL.js → CreatePage-Je194jpQ.js} +2 -2
  18. package/dist/admin/{CreatePage-CPnVtQdL.js.map → CreatePage-Je194jpQ.js.map} +1 -1
  19. package/dist/admin/{CreatePage-D_fsEi_M.mjs → CreatePage-cPI93IzV.mjs} +4 -4
  20. package/dist/admin/{CreatePage-D_fsEi_M.mjs.map → CreatePage-cPI93IzV.mjs.map} +1 -1
  21. package/dist/admin/{CreateView-CUFaRabp.js → CreateView-CKHDAAe9.js} +2 -2
  22. package/dist/admin/{CreateView-CUFaRabp.js.map → CreateView-CKHDAAe9.js.map} +1 -1
  23. package/dist/admin/{CreateView-DLtLs1ax.js → CreateView-CV1T_FkK.js} +2 -2
  24. package/dist/admin/{CreateView-DLtLs1ax.js.map → CreateView-CV1T_FkK.js.map} +1 -1
  25. package/dist/admin/{CreateView-DuIhzj5r.mjs → CreateView-CYhJZ4SU.mjs} +3 -3
  26. package/dist/admin/{CreateView-DuIhzj5r.mjs.map → CreateView-CYhJZ4SU.mjs.map} +1 -1
  27. package/dist/admin/{CreateView-Cj52m1Cx.mjs → CreateView-CYk_dMMs.mjs} +3 -3
  28. package/dist/admin/{CreateView-Cj52m1Cx.mjs.map → CreateView-CYk_dMMs.mjs.map} +1 -1
  29. package/dist/admin/{EditPage-tM4j7ixi.mjs → EditPage-CZPAEYlB.mjs} +5 -5
  30. package/dist/admin/{EditPage-tM4j7ixi.mjs.map → EditPage-CZPAEYlB.mjs.map} +1 -1
  31. package/dist/admin/{EditPage-BFnBbj_O.js → EditPage-DPnF8khi.js} +3 -3
  32. package/dist/admin/{EditPage-BFnBbj_O.js.map → EditPage-DPnF8khi.js.map} +1 -1
  33. package/dist/admin/{EditPage-DKw8vquT.mjs → EditPage-DTaqqKhx.mjs} +7 -7
  34. package/dist/admin/{EditPage-DKw8vquT.mjs.map → EditPage-DTaqqKhx.mjs.map} +1 -1
  35. package/dist/admin/{EditPage-BKCr-_61.js → EditPage-e1MbaksH.js} +3 -3
  36. package/dist/admin/{EditPage-BKCr-_61.js.map → EditPage-e1MbaksH.js.map} +1 -1
  37. package/dist/admin/{EditPage-B_teX0_W.js → EditPage-f8LeUPW3.js} +5 -5
  38. package/dist/admin/{EditPage-B_teX0_W.js.map → EditPage-f8LeUPW3.js.map} +1 -1
  39. package/dist/admin/{EditPage-DmCwq9lg.mjs → EditPage-qRfveoLn.mjs} +5 -5
  40. package/dist/admin/{EditPage-DmCwq9lg.mjs.map → EditPage-qRfveoLn.mjs.map} +1 -1
  41. package/dist/admin/{EditView-F6qKlUJj.mjs → EditView-Df6PVPAd.mjs} +4 -4
  42. package/dist/admin/{EditView-F6qKlUJj.mjs.map → EditView-Df6PVPAd.mjs.map} +1 -1
  43. package/dist/admin/{EditView-CcXlJX5m.js → EditView-IrrSxD_e.js} +3 -3
  44. package/dist/admin/{EditView-CcXlJX5m.js.map → EditView-IrrSxD_e.js.map} +1 -1
  45. package/dist/admin/{EditViewPage-WRs6SDk3.mjs → EditViewPage-BKnY-1Sj.mjs} +4 -4
  46. package/dist/admin/{EditViewPage-WRs6SDk3.mjs.map → EditViewPage-BKnY-1Sj.mjs.map} +1 -1
  47. package/dist/admin/{EditViewPage-D8leQHjU.js → EditViewPage-BNzM51al.js} +3 -3
  48. package/dist/admin/{EditViewPage-D8leQHjU.js.map → EditViewPage-BNzM51al.js.map} +1 -1
  49. package/dist/admin/{EventsTable-1Lwyttx6.mjs → EventsTable-DUz7EZyi.mjs} +2 -2
  50. package/dist/admin/{EventsTable-1Lwyttx6.mjs.map → EventsTable-DUz7EZyi.mjs.map} +1 -1
  51. package/dist/admin/{EventsTable-QXXuWW3U.js → EventsTable-fqzWSspG.js} +2 -2
  52. package/dist/admin/{EventsTable-QXXuWW3U.js.map → EventsTable-fqzWSspG.js.map} +1 -1
  53. package/dist/admin/HomePage-BcZ8G5Zk.js +375 -0
  54. package/dist/admin/HomePage-BcZ8G5Zk.js.map +1 -0
  55. package/dist/admin/{HomePage-CANB1HEn.js → HomePage-DAKopsM1.js} +2 -2
  56. package/dist/admin/HomePage-DAKopsM1.js.map +1 -0
  57. package/dist/admin/{HomePage-BcKeFpnc.mjs → HomePage-HuAhOTRQ.mjs} +3 -3
  58. package/dist/admin/HomePage-HuAhOTRQ.mjs.map +1 -0
  59. package/dist/admin/HomePage-NPjXohKj.mjs +350 -0
  60. package/dist/admin/HomePage-NPjXohKj.mjs.map +1 -0
  61. package/dist/admin/{InstalledPlugins-Chyea6Jt.mjs → InstalledPlugins-BDBDHjp1.mjs} +3 -3
  62. package/dist/admin/{InstalledPlugins-Chyea6Jt.mjs.map → InstalledPlugins-BDBDHjp1.mjs.map} +1 -1
  63. package/dist/admin/{InstalledPlugins-B_bI-CBz.js → InstalledPlugins-OsZRe2Mj.js} +2 -2
  64. package/dist/admin/{InstalledPlugins-B_bI-CBz.js.map → InstalledPlugins-OsZRe2Mj.js.map} +1 -1
  65. package/dist/admin/{Layout-CcWr6va_.js → Layout-BmPlcHQy.js} +3 -3
  66. package/dist/admin/{Layout-CcWr6va_.js.map → Layout-BmPlcHQy.js.map} +1 -1
  67. package/dist/admin/{Layout-TkS64Yl1.mjs → Layout-ZnQ6qK04.mjs} +5 -5
  68. package/dist/admin/{Layout-TkS64Yl1.mjs.map → Layout-ZnQ6qK04.mjs.map} +1 -1
  69. package/dist/admin/{ListPage-CP7hcUqH.js → ListPage-6TiKw8tv.js} +2 -2
  70. package/dist/admin/{ListPage-CP7hcUqH.js.map → ListPage-6TiKw8tv.js.map} +1 -1
  71. package/dist/admin/{ListPage-BEQmwBHz.js → ListPage-BVk9Y9nA.js} +2 -2
  72. package/dist/admin/{ListPage-BEQmwBHz.js.map → ListPage-BVk9Y9nA.js.map} +1 -1
  73. package/dist/admin/{ListPage-BX6bIW1R.mjs → ListPage-B_XyFDAF.mjs} +5 -5
  74. package/dist/admin/{ListPage-BX6bIW1R.mjs.map → ListPage-B_XyFDAF.mjs.map} +1 -1
  75. package/dist/admin/{ListPage-DRfqG74z.js → ListPage-BoJnuSeZ.js} +2 -2
  76. package/dist/admin/{ListPage-DRfqG74z.js.map → ListPage-BoJnuSeZ.js.map} +1 -1
  77. package/dist/admin/{ListPage-w3LcIP0T.mjs → ListPage-Bu63qBzy.mjs} +3 -3
  78. package/dist/admin/{ListPage-w3LcIP0T.mjs.map → ListPage-Bu63qBzy.mjs.map} +1 -1
  79. package/dist/admin/{ListPage-CD6ZO-Wp.mjs → ListPage-C0iLSqYo.mjs} +3 -3
  80. package/dist/admin/{ListPage-CD6ZO-Wp.mjs.map → ListPage-C0iLSqYo.mjs.map} +1 -1
  81. package/dist/admin/{ListPage-DmmTUnVG.js → ListPage-CtOOlqCn.js} +5 -5
  82. package/dist/admin/{ListPage-DmmTUnVG.js.map → ListPage-CtOOlqCn.js.map} +1 -1
  83. package/dist/admin/{ListPage-6AqXEX4y.mjs → ListPage-Da_2kaB7.mjs} +6 -6
  84. package/dist/admin/{ListPage-6AqXEX4y.mjs.map → ListPage-Da_2kaB7.mjs.map} +1 -1
  85. package/dist/admin/{ListPage-IsE6pk54.mjs → ListPage-YvkZI4Dz.mjs} +3 -3
  86. package/dist/admin/{ListPage-IsE6pk54.mjs.map → ListPage-YvkZI4Dz.mjs.map} +1 -1
  87. package/dist/admin/{ListPage-BcZC7g5g.js → ListPage-xSonCT19.js} +3 -3
  88. package/dist/admin/{ListPage-BcZC7g5g.js.map → ListPage-xSonCT19.js.map} +1 -1
  89. package/dist/admin/{ListView-fOGcorFr.mjs → ListView-CMiSzy7H.mjs} +4 -4
  90. package/dist/admin/{ListView-fOGcorFr.mjs.map → ListView-CMiSzy7H.mjs.map} +1 -1
  91. package/dist/admin/{ListView-CGwmzT8M.js → ListView-CeE2Qlyi.js} +3 -3
  92. package/dist/admin/{ListView-CGwmzT8M.js.map → ListView-CeE2Qlyi.js.map} +1 -1
  93. package/dist/admin/{ListView-buo5Vb7Z.js → ListView-Cr_P57s2.js} +3 -3
  94. package/dist/admin/{ListView-buo5Vb7Z.js.map → ListView-Cr_P57s2.js.map} +1 -1
  95. package/dist/admin/{ListView-Df-gIOv9.mjs → ListView-DhZFpqcJ.mjs} +4 -4
  96. package/dist/admin/{ListView-Df-gIOv9.mjs.map → ListView-DhZFpqcJ.mjs.map} +1 -1
  97. package/dist/admin/{Login-LmIF0yHO.js → Login-B-e6bger.js} +2 -2
  98. package/dist/admin/{Login-LmIF0yHO.js.map → Login-B-e6bger.js.map} +1 -1
  99. package/dist/admin/{Login-wOwE4WT_.mjs → Login-CKEdHx7A.mjs} +3 -3
  100. package/dist/admin/{Login-wOwE4WT_.mjs.map → Login-CKEdHx7A.mjs.map} +1 -1
  101. package/dist/admin/{MagicLinkEE-BNB-I3Lc.mjs → MagicLinkEE-DCazf_P2.mjs} +3 -3
  102. package/dist/admin/{MagicLinkEE-BNB-I3Lc.mjs.map → MagicLinkEE-DCazf_P2.mjs.map} +1 -1
  103. package/dist/admin/{MagicLinkEE-CzBtZH-_.js → MagicLinkEE-DYCH6Jl2.js} +3 -3
  104. package/dist/admin/{MagicLinkEE-CzBtZH-_.js.map → MagicLinkEE-DYCH6Jl2.js.map} +1 -1
  105. package/dist/admin/{MarketplacePage-ChPIl3Lm.mjs → MarketplacePage-CTbE4SlU.mjs} +3 -3
  106. package/dist/admin/{MarketplacePage-ChPIl3Lm.mjs.map → MarketplacePage-CTbE4SlU.mjs.map} +1 -1
  107. package/dist/admin/{MarketplacePage-YIaJ1AaI.js → MarketplacePage-DeH9a207.js} +2 -2
  108. package/dist/admin/{MarketplacePage-YIaJ1AaI.js.map → MarketplacePage-DeH9a207.js.map} +1 -1
  109. package/dist/admin/{Permissions-CqkJcZdu.mjs → Permissions-gB8QZDch.mjs} +2 -2
  110. package/dist/admin/{Permissions-CqkJcZdu.mjs.map → Permissions-gB8QZDch.mjs.map} +1 -1
  111. package/dist/admin/{PrivateRoute-CzKixo0E.mjs → PrivateRoute-DIxYvSni.mjs} +2 -2
  112. package/dist/admin/{PrivateRoute-CzKixo0E.mjs.map → PrivateRoute-DIxYvSni.mjs.map} +1 -1
  113. package/dist/admin/{ProfilePage-DuSEvyq3.mjs → ProfilePage-Bcb_ayAW.mjs} +4 -4
  114. package/dist/admin/{ProfilePage-DuSEvyq3.mjs.map → ProfilePage-Bcb_ayAW.mjs.map} +1 -1
  115. package/dist/admin/{ProfilePage-CqenohKy.js → ProfilePage-CD0uiMaE.js} +3 -3
  116. package/dist/admin/{ProfilePage-CqenohKy.js.map → ProfilePage-CD0uiMaE.js.map} +1 -1
  117. package/dist/admin/{PurchaseAuditLogs-CvvCh9tm.js → PurchaseAuditLogs-CHKqdqrY.js} +2 -2
  118. package/dist/admin/{PurchaseAuditLogs-CvvCh9tm.js.map → PurchaseAuditLogs-CHKqdqrY.js.map} +1 -1
  119. package/dist/admin/{PurchaseAuditLogs-C3Umrg-5.mjs → PurchaseAuditLogs-D9V7WucM.mjs} +2 -2
  120. package/dist/admin/{PurchaseAuditLogs-C3Umrg-5.mjs.map → PurchaseAuditLogs-D9V7WucM.mjs.map} +1 -1
  121. package/dist/admin/{PurchaseContentHistory-BuIZGUim.mjs → PurchaseContentHistory-CtiF0HJP.mjs} +2 -2
  122. package/dist/admin/{PurchaseContentHistory-BuIZGUim.mjs.map → PurchaseContentHistory-CtiF0HJP.mjs.map} +1 -1
  123. package/dist/admin/{PurchaseContentHistory-CYt2Dx35.js → PurchaseContentHistory-eOg1pQvg.js} +2 -2
  124. package/dist/admin/{PurchaseContentHistory-CYt2Dx35.js.map → PurchaseContentHistory-eOg1pQvg.js.map} +1 -1
  125. package/dist/admin/{PurchaseSingleSignOn-LeXIHRh2.js → PurchaseSingleSignOn-C4Mthjnp.js} +2 -2
  126. package/dist/admin/{PurchaseSingleSignOn-LeXIHRh2.js.map → PurchaseSingleSignOn-C4Mthjnp.js.map} +1 -1
  127. package/dist/admin/{PurchaseSingleSignOn-m3wEJIYm.mjs → PurchaseSingleSignOn-Dfg-RTXq.mjs} +2 -2
  128. package/dist/admin/{PurchaseSingleSignOn-m3wEJIYm.mjs.map → PurchaseSingleSignOn-Dfg-RTXq.mjs.map} +1 -1
  129. package/dist/admin/RelativeTime-BGJ1PWx_.mjs +38 -0
  130. package/dist/admin/RelativeTime-BGJ1PWx_.mjs.map +1 -0
  131. package/dist/admin/RelativeTime-DPLD3wf-.js +60 -0
  132. package/dist/admin/RelativeTime-DPLD3wf-.js.map +1 -0
  133. package/dist/admin/{SelectRoles-C04C6G8i.mjs → SelectRoles-D1xPS-qt.mjs} +4 -4
  134. package/dist/admin/{SelectRoles-C04C6G8i.mjs.map → SelectRoles-D1xPS-qt.mjs.map} +1 -1
  135. package/dist/admin/{SelectRoles-WiYb5Fjg.js → SelectRoles-DIyUH00-.js} +3 -3
  136. package/dist/admin/{SelectRoles-WiYb5Fjg.js.map → SelectRoles-DIyUH00-.js.map} +1 -1
  137. package/dist/admin/{SingleSignOnPage-B7OU11gd.mjs → SingleSignOnPage-BC2aTKy7.mjs} +4 -4
  138. package/dist/admin/{SingleSignOnPage-B7OU11gd.mjs.map → SingleSignOnPage-BC2aTKy7.mjs.map} +1 -1
  139. package/dist/admin/{SingleSignOnPage-BlgE_vrE.js → SingleSignOnPage-BNuYGkeX.js} +3 -3
  140. package/dist/admin/{SingleSignOnPage-BlgE_vrE.js.map → SingleSignOnPage-BNuYGkeX.js.map} +1 -1
  141. package/dist/admin/{Table-BxYY3PX9.js → Table-7pe1j4im.js} +5 -57
  142. package/dist/admin/Table-7pe1j4im.js.map +1 -0
  143. package/dist/admin/{Table-C-_pdniw.mjs → Table-DQnLoM7I.mjs} +4 -36
  144. package/dist/admin/Table-DQnLoM7I.mjs.map +1 -0
  145. package/dist/admin/{Theme-5Y8Pi0Wm.mjs → Theme-CTMU9Z8I.mjs} +2 -2
  146. package/dist/admin/{Theme-5Y8Pi0Wm.mjs.map → Theme-CTMU9Z8I.mjs.map} +1 -1
  147. package/dist/admin/Theme-DWGZX5tv.js.map +1 -1
  148. package/dist/admin/{TokenTypeSelect-Cmc58ea-.mjs → TokenTypeSelect-CTdltdS8.mjs} +3 -3
  149. package/dist/admin/{TokenTypeSelect-Cmc58ea-.mjs.map → TokenTypeSelect-CTdltdS8.mjs.map} +1 -1
  150. package/dist/admin/{TokenTypeSelect-4pU-xqqr.js → TokenTypeSelect-ZzXED7rf.js} +2 -2
  151. package/dist/admin/{TokenTypeSelect-4pU-xqqr.js.map → TokenTypeSelect-ZzXED7rf.js.map} +1 -1
  152. package/dist/admin/{UseCasePage-DFRtsARG.mjs → UseCasePage-BqAoX3j-.mjs} +4 -4
  153. package/dist/admin/{UseCasePage-DFRtsARG.mjs.map → UseCasePage-BqAoX3j-.mjs.map} +1 -1
  154. package/dist/admin/{UseCasePage-BfwS_z1T.js → UseCasePage-iNVoVcCb.js} +2 -2
  155. package/dist/admin/{UseCasePage-BfwS_z1T.js.map → UseCasePage-iNVoVcCb.js.map} +1 -1
  156. package/dist/admin/{constants-BQLsELai.js → constants-BtdWKFzN.js} +2 -2
  157. package/dist/admin/{constants-BQLsELai.js.map → constants-BtdWKFzN.js.map} +1 -1
  158. package/dist/admin/{constants-CV2faKSp.mjs → constants-TZNepYft.mjs} +3 -3
  159. package/dist/admin/{constants-CV2faKSp.mjs.map → constants-TZNepYft.mjs.map} +1 -1
  160. package/dist/admin/{en-CJdNdwAe.js → en-BR2e5qX-.js} +7 -16
  161. package/dist/admin/{en-CJdNdwAe.js.map → en-BR2e5qX-.js.map} +1 -1
  162. package/dist/admin/{en-DOZzjg_v.mjs → en-CSPHZKTw.mjs} +7 -16
  163. package/dist/admin/{en-DOZzjg_v.mjs.map → en-CSPHZKTw.mjs.map} +1 -1
  164. package/dist/admin/{en-GB-BjOvFjLX.js → en-GB-Bke-WrFJ.js} +2 -2
  165. package/dist/admin/en-GB-Bke-WrFJ.js.map +1 -0
  166. package/dist/admin/en-GB-Gv8lAy1p.mjs +6 -0
  167. package/dist/admin/en-GB-Gv8lAy1p.mjs.map +1 -0
  168. package/dist/admin/{index-Cn5HftCc.mjs → index-CMdgTmC0.mjs} +35 -35
  169. package/dist/admin/index-CMdgTmC0.mjs.map +1 -0
  170. package/dist/admin/{index-u_GcMlYH.js → index-DxMAHgtc.js} +33 -33
  171. package/dist/admin/index-DxMAHgtc.js.map +1 -0
  172. package/dist/admin/index.js +1 -1
  173. package/dist/admin/index.mjs +2 -2
  174. package/dist/admin/{selectors-BUDjU_0m.mjs → selectors-BZApelK9.mjs} +2 -2
  175. package/dist/admin/{selectors-BUDjU_0m.mjs.map → selectors-BZApelK9.mjs.map} +1 -1
  176. package/dist/admin/src/features/Tracking.d.ts +1 -1
  177. package/dist/admin/src/pages/Home/components/ContentManagerWidgets.d.ts +3 -0
  178. package/dist/admin/src/pages/Home/components/GuidedTour.d.ts +1 -0
  179. package/dist/admin/src/pages/Home/components/Widget.d.ts +23 -0
  180. package/dist/admin/src/services/homepage.d.ts +5 -0
  181. package/dist/admin/test.js.map +1 -1
  182. package/dist/admin/test.mjs +1 -1
  183. package/dist/admin/test.mjs.map +1 -1
  184. package/dist/admin/{useAdminRoles-DHmyH8OJ.mjs → useAdminRoles-BVwapBge.mjs} +2 -2
  185. package/dist/admin/{useAdminRoles-DHmyH8OJ.mjs.map → useAdminRoles-BVwapBge.mjs.map} +1 -1
  186. package/dist/admin/{useAdminRoles-FWDpKtmj.js → useAdminRoles-DVnFvP_o.js} +2 -2
  187. package/dist/admin/{useAdminRoles-FWDpKtmj.js.map → useAdminRoles-DVnFvP_o.js.map} +1 -1
  188. package/dist/admin/{useLicenseLimitNotification-DQKWFvvl.mjs → useLicenseLimitNotification-CAQIrlP4.mjs} +2 -2
  189. package/dist/admin/{useLicenseLimitNotification-DQKWFvvl.mjs.map → useLicenseLimitNotification-CAQIrlP4.mjs.map} +1 -1
  190. package/dist/admin/{validation-BCuQyMAN.js → validation-CV2jBW7t.js} +2 -2
  191. package/dist/admin/{validation-BCuQyMAN.js.map → validation-CV2jBW7t.js.map} +1 -1
  192. package/dist/admin/{validation-B59Lo6xw.mjs → validation-D36pWUQH.mjs} +2 -2
  193. package/dist/admin/{validation-B59Lo6xw.mjs.map → validation-D36pWUQH.mjs.map} +1 -1
  194. package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
  195. package/dist/package.json.d.ts +7 -7
  196. package/dist/server/index.js +184 -6
  197. package/dist/server/index.js.map +1 -1
  198. package/dist/server/index.mjs +313 -136
  199. package/dist/server/index.mjs.map +1 -1
  200. package/dist/server/src/controllers/homepage.d.ts +8 -0
  201. package/dist/server/src/controllers/homepage.d.ts.map +1 -0
  202. package/dist/server/src/controllers/index.d.ts +3 -0
  203. package/dist/server/src/controllers/index.d.ts.map +1 -1
  204. package/dist/server/src/index.d.ts +9 -0
  205. package/dist/server/src/index.d.ts.map +1 -1
  206. package/dist/server/src/routes/homepage.d.ts +14 -0
  207. package/dist/server/src/routes/homepage.d.ts.map +1 -0
  208. package/dist/server/src/routes/index.d.ts.map +1 -1
  209. package/dist/server/src/services/homepage.d.ts +11 -0
  210. package/dist/server/src/services/homepage.d.ts.map +1 -0
  211. package/dist/server/src/services/index.d.ts +6 -0
  212. package/dist/server/src/services/index.d.ts.map +1 -1
  213. package/dist/shared/contracts/homepage.d.ts +25 -0
  214. package/dist/shared/contracts/homepage.d.ts.map +1 -0
  215. package/package.json +7 -7
  216. package/dist/admin/HomePage-BcKeFpnc.mjs.map +0 -1
  217. package/dist/admin/HomePage-CANB1HEn.js.map +0 -1
  218. package/dist/admin/HomePage-idSom5Sg.mjs +0 -576
  219. package/dist/admin/HomePage-idSom5Sg.mjs.map +0 -1
  220. package/dist/admin/HomePage-lO_3h0i-.js +0 -601
  221. package/dist/admin/HomePage-lO_3h0i-.js.map +0 -1
  222. package/dist/admin/Table-BxYY3PX9.js.map +0 -1
  223. package/dist/admin/Table-C-_pdniw.mjs.map +0 -1
  224. package/dist/admin/en-GB-BjOvFjLX.js.map +0 -1
  225. package/dist/admin/en-GB-Ceyy7cF8.mjs +0 -6
  226. package/dist/admin/en-GB-Ceyy7cF8.mjs.map +0 -1
  227. package/dist/admin/index-Cn5HftCc.mjs.map +0 -1
  228. package/dist/admin/index-u_GcMlYH.js.map +0 -1
  229. /package/dist/admin/src/pages/{HomePage.d.ts → Home/HomePage.d.ts} +0 -0
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { useCollator } from '@strapi/design-system';
3
3
  import { useIntl } from 'react-intl';
4
- import { c as useGetRolesQuery } from './index-Cn5HftCc.mjs';
4
+ import { c as useGetRolesQuery } from './index-CMdgTmC0.mjs';
5
5
 
6
6
  const useAdminRoles = (params = {}, queryOptions) => {
7
7
  const { locale } = useIntl();
@@ -25,4 +25,4 @@ const useAdminRoles = (params = {}, queryOptions) => {
25
25
  };
26
26
 
27
27
  export { useAdminRoles as u };
28
- //# sourceMappingURL=useAdminRoles-DHmyH8OJ.mjs.map
28
+ //# sourceMappingURL=useAdminRoles-BVwapBge.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAdminRoles-DHmyH8OJ.mjs","sources":["../../admin/src/hooks/useAdminRoles.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useCollator } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { GetRolesParams, useGetRolesQuery } from '../services/users';\n\nimport type { FindRoles } from '../../../shared/contracts/roles';\n\nexport type AdminRole = FindRoles.Response['data'][number];\n\nexport const useAdminRoles = (\n params: GetRolesParams = {},\n queryOptions?: Parameters<typeof useGetRolesQuery>[1]\n) => {\n const { locale } = useIntl();\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const { data, error, isError, isLoading, refetch } = useGetRolesQuery(params, queryOptions);\n\n // the return value needs to be memoized, because intantiating\n // an empty array as default value would lead to an unstable return\n // value, which later on triggers infinite loops if used in the\n // dependency arrays of other hooks\n const roles = React.useMemo(\n () =>\n [...(data ?? [])].sort((a, b) =>\n formatter.compare(a.name, b.name)\n ) as FindRoles.Response['data'],\n [data, formatter]\n );\n\n return {\n roles,\n error,\n isError,\n isLoading,\n refetch,\n };\n};\n"],"names":[],"mappings":";;;;;AAWO,MAAM,aAAgB,GAAA,CAC3B,MAAyB,GAAA,IACzB,YACG,KAAA;AACH,EAAM,MAAA,EAAE,MAAO,EAAA,GAAI,OAAQ,EAAA;AAC3B,EAAM,MAAA,SAAA,GAAY,YAAY,MAAQ,EAAA;AAAA,IACpC,WAAa,EAAA;AAAA,GACd,CAAA;AAED,EAAM,MAAA,EAAE,MAAM,KAAO,EAAA,OAAA,EAAS,WAAW,OAAQ,EAAA,GAAI,gBAAiB,CAAA,MAAA,EAAQ,YAAY,CAAA;AAM1F,EAAA,MAAM,QAAQ,KAAM,CAAA,OAAA;AAAA,IAClB,MACE,CAAC,GAAI,IAAQ,IAAA,EAAG,CAAE,CAAA,IAAA;AAAA,MAAK,CAAC,GAAG,CACzB,KAAA,SAAA,CAAU,QAAQ,CAAE,CAAA,IAAA,EAAM,EAAE,IAAI;AAAA,KAClC;AAAA,IACF,CAAC,MAAM,SAAS;AAAA,GAClB;AAEA,EAAO,OAAA;AAAA,IACL,KAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"useAdminRoles-BVwapBge.mjs","sources":["../../admin/src/hooks/useAdminRoles.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useCollator } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { GetRolesParams, useGetRolesQuery } from '../services/users';\n\nimport type { FindRoles } from '../../../shared/contracts/roles';\n\nexport type AdminRole = FindRoles.Response['data'][number];\n\nexport const useAdminRoles = (\n params: GetRolesParams = {},\n queryOptions?: Parameters<typeof useGetRolesQuery>[1]\n) => {\n const { locale } = useIntl();\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const { data, error, isError, isLoading, refetch } = useGetRolesQuery(params, queryOptions);\n\n // the return value needs to be memoized, because intantiating\n // an empty array as default value would lead to an unstable return\n // value, which later on triggers infinite loops if used in the\n // dependency arrays of other hooks\n const roles = React.useMemo(\n () =>\n [...(data ?? [])].sort((a, b) =>\n formatter.compare(a.name, b.name)\n ) as FindRoles.Response['data'],\n [data, formatter]\n );\n\n return {\n roles,\n error,\n isError,\n isLoading,\n refetch,\n };\n};\n"],"names":[],"mappings":";;;;;AAWO,MAAM,aAAgB,GAAA,CAC3B,MAAyB,GAAA,IACzB,YACG,KAAA;AACH,EAAM,MAAA,EAAE,MAAO,EAAA,GAAI,OAAQ,EAAA;AAC3B,EAAM,MAAA,SAAA,GAAY,YAAY,MAAQ,EAAA;AAAA,IACpC,WAAa,EAAA;AAAA,GACd,CAAA;AAED,EAAM,MAAA,EAAE,MAAM,KAAO,EAAA,OAAA,EAAS,WAAW,OAAQ,EAAA,GAAI,gBAAiB,CAAA,MAAA,EAAQ,YAAY,CAAA;AAM1F,EAAA,MAAM,QAAQ,KAAM,CAAA,OAAA;AAAA,IAClB,MACE,CAAC,GAAI,IAAQ,IAAA,EAAG,CAAE,CAAA,IAAA;AAAA,MAAK,CAAC,GAAG,CACzB,KAAA,SAAA,CAAU,QAAQ,CAAE,CAAA,IAAA,EAAM,EAAE,IAAI;AAAA,KAClC;AAAA,IACF,CAAC,MAAM,SAAS;AAAA,GAClB;AAEA,EAAO,OAAA;AAAA,IACL,KAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
@@ -3,7 +3,7 @@
3
3
  const React = require('react');
4
4
  const designSystem = require('@strapi/design-system');
5
5
  const reactIntl = require('react-intl');
6
- const index = require('./index-u_GcMlYH.js');
6
+ const index = require('./index-DxMAHgtc.js');
7
7
 
8
8
  function _interopNamespace(e) {
9
9
  if (e && e.__esModule) return e;
@@ -47,4 +47,4 @@ const useAdminRoles = (params = {}, queryOptions) => {
47
47
  };
48
48
 
49
49
  exports.useAdminRoles = useAdminRoles;
50
- //# sourceMappingURL=useAdminRoles-FWDpKtmj.js.map
50
+ //# sourceMappingURL=useAdminRoles-DVnFvP_o.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAdminRoles-FWDpKtmj.js","sources":["../../admin/src/hooks/useAdminRoles.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useCollator } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { GetRolesParams, useGetRolesQuery } from '../services/users';\n\nimport type { FindRoles } from '../../../shared/contracts/roles';\n\nexport type AdminRole = FindRoles.Response['data'][number];\n\nexport const useAdminRoles = (\n params: GetRolesParams = {},\n queryOptions?: Parameters<typeof useGetRolesQuery>[1]\n) => {\n const { locale } = useIntl();\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const { data, error, isError, isLoading, refetch } = useGetRolesQuery(params, queryOptions);\n\n // the return value needs to be memoized, because intantiating\n // an empty array as default value would lead to an unstable return\n // value, which later on triggers infinite loops if used in the\n // dependency arrays of other hooks\n const roles = React.useMemo(\n () =>\n [...(data ?? [])].sort((a, b) =>\n formatter.compare(a.name, b.name)\n ) as FindRoles.Response['data'],\n [data, formatter]\n );\n\n return {\n roles,\n error,\n isError,\n isLoading,\n refetch,\n };\n};\n"],"names":["useIntl","useCollator","useGetRolesQuery","React"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAWO,MAAM,aAAgB,GAAA,CAC3B,MAAyB,GAAA,IACzB,YACG,KAAA;AACH,EAAM,MAAA,EAAE,MAAO,EAAA,GAAIA,iBAAQ,EAAA;AAC3B,EAAM,MAAA,SAAA,GAAYC,yBAAY,MAAQ,EAAA;AAAA,IACpC,WAAa,EAAA;AAAA,GACd,CAAA;AAED,EAAM,MAAA,EAAE,MAAM,KAAO,EAAA,OAAA,EAAS,WAAW,OAAQ,EAAA,GAAIC,sBAAiB,CAAA,MAAA,EAAQ,YAAY,CAAA;AAM1F,EAAA,MAAM,QAAQC,gBAAM,CAAA,OAAA;AAAA,IAClB,MACE,CAAC,GAAI,IAAQ,IAAA,EAAG,CAAE,CAAA,IAAA;AAAA,MAAK,CAAC,GAAG,CACzB,KAAA,SAAA,CAAU,QAAQ,CAAE,CAAA,IAAA,EAAM,EAAE,IAAI;AAAA,KAClC;AAAA,IACF,CAAC,MAAM,SAAS;AAAA,GAClB;AAEA,EAAO,OAAA;AAAA,IACL,KAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"useAdminRoles-DVnFvP_o.js","sources":["../../admin/src/hooks/useAdminRoles.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useCollator } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { GetRolesParams, useGetRolesQuery } from '../services/users';\n\nimport type { FindRoles } from '../../../shared/contracts/roles';\n\nexport type AdminRole = FindRoles.Response['data'][number];\n\nexport const useAdminRoles = (\n params: GetRolesParams = {},\n queryOptions?: Parameters<typeof useGetRolesQuery>[1]\n) => {\n const { locale } = useIntl();\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const { data, error, isError, isLoading, refetch } = useGetRolesQuery(params, queryOptions);\n\n // the return value needs to be memoized, because intantiating\n // an empty array as default value would lead to an unstable return\n // value, which later on triggers infinite loops if used in the\n // dependency arrays of other hooks\n const roles = React.useMemo(\n () =>\n [...(data ?? [])].sort((a, b) =>\n formatter.compare(a.name, b.name)\n ) as FindRoles.Response['data'],\n [data, formatter]\n );\n\n return {\n roles,\n error,\n isError,\n isLoading,\n refetch,\n };\n};\n"],"names":["useIntl","useCollator","useGetRolesQuery","React"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAWO,MAAM,aAAgB,GAAA,CAC3B,MAAyB,GAAA,IACzB,YACG,KAAA;AACH,EAAM,MAAA,EAAE,MAAO,EAAA,GAAIA,iBAAQ,EAAA;AAC3B,EAAM,MAAA,SAAA,GAAYC,yBAAY,MAAQ,EAAA;AAAA,IACpC,WAAa,EAAA;AAAA,GACd,CAAA;AAED,EAAM,MAAA,EAAE,MAAM,KAAO,EAAA,OAAA,EAAS,WAAW,OAAQ,EAAA,GAAIC,sBAAiB,CAAA,MAAA,EAAQ,YAAY,CAAA;AAM1F,EAAA,MAAM,QAAQC,gBAAM,CAAA,OAAA;AAAA,IAClB,MACE,CAAC,GAAI,IAAQ,IAAA,EAAG,CAAE,CAAA,IAAA;AAAA,MAAK,CAAC,GAAG,CACzB,KAAA,SAAA,CAAU,QAAQ,CAAE,CAAA,IAAA,EAAM,EAAE,IAAI;AAAA,KAClC;AAAA,IACF,CAAC,MAAM,SAAS;AAAA,GAClB;AAEA,EAAO,OAAA;AAAA,IACL,KAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import isNil from 'lodash/isNil';
3
3
  import { useIntl } from 'react-intl';
4
4
  import { useLocation } from 'react-router-dom';
5
- import { a as useNotification } from './Theme-5Y8Pi0Wm.mjs';
5
+ import { a as useNotification } from './Theme-CTMU9Z8I.mjs';
6
6
  import { u as useLicenseLimits } from './useLicenseLimits-CcOoSJ8p.mjs';
7
7
 
8
8
  const STORAGE_KEY_PREFIX = "strapi-notification-seat-limit";
@@ -77,4 +77,4 @@ const useLicenseLimitNotification = () => {
77
77
  };
78
78
 
79
79
  export { useLicenseLimitNotification as u };
80
- //# sourceMappingURL=useLicenseLimitNotification-DQKWFvvl.mjs.map
80
+ //# sourceMappingURL=useLicenseLimitNotification-CAQIrlP4.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLicenseLimitNotification-DQKWFvvl.mjs","sources":["../../ee/admin/src/hooks/useLicenseLimitNotification.ts"],"sourcesContent":["/**\n *\n * useLicenseLimitNotification\n *\n */\nimport * as React from 'react';\n\nimport isNil from 'lodash/isNil';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\n\nimport { NotificationConfig, useNotification } from '../../../../admin/src/features/Notifications';\n\nimport { useLicenseLimits } from './useLicenseLimits';\n\nconst STORAGE_KEY_PREFIX = 'strapi-notification-seat-limit';\n\nconst BILLING_STRAPI_CLOUD_URL = 'https://cloud.strapi.io/profile/billing';\nconst BILLING_SELF_HOSTED_URL = 'https://strapi.io/billing/request-seats';\n\nexport const useLicenseLimitNotification = () => {\n const { formatMessage } = useIntl();\n const { license, isError, isLoading } = useLicenseLimits();\n const { toggleNotification } = useNotification();\n const { pathname } = useLocation();\n\n const { enforcementUserCount, permittedSeats, licenseLimitStatus, isHostedOnStrapiCloud } =\n license ?? {};\n\n React.useEffect(() => {\n if (isError || isLoading) {\n return;\n }\n\n const shouldDisplayNotification =\n !isNil(permittedSeats) &&\n !window.sessionStorage.getItem(`${STORAGE_KEY_PREFIX}-${pathname}`) &&\n (licenseLimitStatus === 'AT_LIMIT' || licenseLimitStatus === 'OVER_LIMIT');\n\n let notificationType: NotificationConfig['type'];\n\n if (licenseLimitStatus === 'OVER_LIMIT') {\n notificationType = 'danger';\n } else if (licenseLimitStatus === 'AT_LIMIT') {\n notificationType = 'warning';\n }\n\n if (shouldDisplayNotification) {\n toggleNotification({\n type: notificationType,\n message: formatMessage(\n {\n id: 'notification.ee.warning.over-.message',\n defaultMessage:\n \"Add seats to {licenseLimitStatus, select, OVER_LIMIT {invite} other {re-enable}} Users. If you already did it but it's not reflected in Strapi yet, make sure to restart your app.\",\n },\n { licenseLimitStatus }\n ),\n title: formatMessage(\n {\n id: 'notification.ee.warning.at-seat-limit.title',\n defaultMessage:\n '{licenseLimitStatus, select, OVER_LIMIT {Over} other {At}} seat limit ({enforcementUserCount}/{permittedSeats})',\n },\n {\n licenseLimitStatus,\n enforcementUserCount,\n permittedSeats,\n }\n ),\n link: {\n url: isHostedOnStrapiCloud ? BILLING_STRAPI_CLOUD_URL : BILLING_SELF_HOSTED_URL,\n label: formatMessage(\n {\n id: 'notification.ee.warning.seat-limit.link',\n defaultMessage:\n '{isHostedOnStrapiCloud, select, true {ADD SEATS} other {CONTACT SALES}}',\n },\n { isHostedOnStrapiCloud }\n ),\n },\n blockTransition: true,\n onClose() {\n window.sessionStorage.setItem(`${STORAGE_KEY_PREFIX}-${pathname}`, 'true');\n },\n });\n }\n }, [\n toggleNotification,\n license,\n pathname,\n formatMessage,\n isLoading,\n permittedSeats,\n licenseLimitStatus,\n enforcementUserCount,\n isHostedOnStrapiCloud,\n isError,\n ]);\n};\n"],"names":[],"mappings":";;;;;;;AAeA,MAAM,kBAAqB,GAAA,gCAAA;AAE3B,MAAM,wBAA2B,GAAA,yCAAA;AACjC,MAAM,uBAA0B,GAAA,yCAAA;AAEzB,MAAM,8BAA8B,MAAM;AAC/C,EAAM,MAAA,EAAE,aAAc,EAAA,GAAI,OAAQ,EAAA;AAClC,EAAA,MAAM,EAAE,OAAA,EAAS,OAAS,EAAA,SAAA,KAAc,gBAAiB,EAAA;AACzD,EAAM,MAAA,EAAE,kBAAmB,EAAA,GAAI,eAAgB,EAAA;AAC/C,EAAM,MAAA,EAAE,QAAS,EAAA,GAAI,WAAY,EAAA;AAEjC,EAAA,MAAM,EAAE,oBAAsB,EAAA,cAAA,EAAgB,oBAAoB,qBAAsB,EAAA,GACtF,WAAW,EAAC;AAEd,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,WAAW,SAAW,EAAA;AACxB,MAAA;AAAA;AAGF,IAAA,MAAM,4BACJ,CAAC,KAAA,CAAM,cAAc,CAAA,IACrB,CAAC,MAAO,CAAA,cAAA,CAAe,OAAQ,CAAA,CAAA,EAAG,kBAAkB,CAAI,CAAA,EAAA,QAAQ,EAAE,CACjE,KAAA,kBAAA,KAAuB,cAAc,kBAAuB,KAAA,YAAA,CAAA;AAE/D,IAAI,IAAA,gBAAA;AAEJ,IAAA,IAAI,uBAAuB,YAAc,EAAA;AACvC,MAAmB,gBAAA,GAAA,QAAA;AAAA,KACrB,MAAA,IAAW,uBAAuB,UAAY,EAAA;AAC5C,MAAmB,gBAAA,GAAA,SAAA;AAAA;AAGrB,IAAA,IAAI,yBAA2B,EAAA;AAC7B,MAAmB,kBAAA,CAAA;AAAA,QACjB,IAAM,EAAA,gBAAA;AAAA,QACN,OAAS,EAAA,aAAA;AAAA,UACP;AAAA,YACE,EAAI,EAAA,uCAAA;AAAA,YACJ,cACE,EAAA;AAAA,WACJ;AAAA,UACA,EAAE,kBAAmB;AAAA,SACvB;AAAA,QACA,KAAO,EAAA,aAAA;AAAA,UACL;AAAA,YACE,EAAI,EAAA,6CAAA;AAAA,YACJ,cACE,EAAA;AAAA,WACJ;AAAA,UACA;AAAA,YACE,kBAAA;AAAA,YACA,oBAAA;AAAA,YACA;AAAA;AACF,SACF;AAAA,QACA,IAAM,EAAA;AAAA,UACJ,GAAA,EAAK,wBAAwB,wBAA2B,GAAA,uBAAA;AAAA,UACxD,KAAO,EAAA,aAAA;AAAA,YACL;AAAA,cACE,EAAI,EAAA,yCAAA;AAAA,cACJ,cACE,EAAA;AAAA,aACJ;AAAA,YACA,EAAE,qBAAsB;AAAA;AAC1B,SACF;AAAA,QACA,eAAiB,EAAA,IAAA;AAAA,QACjB,OAAU,GAAA;AACR,UAAA,MAAA,CAAO,eAAe,OAAQ,CAAA,CAAA,EAAG,kBAAkB,CAAI,CAAA,EAAA,QAAQ,IAAI,MAAM,CAAA;AAAA;AAC3E,OACD,CAAA;AAAA;AACH,GACC,EAAA;AAAA,IACD,kBAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA,cAAA;AAAA,IACA,kBAAA;AAAA,IACA,oBAAA;AAAA,IACA,qBAAA;AAAA,IACA;AAAA,GACD,CAAA;AACH;;;;"}
1
+ {"version":3,"file":"useLicenseLimitNotification-CAQIrlP4.mjs","sources":["../../ee/admin/src/hooks/useLicenseLimitNotification.ts"],"sourcesContent":["/**\n *\n * useLicenseLimitNotification\n *\n */\nimport * as React from 'react';\n\nimport isNil from 'lodash/isNil';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\n\nimport { NotificationConfig, useNotification } from '../../../../admin/src/features/Notifications';\n\nimport { useLicenseLimits } from './useLicenseLimits';\n\nconst STORAGE_KEY_PREFIX = 'strapi-notification-seat-limit';\n\nconst BILLING_STRAPI_CLOUD_URL = 'https://cloud.strapi.io/profile/billing';\nconst BILLING_SELF_HOSTED_URL = 'https://strapi.io/billing/request-seats';\n\nexport const useLicenseLimitNotification = () => {\n const { formatMessage } = useIntl();\n const { license, isError, isLoading } = useLicenseLimits();\n const { toggleNotification } = useNotification();\n const { pathname } = useLocation();\n\n const { enforcementUserCount, permittedSeats, licenseLimitStatus, isHostedOnStrapiCloud } =\n license ?? {};\n\n React.useEffect(() => {\n if (isError || isLoading) {\n return;\n }\n\n const shouldDisplayNotification =\n !isNil(permittedSeats) &&\n !window.sessionStorage.getItem(`${STORAGE_KEY_PREFIX}-${pathname}`) &&\n (licenseLimitStatus === 'AT_LIMIT' || licenseLimitStatus === 'OVER_LIMIT');\n\n let notificationType: NotificationConfig['type'];\n\n if (licenseLimitStatus === 'OVER_LIMIT') {\n notificationType = 'danger';\n } else if (licenseLimitStatus === 'AT_LIMIT') {\n notificationType = 'warning';\n }\n\n if (shouldDisplayNotification) {\n toggleNotification({\n type: notificationType,\n message: formatMessage(\n {\n id: 'notification.ee.warning.over-.message',\n defaultMessage:\n \"Add seats to {licenseLimitStatus, select, OVER_LIMIT {invite} other {re-enable}} Users. If you already did it but it's not reflected in Strapi yet, make sure to restart your app.\",\n },\n { licenseLimitStatus }\n ),\n title: formatMessage(\n {\n id: 'notification.ee.warning.at-seat-limit.title',\n defaultMessage:\n '{licenseLimitStatus, select, OVER_LIMIT {Over} other {At}} seat limit ({enforcementUserCount}/{permittedSeats})',\n },\n {\n licenseLimitStatus,\n enforcementUserCount,\n permittedSeats,\n }\n ),\n link: {\n url: isHostedOnStrapiCloud ? BILLING_STRAPI_CLOUD_URL : BILLING_SELF_HOSTED_URL,\n label: formatMessage(\n {\n id: 'notification.ee.warning.seat-limit.link',\n defaultMessage:\n '{isHostedOnStrapiCloud, select, true {ADD SEATS} other {CONTACT SALES}}',\n },\n { isHostedOnStrapiCloud }\n ),\n },\n blockTransition: true,\n onClose() {\n window.sessionStorage.setItem(`${STORAGE_KEY_PREFIX}-${pathname}`, 'true');\n },\n });\n }\n }, [\n toggleNotification,\n license,\n pathname,\n formatMessage,\n isLoading,\n permittedSeats,\n licenseLimitStatus,\n enforcementUserCount,\n isHostedOnStrapiCloud,\n isError,\n ]);\n};\n"],"names":[],"mappings":";;;;;;;AAeA,MAAM,kBAAqB,GAAA,gCAAA;AAE3B,MAAM,wBAA2B,GAAA,yCAAA;AACjC,MAAM,uBAA0B,GAAA,yCAAA;AAEzB,MAAM,8BAA8B,MAAM;AAC/C,EAAM,MAAA,EAAE,aAAc,EAAA,GAAI,OAAQ,EAAA;AAClC,EAAA,MAAM,EAAE,OAAA,EAAS,OAAS,EAAA,SAAA,KAAc,gBAAiB,EAAA;AACzD,EAAM,MAAA,EAAE,kBAAmB,EAAA,GAAI,eAAgB,EAAA;AAC/C,EAAM,MAAA,EAAE,QAAS,EAAA,GAAI,WAAY,EAAA;AAEjC,EAAA,MAAM,EAAE,oBAAsB,EAAA,cAAA,EAAgB,oBAAoB,qBAAsB,EAAA,GACtF,WAAW,EAAC;AAEd,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,WAAW,SAAW,EAAA;AACxB,MAAA;AAAA;AAGF,IAAA,MAAM,4BACJ,CAAC,KAAA,CAAM,cAAc,CAAA,IACrB,CAAC,MAAO,CAAA,cAAA,CAAe,OAAQ,CAAA,CAAA,EAAG,kBAAkB,CAAI,CAAA,EAAA,QAAQ,EAAE,CACjE,KAAA,kBAAA,KAAuB,cAAc,kBAAuB,KAAA,YAAA,CAAA;AAE/D,IAAI,IAAA,gBAAA;AAEJ,IAAA,IAAI,uBAAuB,YAAc,EAAA;AACvC,MAAmB,gBAAA,GAAA,QAAA;AAAA,KACrB,MAAA,IAAW,uBAAuB,UAAY,EAAA;AAC5C,MAAmB,gBAAA,GAAA,SAAA;AAAA;AAGrB,IAAA,IAAI,yBAA2B,EAAA;AAC7B,MAAmB,kBAAA,CAAA;AAAA,QACjB,IAAM,EAAA,gBAAA;AAAA,QACN,OAAS,EAAA,aAAA;AAAA,UACP;AAAA,YACE,EAAI,EAAA,uCAAA;AAAA,YACJ,cACE,EAAA;AAAA,WACJ;AAAA,UACA,EAAE,kBAAmB;AAAA,SACvB;AAAA,QACA,KAAO,EAAA,aAAA;AAAA,UACL;AAAA,YACE,EAAI,EAAA,6CAAA;AAAA,YACJ,cACE,EAAA;AAAA,WACJ;AAAA,UACA;AAAA,YACE,kBAAA;AAAA,YACA,oBAAA;AAAA,YACA;AAAA;AACF,SACF;AAAA,QACA,IAAM,EAAA;AAAA,UACJ,GAAA,EAAK,wBAAwB,wBAA2B,GAAA,uBAAA;AAAA,UACxD,KAAO,EAAA,aAAA;AAAA,YACL;AAAA,cACE,EAAI,EAAA,yCAAA;AAAA,cACJ,cACE,EAAA;AAAA,aACJ;AAAA,YACA,EAAE,qBAAsB;AAAA;AAC1B,SACF;AAAA,QACA,eAAiB,EAAA,IAAA;AAAA,QACjB,OAAU,GAAA;AACR,UAAA,MAAA,CAAO,eAAe,OAAQ,CAAA,CAAA,EAAG,kBAAkB,CAAI,CAAA,EAAA,QAAQ,IAAI,MAAM,CAAA;AAAA;AAC3E,OACD,CAAA;AAAA;AACH,GACC,EAAA;AAAA,IACD,kBAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA,cAAA;AAAA,IACA,kBAAA;AAAA,IACA,oBAAA;AAAA,IACA,qBAAA;AAAA,IACA;AAAA,GACD,CAAA;AACH;;;;"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  const yup = require('yup');
4
- const index = require('./index-u_GcMlYH.js');
4
+ const index = require('./index-DxMAHgtc.js');
5
5
 
6
6
  function _interopNamespace(e) {
7
7
  if (e && e.__esModule) return e;
@@ -62,4 +62,4 @@ const COMMON_USER_SCHEMA = {
62
62
  };
63
63
 
64
64
  exports.COMMON_USER_SCHEMA = COMMON_USER_SCHEMA;
65
- //# sourceMappingURL=validation-BCuQyMAN.js.map
65
+ //# sourceMappingURL=validation-CV2jBW7t.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation-BCuQyMAN.js","sources":["../../admin/src/pages/Settings/pages/Users/utils/validation.ts"],"sourcesContent":["import * as yup from 'yup';\n\nimport { translatedErrors } from '../../../../../utils/translatedErrors';\n\n/**\n * @description This needs wrapping in `yup.object().shape()` before use.\n */\nconst COMMON_USER_SCHEMA = {\n firstname: yup.string().trim().required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\n lastname: yup.string(),\n email: yup.string().email(translatedErrors.email).lowercase().required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\n username: yup\n .string()\n .transform((value) => (value === '' ? undefined : value))\n .nullable(),\n password: yup\n .string()\n .transform((value) => (value === '' || value === null ? undefined : value))\n .nullable()\n .min(8, {\n ...translatedErrors.minLength,\n values: { min: 8 },\n })\n .matches(/[a-z]/, {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least one lowercase character',\n })\n .matches(/[A-Z]/, {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least one uppercase character',\n })\n .matches(/\\d/, {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least one number',\n }),\n confirmPassword: yup\n .string()\n .transform((value) => (value === '' ? null : value))\n .nullable()\n .min(8, {\n ...translatedErrors.minLength,\n values: { min: 8 },\n })\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n })\n .when('password', (password, passSchema) => {\n return password\n ? passSchema\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .nullable()\n : passSchema;\n }),\n};\n\nexport { COMMON_USER_SCHEMA };\n"],"names":["yup","translatedErrors"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAM,kBAAqB,GAAA;AAAA,EACzB,WAAWA,cAAI,CAAA,MAAA,EAAS,CAAA,IAAA,GAAO,QAAS,CAAA;AAAA,IACtC,EAAA,EAAIC,kBAAiB,QAAS,CAAA,EAAA;AAAA,IAC9B,cAAgB,EAAA;AAAA,GACjB,CAAA;AAAA,EACD,QAAA,EAAUD,eAAI,MAAO,EAAA;AAAA,EACrB,KAAA,EAAOA,cAAI,CAAA,MAAA,EAAS,CAAA,KAAA,CAAMC,kBAAiB,KAAK,CAAA,CAAE,SAAU,EAAA,CAAE,QAAS,CAAA;AAAA,IACrE,EAAA,EAAIA,kBAAiB,QAAS,CAAA,EAAA;AAAA,IAC9B,cAAgB,EAAA;AAAA,GACjB,CAAA;AAAA,EACD,QAAU,EAAAD,cAAA,CACP,MAAO,EAAA,CACP,SAAU,CAAA,CAAC,KAAW,KAAA,KAAA,KAAU,EAAK,GAAA,KAAA,CAAA,GAAY,KAAM,CAAA,CACvD,QAAS,EAAA;AAAA,EACZ,UAAUA,cACP,CAAA,MAAA,EACA,CAAA,SAAA,CAAU,CAAC,KAAW,KAAA,KAAA,KAAU,EAAM,IAAA,KAAA,KAAU,OAAO,KAAY,CAAA,GAAA,KAAM,EACzE,QAAS,EAAA,CACT,IAAI,CAAG,EAAA;AAAA,IACN,GAAGC,iBAAiB,CAAA,SAAA;AAAA,IACpB,MAAA,EAAQ,EAAE,GAAA,EAAK,CAAE;AAAA,GAClB,CACA,CAAA,OAAA,CAAQ,OAAS,EAAA;AAAA,IAChB,EAAI,EAAA,0CAAA;AAAA,IACJ,cAAgB,EAAA;AAAA,GACjB,CACA,CAAA,OAAA,CAAQ,OAAS,EAAA;AAAA,IAChB,EAAI,EAAA,0CAAA;AAAA,IACJ,cAAgB,EAAA;AAAA,GACjB,CACA,CAAA,OAAA,CAAQ,IAAM,EAAA;AAAA,IACb,EAAI,EAAA,uCAAA;AAAA,IACJ,cAAgB,EAAA;AAAA,GACjB,CAAA;AAAA,EACH,eAAiB,EAAAD,cAAA,CACd,MAAO,EAAA,CACP,UAAU,CAAC,KAAA,KAAW,KAAU,KAAA,EAAA,GAAK,OAAO,KAAM,CAAA,CAClD,QAAS,EAAA,CACT,IAAI,CAAG,EAAA;AAAA,IACN,GAAGC,iBAAiB,CAAA,SAAA;AAAA,IACpB,MAAA,EAAQ,EAAE,GAAA,EAAK,CAAE;AAAA,GAClB,EACA,KAAM,CAAA,CAACD,eAAI,GAAI,CAAA,UAAU,CAAG,EAAA,IAAI,CAAG,EAAA;AAAA,IAClC,EAAI,EAAA,yCAAA;AAAA,IACJ,cAAgB,EAAA;AAAA,GACjB,CACA,CAAA,IAAA,CAAK,UAAY,EAAA,CAAC,UAAU,UAAe,KAAA;AAC1C,IAAO,OAAA,QAAA,GACH,WACG,QAAS,CAAA;AAAA,MACR,EAAA,EAAIC,kBAAiB,QAAS,CAAA,EAAA;AAAA,MAC9B,cAAgB,EAAA;AAAA,KACjB,CACA,CAAA,QAAA,EACH,GAAA,UAAA;AAAA,GACL;AACL;;;;"}
1
+ {"version":3,"file":"validation-CV2jBW7t.js","sources":["../../admin/src/pages/Settings/pages/Users/utils/validation.ts"],"sourcesContent":["import * as yup from 'yup';\n\nimport { translatedErrors } from '../../../../../utils/translatedErrors';\n\n/**\n * @description This needs wrapping in `yup.object().shape()` before use.\n */\nconst COMMON_USER_SCHEMA = {\n firstname: yup.string().trim().required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\n lastname: yup.string(),\n email: yup.string().email(translatedErrors.email).lowercase().required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\n username: yup\n .string()\n .transform((value) => (value === '' ? undefined : value))\n .nullable(),\n password: yup\n .string()\n .transform((value) => (value === '' || value === null ? undefined : value))\n .nullable()\n .min(8, {\n ...translatedErrors.minLength,\n values: { min: 8 },\n })\n .matches(/[a-z]/, {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least one lowercase character',\n })\n .matches(/[A-Z]/, {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least one uppercase character',\n })\n .matches(/\\d/, {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least one number',\n }),\n confirmPassword: yup\n .string()\n .transform((value) => (value === '' ? null : value))\n .nullable()\n .min(8, {\n ...translatedErrors.minLength,\n values: { min: 8 },\n })\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n })\n .when('password', (password, passSchema) => {\n return password\n ? passSchema\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .nullable()\n : passSchema;\n }),\n};\n\nexport { COMMON_USER_SCHEMA };\n"],"names":["yup","translatedErrors"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAM,kBAAqB,GAAA;AAAA,EACzB,WAAWA,cAAI,CAAA,MAAA,EAAS,CAAA,IAAA,GAAO,QAAS,CAAA;AAAA,IACtC,EAAA,EAAIC,kBAAiB,QAAS,CAAA,EAAA;AAAA,IAC9B,cAAgB,EAAA;AAAA,GACjB,CAAA;AAAA,EACD,QAAA,EAAUD,eAAI,MAAO,EAAA;AAAA,EACrB,KAAA,EAAOA,cAAI,CAAA,MAAA,EAAS,CAAA,KAAA,CAAMC,kBAAiB,KAAK,CAAA,CAAE,SAAU,EAAA,CAAE,QAAS,CAAA;AAAA,IACrE,EAAA,EAAIA,kBAAiB,QAAS,CAAA,EAAA;AAAA,IAC9B,cAAgB,EAAA;AAAA,GACjB,CAAA;AAAA,EACD,QAAU,EAAAD,cAAA,CACP,MAAO,EAAA,CACP,SAAU,CAAA,CAAC,KAAW,KAAA,KAAA,KAAU,EAAK,GAAA,KAAA,CAAA,GAAY,KAAM,CAAA,CACvD,QAAS,EAAA;AAAA,EACZ,UAAUA,cACP,CAAA,MAAA,EACA,CAAA,SAAA,CAAU,CAAC,KAAW,KAAA,KAAA,KAAU,EAAM,IAAA,KAAA,KAAU,OAAO,KAAY,CAAA,GAAA,KAAM,EACzE,QAAS,EAAA,CACT,IAAI,CAAG,EAAA;AAAA,IACN,GAAGC,iBAAiB,CAAA,SAAA;AAAA,IACpB,MAAA,EAAQ,EAAE,GAAA,EAAK,CAAE;AAAA,GAClB,CACA,CAAA,OAAA,CAAQ,OAAS,EAAA;AAAA,IAChB,EAAI,EAAA,0CAAA;AAAA,IACJ,cAAgB,EAAA;AAAA,GACjB,CACA,CAAA,OAAA,CAAQ,OAAS,EAAA;AAAA,IAChB,EAAI,EAAA,0CAAA;AAAA,IACJ,cAAgB,EAAA;AAAA,GACjB,CACA,CAAA,OAAA,CAAQ,IAAM,EAAA;AAAA,IACb,EAAI,EAAA,uCAAA;AAAA,IACJ,cAAgB,EAAA;AAAA,GACjB,CAAA;AAAA,EACH,eAAiB,EAAAD,cAAA,CACd,MAAO,EAAA,CACP,UAAU,CAAC,KAAA,KAAW,KAAU,KAAA,EAAA,GAAK,OAAO,KAAM,CAAA,CAClD,QAAS,EAAA,CACT,IAAI,CAAG,EAAA;AAAA,IACN,GAAGC,iBAAiB,CAAA,SAAA;AAAA,IACpB,MAAA,EAAQ,EAAE,GAAA,EAAK,CAAE;AAAA,GAClB,EACA,KAAM,CAAA,CAACD,eAAI,GAAI,CAAA,UAAU,CAAG,EAAA,IAAI,CAAG,EAAA;AAAA,IAClC,EAAI,EAAA,yCAAA;AAAA,IACJ,cAAgB,EAAA;AAAA,GACjB,CACA,CAAA,IAAA,CAAK,UAAY,EAAA,CAAC,UAAU,UAAe,KAAA;AAC1C,IAAO,OAAA,QAAA,GACH,WACG,QAAS,CAAA;AAAA,MACR,EAAA,EAAIC,kBAAiB,QAAS,CAAA,EAAA;AAAA,MAC9B,cAAgB,EAAA;AAAA,KACjB,CACA,CAAA,QAAA,EACH,GAAA,UAAA;AAAA,GACL;AACL;;;;"}
@@ -1,5 +1,5 @@
1
1
  import * as yup from 'yup';
2
- import { e as errorsTrads } from './index-Cn5HftCc.mjs';
2
+ import { e as errorsTrads } from './index-CMdgTmC0.mjs';
3
3
 
4
4
  const COMMON_USER_SCHEMA = {
5
5
  firstname: yup.string().trim().required({
@@ -40,4 +40,4 @@ const COMMON_USER_SCHEMA = {
40
40
  };
41
41
 
42
42
  export { COMMON_USER_SCHEMA as C };
43
- //# sourceMappingURL=validation-B59Lo6xw.mjs.map
43
+ //# sourceMappingURL=validation-D36pWUQH.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation-B59Lo6xw.mjs","sources":["../../admin/src/pages/Settings/pages/Users/utils/validation.ts"],"sourcesContent":["import * as yup from 'yup';\n\nimport { translatedErrors } from '../../../../../utils/translatedErrors';\n\n/**\n * @description This needs wrapping in `yup.object().shape()` before use.\n */\nconst COMMON_USER_SCHEMA = {\n firstname: yup.string().trim().required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\n lastname: yup.string(),\n email: yup.string().email(translatedErrors.email).lowercase().required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\n username: yup\n .string()\n .transform((value) => (value === '' ? undefined : value))\n .nullable(),\n password: yup\n .string()\n .transform((value) => (value === '' || value === null ? undefined : value))\n .nullable()\n .min(8, {\n ...translatedErrors.minLength,\n values: { min: 8 },\n })\n .matches(/[a-z]/, {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least one lowercase character',\n })\n .matches(/[A-Z]/, {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least one uppercase character',\n })\n .matches(/\\d/, {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least one number',\n }),\n confirmPassword: yup\n .string()\n .transform((value) => (value === '' ? null : value))\n .nullable()\n .min(8, {\n ...translatedErrors.minLength,\n values: { min: 8 },\n })\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n })\n .when('password', (password, passSchema) => {\n return password\n ? passSchema\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .nullable()\n : passSchema;\n }),\n};\n\nexport { COMMON_USER_SCHEMA };\n"],"names":["translatedErrors"],"mappings":";;;AAOA,MAAM,kBAAqB,GAAA;AAAA,EACzB,WAAW,GAAI,CAAA,MAAA,EAAS,CAAA,IAAA,GAAO,QAAS,CAAA;AAAA,IACtC,EAAA,EAAIA,YAAiB,QAAS,CAAA,EAAA;AAAA,IAC9B,cAAgB,EAAA;AAAA,GACjB,CAAA;AAAA,EACD,QAAA,EAAU,IAAI,MAAO,EAAA;AAAA,EACrB,KAAA,EAAO,GAAI,CAAA,MAAA,EAAS,CAAA,KAAA,CAAMA,YAAiB,KAAK,CAAA,CAAE,SAAU,EAAA,CAAE,QAAS,CAAA;AAAA,IACrE,EAAA,EAAIA,YAAiB,QAAS,CAAA,EAAA;AAAA,IAC9B,cAAgB,EAAA;AAAA,GACjB,CAAA;AAAA,EACD,QAAU,EAAA,GAAA,CACP,MAAO,EAAA,CACP,SAAU,CAAA,CAAC,KAAW,KAAA,KAAA,KAAU,EAAK,GAAA,KAAA,CAAA,GAAY,KAAM,CAAA,CACvD,QAAS,EAAA;AAAA,EACZ,UAAU,GACP,CAAA,MAAA,EACA,CAAA,SAAA,CAAU,CAAC,KAAW,KAAA,KAAA,KAAU,EAAM,IAAA,KAAA,KAAU,OAAO,KAAY,CAAA,GAAA,KAAM,EACzE,QAAS,EAAA,CACT,IAAI,CAAG,EAAA;AAAA,IACN,GAAGA,WAAiB,CAAA,SAAA;AAAA,IACpB,MAAA,EAAQ,EAAE,GAAA,EAAK,CAAE;AAAA,GAClB,CACA,CAAA,OAAA,CAAQ,OAAS,EAAA;AAAA,IAChB,EAAI,EAAA,0CAAA;AAAA,IACJ,cAAgB,EAAA;AAAA,GACjB,CACA,CAAA,OAAA,CAAQ,OAAS,EAAA;AAAA,IAChB,EAAI,EAAA,0CAAA;AAAA,IACJ,cAAgB,EAAA;AAAA,GACjB,CACA,CAAA,OAAA,CAAQ,IAAM,EAAA;AAAA,IACb,EAAI,EAAA,uCAAA;AAAA,IACJ,cAAgB,EAAA;AAAA,GACjB,CAAA;AAAA,EACH,eAAiB,EAAA,GAAA,CACd,MAAO,EAAA,CACP,UAAU,CAAC,KAAA,KAAW,KAAU,KAAA,EAAA,GAAK,OAAO,KAAM,CAAA,CAClD,QAAS,EAAA,CACT,IAAI,CAAG,EAAA;AAAA,IACN,GAAGA,WAAiB,CAAA,SAAA;AAAA,IACpB,MAAA,EAAQ,EAAE,GAAA,EAAK,CAAE;AAAA,GAClB,EACA,KAAM,CAAA,CAAC,IAAI,GAAI,CAAA,UAAU,CAAG,EAAA,IAAI,CAAG,EAAA;AAAA,IAClC,EAAI,EAAA,yCAAA;AAAA,IACJ,cAAgB,EAAA;AAAA,GACjB,CACA,CAAA,IAAA,CAAK,UAAY,EAAA,CAAC,UAAU,UAAe,KAAA;AAC1C,IAAO,OAAA,QAAA,GACH,WACG,QAAS,CAAA;AAAA,MACR,EAAA,EAAIA,YAAiB,QAAS,CAAA,EAAA;AAAA,MAC9B,cAAgB,EAAA;AAAA,KACjB,CACA,CAAA,QAAA,EACH,GAAA,UAAA;AAAA,GACL;AACL;;;;"}
1
+ {"version":3,"file":"validation-D36pWUQH.mjs","sources":["../../admin/src/pages/Settings/pages/Users/utils/validation.ts"],"sourcesContent":["import * as yup from 'yup';\n\nimport { translatedErrors } from '../../../../../utils/translatedErrors';\n\n/**\n * @description This needs wrapping in `yup.object().shape()` before use.\n */\nconst COMMON_USER_SCHEMA = {\n firstname: yup.string().trim().required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\n lastname: yup.string(),\n email: yup.string().email(translatedErrors.email).lowercase().required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\n username: yup\n .string()\n .transform((value) => (value === '' ? undefined : value))\n .nullable(),\n password: yup\n .string()\n .transform((value) => (value === '' || value === null ? undefined : value))\n .nullable()\n .min(8, {\n ...translatedErrors.minLength,\n values: { min: 8 },\n })\n .matches(/[a-z]/, {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least one lowercase character',\n })\n .matches(/[A-Z]/, {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least one uppercase character',\n })\n .matches(/\\d/, {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least one number',\n }),\n confirmPassword: yup\n .string()\n .transform((value) => (value === '' ? null : value))\n .nullable()\n .min(8, {\n ...translatedErrors.minLength,\n values: { min: 8 },\n })\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n })\n .when('password', (password, passSchema) => {\n return password\n ? passSchema\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .nullable()\n : passSchema;\n }),\n};\n\nexport { COMMON_USER_SCHEMA };\n"],"names":["translatedErrors"],"mappings":";;;AAOA,MAAM,kBAAqB,GAAA;AAAA,EACzB,WAAW,GAAI,CAAA,MAAA,EAAS,CAAA,IAAA,GAAO,QAAS,CAAA;AAAA,IACtC,EAAA,EAAIA,YAAiB,QAAS,CAAA,EAAA;AAAA,IAC9B,cAAgB,EAAA;AAAA,GACjB,CAAA;AAAA,EACD,QAAA,EAAU,IAAI,MAAO,EAAA;AAAA,EACrB,KAAA,EAAO,GAAI,CAAA,MAAA,EAAS,CAAA,KAAA,CAAMA,YAAiB,KAAK,CAAA,CAAE,SAAU,EAAA,CAAE,QAAS,CAAA;AAAA,IACrE,EAAA,EAAIA,YAAiB,QAAS,CAAA,EAAA;AAAA,IAC9B,cAAgB,EAAA;AAAA,GACjB,CAAA;AAAA,EACD,QAAU,EAAA,GAAA,CACP,MAAO,EAAA,CACP,SAAU,CAAA,CAAC,KAAW,KAAA,KAAA,KAAU,EAAK,GAAA,KAAA,CAAA,GAAY,KAAM,CAAA,CACvD,QAAS,EAAA;AAAA,EACZ,UAAU,GACP,CAAA,MAAA,EACA,CAAA,SAAA,CAAU,CAAC,KAAW,KAAA,KAAA,KAAU,EAAM,IAAA,KAAA,KAAU,OAAO,KAAY,CAAA,GAAA,KAAM,EACzE,QAAS,EAAA,CACT,IAAI,CAAG,EAAA;AAAA,IACN,GAAGA,WAAiB,CAAA,SAAA;AAAA,IACpB,MAAA,EAAQ,EAAE,GAAA,EAAK,CAAE;AAAA,GAClB,CACA,CAAA,OAAA,CAAQ,OAAS,EAAA;AAAA,IAChB,EAAI,EAAA,0CAAA;AAAA,IACJ,cAAgB,EAAA;AAAA,GACjB,CACA,CAAA,OAAA,CAAQ,OAAS,EAAA;AAAA,IAChB,EAAI,EAAA,0CAAA;AAAA,IACJ,cAAgB,EAAA;AAAA,GACjB,CACA,CAAA,OAAA,CAAQ,IAAM,EAAA;AAAA,IACb,EAAI,EAAA,uCAAA;AAAA,IACJ,cAAgB,EAAA;AAAA,GACjB,CAAA;AAAA,EACH,eAAiB,EAAA,GAAA,CACd,MAAO,EAAA,CACP,UAAU,CAAC,KAAA,KAAW,KAAU,KAAA,EAAA,GAAK,OAAO,KAAM,CAAA,CAClD,QAAS,EAAA,CACT,IAAI,CAAG,EAAA;AAAA,IACN,GAAGA,WAAiB,CAAA,SAAA;AAAA,IACpB,MAAA,EAAQ,EAAE,GAAA,EAAK,CAAE;AAAA,GAClB,EACA,KAAM,CAAA,CAAC,IAAI,GAAI,CAAA,UAAU,CAAG,EAAA,IAAI,CAAG,EAAA;AAAA,IAClC,EAAI,EAAA,yCAAA;AAAA,IACJ,cAAgB,EAAA;AAAA,GACjB,CACA,CAAA,IAAA,CAAK,UAAY,EAAA,CAAC,UAAU,UAAe,KAAA;AAC1C,IAAO,OAAA,QAAA,GACH,WACG,QAAS,CAAA;AAAA,MACR,EAAA,EAAIA,YAAiB,QAAS,CAAA,EAAA;AAAA,MAC9B,cAAgB,EAAA;AAAA,KACjB,CACA,CAAA,QAAA,EACH,GAAA,UAAA;AAAA,GACL;AACL;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../ee/server/src/controllers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,wBAKE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../ee/server/src/controllers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,wBAKE"}
@@ -1,6 +1,6 @@
1
1
  declare const _default: {
2
2
  "name": "@strapi/admin",
3
- "version": "5.5.2",
3
+ "version": "5.6.0",
4
4
  "description": "Strapi Admin",
5
5
  "repository": {
6
6
  "type": "git",
@@ -82,10 +82,10 @@ declare const _default: {
82
82
  "@reduxjs/toolkit": "1.9.7",
83
83
  "@strapi/design-system": "2.0.0-rc.14",
84
84
  "@strapi/icons": "2.0.0-rc.14",
85
- "@strapi/permissions": "5.5.2",
86
- "@strapi/types": "5.5.2",
87
- "@strapi/typescript-utils": "5.5.2",
88
- "@strapi/utils": "5.5.2",
85
+ "@strapi/permissions": "5.6.0",
86
+ "@strapi/types": "5.6.0",
87
+ "@strapi/typescript-utils": "5.6.0",
88
+ "@strapi/utils": "5.6.0",
89
89
  "@testing-library/dom": "10.1.0",
90
90
  "@testing-library/react": "15.0.7",
91
91
  "@testing-library/user-event": "14.5.2",
@@ -139,8 +139,8 @@ declare const _default: {
139
139
  "zod": "^3.22.4"
140
140
  },
141
141
  "devDependencies": {
142
- "@strapi/admin-test-utils": "5.5.2",
143
- "@strapi/data-transfer": "5.5.2",
142
+ "@strapi/admin-test-utils": "5.6.0",
143
+ "@strapi/data-transfer": "5.6.0",
144
144
  "@strapi/pack-up": "5.0.2",
145
145
  "@types/codemirror5": "npm:@types/codemirror@^5.60.15",
146
146
  "@types/fs-extra": "11.0.4",
@@ -24,6 +24,7 @@ const compose = require("koa-compose");
24
24
  const dataTransfer$1 = require("@strapi/data-transfer");
25
25
  const isLocalhostIp = require("is-localhost-ip");
26
26
  const punycode = require("punycode/");
27
+ const yup = require("yup");
27
28
  const nodeSchedule = require("node-schedule");
28
29
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
29
30
  function _interopNamespace(e) {
@@ -60,6 +61,7 @@ const tsUtils__default = /* @__PURE__ */ _interopDefault(tsUtils);
60
61
  const compose__default = /* @__PURE__ */ _interopDefault(compose);
61
62
  const isLocalhostIp__default = /* @__PURE__ */ _interopDefault(isLocalhostIp);
62
63
  const punycode__default = /* @__PURE__ */ _interopDefault(punycode);
64
+ const yup__namespace = /* @__PURE__ */ _interopNamespace(yup);
63
65
  const getService$1 = (name2) => {
64
66
  return strapi.service(`admin::${name2}`);
65
67
  };
@@ -1353,6 +1355,18 @@ const transfer$2 = [
1353
1355
  }
1354
1356
  }
1355
1357
  ];
1358
+ const info = { pluginName: "admin", type: "admin" };
1359
+ const homepage = [
1360
+ {
1361
+ method: "GET",
1362
+ info,
1363
+ path: "/homepage/recent-documents",
1364
+ handler: "homepage.getRecentDocuments",
1365
+ config: {
1366
+ policies: ["admin::isAuthenticatedAdmin"]
1367
+ }
1368
+ }
1369
+ ];
1356
1370
  const routes$1 = {
1357
1371
  admin: {
1358
1372
  type: "admin",
@@ -1365,7 +1379,8 @@ const routes$1 = {
1365
1379
  ...webhooks$1,
1366
1380
  ...apiTokens,
1367
1381
  ...contentApi$1,
1368
- ...transfer$2
1382
+ ...transfer$2,
1383
+ ...homepage
1369
1384
  ]
1370
1385
  }
1371
1386
  };
@@ -4121,6 +4136,144 @@ const projectSettings = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.def
4121
4136
  parseFilesData,
4122
4137
  updateProjectSettings: updateProjectSettings$1
4123
4138
  }, Symbol.toStringTag, { value: "Module" }));
4139
+ const createHomepageService = ({ strapi: strapi2 }) => {
4140
+ const MAX_DOCUMENTS = 4;
4141
+ const metadataService = strapi2.plugin("content-manager").service("document-metadata");
4142
+ const permissionService = strapi2.admin.services.permission;
4143
+ const getConfiguration = async (contentTypeUids) => {
4144
+ const coreStore = strapi2.db.query("strapi::core-store");
4145
+ const rawConfigurations = await coreStore.findMany({
4146
+ where: {
4147
+ key: {
4148
+ $in: contentTypeUids.map(
4149
+ (contentType2) => `plugin_content_manager_configuration_content_types::${contentType2}`
4150
+ )
4151
+ }
4152
+ }
4153
+ });
4154
+ return rawConfigurations.map((rawConfiguration) => {
4155
+ return JSON.parse(rawConfiguration.value);
4156
+ });
4157
+ };
4158
+ const getPermittedContentTypes = async () => {
4159
+ const readPermissions = await permissionService.findMany({
4160
+ where: {
4161
+ role: { users: { id: strapi2.requestContext.get()?.state?.user.id } },
4162
+ action: "plugin::content-manager.explorer.read"
4163
+ }
4164
+ });
4165
+ return readPermissions.map((permission2) => permission2.subject).filter(Boolean);
4166
+ };
4167
+ const getDocumentsMetaData = (allowedContentTypeUids, configurations) => {
4168
+ return allowedContentTypeUids.map((uid) => {
4169
+ const configuration = configurations.find((config2) => config2.uid === uid);
4170
+ const contentType2 = strapi2.contentType(uid);
4171
+ const fields = ["documentId", "updatedAt"];
4172
+ const hasDraftAndPublish = utils$2.contentTypes.hasDraftAndPublish(contentType2);
4173
+ if (hasDraftAndPublish) {
4174
+ fields.push("publishedAt");
4175
+ }
4176
+ if (configuration?.settings.mainField) {
4177
+ fields.push(configuration.settings.mainField);
4178
+ }
4179
+ const isLocalized = contentType2.pluginOptions?.i18n?.localized;
4180
+ if (isLocalized) {
4181
+ fields.push("locale");
4182
+ }
4183
+ return {
4184
+ fields,
4185
+ mainField: configuration.settings.mainField,
4186
+ contentType: contentType2,
4187
+ hasDraftAndPublish,
4188
+ uid
4189
+ };
4190
+ });
4191
+ };
4192
+ const formatDocuments = (documents, meta) => {
4193
+ return documents.map((document) => {
4194
+ return {
4195
+ documentId: document.documentId,
4196
+ locale: document.locale ?? null,
4197
+ updatedAt: new Date(document.updatedAt),
4198
+ title: document[meta.mainField ?? "documentId"],
4199
+ publishedAt: meta.hasDraftAndPublish && document.publishedAt ? new Date(document.publishedAt) : null,
4200
+ contentTypeUid: meta.uid,
4201
+ contentTypeDisplayName: meta.contentType.info.displayName,
4202
+ kind: meta.contentType.kind
4203
+ };
4204
+ });
4205
+ };
4206
+ const addStatusToDocuments = async (documents) => {
4207
+ return Promise.all(
4208
+ documents.map(async (recentDocument) => {
4209
+ const hasDraftAndPublish = utils$2.contentTypes.hasDraftAndPublish(
4210
+ strapi2.contentType(recentDocument.contentTypeUid)
4211
+ );
4212
+ const { availableStatus } = await metadataService.getMetadata(
4213
+ recentDocument.contentTypeUid,
4214
+ recentDocument,
4215
+ {
4216
+ availableStatus: hasDraftAndPublish,
4217
+ availableLocales: false
4218
+ }
4219
+ );
4220
+ const status = metadataService.getStatus(
4221
+ recentDocument,
4222
+ availableStatus
4223
+ );
4224
+ return {
4225
+ ...recentDocument,
4226
+ status: hasDraftAndPublish ? status : void 0
4227
+ };
4228
+ })
4229
+ );
4230
+ };
4231
+ return {
4232
+ async getRecentlyPublishedDocuments() {
4233
+ const permittedContentTypes = await getPermittedContentTypes();
4234
+ const allowedContentTypeUids = permittedContentTypes.filter((uid) => {
4235
+ return utils$2.contentTypes.hasDraftAndPublish(strapi2.contentType(uid));
4236
+ });
4237
+ const configurations = await getConfiguration(allowedContentTypeUids);
4238
+ const documentsMeta = getDocumentsMetaData(allowedContentTypeUids, configurations);
4239
+ const recentDocuments = await Promise.all(
4240
+ documentsMeta.map(async (meta) => {
4241
+ const docs = await strapi2.documents(meta.uid).findMany({
4242
+ limit: MAX_DOCUMENTS,
4243
+ sort: "publishedAt:desc",
4244
+ fields: meta.fields,
4245
+ status: "published"
4246
+ });
4247
+ return formatDocuments(docs, meta);
4248
+ })
4249
+ );
4250
+ const overallRecentDocuments = recentDocuments.flat().sort((a, b) => {
4251
+ if (!a.publishedAt || !b.publishedAt) return 0;
4252
+ return b.publishedAt.valueOf() - a.publishedAt.valueOf();
4253
+ }).slice(0, MAX_DOCUMENTS);
4254
+ return addStatusToDocuments(overallRecentDocuments);
4255
+ },
4256
+ async getRecentlyUpdatedDocuments() {
4257
+ const allowedContentTypeUids = await getPermittedContentTypes();
4258
+ const configurations = await getConfiguration(allowedContentTypeUids);
4259
+ const documentsMeta = getDocumentsMetaData(allowedContentTypeUids, configurations);
4260
+ const recentDocuments = await Promise.all(
4261
+ documentsMeta.map(async (meta) => {
4262
+ const docs = await strapi2.documents(meta.uid).findMany({
4263
+ limit: MAX_DOCUMENTS,
4264
+ sort: "updatedAt:desc",
4265
+ fields: meta.fields
4266
+ });
4267
+ return formatDocuments(docs, meta);
4268
+ })
4269
+ );
4270
+ const overallRecentDocuments = recentDocuments.flat().sort((a, b) => {
4271
+ return b.updatedAt.valueOf() - a.updatedAt.valueOf();
4272
+ }).slice(0, MAX_DOCUMENTS);
4273
+ return addStatusToDocuments(overallRecentDocuments);
4274
+ }
4275
+ };
4276
+ };
4124
4277
  const services$1 = {
4125
4278
  auth: auth$1,
4126
4279
  user: user$3,
@@ -4135,7 +4288,8 @@ const services$1 = {
4135
4288
  action,
4136
4289
  "api-token": apiToken$2,
4137
4290
  transfer: transfer$1,
4138
- "project-settings": projectSettings
4291
+ "project-settings": projectSettings,
4292
+ homepage: createHomepageService
4139
4293
  };
4140
4294
  const MAX_IMAGE_WIDTH = 750;
4141
4295
  const MAX_IMAGE_HEIGHT = MAX_IMAGE_WIDTH;
@@ -4499,7 +4653,7 @@ const { ApplicationError: ApplicationError$6, ValidationError: ValidationError$2
4499
4653
  const authentication$1 = {
4500
4654
  login: compose__default.default([
4501
4655
  (ctx, next) => {
4502
- return passport__default.default.authenticate("local", { session: false }, (err, user2, info) => {
4656
+ return passport__default.default.authenticate("local", { session: false }, (err, user2, info2) => {
4503
4657
  if (err) {
4504
4658
  strapi.eventHub.emit("admin.auth.error", { error: err, provider: "local" });
4505
4659
  if (err.details?.code === "LOGIN_NOT_ALLOWED") {
@@ -4509,10 +4663,10 @@ const authentication$1 = {
4509
4663
  }
4510
4664
  if (!user2) {
4511
4665
  strapi.eventHub.emit("admin.auth.error", {
4512
- error: new Error(info.message),
4666
+ error: new Error(info2.message),
4513
4667
  provider: "local"
4514
4668
  });
4515
- throw new ApplicationError$6(info.message);
4669
+ throw new ApplicationError$6(info2.message);
4516
4670
  }
4517
4671
  const query = ctx.state;
4518
4672
  query.user = user2;
@@ -5150,6 +5304,29 @@ const contentApi = {
5150
5304
  ctx.send({ data: routesMap });
5151
5305
  }
5152
5306
  };
5307
+ const createHomepageController = () => {
5308
+ const homepageService = getService$1("homepage");
5309
+ const recentDocumentParamsSchema = yup__namespace.object().shape({
5310
+ action: yup__namespace.mixed().oneOf(["update", "publish"]).required()
5311
+ });
5312
+ return {
5313
+ async getRecentDocuments(ctx) {
5314
+ let action2;
5315
+ try {
5316
+ action2 = (await recentDocumentParamsSchema.validate(ctx.query)).action;
5317
+ } catch (error) {
5318
+ if (error instanceof yup__namespace.ValidationError) {
5319
+ throw new utils$2.errors.ValidationError(error.message);
5320
+ }
5321
+ throw error;
5322
+ }
5323
+ if (action2 === "publish") {
5324
+ return { data: await homepageService.getRecentlyPublishedDocuments() };
5325
+ }
5326
+ return { data: await homepageService.getRecentlyUpdatedDocuments() };
5327
+ }
5328
+ };
5329
+ };
5153
5330
  const controllers$1 = {
5154
5331
  admin: admin$3,
5155
5332
  "api-token": apiToken$1,
@@ -5160,7 +5337,8 @@ const controllers$1 = {
5160
5337
  transfer,
5161
5338
  user: user$2,
5162
5339
  webhooks,
5163
- "content-api": contentApi
5340
+ "content-api": contentApi,
5341
+ homepage: createHomepageController
5164
5342
  };
5165
5343
  const Permission = {
5166
5344
  collectionName: "admin_permissions",