@strapi/admin 5.2.0 → 5.4.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 (174) hide show
  1. package/dist/admin/{ApplicationInfoPage-DSp-wZPU.js → ApplicationInfoPage-BCZcgsWd.js} +2 -2
  2. package/dist/admin/{ApplicationInfoPage-DSp-wZPU.js.map → ApplicationInfoPage-BCZcgsWd.js.map} +1 -1
  3. package/dist/admin/{ApplicationInfoPage-CSqP03kK.mjs → ApplicationInfoPage-eSG4mx_w.mjs} +2 -2
  4. package/dist/admin/{ApplicationInfoPage-CSqP03kK.mjs.map → ApplicationInfoPage-eSG4mx_w.mjs.map} +1 -1
  5. package/dist/admin/{AuthenticatedLayout-BIlGCFDE.mjs → AuthenticatedLayout-BGHGSh-L.mjs} +15 -13
  6. package/dist/admin/{AuthenticatedLayout-BIlGCFDE.mjs.map → AuthenticatedLayout-BGHGSh-L.mjs.map} +1 -1
  7. package/dist/admin/{AuthenticatedLayout-CsWTZJYZ.js → AuthenticatedLayout-rvXnJ9r2.js} +15 -13
  8. package/dist/admin/{AuthenticatedLayout-CsWTZJYZ.js.map → AuthenticatedLayout-rvXnJ9r2.js.map} +1 -1
  9. package/dist/admin/{CreatePage-hkw435o7.js → CreatePage-B4IdB6Or.js} +2 -2
  10. package/dist/admin/{CreatePage-hkw435o7.js.map → CreatePage-B4IdB6Or.js.map} +1 -1
  11. package/dist/admin/{CreatePage-DNlBK-JL.mjs → CreatePage-D8Y9v1JU.mjs} +2 -2
  12. package/dist/admin/{CreatePage-DNlBK-JL.mjs.map → CreatePage-D8Y9v1JU.mjs.map} +1 -1
  13. package/dist/admin/{CreatePage-Dn4wbR6d.mjs → CreatePage-gW8SAPYF.mjs} +2 -2
  14. package/dist/admin/{CreatePage-Dn4wbR6d.mjs.map → CreatePage-gW8SAPYF.mjs.map} +1 -1
  15. package/dist/admin/{CreatePage-CihLLGiA.js → CreatePage-zoh4B0Qd.js} +2 -2
  16. package/dist/admin/{CreatePage-CihLLGiA.js.map → CreatePage-zoh4B0Qd.js.map} +1 -1
  17. package/dist/admin/{CreateView-a02G3EdU.mjs → CreateView-C6V54HVw.mjs} +2 -2
  18. package/dist/admin/{CreateView-a02G3EdU.mjs.map → CreateView-C6V54HVw.mjs.map} +1 -1
  19. package/dist/admin/{CreateView-BoYhyk-k.js → CreateView-DOgyQCSt.js} +2 -2
  20. package/dist/admin/{CreateView-BoYhyk-k.js.map → CreateView-DOgyQCSt.js.map} +1 -1
  21. package/dist/admin/{CreateView-BHSYSEov.mjs → CreateView-MT-w83JE.mjs} +2 -2
  22. package/dist/admin/{CreateView-BHSYSEov.mjs.map → CreateView-MT-w83JE.mjs.map} +1 -1
  23. package/dist/admin/{CreateView-DyiCHkze.js → CreateView-VrgHzW_-.js} +2 -2
  24. package/dist/admin/{CreateView-DyiCHkze.js.map → CreateView-VrgHzW_-.js.map} +1 -1
  25. package/dist/admin/{EditPage-BgyyZJ8E.mjs → EditPage-C4L-xAko.mjs} +5 -5
  26. package/dist/admin/{EditPage-BgyyZJ8E.mjs.map → EditPage-C4L-xAko.mjs.map} +1 -1
  27. package/dist/admin/{EditPage-A9UxoVIJ.js → EditPage-DJrq8CTf.js} +3 -3
  28. package/dist/admin/{EditPage-A9UxoVIJ.js.map → EditPage-DJrq8CTf.js.map} +1 -1
  29. package/dist/admin/{EditPage-BUsdSjU9.mjs → EditPage-DTcwVvA3.mjs} +3 -3
  30. package/dist/admin/{EditPage-BUsdSjU9.mjs.map → EditPage-DTcwVvA3.mjs.map} +1 -1
  31. package/dist/admin/{EditPage-apTcQwOj.js → EditPage-OqPxmigi.js} +5 -5
  32. package/dist/admin/{EditPage-apTcQwOj.js.map → EditPage-OqPxmigi.js.map} +1 -1
  33. package/dist/admin/{EditPage-B5recID8.js → EditPage-Zz-iOXTJ.js} +3 -3
  34. package/dist/admin/{EditPage-B5recID8.js.map → EditPage-Zz-iOXTJ.js.map} +1 -1
  35. package/dist/admin/{EditPage-8BCMKtyr.mjs → EditPage-aqidMECk.mjs} +3 -3
  36. package/dist/admin/{EditPage-8BCMKtyr.mjs.map → EditPage-aqidMECk.mjs.map} +1 -1
  37. package/dist/admin/{EditView-CP3Fb1gU.js → EditView-BzfNXMVu.js} +3 -3
  38. package/dist/admin/{EditView-CP3Fb1gU.js.map → EditView-BzfNXMVu.js.map} +1 -1
  39. package/dist/admin/{EditView-C2D-x_Xz.mjs → EditView-D9TEOcxi.mjs} +3 -3
  40. package/dist/admin/{EditView-C2D-x_Xz.mjs.map → EditView-D9TEOcxi.mjs.map} +1 -1
  41. package/dist/admin/{EditViewPage-BxcYobnr.mjs → EditViewPage-Do_ImfQP.mjs} +3 -3
  42. package/dist/admin/{EditViewPage-BxcYobnr.mjs.map → EditViewPage-Do_ImfQP.mjs.map} +1 -1
  43. package/dist/admin/{EditViewPage-CNHrBxn8.js → EditViewPage-lfAZ1YSB.js} +3 -3
  44. package/dist/admin/{EditViewPage-CNHrBxn8.js.map → EditViewPage-lfAZ1YSB.js.map} +1 -1
  45. package/dist/admin/{EventsTable-BZ9eLXRo.mjs → EventsTable-CsohXy29.mjs} +2 -2
  46. package/dist/admin/{EventsTable-BZ9eLXRo.mjs.map → EventsTable-CsohXy29.mjs.map} +1 -1
  47. package/dist/admin/{EventsTable-BZ4u3aCv.js → EventsTable-DexrKQa6.js} +2 -2
  48. package/dist/admin/{EventsTable-BZ4u3aCv.js.map → EventsTable-DexrKQa6.js.map} +1 -1
  49. package/dist/admin/{HomePage-DTNQWeZ0.mjs → HomePage-BIYGWMo6.mjs} +2 -2
  50. package/dist/admin/{HomePage-DTNQWeZ0.mjs.map → HomePage-BIYGWMo6.mjs.map} +1 -1
  51. package/dist/admin/{HomePage-DJpdBewm.js → HomePage-BhpH3KOE.js} +2 -2
  52. package/dist/admin/{HomePage-DJpdBewm.js.map → HomePage-BhpH3KOE.js.map} +1 -1
  53. package/dist/admin/{HomePage-BRn3pXKH.mjs → HomePage-CFJWZM9Y.mjs} +3 -3
  54. package/dist/admin/{HomePage-BRn3pXKH.mjs.map → HomePage-CFJWZM9Y.mjs.map} +1 -1
  55. package/dist/admin/{HomePage-C1A6nQXm.js → HomePage-K3zmigdp.js} +3 -3
  56. package/dist/admin/{HomePage-C1A6nQXm.js.map → HomePage-K3zmigdp.js.map} +1 -1
  57. package/dist/admin/{InstalledPlugins-DaNtwvGY.mjs → InstalledPlugins-DXwCSuWk.mjs} +2 -2
  58. package/dist/admin/{InstalledPlugins-DaNtwvGY.mjs.map → InstalledPlugins-DXwCSuWk.mjs.map} +1 -1
  59. package/dist/admin/{InstalledPlugins-KpjVfxeB.js → InstalledPlugins-jjSQ-eYz.js} +2 -2
  60. package/dist/admin/{InstalledPlugins-KpjVfxeB.js.map → InstalledPlugins-jjSQ-eYz.js.map} +1 -1
  61. package/dist/admin/{Layout-DMn9sMFI.js → Layout-5R-UEeEu.js} +3 -3
  62. package/dist/admin/{Layout-DMn9sMFI.js.map → Layout-5R-UEeEu.js.map} +1 -1
  63. package/dist/admin/{Layout-D9lATR6z.mjs → Layout-BQLP8OM0.mjs} +3 -3
  64. package/dist/admin/{Layout-D9lATR6z.mjs.map → Layout-BQLP8OM0.mjs.map} +1 -1
  65. package/dist/admin/{ListPage-BvNejJA_.js → ListPage-B9V6XkwP.js} +2 -2
  66. package/dist/admin/{ListPage-BvNejJA_.js.map → ListPage-B9V6XkwP.js.map} +1 -1
  67. package/dist/admin/{ListPage-Btx39-XQ.mjs → ListPage-BP5lXq97.mjs} +5 -5
  68. package/dist/admin/{ListPage-Btx39-XQ.mjs.map → ListPage-BP5lXq97.mjs.map} +1 -1
  69. package/dist/admin/{ListPage-YOWelQZs.js → ListPage-CpR8vVAu.js} +3 -3
  70. package/dist/admin/{ListPage-YOWelQZs.js.map → ListPage-CpR8vVAu.js.map} +1 -1
  71. package/dist/admin/{ListPage-Ci918-m8.mjs → ListPage-D11EprUI.mjs} +3 -3
  72. package/dist/admin/{ListPage-Ci918-m8.mjs.map → ListPage-D11EprUI.mjs.map} +1 -1
  73. package/dist/admin/{ListPage-D8cBC-ig.js → ListPage-DNb3Dvzh.js} +5 -5
  74. package/dist/admin/{ListPage-D8cBC-ig.js.map → ListPage-DNb3Dvzh.js.map} +1 -1
  75. package/dist/admin/{ListPage-Djyv7QZO.js → ListPage-DTelt_6d.js} +2 -2
  76. package/dist/admin/{ListPage-Djyv7QZO.js.map → ListPage-DTelt_6d.js.map} +1 -1
  77. package/dist/admin/{ListPage-B1IT9Dup.mjs → ListPage-DU7ilx-j.mjs} +2 -2
  78. package/dist/admin/{ListPage-B1IT9Dup.mjs.map → ListPage-DU7ilx-j.mjs.map} +1 -1
  79. package/dist/admin/{ListPage-9LZO-9Qf.mjs → ListPage-DXJDtiQD.mjs} +2 -2
  80. package/dist/admin/{ListPage-9LZO-9Qf.mjs.map → ListPage-DXJDtiQD.mjs.map} +1 -1
  81. package/dist/admin/{ListPage-I9TzR1dE.mjs → ListPage-HjXFncNB.mjs} +2 -2
  82. package/dist/admin/{ListPage-I9TzR1dE.mjs.map → ListPage-HjXFncNB.mjs.map} +1 -1
  83. package/dist/admin/{ListPage-BDBr31kd.js → ListPage-OQsuRllW.js} +2 -2
  84. package/dist/admin/{ListPage-BDBr31kd.js.map → ListPage-OQsuRllW.js.map} +1 -1
  85. package/dist/admin/{ListView-CnQapNRn.mjs → ListView-B8zLIUiJ.mjs} +3 -3
  86. package/dist/admin/{ListView-CnQapNRn.mjs.map → ListView-B8zLIUiJ.mjs.map} +1 -1
  87. package/dist/admin/{ListView-Dix9AWIN.mjs → ListView-CQaXmC5W.mjs} +3 -3
  88. package/dist/admin/{ListView-Dix9AWIN.mjs.map → ListView-CQaXmC5W.mjs.map} +1 -1
  89. package/dist/admin/{ListView-CrdcqpD-.js → ListView-DOpIF_yM.js} +3 -3
  90. package/dist/admin/{ListView-CrdcqpD-.js.map → ListView-DOpIF_yM.js.map} +1 -1
  91. package/dist/admin/{ListView-BB-LXwUB.js → ListView-faJiVgBm.js} +3 -3
  92. package/dist/admin/{ListView-BB-LXwUB.js.map → ListView-faJiVgBm.js.map} +1 -1
  93. package/dist/admin/{Login-BLQ-ZBh7.js → Login-CjQn78cc.js} +2 -2
  94. package/dist/admin/{Login-BLQ-ZBh7.js.map → Login-CjQn78cc.js.map} +1 -1
  95. package/dist/admin/{Login-BdyX6Wiu.mjs → Login-pPw_kUht.mjs} +2 -2
  96. package/dist/admin/{Login-BdyX6Wiu.mjs.map → Login-pPw_kUht.mjs.map} +1 -1
  97. package/dist/admin/{MagicLinkEE-CzOkNmUy.js → MagicLinkEE-BTMhs-Zk.js} +3 -3
  98. package/dist/admin/{MagicLinkEE-CzOkNmUy.js.map → MagicLinkEE-BTMhs-Zk.js.map} +1 -1
  99. package/dist/admin/{MagicLinkEE-C9pP6oQq.mjs → MagicLinkEE-CINoZY3Q.mjs} +3 -3
  100. package/dist/admin/{MagicLinkEE-C9pP6oQq.mjs.map → MagicLinkEE-CINoZY3Q.mjs.map} +1 -1
  101. package/dist/admin/{MarketplacePage-CVn9KT9t.mjs → MarketplacePage-DiGt5ghr.mjs} +2 -2
  102. package/dist/admin/{MarketplacePage-CVn9KT9t.mjs.map → MarketplacePage-DiGt5ghr.mjs.map} +1 -1
  103. package/dist/admin/{MarketplacePage-B8qRAPqj.js → MarketplacePage-lAg4pGZA.js} +2 -2
  104. package/dist/admin/{MarketplacePage-B8qRAPqj.js.map → MarketplacePage-lAg4pGZA.js.map} +1 -1
  105. package/dist/admin/{ProfilePage-Bl-4mYd2.mjs → ProfilePage-BL-_luUe.mjs} +3 -3
  106. package/dist/admin/{ProfilePage-Bl-4mYd2.mjs.map → ProfilePage-BL-_luUe.mjs.map} +1 -1
  107. package/dist/admin/{ProfilePage-ReGa9dje.js → ProfilePage-KNu-OAwi.js} +3 -3
  108. package/dist/admin/{ProfilePage-ReGa9dje.js.map → ProfilePage-KNu-OAwi.js.map} +1 -1
  109. package/dist/admin/{PurchaseAuditLogs-2oeGFds5.mjs → PurchaseAuditLogs-C-RwP8VY.mjs} +2 -2
  110. package/dist/admin/{PurchaseAuditLogs-2oeGFds5.mjs.map → PurchaseAuditLogs-C-RwP8VY.mjs.map} +1 -1
  111. package/dist/admin/{PurchaseAuditLogs-6UP6cZcy.js → PurchaseAuditLogs-TO4315F9.js} +2 -2
  112. package/dist/admin/{PurchaseAuditLogs-6UP6cZcy.js.map → PurchaseAuditLogs-TO4315F9.js.map} +1 -1
  113. package/dist/admin/{PurchaseSingleSignOn-Qk9HDHrC.mjs → PurchaseSingleSignOn-DVI2-no2.mjs} +2 -2
  114. package/dist/admin/{PurchaseSingleSignOn-Qk9HDHrC.mjs.map → PurchaseSingleSignOn-DVI2-no2.mjs.map} +1 -1
  115. package/dist/admin/{PurchaseSingleSignOn-BzMh0KoO.js → PurchaseSingleSignOn-DoBJXabd.js} +2 -2
  116. package/dist/admin/{PurchaseSingleSignOn-BzMh0KoO.js.map → PurchaseSingleSignOn-DoBJXabd.js.map} +1 -1
  117. package/dist/admin/{SelectRoles-Da7Gj-ZS.js → SelectRoles-BPuYfMF-.js} +3 -3
  118. package/dist/admin/{SelectRoles-Da7Gj-ZS.js.map → SelectRoles-BPuYfMF-.js.map} +1 -1
  119. package/dist/admin/{SelectRoles-Bsnj4-X2.mjs → SelectRoles-Cm6BagK_.mjs} +3 -3
  120. package/dist/admin/{SelectRoles-Bsnj4-X2.mjs.map → SelectRoles-Cm6BagK_.mjs.map} +1 -1
  121. package/dist/admin/{SingleSignOnPage--K4FK4Gl.js → SingleSignOnPage-Bt_CIzT5.js} +3 -3
  122. package/dist/admin/{SingleSignOnPage--K4FK4Gl.js.map → SingleSignOnPage-Bt_CIzT5.js.map} +1 -1
  123. package/dist/admin/{SingleSignOnPage-CzkeGzw6.mjs → SingleSignOnPage-CRc63lEC.mjs} +3 -3
  124. package/dist/admin/{SingleSignOnPage-CzkeGzw6.mjs.map → SingleSignOnPage-CRc63lEC.mjs.map} +1 -1
  125. package/dist/admin/{Table-DjjsXtiF.mjs → Table-Co8XubAE.mjs} +2 -2
  126. package/dist/admin/{Table-DjjsXtiF.mjs.map → Table-Co8XubAE.mjs.map} +1 -1
  127. package/dist/admin/{Table-WJbeUTg2.js → Table-lfdTk2yD.js} +2 -2
  128. package/dist/admin/{Table-WJbeUTg2.js.map → Table-lfdTk2yD.js.map} +1 -1
  129. package/dist/admin/Theme-K6zNL3JT.js.map +1 -1
  130. package/dist/admin/Theme-NAd2H4cV.mjs.map +1 -1
  131. package/dist/admin/{TokenTypeSelect-CAfxT_Q8.mjs → TokenTypeSelect-B6ImfDRL.mjs} +2 -2
  132. package/dist/admin/{TokenTypeSelect-CAfxT_Q8.mjs.map → TokenTypeSelect-B6ImfDRL.mjs.map} +1 -1
  133. package/dist/admin/{TokenTypeSelect-CrmgLBBx.js → TokenTypeSelect-Bd4hNakp.js} +2 -2
  134. package/dist/admin/{TokenTypeSelect-CrmgLBBx.js.map → TokenTypeSelect-Bd4hNakp.js.map} +1 -1
  135. package/dist/admin/{UseCasePage-UtJuCEgI.js → UseCasePage-CtpQ5ZiF.js} +2 -2
  136. package/dist/admin/{UseCasePage-UtJuCEgI.js.map → UseCasePage-CtpQ5ZiF.js.map} +1 -1
  137. package/dist/admin/{UseCasePage-BFJAi2Bd.mjs → UseCasePage-PG_jndS0.mjs} +2 -2
  138. package/dist/admin/{UseCasePage-BFJAi2Bd.mjs.map → UseCasePage-PG_jndS0.mjs.map} +1 -1
  139. package/dist/admin/{constants-BPNvoJmk.mjs → constants-Ch2AsS4W.mjs} +2 -2
  140. package/dist/admin/{constants-BPNvoJmk.mjs.map → constants-Ch2AsS4W.mjs.map} +1 -1
  141. package/dist/admin/{constants-CC8994T3.js → constants-DXcKbtgF.js} +2 -2
  142. package/dist/admin/{constants-CC8994T3.js.map → constants-DXcKbtgF.js.map} +1 -1
  143. package/dist/admin/{index-DUWx-KG9.mjs → index-DbsOttc5.mjs} +32 -30
  144. package/dist/admin/index-DbsOttc5.mjs.map +1 -0
  145. package/dist/admin/{index-Dev-BOdA.js → index-uPLDVF3W.js} +32 -30
  146. package/dist/admin/index-uPLDVF3W.js.map +1 -0
  147. package/dist/admin/index.js +1 -1
  148. package/dist/admin/index.mjs +1 -1
  149. package/dist/admin/src/features/Tracking.d.ts +2 -2
  150. package/dist/admin/src/translations/languageNativeNames.d.ts +2 -0
  151. package/dist/admin/{useAdminRoles-BiDYgELB.mjs → useAdminRoles-Bno_PvED.mjs} +2 -2
  152. package/dist/admin/{useAdminRoles-BiDYgELB.mjs.map → useAdminRoles-Bno_PvED.mjs.map} +1 -1
  153. package/dist/admin/{useAdminRoles-C9d0hdXa.js → useAdminRoles-pQo0bUAy.js} +2 -2
  154. package/dist/admin/{useAdminRoles-C9d0hdXa.js.map → useAdminRoles-pQo0bUAy.js.map} +1 -1
  155. package/dist/admin/{validation-B3gdYett.mjs → validation-BGdWGT3h.mjs} +2 -2
  156. package/dist/admin/{validation-B3gdYett.mjs.map → validation-BGdWGT3h.mjs.map} +1 -1
  157. package/dist/admin/{validation-DRptyAiR.js → validation-T01l5wBD.js} +2 -2
  158. package/dist/admin/{validation-DRptyAiR.js.map → validation-T01l5wBD.js.map} +1 -1
  159. package/dist/ee/server/src/bootstrap.d.ts.map +1 -1
  160. package/dist/ee/server/src/index.d.ts +12 -0
  161. package/dist/ee/server/src/index.d.ts.map +1 -1
  162. package/dist/ee/server/src/services/index.d.ts +6 -0
  163. package/dist/ee/server/src/services/index.d.ts.map +1 -1
  164. package/dist/ee/server/src/{utils/persisted-tables.d.ts → services/persist-tables.d.ts} +2 -2
  165. package/dist/ee/server/src/services/persist-tables.d.ts.map +1 -0
  166. package/dist/package.json.d.ts +12 -11
  167. package/dist/server/index.js +72 -43
  168. package/dist/server/index.js.map +1 -1
  169. package/dist/server/index.mjs +72 -43
  170. package/dist/server/index.mjs.map +1 -1
  171. package/package.json +11 -11
  172. package/dist/admin/index-DUWx-KG9.mjs.map +0 -1
  173. package/dist/admin/index-Dev-BOdA.js.map +0 -1
  174. package/dist/ee/server/src/utils/persisted-tables.d.ts.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-Dev-BOdA.js","sources":["../../ee/admin/src/constants.ts","../../admin/src/assets/images/logo-strapi-2022.svg","../../admin/src/constants.ts","../../admin/src/core/apis/CustomFields.ts","../../admin/src/core/apis/Plugin.ts","../../admin/src/features/BackButton.tsx","../../admin/src/components/Providers.tsx","../../admin/src/App.tsx","../../admin/src/hooks/useClipboard.ts","../../admin/src/components/ErrorElement.tsx","../../admin/src/components/Layouts/ActionLayout.tsx","../../admin/src/components/Layouts/ContentLayout.tsx","../../admin/src/components/Layouts/GridLayout.tsx","../../admin/src/components/Layouts/HeaderLayout.tsx","../../admin/src/components/Layouts/Layout.tsx","../../admin/src/pages/NotFoundPage.tsx","../../ee/admin/src/pages/SettingsPage/constants.ts","../../admin/src/components/Form.tsx","../../admin/src/hooks/useFocusInputField.ts","../../admin/src/components/FormInputs/Boolean.tsx","../../admin/src/components/FormInputs/Checkbox.tsx","../../admin/src/components/FormInputs/Date.tsx","../../admin/src/components/FormInputs/DateTime.tsx","../../admin/src/components/FormInputs/Email.tsx","../../admin/src/components/FormInputs/Enumeration.tsx","../../admin/src/components/FormInputs/Json.tsx","../../admin/src/components/FormInputs/Number.tsx","../../admin/src/components/FormInputs/Password.tsx","../../admin/src/components/FormInputs/String.tsx","../../admin/src/components/FormInputs/Textarea.tsx","../../admin/src/components/FormInputs/Time.tsx","../../admin/src/components/FormInputs/Renderer.tsx","../../admin/src/components/UnauthenticatedLogo.tsx","../../admin/src/layouts/UnauthenticatedLayout.tsx","../../admin/src/utils/translatedErrors.ts","../../admin/src/pages/Auth/components/Login.tsx","../../admin/src/pages/Auth/components/ForgotPassword.tsx","../../admin/src/pages/Auth/components/ForgotPasswordSuccess.tsx","../../admin/src/pages/Auth/components/Oops.tsx","../../admin/src/hooks/usePersistentState.ts","../../admin/src/components/NpsSurvey.tsx","../../admin/src/pages/Auth/components/Register.tsx","../../admin/src/pages/Auth/components/ResetPassword.tsx","../../admin/src/pages/Auth/constants.ts","../../admin/src/pages/Auth/AuthPage.tsx","../../admin/src/pages/Settings/constants.ts","../../admin/src/router.tsx","../../admin/src/core/apis/router.tsx","../../admin/src/core/store/configure.ts","../../admin/src/core/utils/basename.ts","../../admin/src/core/utils/createHook.ts","../../admin/src/translations/languageNativeNames.ts","../../admin/src/StrapiApp.tsx","../../admin/src/render.ts","../../admin/src/components/ConfirmDialog.tsx","../../admin/src/hooks/useIsMounted.ts","../../admin/src/hooks/useForceUpdate.ts","../../admin/src/hooks/useThrottledCallback.ts","../../admin/src/utils/shims.ts","../../admin/src/components/DescriptionComponentRenderer.tsx","../../admin/src/constants/filters.ts","../../admin/src/hooks/useControllableState.ts","../../admin/src/components/Filters.tsx","../../admin/src/components/Pagination.tsx","../../admin/src/components/SearchInput.tsx","../../admin/src/components/Table.tsx","../../admin/src/components/ContentBox.tsx","../../admin/src/hooks/useInjectReducer.ts","../../admin/src/hooks/useFetchClient.ts","../../admin/src/services/users.ts"],"sourcesContent":["import type { SettingsMenu } from '../../../admin/src/constants';\nimport type { PermissionMap } from '../../../admin/src/types/permissions';\nimport type { RouteObject } from 'react-router-dom';\n\nexport const ADMIN_PERMISSIONS_EE = {\n settings: {\n auditLogs: {\n main: [{ action: 'admin::audit-logs.read', subject: null }],\n read: [{ action: 'admin::audit-logs.read', subject: null }],\n update: [{ action: 'admin::audit-logs.update', subject: null }],\n },\n 'review-workflows': {\n main: [{ action: 'admin::review-workflows.read', subject: null }],\n read: [{ action: 'admin::review-workflows.read', subject: null }],\n create: [{ action: 'admin::review-workflows.create', subject: null }],\n delete: [{ action: 'admin::review-workflows.delete', subject: null }],\n update: [{ action: 'admin::review-workflows.update', subject: null }],\n },\n sso: {\n main: [{ action: 'admin::provider-login.read', subject: null }],\n read: [{ action: 'admin::provider-login.read', subject: null }],\n update: [{ action: 'admin::provider-login.update', subject: null }],\n },\n releases: {\n read: [\n {\n action: 'plugin::content-releases.settings.read',\n subject: null,\n },\n ],\n update: [\n {\n action: 'plugin::content-releases.settings.update',\n subject: null,\n },\n ],\n },\n },\n} satisfies {\n settings: Pick<PermissionMap['settings'], 'auditLogs' | 'review-workflows' | 'sso' | 'releases'>;\n};\n\n/**\n * Base EE routes, these are relative to the `root` of the app.\n * We use a function to get them so we're not looking at window\n * during build time.\n */\nexport const getEERoutes = (): RouteObject[] =>\n window.strapi.isEE\n ? [\n {\n path: 'auth/login/:authResponse',\n lazy: async () => {\n const { AuthResponse } = await import('./pages/AuthResponse');\n\n return {\n Component: AuthResponse,\n };\n },\n },\n ]\n : [];\n\n// TODO: the constants.js file is imported before the React application is setup and\n// therefore `window.strapi` might not exist at import-time. We should probably define\n// which constant is available at which stage of the application lifecycle.\nexport const SETTINGS_LINKS_EE = (): SettingsMenu => ({\n global: [\n ...(window.strapi.features.isEnabled(window.strapi.features.SSO)\n ? [\n {\n intlLabel: { id: 'Settings.sso.title', defaultMessage: 'Single Sign-On' },\n to: '/settings/single-sign-on',\n id: 'sso',\n },\n ]\n : []),\n ],\n\n admin: [\n ...(window.strapi.features.isEnabled(window.strapi.features.AUDIT_LOGS)\n ? [\n {\n intlLabel: { id: 'global.auditLogs', defaultMessage: 'Audit Logs' },\n to: '/settings/audit-logs?pageSize=50&page=1&sort=date:DESC',\n id: 'auditLogs',\n },\n ]\n : []),\n ],\n});\n","export default \"data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M39%20282c0-118%200-176.9%2036.6-213.5C112.2%2032%20171.1%2032%20288.9%2032h221.2c117.8%200%20176.7%200%20213.3%2036.6C760%20105.2%20760%20164.1%20760%20281.9v221.2c0%20117.8%200%20176.7-36.6%20213.3C686.8%20753%20627.9%20753%20510.1%20753H288.9c-117.8%200-176.7%200-213.3-36.6C39%20679.8%2039%20620.9%2039%20503.1V281.9Z'%20fill='%234945FF'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M536.4%20250.7H293.7v123.8h123.8v123.7h123.8V255.5c0-2.6-2.2-4.8-4.9-4.8Z'%20fill='%23fff'/%3e%3cpath%20fill='%23fff'%20d='M412.7%20374.5h4.8v4.8h-4.8z'/%3e%3cpath%20d='M293.8%20374.5h119c2.6%200%204.8%202.1%204.8%204.8v119h-119a4.8%204.8%200%200%201-4.8-4.9v-119Z'%20fill='%239593FF'/%3e%3cpath%20d='M417.5%20498.2h123.8L421.6%20618a2.4%202.4%200%200%201-4-1.7v-118ZM293.8%20374.5h-118a2.4%202.4%200%200%201-1.7-4.1l119.7-119.7v123.8Z'%20fill='%239593FF'/%3e%3c/svg%3e\"","import { PermissionMap } from './types/permissions';\n\nimport type { StrapiAppSettingLink } from './core/apis/router';\n\nexport const ADMIN_PERMISSIONS_CE = {\n contentManager: {\n main: [],\n collectionTypesConfigurations: [\n {\n action: 'plugin::content-manager.collection-types.configure-view',\n subject: null,\n },\n ],\n componentsConfigurations: [\n {\n action: 'plugin::content-manager.components.configure-layout',\n subject: null,\n },\n ],\n singleTypesConfigurations: [\n {\n action: 'plugin::content-manager.single-types.configure-view',\n subject: null,\n },\n ],\n },\n marketplace: {\n main: [{ action: 'admin::marketplace.read', subject: null }],\n read: [{ action: 'admin::marketplace.read', subject: null }],\n },\n settings: {\n roles: {\n main: [\n { action: 'admin::roles.create', subject: null },\n { action: 'admin::roles.update', subject: null },\n { action: 'admin::roles.read', subject: null },\n { action: 'admin::roles.delete', subject: null },\n ],\n create: [{ action: 'admin::roles.create', subject: null }],\n delete: [{ action: 'admin::roles.delete', subject: null }],\n read: [{ action: 'admin::roles.read', subject: null }],\n update: [{ action: 'admin::roles.update', subject: null }],\n },\n users: {\n main: [\n { action: 'admin::users.create', subject: null },\n { action: 'admin::users.read', subject: null },\n { action: 'admin::users.update', subject: null },\n { action: 'admin::users.delete', subject: null },\n ],\n create: [{ action: 'admin::users.create', subject: null }],\n delete: [{ action: 'admin::users.delete', subject: null }],\n read: [{ action: 'admin::users.read', subject: null }],\n update: [{ action: 'admin::users.update', subject: null }],\n },\n webhooks: {\n main: [\n { action: 'admin::webhooks.create', subject: null },\n { action: 'admin::webhooks.read', subject: null },\n { action: 'admin::webhooks.update', subject: null },\n { action: 'admin::webhooks.delete', subject: null },\n ],\n create: [{ action: 'admin::webhooks.create', subject: null }],\n delete: [{ action: 'admin::webhooks.delete', subject: null }],\n read: [\n { action: 'admin::webhooks.read', subject: null },\n // NOTE: We need to check with the API\n { action: 'admin::webhooks.update', subject: null },\n { action: 'admin::webhooks.delete', subject: null },\n ],\n update: [{ action: 'admin::webhooks.update', subject: null }],\n },\n 'api-tokens': {\n main: [{ action: 'admin::api-tokens.access', subject: null }],\n create: [{ action: 'admin::api-tokens.create', subject: null }],\n delete: [{ action: 'admin::api-tokens.delete', subject: null }],\n read: [{ action: 'admin::api-tokens.read', subject: null }],\n update: [{ action: 'admin::api-tokens.update', subject: null }],\n regenerate: [{ action: 'admin::api-tokens.regenerate', subject: null }],\n },\n 'transfer-tokens': {\n main: [{ action: 'admin::transfer.tokens.access', subject: null }],\n create: [{ action: 'admin::transfer.tokens.create', subject: null }],\n delete: [{ action: 'admin::transfer.tokens.delete', subject: null }],\n read: [{ action: 'admin::transfer.tokens.read', subject: null }],\n update: [{ action: 'admin::transfer.tokens.update', subject: null }],\n regenerate: [{ action: 'admin::transfer.tokens.regenerate', subject: null }],\n },\n 'project-settings': {\n read: [{ action: 'admin::project-settings.read', subject: null }],\n update: [{ action: 'admin::project-settings.update', subject: null }],\n },\n plugins: {\n main: [{ action: 'admin::marketplace.read', subject: null }],\n read: [{ action: 'admin::marketplace.read', subject: null }],\n },\n },\n} satisfies Partial<PermissionMap>;\n\nexport const HOOKS = {\n /**\n * Hook that allows to mutate the displayed headers of the list view table\n * @constant\n * @type {string}\n */\n INJECT_COLUMN_IN_TABLE: 'Admin/CM/pages/ListView/inject-column-in-table',\n\n /**\n * Hook that allows to mutate the CM's collection types links pre-set filters\n * @constant\n * @type {string}\n */\n MUTATE_COLLECTION_TYPES_LINKS: 'Admin/CM/pages/App/mutate-collection-types-links',\n\n /**\n * Hook that allows to mutate the CM's edit view layout\n * @constant\n * @type {string}\n */\n MUTATE_EDIT_VIEW_LAYOUT: 'Admin/CM/pages/EditView/mutate-edit-view-layout',\n\n /**\n * Hook that allows to mutate the CM's single types links pre-set filters\n * @constant\n * @type {string}\n */\n MUTATE_SINGLE_TYPES_LINKS: 'Admin/CM/pages/App/mutate-single-types-links',\n};\n\nexport interface SettingsMenuLink\n extends Omit<StrapiAppSettingLink, 'Component' | 'permissions' | 'licenseOnly'> {\n licenseOnly?: boolean;\n}\n\nexport type SettingsMenu = {\n admin: SettingsMenuLink[];\n global: SettingsMenuLink[];\n};\n\nexport const SETTINGS_LINKS_CE = (): SettingsMenu => ({\n global: [\n {\n intlLabel: { id: 'Settings.application.title', defaultMessage: 'Overview' },\n to: '/settings/application-infos',\n id: '000-application-infos',\n },\n {\n intlLabel: { id: 'Settings.webhooks.title', defaultMessage: 'Webhooks' },\n to: '/settings/webhooks',\n id: 'webhooks',\n },\n {\n intlLabel: { id: 'Settings.apiTokens.title', defaultMessage: 'API Tokens' },\n to: '/settings/api-tokens?sort=name:ASC',\n id: 'api-tokens',\n },\n {\n intlLabel: { id: 'Settings.transferTokens.title', defaultMessage: 'Transfer Tokens' },\n to: '/settings/transfer-tokens?sort=name:ASC',\n id: 'transfer-tokens',\n },\n {\n intlLabel: {\n id: 'global.plugins',\n defaultMessage: 'Plugins',\n },\n to: '/settings/list-plugins',\n id: 'plugins',\n },\n // If the Enterprise/Cloud feature is not enabled and if the config doesn't disable it, we promote the Enterprise/Cloud feature by displaying them in the settings menu.\n // Disable this by adding \"promoteEE: false\" to your `./config/admin.js` file\n ...(!window.strapi.features.isEnabled(window.strapi.features.SSO) &&\n window.strapi?.flags?.promoteEE\n ? [\n {\n intlLabel: { id: 'Settings.sso.title', defaultMessage: 'Single Sign-On' },\n to: '/settings/purchase-single-sign-on',\n id: 'sso-purchase-page',\n licenseOnly: true,\n },\n ]\n : []),\n ],\n\n admin: [\n {\n intlLabel: { id: 'global.roles', defaultMessage: 'Roles' },\n to: '/settings/roles',\n id: 'roles',\n },\n {\n intlLabel: { id: 'global.users', defaultMessage: 'Users' },\n // Init the search params directly\n to: '/settings/users?pageSize=10&page=1&sort=firstname',\n id: 'users',\n },\n ...(!window.strapi.features.isEnabled(window.strapi.features.AUDIT_LOGS) &&\n window.strapi?.flags?.promoteEE\n ? [\n {\n intlLabel: { id: 'global.auditLogs', defaultMessage: 'Audit Logs' },\n to: '/settings/purchase-audit-logs',\n id: 'auditLogs-purchase-page',\n licenseOnly: true,\n },\n ]\n : []),\n ],\n});\n","/* eslint-disable check-file/filename-naming-convention */\nimport { ComponentType } from 'react';\n\nimport invariant from 'invariant';\n\nimport type { MessageDescriptor, PrimitiveType } from 'react-intl';\nimport type { AnySchema } from 'yup';\n\ntype CustomFieldUID = `plugin::${string}.${string}` | `global::${string}`;\n\ntype CustomFieldOptionInput =\n | 'text'\n | 'checkbox'\n | 'checkbox-with-number-field'\n | 'select-default-boolean'\n | 'date'\n | 'select'\n | 'number'\n | 'boolean-radio-group'\n | 'select-date'\n | 'text-area-enum'\n | 'select-number'\n | 'radio-group';\n\ntype CustomFieldOptionName =\n | 'min'\n | 'minLength'\n | 'max'\n | 'maxLength'\n | 'required'\n | 'regex'\n | 'enum'\n | 'unique'\n | 'private'\n | 'default';\n\ninterface CustomFieldOption {\n intlLabel: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n description: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n name: CustomFieldOptionName;\n type: CustomFieldOptionInput;\n defaultValue?: string | number | boolean | Date;\n}\n\ninterface CustomFieldOptionSection {\n sectionTitle:\n | (MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n })\n | null;\n items: CustomFieldOption[];\n}\n\ninterface CustomFieldOptions {\n base?: (CustomFieldOptionSection | CustomFieldOption)[];\n advanced?: (CustomFieldOptionSection | CustomFieldOption)[];\n validator?: () => Record<string, AnySchema>;\n}\n\ninterface CustomField {\n name: string;\n pluginId?: string;\n type: (typeof ALLOWED_TYPES)[number];\n intlLabel: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n intlDescription: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n icon?: ComponentType;\n components: {\n Input: () => Promise<{ default?: ComponentType }>;\n };\n options?: CustomFieldOptions;\n}\n\nconst ALLOWED_TYPES = [\n 'biginteger',\n 'boolean',\n 'date',\n 'datetime',\n 'decimal',\n 'email',\n 'enumeration',\n 'float',\n 'integer',\n 'json',\n 'password',\n 'richtext',\n 'string',\n 'text',\n 'time',\n 'uid',\n] as const;\n\nconst ALLOWED_ROOT_LEVEL_OPTIONS = [\n 'min',\n 'minLength',\n 'max',\n 'maxLength',\n 'required',\n 'regex',\n 'enum',\n 'unique',\n 'private',\n 'default',\n] as const;\n\nclass CustomFields {\n customFields: Record<string, CustomField>;\n\n constructor() {\n this.customFields = {};\n }\n\n register = (customFields: CustomField | CustomField[]) => {\n if (Array.isArray(customFields)) {\n // If several custom fields are passed, register them one by one\n customFields.forEach((customField) => {\n this.register(customField);\n });\n } else {\n // Handle individual custom field\n const { name, pluginId, type, intlLabel, intlDescription, components, options } =\n customFields;\n\n // Ensure required attributes are provided\n invariant(name, 'A name must be provided');\n invariant(type, 'A type must be provided');\n invariant(intlLabel, 'An intlLabel must be provided');\n invariant(intlDescription, 'An intlDescription must be provided');\n invariant(components, 'A components object must be provided');\n invariant(components.Input, 'An Input component must be provided');\n\n // Ensure the type is valid\n invariant(\n ALLOWED_TYPES.includes(type),\n `Custom field type: '${type}' is not a valid Strapi type or it can't be used with a Custom Field`\n );\n\n // Ensure name has no special characters\n const isValidObjectKey = /^(?![0-9])[a-zA-Z0-9$_-]+$/g;\n invariant(\n isValidObjectKey.test(name),\n `Custom field name: '${name}' is not a valid object key`\n );\n\n // Ensure options have valid name paths\n const allFormOptions = [...(options?.base || []), ...(options?.advanced || [])];\n\n if (allFormOptions.length) {\n const optionPathValidations = allFormOptions.reduce(optionsValidationReducer, []);\n\n optionPathValidations.forEach(({ isValidOptionPath, errorMessage }) => {\n invariant(isValidOptionPath, errorMessage);\n });\n }\n\n // When no plugin is specified, default to the global namespace\n const uid: CustomFieldUID = pluginId ? `plugin::${pluginId}.${name}` : `global::${name}`;\n\n // Ensure the uid is unique\n const uidAlreadyUsed = Object.prototype.hasOwnProperty.call(this.customFields, uid);\n invariant(!uidAlreadyUsed, `Custom field: '${uid}' has already been registered`);\n\n this.customFields[uid] = customFields;\n }\n };\n\n getAll = () => {\n return this.customFields;\n };\n\n get = (uid: string): CustomField | undefined => {\n return this.customFields[uid];\n };\n}\n\ninterface OptionValidation {\n isValidOptionPath: boolean;\n errorMessage: string;\n}\n\nconst optionsValidationReducer = (\n acc: OptionValidation[],\n option: CustomFieldOptionSection | CustomFieldOption\n): OptionValidation[] => {\n if ('items' in option) {\n return option.items.reduce(optionsValidationReducer, acc);\n }\n\n if (!option.name) {\n acc.push({\n isValidOptionPath: false,\n errorMessage: \"The 'name' property is required on an options object\",\n });\n } else {\n acc.push({\n isValidOptionPath:\n option.name.startsWith('options') || ALLOWED_ROOT_LEVEL_OPTIONS.includes(option.name),\n errorMessage: `'${option.name}' must be prefixed with 'options.'`,\n });\n }\n\n return acc;\n};\n\nexport { type CustomField, CustomFields };\n","/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\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 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","import * as React from 'react';\n\nimport { Link, LinkProps } from '@strapi/design-system';\nimport { ArrowLeft } from '@strapi/icons';\nimport { produce } from 'immer';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useLocation, useNavigate } from 'react-router-dom';\n\nimport { createContext } from '../components/Context';\n\n/* -------------------------------------------------------------------------------------------------\n * HistoryProvider\n * -----------------------------------------------------------------------------------------------*/\ninterface HistoryState {\n /**\n * The history of the user's navigation within our application\n * during their current session.\n */\n history: string[];\n /**\n * The index of the current location in the history array.\n */\n currentLocationIndex: number;\n /**\n * The current location of the user within our application.\n */\n currentLocation: string;\n /**\n * Whether the user can go back in the history.\n */\n canGoBack: boolean;\n}\n\ninterface HistoryContextValue extends HistoryState {\n /**\n * @description Push a new state to the history. You can\n * either pass a string or an object.\n */\n pushState: (\n path:\n | {\n to: string;\n search: string;\n }\n | string\n ) => void;\n /**\n * @description Go back in the history. This calls `navigate(-1)` internally\n * to keep the browser in sync with the application state.\n */\n goBack: () => void;\n}\n\nconst [Provider, useHistory] = createContext<HistoryContextValue>('History', {\n history: [],\n currentLocationIndex: 0,\n currentLocation: '',\n canGoBack: false,\n pushState: () => {\n throw new Error('You must use the `HistoryProvider` to access the `pushState` function.');\n },\n goBack: () => {\n throw new Error('You must use the `HistoryProvider` to access the `goBack` function.');\n },\n});\n\ninterface HistoryProviderProps {\n children: React.ReactNode;\n}\n\nconst HistoryProvider = ({ children }: HistoryProviderProps) => {\n const location = useLocation();\n const navigate = useNavigate();\n const [state, dispatch] = React.useReducer(reducer, {\n history: [],\n currentLocationIndex: 0,\n currentLocation: '',\n canGoBack: false,\n });\n\n const isGoingBack = React.useRef(false);\n\n const pushState: HistoryContextValue['pushState'] = React.useCallback((path) => {\n dispatch({\n type: 'PUSH_STATE',\n payload: typeof path === 'string' ? { to: path, search: '' } : path,\n });\n }, []);\n\n const goBack: HistoryContextValue['goBack'] = React.useCallback(() => {\n /**\n * Perform the browser back action\n * dispatch the goBack action to keep redux in sync\n * and set the ref to avoid an infinite loop and incorrect state pushing\n */\n navigate(-1);\n dispatch({ type: 'GO_BACK' });\n isGoingBack.current = true;\n }, [navigate]);\n\n /**\n * This is a semi-listener pattern to keep the `canGoBack` state in sync.\n */\n const prevIndex = React.useRef(state.currentLocationIndex);\n React.useEffect(() => {\n if (state.currentLocationIndex !== prevIndex.current) {\n dispatch({\n type: 'SET_CAN_GO_BACK',\n payload: state.currentLocationIndex > 1 && state.history.length > 1,\n });\n prevIndex.current = state.currentLocationIndex;\n }\n }, [prevIndex, state.currentLocationIndex, state.history.length]);\n\n /**\n * This effect is responsible for pushing the new state to the history\n * when the user navigates to a new location assuming they're not going back.\n */\n React.useLayoutEffect(() => {\n if (isGoingBack.current) {\n isGoingBack.current = false;\n } else {\n // this should only occur on link movements, not back/forward clicks\n dispatch({\n type: 'PUSH_STATE',\n payload: { to: location.pathname, search: location.search },\n });\n }\n }, [dispatch, location.pathname, location.search]);\n\n return (\n <Provider pushState={pushState} goBack={goBack} {...state}>\n {children}\n </Provider>\n );\n};\n\ntype HistoryActions =\n | {\n type: 'PUSH_STATE';\n payload: {\n to: string;\n search: string;\n };\n }\n | {\n type: 'GO_BACK';\n }\n | {\n type: 'SET_CAN_GO_BACK';\n payload: boolean;\n };\n\nconst reducer = (state: HistoryState, action: HistoryActions) =>\n produce(state, (draft) => {\n switch (action.type) {\n case 'PUSH_STATE': {\n const path = `${action.payload.to}${action.payload.search}`;\n if (state.currentLocationIndex === state.history.length) {\n // add the new place\n draft.history = [...state.history, path];\n } else {\n // delete all the history after the current place and then add the new place\n draft.history = [...state.history.slice(0, state.currentLocationIndex), path];\n }\n\n draft.currentLocation = path;\n draft.currentLocationIndex += 1;\n\n break;\n }\n case 'GO_BACK': {\n const newIndex = state.currentLocationIndex - 1;\n\n draft.currentLocation = state.history[newIndex - 1];\n draft.currentLocationIndex = newIndex;\n break;\n }\n case 'SET_CAN_GO_BACK': {\n draft.canGoBack = action.payload;\n break;\n }\n default:\n break;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * BackButton\n * -----------------------------------------------------------------------------------------------*/\ninterface BackButtonProps extends Pick<LinkProps, 'disabled'> {}\n\n/**\n * @beta\n * @description The universal back button for the Strapi application. This uses the internal history\n * context to navigate the user back to the previous location. It can be completely disabled in a\n * specific user case.\n */\nconst BackButton = React.forwardRef<HTMLAnchorElement, BackButtonProps>(({ disabled }, ref) => {\n const { formatMessage } = useIntl();\n\n const canGoBack = useHistory('BackButton', (state) => state.canGoBack);\n const goBack = useHistory('BackButton', (state) => state.goBack);\n const history = useHistory('BackButton', (state) => state.history);\n\n const handleClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n e.preventDefault();\n goBack();\n };\n\n return (\n <Link\n ref={ref}\n tag={NavLink}\n to={history.at(-1) ?? ''}\n onClick={handleClick}\n disabled={disabled || !canGoBack}\n aria-disabled={disabled || !canGoBack}\n startIcon={<ArrowLeft />}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n );\n});\n\nexport { BackButton, HistoryProvider, useHistory };\nexport type { BackButtonProps, HistoryProviderProps, HistoryContextValue, HistoryState };\n","import * as React from 'react';\n\nimport { QueryClient, QueryClientProvider } from 'react-query';\nimport { Provider } from 'react-redux';\n\nimport { AuthProvider } from '../features/Auth';\nimport { HistoryProvider } from '../features/BackButton';\nimport { ConfigurationProvider } from '../features/Configuration';\nimport { NotificationsProvider } from '../features/Notifications';\nimport { StrapiAppProvider } from '../features/StrapiApp';\nimport { TrackingProvider } from '../features/Tracking';\n\nimport { GuidedTourProvider } from './GuidedTour/Provider';\nimport { LanguageProvider } from './LanguageProvider';\nimport { Theme } from './Theme';\n\nimport type { Store } from '../core/store/configure';\nimport type { StrapiApp } from '../StrapiApp';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n },\n },\n});\n\ninterface ProvidersProps {\n children: React.ReactNode;\n strapi: StrapiApp;\n store: Store;\n}\n\nconst Providers = ({ children, strapi, store }: ProvidersProps) => {\n return (\n <StrapiAppProvider\n components={strapi.library.components}\n customFields={strapi.customFields}\n fields={strapi.library.fields}\n menu={strapi.router.menu}\n getAdminInjectedComponents={strapi.getAdminInjectedComponents}\n getPlugin={strapi.getPlugin}\n plugins={strapi.plugins}\n rbac={strapi.rbac}\n runHookParallel={strapi.runHookParallel}\n runHookWaterfall={(name, initialValue) => strapi.runHookWaterfall(name, initialValue, store)}\n runHookSeries={strapi.runHookSeries}\n settings={strapi.router.settings}\n >\n <Provider store={store}>\n <QueryClientProvider client={queryClient}>\n <AuthProvider>\n <HistoryProvider>\n <LanguageProvider messages={strapi.configurations.translations}>\n <Theme themes={strapi.configurations.themes}>\n <NotificationsProvider>\n <TrackingProvider>\n <GuidedTourProvider>\n <ConfigurationProvider\n defaultAuthLogo={strapi.configurations.authLogo}\n defaultMenuLogo={strapi.configurations.menuLogo}\n showTutorials={strapi.configurations.tutorials}\n showReleaseNotification={strapi.configurations.notifications.releases}\n >\n {children}\n </ConfigurationProvider>\n </GuidedTourProvider>\n </TrackingProvider>\n </NotificationsProvider>\n </Theme>\n </LanguageProvider>\n </HistoryProvider>\n </AuthProvider>\n </QueryClientProvider>\n </Provider>\n </StrapiAppProvider>\n );\n};\n\nexport { Providers };\n","/**\n *\n * App.js\n *\n */\nimport { Suspense, useEffect } from 'react';\n\nimport { Outlet } from 'react-router-dom';\n\nimport { Page } from './components/PageHelpers';\nimport { Providers } from './components/Providers';\nimport { LANGUAGE_LOCAL_STORAGE_KEY } from './reducer';\n\nimport type { Store } from './core/store/configure';\nimport type { StrapiApp } from './StrapiApp';\n\ninterface AppProps {\n strapi: StrapiApp;\n store: Store;\n}\n\nconst App = ({ strapi, store }: AppProps) => {\n useEffect(() => {\n const language = localStorage.getItem(LANGUAGE_LOCAL_STORAGE_KEY) || 'en';\n\n if (language) {\n document.documentElement.lang = language;\n }\n }, []);\n\n return (\n <Providers strapi={strapi} store={store}>\n <Suspense fallback={<Page.Loading />}>\n <Outlet />\n </Suspense>\n </Providers>\n );\n};\n\nexport { App };\nexport type { AppProps };\n","import { useCallback } from 'react';\n\nconst useClipboard = () => {\n const copy = useCallback(async (value: string | number) => {\n try {\n // only strings and numbers casted to strings can be copied to clipboard\n if (typeof value !== 'string' && typeof value !== 'number') {\n throw new Error(\n `Cannot copy typeof ${typeof value} to clipboard, must be a string or number`\n );\n }\n // empty strings are also considered invalid\n else if (value === '') {\n throw new Error(`Cannot copy empty string to clipboard.`);\n }\n\n const stringifiedValue = value.toString();\n\n await navigator.clipboard.writeText(stringifiedValue);\n\n return true;\n } catch (error) {\n /**\n * Realistically this isn't useful in production as there's nothing the user can do.\n */\n if (process.env.NODE_ENV === 'development') {\n console.warn('Copy failed', error);\n }\n\n return false;\n }\n }, []);\n\n return { copy };\n};\n\nexport { useClipboard };\n","import {\n Alert,\n Button,\n Flex,\n Main,\n Typography,\n Link,\n TypographyComponent,\n} from '@strapi/design-system';\nimport { Duplicate, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useRouteError } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useClipboard } from '../hooks/useClipboard';\n\n/**\n * @description this stops the app from going white, and instead shows the error message.\n * But it could be improved for sure.\n */\nconst ErrorElement = () => {\n const error = useRouteError();\n const { formatMessage } = useIntl();\n const { copy } = useClipboard();\n\n if (error instanceof Error) {\n console.error(error);\n\n const handleClick = async () => {\n await copy(`\n\\`\\`\\`\n${error.stack}\n\\`\\`\\`\n `);\n };\n\n return (\n <Main height=\"100%\">\n <Flex alignItems=\"center\" height=\"100%\" justifyContent=\"center\">\n <Flex\n gap={7}\n padding={7}\n direction=\"column\"\n width=\"35%\"\n shadow=\"tableShadow\"\n borderColor=\"neutral150\"\n background=\"neutral0\"\n hasRadius\n maxWidth=\"512px\"\n >\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"32px\" height=\"32px\" fill=\"danger600\" />\n <Typography fontSize={4} fontWeight=\"bold\" textAlign=\"center\">\n {formatMessage({\n id: 'app.error',\n defaultMessage: 'Something went wrong',\n })}\n </Typography>\n <Typography variant=\"omega\" textAlign=\"center\">\n {formatMessage(\n {\n id: 'app.error.message',\n defaultMessage: `It seems like there is a bug in your instance, but we've got you covered. Please notify your technical team so they can investigate the source of the problem and report the issue to us by opening a bug report on {link}.`,\n },\n {\n link: (\n <Link\n isExternal\n // hack to get rid of the current endIcon, which should be removable by using `null`.\n endIcon\n href=\"https://github.com/strapi/strapi/issues/new?assignees=&labels=&projects=&template=BUG_REPORT.md\"\n >{`Strapi's GitHub`}</Link>\n ),\n }\n )}\n </Typography>\n </Flex>\n {/* the Alert component needs to make its close button optional as well as the icon. */}\n <Flex gap={4} direction=\"column\" width=\"100%\">\n <StyledAlert onClose={() => {}} width=\"100%\" closeLabel=\"\" variant=\"danger\">\n <ErrorType>{error.message}</ErrorType>\n </StyledAlert>\n <Button onClick={handleClick} variant=\"tertiary\" startIcon={<Duplicate />}>\n {formatMessage({\n id: 'app.error.copy',\n defaultMessage: 'Copy to clipboard',\n })}\n </Button>\n </Flex>\n </Flex>\n </Flex>\n </Main>\n );\n }\n\n throw error;\n};\n\nconst StyledAlert = styled(Alert)`\n & > div:first-child {\n display: none;\n }\n\n & > button {\n display: none;\n }\n`;\n\nconst ErrorType = styled<TypographyComponent>(Typography)`\n word-break: break-all;\n color: ${({ theme }) => theme.colors.danger600};\n`;\n\nexport { ErrorElement };\n","import * as React from 'react';\n\nimport { Flex } from '@strapi/design-system';\n\ninterface ActionLayoutProps {\n endActions?: React.ReactNode;\n startActions?: React.ReactNode;\n}\n\nconst ActionLayout = ({ startActions, endActions }: ActionLayoutProps) => {\n if (!startActions && !endActions) {\n return null;\n }\n\n return (\n <Flex\n justifyContent=\"space-between\"\n alignItems=\"flex-start\"\n paddingBottom={4}\n paddingLeft={10}\n paddingRight={10}\n >\n <Flex gap={2} wrap=\"wrap\">\n {startActions}\n </Flex>\n\n <Flex gap={2} shrink={0} wrap=\"wrap\">\n {endActions}\n </Flex>\n </Flex>\n );\n};\n\nexport { ActionLayout, type ActionLayoutProps };\n","import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\n\ninterface ContentLayoutProps {\n children: React.ReactNode;\n}\n\nconst ContentLayout = ({ children }: ContentLayoutProps) => {\n return (\n <Box paddingLeft={10} paddingRight={10}>\n {children}\n </Box>\n );\n};\n\nexport { ContentLayout, type ContentLayoutProps };\n","import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\ninterface GridColSize {\n S: number;\n M: number;\n}\n\nconst GridColSize = {\n S: 180,\n M: 250,\n};\n\ntype Size = keyof GridColSize;\n\nconst StyledGrid = styled(Box)<{ $size: Size }>`\n display: grid;\n grid-template-columns: repeat(\n auto-fit,\n minmax(${({ $size }: { $size: Size }) => `${GridColSize[$size]}px`}, 1fr)\n );\n grid-gap: ${({ theme }) => theme.spaces[4]};\n`;\n\ninterface GridLayoutProps {\n size: Size;\n children: React.ReactNode;\n}\n\nconst GridLayout = ({ size, children }: GridLayoutProps) => {\n return <StyledGrid $size={size}>{children}</StyledGrid>;\n};\n\nexport { GridLayout };\nexport type { GridLayoutProps, GridColSize };\n","import * as React from 'react';\n\nimport { Box, Flex, Typography, TypographyProps, useCallbackRef } from '@strapi/design-system';\n\n/* -------------------------------------------------------------------------------------------------\n * BaseHeaderLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BaseHeaderLayoutProps extends Omit<TypographyProps<'div'>, 'tag'> {\n navigationAction?: React.ReactNode;\n primaryAction?: React.ReactNode;\n secondaryAction?: React.ReactNode;\n subtitle?: React.ReactNode;\n sticky?: boolean;\n width?: number;\n}\n\nconst BaseHeaderLayout = React.forwardRef<HTMLDivElement, BaseHeaderLayoutProps>(\n (\n { navigationAction, primaryAction, secondaryAction, subtitle, title, sticky, width, ...props },\n ref\n ) => {\n const isSubtitleString = typeof subtitle === 'string';\n\n if (sticky) {\n return (\n <Box\n paddingLeft={6}\n paddingRight={6}\n paddingTop={3}\n paddingBottom={3}\n position=\"fixed\"\n top={0}\n right={0}\n background=\"neutral0\"\n shadow=\"tableShadow\"\n width={`${width}px`}\n zIndex={1}\n data-strapi-header-sticky\n >\n <Flex justifyContent=\"space-between\">\n <Flex>\n {navigationAction && <Box paddingRight={3}>{navigationAction}</Box>}\n <Box>\n <Typography variant=\"beta\" tag=\"h1\" {...props}>\n {title}\n </Typography>\n {isSubtitleString ? (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {subtitle}\n </Typography>\n ) : (\n subtitle\n )}\n </Box>\n {secondaryAction ? <Box paddingLeft={4}>{secondaryAction}</Box> : null}\n </Flex>\n <Flex>{primaryAction ? <Box paddingLeft={2}>{primaryAction}</Box> : undefined}</Flex>\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box\n ref={ref}\n paddingLeft={10}\n paddingRight={10}\n paddingBottom={8}\n paddingTop={navigationAction ? 6 : 8}\n background=\"neutral100\"\n data-strapi-header\n >\n {navigationAction ? <Box paddingBottom={2}>{navigationAction}</Box> : null}\n <Flex justifyContent=\"space-between\">\n <Flex minWidth={0}>\n <Typography tag=\"h1\" variant=\"alpha\" {...props}>\n {title}\n </Typography>\n {secondaryAction ? <Box paddingLeft={4}>{secondaryAction}</Box> : null}\n </Flex>\n {primaryAction}\n </Flex>\n {isSubtitleString ? (\n <Typography variant=\"epsilon\" textColor=\"neutral600\" tag=\"p\">\n {subtitle}\n </Typography>\n ) : (\n subtitle\n )}\n </Box>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderLayoutProps extends BaseHeaderLayoutProps {}\n\nconst HeaderLayout = (props: HeaderLayoutProps) => {\n const baseHeaderLayoutRef = React.useRef<HTMLDivElement>(null);\n const [headerSize, setHeaderSize] = React.useState<DOMRect | null>(null);\n\n const [containerRef, isVisible] = useElementOnScreen<HTMLDivElement>({\n root: null,\n rootMargin: '0px',\n threshold: 0,\n });\n\n useResizeObserver(containerRef, () => {\n if (containerRef.current) {\n setHeaderSize(containerRef.current.getBoundingClientRect());\n }\n });\n\n React.useEffect(() => {\n if (baseHeaderLayoutRef.current) {\n setHeaderSize(baseHeaderLayoutRef.current.getBoundingClientRect());\n }\n }, [baseHeaderLayoutRef]);\n\n return (\n <>\n <div style={{ height: headerSize?.height }} ref={containerRef}>\n {isVisible && <BaseHeaderLayout ref={baseHeaderLayoutRef} {...props} />}\n </div>\n\n {!isVisible && <BaseHeaderLayout {...props} sticky width={headerSize?.width} />}\n </>\n );\n};\n\nHeaderLayout.displayName = 'HeaderLayout';\n\n/**\n * useElementOnScreen: hook that returns a ref to an element and a boolean indicating if the element is in the viewport.\n */\nconst useElementOnScreen = <TElement extends HTMLElement = HTMLElement>(\n options?: IntersectionObserverInit\n): [containerRef: React.RefObject<TElement>, isVisible: boolean] => {\n const containerRef = React.useRef<TElement>(null);\n\n const [isVisible, setIsVisible] = React.useState<boolean>(true);\n\n const callback: IntersectionObserverCallback = ([entry]) => {\n setIsVisible(entry.isIntersecting);\n };\n\n React.useEffect(() => {\n const containerEl = containerRef.current;\n const observer = new IntersectionObserver(callback, options);\n\n if (containerEl) {\n observer.observe(containerRef.current);\n }\n\n return () => {\n if (containerEl) {\n observer.disconnect();\n }\n };\n }, [containerRef, options]);\n\n return [containerRef, isVisible];\n};\n\n/**\n * useResizeObserver: hook that observes the size of an element and calls a callback when it changes.\n */\nconst useResizeObserver = (\n sources: React.RefObject<HTMLElement> | React.RefObject<HTMLElement>[],\n onResize: ResizeObserverCallback\n) => {\n const handleResize = useCallbackRef(onResize);\n\n React.useLayoutEffect(() => {\n const resizeObs = new ResizeObserver(handleResize);\n\n if (Array.isArray(sources)) {\n sources.forEach((source) => {\n if (source.current) {\n resizeObs.observe(source.current);\n }\n });\n } else if (sources.current) {\n resizeObs.observe(sources.current);\n }\n\n return () => {\n resizeObs.disconnect();\n };\n }, [sources, handleResize]);\n};\n\nexport type { HeaderLayoutProps, BaseHeaderLayoutProps };\nexport { HeaderLayout, BaseHeaderLayout };\n","import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport { ActionLayout } from './ActionLayout';\nimport { ContentLayout } from './ContentLayout';\nimport { GridLayout, GridLayoutProps } from './GridLayout';\nimport { HeaderLayout, BaseHeaderLayout } from './HeaderLayout';\n\ninterface LayoutProps {\n children: React.ReactNode;\n sideNav?: React.ReactNode;\n}\n\nconst GridContainer = styled(Box)<{ $hasSideNav: boolean }>`\n display: grid;\n grid-template-columns: ${({ $hasSideNav }) => ($hasSideNav ? `auto 1fr` : '1fr')};\n`;\n\nconst OverflowingItem = styled(Box)`\n overflow-x: hidden;\n`;\n\nconst RootLayout = ({ sideNav, children }: LayoutProps) => {\n return (\n <GridContainer $hasSideNav={Boolean(sideNav)}>\n {sideNav}\n <OverflowingItem paddingBottom={10}>{children}</OverflowingItem>\n </GridContainer>\n );\n};\n\nconst Layouts = {\n Root: RootLayout,\n Header: HeaderLayout,\n BaseHeader: BaseHeaderLayout,\n Grid: GridLayout,\n Action: ActionLayout,\n Content: ContentLayout,\n};\n\nexport { Layouts, type LayoutProps, type GridLayoutProps };\n","/**\n * NotFoundPage\n *\n * This is the page we show when the user visits a url that doesn't have a route\n *\n */\nimport { LinkButton, EmptyStateLayout } from '@strapi/design-system';\nimport { ArrowRight } from '@strapi/icons';\nimport { EmptyPictures } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { Layouts } from '../components/Layouts/Layout';\nimport { Page } from '../components/PageHelpers';\n\nexport const NotFoundPage = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Page.Main labelledBy=\"title\">\n <Layouts.Header\n id=\"title\"\n title={formatMessage({\n id: 'content-manager.pageNotFound',\n defaultMessage: 'Page not found',\n })}\n />\n <Layouts.Content>\n <EmptyStateLayout\n action={\n <LinkButton tag={Link} variant=\"secondary\" endIcon={<ArrowRight />} to=\"/\">\n {formatMessage({\n id: 'app.components.NotFoundPage.back',\n defaultMessage: 'Back to homepage',\n })}\n </LinkButton>\n }\n content={formatMessage({\n id: 'app.page.not.found',\n defaultMessage: \"Oops! We can't seem to find the page you're looging for...\",\n })}\n hasRadius\n icon={<EmptyPictures width=\"16rem\" />}\n shadow=\"tableShadow\"\n />\n </Layouts.Content>\n </Page.Main>\n );\n};\n","import { RouteObject } from 'react-router-dom';\n\n/**\n * All these routes are relative to the `/admin/settings/*` route\n * as such their path should not start with a `/` or include the `/settings` prefix.\n */\nexport const getEERoutes = (): RouteObject[] => [\n ...(window.strapi.features.isEnabled(window.strapi.features.AUDIT_LOGS)\n ? [\n {\n path: 'audit-logs',\n lazy: async () => {\n const { ProtectedListPage } = await import('./pages/AuditLogs/ListPage');\n\n return {\n Component: ProtectedListPage,\n };\n },\n },\n ]\n : []),\n ...(window.strapi.features.isEnabled(window.strapi.features.SSO)\n ? [\n {\n path: 'single-sign-on',\n lazy: async () => {\n const { ProtectedSSO } = await import('./pages/SingleSignOnPage');\n\n return {\n Component: ProtectedSSO,\n };\n },\n },\n ]\n : []),\n];\n","import * as React from 'react';\n\nimport { Button, Dialog, useCallbackRef, useComposedRefs } from '@strapi/design-system';\nimport { WarningCircle } from '@strapi/icons';\nimport { generateNKeysBetween } from 'fractional-indexing';\nimport { produce } from 'immer';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl, type MessageDescriptor, type PrimitiveType } from 'react-intl';\nimport { useBlocker } from 'react-router-dom';\n\nimport { getIn, setIn } from '../utils/objects';\n\nimport { createContext } from './Context';\n\nimport type {\n InputProps as InputPropsImpl,\n StringProps,\n EnumerationProps,\n} from './FormInputs/types';\nimport type * as Yup from 'yup';\n\n/* -------------------------------------------------------------------------------------------------\n * FormContext\n * -----------------------------------------------------------------------------------------------*/\ntype InputProps = InputPropsImpl | StringProps | EnumerationProps;\n\ninterface TranslationMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\ninterface FormValues {\n [field: string]: any;\n}\n\ninterface FormContextValue<TFormValues extends FormValues = FormValues>\n extends FormState<TFormValues> {\n disabled: boolean;\n initialValues: TFormValues;\n modified: boolean;\n /**\n * The default behaviour is to add the row to the end of the array, if you want to add it to a\n * specific index you can pass the index.\n */\n addFieldRow: (field: string, value: any, addAtIndex?: number) => void;\n moveFieldRow: (field: string, fromIndex: number, toIndex: number) => void;\n onChange: (eventOrPath: React.ChangeEvent<any> | string, value?: any) => void;\n /*\n * The default behaviour is to remove the last row, if you want to remove a specific index you can\n * pass the index.\n */\n removeFieldRow: (field: string, removeAtIndex?: number) => void;\n resetForm: () => void;\n setErrors: (errors: FormErrors<TFormValues>) => void;\n setSubmitting: (isSubmitting: boolean) => void;\n setValues: (values: TFormValues) => void;\n validate: (\n shouldSetErrors?: boolean,\n options?: Record<string, string>\n ) => Promise<\n { data: TFormValues; errors?: never } | { data?: never; errors: FormErrors<TFormValues> }\n >;\n}\n\n/**\n * @internal\n * @description We use this just to warn people that they're using the useForm\n * methods outside of a Form component, but we don't want to throw an error\n * because otherwise the DocumentActions list cannot be rendered in our list-view.\n */\nconst ERR_MSG =\n 'The Form Component has not been initialised, ensure you are using this hook within a Form component';\n\nconst [FormProvider, useForm] = createContext<FormContextValue>('Form', {\n disabled: false,\n errors: {},\n initialValues: {},\n isSubmitting: false,\n modified: false,\n addFieldRow: () => {\n throw new Error(ERR_MSG);\n },\n moveFieldRow: () => {\n throw new Error(ERR_MSG);\n },\n onChange: () => {\n throw new Error(ERR_MSG);\n },\n removeFieldRow: () => {\n throw new Error(ERR_MSG);\n },\n resetForm: () => {\n throw new Error(ERR_MSG);\n },\n setErrors: () => {\n throw new Error(ERR_MSG);\n },\n setValues: () => {\n throw new Error(ERR_MSG);\n },\n setSubmitting: () => {\n throw new Error(ERR_MSG);\n },\n validate: async () => {\n throw new Error(ERR_MSG);\n },\n values: {},\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Form\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FormHelpers<TFormValues extends FormValues = FormValues>\n extends Pick<FormContextValue<TFormValues>, 'setErrors' | 'setValues' | 'resetForm'> {}\n\ninterface FormProps<TFormValues extends FormValues = FormValues>\n extends Partial<Pick<FormContextValue<TFormValues>, 'disabled' | 'initialValues'>> {\n children:\n | React.ReactNode\n | ((\n props: Pick<\n FormContextValue<TFormValues>,\n | 'disabled'\n | 'errors'\n | 'isSubmitting'\n | 'modified'\n | 'values'\n | 'resetForm'\n | 'onChange'\n | 'setErrors'\n >\n ) => React.ReactNode);\n method: 'POST' | 'PUT';\n onSubmit?: (values: TFormValues, helpers: FormHelpers<TFormValues>) => Promise<void> | void;\n // TODO: type the return value for a validation schema func from Yup.\n validationSchema?: Yup.AnySchema;\n initialErrors?: FormErrors<TFormValues>;\n // NOTE: we don't know what return type it can be here\n validate?: (values: TFormValues, options: Record<string, string>) => Promise<any>;\n}\n\n/**\n * @alpha\n * @description A form component that handles form state, validation and submission.\n * It can additionally handle nested fields and arrays. To access the data you can either\n * use the generic useForm hook or the useField hook when providing the name of your field.\n */\nconst Form = React.forwardRef<HTMLFormElement, FormProps>(\n ({ disabled = false, method, onSubmit, initialErrors, ...props }, ref) => {\n const formRef = React.useRef<HTMLFormElement>(null!);\n const initialValues = React.useRef(props.initialValues ?? {});\n const [state, dispatch] = React.useReducer(reducer, {\n errors: initialErrors ?? {},\n isSubmitting: false,\n values: props.initialValues ?? {},\n });\n\n React.useEffect(() => {\n /**\n * ONLY update the initialValues if the prop has changed.\n */\n if (!isEqual(initialValues.current, props.initialValues)) {\n initialValues.current = props.initialValues ?? {};\n\n dispatch({\n type: 'SET_INITIAL_VALUES',\n payload: props.initialValues ?? {},\n });\n }\n }, [props.initialValues]);\n\n const setErrors = React.useCallback((errors: FormErrors) => {\n dispatch({\n type: 'SET_ERRORS',\n payload: errors,\n });\n }, []);\n\n const setValues = React.useCallback((values: FormValues) => {\n dispatch({\n type: 'SET_VALUES',\n payload: values,\n });\n }, []);\n\n React.useEffect(() => {\n if (Object.keys(state.errors).length === 0) return;\n\n /**\n * Small timeout to ensure the form has been\n * rendered before we try to focus on the first\n */\n const ref = setTimeout(() => {\n const [firstError] = formRef.current.querySelectorAll('[data-strapi-field-error]');\n\n if (firstError) {\n const errorId = firstError.getAttribute('id');\n const formElementInError = formRef.current.querySelector(\n `[aria-describedby=\"${errorId}\"]`\n );\n\n if (formElementInError && formElementInError instanceof HTMLElement) {\n formElementInError.focus();\n }\n }\n });\n\n return () => clearTimeout(ref);\n }, [state.errors]);\n\n /**\n * Uses the provided validation schema\n */\n const validate = React.useCallback(\n async (shouldSetErrors: boolean = true, options: Record<string, string> = {}) => {\n setErrors({});\n\n if (!props.validationSchema && !props.validate) {\n return { data: state.values };\n }\n\n try {\n let data;\n if (props.validationSchema) {\n data = await props.validationSchema.validate(state.values, { abortEarly: false });\n } else if (props.validate) {\n data = await props.validate(state.values, options);\n } else {\n throw new Error('No validation schema or validate function provided');\n }\n\n return { data };\n } catch (err) {\n if (isErrorYupValidationError(err)) {\n const errors = getYupValidationErrors(err);\n\n if (shouldSetErrors) {\n setErrors(errors);\n }\n\n return { errors };\n } else {\n // We throw any other errors\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Warning: An unhandled error was caught during validation in <Form validationSchema />`,\n err\n );\n }\n\n throw err;\n }\n }\n },\n [props, setErrors, state.values]\n );\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = async (e) => {\n e.stopPropagation();\n e.preventDefault();\n\n if (!onSubmit) {\n return;\n }\n\n dispatch({\n type: 'SUBMIT_ATTEMPT',\n });\n\n try {\n const { data, errors } = await validate();\n\n if (errors) {\n setErrors(errors);\n\n throw new Error('Submission failed');\n }\n\n await onSubmit(data, {\n setErrors,\n setValues,\n resetForm,\n });\n\n dispatch({\n type: 'SUBMIT_SUCCESS',\n });\n } catch (err) {\n dispatch({\n type: 'SUBMIT_FAILURE',\n });\n\n if (err instanceof Error && err.message === 'Submission failed') {\n return;\n }\n }\n };\n\n const modified = React.useMemo(\n () => !isEqual(initialValues.current, state.values),\n [state.values]\n );\n\n const handleChange: FormContextValue['onChange'] = useCallbackRef((eventOrPath, v) => {\n if (typeof eventOrPath === 'string') {\n dispatch({\n type: 'SET_FIELD_VALUE',\n payload: {\n field: eventOrPath,\n value: v,\n },\n });\n\n return;\n }\n\n const target = eventOrPath.target || eventOrPath.currentTarget;\n\n const { type, name, id, value, options, multiple } = target;\n\n const field = name || id;\n\n if (!field && process.env.NODE_ENV !== 'production') {\n console.warn(\n `\\`onChange\\` was called with an event, but you forgot to pass a \\`name\\` or \\`id'\\` attribute to your input. The field to update cannot be determined`\n );\n }\n\n /**\n * Because we handle any field from this function, we run through a series\n * of checks to understand how to use the value.\n */\n let val;\n\n if (/number|range/.test(type)) {\n const parsed = parseFloat(value);\n // If the value isn't a number for whatever reason, don't let it through because that will break the API.\n val = isNaN(parsed) ? '' : parsed;\n } else if (/checkbox/.test(type)) {\n // Get & invert the current value of the checkbox.\n val = !getIn(state.values, field);\n } else if (options && multiple) {\n // This will handle native select elements incl. ones with mulitple options.\n val = Array.from<HTMLOptionElement>(options)\n .filter((el) => el.selected)\n .map((el) => el.value);\n } else {\n // NOTE: reset value to null so it failes required checks.\n // The API only considers a required field invalid if the value is null|undefined, to differentiate from min 1\n if (value === '') {\n val = null;\n } else {\n val = value;\n }\n }\n\n if (field) {\n dispatch({\n type: 'SET_FIELD_VALUE',\n payload: {\n field,\n value: val,\n },\n });\n }\n });\n\n const addFieldRow: FormContextValue['addFieldRow'] = React.useCallback(\n (field, value, addAtIndex) => {\n dispatch({\n type: 'ADD_FIELD_ROW',\n payload: {\n field,\n value,\n addAtIndex,\n },\n });\n },\n []\n );\n\n const removeFieldRow: FormContextValue['removeFieldRow'] = React.useCallback(\n (field, removeAtIndex) => {\n dispatch({\n type: 'REMOVE_FIELD_ROW',\n payload: {\n field,\n removeAtIndex,\n },\n });\n },\n []\n );\n\n const moveFieldRow: FormContextValue['moveFieldRow'] = React.useCallback(\n (field, fromIndex, toIndex) => {\n dispatch({\n type: 'MOVE_FIELD_ROW',\n payload: {\n field,\n fromIndex,\n toIndex,\n },\n });\n },\n []\n );\n\n const resetForm: FormContextValue['resetForm'] = React.useCallback(() => {\n dispatch({\n type: 'RESET_FORM',\n payload: {\n errors: {},\n isSubmitting: false,\n values: initialValues.current,\n },\n });\n }, []);\n\n const setSubmitting = React.useCallback((isSubmitting: boolean) => {\n dispatch({ type: 'SET_ISSUBMITTING', payload: isSubmitting });\n }, []);\n\n const composedRefs = useComposedRefs(formRef, ref);\n\n return (\n <form ref={composedRefs} method={method} noValidate onSubmit={handleSubmit}>\n <FormProvider\n disabled={disabled}\n onChange={handleChange}\n initialValues={initialValues.current}\n modified={modified}\n addFieldRow={addFieldRow}\n moveFieldRow={moveFieldRow}\n removeFieldRow={removeFieldRow}\n resetForm={resetForm}\n setErrors={setErrors}\n setValues={setValues}\n setSubmitting={setSubmitting}\n validate={validate}\n {...state}\n >\n {typeof props.children === 'function'\n ? props.children({\n modified,\n disabled,\n onChange: handleChange,\n ...state,\n setErrors,\n resetForm,\n })\n : props.children}\n </FormProvider>\n </form>\n );\n }\n) as <TFormValues extends FormValues>(\n p: FormProps<TFormValues> & { ref?: React.Ref<HTMLFormElement> }\n) => React.ReactElement; // we've cast this because we need the generic to infer the type of the form values.\n\n/**\n * @internal\n * @description Checks if the error is a Yup validation error.\n */\nconst isErrorYupValidationError = (err: any): err is Yup.ValidationError =>\n typeof err === 'object' &&\n err !== null &&\n 'name' in err &&\n typeof err.name === 'string' &&\n err.name === 'ValidationError';\n\n/* -------------------------------------------------------------------------------------------------\n * getYupValidationErrors\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @description handy utility to convert a yup validation error into a form\n * error object. To be used elsewhere.\n */\nconst getYupValidationErrors = (err: Yup.ValidationError): FormErrors => {\n let errors: FormErrors = {};\n\n if (err.inner) {\n if (err.inner.length === 0) {\n return setIn(errors, err.path!, err.message);\n }\n for (const error of err.inner) {\n if (!getIn(errors, error.path!)) {\n errors = setIn(errors, error.path!, error.message);\n }\n }\n }\n\n return errors;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * reducer\n * -----------------------------------------------------------------------------------------------*/\n\ntype FormErrors<TFormValues extends FormValues = FormValues> = {\n // is it a repeatable component or dynamic zone?\n [Key in keyof TFormValues]?: TFormValues[Key] extends any[]\n ? TFormValues[Key][number] extends object\n ? FormErrors<TFormValues[Key][number]>[] | string | string[]\n : string // this would let us support errors for the dynamic zone or repeatable component not the components within.\n : TFormValues[Key] extends object // is it a regular component?\n ? FormErrors<TFormValues[Key]> // handles nested components\n : string | TranslationMessage; // otherwise its just a field or a translation message.\n};\n\ninterface FormState<TFormValues extends FormValues = FormValues> {\n /**\n * TODO: make this a better type explaining errors could be nested because it follows the same\n * structure as the values.\n */\n errors: FormErrors<TFormValues>;\n isSubmitting: boolean;\n values: TFormValues;\n}\n\ntype FormActions<TFormValues extends FormValues = FormValues> =\n | { type: 'SUBMIT_ATTEMPT' }\n | { type: 'SUBMIT_FAILURE' }\n | { type: 'SUBMIT_SUCCESS' }\n | { type: 'SET_FIELD_VALUE'; payload: { field: string; value: any } }\n | { type: 'ADD_FIELD_ROW'; payload: { field: string; value: any; addAtIndex?: number } }\n | { type: 'REMOVE_FIELD_ROW'; payload: { field: string; removeAtIndex?: number } }\n | { type: 'MOVE_FIELD_ROW'; payload: { field: string; fromIndex: number; toIndex: number } }\n | { type: 'SET_ERRORS'; payload: FormErrors<TFormValues> }\n | { type: 'SET_ISSUBMITTING'; payload: boolean }\n | { type: 'SET_INITIAL_VALUES'; payload: TFormValues }\n | { type: 'SET_VALUES'; payload: TFormValues }\n | { type: 'RESET_FORM'; payload: FormState<TFormValues> };\n\nconst reducer = <TFormValues extends FormValues = FormValues>(\n state: FormState<TFormValues>,\n action: FormActions<TFormValues>\n) =>\n produce(state, (draft) => {\n switch (action.type) {\n case 'SET_INITIAL_VALUES':\n // @ts-expect-error – TODO: figure out why this fails ts.\n draft.values = action.payload;\n break;\n case 'SET_VALUES':\n // @ts-expect-error – TODO: figure out why this fails ts.\n draft.values = action.payload;\n break;\n case 'SUBMIT_ATTEMPT':\n draft.isSubmitting = true;\n break;\n case 'SUBMIT_FAILURE':\n draft.isSubmitting = false;\n break;\n case 'SUBMIT_SUCCESS':\n draft.isSubmitting = false;\n break;\n case 'SET_FIELD_VALUE':\n draft.values = setIn(state.values, action.payload.field, action.payload.value);\n break;\n case 'ADD_FIELD_ROW': {\n /**\n * TODO: add check for if the field is an array?\n */\n const currentField = getIn(state.values, action.payload.field, []) as Array<any>;\n\n let position = action.payload.addAtIndex;\n\n if (position === undefined) {\n position = currentField.length;\n } else if (position < 0) {\n position = 0;\n }\n\n const [key] = generateNKeysBetween(\n currentField.at(position - 1)?.__temp_key__,\n currentField.at(position)?.__temp_key__,\n 1\n );\n\n draft.values = setIn(\n state.values,\n action.payload.field,\n setIn(currentField, position.toString(), { ...action.payload.value, __temp_key__: key })\n );\n\n break;\n }\n case 'MOVE_FIELD_ROW': {\n const { field, fromIndex, toIndex } = action.payload;\n /**\n * TODO: add check for if the field is an array?\n */\n const currentField = [...(getIn(state.values, field, []) as Array<any>)];\n const currentRow = currentField[fromIndex];\n\n const startKey =\n fromIndex > toIndex\n ? currentField[toIndex - 1]?.__temp_key__\n : currentField[toIndex]?.__temp_key__;\n const endKey =\n fromIndex > toIndex\n ? currentField[toIndex]?.__temp_key__\n : currentField[toIndex + 1]?.__temp_key__;\n const [newKey] = generateNKeysBetween(startKey, endKey, 1);\n\n currentField.splice(fromIndex, 1);\n currentField.splice(toIndex, 0, { ...currentRow, __temp_key__: newKey });\n\n draft.values = setIn(state.values, field, currentField);\n\n break;\n }\n case 'REMOVE_FIELD_ROW': {\n /**\n * TODO: add check for if the field is an array?\n */\n const currentField = getIn(state.values, action.payload.field, []) as Array<any>;\n\n let position = action.payload.removeAtIndex;\n\n if (position === undefined) {\n position = currentField.length - 1;\n } else if (position < 0) {\n position = 0;\n }\n\n /**\n * filter out empty values from the array, the setIn function only deletes the value\n * when we pass undefined as opposed to \"removing\" it from said array.\n */\n const newValue = setIn(currentField, position.toString(), undefined).filter(\n (val: unknown) => val\n );\n\n draft.values = setIn(\n state.values,\n action.payload.field,\n newValue.length > 0 ? newValue : []\n );\n\n break;\n }\n case 'SET_ERRORS':\n if (!isEqual(state.errors, action.payload)) {\n // @ts-expect-error – TODO: figure out why this fails a TS check.\n draft.errors = action.payload;\n }\n break;\n case 'SET_ISSUBMITTING':\n draft.isSubmitting = action.payload;\n break;\n case 'RESET_FORM':\n // @ts-expect-error – TODO: figure out why this fails ts.\n draft.values = action.payload.values;\n // @ts-expect-error – TODO: figure out why this fails ts.\n draft.errors = action.payload.errors;\n draft.isSubmitting = action.payload.isSubmitting;\n break;\n default:\n break;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * useField\n * -----------------------------------------------------------------------------------------------*/\ninterface FieldValue<TValue = any> {\n error?: string;\n initialValue: TValue;\n onChange: (eventOrPath: React.ChangeEvent<any> | string, value?: TValue) => void;\n value: TValue;\n rawError?: any;\n}\n\nconst useField = <TValue = any,>(path: string): FieldValue<TValue | undefined> => {\n const { formatMessage } = useIntl();\n\n const initialValue = useForm(\n 'useField',\n (state) => getIn(state.initialValues, path) as FieldValue<TValue>['initialValue']\n );\n\n const value = useForm(\n 'useField',\n (state) => getIn(state.values, path) as FieldValue<TValue>['value']\n );\n\n const handleChange = useForm('useField', (state) => state.onChange);\n\n const rawError = useForm('useField', (state) => getIn(state.errors, path));\n\n const error = useForm('useField', (state) => {\n const error = getIn(state.errors, path);\n\n if (isErrorMessageDescriptor(error)) {\n const { values, ...message } = error;\n return formatMessage(message, values);\n }\n\n return error;\n });\n\n return {\n initialValue,\n /**\n * Errors can be a string, or a MessageDescriptor, so we need to handle both cases.\n * If it's anything else, we don't return it.\n */\n rawError,\n error: isErrorMessageDescriptor(error)\n ? formatMessage(\n {\n id: error.id,\n defaultMessage: error.defaultMessage,\n },\n error.values\n )\n : typeof error === 'string'\n ? error\n : undefined,\n onChange: handleChange,\n value: value,\n };\n};\n\nconst isErrorMessageDescriptor = (object?: object): object is TranslationMessage => {\n return (\n typeof object === 'object' &&\n object !== null &&\n !Array.isArray(object) &&\n 'id' in object &&\n 'defaultMessage' in object\n );\n};\n\n/**\n * Props for the Blocker component.\n * @param onProceed Function to be called when the user confirms the action that triggered the blocker.\n * @param onCancel Function to be called when the user cancels the action that triggered the blocker.\n */\ninterface BlockerProps {\n onProceed?: () => void;\n onCancel?: () => void;\n}\n/* -------------------------------------------------------------------------------------------------\n * Blocker\n * -----------------------------------------------------------------------------------------------*/\nconst Blocker = ({ onProceed = () => {}, onCancel = () => {} }: BlockerProps) => {\n const { formatMessage } = useIntl();\n const modified = useForm('Blocker', (state) => state.modified);\n const isSubmitting = useForm('Blocker', (state) => state.isSubmitting);\n\n const blocker = useBlocker(({ currentLocation, nextLocation }) => {\n return (\n !isSubmitting &&\n modified &&\n (currentLocation.pathname !== nextLocation.pathname ||\n currentLocation.search !== nextLocation.search)\n );\n });\n\n if (blocker.state === 'blocked') {\n const handleCancel = (isOpen: boolean) => {\n if (!isOpen) {\n onCancel();\n blocker.reset();\n }\n };\n\n return (\n <Dialog.Root open onOpenChange={handleCancel}>\n <Dialog.Content>\n <Dialog.Header>\n {formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n })}\n </Dialog.Header>\n <Dialog.Body icon={<WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />}>\n {formatMessage({\n id: 'global.prompt.unsaved',\n defaultMessage: 'You have unsaved changes, are you sure you want to leave?',\n })}\n </Dialog.Body>\n <Dialog.Footer>\n <Dialog.Cancel>\n <Button variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Dialog.Cancel>\n <Button\n onClick={() => {\n onProceed();\n blocker.proceed();\n }}\n variant=\"danger\"\n >\n {formatMessage({\n id: 'app.components.Button.confirm',\n defaultMessage: 'Confirm',\n })}\n </Button>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n );\n }\n\n return null;\n};\n\nexport { Form, Blocker, useField, useForm, getYupValidationErrors };\nexport type {\n FormErrors,\n FormHelpers,\n FormProps,\n FormValues,\n FormContextValue,\n FormState,\n FieldValue,\n InputProps,\n};\n","import { Ref, useEffect, useMemo, useState } from 'react';\n\nimport { useLocation } from 'react-router-dom';\n\n/**\n * @description Given the name of an input field (this does not need to be the name you pass as a prop to the DOM element),\n * when the query param `field` matches the name the field will be focused & scrolled into the center of the view.\n * Uses a callback ref to set the field to ensure asynchronous rendering of inputs does not cause issues e.g. CodeMirror.EditView\n *\n * @example\n * ```tsx\n * const fieldRef = useFocusInputField('name');\n *\n * return (\n * <input ref={fieldRef} />\n * );\n * ```\n */\nconst useFocusInputField = <T extends HTMLElement>(name: string): Ref<T> => {\n const { search: searchString } = useLocation();\n const search = useMemo(() => new URLSearchParams(searchString), [searchString]);\n\n /**\n * TODO: remove union and just use `HTMLElement`\n *\n * Realistically, it will only be an `HTMLElement` but `TextInput` in the design-system\n * has an imperativeHandle we can't remove until v2 of the design-system.\n */\n const [field, setField] = useState<HTMLElement | null>(null);\n\n useEffect(() => {\n if (search.has('field') && search.get('field') === name && field) {\n field.focus();\n field.scrollIntoView({\n block: 'center',\n });\n }\n }, [search, name, field]);\n\n return setField;\n};\n\nexport { useFocusInputField };\n","import { forwardRef, memo } from 'react';\n\nimport { Toggle, useComposedRefs, Field } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst BooleanInput = forwardRef<HTMLInputElement, InputProps>(\n ({ name, required, label, hint, labelAction, ...props }, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<boolean | null>(name);\n const fieldRef = useFocusInputField<HTMLInputElement>(name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n <Field.Root error={field.error} name={name} hint={hint} required={required} maxWidth=\"320px\">\n <Field.Label action={labelAction}>{label}</Field.Label>\n <Toggle\n ref={composedRefs}\n checked={field.value === null ? null : field.value || false}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'False',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'True',\n })}\n onChange={field.onChange}\n {...props}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n }\n);\n\nconst MemoizedBooleanInput = memo(BooleanInput);\n\nexport { MemoizedBooleanInput as BooleanInput };\n","import { forwardRef, memo } from 'react';\n\nimport { Checkbox, useComposedRefs, Field } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst CheckboxInput = forwardRef<HTMLButtonElement, InputProps>(\n ({ name, required, label, hint, type: _type, ...props }, ref) => {\n const field = useField<boolean>(name);\n const fieldRef = useFocusInputField<HTMLButtonElement>(name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n <Field.Root error={field.error} name={name} hint={hint} required={required}>\n <Checkbox\n onCheckedChange={(checked) => field.onChange(name, !!checked)}\n ref={composedRefs}\n checked={field.value}\n {...props}\n >\n {label || props['aria-label']}\n </Checkbox>\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n }\n);\n\nconst MemoizedCheckboxInput = memo(CheckboxInput);\n\nexport { MemoizedCheckboxInput as CheckboxInput };\n","import { forwardRef, memo } from 'react';\n\nimport { getLocalTimeZone, parseAbsolute, toCalendarDate } from '@internationalized/date';\nimport { DatePicker, useComposedRefs, Field } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst DateInput = forwardRef<HTMLInputElement, InputProps>(\n ({ name, required, label, hint, labelAction, type: _type, ...props }, ref) => {\n const { formatMessage } = useIntl();\n const field = useField(name);\n const fieldRef = useFocusInputField<HTMLInputElement>(name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n const value = typeof field.value === 'string' ? new Date(field.value) : field.value;\n\n return (\n <Field.Root error={field.error} name={name} hint={hint} required={required}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n <DatePicker\n ref={composedRefs}\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n onChange={(date) => {\n field.onChange(name, date ? convertLocalDateToUTCDate(date).toISOString() : null);\n }}\n onClear={() => field.onChange(name, null)}\n value={value ? convertLocalDateToUTCDate(value) : value}\n {...props}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n }\n);\n\nconst convertLocalDateToUTCDate = (date: Date): Date => {\n const utcDateString = date.toISOString();\n const timeZone = getLocalTimeZone();\n const zonedDateTime = parseAbsolute(utcDateString, timeZone);\n\n /**\n * ZonedDateTime can't have weeks added,\n * see – https://github.com/adobe/react-spectrum/issues/3667\n */\n return toCalendarDate(zonedDateTime).toDate('UTC');\n};\n\nconst MemoizedDateInput = memo(DateInput);\n\nexport { MemoizedDateInput as DateInput };\n","import { forwardRef, memo } from 'react';\n\nimport { DateTimePicker, useComposedRefs, Field } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst DateTimeInput = forwardRef<HTMLInputElement, InputProps>(\n ({ name, required, label, hint, labelAction, ...props }, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<string | null>(name);\n const fieldRef = useFocusInputField<HTMLInputElement>(name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n const value = typeof field.value === 'string' ? new Date(field.value) : field.value;\n\n return (\n <Field.Root error={field.error} name={name} hint={hint} required={required}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n <DateTimePicker\n ref={composedRefs}\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n onChange={(date) => {\n // Store ISO string in the field, but Date object in the component value\n field.onChange(name, date ? date.toISOString() : null);\n }}\n onClear={() => field.onChange(name, null)}\n value={value}\n {...props}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n }\n);\n\nconst MemoizedDateTimeInput = memo(DateTimeInput);\n\nexport { MemoizedDateTimeInput as DateTimeInput };\n","import { forwardRef, memo } from 'react';\n\nimport { TextInput, useComposedRefs, Field } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport type { StringProps } from './types';\n\nconst EmailInput = forwardRef<HTMLInputElement, StringProps>(\n ({ name, required, label, hint, labelAction, ...props }, ref) => {\n const field = useField(name);\n const fieldRef = useFocusInputField<HTMLInputElement>(name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n <Field.Root error={field.error} name={name} hint={hint} required={required}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n <TextInput\n ref={composedRefs}\n autoComplete=\"email\"\n onChange={field.onChange}\n value={field.value}\n {...props}\n type=\"email\"\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n }\n);\n\nconst MemoizedEmailInput = memo(EmailInput);\n\nexport { MemoizedEmailInput as EmailInput };\n","import { forwardRef, memo } from 'react';\n\nimport { SingleSelect, SingleSelectOption, useComposedRefs, Field } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { EnumerationProps } from './types';\n\nconst EnumerationInput = forwardRef<HTMLDivElement, EnumerationProps>(\n ({ name, required, label, hint, labelAction, options = [], ...props }, ref) => {\n const field = useField(name);\n const fieldRef = useFocusInputField<HTMLDivElement>(name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n <Field.Root error={field.error} name={name} hint={hint} required={required}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n <SingleSelect\n ref={composedRefs}\n onChange={(value) => {\n field.onChange(name, value);\n }}\n value={field.value}\n {...props}\n >\n {options.map(({ value, label, disabled, hidden }) => {\n return (\n <SingleSelectOption key={value} value={value} disabled={disabled} hidden={hidden}>\n {label ?? value}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n }\n);\n\nconst MemoizedEnumerationInput = memo(EnumerationInput);\n\nexport { MemoizedEnumerationInput as EnumerationInput };\n","import * as React from 'react';\n\nimport {\n JSONInput as JSONInputImpl,\n useComposedRefs,\n Field,\n JSONInputRef,\n} from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst JsonInput = React.forwardRef<JSONInputRef, InputProps>(\n ({ name, required, label, hint, labelAction, ...props }, ref) => {\n const field = useField(name);\n const fieldRef = useFocusInputField(name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n <Field.Root error={field.error} name={name} hint={hint} required={required}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n <JSONInputImpl\n ref={composedRefs}\n value={\n typeof field.value == 'object' ? JSON.stringify(field.value, null, 2) : field.value\n }\n onChange={(json) => {\n // Default to null when the field is not required and there is no input value\n const value = required && !json.length ? null : json;\n field.onChange(name, value);\n }}\n minHeight={`25.2rem`}\n maxHeight={`50.4rem`}\n {...props}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n }\n);\n\nconst MemoizedJsonInput = React.memo(JsonInput);\n\nexport { MemoizedJsonInput as JsonInput };\n","import { forwardRef, memo } from 'react';\n\nimport { NumberInput, useComposedRefs, Field } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst NumberInputImpl = forwardRef<HTMLInputElement, InputProps>(\n ({ name, required, label, hint, labelAction, type, ...props }, ref) => {\n const field = useField<number>(name);\n const fieldRef = useFocusInputField<HTMLInputElement>(name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n <Field.Root error={field.error} name={name} hint={hint} required={required}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n <NumberInput\n ref={composedRefs}\n onValueChange={(value) => {\n field.onChange(name, value);\n }}\n step={type === 'float' || type == 'decimal' ? 0.01 : 1}\n value={field.value}\n {...props}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n }\n);\n\nconst MemoizedNumberInput = memo(NumberInputImpl);\n\nexport { MemoizedNumberInput as NumberInput };\n","import { forwardRef, memo, useState } from 'react';\n\nimport { TextInput, useComposedRefs, Field } from '@strapi/design-system';\nimport { Eye, EyeStriked } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport type { StringProps } from './types';\n\nconst PasswordInput = forwardRef<HTMLInputElement, StringProps>(\n ({ name, required, label, hint, labelAction, ...props }, ref) => {\n const [showPassword, setShowPassword] = useState(false);\n const { formatMessage } = useIntl();\n const field = useField(name);\n const fieldRef = useFocusInputField<HTMLInputElement>(name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n <Field.Root error={field.error} name={name} hint={hint} required={required}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n <TextInput\n ref={composedRefs}\n autoComplete=\"password\"\n endAction={\n <Field.Action\n label={formatMessage({\n id: 'Auth.form.password.show-password',\n defaultMessage: 'Show password',\n })}\n onClick={() => {\n setShowPassword((prev) => !prev);\n }}\n >\n {showPassword ? <Eye fill=\"neutral500\" /> : <EyeStriked fill=\"neutral500\" />}\n </Field.Action>\n }\n onChange={field.onChange}\n value={field.value}\n {...props}\n type={showPassword ? 'text' : 'password'}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n }\n);\n\nconst MemoizedPasswordInput = memo(PasswordInput);\n\nexport { MemoizedPasswordInput as PasswordInput };\n","import { forwardRef, memo } from 'react';\n\nimport { TextInput, useComposedRefs, Field } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { type InputProps, useField } from '../Form';\n\nconst StringInput = forwardRef<HTMLInputElement, InputProps>(\n ({ name, required, label, hint, labelAction, ...props }, ref) => {\n const field = useField(name);\n const fieldRef = useFocusInputField<HTMLInputElement>(name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n <Field.Root error={field.error} name={name} hint={hint} required={required}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n <TextInput\n ref={composedRefs}\n onChange={field.onChange}\n value={field.value ?? ''}\n {...props}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n }\n);\n\nconst MemoizedStringInput = memo(StringInput);\n\nexport { MemoizedStringInput as StringInput };\n","import { forwardRef, memo } from 'react';\n\nimport { Textarea, useComposedRefs, Field } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport type { StringProps } from './types';\n\nconst TextareaInput = forwardRef<HTMLTextAreaElement, StringProps>(\n ({ name, required, label, hint, labelAction, ...props }, ref) => {\n const field = useField(name);\n const fieldRef = useFocusInputField<HTMLTextAreaElement>(name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n <Field.Root error={field.error} name={name} hint={hint} required={required}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n <Textarea\n ref={composedRefs}\n onChange={field.onChange}\n value={field.value ?? ''}\n {...props}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n }\n);\n\nconst MemoizedTextareaInput = memo(TextareaInput);\n\nexport { MemoizedTextareaInput as TextareaInput };\n","import { forwardRef, memo } from 'react';\n\nimport { TimePicker, useComposedRefs, Field } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst TimeInput = forwardRef<HTMLInputElement, InputProps>(\n ({ name, required, label, hint, labelAction, ...props }, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<string>(name);\n const fieldRef = useFocusInputField<HTMLInputElement>(name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n <Field.Root error={field.error} name={name} hint={hint} required={required}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n <TimePicker\n ref={composedRefs}\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n onChange={(time) => {\n field.onChange(name, `${time}:00.000`);\n }}\n onClear={() => field.onChange(name, undefined)}\n value={field.value ?? ''}\n {...props}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n }\n);\n\nconst MemoizedTimeInput = memo(TimeInput);\n\nexport { MemoizedTimeInput as TimeInput };\n","import { forwardRef, memo } from 'react';\n\nimport { TextInput, useComposedRefs, Field } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { BooleanInput } from './Boolean';\nimport { CheckboxInput } from './Checkbox';\nimport { DateInput } from './Date';\nimport { DateTimeInput } from './DateTime';\nimport { EmailInput } from './Email';\nimport { EnumerationInput } from './Enumeration';\nimport { JsonInput } from './Json';\nimport { NumberInput } from './Number';\nimport { PasswordInput } from './Password';\nimport { StringInput } from './String';\nimport { TextareaInput } from './Textarea';\nimport { TimeInput } from './Time';\n\nimport type { InputProps } from '../Form';\n\n/* -------------------------------------------------------------------------------------------------\n * InputRenderer\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal This needs to be tested before being exposed as a public API.\n * @experimental\n * @description A generic form renderer for Strapi forms. Similar to GenericInputs but with a different API.\n * The entire component is memoized to avoid re-renders in large forms.\n */\nconst InputRenderer = memo(\n forwardRef<any, InputProps>((props, forwardRef) => {\n switch (props.type) {\n case 'biginteger':\n case 'timestamp':\n case 'string':\n case 'uid':\n return <StringInput ref={forwardRef} {...props} />;\n case 'boolean':\n return <BooleanInput ref={forwardRef} {...props} />;\n case 'checkbox':\n return <CheckboxInput ref={forwardRef} {...props} />;\n case 'datetime':\n return <DateTimeInput ref={forwardRef} {...props} />;\n case 'date':\n return <DateInput ref={forwardRef} {...props} />;\n case 'decimal':\n case 'float':\n case 'integer':\n return <NumberInput ref={forwardRef} {...props} />;\n case 'json':\n return <JsonInput ref={forwardRef} {...props} />;\n case 'email':\n return <EmailInput ref={forwardRef} {...props} />;\n case 'enumeration':\n return <EnumerationInput ref={forwardRef} {...props} />;\n case 'password':\n return <PasswordInput ref={forwardRef} {...props} />;\n case 'text':\n return <TextareaInput ref={forwardRef} {...props} />;\n case 'time':\n return <TimeInput ref={forwardRef} {...props} />;\n default:\n // This is cast because this renderer tackles all the possibilities of the InputProps, but this is for runtime catches.\n return <NotSupportedField ref={forwardRef} {...(props as InputProps)} />;\n }\n })\n);\n\nconst NotSupportedField = forwardRef<any, InputProps>(\n ({ label, hint, name, required, type, labelAction }, ref) => {\n const { error } = useField(name);\n const fieldRef = useFocusInputField(name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n <Field.Root error={error} name={name} hint={hint} required={required}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n <TextInput\n ref={composedRefs}\n disabled\n placeholder={`Unsupported field type: ${type}`}\n required={required}\n type=\"text\"\n value=\"\"\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n }\n);\n\nconst MemoizedInputRenderer = memo(InputRenderer);\n\nexport { MemoizedInputRenderer as InputRenderer };\n","import { styled } from 'styled-components';\n\nimport { useConfiguration } from '../features/Configuration';\n\nconst Img = styled.img`\n height: 7.2rem;\n`;\n\nconst Logo = () => {\n const {\n logos: { auth },\n } = useConfiguration('UnauthenticatedLogo');\n\n return <Img src={auth?.custom?.url || auth.default} aria-hidden alt=\"\" />;\n};\n\nexport { Logo };\n","import * as React from 'react';\n\nimport {\n Box,\n BoxComponent,\n Flex,\n FlexComponent,\n SingleSelect,\n SingleSelectOption,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { setLocale } from '../reducer';\n\nconst Wrapper = styled<BoxComponent>(Box)`\n margin: 0 auto;\n width: 552px;\n`;\n\nexport const Column = styled<FlexComponent>(Flex)`\n flex-direction: column;\n`;\n\nconst LocaleToggle = () => {\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const dispatch = useTypedDispatch();\n const { formatMessage, locale } = useIntl();\n\n return (\n <SingleSelect\n aria-label={formatMessage({\n id: 'global.localeToggle.label',\n defaultMessage: 'Select interface language',\n })}\n value={locale}\n onChange={(language) => {\n dispatch(setLocale(language as string));\n }}\n >\n {Object.entries(localeNames).map(([language, name]) => (\n <SingleSelectOption key={language} value={language}>\n {name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n\ninterface LayoutContentProps {\n children: React.ReactNode;\n}\n\nexport const LayoutContent = ({ children }: LayoutContentProps) => (\n <Wrapper\n shadow=\"tableShadow\"\n hasRadius\n paddingTop={9}\n paddingBottom={9}\n paddingLeft={10}\n paddingRight={10}\n background=\"neutral0\"\n >\n {children}\n </Wrapper>\n);\n\ninterface UnauthenticatedLayoutProps {\n children: React.ReactNode;\n}\n\nexport const UnauthenticatedLayout = ({ children }: UnauthenticatedLayoutProps) => {\n return (\n <div>\n <Flex tag=\"header\" justifyContent=\"flex-end\">\n <Box paddingTop={6} paddingRight={8}>\n <LocaleToggle />\n </Box>\n </Flex>\n <Box paddingTop={2} paddingBottom={11}>\n {children}\n </Box>\n </div>\n );\n};\n","/**\n * Object containing error messages for input validations.\n * @property {Object} email - Error message for invalid email.\n * @property {string} email.id - Identifier for the error message.\n * @property {string} email.defaultMessage - Default error message for invalid email.\n * @property {Object} json - Error message for invalid JSON format.\n * @property {string} json.id - Identifier for the error message.\n * @property {string} json.defaultMessage - Default error message for invalid JSON format.\n * @property {Object} lowercase - Error message for non-lowercase string.\n * @property {string} lowercase.id - Identifier for the error message.\n * @property {string} lowercase.defaultMessage - Default error message for non-lowercase string.\n * @property {Object} max - Error message for value exceeding maximum.\n * @property {string} max.id - Identifier for the error message.\n * @property {string} max.defaultMessage - Default error message for value exceeding maximum.\n * @property {Object} maxLength - Error message for string length exceeding maximum.\n * @property {string} maxLength.id - Identifier for the error message.\n * @property {string} maxLength.defaultMessage - Default error message for string length exceeding maximum.\n * @property {Object} min - Error message for value less than minimum.\n * @property {string} min.id - Identifier for the error message.\n * @property {string} min.defaultMessage - Default error message for value less than minimum.\n * @property {Object} minLength - Error message for string length less than minimum.\n * @property {string} minLength.id - Identifier for the error message.\n * @property {string} minLength.defaultMessage - Default error message for string length less than minimum.\n * @property {Object} regex - Error message for value not matching regex pattern.\n * @property {string} regex.id - Identifier for the error message.\n * @property {string} regex.defaultMessage - Default error message for value not matching regex pattern.\n * @property {Object} required - Error message for required value.\n * @property {string} required.id - Identifier for the error message.\n * @property {string} required.defaultMessage - Default error message for required value.\n * @property {Object} string - Error message for non-string value.\n * @property {string} string.id - Identifier for the error message.\n * @property {string} string.defaultMessage - Default error message for non-string value.\n * @property {Object} unique - Error message for non-unique value.\n * @property {string} unique.id - Identifier for the error message.\n * @property {string} unique.defaultMessage - Default error message for non-unique value.\n * @property {Object} integer - Error message for non-integer value.\n * @property {string} integer.id - Identifier for the error message.\n * @property {string} integer.defaultMessage - Default error message for non-integer value.\n */\n\nconst errorsTrads = {\n email: {\n id: 'components.Input.error.validation.email',\n defaultMessage: 'This is not a valid email.',\n },\n json: {\n id: 'components.Input.error.validation.json',\n defaultMessage: \"This doesn't match the JSON format\",\n },\n lowercase: {\n id: 'components.Input.error.validation.lowercase',\n defaultMessage: 'The value must be a lowercase string',\n },\n max: {\n id: 'components.Input.error.validation.max',\n defaultMessage: 'The value is too high (max: {max}).',\n },\n maxLength: {\n id: 'components.Input.error.validation.maxLength',\n defaultMessage: 'The value is too long (max: {max}).',\n },\n min: {\n id: 'components.Input.error.validation.min',\n defaultMessage: 'The value is too low (min: {min}).',\n },\n minLength: {\n id: 'components.Input.error.validation.minLength',\n defaultMessage: 'The value is too short (min: {min}).',\n },\n regex: {\n id: 'components.Input.error.validation.regex',\n defaultMessage: 'The value does not match the regex.',\n },\n required: {\n id: 'components.Input.error.validation.required',\n defaultMessage: 'This value is required.',\n },\n string: {\n id: 'components.Input.error.validation.string',\n defaultMessage: 'This is not a valid string.',\n },\n unique: {\n id: 'components.Input.error.validation.unique',\n defaultMessage: 'This value is already used.',\n },\n integer: {\n id: 'component.Input.error.validation.integer',\n defaultMessage: 'The value must be an integer',\n },\n} as const;\n\nexport { errorsTrads as translatedErrors };\n","import * as React from 'react';\n\nimport { Box, Button, Flex, Main, Typography, Link } from '@strapi/design-system';\nimport camelCase from 'lodash/camelCase';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useLocation, useNavigate } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { Form } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useAuth } from '../../../features/Auth';\nimport {\n UnauthenticatedLayout,\n Column,\n LayoutContent,\n} from '../../../layouts/UnauthenticatedLayout';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nimport type { Login } from '../../../../../shared/contracts/authentication';\n\ninterface LoginProps {\n children?: React.ReactNode;\n}\n\nconst LOGIN_SCHEMA = yup.object().shape({\n email: yup\n .string()\n .nullable()\n .email({\n id: translatedErrors.email.id,\n defaultMessage: 'Not a valid email',\n })\n .required(translatedErrors.required),\n password: yup.string().required(translatedErrors.required).nullable(),\n rememberMe: yup.bool().nullable(),\n});\n\nconst Login = ({ children }: LoginProps) => {\n const [apiError, setApiError] = React.useState<string>();\n const { formatMessage } = useIntl();\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const navigate = useNavigate();\n\n const { login } = useAuth('Login', (auth) => auth);\n\n const handleLogin = async (body: Parameters<typeof login>[0]) => {\n setApiError(undefined);\n\n const res = await login(body);\n\n if ('error' in res) {\n const message = res.error.message ?? 'Something went wrong';\n\n if (camelCase(message).toLowerCase() === 'usernotactive') {\n navigate('/auth/oops');\n return;\n }\n\n setApiError(message);\n } else {\n const redirectTo = query.get('redirectTo');\n const redirectUrl = redirectTo ? decodeURIComponent(redirectTo) : '/';\n\n navigate(redirectUrl);\n }\n };\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={1}>\n <Typography variant=\"alpha\" tag=\"h1\">\n {formatMessage({\n id: 'Auth.form.welcome.title',\n defaultMessage: 'Welcome!',\n })}\n </Typography>\n </Box>\n <Box paddingBottom={7}>\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Auth.form.welcome.subtitle',\n defaultMessage: 'Log in to your Strapi account',\n })}\n </Typography>\n </Box>\n {apiError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {apiError}\n </Typography>\n ) : null}\n </Column>\n <Form\n method=\"PUT\"\n initialValues={{\n email: '',\n password: '',\n rememberMe: false,\n }}\n onSubmit={(values) => {\n handleLogin(values);\n }}\n validationSchema={LOGIN_SCHEMA}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {[\n {\n label: formatMessage({ id: 'Auth.form.email.label', defaultMessage: 'Email' }),\n name: 'email',\n placeholder: formatMessage({\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'kai@doe.com',\n }),\n required: true,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n required: true,\n type: 'password' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.rememberMe.label',\n defaultMessage: 'Remember me',\n }),\n name: 'rememberMe',\n type: 'checkbox' as const,\n },\n ].map((field) => (\n <InputRenderer key={field.name} {...field} />\n ))}\n <Button fullWidth type=\"submit\">\n {formatMessage({ id: 'Auth.form.button.login', defaultMessage: 'Login' })}\n </Button>\n </Flex>\n </Form>\n {children}\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n <Link isExternal={false} tag={NavLink} to=\"/auth/forgot-password\">\n {formatMessage({\n id: 'Auth.link.forgot-password',\n defaultMessage: 'Forgot your password?',\n })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nexport { Login };\nexport type { LoginProps };\n","import { Box, Button, Flex, Main, Typography, Link } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { Form } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport {\n Column,\n LayoutContent,\n UnauthenticatedLayout,\n} from '../../../layouts/UnauthenticatedLayout';\nimport { useForgotPasswordMutation } from '../../../services/auth';\nimport { isBaseQueryError } from '../../../utils/baseQuery';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nimport type { ForgotPassword } from '../../../../../shared/contracts/authentication';\n\nconst ForgotPassword = () => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [forgotPassword, { error }] = useForgotPasswordMutation();\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={7}>\n <Typography tag=\"h1\" variant=\"alpha\">\n {formatMessage({\n id: 'Auth.form.button.password-recovery',\n defaultMessage: 'Password Recovery',\n })}\n </Typography>\n </Box>\n {error ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {isBaseQueryError(error)\n ? formatAPIError(error)\n : formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n })}\n </Typography>\n ) : null}\n </Column>\n <Form\n method=\"POST\"\n initialValues={{\n email: '',\n }}\n onSubmit={async (body) => {\n const res = await forgotPassword(body);\n\n if (!('error' in res)) {\n navigate('/auth/forgot-password-success');\n }\n }}\n validationSchema={yup.object().shape({\n email: yup\n .string()\n .email(translatedErrors.email)\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required.',\n })\n .nullable(),\n })}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {[\n {\n label: formatMessage({ id: 'Auth.form.email.label', defaultMessage: 'Email' }),\n name: 'email',\n placeholder: formatMessage({\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'kai@doe.com',\n }),\n required: true,\n type: 'string' as const,\n },\n ].map((field) => (\n <InputRenderer key={field.name} {...field} />\n ))}\n <Button type=\"submit\" fullWidth>\n {formatMessage({\n id: 'Auth.form.button.forgot-password',\n defaultMessage: 'Send Email',\n })}\n </Button>\n </Flex>\n </Form>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n <Link tag={NavLink} to=\"/auth/login\">\n {formatMessage({ id: 'Auth.link.ready', defaultMessage: 'Ready to sign in?' })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nexport { ForgotPassword };\n","import { Box, Flex, Main, Typography, Link } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\n\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport {\n Column,\n LayoutContent,\n UnauthenticatedLayout,\n} from '../../../layouts/UnauthenticatedLayout';\n\nconst ForgotPasswordSuccess = () => {\n const { formatMessage } = useIntl();\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={7}>\n <Typography tag=\"h1\" variant=\"alpha\">\n {formatMessage({\n id: 'app.containers.AuthPage.ForgotPasswordSuccess.title',\n defaultMessage: 'Email sent',\n })}\n </Typography>\n </Box>\n <Typography>\n {formatMessage({\n id: 'app.containers.AuthPage.ForgotPasswordSuccess.text.email',\n defaultMessage: 'It can take a few minutes to receive your password recovery link.',\n })}\n </Typography>\n <Box paddingTop={4}>\n <Typography>\n {formatMessage({\n id: 'app.containers.AuthPage.ForgotPasswordSuccess.text.contact-admin',\n defaultMessage:\n 'If you do not receive this link, please contact your administrator.',\n })}\n </Typography>\n </Box>\n </Column>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n <Link tag={NavLink} to=\"/auth/login\">\n {formatMessage({ id: 'Auth.link.signin', defaultMessage: 'Sign in' })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nexport { ForgotPasswordSuccess };\n","import * as React from 'react';\n\nimport { Box, Flex, Main, Typography, Link } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useLocation } from 'react-router-dom';\n\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport {\n Column,\n LayoutContent,\n UnauthenticatedLayout,\n} from '../../../layouts/UnauthenticatedLayout';\n\nconst Oops = () => {\n const { formatMessage } = useIntl();\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n\n const message =\n query.get('info') ||\n formatMessage({\n id: 'Auth.components.Oops.text',\n defaultMessage: 'Your account has been suspended.',\n });\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={7}>\n <Typography tag=\"h1\" variant=\"alpha\">\n {formatMessage({ id: 'Auth.components.Oops.title', defaultMessage: 'Oops...' })}\n </Typography>\n </Box>\n <Typography>{message}</Typography>\n <Box paddingTop={4}>\n <Typography>\n {formatMessage({\n id: 'Auth.components.Oops.text.admin',\n defaultMessage: 'If this is a mistake, please contact your administrator.',\n })}\n </Typography>\n </Box>\n </Column>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n <Link tag={NavLink} to=\"/auth/login\">\n {formatMessage({ id: 'Auth.link.signin', defaultMessage: 'Sign in' })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nexport { Oops };\n","import { useEffect, useState } from 'react';\n\nconst usePersistentState = <T>(key: string, defaultValue: T) => {\n const [value, setValue] = useState<T>(() => {\n const stickyValue = window.localStorage.getItem(key);\n\n if (stickyValue !== null) {\n try {\n return JSON.parse(stickyValue);\n } catch {\n // JSON.parse fails when the stored value is a primitive\n return stickyValue;\n }\n }\n\n return defaultValue;\n });\n\n useEffect(() => {\n window.localStorage.setItem(key, JSON.stringify(value));\n }, [key, value]);\n\n return [value, setValue] as const;\n};\n\nexport { usePersistentState };\n","import * as React from 'react';\n\nimport {\n Box,\n Flex,\n IconButton,\n Button,\n Typography,\n Textarea,\n Portal,\n Field,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useAppInfo } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { usePersistentState } from '../hooks/usePersistentState';\n\nconst FieldWrapper = styled(Field.Root)`\n height: 3.2rem;\n width: 3.2rem;\n\n > label,\n ~ input {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n\n > label {\n color: inherit;\n cursor: pointer;\n padding: ${({ theme }) => theme.spaces[2]};\n text-align: center;\n vertical-align: middle;\n }\n\n &:hover,\n &:focus-within {\n background-color: ${({ theme }) => theme.colors.neutral0};\n }\n\n &:active,\n &.selected {\n color: ${({ theme }) => theme.colors.primary700};\n background-color: ${({ theme }) => theme.colors.neutral0};\n border-color: ${({ theme }) => theme.colors.primary700};\n }\n`;\n\nconst delays = {\n postResponse: 90 * 24 * 60 * 60 * 1000, // 90 days in ms\n postFirstDismissal: 14 * 24 * 60 * 60 * 1000, // 14 days in ms\n postSubsequentDismissal: 90 * 24 * 60 * 60 * 1000, // 90 days in ms\n display: 30 * 60 * 1000, // 30 minutes in ms\n};\n\nconst ratingArray = [...Array(11).keys()];\n\nconst checkIfShouldShowSurvey = (settings: NpsSurveySettings) => {\n const { enabled, lastResponseDate, firstDismissalDate, lastDismissalDate } = settings;\n\n // This function goes through all the cases where we'd want to not show the survey:\n // 1. If the survey is disabled by strapi, abort mission, don't bother checking the other settings.\n // 2. If the survey is disabled by user, abort mission, don't bother checking the other settings.\n // 3. If the user has already responded to the survey, check if enough time has passed since the last response.\n // 4. If the user has dismissed the survey twice or more before, check if enough time has passed since the last dismissal.\n // 5. If the user has only dismissed the survey once before, check if enough time has passed since the first dismissal.\n // If none of these cases check out, then we show the survey.\n // Note that submitting a response resets the dismissal counts.\n // Checks 4 and 5 should not be reversed, since the first dismissal will also exist if the user has dismissed the survey twice or more before.\n\n // For users who had created an account before the NPS feature was introduced,\n // we assume that they would have enabled the NPS feature if they had the chance.\n\n // Global strapi disable for NSP.\n if (window.strapi.flags.nps === false) {\n return false;\n }\n\n // User chose not to enable the NPS feature when signing up\n if (enabled === false) {\n return false;\n }\n\n // The user has already responded to the survey\n if (lastResponseDate) {\n const timeSinceLastResponse = Date.now() - new Date(lastResponseDate).getTime();\n\n if (timeSinceLastResponse >= delays.postResponse) {\n return true;\n }\n\n return false;\n }\n\n // The user has dismissed the survey twice or more before\n if (lastDismissalDate) {\n const timeSinceLastDismissal = Date.now() - new Date(lastDismissalDate).getTime();\n\n if (timeSinceLastDismissal >= delays.postSubsequentDismissal) {\n return true;\n }\n\n return false;\n }\n\n // The user has only dismissed the survey once before\n if (firstDismissalDate) {\n const timeSinceFirstDismissal = Date.now() - new Date(firstDismissalDate).getTime();\n\n if (timeSinceFirstDismissal >= delays.postFirstDismissal) {\n return true;\n }\n\n return false;\n }\n\n // The user has not interacted with the survey before\n return true;\n};\n\nconst NpsSurvey = () => {\n const { formatMessage } = useIntl();\n const { npsSurveySettings, setNpsSurveySettings } = useNpsSurveySettings();\n const [isFeedbackResponse, setIsFeedbackResponse] = React.useState(false);\n const { toggleNotification } = useNotification();\n const currentEnvironment = useAppInfo('NpsSurvey', (state) => state.currentEnvironment);\n const strapiVersion = useAppInfo('NpsSurvey', (state) => state.strapiVersion);\n\n interface NpsSurveyMutationBody {\n email: string;\n rating: number | null;\n comment: string;\n environment?: string;\n version?: string;\n license: 'Enterprise' | 'Community';\n }\n\n // Only check on first render if the survey should be shown\n const [surveyIsShown, setSurveyIsShown] = React.useState(\n checkIfShouldShowSurvey(npsSurveySettings)\n );\n\n // Set a cooldown to show the survey when session begins\n const [displaySurvey, setDisplaySurvey] = React.useState(false);\n\n React.useEffect(() => {\n const displayTime = setTimeout(() => {\n setDisplaySurvey(true);\n }, delays.display);\n\n return () => {\n clearTimeout(displayTime);\n };\n }, []);\n\n const { user } = useAuth('NpsSurvey', (auth) => auth);\n\n if (!displaySurvey) {\n return null;\n }\n\n if (!surveyIsShown) {\n return null;\n }\n\n const handleSubmitResponse = async ({\n npsSurveyRating,\n npsSurveyFeedback,\n }: {\n npsSurveyRating: NpsSurveyMutationBody['rating'];\n npsSurveyFeedback: NpsSurveyMutationBody['comment'];\n }) => {\n try {\n const body = {\n email: typeof user === 'object' && user.email ? user.email : '',\n rating: npsSurveyRating,\n comment: npsSurveyFeedback,\n environment: currentEnvironment,\n version: strapiVersion ?? undefined,\n license: window.strapi.projectType,\n isHostedOnStrapiCloud: process.env.STRAPI_HOSTING === 'strapi.cloud',\n };\n const res = await fetch('https://analytics.strapi.io/submit-nps', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n });\n\n if (!res.ok) {\n throw new Error('Failed to submit NPS survey');\n }\n\n setNpsSurveySettings((settings) => ({\n ...settings,\n lastResponseDate: new Date().toString(),\n firstDismissalDate: null,\n lastDismissalDate: null,\n }));\n setIsFeedbackResponse(true);\n // Thank you message displayed in the banner should disappear after few seconds.\n setTimeout(() => {\n setSurveyIsShown(false);\n }, 3000);\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const handleDismiss = () => {\n setNpsSurveySettings((settings) => {\n const nextSettings = {\n ...settings,\n lastResponseDate: null,\n };\n\n if (settings.firstDismissalDate) {\n // If the user dismisses the survey for the second time\n nextSettings.lastDismissalDate = new Date().toString();\n } else {\n // If the user dismisses the survey for the first time\n nextSettings.firstDismissalDate = new Date().toString();\n }\n\n return nextSettings;\n });\n\n setSurveyIsShown(false);\n };\n\n return (\n <Portal>\n <Formik\n initialValues={{ npsSurveyFeedback: '', npsSurveyRating: null }}\n onSubmit={handleSubmitResponse}\n validationSchema={yup.object({\n npsSurveyFeedback: yup.string(),\n npsSurveyRating: yup.number().required(),\n })}\n >\n {({ values, handleChange, setFieldValue, isSubmitting }) => (\n <Form name=\"npsSurveyForm\">\n <Flex\n hasRadius\n direction=\"column\"\n padding={4}\n borderColor=\"primary200\"\n background=\"neutral0\"\n shadow=\"popupShadow\"\n position=\"fixed\"\n bottom={0}\n left=\"50%\"\n transform=\"translateX(-50%)\"\n zIndex=\"200\"\n width=\"50%\"\n >\n {isFeedbackResponse ? (\n <Typography fontWeight=\"semiBold\">\n {formatMessage({\n id: 'app.components.NpsSurvey.feedback-response',\n defaultMessage: 'Thank you very much for your feedback!',\n })}\n </Typography>\n ) : (\n <Box tag=\"fieldset\" width=\"100%\" borderWidth={0}>\n <Flex justifyContent=\"space-between\" width=\"100%\">\n <Box marginLeft=\"auto\" marginRight=\"auto\">\n <Typography fontWeight=\"semiBold\" tag=\"legend\">\n {formatMessage({\n id: 'app.components.NpsSurvey.banner-title',\n defaultMessage:\n 'How likely are you to recommend Strapi to a friend or colleague?',\n })}\n </Typography>\n </Box>\n <IconButton\n onClick={handleDismiss}\n withTooltip={false}\n label={formatMessage({\n id: 'app.components.NpsSurvey.dismiss-survey-label',\n defaultMessage: 'Dismiss survey',\n })}\n >\n <Cross />\n </IconButton>\n </Flex>\n <Flex gap={2} marginTop={2} marginBottom={2} justifyContent=\"center\">\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.NpsSurvey.no-recommendation',\n defaultMessage: 'Not at all likely',\n })}\n </Typography>\n {ratingArray.map((number) => {\n return (\n <FieldWrapper\n key={number}\n name=\"npsSurveyRating\"\n className={values.npsSurveyRating === number ? 'selected' : undefined} // \"selected\" class added when child radio button is checked\n hasRadius\n background=\"primary100\"\n borderColor=\"primary200\"\n color=\"primary600\"\n position=\"relative\"\n cursor=\"pointer\"\n >\n <Field.Label>\n <VisuallyHidden>\n <Field.Input\n type=\"radio\"\n checked={values.npsSurveyRating === number}\n onChange={(e) =>\n setFieldValue('npsSurveyRating', parseInt(e.target.value, 10))\n }\n value={number}\n />\n </VisuallyHidden>\n {number}\n </Field.Label>\n </FieldWrapper>\n );\n })}\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.NpsSurvey.happy-to-recommend',\n defaultMessage: 'Extremely likely',\n })}\n </Typography>\n </Flex>\n {values.npsSurveyRating !== null && (\n <Flex direction=\"column\">\n <Box marginTop={2}>\n <Field.Label fontWeight=\"semiBold\" fontSize={2}>\n {formatMessage({\n id: 'app.components.NpsSurvey.feedback-question',\n defaultMessage: 'Do you have any suggestion for improvements?',\n })}\n </Field.Label>\n </Box>\n <Box width=\"62%\" marginTop={3} marginBottom={4}>\n <Textarea\n id=\"npsSurveyFeedback\" // formik element attribute \"id\" should be same as the values key to work\n width=\"100%\"\n onChange={handleChange}\n value={values.npsSurveyFeedback}\n />\n </Box>\n <Button marginBottom={2} type=\"submit\" loading={isSubmitting}>\n {formatMessage({\n id: 'app.components.NpsSurvey.submit-feedback',\n defaultMessage: 'Submit Feedback',\n })}\n </Button>\n </Flex>\n )}\n </Box>\n )}\n </Flex>\n </Form>\n )}\n </Formik>\n </Portal>\n );\n};\n\ninterface NpsSurveySettings {\n enabled: boolean;\n lastResponseDate: string | null;\n firstDismissalDate: string | null;\n lastDismissalDate: string | null;\n}\n\n/**\n * We exported to make it available during admin user registration.\n * Because we only enable the NPS for users who subscribe to the newsletter when signing up\n */\nfunction useNpsSurveySettings() {\n const [npsSurveySettings, setNpsSurveySettings] = usePersistentState<NpsSurveySettings>(\n 'STRAPI_NPS_SURVEY_SETTINGS',\n {\n enabled: true,\n lastResponseDate: null,\n firstDismissalDate: null,\n lastDismissalDate: null,\n }\n );\n\n /**\n * TODO: should this just be an array so we can alias the `usePersistentState` hook?\n */\n return { npsSurveySettings, setNpsSurveySettings };\n}\n\nexport { NpsSurvey, useNpsSurveySettings };\n","import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Typography, Link } from '@strapi/design-system';\nimport omit from 'lodash/omit';\nimport { useIntl } from 'react-intl';\nimport { NavLink, Navigate, useNavigate, useMatch, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\nimport { ValidationError } from 'yup';\n\nimport {\n Register as RegisterUser,\n RegisterAdmin,\n} from '../../../../../shared/contracts/authentication';\nimport { Form, FormHelpers } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { useGuidedTour } from '../../../components/GuidedTour/Provider';\nimport { useNpsSurveySettings } from '../../../components/NpsSurvey';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useTypedDispatch } from '../../../core/store/hooks';\nimport { useNotification } from '../../../features/Notifications';\nimport { useTracking } from '../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport { LayoutContent, UnauthenticatedLayout } from '../../../layouts/UnauthenticatedLayout';\nimport { login } from '../../../reducer';\nimport {\n useGetRegistrationInfoQuery,\n useRegisterAdminMutation,\n useRegisterUserMutation,\n} from '../../../services/auth';\nimport { isBaseQueryError } from '../../../utils/baseQuery';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nconst REGISTER_USER_SCHEMA = yup.object().shape({\n firstname: yup.string().trim().required(translatedErrors.required).nullable(),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .matches(/[a-z]/, {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n })\n .matches(/[A-Z]/, {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n })\n .matches(/\\d/, {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n })\n .nullable(),\n registrationToken: yup.string().required({\n id: translatedErrors.required.id,\n defaultMessage: 'Registration token is required',\n }),\n});\n\nconst REGISTER_ADMIN_SCHEMA = yup.object().shape({\n firstname: yup\n .string()\n .trim()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Firstname is required',\n })\n .nullable(),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .matches(/[a-z]/, {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n })\n .matches(/[A-Z]/, {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n })\n .matches(/\\d/, {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required,\n defaultMessage: 'Confirm password is required',\n })\n .nullable()\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n }),\n email: yup\n .string()\n .email({\n id: translatedErrors.email.id,\n defaultMessage: 'Not a valid email',\n })\n .strict()\n .lowercase({\n id: translatedErrors.lowercase.id,\n defaultMessage: 'Email must be lowercase',\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Email is required',\n })\n .nullable(),\n});\n\ninterface RegisterProps {\n hasAdmin?: boolean;\n}\n\ninterface RegisterFormValues {\n firstname: string;\n lastname: string;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n}\n\nconst Register = ({ hasAdmin }: RegisterProps) => {\n const { toggleNotification } = useNotification();\n const navigate = useNavigate();\n const [submitCount, setSubmitCount] = React.useState(0);\n const [apiError, setApiError] = React.useState<string>();\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const setSkipped = useGuidedTour('Register', (state) => state.setSkipped);\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const match = useMatch('/auth/:authType');\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const { setNpsSurveySettings } = useNpsSurveySettings();\n\n const registrationToken = query.get('registrationToken');\n\n const { data: userInfo, error } = useGetRegistrationInfoQuery(registrationToken as string, {\n skip: !registrationToken,\n });\n\n React.useEffect(() => {\n if (error) {\n const message: string = isBaseQueryError(error)\n ? formatAPIError(error)\n : (error.message ?? '');\n\n toggleNotification({\n type: 'danger',\n message,\n });\n\n navigate(`/auth/oops?info=${encodeURIComponent(message)}`);\n }\n }, [error, formatAPIError, navigate, toggleNotification]);\n\n const [registerAdmin] = useRegisterAdminMutation();\n const [registerUser] = useRegisterUserMutation();\n const dispatch = useTypedDispatch();\n\n const handleRegisterAdmin = async (\n { news, ...body }: RegisterAdmin.Request['body'] & { news: boolean },\n setFormErrors: FormHelpers<RegisterFormValues>['setErrors']\n ) => {\n const res = await registerAdmin(body);\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n\n const { roles } = res.data.user;\n\n if (roles) {\n const isUserSuperAdmin = roles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin) {\n localStorage.setItem('GUIDED_TOUR_SKIPPED', JSON.stringify(false));\n setSkipped(false);\n trackUsage('didLaunchGuidedtour');\n }\n }\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n navigate({\n pathname: '/usecase',\n search: `?hasAdmin=${true}`,\n });\n } else {\n navigate('/');\n }\n } else {\n if (isBaseQueryError(res.error)) {\n trackUsage('didNotCreateFirstAdmin');\n\n if (res.error.name === 'ValidationError') {\n setFormErrors(formatValidationErrors(res.error));\n return;\n }\n\n setApiError(formatAPIError(res.error));\n }\n }\n };\n\n const handleRegisterUser = async (\n { news, ...body }: RegisterUser.Request['body'] & { news: boolean },\n setFormErrors: FormHelpers<RegisterFormValues>['setErrors']\n ) => {\n const res = await registerUser(body);\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n navigate({\n pathname: '/usecase',\n search: `?hasAdmin=${hasAdmin}`,\n });\n } else {\n navigate('/');\n }\n } else {\n if (isBaseQueryError(res.error)) {\n trackUsage('didNotCreateFirstAdmin');\n\n if (res.error.name === 'ValidationError') {\n setFormErrors(formatValidationErrors(res.error));\n return;\n }\n\n setApiError(formatAPIError(res.error));\n }\n }\n };\n\n if (\n !match ||\n (match.params.authType !== 'register' && match.params.authType !== 'register-admin')\n ) {\n return <Navigate to=\"/\" />;\n }\n\n const isAdminRegistration = match.params.authType === 'register-admin';\n\n const schema = isAdminRegistration ? REGISTER_ADMIN_SCHEMA : REGISTER_USER_SCHEMA;\n\n return (\n <UnauthenticatedLayout>\n <LayoutContent>\n <Flex direction=\"column\" alignItems=\"center\" gap={3}>\n <Logo />\n\n <Typography tag=\"h1\" variant=\"alpha\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.welcome.title',\n defaultMessage: 'Welcome to Strapi!',\n })}\n </Typography>\n <Typography variant=\"epsilon\" textColor=\"neutral600\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.register.subtitle',\n defaultMessage:\n 'Credentials are only used to authenticate in Strapi. All saved data will be stored in your database.',\n })}\n </Typography>\n {apiError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {apiError}\n </Typography>\n ) : null}\n </Flex>\n <Form\n method=\"POST\"\n initialValues={\n {\n firstname: userInfo?.firstname || '',\n lastname: userInfo?.lastname || '',\n email: userInfo?.email || '',\n password: '',\n confirmPassword: '',\n registrationToken: registrationToken || undefined,\n news: false,\n } satisfies RegisterFormValues\n }\n onSubmit={async (data, helpers) => {\n const normalizedData = normalizeData(data);\n\n try {\n await schema.validate(normalizedData, { abortEarly: false });\n\n if (submitCount > 0 && isAdminRegistration) {\n trackUsage('didSubmitWithErrorsFirstAdmin', { count: submitCount.toString() });\n }\n\n if (normalizedData.registrationToken) {\n handleRegisterUser(\n {\n userInfo: omit(normalizedData, [\n 'registrationToken',\n 'confirmPassword',\n 'email',\n 'news',\n ]),\n registrationToken: normalizedData.registrationToken,\n news: normalizedData.news,\n },\n helpers.setErrors\n );\n } else {\n await handleRegisterAdmin(\n omit(normalizedData, ['registrationToken', 'confirmPassword']),\n helpers.setErrors\n );\n }\n } catch (err) {\n if (err instanceof ValidationError) {\n helpers.setErrors(\n err.inner.reduce<Record<string, string>>((acc, { message, path }) => {\n if (path && typeof message === 'object') {\n acc[path] = formatMessage(message);\n }\n return acc;\n }, {})\n );\n }\n setSubmitCount(submitCount + 1);\n }\n }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} marginTop={7}>\n <Grid.Root gap={4}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'Firstname',\n }),\n name: 'firstname',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Lastname',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n disabled: !isAdminRegistration,\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 12,\n type: 'email' as const,\n },\n {\n hint: formatMessage({\n id: 'Auth.form.password.hint',\n defaultMessage:\n 'Must be at least 8 characters, 1 uppercase, 1 lowercase & 1 number',\n }),\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n required: true,\n size: 12,\n type: 'password' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n required: true,\n size: 12,\n type: 'password' as const,\n },\n {\n label: formatMessage(\n {\n id: 'Auth.form.register.news.label',\n defaultMessage:\n 'Keep me updated about new features & upcoming improvements (by doing this you accept the {terms} and the {policy}).',\n },\n {\n terms: (\n <A target=\"_blank\" href=\"https://strapi.io/terms\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.terms',\n defaultMessage: 'terms',\n })}\n </A>\n ),\n policy: (\n <A target=\"_blank\" href=\"https://strapi.io/privacy\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.policy',\n defaultMessage: 'policy',\n })}\n </A>\n ),\n }\n ),\n name: 'news',\n size: 12,\n type: 'checkbox' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n <Button fullWidth size=\"L\" type=\"submit\">\n {formatMessage({\n id: 'Auth.form.button.register',\n defaultMessage: \"Let's start\",\n })}\n </Button>\n </Flex>\n </Form>\n {match?.params.authType === 'register' && (\n <Box paddingTop={4}>\n <Flex justifyContent=\"center\">\n <Link tag={NavLink} to=\"/auth/login\">\n {formatMessage({\n id: 'Auth.link.signin.account',\n defaultMessage: 'Already have an account?',\n })}\n </Link>\n </Flex>\n </Box>\n )}\n </LayoutContent>\n </UnauthenticatedLayout>\n );\n};\n\ninterface RegisterFormValues {\n firstname: string;\n lastname: string;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n}\n\ntype StringKeys<T> = {\n [K in keyof T]: T[K] extends string | undefined ? K : never;\n}[keyof T];\n\n/**\n * @description Trims all values but the password & sets lastName to null if it's a falsey value.\n */\nfunction normalizeData(data: RegisterFormValues) {\n return Object.entries(data).reduce(\n (acc, [key, value]) => {\n type PasswordKeys = Extract<keyof RegisterFormValues, 'password' | 'confirmPassword'>;\n type RegisterFormStringValues = Exclude<\n keyof Pick<RegisterFormValues, StringKeys<RegisterFormValues>>,\n PasswordKeys\n >;\n\n if (!['password', 'confirmPassword'].includes(key) && typeof value === 'string') {\n acc[key as RegisterFormStringValues] = value.trim();\n\n if (key === 'lastname') {\n acc[key] = value || undefined;\n }\n } else {\n acc[key as PasswordKeys] = value;\n }\n\n return acc;\n },\n {} as {\n firstname: string;\n lastname: string | undefined;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n }\n );\n}\n\nconst A = styled.a`\n color: ${({ theme }) => theme.colors.primary600};\n`;\n\nexport { Register };\nexport type { RegisterProps };\n","import * as React from 'react';\n\nimport { Box, Button, Flex, Main, Typography, Link } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate, Navigate, useLocation } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { ResetPassword } from '../../../../../shared/contracts/authentication';\nimport { Form } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useTypedDispatch } from '../../../core/store/hooks';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport {\n Column,\n LayoutContent,\n UnauthenticatedLayout,\n} from '../../../layouts/UnauthenticatedLayout';\nimport { login } from '../../../reducer';\nimport { useResetPasswordMutation } from '../../../services/auth';\nimport { isBaseQueryError } from '../../../utils/baseQuery';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nconst RESET_PASSWORD_SCHEMA = yup.object().shape({\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .matches(/[a-z]/, {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n })\n .matches(/[A-Z]/, {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n })\n .matches(/\\d/, {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n })\n .nullable(),\n});\n\nconst ResetPassword = () => {\n const { formatMessage } = useIntl();\n const dispatch = useTypedDispatch();\n const navigate = useNavigate();\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [resetPassword, { error }] = useResetPasswordMutation();\n\n const handleSubmit = async (body: ResetPassword.Request['body']) => {\n const res = await resetPassword(body);\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n navigate('/');\n }\n };\n /**\n * If someone doesn't have a reset password token\n * then they should just be redirected back to the login page.\n */\n if (!query.get('code')) {\n return <Navigate to=\"/auth/login\" />;\n }\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={7}>\n <Typography tag=\"h1\" variant=\"alpha\">\n {formatMessage({\n id: 'global.reset-password',\n defaultMessage: 'Reset password',\n })}\n </Typography>\n </Box>\n {error ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {isBaseQueryError(error)\n ? formatAPIError(error)\n : formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n })}\n </Typography>\n ) : null}\n </Column>\n <Form\n method=\"POST\"\n initialValues={{\n password: '',\n confirmPassword: '',\n }}\n onSubmit={(values) => {\n // We know query.code is defined because we check for it above.\n handleSubmit({ password: values.password, resetPasswordToken: query.get('code')! });\n }}\n validationSchema={RESET_PASSWORD_SCHEMA}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {[\n {\n hint: formatMessage({\n id: 'Auth.form.password.hint',\n defaultMessage:\n 'Password must contain at least 8 characters, 1 uppercase, 1 lowercase and 1 number',\n }),\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n required: true,\n type: 'password' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n required: true,\n type: 'password' as const,\n },\n ].map((field) => (\n <InputRenderer key={field.name} {...field} />\n ))}\n <Button fullWidth type=\"submit\">\n {formatMessage({\n id: 'global.change-password',\n defaultMessage: 'Change password',\n })}\n </Button>\n </Flex>\n </Form>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n <Link tag={NavLink} to=\"/auth/login\">\n {formatMessage({ id: 'Auth.link.ready', defaultMessage: 'Ready to sign in?' })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nexport { ResetPassword };\n","import type { ComponentType } from 'react';\n\nimport { ForgotPassword } from './components/ForgotPassword';\nimport { ForgotPasswordSuccess } from './components/ForgotPasswordSuccess';\nimport { Oops } from './components/Oops';\nimport { Register, RegisterProps } from './components/Register';\nimport { ResetPassword } from './components/ResetPassword';\n\nexport type AuthType =\n | 'login'\n | 'register'\n | 'register-admin'\n | 'forgot-password'\n | 'reset-password'\n | 'forgot-password-success'\n | 'oops'\n | 'providers';\n\nexport type FormDictionary = Record<AuthType, ComponentType | ComponentType<RegisterProps>>;\n\nexport const FORMS = {\n 'forgot-password': ForgotPassword,\n 'forgot-password-success': ForgotPasswordSuccess,\n // the `Component` attribute is set after all forms and CE/EE components are loaded, but since we\n // are here outside of a React component we can not use the hook directly\n login: () => null,\n oops: Oops,\n register: Register,\n 'register-admin': Register,\n 'reset-password': ResetPassword,\n providers: () => null,\n} satisfies FormDictionary;\n","import { Navigate, useLocation, useMatch } from 'react-router-dom';\n\nimport { useAuth } from '../../features/Auth';\nimport { useEnterprise } from '../../hooks/useEnterprise';\nimport { useInitQuery } from '../../services/admin';\n\nimport { Login as LoginCE } from './components/Login';\nimport { FORMS, FormDictionary } from './constants';\n\n/* -------------------------------------------------------------------------------------------------\n * AuthPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst AuthPage = () => {\n const { search } = useLocation();\n const match = useMatch('/auth/:authType');\n const authType = match?.params.authType;\n const { data } = useInitQuery();\n const { hasAdmin } = data ?? {};\n const Login = useEnterprise(\n LoginCE,\n async () => (await import('../../../../ee/admin/src/pages/AuthPage/components/Login')).LoginEE\n );\n const forms = useEnterprise<FormDictionary, Partial<FormDictionary>>(\n FORMS,\n async () => (await import('../../../../ee/admin/src/pages/AuthPage/constants')).FORMS,\n {\n combine(ceForms, eeForms) {\n return {\n ...ceForms,\n ...eeForms,\n };\n },\n defaultValue: FORMS,\n }\n );\n\n const { token } = useAuth('AuthPage', (auth) => auth);\n\n if (!authType || !forms) {\n return <Navigate to=\"/\" />;\n }\n\n const Component = forms[authType as keyof FormDictionary];\n\n // Redirect the user to the login page if\n // the endpoint does not exists\n if (!Component) {\n return <Navigate to=\"/\" />;\n }\n\n // User is already logged in\n if (authType !== 'register-admin' && authType !== 'register' && token) {\n return <Navigate to=\"/\" />;\n }\n\n // there is already an admin user oo\n if (hasAdmin && authType === 'register-admin' && token) {\n return <Navigate to=\"/\" />;\n }\n\n // Redirect the user to the register-admin if it is the first user\n if (!hasAdmin && authType !== 'register-admin') {\n return (\n <Navigate\n to={{\n pathname: '/auth/register-admin',\n // Forward the `?redirectTo` from /auth/login\n // /abc => /auth/login?redirectTo=%2Fabc => /auth/register-admin?redirectTo=%2Fabc\n search,\n }}\n />\n );\n }\n\n if (Login && authType === 'login') {\n // Assign the component to render for the login form\n return <Login />;\n } else if (authType === 'login' && !Login) {\n // block rendering until the Login EE component is fully loaded\n return null;\n }\n\n return <Component hasAdmin={hasAdmin} />;\n};\n\nexport { AuthPage };\n","import type { RouteObject } from 'react-router-dom';\n\nexport const ROUTES_CE: RouteObject[] = [\n {\n lazy: async () => {\n const { ProtectedListPage } = await import('./pages/Roles/ListPage');\n\n return {\n Component: ProtectedListPage,\n };\n },\n path: 'roles',\n },\n {\n lazy: async () => {\n const { ProtectedCreatePage } = await import('./pages/Roles/CreatePage');\n\n return {\n Component: ProtectedCreatePage,\n };\n },\n path: 'roles/duplicate/:id',\n },\n {\n lazy: async () => {\n const { ProtectedCreatePage } = await import('./pages/Roles/CreatePage');\n\n return {\n Component: ProtectedCreatePage,\n };\n },\n path: 'roles/new',\n },\n {\n lazy: async () => {\n const { ProtectedEditPage } = await import('./pages/Roles/EditPage');\n\n return {\n Component: ProtectedEditPage,\n };\n },\n path: 'roles/:id',\n },\n {\n lazy: async () => {\n const { ProtectedListPage } = await import('./pages/Users/ListPage');\n\n return {\n Component: ProtectedListPage,\n };\n },\n path: 'users',\n },\n {\n lazy: async () => {\n const { ProtectedEditPage } = await import('./pages/Users/EditPage');\n\n return {\n Component: ProtectedEditPage,\n };\n },\n path: 'users/:id',\n },\n {\n lazy: async () => {\n const { ProtectedCreatePage } = await import('./pages/Webhooks/CreatePage');\n\n return {\n Component: ProtectedCreatePage,\n };\n },\n path: 'webhooks/create',\n },\n {\n lazy: async () => {\n const { ProtectedEditPage } = await import('./pages/Webhooks/EditPage');\n\n return {\n Component: ProtectedEditPage,\n };\n },\n path: 'webhooks/:id',\n },\n {\n lazy: async () => {\n const { ProtectedListPage } = await import('./pages/Webhooks/ListPage');\n\n return {\n Component: ProtectedListPage,\n };\n },\n path: 'webhooks',\n },\n {\n lazy: async () => {\n const { ProtectedListView } = await import('./pages/ApiTokens/ListView');\n\n return {\n Component: ProtectedListView,\n };\n },\n path: 'api-tokens',\n },\n {\n lazy: async () => {\n const { ProtectedCreateView } = await import('./pages/ApiTokens/CreateView');\n\n return {\n Component: ProtectedCreateView,\n };\n },\n path: 'api-tokens/create',\n },\n {\n lazy: async () => {\n const { ProtectedEditView } = await import('./pages/ApiTokens/EditView/EditViewPage');\n\n return {\n Component: ProtectedEditView,\n };\n },\n path: 'api-tokens/:id',\n },\n {\n lazy: async () => {\n const { ProtectedCreateView } = await import('./pages/TransferTokens/CreateView');\n\n return {\n Component: ProtectedCreateView,\n };\n },\n path: 'transfer-tokens/create',\n },\n {\n lazy: async () => {\n const { ProtectedListView } = await import('./pages/TransferTokens/ListView');\n\n return {\n Component: ProtectedListView,\n };\n },\n path: 'transfer-tokens',\n },\n {\n lazy: async () => {\n const { ProtectedEditView } = await import('./pages/TransferTokens/EditView');\n\n return {\n Component: ProtectedEditView,\n };\n },\n path: 'transfer-tokens/:id',\n },\n {\n lazy: async () => {\n const { ProtectedInstalledPlugins } = await import('./pages/InstalledPlugins');\n\n return {\n Component: ProtectedInstalledPlugins,\n };\n },\n path: 'list-plugins',\n },\n\n {\n lazy: async () => {\n const { PurchaseAuditLogs } = await import('./pages/PurchaseAuditLogs');\n\n return {\n Component: PurchaseAuditLogs,\n };\n },\n path: 'purchase-audit-logs',\n },\n {\n lazy: async () => {\n const { PurchaseSingleSignOn } = await import('./pages/PurchaseSingleSignOn');\n\n return {\n Component: PurchaseSingleSignOn,\n };\n },\n path: 'purchase-single-sign-on',\n },\n];\n","/* eslint-disable check-file/filename-naming-convention */\n\nimport { RouteObject } from 'react-router-dom';\n\nimport { getEERoutes as getBaseEERoutes } from '../../ee/admin/src/constants';\nimport { getEERoutes as getSettingsEERoutes } from '../../ee/admin/src/pages/SettingsPage/constants';\n\nimport { AuthPage } from './pages/Auth/AuthPage';\nimport { ROUTES_CE } from './pages/Settings/constants';\n\n/**\n * These are routes we don't want to be able to be changed by plugins.\n */\nconst getImmutableRoutes = (): RouteObject[] => [\n {\n path: 'usecase',\n lazy: async () => {\n const { PrivateUseCasePage } = await import('./pages/UseCasePage');\n\n return {\n Component: PrivateUseCasePage,\n };\n },\n },\n // this needs to go before auth/:authType because otherwise it won't match the route\n ...getBaseEERoutes(),\n {\n path: 'auth/:authType',\n element: <AuthPage />,\n },\n];\n\nconst getInitialRoutes = (): RouteObject[] => [\n {\n index: true,\n lazy: async () => {\n const { HomePage } = await import('./pages/HomePage');\n\n return {\n Component: HomePage,\n };\n },\n },\n {\n path: 'me',\n lazy: async () => {\n const { ProfilePage } = await import('./pages/ProfilePage');\n\n return {\n Component: ProfilePage,\n };\n },\n },\n {\n path: 'marketplace',\n lazy: async () => {\n const { ProtectedMarketplacePage } = await import('./pages/Marketplace/MarketplacePage');\n\n return {\n Component: ProtectedMarketplacePage,\n };\n },\n },\n {\n path: 'settings/*',\n lazy: async () => {\n const { Layout } = await import('./pages/Settings/Layout');\n\n return {\n Component: Layout,\n };\n },\n children: [\n {\n path: 'application-infos',\n lazy: async () => {\n const { ApplicationInfoPage } = await import(\n './pages/Settings/pages/ApplicationInfo/ApplicationInfoPage'\n );\n\n return {\n Component: ApplicationInfoPage,\n };\n },\n },\n // ...Object.values(this.settings).flatMap(({ links }) =>\n // links.map(({ to, Component }) => ({\n // path: `${to}/*`,\n // element: (\n // <React.Suspense fallback={<Page.Loading />}>\n // <Component />\n // </React.Suspense>\n // ),\n // }))\n // ),\n ...[...getSettingsEERoutes(), ...ROUTES_CE].filter(\n (route, index, refArray) => refArray.findIndex((obj) => obj.path === route.path) === index\n ),\n ],\n },\n];\n\nexport { getImmutableRoutes, getInitialRoutes };\n","/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport invariant from 'invariant';\nimport { MessageDescriptor, PrimitiveType } from 'react-intl';\nimport { Provider } from 'react-redux';\nimport { createBrowserRouter, createMemoryRouter, RouteObject } from 'react-router-dom';\n\nimport { App } from '../../App';\nimport { ErrorElement } from '../../components/ErrorElement';\nimport { LanguageProvider } from '../../components/LanguageProvider';\nimport { Theme } from '../../components/Theme';\nimport { Permission } from '../../features/Auth';\nimport { NotFoundPage } from '../../pages/NotFoundPage';\nimport { getImmutableRoutes } from '../../router';\nimport { StrapiApp } from '../../StrapiApp';\n\ntype IRouter = ReturnType<typeof createBrowserRouter> | ReturnType<typeof createMemoryRouter>;\n\ntype Reducer<Config extends object> = (prev: Config[]) => Config[];\n\ninterface MenuItem {\n to: string;\n icon: React.ElementType;\n intlLabel: MessageDescriptor & { values?: Record<string, PrimitiveType> };\n permissions: Permission[];\n notificationsCount?: number;\n Component?: React.LazyExoticComponent<React.ComponentType>;\n exact?: boolean;\n position?: number;\n licenseOnly?: boolean;\n}\n\ninterface StrapiAppSettingLink extends Omit<MenuItem, 'icon' | 'notificationCount'> {\n id: string;\n}\n\ninterface UnloadedSettingsLink extends Omit<StrapiAppSettingLink, 'Component'> {\n Component?: () => Promise<{ default: React.ComponentType }>;\n}\n\ninterface StrapiAppSetting {\n id: string;\n intlLabel: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n links: Omit<StrapiAppSettingLink, 'Component'>[];\n}\n\ninterface RouterOptions {\n basename?: string;\n memory?: boolean;\n}\n\nclass Router {\n private _routes: RouteObject[] = [];\n private router: IRouter | null = null;\n private _menu: Omit<MenuItem, 'Component'>[] = [];\n private _settings: Record<string, StrapiAppSetting> = {\n global: {\n id: 'global',\n intlLabel: {\n id: 'Settings.global',\n defaultMessage: 'Global Settings',\n },\n links: [],\n },\n };\n\n constructor(initialRoutes: RouteObject[]) {\n this._routes = initialRoutes;\n }\n\n get routes() {\n return this._routes;\n }\n\n get menu() {\n return this._menu;\n }\n\n get settings() {\n return this._settings;\n }\n\n /**\n * @internal This method is used internally by Strapi to create the router.\n * It should not be used by plugins, doing so will likely break the application.\n */\n createRouter(strapi: StrapiApp, { memory, ...opts }: RouterOptions = {}) {\n const routes = [\n {\n path: '/*',\n errorElement: (\n <Provider store={strapi.store!}>\n <LanguageProvider messages={strapi.configurations.translations}>\n <Theme themes={strapi.configurations.themes}>\n <ErrorElement />\n </Theme>\n </LanguageProvider>\n </Provider>\n ),\n element: <App strapi={strapi} store={strapi.store!} />,\n children: [\n ...getImmutableRoutes(),\n {\n path: '/*',\n lazy: async () => {\n const { PrivateAdminLayout } = await import('../../layouts/AuthenticatedLayout');\n\n return {\n Component: PrivateAdminLayout,\n };\n },\n children: [\n ...this.routes,\n {\n path: '*',\n element: <NotFoundPage />,\n },\n ],\n },\n ],\n },\n ];\n\n if (memory) {\n this.router = createMemoryRouter(routes, opts);\n } else {\n this.router = createBrowserRouter(routes, opts);\n }\n\n return this.router;\n }\n\n public addMenuLink = (\n link: Omit<MenuItem, 'Component'> & {\n Component: () => Promise<{ default: React.ComponentType }>;\n }\n ) => {\n invariant(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);\n invariant(\n typeof link.to === 'string',\n `[${\n link.intlLabel.defaultMessage\n }]: Expected link.to to be a string instead received ${typeof link.to}`\n );\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage should be defined`\n );\n invariant(\n !link.Component || (link.Component && typeof link.Component === 'function'),\n `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise that returns a default component. Please use: \\`Component: () => import(path)\\` instead.`\n );\n\n if (\n !link.Component ||\n (link.Component &&\n typeof link.Component === 'function' &&\n // @ts-expect-error – shh\n link.Component[Symbol.toStringTag] === 'AsyncFunction')\n ) {\n console.warn(\n `\n [${link.intlLabel.defaultMessage}]: [deprecated] addMenuLink() was called with an async Component from the plugin \"${link.intlLabel.defaultMessage}\". This will be removed in the future. Please use: \\`Component: () => import(path)\\` ensuring you return a default export instead.\n `.trim()\n );\n }\n\n if (link.to.startsWith('/')) {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your menu link is an absolute path, it should be relative to the root of the application. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.slice(1);\n }\n\n const { Component, ...restLink } = link;\n\n if (Component) {\n this._routes.push({\n path: `${link.to}/*`,\n lazy: async () => {\n const mod = await Component();\n\n if ('default' in mod) {\n return { Component: mod.default };\n } else {\n return { Component: mod };\n }\n },\n });\n }\n\n this.menu.push(restLink);\n };\n\n public addSettingsLink(\n section: Pick<StrapiAppSetting, 'id' | 'intlLabel'> & { links: UnloadedSettingsLink[] },\n links?: never\n ): void;\n public addSettingsLink(\n sectionId: string | Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n link: UnloadedSettingsLink\n ): void;\n public addSettingsLink(\n sectionId: string | Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n link: UnloadedSettingsLink[]\n ): void;\n public addSettingsLink(\n section:\n | string\n | Pick<StrapiAppSetting, 'id' | 'intlLabel'>\n | (Pick<StrapiAppSetting, 'id' | 'intlLabel'> & { links: UnloadedSettingsLink[] }),\n link?: UnloadedSettingsLink | UnloadedSettingsLink[]\n ): void {\n if (typeof section === 'object' && 'links' in section) {\n /**\n * Someone has passed an entire pre-configured section object\n */\n invariant(section.id, 'section.id should be defined');\n invariant(\n section.intlLabel?.id && section.intlLabel?.defaultMessage,\n 'section.intlLabel should be defined'\n );\n invariant(this.settings[section.id] === undefined, 'A similar section already exists');\n invariant(Array.isArray(section.links), 'TypeError expected links to be an array');\n\n this.settings[section.id] = { ...section, links: [] };\n\n section.links.forEach((link) => {\n this.createSettingsLink(section.id, link);\n });\n } else if (typeof section === 'object' && link) {\n /**\n * we need to create the section first\n */\n invariant(section.id, 'section.id should be defined');\n invariant(\n section.intlLabel?.id && section.intlLabel?.defaultMessage,\n 'section.intlLabel should be defined'\n );\n invariant(this.settings[section.id] === undefined, 'A similar section already exists');\n\n this.settings[section.id] = { ...section, links: [] };\n\n if (Array.isArray(link)) {\n link.forEach((l) => this.createSettingsLink(section.id, l));\n } else {\n this.createSettingsLink(section.id, link);\n }\n } else if (typeof section === 'string' && link) {\n if (Array.isArray(link)) {\n link.forEach((l) => this.createSettingsLink(section, l));\n } else {\n this.createSettingsLink(section, link);\n }\n } else {\n throw new Error(\n 'Invalid arguments provided to addSettingsLink, at minimum a sectionId and link are required.'\n );\n }\n }\n\n private createSettingsLink = (sectionId: string, link: UnloadedSettingsLink) => {\n invariant(this._settings[sectionId], 'The section does not exist');\n\n invariant(link.id, `[${link.intlLabel.defaultMessage}]: link.id should be defined`);\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage`\n );\n invariant(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);\n invariant(\n !link.Component || (link.Component && typeof link.Component === 'function'),\n `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise. Please use: \\`Component: () => import(path)\\` instead.`\n );\n\n if (\n !link.Component ||\n (link.Component &&\n typeof link.Component === 'function' &&\n // @ts-expect-error – shh\n link.Component[Symbol.toStringTag] === 'AsyncFunction')\n ) {\n console.warn(\n `\n [${link.intlLabel.defaultMessage}]: [deprecated] addSettingsLink() was called with an async Component from the plugin \"${link.intlLabel.defaultMessage}\". This will be removed in the future. Please use: \\`Component: () => import(path)\\` ensuring you return a default export instead.\n `.trim()\n );\n }\n\n if (link.to.startsWith('/')) {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your settings link is an absolute path. It should be relative to \\`/settings\\`. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.slice(1);\n }\n\n if (link.to.split('/')[0] === 'settings') {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your settings link has \\`settings\\` as the first part of it's path. It should be relative to \\`settings\\` and therefore, not include it. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.split('/').slice(1).join('/');\n }\n\n const { Component, ...restLink } = link;\n\n const settingsIndex = this._routes.findIndex((route) => route.path === 'settings/*');\n\n /**\n * This shouldn't happen unless someone has removed the settings section completely.\n * Print a warning if this is the case though.\n */\n if (!settingsIndex) {\n console.warn(\n 'A third party plugin has removed the settings section, the settings link cannot be added.'\n );\n return;\n } else if (!this._routes[settingsIndex].children) {\n this._routes[settingsIndex].children = [];\n }\n\n if (Component) {\n this._routes[settingsIndex].children!.push({\n path: `${link.to}/*`,\n lazy: async () => {\n const mod = await Component();\n\n if ('default' in mod) {\n return { Component: mod.default };\n } else {\n return { Component: mod };\n }\n },\n });\n }\n\n this._settings[sectionId].links.push(restLink);\n };\n\n /**\n * @alpha\n * @description Adds a route or an array of routes to the router.\n * Otherwise, pass a function that receives the current routes and\n * returns the new routes in a reducer like fashion.\n */\n addRoute(route: RouteObject | RouteObject[] | Reducer<RouteObject>) {\n if (Array.isArray(route)) {\n this._routes = [...this._routes, ...route];\n } else if (typeof route === 'object' && route !== null) {\n this._routes.push(route);\n } else if (typeof route === 'function') {\n this._routes = route(this._routes);\n } else {\n throw new Error(\n `Expected the \\`route\\` passed to \\`addRoute\\` to be an array or a function, but received ${getPrintableType(\n route\n )}`\n );\n }\n }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * getPrintableType\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Gets the human-friendly printable type name for the given value, for instance it will yield\n * `array` instead of `object`, as the native `typeof` operator would do.\n */\nconst getPrintableType = (value: unknown): string => {\n const nativeType = typeof value;\n\n if (nativeType === 'object') {\n if (value === null) return 'null';\n if (Array.isArray(value)) return 'array';\n if (value instanceof Object && value.constructor.name !== 'Object') {\n return value.constructor.name;\n }\n }\n\n return nativeType;\n};\n\nexport { Router };\nexport type { MenuItem, StrapiAppSettingLink, UnloadedSettingsLink, StrapiAppSetting, RouteObject };\n","import {\n configureStore,\n StoreEnhancer,\n Middleware,\n Reducer,\n combineReducers,\n MiddlewareAPI,\n isRejected,\n} from '@reduxjs/toolkit';\n\nimport { reducer as appReducer, AppState, logout } from '../../reducer';\nimport { adminApi } from '../../services/api';\n\n/**\n * @description Static reducers are ones we know, they live in the admin package.\n */\nconst staticReducers = {\n [adminApi.reducerPath]: adminApi.reducer,\n admin_app: appReducer,\n} as const;\n\nconst injectReducerStoreEnhancer: (appReducers: Record<string, Reducer>) => StoreEnhancer =\n (appReducers) =>\n (next) =>\n (...args) => {\n const store = next(...args);\n\n const asyncReducers: Record<string, Reducer> = {};\n\n return {\n ...store,\n asyncReducers,\n injectReducer: (key: string, asyncReducer: Reducer) => {\n asyncReducers[key] = asyncReducer;\n store.replaceReducer(\n // @ts-expect-error we dynamically add reducers which makes the types uncomfortable.\n combineReducers({\n ...appReducers,\n ...asyncReducers,\n })\n );\n },\n };\n };\n\ntype PreloadState = Partial<{\n admin_app: AppState;\n}>;\n\n/**\n * @description This is the main store configuration function, injected Reducers use our legacy app.addReducer API,\n * which we're trying to phase out. App Middlewares could potentially be improved...?\n */\nconst configureStoreImpl = (\n preloadedState: PreloadState = {},\n appMiddlewares: Array<() => Middleware> = [],\n injectedReducers: Record<string, Reducer> = {}\n) => {\n const coreReducers = { ...staticReducers, ...injectedReducers } as const;\n\n const defaultMiddlewareOptions = {} as any;\n\n // These are already disabled in 'production' env but we also need to disable it in test environments\n // However, we want to leave them on for development so any issues can still be caught\n if (process.env.NODE_ENV === 'test') {\n defaultMiddlewareOptions.serializableCheck = false;\n defaultMiddlewareOptions.immutableCheck = false;\n }\n\n const store = configureStore({\n preloadedState: {\n admin_app: preloadedState.admin_app,\n },\n reducer: coreReducers,\n devTools: process.env.NODE_ENV !== 'production',\n middleware: (getDefaultMiddleware) => [\n ...getDefaultMiddleware(defaultMiddlewareOptions),\n rtkQueryUnauthorizedMiddleware,\n adminApi.middleware,\n ...appMiddlewares.map((m) => m()),\n ],\n enhancers: [injectReducerStoreEnhancer(coreReducers)],\n });\n\n return store;\n};\n\nconst rtkQueryUnauthorizedMiddleware: Middleware =\n ({ dispatch }: MiddlewareAPI) =>\n (next) =>\n (action) => {\n // isRejectedWithValue Or isRejected\n if (isRejected(action) && action.payload?.status === 401) {\n dispatch(logout());\n window.location.href = '/admin/auth/login';\n return;\n }\n\n return next(action);\n };\n\ntype Store = ReturnType<typeof configureStoreImpl> & {\n asyncReducers: Record<string, Reducer>;\n injectReducer: (key: string, asyncReducer: Reducer) => void;\n};\n\ntype RootState = ReturnType<Store['getState']>;\n\ntype Dispatch = Store['dispatch'];\n\nexport { configureStoreImpl as configureStore };\nexport type { RootState, Dispatch, AppState, Store, PreloadState };\n","export const getBasename = () => (process.env.ADMIN_PATH ?? '').replace(window.location.origin, '');\n","/* eslint-disable no-await-in-loop */\n/* eslint-disable no-restricted-syntax */\n\nimport type { Store } from '../store/configure';\n\nexport type Handler = (...args: any[]) => any;\n\nexport const createHook = () => {\n const _handlers: Handler[] = [];\n\n return {\n register(fn: Handler) {\n _handlers.push(fn);\n },\n delete(handler: Handler) {\n _handlers.splice(_handlers.indexOf(handler), 1);\n },\n runWaterfall<T>(args: T, store?: Store) {\n return _handlers.reduce((acc, fn) => fn(acc, store), args);\n },\n async runWaterfallAsync<T>(args: T, store?: Store) {\n let result = args;\n\n for (const fn of _handlers) {\n result = await fn(result, store);\n }\n\n return result;\n },\n runSeries<T extends any[]>(...args: T) {\n return _handlers.map((fn) => fn(...args));\n },\n async runSeriesAsync<T extends any[]>(...args: T) {\n const result = [];\n\n for (const fn of _handlers) {\n result.push(await fn(...args));\n }\n\n return result;\n },\n runParallel<T extends any[]>(...args: T) {\n return Promise.all(\n _handlers.map((fn) => {\n return fn(...args);\n })\n );\n },\n };\n};\n","export const languageNativeNames = {\n ar: 'العربية',\n ca: 'Català',\n cs: 'Čeština',\n de: 'Deutsch',\n dk: 'Dansk',\n en: 'English',\n 'en-GB': 'English (United Kingdom)',\n es: 'Español',\n eu: 'Euskara',\n fr: 'Français',\n gu: 'Gujarati',\n he: 'עברית',\n hu: 'Magyar',\n id: 'Indonesian',\n it: 'Italiano',\n ja: '日本語',\n ko: '한국어',\n ml: 'Malayalam',\n ms: 'Melayu',\n nl: 'Nederlands',\n no: 'Norwegian',\n pl: 'Polski',\n 'pt-BR': 'Português (Brasil)',\n pt: 'Português (Portugal)',\n ru: 'Русский',\n sk: 'Slovenčina',\n sv: 'Swedish',\n th: 'ไทย',\n tr: 'Türkçe',\n uk: 'Українська',\n vi: 'Tiếng Việt',\n 'zh-Hans': '中文 (简体)',\n zh: '中文 (繁體)',\n sa: 'संस्कृत',\n hi: 'हिन्दी',\n} as const;\n","import * as React from 'react';\n\nimport { darkTheme, lightTheme } from '@strapi/design-system';\nimport invariant from 'invariant';\nimport isFunction from 'lodash/isFunction';\nimport merge from 'lodash/merge';\nimport pick from 'lodash/pick';\nimport { RouterProvider } from 'react-router-dom';\nimport { DefaultTheme } from 'styled-components';\n\nimport { ADMIN_PERMISSIONS_EE } from '../../ee/admin/src/constants';\n\nimport Logo from './assets/images/logo-strapi-2022.svg';\nimport { ADMIN_PERMISSIONS_CE, HOOKS } from './constants';\nimport { CustomFields } from './core/apis/CustomFields';\nimport { Plugin, PluginConfig } from './core/apis/Plugin';\nimport { RBAC, RBACMiddleware } from './core/apis/rbac';\nimport { Router, StrapiAppSetting, UnloadedSettingsLink } from './core/apis/router';\nimport { RootState, Store, configureStore } from './core/store/configure';\nimport { getBasename } from './core/utils/basename';\nimport { Handler, createHook } from './core/utils/createHook';\nimport {\n THEME_LOCAL_STORAGE_KEY,\n LANGUAGE_LOCAL_STORAGE_KEY,\n ThemeName,\n getStoredToken,\n} from './reducer';\nimport { getInitialRoutes } from './router';\nimport { languageNativeNames } from './translations/languageNativeNames';\n\nimport type { ReducersMapObject, Middleware } from '@reduxjs/toolkit';\n\nconst {\n INJECT_COLUMN_IN_TABLE,\n MUTATE_COLLECTION_TYPES_LINKS,\n MUTATE_EDIT_VIEW_LAYOUT,\n MUTATE_SINGLE_TYPES_LINKS,\n} = HOOKS;\n\ninterface StrapiAppConstructorArgs extends Partial<Pick<StrapiApp, 'appPlugins'>> {\n config?: {\n auth?: { logo: string };\n head?: { favicon: string };\n locales?: string[];\n menu?: { logo: string };\n notifications?: { releases: boolean };\n theme?: { light: DefaultTheme; dark: DefaultTheme };\n translations?: Record<string, Record<string, string>>;\n tutorials?: boolean;\n };\n}\n\ntype Translation = { data: Record<string, string>; locale: string };\ntype Translations = Array<Translation>;\n\ninterface StrapiAppPlugin {\n bootstrap?: (\n args: Pick<StrapiApp, 'addSettingsLink' | 'addSettingsLinks' | 'getPlugin' | 'registerHook'>\n ) => void;\n register: (app: StrapiApp) => void;\n registerTrads?: (args: { locales: string[] }) => Promise<Translations>;\n}\n\ninterface InjectionZoneComponent {\n Component: React.ComponentType;\n name: string;\n // TODO: in theory this could receive and forward any React component prop\n // but in practice there only seems to be once instance, where `slug` is\n // forwarded. The type needs to become either more generic or we disallow\n // prop spreading and offer a different way to access context data.\n slug: string;\n}\n\ninterface Component {\n name: string;\n Component: React.ComponentType;\n}\n\ninterface Field {\n type: string;\n Component: React.ComponentType;\n}\n\ninterface Library {\n fields: Record<Field['type'], Field['Component']>;\n components: Record<Component['name'], Component['Component']>;\n}\n\nclass StrapiApp {\n appPlugins: Record<string, StrapiAppPlugin>;\n plugins: Record<string, Plugin> = {};\n hooksDict: Record<string, ReturnType<typeof createHook>> = {};\n\n admin = {\n injectionZones: {},\n };\n\n translations: StrapiApp['configurations']['translations'] = {};\n\n configurations = {\n authLogo: Logo,\n head: { favicon: '' },\n locales: ['en'],\n menuLogo: Logo,\n notifications: { releases: true },\n themes: { light: lightTheme, dark: darkTheme },\n translations: {},\n tutorials: true,\n };\n\n /**\n * APIs\n */\n rbac = new RBAC();\n router: Router;\n library: Library = {\n components: {},\n fields: {},\n };\n middlewares: Array<() => Middleware<object, RootState>> = [];\n reducers: ReducersMapObject = {};\n store: Store | null = null;\n customFields = new CustomFields();\n\n constructor({ config, appPlugins }: StrapiAppConstructorArgs = {}) {\n this.appPlugins = appPlugins || {};\n\n this.createCustomConfigurations(config ?? {});\n\n this.createHook(INJECT_COLUMN_IN_TABLE);\n this.createHook(MUTATE_COLLECTION_TYPES_LINKS);\n this.createHook(MUTATE_SINGLE_TYPES_LINKS);\n this.createHook(MUTATE_EDIT_VIEW_LAYOUT);\n\n this.router = new Router(getInitialRoutes());\n }\n\n addComponents = (components: Component | Component[]) => {\n if (Array.isArray(components)) {\n components.map((comp) => {\n invariant(comp.Component, 'A Component must be provided');\n invariant(comp.name, 'A type must be provided');\n\n this.library.components[comp.name] = comp.Component;\n });\n } else {\n invariant(components.Component, 'A Component must be provided');\n invariant(components.name, 'A type must be provided');\n\n this.library.components[components.name] = components.Component;\n }\n };\n\n addFields = (fields: Field | Field[]) => {\n if (Array.isArray(fields)) {\n fields.map((field) => {\n invariant(field.Component, 'A Component must be provided');\n invariant(field.type, 'A type must be provided');\n\n this.library.fields[field.type] = field.Component;\n });\n } else {\n invariant(fields.Component, 'A Component must be provided');\n invariant(fields.type, 'A type must be provided');\n\n this.library.fields[fields.type] = fields.Component;\n }\n };\n\n addMiddlewares = (middlewares: StrapiApp['middlewares']) => {\n middlewares.forEach((middleware) => {\n this.middlewares.push(middleware);\n });\n };\n\n addRBACMiddleware = (m: RBACMiddleware | RBACMiddleware[]) => {\n if (Array.isArray(m)) {\n this.rbac.use(m);\n } else {\n this.rbac.use(m);\n }\n };\n\n addReducers = (reducers: ReducersMapObject) => {\n /**\n * TODO: when we upgrade to redux-toolkit@2 and we can also dynamically add middleware,\n * we'll deprecate these two APIs in favour of their hook counterparts.\n */\n Object.entries(reducers).forEach(([name, reducer]) => {\n this.reducers[name] = reducer;\n });\n };\n\n addMenuLink = (link: Parameters<typeof this.router.addMenuLink>[0]) =>\n this.router.addMenuLink(link);\n\n /**\n * @deprecated use `addSettingsLink` instead, it internally supports\n * adding multiple links at once.\n */\n addSettingsLinks = (sectionId: string, links: UnloadedSettingsLink[]) => {\n invariant(Array.isArray(links), 'TypeError expected links to be an array');\n\n this.router.addSettingsLink(sectionId, links);\n };\n\n /**\n * @deprecated use `addSettingsLink` instead, you can pass a section object to\n * create the section and links at the same time.\n */\n createSettingSection = (\n section: Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n links: UnloadedSettingsLink[]\n ) => this.router.addSettingsLink(section, links);\n\n addSettingsLink = (\n sectionId: string | Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n link: UnloadedSettingsLink\n ) => {\n this.router.addSettingsLink(sectionId, link);\n };\n\n async bootstrap(customBootstrap?: unknown) {\n Object.keys(this.appPlugins).forEach((plugin) => {\n const bootstrap = this.appPlugins[plugin].bootstrap;\n\n if (bootstrap) {\n bootstrap({\n addSettingsLink: this.addSettingsLink,\n addSettingsLinks: this.addSettingsLinks,\n getPlugin: this.getPlugin,\n registerHook: this.registerHook,\n });\n }\n });\n\n if (isFunction(customBootstrap)) {\n customBootstrap({\n addComponents: this.addComponents,\n addFields: this.addFields,\n addMenuLink: this.addMenuLink,\n addReducers: this.addReducers,\n addSettingsLink: this.addSettingsLink,\n addSettingsLinks: this.addSettingsLinks,\n getPlugin: this.getPlugin,\n registerHook: this.registerHook,\n });\n }\n }\n\n createCustomConfigurations = (customConfig: NonNullable<StrapiAppConstructorArgs['config']>) => {\n if (customConfig.locales) {\n this.configurations.locales = [\n 'en',\n ...(customConfig.locales?.filter((loc) => loc !== 'en') || []),\n ];\n }\n\n if (customConfig.auth?.logo) {\n this.configurations.authLogo = customConfig.auth.logo;\n }\n\n if (customConfig.menu?.logo) {\n this.configurations.menuLogo = customConfig.menu.logo;\n }\n\n if (customConfig.head?.favicon) {\n this.configurations.head.favicon = customConfig.head.favicon;\n }\n\n if (customConfig.theme) {\n const darkTheme = customConfig.theme.dark;\n const lightTheme = customConfig.theme.light;\n\n if (!darkTheme && !lightTheme) {\n console.warn(\n `[deprecated] In future versions, Strapi will stop supporting this theme customization syntax. The theme configuration accepts a light and a dark key to customize each theme separately. See https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#theme-extension.`.trim()\n );\n merge(this.configurations.themes.light, customConfig.theme);\n }\n\n if (lightTheme) merge(this.configurations.themes.light, lightTheme);\n\n if (darkTheme) merge(this.configurations.themes.dark, darkTheme);\n }\n\n if (customConfig.notifications?.releases !== undefined) {\n this.configurations.notifications.releases = customConfig.notifications.releases;\n }\n\n if (customConfig.tutorials !== undefined) {\n this.configurations.tutorials = customConfig.tutorials;\n }\n };\n\n createHook = (name: string) => {\n this.hooksDict[name] = createHook();\n };\n\n getAdminInjectedComponents = (\n moduleName: string,\n containerName: string,\n blockName: string\n ): InjectionZoneComponent[] => {\n try {\n // @ts-expect-error – we have a catch block so if you don't pass it correctly we still return an array.\n return this.admin.injectionZones[moduleName][containerName][blockName] || [];\n } catch (err) {\n console.error('Cannot get injected component', err);\n\n return [];\n }\n };\n\n getPlugin = (pluginId: PluginConfig['id']) => this.plugins[pluginId];\n\n async register(customRegister?: unknown) {\n Object.keys(this.appPlugins).forEach((plugin) => {\n this.appPlugins[plugin].register(this);\n });\n\n if (isFunction(customRegister)) {\n customRegister(this);\n }\n }\n\n async loadAdminTrads() {\n const adminLocales = await Promise.all(\n this.configurations.locales.map(async (locale) => {\n try {\n const { default: data } = await import(`./translations/${locale}.js`);\n\n return { data, locale };\n } catch {\n try {\n const { default: data } = await import(`./translations/${locale}.json`);\n return { data, locale };\n } catch {\n return { data: null, locale };\n }\n }\n })\n );\n\n return adminLocales.reduce<{ [locale: string]: Record<string, string> }>((acc, current) => {\n if (current.data) {\n acc[current.locale] = current.data;\n }\n\n return acc;\n }, {});\n }\n\n /**\n * Load the application's translations and merged the custom translations\n * with the default ones.\n */\n async loadTrads(customTranslations: Record<string, Record<string, string>> = {}) {\n const adminTranslations = await this.loadAdminTrads();\n\n const arrayOfPromises = Object.keys(this.appPlugins)\n .map((plugin) => {\n const registerTrads = this.appPlugins[plugin].registerTrads;\n\n if (registerTrads) {\n return registerTrads({ locales: this.configurations.locales });\n }\n\n return null;\n })\n .filter((a) => a);\n\n const pluginsTrads = (await Promise.all(arrayOfPromises)) as Array<Translation[]>;\n const mergedTrads = pluginsTrads.reduce<{ [locale: string]: Translation['data'] }>(\n (acc, currentPluginTrads) => {\n const pluginTrads = currentPluginTrads.reduce<{ [locale: string]: Translation['data'] }>(\n (acc1, current) => {\n acc1[current.locale] = current.data;\n\n return acc1;\n },\n {}\n );\n\n Object.keys(pluginTrads).forEach((locale) => {\n acc[locale] = { ...acc[locale], ...pluginTrads[locale] };\n });\n\n return acc;\n },\n {}\n );\n\n const translations = this.configurations.locales.reduce<{\n [locale: string]: Translation['data'];\n }>((acc, current) => {\n acc[current] = {\n ...adminTranslations[current],\n ...(mergedTrads[current] || {}),\n ...(customTranslations[current] ?? {}),\n };\n\n return acc;\n }, {});\n\n this.configurations.translations = translations;\n\n return Promise.resolve();\n }\n\n registerHook = (name: string, fn: Handler) => {\n invariant(\n this.hooksDict[name],\n `The hook ${name} is not defined. You are trying to register a hook that does not exist in the application.`\n );\n this.hooksDict[name].register(fn);\n };\n\n registerPlugin = (pluginConf: PluginConfig) => {\n const plugin = new Plugin(pluginConf);\n\n this.plugins[plugin.pluginId] = plugin;\n };\n\n runHookSeries = (name: string, asynchronous = false) =>\n asynchronous ? this.hooksDict[name].runSeriesAsync() : this.hooksDict[name].runSeries();\n\n runHookWaterfall = <T,>(name: string, initialValue: T, store?: Store) => {\n return this.hooksDict[name].runWaterfall(initialValue, store);\n };\n\n runHookParallel = (name: string) => this.hooksDict[name].runParallel();\n\n render() {\n const localeNames = pick(languageNativeNames, this.configurations.locales || []);\n const locale = (localStorage.getItem(LANGUAGE_LOCAL_STORAGE_KEY) ||\n 'en') as keyof typeof localeNames;\n\n this.store = configureStore(\n {\n admin_app: {\n permissions: merge({}, ADMIN_PERMISSIONS_CE, ADMIN_PERMISSIONS_EE),\n theme: {\n availableThemes: [],\n currentTheme: (localStorage.getItem(THEME_LOCAL_STORAGE_KEY) || 'system') as ThemeName,\n },\n language: {\n locale: localeNames[locale] ? locale : 'en',\n localeNames,\n },\n token: getStoredToken(),\n },\n },\n this.middlewares,\n this.reducers\n ) as Store;\n\n const router = this.router.createRouter(this, {\n basename: getBasename(),\n });\n\n return <RouterProvider router={router} />;\n }\n}\n\nexport { StrapiApp };\nexport type { StrapiAppPlugin, StrapiAppConstructorArgs, InjectionZoneComponent };\n","/* eslint-disable no-undef */\nimport { createRoot } from 'react-dom/client';\n\nimport { StrapiApp, StrapiAppConstructorArgs } from './StrapiApp';\nimport { getFetchClient } from './utils/getFetchClient';\nimport { createAbsoluteUrl } from './utils/urls';\n\nimport type { Modules } from '@strapi/types';\n\ninterface RenderAdminArgs {\n customisations: {\n register?: (app: StrapiApp) => Promise<void> | void;\n bootstrap?: (app: StrapiApp) => Promise<void> | void;\n config?: StrapiAppConstructorArgs['config'];\n };\n plugins: StrapiAppConstructorArgs['appPlugins'];\n features?: Modules.Features.FeaturesService['config'];\n}\n\nconst renderAdmin = async (\n mountNode: HTMLElement | null,\n { plugins, customisations, features }: RenderAdminArgs\n) => {\n if (!mountNode) {\n throw new Error('[@strapi/admin]: Could not find the root element to mount the admin app');\n }\n\n window.strapi = {\n /**\n * This ENV variable is passed from the strapi instance, by default no url is set\n * in the config and therefore the instance returns you an empty string so URLs are relative.\n *\n * To ensure that the backendURL is always set, we use the window.location.origin as a fallback.\n */\n backendURL: createAbsoluteUrl(process.env.STRAPI_ADMIN_BACKEND_URL),\n isEE: false,\n telemetryDisabled: process.env.STRAPI_TELEMETRY_DISABLED === 'true',\n future: {\n isEnabled: (name: keyof NonNullable<Modules.Features.FeaturesConfig['future']>) => {\n return features?.future?.[name] === true;\n },\n },\n // @ts-expect-error – there's pollution from the global scope of Node.\n features: {\n SSO: 'sso',\n AUDIT_LOGS: 'audit-logs',\n REVIEW_WORKFLOWS: 'review-workflows',\n /**\n * If we don't get the license then we know it's not EE\n * so no feature is enabled.\n */\n isEnabled: () => false,\n },\n projectType: 'Community',\n flags: {\n nps: false,\n promoteEE: true,\n },\n };\n\n const { get } = getFetchClient();\n\n interface ProjectType extends Pick<Window['strapi'], 'flags'> {\n isEE: boolean;\n features: {\n name: string;\n }[];\n }\n\n try {\n const {\n data: {\n data: { isEE, features, flags },\n },\n } = await get<{ data: ProjectType }>('/admin/project-type');\n\n window.strapi.isEE = isEE;\n window.strapi.flags = flags;\n window.strapi.features = {\n ...window.strapi.features,\n isEnabled: (featureName) => features.some((feature) => feature.name === featureName),\n };\n window.strapi.projectType = isEE ? 'Enterprise' : 'Community';\n } catch (err) {\n /**\n * If this fails, we simply don't activate any EE features.\n * Should we warn clearer in the UI?\n */\n console.error(err);\n }\n\n const app = new StrapiApp({\n config: customisations?.config,\n appPlugins: plugins,\n });\n\n await app.register(customisations?.register);\n await app.bootstrap(customisations?.bootstrap);\n await app.loadTrads(customisations?.config?.translations);\n\n createRoot(mountNode).render(app.render());\n\n if (\n typeof module !== 'undefined' &&\n module &&\n 'hot' in module &&\n typeof module.hot === 'object' &&\n module.hot !== null &&\n 'accept' in module.hot &&\n typeof module.hot.accept === 'function'\n ) {\n module.hot.accept();\n }\n\n if (typeof import.meta.hot?.accept === 'function') {\n import.meta.hot.accept();\n }\n};\n\nexport { renderAdmin };\nexport type { RenderAdminArgs };\n","import * as React from 'react';\n\nimport { Button, ButtonProps, Dialog } from '@strapi/design-system';\nimport { WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\n/* -------------------------------------------------------------------------------------------------\n * ConfirmDialog\n * -----------------------------------------------------------------------------------------------*/\ninterface ConfirmDialogProps extends Pick<ButtonProps, 'variant'>, Pick<Dialog.BodyProps, 'icon'> {\n onConfirm?: (e?: React.MouseEvent<HTMLButtonElement>) => Promise<void> | void;\n children?: React.ReactNode;\n endAction?: React.ReactNode;\n startAction?: React.ReactNode;\n title?: React.ReactNode;\n}\n\n/**\n * @beta\n * @public\n * @description A simple confirm dialog that out of the box can be used to confirm an action.\n * The component can additionally be customised if required e.g. the footer actions can be\n * completely replaced, but cannot be removed. Passing a string as the children prop will render\n * the string as the body of the dialog. If you need more control over the body, you can pass a\n * custom component as the children prop.\n * @example\n * ```tsx\n * import { Dialog } from '@strapi/design-system';\n *\n * const DeleteAction = ({ id }) => {\n * const [isOpen, setIsOpen] = React.useState(false);\n *\n * const [delete] = useDeleteMutation()\n * const handleConfirm = async () => {\n * await delete(id)\n * setIsOpen(false)\n * }\n *\n * return (\n * <Dialog.Root open={isOpen} onOpenChange={setIsOpen}>\n * <Dialog.Trigger>\n * <Button>Delete</Button>\n * </Dialog.Trigger>\n * <ConfirmDialog onConfirm={handleConfirm} />\n * </Dialog.Root>\n * )\n * }\n * ```\n */\nconst ConfirmDialog = ({\n children,\n icon = <StyledWarning />,\n onConfirm,\n variant = 'danger-light',\n startAction,\n endAction,\n title,\n}: ConfirmDialogProps) => {\n const { formatMessage } = useIntl();\n const [isConfirming, setIsConfirming] = React.useState(false);\n\n const content =\n children ||\n formatMessage({\n id: 'app.confirm.body',\n defaultMessage: 'Are you sure?',\n });\n\n const handleConfirm = async (e: React.MouseEvent<HTMLButtonElement>) => {\n if (!onConfirm) {\n return;\n }\n\n try {\n setIsConfirming(true);\n await onConfirm(e);\n } finally {\n setIsConfirming(false);\n }\n };\n\n return (\n <Dialog.Content>\n <Dialog.Header>\n {title ||\n formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n })}\n </Dialog.Header>\n <Dialog.Body icon={icon}>{content}</Dialog.Body>\n <Dialog.Footer>\n {startAction || (\n <Dialog.Cancel>\n <Button\n fullWidth\n variant=\"tertiary\"\n onClick={(e) => {\n e.stopPropagation();\n }}\n >\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Dialog.Cancel>\n )}\n {endAction || (\n <Dialog.Action>\n <Button fullWidth onClick={handleConfirm} variant={variant} loading={isConfirming}>\n {formatMessage({\n id: 'app.components.Button.confirm',\n defaultMessage: 'Confirm',\n })}\n </Button>\n </Dialog.Action>\n )}\n </Dialog.Footer>\n </Dialog.Content>\n );\n};\n\nconst StyledWarning = styled(WarningCircle)`\n width: 24px;\n height: 24px;\n\n path {\n fill: ${({ theme }) => theme.colors.danger600};\n }\n`;\n\nexport { ConfirmDialog };\nexport type { ConfirmDialogProps };\n","import * as React from 'react';\n\nconst useIsMounted = () => {\n const isMounted = React.useRef(false);\n\n React.useLayoutEffect(() => {\n isMounted.current = true;\n\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return isMounted;\n};\n\nexport { useIsMounted };\n","import * as React from 'react';\n\nimport { useIsMounted } from './useIsMounted';\n\n/**\n * @internal\n * @description Return a function that re-renders this component, if still mounted\n * @warning DO NOT USE EXCEPT SPECIAL CASES.\n */\nconst useForceUpdate = () => {\n const [tick, update] = React.useState<number>();\n const isMounted = useIsMounted();\n\n const forceUpdate = React.useCallback(() => {\n if (isMounted.current) {\n update(Math.random());\n }\n }, [isMounted, update]);\n\n return [tick, forceUpdate] as const;\n};\n\nexport { useForceUpdate };\n","import { useMemo } from 'react';\n\nimport throttle from 'lodash/throttle';\n\ntype ThrottleSettings = Parameters<typeof throttle>[2];\n\n/**\n * @internal\n * @description Create a throttled version of a callback\n * @example\n * ```tsx\n * // First create a callback using React’s `useCallback` hook\n * const myCallback = useCallback(() => {\n * // this is not throttled\n * }, [])\n *\n * // Then make a throttled version using the `useThrottledCallback` hook\n * const myThrottledCallback = useThrottledCallback(myCallback, 100)\n *\n * // Call the throttled callback\n * <Button onClick={myThrottledCallback} />\n * ```\n */\nconst useThrottledCallback = <T extends (...args: any[]) => any>(\n callback: T,\n wait: number,\n options: ThrottleSettings\n): T => {\n const throttledCallback = useMemo(\n () => throttle(callback, wait, options) as unknown as T,\n [callback, options, wait]\n );\n\n return throttledCallback;\n};\n\nexport { useThrottledCallback };\n","/* -------------------------------------------------------------------------------------------------\n * requestIdleCallbackShim\n * -----------------------------------------------------------------------------------------------*/\nconst requestIdleCallbackShim: Window['requestIdleCallback'] = (callback) => {\n const start = Date.now();\n\n return setTimeout(() => {\n callback({\n didTimeout: false,\n timeRemaining() {\n return Math.max(0, Date.now() - start);\n },\n });\n }, 1) as unknown as ReturnType<Window['requestIdleCallback']>;\n};\n\nconst _requestIdleCallback =\n typeof requestIdleCallback === 'undefined' ? requestIdleCallbackShim : requestIdleCallback;\n\n/* -------------------------------------------------------------------------------------------------\n * cancelIdleCallbackShim\n * -----------------------------------------------------------------------------------------------*/\nconst cancelIdleCallbackShim: Window['cancelIdleCallback'] = (handle: unknown) => {\n return clearTimeout(handle as any);\n};\n\nconst _cancelIdleCallback =\n typeof cancelIdleCallback === 'undefined' ? cancelIdleCallbackShim : cancelIdleCallback;\n\nexport { _requestIdleCallback as requestIdleCallback };\nexport { _cancelIdleCallback as cancelIdleCallback };\n","/**\n * This component will render DescriptionComponents that return objects e.g. `cm.apis.addEditViewPanel`\n * these descriptions are still treated like components because users can use react hooks in them.\n *\n * Rendering them normally by mapping etc. causes mutliple render issues.\n */\n\nimport * as React from 'react';\n\nimport isEqual from 'lodash/isEqual';\n\nimport { useForceUpdate } from '../hooks/useForceUpdate';\nimport { useThrottledCallback } from '../hooks/useThrottledCallback';\nimport { cancelIdleCallback, requestIdleCallback } from '../utils/shims';\n\ninterface DescriptionComponent<Props, Description> {\n (props: Props): Description | null;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * DescriptionComponentRenderer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DescriptionComponentRendererProps<Props = any, Description = any> {\n children: (descriptions: Array<Description & { id: string }>) => React.ReactNode;\n descriptions: DescriptionComponent<Props, Description>[];\n props: Props;\n}\n\n/**\n * @internal\n *\n * @description This component takes an array of DescriptionComponents, which are react components that return objects as opposed to JSX.\n * We render these in their own isolated memoized component and use an update function to push the data back out to the parent.\n * Saving it in a ref, and then \"forcing\" an update of the parent component to render the children of this component with the new data.\n *\n * The DescriptionCompoonents can take props and use react hooks hence why we render them as if they were a component. The update\n * function is throttled and managed to avoid erroneous updates where we could wait a single tick to update the entire UI, which\n * creates less \"popping\" from functions being called in rapid succession.\n */\nconst DescriptionComponentRenderer = <Props, Description>({\n children,\n props,\n descriptions,\n}: DescriptionComponentRendererProps<Props, Description>) => {\n const statesRef = React.useRef<Record<string, { value: Description & { id: string } }>>({});\n const [tick, forceUpdate] = useForceUpdate();\n\n const requestHandle = React.useRef<number | null>(null);\n const requestUpdate = React.useCallback(() => {\n if (requestHandle.current) {\n cancelIdleCallback(requestHandle.current);\n }\n\n requestHandle.current = requestIdleCallback(() => {\n requestHandle.current = null;\n\n forceUpdate();\n });\n }, [forceUpdate]);\n\n /**\n * This will avoid us calling too many react updates in a short space of time.\n */\n const throttledRequestUpdate = useThrottledCallback(requestUpdate, 60, { trailing: true });\n\n const update = React.useCallback<DescriptionProps<Props, Description>['update']>(\n (id, description) => {\n if (description === null) {\n delete statesRef.current[id];\n } else {\n const current = statesRef.current[id];\n statesRef.current[id] = { ...current, value: { ...description, id } };\n }\n\n throttledRequestUpdate();\n },\n [throttledRequestUpdate]\n );\n\n const ids = React.useMemo(\n () => descriptions.map((description) => getCompId(description)),\n [descriptions]\n );\n\n const states = React.useMemo(\n () =>\n ids\n .map((id) => statesRef.current[id]?.value)\n .filter((state) => state !== null && state !== undefined),\n /**\n * we leave tick in the deps to ensure the memo is recalculated when the `update` function is called.\n * the `ids` will most likely be stable unless we get new actions, but we can't respond to the Description\n * Component changing the ref data in any other way.\n */\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [ids, tick]\n );\n\n return (\n <>\n {descriptions.map((description) => {\n const key = getCompId(description);\n return (\n <Description key={key} id={key} description={description} props={props} update={update} />\n );\n })}\n {children(states)}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Description\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DescriptionProps<Props, Description> {\n description: DescriptionComponent<Props, Description>;\n id: string;\n props: Props;\n update: (id: string, value: Description | null) => void;\n}\n\n/**\n * Descriptions are objects, but to create the object, we allow users to create components,\n * this means they can use react hooks in them. It also means we need to render them\n * within a component, however because they return an object of data we can't add that\n * to the react tree, instead we push it back out to the parent.\n */\nconst Description = React.memo(\n ({ description, id, props, update }: DescriptionProps<any, any>) => {\n const comp = description(props);\n\n useShallowCompareEffect(() => {\n update(id, comp);\n\n return () => {\n update(id, null);\n };\n }, comp);\n\n return null;\n },\n (prev, next) => isEqual(prev.props, next.props)\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Helpers\n * -----------------------------------------------------------------------------------------------*/\n\nconst ids = new WeakMap<DescriptionComponent<any, any>, string>();\n\nlet counter = 0;\n\nfunction getCompId<T, K>(comp: DescriptionComponent<T, K>): string {\n const cachedId = ids.get(comp);\n\n if (cachedId) return cachedId;\n\n const id = `${comp.name || (comp as any).displayName || '<anonymous>'}-${counter++}`;\n\n ids.set(comp, id);\n\n return id;\n}\n\nconst useShallowCompareMemoize = <T,>(value: T): Array<T | undefined> => {\n const ref = React.useRef<T | undefined>(undefined);\n\n if (!isEqual(value, ref.current)) {\n ref.current = value;\n }\n\n return [ref.current];\n};\n\nconst useShallowCompareEffect = (callback: React.EffectCallback, dependencies?: unknown) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps -- the linter isn't able to see that deps are properly handled here\n React.useEffect(callback, useShallowCompareMemoize(dependencies));\n};\n\nexport { DescriptionComponentRenderer };\nexport type { DescriptionComponentRendererProps, DescriptionComponent };\n","import type { Modules } from '@strapi/types';\nimport type { MessageDescriptor } from 'react-intl';\n\n/**\n * @description designed to be parsed by formatMessage from react-intl\n * then passed to a Select component.\n */\ninterface FilterOption {\n value: Modules.EntityService.Params.Filters.Operator.Where;\n label: MessageDescriptor;\n}\n\n/**\n * @description these are shared by everyone\n */\nconst BASE_FILTERS = [\n {\n label: { id: 'components.FilterOptions.FILTER_TYPES.$eq', defaultMessage: 'is' },\n value: '$eq',\n },\n {\n label: { id: 'components.FilterOptions.FILTER_TYPES.$ne', defaultMessage: 'is not' },\n value: '$ne',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$null',\n defaultMessage: 'is null',\n },\n value: '$null',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$notNull',\n defaultMessage: 'is not null',\n },\n value: '$notNull',\n },\n] satisfies FilterOption[];\n\n/**\n * @description typically performed on attributes that are numerical incl. dates.\n */\nconst NUMERIC_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$gt',\n defaultMessage: 'is greater than',\n },\n value: '$gt',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$gte',\n defaultMessage: 'is greater than or equal to',\n },\n value: '$gte',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$lt',\n defaultMessage: 'is less than',\n },\n value: '$lt',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$lte',\n defaultMessage: 'is less than or equal to',\n },\n value: '$lte',\n },\n] satisfies FilterOption[];\n\nconst IS_SENSITIVE_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$eqi',\n defaultMessage: 'is (case insensitive)',\n },\n value: '$eqi',\n },\n\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$nei',\n defaultMessage: 'is not (case insensitive)',\n },\n value: '$nei',\n },\n] satisfies FilterOption[];\n\n/**\n * @description typically performed on attributes that are strings for partial looking.\n */\nconst CONTAINS_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$contains',\n defaultMessage: 'contains',\n },\n value: '$contains',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$containsi',\n defaultMessage: 'contains (case insensitive)',\n },\n value: '$containsi',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$notContains',\n defaultMessage: 'not contains',\n },\n value: '$notContains',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$notContainsi',\n defaultMessage: 'not contains (case insensitive)',\n },\n value: '$notContainsi',\n },\n] satisfies FilterOption[];\n\n/**\n * @description only used on string attributes.\n */\nconst STRING_PARSE_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$startsWith',\n defaultMessage: 'starts with',\n },\n value: '$startsWith',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$startsWithi',\n defaultMessage: 'starts with (case insensitive)',\n },\n value: '$startsWithi',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$endsWith',\n defaultMessage: 'ends with',\n },\n value: '$endsWith',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$endsWithi',\n defaultMessage: 'ends with (case insensitive)',\n },\n value: '$endsWithi',\n },\n] satisfies FilterOption[];\n\nconst FILTERS_WITH_NO_VALUE = ['$null', '$notNull'];\n\nexport {\n BASE_FILTERS,\n NUMERIC_FILTERS,\n IS_SENSITIVE_FILTERS,\n CONTAINS_FILTERS,\n STRING_PARSE_FILTERS,\n FILTERS_WITH_NO_VALUE,\n};\nexport type { FilterOption };\n","import * as React from 'react';\n\nimport { useCallbackRef } from '@strapi/design-system';\n\ntype UseControllableStateParams<T> = {\n prop?: T | undefined;\n defaultProp?: T | undefined;\n onChange?: (state: T) => void;\n};\n\ntype SetStateFn<T> = (prevState?: T) => T;\n\nfunction useControllableState<T>({\n prop,\n defaultProp,\n onChange = () => {},\n}: UseControllableStateParams<T>) {\n const [uncontrolledProp, setUncontrolledProp] = useUncontrolledState({ defaultProp, onChange });\n const isControlled = prop !== undefined;\n const value = isControlled ? prop : uncontrolledProp;\n const handleChange = useCallbackRef(onChange);\n\n const setValue: React.Dispatch<React.SetStateAction<T | undefined>> = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const setter = nextValue as SetStateFn<T>;\n const value = typeof nextValue === 'function' ? setter(prop) : nextValue;\n if (value !== prop) handleChange(value as T);\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, handleChange]\n );\n\n return [value, setValue] as const;\n}\n\nfunction useUncontrolledState<T>({\n defaultProp,\n onChange,\n}: Omit<UseControllableStateParams<T>, 'prop'>) {\n const uncontrolledState = React.useState<T | undefined>(defaultProp);\n const [value] = uncontrolledState;\n const prevValueRef = React.useRef(value);\n const handleChange = useCallbackRef(onChange);\n\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n handleChange(value as T);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef, handleChange]);\n\n return uncontrolledState;\n}\n\nexport { useControllableState };\n","import * as React from 'react';\n\nimport { Box, Button, Flex, Popover, Tag } from '@strapi/design-system';\nimport { Plus, Filter as FilterIcon, Cross } from '@strapi/icons';\nimport { Schema } from '@strapi/types';\nimport { useIntl } from 'react-intl';\n\nimport {\n BASE_FILTERS,\n CONTAINS_FILTERS,\n FilterOption,\n IS_SENSITIVE_FILTERS,\n NUMERIC_FILTERS,\n STRING_PARSE_FILTERS,\n FILTERS_WITH_NO_VALUE,\n} from '../constants/filters';\nimport { useControllableState } from '../hooks/useControllableState';\nimport { useQueryParams } from '../hooks/useQueryParams';\n\nimport { createContext } from './Context';\nimport { Form, InputProps } from './Form';\nimport { InputRenderer } from './FormInputs/Renderer';\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FilterFormData {\n name: string;\n filter: string;\n value?: string;\n}\n\ninterface FitlersContextValue {\n disabled: boolean;\n onChange: (data: FilterFormData) => void;\n options: Filters.Filter[];\n setOpen: (open: boolean) => void;\n}\n\nconst [FiltersProvider, useFilters] = createContext<FitlersContextValue>('Filters');\n\ninterface RootProps extends Partial<FitlersContextValue>, Popover.Props {\n children: React.ReactNode;\n}\n\nconst Root = ({\n children,\n disabled = false,\n onChange,\n options = [],\n onOpenChange,\n open: openProp,\n defaultOpen,\n ...restProps\n}: RootProps) => {\n const handleChange = (data: FilterFormData) => {\n if (onChange) {\n onChange(data);\n }\n };\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen} {...restProps}>\n <FiltersProvider\n setOpen={setOpen}\n disabled={disabled}\n onChange={handleChange}\n options={options}\n >\n {children}\n </FiltersProvider>\n </Popover.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Trigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst Trigger = React.forwardRef<HTMLButtonElement, Filters.TriggerProps>(\n ({ label }, forwardedRef) => {\n const { formatMessage } = useIntl();\n const disabled = useFilters('Trigger', ({ disabled }) => disabled);\n\n return (\n <Popover.Trigger>\n <Button\n variant=\"tertiary\"\n ref={forwardedRef}\n startIcon={<FilterIcon />}\n size=\"S\"\n disabled={disabled}\n >\n {label || formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n </Popover.Trigger>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Popover\n * -----------------------------------------------------------------------------------------------*/\n\nconst PopoverImpl = () => {\n const [{ query }, setQuery] = useQueryParams<Filters.Query>();\n const { formatMessage } = useIntl();\n const options = useFilters('Popover', ({ options }) => options);\n const onChange = useFilters('Popover', ({ onChange }) => onChange);\n const setOpen = useFilters('Popover', ({ setOpen }) => setOpen);\n\n if (options.length === 0) {\n return null;\n }\n\n const handleSubmit = (data: FilterFormData) => {\n const value = FILTERS_WITH_NO_VALUE.includes(data.filter)\n ? 'true'\n : encodeURIComponent(data.value ?? '');\n\n if (!value) {\n return;\n }\n\n if (onChange) {\n onChange(data);\n }\n\n /**\n * There will ALWAYS be an option because we use the options to create the form data.\n */\n const fieldOptions = options.find((filter) => filter.name === data.name)!;\n\n /**\n * If the filter is a relation, we need to nest the filter object,\n * we filter based on the mainField of the relation, if there is no mainField, we use the id.\n * At the end, we pass the operator & value. This value _could_ look like:\n * ```json\n * {\n * \"$eq\": \"1\",\n * }\n * ```\n */\n const operatorValuePairing = {\n [data.filter]: value,\n };\n\n const newFilterQuery = {\n ...query.filters,\n $and: [\n ...(query.filters?.$and ?? []),\n {\n [data.name]:\n fieldOptions.type === 'relation'\n ? {\n [fieldOptions.mainField?.name ?? 'id']: operatorValuePairing,\n }\n : operatorValuePairing,\n },\n ],\n };\n\n setQuery({ filters: newFilterQuery, page: 1 });\n setOpen(false);\n };\n\n return (\n <Popover.Content>\n <Box padding={3}>\n <Form\n method=\"POST\"\n initialValues={\n {\n name: options[0]?.name,\n filter: BASE_FILTERS[0].value,\n } satisfies FilterFormData\n }\n onSubmit={handleSubmit}\n >\n {({ values: formValues, modified, isSubmitting }) => {\n const filter = options.find((filter) => filter.name === formValues.name);\n const Input = filter?.input || InputRenderer;\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2} style={{ minWidth: 184 }}>\n {[\n {\n ['aria-label']: formatMessage({\n id: 'app.utils.select-field',\n defaultMessage: 'Select field',\n }),\n name: 'name',\n options: options.map((filter) => ({\n label: filter.label,\n value: filter.name,\n })),\n placholder: formatMessage({\n id: 'app.utils.select-field',\n defaultMessage: 'Select field',\n }),\n type: 'enumeration' as const,\n },\n {\n ['aria-label']: formatMessage({\n id: 'app.utils.select-filter',\n defaultMessage: 'Select filter',\n }),\n name: 'filter',\n options:\n filter?.operators ||\n getFilterList(filter).map((opt) => ({\n label: formatMessage(opt.label),\n value: opt.value,\n })),\n placeholder: formatMessage({\n id: 'app.utils.select-filter',\n defaultMessage: 'Select filter',\n }),\n type: 'enumeration' as const,\n },\n ].map((field) => (\n <InputRenderer key={field.name} {...field} />\n ))}\n {filter &&\n formValues.filter &&\n formValues.filter !== '$null' &&\n formValues.filter !== '$notNull' ? (\n <Input\n {...filter}\n label={null}\n aria-label={filter.label}\n name=\"value\"\n // @ts-expect-error – if type is `custom` then `Input` will be a custom component.\n type={filter.mainField?.type ?? filter.type}\n />\n ) : null}\n <Button\n disabled={!modified || isSubmitting}\n size=\"L\"\n variant=\"secondary\"\n startIcon={<Plus />}\n type=\"submit\"\n fullWidth\n >\n {formatMessage({ id: 'app.utils.add-filter', defaultMessage: 'Add filter' })}\n </Button>\n </Flex>\n );\n }}\n </Form>\n </Box>\n </Popover.Content>\n );\n};\n\n/**\n * Depending on the selected field find the possible filters to apply\n */\nconst getFilterList = (filter?: Filters.Filter): FilterOption[] => {\n if (!filter) {\n return [];\n }\n\n const type = filter.mainField?.type ? filter.mainField.type : filter.type;\n\n switch (type) {\n case 'email':\n case 'text':\n case 'string': {\n return [\n ...BASE_FILTERS,\n ...IS_SENSITIVE_FILTERS,\n ...CONTAINS_FILTERS,\n ...STRING_PARSE_FILTERS,\n ];\n }\n\n case 'float':\n case 'integer':\n case 'biginteger':\n case 'decimal': {\n return [...BASE_FILTERS, ...NUMERIC_FILTERS];\n }\n case 'time':\n case 'date': {\n return [...BASE_FILTERS, ...NUMERIC_FILTERS, ...CONTAINS_FILTERS];\n }\n\n case 'datetime': {\n return [...BASE_FILTERS, ...NUMERIC_FILTERS];\n }\n\n case 'enumeration': {\n return BASE_FILTERS;\n }\n\n default:\n return [...BASE_FILTERS, ...IS_SENSITIVE_FILTERS];\n }\n};\n\n/* -------------------------------------------------------------------------------------------------\n * List\n * -----------------------------------------------------------------------------------------------*/\n\nconst List = () => {\n const [{ query }, setQuery] = useQueryParams<Filters.Query>();\n\n const options = useFilters('List', ({ options }) => options);\n\n const handleClick = (data: FilterFormData) => {\n /**\n * Check the name, operator and value to see if it already exists in the query\n * if it does, remove it.\n */\n const nextFilters = (query?.filters?.$and ?? []).filter((filter) => {\n const [attributeName] = Object.keys(filter);\n if (attributeName !== data.name) {\n return true;\n }\n\n const { type, mainField } = options.find(({ name }) => name === attributeName)!;\n\n if (type === 'relation') {\n const filterObj = filter[attributeName][mainField?.name ?? 'id'];\n\n if (typeof filterObj === 'object') {\n const [operator] = Object.keys(filterObj);\n const value = filterObj[operator];\n\n return !(operator === data.filter && value === data.value);\n }\n\n return true;\n } else {\n const filterObj = filter[attributeName];\n const [operator] = Object.keys(filterObj);\n const value = filterObj[operator];\n\n return !(operator === data.filter && value === data.value);\n }\n });\n\n setQuery({ filters: { $and: nextFilters }, page: 1 });\n };\n\n if (!query?.filters?.$and?.length) {\n return null;\n }\n\n return (\n <>\n {query?.filters?.$and?.map((queryFilter) => {\n const [attributeName] = Object.keys(queryFilter);\n const filter = options.find(({ name }) => name === attributeName);\n const filterObj = queryFilter[attributeName];\n\n if (!filter || typeof filterObj !== 'object' || filterObj === null) {\n return null;\n }\n\n if (filter.type === 'relation') {\n const modelFilter = filterObj[filter.mainField?.name ?? 'id'];\n\n if (typeof modelFilter === 'object') {\n const [operator] = Object.keys(modelFilter);\n const value = modelFilter[operator];\n return (\n <AttributeTag\n key={`${attributeName}-${operator}-${value}`}\n {...filter}\n onClick={handleClick}\n operator={operator}\n value={value}\n />\n );\n }\n\n return null;\n } else {\n const [operator] = Object.keys(filterObj);\n const value = filterObj[operator];\n\n /**\n * Something has gone wrong here, because the attribute is not a relation\n * but we have a nested filter object.\n */\n if (typeof value === 'object') {\n return null;\n }\n\n return (\n <AttributeTag\n key={`${attributeName}-${operator}-${value}`}\n {...filter}\n onClick={handleClick}\n operator={operator}\n value={value}\n />\n );\n }\n })}\n </>\n );\n};\n\ninterface AttributeTagProps extends Filters.Filter {\n onClick: (data: FilterFormData) => void;\n operator: string;\n value: string;\n}\n\nconst AttributeTag = ({\n input,\n label,\n mainField,\n name,\n onClick,\n operator,\n options,\n value,\n ...filter\n}: AttributeTagProps) => {\n const { formatMessage, formatDate, formatTime, formatNumber } = useIntl();\n\n const handleClick = () => {\n onClick({ name, value, filter: operator });\n };\n\n const type = mainField?.type ? mainField.type : filter.type;\n\n let formattedValue: string = value;\n\n switch (type) {\n case 'date':\n formattedValue = formatDate(value, { dateStyle: 'full' });\n break;\n case 'datetime':\n formattedValue = formatDate(value, { dateStyle: 'full', timeStyle: 'short' });\n break;\n case 'time':\n const [hour, minute] = value.split(':');\n const date = new Date();\n date.setHours(Number(hour));\n date.setMinutes(Number(minute));\n\n formattedValue = formatTime(date, {\n hour: 'numeric',\n minute: 'numeric',\n });\n break;\n case 'float':\n case 'integer':\n case 'biginteger':\n case 'decimal':\n formattedValue = formatNumber(Number(value));\n break;\n }\n\n // Handle custom input\n if (input && options) {\n // If the custom input has an options array, find the option with a customValue matching the query value\n const selectedOption = options.find((option) => {\n return (typeof option === 'string' ? option : option.value) === value;\n });\n\n formattedValue = selectedOption\n ? typeof selectedOption === 'string'\n ? selectedOption\n : (selectedOption.label ?? selectedOption.value)\n : value;\n }\n\n const content = `${label} ${formatMessage({\n id: `components.FilterOptions.FILTER_TYPES.${operator}`,\n defaultMessage: operator,\n })} ${operator !== '$null' && operator !== '$notNull' ? formattedValue : ''}`;\n\n return (\n <Tag padding={1} onClick={handleClick} icon={<Cross />}>\n {content}\n </Tag>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EXPORTS\n * -----------------------------------------------------------------------------------------------*/\n\nconst Filters = {\n List,\n Popover: PopoverImpl,\n Root,\n Trigger,\n};\n\ninterface MainField {\n name: string;\n type: Schema.Attribute.Kind | 'custom';\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Filters {\n export interface Filter {\n input?: React.ComponentType<ValueInputProps>;\n label: string;\n /**\n * the name of the attribute we use to display the actual name e.g. relations\n * are just ids, so we use the mainField to display something meaninginful by\n * looking at the target's schema\n */\n mainField?: MainField;\n name: string;\n operators?: Array<{\n label: string;\n value: string;\n }>;\n options?: Array<{ label?: string; value: string }> | string[];\n type: InputProps['type'] | 'relation' | 'custom';\n }\n\n export interface ValueInputProps extends Omit<Filter, 'label'> {\n ['aria-label']: string;\n }\n\n export type Props = RootProps;\n\n export interface TriggerProps {\n label?: string;\n }\n\n export interface Query {\n filters?: {\n /**\n * Typically, a filter will be:\n * ```ts\n * {\n * [attributeName]: {\n * [operator]: value\n * }\n * }\n * ```\n * However, for relation items it becomes more nested.\n * ```ts\n * {\n * [attributeName]: {\n * [relationTargetAttribute]: {\n * [operator]: value\n * }\n * }\n * }\n * ```\n */\n $and?: Array<Record<string, Record<string, string | Record<string, string>>>>;\n };\n page?: number;\n }\n}\n\nexport { Filters };\n","/* eslint-disable import/export */\nimport * as React from 'react';\n\nimport {\n Flex,\n SingleSelectOption,\n SingleSelect,\n Typography,\n Dots,\n NextLink,\n PageLink,\n Pagination as PaginationImpl,\n PreviousLink,\n} from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { useQueryParams } from '../hooks/useQueryParams';\n\nimport { createContext } from './Context';\n\nimport type { Pagination as PaginationApi } from '../../../shared/contracts/shared';\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\ninterface PaginationContextValue {\n /**\n * @description the complete query object, this could include query params\n * injected by other plugins, if you're navigating to a different page you\n * should ensure these are still passed.\n */\n currentQuery?: object;\n pageCount: string;\n pageSize: string;\n page: string;\n setPageSize: (pageSize: string) => void;\n total: NonNullable<RootProps['total']>;\n}\n\nconst [PaginationProvider, usePagination] = createContext<PaginationContextValue>('Pagination');\n\ninterface RootProps {\n children: React.ReactNode;\n /**\n * @default 0\n * @description the total number of pages\n * that exist in the dataset.\n */\n pageCount?: PaginationApi['pageCount'];\n /**\n * @default 1\n * @description the initial page number.\n */\n defaultPage?: PaginationApi['page'];\n /**\n * @default 10\n * @description the initial number of items to display\n */\n defaultPageSize?: PaginationApi['pageSize'];\n /**\n * @description a callback that is called when the page size changes.\n */\n onPageSizeChange?: (pageSize: string) => void;\n /**\n * @default 0\n * @description the total number of items in the dataset.\n */\n total?: PaginationApi['total'];\n}\n\n/**\n * @description The root component for the composable pagination component.\n * It's advised to spread the entire pagination option object into this component.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * return (\n * <Pagination.Root {...response.pagination}>\n * <Pagination.PageSize />\n * <Pagination.Links />\n * </Pagination.Root>\n * );\n * };\n * ```\n */\nconst Root = React.forwardRef<HTMLDivElement, RootProps>(\n (\n { children, defaultPageSize = 10, pageCount = 0, defaultPage = 1, onPageSizeChange, total = 0 },\n forwardedRef\n ) => {\n const [{ query }, setQuery] = useQueryParams<Pick<PaginationContextValue, 'page' | 'pageSize'>>(\n {\n pageSize: defaultPageSize.toString(),\n page: defaultPage.toString(),\n }\n );\n\n const setPageSize = (pageSize: string) => {\n setQuery({ pageSize, page: '1' });\n\n if (onPageSizeChange) {\n onPageSizeChange(pageSize);\n }\n };\n\n return (\n <Flex\n ref={forwardedRef}\n paddingTop={4}\n paddingBottom={4}\n alignItems=\"flex-end\"\n justifyContent=\"space-between\"\n >\n <PaginationProvider\n currentQuery={query}\n page={query.page}\n pageSize={query.pageSize}\n pageCount={pageCount.toString()}\n setPageSize={setPageSize}\n total={total}\n >\n {children}\n </PaginationProvider>\n </Flex>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * PageSize\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @description The page size component is responsible for rendering the select input that allows\n * the user to change the number of items displayed per page.\n * If the total number of items is less than the minimum option, this component will not render.\n */\nconst PageSize = ({ options = ['10', '20', '50', '100'] }: Pagination.PageSizeProps) => {\n const { formatMessage } = useIntl();\n\n const pageSize = usePagination('PageSize', (state) => state.pageSize);\n const totalCount = usePagination('PageSize', (state) => state.total);\n const setPageSize = usePagination('PageSize', (state) => state.setPageSize);\n\n const handleChange = (value: string) => {\n setPageSize(value);\n };\n\n const minimumOption = parseInt(options[0], 10);\n\n if (minimumOption >= totalCount) {\n return null;\n }\n\n return (\n <Flex gap={2}>\n <SingleSelect\n size=\"S\"\n aria-label={formatMessage({\n id: 'components.PageFooter.select',\n defaultMessage: 'Entries per page',\n })}\n // @ts-expect-error from the DS V2 this won't be needed because we're only returning strings.\n onChange={handleChange}\n value={pageSize}\n >\n {options.map((option) => (\n <SingleSelectOption key={option} value={option}>\n {option}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n <Typography textColor=\"neutral600\" tag=\"span\">\n {formatMessage({\n id: 'components.PageFooter.select',\n defaultMessage: 'Entries per page',\n })}\n </Typography>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Links\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * The component works as follows\n * `1` , 2, 3, ... 10\n * 1, `2`, 3, ... 10\n * 1, 2, `3`, 4, ... 10\n * 1, 2, 3, `4`, 5, ... 10\n * 1, ..,4, `5`, 6, ... 10\n *\n * 1, ...., 8, 9, `10`\n * 1, ...., 8, `9`, 10\n * 1, ...., 7, `8`, 9, 10\n * 1, ... 6, `7`, 8, 9, 10\n */\n\n/**\n * @description The links component is responsible for rendering the pagination links.\n * If the total number of pages is less than or equal to 1, this component will not render.\n */\nconst Links = ({ boundaryCount = 1, siblingCount = 1 }: Pagination.LinksProps) => {\n const { formatMessage } = useIntl();\n\n const query = usePagination('Links', (state) => state.currentQuery);\n const currentPage = usePagination('Links', (state) => state.page);\n const totalPages = usePagination('Links', (state) => state.pageCount);\n\n const pageCount = parseInt(totalPages, 10);\n const activePage = parseInt(currentPage, 10);\n\n const range = (start: number, end: number) => {\n const length = end - start + 1;\n\n return Array.from({ length }, (_, i) => start + i);\n };\n\n const startPages = range(1, Math.min(boundaryCount, pageCount));\n const endPages = range(Math.max(pageCount - boundaryCount + 1, boundaryCount + 1), pageCount);\n\n const siblingsStart = Math.max(\n Math.min(\n // Natural start\n activePage - siblingCount,\n // Lower boundary when page is high\n pageCount - boundaryCount - siblingCount * 2 - 1\n ),\n // Greater than startPages\n boundaryCount + 2\n );\n\n const siblingsEnd = Math.min(\n Math.max(\n // Natural end\n activePage + siblingCount,\n // Upper boundary when page is low\n boundaryCount + siblingCount * 2 + 2\n ),\n // Less than endPages\n endPages.length > 0 ? endPages[0] - 2 : pageCount - 1\n );\n\n const items = [\n ...startPages,\n\n // Start ellipsis\n // eslint-disable-next-line no-nested-ternary\n ...(siblingsStart > boundaryCount + 2\n ? ['start-ellipsis']\n : boundaryCount + 1 < pageCount - boundaryCount\n ? [boundaryCount + 1]\n : []),\n\n // Sibling pages\n ...range(siblingsStart, siblingsEnd),\n\n // End ellipsis\n // eslint-disable-next-line no-nested-ternary\n ...(siblingsEnd < pageCount - boundaryCount - 1\n ? ['end-ellipsis']\n : pageCount - boundaryCount > boundaryCount\n ? [pageCount - boundaryCount]\n : []),\n\n ...endPages,\n ];\n\n if (pageCount <= 1) {\n return null;\n }\n\n return (\n <PaginationImpl activePage={activePage} pageCount={pageCount}>\n <PreviousLink tag={Link} to={{ search: stringify({ ...query, page: activePage - 1 }) }}>\n {formatMessage({\n id: 'components.pagination.go-to-previous',\n defaultMessage: 'Go to previous page',\n })}\n </PreviousLink>\n {items.map((item) => {\n if (typeof item === 'number') {\n return (\n <PageLink\n tag={Link}\n key={item}\n number={item}\n to={{ search: stringify({ ...query, page: item }) }}\n >\n {formatMessage(\n { id: 'components.pagination.go-to', defaultMessage: 'Go to page {page}' },\n { page: item }\n )}\n </PageLink>\n );\n }\n\n return <Dots key={item} />;\n })}\n\n <NextLink tag={Link} to={{ search: stringify({ ...query, page: activePage + 1 }) }}>\n {formatMessage({\n id: 'components.pagination.go-to-next',\n defaultMessage: 'Go to next page',\n })}\n </NextLink>\n </PaginationImpl>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EXPORTS\n * -----------------------------------------------------------------------------------------------*/\n\nconst Pagination = {\n Root,\n Links,\n PageSize,\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Pagination {\n export interface Props extends RootProps {}\n\n export interface PageSizeProps {\n options?: string[];\n }\n\n export interface LinksProps {\n /**\n * @default 1\n * @description Number of always visible pages at the beginning and end.\n */\n boundaryCount?: number;\n /**\n * @default 1\n * @description Number of always visible pages before and after the current page.\n */\n siblingCount?: number;\n }\n}\n\nexport { Pagination };\n","import * as React from 'react';\n\nimport { IconButton, Searchbar, SearchForm } from '@strapi/design-system';\nimport { Search as SearchIcon } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { TrackingEvent, useTracking } from '../features/Tracking';\nimport { useQueryParams } from '../hooks/useQueryParams';\n\ninterface SearchInputProps {\n disabled?: boolean;\n label: string;\n placeholder?: string;\n trackedEvent?: TrackingEvent['name'] | null;\n trackedEventDetails?: TrackingEvent['properties'];\n}\n\nconst SearchInput = ({\n disabled,\n label,\n placeholder,\n trackedEvent,\n trackedEventDetails,\n}: SearchInputProps) => {\n const inputRef = React.useRef<HTMLInputElement>(null);\n const iconButtonRef = React.useRef<HTMLButtonElement>(null);\n\n const [{ query }, setQuery] = useQueryParams<{ _q: string; page?: number }>();\n\n const [value, setValue] = React.useState(query?._q || '');\n const [isOpen, setIsOpen] = React.useState(!!value);\n\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const handleToggle = () => setIsOpen((prev) => !prev);\n\n React.useLayoutEffect(() => {\n if (isOpen && inputRef.current) {\n inputRef.current.focus();\n }\n }, [isOpen]);\n\n const handleClear = () => {\n setValue('');\n setQuery({ _q: '' }, 'remove');\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n // Ensure value is a string\n if (value) {\n if (trackedEvent) {\n trackUsage(trackedEvent, trackedEventDetails);\n }\n setQuery({ _q: encodeURIComponent(value), page: 1 });\n } else {\n handleToggle();\n setQuery({ _q: '' }, 'remove');\n }\n };\n\n if (isOpen) {\n return (\n <SearchForm onSubmit={handleSubmit}>\n <Searchbar\n ref={inputRef}\n name=\"search\"\n onChange={(e) => setValue(e.target.value)}\n value={value}\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n onClear={handleClear}\n placeholder={placeholder}\n >\n {label}\n </Searchbar>\n </SearchForm>\n );\n }\n\n return (\n <IconButton\n ref={iconButtonRef}\n disabled={disabled}\n label={formatMessage({ id: 'global.search', defaultMessage: 'Search' })}\n onClick={handleToggle}\n >\n <SearchIcon />\n </IconButton>\n );\n};\n\nexport { SearchInput };\nexport type { SearchInputProps };\n","/**\n * TODO: honestly, half of this stuff should come straight from\n * the design-system and then we can just wrap round the bits for\n * the i18n & router interactions.\n *\n * So we'll do that in v2 of the DS.\n */\n\nimport * as React from 'react';\n\nimport {\n Flex,\n Typography,\n Th,\n Tbody,\n Td,\n Tooltip,\n IconButton,\n Thead,\n Tr,\n RawTrProps,\n Checkbox,\n Loader,\n Table as DSTable,\n EmptyStateLayout,\n EmptyStateLayoutProps,\n TableProps,\n RawTdProps,\n} from '@strapi/design-system';\nimport { CaretDown } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useControllableState } from '../hooks/useControllableState';\nimport { useQueryParams } from '../hooks/useQueryParams';\n\nimport { createContext } from './Context';\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BaseRow {\n id: string | number;\n [key: string]: any;\n}\n\ninterface TableHeader<TData = object, THeader = object> {\n /**\n * Typically used by plugins to render a custom cell\n */\n cellFormatter?: (data: TData, header: Omit<THeader, 'cellFormatter'>) => React.ReactNode;\n label: string;\n name: string;\n searchable?: boolean;\n sortable?: boolean;\n}\n\ninterface TableContextValue<TRow extends BaseRow, THeader extends TableHeader<TRow, THeader>>\n extends Pick<TableProps, 'footer'> {\n colCount: number;\n hasHeaderCheckbox: boolean;\n headers: THeader[];\n isLoading: boolean;\n rowCount: number;\n rows: TRow[];\n setHasHeaderCheckbox: (value: boolean) => void;\n selectedRows: TRow[];\n selectRow: (row: TRow | TRow[]) => void;\n}\n\nconst [TableProvider, useTable] = createContext<TableContextValue<any, any>>('Table');\n\ninterface RootProps<TRow extends BaseRow, THeader extends TableHeader<TRow, THeader>>\n extends Partial<\n Pick<\n TableContextValue<TRow, THeader>,\n 'footer' | 'headers' | 'isLoading' | 'rows' | 'selectedRows'\n >\n > {\n children?: React.ReactNode;\n defaultSelectedRows?: TRow[];\n onSelectedRowsChange?: (selectedRows: TRow[]) => void;\n}\n\nconst Root = <TRow extends BaseRow, THeader extends TableHeader<TRow, THeader>>({\n children,\n defaultSelectedRows,\n footer,\n headers = [],\n isLoading = false,\n onSelectedRowsChange,\n rows = [],\n selectedRows: selectedRowsProps,\n}: RootProps<TRow, THeader>) => {\n const [selectedRows = [], setSelectedRows] = useControllableState({\n prop: selectedRowsProps,\n defaultProp: defaultSelectedRows,\n onChange: onSelectedRowsChange,\n });\n const [hasHeaderCheckbox, setHasHeaderCheckbox] = React.useState(false);\n\n const rowCount = rows.length + 1;\n const colCount = hasHeaderCheckbox ? headers.length + 1 : headers.length;\n\n const selectRow: TableContextValue<TRow, THeader>['selectRow'] = (row) => {\n if (Array.isArray(row)) {\n setSelectedRows(row);\n } else {\n setSelectedRows((prev = []) => {\n const currentRowIndex = prev.findIndex((r) => r.id === row.id);\n if (currentRowIndex > -1) {\n return prev.toSpliced(currentRowIndex, 1);\n }\n\n return [...prev, row];\n });\n }\n };\n\n return (\n <TableProvider\n colCount={colCount}\n hasHeaderCheckbox={hasHeaderCheckbox}\n setHasHeaderCheckbox={setHasHeaderCheckbox}\n footer={footer}\n headers={headers}\n isLoading={isLoading}\n rowCount={rowCount}\n rows={rows}\n selectedRows={selectedRows}\n selectRow={selectRow}\n >\n {children}\n </TableProvider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Content\n * -----------------------------------------------------------------------------------------------*/\n\nconst Content = ({ children }: Table.ContentProps) => {\n const rowCount = useTable('Content', (state) => state.rowCount);\n const colCount = useTable('Content', (state) => state.colCount);\n const footer = useTable('Content', (state) => state.footer);\n\n return (\n <DSTable rowCount={rowCount} colCount={colCount} footer={footer}>\n {children}\n </DSTable>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Head\n * -----------------------------------------------------------------------------------------------*/\n\nconst Head = ({ children }: Table.HeadProps) => {\n return (\n <Thead>\n <Tr>{children}</Tr>\n </Thead>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCell\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @description A header cell in your table, internally will set the query params for sorting to\n * be passed to your data-fetching function.\n */\nconst HeaderCell = <TData, THead>({ name, label, sortable }: TableHeader<TData, THead>) => {\n const [{ query }, setQuery] = useQueryParams<{ sort?: `${string}:${'ASC' | 'DESC'}` }>();\n const sort = query?.sort ?? '';\n const [sortBy, sortOrder] = sort.split(':');\n const { formatMessage } = useIntl();\n const isSorted = sortBy === name;\n\n const sortLabel = formatMessage(\n { id: 'components.TableHeader.sort', defaultMessage: 'Sort on {label}' },\n { label }\n );\n\n const handleClickSort = () => {\n if (sortable) {\n setQuery({\n sort: `${name}:${isSorted && sortOrder === 'ASC' ? 'DESC' : 'ASC'}`,\n });\n }\n };\n\n return (\n <Th\n action={\n isSorted &&\n sortable && (\n <IconButton label={sortLabel} onClick={handleClickSort} variant=\"ghost\">\n <SortIcon $isUp={sortOrder === 'ASC'} />\n </IconButton>\n )\n }\n >\n <Tooltip label={sortable ? sortLabel : label}>\n <Typography\n textColor=\"neutral600\"\n tag={!isSorted && sortable ? 'button' : 'span'}\n onClick={handleClickSort}\n variant=\"sigma\"\n >\n {label}\n </Typography>\n </Tooltip>\n </Th>\n );\n};\n\nconst SortIcon = styled(CaretDown)<{\n $isUp: boolean;\n}>`\n transform: ${({ $isUp }) => `rotate(${$isUp ? '180' : '0'}deg)`};\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ActionBar\n * -----------------------------------------------------------------------------------------------*/\n\nconst ActionBar = ({ children }: Table.ActionBarProps) => {\n const { formatMessage } = useIntl();\n const selectedRows = useTable('ActionBar', (state) => state.selectedRows);\n\n if (selectedRows.length === 0) return null;\n\n return (\n <Flex gap={2}>\n <Typography variant=\"omega\" textColor=\"neutral500\">\n {formatMessage(\n {\n id: 'content-manager.components.TableDelete.label',\n defaultMessage: '{number, plural, one {# row} other {# rows}} selected',\n },\n { number: selectedRows.length }\n )}\n </Typography>\n {children}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCheckboxCell\n * -----------------------------------------------------------------------------------------------*/\n\nconst HeaderCheckboxCell = () => {\n const rows = useTable('HeaderCheckboxCell', (state) => state.rows);\n const selectedRows = useTable('HeaderCheckboxCell', (state) => state.selectedRows);\n const selectRow = useTable('HeaderCheckboxCell', (state) => state.selectRow);\n const setHasHeaderCheckbox = useTable(\n 'HeaderCheckboxCell',\n (state) => state.setHasHeaderCheckbox\n );\n\n const { formatMessage } = useIntl();\n\n const areAllEntriesSelected = selectedRows.length === rows.length && rows.length > 0;\n const isIndeterminate = !areAllEntriesSelected && selectedRows.length > 0;\n\n React.useEffect(() => {\n setHasHeaderCheckbox(true);\n\n return () => setHasHeaderCheckbox(false);\n }, [setHasHeaderCheckbox]);\n\n const handleSelectAll = () => {\n if (!areAllEntriesSelected) {\n selectRow(rows);\n } else {\n selectRow([]);\n }\n };\n\n return (\n <Th>\n <Checkbox\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n disabled={rows.length === 0}\n checked={isIndeterminate ? 'indeterminate' : areAllEntriesSelected}\n onCheckedChange={handleSelectAll}\n />\n </Th>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Empty\n * -----------------------------------------------------------------------------------------------*/\n\nconst Empty = (props: Table.EmptyProps) => {\n const { formatMessage } = useIntl();\n\n const rows = useTable('Empty', (state) => state.rows);\n const isLoading = useTable('Empty', (state) => state.isLoading);\n const colCount = useTable('Empty', (state) => state.colCount);\n\n /**\n * If we're loading or we have some data, we don't show the empty state.\n */\n if (rows.length > 0 || isLoading) {\n return null;\n }\n\n return (\n <Tbody>\n <Tr>\n <Td colSpan={colCount}>\n <EmptyStateLayout\n content={formatMessage({\n id: 'app.components.EmptyStateLayout.content-document',\n defaultMessage: 'No content found',\n })}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n {...props}\n />\n </Td>\n </Tr>\n </Tbody>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * LoadingBody\n * -----------------------------------------------------------------------------------------------*/\n\nconst Loading = ({ children = 'Loading content' }: Table.LoadingProps) => {\n const isLoading = useTable('Loading', (state) => state.isLoading);\n const colCount = useTable('Loading', (state) => state.colCount);\n\n if (!isLoading) {\n return null;\n }\n\n return (\n <Tbody>\n <Tr>\n <Td colSpan={colCount}>\n <Flex justifyContent=\"center\" padding={11} background=\"neutral0\">\n <Loader>{children}</Loader>\n </Flex>\n </Td>\n </Tr>\n </Tbody>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Body\n * -----------------------------------------------------------------------------------------------*/\n\nconst Body = ({ children }: Table.BodyProps) => {\n const isLoading = useTable('Body', (state) => state.isLoading);\n const rows = useTable('Body', (state) => state.rows);\n\n if (isLoading || rows.length === 0) {\n return null;\n }\n\n return <Tbody>{children}</Tbody>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\nconst Row = (props: Table.RowProps) => {\n return <Tr {...props} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Cell\n * -----------------------------------------------------------------------------------------------*/\nconst Cell = (props: Table.CellProps) => {\n return <Td {...props} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\nconst CheckboxCell = ({ id, ...props }: Table.CheckboxCellProps) => {\n const rows = useTable('CheckboxCell', (state) => state.rows);\n const selectedRows = useTable('CheckboxCell', (state) => state.selectedRows);\n const selectRow = useTable('CheckboxCell', (state) => state.selectRow);\n\n const { formatMessage } = useIntl();\n\n const handleSelectRow = () => {\n selectRow(rows.find((row) => row.id === id));\n };\n\n const isChecked = selectedRows.findIndex((row) => row.id === id) > -1;\n\n return (\n <Cell {...props} onClick={(e) => e.stopPropagation()}>\n <Checkbox\n aria-label={formatMessage(\n {\n id: 'app.component.table.select.one-entry',\n defaultMessage: `Select {target}`,\n },\n { target: id }\n )}\n disabled={rows.length === 0}\n checked={isChecked}\n onCheckedChange={handleSelectRow}\n />\n </Cell>\n );\n};\n/* -------------------------------------------------------------------------------------------------\n * Exports\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @alpha we may move this component to the design-system.\n * @public\n * @description A generic table component composition. Internally handles the state of the table\n * such as selected rows, loading state, and more assuming the correct pieces are put togther.\n * @example\n * ```tsx\n * interace Data {\n * id: string;\n * name: string;\n * email: string;\n * }\n *\n * const ListView = () => {\n * const { data, isLoading } = useGetData<Data>();\n *\n * const headers: Table.Header<Data>[] = [\n * {\n * label: 'Name',\n * name: 'name',\n * sortable: true,\n * },\n * {\n * label: 'Email',\n * name: 'email',\n * sortable: true,\n * },\n * ];\n *\n * return (\n * <Table.Root rows={data} headers={headers} isLoading={isLoading}>\n * <Table.Content>\n * <Table.Head>\n * {headers.map((head) => (\n * <Table.HeaderCell key={head.name} {...head} />\n * ))}\n * </Table.Head>\n * <Table.Body>\n * <Table.Loading />\n * <Table.Empty />\n * {data.map((row) => (\n * <Table.Row key={row.id}>\n * <Table.Cell>{row.name}</Table.Cell>\n * <Table.Cell>{row.email}</Table.Cell>\n * </Table.Row>\n * ))}\n * </Table.Body>\n * </Table.Content>\n * </Table.Root>\n * );\n * };\n * ```\n */\nconst Table = {\n Root,\n Content,\n ActionBar,\n Head,\n HeaderCell,\n HeaderCheckboxCell,\n Body,\n CheckboxCell,\n Cell,\n Row,\n Loading,\n Empty,\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Table {\n export type Props<\n TData extends BaseRow,\n THeader extends TableHeader<TData, THeader> = TableHeader<TData, TableHeader>,\n > = RootProps<TData, THeader>;\n export interface ActionBarProps {\n children?: React.ReactNode;\n }\n\n export interface ContentProps {\n children: React.ReactNode;\n }\n\n export type Header<TData, THeader> = TableHeader<TData, THeader>;\n\n export interface HeadProps {\n children: React.ReactNode;\n }\n\n export interface EmptyProps extends Partial<EmptyStateLayoutProps> {}\n\n export interface LoadingProps {\n children?: React.ReactNode;\n }\n\n export interface BodyProps {\n children: React.ReactNode;\n }\n\n export interface RowProps extends RawTrProps {}\n\n export interface CellProps extends RawTdProps {}\n\n export interface CheckboxCellProps extends Pick<BaseRow, 'id'>, Omit<RawTdProps, 'id'> {}\n}\n\nexport { Table, useTable };\n","import {\n Flex,\n FlexComponent,\n FlexProps,\n Typography,\n TypographyComponent,\n} from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\ninterface ContentBoxProps {\n title?: string;\n subtitle?: string;\n icon?: FlexProps['children'];\n iconBackground?: FlexProps['background'];\n endAction?: FlexProps['children'];\n titleEllipsis?: boolean;\n}\n\nconst ContentBox = ({\n title,\n subtitle,\n icon,\n iconBackground,\n endAction,\n titleEllipsis = false,\n}: ContentBoxProps) => {\n if (title && title.length > 70 && titleEllipsis) {\n title = `${title.substring(0, 70)}...`;\n }\n\n return (\n <Flex shadow=\"tableShadow\" hasRadius padding={6} background=\"neutral0\">\n <IconWrapper background={iconBackground} hasRadius padding={3}>\n {icon}\n </IconWrapper>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={endAction ? 0 : 1}>\n <Flex>\n <TypographyWordBreak fontWeight=\"semiBold\" variant=\"pi\">\n {title}\n </TypographyWordBreak>\n {endAction}\n </Flex>\n <Typography textColor=\"neutral600\">{subtitle}</Typography>\n </Flex>\n </Flex>\n );\n};\n\nconst IconWrapper = styled<FlexComponent>(Flex)`\n margin-right: ${({ theme }) => theme.spaces[6]};\n\n svg {\n width: 3.2rem;\n height: 3.2rem;\n }\n`;\n\nconst TypographyWordBreak = styled<TypographyComponent>(Typography)`\n color: ${({ theme }) => theme.colors.neutral800};\n word-break: break-all;\n`;\n\nexport { ContentBox };\nexport type { ContentBoxProps };\n","import { useEffect } from 'react';\n\nimport { Reducer } from '@reduxjs/toolkit';\n\nimport { useTypedStore } from '../core/store/hooks';\n\n/**\n * @public\n * @description Inject a new reducer into the global redux-store.\n * @example\n * ```tsx\n * import { reducer } from './local-store';\n *\n * const MyPlugin = () => {\n * useInjectReducer(\"plugin\", reducer);\n * }\n * ```\n */\nexport function useInjectReducer(namespace: string, reducer: Reducer) {\n const store = useTypedStore();\n\n useEffect(() => {\n store.injectReducer(namespace, reducer);\n }, [store, namespace, reducer]);\n}\n","import * as React from 'react';\n\nimport { getFetchClient } from '../utils/getFetchClient';\n\n/**\n * @public\n * @description This is an abstraction around the native fetch exposed by a hook. It provides a simple interface to handle API calls\n * to the Strapi backend.\n * It handles request cancellations inside the hook with an {@link https://developer.mozilla.org/en-US/docs/Web/API/AbortController} AbortController.\n * This is typically triggered when the component is unmounted so all the requests that it is currently making are aborted.\n * The expected URL style includes either a protocol (such as HTTP or HTTPS) or a relative URL. The URLs with domain and path but not protocol are not allowed (ex: `www.example.com`).\n * @example\n * ```tsx\n * import * as React from 'react';\n * import { useFetchClient } from '@strapi/admin/admin';\n *\n * const MyComponent = () => {\n * const [items, setItems] = React.useState([]);\n * const { get } = useFetchClient();\n * const requestURL = \"/some-endpoint\";\n *\n * const handleGetData = async () => {\n * const { data } = await get(requestURL);\n * setItems(data.items);\n * };\n *\n * return (\n * <div>\n * <div>\n * {\n * items && items.map(item => <h2 key={item.uuid}>{item.name}</h2>))\n * }\n * </div>\n * </div>\n * );\n * };\n * ```\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/AbortController} AbortController.\n */\nconst useFetchClient = () => {\n const controller = React.useRef<AbortController | null>(null);\n\n if (controller.current === null) {\n controller.current = new AbortController();\n }\n\n React.useEffect(() => {\n return () => {\n controller.current!.abort();\n };\n }, []);\n\n return React.useMemo(\n () =>\n getFetchClient({\n signal: controller.current!.signal,\n }),\n []\n );\n};\n\nexport { useFetchClient };\n","import * as Permissions from '../../../shared/contracts/permissions';\nimport * as Roles from '../../../shared/contracts/roles';\nimport * as Users from '../../../shared/contracts/user';\n\nimport { adminApi } from './api';\n\nimport type { Data } from '@strapi/types';\n\nconst usersService = adminApi\n .enhanceEndpoints({\n addTagTypes: ['LicenseLimits', 'User', 'Role', 'RolePermissions'],\n })\n .injectEndpoints({\n endpoints: (builder) => ({\n /**\n * users\n */\n createUser: builder.mutation<Users.Create.Response['data'], Users.Create.Request['body']>({\n query: (body) => ({\n url: '/admin/users',\n method: 'POST',\n data: body,\n }),\n transformResponse: (response: Users.Create.Response) => response.data,\n invalidatesTags: ['LicenseLimits', { type: 'User', id: 'LIST' }],\n }),\n updateUser: builder.mutation<\n Users.Update.Response['data'],\n Omit<Users.Update.Request['body'] & Users.Update.Params, 'blocked'>\n >({\n query: ({ id, ...body }) => ({\n url: `/admin/users/${id}`,\n method: 'PUT',\n data: body,\n }),\n invalidatesTags: (_res, _err, { id }) => [\n { type: 'User', id },\n { type: 'User', id: 'LIST' },\n ],\n }),\n getUsers: builder.query<\n {\n users: Users.FindAll.Response['data']['results'];\n pagination: Users.FindAll.Response['data']['pagination'] | null;\n },\n GetUsersParams\n >({\n query: ({ id, ...params } = {}) => ({\n url: `/admin/users/${id ?? ''}`,\n method: 'GET',\n config: {\n params,\n },\n }),\n transformResponse: (res: Users.FindAll.Response | Users.FindOne.Response) => {\n let users: Users.FindAll.Response['data']['results'] = [];\n\n if (res.data) {\n if ('results' in res.data) {\n if (Array.isArray(res.data.results)) {\n users = res.data.results;\n }\n } else {\n users = [res.data];\n }\n }\n\n return {\n users,\n pagination: 'pagination' in res.data ? res.data.pagination : null,\n };\n },\n providesTags: (res, _err, arg) => {\n if (typeof arg === 'object' && 'id' in arg) {\n return [{ type: 'User' as const, id: arg.id }];\n } else {\n return [\n ...(res?.users.map(({ id }) => ({ type: 'User' as const, id })) ?? []),\n { type: 'User' as const, id: 'LIST' },\n ];\n }\n },\n }),\n deleteManyUsers: builder.mutation<\n Users.DeleteMany.Response['data'],\n Users.DeleteMany.Request['body']\n >({\n query: (body) => ({\n url: '/admin/users/batch-delete',\n method: 'POST',\n data: body,\n }),\n transformResponse: (res: Users.DeleteMany.Response) => res.data,\n invalidatesTags: ['LicenseLimits', { type: 'User', id: 'LIST' }],\n }),\n /**\n * roles\n */\n createRole: builder.mutation<Roles.Create.Response['data'], Roles.Create.Request['body']>({\n query: (body) => ({\n url: '/admin/roles',\n method: 'POST',\n data: body,\n }),\n transformResponse: (res: Roles.Create.Response) => res.data,\n invalidatesTags: [{ type: 'Role', id: 'LIST' }],\n }),\n getRoles: builder.query<Roles.FindRoles.Response['data'], GetRolesParams | void>({\n query: ({ id, ...params } = {}) => ({\n url: `/admin/roles/${id ?? ''}`,\n method: 'GET',\n config: {\n params,\n },\n }),\n transformResponse: (res: Roles.FindRole.Response | Roles.FindRoles.Response) => {\n let roles: Roles.FindRoles.Response['data'] = [];\n\n if (res.data) {\n if (Array.isArray(res.data)) {\n roles = res.data;\n } else {\n roles = [res.data];\n }\n }\n\n return roles;\n },\n providesTags: (res, _err, arg) => {\n if (typeof arg === 'object' && 'id' in arg) {\n return [{ type: 'Role' as const, id: arg.id }];\n } else {\n return [\n ...(res?.map(({ id }) => ({ type: 'Role' as const, id })) ?? []),\n { type: 'Role' as const, id: 'LIST' },\n ];\n }\n },\n }),\n updateRole: builder.mutation<\n Roles.Update.Response['data'],\n Roles.Update.Request['body'] & Roles.Update.Request['params']\n >({\n query: ({ id, ...body }) => ({\n url: `/admin/roles/${id}`,\n method: 'PUT',\n data: body,\n }),\n transformResponse: (res: Roles.Create.Response) => res.data,\n invalidatesTags: (_res, _err, { id }) => [{ type: 'Role' as const, id }],\n }),\n getRolePermissions: builder.query<\n Roles.GetPermissions.Response['data'],\n GetRolePermissionsParams\n >({\n query: ({ id, ...params }) => ({\n url: `/admin/roles/${id}/permissions`,\n method: 'GET',\n config: {\n params,\n },\n }),\n transformResponse: (res: Roles.GetPermissions.Response) => res.data,\n providesTags: (_res, _err, { id }) => [{ type: 'RolePermissions' as const, id }],\n }),\n updateRolePermissions: builder.mutation<\n Roles.UpdatePermissions.Response['data'],\n Roles.UpdatePermissions.Request['body'] & Roles.UpdatePermissions.Request['params']\n >({\n query: ({ id, ...body }) => ({\n url: `/admin/roles/${id}/permissions`,\n method: 'PUT',\n data: body,\n }),\n transformResponse: (res: Roles.UpdatePermissions.Response) => res.data,\n invalidatesTags: (_res, _err, { id }) => [{ type: 'RolePermissions' as const, id }],\n }),\n /**\n * Permissions\n */\n getRolePermissionLayout: builder.query<\n Permissions.GetAll.Response['data'],\n Permissions.GetAll.Request['params']\n >({\n query: (params) => ({\n url: '/admin/permissions',\n method: 'GET',\n config: {\n params,\n },\n }),\n transformResponse: (res: Permissions.GetAll.Response) => res.data,\n }),\n }),\n overrideExisting: false,\n });\n\ntype GetUsersParams =\n | Users.FindOne.Params\n | (Users.FindAll.Request['query'] & { id?: never })\n | void;\ntype GetRolesParams =\n | Roles.FindRole.Request['params']\n | (Roles.FindRoles.Request['query'] & { id?: never });\ninterface GetRolePermissionsParams {\n id: Data.ID;\n}\n\nconst {\n useCreateUserMutation,\n useGetUsersQuery,\n useUpdateUserMutation,\n useDeleteManyUsersMutation,\n useGetRolesQuery,\n useCreateRoleMutation,\n useUpdateRoleMutation,\n useGetRolePermissionsQuery,\n useGetRolePermissionLayoutQuery,\n useUpdateRolePermissionsMutation,\n} = usersService;\n\nconst useAdminUsers = useGetUsersQuery;\n\nexport {\n useUpdateUserMutation,\n useGetRolesQuery,\n useAdminUsers,\n useDeleteManyUsersMutation,\n useCreateUserMutation,\n useGetRolePermissionsQuery,\n useGetRolePermissionLayoutQuery,\n useCreateRoleMutation,\n useUpdateRolePermissionsMutation,\n useUpdateRoleMutation,\n};\nexport type { GetRolesParams, GetUsersParams, GetRolePermissionsParams };\n"],"names":["getEERoutes","invariant","createContext","useLocation","useNavigate","React","reducer","produce","useIntl","jsx","Link","NavLink","ArrowLeft","QueryClient","StrapiAppProvider","Provider","QueryClientProvider","AuthProvider","LanguageProvider","Theme","NotificationsProvider","TrackingProvider","GuidedTourProvider","ConfigurationProvider","useEffect","LANGUAGE_LOCAL_STORAGE_KEY","Suspense","Page","Outlet","useCallback","useRouteError","Main","Flex","jsxs","WarningCircle","Typography","Button","Duplicate","styled","Alert","Box","Fragment","useCallbackRef","EmptyStateLayout","LinkButton","ArrowRight","EmptyPictures","isEqual","ref","getIn","useComposedRefs","setIn","generateNKeysBetween","error","useBlocker","Dialog","useMemo","useState","forwardRef","Field","Toggle","memo","Checkbox","DatePicker","date","getLocalTimeZone","parseAbsolute","toCalendarDate","DateTimePicker","TextInput","SingleSelect","label","SingleSelectOption","JSONInputImpl","NumberInput","Eye","EyeStriked","Textarea","TimePicker","StringInput","BooleanInput","CheckboxInput","DateTimeInput","DateInput","JsonInput","EmailInput","EnumerationInput","PasswordInput","TextareaInput","TimeInput","useConfiguration","useTypedSelector","useTypedDispatch","setLocale","yup","translatedErrors","useAuth","camelCase","InputRenderer","useAPIErrorHandler","useForgotPasswordMutation","isBaseQueryError","useNotification","useAppInfo","Portal","Formik","Form","IconButton","Cross","VisuallyHidden","useTracking","useGuidedTour","useMatch","useGetRegistrationInfoQuery","useRegisterAdminMutation","useRegisterUserMutation","login","Navigate","omit","ValidationError","Grid","useResetPasswordMutation","useInitQuery","Login","useEnterprise","LoginCE","getBaseEERoutes","getSettingsEERoutes","createMemoryRouter","createBrowserRouter","link","adminApi","appReducer","combineReducers","configureStore","isRejected","logout","Logo","lightTheme","darkTheme","RBAC","isFunction","merge","pick","THEME_LOCAL_STORAGE_KEY","getStoredToken","RouterProvider","createAbsoluteUrl","getFetchClient","features","createRoot","throttle","cancelIdleCallback","requestIdleCallback","ids","value","Root","Popover","disabled","FilterIcon","useQueryParams","options","onChange","setOpen","filter","Plus","Tag","PaginationImpl","PreviousLink","stringify","PageLink","Dots","NextLink","SearchForm","Searchbar","SearchIcon","DSTable","Thead","Tr","Th","Tooltip","CaretDown","Tbody","Td","EmptyDocuments","Loader","useTypedStore"],"mappings":"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"}