@strapi/admin 5.0.0-beta.6 → 5.0.0-beta.7

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 (329) hide show
  1. package/dist/admin/{AdminSeatInfo-ZrJlIt8M.mjs → AdminSeatInfo-f4TfgHFE.mjs} +5 -5
  2. package/dist/admin/AdminSeatInfo-f4TfgHFE.mjs.map +1 -0
  3. package/dist/admin/{AdminSeatInfo-G2ipQTLk.js → AdminSeatInfo-jSvlksaP.js} +5 -5
  4. package/dist/admin/AdminSeatInfo-jSvlksaP.js.map +1 -0
  5. package/dist/admin/{ApplicationInfoPage-dc0ReC0D.js → ApplicationInfoPage-75RPd0Ro.js} +32 -37
  6. package/dist/admin/ApplicationInfoPage-75RPd0Ro.js.map +1 -0
  7. package/dist/admin/{ApplicationInfoPage-TImAEuc3.mjs → ApplicationInfoPage-aB-vx1uX.mjs} +33 -37
  8. package/dist/admin/ApplicationInfoPage-aB-vx1uX.mjs.map +1 -0
  9. package/dist/admin/{AuthResponse-wfOnX6GO.mjs → AuthResponse-HbQI8hB8.mjs} +2 -2
  10. package/dist/admin/{AuthResponse-wfOnX6GO.mjs.map → AuthResponse-HbQI8hB8.mjs.map} +1 -1
  11. package/dist/admin/{AuthResponse-J1Y_hbtY.js → AuthResponse-YXlkDXrI.js} +2 -2
  12. package/dist/admin/{AuthResponse-J1Y_hbtY.js.map → AuthResponse-YXlkDXrI.js.map} +1 -1
  13. package/dist/admin/{AuthenticatedLayout-eMLYKMgW.mjs → AuthenticatedLayout-LYVDZ-jl.mjs} +204 -213
  14. package/dist/admin/AuthenticatedLayout-LYVDZ-jl.mjs.map +1 -0
  15. package/dist/admin/{AuthenticatedLayout-TNbTifIA.js → AuthenticatedLayout-xkecaUXJ.js} +208 -218
  16. package/dist/admin/AuthenticatedLayout-xkecaUXJ.js.map +1 -0
  17. package/dist/admin/{ContentBox-Mzcpnn32.js → ContentBox-3MRTNw0X.js} +5 -8
  18. package/dist/admin/ContentBox-3MRTNw0X.js.map +1 -0
  19. package/dist/admin/{ContentBox-DjmNTcxv.mjs → ContentBox-9LBDzws0.mjs} +3 -2
  20. package/dist/admin/ContentBox-9LBDzws0.mjs.map +1 -0
  21. package/dist/admin/{CreateActionEE-_i5qXWEG.js → CreateActionEE-9Z-woKCk.js} +2 -2
  22. package/dist/admin/{CreateActionEE-_i5qXWEG.js.map → CreateActionEE-9Z-woKCk.js.map} +1 -1
  23. package/dist/admin/{CreateActionEE-Qdz4UDPf.mjs → CreateActionEE-QiVnA7Rx.mjs} +2 -2
  24. package/dist/admin/{CreateActionEE-Qdz4UDPf.mjs.map → CreateActionEE-QiVnA7Rx.mjs.map} +1 -1
  25. package/dist/admin/{CreatePage-uTwt_c8J.mjs → CreatePage-1iAK5V1h.mjs} +29 -26
  26. package/dist/admin/CreatePage-1iAK5V1h.mjs.map +1 -0
  27. package/dist/admin/{CreatePage-f3faA3vG.js → CreatePage-ZrJXDmLJ.js} +3 -3
  28. package/dist/admin/{CreatePage-f3faA3vG.js.map → CreatePage-ZrJXDmLJ.js.map} +1 -1
  29. package/dist/admin/{CreatePage-07P5-Zjt.mjs → CreatePage-jsVARlnB.mjs} +3 -3
  30. package/dist/admin/{CreatePage-07P5-Zjt.mjs.map → CreatePage-jsVARlnB.mjs.map} +1 -1
  31. package/dist/admin/{CreatePage-03MgCK7Z.js → CreatePage-uHcWJ0EG.js} +29 -29
  32. package/dist/admin/CreatePage-uHcWJ0EG.js.map +1 -0
  33. package/dist/admin/{CreateView-o5-hvd4h.js → CreateView-1WqjD6uO.js} +3 -3
  34. package/dist/admin/{CreateView-o5-hvd4h.js.map → CreateView-1WqjD6uO.js.map} +1 -1
  35. package/dist/admin/{CreateView-T8hLqvog.mjs → CreateView-Bi2p6uqA.mjs} +3 -3
  36. package/dist/admin/{CreateView-T8hLqvog.mjs.map → CreateView-Bi2p6uqA.mjs.map} +1 -1
  37. package/dist/admin/{CreateView-UemGfFqI.js → CreateView-HhvACL4t.js} +3 -3
  38. package/dist/admin/{CreateView-UemGfFqI.js.map → CreateView-HhvACL4t.js.map} +1 -1
  39. package/dist/admin/{CreateView-87aPv9QV.mjs → CreateView-tSUpjqXs.mjs} +3 -3
  40. package/dist/admin/{CreateView-87aPv9QV.mjs.map → CreateView-tSUpjqXs.mjs.map} +1 -1
  41. package/dist/admin/{EditPage-YqW1NIMp.js → EditPage-2l5T1lDC.js} +212 -254
  42. package/dist/admin/EditPage-2l5T1lDC.js.map +1 -0
  43. package/dist/admin/{EditPage-lyFePXWl.mjs → EditPage-JmGISZmG.mjs} +213 -252
  44. package/dist/admin/EditPage-JmGISZmG.mjs.map +1 -0
  45. package/dist/admin/{EditPage-Ly5MBiuB.js → EditPage-LMYuiLOp.js} +45 -29
  46. package/dist/admin/EditPage-LMYuiLOp.js.map +1 -0
  47. package/dist/admin/{EditPage-UqMDbMvJ.js → EditPage-MGQBBDmf.js} +12 -12
  48. package/dist/admin/EditPage-MGQBBDmf.js.map +1 -0
  49. package/dist/admin/{EditPage-F3yH0Fy6.mjs → EditPage-xQSTfVfO.mjs} +46 -30
  50. package/dist/admin/EditPage-xQSTfVfO.mjs.map +1 -0
  51. package/dist/admin/{EditPage-XSz7Wpt8.mjs → EditPage-yFuP3hZG.mjs} +13 -13
  52. package/dist/admin/EditPage-yFuP3hZG.mjs.map +1 -0
  53. package/dist/admin/{EditView-r0lx661I.mjs → EditView-06IK7yeo.mjs} +9 -9
  54. package/dist/admin/EditView-06IK7yeo.mjs.map +1 -0
  55. package/dist/admin/{EditView-bRFkRKAz.js → EditView-9cnQdotQ.js} +8 -8
  56. package/dist/admin/EditView-9cnQdotQ.js.map +1 -0
  57. package/dist/admin/{EditViewPage-tAsn6QS9.js → EditViewPage-ZTHin7cu.js} +20 -21
  58. package/dist/admin/EditViewPage-ZTHin7cu.js.map +1 -0
  59. package/dist/admin/{EditViewPage-f5dHmqdT.mjs → EditViewPage-x06h850j.mjs} +17 -17
  60. package/dist/admin/EditViewPage-x06h850j.mjs.map +1 -0
  61. package/dist/admin/{EventsTable-4h6LoAp-.js → EventsTable-i6DpZCjP.js} +2 -2
  62. package/dist/admin/{EventsTable-4h6LoAp-.js.map → EventsTable-i6DpZCjP.js.map} +1 -1
  63. package/dist/admin/{EventsTable-2C605_qQ.mjs → EventsTable-uKf7y-DM.mjs} +2 -2
  64. package/dist/admin/{EventsTable-2C605_qQ.mjs.map → EventsTable-uKf7y-DM.mjs.map} +1 -1
  65. package/dist/admin/{HomePage-4FySTCJU.mjs → HomePage-Dk_BC7we.mjs} +3 -3
  66. package/dist/admin/{HomePage-4FySTCJU.mjs.map → HomePage-Dk_BC7we.mjs.map} +1 -1
  67. package/dist/admin/{HomePage-UTnZwpp-.js → HomePage-VKuqPKIc.js} +34 -32
  68. package/dist/admin/HomePage-VKuqPKIc.js.map +1 -0
  69. package/dist/admin/{HomePage-Uuww2J1B.js → HomePage-tgoADIWe.js} +3 -3
  70. package/dist/admin/{HomePage-Uuww2J1B.js.map → HomePage-tgoADIWe.js.map} +1 -1
  71. package/dist/admin/{HomePage-ZF3T0k2r.mjs → HomePage-ytofle46.mjs} +24 -19
  72. package/dist/admin/HomePage-ytofle46.mjs.map +1 -0
  73. package/dist/admin/{InstalledPluginsPage-eOXi3oTN.mjs → InstalledPluginsPage--iVM14K3.mjs} +9 -8
  74. package/dist/admin/InstalledPluginsPage--iVM14K3.mjs.map +1 -0
  75. package/dist/admin/{InstalledPluginsPage-o43CGz2w.js → InstalledPluginsPage-5fDQJ3wY.js} +8 -7
  76. package/dist/admin/InstalledPluginsPage-5fDQJ3wY.js.map +1 -0
  77. package/dist/admin/{Layout-XxmAreH1.js → Layout-BYaZsvrJ.js} +11 -12
  78. package/dist/admin/Layout-BYaZsvrJ.js.map +1 -0
  79. package/dist/admin/{Layout-mnn4_IJp.mjs → Layout-woodqxaL.mjs} +10 -10
  80. package/dist/admin/Layout-woodqxaL.mjs.map +1 -0
  81. package/dist/admin/{ListPage-hln8fKzE.js → ListPage-0zYjdNsU.js} +11 -12
  82. package/dist/admin/ListPage-0zYjdNsU.js.map +1 -0
  83. package/dist/admin/{ListPage-Gj1OS6PX.mjs → ListPage-4VNlnYoD.mjs} +3 -3
  84. package/dist/admin/{ListPage-Gj1OS6PX.mjs.map → ListPage-4VNlnYoD.mjs.map} +1 -1
  85. package/dist/admin/{ListPage-URtxfNJ4.js → ListPage-5OElNgYk.js} +14 -18
  86. package/dist/admin/ListPage-5OElNgYk.js.map +1 -0
  87. package/dist/admin/{ListPage-eNkUD3v_.mjs → ListPage-7wUYXUgs.mjs} +15 -15
  88. package/dist/admin/ListPage-7wUYXUgs.mjs.map +1 -0
  89. package/dist/admin/{ListPage-AFDAiR9X.mjs → ListPage-HCUzAC2B.mjs} +17 -30
  90. package/dist/admin/ListPage-HCUzAC2B.mjs.map +1 -0
  91. package/dist/admin/{ListPage-NTxNcftS.js → ListPage-MxOKlYmC.js} +14 -14
  92. package/dist/admin/ListPage-MxOKlYmC.js.map +1 -0
  93. package/dist/admin/{ListPage-5g8MtUEB.mjs → ListPage-NURPzLD-.mjs} +15 -19
  94. package/dist/admin/ListPage-NURPzLD-.mjs.map +1 -0
  95. package/dist/admin/{ListPage-Pi_dzfDr.js → ListPage-V26wHeo6.js} +16 -29
  96. package/dist/admin/ListPage-V26wHeo6.js.map +1 -0
  97. package/dist/admin/{ListPage-6Ukzm--I.js → ListPage-XZshrlES.js} +3 -3
  98. package/dist/admin/{ListPage-6Ukzm--I.js.map → ListPage-XZshrlES.js.map} +1 -1
  99. package/dist/admin/{ListPage-kdjzZ2al.mjs → ListPage-wtqw0RXL.mjs} +12 -13
  100. package/dist/admin/ListPage-wtqw0RXL.mjs.map +1 -0
  101. package/dist/admin/{ListView-pYVBJ4lg.js → ListView-SmHj4MFz.js} +10 -8
  102. package/dist/admin/ListView-SmHj4MFz.js.map +1 -0
  103. package/dist/admin/{ListView-FBh2WTHx.mjs → ListView-VRdl68JN.mjs} +10 -10
  104. package/dist/admin/ListView-VRdl68JN.mjs.map +1 -0
  105. package/dist/admin/{ListView-uwPF62w6.mjs → ListView-hi5fg7r8.mjs} +11 -9
  106. package/dist/admin/ListView-hi5fg7r8.mjs.map +1 -0
  107. package/dist/admin/{ListView-f2wVT21J.js → ListView-siyyh4f7.js} +9 -9
  108. package/dist/admin/ListView-siyyh4f7.js.map +1 -0
  109. package/dist/admin/{Login-FSNzATl0.mjs → Login-9hdTvAlD.mjs} +5 -5
  110. package/dist/admin/Login-9hdTvAlD.mjs.map +1 -0
  111. package/dist/admin/{Login-3rLFPliB.js → Login-bGhxScoT.js} +6 -10
  112. package/dist/admin/Login-bGhxScoT.js.map +1 -0
  113. package/dist/admin/{MagicLinkEE-bccsKKbJ.js → MagicLinkEE-5c7HTc8n.js} +3 -3
  114. package/dist/admin/{MagicLinkEE-bccsKKbJ.js.map → MagicLinkEE-5c7HTc8n.js.map} +1 -1
  115. package/dist/admin/{MagicLinkEE-czAdOuTH.mjs → MagicLinkEE-cAwS-v3S.mjs} +3 -3
  116. package/dist/admin/{MagicLinkEE-czAdOuTH.mjs.map → MagicLinkEE-cAwS-v3S.mjs.map} +1 -1
  117. package/dist/admin/{MarketplacePage-kNQPkoZK.mjs → MarketplacePage-hCtNAEWd.mjs} +19 -44
  118. package/dist/admin/MarketplacePage-hCtNAEWd.mjs.map +1 -0
  119. package/dist/admin/{MarketplacePage-sSTqINSu.js → MarketplacePage-t6FAhfMK.js} +23 -49
  120. package/dist/admin/MarketplacePage-t6FAhfMK.js.map +1 -0
  121. package/dist/admin/{Permissions-aU1eesjP.mjs → Permissions-Ng22nlYS.mjs} +34 -33
  122. package/dist/admin/Permissions-Ng22nlYS.mjs.map +1 -0
  123. package/dist/admin/{Permissions-NlSnXUKO.js → Permissions-aRi-vOk-.js} +53 -53
  124. package/dist/admin/Permissions-aRi-vOk-.js.map +1 -0
  125. package/dist/admin/{PrivateRoute-nJgGpBXP.js → PrivateRoute--JuZZan_.js} +2 -2
  126. package/dist/admin/{PrivateRoute-nJgGpBXP.js.map → PrivateRoute--JuZZan_.js.map} +1 -1
  127. package/dist/admin/{PrivateRoute-zZ7p1pc9.mjs → PrivateRoute-hfATZKl-.mjs} +2 -2
  128. package/dist/admin/{PrivateRoute-zZ7p1pc9.mjs.map → PrivateRoute-hfATZKl-.mjs.map} +1 -1
  129. package/dist/admin/{ProfilePage-jU98pa61.js → ProfilePage-8ieqgIrW.js} +11 -11
  130. package/dist/admin/ProfilePage-8ieqgIrW.js.map +1 -0
  131. package/dist/admin/{ProfilePage-T2kC_KoM.mjs → ProfilePage-imi1Exl5.mjs} +12 -12
  132. package/dist/admin/ProfilePage-imi1Exl5.mjs.map +1 -0
  133. package/dist/admin/{PurchaseAuditLogs-_1tVWtNF.mjs → PurchaseAuditLogs-RGCYZl25.mjs} +5 -4
  134. package/dist/admin/PurchaseAuditLogs-RGCYZl25.mjs.map +1 -0
  135. package/dist/admin/{PurchaseAuditLogs-GreHFPSR.js → PurchaseAuditLogs-xUopaGaS.js} +4 -3
  136. package/dist/admin/PurchaseAuditLogs-xUopaGaS.js.map +1 -0
  137. package/dist/admin/{PurchaseSingleSignOn-6t4xuNBd.js → PurchaseSingleSignOn-XOgkJmcn.js} +4 -3
  138. package/dist/admin/PurchaseSingleSignOn-XOgkJmcn.js.map +1 -0
  139. package/dist/admin/{PurchaseSingleSignOn-VUU-U4wi.mjs → PurchaseSingleSignOn-uMysWmJV.mjs} +5 -4
  140. package/dist/admin/PurchaseSingleSignOn-uMysWmJV.mjs.map +1 -0
  141. package/dist/admin/{SSOProviders-FZwT7RmU.js → SSOProviders-AirHFyBl.js} +4 -8
  142. package/dist/admin/SSOProviders-AirHFyBl.js.map +1 -0
  143. package/dist/admin/{SSOProviders-GcYDRAyn.mjs → SSOProviders-t8D-v8As.mjs} +2 -2
  144. package/dist/admin/SSOProviders-t8D-v8As.mjs.map +1 -0
  145. package/dist/admin/{SelectRoles--ys30CdN.mjs → SelectRoles-kh6E_r88.mjs} +44 -39
  146. package/dist/admin/SelectRoles-kh6E_r88.mjs.map +1 -0
  147. package/dist/admin/{SelectRoles-EdE6yfsj.js → SelectRoles-uO7YohIC.js} +44 -43
  148. package/dist/admin/SelectRoles-uO7YohIC.js.map +1 -0
  149. package/dist/admin/SingleSignOnPage-T90Opl7K.mjs +231 -0
  150. package/dist/admin/SingleSignOnPage-T90Opl7K.mjs.map +1 -0
  151. package/dist/admin/SingleSignOnPage-bnlsJPDh.js +256 -0
  152. package/dist/admin/SingleSignOnPage-bnlsJPDh.js.map +1 -0
  153. package/dist/admin/{Table--He5qeQG.mjs → Table-XkC1iUuN.mjs} +5 -5
  154. package/dist/admin/Table-XkC1iUuN.mjs.map +1 -0
  155. package/dist/admin/{Table-HXu3Nz4W.js → Table-qGOQznHA.js} +6 -9
  156. package/dist/admin/Table-qGOQznHA.js.map +1 -0
  157. package/dist/admin/{TokenTypeSelect-yY2kwTyO.js → TokenTypeSelect-733TgUaC.js} +83 -65
  158. package/dist/admin/TokenTypeSelect-733TgUaC.js.map +1 -0
  159. package/dist/admin/{TokenTypeSelect-kgKThMAL.mjs → TokenTypeSelect-kjhQiPbj.mjs} +84 -66
  160. package/dist/admin/TokenTypeSelect-kjhQiPbj.mjs.map +1 -0
  161. package/dist/admin/{UseCasePage-bfP-fDoW.mjs → UseCasePage-cNK2fN9i.mjs} +17 -34
  162. package/dist/admin/UseCasePage-cNK2fN9i.mjs.map +1 -0
  163. package/dist/admin/{UseCasePage-6_WRtTwv.js → UseCasePage-uk5jmSsj.js} +16 -36
  164. package/dist/admin/UseCasePage-uk5jmSsj.js.map +1 -0
  165. package/dist/admin/admin-dE-jnuNr.mjs +339 -0
  166. package/dist/admin/admin-dE-jnuNr.mjs.map +1 -0
  167. package/dist/admin/{admin-vlKSOeHB.js → admin-sk7xXllW.js} +146 -61
  168. package/dist/admin/admin-sk7xXllW.js.map +1 -0
  169. package/dist/admin/{apiTokens-bNRitXGF.mjs → apiTokens-W-bmo-dU.mjs} +2 -2
  170. package/dist/admin/{apiTokens-bNRitXGF.mjs.map → apiTokens-W-bmo-dU.mjs.map} +1 -1
  171. package/dist/admin/{apiTokens-lXn03No3.js → apiTokens-amUH0Wax.js} +2 -2
  172. package/dist/admin/{apiTokens-lXn03No3.js.map → apiTokens-amUH0Wax.js.map} +1 -1
  173. package/dist/admin/{constants-wnw4TGwG.mjs → constants-K5IOuR0b.mjs} +7 -7
  174. package/dist/admin/constants-K5IOuR0b.mjs.map +1 -0
  175. package/dist/admin/{constants-qdY4HMAg.js → constants-ZW8_ZgiN.js} +8 -12
  176. package/dist/admin/constants-ZW8_ZgiN.js.map +1 -0
  177. package/dist/admin/ee.js +1 -1
  178. package/dist/admin/ee.mjs +1 -1
  179. package/dist/admin/{index-7fPlAzj6.mjs → index--VHJr8__.mjs} +596 -410
  180. package/dist/admin/index--VHJr8__.mjs.map +1 -0
  181. package/dist/admin/{index-FJLgZ-Wg.js → index-8r8zglVb.js} +604 -418
  182. package/dist/admin/index-8r8zglVb.js.map +1 -0
  183. package/dist/admin/index.js +6 -3
  184. package/dist/admin/index.js.map +1 -1
  185. package/dist/admin/index.mjs +3 -3
  186. package/dist/admin/{rbac-uVd0RAE5.mjs → rbac-OjYDiE2n.mjs} +5 -5
  187. package/dist/admin/rbac-OjYDiE2n.mjs.map +1 -0
  188. package/dist/admin/{rbac-xgYdpUSq.js → rbac-xo8GO653.js} +7 -7
  189. package/dist/admin/rbac-xo8GO653.js.map +1 -0
  190. package/dist/admin/{selectors-AvywwQRm.mjs → selectors-k4OkEbL7.mjs} +2 -2
  191. package/dist/admin/{selectors-AvywwQRm.mjs.map → selectors-k4OkEbL7.mjs.map} +1 -1
  192. package/dist/admin/{selectors-C62Wf5On.js → selectors-lQOnkFXz.js} +2 -2
  193. package/dist/admin/{selectors-C62Wf5On.js.map → selectors-lQOnkFXz.js.map} +1 -1
  194. package/dist/admin/src/components/FormInputs/Email.d.ts +1 -1
  195. package/dist/admin/src/components/FormInputs/Enumeration.d.ts +1 -1
  196. package/dist/admin/src/components/FormInputs/Json.d.ts +2 -4
  197. package/dist/admin/src/components/FormInputs/Password.d.ts +1 -1
  198. package/dist/admin/src/components/FormInputs/String.d.ts +1 -4
  199. package/dist/admin/src/components/FormInputs/Textarea.d.ts +1 -1
  200. package/dist/admin/src/components/FormInputs/types.d.ts +1 -0
  201. package/dist/admin/src/components/Layouts/ActionLayout.d.ts +7 -0
  202. package/dist/admin/src/components/Layouts/ContentLayout.d.ts +6 -0
  203. package/dist/admin/src/components/Layouts/GridLayout.d.ts +17 -0
  204. package/dist/admin/src/components/Layouts/HeaderLayout.d.ts +19 -0
  205. package/dist/admin/src/components/MainNav/MainNav.d.ts +3 -0
  206. package/dist/admin/src/components/MainNav/NavLink.d.ts +5 -3
  207. package/dist/admin/src/components/MainNav/NavUser.d.ts +7 -0
  208. package/dist/admin/src/hooks/useAPIErrorHandler.d.ts +2 -4
  209. package/dist/admin/src/hooks/useFetchClient.d.ts +7 -8
  210. package/dist/admin/src/hooks/useFocusInputField.d.ts +2 -5
  211. package/dist/admin/src/index.d.ts +6 -1
  212. package/dist/admin/src/layouts/UnauthenticatedLayout.d.ts +4 -1
  213. package/dist/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.d.ts +6 -51
  214. package/dist/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.d.ts +1 -1
  215. package/dist/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.d.ts +2 -1
  216. package/dist/admin/src/pages/Settings/pages/Roles/components/HiddenAction.d.ts +2 -1
  217. package/dist/admin/src/pages/Settings/pages/Webhooks/components/Events.d.ts +2 -3
  218. package/dist/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.d.ts +2 -2
  219. package/dist/admin/src/services/contentApi.d.ts +1 -1
  220. package/dist/admin/src/utils/baseQuery.d.ts +6 -6
  221. package/dist/admin/src/utils/getFetchClient.d.ts +40 -10
  222. package/dist/admin/src/utils/normalizeAPIError.d.ts +2 -5
  223. package/dist/admin/test.js +2 -2
  224. package/dist/admin/test.mjs +2 -2
  225. package/dist/admin/{transferTokens-5qQjIKFd.js → transferTokens-6WfQBaQ-.js} +2 -2
  226. package/dist/admin/{transferTokens-5qQjIKFd.js.map → transferTokens-6WfQBaQ-.js.map} +1 -1
  227. package/dist/admin/{transferTokens-ngan7vz6.mjs → transferTokens-i692XANY.mjs} +2 -2
  228. package/dist/admin/{transferTokens-ngan7vz6.mjs.map → transferTokens-i692XANY.mjs.map} +1 -1
  229. package/dist/admin/{useAdminRoles-yjN2uT_o.js → useAdminRoles-Y5UQ6Egv.js} +2 -2
  230. package/dist/admin/{useAdminRoles-yjN2uT_o.js.map → useAdminRoles-Y5UQ6Egv.js.map} +1 -1
  231. package/dist/admin/{useAdminRoles-X4pwDHaW.mjs → useAdminRoles-eVMCxlw1.mjs} +2 -2
  232. package/dist/admin/{useAdminRoles-X4pwDHaW.mjs.map → useAdminRoles-eVMCxlw1.mjs.map} +1 -1
  233. package/dist/admin/{useLicenseLimitNotification-T2LoOH4B.mjs → useLicenseLimitNotification-OHVMxaBa.mjs} +3 -3
  234. package/dist/admin/{useLicenseLimitNotification-T2LoOH4B.mjs.map → useLicenseLimitNotification-OHVMxaBa.mjs.map} +1 -1
  235. package/dist/admin/{useLicenseLimitNotification-wrxezW0C.js → useLicenseLimitNotification-sfaZoueO.js} +3 -3
  236. package/dist/admin/{useLicenseLimitNotification-wrxezW0C.js.map → useLicenseLimitNotification-sfaZoueO.js.map} +1 -1
  237. package/dist/admin/{useLicenseLimits-fKc9uCtd.mjs → useLicenseLimits--WDjYzSj.mjs} +2 -2
  238. package/dist/admin/{useLicenseLimits-fKc9uCtd.mjs.map → useLicenseLimits--WDjYzSj.mjs.map} +1 -1
  239. package/dist/admin/{useLicenseLimits-m11DOu9p.js → useLicenseLimits-mA4KtQ81.js} +2 -2
  240. package/dist/admin/{useLicenseLimits-m11DOu9p.js.map → useLicenseLimits-mA4KtQ81.js.map} +1 -1
  241. package/dist/admin/{useWebhooks-8VWSFqNg.mjs → useWebhooks-0pDqX-k4.mjs} +2 -2
  242. package/dist/admin/{useWebhooks-8VWSFqNg.mjs.map → useWebhooks-0pDqX-k4.mjs.map} +1 -1
  243. package/dist/admin/{useWebhooks-oZ5DKtvz.js → useWebhooks-BBj9Ew7F.js} +2 -2
  244. package/dist/admin/{useWebhooks-oZ5DKtvz.js.map → useWebhooks-BBj9Ew7F.js.map} +1 -1
  245. package/dist/admin/{validation-rsP4iH1U.js → validation-hp8oweyu.js} +2 -2
  246. package/dist/admin/{validation-rsP4iH1U.js.map → validation-hp8oweyu.js.map} +1 -1
  247. package/dist/admin/{validation-p2q0MWxi.mjs → validation-xeirflOd.mjs} +2 -2
  248. package/dist/admin/{validation-p2q0MWxi.mjs.map → validation-xeirflOd.mjs.map} +1 -1
  249. package/dist/package.json.d.ts +12 -14
  250. package/dist/server/index.js +9 -6
  251. package/dist/server/index.js.map +1 -1
  252. package/dist/server/index.mjs +9 -6
  253. package/dist/server/index.mjs.map +1 -1
  254. package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts.map +1 -1
  255. package/dist/server/src/services/permission/permissions-manager/validate.d.ts.map +1 -1
  256. package/package.json +13 -15
  257. package/dist/admin/AdminSeatInfo-G2ipQTLk.js.map +0 -1
  258. package/dist/admin/AdminSeatInfo-ZrJlIt8M.mjs.map +0 -1
  259. package/dist/admin/ApplicationInfoPage-TImAEuc3.mjs.map +0 -1
  260. package/dist/admin/ApplicationInfoPage-dc0ReC0D.js.map +0 -1
  261. package/dist/admin/AuthenticatedLayout-TNbTifIA.js.map +0 -1
  262. package/dist/admin/AuthenticatedLayout-eMLYKMgW.mjs.map +0 -1
  263. package/dist/admin/ContentBox-DjmNTcxv.mjs.map +0 -1
  264. package/dist/admin/ContentBox-Mzcpnn32.js.map +0 -1
  265. package/dist/admin/CreatePage-03MgCK7Z.js.map +0 -1
  266. package/dist/admin/CreatePage-uTwt_c8J.mjs.map +0 -1
  267. package/dist/admin/EditPage-F3yH0Fy6.mjs.map +0 -1
  268. package/dist/admin/EditPage-Ly5MBiuB.js.map +0 -1
  269. package/dist/admin/EditPage-UqMDbMvJ.js.map +0 -1
  270. package/dist/admin/EditPage-XSz7Wpt8.mjs.map +0 -1
  271. package/dist/admin/EditPage-YqW1NIMp.js.map +0 -1
  272. package/dist/admin/EditPage-lyFePXWl.mjs.map +0 -1
  273. package/dist/admin/EditView-bRFkRKAz.js.map +0 -1
  274. package/dist/admin/EditView-r0lx661I.mjs.map +0 -1
  275. package/dist/admin/EditViewPage-f5dHmqdT.mjs.map +0 -1
  276. package/dist/admin/EditViewPage-tAsn6QS9.js.map +0 -1
  277. package/dist/admin/HomePage-UTnZwpp-.js.map +0 -1
  278. package/dist/admin/HomePage-ZF3T0k2r.mjs.map +0 -1
  279. package/dist/admin/InstalledPluginsPage-eOXi3oTN.mjs.map +0 -1
  280. package/dist/admin/InstalledPluginsPage-o43CGz2w.js.map +0 -1
  281. package/dist/admin/Layout-XxmAreH1.js.map +0 -1
  282. package/dist/admin/Layout-mnn4_IJp.mjs.map +0 -1
  283. package/dist/admin/ListPage-5g8MtUEB.mjs.map +0 -1
  284. package/dist/admin/ListPage-AFDAiR9X.mjs.map +0 -1
  285. package/dist/admin/ListPage-NTxNcftS.js.map +0 -1
  286. package/dist/admin/ListPage-Pi_dzfDr.js.map +0 -1
  287. package/dist/admin/ListPage-URtxfNJ4.js.map +0 -1
  288. package/dist/admin/ListPage-eNkUD3v_.mjs.map +0 -1
  289. package/dist/admin/ListPage-hln8fKzE.js.map +0 -1
  290. package/dist/admin/ListPage-kdjzZ2al.mjs.map +0 -1
  291. package/dist/admin/ListView-FBh2WTHx.mjs.map +0 -1
  292. package/dist/admin/ListView-f2wVT21J.js.map +0 -1
  293. package/dist/admin/ListView-pYVBJ4lg.js.map +0 -1
  294. package/dist/admin/ListView-uwPF62w6.mjs.map +0 -1
  295. package/dist/admin/Login-3rLFPliB.js.map +0 -1
  296. package/dist/admin/Login-FSNzATl0.mjs.map +0 -1
  297. package/dist/admin/MarketplacePage-kNQPkoZK.mjs.map +0 -1
  298. package/dist/admin/MarketplacePage-sSTqINSu.js.map +0 -1
  299. package/dist/admin/Permissions-NlSnXUKO.js.map +0 -1
  300. package/dist/admin/Permissions-aU1eesjP.mjs.map +0 -1
  301. package/dist/admin/ProfilePage-T2kC_KoM.mjs.map +0 -1
  302. package/dist/admin/ProfilePage-jU98pa61.js.map +0 -1
  303. package/dist/admin/PurchaseAuditLogs-GreHFPSR.js.map +0 -1
  304. package/dist/admin/PurchaseAuditLogs-_1tVWtNF.mjs.map +0 -1
  305. package/dist/admin/PurchaseSingleSignOn-6t4xuNBd.js.map +0 -1
  306. package/dist/admin/PurchaseSingleSignOn-VUU-U4wi.mjs.map +0 -1
  307. package/dist/admin/SSOProviders-FZwT7RmU.js.map +0 -1
  308. package/dist/admin/SSOProviders-GcYDRAyn.mjs.map +0 -1
  309. package/dist/admin/SelectRoles--ys30CdN.mjs.map +0 -1
  310. package/dist/admin/SelectRoles-EdE6yfsj.js.map +0 -1
  311. package/dist/admin/SingleSignOnPage-Y-brfYQ1.mjs +0 -234
  312. package/dist/admin/SingleSignOnPage-Y-brfYQ1.mjs.map +0 -1
  313. package/dist/admin/SingleSignOnPage-nv121JbB.js +0 -259
  314. package/dist/admin/SingleSignOnPage-nv121JbB.js.map +0 -1
  315. package/dist/admin/Table--He5qeQG.mjs.map +0 -1
  316. package/dist/admin/Table-HXu3Nz4W.js.map +0 -1
  317. package/dist/admin/TokenTypeSelect-kgKThMAL.mjs.map +0 -1
  318. package/dist/admin/TokenTypeSelect-yY2kwTyO.js.map +0 -1
  319. package/dist/admin/UseCasePage-6_WRtTwv.js.map +0 -1
  320. package/dist/admin/UseCasePage-bfP-fDoW.mjs.map +0 -1
  321. package/dist/admin/admin-5SXhE_nJ.mjs +0 -256
  322. package/dist/admin/admin-5SXhE_nJ.mjs.map +0 -1
  323. package/dist/admin/admin-vlKSOeHB.js.map +0 -1
  324. package/dist/admin/constants-qdY4HMAg.js.map +0 -1
  325. package/dist/admin/constants-wnw4TGwG.mjs.map +0 -1
  326. package/dist/admin/index-7fPlAzj6.mjs.map +0 -1
  327. package/dist/admin/index-FJLgZ-Wg.js.map +0 -1
  328. package/dist/admin/rbac-uVd0RAE5.mjs.map +0 -1
  329. package/dist/admin/rbac-xgYdpUSq.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-7fPlAzj6.mjs","sources":["../../ee/admin/src/constants.ts","../../ee/admin/src/pages/SettingsPage/constants.ts","../../admin/src/features/BackButton.tsx","../../admin/src/components/GuidedTour/Provider.tsx","../../admin/src/components/Providers.tsx","../../admin/src/App.tsx","../../admin/src/assets/images/logo-strapi-2022.svg","../../admin/src/hooks/useClipboard.ts","../../admin/src/components/ErrorElement.tsx","../../admin/src/constants.ts","../../admin/src/core/apis/CustomFields.ts","../../admin/src/core/apis/Plugin.ts","../../admin/src/core/store/configure.ts","../../admin/src/core/utils/basename.ts","../../admin/src/core/utils/createHook.ts","../../admin/src/utils/objects.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/NotFoundPage.tsx","../../admin/src/pages/Settings/constants.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/hooks/useQueryParams.ts","../../admin/src/components/Filters.tsx","../../admin/src/components/Pagination.tsx","../../admin/src/components/SearchInput.tsx","../../admin/src/components/Table.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 },\n} satisfies {\n settings: Pick<PermissionMap['settings'], 'auditLogs' | 'review-workflows' | 'sso'>;\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","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 { 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 as={NavLink}\n // @ts-expect-error – the DS does not infer the props from the `as` prop to the component.\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 };\nexport type { BackButtonProps, HistoryProviderProps, HistoryContextValue, HistoryState };\n","import * as React from 'react';\n\nimport { produce } from 'immer';\nimport get from 'lodash/get';\nimport set from 'lodash/set';\n\nconst GUIDED_TOUR_COMPLETED_STEPS = 'GUIDED_TOUR_COMPLETED_STEPS';\nconst GUIDED_TOUR_CURRENT_STEP = 'GUIDED_TOUR_CURRENT_STEP';\nconst GUIDED_TOUR_SKIPPED = 'GUIDED_TOUR_SKIPPED';\n\nconst GUIDED_TOUR_KEYS = {\n GUIDED_TOUR_COMPLETED_STEPS,\n GUIDED_TOUR_CURRENT_STEP,\n GUIDED_TOUR_SKIPPED,\n} as const;\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourProvider\n * -----------------------------------------------------------------------------------------------*/\n\nimport { createContext } from '../Context';\n\ntype SectionKey = keyof GuidedTourContextValue['guidedTourState'];\ntype StepKey = keyof GuidedTourContextValue['guidedTourState'][SectionKey];\ntype Step = `${SectionKey}.${StepKey}`;\ninterface GuidedTourContextValue {\n currentStep: Step | null;\n guidedTourState: {\n contentTypeBuilder: {\n create: boolean;\n success: boolean;\n };\n contentManager: {\n create: boolean;\n success: boolean;\n };\n apiTokens: {\n create: boolean;\n success: boolean;\n };\n transferTokens: {\n create: boolean;\n success: boolean;\n };\n };\n isGuidedTourVisible: boolean;\n isSkipped: boolean;\n setCurrentStep: (step: Step | null) => void | null;\n setGuidedTourVisibility: (isVisible: boolean) => void;\n setSkipped: (isSkipped: boolean) => void;\n setStepState: (step: Step, state: boolean) => void;\n startSection: (section: SectionKey) => void;\n}\n\nconst [GuidedTourProviderImpl, useGuidedTour] = createContext<GuidedTourContextValue>('GuidedTour');\n\ninterface GuidedTourProviderProps {\n children: React.ReactNode;\n}\n\nconst GuidedTourProvider = ({ children }: GuidedTourProviderProps) => {\n const [{ currentStep, guidedTourState, isGuidedTourVisible, isSkipped }, dispatch] =\n React.useReducer(reducer, initialState, initialiseState);\n\n const setCurrentStep = (step: SetCurrentStepAction['step']) => {\n // if step is null it is intentional, we need to dispatch it\n if (step !== null) {\n const isStepAlreadyDone = get(guidedTourState, step);\n const [sectionName, stepName] = step.split('.') as [SectionKey, StepKey];\n const sectionArray = Object.entries(guidedTourState[sectionName]);\n\n const currentStepIndex = sectionArray.findIndex(([key]) => key === stepName);\n const previousSteps = sectionArray.slice(0, currentStepIndex);\n\n const isStepToShow = previousSteps.every(([, sectionValue]) => sectionValue);\n\n if (isStepAlreadyDone || isSkipped || !isStepToShow) {\n return null;\n }\n }\n\n window.localStorage.setItem(GUIDED_TOUR_CURRENT_STEP, JSON.stringify(null));\n\n return dispatch({\n type: 'SET_CURRENT_STEP',\n step,\n });\n };\n\n const setGuidedTourVisibility = (value: SetGuidedTourVisibilityAction['value']) => {\n dispatch({\n type: 'SET_GUIDED_TOUR_VISIBILITY',\n value,\n });\n };\n\n const setStepState = (currentStep: Step, value: SetStepStateAction['value']) => {\n addCompletedStep(currentStep);\n\n dispatch({\n type: 'SET_STEP_STATE',\n currentStep,\n value,\n });\n };\n\n const startSection = (sectionName: SectionKey) => {\n const sectionSteps = guidedTourState[sectionName];\n\n if (sectionSteps) {\n const guidedTourArray = Object.entries(guidedTourState);\n\n // Find current section position in the guidedTourArray\n // Get only previous sections based on current section position\n const currentSectionIndex = guidedTourArray.findIndex(([key]) => key === sectionName);\n const previousSections = guidedTourArray.slice(0, currentSectionIndex);\n\n // Check if every steps from previous section are done\n const isSectionToShow = previousSections.every(([, sectionValue]) =>\n Object.values(sectionValue).every(Boolean)\n );\n\n const [firstStep] = Object.keys(sectionSteps) as [StepKey];\n const isFirstStepDone = sectionSteps[firstStep];\n\n if (isSectionToShow && !currentStep && !isFirstStepDone) {\n setCurrentStep(`${sectionName}.${firstStep}`);\n }\n }\n };\n\n const setSkipped = (value: SetSkippedAction['value']) => {\n window.localStorage.setItem(GUIDED_TOUR_SKIPPED, JSON.stringify(value));\n\n dispatch({\n type: 'SET_SKIPPED',\n value,\n });\n };\n\n return (\n <GuidedTourProviderImpl\n guidedTourState={guidedTourState}\n currentStep={currentStep}\n setCurrentStep={setCurrentStep}\n setGuidedTourVisibility={setGuidedTourVisibility}\n setSkipped={setSkipped}\n setStepState={setStepState}\n startSection={startSection}\n isGuidedTourVisible={isGuidedTourVisible}\n isSkipped={isSkipped}\n >\n {children}\n </GuidedTourProviderImpl>\n );\n};\n\ntype State = Pick<\n GuidedTourContextValue,\n 'guidedTourState' | 'currentStep' | 'isGuidedTourVisible' | 'isSkipped'\n>;\n\nconst initialState = {\n currentStep: null,\n guidedTourState: {\n contentTypeBuilder: {\n create: false,\n success: false,\n },\n contentManager: {\n create: false,\n success: false,\n },\n apiTokens: {\n create: false,\n success: false,\n },\n transferTokens: {\n create: false,\n success: false,\n },\n },\n isGuidedTourVisible: false,\n isSkipped: false,\n} satisfies State;\n\ninterface SetCurrentStepAction {\n type: 'SET_CURRENT_STEP';\n step: Step | null;\n}\n\ninterface SetStepStateAction {\n type: 'SET_STEP_STATE';\n currentStep: Step;\n value: boolean;\n}\n\ninterface SetSkippedAction {\n type: 'SET_SKIPPED';\n value: boolean;\n}\n\ninterface SetGuidedTourVisibilityAction {\n type: 'SET_GUIDED_TOUR_VISIBILITY';\n value: boolean;\n}\n\ntype Action =\n | SetCurrentStepAction\n | SetStepStateAction\n | SetSkippedAction\n | SetGuidedTourVisibilityAction;\n\nconst reducer: React.Reducer<State, Action> = (state: State = initialState, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'SET_CURRENT_STEP': {\n draftState.currentStep = action.step;\n break;\n }\n case 'SET_STEP_STATE': {\n const [section, step] = action.currentStep.split('.') as [SectionKey, StepKey];\n draftState.guidedTourState[section][step] = action.value;\n break;\n }\n case 'SET_SKIPPED': {\n draftState.isSkipped = action.value;\n break;\n }\n case 'SET_GUIDED_TOUR_VISIBILITY': {\n draftState.isGuidedTourVisible = action.value;\n break;\n }\n default: {\n return draftState;\n }\n }\n });\n\nconst initialiseState = (initialState: State) => {\n const copyInitialState = { ...initialState };\n const guidedTourLocaleStorage = JSON.parse(\n window.localStorage.getItem(GUIDED_TOUR_COMPLETED_STEPS) ?? '[]'\n );\n const currentStepLocaleStorage = JSON.parse(\n window.localStorage.getItem(GUIDED_TOUR_CURRENT_STEP) ?? 'null'\n );\n const skippedLocaleStorage = JSON.parse(\n window.localStorage.getItem(GUIDED_TOUR_SKIPPED) ?? 'false'\n );\n\n if (Array.isArray(guidedTourLocaleStorage)) {\n guidedTourLocaleStorage.forEach((step) => {\n const [sectionName, stepName] = step.split('.');\n set(copyInitialState, ['guidedTourState', sectionName, stepName], true);\n });\n }\n\n // if current step when initializing mark it as done\n if (currentStepLocaleStorage) {\n const [sectionName, stepName] = currentStepLocaleStorage.split('.') as [SectionKey, StepKey];\n set(copyInitialState, ['guidedTourState', sectionName, stepName], true);\n\n addCompletedStep(currentStepLocaleStorage as Step);\n\n window.localStorage.setItem(GUIDED_TOUR_CURRENT_STEP, JSON.stringify(null));\n }\n\n if (skippedLocaleStorage !== null) {\n set(copyInitialState, 'isSkipped', skippedLocaleStorage);\n }\n\n return copyInitialState;\n};\n\n/**\n * @description Add a completed step to the local storage if it does not already exist.\n */\nconst addCompletedStep = (completedStep: Step) => {\n const currentSteps = JSON.parse(window.localStorage.getItem(GUIDED_TOUR_COMPLETED_STEPS) ?? '[]');\n\n if (!Array.isArray(currentSteps)) {\n return;\n }\n\n const isAlreadyStored = currentSteps.includes(completedStep);\n\n if (isAlreadyStored) {\n return;\n }\n\n window.localStorage.setItem(\n GUIDED_TOUR_COMPLETED_STEPS,\n JSON.stringify([...currentSteps, completedStep])\n );\n};\n\nexport { GuidedTourProvider, useGuidedTour, GuidedTourContextValue, GUIDED_TOUR_KEYS };\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.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.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","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 { 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 { Alert, Button, Flex, Main, Typography, Link } 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(Typography)`\n word-break: break-all;\n color: ${({ theme }) => theme.colors.danger600};\n`;\n\nexport { ErrorElement };\n","import { PermissionMap } from './types/permissions';\n\nimport type { StrapiAppSettingLink } from './StrapiApp';\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 },\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' | 'lockIcon'> {\n lockIcon?: 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 // 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 lockIcon: 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 lockIcon: 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 {\n configureStore,\n StoreEnhancer,\n Middleware,\n Reducer,\n combineReducers,\n} from '@reduxjs/toolkit';\n\nimport { reducer as appReducer, AppState } 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 adminApi.middleware,\n ...appMiddlewares.map((m) => m()),\n ],\n enhancers: [injectReducerStoreEnhancer(coreReducers)],\n });\n\n return store;\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","import clone from 'lodash/clone';\nimport toPath from 'lodash/toPath';\n\n/**\n * Deeply get a value from an object via its path.\n */\nexport function getIn(obj: any, key: string | string[], def?: any, pathStartIndex: number = 0) {\n const path = toPath(key);\n while (obj && pathStartIndex < path.length) {\n obj = obj[path[pathStartIndex++]];\n }\n\n // check if path is not in the end\n if (pathStartIndex !== path.length && !obj) {\n return def;\n }\n\n return obj === undefined ? def : obj;\n}\n\n/** @internal is the given object an Object? */\nexport const isObject = (obj: any): obj is object =>\n obj !== null && typeof obj === 'object' && !Array.isArray(obj);\n\n/** @internal is the given object an integer? */\nexport const isInteger = (obj: any): boolean => String(Math.floor(Number(obj))) === obj;\n\n/**\n * Deeply set a value from in object via its path. If the value at `path`\n * has changed, return a shallow copy of obj with `value` set at `path`.\n * If `value` has not changed, return the original `obj`.\n *\n * Existing objects / arrays along `path` are also shallow copied. Sibling\n * objects along path retain the same internal js reference. Since new\n * objects / arrays are only created along `path`, we can test if anything\n * changed in a nested structure by comparing the object's reference in\n * the old and new object, similar to how russian doll cache invalidation\n * works.\n *\n * In earlier versions of this function, which used cloneDeep, there were\n * issues whereby settings a nested value would mutate the parent\n * instead of creating a new object. `clone` avoids that bug making a\n * shallow copy of the objects along the update path\n * so no object is mutated in place.\n *\n * Before changing this function, please read through the following\n * discussions.\n *\n * @see https://github.com/developit/linkstate\n * @see https://github.com/jaredpalmer/formik/pull/123\n */\nexport function setIn(obj: any, path: string, value: any): any {\n const res: any = clone(obj); // this keeps inheritance when obj is a class\n let resVal: any = res;\n let i = 0;\n const pathArray = toPath(path);\n\n for (; i < pathArray.length - 1; i++) {\n const currentPath: string = pathArray[i];\n const currentObj: any = getIn(obj, pathArray.slice(0, i + 1));\n\n if (currentObj && (isObject(currentObj) || Array.isArray(currentObj))) {\n resVal = resVal[currentPath] = clone(currentObj);\n } else {\n const nextPath: string = pathArray[i + 1];\n resVal = resVal[currentPath] = isInteger(nextPath) && Number(nextPath) >= 0 ? [] : {};\n }\n }\n\n // Return original object if new value is the same as current\n if ((i === 0 ? obj : resVal)[pathArray[i]] === value) {\n return obj;\n }\n\n if (value === undefined) {\n delete resVal[pathArray[i]];\n } else {\n resVal[pathArray[i]] = value;\n }\n\n // If the path array has a single element, the loop did not run.\n // Deleting on `resVal` had no effect in this scenario, so we delete on the result instead.\n if (i === 0 && value === undefined) {\n delete res[pathArray[i]];\n }\n\n return res;\n}\n","import * as React from 'react';\n\nimport {\n Button,\n Dialog,\n DialogBody,\n DialogFooter,\n Flex,\n Typography,\n useCallbackRef,\n useComposedRefs,\n} 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: () => 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}\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, ...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: {},\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: FormContextValue['validate'] = React.useCallback(\n async (shouldSetErrors: boolean = true) => {\n setErrors({});\n\n if (!props.validationSchema) {\n return { data: state.values };\n }\n\n try {\n const data = await props.validationSchema.validate(state.values, { abortEarly: false });\n\n return { data };\n } catch (err) {\n if (isErrorYupValidationError(err)) {\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 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 val = value;\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}\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 * 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; // otherwise its just a field.\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 : undefined\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}\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 error = useForm('useField', (state) => getIn(state.errors, path));\n\n return {\n initialValue,\n /**\n * Errors can be a string, or a MesaageDescriptor, so we need to handle both cases.\n * If it's anything else, we don't return it.\n */\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?: string | object): object is TranslationMessage => {\n return (\n typeof object === 'object' && object !== null && 'id' in object && '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 = () => {\n onCancel();\n blocker.reset();\n };\n\n return (\n <Dialog\n isOpen\n title={formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n })}\n onClose={handleCancel}\n >\n <DialogBody>\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography as=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'global.prompt.unsaved',\n defaultMessage: 'You have unsaved changes, are you sure you want to leave?',\n })}\n </Typography>\n </Flex>\n </DialogBody>\n <DialogFooter\n startAction={\n <Button onClick={handleCancel} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n }\n endAction={\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 }\n />\n </Dialog>\n );\n }\n\n return null;\n};\n\nexport { Form, Blocker, useField, useForm };\nexport type {\n FormHelpers,\n FormProps,\n FormValues,\n FormContextValue,\n FormState,\n FieldValue,\n InputProps,\n};\n","import { MutableRefObject, useEffect, useMemo, useState } from 'react';\n\nimport { useLocation } from 'react-router-dom';\n\ntype InputFieldRefs<T extends HTMLElement> = T | { input: MutableRefObject<T> } | null;\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>(\n name: string\n): ((node: InputFieldRefs<T>) => void) => {\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<InputFieldRefs<T>>(null);\n\n useEffect(() => {\n if (search.has('field') && search.get('field') === name && field) {\n /**\n * TODO: simplify this when we use v2 of the design-system\n */\n if ('input' in field) {\n field.input.current.focus();\n field.input.current.scrollIntoView({\n block: 'center',\n });\n } else {\n field.focus();\n field.scrollIntoView({\n block: 'center',\n });\n }\n }\n }, [search, name, field]);\n\n return setField;\n};\n\nexport { useFocusInputField };\n","import { forwardRef } from 'react';\n\nimport { ToggleInput, useComposedRefs } 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>((props, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<boolean | null>(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs<HTMLInputElement | null>(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <ToggleInput\n ref={composedRefs}\n checked={field.value === null ? null : field.value || false}\n error={field.error}\n /**\n * TODO: reintroduce labelActions\n */\n // labelAction={labelAction}\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 onClear={() => {\n field.onChange(props.name, null);\n }}\n {...props}\n />\n );\n});\n\nexport { BooleanInput };\n","import { forwardRef } from 'react';\n\nimport { Checkbox, useComposedRefs } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst CheckboxInput = forwardRef<HTMLInputElement, InputProps>((props, ref) => {\n const field = useField<boolean>(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs<HTMLInputElement | null>(ref, fieldRef);\n\n return (\n <Checkbox\n onValueChange={(checked) => field.onChange(props.name, checked)}\n ref={composedRefs}\n value={field.value}\n {...props}\n >\n {props.label || props['aria-label']}\n </Checkbox>\n );\n});\n\nexport { CheckboxInput };\n","import { forwardRef } from 'react';\n\nimport { DatePicker, useComposedRefs } 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>(({ type: _type, ...props }, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<Date>(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs<HTMLInputElement | null>(ref, fieldRef);\n const value = typeof field.value === 'string' ? new Date(field.value) : field.value;\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <DatePicker\n ref={composedRefs}\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n error={field.error}\n id={props.name}\n onChange={(date) => {\n field.onChange(props.name, date);\n }}\n onClear={() => field.onChange(props.name, undefined)}\n selectedDate={value}\n {...props}\n />\n );\n});\n\nexport { DateInput };\n","import { forwardRef } from 'react';\n\nimport { DateTimePicker, useComposedRefs } 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>((props, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<Date>(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs<HTMLInputElement | null>(ref, fieldRef);\n const value = typeof field.value === 'string' ? new Date(field.value) : field.value;\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <DateTimePicker\n ref={composedRefs}\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n error={field.error}\n id={props.name}\n onChange={(date) => {\n field.onChange(props.name, date);\n }}\n onClear={() => field.onChange(props.name, undefined)}\n value={value}\n {...props}\n />\n );\n});\n\nexport { DateTimeInput };\n","import { forwardRef } from 'react';\n\nimport { TextInput, useComposedRefs } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport type { StringProps } from './types';\n\nexport const EmailInput = forwardRef<any, StringProps>((props, ref) => {\n const field = useField(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <TextInput\n ref={composedRefs}\n autoComplete=\"email\"\n error={field.error}\n id={props.name}\n onChange={field.onChange}\n defaultValue={field.initialValue}\n value={field.value}\n {...props}\n type=\"email\"\n />\n );\n});\n","import { forwardRef } from 'react';\n\nimport { SingleSelect, SingleSelectOption, useComposedRefs } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { EnumerationProps } from './types';\n\nexport const EnumerationInput = forwardRef<any, EnumerationProps>(\n ({ options = [], ...props }, ref) => {\n const field = useField(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <SingleSelect\n ref={composedRefs}\n error={field.error}\n onChange={(value) => {\n field.onChange(props.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 );\n }\n);\n","import { forwardRef } from 'react';\n\nimport { JSONInput as JSONInputImpl, useComposedRefs } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\n/**\n * TODO: fix the ref type when the design system is fixed.\n */\nexport const JsonInput = forwardRef<any, InputProps>((props, ref) => {\n const field = useField(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <JSONInputImpl\n ref={composedRefs}\n value={field.value}\n error={field.error}\n onChange={(json) => {\n // Default to null when the field is not required and there is no input value\n const value = props.required && !json.length ? null : json;\n field.onChange(props.name, value);\n }}\n minHeight={`25.2rem`}\n maxHeight={`50.4rem`}\n {...props}\n />\n );\n});\n","import { forwardRef } from 'react';\n\nimport { NumberInput, useComposedRefs } 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>(({ type, ...props }, ref) => {\n const field = useField<number>(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs<HTMLInputElement | null>(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <NumberInput\n ref={composedRefs}\n defaultValue={field.initialValue}\n error={field.error}\n id={props.name}\n onValueChange={(value) => {\n field.onChange(props.name, value);\n }}\n step={type === 'float' || type == 'decimal' ? 0.01 : 1}\n value={field.value}\n {...props}\n />\n );\n});\n\nexport { NumberInputImpl as NumberInput };\n","import { forwardRef, useState } from 'react';\n\nimport { TextInput, useComposedRefs } 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\nexport const PasswordInput = forwardRef<any, StringProps>((props, ref) => {\n const [showPassword, setShowPassword] = useState(false);\n const { formatMessage } = useIntl();\n const field = useField(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <TextInput\n ref={composedRefs}\n autoComplete=\"password\"\n error={field.error}\n endAction={\n <button\n aria-label={formatMessage({\n id: 'Auth.form.password.show-password',\n defaultMessage: 'Show password',\n })}\n onClick={() => {\n setShowPassword((prev) => !prev);\n }}\n style={{\n border: 'none',\n padding: 0,\n background: 'transparent',\n }}\n type=\"button\"\n >\n {showPassword ? <Eye fill=\"neutral500\" /> : <EyeStriked fill=\"neutral500\" />}\n </button>\n }\n id={props.name}\n onChange={field.onChange}\n defaultValue={field.initialValue}\n value={field.value}\n {...props}\n type={showPassword ? 'text' : 'password'}\n />\n );\n});\n","import { forwardRef } from 'react';\n\nimport { TextInput, useComposedRefs } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { type InputProps, useField } from '../Form';\n\n/**\n * TODO: fix the ref type when the design system is fixed.\n */\nexport const StringInput = forwardRef<any, InputProps>(({ ...props }, ref) => {\n const field = useField(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <TextInput\n ref={composedRefs}\n error={field.error}\n defaultValue={field.initialValue}\n onChange={field.onChange}\n value={field.value ?? ''}\n {...props}\n />\n );\n});\n","import { forwardRef } from 'react';\n\nimport { Textarea, useComposedRefs } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport type { StringProps } from './types';\n\nexport const TextareaInput = forwardRef<any, StringProps>((props, ref) => {\n const field = useField(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <Textarea\n ref={composedRefs}\n defaultValue={field.initialValue}\n error={field.error}\n id={props.name}\n onChange={field.onChange}\n value={field.value ?? ''}\n {...props}\n />\n );\n});\n","import { forwardRef } from 'react';\n\nimport { TimePicker, useComposedRefs } 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>((props, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<string>(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs<HTMLInputElement | null>(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <TimePicker\n ref={composedRefs}\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n error={field.error}\n id={props.name}\n onChange={(time) => {\n field.onChange(props.name, time);\n }}\n onClear={() => field.onChange(props.name, undefined)}\n value={field.value ?? ''}\n {...props}\n />\n );\n});\n\nexport { TimeInput };\n","import { forwardRef, memo } from 'react';\n\nimport { TextInput, useComposedRefs } 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 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>((props, ref) => {\n const { error } = useField(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n <TextInput\n ref={composedRefs}\n disabled\n error={error}\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n label={props.label}\n id={props.name}\n hint={props.hint}\n name={props.name}\n placeholder={`Unsupported field type: ${props.type}`}\n required={props.required}\n type=\"text\"\n value=\"\"\n />\n );\n});\n\nexport { 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 { Box, Flex, SingleSelect, SingleSelectOption } 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(Box)`\n margin: 0 auto;\n width: 552px;\n`;\n\nexport const Column = styled(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 as=\"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 .email({\n id: translatedErrors.email.id,\n defaultMessage: 'Not a valid email',\n })\n .required(translatedErrors.required),\n password: yup.string().required(translatedErrors.required),\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', (state) => state.login);\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\" as=\"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 {/* @ts-expect-error – error with inferring the props from the as component */}\n <Link as={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 as=\"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.string().email(translatedErrors.email).required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required.',\n }),\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 {/* @ts-expect-error – error with inferring the props from the as component */}\n <Link as={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 as=\"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 {/* @ts-expect-error – error with inferring the props from the as component */}\n <Link as={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 as=\"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 {/* @ts-expect-error – error with inferring the props from the as component */}\n <Link as={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 FieldLabel,\n FieldInput,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\nimport styled, { useTheme } 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)`\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: 7 * 24 * 60 * 60 * 1000, // 7 days in ms\n postSubsequentDismissal: 90 * 24 * 60 * 60 * 1000, // 90 days in ms\n display: 5 * 60 * 1000, // 5 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 theme = useTheme();\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', (state) => state.user);\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 };\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={theme.zIndices[2]}\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 as=\"fieldset\" width=\"100%\">\n <Flex justifyContent=\"space-between\" width=\"100%\">\n <Box marginLeft=\"auto\" marginRight=\"auto\">\n <Typography fontWeight=\"semiBold\" as=\"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 aria-label={formatMessage({\n id: 'app.components.NpsSurvey.dismiss-survey-label',\n defaultMessage: 'Dismiss survey',\n })}\n icon={<Cross />}\n />\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 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 <FieldLabel htmlFor={`nps-survey-rating-${number}-input`}>\n <VisuallyHidden>\n <FieldInput\n type=\"radio\"\n id={`nps-survey-rating-${number}-input`}\n name=\"npsSurveyRating\"\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 </FieldLabel>\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 <FieldLabel htmlFor=\"npsSurveyFeedback\" fontWeight=\"semiBold\" fontSize={2}>\n {formatMessage({\n id: 'app.components.NpsSurvey.feedback-question',\n defaultMessage: 'Do you have any suggestion for improvements?',\n })}\n </FieldLabel>\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 >\n {values.npsSurveyFeedback}\n </Textarea>\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, GridItem, 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 { useAuth } from '../../../features/Auth';\nimport { useNotification } from '../../../features/Notifications';\nimport { useTracking } from '../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport { LayoutContent, UnauthenticatedLayout } from '../../../layouts/UnauthenticatedLayout';\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),\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 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 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.string().trim().required({\n id: translatedErrors.required.id,\n defaultMessage: 'Firstname is required',\n }),\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 confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required,\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 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});\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) ? formatAPIError(error) : 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 setToken = useAuth('Register', (state) => state.setToken);\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 setToken(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 setToken(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 as=\"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 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 <GridItem key={field.name} col={size}>\n <InputRenderer {...field} />\n </GridItem>\n ))}\n </Grid>\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 {/* @ts-expect-error – error with inferring the props from the as component */}\n <Link as={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 { useAuth } from '../../../features/Auth';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport {\n Column,\n LayoutContent,\n UnauthenticatedLayout,\n} from '../../../layouts/UnauthenticatedLayout';\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 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});\n\nconst ResetPassword = () => {\n const { formatMessage } = useIntl();\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 setToken = useAuth('ResetPassword', (state) => state.setToken);\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 setToken(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 as=\"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 {/* @ts-expect-error – error with inferring the props from the as component */}\n <Link as={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', (state) => state.token);\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 exist or\n // there is already an admin user oo\n // the user is already logged in\n if (!Component || (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","/**\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, ContentLayout, EmptyStateLayout, HeaderLayout } 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 { Page } from '../components/PageHelpers';\n\nexport const NotFoundPage = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Page.Main labelledBy=\"title\">\n <HeaderLayout\n id=\"title\"\n title={formatMessage({\n id: 'content-manager.pageNotFound',\n defaultMessage: 'Page not found',\n })}\n />\n <ContentLayout>\n <EmptyStateLayout\n action={\n // @ts-expect-error We need to accept the props of the component passed in the `as` prop\n <LinkButton forwardedAs={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 </ContentLayout>\n </Page.Main>\n );\n};\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 { 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","export const languageNativeNames = {\n ar: 'العربية',\n ca: 'Català',\n cs: 'Čeština',\n de: 'Deutsch',\n dk: 'Dansk',\n en: 'English',\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 { Provider } from 'react-redux';\nimport { RouterProvider, createBrowserRouter } from 'react-router-dom';\nimport { DefaultTheme } from 'styled-components';\n\nimport { ADMIN_PERMISSIONS_EE, getEERoutes as getBaseEERoutes } from '../../ee/admin/src/constants';\nimport { getEERoutes as getSettingsEERoutes } from '../../ee/admin/src/pages/SettingsPage/constants';\n\nimport { App } from './App';\nimport Logo from './assets/images/logo-strapi-2022.svg';\nimport { ErrorElement } from './components/ErrorElement';\nimport { LanguageProvider } from './components/LanguageProvider';\nimport { Page } from './components/PageHelpers';\nimport { Theme } from './components/Theme';\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 { RootState, Store, configureStore } from './core/store/configure';\nimport { getBasename } from './core/utils/basename';\nimport { Handler, createHook } from './core/utils/createHook';\nimport { AuthPage } from './pages/Auth/AuthPage';\nimport { NotFoundPage } from './pages/NotFoundPage';\nimport { ROUTES_CE } from './pages/Settings/constants';\nimport { THEME_LOCAL_STORAGE_KEY, LANGUAGE_LOCAL_STORAGE_KEY, ThemeName } from './reducer';\nimport { languageNativeNames } from './translations/languageNativeNames';\n\nimport type { Permission } from './features/Auth';\nimport type { ReducersMapObject, Middleware } from '@reduxjs/toolkit';\nimport type { MessageDescriptor, PrimitiveType } from 'react-intl';\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\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 lockIcon?: boolean;\n}\n\ninterface StrapiAppSettingLink extends Omit<MenuItem, 'icon' | 'notificationCount'> {\n id: string;\n}\n\ninterface StrapiAppPlugin {\n bootstrap: (\n args: Pick<StrapiApp, 'addSettingsLink' | 'addSettingsLinks' | 'getPlugin' | 'registerHook'>\n ) => void;\n register: (app: StrapiApp) => void;\n registerTrads: (args: {\n locales: string[];\n }) => Promise<{ data: Record<string, string>; locale: string }[]>;\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 UnloadedSettingsLink extends Omit<StrapiAppSettingLink, 'Component'> {\n Component: () => Promise<{ default: React.ComponentType }>;\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\ninterface StrapiAppSetting {\n id: string;\n intlLabel: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n links: StrapiAppSettingLink[];\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 /**\n * MENU API\n */\n menu: MenuItem[] = [];\n 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 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 library: Library = {\n components: {},\n fields: {},\n };\n middlewares: Array<() => Middleware<object, RootState>> = [];\n reducers: ReducersMapObject = {};\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\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 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 && 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 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 this.menu.push({\n ...link,\n Component: React.lazy(async () => {\n const mod = await link.Component();\n\n if ('default' in mod) {\n return mod;\n } else {\n return { default: mod };\n }\n }),\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 addSettingsLink = (sectionId: keyof StrapiApp['settings'], 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 && 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 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 this.settings[sectionId].links.push({\n ...link,\n Component: React.lazy(async () => {\n const mod = await link.Component();\n\n if ('default' in mod) {\n return mod;\n } else {\n return { default: mod };\n }\n }),\n });\n };\n\n addSettingsLinks = (\n sectionId: Parameters<typeof this.addSettingsLink>[0],\n links: UnloadedSettingsLink[]\n ) => {\n invariant(this.settings[sectionId], 'The section does not exist');\n invariant(Array.isArray(links), 'TypeError expected links to be an array');\n\n links.forEach((link) => {\n this.addSettingsLink(sectionId, link);\n });\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 createSettingSection = (section: StrapiAppSetting, links: UnloadedSettingsLink[]) => {\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\n invariant(Array.isArray(links), 'TypeError expected links to be an array');\n invariant(this.settings[section.id] === undefined, 'A similar section already exists');\n\n this.settings[section.id] = { ...section, links: [] };\n\n links.forEach((link) => {\n this.addSettingsLink(section.id, link);\n });\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() {\n Object.keys(this.appPlugins).forEach((plugin) => {\n this.appPlugins[plugin].register(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}.json`);\n\n return { data, locale };\n } catch {\n return { data: null, locale };\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 type Translation = Awaited<ReturnType<StrapiAppPlugin['registerTrads']>>[number];\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 const 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 },\n },\n this.middlewares,\n this.reducers\n ) as Store;\n\n const settingsRoutes = [...getSettingsEERoutes(), ...ROUTES_CE].filter(\n (route, index, refArray) => refArray.findIndex((obj) => obj.path === route.path) === index\n );\n\n const router = createBrowserRouter(\n [\n {\n path: '/*',\n errorElement: (\n <Provider store={store}>\n <LanguageProvider messages={this.configurations.translations}>\n <Theme themes={this.configurations.themes}>\n <ErrorElement />\n </Theme>\n </LanguageProvider>\n </Provider>\n ),\n element: <App strapi={this} store={store} />,\n children: [\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 path: '/*',\n lazy: async () => {\n const { PrivateAdminLayout } = await import('./layouts/AuthenticatedLayout');\n\n return {\n Component: PrivateAdminLayout,\n };\n },\n children: [\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: 'list-plugins',\n lazy: async () => {\n const { ProtectedInstalledPluginsPage } = await import(\n './pages/InstalledPluginsPage'\n );\n\n return {\n Component: ProtectedInstalledPluginsPage,\n };\n },\n },\n {\n path: 'marketplace',\n lazy: async () => {\n const { ProtectedMarketplacePage } = await import(\n './pages/Marketplace/MarketplacePage'\n );\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 ...settingsRoutes,\n ],\n },\n ...this.menu.map(({ to, Component }) => ({\n path: `${to}/*`,\n element: (\n <React.Suspense fallback={<Page.Loading />}>\n <Component />\n </React.Suspense>\n ),\n })),\n\n {\n path: '*',\n element: <NotFoundPage />,\n },\n ],\n },\n ],\n },\n ],\n {\n basename: getBasename(),\n }\n );\n\n return <RouterProvider router={router} />;\n }\n}\n\nexport { StrapiApp };\nexport type {\n StrapiAppPlugin,\n StrapiAppSettingLink,\n StrapiAppSetting,\n MenuItem,\n StrapiAppConstructorArgs,\n InjectionZoneComponent,\n};\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 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();\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 {\n Button,\n ButtonProps,\n Dialog,\n DialogBody,\n DialogFooter,\n Flex,\n Typography,\n DialogBodyProps,\n DialogProps,\n DialogFooterProps,\n} from '@strapi/design-system';\nimport { WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\n/* -------------------------------------------------------------------------------------------------\n * ConfirmDialog\n * -----------------------------------------------------------------------------------------------*/\ninterface ConfirmDialogProps\n extends Omit<DialogProps, 'title'>,\n Partial<Pick<DialogProps, 'title'>>,\n Pick<ButtonProps, 'variant'>,\n Partial<DialogFooterProps>,\n Pick<DialogBodyProps, 'icon'> {\n onConfirm?: () => Promise<void> | void;\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 * const DeleteAction = ({ id }) => {\n * const [isOpen, setIsOpen] = React.useState(false);\n *\n * const [delete] = useDeleteMutation()\n * const handleConfirm = async () => {\n * await delete(id)\n * }\n *\n * return (\n * <>\n * <Button onClick={() => setIsOpen(true)}>Delete</Button>\n * <ConfirmDialog onConfirm={handleConfirm} onClose={() => setIsOpen(false)} isOpen={isOpen} />\n * </>\n * )\n * }\n * ```\n */\nconst ConfirmDialog = ({\n children,\n icon = <WarningCircle />,\n onClose,\n onConfirm,\n variant = 'danger',\n startAction,\n endAction,\n ...props\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 () => {\n if (!onConfirm) {\n return;\n }\n\n try {\n setIsConfirming(true);\n await onConfirm();\n onClose();\n } finally {\n setIsConfirming(false);\n }\n };\n\n return (\n <Dialog\n title={formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n })}\n onClose={onClose}\n {...props}\n >\n <DialogBody icon={icon}>\n {typeof content === 'string' ? <DefaultBodyWrapper>{content}</DefaultBodyWrapper> : content}\n </DialogBody>\n <DialogFooter\n startAction={\n startAction || (\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n )\n }\n endAction={\n endAction || (\n <Button onClick={handleConfirm} variant={variant} loading={isConfirming}>\n {formatMessage({\n id: 'app.components.Button.confirm',\n defaultMessage: 'Confirm',\n })}\n </Button>\n )\n }\n />\n </Dialog>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DefaultBodyWrapper\n * -----------------------------------------------------------------------------------------------*/\ninterface DefaultBodyWrapperProps {\n children: React.ReactNode;\n}\n\nconst DefaultBodyWrapper = ({ children }: DefaultBodyWrapperProps) => {\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex justifyContent=\"center\">\n <Typography variant=\"omega\">{children}</Typography>\n </Flex>\n </Flex>\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\nexport {\n BASE_FILTERS,\n NUMERIC_FILTERS,\n IS_SENSITIVE_FILTERS,\n CONTAINS_FILTERS,\n STRING_PARSE_FILTERS,\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 { useCallback, useMemo } from 'react';\n\nimport { parse, stringify } from 'qs';\nimport { useNavigate, useLocation } from 'react-router-dom';\n\nconst useQueryParams = <TQuery extends object>(initialParams?: TQuery) => {\n const { search } = useLocation();\n const navigate = useNavigate();\n\n const query = useMemo(() => {\n // TODO: investigate why sometimes we're getting the search with a leading `?` and sometimes not.\n const searchQuery = search.startsWith('?') ? search.slice(1) : search;\n if (!search && initialParams) {\n return initialParams;\n }\n\n return { ...initialParams, ...parse(searchQuery) } as TQuery;\n }, [search, initialParams]);\n\n const setQuery = useCallback(\n (nextParams: TQuery, method: 'push' | 'remove' = 'push', replace = false) => {\n let nextQuery = { ...query };\n\n if (method === 'remove') {\n Object.keys(nextParams).forEach((key) => {\n if (Object.prototype.hasOwnProperty.call(nextQuery, key)) {\n // @ts-expect-error – this is fine, if you want to fix it, please do.\n delete nextQuery[key];\n }\n });\n } else {\n nextQuery = { ...query, ...nextParams };\n }\n\n navigate({ search: stringify(nextQuery, { encode: false }) }, { replace });\n },\n [navigate, query]\n );\n\n return [{ query, rawQuery: search }, setQuery] as const;\n};\n\nexport { useQueryParams };\n","import * as React from 'react';\n\nimport { Button, Flex, PopoverPrimitives, Tag, useComposedRefs } 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} 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 open: boolean;\n setOpen: (open: boolean) => void;\n setTriggerNode: (node: HTMLButtonElement | null) => void;\n triggerNode: HTMLButtonElement | null;\n options: Filters.Filter[];\n}\n\nconst [FiltersProvider, useFilters] = createContext<FitlersContextValue>('Filters');\n\ninterface RootProps\n extends Partial<Pick<FitlersContextValue, 'disabled' | 'onChange' | 'options' | 'open'>> {\n children: React.ReactNode;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nconst Root = ({\n children,\n disabled = false,\n onChange,\n onOpenChange,\n open: openProp,\n defaultOpen,\n options = [],\n}: RootProps) => {\n const [triggerNode, setTriggerNode] = React.useState<FitlersContextValue['triggerNode']>(null);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const handleChange = (data: FilterFormData) => {\n if (onChange) {\n onChange(data);\n }\n };\n\n return (\n <FiltersProvider\n disabled={disabled}\n onChange={handleChange}\n open={open}\n options={options}\n setOpen={setOpen}\n setTriggerNode={setTriggerNode}\n triggerNode={triggerNode}\n >\n {children}\n </FiltersProvider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Trigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst Trigger = React.forwardRef<HTMLButtonElement, Filters.TriggerProps>(\n ({ label }, forwardedRef) => {\n const { formatMessage } = useIntl();\n const { setTriggerNode, setOpen } = useFilters('Trigger', ({ setTriggerNode, setOpen }) => ({\n setTriggerNode,\n setOpen,\n }));\n const disabled = useFilters('Trigger', ({ disabled }) => disabled);\n const open = useFilters('Trigger', ({ open }) => open);\n\n const composedRefs = useComposedRefs(forwardedRef, setTriggerNode);\n\n const handleClick = () => setOpen(!open);\n\n return (\n <Button\n variant=\"tertiary\"\n ref={composedRefs}\n startIcon={<FilterIcon />}\n onClick={handleClick}\n size=\"S\"\n disabled={disabled}\n >\n {label || formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Popover\n * -----------------------------------------------------------------------------------------------*/\n\nconst PopoverImpl = () => {\n const [{ query }, setQuery] = useQueryParams<Filters.Query>();\n const { formatMessage } = useIntl();\n const open = useFilters('Popover', ({ open }) => open);\n const options = useFilters('Popover', ({ options }) => options);\n const triggerNode = useFilters('Popover', ({ triggerNode }) => triggerNode);\n const setOpen = useFilters('Popover', ({ setOpen }) => setOpen);\n const onChange = useFilters('Popover', ({ onChange }) => onChange);\n\n if (!open || options.length === 0 || !triggerNode) {\n return null;\n }\n\n const handleSubmit = (data: FilterFormData) => {\n if (!data.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 filterType = options.find((filter) => filter.name === data.name)!.type;\n\n /**\n * If the filter is a relation, we need to nest the filter object,\n * we always use ids to filter relations. But the nested object is\n * the operator & value pair. This value _could_ look like:\n * ```json\n * {\n * \"$eq\": \"1\",\n * }\n * ```\n */\n const operatorValuePairing = {\n [data.filter]: data.value,\n };\n\n const newFilterQuery = {\n ...query.filters,\n $and: [\n ...(query.filters?.$and ?? []),\n {\n [data.name]:\n filterType === 'relation'\n ? {\n id: operatorValuePairing,\n }\n : operatorValuePairing,\n },\n ],\n };\n\n setQuery({ filters: newFilterQuery, page: 1 });\n setOpen(false);\n };\n\n return (\n <PopoverPrimitives.Content\n source={{ current: triggerNode }}\n onDismiss={() => setOpen(false)}\n padding={3}\n spacing={4}\n maxHeight=\"unset\"\n >\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 </PopoverPrimitives.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 'enumeration':\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 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 ref={forwardedRef} paddingTop={4} alignItems=\"flex-end\" justifyContent=\"space-between\">\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\" as=\"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\n as={Link}\n // @ts-expect-error – the `as` prop does not correctly infer the props of it's component\n to={{ search: stringify({ ...query, page: activePage - 1 }) }}\n >\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 as={Link}\n active={item === activePage}\n key={item}\n number={item}\n // @ts-expect-error – the `as` prop does not correctly infer the props of it's component\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\n as={Link}\n // @ts-expect-error – the `as` prop does not correctly infer the props of it's component\n to={{ search: stringify({ ...query, page: activePage + 1 }) }}\n >\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 size=\"S\"\n placeholder={placeholder}\n >\n {label}\n </Searchbar>\n </SearchForm>\n );\n }\n\n return (\n <IconButton\n ref={iconButtonRef}\n disabled={disabled}\n icon={<SearchIcon fill=\"neutral800\" />}\n label={formatMessage({ id: 'global.search', defaultMessage: 'Search' })}\n onClick={handleToggle}\n />\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 BaseCheckbox,\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\n label={sortLabel}\n onClick={handleClickSort}\n icon={<SortIcon isUp={sortOrder === 'ASC'} />}\n borderStyle=\"none\"\n />\n )\n }\n >\n <Tooltip label={sortable ? sortLabel : label}>\n <Typography\n textColor=\"neutral600\"\n as={!isSorted && sortable ? 'button' : 'span'}\n onClick={handleClickSort}\n variant=\"sigma\"\n >\n {label}\n </Typography>\n </Tooltip>\n </Th>\n );\n};\n\ninterface SortIconProps {\n isUp: boolean;\n}\n\nconst SortIcon = styled(CaretDown)<SortIconProps>`\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 <BaseCheckbox\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n disabled={rows.length === 0}\n checked={areAllEntriesSelected}\n indeterminate={isIndeterminate}\n onChange={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 = Td;\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 <BaseCheckbox\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n disabled={rows.length === 0}\n checked={isChecked}\n onChange={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 { 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 axios instance 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://axios-http.com/docs/cancellation} 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://axios-http.com/docs/instance} axios instance API.\n * @see {@link https://axios-http.com/docs/cancellation} 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.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","reducer","currentStep","initialState","Provider","appReducer","ref","JSONInputImpl","forwardRef","NumberInput","translatedErrors","Form","Login","LoginCE","Link","Logo","darkTheme","lightTheme","configureStore","getSettingsEERoutes","getBaseEERoutes","features","cancelIdleCallback","requestIdleCallback","ids","value","Root","setTriggerNode","setOpen","disabled","open","FilterIcon","options","triggerNode","onChange","filter","PaginationImpl","SearchIcon","DSTable"],"mappings":"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"}