@strapi/admin 5.0.0-alpha.1 → 5.0.0-alpha.2
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-TjK5LW2b.js → AdminSeatInfo-JtsYpBbO.js} +3 -3
- package/dist/_chunks/{AdminSeatInfo-TjK5LW2b.js.map → AdminSeatInfo-JtsYpBbO.js.map} +1 -1
- package/dist/_chunks/{AdminSeatInfo-20pkL95U.mjs → AdminSeatInfo-ZZsKxX-S.mjs} +3 -3
- package/dist/_chunks/{AdminSeatInfo-20pkL95U.mjs.map → AdminSeatInfo-ZZsKxX-S.mjs.map} +1 -1
- package/dist/_chunks/{ApplicationInfoPage-ed6y9Q-B.mjs → ApplicationInfoPage-NhhWzHF1.mjs} +15 -15
- package/dist/_chunks/ApplicationInfoPage-NhhWzHF1.mjs.map +1 -0
- package/dist/_chunks/{ApplicationInfoPage-1OdKMDYH.js → ApplicationInfoPage-xj1SCaSR.js} +13 -13
- package/dist/_chunks/ApplicationInfoPage-xj1SCaSR.js.map +1 -0
- package/dist/_chunks/{AuthResponse-Hxop00n-.mjs → AuthResponse-jIqWZLMh.mjs} +2 -2
- package/dist/_chunks/{AuthResponse-Hxop00n-.mjs.map → AuthResponse-jIqWZLMh.mjs.map} +1 -1
- package/dist/_chunks/{AuthResponse-sca_wjIN.js → AuthResponse-maUe9KWA.js} +2 -2
- package/dist/_chunks/{AuthResponse-sca_wjIN.js.map → AuthResponse-maUe9KWA.js.map} +1 -1
- package/dist/_chunks/{AuthenticatedLayout-knXNB2i2.mjs → AuthenticatedLayout-Ffy6uoNF.mjs} +27 -22
- package/dist/_chunks/AuthenticatedLayout-Ffy6uoNF.mjs.map +1 -0
- package/dist/_chunks/{AuthenticatedLayout-PPlOm7kb.js → AuthenticatedLayout-kxORHKAl.js} +29 -25
- package/dist/_chunks/AuthenticatedLayout-kxORHKAl.js.map +1 -0
- package/dist/_chunks/{ComponentConfigurationPage-xZMDjeVf.js → ComponentConfigurationPage-JMCc1P7r.js} +12 -11
- package/dist/_chunks/ComponentConfigurationPage-JMCc1P7r.js.map +1 -0
- package/dist/_chunks/{ComponentConfigurationPage-okd3XovW.mjs → ComponentConfigurationPage-oiBCHXQO.mjs} +12 -11
- package/dist/_chunks/ComponentConfigurationPage-oiBCHXQO.mjs.map +1 -0
- package/dist/_chunks/{CreateActionEE-E6YNdAVx.js → CreateActionEE-ThopeFZP.js} +2 -2
- package/dist/_chunks/{CreateActionEE-E6YNdAVx.js.map → CreateActionEE-ThopeFZP.js.map} +1 -1
- package/dist/_chunks/{CreateActionEE-PaZYJ410.mjs → CreateActionEE-VMKfXSGW.mjs} +2 -2
- package/dist/_chunks/{CreateActionEE-PaZYJ410.mjs.map → CreateActionEE-VMKfXSGW.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-P1F3dkB3.mjs → CreatePage-6AeIanOF.mjs} +16 -17
- package/dist/_chunks/CreatePage-6AeIanOF.mjs.map +1 -0
- package/dist/_chunks/{CreatePage-PM_r99U5.mjs → CreatePage-Gh5xb10f.mjs} +9 -10
- package/dist/_chunks/CreatePage-Gh5xb10f.mjs.map +1 -0
- package/dist/_chunks/{CreatePage-hlkPO2Cv.js → CreatePage-JIHfFWS7.js} +3 -3
- package/dist/_chunks/{CreatePage-hlkPO2Cv.js.map → CreatePage-JIHfFWS7.js.map} +1 -1
- package/dist/_chunks/{CreatePage-1Oi4-aR6.js → CreatePage-WWKaoNH7.js} +16 -17
- package/dist/_chunks/CreatePage-WWKaoNH7.js.map +1 -0
- package/dist/_chunks/{CreatePage-6458K0l9.mjs → CreatePage-hxFhldpL.mjs} +3 -3
- package/dist/_chunks/{CreatePage-6458K0l9.mjs.map → CreatePage-hxFhldpL.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-DmNFNVN9.js → CreatePage-yjmy0z57.js} +9 -10
- package/dist/_chunks/CreatePage-yjmy0z57.js.map +1 -0
- package/dist/_chunks/{CreateView-AWmN1xWJ.js → CreateView-J48m0lSL.js} +3 -3
- package/dist/_chunks/{CreateView-AWmN1xWJ.js.map → CreateView-J48m0lSL.js.map} +1 -1
- package/dist/_chunks/{CreateView-hUH4bf5k.js → CreateView-Vqd1PVrJ.js} +3 -3
- package/dist/_chunks/{CreateView-hUH4bf5k.js.map → CreateView-Vqd1PVrJ.js.map} +1 -1
- package/dist/_chunks/{CreateView-cTvLLIgu.mjs → CreateView-oBp0NzJx.mjs} +3 -3
- package/dist/_chunks/{CreateView-cTvLLIgu.mjs.map → CreateView-oBp0NzJx.mjs.map} +1 -1
- package/dist/_chunks/{CreateView-pBI75ZwZ.mjs → CreateView-qzpeDBvR.mjs} +3 -3
- package/dist/_chunks/{CreateView-pBI75ZwZ.mjs.map → CreateView-qzpeDBvR.mjs.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-LItt0mJo.mjs → EditConfigurationPage-MAUfMzG6.mjs} +11 -10
- package/dist/_chunks/EditConfigurationPage-MAUfMzG6.mjs.map +1 -0
- package/dist/_chunks/{EditConfigurationPage-PZ4yq1bM.js → EditConfigurationPage-PKHUVKGD.js} +11 -10
- package/dist/_chunks/EditConfigurationPage-PKHUVKGD.js.map +1 -0
- package/dist/_chunks/{EditPage-W6hncyNY.js → EditPage-7bVupT7n.js} +15 -15
- package/dist/_chunks/EditPage-7bVupT7n.js.map +1 -0
- package/dist/_chunks/{EditPage-MPNLCYgQ.mjs → EditPage-DQUZsl8H.mjs} +16 -17
- package/dist/_chunks/EditPage-DQUZsl8H.mjs.map +1 -0
- package/dist/_chunks/{EditPage-mU2WAH0F.js → EditPage-Hxt5uBXk.js} +10 -11
- package/dist/_chunks/EditPage-Hxt5uBXk.js.map +1 -0
- package/dist/_chunks/{EditPage-30rqjB1d.mjs → EditPage-Izmz7bdh.mjs} +16 -16
- package/dist/_chunks/EditPage-Izmz7bdh.mjs.map +1 -0
- package/dist/_chunks/{EditPage-_N_lm93z.js → EditPage-QA0-S3kV.js} +14 -15
- package/dist/_chunks/EditPage-QA0-S3kV.js.map +1 -0
- package/dist/_chunks/{EditPage--EPGgPNr.mjs → EditPage-THSaM4-0.mjs} +10 -11
- package/dist/_chunks/EditPage-THSaM4-0.mjs.map +1 -0
- package/dist/_chunks/{EditPage-RpzlPkkU.js → EditPage-vUQIn3OJ.js} +18 -19
- package/dist/_chunks/{EditPage-RpzlPkkU.js.map → EditPage-vUQIn3OJ.js.map} +1 -1
- package/dist/_chunks/{EditPage-GRIZWtGz.mjs → EditPage-zpnfFOjc.mjs} +18 -19
- package/dist/_chunks/{EditPage-GRIZWtGz.mjs.map → EditPage-zpnfFOjc.mjs.map} +1 -1
- package/dist/_chunks/{EditView-wDP9PNQY.js → EditView-63ynF0vf.js} +12 -13
- package/dist/_chunks/EditView-63ynF0vf.js.map +1 -0
- package/dist/_chunks/{EditView-0lXpbgG0.mjs → EditView-cfOpTlAi.mjs} +14 -15
- package/dist/_chunks/EditView-cfOpTlAi.mjs.map +1 -0
- package/dist/_chunks/{EditViewPage-0Pd8zBi7.js → EditViewPage--SujdXIG.js} +16 -18
- package/dist/_chunks/EditViewPage--SujdXIG.js.map +1 -0
- package/dist/_chunks/{EditViewPage-R6diW-gL.mjs → EditViewPage-JFzIJClS.mjs} +6 -7
- package/dist/_chunks/EditViewPage-JFzIJClS.mjs.map +1 -0
- package/dist/_chunks/{EditViewPage-ed0-10GO.js → EditViewPage-kkCJlZyh.js} +8 -9
- package/dist/_chunks/EditViewPage-kkCJlZyh.js.map +1 -0
- package/dist/_chunks/{EditViewPage-uWYR_o8w.mjs → EditViewPage-vz8UJ4U_.mjs} +17 -18
- package/dist/_chunks/EditViewPage-vz8UJ4U_.mjs.map +1 -0
- package/dist/_chunks/{EventsTable-R_AHW6Z4.js → EventsTable-1X4uyY8J.js} +2 -2
- package/dist/_chunks/{EventsTable-R_AHW6Z4.js.map → EventsTable-1X4uyY8J.js.map} +1 -1
- package/dist/_chunks/{EventsTable-CqN6AzV9.mjs → EventsTable-dN2MNNFu.mjs} +2 -2
- package/dist/_chunks/{EventsTable-CqN6AzV9.mjs.map → EventsTable-dN2MNNFu.mjs.map} +1 -1
- package/dist/_chunks/{FieldTypeIcon-rAK1gg9p.mjs → FieldTypeIcon-4-UZzZla.mjs} +2 -2
- package/dist/_chunks/{FieldTypeIcon-rAK1gg9p.mjs.map → FieldTypeIcon-4-UZzZla.mjs.map} +1 -1
- package/dist/_chunks/{FieldTypeIcon-1WDWx0cR.js → FieldTypeIcon-wxfhExw2.js} +2 -2
- package/dist/_chunks/{FieldTypeIcon-1WDWx0cR.js.map → FieldTypeIcon-wxfhExw2.js.map} +1 -1
- package/dist/_chunks/{Filters-rPaxqj4F.mjs → Filters--lh-i85A.mjs} +2 -3
- package/dist/_chunks/Filters--lh-i85A.mjs.map +1 -0
- package/dist/_chunks/{Filters-f6ghLf0Z.js → Filters-V0VODaNk.js} +4 -5
- package/dist/_chunks/Filters-V0VODaNk.js.map +1 -0
- package/dist/_chunks/{Form-eqzCPjSo.js → Form-6QJjWK34.js} +5 -6
- package/dist/_chunks/Form-6QJjWK34.js.map +1 -0
- package/dist/_chunks/{Form-QOZA9Aq6.mjs → Form-HXiNxSZi.mjs} +5 -6
- package/dist/_chunks/Form-HXiNxSZi.mjs.map +1 -0
- package/dist/_chunks/{History-Eq4_WQPf.mjs → History-CRGqDfHr.mjs} +4 -5
- package/dist/_chunks/History-CRGqDfHr.mjs.map +1 -0
- package/dist/_chunks/{History-j00hpmXV.js → History-R_4lEy01.js} +9 -10
- package/dist/_chunks/History-R_4lEy01.js.map +1 -0
- package/dist/_chunks/{HomePage-gTElgmEK.mjs → HomePage-GJRtRqAj.mjs} +3 -3
- package/dist/_chunks/{HomePage-gTElgmEK.mjs.map → HomePage-GJRtRqAj.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-O-TRGX5T.mjs → HomePage-Si17pjt5.mjs} +5 -6
- package/dist/_chunks/HomePage-Si17pjt5.mjs.map +1 -0
- package/dist/_chunks/{HomePage-3IVOMrYf.js → HomePage-oiaJD-JE.js} +5 -6
- package/dist/_chunks/HomePage-oiaJD-JE.js.map +1 -0
- package/dist/_chunks/{HomePage-79fqDlve.js → HomePage-rEW7Jpww.js} +3 -3
- package/dist/_chunks/{HomePage-79fqDlve.js.map → HomePage-rEW7Jpww.js.map} +1 -1
- package/dist/_chunks/{InputRenderer-bJwYq9ga.mjs → InputRenderer-JfwBoJk0.mjs} +40 -18
- package/dist/_chunks/InputRenderer-JfwBoJk0.mjs.map +1 -0
- package/dist/_chunks/{InputRenderer-AVDw8MeU.js → InputRenderer-hWILsDgK.js} +42 -20
- package/dist/_chunks/InputRenderer-hWILsDgK.js.map +1 -0
- package/dist/_chunks/{InstalledPluginsPage-R2hVFPZl.mjs → InstalledPluginsPage-XqzfeZgq.mjs} +7 -9
- package/dist/_chunks/InstalledPluginsPage-XqzfeZgq.mjs.map +1 -0
- package/dist/_chunks/{InstalledPluginsPage-FkR2xkQz.js → InstalledPluginsPage-ao6yYe7N.js} +6 -8
- package/dist/_chunks/InstalledPluginsPage-ao6yYe7N.js.map +1 -0
- package/dist/_chunks/{Layout-omCNy92r.mjs → Layout-2dctwEHz.mjs} +2 -2
- package/dist/_chunks/{Layout-omCNy92r.mjs.map → Layout-2dctwEHz.mjs.map} +1 -1
- package/dist/_chunks/{Layout-cV6Se3U9.mjs → Layout-3sYAgWn4.mjs} +6 -6
- package/dist/_chunks/Layout-3sYAgWn4.mjs.map +1 -0
- package/dist/_chunks/{Layout-jweb3cF3.js → Layout-4vMUN0Ez.js} +2 -2
- package/dist/_chunks/{Layout-jweb3cF3.js.map → Layout-4vMUN0Ez.js.map} +1 -1
- package/dist/_chunks/{Layout-G49-Vc5u.js → Layout-kbqdKkiF.js} +5 -5
- package/dist/_chunks/Layout-kbqdKkiF.js.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-70qtv4Ci.js → ListConfigurationPage-BXuW_9Wt.js} +10 -11
- package/dist/_chunks/ListConfigurationPage-BXuW_9Wt.js.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-PrJNO_6y.mjs → ListConfigurationPage-lPILAPkW.mjs} +10 -11
- package/dist/_chunks/ListConfigurationPage-lPILAPkW.mjs.map +1 -0
- package/dist/_chunks/{ListPage-78Cv8Vfq.js → ListPage-02WM7Pt9.js} +11 -12
- package/dist/_chunks/ListPage-02WM7Pt9.js.map +1 -0
- package/dist/_chunks/{ListPage-2lswUYQN.js → ListPage-7TAp-q4k.js} +15 -16
- package/dist/_chunks/ListPage-7TAp-q4k.js.map +1 -0
- package/dist/_chunks/{ListPage-edro79m2.mjs → ListPage-EdOy02-v.mjs} +11 -12
- package/dist/_chunks/ListPage-EdOy02-v.mjs.map +1 -0
- package/dist/_chunks/{ListPage-mAUCZIg8.mjs → ListPage-OaldiDCh.mjs} +57 -59
- package/dist/_chunks/ListPage-OaldiDCh.mjs.map +1 -0
- package/dist/_chunks/{ListPage-Q81SX0vA.mjs → ListPage-R8Qs69v7.mjs} +3 -3
- package/dist/_chunks/{ListPage-Q81SX0vA.mjs.map → ListPage-R8Qs69v7.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-Cvn3WbMH.mjs → ListPage-SCTNGhhO.mjs} +16 -17
- package/dist/_chunks/ListPage-SCTNGhhO.mjs.map +1 -0
- package/dist/_chunks/{ListPage-xFkcmM1b.mjs → ListPage-YZ45BiMe.mjs} +17 -18
- package/dist/_chunks/ListPage-YZ45BiMe.mjs.map +1 -0
- package/dist/_chunks/{ListPage-7dZ3nYvc.js → ListPage-ZWUo77nT.js} +55 -56
- package/dist/_chunks/ListPage-ZWUo77nT.js.map +1 -0
- package/dist/_chunks/{ListPage-Ms6egnF5.js → ListPage-bE4a6YkV.js} +3 -3
- package/dist/_chunks/{ListPage-Ms6egnF5.js.map → ListPage-bE4a6YkV.js.map} +1 -1
- package/dist/_chunks/{ListPage-NmUS_cOz.mjs → ListPage-p17R2Gql.mjs} +14 -18
- package/dist/_chunks/ListPage-p17R2Gql.mjs.map +1 -0
- package/dist/_chunks/{ListPage-Pf5LxUYn.js → ListPage-rCVvOLlD.js} +14 -20
- package/dist/_chunks/ListPage-rCVvOLlD.js.map +1 -0
- package/dist/_chunks/{ListPage-yymh17qi.js → ListPage-u6uVacPz.js} +14 -15
- package/dist/_chunks/ListPage-u6uVacPz.js.map +1 -0
- package/dist/_chunks/{ListView--43zLiHW.mjs → ListView--O7X6dMw.mjs} +13 -14
- package/dist/_chunks/ListView--O7X6dMw.mjs.map +1 -0
- package/dist/_chunks/{ListView-YtMAQnXL.js → ListView-SsUn5vcn.js} +11 -12
- package/dist/_chunks/ListView-SsUn5vcn.js.map +1 -0
- package/dist/_chunks/{ListView-nfA6o3qO.js → ListView-ZkjwQBXQ.js} +10 -11
- package/dist/_chunks/ListView-ZkjwQBXQ.js.map +1 -0
- package/dist/_chunks/{ListView-qPiKeCxj.mjs → ListView-oP-C8SCR.mjs} +12 -13
- package/dist/_chunks/ListView-oP-C8SCR.mjs.map +1 -0
- package/dist/_chunks/{ListViewPage-fPFonK_X.mjs → ListViewPage-1VNVP9Rw.mjs} +12 -13
- package/dist/_chunks/ListViewPage-1VNVP9Rw.mjs.map +1 -0
- package/dist/_chunks/{ListViewPage-Ys7-G2XX.js → ListViewPage-idgrhBAP.js} +16 -17
- package/dist/_chunks/ListViewPage-idgrhBAP.js.map +1 -0
- package/dist/_chunks/{Login-Ge3DZEpr.js → Login-4Igrm6CC.js} +2 -2
- package/dist/_chunks/{Login-Ge3DZEpr.js.map → Login-4Igrm6CC.js.map} +1 -1
- package/dist/_chunks/{Login-6kXI90Vy.mjs → Login-B55AM-7k.mjs} +2 -2
- package/dist/_chunks/{Login-6kXI90Vy.mjs.map → Login-B55AM-7k.mjs.map} +1 -1
- package/dist/_chunks/{MagicLinkEE-HXWaLr0K.mjs → MagicLinkEE-Zy_9ZZ7y.mjs} +3 -3
- package/dist/_chunks/{MagicLinkEE-HXWaLr0K.mjs.map → MagicLinkEE-Zy_9ZZ7y.mjs.map} +1 -1
- package/dist/_chunks/{MagicLinkEE-sXtA2gUK.js → MagicLinkEE-v7xTuVEA.js} +3 -3
- package/dist/_chunks/{MagicLinkEE-sXtA2gUK.js.map → MagicLinkEE-v7xTuVEA.js.map} +1 -1
- package/dist/_chunks/{MarketplacePage-hVOJ9_0k.mjs → MarketplacePage-UGys0LVN.mjs} +20 -17
- package/dist/_chunks/MarketplacePage-UGys0LVN.mjs.map +1 -0
- package/dist/_chunks/{MarketplacePage-s8KDwNwK.js → MarketplacePage-tWKM5xe8.js} +22 -19
- package/dist/_chunks/MarketplacePage-tWKM5xe8.js.map +1 -0
- package/dist/_chunks/{NoContentTypePage-szvJnQKF.mjs → NoContentTypePage-BaaTD5uB.mjs} +4 -6
- package/dist/_chunks/NoContentTypePage-BaaTD5uB.mjs.map +1 -0
- package/dist/_chunks/{NoContentTypePage-7YEcgsE3.js → NoContentTypePage-Lbuve_Uu.js} +3 -5
- package/dist/_chunks/NoContentTypePage-Lbuve_Uu.js.map +1 -0
- package/dist/_chunks/{NoPermissionsPage-pqQFFlXa.mjs → NoPermissionsPage--Oa97N7k.mjs} +5 -7
- package/dist/_chunks/NoPermissionsPage--Oa97N7k.mjs.map +1 -0
- package/dist/_chunks/{NoPermissionsPage-UX-5msLb.js → NoPermissionsPage-q44k5VFX.js} +3 -5
- package/dist/_chunks/NoPermissionsPage-q44k5VFX.js.map +1 -0
- package/dist/_chunks/{Permissions-a0IZJ8dM.js → Permissions-CFuwI0Ni.js} +5 -6
- package/dist/_chunks/Permissions-CFuwI0Ni.js.map +1 -0
- package/dist/_chunks/{Permissions-NUaDxULo.mjs → Permissions-NbmBkSB4.mjs} +3 -3
- package/dist/_chunks/Permissions-NbmBkSB4.mjs.map +1 -0
- package/dist/_chunks/{PrivateRoute-eP4-pBby.mjs → PrivateRoute-YN_98pM_.mjs} +2 -2
- package/dist/_chunks/{PrivateRoute-eP4-pBby.mjs.map → PrivateRoute-YN_98pM_.mjs.map} +1 -1
- package/dist/_chunks/{PrivateRoute-KGxyTa5b.js → PrivateRoute-avlq1MEy.js} +2 -2
- package/dist/_chunks/{PrivateRoute-KGxyTa5b.js.map → PrivateRoute-avlq1MEy.js.map} +1 -1
- package/dist/_chunks/{ProfilePage-MBCGqbc_.js → ProfilePage-brPbqDP1.js} +14 -16
- package/dist/_chunks/ProfilePage-brPbqDP1.js.map +1 -0
- package/dist/_chunks/{ProfilePage-LXB-_EZ8.mjs → ProfilePage-eCIvxxJY.mjs} +15 -17
- package/dist/_chunks/ProfilePage-eCIvxxJY.mjs.map +1 -0
- package/dist/_chunks/{ReviewWorkflowsColumn-Ancp7-x3.js → ReviewWorkflowsColumn-HfjzpLFU.js} +2 -2
- package/dist/_chunks/{ReviewWorkflowsColumn-Ancp7-x3.js.map → ReviewWorkflowsColumn-HfjzpLFU.js.map} +1 -1
- package/dist/_chunks/{ReviewWorkflowsColumn-WzYpj2O3.mjs → ReviewWorkflowsColumn-sPZxvFUd.mjs} +2 -2
- package/dist/_chunks/{ReviewWorkflowsColumn-WzYpj2O3.mjs.map → ReviewWorkflowsColumn-sPZxvFUd.mjs.map} +1 -1
- package/dist/_chunks/{SelectRoles-Pr2wqehq.js → SelectRoles-BmNzL0q5.js} +9 -7
- package/dist/_chunks/SelectRoles-BmNzL0q5.js.map +1 -0
- package/dist/_chunks/{SelectRoles-Dxz_rAaT.mjs → SelectRoles-jvH4WUf6.mjs} +8 -6
- package/dist/_chunks/SelectRoles-jvH4WUf6.mjs.map +1 -0
- package/dist/_chunks/{SingleSignOnPage-4dK4id8H.js → SingleSignOnPage-ZyiHtZxJ.js} +10 -11
- package/dist/_chunks/SingleSignOnPage-ZyiHtZxJ.js.map +1 -0
- package/dist/_chunks/{SingleSignOnPage-gxgIeURz.mjs → SingleSignOnPage-aMd3wcAh.mjs} +12 -13
- package/dist/_chunks/SingleSignOnPage-aMd3wcAh.mjs.map +1 -0
- package/dist/_chunks/{Table-NiTkS4IC.mjs → Table-591I_RMU.mjs} +2 -3
- package/dist/_chunks/Table-591I_RMU.mjs.map +1 -0
- package/dist/_chunks/{Table-_9gVkGGi.js → Table-aUfykqgd.js} +3 -4
- package/dist/_chunks/Table-aUfykqgd.js.map +1 -0
- package/dist/_chunks/{TokenTypeSelect-jtfCyMMZ.mjs → TokenTypeSelect-vIBdBE9t.mjs} +9 -10
- package/dist/_chunks/TokenTypeSelect-vIBdBE9t.mjs.map +1 -0
- package/dist/_chunks/{TokenTypeSelect-3aWUm1cW.js → TokenTypeSelect-vp-54yBv.js} +10 -11
- package/dist/_chunks/TokenTypeSelect-vp-54yBv.js.map +1 -0
- package/dist/_chunks/{UseCasePage-QK-B8FfM.js → UseCasePage-0_alQEc9.js} +6 -7
- package/dist/_chunks/UseCasePage-0_alQEc9.js.map +1 -0
- package/dist/_chunks/{UseCasePage-0qXYZ8kt.mjs → UseCasePage-Cxu2FeWo.mjs} +6 -7
- package/dist/_chunks/UseCasePage-Cxu2FeWo.mjs.map +1 -0
- package/dist/_chunks/{apiTokens-TayNdk_V.js → apiTokens-IG3rF-G2.js} +2 -2
- package/dist/_chunks/{apiTokens-TayNdk_V.js.map → apiTokens-IG3rF-G2.js.map} +1 -1
- package/dist/_chunks/{apiTokens-DO6vkoyd.mjs → apiTokens-wLmJ3Liv.mjs} +2 -2
- package/dist/_chunks/{apiTokens-DO6vkoyd.mjs.map → apiTokens-wLmJ3Liv.mjs.map} +1 -1
- package/dist/_chunks/{constants-_T5uxsuv.mjs → constants-0OGkpIzK.mjs} +3 -3
- package/dist/_chunks/{constants-_T5uxsuv.mjs.map → constants-0OGkpIzK.mjs.map} +1 -1
- package/dist/_chunks/{constants-RZp8o_c4.js → constants-7yqqXq3r.js} +2 -2
- package/dist/_chunks/{constants-RZp8o_c4.js.map → constants-7yqqXq3r.js.map} +1 -1
- package/dist/_chunks/{constants-FEW7x2Od.mjs → constants-JgR8CVx2.mjs} +2 -2
- package/dist/_chunks/{constants-FEW7x2Od.mjs.map → constants-JgR8CVx2.mjs.map} +1 -1
- package/dist/_chunks/{constants-Xd-X3SCR.js → constants-XJLrl2Tl.js} +3 -3
- package/dist/_chunks/{constants-Xd-X3SCR.js.map → constants-XJLrl2Tl.js.map} +1 -1
- package/dist/_chunks/{index-hjUhNUvw.mjs → index-GIVuHJgC.mjs} +647 -312
- package/dist/_chunks/index-GIVuHJgC.mjs.map +1 -0
- package/dist/_chunks/{index-ejSDPT-T.js → index-haHGOQMJ.js} +553 -218
- package/dist/_chunks/index-haHGOQMJ.js.map +1 -0
- package/dist/_chunks/{selectors-uLWxH-jN.mjs → selectors--2Vzk8PA.mjs} +2 -2
- package/dist/_chunks/{selectors-uLWxH-jN.mjs.map → selectors--2Vzk8PA.mjs.map} +1 -1
- package/dist/_chunks/{selectors-T2YIN4Fb.js → selectors-NSSzzIzx.js} +2 -2
- package/dist/_chunks/{selectors-T2YIN4Fb.js.map → selectors-NSSzzIzx.js.map} +1 -1
- package/dist/_chunks/{transferTokens-jdkk-sPx.mjs → transferTokens-WIsWKVbF.mjs} +2 -2
- package/dist/_chunks/{transferTokens-jdkk-sPx.mjs.map → transferTokens-WIsWKVbF.mjs.map} +1 -1
- package/dist/_chunks/{transferTokens-T-kGMb3U.js → transferTokens-xL4mlopP.js} +2 -2
- package/dist/_chunks/{transferTokens-T-kGMb3U.js.map → transferTokens-xL4mlopP.js.map} +1 -1
- package/dist/_chunks/{useAdminRoles-QJQS1BCd.mjs → useAdminRoles--ozrdfW_.mjs} +2 -2
- package/dist/_chunks/{useAdminRoles-QJQS1BCd.mjs.map → useAdminRoles--ozrdfW_.mjs.map} +1 -1
- package/dist/_chunks/{useAdminRoles-SnzC_mvy.js → useAdminRoles-Y25Pjlcy.js} +2 -2
- package/dist/_chunks/{useAdminRoles-SnzC_mvy.js.map → useAdminRoles-Y25Pjlcy.js.map} +1 -1
- package/dist/_chunks/{useContentTypes-Lpg-eJmK.js → useContentTypes-Vr8jkHQL.js} +4 -5
- package/dist/_chunks/useContentTypes-Vr8jkHQL.js.map +1 -0
- package/dist/_chunks/{useContentTypes-U-n1-lz0.mjs → useContentTypes-ralhLmpD.mjs} +4 -5
- package/dist/_chunks/useContentTypes-ralhLmpD.mjs.map +1 -0
- package/dist/_chunks/{useLicenseLimitNotification-yJHxF4YO.mjs → useLicenseLimitNotification-RSTkqcfW.mjs} +5 -6
- package/dist/_chunks/useLicenseLimitNotification-RSTkqcfW.mjs.map +1 -0
- package/dist/_chunks/{useLicenseLimitNotification-Hjv_LKmp.js → useLicenseLimitNotification-fSsffVh-.js} +5 -6
- package/dist/_chunks/useLicenseLimitNotification-fSsffVh-.js.map +1 -0
- package/dist/_chunks/{useReviewWorkflows-0rQx2KxS.mjs → useReviewWorkflows--7WPIykR.mjs} +2 -2
- package/dist/_chunks/{useReviewWorkflows-0rQx2KxS.mjs.map → useReviewWorkflows--7WPIykR.mjs.map} +1 -1
- package/dist/_chunks/{useReviewWorkflows-QoSEilRp.js → useReviewWorkflows-4t3eVbDa.js} +2 -2
- package/dist/_chunks/{useReviewWorkflows-QoSEilRp.js.map → useReviewWorkflows-4t3eVbDa.js.map} +1 -1
- package/dist/_chunks/{useSyncRbac-hZJWbmmY.js → useSyncRbac-Fw5UPeMQ.js} +2 -2
- package/dist/_chunks/{useSyncRbac-hZJWbmmY.js.map → useSyncRbac-Fw5UPeMQ.js.map} +1 -1
- package/dist/_chunks/{useSyncRbac-wVgN6XIc.mjs → useSyncRbac-JNQibLFa.mjs} +2 -2
- package/dist/_chunks/{useSyncRbac-wVgN6XIc.mjs.map → useSyncRbac-JNQibLFa.mjs.map} +1 -1
- package/dist/_chunks/{useWebhooks-1ZG0V0Mc.js → useWebhooks-IXb4Ks8E.js} +2 -2
- package/dist/_chunks/{useWebhooks-1ZG0V0Mc.js.map → useWebhooks-IXb4Ks8E.js.map} +1 -1
- package/dist/_chunks/{useWebhooks-WBwti5Jl.mjs → useWebhooks-sfNt0r3v.mjs} +2 -2
- package/dist/_chunks/{useWebhooks-WBwti5Jl.mjs.map → useWebhooks-sfNt0r3v.mjs.map} +1 -1
- package/dist/_chunks/{validateWorkflow-23kb45Oa.mjs → validateWorkflow-YRBggwod.mjs} +5 -6
- package/dist/_chunks/validateWorkflow-YRBggwod.mjs.map +1 -0
- package/dist/_chunks/{validateWorkflow-MaEpFiHz.js → validateWorkflow-akFNValJ.js} +8 -9
- package/dist/_chunks/validateWorkflow-akFNValJ.js.map +1 -0
- package/dist/_chunks/{validation-7cD0kJHF.js → validation--QPWqn0e.js} +2 -2
- package/dist/_chunks/{validation-7cD0kJHF.js.map → validation--QPWqn0e.js.map} +1 -1
- package/dist/_chunks/{validation-rilbXPnt.mjs → validation-hlioQ0PO.mjs} +2 -2
- package/dist/_chunks/{validation-rilbXPnt.mjs.map → validation-hlioQ0PO.mjs.map} +1 -1
- package/dist/admin/index.js +7 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +28 -22
- package/dist/admin/src/components/PageHelpers.d.ts +6 -2
- package/dist/admin/src/content-manager/history/services/historyVersion.d.ts +1 -1
- package/dist/admin/src/content-manager/history/tests/mockData.d.ts +692 -0
- package/dist/admin/src/content-manager/history/tests/server.d.ts +3 -0
- package/dist/admin/src/content-manager/pages/EditView/components/DocumentActions.d.ts +2 -1
- package/dist/admin/src/content-manager/services/api.d.ts +1 -1
- package/dist/admin/src/content-manager/services/components.d.ts +2 -2
- package/dist/admin/src/content-manager/services/contentTypes.d.ts +3 -3
- package/dist/admin/src/content-manager/services/documents.d.ts +17 -20
- package/dist/admin/src/content-manager/services/init.d.ts +1 -1
- package/dist/admin/src/content-manager/services/relations.d.ts +2 -2
- package/dist/admin/src/content-manager/services/uid.d.ts +3 -3
- package/dist/admin/src/core/store/configure.d.ts +2 -2
- package/dist/admin/src/core/store/hooks.d.ts +3 -3
- package/dist/admin/src/features/AppInfo.d.ts +22 -0
- package/dist/admin/src/features/Notifications.d.ts +47 -0
- package/dist/admin/src/hooks/useAPIErrorHandler.d.ts +4 -3
- package/dist/admin/src/hooks/useClipboard.d.ts +4 -0
- package/dist/admin/src/hooks/useFetchClient.d.ts +43 -0
- package/dist/admin/src/hooks/useFocusInputField.d.ts +20 -0
- package/dist/admin/src/hooks/useQueryParams.d.ts +5 -0
- package/dist/admin/src/index.d.ts +8 -4
- package/dist/admin/src/pages/Marketplace/components/NpmPackageCard.d.ts +1 -1
- package/dist/admin/src/pages/Marketplace/components/NpmPackagesGrid.d.ts +1 -1
- package/dist/admin/src/pages/Marketplace/hooks/useMarketplaceData.d.ts +2 -2
- package/dist/admin/src/selectors.d.ts +2 -2
- package/dist/admin/src/utils/baseQuery.d.ts +1 -1
- package/dist/admin/src/utils/getFetchClient.d.ts +30 -0
- package/dist/admin/src/utils/getYupInnerErrors.d.ts +7 -0
- package/dist/admin/src/utils/normalizeAPIError.d.ts +2 -2
- package/dist/admin/src/utils/users.d.ts +1 -1
- package/dist/admin/tests/index.js +49173 -0
- package/dist/admin/tests/index.js.map +1 -0
- package/dist/admin/tests/index.mjs +49135 -0
- package/dist/admin/tests/index.mjs.map +1 -0
- package/dist/admin/tests/mockData.d.ts +2053 -0
- package/dist/admin/tests/server.d.ts +2 -0
- package/dist/admin/tests/setup.d.ts +1 -0
- package/dist/admin/tests/store.d.ts +468 -0
- package/dist/admin/tests/utils.d.ts +511 -0
- package/dist/server/src/validation/api-tokens.d.ts +4 -27
- package/dist/server/src/validation/api-tokens.d.ts.map +1 -1
- package/dist/server/src/validation/authentication/register.d.ts +2 -8
- package/dist/server/src/validation/authentication/register.d.ts.map +1 -1
- package/dist/server/src/validation/permission.d.ts +4 -53
- package/dist/server/src/validation/permission.d.ts.map +1 -1
- package/dist/server/src/validation/policies/hasPermissions.d.ts +2 -7
- package/dist/server/src/validation/policies/hasPermissions.d.ts.map +1 -1
- package/dist/server/src/validation/role.d.ts +6 -23
- package/dist/server/src/validation/role.d.ts.map +1 -1
- package/dist/server/src/validation/transfer/token.d.ts +4 -23
- package/dist/server/src/validation/transfer/token.d.ts.map +1 -1
- package/dist/server/src/validation/user.d.ts +8 -56
- package/dist/server/src/validation/user.d.ts.map +1 -1
- package/package.json +12 -12
- package/dist/_chunks/ApplicationInfoPage-1OdKMDYH.js.map +0 -1
- package/dist/_chunks/ApplicationInfoPage-ed6y9Q-B.mjs.map +0 -1
- package/dist/_chunks/AuthenticatedLayout-PPlOm7kb.js.map +0 -1
- package/dist/_chunks/AuthenticatedLayout-knXNB2i2.mjs.map +0 -1
- package/dist/_chunks/ComponentConfigurationPage-okd3XovW.mjs.map +0 -1
- package/dist/_chunks/ComponentConfigurationPage-xZMDjeVf.js.map +0 -1
- package/dist/_chunks/CreatePage-1Oi4-aR6.js.map +0 -1
- package/dist/_chunks/CreatePage-DmNFNVN9.js.map +0 -1
- package/dist/_chunks/CreatePage-P1F3dkB3.mjs.map +0 -1
- package/dist/_chunks/CreatePage-PM_r99U5.mjs.map +0 -1
- package/dist/_chunks/EditConfigurationPage-LItt0mJo.mjs.map +0 -1
- package/dist/_chunks/EditConfigurationPage-PZ4yq1bM.js.map +0 -1
- package/dist/_chunks/EditPage--EPGgPNr.mjs.map +0 -1
- package/dist/_chunks/EditPage-30rqjB1d.mjs.map +0 -1
- package/dist/_chunks/EditPage-MPNLCYgQ.mjs.map +0 -1
- package/dist/_chunks/EditPage-W6hncyNY.js.map +0 -1
- package/dist/_chunks/EditPage-_N_lm93z.js.map +0 -1
- package/dist/_chunks/EditPage-mU2WAH0F.js.map +0 -1
- package/dist/_chunks/EditView-0lXpbgG0.mjs.map +0 -1
- package/dist/_chunks/EditView-wDP9PNQY.js.map +0 -1
- package/dist/_chunks/EditViewPage-0Pd8zBi7.js.map +0 -1
- package/dist/_chunks/EditViewPage-R6diW-gL.mjs.map +0 -1
- package/dist/_chunks/EditViewPage-ed0-10GO.js.map +0 -1
- package/dist/_chunks/EditViewPage-uWYR_o8w.mjs.map +0 -1
- package/dist/_chunks/Filters-f6ghLf0Z.js.map +0 -1
- package/dist/_chunks/Filters-rPaxqj4F.mjs.map +0 -1
- package/dist/_chunks/Form-QOZA9Aq6.mjs.map +0 -1
- package/dist/_chunks/Form-eqzCPjSo.js.map +0 -1
- package/dist/_chunks/History-Eq4_WQPf.mjs.map +0 -1
- package/dist/_chunks/History-j00hpmXV.js.map +0 -1
- package/dist/_chunks/HomePage-3IVOMrYf.js.map +0 -1
- package/dist/_chunks/HomePage-O-TRGX5T.mjs.map +0 -1
- package/dist/_chunks/InputRenderer-AVDw8MeU.js.map +0 -1
- package/dist/_chunks/InputRenderer-bJwYq9ga.mjs.map +0 -1
- package/dist/_chunks/InstalledPluginsPage-FkR2xkQz.js.map +0 -1
- package/dist/_chunks/InstalledPluginsPage-R2hVFPZl.mjs.map +0 -1
- package/dist/_chunks/Layout-G49-Vc5u.js.map +0 -1
- package/dist/_chunks/Layout-cV6Se3U9.mjs.map +0 -1
- package/dist/_chunks/ListConfigurationPage-70qtv4Ci.js.map +0 -1
- package/dist/_chunks/ListConfigurationPage-PrJNO_6y.mjs.map +0 -1
- package/dist/_chunks/ListPage-2lswUYQN.js.map +0 -1
- package/dist/_chunks/ListPage-78Cv8Vfq.js.map +0 -1
- package/dist/_chunks/ListPage-7dZ3nYvc.js.map +0 -1
- package/dist/_chunks/ListPage-Cvn3WbMH.mjs.map +0 -1
- package/dist/_chunks/ListPage-NmUS_cOz.mjs.map +0 -1
- package/dist/_chunks/ListPage-Pf5LxUYn.js.map +0 -1
- package/dist/_chunks/ListPage-edro79m2.mjs.map +0 -1
- package/dist/_chunks/ListPage-mAUCZIg8.mjs.map +0 -1
- package/dist/_chunks/ListPage-xFkcmM1b.mjs.map +0 -1
- package/dist/_chunks/ListPage-yymh17qi.js.map +0 -1
- package/dist/_chunks/ListView--43zLiHW.mjs.map +0 -1
- package/dist/_chunks/ListView-YtMAQnXL.js.map +0 -1
- package/dist/_chunks/ListView-nfA6o3qO.js.map +0 -1
- package/dist/_chunks/ListView-qPiKeCxj.mjs.map +0 -1
- package/dist/_chunks/ListViewPage-Ys7-G2XX.js.map +0 -1
- package/dist/_chunks/ListViewPage-fPFonK_X.mjs.map +0 -1
- package/dist/_chunks/MarketplacePage-hVOJ9_0k.mjs.map +0 -1
- package/dist/_chunks/MarketplacePage-s8KDwNwK.js.map +0 -1
- package/dist/_chunks/NoContentTypePage-7YEcgsE3.js.map +0 -1
- package/dist/_chunks/NoContentTypePage-szvJnQKF.mjs.map +0 -1
- package/dist/_chunks/NoPermissionsPage-UX-5msLb.js.map +0 -1
- package/dist/_chunks/NoPermissionsPage-pqQFFlXa.mjs.map +0 -1
- package/dist/_chunks/Permissions-NUaDxULo.mjs.map +0 -1
- package/dist/_chunks/Permissions-a0IZJ8dM.js.map +0 -1
- package/dist/_chunks/ProfilePage-LXB-_EZ8.mjs.map +0 -1
- package/dist/_chunks/ProfilePage-MBCGqbc_.js.map +0 -1
- package/dist/_chunks/SelectRoles-Dxz_rAaT.mjs.map +0 -1
- package/dist/_chunks/SelectRoles-Pr2wqehq.js.map +0 -1
- package/dist/_chunks/SingleSignOnPage-4dK4id8H.js.map +0 -1
- package/dist/_chunks/SingleSignOnPage-gxgIeURz.mjs.map +0 -1
- package/dist/_chunks/Table-NiTkS4IC.mjs.map +0 -1
- package/dist/_chunks/Table-_9gVkGGi.js.map +0 -1
- package/dist/_chunks/TokenTypeSelect-3aWUm1cW.js.map +0 -1
- package/dist/_chunks/TokenTypeSelect-jtfCyMMZ.mjs.map +0 -1
- package/dist/_chunks/UseCasePage-0qXYZ8kt.mjs.map +0 -1
- package/dist/_chunks/UseCasePage-QK-B8FfM.js.map +0 -1
- package/dist/_chunks/index-ejSDPT-T.js.map +0 -1
- package/dist/_chunks/index-hjUhNUvw.mjs.map +0 -1
- package/dist/_chunks/useContentTypes-Lpg-eJmK.js.map +0 -1
- package/dist/_chunks/useContentTypes-U-n1-lz0.mjs.map +0 -1
- package/dist/_chunks/useLicenseLimitNotification-Hjv_LKmp.js.map +0 -1
- package/dist/_chunks/useLicenseLimitNotification-yJHxF4YO.mjs.map +0 -1
- package/dist/_chunks/validateWorkflow-23kb45Oa.mjs.map +0 -1
- package/dist/_chunks/validateWorkflow-MaEpFiHz.js.map +0 -1
- package/dist/admin/src/types/errors.d.ts +0 -2
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { Flex, Portal, FocusTrap, IconButton, Box, Button, Typography, Divider, Icon, PopoverPrimitives, VisuallyHidden, SkipToContent } from "@strapi/design-system";
|
|
4
|
-
import { usePersistentState, useAppInfo, hasPermissions, AppInfoProvider } from "@strapi/helper-plugin";
|
|
5
4
|
import { DndProvider } from "react-dnd";
|
|
6
5
|
import { HTML5Backend } from "react-dnd-html5-backend";
|
|
7
6
|
import { useIntl } from "react-intl";
|
|
@@ -12,17 +11,18 @@ import { LinkButton, MainNav, NavBrand, NavSections, NavLink as NavLink$1, NavSe
|
|
|
12
11
|
import { Cross, ArrowRight, Write, Lock, Exit, Question, Play, Message, Book, PaperPlane, Puzzle, ShoppingCart, Cog } from "@strapi/icons";
|
|
13
12
|
import get from "lodash/get";
|
|
14
13
|
import styled from "styled-components";
|
|
15
|
-
import {
|
|
14
|
+
import { c as useGuidedTour, d as useTracking, e as useConfiguration, a as useAuth, g as getDisplayName, f as useAppInfo, h as useStrapiApp, P as Page, i as useInformationQuery, j as useGetMyPermissionsQuery, k as useIsHistoryRoute, A as AppInfoProvider, R as RBACProvider, N as NpsSurvey } from "./index-GIVuHJgC.mjs";
|
|
16
15
|
import { L as LAYOUT_DATA, V as VerticalDivider, S as STATES, N as Number } from "./Ornaments-Aq2xidN_.mjs";
|
|
17
|
-
import
|
|
16
|
+
import { usePersistentState, hasPermissions } from "@strapi/helper-plugin";
|
|
17
|
+
import { produce } from "immer";
|
|
18
18
|
import set from "lodash/set";
|
|
19
|
-
import { P as PrivateRoute } from "./PrivateRoute-
|
|
19
|
+
import { P as PrivateRoute } from "./PrivateRoute-YN_98pM_.mjs";
|
|
20
20
|
import cloneDeep from "lodash/cloneDeep";
|
|
21
21
|
import { useSelector } from "react-redux";
|
|
22
|
-
import { s as selectAdminPermissions } from "./selectors
|
|
22
|
+
import { s as selectAdminPermissions } from "./selectors--2Vzk8PA.mjs";
|
|
23
23
|
import { u as useOnce } from "./useOnce-BuAUYuau.mjs";
|
|
24
24
|
const name = "@strapi/admin";
|
|
25
|
-
const version = "
|
|
25
|
+
const version = "5.0.0-alpha.1";
|
|
26
26
|
const description = "Strapi Admin";
|
|
27
27
|
const repository = {
|
|
28
28
|
type: "git",
|
|
@@ -49,6 +49,13 @@ const exports = {
|
|
|
49
49
|
require: "./dist/admin/index.js",
|
|
50
50
|
"default": "./dist/admin/index.js"
|
|
51
51
|
},
|
|
52
|
+
"./strapi-admin/tests": {
|
|
53
|
+
types: "./dist/admin/tests/utils.d.ts",
|
|
54
|
+
source: "./admin/tests/utils.tsx",
|
|
55
|
+
"import": "./dist/admin/tests/index.mjs",
|
|
56
|
+
require: "./dist/admin/tests/index.js",
|
|
57
|
+
"default": "./dist/admin/tests/index.js"
|
|
58
|
+
},
|
|
52
59
|
"./_internal": {
|
|
53
60
|
types: "./dist/_internal/index.d.ts",
|
|
54
61
|
source: "./_internal/index.ts",
|
|
@@ -87,13 +94,13 @@ const dependencies = {
|
|
|
87
94
|
"@radix-ui/react-toolbar": "1.0.4",
|
|
88
95
|
"@reduxjs/toolkit": "1.9.7",
|
|
89
96
|
"@strapi/design-system": "1.16.0",
|
|
90
|
-
"@strapi/helper-plugin": "
|
|
97
|
+
"@strapi/helper-plugin": "5.0.0-alpha.1",
|
|
91
98
|
"@strapi/icons": "1.16.0",
|
|
92
|
-
"@strapi/permissions": "
|
|
93
|
-
"@strapi/provider-audit-logs-local": "
|
|
94
|
-
"@strapi/types": "
|
|
95
|
-
"@strapi/typescript-utils": "
|
|
96
|
-
"@strapi/utils": "
|
|
99
|
+
"@strapi/permissions": "5.0.0-alpha.1",
|
|
100
|
+
"@strapi/provider-audit-logs-local": "5.0.0-alpha.1",
|
|
101
|
+
"@strapi/types": "5.0.0-alpha.1",
|
|
102
|
+
"@strapi/typescript-utils": "5.0.0-alpha.1",
|
|
103
|
+
"@strapi/utils": "5.0.0-alpha.1",
|
|
97
104
|
"@vitejs/plugin-react-swc": "3.6.0",
|
|
98
105
|
axios: "1.6.8",
|
|
99
106
|
bcryptjs: "2.4.3",
|
|
@@ -160,10 +167,10 @@ const dependencies = {
|
|
|
160
167
|
yup: "0.32.9"
|
|
161
168
|
};
|
|
162
169
|
const devDependencies = {
|
|
163
|
-
"@strapi/admin-test-utils": "
|
|
164
|
-
"@strapi/data-transfer": "
|
|
165
|
-
"@strapi/pack-up": "
|
|
166
|
-
"@strapi/plugin-content-manager": "
|
|
170
|
+
"@strapi/admin-test-utils": "5.0.0-alpha.1",
|
|
171
|
+
"@strapi/data-transfer": "5.0.0-alpha.1",
|
|
172
|
+
"@strapi/pack-up": "5.0.0-alpha.1",
|
|
173
|
+
"@strapi/plugin-content-manager": "5.0.0-alpha.1",
|
|
167
174
|
"@testing-library/dom": "9.2.0",
|
|
168
175
|
"@testing-library/react": "14.0.0",
|
|
169
176
|
"@testing-library/user-event": "14.4.3",
|
|
@@ -450,11 +457,12 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => {
|
|
|
450
457
|
logos: { menu }
|
|
451
458
|
} = useConfiguration("LeftMenu");
|
|
452
459
|
const [condensed, setCondensed] = usePersistentState("navbar-condensed", false);
|
|
453
|
-
const
|
|
460
|
+
const user = useAuth("AuthenticatedApp", (state) => state.user);
|
|
454
461
|
const { formatMessage } = useIntl();
|
|
455
462
|
const { trackUsage } = useTracking();
|
|
456
463
|
const { pathname } = useLocation();
|
|
457
464
|
const logout = useAuth("Logout", (state) => state.logout);
|
|
465
|
+
const userDisplayName = getDisplayName(user, formatMessage);
|
|
458
466
|
const initials = userDisplayName.split(" ").map((name2) => name2.substring(0, 1)).join("").substring(0, 2);
|
|
459
467
|
const handleToggleUserLinks = () => setUserLinksVisible((prev) => !prev);
|
|
460
468
|
const handleBlur = (e) => {
|
|
@@ -603,7 +611,7 @@ const Onboarding = () => {
|
|
|
603
611
|
const triggerRef = React.useRef(null);
|
|
604
612
|
const [isOpen, setIsOpen] = React.useState(false);
|
|
605
613
|
const { formatMessage } = useIntl();
|
|
606
|
-
const
|
|
614
|
+
const communityEdition = useAppInfo("Onboarding", (state) => state.communityEdition);
|
|
607
615
|
const handlePopoverVisibility = () => {
|
|
608
616
|
setIsOpen((prev) => !prev);
|
|
609
617
|
};
|
|
@@ -1062,10 +1070,7 @@ const AdminLayout = () => {
|
|
|
1062
1070
|
...appInfo,
|
|
1063
1071
|
userId,
|
|
1064
1072
|
latestStrapiReleaseTag: tagName,
|
|
1065
|
-
setUserDisplayName: () => {
|
|
1066
|
-
},
|
|
1067
1073
|
shouldUpdateStrapi: checkLatestStrapiVersion(strapiVersion, tagName),
|
|
1068
|
-
userDisplayName: getDisplayName(userInfo, formatMessage) ?? "",
|
|
1069
1074
|
children: /* @__PURE__ */ jsxs(RBACProvider, { permissions: permissions ?? [], refetchPermissions, children: [
|
|
1070
1075
|
/* @__PURE__ */ jsx(NpsSurvey, {}),
|
|
1071
1076
|
/* @__PURE__ */ jsx(PluginsInitializer, { children: /* @__PURE__ */ jsx(DndProvider, { backend: HTML5Backend, children: /* @__PURE__ */ jsxs(Box, { background: "neutral100", children: [
|
|
@@ -1102,4 +1107,4 @@ export {
|
|
|
1102
1107
|
AdminLayout,
|
|
1103
1108
|
PrivateAdminLayout
|
|
1104
1109
|
};
|
|
1105
|
-
//# sourceMappingURL=AuthenticatedLayout-
|
|
1110
|
+
//# sourceMappingURL=AuthenticatedLayout-Ffy6uoNF.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthenticatedLayout-Ffy6uoNF.mjs","sources":["../../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/components/PluginsInitializer.tsx","../../admin/src/hooks/useMenu.ts","../../admin/src/utils/hashAdminUserEmail.ts","../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["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 { ArrowRight, Cross } from '@strapi/icons';\nimport get from 'lodash/get';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { useTracking } from '../../features/Tracking';\n\nimport { LAYOUT_DATA, STATES } from './constants';\nimport { Number, VerticalDivider } from './Ornaments';\nimport { GuidedTourContextValue, useGuidedTour } from './Provider';\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourModal\n * -----------------------------------------------------------------------------------------------*/\n\nconst GuidedTourModal = () => {\n const currentStep = useGuidedTour('GuidedTourModal', (state) => state.currentStep);\n const guidedTourState = useGuidedTour('GuidedTourModal', (state) => state.guidedTourState);\n const setCurrentStep = useGuidedTour('GuidedTourModal', (state) => state.setCurrentStep);\n const setStepState = useGuidedTour('GuidedTourModal', (state) => state.setStepState);\n const isGuidedTourVisible = useGuidedTour(\n 'GuidedTourModal',\n (state) => state.isGuidedTourVisible\n );\n const setSkipped = useGuidedTour('GuidedTourModal', (state) => state.setSkipped);\n\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n if (!currentStep || !isGuidedTourVisible) {\n return null;\n }\n\n const stepData = get(LAYOUT_DATA, currentStep);\n const sectionKeys = Object.keys(guidedTourState);\n const [sectionName, stepName] = currentStep.split('.') as [\n keyof GuidedTourContextValue['guidedTourState'],\n string\n ];\n const sectionIndex = sectionKeys.indexOf(sectionName);\n const stepIndex = Object.keys(guidedTourState[sectionName]).indexOf(stepName);\n const hasSectionAfter = sectionIndex < sectionKeys.length - 1;\n const hasStepAfter = stepIndex < Object.keys(guidedTourState[sectionName]).length - 1;\n\n const handleCtaClick = () => {\n setStepState(currentStep, true);\n\n if (stepData) {\n trackUsage(stepData.trackingEvent);\n }\n\n setCurrentStep(null);\n };\n\n const handleSkip = () => {\n setSkipped(true);\n setCurrentStep(null);\n trackUsage('didSkipGuidedtour');\n };\n\n return (\n <Portal>\n <ModalWrapper onClick={handleCtaClick} padding={8} justifyContent=\"center\">\n <FocusTrap onEscape={handleCtaClick}>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n background=\"neutral0\"\n width={`${660 / 16}rem`}\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={`${30 / 16}rem`}>\n {hasSectionBefore && (\n <VerticalDivider state={STATES.IS_DONE} minHeight={`${24 / 16}rem`} />\n )}\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={`${30 / 16}rem`}>\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={`${30 / 16}rem`}>\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={`${30 / 16}rem`}>\n <VerticalDivider state={STATES.IS_DONE} minHeight={`${24 / 16}rem`} />\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 { usePersistentState } 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 { useTracking } from '../features/Tracking';\nimport { Menu } from '../hooks/useMenu';\nimport { getDisplayName } from '../utils/users';\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 user = useAuth('AuthenticatedApp', (state) => state.user);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const logout = useAuth('Logout', (state) => state.logout);\n const userDisplayName = getDisplayName(user, formatMessage);\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 { Cross, Message, Play, Question, Book, PaperPlane } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport onboardingPreview from '../assets/images/onboarding-preview.png';\nimport { useAppInfo } from '../features/AppInfo';\n\nconst Onboarding = () => {\n const triggerRef = React.useRef<HTMLButtonElement>(null!);\n const [isOpen, setIsOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n const communityEdition = useAppInfo('Onboarding', (state) => state.communityEdition);\n\n const handlePopoverVisibility = () => {\n setIsOpen((prev) => !prev);\n };\n\n const docLinks = [\n ...DOCUMENTATION_LINKS,\n {\n label: { id: 'Settings.application.get-help', defaultMessage: 'Get help' },\n icon: Message,\n href: communityEdition\n ? 'https://discord.strapi.io'\n : 'https://support.strapi.io/support/home',\n },\n ];\n\n 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 * as React from 'react';\n\nimport { produce } from 'immer';\nimport set from 'lodash/set';\n\nimport { Page } from '../components/PageHelpers';\nimport { StrapiAppContextValue, useStrapiApp } from '../features/StrapiApp';\n\n/**\n * TODO: this isn't great, and we really should focus on fixing this.\n */\nconst PluginsInitializer = ({ children }: { children: React.ReactNode }) => {\n const appPlugins = useStrapiApp('PluginsInitializer', (state) => state.plugins);\n const [{ plugins }, dispatch] = React.useReducer<React.Reducer<State, Action>, State>(\n reducer,\n initialState,\n () => init(appPlugins)\n );\n const setPlugin = React.useRef((pluginId: string) => {\n dispatch({ type: 'SET_PLUGIN_READY', pluginId });\n });\n\n const hasApluginNotReady = Object.keys(plugins).some(\n (plugin) => plugins[plugin].isReady === false\n );\n\n /**\n *\n * I have spent some time trying to understand what is happening here, and wanted to\n * leave that knowledge for my future me:\n *\n * `initializer` is an undocumented property of the `registerPlugin` API. At the time\n * of writing it seems only to be used by the i18n plugin.\n *\n * How does it work?\n *\n * Every plugin that has an `initializer` component defined, receives the\n * `setPlugin` function as a component prop. In the case of i18n the plugin fetches locales\n * first and calls `setPlugin` with `pluginId` once they are loaded, which then triggers the\n * reducer of the admin app defined above.\n *\n * Once all plugins are set to `isReady: true` the app renders.\n *\n * This API is used to block rendering of the admin app. We should remove that in v5 completely\n * and make sure plugins can inject data into the global store before they are initialized, to avoid\n * having a new prop-callback based communication channel between plugins and the core admin app.\n *\n */\n\n if (hasApluginNotReady) {\n const initializers = Object.keys(plugins).reduce((acc, current) => {\n const InitializerComponent = plugins[current].initializer;\n\n if (InitializerComponent) {\n const key = plugins[current].pluginId;\n\n acc.push(<InitializerComponent key={key} setPlugin={setPlugin.current} />);\n }\n\n return acc;\n }, [] as React.ReactNode[]);\n\n return (\n <>\n {initializers}\n <Page.Loading />\n </>\n );\n }\n\n return children;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Reducer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface State {\n plugins: StrapiAppContextValue['plugins'];\n}\n\nconst initialState: State = {\n plugins: {},\n};\n\ntype SetPluginReadyAction = {\n type: 'SET_PLUGIN_READY';\n pluginId: string;\n};\n\ntype Action = SetPluginReadyAction;\n\nconst reducer: React.Reducer<State, Action> = (state = initialState, action: Action): State =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'SET_PLUGIN_READY': {\n set(draftState, ['plugins', action.pluginId, 'isReady'], true);\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * Init state\n * -----------------------------------------------------------------------------------------------*/\n\nconst init = (plugins: State['plugins']): State => {\n return {\n plugins,\n };\n};\n\nexport { PluginsInitializer };\n","import * as React from 'react';\n\nimport { Permission, hasPermissions } from '@strapi/helper-plugin';\nimport { Cog, Puzzle, ShoppingCart } from '@strapi/icons';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { useSelector } from 'react-redux';\n\nimport { StrapiAppContextValue, useStrapiApp } from '../features/StrapiApp';\nimport { selectAdminPermissions } from '../selectors';\n\n/* -------------------------------------------------------------------------------------------------\n * useMenu\n * -----------------------------------------------------------------------------------------------*/\n\ntype MenuItem = Omit<StrapiAppContextValue['menu'][number], 'Component'>;\n\nexport interface Menu {\n generalSectionLinks: MenuItem[];\n pluginsSectionLinks: MenuItem[];\n isLoading: boolean;\n}\n\nconst useMenu = (shouldUpdateStrapi: boolean, userPermissions: Permission[]) => {\n const menu = useStrapiApp('useMenu', (state) => state.menu);\n const permissions = useSelector(selectAdminPermissions);\n const [menuWithUserPermissions, setMenuWithUserPermissions] = React.useState<Menu>({\n generalSectionLinks: [\n {\n icon: 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 { 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","import * as React from 'react';\n\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport packageJSON from '../../../package.json';\nimport { GuidedTourModal } from '../components/GuidedTour/Modal';\nimport { useGuidedTour } from '../components/GuidedTour/Provider';\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Onboarding } from '../components/Onboarding';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { RBACProvider } from '../components/RBACProvider';\nimport { useIsHistoryRoute } from '../content-manager/history/routes';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useOnce } from '../hooks/useOnce';\nimport { useInformationQuery } from '../services/admin';\nimport { useGetMyPermissionsQuery } from '../services/auth';\nimport { hashAdminUserEmail } from '../utils/hashAdminUserEmail';\n\nconst strapiVersion = packageJSON.version;\n\nconst AdminLayout = () => {\n const setGuidedTourVisibility = useGuidedTour(\n 'AdminLayout',\n (state) => state.setGuidedTourVisibility\n );\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n /**\n * 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 = useAuth('AuthenticatedApp', (state) => state.user?.roles);\n\n React.useEffect(() => {\n if (userRoles) {\n const isUserSuperAdmin = userRoles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin && appInfo?.autoReload) {\n setGuidedTourVisibility(true);\n }\n }\n }, [userRoles, appInfo?.autoReload, setGuidedTourVisibility]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName), permissions ?? []);\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 // Check if we're on a history route to know if we should render the left menu\n const isHistoryRoute = useIsHistoryRoute();\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo || isLoadingPermissions) {\n return <Page.Loading />;\n }\n\n const refetchPermissions = async () => {\n await refetch();\n };\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <RBACProvider permissions={permissions ?? []} refetchPermissions={refetchPermissions}>\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex alignItems=\"flex-start\">\n {!isHistoryRoute && (\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n />\n )}\n <Box flex={1}>\n <Outlet />\n <GuidedTourModal />\n {showTutorials && <Onboarding />}\n </Box>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </RBACProvider>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["RouterNavLink","name","NavLink"],"mappings":"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"}
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
const React = require("react");
|
|
5
5
|
const designSystem = require("@strapi/design-system");
|
|
6
|
-
const helperPlugin = require("@strapi/helper-plugin");
|
|
7
6
|
const reactDnd = require("react-dnd");
|
|
8
7
|
const reactDndHtml5Backend = require("react-dnd-html5-backend");
|
|
9
8
|
const reactIntl = require("react-intl");
|
|
@@ -14,14 +13,15 @@ const v2 = require("@strapi/design-system/v2");
|
|
|
14
13
|
const Icons = require("@strapi/icons");
|
|
15
14
|
const get = require("lodash/get");
|
|
16
15
|
const styled = require("styled-components");
|
|
17
|
-
const index = require("./index-
|
|
16
|
+
const index = require("./index-haHGOQMJ.js");
|
|
18
17
|
const Ornaments = require("./Ornaments-_AXIwJ-m.js");
|
|
19
|
-
const
|
|
18
|
+
const helperPlugin = require("@strapi/helper-plugin");
|
|
19
|
+
const immer = require("immer");
|
|
20
20
|
const set = require("lodash/set");
|
|
21
|
-
const PrivateRoute = require("./PrivateRoute-
|
|
21
|
+
const PrivateRoute = require("./PrivateRoute-avlq1MEy.js");
|
|
22
22
|
const cloneDeep = require("lodash/cloneDeep");
|
|
23
23
|
const reactRedux = require("react-redux");
|
|
24
|
-
const selectors = require("./selectors-
|
|
24
|
+
const selectors = require("./selectors-NSSzzIzx.js");
|
|
25
25
|
const useOnce = require("./useOnce-eIxJr0o-.js");
|
|
26
26
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
27
27
|
function _interopNamespace(e) {
|
|
@@ -47,11 +47,10 @@ const lt__default = /* @__PURE__ */ _interopDefault(lt);
|
|
|
47
47
|
const valid__default = /* @__PURE__ */ _interopDefault(valid);
|
|
48
48
|
const get__default = /* @__PURE__ */ _interopDefault(get);
|
|
49
49
|
const styled__default = /* @__PURE__ */ _interopDefault(styled);
|
|
50
|
-
const produce__default = /* @__PURE__ */ _interopDefault(produce);
|
|
51
50
|
const set__default = /* @__PURE__ */ _interopDefault(set);
|
|
52
51
|
const cloneDeep__default = /* @__PURE__ */ _interopDefault(cloneDeep);
|
|
53
52
|
const name = "@strapi/admin";
|
|
54
|
-
const version = "
|
|
53
|
+
const version = "5.0.0-alpha.1";
|
|
55
54
|
const description = "Strapi Admin";
|
|
56
55
|
const repository = {
|
|
57
56
|
type: "git",
|
|
@@ -78,6 +77,13 @@ const exports$1 = {
|
|
|
78
77
|
require: "./dist/admin/index.js",
|
|
79
78
|
"default": "./dist/admin/index.js"
|
|
80
79
|
},
|
|
80
|
+
"./strapi-admin/tests": {
|
|
81
|
+
types: "./dist/admin/tests/utils.d.ts",
|
|
82
|
+
source: "./admin/tests/utils.tsx",
|
|
83
|
+
"import": "./dist/admin/tests/index.mjs",
|
|
84
|
+
require: "./dist/admin/tests/index.js",
|
|
85
|
+
"default": "./dist/admin/tests/index.js"
|
|
86
|
+
},
|
|
81
87
|
"./_internal": {
|
|
82
88
|
types: "./dist/_internal/index.d.ts",
|
|
83
89
|
source: "./_internal/index.ts",
|
|
@@ -116,13 +122,13 @@ const dependencies = {
|
|
|
116
122
|
"@radix-ui/react-toolbar": "1.0.4",
|
|
117
123
|
"@reduxjs/toolkit": "1.9.7",
|
|
118
124
|
"@strapi/design-system": "1.16.0",
|
|
119
|
-
"@strapi/helper-plugin": "
|
|
125
|
+
"@strapi/helper-plugin": "5.0.0-alpha.1",
|
|
120
126
|
"@strapi/icons": "1.16.0",
|
|
121
|
-
"@strapi/permissions": "
|
|
122
|
-
"@strapi/provider-audit-logs-local": "
|
|
123
|
-
"@strapi/types": "
|
|
124
|
-
"@strapi/typescript-utils": "
|
|
125
|
-
"@strapi/utils": "
|
|
127
|
+
"@strapi/permissions": "5.0.0-alpha.1",
|
|
128
|
+
"@strapi/provider-audit-logs-local": "5.0.0-alpha.1",
|
|
129
|
+
"@strapi/types": "5.0.0-alpha.1",
|
|
130
|
+
"@strapi/typescript-utils": "5.0.0-alpha.1",
|
|
131
|
+
"@strapi/utils": "5.0.0-alpha.1",
|
|
126
132
|
"@vitejs/plugin-react-swc": "3.6.0",
|
|
127
133
|
axios: "1.6.8",
|
|
128
134
|
bcryptjs: "2.4.3",
|
|
@@ -189,10 +195,10 @@ const dependencies = {
|
|
|
189
195
|
yup: "0.32.9"
|
|
190
196
|
};
|
|
191
197
|
const devDependencies = {
|
|
192
|
-
"@strapi/admin-test-utils": "
|
|
193
|
-
"@strapi/data-transfer": "
|
|
194
|
-
"@strapi/pack-up": "
|
|
195
|
-
"@strapi/plugin-content-manager": "
|
|
198
|
+
"@strapi/admin-test-utils": "5.0.0-alpha.1",
|
|
199
|
+
"@strapi/data-transfer": "5.0.0-alpha.1",
|
|
200
|
+
"@strapi/pack-up": "5.0.0-alpha.1",
|
|
201
|
+
"@strapi/plugin-content-manager": "5.0.0-alpha.1",
|
|
196
202
|
"@testing-library/dom": "9.2.0",
|
|
197
203
|
"@testing-library/react": "14.0.0",
|
|
198
204
|
"@testing-library/user-event": "14.4.3",
|
|
@@ -479,11 +485,12 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => {
|
|
|
479
485
|
logos: { menu }
|
|
480
486
|
} = index.useConfiguration("LeftMenu");
|
|
481
487
|
const [condensed, setCondensed] = helperPlugin.usePersistentState("navbar-condensed", false);
|
|
482
|
-
const
|
|
488
|
+
const user = index.useAuth("AuthenticatedApp", (state) => state.user);
|
|
483
489
|
const { formatMessage } = reactIntl.useIntl();
|
|
484
490
|
const { trackUsage } = index.useTracking();
|
|
485
491
|
const { pathname } = reactRouterDom.useLocation();
|
|
486
492
|
const logout = index.useAuth("Logout", (state) => state.logout);
|
|
493
|
+
const userDisplayName = index.getDisplayName(user, formatMessage);
|
|
487
494
|
const initials = userDisplayName.split(" ").map((name2) => name2.substring(0, 1)).join("").substring(0, 2);
|
|
488
495
|
const handleToggleUserLinks = () => setUserLinksVisible((prev) => !prev);
|
|
489
496
|
const handleBlur = (e) => {
|
|
@@ -632,7 +639,7 @@ const Onboarding = () => {
|
|
|
632
639
|
const triggerRef = React__namespace.useRef(null);
|
|
633
640
|
const [isOpen, setIsOpen] = React__namespace.useState(false);
|
|
634
641
|
const { formatMessage } = reactIntl.useIntl();
|
|
635
|
-
const
|
|
642
|
+
const communityEdition = index.useAppInfo("Onboarding", (state) => state.communityEdition);
|
|
636
643
|
const handlePopoverVisibility = () => {
|
|
637
644
|
setIsOpen((prev) => !prev);
|
|
638
645
|
};
|
|
@@ -893,7 +900,7 @@ const PluginsInitializer = ({ children }) => {
|
|
|
893
900
|
const initialState = {
|
|
894
901
|
plugins: {}
|
|
895
902
|
};
|
|
896
|
-
const reducer = (state = initialState, action) =>
|
|
903
|
+
const reducer = (state = initialState, action) => immer.produce(state, (draftState) => {
|
|
897
904
|
switch (action.type) {
|
|
898
905
|
case "SET_PLUGIN_READY": {
|
|
899
906
|
set__default.default(draftState, ["plugins", action.pluginId, "isReady"], true);
|
|
@@ -1086,15 +1093,12 @@ const AdminLayout = () => {
|
|
|
1086
1093
|
await refetch();
|
|
1087
1094
|
};
|
|
1088
1095
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1089
|
-
|
|
1096
|
+
index.AppInfoProvider,
|
|
1090
1097
|
{
|
|
1091
1098
|
...appInfo,
|
|
1092
1099
|
userId,
|
|
1093
1100
|
latestStrapiReleaseTag: tagName,
|
|
1094
|
-
setUserDisplayName: () => {
|
|
1095
|
-
},
|
|
1096
1101
|
shouldUpdateStrapi: checkLatestStrapiVersion(strapiVersion, tagName),
|
|
1097
|
-
userDisplayName: index.getDisplayName(userInfo, formatMessage) ?? "",
|
|
1098
1102
|
children: /* @__PURE__ */ jsxRuntime.jsxs(index.RBACProvider, { permissions: permissions ?? [], refetchPermissions, children: [
|
|
1099
1103
|
/* @__PURE__ */ jsxRuntime.jsx(index.NpsSurvey, {}),
|
|
1100
1104
|
/* @__PURE__ */ jsxRuntime.jsx(PluginsInitializer, { children: /* @__PURE__ */ jsxRuntime.jsx(reactDnd.DndProvider, { backend: reactDndHtml5Backend.HTML5Backend, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { background: "neutral100", children: [
|
|
@@ -1129,4 +1133,4 @@ const checkLatestStrapiVersion = (currentPackageVersion, latestPublishedVersion
|
|
|
1129
1133
|
};
|
|
1130
1134
|
exports.AdminLayout = AdminLayout;
|
|
1131
1135
|
exports.PrivateAdminLayout = PrivateAdminLayout;
|
|
1132
|
-
//# sourceMappingURL=AuthenticatedLayout-
|
|
1136
|
+
//# sourceMappingURL=AuthenticatedLayout-kxORHKAl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthenticatedLayout-kxORHKAl.js","sources":["../../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/components/PluginsInitializer.tsx","../../admin/src/hooks/useMenu.ts","../../admin/src/utils/hashAdminUserEmail.ts","../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["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 { ArrowRight, Cross } from '@strapi/icons';\nimport get from 'lodash/get';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { useTracking } from '../../features/Tracking';\n\nimport { LAYOUT_DATA, STATES } from './constants';\nimport { Number, VerticalDivider } from './Ornaments';\nimport { GuidedTourContextValue, useGuidedTour } from './Provider';\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourModal\n * -----------------------------------------------------------------------------------------------*/\n\nconst GuidedTourModal = () => {\n const currentStep = useGuidedTour('GuidedTourModal', (state) => state.currentStep);\n const guidedTourState = useGuidedTour('GuidedTourModal', (state) => state.guidedTourState);\n const setCurrentStep = useGuidedTour('GuidedTourModal', (state) => state.setCurrentStep);\n const setStepState = useGuidedTour('GuidedTourModal', (state) => state.setStepState);\n const isGuidedTourVisible = useGuidedTour(\n 'GuidedTourModal',\n (state) => state.isGuidedTourVisible\n );\n const setSkipped = useGuidedTour('GuidedTourModal', (state) => state.setSkipped);\n\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n if (!currentStep || !isGuidedTourVisible) {\n return null;\n }\n\n const stepData = get(LAYOUT_DATA, currentStep);\n const sectionKeys = Object.keys(guidedTourState);\n const [sectionName, stepName] = currentStep.split('.') as [\n keyof GuidedTourContextValue['guidedTourState'],\n string\n ];\n const sectionIndex = sectionKeys.indexOf(sectionName);\n const stepIndex = Object.keys(guidedTourState[sectionName]).indexOf(stepName);\n const hasSectionAfter = sectionIndex < sectionKeys.length - 1;\n const hasStepAfter = stepIndex < Object.keys(guidedTourState[sectionName]).length - 1;\n\n const handleCtaClick = () => {\n setStepState(currentStep, true);\n\n if (stepData) {\n trackUsage(stepData.trackingEvent);\n }\n\n setCurrentStep(null);\n };\n\n const handleSkip = () => {\n setSkipped(true);\n setCurrentStep(null);\n trackUsage('didSkipGuidedtour');\n };\n\n return (\n <Portal>\n <ModalWrapper onClick={handleCtaClick} padding={8} justifyContent=\"center\">\n <FocusTrap onEscape={handleCtaClick}>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n background=\"neutral0\"\n width={`${660 / 16}rem`}\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={`${30 / 16}rem`}>\n {hasSectionBefore && (\n <VerticalDivider state={STATES.IS_DONE} minHeight={`${24 / 16}rem`} />\n )}\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={`${30 / 16}rem`}>\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={`${30 / 16}rem`}>\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={`${30 / 16}rem`}>\n <VerticalDivider state={STATES.IS_DONE} minHeight={`${24 / 16}rem`} />\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 { usePersistentState } 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 { useTracking } from '../features/Tracking';\nimport { Menu } from '../hooks/useMenu';\nimport { getDisplayName } from '../utils/users';\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 user = useAuth('AuthenticatedApp', (state) => state.user);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const logout = useAuth('Logout', (state) => state.logout);\n const userDisplayName = getDisplayName(user, formatMessage);\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 { Cross, Message, Play, Question, Book, PaperPlane } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport onboardingPreview from '../assets/images/onboarding-preview.png';\nimport { useAppInfo } from '../features/AppInfo';\n\nconst Onboarding = () => {\n const triggerRef = React.useRef<HTMLButtonElement>(null!);\n const [isOpen, setIsOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n const communityEdition = useAppInfo('Onboarding', (state) => state.communityEdition);\n\n const handlePopoverVisibility = () => {\n setIsOpen((prev) => !prev);\n };\n\n const docLinks = [\n ...DOCUMENTATION_LINKS,\n {\n label: { id: 'Settings.application.get-help', defaultMessage: 'Get help' },\n icon: Message,\n href: communityEdition\n ? 'https://discord.strapi.io'\n : 'https://support.strapi.io/support/home',\n },\n ];\n\n 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 * as React from 'react';\n\nimport { produce } from 'immer';\nimport set from 'lodash/set';\n\nimport { Page } from '../components/PageHelpers';\nimport { StrapiAppContextValue, useStrapiApp } from '../features/StrapiApp';\n\n/**\n * TODO: this isn't great, and we really should focus on fixing this.\n */\nconst PluginsInitializer = ({ children }: { children: React.ReactNode }) => {\n const appPlugins = useStrapiApp('PluginsInitializer', (state) => state.plugins);\n const [{ plugins }, dispatch] = React.useReducer<React.Reducer<State, Action>, State>(\n reducer,\n initialState,\n () => init(appPlugins)\n );\n const setPlugin = React.useRef((pluginId: string) => {\n dispatch({ type: 'SET_PLUGIN_READY', pluginId });\n });\n\n const hasApluginNotReady = Object.keys(plugins).some(\n (plugin) => plugins[plugin].isReady === false\n );\n\n /**\n *\n * I have spent some time trying to understand what is happening here, and wanted to\n * leave that knowledge for my future me:\n *\n * `initializer` is an undocumented property of the `registerPlugin` API. At the time\n * of writing it seems only to be used by the i18n plugin.\n *\n * How does it work?\n *\n * Every plugin that has an `initializer` component defined, receives the\n * `setPlugin` function as a component prop. In the case of i18n the plugin fetches locales\n * first and calls `setPlugin` with `pluginId` once they are loaded, which then triggers the\n * reducer of the admin app defined above.\n *\n * Once all plugins are set to `isReady: true` the app renders.\n *\n * This API is used to block rendering of the admin app. We should remove that in v5 completely\n * and make sure plugins can inject data into the global store before they are initialized, to avoid\n * having a new prop-callback based communication channel between plugins and the core admin app.\n *\n */\n\n if (hasApluginNotReady) {\n const initializers = Object.keys(plugins).reduce((acc, current) => {\n const InitializerComponent = plugins[current].initializer;\n\n if (InitializerComponent) {\n const key = plugins[current].pluginId;\n\n acc.push(<InitializerComponent key={key} setPlugin={setPlugin.current} />);\n }\n\n return acc;\n }, [] as React.ReactNode[]);\n\n return (\n <>\n {initializers}\n <Page.Loading />\n </>\n );\n }\n\n return children;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Reducer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface State {\n plugins: StrapiAppContextValue['plugins'];\n}\n\nconst initialState: State = {\n plugins: {},\n};\n\ntype SetPluginReadyAction = {\n type: 'SET_PLUGIN_READY';\n pluginId: string;\n};\n\ntype Action = SetPluginReadyAction;\n\nconst reducer: React.Reducer<State, Action> = (state = initialState, action: Action): State =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'SET_PLUGIN_READY': {\n set(draftState, ['plugins', action.pluginId, 'isReady'], true);\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * Init state\n * -----------------------------------------------------------------------------------------------*/\n\nconst init = (plugins: State['plugins']): State => {\n return {\n plugins,\n };\n};\n\nexport { PluginsInitializer };\n","import * as React from 'react';\n\nimport { Permission, hasPermissions } from '@strapi/helper-plugin';\nimport { Cog, Puzzle, ShoppingCart } from '@strapi/icons';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { useSelector } from 'react-redux';\n\nimport { StrapiAppContextValue, useStrapiApp } from '../features/StrapiApp';\nimport { selectAdminPermissions } from '../selectors';\n\n/* -------------------------------------------------------------------------------------------------\n * useMenu\n * -----------------------------------------------------------------------------------------------*/\n\ntype MenuItem = Omit<StrapiAppContextValue['menu'][number], 'Component'>;\n\nexport interface Menu {\n generalSectionLinks: MenuItem[];\n pluginsSectionLinks: MenuItem[];\n isLoading: boolean;\n}\n\nconst useMenu = (shouldUpdateStrapi: boolean, userPermissions: Permission[]) => {\n const menu = useStrapiApp('useMenu', (state) => state.menu);\n const permissions = useSelector(selectAdminPermissions);\n const [menuWithUserPermissions, setMenuWithUserPermissions] = React.useState<Menu>({\n generalSectionLinks: [\n {\n icon: 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 { 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","import * as React from 'react';\n\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport packageJSON from '../../../package.json';\nimport { GuidedTourModal } from '../components/GuidedTour/Modal';\nimport { useGuidedTour } from '../components/GuidedTour/Provider';\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Onboarding } from '../components/Onboarding';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { RBACProvider } from '../components/RBACProvider';\nimport { useIsHistoryRoute } from '../content-manager/history/routes';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useOnce } from '../hooks/useOnce';\nimport { useInformationQuery } from '../services/admin';\nimport { useGetMyPermissionsQuery } from '../services/auth';\nimport { hashAdminUserEmail } from '../utils/hashAdminUserEmail';\n\nconst strapiVersion = packageJSON.version;\n\nconst AdminLayout = () => {\n const setGuidedTourVisibility = useGuidedTour(\n 'AdminLayout',\n (state) => state.setGuidedTourVisibility\n );\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n /**\n * 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 = useAuth('AuthenticatedApp', (state) => state.user?.roles);\n\n React.useEffect(() => {\n if (userRoles) {\n const isUserSuperAdmin = userRoles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin && appInfo?.autoReload) {\n setGuidedTourVisibility(true);\n }\n }\n }, [userRoles, appInfo?.autoReload, setGuidedTourVisibility]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName), permissions ?? []);\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 // Check if we're on a history route to know if we should render the left menu\n const isHistoryRoute = useIsHistoryRoute();\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo || isLoadingPermissions) {\n return <Page.Loading />;\n }\n\n const refetchPermissions = async () => {\n await refetch();\n };\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <RBACProvider permissions={permissions ?? []} refetchPermissions={refetchPermissions}>\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex alignItems=\"flex-start\">\n {!isHistoryRoute && (\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n />\n )}\n <Box flex={1}>\n <Outlet />\n <GuidedTourModal />\n {showTutorials && <Onboarding />}\n </Box>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </RBACProvider>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["useGuidedTour","useIntl","useTracking","get","LAYOUT_DATA","jsx","Portal","FocusTrap","jsxs","Flex","IconButton","Cross","Box","Button","styled","Fragment","VerticalDivider","STATES","Typography","Number","LinkButton","NavLink","ArrowRight","RouterNavLink","React","useConfiguration","usePersistentState","useAuth","useLocation","getDisplayName","name","MainNav","NavBrand","Divider","NavSections","Write","NavSection","Icon","Lock","NavFooter","NavUser","Exit","NavCondense","useAppInfo","Message","Question","PopoverPrimitives","index","Play","VisuallyHidden","Book","PaperPlane","useStrapiApp","Page","produce","set","useSelector","selectAdminPermissions","Puzzle","ShoppingCart","Cog","hasPermissions","cloneDeep","useInformationQuery","useGetMyPermissionsQuery","useOnce","useIsHistoryRoute","AppInfoProvider","RBACProvider","NpsSurvey","DndProvider","HTML5Backend","SkipToContent","Outlet","PrivateRoute","valid","lt"],"mappings":"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"}
|