@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.
- package/dist/_chunks/{AdminSeatInfo-U_XS6M6s.mjs → AdminSeatInfo-8fY_jz9W.mjs} +3 -3
- package/dist/_chunks/{AdminSeatInfo-U_XS6M6s.mjs.map → AdminSeatInfo-8fY_jz9W.mjs.map} +1 -1
- package/dist/_chunks/{AdminSeatInfo-3kscEri6.js → AdminSeatInfo-qpztJtaj.js} +3 -3
- package/dist/_chunks/{AdminSeatInfo-3kscEri6.js.map → AdminSeatInfo-qpztJtaj.js.map} +1 -1
- package/dist/_chunks/{AuthenticatedApp-lxbOleXq.js → AuthenticatedApp-GwqLAmWf.js} +40 -23
- package/dist/_chunks/AuthenticatedApp-GwqLAmWf.js.map +1 -0
- package/dist/_chunks/{AuthenticatedApp-0lbYYEL6.mjs → AuthenticatedApp-uHd-MPEB.mjs} +42 -25
- package/dist/_chunks/AuthenticatedApp-uHd-MPEB.mjs.map +1 -0
- package/dist/_chunks/{CreateActionEE-wQpjzlQY.mjs → CreateActionEE-WP9T6D2U.mjs} +2 -2
- package/dist/_chunks/{CreateActionEE-wQpjzlQY.mjs.map → CreateActionEE-WP9T6D2U.mjs.map} +1 -1
- package/dist/_chunks/{CreateActionEE-4Ia1GtCm.js → CreateActionEE-pG9tIhQb.js} +2 -2
- package/dist/_chunks/{CreateActionEE-4Ia1GtCm.js.map → CreateActionEE-pG9tIhQb.js.map} +1 -1
- package/dist/_chunks/{CreatePage-ZRESExEH.mjs → CreatePage-BPiHGUEm.mjs} +8 -8
- package/dist/_chunks/{CreatePage-ZRESExEH.mjs.map → CreatePage-BPiHGUEm.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-ss2dbhLF.js → CreatePage-EFAWmPTp.js} +6 -6
- package/dist/_chunks/{CreatePage-ss2dbhLF.js.map → CreatePage-EFAWmPTp.js.map} +1 -1
- package/dist/_chunks/{CreatePage-KcWY_3Ok.mjs → CreatePage-jYqwUlP4.mjs} +3 -3
- package/dist/_chunks/{CreatePage-KcWY_3Ok.mjs.map → CreatePage-jYqwUlP4.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-D88IVvvF.js → CreatePage-kAcK42bK.js} +8 -8
- package/dist/_chunks/{CreatePage-D88IVvvF.js.map → CreatePage-kAcK42bK.js.map} +1 -1
- package/dist/_chunks/{CreatePage-I04A9LP8.js → CreatePage-uSbsMOlx.js} +3 -3
- package/dist/_chunks/{CreatePage-I04A9LP8.js.map → CreatePage-uSbsMOlx.js.map} +1 -1
- package/dist/_chunks/{CreatePage-z4ZBkS23.mjs → CreatePage-ycE9avz8.mjs} +6 -6
- package/dist/_chunks/{CreatePage-z4ZBkS23.mjs.map → CreatePage-ycE9avz8.mjs.map} +1 -1
- package/dist/_chunks/{CreateView-okjLiPdb.mjs → CreateView-1Fty2wTv.mjs} +6 -6
- package/dist/_chunks/{CreateView-okjLiPdb.mjs.map → CreateView-1Fty2wTv.mjs.map} +1 -1
- package/dist/_chunks/{CreateView-6nLdBBKy.js → CreateView-Jx2ig5cK.js} +6 -6
- package/dist/_chunks/{CreateView-6nLdBBKy.js.map → CreateView-Jx2ig5cK.js.map} +1 -1
- package/dist/_chunks/{CreateView-jA6jhg3-.js → CreateView-Nq5EH2Un.js} +6 -6
- package/dist/_chunks/{CreateView-jA6jhg3-.js.map → CreateView-Nq5EH2Un.js.map} +1 -1
- package/dist/_chunks/{CreateView-jwhpW8_9.mjs → CreateView-ZCk5E7rv.mjs} +6 -6
- package/dist/_chunks/{CreateView-jwhpW8_9.mjs.map → CreateView-ZCk5E7rv.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-NJUXeBbY.js → EditPage-1erhUV2a.js} +6 -6
- package/dist/_chunks/{EditPage-NJUXeBbY.js.map → EditPage-1erhUV2a.js.map} +1 -1
- package/dist/_chunks/{EditPage-Za05JaXt.mjs → EditPage-SMjmVuCg.mjs} +6 -6
- package/dist/_chunks/{EditPage-Za05JaXt.mjs.map → EditPage-SMjmVuCg.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-YcUodPsx.js → EditPage-TZkt7oiJ.js} +6 -6
- package/dist/_chunks/{EditPage-YcUodPsx.js.map → EditPage-TZkt7oiJ.js.map} +1 -1
- package/dist/_chunks/{EditPage-TVheouo9.js → EditPage-T_V04Xj-.js} +9 -9
- package/dist/_chunks/{EditPage-TVheouo9.js.map → EditPage-T_V04Xj-.js.map} +1 -1
- package/dist/_chunks/{EditPage-JONsb219.mjs → EditPage-fpjgwn7T.mjs} +9 -9
- package/dist/_chunks/{EditPage-JONsb219.mjs.map → EditPage-fpjgwn7T.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-B1SVKQb0.js → EditPage-klamWo6h.js} +4 -4
- package/dist/_chunks/{EditPage-B1SVKQb0.js.map → EditPage-klamWo6h.js.map} +1 -1
- package/dist/_chunks/{EditPage-H1GaqsPD.mjs → EditPage-o5z_2B0F.mjs} +4 -4
- package/dist/_chunks/{EditPage-H1GaqsPD.mjs.map → EditPage-o5z_2B0F.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-QoGStdUX.mjs → EditPage-qDZC_xqv.mjs} +6 -6
- package/dist/_chunks/{EditPage-QoGStdUX.mjs.map → EditPage-qDZC_xqv.mjs.map} +1 -1
- package/dist/_chunks/{EditView-nVpR9Bvw.js → EditView-S9A0iaIp.js} +4 -4
- package/dist/_chunks/{EditView-nVpR9Bvw.js.map → EditView-S9A0iaIp.js.map} +1 -1
- package/dist/_chunks/{EditView-tb5yJvsj.mjs → EditView-lny0iCX4.mjs} +4 -4
- package/dist/_chunks/{EditView-tb5yJvsj.mjs.map → EditView-lny0iCX4.mjs.map} +1 -1
- package/dist/_chunks/{EditViewPage-VP3QMQWr.mjs → EditViewPage-8D5Y4h70.mjs} +4 -4
- package/dist/_chunks/{EditViewPage-VP3QMQWr.mjs.map → EditViewPage-8D5Y4h70.mjs.map} +1 -1
- package/dist/_chunks/{EditViewPage-vpD6HRFw.js → EditViewPage-Kogv4OZT.js} +4 -4
- package/dist/_chunks/{EditViewPage-vpD6HRFw.js.map → EditViewPage-Kogv4OZT.js.map} +1 -1
- package/dist/_chunks/{EventsTable-R1dGc0f2.js → EventsTable-6ux_fTpD.js} +6 -6
- package/dist/_chunks/{EventsTable-R1dGc0f2.js.map → EventsTable-6ux_fTpD.js.map} +1 -1
- package/dist/_chunks/{EventsTable-o63exNQr.mjs → EventsTable-Q06Y91lz.mjs} +6 -6
- package/dist/_chunks/{EventsTable-o63exNQr.mjs.map → EventsTable-Q06Y91lz.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-yjafRxVs.js → HomePage--9Rzt4Bs.js} +6 -6
- package/dist/_chunks/{HomePage-yjafRxVs.js.map → HomePage--9Rzt4Bs.js.map} +1 -1
- package/dist/_chunks/{HomePage-7YZnnhqh.mjs → HomePage-0GKWBVtu.mjs} +5 -5
- package/dist/_chunks/{HomePage-7YZnnhqh.mjs.map → HomePage-0GKWBVtu.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-QPkJoZ4c.js → HomePage-_j7brLbF.js} +5 -5
- package/dist/_chunks/{HomePage-QPkJoZ4c.js.map → HomePage-_j7brLbF.js.map} +1 -1
- package/dist/_chunks/{HomePage-jNlAA81t.mjs → HomePage-tcGsmU4V.mjs} +6 -6
- package/dist/_chunks/{HomePage-jNlAA81t.mjs.map → HomePage-tcGsmU4V.mjs.map} +1 -1
- package/dist/_chunks/{InformationBoxEE-3LIRn7dg.js → InformationBoxEE-aVepYyiD.js} +3 -3
- package/dist/_chunks/{InformationBoxEE-3LIRn7dg.js.map → InformationBoxEE-aVepYyiD.js.map} +1 -1
- package/dist/_chunks/{InformationBoxEE-koyu3Wew.mjs → InformationBoxEE-jvXxl_nD.mjs} +3 -3
- package/dist/_chunks/{InformationBoxEE-koyu3Wew.mjs.map → InformationBoxEE-jvXxl_nD.mjs.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-p1dCLD-H.mjs → InstalledPluginsPage-VOPjuC3e.mjs} +3 -3
- package/dist/_chunks/{InstalledPluginsPage-p1dCLD-H.mjs.map → InstalledPluginsPage-VOPjuC3e.mjs.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-DIzBnpfK.js → InstalledPluginsPage-pgEs5qgT.js} +3 -3
- package/dist/_chunks/{InstalledPluginsPage-DIzBnpfK.js.map → InstalledPluginsPage-pgEs5qgT.js.map} +1 -1
- package/dist/_chunks/{Layout-G1k4LM-Y.js → Layout-S4tn8vwZ.js} +2 -2
- package/dist/_chunks/{Layout-G1k4LM-Y.js.map → Layout-S4tn8vwZ.js.map} +1 -1
- package/dist/_chunks/{Layout-n4rT_uDB.mjs → Layout-k-VdyhDA.mjs} +2 -2
- package/dist/_chunks/{Layout-n4rT_uDB.mjs.map → Layout-k-VdyhDA.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-qJqkmYmG.js → ListPage-6Zx3R5DW.js} +4 -4
- package/dist/_chunks/{ListPage-qJqkmYmG.js.map → ListPage-6Zx3R5DW.js.map} +1 -1
- package/dist/_chunks/{ListPage-WwmsejNN.mjs → ListPage-AjR55r98.mjs} +4 -4
- package/dist/_chunks/{ListPage-WwmsejNN.mjs.map → ListPage-AjR55r98.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-8w6D-jVh.js → ListPage-FSdgF7AW.js} +3 -3
- package/dist/_chunks/{ListPage-8w6D-jVh.js.map → ListPage-FSdgF7AW.js.map} +1 -1
- package/dist/_chunks/{ListPage-tqVIW5k4.js → ListPage-IxKRGRLp.js} +8 -8
- package/dist/_chunks/{ListPage-tqVIW5k4.js.map → ListPage-IxKRGRLp.js.map} +1 -1
- package/dist/_chunks/{ListPage-Qz1QBu1U.mjs → ListPage-Yc8zcacp.mjs} +8 -8
- package/dist/_chunks/{ListPage-Qz1QBu1U.mjs.map → ListPage-Yc8zcacp.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-cVk3Bc9t.js → ListPage-ZfPNukhQ.js} +7 -7
- package/dist/_chunks/{ListPage-cVk3Bc9t.js.map → ListPage-ZfPNukhQ.js.map} +1 -1
- package/dist/_chunks/{ListPage-F2abqUc7.js → ListPage-aGSGBu2G.js} +6 -6
- package/dist/_chunks/{ListPage-F2abqUc7.js.map → ListPage-aGSGBu2G.js.map} +1 -1
- package/dist/_chunks/{ListPage-vOdTh503.mjs → ListPage-gqeEyGWN.mjs} +7 -7
- package/dist/_chunks/{ListPage-vOdTh503.mjs.map → ListPage-gqeEyGWN.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-GvJnM1rf.js → ListPage-ieSYo23R.js} +2 -2
- package/dist/_chunks/{ListPage-GvJnM1rf.js.map → ListPage-ieSYo23R.js.map} +1 -1
- package/dist/_chunks/{ListPage-Whvg01F1.mjs → ListPage-pmC7kZ5-.mjs} +6 -6
- package/dist/_chunks/{ListPage-Whvg01F1.mjs.map → ListPage-pmC7kZ5-.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-omWNFry9.mjs → ListPage-q2-Ceto8.mjs} +2 -2
- package/dist/_chunks/{ListPage-omWNFry9.mjs.map → ListPage-q2-Ceto8.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-6RZ9gRu-.mjs → ListPage-rKtl7kt1.mjs} +3 -3
- package/dist/_chunks/{ListPage-6RZ9gRu-.mjs.map → ListPage-rKtl7kt1.mjs.map} +1 -1
- package/dist/_chunks/{ListView-KfAA0iIH.mjs → ListView-27V4Lfa-.mjs} +3 -3
- package/dist/_chunks/{ListView-KfAA0iIH.mjs.map → ListView-27V4Lfa-.mjs.map} +1 -1
- package/dist/_chunks/{ListView-ZlcQHvJ3.js → ListView-58MuIhqN.js} +3 -3
- package/dist/_chunks/{ListView-ZlcQHvJ3.js.map → ListView-58MuIhqN.js.map} +1 -1
- package/dist/_chunks/{ListView-1WKGsXzK.js → ListView-bfLqvFXh.js} +3 -3
- package/dist/_chunks/{ListView-1WKGsXzK.js.map → ListView-bfLqvFXh.js.map} +1 -1
- package/dist/_chunks/{ListView-GBX5d49E.mjs → ListView-kFCvhxUp.mjs} +3 -3
- package/dist/_chunks/{ListView-GBX5d49E.mjs.map → ListView-kFCvhxUp.mjs.map} +1 -1
- package/dist/_chunks/{Login-Z-obAOV_.js → Login-FSXeOxO7.js} +2 -2
- package/dist/_chunks/{Login-Z-obAOV_.js.map → Login-FSXeOxO7.js.map} +1 -1
- package/dist/_chunks/{Login-QiGzJtzk.mjs → Login-z8P5prGJ.mjs} +2 -2
- package/dist/_chunks/{Login-QiGzJtzk.mjs.map → Login-z8P5prGJ.mjs.map} +1 -1
- package/dist/_chunks/{MagicLinkEE-95iDjl7f.js → MagicLinkEE-hSdeZchp.js} +4 -4
- package/dist/_chunks/{MagicLinkEE-95iDjl7f.js.map → MagicLinkEE-hSdeZchp.js.map} +1 -1
- package/dist/_chunks/{MagicLinkEE-4ZMNpiis.mjs → MagicLinkEE-x_D9UeiC.mjs} +4 -4
- package/dist/_chunks/{MagicLinkEE-4ZMNpiis.mjs.map → MagicLinkEE-x_D9UeiC.mjs.map} +1 -1
- package/dist/_chunks/{MarketplacePage-vEeLVnHa.js → MarketplacePage-BHCUa97F.js} +3 -3
- package/dist/_chunks/{MarketplacePage-vEeLVnHa.js.map → MarketplacePage-BHCUa97F.js.map} +1 -1
- package/dist/_chunks/{MarketplacePage-fxKPePNY.mjs → MarketplacePage-p49o3c4x.mjs} +3 -3
- package/dist/_chunks/{MarketplacePage-fxKPePNY.mjs.map → MarketplacePage-p49o3c4x.mjs.map} +1 -1
- package/dist/_chunks/{Permissions-n03gxmL_.mjs → Permissions-wG2AsKlz.mjs} +2 -2
- package/dist/_chunks/{Permissions-n03gxmL_.mjs.map → Permissions-wG2AsKlz.mjs.map} +1 -1
- package/dist/_chunks/{Permissions-AbrBsIIE.js → Permissions-wh1QXZKR.js} +2 -2
- package/dist/_chunks/{Permissions-AbrBsIIE.js.map → Permissions-wh1QXZKR.js.map} +1 -1
- package/dist/_chunks/{ProfilePage-6GDtE_5t.js → ProfilePage-9ldr9VQS.js} +3 -3
- package/dist/_chunks/{ProfilePage-6GDtE_5t.js.map → ProfilePage-9ldr9VQS.js.map} +1 -1
- package/dist/_chunks/{ProfilePage--TajCvU5.mjs → ProfilePage-Btt1kCii.mjs} +3 -3
- package/dist/_chunks/{ProfilePage--TajCvU5.mjs.map → ProfilePage-Btt1kCii.mjs.map} +1 -1
- package/dist/_chunks/{ReviewWorkflowsColumn-VVXE2ap7.js → ReviewWorkflowsColumn-LO8IPdwI.js} +2 -2
- package/dist/_chunks/{ReviewWorkflowsColumn-VVXE2ap7.js.map → ReviewWorkflowsColumn-LO8IPdwI.js.map} +1 -1
- package/dist/_chunks/{ReviewWorkflowsColumn-A2vgIO7Z.mjs → ReviewWorkflowsColumn-PaGlHp0O.mjs} +2 -2
- package/dist/_chunks/{ReviewWorkflowsColumn-A2vgIO7Z.mjs.map → ReviewWorkflowsColumn-PaGlHp0O.mjs.map} +1 -1
- package/dist/_chunks/{SelectRoles-oqWbpRZY.js → SelectRoles-nYuGXi2w.js} +3 -3
- package/dist/_chunks/{SelectRoles-oqWbpRZY.js.map → SelectRoles-nYuGXi2w.js.map} +1 -1
- package/dist/_chunks/{SelectRoles-zpbOY00F.mjs → SelectRoles-t6U3MuLd.mjs} +3 -3
- package/dist/_chunks/{SelectRoles-zpbOY00F.mjs.map → SelectRoles-t6U3MuLd.mjs.map} +1 -1
- package/dist/_chunks/{SettingsPage-7hH4YDJD.mjs → SettingsPage-203QQP4D.mjs} +28 -23
- package/dist/_chunks/SettingsPage-203QQP4D.mjs.map +1 -0
- package/dist/_chunks/{SettingsPage-BLZhhOZm.js → SettingsPage-QVwnqX3X.js} +27 -22
- package/dist/_chunks/SettingsPage-QVwnqX3X.js.map +1 -0
- package/dist/_chunks/{SingleSignOnPage-2JhF9yLD.mjs → SingleSignOnPage-eUBu7WdW.mjs} +3 -3
- package/dist/_chunks/{SingleSignOnPage-2JhF9yLD.mjs.map → SingleSignOnPage-eUBu7WdW.mjs.map} +1 -1
- package/dist/_chunks/{SingleSignOnPage-zySVgs7l.js → SingleSignOnPage-gWSaa6Ic.js} +3 -3
- package/dist/_chunks/{SingleSignOnPage-zySVgs7l.js.map → SingleSignOnPage-gWSaa6Ic.js.map} +1 -1
- package/dist/_chunks/{TokenTypeSelect-avtVlM4U.mjs → TokenTypeSelect-d7r9RfHH.mjs} +2 -2
- package/dist/_chunks/{TokenTypeSelect-avtVlM4U.mjs.map → TokenTypeSelect-d7r9RfHH.mjs.map} +1 -1
- package/dist/_chunks/{TokenTypeSelect-yKyBg6et.js → TokenTypeSelect-nQWw1Kue.js} +2 -2
- package/dist/_chunks/{TokenTypeSelect-yKyBg6et.js.map → TokenTypeSelect-nQWw1Kue.js.map} +1 -1
- package/dist/_chunks/{apiTokens-Fz46KjUa.js → apiTokens--9B2ADks.js} +2 -2
- package/dist/_chunks/{apiTokens-Fz46KjUa.js.map → apiTokens--9B2ADks.js.map} +1 -1
- package/dist/_chunks/{apiTokens-_uEFOSxo.mjs → apiTokens-ieIZrY-I.mjs} +2 -2
- package/dist/_chunks/{apiTokens-_uEFOSxo.mjs.map → apiTokens-ieIZrY-I.mjs.map} +1 -1
- package/dist/_chunks/{constants-IK-0WZ7u.mjs → constants-0MWiAEHa.mjs} +2 -2
- package/dist/_chunks/{constants-IK-0WZ7u.mjs.map → constants-0MWiAEHa.mjs.map} +1 -1
- package/dist/_chunks/{constants-34QE-ssT.js → constants-GZfTWpMb.js} +6 -6
- package/dist/_chunks/{constants-34QE-ssT.js.map → constants-GZfTWpMb.js.map} +1 -1
- package/dist/_chunks/{constants-muu7Jvr4.mjs → constants-M-hxyu7y.mjs} +4 -4
- package/dist/_chunks/{constants-muu7Jvr4.mjs.map → constants-M-hxyu7y.mjs.map} +1 -1
- package/dist/_chunks/{constants-n13NeBdx.js → constants-QSWHHNDF.js} +2 -2
- package/dist/_chunks/{constants-n13NeBdx.js.map → constants-QSWHHNDF.js.map} +1 -1
- package/dist/_chunks/{constants-kqVTJhs8.js → constants-V4u3m4GP.js} +2 -2
- package/dist/_chunks/{constants-kqVTJhs8.js.map → constants-V4u3m4GP.js.map} +1 -1
- package/dist/_chunks/{constants--_M6UoZ4.mjs → constants-bvG_vqvv.mjs} +6 -6
- package/dist/_chunks/{constants--_M6UoZ4.mjs.map → constants-bvG_vqvv.mjs.map} +1 -1
- package/dist/_chunks/{constants-kwbjUNGi.js → constants-ns5EB6W6.js} +4 -4
- package/dist/_chunks/{constants-kwbjUNGi.js.map → constants-ns5EB6W6.js.map} +1 -1
- package/dist/_chunks/{constants-tICE3HHu.mjs → constants-z24OMzMK.mjs} +2 -2
- package/dist/_chunks/{constants-tICE3HHu.mjs.map → constants-z24OMzMK.mjs.map} +1 -1
- package/dist/_chunks/{index-FHaNkHzZ.js → index-VVFXvHui.js} +13 -10
- package/dist/_chunks/index-VVFXvHui.js.map +1 -0
- package/dist/_chunks/{index-8K1fBeVH.mjs → index-dMS-26Ft.mjs} +13 -10
- package/dist/_chunks/index-dMS-26Ft.mjs.map +1 -0
- package/dist/_chunks/{reviewWorkflows-WCYQPbYX.mjs → reviewWorkflows-DZodpwgN.mjs} +2 -2
- package/dist/_chunks/{reviewWorkflows-WCYQPbYX.mjs.map → reviewWorkflows-DZodpwgN.mjs.map} +1 -1
- package/dist/_chunks/{reviewWorkflows-4eBk1YNs.js → reviewWorkflows-OjxtR4Ir.js} +2 -2
- package/dist/_chunks/{reviewWorkflows-4eBk1YNs.js.map → reviewWorkflows-OjxtR4Ir.js.map} +1 -1
- package/dist/_chunks/{transferTokens-g5OOUo9l.js → transferTokens-jGPDAh0Z.js} +2 -2
- package/dist/_chunks/{transferTokens-g5OOUo9l.js.map → transferTokens-jGPDAh0Z.js.map} +1 -1
- package/dist/_chunks/{transferTokens-S2XiLG7D.mjs → transferTokens-vSrhgUOJ.mjs} +2 -2
- package/dist/_chunks/{transferTokens-S2XiLG7D.mjs.map → transferTokens-vSrhgUOJ.mjs.map} +1 -1
- package/dist/_chunks/{useAdminRoles-nq87-w6F.js → useAdminRoles-JpzXMwG-.js} +2 -2
- package/dist/_chunks/{useAdminRoles-nq87-w6F.js.map → useAdminRoles-JpzXMwG-.js.map} +1 -1
- package/dist/_chunks/{useAdminRoles-LgKfXXz2.mjs → useAdminRoles-TJePFZ1V.mjs} +2 -2
- package/dist/_chunks/{useAdminRoles-LgKfXXz2.mjs.map → useAdminRoles-TJePFZ1V.mjs.map} +1 -1
- package/dist/_chunks/{useContentTypes-oLxeeWt4.js → useContentTypes-GwxFetb1.js} +2 -2
- package/dist/_chunks/{useContentTypes-oLxeeWt4.js.map → useContentTypes-GwxFetb1.js.map} +1 -1
- package/dist/_chunks/{useContentTypes-lUhEXXr8.mjs → useContentTypes-J1YsHDXc.mjs} +2 -2
- package/dist/_chunks/{useContentTypes-lUhEXXr8.mjs.map → useContentTypes-J1YsHDXc.mjs.map} +1 -1
- package/dist/_chunks/{useLicenseLimitNotification-vzmVHxuO.js → useLicenseLimitNotification-LNpXWxKq.js} +2 -2
- package/dist/_chunks/{useLicenseLimitNotification-vzmVHxuO.js.map → useLicenseLimitNotification-LNpXWxKq.js.map} +1 -1
- package/dist/_chunks/{useLicenseLimitNotification-uxikTXVQ.mjs → useLicenseLimitNotification-eKpsFExc.mjs} +2 -2
- package/dist/_chunks/{useLicenseLimitNotification-uxikTXVQ.mjs.map → useLicenseLimitNotification-eKpsFExc.mjs.map} +1 -1
- package/dist/_chunks/{useReviewWorkflows-br5LG5gi.js → useReviewWorkflows-54Onj1it.js} +2 -2
- package/dist/_chunks/{useReviewWorkflows-br5LG5gi.js.map → useReviewWorkflows-54Onj1it.js.map} +1 -1
- package/dist/_chunks/{useReviewWorkflows-5B04Sj5C.mjs → useReviewWorkflows-H0dbPFwV.mjs} +2 -2
- package/dist/_chunks/{useReviewWorkflows-5B04Sj5C.mjs.map → useReviewWorkflows-H0dbPFwV.mjs.map} +1 -1
- package/dist/_chunks/{useWebhooks-GXgjznJO.js → useWebhooks-qzzi2dzq.js} +2 -2
- package/dist/_chunks/{useWebhooks-GXgjznJO.js.map → useWebhooks-qzzi2dzq.js.map} +1 -1
- package/dist/_chunks/{useWebhooks-iOOrR2-A.mjs → useWebhooks-tlVKrkap.mjs} +2 -2
- package/dist/_chunks/{useWebhooks-iOOrR2-A.mjs.map → useWebhooks-tlVKrkap.mjs.map} +1 -1
- package/dist/_chunks/{validateWorkflow-PqK5EbxP.js → validateWorkflow-UadsNyHw.js} +2 -2
- package/dist/_chunks/{validateWorkflow-PqK5EbxP.js.map → validateWorkflow-UadsNyHw.js.map} +1 -1
- package/dist/_chunks/{validateWorkflow-Ija2Jla4.mjs → validateWorkflow-maQiwiaR.mjs} +2 -2
- package/dist/_chunks/{validateWorkflow-Ija2Jla4.mjs.map → validateWorkflow-maQiwiaR.mjs.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/package.json +14 -14
- package/dist/_chunks/AuthenticatedApp-0lbYYEL6.mjs.map +0 -1
- package/dist/_chunks/AuthenticatedApp-lxbOleXq.js.map +0 -1
- package/dist/_chunks/SettingsPage-7hH4YDJD.mjs.map +0 -1
- package/dist/_chunks/SettingsPage-BLZhhOZm.js.map +0 -1
- package/dist/_chunks/index-8K1fBeVH.mjs.map +0 -1
- 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-
|
|
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-
|
|
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 {
|
|
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-
|
|
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
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
1105
|
+
//# sourceMappingURL=SettingsPage-QVwnqX3X.js.map
|