@strapi/admin 5.0.0-rc.8 → 5.0.0-rc.9

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 (232) hide show
  1. package/dist/admin/{AdminSeatInfo-E8azTFQY.js → AdminSeatInfo-j58AKYvZ.js} +2 -2
  2. package/dist/admin/AdminSeatInfo-j58AKYvZ.js.map +1 -0
  3. package/dist/admin/{AdminSeatInfo-Q_hUNC5B.mjs → AdminSeatInfo-qGNvhfii.mjs} +2 -2
  4. package/dist/admin/AdminSeatInfo-qGNvhfii.mjs.map +1 -0
  5. package/dist/admin/{ApplicationInfoPage-DOljMjfU.js → ApplicationInfoPage-JfdJ0U4H.js} +8 -8
  6. package/dist/admin/ApplicationInfoPage-JfdJ0U4H.js.map +1 -0
  7. package/dist/admin/{ApplicationInfoPage-_QAWr13m.mjs → ApplicationInfoPage-ahnTcFV1.mjs} +8 -8
  8. package/dist/admin/ApplicationInfoPage-ahnTcFV1.mjs.map +1 -0
  9. package/dist/admin/{AuthenticatedLayout-DhxlhqLg.mjs → AuthenticatedLayout-06fn7qrH.mjs} +43 -48
  10. package/dist/admin/AuthenticatedLayout-06fn7qrH.mjs.map +1 -0
  11. package/dist/admin/{AuthenticatedLayout-S2qRx5pp.js → AuthenticatedLayout-eKDwvUFO.js} +43 -48
  12. package/dist/admin/AuthenticatedLayout-eKDwvUFO.js.map +1 -0
  13. package/dist/admin/{CreatePage-czINWoI4.js → CreatePage-68skzZjY.js} +2 -2
  14. package/dist/admin/{CreatePage-czINWoI4.js.map → CreatePage-68skzZjY.js.map} +1 -1
  15. package/dist/admin/{CreatePage-5Lsxkk31.mjs → CreatePage-Yd5JyWS5.mjs} +2 -2
  16. package/dist/admin/{CreatePage-5Lsxkk31.mjs.map → CreatePage-Yd5JyWS5.mjs.map} +1 -1
  17. package/dist/admin/{CreatePage-4aSBZ-8M.mjs → CreatePage-bdWb1wg4.mjs} +5 -5
  18. package/dist/admin/CreatePage-bdWb1wg4.mjs.map +1 -0
  19. package/dist/admin/{CreatePage-HNRkTZwZ.js → CreatePage-t5HQUOqJ.js} +5 -5
  20. package/dist/admin/CreatePage-t5HQUOqJ.js.map +1 -0
  21. package/dist/admin/{CreateView-u0mACDyv.mjs → CreateView-V0v5CK8t.mjs} +2 -2
  22. package/dist/admin/{CreateView-u0mACDyv.mjs.map → CreateView-V0v5CK8t.mjs.map} +1 -1
  23. package/dist/admin/{CreateView-qzRvLGBC.mjs → CreateView-ZZaA8hbe.mjs} +2 -2
  24. package/dist/admin/{CreateView-qzRvLGBC.mjs.map → CreateView-ZZaA8hbe.mjs.map} +1 -1
  25. package/dist/admin/{CreateView-aIiiLy3C.js → CreateView-nzILLv0g.js} +2 -2
  26. package/dist/admin/{CreateView-aIiiLy3C.js.map → CreateView-nzILLv0g.js.map} +1 -1
  27. package/dist/admin/{CreateView-AXL3tH85.js → CreateView-yv51Pyvw.js} +2 -2
  28. package/dist/admin/{CreateView-AXL3tH85.js.map → CreateView-yv51Pyvw.js.map} +1 -1
  29. package/dist/admin/{EditPage-hHV9CNBD.mjs → EditPage-2cMhX4F_.mjs} +23 -14
  30. package/dist/admin/EditPage-2cMhX4F_.mjs.map +1 -0
  31. package/dist/admin/{EditPage-Qp1c1eXd.mjs → EditPage-A7-BewPd.mjs} +6 -6
  32. package/dist/admin/EditPage-A7-BewPd.mjs.map +1 -0
  33. package/dist/admin/{EditPage-nJMUfPC_.js → EditPage-LoESB5pq.js} +23 -14
  34. package/dist/admin/EditPage-LoESB5pq.js.map +1 -0
  35. package/dist/admin/{EditPage-BAq4SLUJ.js → EditPage-Lw36XG9G.js} +6 -6
  36. package/dist/admin/EditPage-Lw36XG9G.js.map +1 -0
  37. package/dist/admin/{EditPage-cMbU4NVE.mjs → EditPage-cWJ8V1BK.mjs} +18 -9
  38. package/dist/admin/EditPage-cWJ8V1BK.mjs.map +1 -0
  39. package/dist/admin/{EditPage-RZcyUKwu.js → EditPage-pTQCDncU.js} +18 -9
  40. package/dist/admin/EditPage-pTQCDncU.js.map +1 -0
  41. package/dist/admin/{EditView-cnGxE7oC.mjs → EditView-HygMdUSf.mjs} +7 -7
  42. package/dist/admin/{EditView-cnGxE7oC.mjs.map → EditView-HygMdUSf.mjs.map} +1 -1
  43. package/dist/admin/{EditView-CqQ7E0hw.js → EditView-KzdDTSO-.js} +7 -7
  44. package/dist/admin/{EditView-CqQ7E0hw.js.map → EditView-KzdDTSO-.js.map} +1 -1
  45. package/dist/admin/{EditViewPage-tTqJWPbg.mjs → EditViewPage-47F2xHBt.mjs} +74 -51
  46. package/dist/admin/EditViewPage-47F2xHBt.mjs.map +1 -0
  47. package/dist/admin/{EditViewPage-uUDS6iky.js → EditViewPage-FgsrW_wV.js} +74 -51
  48. package/dist/admin/EditViewPage-FgsrW_wV.js.map +1 -0
  49. package/dist/admin/{EventsTable-MqaO8InG.js → EventsTable--XlOTHxM.js} +2 -2
  50. package/dist/admin/{EventsTable-MqaO8InG.js.map → EventsTable--XlOTHxM.js.map} +1 -1
  51. package/dist/admin/{EventsTable-bAm473aQ.mjs → EventsTable-mgIyB8DL.mjs} +2 -2
  52. package/dist/admin/{EventsTable-bAm473aQ.mjs.map → EventsTable-mgIyB8DL.mjs.map} +1 -1
  53. package/dist/admin/{HomePage-iOCLC8T5.mjs → HomePage-H77dsrr1.mjs} +2 -2
  54. package/dist/admin/{HomePage-iOCLC8T5.mjs.map → HomePage-H77dsrr1.mjs.map} +1 -1
  55. package/dist/admin/{HomePage-kxpv-2IT.mjs → HomePage-dyDldozB.mjs} +7 -7
  56. package/dist/admin/HomePage-dyDldozB.mjs.map +1 -0
  57. package/dist/admin/{HomePage-qHKQJ_vS.js → HomePage-uVwht52t.js} +2 -2
  58. package/dist/admin/{HomePage-qHKQJ_vS.js.map → HomePage-uVwht52t.js.map} +1 -1
  59. package/dist/admin/{HomePage-cSNwcjEI.js → HomePage-ywYHZHMa.js} +7 -7
  60. package/dist/admin/HomePage-ywYHZHMa.js.map +1 -0
  61. package/dist/admin/{InstalledPluginsPage-nryUCDD3.mjs → InstalledPluginsPage-3OSkplVn.mjs} +2 -2
  62. package/dist/admin/{InstalledPluginsPage-nryUCDD3.mjs.map → InstalledPluginsPage-3OSkplVn.mjs.map} +1 -1
  63. package/dist/admin/{InstalledPluginsPage-Vj2K7uad.js → InstalledPluginsPage-JkruwT2d.js} +2 -2
  64. package/dist/admin/{InstalledPluginsPage-Vj2K7uad.js.map → InstalledPluginsPage-JkruwT2d.js.map} +1 -1
  65. package/dist/admin/{Layout-Z093DFKa.mjs → Layout-8Ds_z3XN.mjs} +3 -3
  66. package/dist/admin/{Layout-Z093DFKa.mjs.map → Layout-8Ds_z3XN.mjs.map} +1 -1
  67. package/dist/admin/{Layout-Y4dCGf7_.js → Layout-pVTNV6PU.js} +3 -3
  68. package/dist/admin/{Layout-Y4dCGf7_.js.map → Layout-pVTNV6PU.js.map} +1 -1
  69. package/dist/admin/{ListPage-MQLTqMD4.js → ListPage-15KiUCLt.js} +2 -2
  70. package/dist/admin/{ListPage-MQLTqMD4.js.map → ListPage-15KiUCLt.js.map} +1 -1
  71. package/dist/admin/{ListPage-uSjUZ61P.mjs → ListPage-8M-bmv0a.mjs} +4 -4
  72. package/dist/admin/ListPage-8M-bmv0a.mjs.map +1 -0
  73. package/dist/admin/{ListPage-eY08uWFn.js → ListPage-DHUp0PDw.js} +43 -25
  74. package/dist/admin/ListPage-DHUp0PDw.js.map +1 -0
  75. package/dist/admin/{ListPage-v8u0mb2U.mjs → ListPage-LokTy34i.mjs} +2 -2
  76. package/dist/admin/{ListPage-v8u0mb2U.mjs.map → ListPage-LokTy34i.mjs.map} +1 -1
  77. package/dist/admin/{ListPage-9Y5APon-.mjs → ListPage-NtjeF8R2.mjs} +3 -3
  78. package/dist/admin/{ListPage-9Y5APon-.mjs.map → ListPage-NtjeF8R2.mjs.map} +1 -1
  79. package/dist/admin/{ListPage-qr-mWRUO.js → ListPage-OIdhjljI.js} +4 -4
  80. package/dist/admin/ListPage-OIdhjljI.js.map +1 -0
  81. package/dist/admin/{ListPage-KvnBaksH.js → ListPage-dApwERT6.js} +3 -3
  82. package/dist/admin/{ListPage-KvnBaksH.js.map → ListPage-dApwERT6.js.map} +1 -1
  83. package/dist/admin/{ListPage-hyar31Ge.mjs → ListPage-hNIbvh17.mjs} +43 -25
  84. package/dist/admin/ListPage-hNIbvh17.mjs.map +1 -0
  85. package/dist/admin/{ListPage-2bW3tnRz.js → ListPage-jTpJnTuQ.js} +4 -4
  86. package/dist/admin/ListPage-jTpJnTuQ.js.map +1 -0
  87. package/dist/admin/{ListPage-3OjwvR-r.mjs → ListPage-semY3kTl.mjs} +4 -4
  88. package/dist/admin/ListPage-semY3kTl.mjs.map +1 -0
  89. package/dist/admin/{ListView-U0ueqVjR.js → ListView-MA83TDJF.js} +3 -3
  90. package/dist/admin/{ListView-U0ueqVjR.js.map → ListView-MA83TDJF.js.map} +1 -1
  91. package/dist/admin/{ListView-4XLHSTtI.js → ListView-ZSEn2tK5.js} +3 -3
  92. package/dist/admin/{ListView-4XLHSTtI.js.map → ListView-ZSEn2tK5.js.map} +1 -1
  93. package/dist/admin/{ListView-Hx1s5o_O.mjs → ListView-kEuSmXPm.mjs} +3 -3
  94. package/dist/admin/{ListView-Hx1s5o_O.mjs.map → ListView-kEuSmXPm.mjs.map} +1 -1
  95. package/dist/admin/{ListView-NUg6w25H.mjs → ListView-tCCo7pVS.mjs} +3 -3
  96. package/dist/admin/{ListView-NUg6w25H.mjs.map → ListView-tCCo7pVS.mjs.map} +1 -1
  97. package/dist/admin/{Login-StNvuHl2.mjs → Login-GLcLgHUd.mjs} +3 -3
  98. package/dist/admin/{Login-StNvuHl2.mjs.map → Login-GLcLgHUd.mjs.map} +1 -1
  99. package/dist/admin/{Login-D_lEvhlk.js → Login-RrWZQA_X.js} +3 -3
  100. package/dist/admin/{Login-D_lEvhlk.js.map → Login-RrWZQA_X.js.map} +1 -1
  101. package/dist/admin/{MagicLinkEE-Enht2VEX.mjs → MagicLinkEE-_qltdLkk.mjs} +3 -3
  102. package/dist/admin/{MagicLinkEE-Enht2VEX.mjs.map → MagicLinkEE-_qltdLkk.mjs.map} +1 -1
  103. package/dist/admin/{MagicLinkEE-yv0VjDUG.js → MagicLinkEE-u0n-nwtv.js} +3 -3
  104. package/dist/admin/{MagicLinkEE-yv0VjDUG.js.map → MagicLinkEE-u0n-nwtv.js.map} +1 -1
  105. package/dist/admin/{MarketplacePage-0HLsOYU8.mjs → MarketplacePage-41CstG0b.mjs} +24 -12
  106. package/dist/admin/MarketplacePage-41CstG0b.mjs.map +1 -0
  107. package/dist/admin/{MarketplacePage-eNFHM7J0.js → MarketplacePage-uyOTT12t.js} +24 -12
  108. package/dist/admin/MarketplacePage-uyOTT12t.js.map +1 -0
  109. package/dist/admin/{Permissions-oxdduJgE.mjs → Permissions-J2jRpCh_.mjs} +2 -2
  110. package/dist/admin/{Permissions-oxdduJgE.mjs.map → Permissions-J2jRpCh_.mjs.map} +1 -1
  111. package/dist/admin/{Permissions-SuZE5tW3.js → Permissions-LMVH6wf4.js} +2 -2
  112. package/dist/admin/{Permissions-SuZE5tW3.js.map → Permissions-LMVH6wf4.js.map} +1 -1
  113. package/dist/admin/{ProfilePage-8lhmqZEh.js → ProfilePage-wxZFen3W.js} +6 -6
  114. package/dist/admin/ProfilePage-wxZFen3W.js.map +1 -0
  115. package/dist/admin/{ProfilePage-5ix1J-t3.mjs → ProfilePage-zwG0fq_e.mjs} +6 -6
  116. package/dist/admin/ProfilePage-zwG0fq_e.mjs.map +1 -0
  117. package/dist/admin/{PurchaseAuditLogs-amcjjsft.mjs → PurchaseAuditLogs-FDPV-ZqU.mjs} +2 -2
  118. package/dist/admin/{PurchaseAuditLogs-amcjjsft.mjs.map → PurchaseAuditLogs-FDPV-ZqU.mjs.map} +1 -1
  119. package/dist/admin/{PurchaseAuditLogs-LAxKPeum.js → PurchaseAuditLogs-f6iczpRi.js} +2 -2
  120. package/dist/admin/{PurchaseAuditLogs-LAxKPeum.js.map → PurchaseAuditLogs-f6iczpRi.js.map} +1 -1
  121. package/dist/admin/{PurchaseSingleSignOn-trhjWQVO.js → PurchaseSingleSignOn-0wXAjOLm.js} +2 -2
  122. package/dist/admin/{PurchaseSingleSignOn-trhjWQVO.js.map → PurchaseSingleSignOn-0wXAjOLm.js.map} +1 -1
  123. package/dist/admin/{PurchaseSingleSignOn-2jOz2dDs.mjs → PurchaseSingleSignOn-S0B2HM4d.mjs} +2 -2
  124. package/dist/admin/{PurchaseSingleSignOn-2jOz2dDs.mjs.map → PurchaseSingleSignOn-S0B2HM4d.mjs.map} +1 -1
  125. package/dist/admin/{SSOProviders-QBcyB9VI.js → SSOProviders-9-d1vYXb.js} +4 -4
  126. package/dist/admin/SSOProviders-9-d1vYXb.js.map +1 -0
  127. package/dist/admin/{SSOProviders-nMmBLr8g.mjs → SSOProviders-sy3Xon2A.mjs} +4 -4
  128. package/dist/admin/SSOProviders-sy3Xon2A.mjs.map +1 -0
  129. package/dist/admin/{SelectRoles-nRbY6X9X.js → SelectRoles-MoDtdDcM.js} +4 -4
  130. package/dist/admin/SelectRoles-MoDtdDcM.js.map +1 -0
  131. package/dist/admin/{SelectRoles-b0crlFl7.mjs → SelectRoles-h_1srnVz.mjs} +4 -4
  132. package/dist/admin/SelectRoles-h_1srnVz.mjs.map +1 -0
  133. package/dist/admin/{SingleSignOnPage-ifswElWH.js → SingleSignOnPage-5CdOsumW.js} +13 -4
  134. package/dist/admin/SingleSignOnPage-5CdOsumW.js.map +1 -0
  135. package/dist/admin/{SingleSignOnPage-SoYGwm82.mjs → SingleSignOnPage-AZVczKwR.mjs} +13 -4
  136. package/dist/admin/SingleSignOnPage-AZVczKwR.mjs.map +1 -0
  137. package/dist/admin/{Table-b0AhH-1j.js → Table-CpbvaRQh.js} +3 -3
  138. package/dist/admin/{Table-b0AhH-1j.js.map → Table-CpbvaRQh.js.map} +1 -1
  139. package/dist/admin/{Table-GNJgJ_tZ.mjs → Table-EPKfcF5-.mjs} +3 -3
  140. package/dist/admin/{Table-GNJgJ_tZ.mjs.map → Table-EPKfcF5-.mjs.map} +1 -1
  141. package/dist/admin/{TokenTypeSelect-9u9d8fcv.mjs → TokenTypeSelect-7Ki5z_3z.mjs} +3 -3
  142. package/dist/admin/TokenTypeSelect-7Ki5z_3z.mjs.map +1 -0
  143. package/dist/admin/{TokenTypeSelect-88Lcbz54.js → TokenTypeSelect-yRV19q7R.js} +3 -3
  144. package/dist/admin/TokenTypeSelect-yRV19q7R.js.map +1 -0
  145. package/dist/admin/{UseCasePage-z6GrO4cL.mjs → UseCasePage-as6-3qKD.mjs} +12 -6
  146. package/dist/admin/{UseCasePage-z6GrO4cL.mjs.map → UseCasePage-as6-3qKD.mjs.map} +1 -1
  147. package/dist/admin/{UseCasePage-ipjo7uhC.js → UseCasePage-l9OmQYhK.js} +12 -6
  148. package/dist/admin/UseCasePage-l9OmQYhK.js.map +1 -0
  149. package/dist/admin/{constants-JnuNds5i.mjs → constants-AYR471DB.mjs} +3 -3
  150. package/dist/admin/{constants-JnuNds5i.mjs.map → constants-AYR471DB.mjs.map} +1 -1
  151. package/dist/admin/{constants-PyUVE8mk.js → constants-X2uDAtEA.js} +3 -3
  152. package/dist/admin/{constants-PyUVE8mk.js.map → constants-X2uDAtEA.js.map} +1 -1
  153. package/dist/admin/{index-4iCJ7_08.mjs → index-Fu3hPmaj.mjs} +32 -32
  154. package/dist/admin/index-Fu3hPmaj.mjs.map +1 -0
  155. package/dist/admin/{index-3GWFhGv_.js → index-w33_0vI-.js} +32 -32
  156. package/dist/admin/index-w33_0vI-.js.map +1 -0
  157. package/dist/admin/index.js +1 -1
  158. package/dist/admin/index.mjs +1 -1
  159. package/dist/admin/{useAdminRoles-ZBjAOdVi.mjs → useAdminRoles-lDesL4gN.mjs} +2 -2
  160. package/dist/admin/{useAdminRoles-ZBjAOdVi.mjs.map → useAdminRoles-lDesL4gN.mjs.map} +1 -1
  161. package/dist/admin/{useAdminRoles-T7bcAXVs.js → useAdminRoles-w6h8NFK5.js} +2 -2
  162. package/dist/admin/{useAdminRoles-T7bcAXVs.js.map → useAdminRoles-w6h8NFK5.js.map} +1 -1
  163. package/dist/admin/{validation-bQ-dFrHn.js → validation-4SWh9S5z.js} +2 -2
  164. package/dist/admin/{validation-bQ-dFrHn.js.map → validation-4SWh9S5z.js.map} +1 -1
  165. package/dist/admin/{validation-Yg-jfoIk.mjs → validation-IcNGA_ef.mjs} +2 -2
  166. package/dist/admin/{validation-Yg-jfoIk.mjs.map → validation-IcNGA_ef.mjs.map} +1 -1
  167. package/dist/ee/server/index.js +17 -4
  168. package/dist/ee/server/index.js.map +1 -1
  169. package/dist/ee/server/index.mjs +17 -4
  170. package/dist/ee/server/index.mjs.map +1 -1
  171. package/dist/package.json.d.ts +9 -9
  172. package/dist/server/index.js +47 -5
  173. package/dist/server/index.js.map +1 -1
  174. package/dist/server/index.mjs +47 -5
  175. package/dist/server/index.mjs.map +1 -1
  176. package/dist/server/src/config/admin-actions.d.ts +26 -0
  177. package/dist/server/src/config/admin-actions.d.ts.map +1 -1
  178. package/dist/server/src/domain/action/index.d.ts +51 -1
  179. package/dist/server/src/domain/action/index.d.ts.map +1 -1
  180. package/dist/server/src/domain/action/provider.d.ts +10 -13
  181. package/dist/server/src/domain/action/provider.d.ts.map +1 -1
  182. package/dist/server/src/domain/condition/provider.d.ts +3 -6
  183. package/dist/server/src/domain/condition/provider.d.ts.map +1 -1
  184. package/dist/server/src/domain/permission/index.d.ts +2 -2
  185. package/dist/server/src/domain/permission/index.d.ts.map +1 -1
  186. package/dist/server/src/services/action.d.ts +1 -3
  187. package/dist/server/src/services/action.d.ts.map +1 -1
  188. package/dist/server/src/services/permission.d.ts +9 -18
  189. package/dist/server/src/services/permission.d.ts.map +1 -1
  190. package/dist/server/src/services/transfer/permission.d.ts +6 -2
  191. package/dist/server/src/services/transfer/permission.d.ts.map +1 -1
  192. package/dist/server/src/validation/action-provider.d.ts.map +1 -1
  193. package/package.json +10 -10
  194. package/dist/admin/AdminSeatInfo-E8azTFQY.js.map +0 -1
  195. package/dist/admin/AdminSeatInfo-Q_hUNC5B.mjs.map +0 -1
  196. package/dist/admin/ApplicationInfoPage-DOljMjfU.js.map +0 -1
  197. package/dist/admin/ApplicationInfoPage-_QAWr13m.mjs.map +0 -1
  198. package/dist/admin/AuthenticatedLayout-DhxlhqLg.mjs.map +0 -1
  199. package/dist/admin/AuthenticatedLayout-S2qRx5pp.js.map +0 -1
  200. package/dist/admin/CreatePage-4aSBZ-8M.mjs.map +0 -1
  201. package/dist/admin/CreatePage-HNRkTZwZ.js.map +0 -1
  202. package/dist/admin/EditPage-BAq4SLUJ.js.map +0 -1
  203. package/dist/admin/EditPage-Qp1c1eXd.mjs.map +0 -1
  204. package/dist/admin/EditPage-RZcyUKwu.js.map +0 -1
  205. package/dist/admin/EditPage-cMbU4NVE.mjs.map +0 -1
  206. package/dist/admin/EditPage-hHV9CNBD.mjs.map +0 -1
  207. package/dist/admin/EditPage-nJMUfPC_.js.map +0 -1
  208. package/dist/admin/EditViewPage-tTqJWPbg.mjs.map +0 -1
  209. package/dist/admin/EditViewPage-uUDS6iky.js.map +0 -1
  210. package/dist/admin/HomePage-cSNwcjEI.js.map +0 -1
  211. package/dist/admin/HomePage-kxpv-2IT.mjs.map +0 -1
  212. package/dist/admin/ListPage-2bW3tnRz.js.map +0 -1
  213. package/dist/admin/ListPage-3OjwvR-r.mjs.map +0 -1
  214. package/dist/admin/ListPage-eY08uWFn.js.map +0 -1
  215. package/dist/admin/ListPage-hyar31Ge.mjs.map +0 -1
  216. package/dist/admin/ListPage-qr-mWRUO.js.map +0 -1
  217. package/dist/admin/ListPage-uSjUZ61P.mjs.map +0 -1
  218. package/dist/admin/MarketplacePage-0HLsOYU8.mjs.map +0 -1
  219. package/dist/admin/MarketplacePage-eNFHM7J0.js.map +0 -1
  220. package/dist/admin/ProfilePage-5ix1J-t3.mjs.map +0 -1
  221. package/dist/admin/ProfilePage-8lhmqZEh.js.map +0 -1
  222. package/dist/admin/SSOProviders-QBcyB9VI.js.map +0 -1
  223. package/dist/admin/SSOProviders-nMmBLr8g.mjs.map +0 -1
  224. package/dist/admin/SelectRoles-b0crlFl7.mjs.map +0 -1
  225. package/dist/admin/SelectRoles-nRbY6X9X.js.map +0 -1
  226. package/dist/admin/SingleSignOnPage-SoYGwm82.mjs.map +0 -1
  227. package/dist/admin/SingleSignOnPage-ifswElWH.js.map +0 -1
  228. package/dist/admin/TokenTypeSelect-88Lcbz54.js.map +0 -1
  229. package/dist/admin/TokenTypeSelect-9u9d8fcv.mjs.map +0 -1
  230. package/dist/admin/UseCasePage-ipjo7uhC.js.map +0 -1
  231. package/dist/admin/index-3GWFhGv_.js.map +0 -1
  232. package/dist/admin/index-4iCJ7_08.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"EditPage-nJMUfPC_.js","sources":["../../admin/src/pages/Settings/pages/Users/EditPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Typography } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport pick from 'lodash/pick';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { Update } from '../../../../../../shared/contracts/user';\nimport { Form, FormHelpers } from '../../../../components/Form';\nimport { InputRenderer } from '../../../../components/FormInputs/Renderer';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { useAdminUsers, useUpdateUserMutation } from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\nimport { getDisplayName } from '../../../../utils/users';\n\nimport { MagicLinkCE } from './components/MagicLinkCE';\nimport { SelectRoles } from './components/SelectRoles';\nimport { COMMON_USER_SCHEMA } from './utils/validation';\n\nconst EDIT_VALIDATION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n isActive: yup.bool(),\n roles: yup\n .array()\n .min(1, {\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\n});\n\nconst fieldsToPick = ['email', 'firstname', 'lastname', 'username', 'isActive', 'roles'] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * EditPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditPage = () => {\n const { formatMessage } = useIntl();\n const match = useMatch('/settings/users/:id');\n const id = match?.params?.id ?? '';\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const MagicLink = useEnterprise(\n MagicLinkCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE'\n )\n ).MagicLinkEE\n );\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const permissions = useTypedSelector(selectAdminPermissions);\n\n const {\n isLoading: isLoadingRBAC,\n allowedActions: { canUpdate },\n } = useRBAC({\n read: permissions.settings?.users.read ?? [],\n update: permissions.settings?.users.update ?? [],\n });\n\n const [updateUser] = useUpdateUserMutation();\n\n const {\n data,\n error,\n isLoading: isLoadingAdminUsers,\n } = useAdminUsers(\n { id },\n {\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [user] = data?.users ?? [];\n\n React.useEffect(() => {\n if (error) {\n // Redirect the user to the homepage if is not allowed to read\n if (error.name === 'UnauthorizedError') {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: 'notification.permission.not-allowed-read',\n defaultMessage: 'You are not allowed to see this document',\n }),\n });\n\n navigate('/');\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }\n }, [error, formatAPIError, formatMessage, navigate, toggleNotification]);\n\n const isLoading = isLoadingAdminUsers || !MagicLink || isLoadingRBAC;\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n type InitialData = Pick<Update.Request['body'], (typeof fieldsToPick)[number]> & {\n confirmPassword: string;\n password: string;\n };\n\n const initialData = {\n ...pick(user, fieldsToPick),\n roles: user.roles.map(({ id }) => id),\n password: '',\n confirmPassword: '',\n } satisfies InitialData;\n\n const handleSubmit = async (body: InitialData, actions: FormHelpers<InitialData>) => {\n const { confirmPassword: _confirmPassword, ...bodyRest } = body;\n\n const res = await updateUser({\n id,\n ...bodyRest,\n });\n\n if ('error' in res && isBaseQueryError(res.error)) {\n if (res.error.name === 'ValidationError') {\n actions.setErrors(formatValidationErrors(res.error));\n }\n\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n } else {\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n\n actions.setValues({\n ...pick(body, fieldsToPick),\n password: '',\n confirmPassword: '',\n });\n }\n };\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Users',\n }\n )}\n </Page.Title>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={initialData}\n validationSchema={EDIT_VALIDATION_SCHEMA}\n >\n {({ isSubmitting, modified }) => {\n return (\n <>\n <Layouts.Header\n primaryAction={\n <Button\n disabled={isSubmitting || !canUpdate || !modified}\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n size=\"L\"\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={formatMessage(\n {\n id: 'app.containers.Users.EditPage.header.label',\n defaultMessage: 'Edit {name}',\n },\n {\n // @ts-expect-error – issues with the Entity ID type, still.\n name: getDisplayName(initialData),\n }\n )}\n navigationAction={<BackButton />}\n />\n <Layouts.Content>\n {user?.registrationToken && (\n <Box paddingBottom={6}>\n <MagicLink registrationToken={user.registrationToken} />\n </Box>\n )}\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid.Root gap={5}>\n {LAYOUT.map((row) =>\n row.map(({ size, label, ...field }) => {\n return (\n <Grid.Item key={field.name} col={size}>\n <InputRenderer\n {...field}\n disabled={!canUpdate}\n label={formatMessage(label)}\n placeholder={\n 'placeholder' in field\n ? formatMessage(field.placeholder)\n : undefined\n }\n />\n </Grid.Item>\n );\n })\n )}\n </Grid.Root>\n </Flex>\n </Box>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.roles',\n defaultMessage: \"User's role\",\n })}\n </Typography>\n <Grid.Root gap={5}>\n <Grid.Item col={6} xs={12}>\n <SelectRoles disabled={!canUpdate} />\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Content>\n </>\n );\n }}\n </Form>\n </Page.Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EditPage LAYOUT\n * -----------------------------------------------------------------------------------------------*/\n\nconst LAYOUT = [\n [\n {\n label: {\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n },\n name: 'firstname',\n placeholder: {\n id: 'Auth.form.firstname.placeholder',\n defaultMessage: 'e.g. Kai',\n },\n type: 'string' as const,\n size: 6,\n required: true,\n },\n {\n label: {\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n },\n name: 'lastname',\n placeholder: {\n id: 'Auth.form.lastname.placeholder',\n defaultMessage: 'e.g. Doe',\n },\n type: 'string' as const,\n size: 6,\n },\n ],\n [\n {\n label: {\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n },\n name: 'email',\n placeholder: {\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'e.g. kai.doe@strapi.io',\n },\n type: 'email' as const,\n size: 6,\n required: true,\n },\n {\n label: {\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n },\n name: 'username',\n placeholder: {\n id: 'Auth.form.username.placeholder',\n defaultMessage: 'e.g. Kai_Doe',\n },\n type: 'string' as const,\n size: 6,\n },\n ],\n [\n {\n autoComplete: 'new-password',\n label: {\n id: 'global.password',\n defaultMessage: 'Password',\n },\n name: 'password',\n type: 'password' as const,\n size: 6,\n },\n {\n autoComplete: 'new-password',\n label: {\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Password confirmation',\n },\n name: 'confirmPassword',\n type: 'password' as const,\n size: 6,\n },\n ],\n [\n {\n label: {\n id: 'Auth.form.active.label',\n defaultMessage: 'Active',\n },\n name: 'isActive',\n type: 'boolean' as const,\n size: 6,\n },\n ],\n];\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.users.read);\n\n return (\n <Page.Protect permissions={permissions}>\n <EditPage />\n </Page.Protect>\n );\n};\n\nexport { EditPage, ProtectedEditPage };\n"],"names":["yup","COMMON_USER_SCHEMA","translatedErrors","useIntl","useMatch","useNavigate","useNotification","useEnterprise","MagicLinkCE","useAPIErrorHandler","useTypedSelector","selectAdminPermissions","useRBAC","useUpdateUserMutation","useAdminUsers","React","jsx","Page","pick","id","isBaseQueryError","jsxs","Form","Fragment","Layouts","Button","Check","getDisplayName","BackButton","Box","Flex","Typography","Grid","InputRenderer","SelectRoles"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"EditViewPage-tTqJWPbg.mjs","sources":["../../admin/src/services/contentApi.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/apiTokenPermissions.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/ContentTypesSection.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/Permissions.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/constants.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.tsx"],"sourcesContent":["import { adminApi } from './api';\n\nimport type { List as ListContentApiPermissions } from '../../../shared/contracts/content-api/permissions';\nimport type { List as ListContentApiRoutes } from '../../../shared/contracts/content-api/routes';\n\nconst contentApiService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getPermissions: builder.query<ListContentApiPermissions.Response['data'], void>({\n query: () => '/admin/content-api/permissions',\n transformResponse: (response: ListContentApiPermissions.Response) => response.data,\n }),\n getRoutes: builder.query<ListContentApiRoutes.Response['data'], void>({\n query: () => '/admin/content-api/routes',\n transformResponse: (response: ListContentApiRoutes.Response) => response.data,\n }),\n }),\n overrideExisting: false,\n});\n\nconst { useGetPermissionsQuery, useGetRoutesQuery } = contentApiService;\n\nexport { useGetPermissionsQuery, useGetRoutesQuery };\n","/* eslint-disable check-file/filename-naming-convention */\n\nimport * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\n\nimport { List as ListContentApiPermissions } from '../../../../../../../shared/contracts/content-api/permissions';\nimport { List as ListContentApiRoutes } from '../../../../../../../shared/contracts/content-api/routes';\n\nexport interface PseudoEvent {\n target: { value: string };\n}\n\ninterface ApiTokenPermissionsContextValue {\n value: {\n selectedAction: string | null;\n routes: ListContentApiRoutes.Response['data'];\n selectedActions: string[];\n data: {\n allActionsIds: string[];\n permissions: ListContentApiPermissions.Response['data'][];\n };\n onChange: ({ target: { value } }: PseudoEvent) => void;\n onChangeSelectAll: ({\n target: { value },\n }: {\n target: { value: { action: string; actionId: string }[] };\n }) => void;\n setSelectedAction: ({ target: { value } }: PseudoEvent) => void;\n };\n}\n\ninterface ApiTokenPermissionsContextProviderProps extends ApiTokenPermissionsContextValue {\n children: React.ReactNode | React.ReactNode[];\n}\n\nconst [ApiTokenPermissionsContextProvider, useApiTokenPermissionsContext] =\n createContext<ApiTokenPermissionsContextValue>('ApiTokenPermissionsContext');\n\nconst ApiTokenPermissionsProvider = ({\n children,\n ...rest\n}: ApiTokenPermissionsContextProviderProps) => {\n return (\n <ApiTokenPermissionsContextProvider {...rest}>{children}</ApiTokenPermissionsContextProvider>\n );\n};\n\nconst useApiTokenPermissions = () => useApiTokenPermissionsContext('useApiTokenPermissions');\n\nexport { ApiTokenPermissionsProvider, useApiTokenPermissions };\nexport type { ApiTokenPermissionsContextValue, ApiTokenPermissionsContextProviderProps };\n","import * as React from 'react';\n\nimport { Box, Flex, Grid, Typography } from '@strapi/design-system';\nimport { FormikErrors } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { LifeSpanInput } from '../../../../components/Tokens/LifeSpanInput';\nimport { TokenDescription } from '../../../../components/Tokens/TokenDescription';\nimport { TokenName } from '../../../../components/Tokens/TokenName';\nimport { TokenTypeSelect } from '../../../../components/Tokens/TokenTypeSelect';\n\nimport type { ApiToken } from '../../../../../../../../shared/contracts/api-token';\n\ninterface FormApiTokenContainerProps {\n errors?: FormikErrors<Pick<ApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values?: Partial<Pick<ApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n isCreating: boolean;\n apiToken?: null | Partial<ApiToken>;\n onDispatch: React.Dispatch<any>;\n setHasChangedPermissions: (hasChanged: boolean) => void;\n}\n\nexport const FormApiTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values = {},\n apiToken = {},\n onDispatch,\n setHasChangedPermissions,\n}: FormApiTokenContainerProps) => {\n const { formatMessage } = useIntl();\n\n const handleChangeSelectApiTokenType = ({ target: { value } }: { target: { value: string } }) => {\n setHasChangedPermissions(false);\n\n if (value === 'full-access') {\n onDispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (value === 'read-only') {\n onDispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n };\n\n const typeOptions = [\n {\n value: 'read-only',\n label: {\n id: 'Settings.tokens.types.read-only',\n defaultMessage: 'Read-only',\n },\n },\n {\n value: 'full-access',\n label: {\n id: 'Settings.tokens.types.full-access',\n defaultMessage: 'Full access',\n },\n },\n {\n value: 'custom',\n label: {\n id: 'Settings.tokens.types.custom',\n defaultMessage: 'Custom',\n },\n },\n ];\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid.Root gap={5}>\n <Grid.Item key=\"name\" col={6} xs={12}>\n <TokenName\n error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"description\" col={6} xs={12}>\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"lifespan\" col={6} xs={12}>\n <LifeSpanInput\n isCreating={isCreating}\n error={errors['lifespan']}\n value={values['lifespan']}\n onChange={onChange}\n token={apiToken}\n />\n </Grid.Item>\n\n <Grid.Item key=\"type\" col={6} xs={12}>\n <TokenTypeSelect\n value={values['type']}\n error={errors['type']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n onChange={(value) => {\n // @ts-expect-error – DS Select supports numbers & strings, will be removed in V2\n handleChangeSelectApiTokenType({ target: { value } });\n\n // @ts-expect-error – DS Select supports numbers & strings, will be removed in V2\n onChange({ target: { name: 'type', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n );\n};\n","import React from 'react';\n\nimport { Box, BoxComponent, Flex, Typography } from '@strapi/design-system';\nimport map from 'lodash/map';\nimport tail from 'lodash/tail';\nimport { useIntl } from 'react-intl';\nimport { styled, DefaultTheme } from 'styled-components';\n\ntype HttpVerb = 'POST' | 'GET' | 'PUT' | 'DELETE';\n\ntype MethodColor = {\n text: keyof DefaultTheme['colors'];\n border: keyof DefaultTheme['colors'];\n background: keyof DefaultTheme['colors'];\n};\n\nconst getMethodColor = (verb: HttpVerb): MethodColor => {\n switch (verb) {\n case 'POST': {\n return {\n text: 'success600',\n border: 'success200',\n background: 'success100',\n };\n }\n case 'GET': {\n return {\n text: 'secondary600',\n border: 'secondary200',\n background: 'secondary100',\n };\n }\n case 'PUT': {\n return {\n text: 'warning600',\n border: 'warning200',\n background: 'warning100',\n };\n }\n case 'DELETE': {\n return {\n text: 'danger600',\n border: 'danger200',\n background: 'danger100',\n };\n }\n default: {\n return {\n text: 'neutral600',\n border: 'neutral200',\n background: 'neutral100',\n };\n }\n }\n};\n\nconst MethodBox = styled<BoxComponent>(Box)`\n margin: -1px;\n border-radius: ${({ theme }) => theme.spaces[1]} 0 0 ${({ theme }) => theme.spaces[1]};\n`;\n\ninterface BoundRouteProps {\n route: {\n handler: string;\n method: HttpVerb;\n path: string;\n };\n}\n\nexport const BoundRoute = ({\n route = {\n handler: 'Nocontroller.error',\n method: 'GET',\n path: '/there-is-no-path',\n },\n}: BoundRouteProps) => {\n const { formatMessage } = useIntl();\n\n const { method, handler: title, path } = route;\n const formattedRoute = path ? tail(path.split('/')) : [];\n const [controller = '', action = ''] = title ? title.split('.') : [];\n const colors = getMethodColor(route.method);\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.BoundRoute.title',\n defaultMessage: 'Bound route to',\n })}\n &nbsp;\n <span>{controller}</span>\n <Typography variant=\"delta\" textColor=\"primary600\">\n .{action}\n </Typography>\n </Typography>\n <Flex hasRadius background=\"neutral0\" borderColor=\"neutral200\" gap={0}>\n <MethodBox background={colors.background} borderColor={colors.border} padding={2}>\n <Typography fontWeight=\"bold\" textColor={colors.text}>\n {method}\n </Typography>\n </MethodBox>\n <Box paddingLeft={2} paddingRight={2}>\n {map(formattedRoute, (value) => (\n <Typography key={value} textColor={value.includes(':') ? 'neutral600' : 'neutral900'}>\n /{value}\n </Typography>\n ))}\n </Box>\n </Flex>\n </Flex>\n );\n};\n","import { Grid, Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nimport { BoundRoute } from './BoundRoute';\n\nexport const ActionBoundRoutes = () => {\n const {\n value: { selectedAction, routes },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n const actionSection = selectedAction?.split('.')[0];\n\n return (\n <Grid.Item\n col={5}\n background=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n style={{ minHeight: '100%' }}\n >\n {selectedAction ? (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n {actionSection &&\n actionSection in routes &&\n routes[actionSection].map((route) => {\n return route.config.auth?.scope?.includes(selectedAction) ||\n route.handler === selectedAction ? (\n <BoundRoute key={route.handler} route={route} />\n ) : null;\n })}\n </Flex>\n ) : (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.title',\n defaultMessage: 'Advanced settings',\n })}\n </Typography>\n <Typography tag=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.hint',\n defaultMessage:\n \"Select the application's actions or the plugin's actions and click on the cog icon to display the bound route\",\n })}\n </Typography>\n </Flex>\n )}\n </Grid.Item>\n );\n};\n","import * as React from 'react';\n\nimport {\n Accordion,\n Box,\n BoxComponent,\n Checkbox,\n Flex,\n Grid,\n Typography,\n} from '@strapi/design-system';\nimport { Cog } from '@strapi/icons';\nimport capitalize from 'lodash/capitalize';\nimport { useIntl } from 'react-intl';\nimport { styled, css } from 'styled-components';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nconst activeCheckboxWrapperStyles = css`\n background: ${(props) => props.theme.colors.primary100};\n\n #cog {\n opacity: 1;\n }\n`;\n\nconst CheckboxWrapper = styled<BoxComponent>(Box)<{ $isActive: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n #cog {\n opacity: 0;\n path {\n fill: ${(props) => props.theme.colors.primary600};\n }\n }\n\n /* Show active style both on hover and when the action is selected */\n ${(props) => props.$isActive && activeCheckboxWrapperStyles}\n &:hover {\n ${activeCheckboxWrapperStyles}\n }\n`;\n\nconst Border = styled.div`\n flex: 1;\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\ninterface CollapsableContentTypeProps {\n controllers?: ContentApiPermission['controllers'];\n label: ContentApiPermission['label'];\n orderNumber?: number;\n disabled?: boolean;\n}\n\nexport const CollapsableContentType = ({\n controllers = [],\n label,\n orderNumber = 0,\n disabled = false,\n}: CollapsableContentTypeProps) => {\n const {\n value: { onChangeSelectAll, onChange, selectedActions, setSelectedAction, selectedAction },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n\n const isActionSelected = (actionId: string) => actionId === selectedAction;\n\n return (\n <Accordion.Item value={`${label}-${orderNumber}`}>\n <Accordion.Header variant={orderNumber % 2 ? 'primary' : 'secondary'}>\n <Accordion.Trigger>{capitalize(label)}</Accordion.Trigger>\n </Accordion.Header>\n <Accordion.Content>\n {controllers?.map((controller) => {\n const allActionsSelected = controller.actions.every((action) =>\n selectedActions.includes(action.actionId)\n );\n\n const someActionsSelected = controller.actions.some((action) =>\n selectedActions.includes(action.actionId)\n );\n\n return (\n <Box key={`${label}.${controller?.controller}`}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" padding={4}>\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {controller?.controller}\n </Typography>\n </Box>\n <Border />\n <Box paddingLeft={4}>\n <Checkbox\n checked={\n !allActionsSelected && someActionsSelected\n ? 'indeterminate'\n : allActionsSelected\n }\n onCheckedChange={() => {\n onChangeSelectAll({ target: { value: [...controller.actions] } });\n }}\n disabled={disabled}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Grid.Root gap={4} padding={4}>\n {controller?.actions &&\n controller?.actions.map((action) => {\n return (\n <Grid.Item col={6} key={action.actionId}>\n <CheckboxWrapper\n $isActive={isActionSelected(action.actionId)}\n padding={2}\n hasRadius\n >\n <Checkbox\n checked={selectedActions.includes(action.actionId)}\n name={action.actionId}\n onCheckedChange={() => {\n onChange({ target: { value: action.actionId } });\n }}\n disabled={disabled}\n >\n {action.action}\n </Checkbox>\n <button\n type=\"button\"\n data-testid=\"action-cog\"\n onClick={() =>\n setSelectedAction({ target: { value: action.actionId } })\n }\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <Cog id=\"cog\" />\n </button>\n </CheckboxWrapper>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </Accordion.Content>\n </Accordion.Item>\n );\n};\n","import { Accordion, Box } from '@strapi/design-system';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\nimport { CollapsableContentType } from './CollapsableContentType';\n\ninterface ContentTypesSectionProps {\n section: ContentApiPermission[] | null;\n}\n\nexport const ContentTypesSection = ({ section = null, ...props }: ContentTypesSectionProps) => {\n return (\n <Box padding={4} background=\"neutral0\">\n <Accordion.Root size=\"M\">\n {section &&\n section.map((api, index) => (\n <CollapsableContentType\n key={api.apiId}\n label={api.label}\n controllers={api.controllers}\n orderNumber={index}\n {...props}\n />\n ))}\n </Accordion.Root>\n </Box>\n );\n};\n","import { Flex, Grid, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nimport { ActionBoundRoutes } from './ActionBoundRoutes';\nimport { ContentTypesSection } from './ContentTypesSection';\n\nexport const Permissions = ({ ...props }) => {\n const {\n value: { data },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n\n return (\n <Grid.Root gap={0} shadow=\"filterShadow\" hasRadius background=\"neutral0\">\n <Grid.Item col={7} paddingTop={6} paddingBottom={6} paddingLeft={7} paddingRight={7}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.title',\n defaultMessage: 'Permissions',\n })}\n </Typography>\n <Typography tag=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.description',\n defaultMessage: 'Only actions bound by a route are listed below.',\n })}\n </Typography>\n </Flex>\n {data?.permissions && <ContentTypesSection section={data?.permissions} {...props} />}\n </Grid.Item>\n <ActionBoundRoutes />\n </Grid.Root>\n );\n};\n","import * as yup from 'yup';\n\nimport { translatedErrors } from '../../../../../utils/translatedErrors';\n\nexport const schema = yup.object().shape({\n name: yup.string().max(100).required(translatedErrors.required.id),\n type: yup\n .string()\n .oneOf(['read-only', 'full-access', 'custom'])\n .required(translatedErrors.required.id),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required.id),\n});\n","import { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\ninterface Layout {\n allActionsIds: string[];\n permissions: {\n apiId: string;\n label: string;\n controllers: { controller: string; actions: { action: string; actionId: string }[] }[];\n }[];\n}\n\nexport const transformPermissionsData = (data: ContentApiPermission) => {\n const layout: Layout = {\n allActionsIds: [],\n permissions: [],\n };\n\n layout.permissions = Object.entries(data).map(([apiId, permission]) => ({\n apiId,\n label: apiId.split('::')[1],\n controllers: Object.keys(permission.controllers)\n .map((controller) => ({\n controller,\n actions:\n controller in permission.controllers\n ? permission.controllers[controller]\n .map((action: ContentApiPermission['controllers']) => {\n const actionId = `${apiId}.${controller}.${action}`;\n\n if (apiId.includes('api::')) {\n layout.allActionsIds.push(actionId);\n }\n\n return {\n action,\n actionId,\n };\n })\n .flat()\n : [],\n }))\n .flat(),\n }));\n\n return layout;\n};\n","/* eslint-disable consistent-return */\nimport { produce } from 'immer';\nimport pull from 'lodash/pull';\n\nimport { ContentApiPermission } from '../../../../../../../shared/contracts/content-api/permissions';\n\nimport { ApiTokenPermissionsContextValue } from './apiTokenPermissions';\nimport { transformPermissionsData } from './utils/transformPermissionsData';\n\ntype InitialState = Pick<\n ApiTokenPermissionsContextValue['value'],\n 'data' | 'routes' | 'selectedAction' | 'selectedActions'\n>;\n\ninterface ActionOnChange {\n type: 'ON_CHANGE';\n value: string;\n}\n\ninterface ActionSelectAllInPermission {\n type: 'SELECT_ALL_IN_PERMISSION';\n value: { action: string; actionId: string }[];\n}\n\ninterface ActionSelectAllActions {\n type: 'SELECT_ALL_ACTIONS';\n}\n\ninterface ActionOnChangeReadOnly {\n type: 'ON_CHANGE_READ_ONLY';\n}\n\ninterface ActionUpdatePermissionsLayout {\n type: 'UPDATE_PERMISSIONS_LAYOUT';\n value: ContentApiPermission;\n}\n\ninterface ActionUpdateRoutes {\n type: 'UPDATE_ROUTES';\n value: ApiTokenPermissionsContextValue['value']['routes'] | undefined;\n}\n\ninterface ActionUpdatePermissions {\n type: 'UPDATE_PERMISSIONS';\n value: any[];\n}\n\ninterface ActionSetSelectedAction {\n type: 'SET_SELECTED_ACTION';\n value: string;\n}\n\ntype Action =\n | ActionOnChange\n | ActionSelectAllInPermission\n | ActionSelectAllActions\n | ActionOnChangeReadOnly\n | ActionUpdatePermissionsLayout\n | ActionUpdateRoutes\n | ActionUpdatePermissions\n | ActionSetSelectedAction;\n\nexport const initialState: InitialState = {\n data: {\n allActionsIds: [],\n permissions: [],\n },\n routes: {},\n selectedAction: '',\n selectedActions: [],\n};\n\nexport const reducer = (state: InitialState, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_CHANGE': {\n if (draftState.selectedActions.includes(action.value)) {\n pull(draftState.selectedActions, action.value);\n } else {\n draftState.selectedActions.push(action.value);\n }\n break;\n }\n case 'SELECT_ALL_IN_PERMISSION': {\n const areAllSelected = action.value.every((item) =>\n draftState.selectedActions.includes(item.actionId)\n );\n\n if (areAllSelected) {\n action.value.forEach((item) => {\n pull(draftState.selectedActions, item.actionId);\n });\n } else {\n action.value.forEach((item) => {\n draftState.selectedActions.push(item.actionId);\n });\n }\n break;\n }\n\n case 'SELECT_ALL_ACTIONS': {\n draftState.selectedActions = [...draftState.data.allActionsIds];\n\n break;\n }\n case 'ON_CHANGE_READ_ONLY': {\n const onlyReadOnlyActions = draftState.data.allActionsIds.filter(\n (actionId) => actionId.includes('find') || actionId.includes('findOne')\n );\n draftState.selectedActions = [...onlyReadOnlyActions];\n break;\n }\n case 'UPDATE_PERMISSIONS_LAYOUT': {\n draftState.data = transformPermissionsData(action.value);\n break;\n }\n case 'UPDATE_ROUTES': {\n draftState.routes = { ...action.value };\n break;\n }\n case 'UPDATE_PERMISSIONS': {\n draftState.selectedActions = [...action.value];\n break;\n }\n case 'SET_SELECTED_ACTION': {\n draftState.selectedAction = action.value;\n break;\n }\n default:\n return draftState;\n }\n });\n","import * as React from 'react';\n\nimport { Flex } from '@strapi/design-system';\nimport { Formik, Form, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useMatch, useNavigate } from 'react-router-dom';\n\nimport { useGuidedTour } from '../../../../../components/GuidedTour/Provider';\nimport { Layouts } from '../../../../../components/Layouts/Layout';\nimport { Page } from '../../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../../core/store/hooks';\nimport { useNotification } from '../../../../../features/Notifications';\nimport { useTracking } from '../../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../../hooks/useAPIErrorHandler';\nimport { useRBAC } from '../../../../../hooks/useRBAC';\nimport {\n useCreateAPITokenMutation,\n useGetAPITokenQuery,\n useUpdateAPITokenMutation,\n} from '../../../../../services/apiTokens';\nimport { useGetPermissionsQuery, useGetRoutesQuery } from '../../../../../services/contentApi';\nimport { isBaseQueryError } from '../../../../../utils/baseQuery';\nimport { API_TOKEN_TYPE } from '../../../components/Tokens/constants';\nimport { FormHead } from '../../../components/Tokens/FormHead';\nimport { TokenBox } from '../../../components/Tokens/TokenBox';\n\nimport {\n ApiTokenPermissionsContextValue,\n ApiTokenPermissionsProvider,\n} from './apiTokenPermissions';\nimport { FormApiTokenContainer } from './components/FormApiTokenContainer';\nimport { Permissions } from './components/Permissions';\nimport { schema } from './constants';\nimport { initialState, reducer } from './reducer';\n\nimport type { Get, ApiToken } from '../../../../../../../shared/contracts/api-token';\n\n/**\n * TODO: this could definitely be refactored to avoid using redux and instead just use the\n * server response as the source of the truth for the data.\n */\nexport const EditView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { state: locationState } = useLocation();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const [apiToken, setApiToken] = React.useState<ApiToken | null>(\n locationState?.apiToken?.accessKey\n ? {\n ...locationState.apiToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const setCurrentStep = useGuidedTour('EditView', (state) => state.setCurrentStep);\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions.settings?.['api-tokens']);\n const [state, dispatch] = React.useReducer(reducer, initialState);\n const match = useMatch('/settings/api-tokens/:id');\n const id = match?.params?.id;\n const isCreating = id === 'create';\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidtionErrors,\n } = useAPIErrorHandler();\n\n const navigate = useNavigate();\n\n const contentAPIPermissionsQuery = useGetPermissionsQuery();\n const contentAPIRoutesQuery = useGetRoutesQuery();\n\n /**\n * Separate effects otherwise we could end\n * up duplicating the same notification.\n */\n React.useEffect(() => {\n if (contentAPIPermissionsQuery.error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(contentAPIPermissionsQuery.error),\n });\n }\n }, [contentAPIPermissionsQuery.error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (contentAPIRoutesQuery.error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(contentAPIRoutesQuery.error),\n });\n }\n }, [contentAPIRoutesQuery.error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (contentAPIPermissionsQuery.data) {\n dispatch({\n type: 'UPDATE_PERMISSIONS_LAYOUT',\n value: contentAPIPermissionsQuery.data,\n });\n }\n }, [contentAPIPermissionsQuery.data]);\n\n React.useEffect(() => {\n if (contentAPIRoutesQuery.data) {\n dispatch({\n type: 'UPDATE_ROUTES',\n value: contentAPIRoutesQuery.data,\n });\n }\n }, [contentAPIRoutesQuery.data]);\n\n React.useEffect(() => {\n if (apiToken) {\n if (apiToken.type === 'read-only') {\n dispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n if (apiToken.type === 'full-access') {\n dispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (apiToken.type === 'custom') {\n dispatch({\n type: 'UPDATE_PERMISSIONS',\n value: apiToken?.permissions,\n });\n }\n }\n }, [apiToken]);\n\n React.useEffect(() => {\n trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: API_TOKEN_TYPE,\n });\n }, [isCreating, trackUsage]);\n\n const { data, error, isLoading } = useGetAPITokenQuery(id!, {\n skip: !id || isCreating || !!apiToken,\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (data) {\n setApiToken(data);\n\n if (data.type === 'read-only') {\n dispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n if (data.type === 'full-access') {\n dispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (data.type === 'custom') {\n dispatch({\n type: 'UPDATE_PERMISSIONS',\n value: data?.permissions,\n });\n }\n }\n }, [data]);\n\n const [createToken] = useCreateAPITokenMutation();\n const [updateToken] = useUpdateAPITokenMutation();\n\n interface FormValues extends Pick<Get.Response['data'], 'name' | 'description'> {\n lifespan: Get.Response['data']['lifespan'] | undefined;\n type: Get.Response['data']['type'] | undefined;\n }\n\n const handleSubmit = async (body: FormValues, formik: FormikHelpers<FormValues>) => {\n trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: API_TOKEN_TYPE,\n });\n\n try {\n if (isCreating) {\n const res = await createToken({\n ...body,\n // lifespan must be \"null\" for unlimited (0 would mean instantly expired and isn't accepted)\n lifespan:\n body?.lifespan && body.lifespan !== '0' ? parseInt(body.lifespan.toString(), 10) : null,\n permissions: body.type === 'custom' ? state.selectedActions : null,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidtionErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.apitokencreated',\n defaultMessage: 'API Token successfully created',\n }),\n });\n\n trackUsage('didCreateToken', {\n type: res.data.type,\n tokenType: API_TOKEN_TYPE,\n });\n\n navigate(`../api-tokens/${res.data.id.toString()}`, {\n state: { apiToken: res.data },\n replace: true,\n });\n setCurrentStep('apiTokens.success');\n } else {\n const res = await updateToken({\n id: id!,\n name: body.name,\n description: body.description,\n type: body.type,\n permissions: body.type === 'custom' ? state.selectedActions : null,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidtionErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.apitokenedited',\n defaultMessage: 'API Token successfully edited',\n }),\n });\n\n trackUsage('didEditToken', {\n type: res.data.type,\n tokenType: API_TOKEN_TYPE,\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n }\n };\n\n const [hasChangedPermissions, setHasChangedPermissions] = React.useState(false);\n\n const handleChangeCheckbox = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['onChange']>[0]) => {\n setHasChangedPermissions(true);\n dispatch({\n type: 'ON_CHANGE',\n value,\n });\n };\n\n const handleChangeSelectAllCheckbox = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['onChangeSelectAll']>[0]) => {\n setHasChangedPermissions(true);\n dispatch({\n type: 'SELECT_ALL_IN_PERMISSION',\n value,\n });\n };\n\n const setSelectedAction = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['setSelectedAction']>[0]) => {\n dispatch({\n type: 'SET_SELECTED_ACTION',\n value,\n });\n };\n\n const providerValue = {\n ...state,\n onChange: handleChangeCheckbox,\n onChangeSelectAll: handleChangeSelectAllCheckbox,\n setSelectedAction,\n };\n\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <ApiTokenPermissionsProvider value={providerValue}>\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: 'API Tokens' }\n )}\n </Page.Title>\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={{\n name: apiToken?.name || '',\n description: apiToken?.description || '',\n type: apiToken?.type,\n lifespan: apiToken?.lifespan,\n }}\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values, setFieldValue }) => {\n if (hasChangedPermissions && values?.type !== 'custom') {\n setFieldValue('type', 'custom');\n }\n\n return (\n <Form>\n <FormHead\n title={{\n id: 'Settings.apiTokens.createPage.title',\n defaultMessage: 'Create API Token',\n }}\n token={apiToken}\n setToken={setApiToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/api-tokens/\"\n />\n\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {Boolean(apiToken?.name) && (\n <TokenBox token={apiToken?.accessKey} tokenType={API_TOKEN_TYPE} />\n )}\n <FormApiTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n apiToken={apiToken}\n onDispatch={dispatch}\n setHasChangedPermissions={setHasChangedPermissions}\n />\n <Permissions\n disabled={\n !canEditInputs ||\n values?.type === 'read-only' ||\n values?.type === 'full-access'\n }\n />\n </Flex>\n </Layouts.Content>\n </Form>\n );\n }}\n </Formik>\n </Page.Main>\n </ApiTokenPermissionsProvider>\n );\n};\n\nexport const ProtectedEditView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['api-tokens'].read\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <EditView />\n </Page.Protect>\n );\n};\n"],"names":["translatedErrors","state"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"EditViewPage-uUDS6iky.js","sources":["../../admin/src/services/contentApi.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/apiTokenPermissions.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/ContentTypesSection.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/Permissions.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/constants.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.tsx"],"sourcesContent":["import { adminApi } from './api';\n\nimport type { List as ListContentApiPermissions } from '../../../shared/contracts/content-api/permissions';\nimport type { List as ListContentApiRoutes } from '../../../shared/contracts/content-api/routes';\n\nconst contentApiService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getPermissions: builder.query<ListContentApiPermissions.Response['data'], void>({\n query: () => '/admin/content-api/permissions',\n transformResponse: (response: ListContentApiPermissions.Response) => response.data,\n }),\n getRoutes: builder.query<ListContentApiRoutes.Response['data'], void>({\n query: () => '/admin/content-api/routes',\n transformResponse: (response: ListContentApiRoutes.Response) => response.data,\n }),\n }),\n overrideExisting: false,\n});\n\nconst { useGetPermissionsQuery, useGetRoutesQuery } = contentApiService;\n\nexport { useGetPermissionsQuery, useGetRoutesQuery };\n","/* eslint-disable check-file/filename-naming-convention */\n\nimport * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\n\nimport { List as ListContentApiPermissions } from '../../../../../../../shared/contracts/content-api/permissions';\nimport { List as ListContentApiRoutes } from '../../../../../../../shared/contracts/content-api/routes';\n\nexport interface PseudoEvent {\n target: { value: string };\n}\n\ninterface ApiTokenPermissionsContextValue {\n value: {\n selectedAction: string | null;\n routes: ListContentApiRoutes.Response['data'];\n selectedActions: string[];\n data: {\n allActionsIds: string[];\n permissions: ListContentApiPermissions.Response['data'][];\n };\n onChange: ({ target: { value } }: PseudoEvent) => void;\n onChangeSelectAll: ({\n target: { value },\n }: {\n target: { value: { action: string; actionId: string }[] };\n }) => void;\n setSelectedAction: ({ target: { value } }: PseudoEvent) => void;\n };\n}\n\ninterface ApiTokenPermissionsContextProviderProps extends ApiTokenPermissionsContextValue {\n children: React.ReactNode | React.ReactNode[];\n}\n\nconst [ApiTokenPermissionsContextProvider, useApiTokenPermissionsContext] =\n createContext<ApiTokenPermissionsContextValue>('ApiTokenPermissionsContext');\n\nconst ApiTokenPermissionsProvider = ({\n children,\n ...rest\n}: ApiTokenPermissionsContextProviderProps) => {\n return (\n <ApiTokenPermissionsContextProvider {...rest}>{children}</ApiTokenPermissionsContextProvider>\n );\n};\n\nconst useApiTokenPermissions = () => useApiTokenPermissionsContext('useApiTokenPermissions');\n\nexport { ApiTokenPermissionsProvider, useApiTokenPermissions };\nexport type { ApiTokenPermissionsContextValue, ApiTokenPermissionsContextProviderProps };\n","import * as React from 'react';\n\nimport { Box, Flex, Grid, Typography } from '@strapi/design-system';\nimport { FormikErrors } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { LifeSpanInput } from '../../../../components/Tokens/LifeSpanInput';\nimport { TokenDescription } from '../../../../components/Tokens/TokenDescription';\nimport { TokenName } from '../../../../components/Tokens/TokenName';\nimport { TokenTypeSelect } from '../../../../components/Tokens/TokenTypeSelect';\n\nimport type { ApiToken } from '../../../../../../../../shared/contracts/api-token';\n\ninterface FormApiTokenContainerProps {\n errors?: FormikErrors<Pick<ApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values?: Partial<Pick<ApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n isCreating: boolean;\n apiToken?: null | Partial<ApiToken>;\n onDispatch: React.Dispatch<any>;\n setHasChangedPermissions: (hasChanged: boolean) => void;\n}\n\nexport const FormApiTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values = {},\n apiToken = {},\n onDispatch,\n setHasChangedPermissions,\n}: FormApiTokenContainerProps) => {\n const { formatMessage } = useIntl();\n\n const handleChangeSelectApiTokenType = ({ target: { value } }: { target: { value: string } }) => {\n setHasChangedPermissions(false);\n\n if (value === 'full-access') {\n onDispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (value === 'read-only') {\n onDispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n };\n\n const typeOptions = [\n {\n value: 'read-only',\n label: {\n id: 'Settings.tokens.types.read-only',\n defaultMessage: 'Read-only',\n },\n },\n {\n value: 'full-access',\n label: {\n id: 'Settings.tokens.types.full-access',\n defaultMessage: 'Full access',\n },\n },\n {\n value: 'custom',\n label: {\n id: 'Settings.tokens.types.custom',\n defaultMessage: 'Custom',\n },\n },\n ];\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid.Root gap={5}>\n <Grid.Item key=\"name\" col={6} xs={12}>\n <TokenName\n error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"description\" col={6} xs={12}>\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"lifespan\" col={6} xs={12}>\n <LifeSpanInput\n isCreating={isCreating}\n error={errors['lifespan']}\n value={values['lifespan']}\n onChange={onChange}\n token={apiToken}\n />\n </Grid.Item>\n\n <Grid.Item key=\"type\" col={6} xs={12}>\n <TokenTypeSelect\n value={values['type']}\n error={errors['type']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n onChange={(value) => {\n // @ts-expect-error – DS Select supports numbers & strings, will be removed in V2\n handleChangeSelectApiTokenType({ target: { value } });\n\n // @ts-expect-error – DS Select supports numbers & strings, will be removed in V2\n onChange({ target: { name: 'type', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n );\n};\n","import React from 'react';\n\nimport { Box, BoxComponent, Flex, Typography } from '@strapi/design-system';\nimport map from 'lodash/map';\nimport tail from 'lodash/tail';\nimport { useIntl } from 'react-intl';\nimport { styled, DefaultTheme } from 'styled-components';\n\ntype HttpVerb = 'POST' | 'GET' | 'PUT' | 'DELETE';\n\ntype MethodColor = {\n text: keyof DefaultTheme['colors'];\n border: keyof DefaultTheme['colors'];\n background: keyof DefaultTheme['colors'];\n};\n\nconst getMethodColor = (verb: HttpVerb): MethodColor => {\n switch (verb) {\n case 'POST': {\n return {\n text: 'success600',\n border: 'success200',\n background: 'success100',\n };\n }\n case 'GET': {\n return {\n text: 'secondary600',\n border: 'secondary200',\n background: 'secondary100',\n };\n }\n case 'PUT': {\n return {\n text: 'warning600',\n border: 'warning200',\n background: 'warning100',\n };\n }\n case 'DELETE': {\n return {\n text: 'danger600',\n border: 'danger200',\n background: 'danger100',\n };\n }\n default: {\n return {\n text: 'neutral600',\n border: 'neutral200',\n background: 'neutral100',\n };\n }\n }\n};\n\nconst MethodBox = styled<BoxComponent>(Box)`\n margin: -1px;\n border-radius: ${({ theme }) => theme.spaces[1]} 0 0 ${({ theme }) => theme.spaces[1]};\n`;\n\ninterface BoundRouteProps {\n route: {\n handler: string;\n method: HttpVerb;\n path: string;\n };\n}\n\nexport const BoundRoute = ({\n route = {\n handler: 'Nocontroller.error',\n method: 'GET',\n path: '/there-is-no-path',\n },\n}: BoundRouteProps) => {\n const { formatMessage } = useIntl();\n\n const { method, handler: title, path } = route;\n const formattedRoute = path ? tail(path.split('/')) : [];\n const [controller = '', action = ''] = title ? title.split('.') : [];\n const colors = getMethodColor(route.method);\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.BoundRoute.title',\n defaultMessage: 'Bound route to',\n })}\n &nbsp;\n <span>{controller}</span>\n <Typography variant=\"delta\" textColor=\"primary600\">\n .{action}\n </Typography>\n </Typography>\n <Flex hasRadius background=\"neutral0\" borderColor=\"neutral200\" gap={0}>\n <MethodBox background={colors.background} borderColor={colors.border} padding={2}>\n <Typography fontWeight=\"bold\" textColor={colors.text}>\n {method}\n </Typography>\n </MethodBox>\n <Box paddingLeft={2} paddingRight={2}>\n {map(formattedRoute, (value) => (\n <Typography key={value} textColor={value.includes(':') ? 'neutral600' : 'neutral900'}>\n /{value}\n </Typography>\n ))}\n </Box>\n </Flex>\n </Flex>\n );\n};\n","import { Grid, Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nimport { BoundRoute } from './BoundRoute';\n\nexport const ActionBoundRoutes = () => {\n const {\n value: { selectedAction, routes },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n const actionSection = selectedAction?.split('.')[0];\n\n return (\n <Grid.Item\n col={5}\n background=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n style={{ minHeight: '100%' }}\n >\n {selectedAction ? (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n {actionSection &&\n actionSection in routes &&\n routes[actionSection].map((route) => {\n return route.config.auth?.scope?.includes(selectedAction) ||\n route.handler === selectedAction ? (\n <BoundRoute key={route.handler} route={route} />\n ) : null;\n })}\n </Flex>\n ) : (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.title',\n defaultMessage: 'Advanced settings',\n })}\n </Typography>\n <Typography tag=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.hint',\n defaultMessage:\n \"Select the application's actions or the plugin's actions and click on the cog icon to display the bound route\",\n })}\n </Typography>\n </Flex>\n )}\n </Grid.Item>\n );\n};\n","import * as React from 'react';\n\nimport {\n Accordion,\n Box,\n BoxComponent,\n Checkbox,\n Flex,\n Grid,\n Typography,\n} from '@strapi/design-system';\nimport { Cog } from '@strapi/icons';\nimport capitalize from 'lodash/capitalize';\nimport { useIntl } from 'react-intl';\nimport { styled, css } from 'styled-components';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nconst activeCheckboxWrapperStyles = css`\n background: ${(props) => props.theme.colors.primary100};\n\n #cog {\n opacity: 1;\n }\n`;\n\nconst CheckboxWrapper = styled<BoxComponent>(Box)<{ $isActive: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n #cog {\n opacity: 0;\n path {\n fill: ${(props) => props.theme.colors.primary600};\n }\n }\n\n /* Show active style both on hover and when the action is selected */\n ${(props) => props.$isActive && activeCheckboxWrapperStyles}\n &:hover {\n ${activeCheckboxWrapperStyles}\n }\n`;\n\nconst Border = styled.div`\n flex: 1;\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\ninterface CollapsableContentTypeProps {\n controllers?: ContentApiPermission['controllers'];\n label: ContentApiPermission['label'];\n orderNumber?: number;\n disabled?: boolean;\n}\n\nexport const CollapsableContentType = ({\n controllers = [],\n label,\n orderNumber = 0,\n disabled = false,\n}: CollapsableContentTypeProps) => {\n const {\n value: { onChangeSelectAll, onChange, selectedActions, setSelectedAction, selectedAction },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n\n const isActionSelected = (actionId: string) => actionId === selectedAction;\n\n return (\n <Accordion.Item value={`${label}-${orderNumber}`}>\n <Accordion.Header variant={orderNumber % 2 ? 'primary' : 'secondary'}>\n <Accordion.Trigger>{capitalize(label)}</Accordion.Trigger>\n </Accordion.Header>\n <Accordion.Content>\n {controllers?.map((controller) => {\n const allActionsSelected = controller.actions.every((action) =>\n selectedActions.includes(action.actionId)\n );\n\n const someActionsSelected = controller.actions.some((action) =>\n selectedActions.includes(action.actionId)\n );\n\n return (\n <Box key={`${label}.${controller?.controller}`}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" padding={4}>\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {controller?.controller}\n </Typography>\n </Box>\n <Border />\n <Box paddingLeft={4}>\n <Checkbox\n checked={\n !allActionsSelected && someActionsSelected\n ? 'indeterminate'\n : allActionsSelected\n }\n onCheckedChange={() => {\n onChangeSelectAll({ target: { value: [...controller.actions] } });\n }}\n disabled={disabled}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Grid.Root gap={4} padding={4}>\n {controller?.actions &&\n controller?.actions.map((action) => {\n return (\n <Grid.Item col={6} key={action.actionId}>\n <CheckboxWrapper\n $isActive={isActionSelected(action.actionId)}\n padding={2}\n hasRadius\n >\n <Checkbox\n checked={selectedActions.includes(action.actionId)}\n name={action.actionId}\n onCheckedChange={() => {\n onChange({ target: { value: action.actionId } });\n }}\n disabled={disabled}\n >\n {action.action}\n </Checkbox>\n <button\n type=\"button\"\n data-testid=\"action-cog\"\n onClick={() =>\n setSelectedAction({ target: { value: action.actionId } })\n }\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <Cog id=\"cog\" />\n </button>\n </CheckboxWrapper>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </Accordion.Content>\n </Accordion.Item>\n );\n};\n","import { Accordion, Box } from '@strapi/design-system';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\nimport { CollapsableContentType } from './CollapsableContentType';\n\ninterface ContentTypesSectionProps {\n section: ContentApiPermission[] | null;\n}\n\nexport const ContentTypesSection = ({ section = null, ...props }: ContentTypesSectionProps) => {\n return (\n <Box padding={4} background=\"neutral0\">\n <Accordion.Root size=\"M\">\n {section &&\n section.map((api, index) => (\n <CollapsableContentType\n key={api.apiId}\n label={api.label}\n controllers={api.controllers}\n orderNumber={index}\n {...props}\n />\n ))}\n </Accordion.Root>\n </Box>\n );\n};\n","import { Flex, Grid, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nimport { ActionBoundRoutes } from './ActionBoundRoutes';\nimport { ContentTypesSection } from './ContentTypesSection';\n\nexport const Permissions = ({ ...props }) => {\n const {\n value: { data },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n\n return (\n <Grid.Root gap={0} shadow=\"filterShadow\" hasRadius background=\"neutral0\">\n <Grid.Item col={7} paddingTop={6} paddingBottom={6} paddingLeft={7} paddingRight={7}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.title',\n defaultMessage: 'Permissions',\n })}\n </Typography>\n <Typography tag=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.description',\n defaultMessage: 'Only actions bound by a route are listed below.',\n })}\n </Typography>\n </Flex>\n {data?.permissions && <ContentTypesSection section={data?.permissions} {...props} />}\n </Grid.Item>\n <ActionBoundRoutes />\n </Grid.Root>\n );\n};\n","import * as yup from 'yup';\n\nimport { translatedErrors } from '../../../../../utils/translatedErrors';\n\nexport const schema = yup.object().shape({\n name: yup.string().max(100).required(translatedErrors.required.id),\n type: yup\n .string()\n .oneOf(['read-only', 'full-access', 'custom'])\n .required(translatedErrors.required.id),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required.id),\n});\n","import { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\ninterface Layout {\n allActionsIds: string[];\n permissions: {\n apiId: string;\n label: string;\n controllers: { controller: string; actions: { action: string; actionId: string }[] }[];\n }[];\n}\n\nexport const transformPermissionsData = (data: ContentApiPermission) => {\n const layout: Layout = {\n allActionsIds: [],\n permissions: [],\n };\n\n layout.permissions = Object.entries(data).map(([apiId, permission]) => ({\n apiId,\n label: apiId.split('::')[1],\n controllers: Object.keys(permission.controllers)\n .map((controller) => ({\n controller,\n actions:\n controller in permission.controllers\n ? permission.controllers[controller]\n .map((action: ContentApiPermission['controllers']) => {\n const actionId = `${apiId}.${controller}.${action}`;\n\n if (apiId.includes('api::')) {\n layout.allActionsIds.push(actionId);\n }\n\n return {\n action,\n actionId,\n };\n })\n .flat()\n : [],\n }))\n .flat(),\n }));\n\n return layout;\n};\n","/* eslint-disable consistent-return */\nimport { produce } from 'immer';\nimport pull from 'lodash/pull';\n\nimport { ContentApiPermission } from '../../../../../../../shared/contracts/content-api/permissions';\n\nimport { ApiTokenPermissionsContextValue } from './apiTokenPermissions';\nimport { transformPermissionsData } from './utils/transformPermissionsData';\n\ntype InitialState = Pick<\n ApiTokenPermissionsContextValue['value'],\n 'data' | 'routes' | 'selectedAction' | 'selectedActions'\n>;\n\ninterface ActionOnChange {\n type: 'ON_CHANGE';\n value: string;\n}\n\ninterface ActionSelectAllInPermission {\n type: 'SELECT_ALL_IN_PERMISSION';\n value: { action: string; actionId: string }[];\n}\n\ninterface ActionSelectAllActions {\n type: 'SELECT_ALL_ACTIONS';\n}\n\ninterface ActionOnChangeReadOnly {\n type: 'ON_CHANGE_READ_ONLY';\n}\n\ninterface ActionUpdatePermissionsLayout {\n type: 'UPDATE_PERMISSIONS_LAYOUT';\n value: ContentApiPermission;\n}\n\ninterface ActionUpdateRoutes {\n type: 'UPDATE_ROUTES';\n value: ApiTokenPermissionsContextValue['value']['routes'] | undefined;\n}\n\ninterface ActionUpdatePermissions {\n type: 'UPDATE_PERMISSIONS';\n value: any[];\n}\n\ninterface ActionSetSelectedAction {\n type: 'SET_SELECTED_ACTION';\n value: string;\n}\n\ntype Action =\n | ActionOnChange\n | ActionSelectAllInPermission\n | ActionSelectAllActions\n | ActionOnChangeReadOnly\n | ActionUpdatePermissionsLayout\n | ActionUpdateRoutes\n | ActionUpdatePermissions\n | ActionSetSelectedAction;\n\nexport const initialState: InitialState = {\n data: {\n allActionsIds: [],\n permissions: [],\n },\n routes: {},\n selectedAction: '',\n selectedActions: [],\n};\n\nexport const reducer = (state: InitialState, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_CHANGE': {\n if (draftState.selectedActions.includes(action.value)) {\n pull(draftState.selectedActions, action.value);\n } else {\n draftState.selectedActions.push(action.value);\n }\n break;\n }\n case 'SELECT_ALL_IN_PERMISSION': {\n const areAllSelected = action.value.every((item) =>\n draftState.selectedActions.includes(item.actionId)\n );\n\n if (areAllSelected) {\n action.value.forEach((item) => {\n pull(draftState.selectedActions, item.actionId);\n });\n } else {\n action.value.forEach((item) => {\n draftState.selectedActions.push(item.actionId);\n });\n }\n break;\n }\n\n case 'SELECT_ALL_ACTIONS': {\n draftState.selectedActions = [...draftState.data.allActionsIds];\n\n break;\n }\n case 'ON_CHANGE_READ_ONLY': {\n const onlyReadOnlyActions = draftState.data.allActionsIds.filter(\n (actionId) => actionId.includes('find') || actionId.includes('findOne')\n );\n draftState.selectedActions = [...onlyReadOnlyActions];\n break;\n }\n case 'UPDATE_PERMISSIONS_LAYOUT': {\n draftState.data = transformPermissionsData(action.value);\n break;\n }\n case 'UPDATE_ROUTES': {\n draftState.routes = { ...action.value };\n break;\n }\n case 'UPDATE_PERMISSIONS': {\n draftState.selectedActions = [...action.value];\n break;\n }\n case 'SET_SELECTED_ACTION': {\n draftState.selectedAction = action.value;\n break;\n }\n default:\n return draftState;\n }\n });\n","import * as React from 'react';\n\nimport { Flex } from '@strapi/design-system';\nimport { Formik, Form, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useMatch, useNavigate } from 'react-router-dom';\n\nimport { useGuidedTour } from '../../../../../components/GuidedTour/Provider';\nimport { Layouts } from '../../../../../components/Layouts/Layout';\nimport { Page } from '../../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../../core/store/hooks';\nimport { useNotification } from '../../../../../features/Notifications';\nimport { useTracking } from '../../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../../hooks/useAPIErrorHandler';\nimport { useRBAC } from '../../../../../hooks/useRBAC';\nimport {\n useCreateAPITokenMutation,\n useGetAPITokenQuery,\n useUpdateAPITokenMutation,\n} from '../../../../../services/apiTokens';\nimport { useGetPermissionsQuery, useGetRoutesQuery } from '../../../../../services/contentApi';\nimport { isBaseQueryError } from '../../../../../utils/baseQuery';\nimport { API_TOKEN_TYPE } from '../../../components/Tokens/constants';\nimport { FormHead } from '../../../components/Tokens/FormHead';\nimport { TokenBox } from '../../../components/Tokens/TokenBox';\n\nimport {\n ApiTokenPermissionsContextValue,\n ApiTokenPermissionsProvider,\n} from './apiTokenPermissions';\nimport { FormApiTokenContainer } from './components/FormApiTokenContainer';\nimport { Permissions } from './components/Permissions';\nimport { schema } from './constants';\nimport { initialState, reducer } from './reducer';\n\nimport type { Get, ApiToken } from '../../../../../../../shared/contracts/api-token';\n\n/**\n * TODO: this could definitely be refactored to avoid using redux and instead just use the\n * server response as the source of the truth for the data.\n */\nexport const EditView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { state: locationState } = useLocation();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const [apiToken, setApiToken] = React.useState<ApiToken | null>(\n locationState?.apiToken?.accessKey\n ? {\n ...locationState.apiToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const setCurrentStep = useGuidedTour('EditView', (state) => state.setCurrentStep);\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions.settings?.['api-tokens']);\n const [state, dispatch] = React.useReducer(reducer, initialState);\n const match = useMatch('/settings/api-tokens/:id');\n const id = match?.params?.id;\n const isCreating = id === 'create';\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidtionErrors,\n } = useAPIErrorHandler();\n\n const navigate = useNavigate();\n\n const contentAPIPermissionsQuery = useGetPermissionsQuery();\n const contentAPIRoutesQuery = useGetRoutesQuery();\n\n /**\n * Separate effects otherwise we could end\n * up duplicating the same notification.\n */\n React.useEffect(() => {\n if (contentAPIPermissionsQuery.error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(contentAPIPermissionsQuery.error),\n });\n }\n }, [contentAPIPermissionsQuery.error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (contentAPIRoutesQuery.error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(contentAPIRoutesQuery.error),\n });\n }\n }, [contentAPIRoutesQuery.error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (contentAPIPermissionsQuery.data) {\n dispatch({\n type: 'UPDATE_PERMISSIONS_LAYOUT',\n value: contentAPIPermissionsQuery.data,\n });\n }\n }, [contentAPIPermissionsQuery.data]);\n\n React.useEffect(() => {\n if (contentAPIRoutesQuery.data) {\n dispatch({\n type: 'UPDATE_ROUTES',\n value: contentAPIRoutesQuery.data,\n });\n }\n }, [contentAPIRoutesQuery.data]);\n\n React.useEffect(() => {\n if (apiToken) {\n if (apiToken.type === 'read-only') {\n dispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n if (apiToken.type === 'full-access') {\n dispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (apiToken.type === 'custom') {\n dispatch({\n type: 'UPDATE_PERMISSIONS',\n value: apiToken?.permissions,\n });\n }\n }\n }, [apiToken]);\n\n React.useEffect(() => {\n trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: API_TOKEN_TYPE,\n });\n }, [isCreating, trackUsage]);\n\n const { data, error, isLoading } = useGetAPITokenQuery(id!, {\n skip: !id || isCreating || !!apiToken,\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (data) {\n setApiToken(data);\n\n if (data.type === 'read-only') {\n dispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n if (data.type === 'full-access') {\n dispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (data.type === 'custom') {\n dispatch({\n type: 'UPDATE_PERMISSIONS',\n value: data?.permissions,\n });\n }\n }\n }, [data]);\n\n const [createToken] = useCreateAPITokenMutation();\n const [updateToken] = useUpdateAPITokenMutation();\n\n interface FormValues extends Pick<Get.Response['data'], 'name' | 'description'> {\n lifespan: Get.Response['data']['lifespan'] | undefined;\n type: Get.Response['data']['type'] | undefined;\n }\n\n const handleSubmit = async (body: FormValues, formik: FormikHelpers<FormValues>) => {\n trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: API_TOKEN_TYPE,\n });\n\n try {\n if (isCreating) {\n const res = await createToken({\n ...body,\n // lifespan must be \"null\" for unlimited (0 would mean instantly expired and isn't accepted)\n lifespan:\n body?.lifespan && body.lifespan !== '0' ? parseInt(body.lifespan.toString(), 10) : null,\n permissions: body.type === 'custom' ? state.selectedActions : null,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidtionErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.apitokencreated',\n defaultMessage: 'API Token successfully created',\n }),\n });\n\n trackUsage('didCreateToken', {\n type: res.data.type,\n tokenType: API_TOKEN_TYPE,\n });\n\n navigate(`../api-tokens/${res.data.id.toString()}`, {\n state: { apiToken: res.data },\n replace: true,\n });\n setCurrentStep('apiTokens.success');\n } else {\n const res = await updateToken({\n id: id!,\n name: body.name,\n description: body.description,\n type: body.type,\n permissions: body.type === 'custom' ? state.selectedActions : null,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidtionErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.apitokenedited',\n defaultMessage: 'API Token successfully edited',\n }),\n });\n\n trackUsage('didEditToken', {\n type: res.data.type,\n tokenType: API_TOKEN_TYPE,\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n }\n };\n\n const [hasChangedPermissions, setHasChangedPermissions] = React.useState(false);\n\n const handleChangeCheckbox = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['onChange']>[0]) => {\n setHasChangedPermissions(true);\n dispatch({\n type: 'ON_CHANGE',\n value,\n });\n };\n\n const handleChangeSelectAllCheckbox = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['onChangeSelectAll']>[0]) => {\n setHasChangedPermissions(true);\n dispatch({\n type: 'SELECT_ALL_IN_PERMISSION',\n value,\n });\n };\n\n const setSelectedAction = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['setSelectedAction']>[0]) => {\n dispatch({\n type: 'SET_SELECTED_ACTION',\n value,\n });\n };\n\n const providerValue = {\n ...state,\n onChange: handleChangeCheckbox,\n onChangeSelectAll: handleChangeSelectAllCheckbox,\n setSelectedAction,\n };\n\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <ApiTokenPermissionsProvider value={providerValue}>\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: 'API Tokens' }\n )}\n </Page.Title>\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={{\n name: apiToken?.name || '',\n description: apiToken?.description || '',\n type: apiToken?.type,\n lifespan: apiToken?.lifespan,\n }}\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values, setFieldValue }) => {\n if (hasChangedPermissions && values?.type !== 'custom') {\n setFieldValue('type', 'custom');\n }\n\n return (\n <Form>\n <FormHead\n title={{\n id: 'Settings.apiTokens.createPage.title',\n defaultMessage: 'Create API Token',\n }}\n token={apiToken}\n setToken={setApiToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/api-tokens/\"\n />\n\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {Boolean(apiToken?.name) && (\n <TokenBox token={apiToken?.accessKey} tokenType={API_TOKEN_TYPE} />\n )}\n <FormApiTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n apiToken={apiToken}\n onDispatch={dispatch}\n setHasChangedPermissions={setHasChangedPermissions}\n />\n <Permissions\n disabled={\n !canEditInputs ||\n values?.type === 'read-only' ||\n values?.type === 'full-access'\n }\n />\n </Flex>\n </Layouts.Content>\n </Form>\n );\n }}\n </Formik>\n </Page.Main>\n </ApiTokenPermissionsProvider>\n );\n};\n\nexport const ProtectedEditView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['api-tokens'].read\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <EditView />\n </Page.Protect>\n );\n};\n"],"names":["adminApi","createContext","jsx","useIntl","Box","Flex","Typography","jsxs","Grid","TokenName","TokenDescription","LifeSpanInput","TokenTypeSelect","styled","tail","css","Accordion","capitalize","Checkbox","Cog","yup","translatedErrors","produce","pull","useNotification","useLocation","useTypedSelector","state","React","useTracking","useGuidedTour","useRBAC","useMatch","useAPIErrorHandler","useNavigate","API_TOKEN_TYPE","useGetAPITokenQuery","useCreateAPITokenMutation","useUpdateAPITokenMutation","isBaseQueryError","Page","Formik","Form","FormHead","Layouts","TokenBox"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"HomePage-cSNwcjEI.js","sources":["../../admin/src/components/GuidedTour/Homepage.tsx","../../admin/src/services/contentManager.ts","../../admin/src/hooks/useContentTypes.ts","../../admin/src/pages/assets/corner-ornament.svg","../../admin/src/pages/assets/strapi-cloud-background.png","../../admin/src/pages/assets/strapi-cloud-flags.svg","../../admin/src/pages/HomePage.tsx"],"sourcesContent":["import { Box, Button, Flex, Typography, LinkButton } from '@strapi/design-system';\nimport { ArrowRight } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\n\nimport { useTracking } from '../../features/Tracking';\n\nimport { LAYOUT_DATA, States, STATES } from './constants';\nimport { Number, VerticalDivider } from './Ornaments';\nimport { GuidedTourContextValue, useGuidedTour } from './Provider';\n\nconst GuidedTourHomepage = () => {\n const guidedTourState = useGuidedTour('GuidedTourHomepage', (state) => state.guidedTourState);\n const setSkipped = useGuidedTour('GuidedTourHomepage', (state) => state.setSkipped);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const sections = Object.entries(LAYOUT_DATA).map(([key, val]) => ({\n key: key,\n title: val.home.title,\n content: (\n <LinkButton\n onClick={() => trackUsage(val.home.trackingEvent)}\n tag={NavLink}\n to={val.home.cta.target}\n endIcon={<ArrowRight />}\n >\n {formatMessage(val.home.cta.title)}\n </LinkButton>\n ),\n isDone: Object.entries(\n guidedTourState[key as keyof GuidedTourContextValue['guidedTourState']]\n ).every(([, value]) => value),\n }));\n\n const activeSectionIndex = sections.findIndex((section) => !section.isDone);\n\n const handleSkip = () => {\n setSkipped(true);\n trackUsage('didSkipGuidedtour');\n };\n\n return (\n <Box\n hasRadius\n shadow=\"tableShadow\"\n paddingTop={7}\n paddingRight={4}\n paddingLeft={7}\n paddingBottom={4}\n background=\"neutral0\"\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Typography variant=\"beta\" tag=\"h2\">\n {formatMessage({\n id: 'app.components.GuidedTour.title',\n defaultMessage: '3 steps to get started',\n })}\n </Typography>\n <Box>\n {sections.map((section, index) => {\n const state = getState(activeSectionIndex, index);\n return (\n <Box key={section.key}>\n <Flex>\n <Box minWidth={`3rem`} marginRight={5}>\n <Number state={state}>{index + 1}</Number>\n </Box>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage(section.title)}\n </Typography>\n </Flex>\n <Flex alignItems=\"flex-start\">\n <Flex\n justifyContent=\"center\"\n minWidth={`3rem`}\n marginBottom={3}\n marginTop={3}\n marginRight={5}\n >\n {index === sections.length - 1 ? null : <VerticalDivider state={state} />}\n </Flex>\n <Box marginTop={2}>{state === STATES.IS_ACTIVE ? section.content : null}</Box>\n </Flex>\n </Box>\n );\n })}\n </Box>\n </Flex>\n <Flex justifyContent=\"flex-end\">\n <Button variant=\"tertiary\" onClick={handleSkip}>\n {formatMessage({ id: 'app.components.GuidedTour.skip', defaultMessage: 'Skip the tour' })}\n </Button>\n </Flex>\n </Box>\n );\n};\n\nconst getState = (activeSectionIndex: number, index: number): States => {\n if (activeSectionIndex === -1) {\n return STATES.IS_DONE;\n }\n if (index < activeSectionIndex) {\n return STATES.IS_DONE;\n }\n if (index > activeSectionIndex) {\n return STATES.IS_NOT_DONE;\n }\n return STATES.IS_ACTIVE;\n};\n\nexport { GuidedTourHomepage };\n","/**\n * This will 100% be moved into it's own reducer space when\n * we move the content-manager back to it's plugin.\n */\n\nimport { adminApi } from './api';\n\nimport type { ContentType } from '../../../shared/contracts/content-types';\ninterface ContentTypes {\n collectionType: ContentType[];\n singleType: ContentType[];\n}\n\nconst contentManager = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n /**\n * Content Types\n */\n getContentTypes: builder.query<ContentTypes, void>({\n query: () => ({\n url: `/content-manager/content-types`,\n method: 'GET',\n }),\n transformResponse: (res: { data: ContentType[] }) => {\n return res.data.reduce<ContentTypes>(\n (acc, curr) => {\n if (curr.isDisplayed) {\n acc[curr.kind].push(curr);\n }\n return acc;\n },\n {\n collectionType: [],\n singleType: [],\n }\n );\n },\n }),\n }),\n overrideExisting: true,\n});\n\nconst { useGetContentTypesQuery } = contentManager;\n\nexport { useGetContentTypesQuery };\n","import * as React from 'react';\n\nimport { useNotification } from '../features/Notifications';\nimport { useAPIErrorHandler } from '../hooks/useAPIErrorHandler';\nimport { useGetContentTypesQuery } from '../services/contentManager';\n\nimport type { ContentType } from '../../../shared/contracts/content-types';\n\nexport function useContentTypes(): {\n isLoading: boolean;\n collectionTypes: ContentType[];\n singleTypes: ContentType[];\n} {\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const { toggleNotification } = useNotification();\n\n const { data, isLoading, error } = useGetContentTypesQuery();\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n return {\n isLoading,\n collectionTypes: data?.collectionType ?? [],\n singleTypes: data?.singleType ?? [],\n };\n}\n","export default \"data:image/svg+xml,%3csvg%20width='148'%20height='148'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20opacity='.8'%20fill-rule='evenodd'%20clip-rule='evenodd'%3e%3cpath%20opacity='.15'%20d='M110.81%2037H73.97V74.1h36.84V37Z'%20fill='url(%23a)'/%3e%3cpath%20opacity='.07'%20d='M36.84%200H0v37.08h36.84V0Z'%20fill='url(%23b)'/%3e%3cpath%20opacity='.07'%20d='M73.92%2073.95H37.08v37.08h36.84V73.95Z'%20fill='url(%23c)'/%3e%3cpath%20opacity='.07'%20d='M147.99%20110.92h-37.3V148H148v-37.08Z'%20fill='url(%23d)'/%3e%3cpath%20opacity='.15'%20d='M73.83%2037H36.84L73.83%200v37Z'%20fill='url(%23e)'/%3e%3cpath%20opacity='.15'%20d='M110.6%20111.02v-37h36.98l-36.99%2037Z'%20fill='url(%23f)'/%3e%3cpath%20opacity='.4'%20d='M73.83%200v37h36.98v37.01h37V3a3%203%200%200%200-3-3H73.82Z'%20fill='url(%23g)'/%3e%3c/g%3e%3cdefs%3e%3clinearGradient%20id='a'%20x1='91.31'%20y1='83.31'%20x2='118.24'%20y2='56.59'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%237A92FF'/%3e%3cstop%20offset='1'%20stop-color='%233253EA'/%3e%3c/linearGradient%3e%3clinearGradient%20id='b'%20x1='40.99'%20y1='13.88'%20x2='.01'%20y2='11.64'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23A8B8FF'/%3e%3cstop%20offset='1'%20stop-color='%233253EA'/%3e%3c/linearGradient%3e%3clinearGradient%20id='c'%20x1='54.41'%20y1='120.25'%20x2='81.35'%20y2='93.52'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23A8B8FF'/%3e%3cstop%20offset='1'%20stop-color='%233253EA'/%3e%3c/linearGradient%3e%3clinearGradient%20id='d'%20x1='128.24'%20y1='157.22'%20x2='155.17'%20y2='130.17'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23A8B8FF'/%3e%3cstop%20offset='1'%20stop-color='%233253EA'/%3e%3c/linearGradient%3e%3clinearGradient%20id='e'%20x1='54.24'%20y1='46.21'%20x2='81.12'%20y2='19.38'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%237A92FF'/%3e%3cstop%20offset='1'%20stop-color='%233253EA'/%3e%3c/linearGradient%3e%3clinearGradient%20id='f'%20x1='126.28'%20y1='74.05'%20x2='124.94'%20y2='111.07'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%237A92FF'/%3e%3cstop%20offset='1'%20stop-color='%233253EA'/%3e%3c/linearGradient%3e%3clinearGradient%20id='g'%20x1='73.37'%20y1='36.87'%20x2='132.87'%20y2='66.74'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%237A92FF'/%3e%3cstop%20offset='1'%20stop-color='%233858EA'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADgAAAA5CAMAAABUBBiJAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAACxMAAAsTAQCanBgAAAMAUExURUdwTP+PjYf49/Xhn4f6+P+DjIb6+Yzy9/fkof+Gjc+z6c+z6M+z6Yr4+IX39/ninvLkpf+GjvDlpsS569mw4vnhn/+Fjtqw4cG77ov695P59NnrwKD37Ij6+Jb484/59qT26Z337uTotO7kqevlrLrz27b03qj258Dy1rD14snwzZn48az15NzqvN/puufnsf6olPbfoOHot/zJmvTjo/Hkpv6kk9Xsw/TapPnhn/+ekYz498bx0P+XkbP04NLtxvrenf65ls/uyb7y2cPx0/jLn+nmr8zvyvjVn/vSm/vOmvHgp/6dlvyknP6ylP6Vle3gq5L29frZnPu/mv21l93nvvm/oPu5nPPfpffRoPTVpOrZsv6+leLdvfjan6/g6tbpxuLkuaXy6+bitfbNo/bApv+Mj+/cqvfjoL/g4P+tk7fh5f2tl4n4+ODOyvvWmvK2uei/yfyeovqip/3FmMDo3I3t99Lpy6rn6vyxnKPs7drnwpvm8ubZuf+IjvHBs+rfsLno4dfezKvt6Nnjx7Lv487j0sjt08bm2Kbf7o319t7gw/Wus8Tt2Mzp0pTs9Lfv4PrEnPi5peq3yf+Sj/DIsfDTq86/5fimrpnw8visqvjFof2enObOwZ/w7/O3s6zx573t3NfU0unUufquov7CluPHyuzIus7Q3ezTsubetp/g8uO/0Mff2uDXxO28wLLp5erPut/ivvOsvPXHpvq1oc7W2pLy9fezq/LKquTVwPqoo++1wujIw/ypnJPm9afW8Pa5rM3I4fPRp/+Pk7TI7tS25L/Z487d1sbZ3tTZ0t3Uy53079Pjzu/AuuvDwM3szvaotfDOrenir47o9+7NtN3J0fS9ru2vycTH59yz39e/3+/Yq5ja9azM8d+62Jbg9Zf18v6YmrrT6bDZ65vr8sbO4/GuwrHS7bzM6dbN1/PDq9XH3LvE7eOy2d3B15Dh9uW109zayaLm76Da8p/U88636L+/7emw0NrH18W+6sPT5LjZ59m538i66qTP8mzi5EgAAAAZdFJOUwDfoEjfSEj+lZRIoH/PgO/f79/P38/P3+9GeHQBAAAGdElEQVRIx33Xd1zNexzH8Z97L3HdvZOdTYRKQ2R00zglaShCtBx1JU0VDVGhJJUiaWghGqIiIiMpQkohVzKSVXFJup/P5/f7nWG9/38+Xp/zPZ0/Yhjm276//Xnz5tOnT/+D1dbWPniQm5t75cqV2FhXV9fVsH9hRkZGZ86csbPz8/P7+Y8+PRnYd6/Onr15E+WLFxx8wEFerpaQSP38+kDvFcCzBFFur60tFidRAt21axdJCdqT6fueZFfXnTt3XqDcXltcXJybuxkWGxvn6lpEcJeBAUqjqCikdnZ9mF/fk+zi5HYYwFWrSMbFxRW5FgkEqwUoDTSNNDWjcHZ2PZi/3r59HxMTU99VD3D//v0uvFzFwrgimEAgQAiUBrQH8/r127cxKOvrnz0j6ZKdnY1wz57NR4+y8oQAZyC2UVEAWUnwGUGU2bw8mgIrOnFCoChQUTFQN1BXVyfKtLaCrIspLX3y5AlJF1ZWIjx1lJMpJ2BIVdRpmupMWWtra11dXWkMyDdv3tTs37fPxaWqKruysnLdHqBg81O8UrwQKiqqiChTxstSkjU1+2BVMIQ3bpw6FRkZmQ/Uy2vlSknK3C4rK3v0qK6uubQ0/cljgCiPH0dYuW6dSOaThHFWhbl9G+Gj5ubm9NL0x48f19Q4IzxelZYGEOQNsfTiJFqAtx/yMh1kUo0zDGQaDGTLDVvbyEizfHNz8/nzSa5YobhCUZHpBvjw3r17nZ2sTEpyBrp7926EO3asa2mxBWpmZg7Ua/58Q0OAOKa7u/shJzvTjxw5kpSUdNGZ5GGSO0DaojSjJlJDQ4Qd3SdPkjzXeeECBy9e3I3w8OHr1xG2sBCliBoyHSibmprevTt3jmQ5SedChGkoj7Xk2cYjNDExMZ8xYwZLAXacRImQZDnJgwcLC7nksWN5eXnx8fEkTWbQAN7qaG8XJR0vXDh/vry8/OVLhIXJySCrq3m5bZuJmDK3brW3t4eENDUtFgodzx04cABlACuTk5MzMj6SCxcuZCHJxYubhO+Ejo6sDGClL8lqlMuXayMkuhCHMCsrJAQkJlGeDw4OQLloka8vwozo6urTy/OWa2uTXJOamorweWMjL4VCNhl8/lJAQNDLsIMgfa1QRoOEprY2QpSpBBuzQHqi9Hd0dNu0KTg4GGRYWNgiTkZHR5/m5GQYUeY5SJ+srLYQT09PodDfn5WXLgUEcdLKKqMBIS+3oVyzBuDzRh8fn7Y2gIcO+fu7ASQZFIRwUSZIK5SWpxcs0BY1EZaUNCKUlFs5mAMwE2FDQ7TlacsFQPX09JBOZq6VlJT4cMlDLHTbtJWTORLSEgZST5uVzDWS932827w9AwNFya0eHkuC1qLMzMxcj5CXuno0gNfCw8Pv37/v7e1NMGKv25YtW0EGLVm7NicnZynA9Vb2DQ2qBOfoshThNYIJ3pSMiNgLciOXNAW4DKW9vT3KOTBdGEB3d/dwSiZQcsMGlFtAXvZYAknTnKVLly1bv34uSFVVVZHURYhy586EBG+bwMBEkAQ3XvZASUmAnLRW5SXBAhYm2NgkJoqSl7mkKZecS0mC/8AYGRkZ94KCgp0obUhGSCcJXkWobwHQ2tp63jwOFrCwgoMbIobPmoUQk3JrTcfzUt/egoPzWCgTSrKCvXUcJIfPGjV745jLM6eLk1fngrSwECWZUBzAu3crKipsbEYmJo6eNgLh7I0ApyyRMzUdP2koQJD6ICdOZJOME0FjFvYfPHjkOIAj2KQOSDk5gJOGTmChPkBWMk4aGqGhxsbGd1ESHMclpxKcAhCTE8TJidZaCEFqABx4d+yQIQgpOZyVM/nk0KET/h42TJ6DWjCAoRoag1AilLqVTypgkoN0q5Y1QTwW3MCxXFJ861Qd+pQKClxSXp6DWjwcNKhfP5KQ5G8dxSfl5BREt8orWyiBVAM4wElWlmA/yaTkrQTxVkoqKylJQDb50a2zx4zRmc7fOoFulVciqAZwwABZWVkx7C/9rlJJuhWg2gdQ4l1Hf+5dEZJkofjW/h/+DegQFN+qrCwJJW8d/OV3RegAkvkG4SCpDzn4Sx9SGaSDg9qPCD/xhYyeNm3E516H4O/MVzz85Bcieh2pD+ng4NCb6QXQCV/HmH9X6b+6j75J+pAOXzPMDwPoB/Ll11GQfh2l3vj/Q6+vvpehH0g/9qf1iV+I1Ov88lNv6P0PQL+UTau8/+4AAAAASUVORK5CYII=\"","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='160'%20fill='none'%20viewBox='29.41%2044%20149.09%2050.35'%3e%3cpath%20stroke='%23EAEAEF'%20d='M30.5%2044.5c37%2027%2047.5%2038%20147.499%2032'/%3e%3cg%20filter='url(%23a)'%3e%3cpath%20fill='%23F29D41'%20d='m129.467%2094.085%208.148-14.142a.598.598%200%200%200-.403-.887%2075.099%2075.099%200%200%200-3.045-.536c-1.875-.274-2.936-.44-4.837-.505-1.838-.064-2.873.01-4.698.153a64.05%2064.05%200%200%200-2.692.293.597.597%200%200%200-.462.851l7.042%2014.737c.186.388.732.41.947.036Z'/%3e%3c/g%3e%3cg%20filter='url(%23b)'%3e%3cpath%20fill='%23F29D41'%20d='m46.99%2075.52%2013.813-8.697a.597.597%200%200%200%20.058-.971%2075.191%2075.191%200%200%200-2.442-1.897c-1.53-1.119-2.39-1.761-4.04-2.707-1.595-.915-2.545-1.334-4.226-2.06a64.09%2064.09%200%200%200-2.516-.999.597.597%200%200%200-.806.537l-.66%2016.319a.535.535%200%200%200%20.82.474Z'/%3e%3c/g%3e%3cg%20filter='url(%23c)'%3e%3cpath%20fill='%235CB176'%20d='m29.41%2063.51%202.102-16.186a.597.597%200%200%201%20.858-.46c.748.371%201.905.954%202.745%201.42%201.657.92%202.602%201.433%204.152%202.534%201.5%201.064%202.278%201.75%203.642%202.972a64.026%2064.026%200%200%201%201.962%201.865c.291.286.214.771-.149.957l-14.538%207.443a.535.535%200%200%201-.774-.545Z'/%3e%3c/g%3e%3cmask%20id='d'%20width='17'%20height='19'%20x='29'%20y='46'%20maskUnits='userSpaceOnUse'%20style='mask-type:alpha'%3e%3cpath%20fill='%235CB176'%20d='m29.412%2063.51%202.101-16.186a.597.597%200%200%201%20.858-.46c.749.371%201.905.954%202.746%201.42%201.657.92%202.601%201.433%204.152%202.534%201.5%201.064%202.278%201.75%203.642%202.972a64.148%2064.148%200%200%201%201.962%201.865c.29.286.214.771-.15.957l-14.537%207.443a.535.535%200%200%201-.774-.545Z'/%3e%3c/mask%3e%3cg%20stroke='%23fff'%20stroke-linecap='round'%20stroke-width='.661'%20mask='url(%23d)'%3e%3cpath%20d='M39.755%2051.218c-1.05%201.558-4.606%204.788-10.44%205.247M36.415%2047.816c-1.05%201.558-4.606%204.789-10.44%205.247M42.97%2053.97c-1.457%201.908-6.341%205.902-14.216%206.619M42.15%2058.499c-1.645%201.748-5.29%204.033-13.197%203.939'/%3e%3c/g%3e%3cg%20filter='url(%23e)'%3e%3cpath%20fill='%237B79FF'%20d='m169.813%2092.983%205.927-15.208a.598.598%200%200%200-.531-.815%2075.213%2075.213%200%200%200-3.091-.072c-1.895.01-2.969.007-4.859.228-1.826.214-2.838.442-4.621.859-.815.19-1.893.488-2.617.694a.596.596%200%200%200-.328.91l9.178%2013.51a.536.536%200%200%200%20.942-.106Z'/%3e%3c/g%3e%3cg%20filter='url(%23f)'%3e%3cpath%20fill='%237B79FF'%20d='m87.001%2090.853-4.466-15.699a.597.597%200%200%201%20.606-.761c.835.045%202.127.123%203.084.22%201.886.19%202.956.287%204.816.685%201.797.385%202.784.709%204.519%201.291.794.267%201.839.665%202.54.938.38.148.501.624.24.938L87.929%2091.048a.535.535%200%200%201-.927-.195Z'/%3e%3c/g%3e%3cg%20filter='url(%23g)'%3e%3cpath%20fill='%23EE5E52'%20d='m66.153%2085.122%2012.355-10.665a.597.597%200%200%200-.087-.97%2075.353%2075.353%200%200%200-2.698-1.51c-1.68-.877-2.627-1.383-4.4-2.072-1.714-.666-2.716-.938-4.486-1.404a64.083%2064.083%200%200%200-2.638-.611.597.597%200%200%200-.716.651l1.788%2016.234a.535.535%200%200%200%20.882.347Z'/%3e%3c/g%3e%3ccircle%20cx='70.793'%20cy='74.511'%20r='.992'%20fill='%23fff'%20transform='rotate(8.553%2070.793%2074.51)'/%3e%3ccircle%20cx='65.574'%20cy='78.63'%20r='.992'%20fill='%23fff'%20transform='rotate(8.553%2065.574%2078.63)'/%3e%3ccircle%20cx='65.408'%20cy='74.519'%20r='.992'%20fill='%23fff'%20transform='rotate(8.553%2065.408%2074.519)'/%3e%3ccircle%20cx='67.834'%20cy='81.943'%20r='.992'%20fill='%23fff'%20transform='rotate(8.553%2067.834%2081.943)'/%3e%3ccircle%20cx='67.259'%20cy='69.875'%20r='.992'%20fill='%23fff'%20transform='rotate(8.553%2067.259%2069.875)'/%3e%3ccircle%20cx='74.691'%20cy='72.834'%20r='.992'%20fill='%23fff'%20transform='rotate(8.553%2074.69%2072.834)'/%3e%3ccircle%20cx='71.171'%20cy='78.968'%20r='.992'%20fill='%23fff'%20transform='rotate(8.553%2071.171%2078.968)'/%3e%3cg%20filter='url(%23h)'%3e%3cpath%20fill='%23EE5E52'%20d='m149.911%2093.824%206.521-14.963a.598.598%200%200%200-.499-.836%2075.255%2075.255%200%200%200-3.086-.193c-1.894-.064-2.967-.11-4.863.037-1.833.141-2.854.33-4.651.676-.823.158-1.912.414-2.643.59a.596.596%200%200%200-.364.898l8.64%2013.86a.535.535%200%200%200%20.945-.07Z'/%3e%3c/g%3e%3ccircle%20cx='149.5'%20cy='82.25'%20r='.992'%20fill='%23fff'%20transform='rotate(-17.098%20149.5%2082.25)'/%3e%3ccircle%20cx='146.579'%20cy='88.222'%20r='.992'%20fill='%23fff'%20transform='rotate(-17.098%20146.579%2088.222)'/%3e%3ccircle%20cx='144.65'%20cy='84.588'%20r='.992'%20fill='%23fff'%20transform='rotate(-17.098%20144.65%2084.588)'/%3e%3ccircle%20cx='150.049'%20cy='90.231'%20r='.992'%20fill='%23fff'%20transform='rotate(-17.098%20150.049%2090.231)'/%3e%3ccircle%20cx='144.306'%20cy='79.6'%20r='.992'%20fill='%23fff'%20transform='rotate(-17.098%20144.306%2079.6)'/%3e%3ccircle%20cx='152.287'%20cy='79.051'%20r='.992'%20fill='%23fff'%20transform='rotate(-17.098%20152.287%2079.05)'/%3e%3ccircle%20cx='151.77'%20cy='86.103'%20r='.992'%20fill='%23fff'%20transform='rotate(-17.098%20151.77%2086.103)'/%3e%3cg%20filter='url(%23i)'%3e%3cpath%20fill='%235CB176'%20d='m109.171%2093.4%208.86-13.707a.598.598%200%200%200-.357-.906c-.811-.2-2.07-.503-3.013-.69-1.859-.37-2.911-.59-4.806-.753-1.831-.157-2.869-.136-4.699-.086-.837.023-1.953.098-2.703.154a.597.597%200%200%200-.505.827l6.279%2015.077c.166.398.71.447.944.084Z'/%3e%3c/g%3e%3cmask%20id='j'%20width='18'%20height='17'%20x='101'%20y='77'%20maskUnits='userSpaceOnUse'%20style='mask-type:alpha'%3e%3cpath%20fill='%235CB176'%20d='m109.17%2093.4%208.86-13.707a.598.598%200%200%200-.357-.905c-.811-.201-2.07-.504-3.013-.692-1.859-.37-2.911-.589-4.806-.751-1.831-.158-2.869-.137-4.699-.087-.837.023-1.953.099-2.703.154a.597.597%200%200%200-.505.827l6.279%2015.077c.166.398.71.447.944.085Z'/%3e%3c/mask%3e%3cg%20stroke='%23fff'%20stroke-linecap='round'%20stroke-width='.661'%20mask='url(%23j)'%3e%3cpath%20d='M109.225%2077.335c-.207%201.867.418%206.632%204.573%2010.753M113.972%2076.9c-.207%201.867.418%206.631%204.573%2010.753M104.992%2077.357c-.121%202.397%201.023%208.602%206.568%2014.24M102.69%2081.343c.125%202.397%201.429%206.497%207.522%2011.537'/%3e%3c/g%3e%3cdefs%3e%3cfilter%20id='a'%20width='21.565'%20height='21.649'%20x='118.775'%20y='76.009'%20color-interpolation-filters='sRGB'%20filterUnits='userSpaceOnUse'%3e%3cfeFlood%20flood-opacity='0'%20result='BackgroundImageFix'/%3e%3cfeColorMatrix%20in='SourceAlpha'%20result='hardAlpha'%20values='0%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%20127%200'/%3e%3cfeOffset%20dy='.661'/%3e%3cfeGaussianBlur%20stdDeviation='1.322'/%3e%3cfeColorMatrix%20values='0%200%200%200%200.129412%200%200%200%200%200.129412%200%200%200%200%200.203922%200%200%200%200.1%200'/%3e%3cfeBlend%20in2='BackgroundImageFix'%20result='effect1_dropShadow_12_39'/%3e%3cfeBlend%20in='SourceGraphic'%20in2='effect1_dropShadow_12_39'%20result='shape'/%3e%3c/filter%3e%3cfilter%20id='b'%20width='20.201'%20height='22.741'%20x='43.526'%20y='56.167'%20color-interpolation-filters='sRGB'%20filterUnits='userSpaceOnUse'%3e%3cfeFlood%20flood-opacity='0'%20result='BackgroundImageFix'/%3e%3cfeColorMatrix%20in='SourceAlpha'%20result='hardAlpha'%20values='0%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%20127%200'/%3e%3cfeOffset%20dy='.661'/%3e%3cfeGaussianBlur%20stdDeviation='1.322'/%3e%3cfeColorMatrix%20values='0%200%200%200%200.129412%200%200%200%200%200.129412%200%200%200%200%200.203922%200%200%200%200.1%200'/%3e%3cfeBlend%20in2='BackgroundImageFix'%20result='effect1_dropShadow_12_39'/%3e%3cfeBlend%20in='SourceGraphic'%20in2='effect1_dropShadow_12_39'%20result='shape'/%3e%3c/filter%3e%3cfilter%20id='c'%20width='20.932'%20height='22.602'%20x='26.761'%20y='44.818'%20color-interpolation-filters='sRGB'%20filterUnits='userSpaceOnUse'%3e%3cfeFlood%20flood-opacity='0'%20result='BackgroundImageFix'/%3e%3cfeColorMatrix%20in='SourceAlpha'%20result='hardAlpha'%20values='0%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%20127%200'/%3e%3cfeOffset%20dy='.661'/%3e%3cfeGaussianBlur%20stdDeviation='1.322'/%3e%3cfeColorMatrix%20values='0%200%200%200%200.129412%200%200%200%200%200.129412%200%200%200%200%200.203922%200%200%200%200.1%200'/%3e%3cfeBlend%20in2='BackgroundImageFix'%20result='effect1_dropShadow_12_39'/%3e%3cfeBlend%20in='SourceGraphic'%20in2='effect1_dropShadow_12_39'%20result='shape'/%3e%3c/filter%3e%3cfilter%20id='e'%20width='21.482'%20height='21.724'%20x='156.944'%20y='74.904'%20color-interpolation-filters='sRGB'%20filterUnits='userSpaceOnUse'%3e%3cfeFlood%20flood-opacity='0'%20result='BackgroundImageFix'/%3e%3cfeColorMatrix%20in='SourceAlpha'%20result='hardAlpha'%20values='0%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%20127%200'/%3e%3cfeOffset%20dy='.661'/%3e%3cfeGaussianBlur%20stdDeviation='1.322'/%3e%3cfeColorMatrix%20values='0%200%200%200%200.129412%200%200%200%200%200.129412%200%200%200%200%200.203922%200%200%200%200.1%200'/%3e%3cfeBlend%20in2='BackgroundImageFix'%20result='effect1_dropShadow_12_39'/%3e%3cfeBlend%20in='SourceGraphic'%20in2='effect1_dropShadow_12_39'%20result='shape'/%3e%3c/filter%3e%3cfilter%20id='f'%20width='21.256'%20height='22.139'%20x='79.868'%20y='72.409'%20color-interpolation-filters='sRGB'%20filterUnits='userSpaceOnUse'%3e%3cfeFlood%20flood-opacity='0'%20result='BackgroundImageFix'/%3e%3cfeColorMatrix%20in='SourceAlpha'%20result='hardAlpha'%20values='0%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%20127%200'/%3e%3cfeOffset%20dy='.661'/%3e%3cfeGaussianBlur%20stdDeviation='1.322'/%3e%3cfeColorMatrix%20values='0%200%200%200%200.129412%200%200%200%200%200.129412%200%200%200%200%200.203922%200%200%200%200.1%200'/%3e%3cfeBlend%20in2='BackgroundImageFix'%20result='effect1_dropShadow_12_39'/%3e%3cfeBlend%20in='SourceGraphic'%20in2='effect1_dropShadow_12_39'%20result='shape'/%3e%3c/filter%3e%3cfilter%20id='g'%20width='20.526'%20height='22.664'%20x='60.835'%20y='65.893'%20color-interpolation-filters='sRGB'%20filterUnits='userSpaceOnUse'%3e%3cfeFlood%20flood-opacity='0'%20result='BackgroundImageFix'/%3e%3cfeColorMatrix%20in='SourceAlpha'%20result='hardAlpha'%20values='0%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%20127%200'/%3e%3cfeOffset%20dy='.661'/%3e%3cfeGaussianBlur%20stdDeviation='1.322'/%3e%3cfeColorMatrix%20values='0%200%200%200%200.129412%200%200%200%200%200.129412%200%200%200%200%200.203922%200%200%200%200.1%200'/%3e%3cfeBlend%20in2='BackgroundImageFix'%20result='effect1_dropShadow_12_39'/%3e%3cfeBlend%20in='SourceGraphic'%20in2='effect1_dropShadow_12_39'%20result='shape'/%3e%3c/filter%3e%3cfilter%20id='h'%20width='21.537'%20height='21.662'%20x='137.59'%20y='75.788'%20color-interpolation-filters='sRGB'%20filterUnits='userSpaceOnUse'%3e%3cfeFlood%20flood-opacity='0'%20result='BackgroundImageFix'/%3e%3cfeColorMatrix%20in='SourceAlpha'%20result='hardAlpha'%20values='0%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%20127%200'/%3e%3cfeOffset%20dy='.661'/%3e%3cfeGaussianBlur%20stdDeviation='1.322'/%3e%3cfeColorMatrix%20values='0%200%200%200%200.129412%200%200%200%200%200.129412%200%200%200%200%200.203922%200%200%200%200.1%200'/%3e%3cfeBlend%20in2='BackgroundImageFix'%20result='effect1_dropShadow_12_39'/%3e%3cfeBlend%20in='SourceGraphic'%20in2='effect1_dropShadow_12_39'%20result='shape'/%3e%3c/filter%3e%3cfilter%20id='i'%20width='21.515'%20height='21.712'%20x='99.257'%20y='75.238'%20color-interpolation-filters='sRGB'%20filterUnits='userSpaceOnUse'%3e%3cfeFlood%20flood-opacity='0'%20result='BackgroundImageFix'/%3e%3cfeColorMatrix%20in='SourceAlpha'%20result='hardAlpha'%20values='0%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%20127%200'/%3e%3cfeOffset%20dy='.661'/%3e%3cfeGaussianBlur%20stdDeviation='1.322'/%3e%3cfeColorMatrix%20values='0%200%200%200%200.129412%200%200%200%200%200.129412%200%200%200%200%200.203922%200%200%200%200.1%200'/%3e%3cfeBlend%20in2='BackgroundImageFix'%20result='effect1_dropShadow_12_39'/%3e%3cfeBlend%20in='SourceGraphic'%20in2='effect1_dropShadow_12_39'%20result='shape'/%3e%3c/filter%3e%3c/defs%3e%3c/svg%3e\"","import * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n Grid,\n Main,\n Typography,\n Link,\n LinkButton,\n TypographyComponent,\n BoxComponent,\n FlexComponent,\n} from '@strapi/design-system';\nimport { ArrowRight, ExternalLink } from '@strapi/icons';\nimport {\n CodeSquare,\n Discord,\n Discourse,\n FeatherSquare,\n GitHub,\n InformationSquare,\n PlaySquare,\n Reddit,\n Strapi,\n X as Twitter,\n} from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { ContentBox } from '../components/ContentBox';\nimport { GuidedTourHomepage } from '../components/GuidedTour/Homepage';\nimport { useGuidedTour } from '../components/GuidedTour/Provider';\nimport { Layouts } from '../components/Layouts/Layout';\nimport { Page } from '../components/PageHelpers';\nimport { useAppInfo } from '../features/AppInfo';\nimport { useTracking } from '../features/Tracking';\nimport { useContentTypes } from '../hooks/useContentTypes';\nimport { useEnterprise } from '../hooks/useEnterprise';\n\nimport cornerOrnamentPath from './assets/corner-ornament.svg';\nimport cloudIconBackgroundImage from './assets/strapi-cloud-background.png';\nimport cloudFlagsImage from './assets/strapi-cloud-flags.svg';\n\n/* -------------------------------------------------------------------------------------------------\n * HomePageCE\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePageCE = () => {\n const { formatMessage } = useIntl();\n // Temporary until we develop the menu API\n const { collectionTypes, singleTypes, isLoading: isLoadingForModels } = useContentTypes();\n const guidedTourState = useGuidedTour('HomePage', (state) => state.guidedTourState);\n const isGuidedTourVisible = useGuidedTour('HomePage', (state) => state.isGuidedTourVisible);\n const isSkipped = useGuidedTour('HomePage', (state) => state.isSkipped);\n\n const showGuidedTour =\n !Object.values(guidedTourState).every((section) =>\n Object.values(section).every((step) => step)\n ) &&\n isGuidedTourVisible &&\n !isSkipped;\n const navigate = useNavigate();\n const handleClick: React.MouseEventHandler<HTMLButtonElement> = (e) => {\n e.preventDefault();\n\n navigate('/plugins/content-type-builder/content-types/create-content-type');\n };\n\n const hasAlreadyCreatedContentTypes = collectionTypes.length > 1 || singleTypes.length > 0;\n\n if (isLoadingForModels) {\n return <Page.Loading />;\n }\n\n return (\n <Layouts.Root>\n <Page.Title>\n {formatMessage({\n id: 'HomePage.head.title',\n defaultMessage: 'Homepage',\n })}\n </Page.Title>\n <Main>\n <LogoContainer>\n <img alt=\"\" aria-hidden src={cornerOrnamentPath} />\n </LogoContainer>\n <Box padding={10}>\n <Grid.Root>\n <Grid.Item col={8} s={12}>\n <div>\n <Box paddingLeft={6} paddingBottom={10}>\n <Flex direction=\"column\" alignItems=\"flex-start\" gap={5}>\n <Typography tag=\"h1\" variant=\"alpha\">\n {hasAlreadyCreatedContentTypes\n ? formatMessage({\n id: 'app.components.HomePage.welcome.again',\n defaultMessage: 'Welcome 👋',\n })\n : formatMessage({\n id: 'app.components.HomePage.welcome',\n defaultMessage: 'Welcome on board!',\n })}\n </Typography>\n <WordWrap textColor=\"neutral600\" variant=\"epsilon\">\n {hasAlreadyCreatedContentTypes\n ? formatMessage({\n id: 'app.components.HomePage.welcomeBlock.content.again',\n defaultMessage:\n 'We hope you are making progress on your project! Feel free to read the latest news about Strapi. We are giving our best to improve the product based on your feedback.',\n })\n : formatMessage({\n id: 'app.components.HomePage.welcomeBlock.content',\n defaultMessage:\n 'Congrats! You are logged as the first administrator. To discover the powerful features provided by Strapi, we recommend you to create your first Content type!',\n })}\n </WordWrap>\n {hasAlreadyCreatedContentTypes ? (\n <Link isExternal href=\"https://strapi.io/blog\">\n {formatMessage({\n id: 'app.components.HomePage.button.blog',\n defaultMessage: 'See more on the blog',\n })}\n </Link>\n ) : (\n <Button size=\"L\" onClick={handleClick} endIcon={<ArrowRight />}>\n {formatMessage({\n id: 'app.components.HomePage.create',\n defaultMessage: 'Create your first Content type',\n })}\n </Button>\n )}\n </Flex>\n </Box>\n </div>\n </Grid.Item>\n </Grid.Root>\n <Grid.Root gap={6}>\n <Grid.Item col={8} s={12}>\n {showGuidedTour ? <GuidedTourHomepage /> : <ContentBlocks />}\n </Grid.Item>\n <Grid.Item col={4} s={12}>\n <SocialLinks />\n </Grid.Item>\n </Grid.Root>\n </Box>\n </Main>\n </Layouts.Root>\n );\n};\n\nconst LogoContainer = styled<BoxComponent>(Box)`\n position: absolute;\n top: 0;\n right: 0;\n\n img {\n width: 15rem;\n }\n`;\n\nconst WordWrap = styled<TypographyComponent>(Typography)`\n word-break: break-word;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ContentBlocks\n * -----------------------------------------------------------------------------------------------*/\n\nconst ContentBlocks = () => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={5}>\n <BlockLink\n href=\"https://cloud.strapi.io\"\n target=\"_blank\"\n rel=\"noopener noreferrer nofollow\"\n onClick={() => {\n trackUsage('didClickOnTryStrapiCloudSection');\n }}\n >\n <Flex\n shadow=\"tableShadow\"\n hasRadius\n padding={6}\n background=\"neutral0\"\n position=\"relative\"\n gap={6}\n >\n <CloudCustomWrapper hasRadius padding={3}>\n <CloudIconWrapper\n width=\"3.2rem\"\n height=\"3.2rem\"\n justifyContent=\"center\"\n hasRadius\n alignItems=\"center\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"15\" fill=\"none\">\n <path\n fill=\"#fff\"\n fillRule=\"evenodd\"\n d=\"M4.39453 13.8298C1.93859 13.6455 0 11.468 0 8.80884 0 6.0289 2.11876 3.7753 4.73238 3.7753c.46775 0 .91964.07218 1.34638.20664C7.21234 1.62909 9.66469 0 12.5073 0c2.5102 0 4.7161 1.27036 5.9782 3.18766a4.54297 4.54297 0 0 1 .6132-.04144C21.8056 3.14622 24 5.54066 24 8.49436c0 2.89194-2.1036 5.24784-4.7323 5.34504v.0031l-1.8948.278a38.18054 38.18054 0 0 1-11.08354 0l-1.89483-.278v-.0127Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </CloudIconWrapper>\n </CloudCustomWrapper>\n <Flex gap={1} direction=\"column\" alignItems=\"start\">\n <Typography fontWeight=\"semiBold\" variant=\"pi\" textColor=\"neutral800\">\n {formatMessage({\n id: 'app.components.BlockLink.cloud',\n defaultMessage: 'Strapi Cloud',\n })}\n </Typography>\n <Typography textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.BlockLink.cloud.content',\n defaultMessage:\n 'A fully composable, and collaborative platform to boost your team velocity.',\n })}\n </Typography>\n <Box src={cloudFlagsImage} position=\"absolute\" top={0} right={0} tag=\"img\" />\n </Flex>\n </Flex>\n </BlockLink>\n <BlockLink\n href=\"https://strapi.io/resource-center\"\n target=\"_blank\"\n rel=\"noopener noreferrer nofollow\"\n onClick={() => trackUsage('didClickonReadTheDocumentationSection')}\n >\n <ContentBox\n title={formatMessage({\n id: 'global.documentation',\n defaultMessage: 'Documentation',\n })}\n subtitle={formatMessage({\n id: 'app.components.BlockLink.documentation.content',\n defaultMessage: 'Discover the essential concepts, guides and instructions.',\n })}\n icon={<InformationSquare />}\n iconBackground=\"primary100\"\n />\n </BlockLink>\n <BlockLink\n href=\"https://strapi.io/starters\"\n target=\"_blank\"\n rel=\"noopener noreferrer nofollow\"\n onClick={() => trackUsage('didClickonCodeExampleSection')}\n >\n <ContentBox\n title={formatMessage({\n id: 'app.components.BlockLink.code',\n defaultMessage: 'Code example',\n })}\n subtitle={formatMessage({\n id: 'app.components.BlockLink.code.content',\n defaultMessage: 'Learn by using ready-made starters for your projects.',\n })}\n icon={<CodeSquare />}\n iconBackground=\"warning100\"\n />\n </BlockLink>\n <BlockLink\n href=\"https://strapi.io/blog/categories/tutorials\"\n target=\"_blank\"\n rel=\"noopener noreferrer nofollow\"\n onClick={() => trackUsage('didClickonTutorialSection')}\n >\n <ContentBox\n title={formatMessage({\n id: 'app.components.BlockLink.tutorial',\n defaultMessage: 'Tutorials',\n })}\n subtitle={formatMessage({\n id: 'app.components.BlockLink.tutorial.content',\n defaultMessage: 'Follow step-by-step instructions to use and customize Strapi.',\n })}\n icon={<PlaySquare />}\n iconBackground=\"secondary100\"\n />\n </BlockLink>\n <BlockLink\n href=\"https://strapi.io/blog\"\n target=\"_blank\"\n rel=\"noopener noreferrer nofollow\"\n onClick={() => trackUsage('didClickonBlogSection')}\n >\n <ContentBox\n title={formatMessage({\n id: 'app.components.BlockLink.blog',\n defaultMessage: 'Blog',\n })}\n subtitle={formatMessage({\n id: 'app.components.BlockLink.blog.content',\n defaultMessage: 'Read the latest news about Strapi and the ecosystem.',\n })}\n icon={<FeatherSquare />}\n iconBackground=\"alternative100\"\n />\n </BlockLink>\n </Flex>\n );\n};\n\nconst BlockLink = styled.a`\n text-decoration: none;\n`;\n\nconst CloudCustomWrapper = styled<BoxComponent>(Box)`\n background-image: url(${cloudIconBackgroundImage});\n`;\n\nconst CloudIconWrapper = styled<FlexComponent>(Flex)`\n background: rgba(255, 255, 255, 0.3);\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * SocialLinks\n * -----------------------------------------------------------------------------------------------*/\n\nconst SocialLinks = () => {\n const { formatMessage } = useIntl();\n const communityEdition = useAppInfo('SocialLinks', (state) => state.communityEdition);\n\n const socialLinksExtended = [\n ...SOCIAL_LINKS,\n {\n icon: <StyledStrapi />,\n link: communityEdition\n ? 'https://discord.strapi.io'\n : 'https://support.strapi.io/support/home',\n name: {\n id: 'Settings.application.get-help',\n defaultMessage: 'Get help',\n },\n },\n ];\n\n return (\n <Flex\n tag=\"aside\"\n direction=\"column\"\n aria-labelledby=\"join-the-community\"\n background=\"neutral0\"\n hasRadius\n paddingRight={5}\n paddingLeft={5}\n paddingTop={6}\n paddingBottom={6}\n shadow=\"tableShadow\"\n gap={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={5}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={3}>\n <Typography variant=\"delta\" tag=\"h2\" id=\"join-the-community\">\n {formatMessage({\n id: 'app.components.HomePage.community',\n defaultMessage: 'Join the community',\n })}\n </Typography>\n <Typography textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.HomePage.community.content',\n defaultMessage:\n 'Discuss with team members, contributors and developers on different channels',\n })}\n </Typography>\n </Flex>\n <Link href=\"https://feedback.strapi.io/\" isExternal endIcon={<ExternalLink />}>\n {formatMessage({\n id: 'app.components.HomePage.roadmap',\n defaultMessage: 'See our road map',\n })}\n </Link>\n </Flex>\n <GridGap>\n {socialLinksExtended.map(({ icon, link, name }) => {\n return (\n <Grid.Item col={6} s={12} key={name.id}>\n <LinkCustom size=\"L\" startIcon={icon} variant=\"tertiary\" href={link} isExternal>\n {formatMessage(name)}\n </LinkCustom>\n </Grid.Item>\n );\n })}\n </GridGap>\n </Flex>\n );\n};\n\nconst StyledGithub = styled(GitHub)`\n path {\n fill: ${(props) => props.theme.colors.neutral800} !important;\n }\n`;\n\nconst StyledDiscord = styled(Discord)`\n path {\n fill: #7289da !important;\n }\n`;\n\nconst StyledReddit = styled(Reddit)`\n > path:first-child {\n fill: #ff4500;\n }\n\n > path:nth-child(2) {\n fill: #fff;\n }\n`;\nconst StyledStrapi = styled(Strapi)`\n > path:first-child {\n fill: #4945ff;\n }\n > path:nth-child(2) {\n fill: #fff;\n }\n > path:nth-child(4) {\n fill: #9593ff;\n }\n`;\n\nconst StyledTwitter = styled(Twitter)`\n path:first-child {\n fill: #fff;\n }\n\n path:nth-child(2) {\n fill: #000 !important;\n }\n`;\n\nconst StyledDiscourse = styled(Discourse)`\n > path:first-child {\n fill: #231f20;\n }\n > path:nth-child(2) {\n fill: #fff9ae;\n }\n > path:nth-child(3) {\n fill: #00aeef;\n }\n > path:nth-child(4) {\n fill: #00a94f;\n }\n > path:nth-child(5) {\n fill: #f15d22;\n }\n > path:nth-child(6) {\n fill: #e31b23;\n }\n`;\n\nconst LinkCustom = styled(LinkButton)`\n display: flex;\n align-items: center;\n border: none;\n\n svg {\n width: ${({ theme }) => theme.spaces[6]};\n height: ${({ theme }) => theme.spaces[6]};\n }\n\n span {\n word-break: keep-all;\n }\n`;\n\nconst GridGap = styled(Grid.Root)`\n row-gap: ${({ theme }) => theme.spaces[2]};\n column-gap: ${({ theme }) => theme.spaces[4]};\n`;\n\nconst SOCIAL_LINKS = [\n {\n name: { id: 'app.components.HomePage.community.links.github', defaultMessage: 'Github' },\n link: 'https://github.com/strapi/strapi/',\n icon: <StyledGithub />,\n alt: 'github',\n },\n {\n name: { id: 'app.components.HomePage.community.links.discord', defaultMessage: 'Discord' },\n link: 'https://discord.strapi.io/',\n icon: <StyledDiscord />,\n alt: 'discord',\n },\n {\n name: { id: 'app.components.HomePage.community.links.reddit', defaultMessage: 'Reddit' },\n link: 'https://www.reddit.com/r/Strapi/',\n icon: <StyledReddit />,\n alt: 'reddit',\n },\n {\n name: { id: 'app.components.HomePage.community.links.twitter', defaultMessage: 'Twitter' },\n link: 'https://twitter.com/strapijs',\n icon: <StyledTwitter />,\n alt: 'twitter',\n },\n {\n name: { id: 'app.components.HomePage.community.links.forum', defaultMessage: 'Forum' },\n link: 'https://forum.strapi.io',\n icon: <StyledDiscourse />,\n alt: 'forum',\n },\n {\n name: { id: 'app.components.HomePage.community.links.blog', defaultMessage: 'Blog' },\n link: 'https://strapi.io/blog?utm_source=referral&utm_medium=admin&utm_campaign=career%20page',\n icon: <StyledStrapi />,\n alt: 'blog',\n },\n {\n name: {\n id: 'app.components.HomePage.community.links.career',\n defaultMessage: 'We are hiring!',\n },\n link: 'https://strapi.io/careers?utm_source=referral&utm_medium=admin&utm_campaign=blog',\n icon: <StyledStrapi />,\n alt: 'career',\n },\n];\n\n/* -------------------------------------------------------------------------------------------------\n * HomePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePage = () => {\n const Page = useEnterprise(\n HomePageCE,\n // eslint-disable-next-line import/no-cycle\n async () => (await import('../../../ee/admin/src/pages/HomePage')).HomePageEE\n );\n\n // block rendering until the EE component is fully loaded\n if (!Page) {\n return null;\n }\n\n return <Page />;\n};\n\nexport { HomePage, HomePageCE };\n"],"names":["useGuidedTour","useIntl","useTracking","LAYOUT_DATA","jsx","LinkButton","NavLink","ArrowRight","jsxs","Box","Flex","Typography","Number","VerticalDivider","STATES","Button","adminApi","useAPIErrorHandler","useNotification","React","useNavigate","Page","Layouts","Main","Grid","Link","styled","ContentBox","InformationSquare","CodeSquare","PlaySquare","FeatherSquare","useAppInfo","ExternalLink","GitHub","Discord","Reddit","Strapi","Twitter","Discourse","useEnterprise"],"mappings":"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"}