@strapi/admin 4.24.2 → 4.24.3
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-msTowhkC.mjs → AdminSeatInfo-_8WVfI2k.mjs} +3 -4
- package/dist/_chunks/{AdminSeatInfo-msTowhkC.mjs.map → AdminSeatInfo-_8WVfI2k.mjs.map} +1 -1
- package/dist/_chunks/{AdminSeatInfo-ice0rqfj.js → AdminSeatInfo-fdPAODrT.js} +3 -4
- package/dist/_chunks/{AdminSeatInfo-ice0rqfj.js.map → AdminSeatInfo-fdPAODrT.js.map} +1 -1
- package/dist/_chunks/{AuthenticatedApp-mwUDaq54.mjs → AuthenticatedApp-0W-A9CKn.mjs} +24 -24
- package/dist/_chunks/AuthenticatedApp-0W-A9CKn.mjs.map +1 -0
- package/dist/_chunks/{AuthenticatedApp-37pJCvqK.js → AuthenticatedApp-dvvFgV0a.js} +24 -24
- package/dist/_chunks/AuthenticatedApp-dvvFgV0a.js.map +1 -0
- package/dist/_chunks/{CreateActionEE-qhpYbYfd.js → CreateActionEE-qW2hEfot.js} +2 -3
- package/dist/_chunks/{CreateActionEE-qhpYbYfd.js.map → CreateActionEE-qW2hEfot.js.map} +1 -1
- package/dist/_chunks/{CreateActionEE-G1vqMGc4.mjs → CreateActionEE-yhlazfz4.mjs} +2 -3
- package/dist/_chunks/{CreateActionEE-G1vqMGc4.mjs.map → CreateActionEE-yhlazfz4.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-CjdJKMmQ.mjs → CreatePage-7lgLZNL_.mjs} +6 -7
- package/dist/_chunks/{CreatePage-CjdJKMmQ.mjs.map → CreatePage-7lgLZNL_.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-VYLW8x7d.js → CreatePage-CmrFQMJC.js} +3 -4
- package/dist/_chunks/{CreatePage-VYLW8x7d.js.map → CreatePage-CmrFQMJC.js.map} +1 -1
- package/dist/_chunks/{CreatePage-bn0GIOU2.js → CreatePage-E-FvhPuI.js} +8 -9
- package/dist/_chunks/{CreatePage-bn0GIOU2.js.map → CreatePage-E-FvhPuI.js.map} +1 -1
- package/dist/_chunks/{CreatePage-maCdrbIM.mjs → CreatePage-R_LEACGf.mjs} +8 -9
- package/dist/_chunks/{CreatePage-maCdrbIM.mjs.map → CreatePage-R_LEACGf.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-nPqePntV.mjs → CreatePage-WBJSFt1L.mjs} +3 -4
- package/dist/_chunks/{CreatePage-nPqePntV.mjs.map → CreatePage-WBJSFt1L.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-gqf4m07m.js → CreatePage-s86FxN96.js} +6 -7
- package/dist/_chunks/{CreatePage-gqf4m07m.js.map → CreatePage-s86FxN96.js.map} +1 -1
- package/dist/_chunks/{CreateView-sQq5KoPf.mjs → CreateView-QIHJRLXd.mjs} +6 -7
- package/dist/_chunks/{CreateView-sQq5KoPf.mjs.map → CreateView-QIHJRLXd.mjs.map} +1 -1
- package/dist/_chunks/{CreateView-Zg2pF3A3.mjs → CreateView-Uil4HEmI.mjs} +6 -7
- package/dist/_chunks/{CreateView-Zg2pF3A3.mjs.map → CreateView-Uil4HEmI.mjs.map} +1 -1
- package/dist/_chunks/{CreateView-xcUO8ux3.js → CreateView-Z1S1YP34.js} +6 -7
- package/dist/_chunks/{CreateView-xcUO8ux3.js.map → CreateView-Z1S1YP34.js.map} +1 -1
- package/dist/_chunks/{CreateView-6jabEwh-.js → CreateView-qeInzVb7.js} +6 -7
- package/dist/_chunks/{CreateView-6jabEwh-.js.map → CreateView-qeInzVb7.js.map} +1 -1
- package/dist/_chunks/{EditPage-duWAjXYX.mjs → EditPage-26cM6Br1.mjs} +6 -7
- package/dist/_chunks/{EditPage-duWAjXYX.mjs.map → EditPage-26cM6Br1.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-9uq3Djtt.js → EditPage-CJjc7Mry.js} +9 -10
- package/dist/_chunks/{EditPage-9uq3Djtt.js.map → EditPage-CJjc7Mry.js.map} +1 -1
- package/dist/_chunks/{EditPage-zp0GtSNb.js → EditPage-aHkkOEtD.js} +4 -5
- package/dist/_chunks/{EditPage-zp0GtSNb.js.map → EditPage-aHkkOEtD.js.map} +1 -1
- package/dist/_chunks/{EditPage-g7uTzClj.mjs → EditPage-jBeiCR0x.mjs} +4 -5
- package/dist/_chunks/{EditPage-g7uTzClj.mjs.map → EditPage-jBeiCR0x.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-IgqCUwmH.js → EditPage-meUEmcmo.js} +6 -6
- package/dist/_chunks/{EditPage-IgqCUwmH.js.map → EditPage-meUEmcmo.js.map} +1 -1
- package/dist/_chunks/{EditPage-Z67qO-SC.mjs → EditPage-pV2YK6mV.mjs} +6 -6
- package/dist/_chunks/{EditPage-Z67qO-SC.mjs.map → EditPage-pV2YK6mV.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-jODUO1eD.js → EditPage-px7lwDfY.js} +6 -7
- package/dist/_chunks/{EditPage-jODUO1eD.js.map → EditPage-px7lwDfY.js.map} +1 -1
- package/dist/_chunks/{EditPage-G7FCdXnu.mjs → EditPage-yYXStg87.mjs} +9 -10
- package/dist/_chunks/{EditPage-G7FCdXnu.mjs.map → EditPage-yYXStg87.mjs.map} +1 -1
- package/dist/_chunks/{EditView-7JTd04II.js → EditView-6wM2eONF.js} +4 -5
- package/dist/_chunks/{EditView-7JTd04II.js.map → EditView-6wM2eONF.js.map} +1 -1
- package/dist/_chunks/{EditView-82CiHhjQ.mjs → EditView-r1HOA27b.mjs} +4 -5
- package/dist/_chunks/{EditView-82CiHhjQ.mjs.map → EditView-r1HOA27b.mjs.map} +1 -1
- package/dist/_chunks/{EditViewPage-xe_iSkWE.mjs → EditViewPage-4bV32Q7r.mjs} +4 -5
- package/dist/_chunks/{EditViewPage-xe_iSkWE.mjs.map → EditViewPage-4bV32Q7r.mjs.map} +1 -1
- package/dist/_chunks/{EditViewPage-9L4T7oU9.js → EditViewPage-8suVqokC.js} +4 -5
- package/dist/_chunks/{EditViewPage-9L4T7oU9.js.map → EditViewPage-8suVqokC.js.map} +1 -1
- package/dist/_chunks/{EventsTable-kxRwmlPl.js → EventsTable-Ftc5pejf.js} +6 -7
- package/dist/_chunks/{EventsTable-kxRwmlPl.js.map → EventsTable-Ftc5pejf.js.map} +1 -1
- package/dist/_chunks/{EventsTable-21zTYIpO.mjs → EventsTable-bsy7mgkN.mjs} +6 -7
- package/dist/_chunks/{EventsTable-21zTYIpO.mjs.map → EventsTable-bsy7mgkN.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-_uYyvQsm.mjs → HomePage-1ud8e5XT.mjs} +5 -6
- package/dist/_chunks/{HomePage-_uYyvQsm.mjs.map → HomePage-1ud8e5XT.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-M2FT0DMk.js → HomePage-8ggsrnev.js} +5 -6
- package/dist/_chunks/{HomePage-M2FT0DMk.js.map → HomePage-8ggsrnev.js.map} +1 -1
- package/dist/_chunks/{HomePage-7TLt6m3d.mjs → HomePage-aDvEczFh.mjs} +6 -7
- package/dist/_chunks/{HomePage-7TLt6m3d.mjs.map → HomePage-aDvEczFh.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-eZjlGczi.js → HomePage-xFGSMMww.js} +6 -7
- package/dist/_chunks/{HomePage-eZjlGczi.js.map → HomePage-xFGSMMww.js.map} +1 -1
- package/dist/_chunks/{InformationBoxEE-zD9In6HV.js → InformationBoxEE-A2ujADFv.js} +3 -4
- package/dist/_chunks/{InformationBoxEE-zD9In6HV.js.map → InformationBoxEE-A2ujADFv.js.map} +1 -1
- package/dist/_chunks/{InformationBoxEE-2EwO0KK_.mjs → InformationBoxEE-zSYNqXtZ.mjs} +3 -4
- package/dist/_chunks/{InformationBoxEE-2EwO0KK_.mjs.map → InformationBoxEE-zSYNqXtZ.mjs.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-8GCuar9g.js → InstalledPluginsPage-Xv7kCAsO.js} +3 -4
- package/dist/_chunks/{InstalledPluginsPage-8GCuar9g.js.map → InstalledPluginsPage-Xv7kCAsO.js.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-tjNMQF0h.mjs → InstalledPluginsPage-xIBYKYPq.mjs} +3 -4
- package/dist/_chunks/{InstalledPluginsPage-tjNMQF0h.mjs.map → InstalledPluginsPage-xIBYKYPq.mjs.map} +1 -1
- package/dist/_chunks/{Layout-rtK1C2cc.mjs → Layout-kVEDYKjZ.mjs} +2 -2
- package/dist/_chunks/{Layout-rtK1C2cc.mjs.map → Layout-kVEDYKjZ.mjs.map} +1 -1
- package/dist/_chunks/{Layout-h-ufQja_.js → Layout-ozKmjzbz.js} +2 -2
- package/dist/_chunks/{Layout-h-ufQja_.js.map → Layout-ozKmjzbz.js.map} +1 -1
- package/dist/_chunks/{ListPage-ikkZkcEy.mjs → ListPage-5iTFDpe-.mjs} +4 -5
- package/dist/_chunks/{ListPage-ikkZkcEy.mjs.map → ListPage-5iTFDpe-.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-RJ22zkuW.js → ListPage-HgFd2Cws.js} +8 -9
- package/dist/_chunks/{ListPage-RJ22zkuW.js.map → ListPage-HgFd2Cws.js.map} +1 -1
- package/dist/_chunks/{ListPage-ni8ifZmh.js → ListPage-KoaGD8iE.js} +3 -4
- package/dist/_chunks/{ListPage-ni8ifZmh.js.map → ListPage-KoaGD8iE.js.map} +1 -1
- package/dist/_chunks/{ListPage-q233N3Yy.mjs → ListPage-KtyVYRvB.mjs} +7 -8
- package/dist/_chunks/{ListPage-q233N3Yy.mjs.map → ListPage-KtyVYRvB.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-DSz3EjDF.mjs → ListPage-RZZQIdBT.mjs} +6 -7
- package/dist/_chunks/{ListPage-DSz3EjDF.mjs.map → ListPage-RZZQIdBT.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-Boipi8db.mjs → ListPage-ZQalZLZt.mjs} +3 -4
- package/dist/_chunks/{ListPage-Boipi8db.mjs.map → ListPage-ZQalZLZt.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-Wtb2VOPY.mjs → ListPage-bu783mQv.mjs} +2 -3
- package/dist/_chunks/{ListPage-Wtb2VOPY.mjs.map → ListPage-bu783mQv.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-aiKp4qXt.js → ListPage-d6Qy0aWV.js} +4 -5
- package/dist/_chunks/{ListPage-aiKp4qXt.js.map → ListPage-d6Qy0aWV.js.map} +1 -1
- package/dist/_chunks/{ListPage-Xnb4Tk9u.js → ListPage-du5SItim.js} +6 -7
- package/dist/_chunks/{ListPage-Xnb4Tk9u.js.map → ListPage-du5SItim.js.map} +1 -1
- package/dist/_chunks/{ListPage-ryMS4krU.js → ListPage-kRuB5e4n.js} +2 -3
- package/dist/_chunks/{ListPage-ryMS4krU.js.map → ListPage-kRuB5e4n.js.map} +1 -1
- package/dist/_chunks/{ListPage-VrkhWNOn.mjs → ListPage-lCvnc3iq.mjs} +8 -9
- package/dist/_chunks/{ListPage-VrkhWNOn.mjs.map → ListPage-lCvnc3iq.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-9gY4nYhr.js → ListPage-yI278EXh.js} +7 -8
- package/dist/_chunks/{ListPage-9gY4nYhr.js.map → ListPage-yI278EXh.js.map} +1 -1
- package/dist/_chunks/{ListView-OmXnXzrq.mjs → ListView-ebjkV0Qn.mjs} +3 -4
- package/dist/_chunks/{ListView-OmXnXzrq.mjs.map → ListView-ebjkV0Qn.mjs.map} +1 -1
- package/dist/_chunks/{ListView-k5K_1Drm.mjs → ListView-k-063mrg.mjs} +3 -4
- package/dist/_chunks/{ListView-k5K_1Drm.mjs.map → ListView-k-063mrg.mjs.map} +1 -1
- package/dist/_chunks/{ListView-myKzCpED.js → ListView-p6uHjVs9.js} +3 -4
- package/dist/_chunks/{ListView-myKzCpED.js.map → ListView-p6uHjVs9.js.map} +1 -1
- package/dist/_chunks/{ListView-6pfAjC0k.js → ListView-xePUNiV9.js} +3 -4
- package/dist/_chunks/{ListView-6pfAjC0k.js.map → ListView-xePUNiV9.js.map} +1 -1
- package/dist/_chunks/{Login-S4yT953g.mjs → Login-GqfmOsm6.mjs} +2 -3
- package/dist/_chunks/{Login-S4yT953g.mjs.map → Login-GqfmOsm6.mjs.map} +1 -1
- package/dist/_chunks/{Login-EFMgHMTf.js → Login-OI2su1GC.js} +2 -3
- package/dist/_chunks/{Login-EFMgHMTf.js.map → Login-OI2su1GC.js.map} +1 -1
- package/dist/_chunks/{MagicLinkEE-635HjFvU.js → MagicLinkEE-FcXopU1u.js} +4 -5
- package/dist/_chunks/{MagicLinkEE-635HjFvU.js.map → MagicLinkEE-FcXopU1u.js.map} +1 -1
- package/dist/_chunks/{MagicLinkEE-wSCWfqQy.mjs → MagicLinkEE-b2IcvqS1.mjs} +4 -5
- package/dist/_chunks/{MagicLinkEE-wSCWfqQy.mjs.map → MagicLinkEE-b2IcvqS1.mjs.map} +1 -1
- package/dist/_chunks/{MarketplacePage-jRJvWvb0.js → MarketplacePage-9z1R0T1b.js} +3 -4
- package/dist/_chunks/{MarketplacePage-jRJvWvb0.js.map → MarketplacePage-9z1R0T1b.js.map} +1 -1
- package/dist/_chunks/{MarketplacePage-KvvmUXsF.mjs → MarketplacePage-Ehut4NEK.mjs} +3 -4
- package/dist/_chunks/{MarketplacePage-KvvmUXsF.mjs.map → MarketplacePage-Ehut4NEK.mjs.map} +1 -1
- package/dist/_chunks/{Permissions-vUzWLTrF.mjs → Permissions--3sZ-eg8.mjs} +2 -2
- package/dist/_chunks/{Permissions-vUzWLTrF.mjs.map → Permissions--3sZ-eg8.mjs.map} +1 -1
- package/dist/_chunks/{Permissions-DxXhYNaU.js → Permissions-0jgnqArp.js} +2 -2
- package/dist/_chunks/{Permissions-DxXhYNaU.js.map → Permissions-0jgnqArp.js.map} +1 -1
- package/dist/_chunks/{ProfilePage-RPrdXESU.js → ProfilePage-HCD8iiDz.js} +4 -5
- package/dist/_chunks/ProfilePage-HCD8iiDz.js.map +1 -0
- package/dist/_chunks/{ProfilePage-jF0S8J5r.mjs → ProfilePage-rByTEZSv.mjs} +4 -5
- package/dist/_chunks/ProfilePage-rByTEZSv.mjs.map +1 -0
- package/dist/_chunks/{ReviewWorkflowsColumn-7hm623C3.mjs → ReviewWorkflowsColumn-GuEM0Pzw.mjs} +2 -3
- package/dist/_chunks/{ReviewWorkflowsColumn-7hm623C3.mjs.map → ReviewWorkflowsColumn-GuEM0Pzw.mjs.map} +1 -1
- package/dist/_chunks/{ReviewWorkflowsColumn-HyjHUAKm.js → ReviewWorkflowsColumn-cwsnu2ZR.js} +2 -3
- package/dist/_chunks/{ReviewWorkflowsColumn-HyjHUAKm.js.map → ReviewWorkflowsColumn-cwsnu2ZR.js.map} +1 -1
- package/dist/_chunks/{SelectRoles-7izrL01-.js → SelectRoles-JMx8T14x.js} +3 -3
- package/dist/_chunks/{SelectRoles-7izrL01-.js.map → SelectRoles-JMx8T14x.js.map} +1 -1
- package/dist/_chunks/{SelectRoles-6aDhwkrc.mjs → SelectRoles-SPS56XJu.mjs} +3 -3
- package/dist/_chunks/{SelectRoles-6aDhwkrc.mjs.map → SelectRoles-SPS56XJu.mjs.map} +1 -1
- package/dist/_chunks/{SettingsPage-DL5ocN-i.mjs → SettingsPage-55PUQgmA.mjs} +21 -22
- package/dist/_chunks/{SettingsPage-DL5ocN-i.mjs.map → SettingsPage-55PUQgmA.mjs.map} +1 -1
- package/dist/_chunks/{SettingsPage-f3OI822o.js → SettingsPage-x4AKyEnW.js} +21 -22
- package/dist/_chunks/{SettingsPage-f3OI822o.js.map → SettingsPage-x4AKyEnW.js.map} +1 -1
- package/dist/_chunks/{SingleSignOnPage-suMNEOy9.js → SingleSignOnPage-NRMmwjF0.js} +3 -4
- package/dist/_chunks/{SingleSignOnPage-suMNEOy9.js.map → SingleSignOnPage-NRMmwjF0.js.map} +1 -1
- package/dist/_chunks/{SingleSignOnPage-HUFfSGpF.mjs → SingleSignOnPage-mbZtYqh1.mjs} +3 -4
- package/dist/_chunks/{SingleSignOnPage-HUFfSGpF.mjs.map → SingleSignOnPage-mbZtYqh1.mjs.map} +1 -1
- package/dist/_chunks/{TokenTypeSelect-e7IvKM2A.mjs → TokenTypeSelect-T4JplhIP.mjs} +2 -2
- package/dist/_chunks/{TokenTypeSelect-e7IvKM2A.mjs.map → TokenTypeSelect-T4JplhIP.mjs.map} +1 -1
- package/dist/_chunks/{TokenTypeSelect-BXMkQw7b.js → TokenTypeSelect-mzw7r8sl.js} +2 -2
- package/dist/_chunks/{TokenTypeSelect-BXMkQw7b.js.map → TokenTypeSelect-mzw7r8sl.js.map} +1 -1
- package/dist/_chunks/{apiTokens-KLQNNQzp.mjs → apiTokens-CUBfON9a.mjs} +2 -2
- package/dist/_chunks/{apiTokens-KLQNNQzp.mjs.map → apiTokens-CUBfON9a.mjs.map} +1 -1
- package/dist/_chunks/{apiTokens-d9kE_O7-.js → apiTokens-FKSBkURH.js} +2 -2
- package/dist/_chunks/{apiTokens-d9kE_O7-.js.map → apiTokens-FKSBkURH.js.map} +1 -1
- package/dist/_chunks/{constants-wzbsXi4H.mjs → constants-KYmN2NOr.mjs} +3 -4
- package/dist/_chunks/constants-KYmN2NOr.mjs.map +1 -0
- package/dist/_chunks/{constants-oYLxKaVi.js → constants-Ws4oXuLS.js} +3 -4
- package/dist/_chunks/constants-Ws4oXuLS.js.map +1 -0
- package/dist/_chunks/{constants-E0WzQSUP.js → constants-Z11Xre4u.js} +2 -3
- package/dist/_chunks/{constants-E0WzQSUP.js.map → constants-Z11Xre4u.js.map} +1 -1
- package/dist/_chunks/{constants-cv3ug7Yf.js → constants-dvnXMd4F.js} +4 -5
- package/dist/_chunks/{constants-cv3ug7Yf.js.map → constants-dvnXMd4F.js.map} +1 -1
- package/dist/_chunks/{constants-4nSxaRi-.mjs → constants-fsggVjP9.mjs} +2 -3
- package/dist/_chunks/{constants-4nSxaRi-.mjs.map → constants-fsggVjP9.mjs.map} +1 -1
- package/dist/_chunks/{constants-i46nPwHv.mjs → constants-mGmqWhng.mjs} +6 -6
- package/dist/_chunks/{constants-i46nPwHv.mjs.map → constants-mGmqWhng.mjs.map} +1 -1
- package/dist/_chunks/{constants-kKexfumd.mjs → constants-scI6GjKg.mjs} +4 -5
- package/dist/_chunks/{constants-kKexfumd.mjs.map → constants-scI6GjKg.mjs.map} +1 -1
- package/dist/_chunks/{constants-fvXBcpSn.js → constants-xvtwsVOy.js} +6 -6
- package/dist/_chunks/{constants-fvXBcpSn.js.map → constants-xvtwsVOy.js.map} +1 -1
- package/dist/_chunks/{index-KTSQuD27.mjs → index-54UXR7Wc.mjs} +30 -27
- package/dist/_chunks/index-54UXR7Wc.mjs.map +1 -0
- package/dist/_chunks/{index-hDD1JNph.js → index-kZ-K27W9.js} +30 -28
- package/dist/_chunks/index-kZ-K27W9.js.map +1 -0
- package/dist/_chunks/{reviewWorkflows-iSoKgLsu.mjs → reviewWorkflows-A6sfQAOx.mjs} +2 -2
- package/dist/_chunks/{reviewWorkflows-iSoKgLsu.mjs.map → reviewWorkflows-A6sfQAOx.mjs.map} +1 -1
- package/dist/_chunks/{reviewWorkflows-kVI9a9Uo.js → reviewWorkflows-FHvDJlqd.js} +2 -2
- package/dist/_chunks/{reviewWorkflows-kVI9a9Uo.js.map → reviewWorkflows-FHvDJlqd.js.map} +1 -1
- package/dist/_chunks/{transferTokens-dn_nj46e.js → transferTokens-DCO_Nrwf.js} +2 -2
- package/dist/_chunks/{transferTokens-dn_nj46e.js.map → transferTokens-DCO_Nrwf.js.map} +1 -1
- package/dist/_chunks/{transferTokens-54MSoPVf.mjs → transferTokens-Lyu3xygE.mjs} +2 -2
- package/dist/_chunks/{transferTokens-54MSoPVf.mjs.map → transferTokens-Lyu3xygE.mjs.map} +1 -1
- package/dist/_chunks/{useAdminRoles-KVBW5LUK.js → useAdminRoles--o-EQss7.js} +2 -2
- package/dist/_chunks/{useAdminRoles-KVBW5LUK.js.map → useAdminRoles--o-EQss7.js.map} +1 -1
- package/dist/_chunks/{useAdminRoles-V24M44MX.mjs → useAdminRoles-eAVDHW69.mjs} +2 -2
- package/dist/_chunks/{useAdminRoles-V24M44MX.mjs.map → useAdminRoles-eAVDHW69.mjs.map} +1 -1
- package/dist/_chunks/{useContentTypes-8IA4FDIC.mjs → useContentTypes-j--ijKnN.mjs} +2 -2
- package/dist/_chunks/{useContentTypes-8IA4FDIC.mjs.map → useContentTypes-j--ijKnN.mjs.map} +1 -1
- package/dist/_chunks/{useContentTypes-YpwPl5I-.js → useContentTypes-j9gMwsYu.js} +2 -2
- package/dist/_chunks/{useContentTypes-YpwPl5I-.js.map → useContentTypes-j9gMwsYu.js.map} +1 -1
- package/dist/_chunks/{useLicenseLimitNotification-fUptUf7T.js → useLicenseLimitNotification-L4kV-m6_.js} +2 -2
- package/dist/_chunks/{useLicenseLimitNotification-fUptUf7T.js.map → useLicenseLimitNotification-L4kV-m6_.js.map} +1 -1
- package/dist/_chunks/{useLicenseLimitNotification-bAHPAGmF.mjs → useLicenseLimitNotification-VEpn45Ni.mjs} +2 -2
- package/dist/_chunks/{useLicenseLimitNotification-bAHPAGmF.mjs.map → useLicenseLimitNotification-VEpn45Ni.mjs.map} +1 -1
- package/dist/_chunks/{useReviewWorkflows-vSHJYVSZ.js → useReviewWorkflows-a0C1ikFJ.js} +2 -2
- package/dist/_chunks/{useReviewWorkflows-vSHJYVSZ.js.map → useReviewWorkflows-a0C1ikFJ.js.map} +1 -1
- package/dist/_chunks/{useReviewWorkflows-2KLafF6-.mjs → useReviewWorkflows-tIp2ZkjD.mjs} +2 -2
- package/dist/_chunks/{useReviewWorkflows-2KLafF6-.mjs.map → useReviewWorkflows-tIp2ZkjD.mjs.map} +1 -1
- package/dist/_chunks/{useWebhooks-a3eBJpF9.mjs → useWebhooks-4jpSbuXr.mjs} +2 -2
- package/dist/_chunks/{useWebhooks-a3eBJpF9.mjs.map → useWebhooks-4jpSbuXr.mjs.map} +1 -1
- package/dist/_chunks/{useWebhooks-2dIs3KP1.js → useWebhooks-g9J_FFMC.js} +2 -2
- package/dist/_chunks/{useWebhooks-2dIs3KP1.js.map → useWebhooks-g9J_FFMC.js.map} +1 -1
- package/dist/_chunks/{validateWorkflow-jf8eW6S4.js → validateWorkflow-GRDaNqdW.js} +2 -2
- package/dist/_chunks/{validateWorkflow-jf8eW6S4.js.map → validateWorkflow-GRDaNqdW.js.map} +1 -1
- package/dist/_chunks/{validateWorkflow-UGYTILXK.mjs → validateWorkflow-ubW4LNUb.mjs} +2 -2
- package/dist/_chunks/{validateWorkflow-UGYTILXK.mjs.map → validateWorkflow-ubW4LNUb.mjs.map} +1 -1
- package/dist/admin/index.js +1 -2
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -2
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/src/components/Context.d.ts +1 -1
- package/dist/admin/src/features/Auth.d.ts +1 -1
- package/package.json +12 -13
- package/dist/_chunks/AuthenticatedApp-37pJCvqK.js.map +0 -1
- package/dist/_chunks/AuthenticatedApp-mwUDaq54.mjs.map +0 -1
- package/dist/_chunks/ProfilePage-RPrdXESU.js.map +0 -1
- package/dist/_chunks/ProfilePage-jF0S8J5r.mjs.map +0 -1
- package/dist/_chunks/constants-oYLxKaVi.js.map +0 -1
- package/dist/_chunks/constants-wzbsXi4H.mjs.map +0 -1
- package/dist/_chunks/index-KTSQuD27.mjs.map +0 -1
- package/dist/_chunks/index-hDD1JNph.js.map +0 -1
|
@@ -5,8 +5,8 @@ import { useRBAC, pxToRem } from "@strapi/helper-plugin";
|
|
|
5
5
|
import { ExclamationMarkCircle, ExternalLink } from "@strapi/icons";
|
|
6
6
|
import { useIntl } from "react-intl";
|
|
7
7
|
import { useSelector } from "react-redux";
|
|
8
|
-
import { s as selectAdminPermissions } from "./AuthenticatedApp-
|
|
9
|
-
import { m as useLicenseLimits } from "./index-
|
|
8
|
+
import { s as selectAdminPermissions } from "./AuthenticatedApp-0W-A9CKn.mjs";
|
|
9
|
+
import { m as useLicenseLimits } from "./index-54UXR7Wc.mjs";
|
|
10
10
|
import "react";
|
|
11
11
|
import "semver/functions/lt";
|
|
12
12
|
import "semver/functions/valid";
|
|
@@ -24,7 +24,6 @@ import "lodash/isFunction";
|
|
|
24
24
|
import "lodash/merge";
|
|
25
25
|
import "lodash/pick";
|
|
26
26
|
import "react-helmet";
|
|
27
|
-
import "use-context-selector";
|
|
28
27
|
import "@reduxjs/toolkit";
|
|
29
28
|
import "@reduxjs/toolkit/query/react";
|
|
30
29
|
import "axios";
|
|
@@ -164,4 +163,4 @@ const AdminSeatInfoEE = () => {
|
|
|
164
163
|
export {
|
|
165
164
|
AdminSeatInfoEE
|
|
166
165
|
};
|
|
167
|
-
//# sourceMappingURL=AdminSeatInfo-
|
|
166
|
+
//# sourceMappingURL=AdminSeatInfo-_8WVfI2k.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminSeatInfo-
|
|
1
|
+
{"version":3,"file":"AdminSeatInfo-_8WVfI2k.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.tsx"],"sourcesContent":["import { Flex, GridItem, Icon, Tooltip, Typography } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { pxToRem, useRBAC } from '@strapi/helper-plugin';\nimport { ExclamationMarkCircle, ExternalLink } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../../../../admin/src/selectors';\nimport { useLicenseLimits } from '../../../../../hooks/useLicenseLimits';\n\nconst BILLING_STRAPI_CLOUD_URL = 'https://cloud.strapi.io/profile/billing';\nconst BILLING_SELF_HOSTED_URL = 'https://strapi.io/billing/request-seats';\n\nexport const AdminSeatInfoEE = () => {\n const { formatMessage } = useIntl();\n const { settings } = useSelector(selectAdminPermissions);\n const {\n isLoading: isRBACLoading,\n allowedActions: { canRead, canCreate, canUpdate, canDelete },\n } = useRBAC(settings?.users ?? {});\n const {\n license,\n isError,\n isLoading: isLicenseLoading,\n } = useLicenseLimits({\n // TODO: this creates a waterfall which we should avoid to render earlier, but for that\n // we will have to move away from data-fetching hooks to query functions.\n // Short-term we could at least implement a loader, for the user to have visual feedback\n // in case the requests take a while\n enabled: !isRBACLoading && canRead && canCreate && canUpdate && canDelete,\n });\n\n const isLoading = isRBACLoading || isLicenseLoading;\n\n if (isError || isLoading || !license) {\n return null;\n }\n\n const { licenseLimitStatus, enforcementUserCount, permittedSeats, isHostedOnStrapiCloud } =\n license;\n\n if (!permittedSeats) {\n return null;\n }\n\n return (\n <GridItem col={6} s={12}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.application.admin-seats',\n defaultMessage: 'Admin seats',\n })}\n </Typography>\n <Flex gap={2}>\n <Flex>\n <Typography as=\"p\">\n {formatMessage(\n {\n id: 'Settings.application.ee.admin-seats.count',\n defaultMessage: '<text>{enforcementUserCount}</text>/{permittedSeats}',\n },\n {\n permittedSeats,\n enforcementUserCount,\n text: (chunks) =>\n (\n <Typography\n fontWeight=\"semiBold\"\n textColor={enforcementUserCount > permittedSeats ? 'danger500' : undefined}\n >\n {chunks}\n </Typography>\n ) as any,\n }\n )}\n </Typography>\n </Flex>\n {licenseLimitStatus === 'OVER_LIMIT' && (\n <Tooltip\n description={formatMessage({\n id: 'Settings.application.ee.admin-seats.at-limit-tooltip',\n defaultMessage: 'At limit: add seats to invite more users',\n })}\n >\n <Icon\n width={pxToRem(14)}\n height={pxToRem(14)}\n color=\"danger500\"\n as={ExclamationMarkCircle}\n />\n </Tooltip>\n )}\n </Flex>\n <Link\n href={isHostedOnStrapiCloud ? BILLING_STRAPI_CLOUD_URL : BILLING_SELF_HOSTED_URL}\n isExternal\n endIcon={<ExternalLink />}\n >\n {formatMessage(\n {\n id: 'Settings.application.ee.admin-seats.add-seats',\n defaultMessage:\n '{isHostedOnStrapiCloud, select, true {Add seats} other {Contact sales}}',\n },\n { isHostedOnStrapiCloud }\n )}\n </Link>\n </GridItem>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,MAAM,2BAA2B;AACjC,MAAM,0BAA0B;AAEzB,MAAM,kBAAkB,MAAM;AAC7B,QAAA,EAAE,kBAAkB;AAC1B,QAAM,EAAE,SAAA,IAAa,YAAY,sBAAsB;AACjD,QAAA;AAAA,IACJ,WAAW;AAAA,IACX,gBAAgB,EAAE,SAAS,WAAW,WAAW,UAAU;AAAA,EACzD,IAAA,QAAQ,UAAU,SAAS,CAAE,CAAA;AAC3B,QAAA;AAAA,IACJ;AAAA,IACA;AAAA,IACA,WAAW;AAAA,MACT,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,IAKnB,SAAS,CAAC,iBAAiB,WAAW,aAAa,aAAa;AAAA,EAAA,CACjE;AAED,QAAM,YAAY,iBAAiB;AAE/B,MAAA,WAAW,aAAa,CAAC,SAAS;AAC7B,WAAA;AAAA,EACT;AAEA,QAAM,EAAE,oBAAoB,sBAAsB,gBAAgB,0BAChE;AAEF,MAAI,CAAC,gBAAgB;AACZ,WAAA;AAAA,EACT;AAEA,SACG,qBAAA,UAAA,EAAS,KAAK,GAAG,GAAG,IACnB,UAAA;AAAA,IAAA,oBAAC,YAAW,EAAA,SAAQ,SAAQ,WAAU,cACnC,UAAc,cAAA;AAAA,MACb,IAAI;AAAA,MACJ,gBAAgB;AAAA,IACjB,CAAA,GACH;AAAA,IACA,qBAAC,MAAK,EAAA,KAAK,GACT,UAAA;AAAA,MAAA,oBAAC,MACC,EAAA,UAAA,oBAAC,YAAW,EAAA,IAAG,KACZ,UAAA;AAAA,QACC;AAAA,UACE,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAClB;AAAA,QACA;AAAA,UACE;AAAA,UACA;AAAA,UACA,MAAM,CAAC,WAEH;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,YAAW;AAAA,cACX,WAAW,uBAAuB,iBAAiB,cAAc;AAAA,cAEhE,UAAA;AAAA,YAAA;AAAA,UACH;AAAA,QAEN;AAAA,SAEJ,EACF,CAAA;AAAA,MACC,uBAAuB,gBACtB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,aAAa,cAAc;AAAA,YACzB,IAAI;AAAA,YACJ,gBAAgB;AAAA,UAAA,CACjB;AAAA,UAED,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO,QAAQ,EAAE;AAAA,cACjB,QAAQ,QAAQ,EAAE;AAAA,cAClB,OAAM;AAAA,cACN,IAAI;AAAA,YAAA;AAAA,UACN;AAAA,QAAA;AAAA,MACF;AAAA,IAAA,GAEJ;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM,wBAAwB,2BAA2B;AAAA,QACzD,YAAU;AAAA,QACV,6BAAU,cAAa,EAAA;AAAA,QAEtB,UAAA;AAAA,UACC;AAAA,YACE,IAAI;AAAA,YACJ,gBACE;AAAA,UACJ;AAAA,UACA,EAAE,sBAAsB;AAAA,QAC1B;AAAA,MAAA;AAAA,IACF;AAAA,EACF,EAAA,CAAA;AAEJ;"}
|
|
@@ -7,8 +7,8 @@ const helperPlugin = require("@strapi/helper-plugin");
|
|
|
7
7
|
const Icons = require("@strapi/icons");
|
|
8
8
|
const reactIntl = require("react-intl");
|
|
9
9
|
const reactRedux = require("react-redux");
|
|
10
|
-
const AuthenticatedApp = require("./AuthenticatedApp-
|
|
11
|
-
const index = require("./index-
|
|
10
|
+
const AuthenticatedApp = require("./AuthenticatedApp-dvvFgV0a.js");
|
|
11
|
+
const index = require("./index-kZ-K27W9.js");
|
|
12
12
|
require("react");
|
|
13
13
|
require("semver/functions/lt");
|
|
14
14
|
require("semver/functions/valid");
|
|
@@ -26,7 +26,6 @@ require("lodash/isFunction");
|
|
|
26
26
|
require("lodash/merge");
|
|
27
27
|
require("lodash/pick");
|
|
28
28
|
require("react-helmet");
|
|
29
|
-
require("use-context-selector");
|
|
30
29
|
require("@reduxjs/toolkit");
|
|
31
30
|
require("@reduxjs/toolkit/query/react");
|
|
32
31
|
require("axios");
|
|
@@ -164,4 +163,4 @@ const AdminSeatInfoEE = () => {
|
|
|
164
163
|
] });
|
|
165
164
|
};
|
|
166
165
|
exports.AdminSeatInfoEE = AdminSeatInfoEE;
|
|
167
|
-
//# sourceMappingURL=AdminSeatInfo-
|
|
166
|
+
//# sourceMappingURL=AdminSeatInfo-fdPAODrT.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminSeatInfo-
|
|
1
|
+
{"version":3,"file":"AdminSeatInfo-fdPAODrT.js","sources":["../../ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.tsx"],"sourcesContent":["import { Flex, GridItem, Icon, Tooltip, Typography } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { pxToRem, useRBAC } from '@strapi/helper-plugin';\nimport { ExclamationMarkCircle, ExternalLink } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../../../../admin/src/selectors';\nimport { useLicenseLimits } from '../../../../../hooks/useLicenseLimits';\n\nconst BILLING_STRAPI_CLOUD_URL = 'https://cloud.strapi.io/profile/billing';\nconst BILLING_SELF_HOSTED_URL = 'https://strapi.io/billing/request-seats';\n\nexport const AdminSeatInfoEE = () => {\n const { formatMessage } = useIntl();\n const { settings } = useSelector(selectAdminPermissions);\n const {\n isLoading: isRBACLoading,\n allowedActions: { canRead, canCreate, canUpdate, canDelete },\n } = useRBAC(settings?.users ?? {});\n const {\n license,\n isError,\n isLoading: isLicenseLoading,\n } = useLicenseLimits({\n // TODO: this creates a waterfall which we should avoid to render earlier, but for that\n // we will have to move away from data-fetching hooks to query functions.\n // Short-term we could at least implement a loader, for the user to have visual feedback\n // in case the requests take a while\n enabled: !isRBACLoading && canRead && canCreate && canUpdate && canDelete,\n });\n\n const isLoading = isRBACLoading || isLicenseLoading;\n\n if (isError || isLoading || !license) {\n return null;\n }\n\n const { licenseLimitStatus, enforcementUserCount, permittedSeats, isHostedOnStrapiCloud } =\n license;\n\n if (!permittedSeats) {\n return null;\n }\n\n return (\n <GridItem col={6} s={12}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.application.admin-seats',\n defaultMessage: 'Admin seats',\n })}\n </Typography>\n <Flex gap={2}>\n <Flex>\n <Typography as=\"p\">\n {formatMessage(\n {\n id: 'Settings.application.ee.admin-seats.count',\n defaultMessage: '<text>{enforcementUserCount}</text>/{permittedSeats}',\n },\n {\n permittedSeats,\n enforcementUserCount,\n text: (chunks) =>\n (\n <Typography\n fontWeight=\"semiBold\"\n textColor={enforcementUserCount > permittedSeats ? 'danger500' : undefined}\n >\n {chunks}\n </Typography>\n ) as any,\n }\n )}\n </Typography>\n </Flex>\n {licenseLimitStatus === 'OVER_LIMIT' && (\n <Tooltip\n description={formatMessage({\n id: 'Settings.application.ee.admin-seats.at-limit-tooltip',\n defaultMessage: 'At limit: add seats to invite more users',\n })}\n >\n <Icon\n width={pxToRem(14)}\n height={pxToRem(14)}\n color=\"danger500\"\n as={ExclamationMarkCircle}\n />\n </Tooltip>\n )}\n </Flex>\n <Link\n href={isHostedOnStrapiCloud ? BILLING_STRAPI_CLOUD_URL : BILLING_SELF_HOSTED_URL}\n isExternal\n endIcon={<ExternalLink />}\n >\n {formatMessage(\n {\n id: 'Settings.application.ee.admin-seats.add-seats',\n defaultMessage:\n '{isHostedOnStrapiCloud, select, true {Add seats} other {Contact sales}}',\n },\n { isHostedOnStrapiCloud }\n )}\n </Link>\n </GridItem>\n );\n};\n"],"names":["useIntl","useSelector","selectAdminPermissions","useRBAC","useLicenseLimits","jsxs","GridItem","jsx","Typography","Flex","Tooltip","Icon","pxToRem","ExclamationMarkCircle","Link","ExternalLink"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,MAAM,2BAA2B;AACjC,MAAM,0BAA0B;AAEzB,MAAM,kBAAkB,MAAM;AAC7B,QAAA,EAAE,kBAAkBA,UAAAA;AAC1B,QAAM,EAAE,SAAA,IAAaC,WAAA,YAAYC,iBAAsB,sBAAA;AACjD,QAAA;AAAA,IACJ,WAAW;AAAA,IACX,gBAAgB,EAAE,SAAS,WAAW,WAAW,UAAU;AAAA,EACzD,IAAAC,qBAAQ,UAAU,SAAS,CAAE,CAAA;AAC3B,QAAA;AAAA,IACJ;AAAA,IACA;AAAA,IACA,WAAW;AAAA,MACTC,uBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,IAKnB,SAAS,CAAC,iBAAiB,WAAW,aAAa,aAAa;AAAA,EAAA,CACjE;AAED,QAAM,YAAY,iBAAiB;AAE/B,MAAA,WAAW,aAAa,CAAC,SAAS;AAC7B,WAAA;AAAA,EACT;AAEA,QAAM,EAAE,oBAAoB,sBAAsB,gBAAgB,0BAChE;AAEF,MAAI,CAAC,gBAAgB;AACZ,WAAA;AAAA,EACT;AAEA,SACGC,2BAAAA,KAAAC,aAAAA,UAAA,EAAS,KAAK,GAAG,GAAG,IACnB,UAAA;AAAA,IAAAC,+BAACC,aAAAA,YAAW,EAAA,SAAQ,SAAQ,WAAU,cACnC,UAAc,cAAA;AAAA,MACb,IAAI;AAAA,MACJ,gBAAgB;AAAA,IACjB,CAAA,GACH;AAAA,IACAH,2BAAAA,KAACI,aAAAA,MAAK,EAAA,KAAK,GACT,UAAA;AAAA,MAAAF,+BAACE,aAAAA,MACC,EAAA,UAAAF,2BAAA,IAACC,aAAW,YAAA,EAAA,IAAG,KACZ,UAAA;AAAA,QACC;AAAA,UACE,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAClB;AAAA,QACA;AAAA,UACE;AAAA,UACA;AAAA,UACA,MAAM,CAAC,WAEHD,2BAAA;AAAA,YAACC,aAAA;AAAA,YAAA;AAAA,cACC,YAAW;AAAA,cACX,WAAW,uBAAuB,iBAAiB,cAAc;AAAA,cAEhE,UAAA;AAAA,YAAA;AAAA,UACH;AAAA,QAEN;AAAA,SAEJ,EACF,CAAA;AAAA,MACC,uBAAuB,gBACtBD,2BAAA;AAAA,QAACG,aAAA;AAAA,QAAA;AAAA,UACC,aAAa,cAAc;AAAA,YACzB,IAAI;AAAA,YACJ,gBAAgB;AAAA,UAAA,CACjB;AAAA,UAED,UAAAH,2BAAA;AAAA,YAACI,aAAA;AAAA,YAAA;AAAA,cACC,OAAOC,qBAAQ,EAAE;AAAA,cACjB,QAAQA,qBAAQ,EAAE;AAAA,cAClB,OAAM;AAAA,cACN,IAAIC,MAAA;AAAA,YAAA;AAAA,UACN;AAAA,QAAA;AAAA,MACF;AAAA,IAAA,GAEJ;AAAA,IACAN,2BAAA;AAAA,MAACO,GAAA;AAAA,MAAA;AAAA,QACC,MAAM,wBAAwB,2BAA2B;AAAA,QACzD,YAAU;AAAA,QACV,wCAAUC,MAAa,cAAA,EAAA;AAAA,QAEtB,UAAA;AAAA,UACC;AAAA,YACE,IAAI;AAAA,YACJ,gBACE;AAAA,UACJ;AAAA,UACA,EAAE,sBAAsB;AAAA,QAC1B;AAAA,MAAA;AAAA,IACF;AAAA,EACF,EAAA,CAAA;AAEJ;;"}
|
|
@@ -3,7 +3,7 @@ import * as React from "react";
|
|
|
3
3
|
import { pxToRem, useGuidedTour, useTracking, usePersistentState, useAppInfo, useRBACProvider, useStrapiApp, hasPermissions, LoadingIndicatorPage, AppInfoProvider } from "@strapi/helper-plugin";
|
|
4
4
|
import lt from "semver/functions/lt";
|
|
5
5
|
import valid from "semver/functions/valid";
|
|
6
|
-
import { u as useConfiguration, a as useAuth, c as createTypedSelector, b as useOnce, d as createRoute, e as useInformationQuery, f as useGetMyPermissionsQuery, R as RBACProvider, N as NpsSurvey } from "./index-
|
|
6
|
+
import { u as useConfiguration, a as useAuth, c as createTypedSelector, b as useOnce, d as createRoute, e as useInformationQuery, f as useGetMyPermissionsQuery, R as RBACProvider, N as NpsSurvey } from "./index-54UXR7Wc.mjs";
|
|
7
7
|
import produce from "immer";
|
|
8
8
|
import set from "lodash/set";
|
|
9
9
|
import { DndProvider } from "react-dnd";
|
|
@@ -18,7 +18,7 @@ import styled from "styled-components";
|
|
|
18
18
|
import cloneDeep from "lodash/cloneDeep";
|
|
19
19
|
import { useSelector } from "react-redux";
|
|
20
20
|
const name = "@strapi/admin";
|
|
21
|
-
const version = "4.24.
|
|
21
|
+
const version = "4.24.2";
|
|
22
22
|
const description = "Strapi Admin";
|
|
23
23
|
const repository = {
|
|
24
24
|
type: "git",
|
|
@@ -91,13 +91,13 @@ const dependencies = {
|
|
|
91
91
|
"@radix-ui/react-toolbar": "1.0.4",
|
|
92
92
|
"@reduxjs/toolkit": "1.9.7",
|
|
93
93
|
"@strapi/design-system": "1.18.0",
|
|
94
|
-
"@strapi/helper-plugin": "4.24.
|
|
94
|
+
"@strapi/helper-plugin": "4.24.2",
|
|
95
95
|
"@strapi/icons": "1.18.0",
|
|
96
|
-
"@strapi/permissions": "4.24.
|
|
97
|
-
"@strapi/provider-audit-logs-local": "4.24.
|
|
98
|
-
"@strapi/types": "4.24.
|
|
99
|
-
"@strapi/typescript-utils": "4.24.
|
|
100
|
-
"@strapi/utils": "4.24.
|
|
96
|
+
"@strapi/permissions": "4.24.2",
|
|
97
|
+
"@strapi/provider-audit-logs-local": "4.24.2",
|
|
98
|
+
"@strapi/types": "4.24.2",
|
|
99
|
+
"@strapi/typescript-utils": "4.24.2",
|
|
100
|
+
"@strapi/utils": "4.24.2",
|
|
101
101
|
"@vitejs/plugin-react-swc": "3.5.0",
|
|
102
102
|
axios: "1.6.0",
|
|
103
103
|
bcryptjs: "2.4.3",
|
|
@@ -178,7 +178,6 @@ const dependencies = {
|
|
|
178
178
|
"slate-react": "0.98.3",
|
|
179
179
|
"style-loader": "3.3.4",
|
|
180
180
|
typescript: "5.2.2",
|
|
181
|
-
"use-context-selector": "1.4.1",
|
|
182
181
|
vite: "5.0.13",
|
|
183
182
|
webpack: "^5.89.0",
|
|
184
183
|
"webpack-bundle-analyzer": "^4.10.1",
|
|
@@ -187,11 +186,11 @@ const dependencies = {
|
|
|
187
186
|
yup: "0.32.9"
|
|
188
187
|
};
|
|
189
188
|
const devDependencies = {
|
|
190
|
-
"@strapi/admin-test-utils": "4.24.
|
|
191
|
-
"@strapi/data-transfer": "4.24.
|
|
189
|
+
"@strapi/admin-test-utils": "4.24.2",
|
|
190
|
+
"@strapi/data-transfer": "4.24.2",
|
|
192
191
|
"@strapi/pack-up": "4.23.0",
|
|
193
|
-
"@strapi/plugin-content-manager": "4.24.
|
|
194
|
-
"@strapi/strapi": "4.24.
|
|
192
|
+
"@strapi/plugin-content-manager": "4.24.2",
|
|
193
|
+
"@strapi/strapi": "4.24.2",
|
|
195
194
|
"@testing-library/dom": "9.2.0",
|
|
196
195
|
"@testing-library/react": "14.0.0",
|
|
197
196
|
"@testing-library/user-event": "14.4.3",
|
|
@@ -708,7 +707,7 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => {
|
|
|
708
707
|
const { formatMessage } = useIntl();
|
|
709
708
|
const { trackUsage } = useTracking();
|
|
710
709
|
const { pathname } = useLocation();
|
|
711
|
-
const logout = useAuth("Logout"
|
|
710
|
+
const { logout } = useAuth("Logout");
|
|
712
711
|
const initials = userDisplayName.split(" ").map((name2) => name2.substring(0, 1)).join("").substring(0, 2);
|
|
713
712
|
const handleToggleUserLinks = () => setUserLinksVisible((prev) => !prev);
|
|
714
713
|
const handleBlur = (e) => {
|
|
@@ -1195,23 +1194,23 @@ const AppLayout = ({ children, sideNav }) => {
|
|
|
1195
1194
|
] });
|
|
1196
1195
|
};
|
|
1197
1196
|
const CM = React.lazy(
|
|
1198
|
-
() => import("./index-
|
|
1197
|
+
() => import("./index-54UXR7Wc.mjs").then((n) => n.a0).then((mod) => ({ default: mod.App }))
|
|
1199
1198
|
);
|
|
1200
1199
|
const HomePage = React.lazy(
|
|
1201
|
-
() => import("./HomePage-
|
|
1200
|
+
() => import("./HomePage-1ud8e5XT.mjs").then((mod) => ({
|
|
1202
1201
|
default: mod.HomePage
|
|
1203
1202
|
}))
|
|
1204
1203
|
);
|
|
1205
1204
|
const InstalledPluginsPage = React.lazy(
|
|
1206
|
-
() => import("./InstalledPluginsPage-
|
|
1205
|
+
() => import("./InstalledPluginsPage-xIBYKYPq.mjs").then((mod) => ({
|
|
1207
1206
|
default: mod.ProtectedInstalledPluginsPage
|
|
1208
1207
|
}))
|
|
1209
1208
|
);
|
|
1210
1209
|
const MarketplacePage = React.lazy(
|
|
1211
|
-
() => import("./MarketplacePage-
|
|
1210
|
+
() => import("./MarketplacePage-Ehut4NEK.mjs").then((mod) => ({ default: mod.ProtectedMarketplacePage }))
|
|
1212
1211
|
);
|
|
1213
1212
|
const NotFoundPage = React.lazy(
|
|
1214
|
-
() => import("./index-
|
|
1213
|
+
() => import("./index-54UXR7Wc.mjs").then((n) => n.$).then(({ NotFoundPage: NotFoundPage2 }) => ({ default: NotFoundPage2 }))
|
|
1215
1214
|
);
|
|
1216
1215
|
const InternalErrorPage = React.lazy(
|
|
1217
1216
|
() => import("./InternalErrorPage-7JIAF-Ev.mjs").then(({ InternalErrorPage: InternalErrorPage2 }) => ({
|
|
@@ -1219,12 +1218,12 @@ const InternalErrorPage = React.lazy(
|
|
|
1219
1218
|
}))
|
|
1220
1219
|
);
|
|
1221
1220
|
const ProfilePage = React.lazy(
|
|
1222
|
-
() => import("./ProfilePage-
|
|
1221
|
+
() => import("./ProfilePage-rByTEZSv.mjs").then((mod) => ({
|
|
1223
1222
|
default: mod.ProfilePage
|
|
1224
1223
|
}))
|
|
1225
1224
|
);
|
|
1226
1225
|
const SettingsPage = React.lazy(
|
|
1227
|
-
() => import("./SettingsPage-
|
|
1226
|
+
() => import("./SettingsPage-55PUQgmA.mjs").then((mod) => ({
|
|
1228
1227
|
default: mod.SettingsPage
|
|
1229
1228
|
}))
|
|
1230
1229
|
);
|
|
@@ -1325,7 +1324,8 @@ const init = (plugins) => {
|
|
|
1325
1324
|
const strapiVersion = packageJSON.version;
|
|
1326
1325
|
const AuthenticatedApp = () => {
|
|
1327
1326
|
const { setGuidedTourVisibility } = useGuidedTour();
|
|
1328
|
-
const
|
|
1327
|
+
const { user } = useAuth("AuthenticatedApp");
|
|
1328
|
+
const userInfo = user;
|
|
1329
1329
|
const [userDisplayName, setUserDisplayName] = React.useState(
|
|
1330
1330
|
() => userInfo ? userInfo.username || getFullName(userInfo.firstname ?? "", userInfo.lastname) : ""
|
|
1331
1331
|
);
|
|
@@ -1358,7 +1358,7 @@ const AuthenticatedApp = () => {
|
|
|
1358
1358
|
});
|
|
1359
1359
|
}
|
|
1360
1360
|
}, [showReleaseNotification]);
|
|
1361
|
-
const userRoles =
|
|
1361
|
+
const userRoles = user?.roles;
|
|
1362
1362
|
React.useEffect(() => {
|
|
1363
1363
|
if (userRoles) {
|
|
1364
1364
|
const isUserSuperAdmin = userRoles.find(({ code }) => code === "strapi-super-admin");
|
|
@@ -1415,4 +1415,4 @@ export {
|
|
|
1415
1415
|
getFullName as g,
|
|
1416
1416
|
selectAdminPermissions as s
|
|
1417
1417
|
};
|
|
1418
|
-
//# sourceMappingURL=AuthenticatedApp-
|
|
1418
|
+
//# sourceMappingURL=AuthenticatedApp-0W-A9CKn.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthenticatedApp-0W-A9CKn.mjs","sources":["../../admin/src/utils/getFullName.ts","../../admin/src/utils/hashAdminUserEmail.ts","../../admin/src/components/GuidedTour/constants.ts","../../admin/src/components/GuidedTour/Ornaments.tsx","../../admin/src/components/GuidedTour/Modal.tsx","../../admin/src/components/LeftMenu.tsx","../../admin/src/assets/images/onboarding-preview.png","../../admin/src/components/Onboarding.tsx","../../admin/src/selectors.ts","../../admin/src/hooks/useMenu.ts","../../admin/src/layouts/AppLayout.tsx","../../admin/src/pages/Admin.tsx","../../admin/src/components/PluginsInitializer.tsx","../../admin/src/components/AuthenticatedApp.tsx"],"sourcesContent":["export function getFullName(firstname: string, lastname: string | null = '') {\n return [firstname, lastname].filter((str) => str).join(' ');\n}\n","import { SanitizedAdminUser } from '../../../shared/contracts/shared';\n\nexport const utils = {\n bufferToHex(buffer: ArrayBuffer) {\n return [...new Uint8Array(buffer)].map((b) => b.toString(16).padStart(2, '0')).join('');\n },\n async digestMessage(message: string) {\n const msgUint8 = new TextEncoder().encode(message);\n const hashBuffer = await crypto.subtle.digest('SHA-256', msgUint8);\n\n return this.bufferToHex(hashBuffer);\n },\n};\n\nexport async function hashAdminUserEmail(payload?: SanitizedAdminUser) {\n if (!payload || !payload.email) {\n return null;\n }\n\n try {\n return await utils.digestMessage(payload.email);\n } catch (error) {\n return null;\n }\n}\n","const LAYOUT_DATA = {\n contentTypeBuilder: {\n home: {\n title: {\n id: 'app.components.GuidedTour.home.CTB.title',\n defaultMessage: '🧠 Build the content structure',\n },\n cta: {\n title: {\n id: 'app.components.GuidedTour.home.CTB.cta.title',\n defaultMessage: 'Go to the Content type Builder',\n },\n type: 'REDIRECT',\n target: '/plugins/content-type-builder',\n },\n trackingEvent: 'didClickGuidedTourHomepageContentTypeBuilder',\n },\n create: {\n title: {\n id: 'app.components.GuidedTour.CTB.create.title',\n defaultMessage: '🧠 Create a first Collection type',\n },\n content: {\n id: 'app.components.GuidedTour.CTB.create.content',\n defaultMessage:\n '<p>Collection types help you manage several entries, Single types are suitable to manage only one entry.</p> <p>Ex: For a Blog website, Articles would be a Collection type whereas a Homepage would be a Single type.</p>',\n },\n cta: {\n title: {\n id: 'app.components.GuidedTour.CTB.create.cta.title',\n defaultMessage: 'Build a Collection type',\n },\n type: 'CLOSE',\n },\n trackingEvent: 'didClickGuidedTourStep1CollectionType',\n },\n success: {\n title: {\n id: 'app.components.GuidedTour.CTB.success.title',\n defaultMessage: 'Step 1: Completed ✅',\n },\n content: {\n id: 'app.components.GuidedTour.CTB.success.content',\n defaultMessage: '<p>Good going!</p><b>⚡️ What would you like to share with the world?</b>',\n },\n cta: {\n title: {\n id: 'app.components.GuidedTour.create-content',\n defaultMessage: 'Create content',\n },\n type: 'REDIRECT',\n target: '/content-manager',\n },\n trackingEvent: 'didCreateGuidedTourCollectionType',\n },\n },\n contentManager: {\n home: {\n title: {\n id: 'app.components.GuidedTour.home.CM.title',\n defaultMessage: '⚡️ What would you like to share with the world?',\n },\n cta: {\n title: {\n id: 'app.components.GuidedTour.create-content',\n defaultMessage: 'Create content',\n },\n type: 'REDIRECT',\n target: '/content-manager',\n },\n trackingEvent: 'didClickGuidedTourHomepageContentManager',\n },\n create: {\n title: {\n id: 'app.components.GuidedTour.CM.create.title',\n defaultMessage: '⚡️ Create content',\n },\n content: {\n id: 'app.components.GuidedTour.CM.create.content',\n defaultMessage:\n \"<p>Create and manage all the content here in the Content Manager.</p><p>Ex: Taking the Blog website example further, one can write an Article, save and publish it as they like.</p><p>💡 Quick tip - Don't forget to hit publish on the content you create.</p>\",\n },\n cta: {\n title: {\n id: 'app.components.GuidedTour.create-content',\n defaultMessage: 'Create content',\n },\n type: 'CLOSE',\n },\n trackingEvent: 'didClickGuidedTourStep2ContentManager',\n },\n success: {\n title: {\n id: 'app.components.GuidedTour.CM.success.title',\n defaultMessage: 'Step 2: Completed ✅',\n },\n content: {\n id: 'app.components.GuidedTour.CM.success.content',\n defaultMessage: '<p>Awesome, one last step to go!</p><b>🚀 See content in action</b>',\n },\n cta: {\n title: {\n id: 'app.components.GuidedTour.CM.success.cta.title',\n defaultMessage: 'Test the API',\n },\n type: 'REDIRECT',\n target: '/settings/api-tokens',\n },\n trackingEvent: 'didCreateGuidedTourEntry',\n },\n },\n apiTokens: {\n home: {\n title: {\n id: 'app.components.GuidedTour.apiTokens.create.title',\n defaultMessage: '🚀 See content in action',\n },\n cta: {\n title: {\n id: 'app.components.GuidedTour.home.apiTokens.cta.title',\n defaultMessage: 'Test the API',\n },\n type: 'REDIRECT',\n target: '/settings/api-tokens',\n },\n trackingEvent: 'didClickGuidedTourHomepageApiTokens',\n },\n create: {\n title: {\n id: 'app.components.GuidedTour.apiTokens.create.title',\n defaultMessage: '🚀 See content in action',\n },\n content: {\n id: 'app.components.GuidedTour.apiTokens.create.content',\n defaultMessage:\n '<p>Generate an authentication token here and retrieve the content you just created.</p>',\n },\n cta: {\n title: {\n id: 'app.components.GuidedTour.apiTokens.create.cta.title',\n defaultMessage: 'Generate an API Token',\n },\n type: 'CLOSE',\n },\n trackingEvent: 'didClickGuidedTourStep3ApiTokens',\n },\n success: {\n title: {\n id: 'app.components.GuidedTour.apiTokens.success.title',\n defaultMessage: 'Step 3: Completed ✅',\n },\n content: {\n id: 'app.components.GuidedTour.apiTokens.success.content',\n defaultMessage:\n \"<p>See content in action by making an HTTP request:</p><ul><li><p>To this URL: <light>https://'<'YOUR_DOMAIN'>'/api/'<'YOUR_CT'>'</light></p></li><li><p>With the header: <light>Authorization: bearer '<'YOUR_API_TOKEN'>'</light></p></li></ul><p>For more ways to interact with content, see the <documentationLink>documentation</documentationLink>.</p>\",\n },\n trackingEvent: 'didGenerateGuidedTourApiTokens',\n },\n },\n} as const;\n\nconst STATES = {\n IS_DONE: 'IS_DONE',\n IS_ACTIVE: 'IS_ACTIVE',\n IS_NOT_DONE: 'IS_NOT_DONE',\n} as const;\n\ntype LayoutData = typeof LAYOUT_DATA;\ntype States = keyof typeof STATES;\n\nexport { LAYOUT_DATA, STATES };\nexport type { LayoutData, States };\n","import { Box, BoxProps, Flex, FlexProps, Typography } from '@strapi/design-system';\nimport { pxToRem } from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\n\nimport { STATES, States } from './constants';\n\n/* -------------------------------------------------------------------------------------------------\n * Number\n * -----------------------------------------------------------------------------------------------*/\n\ninterface NumberProps extends FlexProps {\n children: number;\n state: States;\n}\n\nconst Number = ({ children, state, ...props }: NumberProps) => {\n return state === STATES.IS_DONE || state === STATES.IS_ACTIVE ? (\n <Flex\n background=\"primary600\"\n padding={2}\n borderRadius=\"50%\"\n width={pxToRem(30)}\n height={pxToRem(30)}\n justifyContent=\"center\"\n {...props}\n >\n {state === STATES.IS_DONE ? (\n <Check aria-hidden width={pxToRem(16)} color=\"neutral0\" />\n ) : (\n <Typography fontWeight=\"semiBold\" textColor=\"neutral0\">\n {children}\n </Typography>\n )}\n </Flex>\n ) : (\n <Flex\n borderColor=\"neutral500\"\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n padding={2}\n borderRadius=\"50%\"\n width={pxToRem(30)}\n height={pxToRem(30)}\n justifyContent=\"center\"\n {...props}\n >\n <Typography fontWeight=\"semiBold\" textColor=\"neutral600\">\n {children}\n </Typography>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VerticalDivider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface VerticalDividerProps extends BoxProps {\n state: States;\n}\n\nconst VerticalDivider = ({ state, ...props }: VerticalDividerProps) => (\n <Box\n width={pxToRem(2)}\n height=\"100%\"\n background={state === STATES.IS_NOT_DONE ? 'neutral300' : 'primary500'}\n hasRadius\n minHeight={state === STATES.IS_ACTIVE ? pxToRem(85) : pxToRem(65)}\n {...props}\n />\n);\n\nexport { Number, VerticalDivider };\nexport type { NumberProps, VerticalDividerProps };\n","import * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n FocusTrap,\n IconButton,\n Portal,\n Typography,\n} from '@strapi/design-system';\nimport { LinkButton } from '@strapi/design-system/v2';\nimport { GuidedTourContextValue, pxToRem, useGuidedTour, useTracking } from '@strapi/helper-plugin';\nimport { ArrowRight, Cross } from '@strapi/icons';\nimport get from 'lodash/get';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { LAYOUT_DATA, STATES } from './constants';\nimport { Number, VerticalDivider } from './Ornaments';\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourModal\n * -----------------------------------------------------------------------------------------------*/\n\nconst GuidedTourModal = () => {\n const {\n currentStep,\n guidedTourState,\n setCurrentStep,\n setStepState,\n isGuidedTourVisible,\n setSkipped,\n } = useGuidedTour();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n if (!currentStep || !isGuidedTourVisible) {\n return null;\n }\n\n const stepData = get(LAYOUT_DATA, currentStep);\n const sectionKeys = Object.keys(guidedTourState);\n const [sectionName, stepName] = currentStep.split('.') as [\n keyof GuidedTourContextValue['guidedTourState'],\n string\n ];\n const sectionIndex = sectionKeys.indexOf(sectionName);\n const stepIndex = Object.keys(guidedTourState[sectionName]).indexOf(stepName);\n const hasSectionAfter = sectionIndex < sectionKeys.length - 1;\n const hasStepAfter = stepIndex < Object.keys(guidedTourState[sectionName]).length - 1;\n\n const handleCtaClick = () => {\n setStepState(currentStep, true);\n\n if (stepData) {\n trackUsage(stepData.trackingEvent);\n }\n\n setCurrentStep(null);\n };\n\n const handleSkip = () => {\n setSkipped(true);\n setCurrentStep(null);\n trackUsage('didSkipGuidedtour');\n };\n\n return (\n <Portal>\n <ModalWrapper onClick={handleCtaClick} padding={8} justifyContent=\"center\">\n <FocusTrap onEscape={handleCtaClick}>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n background=\"neutral0\"\n width={pxToRem(660)}\n shadow=\"popupShadow\"\n hasRadius\n padding={4}\n gap={8}\n role=\"dialog\"\n aria-modal\n onClick={(e) => e.stopPropagation()}\n >\n <Flex justifyContent=\"flex-end\">\n <IconButton\n onClick={handleCtaClick}\n aria-label={formatMessage({\n id: 'app.utils.close-label',\n defaultMessage: 'Close',\n })}\n >\n <Cross />\n </IconButton>\n </Flex>\n <Box\n paddingLeft={7}\n paddingRight={7}\n paddingBottom={!hasStepAfter && !hasSectionAfter ? 8 : 0}\n >\n <GuidedTourStepper\n title={stepData && 'title' in stepData ? stepData.title : undefined}\n cta={stepData && 'cta' in stepData ? stepData.cta : undefined}\n onCtaClick={handleCtaClick}\n sectionIndex={sectionIndex}\n stepIndex={stepIndex}\n hasSectionAfter={hasSectionAfter}\n >\n {stepData && 'content' in stepData && <GuidedTourContent {...stepData.content} />}\n </GuidedTourStepper>\n </Box>\n {!(!hasStepAfter && !hasSectionAfter) && (\n <Flex justifyContent=\"flex-end\">\n <Button variant=\"tertiary\" onClick={handleSkip}>\n {formatMessage({\n id: 'app.components.GuidedTour.skip',\n defaultMessage: 'Skip the tour',\n })}\n </Button>\n </Flex>\n )}\n </Flex>\n </FocusTrap>\n </ModalWrapper>\n </Portal>\n );\n};\n\nconst ModalWrapper = styled(Flex)`\n position: fixed;\n z-index: 4;\n inset: 0;\n /* this is theme.colors.neutral800 with opacity */\n background: ${({ theme }) => `${theme.colors.neutral800}1F`};\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourStepper\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GuidedTourStepperProps {\n title: MessageDescriptor | undefined;\n children: React.ReactNode;\n cta?: {\n title: MessageDescriptor;\n target?: string;\n };\n onCtaClick: () => void;\n sectionIndex: number;\n stepIndex: number;\n hasSectionAfter: boolean;\n}\n\nconst GuidedTourStepper = ({\n title,\n children,\n cta,\n onCtaClick,\n sectionIndex,\n stepIndex,\n hasSectionAfter,\n}: GuidedTourStepperProps) => {\n const { formatMessage } = useIntl();\n\n const hasSectionBefore = sectionIndex > 0;\n const hasStepsBefore = stepIndex > 0;\n const nextSectionIndex = sectionIndex + 1;\n\n return (\n <>\n <Flex alignItems=\"stretch\">\n <Flex marginRight={8} justifyContent=\"center\" minWidth={pxToRem(30)}>\n {hasSectionBefore && <VerticalDivider state={STATES.IS_DONE} minHeight={pxToRem(24)} />}\n </Flex>\n <Typography variant=\"sigma\" textColor=\"primary600\">\n {formatMessage({\n id: 'app.components.GuidedTour.title',\n defaultMessage: '3 steps to get started',\n })}\n </Typography>\n </Flex>\n <Flex>\n <Flex marginRight={8} minWidth={pxToRem(30)}>\n <Number\n state={hasStepsBefore ? STATES.IS_DONE : STATES.IS_ACTIVE}\n paddingTop={3}\n paddingBottom={3}\n >\n {sectionIndex + 1}\n </Number>\n </Flex>\n {title && (\n <Typography variant=\"alpha\" fontWeight=\"bold\" textColor=\"neutral800\" as=\"h3\" id=\"title\">\n {formatMessage(title)}\n </Typography>\n )}\n </Flex>\n <Flex alignItems=\"stretch\">\n <Flex marginRight={8} direction=\"column\" justifyContent=\"center\" minWidth={pxToRem(30)}>\n {hasSectionAfter && (\n <>\n <VerticalDivider state={STATES.IS_DONE} />\n {hasStepsBefore && (\n <Number state={STATES.IS_ACTIVE} paddingTop={3}>\n {nextSectionIndex + 1}\n </Number>\n )}\n </>\n )}\n </Flex>\n <Box>\n {children}\n {cta &&\n (cta.target ? (\n <LinkButton\n as={NavLink}\n endIcon={<ArrowRight />}\n onClick={onCtaClick}\n // @ts-expect-error - types are not inferred correctly through the as prop.\n to={cta.target}\n >\n {formatMessage(cta.title)}\n </LinkButton>\n ) : (\n <Button endIcon={<ArrowRight />} onClick={onCtaClick}>\n {formatMessage(cta.title)}\n </Button>\n ))}\n </Box>\n </Flex>\n {hasStepsBefore && hasSectionAfter && (\n <Box paddingTop={3}>\n <Flex marginRight={8} justifyContent=\"center\" width={pxToRem(30)}>\n <VerticalDivider state={STATES.IS_DONE} minHeight={pxToRem(24)} />\n </Flex>\n </Box>\n )}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourContent\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GuidedTourContentProps\n extends Required<Pick<MessageDescriptor, 'defaultMessage' | 'id'>> {}\n\nconst GuidedTourContent = ({ id, defaultMessage }: GuidedTourContentProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4} paddingBottom={6}>\n {formatMessage(\n { id, defaultMessage },\n {\n documentationLink: DocumentationLink,\n b: Bold,\n p: Paragraph,\n light: Light,\n ul: List,\n li: ListItem,\n }\n )}\n </Flex>\n );\n};\n\nconst DocumentationLink = (children: React.ReactNode) => (\n <Typography\n as=\"a\"\n textColor=\"primary600\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/rest-api.html#api-parameters\"\n >\n {children}\n </Typography>\n);\n\nconst Bold = (children: React.ReactNode) => (\n <Typography fontWeight=\"semiBold\">{children}</Typography>\n);\n\nconst Paragraph = (children: React.ReactNode) => <Typography>{children}</Typography>;\n\nconst Light = (children: React.ReactNode) => (\n <Typography textColor=\"neutral600\">{children}</Typography>\n);\n\nconst List = (children: React.ReactNode) => (\n <Box paddingLeft={6}>\n <ul>{children}</ul>\n </Box>\n);\n\nconst LiStyled = styled.li`\n list-style: disc;\n &::marker {\n color: ${({ theme }) => theme.colors.neutral800};\n }\n`;\n\nconst ListItem = (children: React.ReactNode) => <LiStyled>{children}</LiStyled>;\n\nexport { GuidedTourModal };\n","import * as React from 'react';\n\nimport { Box, Divider, Flex, FocusTrap, Icon, Typography } from '@strapi/design-system';\nimport {\n MainNav,\n NavBrand,\n NavCondense,\n NavFooter,\n NavLink,\n NavSection,\n NavSections,\n NavUser,\n} from '@strapi/design-system/v2';\nimport { useAppInfo, usePersistentState, useTracking } from '@strapi/helper-plugin';\nimport { Exit, Write, Lock } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink as RouterNavLink, useLocation } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { Menu } from '../hooks/useMenu';\n\nconst LinkUserWrapper = styled(Box)`\n width: ${150 / 16}rem;\n position: absolute;\n bottom: ${({ theme }) => theme.spaces[9]};\n left: ${({ theme }) => theme.spaces[5]};\n`;\n\nconst LinkUser = styled(RouterNavLink)<{ logout?: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n text-decoration: none;\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[4]}`};\n border-radius: ${({ theme }) => theme.spaces[1]};\n\n &:hover {\n background: ${({ theme, logout }) =>\n logout ? theme.colors.danger100 : theme.colors.primary100};\n text-decoration: none;\n }\n\n svg {\n path {\n fill: ${({ theme }) => theme.colors.danger600};\n }\n }\n`;\n\nconst NavLinkWrapper = styled(Box)`\n div:nth-child(2) {\n /* remove badge background color */\n background: transparent;\n }\n`;\n\ninterface LeftMenuProps extends Pick<Menu, 'generalSectionLinks' | 'pluginsSectionLinks'> {}\n\nconst LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }: LeftMenuProps) => {\n const navUserRef = React.useRef<HTMLDivElement>(null!);\n const [userLinksVisible, setUserLinksVisible] = React.useState(false);\n const {\n logos: { menu },\n } = useConfiguration('LeftMenu');\n const [condensed, setCondensed] = usePersistentState('navbar-condensed', false);\n const { userDisplayName } = useAppInfo();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const { logout } = useAuth('Logout');\n\n const initials = userDisplayName\n .split(' ')\n .map((name) => name.substring(0, 1))\n .join('')\n .substring(0, 2);\n\n const handleToggleUserLinks = () => setUserLinksVisible((prev) => !prev);\n\n const handleBlur: React.FocusEventHandler = (e) => {\n if (\n !e.currentTarget.contains(e.relatedTarget) &&\n /**\n * TODO: can we replace this by just using the navUserRef?\n */\n e.relatedTarget?.parentElement?.id !== 'main-nav-user-button'\n ) {\n setUserLinksVisible(false);\n }\n };\n\n const handleClickOnLink = (destination: string) => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n const menuTitle = formatMessage({\n id: 'app.components.LeftMenu.navbrand.title',\n defaultMessage: 'Strapi Dashboard',\n });\n\n return (\n <MainNav condensed={condensed}>\n <NavBrand\n as={RouterNavLink}\n workplace={formatMessage({\n id: 'app.components.LeftMenu.navbrand.workplace',\n defaultMessage: 'Workplace',\n })}\n title={menuTitle}\n icon={\n <img\n src={menu.custom?.url || menu.default}\n alt={formatMessage({\n id: 'app.components.LeftMenu.logo.alt',\n defaultMessage: 'Application logo',\n })}\n />\n }\n />\n\n <Divider />\n\n <NavSections>\n <NavLink\n as={RouterNavLink}\n // @ts-expect-error the props from the passed as prop are not inferred // joined together\n to=\"/content-manager\"\n icon={<Write />}\n onClick={() => handleClickOnLink('/content-manager')}\n >\n {formatMessage({ id: 'global.content-manager', defaultMessage: 'Content manager' })}\n </NavLink>\n\n {pluginsSectionLinks.length > 0 ? (\n <NavSection\n label={formatMessage({\n id: 'app.components.LeftMenu.plugins',\n defaultMessage: 'Plugins',\n })}\n >\n {pluginsSectionLinks.map((link) => {\n const LinkIcon = link.icon;\n return (\n <NavLinkWrapper key={link.to}>\n <NavLink\n as={RouterNavLink}\n to={link.to}\n icon={<LinkIcon />}\n onClick={() => handleClickOnLink(link.to)}\n // @ts-expect-error: badgeContent in the DS accept only strings\n badgeContent={\n link?.lockIcon ? (\n <Icon width={`${15 / 16}rem`} height={`${15 / 16}rem`} as={Lock} />\n ) : undefined\n }\n >\n {formatMessage(link.intlLabel)}\n </NavLink>\n </NavLinkWrapper>\n );\n })}\n </NavSection>\n ) : null}\n\n {generalSectionLinks.length > 0 ? (\n <NavSection\n label={formatMessage({\n id: 'app.components.LeftMenu.general',\n defaultMessage: 'General',\n })}\n >\n {generalSectionLinks.map((link) => {\n const LinkIcon = link.icon;\n\n return (\n <NavLink\n as={RouterNavLink}\n badgeContent={\n link.notificationsCount && link.notificationsCount > 0\n ? link.notificationsCount.toString()\n : undefined\n }\n // @ts-expect-error the props from the passed as prop are not inferred // joined together\n to={link.to}\n key={link.to}\n icon={<LinkIcon />}\n onClick={() => handleClickOnLink(link.to)}\n >\n {formatMessage(link.intlLabel)}\n </NavLink>\n );\n })}\n </NavSection>\n ) : null}\n </NavSections>\n\n <NavFooter>\n <NavUser\n id=\"main-nav-user-button\"\n ref={navUserRef}\n onClick={handleToggleUserLinks}\n initials={initials}\n >\n {userDisplayName}\n </NavUser>\n {userLinksVisible && (\n <LinkUserWrapper\n onBlur={handleBlur}\n padding={1}\n shadow=\"tableShadow\"\n background=\"neutral0\"\n hasRadius\n >\n <FocusTrap onEscape={handleToggleUserLinks}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={0}>\n <LinkUser tabIndex={0} onClick={handleToggleUserLinks} to=\"/me\">\n <Typography>\n {formatMessage({\n id: 'global.profile',\n defaultMessage: 'Profile',\n })}\n </Typography>\n </LinkUser>\n <LinkUser tabIndex={0} onClick={logout} to=\"/auth/login\">\n <Typography textColor=\"danger600\">\n {formatMessage({\n id: 'app.components.LeftMenu.logout',\n defaultMessage: 'Logout',\n })}\n </Typography>\n <Exit />\n </LinkUser>\n </Flex>\n </FocusTrap>\n </LinkUserWrapper>\n )}\n\n <NavCondense onClick={() => setCondensed((s) => !s)}>\n {condensed\n ? formatMessage({\n id: 'app.components.LeftMenu.expand',\n defaultMessage: 'Expand the navbar',\n })\n : formatMessage({\n id: 'app.components.LeftMenu.collapse',\n defaultMessage: 'Collapse the navbar',\n })}\n </NavCondense>\n </NavFooter>\n </MainNav>\n );\n};\n\nexport { LeftMenu };\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHAAAABQCAMAAAD2kgFPAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAL9UExURff3+fv7+/X19/Pz9/n5+fv7/f39//////39/UdwTPn5+/X1+fHx++/v8fn5/fHx8/Pz9eTk6e/v8/Hx9fHx/e3u7/X19e3t8evr7+fn6YuR96Gl+OLi59LS2dTU2uvr++nq7ff39+Tk697e4ufn6+vr7enq69ra3tDQ1uDg5/nv7+Dg5Nzc4Nzd4tTU2OTk5+fn7djY3tzc5M/Q1NjY3NLS1tbX3MzM0u/w9crK0unp7+np+/37+8rK0MjIzu/v78PEy9ra4djY4eLi6t7e5NbW2s7O1OLk5+/v/Ojp/dra5MPF9+3u89bX3mxz99DQ2fj4+OLi5PHx8dvb29ze+/f3/7C1+t7e5+vr69PX2OPk/Jydl/T09/f393R7+Gdw96ytuNTU3M7O2ODg6a6vumJq9+3u/dTW/PP19cXGzd7e4O3t7cnK+/f3+uLk683O+Z2h+dLU+9/h++no3/j39bq0pu/v7fv7+fHz9XF4911l93V8+bm5waGirffr7Kqrtq+z9qentF9o93mA+fj4+vr6++/v7/f3++vt+83N0/Pz8+vr8dbY+sjJ98zO1crM0vn5//Pz/ra6n/n59d/g4quvp9fa2OTn66Shm8C2prCuq+/r67Gxr9LLvbCwrcfEwK+vqZSahtPVw5WafKiknff5+ZqapvHw7fv4+YGH9dnb++Tn/Ly8xvfo6Oq5v////6WlsNrc3vPz+dLU2Ovr/eTn+drc4JWXo6Wp+cLE++nr74+T+enr4s7Q1m5098bArefk5Nze0ODc1Pf3/MC8tuDi0KWrh/n39+Tk4qmv+77Cqdjc3PX1/c7S0vv7/7ixo/Px7Z+jh62x+8rMtrS6pZebjY+Rn9bayKuvm+vp5+np6aWrjVJa9fX38bi895+fm1pk9620oevp6bS0r+fp6fv19VZg9fn19X6F+fnz89LS3MDAyPXi4uextvX1+vPW2OCVnYmJl9zc4Xh4iff3+mdy97y8xPf3977C96mpsbS29YeHlamv84qS87i89VXx8BYAAAD/dFJOU319fX19fX19fQB9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19bX19fX19fX19fX19Lwd9fX19fX19fX19fX19fX1lfX19fX19fX19fX19fX19fX19fX19fW1dED59fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX0PfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1mfX19bX1eXn0/fX19fX0/fSWruQsAAAbiSURBVGje7VkFcBtHFD2SbnXO9UA56dRIiiRbFFlmiO3asWKIE0MYGrQbZmjDDA1T06RJ03DSJA2XMaWUmZmZmWm6ki3lTie59kTSlJ40p5nV//tud//b/28P0WiG/PgdkhBMHKzRaBDNyWXSRoqi4ki57CQk/MZsKna58pqa0N4gnoNcNgQZzBV8ml9aYMYaW4DQRKjvDC8MG7TkG0ff+gmobifD78gXYQZE0++8b08tXFg/4uf6H46VLh5Rf/P8TERtXG1ykkmtI7zmtZFLhtW9NWfOnCUjhy0Z+T2CJOFYJMOS+YtPzV884teDX8879sKIhfUHSxG1AzH0ajXhB3UjPxpaVzd37uyls5cunRv30Fx0vhxRDfXdLLbhZWU2W1mGGNtbEPuXdStz+2ycu/+kbmv4YLOWZ3merdEyNSweW0KMxXkW1+J4RwxeMeRfCIbhMsu7/LUd0QgkSYkW8TS5wznVlg93W8LnEiUooAIqFYBQkxBnSIxkMStJVLUPoah90cCqlSurWkSI6ijdGGv0v0Wv3iaIa1i9KLJ+QoR0Wk0l2YCo6jO5unpq9dTJkyesW7uu+oZp09q0iLDXvOQNG0r9uxbtNdU2hIcidV4YELTpt40C17WIsMk9oAyapxMbNxiCR4uRWAP2TNOZ3S/KCmdEyfggEORQ9Xh4kKPkM8O6AjbIS/BWfZLED+N5StmbisEZRttRTzVD2LZtUdW09gPbFx0tatuE0Y2E/YYeVYlI0E7ELYjET68vJJS9nZdRc1shq7dgzRIeKfrtj0W//LTojTDCOE2pMsjb3BiQhSo+gF3jOJNhKQwPUgqcBdqhER+Cc4efUOvL8nFKwhxn/tjKtNLTY12HO3z15ecnTiz4ODaEkUEBgoKqIRAdgR3u8NmC4wuOd3g/noSoWoILGgHU5w7/jGpxbQ28dJRl3/AoPfR6jKIUqcnKstkm2fpnZOlZGSFBqUgQtLt6/9vvSf0Y/19qENYbgIpHSQBvFk6ekgy2NZO9SIqk1Pag7Ttvvttb6pu3Ps9lTtvsqsiTtmLpnC83L8fpyjXlmpMVhDYS+IKbN6YkBNINaubunWiMphTh9d0L1tcqMj6IDwKdszgeYYR9u6old/bsi1SsRohhs3heVBK2mz1QLQTthOe3Xyj1q8xJ3uwZZ/A5jbI17GlPyUlNTk31jHN6DQoyhgLuQNVm7l7bWZkPb719FBnKCIcOTJ8h9bVi8GO16hCdLAxR1N9E6HSsDlOmDGjLNBOlcnR6KlY6RFitODzFlrCM799qyt1eZV1KEqhU+E+/5EiE8EML/8qgXVdIfbPHZhfkrrp2bL5J2sqmJptL8nOzi9fnFxekKgjLUOB/rub58obMCEGjVoGzI7x8986Z5zydsDcQkMXWQguPJG4No25tslXYt08Vs62N8TaYvUnKNVSh6tVBuxl798iE7/QYuRSO5jhB2koYGCHZ4PBwKV2MnF5BhlPqxsqC1uJshKChUDIk3qsOPPmy1LeXIIgMzToYWtqK6nS0vRNNC+P1gqgUPrwFfYuFP+DiWK5hCwhjFzSF/WuzOnd2uwt9fEcZ4dp+l52VxSWvPueQb4ugMc7lcY8GhA+iC5+CETqLhV8Ww5iwmmbKsD4glPHtg3bIhJ/mMpucuelpabK8jqVyqdkVOea0nOtzTR4FYQoKvM1MadcJfSUjvO+uB2MlfP+hgrtLAoUf5VAhzPCe++MepVD4gAmlw71bZMLvnZ5ucBhpe0+ZDokuUPgpnJETofDtkYSfEjhUKP8ks0G5eaOoVPjbpt8t9XUYOU+6gfZYZIUEytMOzmB39OzJGThaQZgBv1EPFeIr/AiHCnEMmmiHCgMnnJHI4oFNjGzySEBGVDZsD2g+ovChX3DzjpCeptT1AaEdf8CgHbKgcbnSXBUmoykvRyb8ZKMnrSIzz2Q2myKV+iHhY0laJeGRfhLhW/dcqWulxqOOkOFNp7v78IRm/BZkiztiF6WRDxX85zRFIKTDGfu3PCr1SxcEmGd1jMDKhD9+jE6kRZHWdrILSh3CTsVAXZqa5eWUhA8P7UqGuuu0bfpDso3fuJXjDILHIBc+LQgp6XaHMd1o4HpFyvgZzUzpE49Jn5563wv+qRk/ej6culFSCG96RBc74UcmnHJnH2A5K/xdj0t9S0oLirMrvSWrKmSlvvMmZ3GBuTI/u7IkX1nqW1BQ2wzh6FskNY11eyuFH2kC4DJRf581/B+tQHzfK4e9ZsIQBkFHbURgLQMfX9x4vAlh1sMhIYnAhxhYxVgSNE6C+E+F0KWJpZuIrEgs4WBkSI9E8vXQIJrlCWTssRwSajSDJyYoXFYM0Wj+BNjsk7mwYOwbAAAAAElFTkSuQmCC\"","import * as React from 'react';\n\nimport {\n Box,\n Button,\n Divider,\n Flex,\n Icon,\n PopoverPrimitives,\n Portal,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { useAppInfo } from '@strapi/helper-plugin';\nimport { Cross, Message, Play, Question, Book, PaperPlane } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport onboardingPreview from '../assets/images/onboarding-preview.png';\n\nconst Onboarding = () => {\n const triggerRef = React.useRef<HTMLButtonElement>(null!);\n const [isOpen, setIsOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n const { communityEdition } = useAppInfo();\n\n const handlePopoverVisibility = () => {\n setIsOpen((prev) => !prev);\n };\n\n const docLinks = [\n ...DOCUMENTATION_LINKS,\n {\n label: { id: 'Settings.application.get-help', defaultMessage: 'Get help' },\n icon: Message,\n href: communityEdition\n ? 'https://discord.strapi.io'\n : 'https://support.strapi.io/support/home',\n },\n ];\n\n return (\n <Box as=\"aside\" position=\"fixed\" bottom={2} right={2}>\n <HelperButton\n aria-label={formatMessage(\n isOpen\n ? {\n id: 'app.components.Onboarding.help.button-close',\n defaultMessage: 'Close help menu',\n }\n : {\n id: 'app.components.Onboarding.help.button',\n defaultMessage: 'Open help menu',\n }\n )}\n onClick={handlePopoverVisibility}\n ref={triggerRef}\n >\n <Icon as={isOpen ? Cross : Question} color=\"buttonNeutral0\" />\n </HelperButton>\n\n {isOpen && (\n <Portal>\n <PopoverPrimitives.Content\n padding={0}\n onDismiss={handlePopoverVisibility}\n source={triggerRef}\n placement=\"top-end\"\n spacing={12}\n >\n <Flex\n justifyContent=\"space-between\"\n paddingBottom={5}\n paddingRight={6}\n paddingLeft={6}\n paddingTop={6}\n >\n <TypographyLineHeight fontWeight=\"bold\">\n {formatMessage({\n id: 'app.components.Onboarding.title',\n defaultMessage: 'Get started videos',\n })}\n </TypographyLineHeight>\n <TextLink\n as=\"a\"\n href={WATCH_MORE.href}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n variant=\"pi\"\n textColor=\"primary600\"\n >\n {formatMessage(WATCH_MORE.label)}\n </TextLink>\n </Flex>\n <Divider />\n {VIDEO_LINKS.map(({ href, duration, label }, index) => (\n <VideoLinkWrapper\n as=\"a\"\n href={href}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n key={href}\n hasRadius\n paddingTop={4}\n paddingBottom={4}\n paddingLeft={6}\n paddingRight={11}\n >\n <Box paddingRight={5}>\n <Typography textColor=\"neutral200\" variant=\"alpha\">\n {index + 1}\n </Typography>\n </Box>\n <Box position=\"relative\">\n <Preview src={onboardingPreview} alt=\"\" />\n <IconWrapper\n position=\"absolute\"\n top=\"50%\"\n left=\"50%\"\n background=\"primary600\"\n borderRadius=\"50%\"\n justifyContent=\"center\"\n width={6}\n height={6}\n >\n <Icon as={Play} color=\"buttonNeutral0\" width={3} height={3} />\n </IconWrapper>\n </Box>\n <Flex direction=\"column\" alignItems=\"start\" paddingLeft={4}>\n <Typography fontWeight=\"bold\">{formatMessage(label)}</Typography>\n <VisuallyHidden>:</VisuallyHidden>\n <Typography textColor=\"neutral600\" variant=\"pi\">\n {duration}\n </Typography>\n </Flex>\n </VideoLinkWrapper>\n ))}\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={2}\n paddingLeft={5}\n paddingTop={2}\n paddingBottom={5}\n >\n {docLinks.map(({ label, href, icon }) => (\n <Flex gap={3} key={href}>\n <Icon as={icon} color=\"primary600\" />\n <TextLink\n as=\"a\"\n href={href}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n variant=\"sigma\"\n textColor=\"primary700\"\n >\n {formatMessage(label)}\n </TextLink>\n </Flex>\n ))}\n </Flex>\n </PopoverPrimitives.Content>\n </Portal>\n )}\n </Box>\n );\n};\n\n// TODO: use new Button props derived from Box props with next DS release\nconst HelperButton = styled(Button)`\n border-radius: 50%;\n padding: ${({ theme }) => theme.spaces[3]};\n /* Resetting 2rem height defined by Button component */\n height: 100%;\n`;\n\nconst IconWrapper = styled(Flex)`\n transform: translate(-50%, -50%);\n`;\n\nconst VideoLinkWrapper = styled(Flex)`\n text-decoration: none;\n\n :focus-visible {\n outline-offset: ${({ theme }) => `-${theme.spaces[1]}`};\n }\n\n :hover {\n background: ${({ theme }) => theme.colors.primary100};\n\n /* Hover style for the number displayed */\n ${Typography}:first-child {\n color: ${({ theme }) => theme.colors.primary500};\n }\n\n /* Hover style for the label */\n ${Typography}:nth-child(1) {\n color: ${({ theme }) => theme.colors.primary600};\n }\n }\n`;\n\nconst Preview = styled.img`\n width: ${({ theme }) => theme.spaces[10]};\n height: ${({ theme }) => theme.spaces[8]};\n /* Same overlay used in ModalLayout */\n background: ${({ theme }) => `${theme.colors.neutral800}1F`};\n border-radius: ${({ theme }) => theme.borderRadius};\n`;\n\nconst TypographyLineHeight = styled(Typography)`\n /* line height of label and watch more to 1 so they can be better aligned visually */\n line-height: 1;\n`;\n\nconst TextLink = styled(TypographyLineHeight)`\n text-decoration: none;\n\n :hover {\n text-decoration: underline;\n }\n`;\n\nconst VIDEO_LINKS = [\n {\n label: {\n id: 'app.components.Onboarding.link.build-content',\n defaultMessage: 'Build a content architecture',\n },\n href: 'https://www.youtube.com/watch?v=G9GjN0RxhkE',\n duration: '5:48',\n },\n {\n label: {\n id: 'app.components.Onboarding.link.manage-content',\n defaultMessage: 'Add & manage content',\n },\n href: 'https://www.youtube.com/watch?v=DEZw4KbybAI',\n duration: '3:18',\n },\n {\n label: { id: 'app.components.Onboarding.link.manage-media', defaultMessage: 'Manage media' },\n href: 'https://www.youtube.com/watch?v=-61MuiMQb38',\n duration: '3:41',\n },\n];\n\nconst WATCH_MORE = {\n href: 'https://www.youtube.com/playlist?list=PL7Q0DQYATmvidz6lEmwE5nIcOAYagxWqq',\n label: {\n id: 'app.components.Onboarding.link.more-videos',\n defaultMessage: 'Watch more videos',\n },\n};\n\nconst DOCUMENTATION_LINKS = [\n {\n label: { id: 'global.documentation', defaultMessage: 'documentation' },\n href: 'https://docs.strapi.io',\n icon: Book,\n },\n {\n label: { id: 'app.static.links.cheatsheet', defaultMessage: 'cheatsheet' },\n href: 'https://strapi-showcase.s3-us-west-2.amazonaws.com/CheatSheet.pdf',\n icon: PaperPlane,\n },\n];\n\nexport { Onboarding };\n","import { createTypedSelector } from './core/store/hooks';\n\n/**\n * @deprecated\n *\n * Use `useTypedSelector` and access the state directly, this was only used so we knew\n * we were using the correct path. Which is state.admin_app.permissions\n */\nexport const selectAdminPermissions = createTypedSelector((state) => state.admin_app.permissions);\n","import * as React from 'react';\n\nimport {\n Permission,\n hasPermissions,\n useAppInfo,\n useRBACProvider,\n useStrapiApp,\n StrapiAppContextValue,\n} from '@strapi/helper-plugin';\nimport { Cog, Puzzle, ShoppingCart } from '@strapi/icons';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../selectors';\n\n/* -------------------------------------------------------------------------------------------------\n * useMenu\n * -----------------------------------------------------------------------------------------------*/\n\ntype MenuItem = StrapiAppContextValue['menu'][number];\n\nexport interface Menu {\n generalSectionLinks: MenuItem[];\n pluginsSectionLinks: MenuItem[];\n isLoading: boolean;\n}\n\nconst useMenu = () => {\n const { allPermissions: userPermissions } = useRBACProvider();\n const { shouldUpdateStrapi } = useAppInfo();\n const { menu } = useStrapiApp();\n const permissions = useSelector(selectAdminPermissions);\n const [menuWithUserPermissions, setMenuWithUserPermissions] = React.useState<Menu>({\n generalSectionLinks: [\n {\n icon: Puzzle,\n intlLabel: {\n id: 'global.plugins',\n defaultMessage: 'Plugins',\n },\n to: '/list-plugins',\n permissions: permissions.marketplace?.main ?? [],\n },\n {\n icon: ShoppingCart,\n intlLabel: {\n id: 'global.marketplace',\n defaultMessage: 'Marketplace',\n },\n to: '/marketplace',\n permissions: permissions.marketplace?.main ?? [],\n },\n {\n icon: Cog,\n intlLabel: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n to: '/settings',\n // Permissions of this link are retrieved in the init phase\n // using the settings menu\n permissions: [],\n notificationsCount: 0,\n },\n ],\n pluginsSectionLinks: [],\n isLoading: true,\n });\n const generalSectionLinksRef = React.useRef(menuWithUserPermissions.generalSectionLinks);\n\n React.useEffect(() => {\n async function applyMenuPermissions() {\n const authorizedPluginSectionLinks = await getPluginSectionLinks(userPermissions, menu);\n\n const authorizedGeneralSectionLinks = await getGeneralLinks(\n userPermissions,\n generalSectionLinksRef.current,\n shouldUpdateStrapi\n );\n\n setMenuWithUserPermissions((state) => ({\n ...state,\n generalSectionLinks: authorizedGeneralSectionLinks,\n pluginsSectionLinks: authorizedPluginSectionLinks,\n isLoading: false,\n }));\n }\n\n applyMenuPermissions();\n }, [\n setMenuWithUserPermissions,\n generalSectionLinksRef,\n userPermissions,\n menu,\n permissions,\n shouldUpdateStrapi,\n ]);\n\n return menuWithUserPermissions;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\nconst getGeneralLinks = async (\n userPermissions: Permission[],\n generalSectionRawLinks: MenuItem[],\n shouldUpdateStrapi: boolean = false\n) => {\n const generalSectionLinksPermissions = await Promise.all(\n generalSectionRawLinks.map(({ permissions }) => hasPermissions(userPermissions, permissions))\n );\n\n const authorizedGeneralSectionLinks = generalSectionRawLinks.filter(\n (_, index) => generalSectionLinksPermissions[index]\n );\n\n const settingsLinkIndex = authorizedGeneralSectionLinks.findIndex(\n (obj) => obj.to === '/settings'\n );\n\n if (settingsLinkIndex === -1) {\n return [];\n }\n\n const authorizedGeneralLinksClone = cloneDeep(authorizedGeneralSectionLinks);\n\n authorizedGeneralLinksClone[settingsLinkIndex].notificationsCount = shouldUpdateStrapi ? 1 : 0;\n\n return authorizedGeneralLinksClone;\n};\n\nconst getPluginSectionLinks = async (\n userPermissions: Permission[],\n pluginsSectionRawLinks: MenuItem[]\n) => {\n const pluginSectionLinksPermissions = await Promise.all(\n pluginsSectionRawLinks.map(({ permissions }) => hasPermissions(userPermissions, permissions))\n );\n\n const authorizedPluginSectionLinks = pluginsSectionRawLinks.filter(\n (_, index) => pluginSectionLinksPermissions[index]\n );\n\n return authorizedPluginSectionLinks;\n};\n\nexport { useMenu };\n","import * as React from 'react';\n\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nconst FlexBox = styled(Box)`\n flex: 1;\n`;\n\ninterface AppLayoutProps {\n children: React.ReactNode;\n sideNav: React.ReactNode;\n}\n\nexport const AppLayout = ({ children, sideNav }: AppLayoutProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex alignItems=\"flex-start\">\n {sideNav}\n <FlexBox>{children}</FlexBox>\n </Flex>\n </Box>\n );\n};\n","/**\n *\n * Admin\n *\n */\n\nimport * as React from 'react';\n\nimport { LoadingIndicatorPage, useStrapiApp, useTracking } from '@strapi/helper-plugin';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { Route, Switch } from 'react-router-dom';\n\nimport { GuidedTourModal } from '../components/GuidedTour/Modal';\nimport { LeftMenu } from '../components/LeftMenu';\nimport { Onboarding } from '../components/Onboarding';\nimport { useConfiguration } from '../features/Configuration';\nimport { useMenu } from '../hooks/useMenu';\nimport { useOnce } from '../hooks/useOnce';\nimport { AppLayout } from '../layouts/AppLayout';\nimport { createRoute } from '../utils/createRoute';\n\nconst CM = React.lazy(() =>\n import('../content-manager/pages/App').then((mod) => ({ default: mod.App }))\n);\nconst HomePage = React.lazy(() =>\n import('./HomePage').then((mod) => ({\n default: mod.HomePage,\n }))\n);\nconst InstalledPluginsPage = React.lazy(() =>\n import('./InstalledPluginsPage').then((mod) => ({\n default: mod.ProtectedInstalledPluginsPage,\n }))\n);\nconst MarketplacePage = React.lazy(() =>\n import('./Marketplace/MarketplacePage').then((mod) => ({ default: mod.ProtectedMarketplacePage }))\n);\nconst NotFoundPage = React.lazy(() =>\n import('./NotFoundPage').then(({ NotFoundPage }) => ({ default: NotFoundPage }))\n);\nconst InternalErrorPage = React.lazy(() =>\n import('./InternalErrorPage').then(({ InternalErrorPage }) => ({\n default: InternalErrorPage,\n }))\n);\n\nconst ProfilePage = React.lazy(() =>\n import('./ProfilePage').then((mod) => ({\n default: mod.ProfilePage,\n }))\n);\nconst SettingsPage = React.lazy(() =>\n import('./Settings/SettingsPage').then((mod) => ({\n default: mod.SettingsPage,\n }))\n);\n\nconst Admin = () => {\n const { trackUsage } = useTracking();\n\n const { isLoading, generalSectionLinks, pluginsSectionLinks } = useMenu();\n const { menu } = useStrapiApp();\n const { showTutorials } = useConfiguration('Admin');\n\n /**\n * Make sure the event is only send once after accessing the admin panel\n * and not at runtime for example when regenerating the permissions with the ctb\n * or with i18n\n */\n useOnce(() => {\n trackUsage('didAccessAuthenticatedAdministration');\n });\n\n const routes = React.useMemo(() => {\n return (\n menu\n .filter((link) => link.Component)\n // we've filtered out the links that don't have a component above\n .map(({ to, Component, exact }) => createRoute(Component!, to, exact))\n );\n }, [menu]);\n\n if (isLoading) {\n return <LoadingIndicatorPage />;\n }\n\n return (\n <DndProvider backend={HTML5Backend}>\n <AppLayout\n sideNav={\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n />\n }\n >\n <React.Suspense fallback={<LoadingIndicatorPage />}>\n <Switch>\n <Route path=\"/\" component={HomePage} exact />\n <Route path=\"/me\" component={ProfilePage} exact />\n <Route path=\"/content-manager\" component={CM} />\n {routes}\n <Route path=\"/settings/:settingId\" component={SettingsPage} />\n <Route path=\"/settings\" component={SettingsPage} exact />\n <Route path=\"/marketplace\">\n <MarketplacePage />\n </Route>\n <Route path=\"/list-plugins\" exact>\n <InstalledPluginsPage />\n </Route>\n <Route path=\"/404\" component={NotFoundPage} />\n <Route path=\"/500\" component={InternalErrorPage} />\n <Route path=\"\" component={NotFoundPage} />\n </Switch>\n </React.Suspense>\n <GuidedTourModal />\n\n {showTutorials && <Onboarding />}\n </AppLayout>\n </DndProvider>\n );\n};\n\nexport { Admin };\n","import * as React from 'react';\n\nimport {\n LoadingIndicatorPage,\n useStrapiApp,\n type StrapiAppContextValue,\n} from '@strapi/helper-plugin';\nimport produce from 'immer';\nimport set from 'lodash/set';\n\nimport { Admin } from '../pages/Admin';\n\n/**\n * TODO: this isn't great, and we really should focus on fixing this.\n */\nconst PluginsInitializer = () => {\n const { plugins: appPlugins } = useStrapiApp();\n const [{ plugins }, dispatch] = React.useReducer<React.Reducer<State, Action>, State>(\n reducer,\n initialState,\n () => init(appPlugins)\n );\n const setPlugin = React.useRef((pluginId: string) => {\n dispatch({ type: 'SET_PLUGIN_READY', pluginId });\n });\n\n const hasApluginNotReady = Object.keys(plugins).some(\n (plugin) => plugins[plugin].isReady === false\n );\n\n /**\n *\n * I have spent some time trying to understand what is happening here, and wanted to\n * leave that knowledge for my future me:\n *\n * `initializer` is an undocumented property of the `registerPlugin` API. At the time\n * of writing it seems only to be used by the i18n plugin.\n *\n * How does it work?\n *\n * Every plugin that has an `initializer` component defined, receives the\n * `setPlugin` function as a component prop. In the case of i18n the plugin fetches locales\n * first and calls `setPlugin` with `pluginId` once they are loaded, which then triggers the\n * reducer of the admin app defined above.\n *\n * Once all plugins are set to `isReady: true` the app renders.\n *\n * This API is used to block rendering of the admin app. We should remove that in v5 completely\n * and make sure plugins can inject data into the global store before they are initialized, to avoid\n * having a new prop-callback based communication channel between plugins and the core admin app.\n *\n */\n\n if (hasApluginNotReady) {\n const initializers = Object.keys(plugins).reduce((acc, current) => {\n const InitializerComponent = plugins[current].initializer;\n\n if (InitializerComponent) {\n const key = plugins[current].pluginId;\n\n acc.push(<InitializerComponent key={key} setPlugin={setPlugin.current} />);\n }\n\n return acc;\n }, [] as React.ReactNode[]);\n\n return (\n <>\n {initializers}\n <LoadingIndicatorPage />\n </>\n );\n }\n\n return <Admin />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Reducer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface State {\n plugins: StrapiAppContextValue['plugins'];\n}\n\nconst initialState: State = {\n plugins: {},\n};\n\ntype SetPluginReadyAction = {\n type: 'SET_PLUGIN_READY';\n pluginId: string;\n};\n\ntype Action = SetPluginReadyAction;\n\nconst reducer: React.Reducer<State, Action> = (state = initialState, action: Action): State =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'SET_PLUGIN_READY': {\n set(draftState, ['plugins', action.pluginId, 'isReady'], true);\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * Init state\n * -----------------------------------------------------------------------------------------------*/\n\nconst init = (plugins: State['plugins']): State => {\n return {\n plugins: Object.keys(plugins).reduce<State['plugins']>((acc, current) => {\n acc[current] = { ...plugins[current] };\n\n return acc;\n }, {}),\n };\n};\n\nexport { PluginsInitializer };\n","import * as React from 'react';\n\nimport { AppInfoProvider, LoadingIndicatorPage, useGuidedTour } from '@strapi/helper-plugin';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n// TODO: DS add loader\n\nimport packageJSON from '../../../package.json';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useInformationQuery } from '../services/admin';\nimport { useGetMyPermissionsQuery } from '../services/auth';\nimport { getFullName } from '../utils/getFullName';\nimport { hashAdminUserEmail } from '../utils/hashAdminUserEmail';\n\nimport { NpsSurvey } from './NpsSurvey';\nimport { PluginsInitializer } from './PluginsInitializer';\nimport { RBACProvider } from './RBACProvider';\n\nconst strapiVersion = packageJSON.version;\n\nconst AuthenticatedApp = () => {\n const { setGuidedTourVisibility } = useGuidedTour();\n const { user } = useAuth('AuthenticatedApp');\n const userInfo = user;\n const [userDisplayName, setUserDisplayName] = React.useState<string>(() =>\n userInfo ? userInfo.username || getFullName(userInfo.firstname ?? '', userInfo.lastname) : ''\n );\n /**\n * Keep this in sync with the user info we return from the useAuth hook.\n * We can't remove the above state because it's used in `useAppInfo` which\n * is a public API.\n *\n * TODO: remove this workaround in V5.\n */\n React.useEffect(() => {\n setUserDisplayName(\n userInfo ? userInfo.username || getFullName(userInfo.firstname ?? '', userInfo.lastname) : ''\n );\n }, [userInfo]);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n /**\n * TODO: in V5 remove the `RBACProvider` and fire this in the Auth provider instead.\n */\n const {\n data: permissions,\n isLoading: isLoadingPermissions,\n refetch,\n } = useGetMyPermissionsQuery();\n\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n throw new Error();\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n const userRoles = user?.roles;\n\n React.useEffect(() => {\n if (userRoles) {\n const isUserSuperAdmin = userRoles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin && appInfo?.autoReload) {\n setGuidedTourVisibility(true);\n }\n }\n }, [userRoles, appInfo?.autoReload, setGuidedTourVisibility]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingAppInfo || isLoadingPermissions) {\n return <LoadingIndicatorPage />;\n }\n\n const refetchPermissions = () => {\n refetch();\n };\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n setUserDisplayName={setUserDisplayName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n userDisplayName={userDisplayName}\n >\n <RBACProvider permissions={permissions ?? []} refetchPermissions={refetchPermissions}>\n <NpsSurvey />\n <PluginsInitializer />\n </RBACProvider>\n </AppInfoProvider>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AuthenticatedApp };\n"],"names":["RouterNavLink","name","NavLink","NotFoundPage","InternalErrorPage"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ const React = require("react");
|
|
|
4
4
|
const helperPlugin = require("@strapi/helper-plugin");
|
|
5
5
|
const lt = require("semver/functions/lt");
|
|
6
6
|
const valid = require("semver/functions/valid");
|
|
7
|
-
const index = require("./index-
|
|
7
|
+
const index = require("./index-kZ-K27W9.js");
|
|
8
8
|
const produce = require("immer");
|
|
9
9
|
const set = require("lodash/set");
|
|
10
10
|
const reactDnd = require("react-dnd");
|
|
@@ -46,7 +46,7 @@ const get__default = /* @__PURE__ */ _interopDefault(get);
|
|
|
46
46
|
const styled__default = /* @__PURE__ */ _interopDefault(styled);
|
|
47
47
|
const cloneDeep__default = /* @__PURE__ */ _interopDefault(cloneDeep);
|
|
48
48
|
const name = "@strapi/admin";
|
|
49
|
-
const version = "4.24.
|
|
49
|
+
const version = "4.24.2";
|
|
50
50
|
const description = "Strapi Admin";
|
|
51
51
|
const repository = {
|
|
52
52
|
type: "git",
|
|
@@ -119,13 +119,13 @@ const dependencies = {
|
|
|
119
119
|
"@radix-ui/react-toolbar": "1.0.4",
|
|
120
120
|
"@reduxjs/toolkit": "1.9.7",
|
|
121
121
|
"@strapi/design-system": "1.18.0",
|
|
122
|
-
"@strapi/helper-plugin": "4.24.
|
|
122
|
+
"@strapi/helper-plugin": "4.24.2",
|
|
123
123
|
"@strapi/icons": "1.18.0",
|
|
124
|
-
"@strapi/permissions": "4.24.
|
|
125
|
-
"@strapi/provider-audit-logs-local": "4.24.
|
|
126
|
-
"@strapi/types": "4.24.
|
|
127
|
-
"@strapi/typescript-utils": "4.24.
|
|
128
|
-
"@strapi/utils": "4.24.
|
|
124
|
+
"@strapi/permissions": "4.24.2",
|
|
125
|
+
"@strapi/provider-audit-logs-local": "4.24.2",
|
|
126
|
+
"@strapi/types": "4.24.2",
|
|
127
|
+
"@strapi/typescript-utils": "4.24.2",
|
|
128
|
+
"@strapi/utils": "4.24.2",
|
|
129
129
|
"@vitejs/plugin-react-swc": "3.5.0",
|
|
130
130
|
axios: "1.6.0",
|
|
131
131
|
bcryptjs: "2.4.3",
|
|
@@ -206,7 +206,6 @@ const dependencies = {
|
|
|
206
206
|
"slate-react": "0.98.3",
|
|
207
207
|
"style-loader": "3.3.4",
|
|
208
208
|
typescript: "5.2.2",
|
|
209
|
-
"use-context-selector": "1.4.1",
|
|
210
209
|
vite: "5.0.13",
|
|
211
210
|
webpack: "^5.89.0",
|
|
212
211
|
"webpack-bundle-analyzer": "^4.10.1",
|
|
@@ -215,11 +214,11 @@ const dependencies = {
|
|
|
215
214
|
yup: "0.32.9"
|
|
216
215
|
};
|
|
217
216
|
const devDependencies = {
|
|
218
|
-
"@strapi/admin-test-utils": "4.24.
|
|
219
|
-
"@strapi/data-transfer": "4.24.
|
|
217
|
+
"@strapi/admin-test-utils": "4.24.2",
|
|
218
|
+
"@strapi/data-transfer": "4.24.2",
|
|
220
219
|
"@strapi/pack-up": "4.23.0",
|
|
221
|
-
"@strapi/plugin-content-manager": "4.24.
|
|
222
|
-
"@strapi/strapi": "4.24.
|
|
220
|
+
"@strapi/plugin-content-manager": "4.24.2",
|
|
221
|
+
"@strapi/strapi": "4.24.2",
|
|
223
222
|
"@testing-library/dom": "9.2.0",
|
|
224
223
|
"@testing-library/react": "14.0.0",
|
|
225
224
|
"@testing-library/user-event": "14.4.3",
|
|
@@ -736,7 +735,7 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => {
|
|
|
736
735
|
const { formatMessage } = reactIntl.useIntl();
|
|
737
736
|
const { trackUsage } = helperPlugin.useTracking();
|
|
738
737
|
const { pathname } = reactRouterDom.useLocation();
|
|
739
|
-
const logout = index.useAuth("Logout"
|
|
738
|
+
const { logout } = index.useAuth("Logout");
|
|
740
739
|
const initials = userDisplayName.split(" ").map((name2) => name2.substring(0, 1)).join("").substring(0, 2);
|
|
741
740
|
const handleToggleUserLinks = () => setUserLinksVisible((prev) => !prev);
|
|
742
741
|
const handleBlur = (e) => {
|
|
@@ -1223,23 +1222,23 @@ const AppLayout = ({ children, sideNav }) => {
|
|
|
1223
1222
|
] });
|
|
1224
1223
|
};
|
|
1225
1224
|
const CM = React__namespace.lazy(
|
|
1226
|
-
() => Promise.resolve().then(() => require("./index-
|
|
1225
|
+
() => Promise.resolve().then(() => require("./index-kZ-K27W9.js")).then((n) => n.App).then((mod) => ({ default: mod.App }))
|
|
1227
1226
|
);
|
|
1228
1227
|
const HomePage = React__namespace.lazy(
|
|
1229
|
-
() => Promise.resolve().then(() => require("./HomePage-
|
|
1228
|
+
() => Promise.resolve().then(() => require("./HomePage-8ggsrnev.js")).then((mod) => ({
|
|
1230
1229
|
default: mod.HomePage
|
|
1231
1230
|
}))
|
|
1232
1231
|
);
|
|
1233
1232
|
const InstalledPluginsPage = React__namespace.lazy(
|
|
1234
|
-
() => Promise.resolve().then(() => require("./InstalledPluginsPage-
|
|
1233
|
+
() => Promise.resolve().then(() => require("./InstalledPluginsPage-Xv7kCAsO.js")).then((mod) => ({
|
|
1235
1234
|
default: mod.ProtectedInstalledPluginsPage
|
|
1236
1235
|
}))
|
|
1237
1236
|
);
|
|
1238
1237
|
const MarketplacePage = React__namespace.lazy(
|
|
1239
|
-
() => Promise.resolve().then(() => require("./MarketplacePage-
|
|
1238
|
+
() => Promise.resolve().then(() => require("./MarketplacePage-9z1R0T1b.js")).then((mod) => ({ default: mod.ProtectedMarketplacePage }))
|
|
1240
1239
|
);
|
|
1241
1240
|
const NotFoundPage = React__namespace.lazy(
|
|
1242
|
-
() => Promise.resolve().then(() => require("./index-
|
|
1241
|
+
() => Promise.resolve().then(() => require("./index-kZ-K27W9.js")).then((n) => n.NotFoundPage).then(({ NotFoundPage: NotFoundPage2 }) => ({ default: NotFoundPage2 }))
|
|
1243
1242
|
);
|
|
1244
1243
|
const InternalErrorPage = React__namespace.lazy(
|
|
1245
1244
|
() => Promise.resolve().then(() => require("./InternalErrorPage-MkOX2w_Q.js")).then(({ InternalErrorPage: InternalErrorPage2 }) => ({
|
|
@@ -1247,12 +1246,12 @@ const InternalErrorPage = React__namespace.lazy(
|
|
|
1247
1246
|
}))
|
|
1248
1247
|
);
|
|
1249
1248
|
const ProfilePage = React__namespace.lazy(
|
|
1250
|
-
() => Promise.resolve().then(() => require("./ProfilePage-
|
|
1249
|
+
() => Promise.resolve().then(() => require("./ProfilePage-HCD8iiDz.js")).then((mod) => ({
|
|
1251
1250
|
default: mod.ProfilePage
|
|
1252
1251
|
}))
|
|
1253
1252
|
);
|
|
1254
1253
|
const SettingsPage = React__namespace.lazy(
|
|
1255
|
-
() => Promise.resolve().then(() => require("./SettingsPage-
|
|
1254
|
+
() => Promise.resolve().then(() => require("./SettingsPage-x4AKyEnW.js")).then((mod) => ({
|
|
1256
1255
|
default: mod.SettingsPage
|
|
1257
1256
|
}))
|
|
1258
1257
|
);
|
|
@@ -1353,7 +1352,8 @@ const init = (plugins) => {
|
|
|
1353
1352
|
const strapiVersion = packageJSON.version;
|
|
1354
1353
|
const AuthenticatedApp = () => {
|
|
1355
1354
|
const { setGuidedTourVisibility } = helperPlugin.useGuidedTour();
|
|
1356
|
-
const
|
|
1355
|
+
const { user } = index.useAuth("AuthenticatedApp");
|
|
1356
|
+
const userInfo = user;
|
|
1357
1357
|
const [userDisplayName, setUserDisplayName] = React__namespace.useState(
|
|
1358
1358
|
() => userInfo ? userInfo.username || getFullName(userInfo.firstname ?? "", userInfo.lastname) : ""
|
|
1359
1359
|
);
|
|
@@ -1386,7 +1386,7 @@ const AuthenticatedApp = () => {
|
|
|
1386
1386
|
});
|
|
1387
1387
|
}
|
|
1388
1388
|
}, [showReleaseNotification]);
|
|
1389
|
-
const userRoles =
|
|
1389
|
+
const userRoles = user?.roles;
|
|
1390
1390
|
React__namespace.useEffect(() => {
|
|
1391
1391
|
if (userRoles) {
|
|
1392
1392
|
const isUserSuperAdmin = userRoles.find(({ code }) => code === "strapi-super-admin");
|
|
@@ -1441,4 +1441,4 @@ exports.STATES = STATES;
|
|
|
1441
1441
|
exports.VerticalDivider = VerticalDivider;
|
|
1442
1442
|
exports.getFullName = getFullName;
|
|
1443
1443
|
exports.selectAdminPermissions = selectAdminPermissions;
|
|
1444
|
-
//# sourceMappingURL=AuthenticatedApp-
|
|
1444
|
+
//# sourceMappingURL=AuthenticatedApp-dvvFgV0a.js.map
|