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

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 (306) hide show
  1. package/dist/admin/{AdminSeatInfo-f4TfgHFE.mjs → AdminSeatInfo-_UxgNKbX.mjs} +5 -5
  2. package/dist/admin/AdminSeatInfo-_UxgNKbX.mjs.map +1 -0
  3. package/dist/admin/{AdminSeatInfo-jSvlksaP.js → AdminSeatInfo-cqB8nHFZ.js} +5 -5
  4. package/dist/admin/AdminSeatInfo-cqB8nHFZ.js.map +1 -0
  5. package/dist/admin/{ApplicationInfoPage-75RPd0Ro.js → ApplicationInfoPage-FlIVu3WL.js} +7 -7
  6. package/dist/admin/ApplicationInfoPage-FlIVu3WL.js.map +1 -0
  7. package/dist/admin/{ApplicationInfoPage-aB-vx1uX.mjs → ApplicationInfoPage-y-FX7oPO.mjs} +7 -7
  8. package/dist/admin/ApplicationInfoPage-y-FX7oPO.mjs.map +1 -0
  9. package/dist/admin/{AuthResponse-YXlkDXrI.js → AuthResponse-6oCac46I.js} +2 -2
  10. package/dist/admin/{AuthResponse-YXlkDXrI.js.map → AuthResponse-6oCac46I.js.map} +1 -1
  11. package/dist/admin/{AuthResponse-HbQI8hB8.mjs → AuthResponse-TKtSIvEM.mjs} +2 -2
  12. package/dist/admin/{AuthResponse-HbQI8hB8.mjs.map → AuthResponse-TKtSIvEM.mjs.map} +1 -1
  13. package/dist/admin/{AuthenticatedLayout-xkecaUXJ.js → AuthenticatedLayout-QwEem8GL.js} +96 -112
  14. package/dist/admin/AuthenticatedLayout-QwEem8GL.js.map +1 -0
  15. package/dist/admin/{AuthenticatedLayout-LYVDZ-jl.mjs → AuthenticatedLayout-qx1Lyy4q.mjs} +98 -114
  16. package/dist/admin/AuthenticatedLayout-qx1Lyy4q.mjs.map +1 -0
  17. package/dist/admin/{CreateActionEE-9Z-woKCk.js → CreateActionEE-dGj-JbWV.js} +4 -4
  18. package/dist/admin/CreateActionEE-dGj-JbWV.js.map +1 -0
  19. package/dist/admin/{CreateActionEE-QiVnA7Rx.mjs → CreateActionEE-uBGAkLbn.mjs} +4 -4
  20. package/dist/admin/CreateActionEE-uBGAkLbn.mjs.map +1 -0
  21. package/dist/admin/{CreatePage-ZrJXDmLJ.js → CreatePage-4TW2khkB.js} +3 -3
  22. package/dist/admin/{CreatePage-ZrJXDmLJ.js.map → CreatePage-4TW2khkB.js.map} +1 -1
  23. package/dist/admin/{CreatePage-jsVARlnB.mjs → CreatePage-4tMY0ik1.mjs} +3 -3
  24. package/dist/admin/{CreatePage-jsVARlnB.mjs.map → CreatePage-4tMY0ik1.mjs.map} +1 -1
  25. package/dist/admin/{CreatePage-1iAK5V1h.mjs → CreatePage-537fJDEU.mjs} +5 -5
  26. package/dist/admin/{CreatePage-1iAK5V1h.mjs.map → CreatePage-537fJDEU.mjs.map} +1 -1
  27. package/dist/admin/{CreatePage-uHcWJ0EG.js → CreatePage-peOfskFg.js} +5 -5
  28. package/dist/admin/{CreatePage-uHcWJ0EG.js.map → CreatePage-peOfskFg.js.map} +1 -1
  29. package/dist/admin/{CreateView-tSUpjqXs.mjs → CreateView-AaD01TxO.mjs} +3 -3
  30. package/dist/admin/{CreateView-tSUpjqXs.mjs.map → CreateView-AaD01TxO.mjs.map} +1 -1
  31. package/dist/admin/{CreateView-Bi2p6uqA.mjs → CreateView-EfGicMHg.mjs} +3 -3
  32. package/dist/admin/{CreateView-Bi2p6uqA.mjs.map → CreateView-EfGicMHg.mjs.map} +1 -1
  33. package/dist/admin/{CreateView-HhvACL4t.js → CreateView-Ni2CgUVr.js} +3 -3
  34. package/dist/admin/{CreateView-HhvACL4t.js.map → CreateView-Ni2CgUVr.js.map} +1 -1
  35. package/dist/admin/{CreateView-1WqjD6uO.js → CreateView-uK14O_jU.js} +3 -3
  36. package/dist/admin/{CreateView-1WqjD6uO.js.map → CreateView-uK14O_jU.js.map} +1 -1
  37. package/dist/admin/{EditPage-JmGISZmG.mjs → EditPage-15aToLph.mjs} +9 -9
  38. package/dist/admin/{EditPage-JmGISZmG.mjs.map → EditPage-15aToLph.mjs.map} +1 -1
  39. package/dist/admin/{EditPage-yFuP3hZG.mjs → EditPage-Il4eROQZ.mjs} +9 -9
  40. package/dist/admin/{EditPage-yFuP3hZG.mjs.map → EditPage-Il4eROQZ.mjs.map} +1 -1
  41. package/dist/admin/{EditPage-MGQBBDmf.js → EditPage-SrUqHo-J.js} +9 -9
  42. package/dist/admin/{EditPage-MGQBBDmf.js.map → EditPage-SrUqHo-J.js.map} +1 -1
  43. package/dist/admin/{EditPage-2l5T1lDC.js → EditPage-cmzfgdc5.js} +9 -9
  44. package/dist/admin/{EditPage-2l5T1lDC.js.map → EditPage-cmzfgdc5.js.map} +1 -1
  45. package/dist/admin/{EditPage-xQSTfVfO.mjs → EditPage-g0VOXyKS.mjs} +6 -6
  46. package/dist/admin/{EditPage-xQSTfVfO.mjs.map → EditPage-g0VOXyKS.mjs.map} +1 -1
  47. package/dist/admin/{EditPage-LMYuiLOp.js → EditPage-z7pM9PD2.js} +6 -6
  48. package/dist/admin/{EditPage-LMYuiLOp.js.map → EditPage-z7pM9PD2.js.map} +1 -1
  49. package/dist/admin/{EditView-06IK7yeo.mjs → EditView-NOjzvG4n.mjs} +6 -6
  50. package/dist/admin/{EditView-06IK7yeo.mjs.map → EditView-NOjzvG4n.mjs.map} +1 -1
  51. package/dist/admin/{EditView-9cnQdotQ.js → EditView-gJfIIjvG.js} +6 -6
  52. package/dist/admin/{EditView-9cnQdotQ.js.map → EditView-gJfIIjvG.js.map} +1 -1
  53. package/dist/admin/{EditViewPage-ZTHin7cu.js → EditViewPage-KEF7ROrG.js} +71 -95
  54. package/dist/admin/EditViewPage-KEF7ROrG.js.map +1 -0
  55. package/dist/admin/{EditViewPage-x06h850j.mjs → EditViewPage-c3QrE1Hr.mjs} +72 -96
  56. package/dist/admin/EditViewPage-c3QrE1Hr.mjs.map +1 -0
  57. package/dist/admin/{EventsTable-i6DpZCjP.js → EventsTable-WB2pMyjf.js} +2 -2
  58. package/dist/admin/{EventsTable-i6DpZCjP.js.map → EventsTable-WB2pMyjf.js.map} +1 -1
  59. package/dist/admin/{EventsTable-uKf7y-DM.mjs → EventsTable-x0tiLQ21.mjs} +2 -2
  60. package/dist/admin/{EventsTable-uKf7y-DM.mjs.map → EventsTable-x0tiLQ21.mjs.map} +1 -1
  61. package/dist/admin/{HomePage-tgoADIWe.js → HomePage-_HRMXYSc.js} +3 -3
  62. package/dist/admin/{HomePage-tgoADIWe.js.map → HomePage-_HRMXYSc.js.map} +1 -1
  63. package/dist/admin/{HomePage-VKuqPKIc.js → HomePage-eU782NVl.js} +23 -20
  64. package/dist/admin/HomePage-eU782NVl.js.map +1 -0
  65. package/dist/admin/{HomePage-Dk_BC7we.mjs → HomePage-t-i4SXRB.mjs} +3 -3
  66. package/dist/admin/{HomePage-Dk_BC7we.mjs.map → HomePage-t-i4SXRB.mjs.map} +1 -1
  67. package/dist/admin/{HomePage-ytofle46.mjs → HomePage-uzU2Sfu_.mjs} +23 -20
  68. package/dist/admin/HomePage-uzU2Sfu_.mjs.map +1 -0
  69. package/dist/admin/{InstalledPluginsPage-5fDQJ3wY.js → InstalledPluginsPage-gga_OMMI.js} +5 -5
  70. package/dist/admin/{InstalledPluginsPage-5fDQJ3wY.js.map → InstalledPluginsPage-gga_OMMI.js.map} +1 -1
  71. package/dist/admin/{InstalledPluginsPage--iVM14K3.mjs → InstalledPluginsPage-j8w6fibY.mjs} +5 -5
  72. package/dist/admin/{InstalledPluginsPage--iVM14K3.mjs.map → InstalledPluginsPage-j8w6fibY.mjs.map} +1 -1
  73. package/dist/admin/{Layout-BYaZsvrJ.js → Layout-6QqRGC19.js} +5 -5
  74. package/dist/admin/{Layout-BYaZsvrJ.js.map → Layout-6QqRGC19.js.map} +1 -1
  75. package/dist/admin/{Layout-woodqxaL.mjs → Layout-mm5FttWk.mjs} +5 -5
  76. package/dist/admin/{Layout-woodqxaL.mjs.map → Layout-mm5FttWk.mjs.map} +1 -1
  77. package/dist/admin/{ListPage-wtqw0RXL.mjs → ListPage--SLZfVEu.mjs} +15 -20
  78. package/dist/admin/ListPage--SLZfVEu.mjs.map +1 -0
  79. package/dist/admin/{ListPage-HCUzAC2B.mjs → ListPage-91B_ZBgU.mjs} +8 -8
  80. package/dist/admin/ListPage-91B_ZBgU.mjs.map +1 -0
  81. package/dist/admin/{ListPage-4VNlnYoD.mjs → ListPage-COfc9Nb2.mjs} +3 -3
  82. package/dist/admin/{ListPage-4VNlnYoD.mjs.map → ListPage-COfc9Nb2.mjs.map} +1 -1
  83. package/dist/admin/{ListPage-MxOKlYmC.js → ListPage-Id9VZhfe.js} +14 -14
  84. package/dist/admin/ListPage-Id9VZhfe.js.map +1 -0
  85. package/dist/admin/{ListPage-XZshrlES.js → ListPage-R1VIjb_K.js} +3 -3
  86. package/dist/admin/{ListPage-XZshrlES.js.map → ListPage-R1VIjb_K.js.map} +1 -1
  87. package/dist/admin/{ListPage-7wUYXUgs.mjs → ListPage-hJ6Ynuzs.mjs} +14 -14
  88. package/dist/admin/ListPage-hJ6Ynuzs.mjs.map +1 -0
  89. package/dist/admin/{ListPage-V26wHeo6.js → ListPage-kdascM3g.js} +8 -8
  90. package/dist/admin/ListPage-kdascM3g.js.map +1 -0
  91. package/dist/admin/{ListPage-0zYjdNsU.js → ListPage-qccI1KJZ.js} +15 -20
  92. package/dist/admin/ListPage-qccI1KJZ.js.map +1 -0
  93. package/dist/admin/{ListPage-5OElNgYk.js → ListPage-qnRnNdZB.js} +8 -7
  94. package/dist/admin/{ListPage-5OElNgYk.js.map → ListPage-qnRnNdZB.js.map} +1 -1
  95. package/dist/admin/{ListPage-NURPzLD-.mjs → ListPage-ver_Z86B.mjs} +8 -7
  96. package/dist/admin/{ListPage-NURPzLD-.mjs.map → ListPage-ver_Z86B.mjs.map} +1 -1
  97. package/dist/admin/{ListView-VRdl68JN.mjs → ListView-HFV67l_w.mjs} +5 -5
  98. package/dist/admin/{ListView-VRdl68JN.mjs.map → ListView-HFV67l_w.mjs.map} +1 -1
  99. package/dist/admin/{ListView-hi5fg7r8.mjs → ListView-PXoWtVRs.mjs} +5 -5
  100. package/dist/admin/{ListView-hi5fg7r8.mjs.map → ListView-PXoWtVRs.mjs.map} +1 -1
  101. package/dist/admin/{ListView-SmHj4MFz.js → ListView-Tdz585_r.js} +5 -5
  102. package/dist/admin/{ListView-SmHj4MFz.js.map → ListView-Tdz585_r.js.map} +1 -1
  103. package/dist/admin/{ListView-siyyh4f7.js → ListView-gOdn2Qwi.js} +5 -5
  104. package/dist/admin/{ListView-siyyh4f7.js.map → ListView-gOdn2Qwi.js.map} +1 -1
  105. package/dist/admin/{Login-9hdTvAlD.mjs → Login-227oY0SP.mjs} +3 -3
  106. package/dist/admin/{Login-9hdTvAlD.mjs.map → Login-227oY0SP.mjs.map} +1 -1
  107. package/dist/admin/{Login-bGhxScoT.js → Login-uUFgaGQO.js} +3 -3
  108. package/dist/admin/{Login-bGhxScoT.js.map → Login-uUFgaGQO.js.map} +1 -1
  109. package/dist/admin/{MagicLinkEE-cAwS-v3S.mjs → MagicLinkEE-1cdMwO4L.mjs} +3 -3
  110. package/dist/admin/{MagicLinkEE-cAwS-v3S.mjs.map → MagicLinkEE-1cdMwO4L.mjs.map} +1 -1
  111. package/dist/admin/{MagicLinkEE-5c7HTc8n.js → MagicLinkEE-SU6DdTGf.js} +3 -3
  112. package/dist/admin/{MagicLinkEE-5c7HTc8n.js.map → MagicLinkEE-SU6DdTGf.js.map} +1 -1
  113. package/dist/admin/{MarketplacePage-hCtNAEWd.mjs → MarketplacePage-HcA4KrZ1.mjs} +9 -11
  114. package/dist/admin/MarketplacePage-HcA4KrZ1.mjs.map +1 -0
  115. package/dist/admin/{MarketplacePage-t6FAhfMK.js → MarketplacePage-UfmJkfaS.js} +9 -11
  116. package/dist/admin/MarketplacePage-UfmJkfaS.js.map +1 -0
  117. package/dist/admin/{Permissions-aRi-vOk-.js → Permissions-kWoGUyLH.js} +30 -50
  118. package/dist/admin/Permissions-kWoGUyLH.js.map +1 -0
  119. package/dist/admin/{Permissions-Ng22nlYS.mjs → Permissions-ujqtV7GK.mjs} +31 -51
  120. package/dist/admin/Permissions-ujqtV7GK.mjs.map +1 -0
  121. package/dist/admin/{PrivateRoute-hfATZKl-.mjs → PrivateRoute-1hyhztQM.mjs} +2 -2
  122. package/dist/admin/{PrivateRoute-hfATZKl-.mjs.map → PrivateRoute-1hyhztQM.mjs.map} +1 -1
  123. package/dist/admin/{PrivateRoute--JuZZan_.js → PrivateRoute-wBE5vMxe.js} +2 -2
  124. package/dist/admin/{PrivateRoute--JuZZan_.js.map → PrivateRoute-wBE5vMxe.js.map} +1 -1
  125. package/dist/admin/{ProfilePage-8ieqgIrW.js → ProfilePage-lpqTZIyh.js} +8 -8
  126. package/dist/admin/{ProfilePage-8ieqgIrW.js.map → ProfilePage-lpqTZIyh.js.map} +1 -1
  127. package/dist/admin/{ProfilePage-imi1Exl5.mjs → ProfilePage-s8Kfhq6I.mjs} +8 -8
  128. package/dist/admin/{ProfilePage-imi1Exl5.mjs.map → ProfilePage-s8Kfhq6I.mjs.map} +1 -1
  129. package/dist/admin/{PurchaseAuditLogs-RGCYZl25.mjs → PurchaseAuditLogs-iXSAELjJ.mjs} +2 -2
  130. package/dist/admin/{PurchaseAuditLogs-RGCYZl25.mjs.map → PurchaseAuditLogs-iXSAELjJ.mjs.map} +1 -1
  131. package/dist/admin/{PurchaseAuditLogs-xUopaGaS.js → PurchaseAuditLogs-uu0_PoKP.js} +2 -2
  132. package/dist/admin/{PurchaseAuditLogs-xUopaGaS.js.map → PurchaseAuditLogs-uu0_PoKP.js.map} +1 -1
  133. package/dist/admin/{PurchaseSingleSignOn-uMysWmJV.mjs → PurchaseSingleSignOn-A_9ts2Q3.mjs} +2 -2
  134. package/dist/admin/{PurchaseSingleSignOn-uMysWmJV.mjs.map → PurchaseSingleSignOn-A_9ts2Q3.mjs.map} +1 -1
  135. package/dist/admin/{PurchaseSingleSignOn-XOgkJmcn.js → PurchaseSingleSignOn-I0AAcpBZ.js} +2 -2
  136. package/dist/admin/{PurchaseSingleSignOn-XOgkJmcn.js.map → PurchaseSingleSignOn-I0AAcpBZ.js.map} +1 -1
  137. package/dist/admin/{SelectRoles-uO7YohIC.js → SelectRoles-7QbQhIi4.js} +5 -5
  138. package/dist/admin/SelectRoles-7QbQhIi4.js.map +1 -0
  139. package/dist/admin/{SelectRoles-kh6E_r88.mjs → SelectRoles-neYrKAlL.mjs} +5 -5
  140. package/dist/admin/SelectRoles-neYrKAlL.mjs.map +1 -0
  141. package/dist/admin/{SingleSignOnPage-bnlsJPDh.js → SingleSignOnPage-NRBGwvMB.js} +6 -6
  142. package/dist/admin/{SingleSignOnPage-bnlsJPDh.js.map → SingleSignOnPage-NRBGwvMB.js.map} +1 -1
  143. package/dist/admin/{SingleSignOnPage-T90Opl7K.mjs → SingleSignOnPage-rOuB5fpN.mjs} +6 -6
  144. package/dist/admin/{SingleSignOnPage-T90Opl7K.mjs.map → SingleSignOnPage-rOuB5fpN.mjs.map} +1 -1
  145. package/dist/admin/{Table-XkC1iUuN.mjs → Table-07CnEMJB.mjs} +4 -4
  146. package/dist/admin/{Table-XkC1iUuN.mjs.map → Table-07CnEMJB.mjs.map} +1 -1
  147. package/dist/admin/{Table-qGOQznHA.js → Table-5EMXAhBX.js} +4 -4
  148. package/dist/admin/{Table-qGOQznHA.js.map → Table-5EMXAhBX.js.map} +1 -1
  149. package/dist/admin/{TokenTypeSelect-kjhQiPbj.mjs → TokenTypeSelect-XHNUoyhJ.mjs} +6 -6
  150. package/dist/admin/TokenTypeSelect-XHNUoyhJ.mjs.map +1 -0
  151. package/dist/admin/{TokenTypeSelect-733TgUaC.js → TokenTypeSelect-j99COf2u.js} +7 -7
  152. package/dist/admin/TokenTypeSelect-j99COf2u.js.map +1 -0
  153. package/dist/admin/{UseCasePage-uk5jmSsj.js → UseCasePage-g9nN8RuC.js} +4 -4
  154. package/dist/admin/{UseCasePage-uk5jmSsj.js.map → UseCasePage-g9nN8RuC.js.map} +1 -1
  155. package/dist/admin/{UseCasePage-cNK2fN9i.mjs → UseCasePage-yZtkKM9d.mjs} +4 -4
  156. package/dist/admin/{UseCasePage-cNK2fN9i.mjs.map → UseCasePage-yZtkKM9d.mjs.map} +1 -1
  157. package/dist/admin/{admin-dE-jnuNr.mjs → admin-B6AW0Kov.mjs} +7 -28
  158. package/dist/admin/admin-B6AW0Kov.mjs.map +1 -0
  159. package/dist/admin/{admin-sk7xXllW.js → admin-p0djr5G6.js} +7 -28
  160. package/dist/admin/admin-p0djr5G6.js.map +1 -0
  161. package/dist/admin/{apiTokens-W-bmo-dU.mjs → apiTokens-YMUmHnrH.mjs} +7 -6
  162. package/dist/admin/apiTokens-YMUmHnrH.mjs.map +1 -0
  163. package/dist/admin/{apiTokens-amUH0Wax.js → apiTokens-YxfAnO7_.js} +7 -6
  164. package/dist/admin/apiTokens-YxfAnO7_.js.map +1 -0
  165. package/dist/admin/{constants-ZW8_ZgiN.js → constants-MTKkA8PE.js} +3 -3
  166. package/dist/admin/{constants-ZW8_ZgiN.js.map → constants-MTKkA8PE.js.map} +1 -1
  167. package/dist/admin/{constants-K5IOuR0b.mjs → constants-N0AWjcMN.mjs} +3 -3
  168. package/dist/admin/{constants-K5IOuR0b.mjs.map → constants-N0AWjcMN.mjs.map} +1 -1
  169. package/dist/admin/ee.js +1 -1
  170. package/dist/admin/ee.mjs +1 -1
  171. package/dist/admin/{en-zVbLVH-h.js → en-G-ukrF2h.js} +2 -1
  172. package/dist/admin/{en-zVbLVH-h.js.map → en-G-ukrF2h.js.map} +1 -1
  173. package/dist/admin/{en-D7rooMTs.mjs → en-K35WIWVM.mjs} +2 -1
  174. package/dist/admin/{en-D7rooMTs.mjs.map → en-K35WIWVM.mjs.map} +1 -1
  175. package/dist/admin/{index--VHJr8__.mjs → index-69WUS0qJ.mjs} +96 -86
  176. package/dist/admin/index-69WUS0qJ.mjs.map +1 -0
  177. package/dist/admin/{index-8r8zglVb.js → index-UrJZyInv.js} +97 -86
  178. package/dist/admin/index-UrJZyInv.js.map +1 -0
  179. package/dist/admin/index.js +8 -4
  180. package/dist/admin/index.js.map +1 -1
  181. package/dist/admin/index.mjs +3 -3
  182. package/dist/admin/{rbac-xo8GO653.js → rbac-5b9ylhpa.js} +8 -5
  183. package/dist/admin/rbac-5b9ylhpa.js.map +1 -0
  184. package/dist/admin/{rbac-OjYDiE2n.mjs → rbac-oJEkQdXG.mjs} +9 -6
  185. package/dist/admin/rbac-oJEkQdXG.mjs.map +1 -0
  186. package/dist/admin/{selectors-k4OkEbL7.mjs → selectors-Ilww6FA-.mjs} +2 -2
  187. package/dist/admin/{selectors-k4OkEbL7.mjs.map → selectors-Ilww6FA-.mjs.map} +1 -1
  188. package/dist/admin/{selectors-lQOnkFXz.js → selectors-NDEu6dJa.js} +2 -2
  189. package/dist/admin/{selectors-lQOnkFXz.js.map → selectors-NDEu6dJa.js.map} +1 -1
  190. package/dist/admin/src/StrapiApp.d.ts +1 -0
  191. package/dist/admin/src/components/Form.d.ts +7 -2
  192. package/dist/admin/src/components/FormInputs/Boolean.d.ts +2 -2
  193. package/dist/admin/src/components/FormInputs/Checkbox.d.ts +2 -2
  194. package/dist/admin/src/components/FormInputs/Date.d.ts +2 -2
  195. package/dist/admin/src/components/FormInputs/DateTime.d.ts +2 -2
  196. package/dist/admin/src/components/FormInputs/Email.d.ts +2 -1
  197. package/dist/admin/src/components/FormInputs/Enumeration.d.ts +2 -1
  198. package/dist/admin/src/components/FormInputs/Json.d.ts +2 -1
  199. package/dist/admin/src/components/FormInputs/Number.d.ts +2 -2
  200. package/dist/admin/src/components/FormInputs/Password.d.ts +2 -1
  201. package/dist/admin/src/components/FormInputs/Renderer.d.ts +2 -8
  202. package/dist/admin/src/components/FormInputs/String.d.ts +2 -1
  203. package/dist/admin/src/components/FormInputs/Textarea.d.ts +2 -1
  204. package/dist/admin/src/components/FormInputs/Time.d.ts +2 -2
  205. package/dist/admin/src/components/Layouts/GridLayout.d.ts +1 -1
  206. package/dist/admin/src/components/Layouts/Layout.d.ts +18 -0
  207. package/dist/admin/src/components/MainNav/NavLink.d.ts +3 -3
  208. package/dist/admin/src/components/PageHelpers.d.ts +1 -1
  209. package/dist/admin/src/core/store/configure.d.ts +3 -9
  210. package/dist/admin/src/core/store/hooks.d.ts +3 -9
  211. package/dist/admin/src/features/Tracking.d.ts +1 -1
  212. package/dist/admin/src/hooks/useAdminRoles.d.ts +1 -1
  213. package/dist/admin/src/hooks/useFetchClient.d.ts +1 -6
  214. package/dist/admin/src/hooks/useMenu.d.ts +1 -1
  215. package/dist/admin/src/index.d.ts +3 -2
  216. package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/components/{CollabsableContentType.d.ts → CollapsableContentType.d.ts} +1 -3
  217. package/dist/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.d.ts +2 -4
  218. package/dist/admin/src/pages/Settings/pages/Roles/components/RoleRow.d.ts +1 -1
  219. package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +4 -4
  220. package/dist/admin/src/selectors.d.ts +2 -6
  221. package/dist/admin/src/services/admin.d.ts +5 -5
  222. package/dist/admin/src/services/api.d.ts +11 -9
  223. package/dist/admin/src/services/apiTokens.d.ts +1 -1
  224. package/dist/admin/src/services/auth.d.ts +13 -11
  225. package/dist/admin/src/services/contentApi.d.ts +2 -2
  226. package/dist/admin/src/services/contentManager.d.ts +5 -1
  227. package/dist/admin/src/services/transferTokens.d.ts +2 -2
  228. package/dist/admin/src/services/users.d.ts +8 -8
  229. package/dist/admin/src/services/webhooks.d.ts +2 -2
  230. package/dist/admin/src/utils/baseQuery.d.ts +6 -5
  231. package/dist/admin/src/utils/getFetchClient.d.ts +9 -9
  232. package/dist/admin/test.js +10 -7
  233. package/dist/admin/test.js.map +1 -1
  234. package/dist/admin/test.mjs +10 -7
  235. package/dist/admin/test.mjs.map +1 -1
  236. package/dist/admin/tests/utils.d.ts +1 -3
  237. package/dist/admin/{transferTokens-i692XANY.mjs → transferTokens-CNI0TFdA.mjs} +15 -5
  238. package/dist/admin/transferTokens-CNI0TFdA.mjs.map +1 -0
  239. package/dist/admin/{transferTokens-6WfQBaQ-.js → transferTokens-HcVXmOrq.js} +15 -4
  240. package/dist/admin/transferTokens-HcVXmOrq.js.map +1 -0
  241. package/dist/admin/{useAdminRoles-eVMCxlw1.mjs → useAdminRoles-0epUuJHP.mjs} +2 -2
  242. package/dist/admin/{useAdminRoles-eVMCxlw1.mjs.map → useAdminRoles-0epUuJHP.mjs.map} +1 -1
  243. package/dist/admin/{useAdminRoles-Y5UQ6Egv.js → useAdminRoles-8RoYtgXn.js} +2 -2
  244. package/dist/admin/{useAdminRoles-Y5UQ6Egv.js.map → useAdminRoles-8RoYtgXn.js.map} +1 -1
  245. package/dist/admin/{useLicenseLimitNotification-OHVMxaBa.mjs → useLicenseLimitNotification-1Xo24v-C.mjs} +3 -3
  246. package/dist/admin/{useLicenseLimitNotification-OHVMxaBa.mjs.map → useLicenseLimitNotification-1Xo24v-C.mjs.map} +1 -1
  247. package/dist/admin/{useLicenseLimitNotification-sfaZoueO.js → useLicenseLimitNotification-9iq0TFuF.js} +3 -3
  248. package/dist/admin/{useLicenseLimitNotification-sfaZoueO.js.map → useLicenseLimitNotification-9iq0TFuF.js.map} +1 -1
  249. package/dist/admin/{useLicenseLimits-mA4KtQ81.js → useLicenseLimits-FtmLXkwK.js} +2 -2
  250. package/dist/admin/{useLicenseLimits-mA4KtQ81.js.map → useLicenseLimits-FtmLXkwK.js.map} +1 -1
  251. package/dist/admin/{useLicenseLimits--WDjYzSj.mjs → useLicenseLimits-Jy6E6qc2.mjs} +2 -2
  252. package/dist/admin/{useLicenseLimits--WDjYzSj.mjs.map → useLicenseLimits-Jy6E6qc2.mjs.map} +1 -1
  253. package/dist/admin/{useWebhooks-0pDqX-k4.mjs → useWebhooks-bgdpL7W6.mjs} +5 -3
  254. package/dist/admin/useWebhooks-bgdpL7W6.mjs.map +1 -0
  255. package/dist/admin/{useWebhooks-BBj9Ew7F.js → useWebhooks-opYGugiT.js} +5 -3
  256. package/dist/admin/useWebhooks-opYGugiT.js.map +1 -0
  257. package/dist/admin/{validation-xeirflOd.mjs → validation-TWt09i2x.mjs} +2 -2
  258. package/dist/admin/{validation-xeirflOd.mjs.map → validation-TWt09i2x.mjs.map} +1 -1
  259. package/dist/admin/{validation-hp8oweyu.js → validation-wyU5bqks.js} +2 -2
  260. package/dist/admin/{validation-hp8oweyu.js.map → validation-wyU5bqks.js.map} +1 -1
  261. package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
  262. package/dist/package.json.d.ts +15 -15
  263. package/dist/server/index.js +10 -1
  264. package/dist/server/index.js.map +1 -1
  265. package/dist/server/index.mjs +10 -1
  266. package/dist/server/index.mjs.map +1 -1
  267. package/dist/server/src/controllers/admin.d.ts.map +1 -1
  268. package/package.json +16 -16
  269. package/dist/admin/AdminSeatInfo-f4TfgHFE.mjs.map +0 -1
  270. package/dist/admin/AdminSeatInfo-jSvlksaP.js.map +0 -1
  271. package/dist/admin/ApplicationInfoPage-75RPd0Ro.js.map +0 -1
  272. package/dist/admin/ApplicationInfoPage-aB-vx1uX.mjs.map +0 -1
  273. package/dist/admin/AuthenticatedLayout-LYVDZ-jl.mjs.map +0 -1
  274. package/dist/admin/AuthenticatedLayout-xkecaUXJ.js.map +0 -1
  275. package/dist/admin/CreateActionEE-9Z-woKCk.js.map +0 -1
  276. package/dist/admin/CreateActionEE-QiVnA7Rx.mjs.map +0 -1
  277. package/dist/admin/EditViewPage-ZTHin7cu.js.map +0 -1
  278. package/dist/admin/EditViewPage-x06h850j.mjs.map +0 -1
  279. package/dist/admin/HomePage-VKuqPKIc.js.map +0 -1
  280. package/dist/admin/HomePage-ytofle46.mjs.map +0 -1
  281. package/dist/admin/ListPage-0zYjdNsU.js.map +0 -1
  282. package/dist/admin/ListPage-7wUYXUgs.mjs.map +0 -1
  283. package/dist/admin/ListPage-HCUzAC2B.mjs.map +0 -1
  284. package/dist/admin/ListPage-MxOKlYmC.js.map +0 -1
  285. package/dist/admin/ListPage-V26wHeo6.js.map +0 -1
  286. package/dist/admin/ListPage-wtqw0RXL.mjs.map +0 -1
  287. package/dist/admin/MarketplacePage-hCtNAEWd.mjs.map +0 -1
  288. package/dist/admin/MarketplacePage-t6FAhfMK.js.map +0 -1
  289. package/dist/admin/Permissions-Ng22nlYS.mjs.map +0 -1
  290. package/dist/admin/Permissions-aRi-vOk-.js.map +0 -1
  291. package/dist/admin/SelectRoles-kh6E_r88.mjs.map +0 -1
  292. package/dist/admin/SelectRoles-uO7YohIC.js.map +0 -1
  293. package/dist/admin/TokenTypeSelect-733TgUaC.js.map +0 -1
  294. package/dist/admin/TokenTypeSelect-kjhQiPbj.mjs.map +0 -1
  295. package/dist/admin/admin-dE-jnuNr.mjs.map +0 -1
  296. package/dist/admin/admin-sk7xXllW.js.map +0 -1
  297. package/dist/admin/apiTokens-W-bmo-dU.mjs.map +0 -1
  298. package/dist/admin/apiTokens-amUH0Wax.js.map +0 -1
  299. package/dist/admin/index--VHJr8__.mjs.map +0 -1
  300. package/dist/admin/index-8r8zglVb.js.map +0 -1
  301. package/dist/admin/rbac-OjYDiE2n.mjs.map +0 -1
  302. package/dist/admin/rbac-xo8GO653.js.map +0 -1
  303. package/dist/admin/transferTokens-6WfQBaQ-.js.map +0 -1
  304. package/dist/admin/transferTokens-i692XANY.mjs.map +0 -1
  305. package/dist/admin/useWebhooks-0pDqX-k4.mjs.map +0 -1
  306. package/dist/admin/useWebhooks-BBj9Ew7F.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"AuthenticatedLayout-xkecaUXJ.js","sources":["../../admin/src/components/GuidedTour/Modal.tsx","../../admin/src/components/MainNav/MainNav.tsx","../../admin/src/components/MainNav/NavBrand.tsx","../../admin/src/components/MainNav/NavLink.tsx","../../admin/src/components/MainNav/NavUser.tsx","../../admin/src/components/LeftMenu.tsx","../../admin/src/assets/images/onboarding-preview.png","../../admin/src/components/Onboarding.tsx","../../admin/src/components/PluginsInitializer.tsx","../../admin/src/hooks/useMenu.ts","../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n FlexComponent,\n FocusTrap,\n IconButton,\n Portal,\n Typography,\n LinkButton,\n} from '@strapi/design-system';\nimport { ArrowRight, Cross } from '@strapi/icons';\nimport get from 'lodash/get';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useTracking } from '../../features/Tracking';\n\nimport { LAYOUT_DATA, STATES } from './constants';\nimport { Number, VerticalDivider } from './Ornaments';\nimport { GuidedTourContextValue, useGuidedTour } from './Provider';\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourModal\n * -----------------------------------------------------------------------------------------------*/\n\nconst GuidedTourModal = () => {\n const currentStep = useGuidedTour('GuidedTourModal', (state) => state.currentStep);\n const guidedTourState = useGuidedTour('GuidedTourModal', (state) => state.guidedTourState);\n const setCurrentStep = useGuidedTour('GuidedTourModal', (state) => state.setCurrentStep);\n const setStepState = useGuidedTour('GuidedTourModal', (state) => state.setStepState);\n const isGuidedTourVisible = useGuidedTour(\n 'GuidedTourModal',\n (state) => state.isGuidedTourVisible\n );\n const setSkipped = useGuidedTour('GuidedTourModal', (state) => state.setSkipped);\n\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n if (!currentStep || !isGuidedTourVisible) {\n return null;\n }\n\n const stepData = get(LAYOUT_DATA, currentStep);\n const sectionKeys = Object.keys(guidedTourState);\n const [sectionName, stepName] = currentStep.split('.') as [\n keyof GuidedTourContextValue['guidedTourState'],\n string,\n ];\n const sectionIndex = sectionKeys.indexOf(sectionName);\n const stepIndex = Object.keys(guidedTourState[sectionName]).indexOf(stepName);\n const hasSectionAfter = sectionIndex < sectionKeys.length - 1;\n const hasStepAfter = stepIndex < Object.keys(guidedTourState[sectionName]).length - 1;\n\n const handleCtaClick = () => {\n setStepState(currentStep, true);\n\n if (stepData) {\n trackUsage(stepData.trackingEvent);\n }\n\n setCurrentStep(null);\n };\n\n const handleSkip = () => {\n setSkipped(true);\n setCurrentStep(null);\n trackUsage('didSkipGuidedtour');\n };\n\n return (\n <Portal>\n <ModalWrapper onClick={handleCtaClick} padding={8} justifyContent=\"center\">\n <FocusTrap onEscape={handleCtaClick}>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n background=\"neutral0\"\n width={`66rem`}\n shadow=\"popupShadow\"\n hasRadius\n padding={4}\n gap={8}\n role=\"dialog\"\n aria-modal\n onClick={(e) => e.stopPropagation()}\n >\n <Flex justifyContent=\"flex-end\">\n <IconButton\n onClick={handleCtaClick}\n aria-label={formatMessage({\n id: 'app.utils.close-label',\n defaultMessage: 'Close',\n })}\n >\n <Cross />\n </IconButton>\n </Flex>\n <Box\n paddingLeft={7}\n paddingRight={7}\n paddingBottom={!hasStepAfter && !hasSectionAfter ? 8 : 0}\n >\n <GuidedTourStepper\n title={stepData && 'title' in stepData ? stepData.title : undefined}\n cta={stepData && 'cta' in stepData ? stepData.cta : undefined}\n onCtaClick={handleCtaClick}\n sectionIndex={sectionIndex}\n stepIndex={stepIndex}\n hasSectionAfter={hasSectionAfter}\n >\n {stepData && 'content' in stepData && <GuidedTourContent {...stepData.content} />}\n </GuidedTourStepper>\n </Box>\n {!(!hasStepAfter && !hasSectionAfter) && (\n <Flex justifyContent=\"flex-end\">\n <Button variant=\"tertiary\" onClick={handleSkip}>\n {formatMessage({\n id: 'app.components.GuidedTour.skip',\n defaultMessage: 'Skip the tour',\n })}\n </Button>\n </Flex>\n )}\n </Flex>\n </FocusTrap>\n </ModalWrapper>\n </Portal>\n );\n};\n\nconst ModalWrapper = styled<FlexComponent>(Flex)`\n position: fixed;\n z-index: 4;\n inset: 0;\n /* this is theme.colors.neutral800 with opacity */\n background: ${({ theme }) => `${theme.colors.neutral800}1F`};\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourStepper\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GuidedTourStepperProps {\n title: MessageDescriptor | undefined;\n children: React.ReactNode;\n cta?: {\n title: MessageDescriptor;\n target?: string;\n };\n onCtaClick: () => void;\n sectionIndex: number;\n stepIndex: number;\n hasSectionAfter: boolean;\n}\n\nconst GuidedTourStepper = ({\n title,\n children,\n cta,\n onCtaClick,\n sectionIndex,\n stepIndex,\n hasSectionAfter,\n}: GuidedTourStepperProps) => {\n const { formatMessage } = useIntl();\n\n const hasSectionBefore = sectionIndex > 0;\n const hasStepsBefore = stepIndex > 0;\n const nextSectionIndex = sectionIndex + 1;\n\n return (\n <>\n <Flex alignItems=\"stretch\">\n <Flex marginRight={8} justifyContent=\"center\" minWidth={`3rem`}>\n {hasSectionBefore && <VerticalDivider state={STATES.IS_DONE} minHeight={`2.4rem`} />}\n </Flex>\n <Typography variant=\"sigma\" textColor=\"primary600\">\n {formatMessage({\n id: 'app.components.GuidedTour.title',\n defaultMessage: '3 steps to get started',\n })}\n </Typography>\n </Flex>\n <Flex>\n <Flex marginRight={8} minWidth={`3rem`}>\n <Number\n state={hasStepsBefore ? STATES.IS_DONE : STATES.IS_ACTIVE}\n paddingTop={3}\n paddingBottom={3}\n >\n {sectionIndex + 1}\n </Number>\n </Flex>\n {title && (\n <Typography variant=\"alpha\" fontWeight=\"bold\" textColor=\"neutral800\" tag=\"h3\" id=\"title\">\n {formatMessage(title)}\n </Typography>\n )}\n </Flex>\n <Flex alignItems=\"stretch\">\n <Flex marginRight={8} direction=\"column\" justifyContent=\"center\" minWidth={`3rem`}>\n {hasSectionAfter && (\n <>\n <VerticalDivider state={STATES.IS_DONE} />\n {hasStepsBefore && (\n <Number state={STATES.IS_ACTIVE} paddingTop={3}>\n {nextSectionIndex + 1}\n </Number>\n )}\n </>\n )}\n </Flex>\n <Box>\n {children}\n {cta &&\n (cta.target ? (\n <LinkButton\n tag={NavLink}\n endIcon={<ArrowRight />}\n onClick={onCtaClick}\n to={cta.target}\n >\n {formatMessage(cta.title)}\n </LinkButton>\n ) : (\n <Button endIcon={<ArrowRight />} onClick={onCtaClick}>\n {formatMessage(cta.title)}\n </Button>\n ))}\n </Box>\n </Flex>\n {hasStepsBefore && hasSectionAfter && (\n <Box paddingTop={3}>\n <Flex marginRight={8} justifyContent=\"center\" width={`3rem`}>\n <VerticalDivider state={STATES.IS_DONE} minHeight={`2.4rem`} />\n </Flex>\n </Box>\n )}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourContent\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GuidedTourContentProps\n extends Required<Pick<MessageDescriptor, 'defaultMessage' | 'id'>> {}\n\nconst GuidedTourContent = ({ id, defaultMessage }: GuidedTourContentProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4} paddingBottom={6}>\n {formatMessage(\n { id, defaultMessage },\n {\n documentationLink: DocumentationLink,\n b: Bold,\n p: Paragraph,\n light: Light,\n ul: List,\n li: ListItem,\n }\n )}\n </Flex>\n );\n};\n\nconst DocumentationLink = (children: React.ReactNode) => (\n <Typography\n tag=\"a\"\n textColor=\"primary600\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/rest-api.html#api-parameters\"\n >\n {children}\n </Typography>\n);\n\nconst Bold = (children: React.ReactNode) => (\n <Typography fontWeight=\"semiBold\">{children}</Typography>\n);\n\nconst Paragraph = (children: React.ReactNode) => <Typography>{children}</Typography>;\n\nconst Light = (children: React.ReactNode) => (\n <Typography textColor=\"neutral600\">{children}</Typography>\n);\n\nconst List = (children: React.ReactNode) => (\n <Box paddingLeft={6}>\n <ul>{children}</ul>\n </Box>\n);\n\nconst LiStyled = styled.li`\n list-style: disc;\n &::marker {\n color: ${({ theme }) => theme.colors.neutral800};\n }\n`;\n\nconst ListItem = (children: React.ReactNode) => <LiStyled>{children}</LiStyled>;\n\nexport { GuidedTourModal };\n","import { Flex, FlexComponent, FlexProps } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nconst MainNavWrapper = styled<FlexComponent<'nav'>>(Flex)`\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst MainNav = (props: FlexProps<'nav'>) => (\n <MainNavWrapper\n alignItems=\"normal\"\n tag=\"nav\"\n background=\"neutral0\"\n direction=\"column\"\n height=\"100vh\"\n position=\"sticky\"\n top={0}\n zIndex={2}\n width={10}\n {...props}\n />\n);\n\nexport { MainNav };\n","import { Box, BoxComponent, VisuallyHidden } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useConfiguration } from '../../features/Configuration';\n\nconst BrandIconWrapper = styled<BoxComponent>(Box)`\n svg,\n img {\n border-radius: ${({ theme }) => theme.borderRadius};\n object-fit: contain;\n height: 2.4rem;\n width: 2.4rem;\n margin: 0.4rem;\n }\n`;\n\nexport const NavBrand = () => {\n const { formatMessage } = useIntl();\n const {\n logos: { menu },\n } = useConfiguration('LeftMenu');\n return (\n <Box padding={3}>\n <BrandIconWrapper width=\"3.2rem\" height=\"3.2rem\">\n <img\n src={menu.custom?.url || menu.default}\n alt={formatMessage({\n id: 'app.components.LeftMenu.logo.alt',\n defaultMessage: 'Application logo',\n })}\n />\n <VisuallyHidden>\n <span>\n {formatMessage({\n id: 'app.components.LeftMenu.navbrand.title',\n defaultMessage: 'Strapi Dashboard',\n })}\n </span>\n <span>\n {formatMessage({\n id: 'app.components.LeftMenu.navbrand.workplace',\n defaultMessage: 'Workplace',\n })}\n </span>\n </VisuallyHidden>\n </BrandIconWrapper>\n </Box>\n );\n};\n","import * as React from 'react';\n\nimport { Tooltip, Badge, BadgeProps, AccessibleIcon } from '@strapi/design-system';\nimport { NavLink as RouterLink, LinkProps } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\n/* -------------------------------------------------------------------------------------------------\n * Link\n * -----------------------------------------------------------------------------------------------*/\nconst MainNavLinkWrapper = styled(RouterLink)`\n text-decoration: none;\n display: block;\n border-radius: ${({ theme }) => theme.borderRadius};\n background: ${({ theme }) => theme.colors.neutral0};\n color: ${({ theme }) => theme.colors.neutral500};\n position: relative;\n width: fit-content;\n padding-block: 0.6rem;\n padding-inline: 0.6rem;\n\n &:hover,\n &.active {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n\n &:hover {\n svg path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n color: ${({ theme }) => theme.colors.neutral700};\n }\n\n &.active {\n svg path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n\n color: ${({ theme }) => theme.colors.primary600};\n font-weight: 500;\n }\n`;\n\nconst LinkImpl = ({ children, ...props }: LinkProps) => {\n return <MainNavLinkWrapper {...props}>{children}</MainNavLinkWrapper>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Tooltip\n * -----------------------------------------------------------------------------------------------*/\nconst TooltipImpl = ({ children, label, position = 'right' }: NavLink.TooltipProps) => {\n return (\n <Tooltip position={position} label={label}>\n <span>{children}</span>\n </Tooltip>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Icon\n * -----------------------------------------------------------------------------------------------*/\nconst IconImpl = ({ label, children }: { label: string; children: React.ReactNode }) => {\n if (!children) {\n return null;\n }\n return <AccessibleIcon label={label}>{children}</AccessibleIcon>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Badge\n * -----------------------------------------------------------------------------------------------*/\nconst CustomBadge = styled(Badge)`\n /* override default badge styles to change the border radius of the Base element in the Design System */\n border-radius: ${({ theme }) => theme.spaces[10]};\n height: 2rem;\n`;\n\nconst BadgeImpl = ({ children, label, ...props }: NavLink.NavBadgeProps) => {\n if (!children) {\n return null;\n }\n return (\n <CustomBadge\n position=\"absolute\"\n width=\"2.3rem\"\n top=\"-0.8rem\"\n left=\"1.7rem\"\n aria-label={label}\n active={false}\n {...props}\n >\n {children}\n </CustomBadge>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EXPORTS\n * -----------------------------------------------------------------------------------------------*/\n\nconst NavLink = {\n Link: LinkImpl,\n Tooltip: TooltipImpl,\n Icon: IconImpl,\n Badge: BadgeImpl,\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace NavLink {\n export interface NavBadgeProps extends BadgeProps {\n children: React.ReactNode;\n label: string;\n }\n\n export interface TooltipProps {\n position?: 'top' | 'bottom' | 'left' | 'right';\n label?: string;\n children: React.ReactNode;\n }\n}\n\nexport { NavLink };\n","import React from 'react';\n\nimport { Initials, Flex, Menu, ButtonProps, VisuallyHidden } from '@strapi/design-system';\nimport { SignOut } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useAuth } from '../../features/Auth';\n\nexport interface NavUserProps extends ButtonProps {\n initials: string;\n children?: React.ReactNode;\n}\n\n/**\n * TODO: this needs to be solved in the Design-System\n */\nconst MenuTrigger = styled(Menu.Trigger)`\n height: 100%;\n`;\n\nconst MenuContent = styled(Menu.Content)`\n left: ${({ theme }) => theme.spaces[5]};\n`;\n\nconst MenuItem = styled(Menu.Item)`\n span {\n width: 100%;\n display: flex;\n justify-content: space-between;\n }\n`;\n\nexport const NavUser = ({ children, initials, ...props }: NavUserProps) => {\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const logout = useAuth('Logout', (state) => state.logout);\n const handleProfile = () => {\n navigate('/me');\n };\n const handleLogout = () => {\n logout();\n navigate('/auth/login');\n };\n return (\n <Flex justifyContent=\"center\" {...props}>\n <Menu.Root>\n <MenuTrigger endIcon={null} fullWidth justifyContent=\"center\">\n <Initials>{initials}</Initials>\n <VisuallyHidden tag=\"span\">{children}</VisuallyHidden>\n </MenuTrigger>\n <MenuContent popoverPlacement=\"top\" zIndex={3} width=\"15rem\">\n <MenuItem onSelect={handleProfile}>\n {formatMessage({\n id: 'global.profile',\n defaultMessage: 'Profile',\n })}\n </MenuItem>\n\n <MenuItem onSelect={handleLogout} color=\"danger600\">\n {formatMessage({\n id: 'app.components.LeftMenu.logout',\n defaultMessage: 'Logout',\n })}\n <SignOut />\n </MenuItem>\n </MenuContent>\n </Menu.Root>\n </Flex>\n );\n};\n","import * as React from 'react';\n\nimport { Divider, Flex, FlexComponent } from '@strapi/design-system';\nimport { Feather, Lock, House } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useAuth } from '../features/Auth';\nimport { useTracking } from '../features/Tracking';\nimport { Menu } from '../hooks/useMenu';\nimport { getDisplayName } from '../utils/users';\n\nimport { MainNav } from './MainNav/MainNav';\nimport { NavBrand } from './MainNav/NavBrand';\nimport { NavLink } from './MainNav/NavLink';\nimport { NavUser } from './MainNav/NavUser';\n\nconst NewNavLinkBadge = styled(NavLink.Badge)`\n span {\n color: ${({ theme }) => theme.colors.neutral0};\n }\n`;\n\nconst NavListWrapper = styled<FlexComponent<'ul'>>(Flex)`\n overflow-y: auto;\n`;\n\ninterface LeftMenuProps extends Pick<Menu, 'generalSectionLinks' | 'pluginsSectionLinks'> {}\n\nconst LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }: LeftMenuProps) => {\n const user = useAuth('AuthenticatedApp', (state) => state.user);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const userDisplayName = getDisplayName(user);\n\n const initials = userDisplayName\n .split(' ')\n .map((name) => name.substring(0, 1))\n .join('')\n .substring(0, 2);\n\n const handleClickOnLink = (destination: string) => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <MainNav>\n <NavBrand />\n\n <Divider />\n\n <NavListWrapper tag=\"ul\" gap={3} direction=\"column\" flex={1} paddingTop={3} paddingBottom={3}>\n <Flex tag=\"li\">\n <NavLink.Link\n to=\"/\"\n onClick={() => handleClickOnLink('/')}\n aria-label={formatMessage({ id: 'global.home', defaultMessage: 'Home' })}\n >\n <NavLink.Tooltip label={formatMessage({ id: 'global.home', defaultMessage: 'Home' })}>\n <NavLink.Icon label={formatMessage({ id: 'global.home', defaultMessage: 'Home' })}>\n <House width=\"2rem\" height=\"2rem\" fill=\"neutral500\" />\n </NavLink.Icon>\n </NavLink.Tooltip>\n </NavLink.Link>\n </Flex>\n <Flex tag=\"li\">\n <NavLink.Link\n to=\"/content-manager\"\n onClick={() => handleClickOnLink('/content-manager')}\n aria-label={formatMessage({\n id: 'global.content-manager',\n defaultMessage: 'Content Manager',\n })}\n >\n <NavLink.Tooltip\n label={formatMessage({\n id: 'global.content-manager',\n defaultMessage: 'Content Manager',\n })}\n >\n <NavLink.Icon\n label={formatMessage({\n id: 'global.content-manager',\n defaultMessage: 'Content Manager',\n })}\n >\n <Feather width=\"2rem\" height=\"2rem\" fill=\"neutral500\" />\n </NavLink.Icon>\n </NavLink.Tooltip>\n </NavLink.Link>\n </Flex>\n {pluginsSectionLinks.length > 0\n ? pluginsSectionLinks.map((link) => {\n if (link.to === 'content-manager') {\n return null;\n }\n\n const LinkIcon = link.icon;\n const badgeContent = link?.lockIcon ? <Lock /> : undefined;\n\n const labelValue = formatMessage(link.intlLabel);\n return (\n <Flex tag=\"li\" key={link.to}>\n <NavLink.Link\n to={link.to}\n onClick={() => handleClickOnLink(link.to)}\n aria-label={labelValue}\n >\n <NavLink.Tooltip label={labelValue}>\n <NavLink.Icon label={labelValue}>\n <LinkIcon width=\"2rem\" height=\"2rem\" fill=\"neutral500\" />\n </NavLink.Icon>\n {badgeContent && (\n <NavLink.Badge\n label=\"locked\"\n background=\"transparent\"\n textColor=\"neutral500\"\n >\n {badgeContent}\n </NavLink.Badge>\n )}\n </NavLink.Tooltip>\n </NavLink.Link>\n </Flex>\n );\n })\n : null}\n {generalSectionLinks.length > 0\n ? generalSectionLinks.map((link) => {\n const LinkIcon = link.icon;\n\n const badgeContent =\n link.notificationsCount && link.notificationsCount > 0\n ? link.notificationsCount.toString()\n : undefined;\n\n const labelValue = formatMessage(link.intlLabel);\n\n return (\n <Flex tag=\"li\" key={link.to}>\n <NavLink.Link\n aria-label={labelValue}\n to={link.to}\n onClick={() => handleClickOnLink(link.to)}\n >\n <NavLink.Tooltip label={labelValue}>\n <NavLink.Icon label={labelValue}>\n <LinkIcon width=\"2rem\" height=\"2rem\" fill=\"neutral500\" />\n </NavLink.Icon>\n {badgeContent && (\n <NewNavLinkBadge label={badgeContent} backgroundColor=\"primary600\">\n {badgeContent}\n </NewNavLinkBadge>\n )}\n </NavLink.Tooltip>\n </NavLink.Link>\n </Flex>\n );\n })\n : null}\n </NavListWrapper>\n <NavUser initials={initials}>{userDisplayName}</NavUser>\n </MainNav>\n );\n};\n\nexport { LeftMenu };\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHAAAABQCAMAAAD2kgFPAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAL9UExURff3+fv7+/X19/Pz9/n5+fv7/f39//////39/UdwTPn5+/X1+fHx++/v8fn5/fHx8/Pz9eTk6e/v8/Hx9fHx/e3u7/X19e3t8evr7+fn6YuR96Gl+OLi59LS2dTU2uvr++nq7ff39+Tk697e4ufn6+vr7enq69ra3tDQ1uDg5/nv7+Dg5Nzc4Nzd4tTU2OTk5+fn7djY3tzc5M/Q1NjY3NLS1tbX3MzM0u/w9crK0unp7+np+/37+8rK0MjIzu/v78PEy9ra4djY4eLi6t7e5NbW2s7O1OLk5+/v/Ojp/dra5MPF9+3u89bX3mxz99DQ2fj4+OLi5PHx8dvb29ze+/f3/7C1+t7e5+vr69PX2OPk/Jydl/T09/f393R7+Gdw96ytuNTU3M7O2ODg6a6vumJq9+3u/dTW/PP19cXGzd7e4O3t7cnK+/f3+uLk683O+Z2h+dLU+9/h++no3/j39bq0pu/v7fv7+fHz9XF4911l93V8+bm5waGirffr7Kqrtq+z9qentF9o93mA+fj4+vr6++/v7/f3++vt+83N0/Pz8+vr8dbY+sjJ98zO1crM0vn5//Pz/ra6n/n59d/g4quvp9fa2OTn66Shm8C2prCuq+/r67Gxr9LLvbCwrcfEwK+vqZSahtPVw5WafKiknff5+ZqapvHw7fv4+YGH9dnb++Tn/Ly8xvfo6Oq5v////6WlsNrc3vPz+dLU2Ovr/eTn+drc4JWXo6Wp+cLE++nr74+T+enr4s7Q1m5098bArefk5Nze0ODc1Pf3/MC8tuDi0KWrh/n39+Tk4qmv+77Cqdjc3PX1/c7S0vv7/7ixo/Px7Z+jh62x+8rMtrS6pZebjY+Rn9bayKuvm+vp5+np6aWrjVJa9fX38bi895+fm1pk9620oevp6bS0r+fp6fv19VZg9fn19X6F+fnz89LS3MDAyPXi4uextvX1+vPW2OCVnYmJl9zc4Xh4iff3+mdy97y8xPf3977C96mpsbS29YeHlamv84qS87i89VXx8BYAAAD/dFJOU319fX19fX19fQB9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19bX19fX19fX19fX19Lwd9fX19fX19fX19fX19fX1lfX19fX19fX19fX19fX19fX19fX19fW1dED59fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX0PfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1mfX19bX1eXn0/fX19fX0/fSWruQsAAAbiSURBVGje7VkFcBtHFD2SbnXO9UA56dRIiiRbFFlmiO3asWKIE0MYGrQbZmjDDA1T06RJ03DSJA2XMaWUmZmZmWm6ki3lTie59kTSlJ40p5nV//tud//b/28P0WiG/PgdkhBMHKzRaBDNyWXSRoqi4ki57CQk/MZsKna58pqa0N4gnoNcNgQZzBV8ml9aYMYaW4DQRKjvDC8MG7TkG0ff+gmobifD78gXYQZE0++8b08tXFg/4uf6H46VLh5Rf/P8TERtXG1ykkmtI7zmtZFLhtW9NWfOnCUjhy0Z+T2CJOFYJMOS+YtPzV884teDX8879sKIhfUHSxG1AzH0ajXhB3UjPxpaVzd37uyls5cunRv30Fx0vhxRDfXdLLbhZWU2W1mGGNtbEPuXdStz+2ycu/+kbmv4YLOWZ3merdEyNSweW0KMxXkW1+J4RwxeMeRfCIbhMsu7/LUd0QgkSYkW8TS5wznVlg93W8LnEiUooAIqFYBQkxBnSIxkMStJVLUPoah90cCqlSurWkSI6ijdGGv0v0Wv3iaIa1i9KLJ+QoR0Wk0l2YCo6jO5unpq9dTJkyesW7uu+oZp09q0iLDXvOQNG0r9uxbtNdU2hIcidV4YELTpt40C17WIsMk9oAyapxMbNxiCR4uRWAP2TNOZ3S/KCmdEyfggEORQ9Xh4kKPkM8O6AjbIS/BWfZLED+N5StmbisEZRttRTzVD2LZtUdW09gPbFx0tatuE0Y2E/YYeVYlI0E7ELYjET68vJJS9nZdRc1shq7dgzRIeKfrtj0W//LTojTDCOE2pMsjb3BiQhSo+gF3jOJNhKQwPUgqcBdqhER+Cc4efUOvL8nFKwhxn/tjKtNLTY12HO3z15ecnTiz4ODaEkUEBgoKqIRAdgR3u8NmC4wuOd3g/noSoWoILGgHU5w7/jGpxbQ28dJRl3/AoPfR6jKIUqcnKstkm2fpnZOlZGSFBqUgQtLt6/9vvSf0Y/19qENYbgIpHSQBvFk6ekgy2NZO9SIqk1Pag7Ttvvttb6pu3Ps9lTtvsqsiTtmLpnC83L8fpyjXlmpMVhDYS+IKbN6YkBNINaubunWiMphTh9d0L1tcqMj6IDwKdszgeYYR9u6old/bsi1SsRohhs3heVBK2mz1QLQTthOe3Xyj1q8xJ3uwZZ/A5jbI17GlPyUlNTk31jHN6DQoyhgLuQNVm7l7bWZkPb719FBnKCIcOTJ8h9bVi8GO16hCdLAxR1N9E6HSsDlOmDGjLNBOlcnR6KlY6RFitODzFlrCM799qyt1eZV1KEqhU+E+/5EiE8EML/8qgXVdIfbPHZhfkrrp2bL5J2sqmJptL8nOzi9fnFxekKgjLUOB/rub58obMCEGjVoGzI7x8986Z5zydsDcQkMXWQguPJG4No25tslXYt08Vs62N8TaYvUnKNVSh6tVBuxl798iE7/QYuRSO5jhB2koYGCHZ4PBwKV2MnF5BhlPqxsqC1uJshKChUDIk3qsOPPmy1LeXIIgMzToYWtqK6nS0vRNNC+P1gqgUPrwFfYuFP+DiWK5hCwhjFzSF/WuzOnd2uwt9fEcZ4dp+l52VxSWvPueQb4ugMc7lcY8GhA+iC5+CETqLhV8Ww5iwmmbKsD4glPHtg3bIhJ/mMpucuelpabK8jqVyqdkVOea0nOtzTR4FYQoKvM1MadcJfSUjvO+uB2MlfP+hgrtLAoUf5VAhzPCe++MepVD4gAmlw71bZMLvnZ5ucBhpe0+ZDokuUPgpnJETofDtkYSfEjhUKP8ks0G5eaOoVPjbpt8t9XUYOU+6gfZYZIUEytMOzmB39OzJGThaQZgBv1EPFeIr/AiHCnEMmmiHCgMnnJHI4oFNjGzySEBGVDZsD2g+ovChX3DzjpCeptT1AaEdf8CgHbKgcbnSXBUmoykvRyb8ZKMnrSIzz2Q2myKV+iHhY0laJeGRfhLhW/dcqWulxqOOkOFNp7v78IRm/BZkiztiF6WRDxX85zRFIKTDGfu3PCr1SxcEmGd1jMDKhD9+jE6kRZHWdrILSh3CTsVAXZqa5eWUhA8P7UqGuuu0bfpDso3fuJXjDILHIBc+LQgp6XaHMd1o4HpFyvgZzUzpE49Jn5563wv+qRk/ej6culFSCG96RBc74UcmnHJnH2A5K/xdj0t9S0oLirMrvSWrKmSlvvMmZ3GBuTI/u7IkX1nqW1BQ2wzh6FskNY11eyuFH2kC4DJRf581/B+tQHzfK4e9ZsIQBkFHbURgLQMfX9x4vAlh1sMhIYnAhxhYxVgSNE6C+E+F0KWJpZuIrEgs4WBkSI9E8vXQIJrlCWTssRwSajSDJyYoXFYM0Wj+BNjsk7mwYOwbAAAAAElFTkSuQmCC\"","import * as React from 'react';\n\nimport {\n Box,\n Button,\n Divider,\n Flex,\n FlexComponent,\n PopoverPrimitives,\n Portal,\n Typography,\n TypographyComponent,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Cross, Message, Play, Question, Book, PaperPlane } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport onboardingPreview from '../assets/images/onboarding-preview.png';\nimport { useAppInfo } from '../features/AppInfo';\n\nconst Onboarding = () => {\n const triggerRef = React.useRef<HTMLButtonElement>(null!);\n const [isOpen, setIsOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n const communityEdition = useAppInfo('Onboarding', (state) => state.communityEdition);\n\n const handlePopoverVisibility = () => {\n setIsOpen((prev) => !prev);\n };\n\n const docLinks = [\n ...DOCUMENTATION_LINKS,\n {\n label: { id: 'Settings.application.get-help', defaultMessage: 'Get help' },\n icon: Message,\n href: communityEdition\n ? 'https://discord.strapi.io'\n : 'https://support.strapi.io/support/home',\n },\n ];\n\n const Icon = isOpen ? Cross : Question;\n\n return (\n <Box tag=\"aside\" position=\"fixed\" bottom={2} right={2}>\n <HelperButton\n aria-label={formatMessage(\n isOpen\n ? {\n id: 'app.components.Onboarding.help.button-close',\n defaultMessage: 'Close help menu',\n }\n : {\n id: 'app.components.Onboarding.help.button',\n defaultMessage: 'Open help menu',\n }\n )}\n onClick={handlePopoverVisibility}\n ref={triggerRef}\n >\n <Icon fill=\"buttonNeutral0\" />\n </HelperButton>\n\n {isOpen && (\n <Portal>\n <PopoverPrimitives.Content\n padding={0}\n onDismiss={handlePopoverVisibility}\n source={triggerRef}\n placement=\"top-end\"\n spacing={12}\n >\n <Flex\n justifyContent=\"space-between\"\n paddingBottom={5}\n paddingRight={6}\n paddingLeft={6}\n paddingTop={6}\n >\n <TypographyLineHeight fontWeight=\"bold\">\n {formatMessage({\n id: 'app.components.Onboarding.title',\n defaultMessage: 'Get started videos',\n })}\n </TypographyLineHeight>\n <TextLink\n tag=\"a\"\n href={WATCH_MORE.href}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n variant=\"pi\"\n textColor=\"primary600\"\n >\n {formatMessage(WATCH_MORE.label)}\n </TextLink>\n </Flex>\n <Divider />\n {VIDEO_LINKS.map(({ href, duration, label }, index) => (\n <VideoLinkWrapper\n tag=\"a\"\n href={href}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n key={href}\n hasRadius\n paddingTop={4}\n paddingBottom={4}\n paddingLeft={6}\n paddingRight={11}\n >\n <Box paddingRight={5}>\n <Number textColor=\"neutral200\" variant=\"alpha\">\n {index + 1}\n </Number>\n </Box>\n <Box position=\"relative\">\n <Preview src={onboardingPreview} alt=\"\" />\n <IconWrapper\n position=\"absolute\"\n top=\"50%\"\n left=\"50%\"\n background=\"primary600\"\n borderRadius=\"50%\"\n justifyContent=\"center\"\n width={6}\n height={6}\n >\n <Play fill=\"buttonNeutral0\" width=\"1.2rem\" height=\"1.2rem\" />\n </IconWrapper>\n </Box>\n <Flex direction=\"column\" alignItems=\"start\" paddingLeft={4}>\n <Label fontWeight=\"bold\">{formatMessage(label)}</Label>\n <VisuallyHidden>:</VisuallyHidden>\n <Typography textColor=\"neutral600\" variant=\"pi\">\n {duration}\n </Typography>\n </Flex>\n </VideoLinkWrapper>\n ))}\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={2}\n paddingLeft={5}\n paddingTop={2}\n paddingBottom={5}\n >\n {docLinks.map(({ label, href, icon: Icon }) => (\n <Flex gap={3} key={href}>\n <Icon fill=\"primary600\" />\n <TextLink\n tag=\"a\"\n href={href}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n variant=\"sigma\"\n textColor=\"primary700\"\n >\n {formatMessage(label)}\n </TextLink>\n </Flex>\n ))}\n </Flex>\n </PopoverPrimitives.Content>\n </Portal>\n )}\n </Box>\n );\n};\n\n// TODO: use new Button props derived from Box props with next DS release\nconst HelperButton = styled(Button)`\n border-radius: 50%;\n padding: ${({ theme }) => theme.spaces[3]};\n /* Resetting 2rem height defined by Button component */\n height: 100%;\n`;\n\nconst IconWrapper = styled<FlexComponent>(Flex)`\n transform: translate(-50%, -50%);\n`;\n\nconst Number = styled<TypographyComponent>(Typography)``;\n\nconst Label = styled<TypographyComponent>(Typography)``;\n\nconst VideoLinkWrapper = styled<FlexComponent<'a'>>(Flex)`\n text-decoration: none;\n\n :focus-visible {\n outline-offset: ${({ theme }) => `-${theme.spaces[1]}`};\n }\n\n :hover {\n background: ${({ theme }) => theme.colors.primary100};\n\n /* Hover style for the number displayed */\n ${Number} {\n color: ${({ theme }) => theme.colors.primary500};\n }\n\n /* Hover style for the label */\n ${Label} {\n color: ${({ theme }) => theme.colors.primary600};\n }\n }\n`;\n\nconst Preview = styled.img`\n width: ${({ theme }) => theme.spaces[10]};\n height: ${({ theme }) => theme.spaces[8]};\n /* Same overlay used in ModalLayout */\n background: ${({ theme }) => `${theme.colors.neutral800}1F`};\n border-radius: ${({ theme }) => theme.borderRadius};\n`;\n\nconst TypographyLineHeight = styled<TypographyComponent>(Typography)`\n /* line height of label and watch more to 1 so they can be better aligned visually */\n line-height: 1;\n`;\n\nconst TextLink = styled<TypographyComponent<'a'>>(Typography)`\n text-decoration: none;\n line-height: 1;\n\n :hover {\n text-decoration: underline;\n }\n`;\n\nconst VIDEO_LINKS = [\n {\n label: {\n id: 'app.components.Onboarding.link.build-content',\n defaultMessage: 'Build a content architecture',\n },\n href: 'https://www.youtube.com/watch?v=G9GjN0RxhkE',\n duration: '5:48',\n },\n {\n label: {\n id: 'app.components.Onboarding.link.manage-content',\n defaultMessage: 'Add & manage content',\n },\n href: 'https://www.youtube.com/watch?v=DEZw4KbybAI',\n duration: '3:18',\n },\n {\n label: { id: 'app.components.Onboarding.link.manage-media', defaultMessage: 'Manage media' },\n href: 'https://www.youtube.com/watch?v=-61MuiMQb38',\n duration: '3:41',\n },\n];\n\nconst WATCH_MORE = {\n href: 'https://www.youtube.com/playlist?list=PL7Q0DQYATmvidz6lEmwE5nIcOAYagxWqq',\n label: {\n id: 'app.components.Onboarding.link.more-videos',\n defaultMessage: 'Watch more videos',\n },\n};\n\nconst DOCUMENTATION_LINKS = [\n {\n label: { id: 'global.documentation', defaultMessage: 'documentation' },\n href: 'https://docs.strapi.io',\n icon: Book,\n },\n {\n label: { id: 'app.static.links.cheatsheet', defaultMessage: 'cheatsheet' },\n href: 'https://strapi-showcase.s3-us-west-2.amazonaws.com/CheatSheet.pdf',\n icon: PaperPlane,\n },\n];\n\nexport { Onboarding };\n","import * as React from 'react';\n\nimport { produce } from 'immer';\nimport set from 'lodash/set';\n\nimport { Page } from '../components/PageHelpers';\nimport { StrapiAppContextValue, useStrapiApp } from '../features/StrapiApp';\n\n/**\n * TODO: this isn't great, and we really should focus on fixing this.\n */\nconst PluginsInitializer = ({ children }: { children: React.ReactNode }) => {\n const appPlugins = useStrapiApp('PluginsInitializer', (state) => state.plugins);\n const [{ plugins }, dispatch] = React.useReducer<React.Reducer<State, Action>, State>(\n reducer,\n initialState,\n () => init(appPlugins)\n );\n const setPlugin = React.useRef((pluginId: string) => {\n dispatch({ type: 'SET_PLUGIN_READY', pluginId });\n });\n\n const hasApluginNotReady = Object.keys(plugins).some(\n (plugin) => plugins[plugin].isReady === false\n );\n\n /**\n *\n * I have spent some time trying to understand what is happening here, and wanted to\n * leave that knowledge for my future me:\n *\n * `initializer` is an undocumented property of the `registerPlugin` API. At the time\n * of writing it seems only to be used by the i18n plugin.\n *\n * How does it work?\n *\n * Every plugin that has an `initializer` component defined, receives the\n * `setPlugin` function as a component prop. In the case of i18n the plugin fetches locales\n * first and calls `setPlugin` with `pluginId` once they are loaded, which then triggers the\n * reducer of the admin app defined above.\n *\n * Once all plugins are set to `isReady: true` the app renders.\n *\n * This API is used to block rendering of the admin app. We should remove that in v5 completely\n * and make sure plugins can inject data into the global store before they are initialized, to avoid\n * having a new prop-callback based communication channel between plugins and the core admin app.\n *\n */\n\n if (hasApluginNotReady) {\n const initializers = Object.keys(plugins).reduce((acc, current) => {\n const InitializerComponent = plugins[current].initializer;\n\n if (InitializerComponent) {\n const key = plugins[current].pluginId;\n\n acc.push(<InitializerComponent key={key} setPlugin={setPlugin.current} />);\n }\n\n return acc;\n }, [] as React.ReactNode[]);\n\n return (\n <>\n {initializers}\n <Page.Loading />\n </>\n );\n }\n\n return children;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Reducer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface State {\n plugins: StrapiAppContextValue['plugins'];\n}\n\nconst initialState: State = {\n plugins: {},\n};\n\ntype SetPluginReadyAction = {\n type: 'SET_PLUGIN_READY';\n pluginId: string;\n};\n\ntype Action = SetPluginReadyAction;\n\nconst reducer: React.Reducer<State, Action> = (state = initialState, action: Action): State =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'SET_PLUGIN_READY': {\n set(draftState, ['plugins', action.pluginId, 'isReady'], true);\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * Init state\n * -----------------------------------------------------------------------------------------------*/\n\nconst init = (plugins: State['plugins']): State => {\n return {\n plugins,\n };\n};\n\nexport { PluginsInitializer };\n","import * as React from 'react';\n\nimport { Cog, PuzzlePiece, ShoppingCart } from '@strapi/icons';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { useSelector } from 'react-redux';\n\nimport { useAuth, AuthContextValue } from '../features/Auth';\nimport { StrapiAppContextValue, useStrapiApp } from '../features/StrapiApp';\nimport { selectAdminPermissions } from '../selectors';\n\n/* -------------------------------------------------------------------------------------------------\n * useMenu\n * -----------------------------------------------------------------------------------------------*/\n\ntype MenuItem = Omit<StrapiAppContextValue['menu'][number], 'Component'>;\n\nexport interface Menu {\n generalSectionLinks: MenuItem[];\n pluginsSectionLinks: MenuItem[];\n isLoading: boolean;\n}\n\nconst useMenu = (shouldUpdateStrapi: boolean) => {\n const checkUserHasPermissions = useAuth('useMenu', (state) => state.checkUserHasPermissions);\n const menu = useStrapiApp('useMenu', (state) => state.menu);\n const permissions = useSelector(selectAdminPermissions);\n const [menuWithUserPermissions, setMenuWithUserPermissions] = React.useState<Menu>({\n generalSectionLinks: [\n {\n icon: PuzzlePiece,\n intlLabel: {\n id: 'global.plugins',\n defaultMessage: 'Plugins',\n },\n to: '/list-plugins',\n permissions: permissions.marketplace?.main ?? [],\n },\n {\n icon: ShoppingCart,\n intlLabel: {\n id: 'global.marketplace',\n defaultMessage: 'Marketplace',\n },\n to: '/marketplace',\n permissions: permissions.marketplace?.main ?? [],\n },\n {\n icon: Cog,\n intlLabel: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n to: '/settings',\n // Permissions of this link are retrieved in the init phase\n // using the settings menu\n permissions: [],\n notificationsCount: 0,\n },\n ],\n pluginsSectionLinks: [],\n isLoading: true,\n });\n const generalSectionLinksRef = React.useRef(menuWithUserPermissions.generalSectionLinks);\n\n React.useEffect(() => {\n async function applyMenuPermissions() {\n const authorizedPluginSectionLinks = await getPluginSectionLinks(\n menu,\n checkUserHasPermissions\n );\n\n const authorizedGeneralSectionLinks = await getGeneralLinks(\n generalSectionLinksRef.current,\n shouldUpdateStrapi,\n checkUserHasPermissions\n );\n\n setMenuWithUserPermissions((state) => ({\n ...state,\n generalSectionLinks: authorizedGeneralSectionLinks,\n pluginsSectionLinks: authorizedPluginSectionLinks,\n isLoading: false,\n }));\n }\n\n applyMenuPermissions();\n }, [\n setMenuWithUserPermissions,\n generalSectionLinksRef,\n menu,\n permissions,\n shouldUpdateStrapi,\n checkUserHasPermissions,\n ]);\n\n return menuWithUserPermissions;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\nconst getGeneralLinks = async (\n generalSectionRawLinks: MenuItem[],\n shouldUpdateStrapi: boolean = false,\n checkUserHasPermissions: AuthContextValue['checkUserHasPermissions']\n) => {\n const generalSectionLinksPermissions = await Promise.all(\n generalSectionRawLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedGeneralSectionLinks = generalSectionRawLinks.filter(\n (_, index) => generalSectionLinksPermissions[index].length > 0\n );\n\n const settingsLinkIndex = authorizedGeneralSectionLinks.findIndex(\n (obj) => obj.to === '/settings'\n );\n\n if (settingsLinkIndex === -1) {\n return [];\n }\n\n const authorizedGeneralLinksClone = cloneDeep(authorizedGeneralSectionLinks);\n\n authorizedGeneralLinksClone[settingsLinkIndex].notificationsCount = shouldUpdateStrapi ? 1 : 0;\n\n return authorizedGeneralLinksClone;\n};\n\nconst getPluginSectionLinks = async (\n pluginsSectionRawLinks: MenuItem[],\n checkUserHasPermissions: AuthContextValue['checkUserHasPermissions']\n) => {\n const pluginSectionLinksPermissions = await Promise.all(\n pluginsSectionRawLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedPluginSectionLinks = pluginsSectionRawLinks.filter(\n (_, index) => pluginSectionLinksPermissions[index].length > 0\n );\n\n return authorizedPluginSectionLinks;\n};\n\nexport { useMenu };\n","import * as React from 'react';\n\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport packageJSON from '../../../package.json';\nimport { GuidedTourModal } from '../components/GuidedTour/Modal';\nimport { useGuidedTour } from '../components/GuidedTour/Provider';\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Onboarding } from '../components/Onboarding';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useOnce } from '../hooks/useOnce';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst strapiVersion = packageJSON.version;\n\nconst AdminLayout = () => {\n const setGuidedTourVisibility = useGuidedTour(\n 'AdminLayout',\n (state) => state.setGuidedTourVisibility\n );\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n throw new Error();\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n const userRoles = useAuth('AuthenticatedApp', (state) => state.user?.roles);\n\n React.useEffect(() => {\n if (userRoles) {\n const isUserSuperAdmin = userRoles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin && appInfo?.autoReload) {\n setGuidedTourVisibility(true);\n }\n }\n }, [userRoles, appInfo?.autoReload, setGuidedTourVisibility]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n const { showTutorials } = useConfiguration('Admin');\n\n /**\n * Make sure the event is only send once after accessing the admin panel\n * and not at runtime for example when regenerating the permissions with the ctb\n * or with i18n\n */\n useOnce(() => {\n trackUsage('didAccessAuthenticatedAdministration');\n });\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex alignItems=\"flex-start\">\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n />\n <Box flex={1}>\n <Outlet />\n <GuidedTourModal />\n {showTutorials && <Onboarding />}\n </Box>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["useGuidedTour","useIntl","useTracking","get","LAYOUT_DATA","jsx","Portal","FocusTrap","jsxs","Flex","IconButton","Cross","Box","Button","styled","Fragment","VerticalDivider","STATES","Typography","Number","LinkButton","NavLink","ArrowRight","useConfiguration","VisuallyHidden","RouterLink","Tooltip","AccessibleIcon","Badge","Menu","useNavigate","useAuth","Initials","SignOut","useLocation","getDisplayName","Divider","House","Feather","Lock","React","useAppInfo","Message","Question","PopoverPrimitives","Play","Icon","Book","PaperPlane","useStrapiApp","Page","produce","set","useSelector","selectAdminPermissions","PuzzlePiece","ShoppingCart","Cog","cloneDeep","useInformationQuery","hashAdminUserEmail","useOnce","AppInfoProvider","NpsSurvey","DndProvider","HTML5Backend","SkipToContent","Outlet","PrivateRoute","valid","lt"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CreateActionEE-9Z-woKCk.js","sources":["../../ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.tsx"],"sourcesContent":["import { Button, Flex, Tooltip } from '@strapi/design-system';\nimport { Mail, WarningCircle } from '@strapi/icons';\nimport isNil from 'lodash/isNil';\nimport { useIntl } from 'react-intl';\n\nimport { useLicenseLimits } from '../../../../../hooks/useLicenseLimits';\n\nimport type { CreateActionCEProps } from '../../../../../../../../admin/src/pages/Settings/pages/Users/components/CreateActionCE';\n\nexport const CreateActionEE = ({ onClick }: CreateActionCEProps) => {\n const { formatMessage } = useIntl();\n const { license, isError, isLoading } = useLicenseLimits();\n\n const { permittedSeats, shouldStopCreate } = license ?? {};\n\n if (isError || isLoading) {\n return null;\n }\n\n return (\n <Flex gap={2}>\n {!isNil(permittedSeats) && shouldStopCreate && (\n <Tooltip\n description={formatMessage({\n id: 'Settings.application.admin-seats.at-limit-tooltip',\n defaultMessage: 'At limit: add seats to invite more users',\n })}\n position=\"left\"\n >\n <WarningCircle width=\"1.4rem\" height=\"1.4rem\" fill=\"danger500\" />\n </Tooltip>\n )}\n <Button\n data-testid=\"create-user-button\"\n onClick={onClick}\n startIcon={<Mail />}\n size=\"S\"\n disabled={shouldStopCreate}\n >\n {formatMessage({\n id: 'Settings.permissions.users.create',\n defaultMessage: 'Invite new user',\n })}\n </Button>\n </Flex>\n );\n};\n"],"names":["useIntl","useLicenseLimits","jsxs","Flex","isNil","jsx","Tooltip","WarningCircle","Button","Mail"],"mappings":";;;;;;;;;;;;;;;AASO,MAAM,cAAiB,GAAA,CAAC,EAAE,OAAA,EAAmC,KAAA;AAClE,EAAM,MAAA,EAAE,aAAc,EAAA,GAAIA,iBAAQ,EAAA,CAAA;AAClC,EAAA,MAAM,EAAE,OAAA,EAAS,OAAS,EAAA,SAAA,KAAcC,iCAAiB,EAAA,CAAA;AAEzD,EAAA,MAAM,EAAE,cAAA,EAAgB,gBAAiB,EAAA,GAAI,WAAW,EAAC,CAAA;AAEzD,EAAA,IAAI,WAAW,SAAW,EAAA;AACxB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EACE,uBAAAC,eAAA,CAACC,iBAAK,EAAA,EAAA,GAAA,EAAK,CACR,EAAA,QAAA,EAAA;AAAA,IAAC,CAAAC,sBAAA,CAAM,cAAc,CAAA,IAAK,gBACzB,oBAAAC,cAAA;AAAA,MAACC,oBAAA;AAAA,MAAA;AAAA,QACC,aAAa,aAAc,CAAA;AAAA,UACzB,EAAI,EAAA,mDAAA;AAAA,UACJ,cAAgB,EAAA,0CAAA;AAAA,SACjB,CAAA;AAAA,QACD,QAAS,EAAA,MAAA;AAAA,QAET,yCAACC,mBAAc,EAAA,EAAA,KAAA,EAAM,UAAS,MAAO,EAAA,QAAA,EAAS,MAAK,WAAY,EAAA,CAAA;AAAA,OAAA;AAAA,KACjE;AAAA,oBAEFF,cAAA;AAAA,MAACG,mBAAA;AAAA,MAAA;AAAA,QACC,aAAY,EAAA,oBAAA;AAAA,QACZ,OAAA;AAAA,QACA,SAAA,iCAAYC,UAAK,EAAA,EAAA,CAAA;AAAA,QACjB,IAAK,EAAA,GAAA;AAAA,QACL,QAAU,EAAA,gBAAA;AAAA,QAET,QAAc,EAAA,aAAA,CAAA;AAAA,UACb,EAAI,EAAA,mCAAA;AAAA,UACJ,cAAgB,EAAA,iBAAA;AAAA,SACjB,CAAA;AAAA,OAAA;AAAA,KACH;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CreateActionEE-QiVnA7Rx.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.tsx"],"sourcesContent":["import { Button, Flex, Tooltip } from '@strapi/design-system';\nimport { Mail, WarningCircle } from '@strapi/icons';\nimport isNil from 'lodash/isNil';\nimport { useIntl } from 'react-intl';\n\nimport { useLicenseLimits } from '../../../../../hooks/useLicenseLimits';\n\nimport type { CreateActionCEProps } from '../../../../../../../../admin/src/pages/Settings/pages/Users/components/CreateActionCE';\n\nexport const CreateActionEE = ({ onClick }: CreateActionCEProps) => {\n const { formatMessage } = useIntl();\n const { license, isError, isLoading } = useLicenseLimits();\n\n const { permittedSeats, shouldStopCreate } = license ?? {};\n\n if (isError || isLoading) {\n return null;\n }\n\n return (\n <Flex gap={2}>\n {!isNil(permittedSeats) && shouldStopCreate && (\n <Tooltip\n description={formatMessage({\n id: 'Settings.application.admin-seats.at-limit-tooltip',\n defaultMessage: 'At limit: add seats to invite more users',\n })}\n position=\"left\"\n >\n <WarningCircle width=\"1.4rem\" height=\"1.4rem\" fill=\"danger500\" />\n </Tooltip>\n )}\n <Button\n data-testid=\"create-user-button\"\n onClick={onClick}\n startIcon={<Mail />}\n size=\"S\"\n disabled={shouldStopCreate}\n >\n {formatMessage({\n id: 'Settings.permissions.users.create',\n defaultMessage: 'Invite new user',\n })}\n </Button>\n </Flex>\n );\n};\n"],"names":[],"mappings":";;;;;;;AASO,MAAM,cAAiB,GAAA,CAAC,EAAE,OAAA,EAAmC,KAAA;AAClE,EAAM,MAAA,EAAE,aAAc,EAAA,GAAI,OAAQ,EAAA,CAAA;AAClC,EAAA,MAAM,EAAE,OAAA,EAAS,OAAS,EAAA,SAAA,KAAc,gBAAiB,EAAA,CAAA;AAEzD,EAAA,MAAM,EAAE,cAAA,EAAgB,gBAAiB,EAAA,GAAI,WAAW,EAAC,CAAA;AAEzD,EAAA,IAAI,WAAW,SAAW,EAAA;AACxB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EACE,uBAAA,IAAA,CAAC,IAAK,EAAA,EAAA,GAAA,EAAK,CACR,EAAA,QAAA,EAAA;AAAA,IAAC,CAAA,KAAA,CAAM,cAAc,CAAA,IAAK,gBACzB,oBAAA,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,aAAa,aAAc,CAAA;AAAA,UACzB,EAAI,EAAA,mDAAA;AAAA,UACJ,cAAgB,EAAA,0CAAA;AAAA,SACjB,CAAA;AAAA,QACD,QAAS,EAAA,MAAA;AAAA,QAET,8BAAC,aAAc,EAAA,EAAA,KAAA,EAAM,UAAS,MAAO,EAAA,QAAA,EAAS,MAAK,WAAY,EAAA,CAAA;AAAA,OAAA;AAAA,KACjE;AAAA,oBAEF,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,aAAY,EAAA,oBAAA;AAAA,QACZ,OAAA;AAAA,QACA,SAAA,sBAAY,IAAK,EAAA,EAAA,CAAA;AAAA,QACjB,IAAK,EAAA,GAAA;AAAA,QACL,QAAU,EAAA,gBAAA;AAAA,QAET,QAAc,EAAA,aAAA,CAAA;AAAA,UACb,EAAI,EAAA,mCAAA;AAAA,UACJ,cAAgB,EAAA,iBAAA;AAAA,SACjB,CAAA;AAAA,OAAA;AAAA,KACH;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"EditViewPage-ZTHin7cu.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/CollabsableContentType.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, GridItem, 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 gap={5}>\n <GridItem key=\"name\" col={6} xs={12}>\n <TokenName\n error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"description\" col={6} xs={12}>\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem 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 </GridItem>\n\n <GridItem 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 </GridItem>\n </Grid>\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 { Flex, GridItem, 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 <GridItem\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 </GridItem>\n );\n};\n","import * as React from 'react';\n\nimport {\n Accordion,\n AccordionContent,\n AccordionToggle,\n Box,\n BoxComponent,\n Checkbox,\n Flex,\n Grid,\n GridItem,\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 svg {\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 svg {\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 onExpanded?: (orderNumber: number) => void;\n indexExpandendCollapsedContent: number | null;\n}\n\nexport const CollapsableContentType = ({\n controllers = [],\n label,\n orderNumber = 0,\n disabled = false,\n onExpanded = () => null,\n indexExpandendCollapsedContent = null,\n}: CollapsableContentTypeProps) => {\n const {\n value: { onChangeSelectAll, onChange, selectedActions, setSelectedAction, selectedAction },\n } = useApiTokenPermissions();\n const [expanded, setExpanded] = React.useState(false);\n const { formatMessage } = useIntl();\n\n const handleExpandedAccordion = () => {\n setExpanded((s) => !s);\n onExpanded(orderNumber);\n };\n\n React.useEffect(() => {\n if (\n indexExpandendCollapsedContent !== null &&\n indexExpandendCollapsedContent !== orderNumber &&\n expanded\n ) {\n setExpanded(false);\n }\n }, [indexExpandendCollapsedContent, orderNumber, expanded]);\n\n const isActionSelected = (actionId: string) => actionId === selectedAction;\n\n return (\n <Accordion\n expanded={expanded}\n onToggle={handleExpandedAccordion}\n variant={orderNumber % 2 ? 'primary' : 'secondary'}\n >\n <AccordionToggle title={capitalize(label)} />\n <AccordionContent>\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 value={allActionsSelected}\n indeterminate={!allActionsSelected && someActionsSelected}\n onValueChange={() => {\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 gap={4} padding={4}>\n {controller?.actions &&\n controller?.actions.map((action) => {\n return (\n <GridItem col={6} key={action.actionId}>\n <CheckboxWrapper\n $isActive={isActionSelected(action.actionId)}\n padding={2}\n hasRadius\n >\n <Checkbox\n value={selectedActions.includes(action.actionId)}\n name={action.actionId}\n onValueChange={() => {\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 />\n </button>\n </CheckboxWrapper>\n </GridItem>\n );\n })}\n </Grid>\n </Box>\n );\n })}\n </AccordionContent>\n </Accordion>\n );\n};\n","import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\nimport { CollapsableContentType } from './CollabsableContentType';\n\ninterface ContentTypesSectionProps {\n section: ContentApiPermission[] | null;\n}\n\nexport const ContentTypesSection = ({ section = null, ...props }: ContentTypesSectionProps) => {\n const [indexExpandedCollpsedContent, setIndexExpandedCollpsedContent] = React.useState<\n null | number\n >(null);\n const handleExpandedCollpsedContentIndex = (index: number) =>\n setIndexExpandedCollpsedContent(index);\n\n return (\n <Box padding={4} background=\"neutral0\">\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 indexExpandendCollapsedContent={indexExpandedCollpsedContent}\n onExpanded={handleExpandedCollpsedContentIndex}\n {...props}\n />\n ))}\n </Box>\n );\n};\n","import { Flex, Grid, GridItem, 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 gap={0} shadow=\"filterShadow\" hasRadius background=\"neutral0\">\n <GridItem 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 </GridItem>\n <ActionBoundRoutes />\n </Grid>\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","GridItem","TokenName","TokenDescription","LifeSpanInput","TokenTypeSelect","styled","tail","css","React","Accordion","AccordionToggle","capitalize","AccordionContent","Checkbox","Cog","yup","translatedErrors","produce","pull","useNotification","useLocation","useTypedSelector","state","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":"EditViewPage-x06h850j.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/CollabsableContentType.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, GridItem, 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 gap={5}>\n <GridItem key=\"name\" col={6} xs={12}>\n <TokenName\n error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"description\" col={6} xs={12}>\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem 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 </GridItem>\n\n <GridItem 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 </GridItem>\n </Grid>\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 { Flex, GridItem, 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 <GridItem\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 </GridItem>\n );\n};\n","import * as React from 'react';\n\nimport {\n Accordion,\n AccordionContent,\n AccordionToggle,\n Box,\n BoxComponent,\n Checkbox,\n Flex,\n Grid,\n GridItem,\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 svg {\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 svg {\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 onExpanded?: (orderNumber: number) => void;\n indexExpandendCollapsedContent: number | null;\n}\n\nexport const CollapsableContentType = ({\n controllers = [],\n label,\n orderNumber = 0,\n disabled = false,\n onExpanded = () => null,\n indexExpandendCollapsedContent = null,\n}: CollapsableContentTypeProps) => {\n const {\n value: { onChangeSelectAll, onChange, selectedActions, setSelectedAction, selectedAction },\n } = useApiTokenPermissions();\n const [expanded, setExpanded] = React.useState(false);\n const { formatMessage } = useIntl();\n\n const handleExpandedAccordion = () => {\n setExpanded((s) => !s);\n onExpanded(orderNumber);\n };\n\n React.useEffect(() => {\n if (\n indexExpandendCollapsedContent !== null &&\n indexExpandendCollapsedContent !== orderNumber &&\n expanded\n ) {\n setExpanded(false);\n }\n }, [indexExpandendCollapsedContent, orderNumber, expanded]);\n\n const isActionSelected = (actionId: string) => actionId === selectedAction;\n\n return (\n <Accordion\n expanded={expanded}\n onToggle={handleExpandedAccordion}\n variant={orderNumber % 2 ? 'primary' : 'secondary'}\n >\n <AccordionToggle title={capitalize(label)} />\n <AccordionContent>\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 value={allActionsSelected}\n indeterminate={!allActionsSelected && someActionsSelected}\n onValueChange={() => {\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 gap={4} padding={4}>\n {controller?.actions &&\n controller?.actions.map((action) => {\n return (\n <GridItem col={6} key={action.actionId}>\n <CheckboxWrapper\n $isActive={isActionSelected(action.actionId)}\n padding={2}\n hasRadius\n >\n <Checkbox\n value={selectedActions.includes(action.actionId)}\n name={action.actionId}\n onValueChange={() => {\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 />\n </button>\n </CheckboxWrapper>\n </GridItem>\n );\n })}\n </Grid>\n </Box>\n );\n })}\n </AccordionContent>\n </Accordion>\n );\n};\n","import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\nimport { CollapsableContentType } from './CollabsableContentType';\n\ninterface ContentTypesSectionProps {\n section: ContentApiPermission[] | null;\n}\n\nexport const ContentTypesSection = ({ section = null, ...props }: ContentTypesSectionProps) => {\n const [indexExpandedCollpsedContent, setIndexExpandedCollpsedContent] = React.useState<\n null | number\n >(null);\n const handleExpandedCollpsedContentIndex = (index: number) =>\n setIndexExpandedCollpsedContent(index);\n\n return (\n <Box padding={4} background=\"neutral0\">\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 indexExpandendCollapsedContent={indexExpandedCollpsedContent}\n onExpanded={handleExpandedCollpsedContentIndex}\n {...props}\n />\n ))}\n </Box>\n );\n};\n","import { Flex, Grid, GridItem, 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 gap={0} shadow=\"filterShadow\" hasRadius background=\"neutral0\">\n <GridItem 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 </GridItem>\n <ActionBoundRoutes />\n </Grid>\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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"}