@strapi/admin 4.24.4 → 4.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/dist/_chunks/{AdminSeatInfo-U_XS6M6s.mjs → AdminSeatInfo-8fY_jz9W.mjs} +3 -3
  2. package/dist/_chunks/{AdminSeatInfo-U_XS6M6s.mjs.map → AdminSeatInfo-8fY_jz9W.mjs.map} +1 -1
  3. package/dist/_chunks/{AdminSeatInfo-3kscEri6.js → AdminSeatInfo-qpztJtaj.js} +3 -3
  4. package/dist/_chunks/{AdminSeatInfo-3kscEri6.js.map → AdminSeatInfo-qpztJtaj.js.map} +1 -1
  5. package/dist/_chunks/{AuthenticatedApp-lxbOleXq.js → AuthenticatedApp-GwqLAmWf.js} +40 -23
  6. package/dist/_chunks/AuthenticatedApp-GwqLAmWf.js.map +1 -0
  7. package/dist/_chunks/{AuthenticatedApp-0lbYYEL6.mjs → AuthenticatedApp-uHd-MPEB.mjs} +42 -25
  8. package/dist/_chunks/AuthenticatedApp-uHd-MPEB.mjs.map +1 -0
  9. package/dist/_chunks/{CreateActionEE-wQpjzlQY.mjs → CreateActionEE-WP9T6D2U.mjs} +2 -2
  10. package/dist/_chunks/{CreateActionEE-wQpjzlQY.mjs.map → CreateActionEE-WP9T6D2U.mjs.map} +1 -1
  11. package/dist/_chunks/{CreateActionEE-4Ia1GtCm.js → CreateActionEE-pG9tIhQb.js} +2 -2
  12. package/dist/_chunks/{CreateActionEE-4Ia1GtCm.js.map → CreateActionEE-pG9tIhQb.js.map} +1 -1
  13. package/dist/_chunks/{CreatePage-ZRESExEH.mjs → CreatePage-BPiHGUEm.mjs} +8 -8
  14. package/dist/_chunks/{CreatePage-ZRESExEH.mjs.map → CreatePage-BPiHGUEm.mjs.map} +1 -1
  15. package/dist/_chunks/{CreatePage-ss2dbhLF.js → CreatePage-EFAWmPTp.js} +6 -6
  16. package/dist/_chunks/{CreatePage-ss2dbhLF.js.map → CreatePage-EFAWmPTp.js.map} +1 -1
  17. package/dist/_chunks/{CreatePage-KcWY_3Ok.mjs → CreatePage-jYqwUlP4.mjs} +3 -3
  18. package/dist/_chunks/{CreatePage-KcWY_3Ok.mjs.map → CreatePage-jYqwUlP4.mjs.map} +1 -1
  19. package/dist/_chunks/{CreatePage-D88IVvvF.js → CreatePage-kAcK42bK.js} +8 -8
  20. package/dist/_chunks/{CreatePage-D88IVvvF.js.map → CreatePage-kAcK42bK.js.map} +1 -1
  21. package/dist/_chunks/{CreatePage-I04A9LP8.js → CreatePage-uSbsMOlx.js} +3 -3
  22. package/dist/_chunks/{CreatePage-I04A9LP8.js.map → CreatePage-uSbsMOlx.js.map} +1 -1
  23. package/dist/_chunks/{CreatePage-z4ZBkS23.mjs → CreatePage-ycE9avz8.mjs} +6 -6
  24. package/dist/_chunks/{CreatePage-z4ZBkS23.mjs.map → CreatePage-ycE9avz8.mjs.map} +1 -1
  25. package/dist/_chunks/{CreateView-okjLiPdb.mjs → CreateView-1Fty2wTv.mjs} +6 -6
  26. package/dist/_chunks/{CreateView-okjLiPdb.mjs.map → CreateView-1Fty2wTv.mjs.map} +1 -1
  27. package/dist/_chunks/{CreateView-6nLdBBKy.js → CreateView-Jx2ig5cK.js} +6 -6
  28. package/dist/_chunks/{CreateView-6nLdBBKy.js.map → CreateView-Jx2ig5cK.js.map} +1 -1
  29. package/dist/_chunks/{CreateView-jA6jhg3-.js → CreateView-Nq5EH2Un.js} +6 -6
  30. package/dist/_chunks/{CreateView-jA6jhg3-.js.map → CreateView-Nq5EH2Un.js.map} +1 -1
  31. package/dist/_chunks/{CreateView-jwhpW8_9.mjs → CreateView-ZCk5E7rv.mjs} +6 -6
  32. package/dist/_chunks/{CreateView-jwhpW8_9.mjs.map → CreateView-ZCk5E7rv.mjs.map} +1 -1
  33. package/dist/_chunks/{EditPage-NJUXeBbY.js → EditPage-1erhUV2a.js} +6 -6
  34. package/dist/_chunks/{EditPage-NJUXeBbY.js.map → EditPage-1erhUV2a.js.map} +1 -1
  35. package/dist/_chunks/{EditPage-Za05JaXt.mjs → EditPage-SMjmVuCg.mjs} +6 -6
  36. package/dist/_chunks/{EditPage-Za05JaXt.mjs.map → EditPage-SMjmVuCg.mjs.map} +1 -1
  37. package/dist/_chunks/{EditPage-YcUodPsx.js → EditPage-TZkt7oiJ.js} +6 -6
  38. package/dist/_chunks/{EditPage-YcUodPsx.js.map → EditPage-TZkt7oiJ.js.map} +1 -1
  39. package/dist/_chunks/{EditPage-TVheouo9.js → EditPage-T_V04Xj-.js} +9 -9
  40. package/dist/_chunks/{EditPage-TVheouo9.js.map → EditPage-T_V04Xj-.js.map} +1 -1
  41. package/dist/_chunks/{EditPage-JONsb219.mjs → EditPage-fpjgwn7T.mjs} +9 -9
  42. package/dist/_chunks/{EditPage-JONsb219.mjs.map → EditPage-fpjgwn7T.mjs.map} +1 -1
  43. package/dist/_chunks/{EditPage-B1SVKQb0.js → EditPage-klamWo6h.js} +4 -4
  44. package/dist/_chunks/{EditPage-B1SVKQb0.js.map → EditPage-klamWo6h.js.map} +1 -1
  45. package/dist/_chunks/{EditPage-H1GaqsPD.mjs → EditPage-o5z_2B0F.mjs} +4 -4
  46. package/dist/_chunks/{EditPage-H1GaqsPD.mjs.map → EditPage-o5z_2B0F.mjs.map} +1 -1
  47. package/dist/_chunks/{EditPage-QoGStdUX.mjs → EditPage-qDZC_xqv.mjs} +6 -6
  48. package/dist/_chunks/{EditPage-QoGStdUX.mjs.map → EditPage-qDZC_xqv.mjs.map} +1 -1
  49. package/dist/_chunks/{EditView-nVpR9Bvw.js → EditView-S9A0iaIp.js} +4 -4
  50. package/dist/_chunks/{EditView-nVpR9Bvw.js.map → EditView-S9A0iaIp.js.map} +1 -1
  51. package/dist/_chunks/{EditView-tb5yJvsj.mjs → EditView-lny0iCX4.mjs} +4 -4
  52. package/dist/_chunks/{EditView-tb5yJvsj.mjs.map → EditView-lny0iCX4.mjs.map} +1 -1
  53. package/dist/_chunks/{EditViewPage-VP3QMQWr.mjs → EditViewPage-8D5Y4h70.mjs} +4 -4
  54. package/dist/_chunks/{EditViewPage-VP3QMQWr.mjs.map → EditViewPage-8D5Y4h70.mjs.map} +1 -1
  55. package/dist/_chunks/{EditViewPage-vpD6HRFw.js → EditViewPage-Kogv4OZT.js} +4 -4
  56. package/dist/_chunks/{EditViewPage-vpD6HRFw.js.map → EditViewPage-Kogv4OZT.js.map} +1 -1
  57. package/dist/_chunks/{EventsTable-R1dGc0f2.js → EventsTable-6ux_fTpD.js} +6 -6
  58. package/dist/_chunks/{EventsTable-R1dGc0f2.js.map → EventsTable-6ux_fTpD.js.map} +1 -1
  59. package/dist/_chunks/{EventsTable-o63exNQr.mjs → EventsTable-Q06Y91lz.mjs} +6 -6
  60. package/dist/_chunks/{EventsTable-o63exNQr.mjs.map → EventsTable-Q06Y91lz.mjs.map} +1 -1
  61. package/dist/_chunks/{HomePage-yjafRxVs.js → HomePage--9Rzt4Bs.js} +6 -6
  62. package/dist/_chunks/{HomePage-yjafRxVs.js.map → HomePage--9Rzt4Bs.js.map} +1 -1
  63. package/dist/_chunks/{HomePage-7YZnnhqh.mjs → HomePage-0GKWBVtu.mjs} +5 -5
  64. package/dist/_chunks/{HomePage-7YZnnhqh.mjs.map → HomePage-0GKWBVtu.mjs.map} +1 -1
  65. package/dist/_chunks/{HomePage-QPkJoZ4c.js → HomePage-_j7brLbF.js} +5 -5
  66. package/dist/_chunks/{HomePage-QPkJoZ4c.js.map → HomePage-_j7brLbF.js.map} +1 -1
  67. package/dist/_chunks/{HomePage-jNlAA81t.mjs → HomePage-tcGsmU4V.mjs} +6 -6
  68. package/dist/_chunks/{HomePage-jNlAA81t.mjs.map → HomePage-tcGsmU4V.mjs.map} +1 -1
  69. package/dist/_chunks/{InformationBoxEE-3LIRn7dg.js → InformationBoxEE-aVepYyiD.js} +3 -3
  70. package/dist/_chunks/{InformationBoxEE-3LIRn7dg.js.map → InformationBoxEE-aVepYyiD.js.map} +1 -1
  71. package/dist/_chunks/{InformationBoxEE-koyu3Wew.mjs → InformationBoxEE-jvXxl_nD.mjs} +3 -3
  72. package/dist/_chunks/{InformationBoxEE-koyu3Wew.mjs.map → InformationBoxEE-jvXxl_nD.mjs.map} +1 -1
  73. package/dist/_chunks/{InstalledPluginsPage-p1dCLD-H.mjs → InstalledPluginsPage-VOPjuC3e.mjs} +3 -3
  74. package/dist/_chunks/{InstalledPluginsPage-p1dCLD-H.mjs.map → InstalledPluginsPage-VOPjuC3e.mjs.map} +1 -1
  75. package/dist/_chunks/{InstalledPluginsPage-DIzBnpfK.js → InstalledPluginsPage-pgEs5qgT.js} +3 -3
  76. package/dist/_chunks/{InstalledPluginsPage-DIzBnpfK.js.map → InstalledPluginsPage-pgEs5qgT.js.map} +1 -1
  77. package/dist/_chunks/{Layout-G1k4LM-Y.js → Layout-S4tn8vwZ.js} +2 -2
  78. package/dist/_chunks/{Layout-G1k4LM-Y.js.map → Layout-S4tn8vwZ.js.map} +1 -1
  79. package/dist/_chunks/{Layout-n4rT_uDB.mjs → Layout-k-VdyhDA.mjs} +2 -2
  80. package/dist/_chunks/{Layout-n4rT_uDB.mjs.map → Layout-k-VdyhDA.mjs.map} +1 -1
  81. package/dist/_chunks/{ListPage-qJqkmYmG.js → ListPage-6Zx3R5DW.js} +4 -4
  82. package/dist/_chunks/{ListPage-qJqkmYmG.js.map → ListPage-6Zx3R5DW.js.map} +1 -1
  83. package/dist/_chunks/{ListPage-WwmsejNN.mjs → ListPage-AjR55r98.mjs} +4 -4
  84. package/dist/_chunks/{ListPage-WwmsejNN.mjs.map → ListPage-AjR55r98.mjs.map} +1 -1
  85. package/dist/_chunks/{ListPage-8w6D-jVh.js → ListPage-FSdgF7AW.js} +3 -3
  86. package/dist/_chunks/{ListPage-8w6D-jVh.js.map → ListPage-FSdgF7AW.js.map} +1 -1
  87. package/dist/_chunks/{ListPage-tqVIW5k4.js → ListPage-IxKRGRLp.js} +8 -8
  88. package/dist/_chunks/{ListPage-tqVIW5k4.js.map → ListPage-IxKRGRLp.js.map} +1 -1
  89. package/dist/_chunks/{ListPage-Qz1QBu1U.mjs → ListPage-Yc8zcacp.mjs} +8 -8
  90. package/dist/_chunks/{ListPage-Qz1QBu1U.mjs.map → ListPage-Yc8zcacp.mjs.map} +1 -1
  91. package/dist/_chunks/{ListPage-cVk3Bc9t.js → ListPage-ZfPNukhQ.js} +7 -7
  92. package/dist/_chunks/{ListPage-cVk3Bc9t.js.map → ListPage-ZfPNukhQ.js.map} +1 -1
  93. package/dist/_chunks/{ListPage-F2abqUc7.js → ListPage-aGSGBu2G.js} +6 -6
  94. package/dist/_chunks/{ListPage-F2abqUc7.js.map → ListPage-aGSGBu2G.js.map} +1 -1
  95. package/dist/_chunks/{ListPage-vOdTh503.mjs → ListPage-gqeEyGWN.mjs} +7 -7
  96. package/dist/_chunks/{ListPage-vOdTh503.mjs.map → ListPage-gqeEyGWN.mjs.map} +1 -1
  97. package/dist/_chunks/{ListPage-GvJnM1rf.js → ListPage-ieSYo23R.js} +2 -2
  98. package/dist/_chunks/{ListPage-GvJnM1rf.js.map → ListPage-ieSYo23R.js.map} +1 -1
  99. package/dist/_chunks/{ListPage-Whvg01F1.mjs → ListPage-pmC7kZ5-.mjs} +6 -6
  100. package/dist/_chunks/{ListPage-Whvg01F1.mjs.map → ListPage-pmC7kZ5-.mjs.map} +1 -1
  101. package/dist/_chunks/{ListPage-omWNFry9.mjs → ListPage-q2-Ceto8.mjs} +2 -2
  102. package/dist/_chunks/{ListPage-omWNFry9.mjs.map → ListPage-q2-Ceto8.mjs.map} +1 -1
  103. package/dist/_chunks/{ListPage-6RZ9gRu-.mjs → ListPage-rKtl7kt1.mjs} +3 -3
  104. package/dist/_chunks/{ListPage-6RZ9gRu-.mjs.map → ListPage-rKtl7kt1.mjs.map} +1 -1
  105. package/dist/_chunks/{ListView-KfAA0iIH.mjs → ListView-27V4Lfa-.mjs} +3 -3
  106. package/dist/_chunks/{ListView-KfAA0iIH.mjs.map → ListView-27V4Lfa-.mjs.map} +1 -1
  107. package/dist/_chunks/{ListView-ZlcQHvJ3.js → ListView-58MuIhqN.js} +3 -3
  108. package/dist/_chunks/{ListView-ZlcQHvJ3.js.map → ListView-58MuIhqN.js.map} +1 -1
  109. package/dist/_chunks/{ListView-1WKGsXzK.js → ListView-bfLqvFXh.js} +3 -3
  110. package/dist/_chunks/{ListView-1WKGsXzK.js.map → ListView-bfLqvFXh.js.map} +1 -1
  111. package/dist/_chunks/{ListView-GBX5d49E.mjs → ListView-kFCvhxUp.mjs} +3 -3
  112. package/dist/_chunks/{ListView-GBX5d49E.mjs.map → ListView-kFCvhxUp.mjs.map} +1 -1
  113. package/dist/_chunks/{Login-Z-obAOV_.js → Login-FSXeOxO7.js} +2 -2
  114. package/dist/_chunks/{Login-Z-obAOV_.js.map → Login-FSXeOxO7.js.map} +1 -1
  115. package/dist/_chunks/{Login-QiGzJtzk.mjs → Login-z8P5prGJ.mjs} +2 -2
  116. package/dist/_chunks/{Login-QiGzJtzk.mjs.map → Login-z8P5prGJ.mjs.map} +1 -1
  117. package/dist/_chunks/{MagicLinkEE-95iDjl7f.js → MagicLinkEE-hSdeZchp.js} +4 -4
  118. package/dist/_chunks/{MagicLinkEE-95iDjl7f.js.map → MagicLinkEE-hSdeZchp.js.map} +1 -1
  119. package/dist/_chunks/{MagicLinkEE-4ZMNpiis.mjs → MagicLinkEE-x_D9UeiC.mjs} +4 -4
  120. package/dist/_chunks/{MagicLinkEE-4ZMNpiis.mjs.map → MagicLinkEE-x_D9UeiC.mjs.map} +1 -1
  121. package/dist/_chunks/{MarketplacePage-vEeLVnHa.js → MarketplacePage-BHCUa97F.js} +3 -3
  122. package/dist/_chunks/{MarketplacePage-vEeLVnHa.js.map → MarketplacePage-BHCUa97F.js.map} +1 -1
  123. package/dist/_chunks/{MarketplacePage-fxKPePNY.mjs → MarketplacePage-p49o3c4x.mjs} +3 -3
  124. package/dist/_chunks/{MarketplacePage-fxKPePNY.mjs.map → MarketplacePage-p49o3c4x.mjs.map} +1 -1
  125. package/dist/_chunks/{Permissions-n03gxmL_.mjs → Permissions-wG2AsKlz.mjs} +2 -2
  126. package/dist/_chunks/{Permissions-n03gxmL_.mjs.map → Permissions-wG2AsKlz.mjs.map} +1 -1
  127. package/dist/_chunks/{Permissions-AbrBsIIE.js → Permissions-wh1QXZKR.js} +2 -2
  128. package/dist/_chunks/{Permissions-AbrBsIIE.js.map → Permissions-wh1QXZKR.js.map} +1 -1
  129. package/dist/_chunks/{ProfilePage-6GDtE_5t.js → ProfilePage-9ldr9VQS.js} +3 -3
  130. package/dist/_chunks/{ProfilePage-6GDtE_5t.js.map → ProfilePage-9ldr9VQS.js.map} +1 -1
  131. package/dist/_chunks/{ProfilePage--TajCvU5.mjs → ProfilePage-Btt1kCii.mjs} +3 -3
  132. package/dist/_chunks/{ProfilePage--TajCvU5.mjs.map → ProfilePage-Btt1kCii.mjs.map} +1 -1
  133. package/dist/_chunks/{ReviewWorkflowsColumn-VVXE2ap7.js → ReviewWorkflowsColumn-LO8IPdwI.js} +2 -2
  134. package/dist/_chunks/{ReviewWorkflowsColumn-VVXE2ap7.js.map → ReviewWorkflowsColumn-LO8IPdwI.js.map} +1 -1
  135. package/dist/_chunks/{ReviewWorkflowsColumn-A2vgIO7Z.mjs → ReviewWorkflowsColumn-PaGlHp0O.mjs} +2 -2
  136. package/dist/_chunks/{ReviewWorkflowsColumn-A2vgIO7Z.mjs.map → ReviewWorkflowsColumn-PaGlHp0O.mjs.map} +1 -1
  137. package/dist/_chunks/{SelectRoles-oqWbpRZY.js → SelectRoles-nYuGXi2w.js} +3 -3
  138. package/dist/_chunks/{SelectRoles-oqWbpRZY.js.map → SelectRoles-nYuGXi2w.js.map} +1 -1
  139. package/dist/_chunks/{SelectRoles-zpbOY00F.mjs → SelectRoles-t6U3MuLd.mjs} +3 -3
  140. package/dist/_chunks/{SelectRoles-zpbOY00F.mjs.map → SelectRoles-t6U3MuLd.mjs.map} +1 -1
  141. package/dist/_chunks/{SettingsPage-7hH4YDJD.mjs → SettingsPage-203QQP4D.mjs} +28 -23
  142. package/dist/_chunks/SettingsPage-203QQP4D.mjs.map +1 -0
  143. package/dist/_chunks/{SettingsPage-BLZhhOZm.js → SettingsPage-QVwnqX3X.js} +27 -22
  144. package/dist/_chunks/SettingsPage-QVwnqX3X.js.map +1 -0
  145. package/dist/_chunks/{SingleSignOnPage-2JhF9yLD.mjs → SingleSignOnPage-eUBu7WdW.mjs} +3 -3
  146. package/dist/_chunks/{SingleSignOnPage-2JhF9yLD.mjs.map → SingleSignOnPage-eUBu7WdW.mjs.map} +1 -1
  147. package/dist/_chunks/{SingleSignOnPage-zySVgs7l.js → SingleSignOnPage-gWSaa6Ic.js} +3 -3
  148. package/dist/_chunks/{SingleSignOnPage-zySVgs7l.js.map → SingleSignOnPage-gWSaa6Ic.js.map} +1 -1
  149. package/dist/_chunks/{TokenTypeSelect-avtVlM4U.mjs → TokenTypeSelect-d7r9RfHH.mjs} +2 -2
  150. package/dist/_chunks/{TokenTypeSelect-avtVlM4U.mjs.map → TokenTypeSelect-d7r9RfHH.mjs.map} +1 -1
  151. package/dist/_chunks/{TokenTypeSelect-yKyBg6et.js → TokenTypeSelect-nQWw1Kue.js} +2 -2
  152. package/dist/_chunks/{TokenTypeSelect-yKyBg6et.js.map → TokenTypeSelect-nQWw1Kue.js.map} +1 -1
  153. package/dist/_chunks/{apiTokens-Fz46KjUa.js → apiTokens--9B2ADks.js} +2 -2
  154. package/dist/_chunks/{apiTokens-Fz46KjUa.js.map → apiTokens--9B2ADks.js.map} +1 -1
  155. package/dist/_chunks/{apiTokens-_uEFOSxo.mjs → apiTokens-ieIZrY-I.mjs} +2 -2
  156. package/dist/_chunks/{apiTokens-_uEFOSxo.mjs.map → apiTokens-ieIZrY-I.mjs.map} +1 -1
  157. package/dist/_chunks/{constants-IK-0WZ7u.mjs → constants-0MWiAEHa.mjs} +2 -2
  158. package/dist/_chunks/{constants-IK-0WZ7u.mjs.map → constants-0MWiAEHa.mjs.map} +1 -1
  159. package/dist/_chunks/{constants-34QE-ssT.js → constants-GZfTWpMb.js} +6 -6
  160. package/dist/_chunks/{constants-34QE-ssT.js.map → constants-GZfTWpMb.js.map} +1 -1
  161. package/dist/_chunks/{constants-muu7Jvr4.mjs → constants-M-hxyu7y.mjs} +4 -4
  162. package/dist/_chunks/{constants-muu7Jvr4.mjs.map → constants-M-hxyu7y.mjs.map} +1 -1
  163. package/dist/_chunks/{constants-n13NeBdx.js → constants-QSWHHNDF.js} +2 -2
  164. package/dist/_chunks/{constants-n13NeBdx.js.map → constants-QSWHHNDF.js.map} +1 -1
  165. package/dist/_chunks/{constants-kqVTJhs8.js → constants-V4u3m4GP.js} +2 -2
  166. package/dist/_chunks/{constants-kqVTJhs8.js.map → constants-V4u3m4GP.js.map} +1 -1
  167. package/dist/_chunks/{constants--_M6UoZ4.mjs → constants-bvG_vqvv.mjs} +6 -6
  168. package/dist/_chunks/{constants--_M6UoZ4.mjs.map → constants-bvG_vqvv.mjs.map} +1 -1
  169. package/dist/_chunks/{constants-kwbjUNGi.js → constants-ns5EB6W6.js} +4 -4
  170. package/dist/_chunks/{constants-kwbjUNGi.js.map → constants-ns5EB6W6.js.map} +1 -1
  171. package/dist/_chunks/{constants-tICE3HHu.mjs → constants-z24OMzMK.mjs} +2 -2
  172. package/dist/_chunks/{constants-tICE3HHu.mjs.map → constants-z24OMzMK.mjs.map} +1 -1
  173. package/dist/_chunks/{index-FHaNkHzZ.js → index-VVFXvHui.js} +13 -10
  174. package/dist/_chunks/index-VVFXvHui.js.map +1 -0
  175. package/dist/_chunks/{index-8K1fBeVH.mjs → index-dMS-26Ft.mjs} +13 -10
  176. package/dist/_chunks/index-dMS-26Ft.mjs.map +1 -0
  177. package/dist/_chunks/{reviewWorkflows-WCYQPbYX.mjs → reviewWorkflows-DZodpwgN.mjs} +2 -2
  178. package/dist/_chunks/{reviewWorkflows-WCYQPbYX.mjs.map → reviewWorkflows-DZodpwgN.mjs.map} +1 -1
  179. package/dist/_chunks/{reviewWorkflows-4eBk1YNs.js → reviewWorkflows-OjxtR4Ir.js} +2 -2
  180. package/dist/_chunks/{reviewWorkflows-4eBk1YNs.js.map → reviewWorkflows-OjxtR4Ir.js.map} +1 -1
  181. package/dist/_chunks/{transferTokens-g5OOUo9l.js → transferTokens-jGPDAh0Z.js} +2 -2
  182. package/dist/_chunks/{transferTokens-g5OOUo9l.js.map → transferTokens-jGPDAh0Z.js.map} +1 -1
  183. package/dist/_chunks/{transferTokens-S2XiLG7D.mjs → transferTokens-vSrhgUOJ.mjs} +2 -2
  184. package/dist/_chunks/{transferTokens-S2XiLG7D.mjs.map → transferTokens-vSrhgUOJ.mjs.map} +1 -1
  185. package/dist/_chunks/{useAdminRoles-nq87-w6F.js → useAdminRoles-JpzXMwG-.js} +2 -2
  186. package/dist/_chunks/{useAdminRoles-nq87-w6F.js.map → useAdminRoles-JpzXMwG-.js.map} +1 -1
  187. package/dist/_chunks/{useAdminRoles-LgKfXXz2.mjs → useAdminRoles-TJePFZ1V.mjs} +2 -2
  188. package/dist/_chunks/{useAdminRoles-LgKfXXz2.mjs.map → useAdminRoles-TJePFZ1V.mjs.map} +1 -1
  189. package/dist/_chunks/{useContentTypes-oLxeeWt4.js → useContentTypes-GwxFetb1.js} +2 -2
  190. package/dist/_chunks/{useContentTypes-oLxeeWt4.js.map → useContentTypes-GwxFetb1.js.map} +1 -1
  191. package/dist/_chunks/{useContentTypes-lUhEXXr8.mjs → useContentTypes-J1YsHDXc.mjs} +2 -2
  192. package/dist/_chunks/{useContentTypes-lUhEXXr8.mjs.map → useContentTypes-J1YsHDXc.mjs.map} +1 -1
  193. package/dist/_chunks/{useLicenseLimitNotification-vzmVHxuO.js → useLicenseLimitNotification-LNpXWxKq.js} +2 -2
  194. package/dist/_chunks/{useLicenseLimitNotification-vzmVHxuO.js.map → useLicenseLimitNotification-LNpXWxKq.js.map} +1 -1
  195. package/dist/_chunks/{useLicenseLimitNotification-uxikTXVQ.mjs → useLicenseLimitNotification-eKpsFExc.mjs} +2 -2
  196. package/dist/_chunks/{useLicenseLimitNotification-uxikTXVQ.mjs.map → useLicenseLimitNotification-eKpsFExc.mjs.map} +1 -1
  197. package/dist/_chunks/{useReviewWorkflows-br5LG5gi.js → useReviewWorkflows-54Onj1it.js} +2 -2
  198. package/dist/_chunks/{useReviewWorkflows-br5LG5gi.js.map → useReviewWorkflows-54Onj1it.js.map} +1 -1
  199. package/dist/_chunks/{useReviewWorkflows-5B04Sj5C.mjs → useReviewWorkflows-H0dbPFwV.mjs} +2 -2
  200. package/dist/_chunks/{useReviewWorkflows-5B04Sj5C.mjs.map → useReviewWorkflows-H0dbPFwV.mjs.map} +1 -1
  201. package/dist/_chunks/{useWebhooks-GXgjznJO.js → useWebhooks-qzzi2dzq.js} +2 -2
  202. package/dist/_chunks/{useWebhooks-GXgjznJO.js.map → useWebhooks-qzzi2dzq.js.map} +1 -1
  203. package/dist/_chunks/{useWebhooks-iOOrR2-A.mjs → useWebhooks-tlVKrkap.mjs} +2 -2
  204. package/dist/_chunks/{useWebhooks-iOOrR2-A.mjs.map → useWebhooks-tlVKrkap.mjs.map} +1 -1
  205. package/dist/_chunks/{validateWorkflow-PqK5EbxP.js → validateWorkflow-UadsNyHw.js} +2 -2
  206. package/dist/_chunks/{validateWorkflow-PqK5EbxP.js.map → validateWorkflow-UadsNyHw.js.map} +1 -1
  207. package/dist/_chunks/{validateWorkflow-Ija2Jla4.mjs → validateWorkflow-maQiwiaR.mjs} +2 -2
  208. package/dist/_chunks/{validateWorkflow-Ija2Jla4.mjs.map → validateWorkflow-maQiwiaR.mjs.map} +1 -1
  209. package/dist/admin/index.js +1 -1
  210. package/dist/admin/index.mjs +1 -1
  211. package/package.json +14 -14
  212. package/dist/_chunks/AuthenticatedApp-0lbYYEL6.mjs.map +0 -1
  213. package/dist/_chunks/AuthenticatedApp-lxbOleXq.js.map +0 -1
  214. package/dist/_chunks/SettingsPage-7hH4YDJD.mjs.map +0 -1
  215. package/dist/_chunks/SettingsPage-BLZhhOZm.js.map +0 -1
  216. package/dist/_chunks/index-8K1fBeVH.mjs.map +0 -1
  217. package/dist/_chunks/index-FHaNkHzZ.js.map +0 -1
@@ -5,12 +5,12 @@ import { useRBACProvider, useAppInfo, useStrapiApp, hasPermissions, useTracking,
5
5
  import { Helmet } from "react-helmet";
6
6
  import { useIntl } from "react-intl";
7
7
  import { useLocation, NavLink, useParams, Redirect, Switch, Route } from "react-router-dom";
8
- import { y as SETTINGS_LINKS_CE, p as useEnterprise, u as useConfiguration, d as createRoute } from "./index-8K1fBeVH.mjs";
8
+ import { y as SETTINGS_LINKS_CE, p as useEnterprise, u as useConfiguration, d as createRoute } from "./index-dMS-26Ft.mjs";
9
9
  import sortBy from "lodash/sortBy";
10
10
  import { useSelector } from "react-redux";
11
- import { s as selectAdminPermissions } from "./AuthenticatedApp-0lbYYEL6.mjs";
11
+ import { s as selectAdminPermissions } from "./AuthenticatedApp-uHd-MPEB.mjs";
12
12
  import { SubNav, SubNavHeader, SubNavSections, SubNavSection, SubNavLink } from "@strapi/design-system/v2";
13
- import { Lock, Plus, Refresh, PicturePlus, Check, ExternalLink } from "@strapi/icons";
13
+ import { Lightning, Plus, Refresh, PicturePlus, Check, ExternalLink } from "@strapi/icons";
14
14
  import styled from "styled-components";
15
15
  import { createContext } from "@radix-ui/react-context";
16
16
  import axios, { AxiosError } from "axios";
@@ -92,7 +92,7 @@ const useSettingsMenu = () => {
92
92
  const ceLinks = React.useMemo(() => SETTINGS_LINKS_CE(), []);
93
93
  const { admin: adminLinks, global: globalLinks } = useEnterprise(
94
94
  ceLinks,
95
- async () => (await import("./constants-IK-0WZ7u.mjs")).SETTINGS_LINKS_EE(),
95
+ async () => (await import("./constants-0MWiAEHa.mjs")).SETTINGS_LINKS_EE(),
96
96
  {
97
97
  combine(ceLinks2, eeLinks) {
98
98
  return {
@@ -181,6 +181,10 @@ const useSettingsMenu = () => {
181
181
  const CustomIcon = styled(Icon)`
182
182
  right: 15px;
183
183
  position: absolute;
184
+
185
+ path {
186
+ fill: ${({ theme }) => theme.colors.warning500};
187
+ }
184
188
  `;
185
189
  const SettingsNav = ({ menu }) => {
186
190
  const { formatMessage } = useIntl();
@@ -221,7 +225,8 @@ const SettingsNav = ({ menu }) => {
221
225
  onClick: handleClickOnLink(link.to),
222
226
  children: [
223
227
  formatMessage(link.intlLabel),
224
- link?.lockIcon && /* @__PURE__ */ jsx(CustomIcon, { width: `${15 / 16}rem`, height: `${15 / 16}rem`, as: Lock })
228
+ // TODO: to replace with another name in v5
229
+ link?.lockIcon && /* @__PURE__ */ jsx(CustomIcon, { width: `${15 / 16}rem`, height: `${15 / 16}rem`, as: Lightning })
225
230
  ]
226
231
  },
227
232
  link.id
@@ -232,7 +237,7 @@ const SettingsNav = ({ menu }) => {
232
237
  const ROUTES_CE = [
233
238
  {
234
239
  async Component() {
235
- const { ProtectedListPage } = await import("./ListPage-WwmsejNN.mjs");
240
+ const { ProtectedListPage } = await import("./ListPage-AjR55r98.mjs");
236
241
  return ProtectedListPage;
237
242
  },
238
243
  to: "/settings/roles",
@@ -240,7 +245,7 @@ const ROUTES_CE = [
240
245
  },
241
246
  {
242
247
  async Component() {
243
- const { ProtectedCreatePage } = await import("./CreatePage-KcWY_3Ok.mjs");
248
+ const { ProtectedCreatePage } = await import("./CreatePage-jYqwUlP4.mjs");
244
249
  return ProtectedCreatePage;
245
250
  },
246
251
  to: "/settings/roles/duplicate/:id",
@@ -248,7 +253,7 @@ const ROUTES_CE = [
248
253
  },
249
254
  {
250
255
  async Component() {
251
- const { ProtectedCreatePage } = await import("./CreatePage-KcWY_3Ok.mjs");
256
+ const { ProtectedCreatePage } = await import("./CreatePage-jYqwUlP4.mjs");
252
257
  return ProtectedCreatePage;
253
258
  },
254
259
  to: "/settings/roles/new",
@@ -256,7 +261,7 @@ const ROUTES_CE = [
256
261
  },
257
262
  {
258
263
  async Component() {
259
- const { ProtectedEditPage } = await import("./EditPage-H1GaqsPD.mjs");
264
+ const { ProtectedEditPage } = await import("./EditPage-o5z_2B0F.mjs");
260
265
  return ProtectedEditPage;
261
266
  },
262
267
  to: "/settings/roles/:id",
@@ -264,7 +269,7 @@ const ROUTES_CE = [
264
269
  },
265
270
  {
266
271
  async Component() {
267
- const { ProtectedListPage } = await import("./ListPage-Qz1QBu1U.mjs");
272
+ const { ProtectedListPage } = await import("./ListPage-Yc8zcacp.mjs");
268
273
  return ProtectedListPage;
269
274
  },
270
275
  to: "/settings/users",
@@ -272,7 +277,7 @@ const ROUTES_CE = [
272
277
  },
273
278
  {
274
279
  async Component() {
275
- const { ProtectedEditPage } = await import("./EditPage-Za05JaXt.mjs");
280
+ const { ProtectedEditPage } = await import("./EditPage-SMjmVuCg.mjs");
276
281
  return ProtectedEditPage;
277
282
  },
278
283
  to: "/settings/users/:id",
@@ -280,7 +285,7 @@ const ROUTES_CE = [
280
285
  },
281
286
  {
282
287
  async Component() {
283
- const { ProtectedCreatePage } = await import("./CreatePage-z4ZBkS23.mjs");
288
+ const { ProtectedCreatePage } = await import("./CreatePage-ycE9avz8.mjs");
284
289
  return ProtectedCreatePage;
285
290
  },
286
291
  to: "/settings/webhooks/create",
@@ -288,7 +293,7 @@ const ROUTES_CE = [
288
293
  },
289
294
  {
290
295
  async Component() {
291
- const { ProtectedEditPage } = await import("./EditPage-QoGStdUX.mjs").then((n) => n.b);
296
+ const { ProtectedEditPage } = await import("./EditPage-qDZC_xqv.mjs").then((n) => n.b);
292
297
  return ProtectedEditPage;
293
298
  },
294
299
  to: "/settings/webhooks/:id",
@@ -296,7 +301,7 @@ const ROUTES_CE = [
296
301
  },
297
302
  {
298
303
  async Component() {
299
- const { ProtectedListPage } = await import("./ListPage-6RZ9gRu-.mjs");
304
+ const { ProtectedListPage } = await import("./ListPage-rKtl7kt1.mjs");
300
305
  return ProtectedListPage;
301
306
  },
302
307
  to: "/settings/webhooks",
@@ -304,7 +309,7 @@ const ROUTES_CE = [
304
309
  },
305
310
  {
306
311
  async Component() {
307
- const { ProtectedListView } = await import("./ListView-GBX5d49E.mjs");
312
+ const { ProtectedListView } = await import("./ListView-kFCvhxUp.mjs");
308
313
  return ProtectedListView;
309
314
  },
310
315
  to: "/settings/api-tokens",
@@ -312,7 +317,7 @@ const ROUTES_CE = [
312
317
  },
313
318
  {
314
319
  async Component() {
315
- const { ProtectedCreateView } = await import("./CreateView-okjLiPdb.mjs");
320
+ const { ProtectedCreateView } = await import("./CreateView-1Fty2wTv.mjs");
316
321
  return ProtectedCreateView;
317
322
  },
318
323
  to: "/settings/api-tokens/create",
@@ -320,7 +325,7 @@ const ROUTES_CE = [
320
325
  },
321
326
  {
322
327
  async Component() {
323
- const { ProtectedEditView } = await import("./EditViewPage-VP3QMQWr.mjs");
328
+ const { ProtectedEditView } = await import("./EditViewPage-8D5Y4h70.mjs");
324
329
  return ProtectedEditView;
325
330
  },
326
331
  to: "/settings/api-tokens/:id",
@@ -328,7 +333,7 @@ const ROUTES_CE = [
328
333
  },
329
334
  {
330
335
  async Component() {
331
- const { ProtectedCreateView } = await import("./CreateView-jwhpW8_9.mjs");
336
+ const { ProtectedCreateView } = await import("./CreateView-ZCk5E7rv.mjs");
332
337
  return ProtectedCreateView;
333
338
  },
334
339
  to: "/settings/transfer-tokens/create",
@@ -336,7 +341,7 @@ const ROUTES_CE = [
336
341
  },
337
342
  {
338
343
  async Component() {
339
- const { ProtectedListView } = await import("./ListView-KfAA0iIH.mjs");
344
+ const { ProtectedListView } = await import("./ListView-27V4Lfa-.mjs");
340
345
  return ProtectedListView;
341
346
  },
342
347
  to: "/settings/transfer-tokens",
@@ -344,7 +349,7 @@ const ROUTES_CE = [
344
349
  },
345
350
  {
346
351
  async Component() {
347
- const { ProtectedEditView } = await import("./EditView-tb5yJvsj.mjs");
352
+ const { ProtectedEditView } = await import("./EditView-lny0iCX4.mjs");
348
353
  return ProtectedEditView;
349
354
  },
350
355
  to: "/settings/transfer-tokens/:id",
@@ -819,7 +824,7 @@ const ApplicationInfoPage = () => {
819
824
  } = useAppInfo();
820
825
  const AdminSeatInfo = useEnterprise(
821
826
  AdminSeatInfoCE,
822
- async () => (await import("./AdminSeatInfo-U_XS6M6s.mjs")).AdminSeatInfoEE
827
+ async () => (await import("./AdminSeatInfo-8fY_jz9W.mjs")).AdminSeatInfoEE
823
828
  );
824
829
  const {
825
830
  allowedActions: { canRead, canUpdate }
@@ -1027,7 +1032,7 @@ const SettingsPage = () => {
1027
1032
  const { isLoading, menu } = useSettingsMenu();
1028
1033
  const routes = useEnterprise(
1029
1034
  ROUTES_CE,
1030
- async () => (await import("./constants--_M6UoZ4.mjs")).ROUTES_EE,
1035
+ async () => (await import("./constants-bvG_vqvv.mjs")).ROUTES_EE,
1031
1036
  {
1032
1037
  combine(ceRoutes, eeRoutes) {
1033
1038
  return [...ceRoutes, ...eeRoutes];
@@ -1074,4 +1079,4 @@ export {
1074
1079
  SettingsPage,
1075
1080
  makeUniqueRoutes
1076
1081
  };
1077
- //# sourceMappingURL=SettingsPage-7hH4YDJD.mjs.map
1082
+ //# sourceMappingURL=SettingsPage-203QQP4D.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SettingsPage-203QQP4D.mjs","sources":["../../admin/src/hooks/useSettingsMenu.ts","../../admin/src/pages/Settings/components/SettingsNav.tsx","../../admin/src/pages/Settings/constants.ts","../../admin/src/pages/Settings/pages/ApplicationInfo/utils/constants.ts","../../admin/src/pages/Settings/pages/ApplicationInfo/utils/files.ts","../../admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.tsx","../../admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.tsx","../../admin/src/pages/Settings/SettingsPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n hasPermissions,\n StrapiAppSetting,\n StrapiAppSettingLink as IStrapiAppSettingLink,\n useRBACProvider,\n useStrapiApp,\n useAppInfo,\n} from '@strapi/helper-plugin';\nimport sortBy from 'lodash/sortBy';\nimport { useSelector } from 'react-redux';\n\nimport { SETTINGS_LINKS_CE, SettingsMenuLink } from '../constants';\nimport { selectAdminPermissions } from '../selectors';\nimport { PermissionMap } from '../types/permissions';\n\nimport { useEnterprise } from './useEnterprise';\n\nconst formatLinks = (menu: SettingsMenuSection[]): SettingsMenuSectionWithDisplayedLinks[] =>\n menu.map((menuSection) => {\n const formattedLinks = menuSection.links.map((link) => ({\n ...link,\n isDisplayed: false,\n }));\n\n return { ...menuSection, links: formattedLinks };\n });\n\ninterface SettingsMenuLinkWithPermissions extends SettingsMenuLink {\n permissions: IStrapiAppSettingLink['permissions'];\n hasNotification?: boolean;\n}\n\ninterface StrapiAppSettingsLink extends IStrapiAppSettingLink {\n lockIcon?: never; // TODO: to replace with another name in v5\n hasNotification?: never;\n}\n\ninterface SettingsMenuSection extends Omit<StrapiAppSetting, 'links'> {\n links: Array<SettingsMenuLinkWithPermissions | StrapiAppSettingsLink>;\n}\n\ninterface SettingsMenuLinkWithPermissionsAndDisplayed extends SettingsMenuLinkWithPermissions {\n isDisplayed: boolean;\n}\n\ninterface StrapiAppSettingLinkWithDisplayed extends StrapiAppSettingsLink {\n isDisplayed: boolean;\n}\n\ninterface SettingsMenuSectionWithDisplayedLinks extends Omit<SettingsMenuSection, 'links'> {\n links: Array<SettingsMenuLinkWithPermissionsAndDisplayed | StrapiAppSettingLinkWithDisplayed>;\n}\n\ntype SettingsMenu = SettingsMenuSectionWithDisplayedLinks[];\n\nconst useSettingsMenu = (): {\n isLoading: boolean;\n menu: SettingsMenu;\n} => {\n const [{ isLoading, menu }, setData] = React.useState<{\n isLoading: boolean;\n menu: SettingsMenu;\n }>({\n isLoading: true,\n menu: [],\n });\n const { allPermissions: userPermissions } = useRBACProvider();\n const { shouldUpdateStrapi } = useAppInfo();\n const { settings } = useStrapiApp();\n const permissions = useSelector(selectAdminPermissions);\n\n /**\n * memoize the return value of this function to avoid re-computing it on every render\n * because it's used in an effect it ends up re-running recursively.\n */\n const ceLinks = React.useMemo(() => SETTINGS_LINKS_CE(), []);\n\n const { admin: adminLinks, global: globalLinks } = useEnterprise(\n ceLinks,\n async () => (await import('../../../ee/admin/src/constants')).SETTINGS_LINKS_EE(),\n {\n combine(ceLinks, eeLinks) {\n return {\n admin: [...eeLinks.admin, ...ceLinks.admin],\n global: [...ceLinks.global, ...eeLinks.global],\n };\n },\n defaultValue: {\n admin: [],\n global: [],\n },\n }\n );\n\n const addPermissions = React.useCallback(\n (link: SettingsMenuLink) => {\n if (!link.id) {\n throw new Error('The settings menu item must have an id attribute.');\n }\n\n return {\n ...link,\n permissions: permissions.settings?.[link.id as keyof PermissionMap['settings']]?.main ?? [],\n } satisfies SettingsMenuLinkWithPermissions;\n },\n [permissions.settings]\n );\n\n React.useEffect(() => {\n const getData = async () => {\n interface MenuLinkPermission {\n hasPermission: boolean;\n sectionIndex: number;\n linkIndex: number;\n }\n\n const buildMenuPermissions = (sections: SettingsMenuSectionWithDisplayedLinks[]) =>\n Promise.all(\n sections.reduce<Promise<MenuLinkPermission>[]>((acc, section, sectionIndex) => {\n const linksWithPermissions = section.links.map(async (link, linkIndex) => ({\n hasPermission: await hasPermissions(userPermissions, link.permissions),\n sectionIndex,\n linkIndex,\n }));\n\n return [...acc, ...linksWithPermissions];\n }, [])\n );\n\n const menuPermissions = await buildMenuPermissions(sections);\n\n setData((prev) => {\n return {\n ...prev,\n isLoading: false,\n menu: sections.map((section, sectionIndex) => ({\n ...section,\n links: section.links.map((link, linkIndex) => {\n const permission = menuPermissions.find(\n (permission) =>\n permission.sectionIndex === sectionIndex && permission.linkIndex === linkIndex\n );\n\n return {\n ...link,\n isDisplayed: Boolean(permission?.hasPermission),\n };\n }),\n })),\n };\n });\n };\n\n const { global, ...otherSections } = settings;\n const sections = formatLinks([\n {\n ...global,\n links: sortBy([...global.links, ...globalLinks.map(addPermissions)], (link) => link.id).map(\n (link) => ({\n ...link,\n hasNotification: link.id === '000-application-infos' && shouldUpdateStrapi,\n })\n ),\n },\n {\n id: 'permissions',\n intlLabel: { id: 'Settings.permissions', defaultMessage: 'Administration Panel' },\n links: adminLinks.map(addPermissions),\n },\n ...Object.values(otherSections),\n ]);\n\n getData();\n }, [adminLinks, globalLinks, userPermissions, settings, shouldUpdateStrapi, addPermissions]);\n\n return {\n isLoading,\n menu: menu.map((menuItem) => ({\n ...menuItem,\n links: menuItem.links.filter((link) => link.isDisplayed),\n })),\n };\n};\n\nexport { useSettingsMenu };\nexport type { SettingsMenu };\n","import { Icon } from '@strapi/design-system';\nimport {\n SubNav,\n SubNavHeader,\n SubNavLink,\n SubNavSection,\n SubNavSections,\n} from '@strapi/design-system/v2';\nimport { useTracking } from '@strapi/helper-plugin';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useLocation } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { SettingsMenu } from '../../../hooks/useSettingsMenu';\n\n/**\n * TODO: refactor the SubNav entirely, we shouldn't have\n * to do this hack to work a lock at the end. It's a bit hacky.\n */\n\nconst CustomIcon = styled(Icon)`\n right: 15px;\n position: absolute;\n\n path {\n fill: ${({ theme }) => theme.colors.warning500};\n }\n`;\n\ninterface SettingsNavProps {\n menu: SettingsMenu;\n}\n\nconst SettingsNav = ({ menu }: SettingsNavProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n title: link.intlLabel,\n name: link.id,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav ariaLabel={label}>\n <SubNavHeader label={label} />\n <SubNavSections>\n {sections.map((section) => (\n <SubNavSection key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <SubNavLink\n as={NavLink}\n withBullet={link.hasNotification}\n // @ts-expect-error – this is an issue with the DS where as props are not inferred\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n >\n {formatMessage(link.intlLabel)}\n {\n // TODO: to replace with another name in v5\n link?.lockIcon && (\n <CustomIcon width={`${15 / 16}rem`} height={`${15 / 16}rem`} as={Lightning} />\n )\n }\n </SubNavLink>\n );\n })}\n </SubNavSection>\n ))}\n </SubNavSections>\n </SubNav>\n );\n};\n\nexport { SettingsNav };\nexport type { SettingsNavProps };\n","import { MenuItem } from '@strapi/helper-plugin';\n\nexport interface Route\n extends Pick<MenuItem, 'exact' | 'to'>,\n Required<Pick<MenuItem, 'Component'>> {}\n\nexport const ROUTES_CE: Route[] = [\n {\n async Component() {\n const { ProtectedListPage } = await import('./pages/Roles/ListPage');\n\n return ProtectedListPage;\n },\n to: '/settings/roles',\n exact: true,\n },\n {\n async Component() {\n const { ProtectedCreatePage } = await import('./pages/Roles/CreatePage');\n\n return ProtectedCreatePage;\n },\n to: '/settings/roles/duplicate/:id',\n exact: true,\n },\n {\n async Component() {\n const { ProtectedCreatePage } = await import('./pages/Roles/CreatePage');\n\n return ProtectedCreatePage;\n },\n to: '/settings/roles/new',\n exact: true,\n },\n {\n async Component() {\n const { ProtectedEditPage } = await import('./pages/Roles/EditPage');\n\n return ProtectedEditPage;\n },\n to: '/settings/roles/:id',\n exact: true,\n },\n {\n async Component() {\n const { ProtectedListPage } = await import('./pages/Users/ListPage');\n\n return ProtectedListPage;\n },\n to: '/settings/users',\n exact: true,\n },\n {\n async Component() {\n const { ProtectedEditPage } = await import('./pages/Users/EditPage');\n\n return ProtectedEditPage;\n },\n to: '/settings/users/:id',\n exact: true,\n },\n {\n async Component() {\n const { ProtectedCreatePage } = await import('./pages/Webhooks/CreatePage');\n\n return ProtectedCreatePage;\n },\n to: '/settings/webhooks/create',\n exact: true,\n },\n {\n async Component() {\n const { ProtectedEditPage } = await import('./pages/Webhooks/EditPage');\n\n return ProtectedEditPage;\n },\n to: '/settings/webhooks/:id',\n exact: true,\n },\n {\n async Component() {\n const { ProtectedListPage } = await import('./pages/Webhooks/ListPage');\n\n return ProtectedListPage;\n },\n to: '/settings/webhooks',\n exact: true,\n },\n {\n async Component() {\n const { ProtectedListView } = await import('./pages/ApiTokens/ListView');\n\n return ProtectedListView;\n },\n to: '/settings/api-tokens',\n exact: true,\n },\n {\n async Component() {\n const { ProtectedCreateView } = await import('./pages/ApiTokens/CreateView');\n\n return ProtectedCreateView;\n },\n to: '/settings/api-tokens/create',\n exact: true,\n },\n {\n async Component() {\n const { ProtectedEditView } = await import('./pages/ApiTokens/EditView/EditViewPage');\n\n return ProtectedEditView;\n },\n to: '/settings/api-tokens/:id',\n exact: true,\n },\n {\n async Component() {\n const { ProtectedCreateView } = await import('./pages/TransferTokens/CreateView');\n\n return ProtectedCreateView;\n },\n to: '/settings/transfer-tokens/create',\n exact: true,\n },\n {\n async Component() {\n const { ProtectedListView } = await import('./pages/TransferTokens/ListView');\n\n return ProtectedListView;\n },\n to: '/settings/transfer-tokens',\n exact: true,\n },\n {\n async Component() {\n const { ProtectedEditView } = await import('./pages/TransferTokens/EditView');\n\n return ProtectedEditView;\n },\n to: '/settings/transfer-tokens/:id',\n exact: true,\n },\n {\n async Component() {\n const { PurchaseAuditLogs } = await import('./pages/PurchaseAuditLogs');\n\n return PurchaseAuditLogs;\n },\n to: '/settings/purchase-audit-logs',\n exact: true,\n },\n {\n async Component() {\n const { PurchaseReviewWorkflows } = await import('./pages/PurchaseReviewWorkflows');\n\n return PurchaseReviewWorkflows;\n },\n to: '/settings/purchase-review-workflows',\n exact: true,\n },\n {\n async Component() {\n const { PurchaseSingleSignOn } = await import('./pages/PurchaseSingleSignOn');\n\n return PurchaseSingleSignOn;\n },\n to: '/settings/purchase-single-sign-on',\n exact: true,\n },\n];\n","export const DIMENSION = 750;\nexport const SIZE = 100;\nexport const ACCEPTED_FORMAT = ['image/jpeg', 'image/png', 'image/svg+xml'];\n","import { ACCEPTED_FORMAT, DIMENSION, SIZE } from './constants';\n\nimport type { MessageDescriptor } from 'react-intl';\n\nconst FILE_FORMAT_ERROR_MESSAGE = {\n id: 'Settings.application.customization.modal.upload.error-format',\n defaultMessage: 'Wrong format uploaded (accepted formats only: jpeg, jpg, png, svg).',\n};\n\nconst FILE_SIZING_ERROR_MESSAGE = {\n id: 'Settings.application.customization.modal.upload.error-size',\n defaultMessage:\n 'The file uploaded is too large (max dimension: {dimension}x{dimension}, max file size: {size}KB)',\n};\n\ninterface ImageDimensions {\n height: number;\n width: number;\n}\n\ninterface ImageAsset extends ImageDimensions {\n ext: string | undefined;\n size: number;\n name: string;\n url: string;\n rawFile: File;\n}\n\nconst parseFileMetadatas = async (file: File): Promise<ImageAsset> => {\n const isFormatAuthorized = ACCEPTED_FORMAT.includes(file.type);\n\n if (!isFormatAuthorized) {\n throw new ParsingFileError('File format', FILE_FORMAT_ERROR_MESSAGE);\n }\n\n const fileDimensions = await new Promise<ImageDimensions>((resolve) => {\n const reader = new FileReader();\n reader.onload = () => {\n const img = new Image();\n img.onload = () => {\n resolve({ width: img.width, height: img.height });\n };\n img.src = reader.result as string;\n };\n reader.readAsDataURL(file);\n });\n\n const areDimensionsAuthorized =\n fileDimensions.width <= DIMENSION && fileDimensions.height <= DIMENSION;\n\n if (!areDimensionsAuthorized) {\n throw new ParsingFileError('File sizing', FILE_SIZING_ERROR_MESSAGE);\n }\n\n const asset = {\n ext: file.name.split('.').pop(),\n size: file.size / 1000,\n name: file.name,\n url: URL.createObjectURL(file),\n rawFile: file,\n width: fileDimensions.width,\n height: fileDimensions.height,\n };\n\n const isSizeAuthorized = asset.size <= SIZE;\n\n if (!isSizeAuthorized) {\n throw new ParsingFileError('File sizing', FILE_SIZING_ERROR_MESSAGE);\n }\n\n return asset;\n};\n\nclass ParsingFileError extends Error {\n displayMessage: MessageDescriptor;\n\n constructor(message: string, displayMessage: MessageDescriptor, options?: ErrorOptions) {\n super(message, options);\n this.displayMessage = displayMessage;\n }\n}\n\nexport { parseFileMetadatas, ParsingFileError };\nexport type { ImageAsset };\n","import * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\nimport {\n Box,\n Button,\n ButtonProps,\n Card,\n CardAsset,\n CardBadge,\n CardBody,\n CardContent,\n CardHeader,\n CardSubtitle,\n CardTitle,\n CarouselActions,\n CarouselInput,\n CarouselInputProps,\n CarouselSlide,\n Divider,\n Field,\n FieldError,\n FieldInput,\n Flex,\n Icon,\n IconButton,\n ModalFooter,\n ModalHeader,\n ModalLayout,\n Tab,\n TabGroup,\n TabPanel,\n TabPanels,\n Tabs,\n TextInput,\n TextInputProps,\n Typography,\n} from '@strapi/design-system';\nimport { pxToRem } from '@strapi/helper-plugin';\nimport { PicturePlus, Plus, Refresh } from '@strapi/icons';\nimport axios, { AxiosError } from 'axios';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { ConfigurationProviderProps } from '../../../../../features/Configuration';\nimport { ACCEPTED_FORMAT, DIMENSION, SIZE } from '../utils/constants';\nimport { ImageAsset, ParsingFileError, parseFileMetadatas } from '../utils/files';\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInputContext\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputContextValue {\n localImage: ImageAsset | undefined;\n goToStep: (step: Step) => void;\n onClose: () => void;\n setLocalImage: (asset: ImageAsset | undefined) => void;\n}\n\nconst [LogoInputContextProvider, useLogoInputContext] =\n createContext<LogoInputContextValue>('LogoInput');\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputProps\n extends Pick<PendingLogoDialogProps, 'onChangeLogo'>,\n Pick<CarouselInputProps, 'label' | 'hint'> {\n canUpdate: boolean;\n customLogo?: ConfigurationProviderProps['authLogo']['custom'];\n defaultLogo: string;\n}\n\ntype Step = 'pending' | 'upload' | undefined;\n\nconst LogoInput = ({\n canUpdate,\n customLogo,\n defaultLogo,\n hint,\n label,\n onChangeLogo,\n}: LogoInputProps) => {\n const [localImage, setLocalImage] = React.useState<ImageAsset | undefined>();\n const [currentStep, setCurrentStep] = React.useState<Step>();\n const { formatMessage } = useIntl();\n\n const handleClose = () => {\n setLocalImage(undefined);\n setCurrentStep(undefined);\n };\n\n return (\n <LogoInputContextProvider\n setLocalImage={setLocalImage}\n localImage={localImage}\n goToStep={setCurrentStep}\n onClose={handleClose}\n >\n <CarouselInput\n label={label}\n selectedSlide={0}\n hint={hint}\n // Carousel is used here for a single media,\n // we don't need previous and next labels but these props are required\n previousLabel=\"\"\n nextLabel=\"\"\n onNext={() => {}}\n onPrevious={() => {}}\n secondaryLabel={customLogo?.name || 'logo.png'}\n actions={\n <CarouselActions>\n <IconButton\n disabled={!canUpdate}\n onClick={() => setCurrentStep('upload')}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.change-action',\n defaultMessage: 'Change logo',\n })}\n icon={<Plus />}\n />\n {customLogo?.url && (\n <IconButton\n disabled={!canUpdate}\n onClick={() => onChangeLogo(null)}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.reset-action',\n defaultMessage: 'Reset logo',\n })}\n icon={<Refresh />}\n />\n )}\n </CarouselActions>\n }\n >\n <CarouselSlide\n label={formatMessage({\n id: 'Settings.application.customization.carousel-slide.label',\n defaultMessage: 'Logo slide',\n })}\n >\n <Box\n maxHeight=\"40%\"\n maxWidth=\"40%\"\n as=\"img\"\n src={customLogo?.url || defaultLogo}\n alt={formatMessage({\n id: 'Settings.application.customization.carousel.title',\n defaultMessage: 'Logo',\n })}\n />\n </CarouselSlide>\n </CarouselInput>\n {currentStep ? (\n <ModalLayout labelledBy=\"modal\" onClose={handleClose}>\n <ModalHeader>\n <Typography fontWeight=\"bold\" as=\"h2\" id=\"modal\">\n {formatMessage(\n currentStep === 'upload'\n ? {\n id: 'Settings.application.customization.modal.upload',\n defaultMessage: 'Upload logo',\n }\n : {\n id: 'Settings.application.customization.modal.pending',\n defaultMessage: 'Pending logo',\n }\n )}\n </Typography>\n </ModalHeader>\n {currentStep === 'upload' ? (\n <AddLogoDialog />\n ) : (\n <PendingLogoDialog onChangeLogo={onChangeLogo} />\n )}\n </ModalLayout>\n ) : null}\n </LogoInputContextProvider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AddLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\nconst AddLogoDialog = () => {\n const { formatMessage } = useIntl();\n\n return (\n <TabGroup\n label={formatMessage({\n id: 'Settings.application.customization.modal.tab.label',\n defaultMessage: 'How do you want to upload your assets?',\n })}\n variant=\"simple\"\n >\n <Box paddingLeft={8} paddingRight={8}>\n <Tabs>\n <Tab>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-computer',\n defaultMessage: 'From computer',\n })}\n </Tab>\n <Tab>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url',\n defaultMessage: 'From url',\n })}\n </Tab>\n </Tabs>\n <Divider />\n </Box>\n <TabPanels>\n <TabPanel>\n <ComputerForm />\n </TabPanel>\n <TabPanel>\n <URLForm />\n </TabPanel>\n </TabPanels>\n </TabGroup>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * URLForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst URLForm = () => {\n const { formatMessage } = useIntl();\n const [logoUrl, setLogoUrl] = React.useState('');\n const [error, setError] = React.useState<string>();\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('URLForm');\n\n const handleChange: TextInputProps['onChange'] = (e) => {\n setLogoUrl(e.target.value);\n };\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = async (event) => {\n event.preventDefault();\n\n const data = new FormData(event.target as HTMLFormElement);\n\n const url = data.get('logo-url');\n\n if (!url) {\n return;\n }\n\n try {\n const res = await axios.get(url.toString(), { responseType: 'blob', timeout: 8000 });\n\n const file = new File([res.data], res.config.url ?? '', {\n type: res.headers['content-type'],\n });\n\n const asset = await parseFileMetadatas(file);\n\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof AxiosError) {\n setError(\n formatMessage({\n id: 'Settings.application.customization.modal.upload.error-network',\n defaultMessage: 'Network error',\n })\n );\n } else if (err instanceof ParsingFileError) {\n setError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n } else {\n throw err;\n }\n }\n };\n\n return (\n <form onSubmit={handleSubmit}>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <TextInput\n label={formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url.input-label',\n defaultMessage: 'URL',\n })}\n error={error}\n onChange={handleChange}\n value={logoUrl}\n name=\"logo-url\"\n />\n </Box>\n <ModalFooter\n startActions={\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n }\n endActions={\n <Button type=\"submit\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.next',\n defaultMessage: 'Next',\n })}\n </Button>\n }\n />\n </form>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ComputerForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst ComputerForm = () => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n const [fileError, setFileError] = React.useState<string>();\n const inputRef = React.useRef<HTMLInputElement>(null!);\n const id = React.useId();\n\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('ComputerForm');\n\n const handleDragEnter = () => setDragOver(true);\n const handleDragLeave = () => setDragOver(false);\n\n const handleClick: ButtonProps['onClick'] = (e) => {\n e.preventDefault();\n inputRef.current.click();\n };\n\n const handleChange = async () => {\n handleDragLeave();\n\n if (!inputRef.current.files) {\n return;\n }\n\n const [file] = inputRef.current.files;\n\n try {\n const asset = await parseFileMetadatas(file);\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof ParsingFileError) {\n setFileError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n inputRef.current.focus();\n } else {\n throw err;\n }\n }\n };\n\n return (\n <>\n <form>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field name={id} error={fileError}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex\n paddingTop={9}\n paddingBottom={7}\n hasRadius\n justifyContent=\"center\"\n direction=\"column\"\n background={dragOver ? 'primary100' : 'neutral100'}\n borderColor={dragOver ? 'primary500' : fileError ? 'danger600' : 'neutral300'}\n borderStyle=\"dashed\"\n borderWidth=\"1px\"\n position=\"relative\"\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n >\n <Icon\n color=\"primary600\"\n width={pxToRem(60)}\n height={pxToRem(60)}\n as={PicturePlus}\n aria-hidden\n />\n <Box paddingTop={3} paddingBottom={5}>\n <Typography variant=\"delta\" as=\"label\" htmlFor={id}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.drag-drop',\n defaultMessage: 'Drag and Drop here or',\n })}\n </Typography>\n </Box>\n <FileInput\n accept={ACCEPTED_FORMAT.join(', ')}\n type=\"file\"\n name=\"files\"\n tabIndex={-1}\n onChange={handleChange}\n ref={inputRef}\n id={id}\n />\n <Button type=\"button\" onClick={handleClick}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.cta.browse',\n defaultMessage: 'Browse files',\n })}\n </Button>\n <Box paddingTop={6}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.application.customization.modal.upload.file-validation',\n defaultMessage:\n 'Max dimension: {dimension}x{dimension}, Max size: {size}KB',\n },\n { size: SIZE, dimension: DIMENSION }\n )}\n </Typography>\n </Box>\n </Flex>\n <FieldError />\n </Flex>\n </Field>\n </Box>\n </form>\n <ModalFooter\n startActions={\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n }\n />\n </>\n );\n};\n\nconst FileInput = styled(FieldInput)`\n opacity: 0;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 1;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * PendingLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PendingLogoDialogProps {\n onChangeLogo: (file: ImageAsset | null) => void;\n}\n\nconst PendingLogoDialog = ({ onChangeLogo }: PendingLogoDialogProps) => {\n const { formatMessage } = useIntl();\n const { localImage, setLocalImage, goToStep, onClose } = useLogoInputContext('PendingLogoDialog');\n\n const handleGoBack = () => {\n setLocalImage(undefined);\n goToStep('upload');\n };\n\n const handleUpload = () => {\n if (localImage) {\n onChangeLogo(localImage);\n }\n onClose();\n };\n\n return (\n <>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Flex justifyContent=\"space-between\" paddingBottom={6}>\n <Flex direction=\"column\" alignItems=\"flex-start\">\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.title',\n defaultMessage: 'Logo ready to upload',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral500\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.subtitle',\n defaultMessage: 'Manage the chosen logo before uploading it',\n })}\n </Typography>\n </Flex>\n <Button onClick={handleGoBack} variant=\"secondary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.choose-another',\n defaultMessage: 'Choose another logo',\n })}\n </Button>\n </Flex>\n <Box maxWidth={pxToRem(180)}>\n {localImage?.url ? <ImageCardAsset asset={localImage} /> : null}\n </Box>\n </Box>\n <ModalFooter\n startActions={\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n }\n endActions={\n <Button onClick={handleUpload}>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.upload',\n defaultMessage: 'Upload logo',\n })}\n </Button>\n }\n />\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ImageCardAsset\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ImageCardAssetProps {\n asset: ImageAsset;\n}\n\nconst ImageCardAsset = ({ asset }: ImageCardAssetProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Card>\n <CardHeader>\n <CardAsset size=\"S\" src={asset.url} />\n </CardHeader>\n <CardBody>\n <CardContent>\n <CardTitle>{asset.name}</CardTitle>\n <CardSubtitle>\n {`${asset.ext?.toUpperCase()} - ${asset.width}✕${asset.height}`}\n </CardSubtitle>\n </CardContent>\n <CardBadge>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.card-badge',\n defaultMessage: 'image',\n })}\n </CardBadge>\n </CardBody>\n </Card>\n );\n};\n\nexport { LogoInput };\nexport type { LogoInputProps };\n","import * as React from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Layout,\n Link,\n Main,\n Typography,\n} from '@strapi/design-system';\nimport {\n SettingsPageTitle,\n useAppInfo,\n useFocusWhenNavigate,\n useRBAC,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { Check, ExternalLink } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport { useConfiguration } from '../../../../features/Configuration';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { selectAdminPermissions } from '../../../../selectors';\n\nimport { LogoInput, LogoInputProps } from './components/LogoInput';\nimport { DIMENSION, SIZE } from './utils/constants';\n\nconst AdminSeatInfoCE = () => null;\n\n/* -------------------------------------------------------------------------------------------------\n * ApplicationInfoPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ApplicationInfoPage = () => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { logos: serverLogos, updateProjectSettings } = useConfiguration('ApplicationInfoPage');\n const [logos, setLogos] = React.useState({ menu: serverLogos.menu, auth: serverLogos.auth });\n const { settings } = useSelector(selectAdminPermissions);\n\n const {\n communityEdition,\n latestStrapiReleaseTag,\n nodeVersion,\n shouldUpdateStrapi,\n strapiVersion,\n } = useAppInfo();\n\n const AdminSeatInfo = useEnterprise(\n AdminSeatInfoCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo'\n )\n ).AdminSeatInfoEE\n );\n\n const {\n allowedActions: { canRead, canUpdate },\n } = useRBAC(settings ? settings['project-settings'] : {});\n\n useFocusWhenNavigate();\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = (e) => {\n e.preventDefault();\n\n updateProjectSettings({\n authLogo: logos.auth.custom ?? null,\n menuLogo: logos.menu.custom ?? null,\n });\n };\n\n const handleChangeLogo =\n (logo: 'menu' | 'auth'): LogoInputProps['onChangeLogo'] =>\n (newLogo) => {\n /**\n * If there's no newLogo value we can assume we're reseting.\n */\n if (newLogo === null) {\n trackUsage('didClickResetLogo', {\n logo,\n });\n }\n\n setLogos((prev) => ({\n ...prev,\n [logo]: {\n ...prev[logo],\n custom: newLogo,\n },\n }));\n };\n\n React.useEffect(() => {\n setLogos({\n menu: serverLogos.menu,\n auth: serverLogos.auth,\n });\n }, [serverLogos]);\n\n // block rendering until the EE component is fully loaded\n if (!AdminSeatInfo) {\n return null;\n }\n\n const isSaveDisabled =\n logos.auth.custom === serverLogos.auth.custom && logos.menu.custom === serverLogos.menu.custom;\n\n return (\n <Layout>\n <SettingsPageTitle\n name={formatMessage({\n id: 'Settings.application.header',\n defaultMessage: 'Application',\n })}\n />\n <Main>\n <form onSubmit={handleSubmit}>\n <HeaderLayout\n title={formatMessage({\n id: 'Settings.application.title',\n defaultMessage: 'Overview',\n })}\n subtitle={formatMessage({\n id: 'Settings.application.description',\n defaultMessage: 'Administration panel’s global information',\n })}\n primaryAction={\n canUpdate && (\n <Button disabled={isSaveDisabled} type=\"submit\" startIcon={<Check />}>\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n )\n }\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingRight={7}\n paddingLeft={7}\n >\n <Typography variant=\"delta\" as=\"h3\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n\n <Grid gap={5} as=\"dl\">\n <GridItem col={6} s={12}>\n <Typography variant=\"sigma\" textColor=\"neutral600\" as=\"dt\">\n {formatMessage({\n id: 'Settings.application.strapiVersion',\n defaultMessage: 'strapi version',\n })}\n </Typography>\n <Flex gap={3} direction=\"column\" alignItems=\"start\" as=\"dd\">\n <Typography>v{strapiVersion}</Typography>\n {shouldUpdateStrapi && (\n <Link\n href={`https://github.com/strapi/strapi/releases/tag/${latestStrapiReleaseTag}`}\n endIcon={<ExternalLink />}\n >\n {formatMessage({\n id: 'Settings.application.link-upgrade',\n defaultMessage: 'Upgrade your admin panel',\n })}\n </Link>\n )}\n </Flex>\n </GridItem>\n <GridItem col={6} s={12}>\n <Typography variant=\"sigma\" textColor=\"neutral600\" as=\"dt\">\n {formatMessage({\n id: 'Settings.application.edition-title',\n defaultMessage: 'current plan',\n })}\n </Typography>\n <Flex gap={3} direction=\"column\" alignItems=\"start\" as=\"dd\">\n <Typography>\n {formatMessage(\n {\n id: 'Settings.application.ee-or-ce',\n defaultMessage:\n '{communityEdition, select, true {Community Edition} other {Enterprise Edition}}',\n },\n { communityEdition }\n )}\n </Typography>\n <Link href=\"https://strapi.io/pricing-self-hosted\" endIcon={<ExternalLink />}>\n {formatMessage({\n id: 'Settings.application.link-pricing',\n defaultMessage: 'See all pricing plans',\n })}\n </Link>\n </Flex>\n </GridItem>\n\n <GridItem col={6} s={12}>\n <Typography variant=\"sigma\" textColor=\"neutral600\" as=\"dt\">\n {formatMessage({\n id: 'Settings.application.node-version',\n defaultMessage: 'node version',\n })}\n </Typography>\n <Typography as=\"dd\">{nodeVersion}</Typography>\n </GridItem>\n <AdminSeatInfo />\n </Grid>\n </Flex>\n {canRead && (\n <Box\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingRight={7}\n paddingLeft={7}\n >\n <Typography variant=\"delta\" as=\"h3\">\n {formatMessage({\n id: 'Settings.application.customization',\n defaultMessage: 'Customization',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.application.customization.size-details',\n defaultMessage:\n 'Max dimension: {dimension}×{dimension}, Max file size: {size}KB',\n },\n { dimension: DIMENSION, size: SIZE }\n )}\n </Typography>\n <Grid paddingTop={4} gap={4}>\n <GridItem col={6} s={12}>\n <LogoInput\n canUpdate={canUpdate}\n customLogo={logos.menu.custom}\n defaultLogo={logos.menu.default}\n hint={formatMessage({\n id: 'Settings.application.customization.menu-logo.carousel-hint',\n defaultMessage: 'Replace the logo in the main navigation',\n })}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.menu-logo.title',\n defaultMessage: 'Menu logo',\n })}\n onChangeLogo={handleChangeLogo('menu')}\n />\n </GridItem>\n <GridItem col={6} s={12}>\n <LogoInput\n canUpdate={canUpdate}\n customLogo={logos.auth.custom}\n defaultLogo={logos.auth.default}\n hint={formatMessage({\n id: 'Settings.application.customization.auth-logo.carousel-hint',\n defaultMessage: 'Replace the logo in the authentication pages',\n })}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.auth-logo.title',\n defaultMessage: 'Auth logo',\n })}\n onChangeLogo={handleChangeLogo('auth')}\n />\n </GridItem>\n </Grid>\n </Box>\n )}\n </Flex>\n </ContentLayout>\n </form>\n </Main>\n </Layout>\n );\n};\n\nexport { ApplicationInfoPage };\n","import * as React from 'react';\n\nimport { Layout } from '@strapi/design-system';\nimport { LoadingIndicatorPage, useStrapiApp } from '@strapi/helper-plugin';\nimport { Helmet } from 'react-helmet';\nimport { useIntl } from 'react-intl';\nimport { Redirect, Route, Switch, useParams } from 'react-router-dom';\n\nimport { useEnterprise } from '../../hooks/useEnterprise';\nimport { useSettingsMenu } from '../../hooks/useSettingsMenu';\nimport { createRoute } from '../../utils/createRoute';\n\nimport { SettingsNav } from './components/SettingsNav';\nimport { ROUTES_CE, Route as IRoute } from './constants';\nimport { ApplicationInfoPage } from './pages/ApplicationInfo/ApplicationInfoPage';\n\nconst SettingsPage = () => {\n const { settingId } = useParams<{ settingId: string }>();\n const { settings } = useStrapiApp();\n const { formatMessage } = useIntl();\n const { isLoading, menu } = useSettingsMenu();\n const routes = useEnterprise(\n ROUTES_CE,\n async () => (await import('../../../../ee/admin/src/pages/SettingsPage/constants')).ROUTES_EE,\n {\n combine(ceRoutes, eeRoutes) {\n return [...ceRoutes, ...eeRoutes];\n },\n defaultValue: [],\n }\n );\n\n // Creates the admin routes\n const adminRoutes = React.useMemo(() => {\n return makeUniqueRoutes(routes).map(({ to, Component, exact }) =>\n createRoute(Component, to, exact)\n );\n }, [routes]);\n\n const pluginsRoutes = Object.values(settings).flatMap((section) => {\n const { links } = section;\n\n return links.map((link) => createRoute(link.Component, link.to, link.exact || false));\n });\n\n // Since the useSettingsMenu hook can make API calls in order to check the links permissions\n // We need to add a loading state to prevent redirecting the user while permissions are being checked\n if (isLoading) {\n return <LoadingIndicatorPage />;\n }\n\n if (!settingId) {\n return <Redirect to=\"/settings/application-infos\" />;\n }\n\n return (\n <Layout sideNav={<SettingsNav menu={menu} />}>\n <Helmet\n title={formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n />\n\n <Switch>\n <Route path=\"/settings/application-infos\" component={ApplicationInfoPage} exact />\n {adminRoutes}\n {pluginsRoutes}\n </Switch>\n </Layout>\n );\n};\n\nexport const makeUniqueRoutes = (routes: IRoute[]) =>\n routes.filter(\n (route, index, refArray) => refArray.findIndex((obj) => obj.to === route.to) === index\n );\n\nexport { SettingsPage };\n"],"names":["ceLinks","sections","permission"],"mappings":"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"}
@@ -7,10 +7,10 @@ const helperPlugin = require("@strapi/helper-plugin");
7
7
  const reactHelmet = require("react-helmet");
8
8
  const reactIntl = require("react-intl");
9
9
  const reactRouterDom = require("react-router-dom");
10
- const index = require("./index-FHaNkHzZ.js");
10
+ const index = require("./index-VVFXvHui.js");
11
11
  const sortBy = require("lodash/sortBy");
12
12
  const reactRedux = require("react-redux");
13
- const AuthenticatedApp = require("./AuthenticatedApp-lxbOleXq.js");
13
+ const AuthenticatedApp = require("./AuthenticatedApp-GwqLAmWf.js");
14
14
  const v2 = require("@strapi/design-system/v2");
15
15
  const Icons = require("@strapi/icons");
16
16
  const styled = require("styled-components");
@@ -117,7 +117,7 @@ const useSettingsMenu = () => {
117
117
  const ceLinks = React__namespace.useMemo(() => index.SETTINGS_LINKS_CE(), []);
118
118
  const { admin: adminLinks, global: globalLinks } = index.useEnterprise(
119
119
  ceLinks,
120
- async () => (await Promise.resolve().then(() => require("./constants-kqVTJhs8.js"))).SETTINGS_LINKS_EE(),
120
+ async () => (await Promise.resolve().then(() => require("./constants-V4u3m4GP.js"))).SETTINGS_LINKS_EE(),
121
121
  {
122
122
  combine(ceLinks2, eeLinks) {
123
123
  return {
@@ -206,6 +206,10 @@ const useSettingsMenu = () => {
206
206
  const CustomIcon = styled__default.default(designSystem.Icon)`
207
207
  right: 15px;
208
208
  position: absolute;
209
+
210
+ path {
211
+ fill: ${({ theme }) => theme.colors.warning500};
212
+ }
209
213
  `;
210
214
  const SettingsNav = ({ menu }) => {
211
215
  const { formatMessage } = reactIntl.useIntl();
@@ -246,7 +250,8 @@ const SettingsNav = ({ menu }) => {
246
250
  onClick: handleClickOnLink(link.to),
247
251
  children: [
248
252
  formatMessage(link.intlLabel),
249
- link?.lockIcon && /* @__PURE__ */ jsxRuntime.jsx(CustomIcon, { width: `${15 / 16}rem`, height: `${15 / 16}rem`, as: Icons.Lock })
253
+ // TODO: to replace with another name in v5
254
+ link?.lockIcon && /* @__PURE__ */ jsxRuntime.jsx(CustomIcon, { width: `${15 / 16}rem`, height: `${15 / 16}rem`, as: Icons.Lightning })
250
255
  ]
251
256
  },
252
257
  link.id
@@ -257,7 +262,7 @@ const SettingsNav = ({ menu }) => {
257
262
  const ROUTES_CE = [
258
263
  {
259
264
  async Component() {
260
- const { ProtectedListPage } = await Promise.resolve().then(() => require("./ListPage-qJqkmYmG.js"));
265
+ const { ProtectedListPage } = await Promise.resolve().then(() => require("./ListPage-6Zx3R5DW.js"));
261
266
  return ProtectedListPage;
262
267
  },
263
268
  to: "/settings/roles",
@@ -265,7 +270,7 @@ const ROUTES_CE = [
265
270
  },
266
271
  {
267
272
  async Component() {
268
- const { ProtectedCreatePage } = await Promise.resolve().then(() => require("./CreatePage-I04A9LP8.js"));
273
+ const { ProtectedCreatePage } = await Promise.resolve().then(() => require("./CreatePage-uSbsMOlx.js"));
269
274
  return ProtectedCreatePage;
270
275
  },
271
276
  to: "/settings/roles/duplicate/:id",
@@ -273,7 +278,7 @@ const ROUTES_CE = [
273
278
  },
274
279
  {
275
280
  async Component() {
276
- const { ProtectedCreatePage } = await Promise.resolve().then(() => require("./CreatePage-I04A9LP8.js"));
281
+ const { ProtectedCreatePage } = await Promise.resolve().then(() => require("./CreatePage-uSbsMOlx.js"));
277
282
  return ProtectedCreatePage;
278
283
  },
279
284
  to: "/settings/roles/new",
@@ -281,7 +286,7 @@ const ROUTES_CE = [
281
286
  },
282
287
  {
283
288
  async Component() {
284
- const { ProtectedEditPage } = await Promise.resolve().then(() => require("./EditPage-B1SVKQb0.js"));
289
+ const { ProtectedEditPage } = await Promise.resolve().then(() => require("./EditPage-klamWo6h.js"));
285
290
  return ProtectedEditPage;
286
291
  },
287
292
  to: "/settings/roles/:id",
@@ -289,7 +294,7 @@ const ROUTES_CE = [
289
294
  },
290
295
  {
291
296
  async Component() {
292
- const { ProtectedListPage } = await Promise.resolve().then(() => require("./ListPage-tqVIW5k4.js"));
297
+ const { ProtectedListPage } = await Promise.resolve().then(() => require("./ListPage-IxKRGRLp.js"));
293
298
  return ProtectedListPage;
294
299
  },
295
300
  to: "/settings/users",
@@ -297,7 +302,7 @@ const ROUTES_CE = [
297
302
  },
298
303
  {
299
304
  async Component() {
300
- const { ProtectedEditPage } = await Promise.resolve().then(() => require("./EditPage-YcUodPsx.js"));
305
+ const { ProtectedEditPage } = await Promise.resolve().then(() => require("./EditPage-TZkt7oiJ.js"));
301
306
  return ProtectedEditPage;
302
307
  },
303
308
  to: "/settings/users/:id",
@@ -305,7 +310,7 @@ const ROUTES_CE = [
305
310
  },
306
311
  {
307
312
  async Component() {
308
- const { ProtectedCreatePage } = await Promise.resolve().then(() => require("./CreatePage-ss2dbhLF.js"));
313
+ const { ProtectedCreatePage } = await Promise.resolve().then(() => require("./CreatePage-EFAWmPTp.js"));
309
314
  return ProtectedCreatePage;
310
315
  },
311
316
  to: "/settings/webhooks/create",
@@ -313,7 +318,7 @@ const ROUTES_CE = [
313
318
  },
314
319
  {
315
320
  async Component() {
316
- const { ProtectedEditPage } = await Promise.resolve().then(() => require("./EditPage-NJUXeBbY.js")).then((n) => n.EditPage$1);
321
+ const { ProtectedEditPage } = await Promise.resolve().then(() => require("./EditPage-1erhUV2a.js")).then((n) => n.EditPage$1);
317
322
  return ProtectedEditPage;
318
323
  },
319
324
  to: "/settings/webhooks/:id",
@@ -321,7 +326,7 @@ const ROUTES_CE = [
321
326
  },
322
327
  {
323
328
  async Component() {
324
- const { ProtectedListPage } = await Promise.resolve().then(() => require("./ListPage-8w6D-jVh.js"));
329
+ const { ProtectedListPage } = await Promise.resolve().then(() => require("./ListPage-FSdgF7AW.js"));
325
330
  return ProtectedListPage;
326
331
  },
327
332
  to: "/settings/webhooks",
@@ -329,7 +334,7 @@ const ROUTES_CE = [
329
334
  },
330
335
  {
331
336
  async Component() {
332
- const { ProtectedListView } = await Promise.resolve().then(() => require("./ListView-ZlcQHvJ3.js"));
337
+ const { ProtectedListView } = await Promise.resolve().then(() => require("./ListView-58MuIhqN.js"));
333
338
  return ProtectedListView;
334
339
  },
335
340
  to: "/settings/api-tokens",
@@ -337,7 +342,7 @@ const ROUTES_CE = [
337
342
  },
338
343
  {
339
344
  async Component() {
340
- const { ProtectedCreateView } = await Promise.resolve().then(() => require("./CreateView-jA6jhg3-.js"));
345
+ const { ProtectedCreateView } = await Promise.resolve().then(() => require("./CreateView-Nq5EH2Un.js"));
341
346
  return ProtectedCreateView;
342
347
  },
343
348
  to: "/settings/api-tokens/create",
@@ -345,7 +350,7 @@ const ROUTES_CE = [
345
350
  },
346
351
  {
347
352
  async Component() {
348
- const { ProtectedEditView } = await Promise.resolve().then(() => require("./EditViewPage-vpD6HRFw.js"));
353
+ const { ProtectedEditView } = await Promise.resolve().then(() => require("./EditViewPage-Kogv4OZT.js"));
349
354
  return ProtectedEditView;
350
355
  },
351
356
  to: "/settings/api-tokens/:id",
@@ -353,7 +358,7 @@ const ROUTES_CE = [
353
358
  },
354
359
  {
355
360
  async Component() {
356
- const { ProtectedCreateView } = await Promise.resolve().then(() => require("./CreateView-6nLdBBKy.js"));
361
+ const { ProtectedCreateView } = await Promise.resolve().then(() => require("./CreateView-Jx2ig5cK.js"));
357
362
  return ProtectedCreateView;
358
363
  },
359
364
  to: "/settings/transfer-tokens/create",
@@ -361,7 +366,7 @@ const ROUTES_CE = [
361
366
  },
362
367
  {
363
368
  async Component() {
364
- const { ProtectedListView } = await Promise.resolve().then(() => require("./ListView-1WKGsXzK.js"));
369
+ const { ProtectedListView } = await Promise.resolve().then(() => require("./ListView-bfLqvFXh.js"));
365
370
  return ProtectedListView;
366
371
  },
367
372
  to: "/settings/transfer-tokens",
@@ -369,7 +374,7 @@ const ROUTES_CE = [
369
374
  },
370
375
  {
371
376
  async Component() {
372
- const { ProtectedEditView } = await Promise.resolve().then(() => require("./EditView-nVpR9Bvw.js"));
377
+ const { ProtectedEditView } = await Promise.resolve().then(() => require("./EditView-S9A0iaIp.js"));
373
378
  return ProtectedEditView;
374
379
  },
375
380
  to: "/settings/transfer-tokens/:id",
@@ -844,7 +849,7 @@ const ApplicationInfoPage = () => {
844
849
  } = helperPlugin.useAppInfo();
845
850
  const AdminSeatInfo = index.useEnterprise(
846
851
  AdminSeatInfoCE,
847
- async () => (await Promise.resolve().then(() => require("./AdminSeatInfo-3kscEri6.js"))).AdminSeatInfoEE
852
+ async () => (await Promise.resolve().then(() => require("./AdminSeatInfo-qpztJtaj.js"))).AdminSeatInfoEE
848
853
  );
849
854
  const {
850
855
  allowedActions: { canRead, canUpdate }
@@ -1052,7 +1057,7 @@ const SettingsPage = () => {
1052
1057
  const { isLoading, menu } = useSettingsMenu();
1053
1058
  const routes = index.useEnterprise(
1054
1059
  ROUTES_CE,
1055
- async () => (await Promise.resolve().then(() => require("./constants-34QE-ssT.js"))).ROUTES_EE,
1060
+ async () => (await Promise.resolve().then(() => require("./constants-GZfTWpMb.js"))).ROUTES_EE,
1056
1061
  {
1057
1062
  combine(ceRoutes, eeRoutes) {
1058
1063
  return [...ceRoutes, ...eeRoutes];
@@ -1097,4 +1102,4 @@ const makeUniqueRoutes = (routes) => routes.filter(
1097
1102
  );
1098
1103
  exports.SettingsPage = SettingsPage;
1099
1104
  exports.makeUniqueRoutes = makeUniqueRoutes;
1100
- //# sourceMappingURL=SettingsPage-BLZhhOZm.js.map
1105
+ //# sourceMappingURL=SettingsPage-QVwnqX3X.js.map