@strapi/admin 5.0.0-beta.4 → 5.0.0-beta.6
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/admin/{AdminSeatInfo-H5eNy3Gq.js → AdminSeatInfo-G2ipQTLk.js} +5 -14
- package/dist/admin/AdminSeatInfo-G2ipQTLk.js.map +1 -0
- package/dist/admin/{AdminSeatInfo-jPH1stsB.mjs → AdminSeatInfo-ZrJlIt8M.mjs} +7 -16
- package/dist/admin/AdminSeatInfo-ZrJlIt8M.mjs.map +1 -0
- package/dist/admin/{ApplicationInfoPage-QiVVy6LS.mjs → ApplicationInfoPage-TImAEuc3.mjs} +9 -18
- package/dist/admin/ApplicationInfoPage-TImAEuc3.mjs.map +1 -0
- package/dist/admin/{ApplicationInfoPage-leY1AEgo.js → ApplicationInfoPage-dc0ReC0D.js} +7 -16
- package/dist/admin/ApplicationInfoPage-dc0ReC0D.js.map +1 -0
- package/dist/admin/{AuthResponse-kdo9DYPT.js → AuthResponse-J1Y_hbtY.js} +19 -8
- package/dist/admin/AuthResponse-J1Y_hbtY.js.map +1 -0
- package/dist/admin/{AuthResponse-5G-7aJDM.mjs → AuthResponse-wfOnX6GO.mjs} +19 -5
- package/dist/admin/AuthResponse-wfOnX6GO.mjs.map +1 -0
- package/dist/admin/{AuthenticatedLayout-Aibt647F.js → AuthenticatedLayout-TNbTifIA.js} +156 -50
- package/dist/admin/AuthenticatedLayout-TNbTifIA.js.map +1 -0
- package/dist/admin/{AuthenticatedLayout-UPRVctuH.mjs → AuthenticatedLayout-eMLYKMgW.mjs} +158 -52
- package/dist/admin/AuthenticatedLayout-eMLYKMgW.mjs.map +1 -0
- package/dist/admin/{ContentBox-PbS25I_4.mjs → ContentBox-DjmNTcxv.mjs} +3 -3
- package/dist/admin/ContentBox-DjmNTcxv.mjs.map +1 -0
- package/dist/admin/{ContentBox-xqJCP2BC.js → ContentBox-Mzcpnn32.js} +3 -3
- package/dist/admin/ContentBox-Mzcpnn32.js.map +1 -0
- package/dist/admin/{CreateActionEE-TcGdWjIN.mjs → CreateActionEE-Qdz4UDPf.mjs} +6 -14
- package/dist/admin/CreateActionEE-Qdz4UDPf.mjs.map +1 -0
- package/dist/admin/{CreateActionEE-2DKYzbq_.js → CreateActionEE-_i5qXWEG.js} +3 -11
- package/dist/admin/CreateActionEE-_i5qXWEG.js.map +1 -0
- package/dist/admin/{CreatePage-EngKiM_9.js → CreatePage-03MgCK7Z.js} +5 -5
- package/dist/admin/{CreatePage-EngKiM_9.js.map → CreatePage-03MgCK7Z.js.map} +1 -1
- package/dist/admin/{CreatePage-dhyIsOBI.mjs → CreatePage-07P5-Zjt.mjs} +3 -3
- package/dist/admin/{CreatePage-dhyIsOBI.mjs.map → CreatePage-07P5-Zjt.mjs.map} +1 -1
- package/dist/admin/{CreatePage-h5o6e7Ls.js → CreatePage-f3faA3vG.js} +3 -3
- package/dist/admin/{CreatePage-h5o6e7Ls.js.map → CreatePage-f3faA3vG.js.map} +1 -1
- package/dist/admin/{CreatePage-S7eVTkzK.mjs → CreatePage-uTwt_c8J.mjs} +6 -6
- package/dist/admin/{CreatePage-S7eVTkzK.mjs.map → CreatePage-uTwt_c8J.mjs.map} +1 -1
- package/dist/admin/{CreateView-YBUhPBBg.mjs → CreateView-87aPv9QV.mjs} +3 -3
- package/dist/admin/{CreateView-YBUhPBBg.mjs.map → CreateView-87aPv9QV.mjs.map} +1 -1
- package/dist/admin/{CreateView-HQFmuEYU.mjs → CreateView-T8hLqvog.mjs} +3 -3
- package/dist/admin/{CreateView-HQFmuEYU.mjs.map → CreateView-T8hLqvog.mjs.map} +1 -1
- package/dist/admin/{CreateView-8qevpt9o.js → CreateView-UemGfFqI.js} +3 -3
- package/dist/admin/{CreateView-8qevpt9o.js.map → CreateView-UemGfFqI.js.map} +1 -1
- package/dist/admin/{CreateView-chaJt-l6.js → CreateView-o5-hvd4h.js} +3 -3
- package/dist/admin/{CreateView-chaJt-l6.js.map → CreateView-o5-hvd4h.js.map} +1 -1
- package/dist/admin/{EditPage-OcSrQNeJ.mjs → EditPage-F3yH0Fy6.mjs} +6 -6
- package/dist/admin/{EditPage-OcSrQNeJ.mjs.map → EditPage-F3yH0Fy6.mjs.map} +1 -1
- package/dist/admin/{EditPage-pk60xOuF.js → EditPage-Ly5MBiuB.js} +5 -5
- package/dist/admin/{EditPage-pk60xOuF.js.map → EditPage-Ly5MBiuB.js.map} +1 -1
- package/dist/admin/{EditPage-3zbE4Ls0.js → EditPage-UqMDbMvJ.js} +7 -7
- package/dist/admin/{EditPage-3zbE4Ls0.js.map → EditPage-UqMDbMvJ.js.map} +1 -1
- package/dist/admin/{EditPage-KxrcV7mh.mjs → EditPage-XSz7Wpt8.mjs} +8 -8
- package/dist/admin/{EditPage-KxrcV7mh.mjs.map → EditPage-XSz7Wpt8.mjs.map} +1 -1
- package/dist/admin/{EditPage-H9aQSaaH.js → EditPage-YqW1NIMp.js} +15 -28
- package/dist/admin/EditPage-YqW1NIMp.js.map +1 -0
- package/dist/admin/{EditPage-oenQhubv.mjs → EditPage-lyFePXWl.mjs} +18 -31
- package/dist/admin/EditPage-lyFePXWl.mjs.map +1 -0
- package/dist/admin/{EditView-BiqoDvKZ.js → EditView-bRFkRKAz.js} +4 -4
- package/dist/admin/{EditView-BiqoDvKZ.js.map → EditView-bRFkRKAz.js.map} +1 -1
- package/dist/admin/{EditView-dHW8NJN4.mjs → EditView-r0lx661I.mjs} +6 -6
- package/dist/admin/{EditView-dHW8NJN4.mjs.map → EditView-r0lx661I.mjs.map} +1 -1
- package/dist/admin/{EditViewPage-O9_heFiZ.mjs → EditViewPage-f5dHmqdT.mjs} +6 -6
- package/dist/admin/{EditViewPage-O9_heFiZ.mjs.map → EditViewPage-f5dHmqdT.mjs.map} +1 -1
- package/dist/admin/{EditViewPage-OMo0nfgm.js → EditViewPage-tAsn6QS9.js} +4 -4
- package/dist/admin/{EditViewPage-OMo0nfgm.js.map → EditViewPage-tAsn6QS9.js.map} +1 -1
- package/dist/admin/{EventsTable-Xh9FIU87.mjs → EventsTable-2C605_qQ.mjs} +2 -2
- package/dist/admin/{EventsTable-Xh9FIU87.mjs.map → EventsTable-2C605_qQ.mjs.map} +1 -1
- package/dist/admin/{EventsTable-1IsAibDQ.js → EventsTable-4h6LoAp-.js} +2 -2
- package/dist/admin/{EventsTable-1IsAibDQ.js.map → EventsTable-4h6LoAp-.js.map} +1 -1
- package/dist/admin/{HomePage-oNgvRlya.mjs → HomePage-4FySTCJU.mjs} +3 -3
- package/dist/admin/{HomePage-oNgvRlya.mjs.map → HomePage-4FySTCJU.mjs.map} +1 -1
- package/dist/admin/{HomePage-Xf5Ghz92.js → HomePage-UTnZwpp-.js} +36 -28
- package/dist/admin/HomePage-UTnZwpp-.js.map +1 -0
- package/dist/admin/{HomePage-OeCZ2DCC.js → HomePage-Uuww2J1B.js} +3 -3
- package/dist/admin/{HomePage-OeCZ2DCC.js.map → HomePage-Uuww2J1B.js.map} +1 -1
- package/dist/admin/{HomePage-D-bJ3jts.mjs → HomePage-ZF3T0k2r.mjs} +27 -19
- package/dist/admin/HomePage-ZF3T0k2r.mjs.map +1 -0
- package/dist/admin/{InstalledPluginsPage-s_PGIc3_.mjs → InstalledPluginsPage-eOXi3oTN.mjs} +4 -4
- package/dist/admin/{InstalledPluginsPage-s_PGIc3_.mjs.map → InstalledPluginsPage-eOXi3oTN.mjs.map} +1 -1
- package/dist/admin/{InstalledPluginsPage-ZIPyDrzh.js → InstalledPluginsPage-o43CGz2w.js} +3 -3
- package/dist/admin/{InstalledPluginsPage-ZIPyDrzh.js.map → InstalledPluginsPage-o43CGz2w.js.map} +1 -1
- package/dist/admin/{Layout-BuMuReXo.js → Layout-XxmAreH1.js} +11 -12
- package/dist/admin/Layout-XxmAreH1.js.map +1 -0
- package/dist/admin/{Layout-lSZESFtG.mjs → Layout-mnn4_IJp.mjs} +8 -9
- package/dist/admin/Layout-mnn4_IJp.mjs.map +1 -0
- package/dist/admin/{ListPage-fE2OLTTE.mjs → ListPage-5g8MtUEB.mjs} +5 -6
- package/dist/admin/ListPage-5g8MtUEB.mjs.map +1 -0
- package/dist/admin/{ListPage-6O-9Hx-B.js → ListPage-6Ukzm--I.js} +3 -3
- package/dist/admin/{ListPage-6O-9Hx-B.js.map → ListPage-6Ukzm--I.js.map} +1 -1
- package/dist/admin/{ListPage-xo4o9urf.mjs → ListPage-AFDAiR9X.mjs} +7 -7
- package/dist/admin/{ListPage-xo4o9urf.mjs.map → ListPage-AFDAiR9X.mjs.map} +1 -1
- package/dist/admin/{ListPage-a9qp7eE2.mjs → ListPage-Gj1OS6PX.mjs} +3 -3
- package/dist/admin/{ListPage-a9qp7eE2.mjs.map → ListPage-Gj1OS6PX.mjs.map} +1 -1
- package/dist/admin/{ListPage-vVa7B6wq.js → ListPage-NTxNcftS.js} +10 -11
- package/dist/admin/ListPage-NTxNcftS.js.map +1 -0
- package/dist/admin/{ListPage-6HUcvFyL.js → ListPage-Pi_dzfDr.js} +7 -7
- package/dist/admin/{ListPage-6HUcvFyL.js.map → ListPage-Pi_dzfDr.js.map} +1 -1
- package/dist/admin/{ListPage-brwMJDfa.js → ListPage-URtxfNJ4.js} +4 -5
- package/dist/admin/ListPage-URtxfNJ4.js.map +1 -0
- package/dist/admin/{ListPage-nGtmXc03.mjs → ListPage-eNkUD3v_.mjs} +12 -13
- package/dist/admin/ListPage-eNkUD3v_.mjs.map +1 -0
- package/dist/admin/{ListPage-A2MPjJxi.js → ListPage-hln8fKzE.js} +7 -8
- package/dist/admin/ListPage-hln8fKzE.js.map +1 -0
- package/dist/admin/{ListPage-1HhDIdVj.mjs → ListPage-kdjzZ2al.mjs} +7 -8
- package/dist/admin/ListPage-kdjzZ2al.mjs.map +1 -0
- package/dist/admin/{ListView-9exyBSMW.mjs → ListView-FBh2WTHx.mjs} +10 -10
- package/dist/admin/ListView-FBh2WTHx.mjs.map +1 -0
- package/dist/admin/{ListView-upndjhrB.js → ListView-f2wVT21J.js} +9 -9
- package/dist/admin/ListView-f2wVT21J.js.map +1 -0
- package/dist/admin/{ListView-VjkXS0Tf.js → ListView-pYVBJ4lg.js} +8 -8
- package/dist/admin/ListView-pYVBJ4lg.js.map +1 -0
- package/dist/admin/{ListView-2uHZ2TWm.mjs → ListView-uwPF62w6.mjs} +9 -9
- package/dist/admin/ListView-uwPF62w6.mjs.map +1 -0
- package/dist/admin/{Login-lAG7DHV7.js → Login-3rLFPliB.js} +4 -4
- package/dist/admin/{Login-lAG7DHV7.js.map → Login-3rLFPliB.js.map} +1 -1
- package/dist/admin/{Login-h0-a1KH5.mjs → Login-FSNzATl0.mjs} +4 -4
- package/dist/admin/{Login-h0-a1KH5.mjs.map → Login-FSNzATl0.mjs.map} +1 -1
- package/dist/admin/{MagicLinkEE-ApwIgTej.js → MagicLinkEE-bccsKKbJ.js} +3 -3
- package/dist/admin/{MagicLinkEE-ApwIgTej.js.map → MagicLinkEE-bccsKKbJ.js.map} +1 -1
- package/dist/admin/{MagicLinkEE-kjtWcwj6.mjs → MagicLinkEE-czAdOuTH.mjs} +3 -3
- package/dist/admin/{MagicLinkEE-kjtWcwj6.mjs.map → MagicLinkEE-czAdOuTH.mjs.map} +1 -1
- package/dist/admin/{MarketplacePage-mbqZ9JDl.mjs → MarketplacePage-kNQPkoZK.mjs} +54 -49
- package/dist/admin/MarketplacePage-kNQPkoZK.mjs.map +1 -0
- package/dist/admin/{MarketplacePage-hNQbTtRI.js → MarketplacePage-sSTqINSu.js} +55 -50
- package/dist/admin/MarketplacePage-sSTqINSu.js.map +1 -0
- package/dist/admin/{Ornaments-RhzFP9rf.js → Ornaments-UTssGzOw.js} +8 -8
- package/dist/admin/{Ornaments-RhzFP9rf.js.map → Ornaments-UTssGzOw.js.map} +1 -1
- package/dist/admin/{Ornaments-izqdN6fh.mjs → Ornaments-h_LCCr5P.mjs} +8 -8
- package/dist/admin/{Ornaments-izqdN6fh.mjs.map → Ornaments-h_LCCr5P.mjs.map} +1 -1
- package/dist/admin/{Permissions-v5pxfHqR.js → Permissions-NlSnXUKO.js} +19 -20
- package/dist/admin/Permissions-NlSnXUKO.js.map +1 -0
- package/dist/admin/{Permissions-RNmyxA77.mjs → Permissions-aU1eesjP.mjs} +20 -21
- package/dist/admin/Permissions-aU1eesjP.mjs.map +1 -0
- package/dist/admin/{PrivateRoute-KAM10GGM.js → PrivateRoute-nJgGpBXP.js} +2 -2
- package/dist/admin/{PrivateRoute-KAM10GGM.js.map → PrivateRoute-nJgGpBXP.js.map} +1 -1
- package/dist/admin/{PrivateRoute-wDu6Vo0N.mjs → PrivateRoute-zZ7p1pc9.mjs} +2 -2
- package/dist/admin/{PrivateRoute-wDu6Vo0N.mjs.map → PrivateRoute-zZ7p1pc9.mjs.map} +1 -1
- package/dist/admin/{ProfilePage-bDOjI8F-.mjs → ProfilePage-T2kC_KoM.mjs} +5 -5
- package/dist/admin/{ProfilePage-bDOjI8F-.mjs.map → ProfilePage-T2kC_KoM.mjs.map} +1 -1
- package/dist/admin/{ProfilePage-ivIjdblf.js → ProfilePage-jU98pa61.js} +4 -4
- package/dist/admin/{ProfilePage-ivIjdblf.js.map → ProfilePage-jU98pa61.js.map} +1 -1
- package/dist/admin/{PurchaseAuditLogs-tS_tVSGI.js → PurchaseAuditLogs-GreHFPSR.js} +4 -4
- package/dist/admin/PurchaseAuditLogs-GreHFPSR.js.map +1 -0
- package/dist/admin/{PurchaseAuditLogs-8_4PcW7P.mjs → PurchaseAuditLogs-_1tVWtNF.mjs} +5 -5
- package/dist/admin/PurchaseAuditLogs-_1tVWtNF.mjs.map +1 -0
- package/dist/admin/{PurchaseSingleSignOn-9SV6-fYs.js → PurchaseSingleSignOn-6t4xuNBd.js} +4 -4
- package/dist/admin/PurchaseSingleSignOn-6t4xuNBd.js.map +1 -0
- package/dist/admin/{PurchaseSingleSignOn--gblfVu6.mjs → PurchaseSingleSignOn-VUU-U4wi.mjs} +5 -5
- package/dist/admin/PurchaseSingleSignOn-VUU-U4wi.mjs.map +1 -0
- package/dist/admin/{SSOProviders-JTam8pNP.js → SSOProviders-FZwT7RmU.js} +3 -3
- package/dist/admin/{SSOProviders-JTam8pNP.js.map → SSOProviders-FZwT7RmU.js.map} +1 -1
- package/dist/admin/{SSOProviders-f1OPn1AH.mjs → SSOProviders-GcYDRAyn.mjs} +3 -3
- package/dist/admin/{SSOProviders-f1OPn1AH.mjs.map → SSOProviders-GcYDRAyn.mjs.map} +1 -1
- package/dist/admin/{SelectRoles-8cfbyMVr.mjs → SelectRoles--ys30CdN.mjs} +5 -5
- package/dist/admin/{SelectRoles-8cfbyMVr.mjs.map → SelectRoles--ys30CdN.mjs.map} +1 -1
- package/dist/admin/{SelectRoles-ZZPSrkZE.js → SelectRoles-EdE6yfsj.js} +5 -5
- package/dist/admin/{SelectRoles-ZZPSrkZE.js.map → SelectRoles-EdE6yfsj.js.map} +1 -1
- package/dist/admin/{SingleSignOnPage-Ots_q1kK.mjs → SingleSignOnPage-Y-brfYQ1.mjs} +8 -8
- package/dist/admin/SingleSignOnPage-Y-brfYQ1.mjs.map +1 -0
- package/dist/admin/{SingleSignOnPage-dKN-oVc8.js → SingleSignOnPage-nv121JbB.js} +6 -6
- package/dist/admin/SingleSignOnPage-nv121JbB.js.map +1 -0
- package/dist/admin/{Table-ILoLTYT2.mjs → Table--He5qeQG.mjs} +6 -7
- package/dist/admin/Table--He5qeQG.mjs.map +1 -0
- package/dist/admin/{Table-rh1Goj9B.js → Table-HXu3Nz4W.js} +6 -7
- package/dist/admin/Table-HXu3Nz4W.js.map +1 -0
- package/dist/admin/{TokenTypeSelect-oUpUNcrP.mjs → TokenTypeSelect-kgKThMAL.mjs} +9 -9
- package/dist/admin/TokenTypeSelect-kgKThMAL.mjs.map +1 -0
- package/dist/admin/{TokenTypeSelect-Bc6Gx5Og.js → TokenTypeSelect-yY2kwTyO.js} +7 -7
- package/dist/admin/TokenTypeSelect-yY2kwTyO.js.map +1 -0
- package/dist/admin/{UseCasePage-NYPLK0s5.js → UseCasePage-6_WRtTwv.js} +7 -7
- package/dist/admin/UseCasePage-6_WRtTwv.js.map +1 -0
- package/dist/admin/{UseCasePage-siicRv21.mjs → UseCasePage-bfP-fDoW.mjs} +8 -8
- package/dist/admin/UseCasePage-bfP-fDoW.mjs.map +1 -0
- package/dist/admin/{admin-DUKhYsmP.mjs → admin-5SXhE_nJ.mjs} +2 -2
- package/dist/admin/{admin-DUKhYsmP.mjs.map → admin-5SXhE_nJ.mjs.map} +1 -1
- package/dist/admin/{apiTokens-dBRuo1wd.mjs → apiTokens-bNRitXGF.mjs} +2 -2
- package/dist/admin/{apiTokens-dBRuo1wd.mjs.map → apiTokens-bNRitXGF.mjs.map} +1 -1
- package/dist/admin/{constants-wYcX8us0.js → constants-qdY4HMAg.js} +5 -6
- package/dist/admin/constants-qdY4HMAg.js.map +1 -0
- package/dist/admin/{constants-GoVT0wVo.mjs → constants-wnw4TGwG.mjs} +5 -6
- package/dist/admin/constants-wnw4TGwG.mjs.map +1 -0
- package/dist/admin/ee.mjs +1 -1
- package/dist/admin/{en-qvX6GTOD.mjs → en-D7rooMTs.mjs} +2 -1
- package/dist/admin/{en-qvX6GTOD.mjs.map → en-D7rooMTs.mjs.map} +1 -1
- package/dist/admin/{en-2FB7x9Rq.js → en-zVbLVH-h.js} +2 -1
- package/dist/admin/{en-2FB7x9Rq.js.map → en-zVbLVH-h.js.map} +1 -1
- package/dist/admin/{index-i37IN_fH.mjs → index-7fPlAzj6.mjs} +50 -54
- package/dist/admin/index-7fPlAzj6.mjs.map +1 -0
- package/dist/admin/{index-e8PHZx2A.js → index-FJLgZ-Wg.js} +61 -65
- package/dist/admin/index-FJLgZ-Wg.js.map +1 -0
- package/dist/admin/index.js +2 -2
- package/dist/admin/index.mjs +3 -3
- package/dist/admin/{rbac-sYT_mXH0.mjs → rbac-uVd0RAE5.mjs} +10 -10
- package/dist/admin/rbac-uVd0RAE5.mjs.map +1 -0
- package/dist/admin/{rbac-WZsv1761.js → rbac-xgYdpUSq.js} +8 -8
- package/dist/admin/rbac-xgYdpUSq.js.map +1 -0
- package/dist/admin/{selectors-3gRe5pAj.mjs → selectors-AvywwQRm.mjs} +2 -2
- package/dist/admin/{selectors-3gRe5pAj.mjs.map → selectors-AvywwQRm.mjs.map} +1 -1
- package/dist/admin/{selectors-CiTVxP8O.js → selectors-C62Wf5On.js} +2 -2
- package/dist/admin/{selectors-CiTVxP8O.js.map → selectors-C62Wf5On.js.map} +1 -1
- package/dist/admin/src/components/MainNav/NavBrand.d.ts +1 -0
- package/dist/admin/src/components/MainNav/NavLink.d.ts +22 -0
- package/dist/admin/src/features/BackButton.d.ts +1 -1
- package/dist/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.d.ts +26 -25
- package/dist/admin/src/pages/Settings/pages/Roles/utils/constants.d.ts +3 -3
- package/dist/admin/test.js +3 -3
- package/dist/admin/test.js.map +1 -1
- package/dist/admin/test.mjs +4 -4
- package/dist/admin/test.mjs.map +1 -1
- package/dist/admin/{transferTokens-OLPKYcY_.mjs → transferTokens-ngan7vz6.mjs} +2 -2
- package/dist/admin/{transferTokens-OLPKYcY_.mjs.map → transferTokens-ngan7vz6.mjs.map} +1 -1
- package/dist/admin/{useAdminRoles-qJLjTITl.mjs → useAdminRoles-X4pwDHaW.mjs} +2 -2
- package/dist/admin/{useAdminRoles-qJLjTITl.mjs.map → useAdminRoles-X4pwDHaW.mjs.map} +1 -1
- package/dist/admin/{useAdminRoles-JOPnwG5K.js → useAdminRoles-yjN2uT_o.js} +2 -2
- package/dist/admin/{useAdminRoles-JOPnwG5K.js.map → useAdminRoles-yjN2uT_o.js.map} +1 -1
- package/dist/admin/{useLicenseLimitNotification-aTNbD3xK.mjs → useLicenseLimitNotification-T2LoOH4B.mjs} +3 -3
- package/dist/admin/{useLicenseLimitNotification-aTNbD3xK.mjs.map → useLicenseLimitNotification-T2LoOH4B.mjs.map} +1 -1
- package/dist/admin/{useLicenseLimitNotification-0UWeCY_u.js → useLicenseLimitNotification-wrxezW0C.js} +2 -2
- package/dist/admin/{useLicenseLimitNotification-0UWeCY_u.js.map → useLicenseLimitNotification-wrxezW0C.js.map} +1 -1
- package/dist/admin/{useLicenseLimits-F7K-YWAE.mjs → useLicenseLimits-fKc9uCtd.mjs} +2 -2
- package/dist/admin/{useLicenseLimits-F7K-YWAE.mjs.map → useLicenseLimits-fKc9uCtd.mjs.map} +1 -1
- package/dist/admin/{useWebhooks-7BXPSMHG.mjs → useWebhooks-8VWSFqNg.mjs} +2 -2
- package/dist/admin/{useWebhooks-7BXPSMHG.mjs.map → useWebhooks-8VWSFqNg.mjs.map} +1 -1
- package/dist/admin/{validation-man-qOMc.mjs → validation-p2q0MWxi.mjs} +2 -2
- package/dist/admin/{validation-man-qOMc.mjs.map → validation-p2q0MWxi.mjs.map} +1 -1
- package/dist/admin/{validation-mliIGlD0.js → validation-rsP4iH1U.js} +2 -2
- package/dist/admin/{validation-mliIGlD0.js.map → validation-rsP4iH1U.js.map} +1 -1
- package/dist/ee/admin/src/utils/cookies.d.ts +2 -0
- package/dist/package.json.d.ts +12 -13
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +1 -1
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/controllers/admin.d.ts.map +1 -1
- package/package.json +13 -14
- package/dist/admin/AdminSeatInfo-H5eNy3Gq.js.map +0 -1
- package/dist/admin/AdminSeatInfo-jPH1stsB.mjs.map +0 -1
- package/dist/admin/ApplicationInfoPage-QiVVy6LS.mjs.map +0 -1
- package/dist/admin/ApplicationInfoPage-leY1AEgo.js.map +0 -1
- package/dist/admin/AuthResponse-5G-7aJDM.mjs.map +0 -1
- package/dist/admin/AuthResponse-kdo9DYPT.js.map +0 -1
- package/dist/admin/AuthenticatedLayout-Aibt647F.js.map +0 -1
- package/dist/admin/AuthenticatedLayout-UPRVctuH.mjs.map +0 -1
- package/dist/admin/ContentBox-PbS25I_4.mjs.map +0 -1
- package/dist/admin/ContentBox-xqJCP2BC.js.map +0 -1
- package/dist/admin/CreateActionEE-2DKYzbq_.js.map +0 -1
- package/dist/admin/CreateActionEE-TcGdWjIN.mjs.map +0 -1
- package/dist/admin/EditPage-H9aQSaaH.js.map +0 -1
- package/dist/admin/EditPage-oenQhubv.mjs.map +0 -1
- package/dist/admin/HomePage-D-bJ3jts.mjs.map +0 -1
- package/dist/admin/HomePage-Xf5Ghz92.js.map +0 -1
- package/dist/admin/Layout-BuMuReXo.js.map +0 -1
- package/dist/admin/Layout-lSZESFtG.mjs.map +0 -1
- package/dist/admin/ListPage-1HhDIdVj.mjs.map +0 -1
- package/dist/admin/ListPage-A2MPjJxi.js.map +0 -1
- package/dist/admin/ListPage-brwMJDfa.js.map +0 -1
- package/dist/admin/ListPage-fE2OLTTE.mjs.map +0 -1
- package/dist/admin/ListPage-nGtmXc03.mjs.map +0 -1
- package/dist/admin/ListPage-vVa7B6wq.js.map +0 -1
- package/dist/admin/ListView-2uHZ2TWm.mjs.map +0 -1
- package/dist/admin/ListView-9exyBSMW.mjs.map +0 -1
- package/dist/admin/ListView-VjkXS0Tf.js.map +0 -1
- package/dist/admin/ListView-upndjhrB.js.map +0 -1
- package/dist/admin/MarketplacePage-hNQbTtRI.js.map +0 -1
- package/dist/admin/MarketplacePage-mbqZ9JDl.mjs.map +0 -1
- package/dist/admin/Permissions-RNmyxA77.mjs.map +0 -1
- package/dist/admin/Permissions-v5pxfHqR.js.map +0 -1
- package/dist/admin/PurchaseAuditLogs-8_4PcW7P.mjs.map +0 -1
- package/dist/admin/PurchaseAuditLogs-tS_tVSGI.js.map +0 -1
- package/dist/admin/PurchaseSingleSignOn--gblfVu6.mjs.map +0 -1
- package/dist/admin/PurchaseSingleSignOn-9SV6-fYs.js.map +0 -1
- package/dist/admin/SingleSignOnPage-Ots_q1kK.mjs.map +0 -1
- package/dist/admin/SingleSignOnPage-dKN-oVc8.js.map +0 -1
- package/dist/admin/Table-ILoLTYT2.mjs.map +0 -1
- package/dist/admin/Table-rh1Goj9B.js.map +0 -1
- package/dist/admin/TokenTypeSelect-Bc6Gx5Og.js.map +0 -1
- package/dist/admin/TokenTypeSelect-oUpUNcrP.mjs.map +0 -1
- package/dist/admin/UseCasePage-NYPLK0s5.js.map +0 -1
- package/dist/admin/UseCasePage-siicRv21.mjs.map +0 -1
- package/dist/admin/constants-GoVT0wVo.mjs.map +0 -1
- package/dist/admin/constants-wYcX8us0.js.map +0 -1
- package/dist/admin/index-e8PHZx2A.js.map +0 -1
- package/dist/admin/index-i37IN_fH.mjs.map +0 -1
- package/dist/admin/rbac-WZsv1761.js.map +0 -1
- package/dist/admin/rbac-sYT_mXH0.mjs.map +0 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { Button, Flex, Box, Popover, Tag, MultiSelect, MultiSelectOption, Typography, Divider, Tooltip,
|
|
4
|
-
import { Filter, Cross, CheckCircle, ExternalLink, Check, Duplicate,
|
|
3
|
+
import { Button, Flex, Box, Popover, Tag, MultiSelect, MultiSelectOption, Typography, Divider, Tooltip, LinkButton, GridLayout, Grid, GridItem, HeaderLayout, Layout, Main, SingleSelect, SingleSelectOption, useNotifyAT, ContentLayout, TabGroup, Tabs, Tab, Searchbar, TabPanels, TabPanel } from '@strapi/design-system';
|
|
4
|
+
import { Filter, Cross, CheckCircle, ExternalLink, Check, Duplicate, Star, Download, Upload } from '@strapi/icons';
|
|
5
|
+
import { GitHub, EmptyDocuments, GlassesSquare } from '@strapi/icons/symbols';
|
|
5
6
|
import { useIntl } from 'react-intl';
|
|
6
|
-
import { C as ContentBox } from './ContentBox-
|
|
7
|
-
import { d as useTracking, u as useNotification, P as Page, b as useTypedSelector, m as useAppInfo } from './rbac-
|
|
8
|
-
import { x as StrapiLogo, t as useClipboard, m as useQueryParams, P as Pagination } from './index-
|
|
7
|
+
import { C as ContentBox } from './ContentBox-DjmNTcxv.mjs';
|
|
8
|
+
import { d as useTracking, u as useNotification, P as Page, b as useTypedSelector, m as useAppInfo } from './rbac-uVd0RAE5.mjs';
|
|
9
|
+
import { x as StrapiLogo, t as useClipboard, m as useQueryParams, P as Pagination } from './index-7fPlAzj6.mjs';
|
|
9
10
|
import styled from 'styled-components';
|
|
10
|
-
import { LinkButton } from '@strapi/design-system/v2';
|
|
11
11
|
import pluralize from 'pluralize';
|
|
12
12
|
import * as semver from 'semver';
|
|
13
13
|
import * as qs from 'qs';
|
|
@@ -221,30 +221,36 @@ const NpmPackageCard = ({
|
|
|
221
221
|
}
|
|
222
222
|
)
|
|
223
223
|
] }),
|
|
224
|
-
/* @__PURE__ */ jsx(Box, { paddingTop: 4, children: /* @__PURE__ */ jsx(Typography, { as: "h3", variant: "delta", children: /* @__PURE__ */ jsxs(
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
224
|
+
/* @__PURE__ */ jsx(Box, { paddingTop: 4, children: /* @__PURE__ */ jsx(Typography, { as: "h3", variant: "delta", children: /* @__PURE__ */ jsxs(
|
|
225
|
+
Flex,
|
|
226
|
+
{
|
|
227
|
+
alignItems: "center",
|
|
228
|
+
gap: attributes.validated && !attributes.madeByStrapi ? 2 : 1,
|
|
229
|
+
children: [
|
|
230
|
+
attributes.name,
|
|
231
|
+
attributes.validated && !attributes.madeByStrapi && /* @__PURE__ */ jsx(
|
|
232
|
+
Tooltip,
|
|
233
|
+
{
|
|
234
|
+
description: formatMessage({
|
|
235
|
+
id: "admin.pages.MarketPlacePage.plugin.tooltip.verified",
|
|
236
|
+
defaultMessage: "Plugin verified by Strapi"
|
|
237
|
+
}),
|
|
238
|
+
children: /* @__PURE__ */ jsx(CheckCircle, { fill: "success600" })
|
|
239
|
+
}
|
|
240
|
+
),
|
|
241
|
+
attributes.madeByStrapi && /* @__PURE__ */ jsx(Tooltip, { description: madeByStrapiMessage, children: /* @__PURE__ */ jsx(
|
|
242
|
+
Box,
|
|
243
|
+
{
|
|
244
|
+
as: "img",
|
|
245
|
+
src: StrapiLogo,
|
|
246
|
+
alt: madeByStrapiMessage,
|
|
247
|
+
width: 6,
|
|
248
|
+
height: "auto"
|
|
249
|
+
}
|
|
250
|
+
) })
|
|
251
|
+
]
|
|
252
|
+
}
|
|
253
|
+
) }) }),
|
|
248
254
|
/* @__PURE__ */ jsx(Box, { paddingTop: 2, children: /* @__PURE__ */ jsx(EllipsisText, { as: "p", variant: "omega", textColor: "neutral600", children: attributes.description }) })
|
|
249
255
|
] }),
|
|
250
256
|
/* @__PURE__ */ jsxs(Flex, { gap: 2, style: { alignSelf: "flex-end" }, paddingTop: 6, children: [
|
|
@@ -309,8 +315,8 @@ const InstallPluginButton = ({
|
|
|
309
315
|
}
|
|
310
316
|
};
|
|
311
317
|
if (isInstalled) {
|
|
312
|
-
return /* @__PURE__ */ jsxs(
|
|
313
|
-
/* @__PURE__ */ jsx(
|
|
318
|
+
return /* @__PURE__ */ jsxs(Flex, { gap: 2, paddingLeft: 4, children: [
|
|
319
|
+
/* @__PURE__ */ jsx(Check, { width: "1.2rem", height: "1.2rem", color: "success600" }),
|
|
314
320
|
/* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "success600", fontWeight: "bold", children: formatMessage({
|
|
315
321
|
id: "admin.pages.MarketPlacePage.plugin.installed",
|
|
316
322
|
defaultMessage: "Installed"
|
|
@@ -386,17 +392,8 @@ const PackageStats = ({ githubStars = 0, npmDownloads = 0, npmPackageType }) =>
|
|
|
386
392
|
const { formatMessage } = useIntl();
|
|
387
393
|
return /* @__PURE__ */ jsxs(Flex, { gap: 1, children: [
|
|
388
394
|
!!githubStars && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
389
|
-
/* @__PURE__ */ jsx(
|
|
390
|
-
/* @__PURE__ */ jsx(
|
|
391
|
-
Icon,
|
|
392
|
-
{
|
|
393
|
-
as: Star,
|
|
394
|
-
height: `${12 / 16}rem`,
|
|
395
|
-
width: `${12 / 16}rem`,
|
|
396
|
-
color: "warning500",
|
|
397
|
-
"aria-hidden": true
|
|
398
|
-
}
|
|
399
|
-
),
|
|
395
|
+
/* @__PURE__ */ jsx(GitHub, { height: "1.2rem", width: "1.2rem", "aria-hidden": true }),
|
|
396
|
+
/* @__PURE__ */ jsx(Star, { height: "1.2rem", width: "1.2rem", fill: "warning500", "aria-hidden": true }),
|
|
400
397
|
/* @__PURE__ */ jsx(
|
|
401
398
|
"p",
|
|
402
399
|
{
|
|
@@ -415,7 +412,7 @@ const PackageStats = ({ githubStars = 0, npmDownloads = 0, npmPackageType }) =>
|
|
|
415
412
|
),
|
|
416
413
|
/* @__PURE__ */ jsx(VerticalDivider, { unsetMargin: false })
|
|
417
414
|
] }),
|
|
418
|
-
/* @__PURE__ */ jsx(
|
|
415
|
+
/* @__PURE__ */ jsx(Download, { height: "1.2rem", width: "1.2rem", "aria-hidden": true }),
|
|
419
416
|
/* @__PURE__ */ jsx(
|
|
420
417
|
"p",
|
|
421
418
|
{
|
|
@@ -435,7 +432,7 @@ const PackageStats = ({ githubStars = 0, npmDownloads = 0, npmPackageType }) =>
|
|
|
435
432
|
] });
|
|
436
433
|
};
|
|
437
434
|
const VerticalDivider = styled(Divider)`
|
|
438
|
-
width:
|
|
435
|
+
width: 1.2rem;
|
|
439
436
|
transform: rotate(90deg);
|
|
440
437
|
`;
|
|
441
438
|
|
|
@@ -467,7 +464,7 @@ const NpmPackagesGrid = ({
|
|
|
467
464
|
return /* @__PURE__ */ jsxs(Box, { position: "relative", children: [
|
|
468
465
|
/* @__PURE__ */ jsx(GridLayout, { children: Array(12).fill(null).map((_, idx) => /* @__PURE__ */ jsx(EmptyPluginCard, { height: "234px", hasRadius: true }, idx)) }),
|
|
469
466
|
/* @__PURE__ */ jsx(Box, { position: "absolute", top: 11, width: "100%", children: /* @__PURE__ */ jsxs(Flex, { alignItems: "center", justifyContent: "center", direction: "column", children: [
|
|
470
|
-
/* @__PURE__ */ jsx(
|
|
467
|
+
/* @__PURE__ */ jsx(EmptyDocuments, { width: "160px", height: "88px" }),
|
|
471
468
|
/* @__PURE__ */ jsx(Box, { paddingTop: 6, children: /* @__PURE__ */ jsx(Typography, { variant: "delta", as: "p", textColor: "neutral600", children: emptySearchMessage }) })
|
|
472
469
|
] }) })
|
|
473
470
|
] });
|
|
@@ -533,7 +530,7 @@ const OfflineLayout = () => {
|
|
|
533
530
|
direction: "column",
|
|
534
531
|
alignItems: "center",
|
|
535
532
|
justifyContent: "center",
|
|
536
|
-
paddingTop:
|
|
533
|
+
paddingTop: `12rem`,
|
|
537
534
|
children: [
|
|
538
535
|
/* @__PURE__ */ jsx(Box, { paddingBottom: 2, children: /* @__PURE__ */ jsx(Typography, { textColor: "neutral700", variant: "alpha", children: formatMessage({
|
|
539
536
|
id: "admin.pages.MarketPlacePage.offline.title",
|
|
@@ -1003,7 +1000,15 @@ const MarketplacePage = () => {
|
|
|
1003
1000
|
}),
|
|
1004
1001
|
icon: /* @__PURE__ */ jsx(GlassesSquare, {}),
|
|
1005
1002
|
iconBackground: "alternative100",
|
|
1006
|
-
endAction: /* @__PURE__ */ jsx(
|
|
1003
|
+
endAction: /* @__PURE__ */ jsx(
|
|
1004
|
+
ExternalLink,
|
|
1005
|
+
{
|
|
1006
|
+
fill: "neutral600",
|
|
1007
|
+
width: "1.2rem",
|
|
1008
|
+
height: "1.2rem",
|
|
1009
|
+
style: { marginLeft: "0.8rem" }
|
|
1010
|
+
}
|
|
1011
|
+
)
|
|
1007
1012
|
}
|
|
1008
1013
|
)
|
|
1009
1014
|
}
|
|
@@ -1017,4 +1022,4 @@ const ProtectedMarketplacePage = () => {
|
|
|
1017
1022
|
};
|
|
1018
1023
|
|
|
1019
1024
|
export { MarketplacePage, ProtectedMarketplacePage };
|
|
1020
|
-
//# sourceMappingURL=MarketplacePage-
|
|
1025
|
+
//# sourceMappingURL=MarketplacePage-kNQPkoZK.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarketplacePage-kNQPkoZK.mjs","sources":["../../admin/src/hooks/useDebounce.ts","../../admin/src/pages/Marketplace/components/NpmPackagesFilters.tsx","../../admin/src/pages/Marketplace/components/NpmPackageCard.tsx","../../admin/src/pages/Marketplace/components/NpmPackagesGrid.tsx","../../admin/src/pages/Marketplace/components/PageHeader.tsx","../../admin/src/pages/Marketplace/components/OfflineLayout.tsx","../../admin/src/pages/Marketplace/components/SortSelect.tsx","../../admin/src/pages/Marketplace/hooks/useMarketplaceData.ts","../../admin/src/pages/Marketplace/hooks/useNavigatorOnline.ts","../../admin/src/pages/Marketplace/MarketplacePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nexport function useDebounce<TValue>(value: TValue, delay: number): TValue {\n const [debouncedValue, setDebouncedValue] = React.useState(value);\n\n React.useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n","import * as React from 'react';\n\nimport {\n Box,\n Button,\n Tag,\n MultiSelect,\n MultiSelectOption,\n MultiSelectProps,\n Popover,\n Flex,\n} from '@strapi/design-system';\nimport { Cross, Filter } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport type { Categories, Collections, FilterTypes } from '../hooks/useMarketplaceData';\nimport type { NpmPackageType, MarketplacePageQuery } from '../MarketplacePage';\n\ninterface NpmPackagesFiltersProps {\n handleSelectClear: (type: FilterTypes) => void;\n handleSelectChange: (update: Partial<MarketplacePageQuery>) => void;\n npmPackageType: NpmPackageType;\n possibleCategories: Partial<Record<Categories, number>>;\n possibleCollections: Partial<Record<Collections, number>>;\n query: MarketplacePageQuery;\n}\n\nconst NpmPackagesFilters = ({\n handleSelectClear,\n handleSelectChange,\n npmPackageType,\n possibleCategories,\n possibleCollections,\n query,\n}: NpmPackagesFiltersProps) => {\n const [isVisible, setIsVisible] = React.useState(false);\n const buttonRef = React.useRef<HTMLButtonElement>(null!);\n const { formatMessage } = useIntl();\n\n const handleToggle = () => setIsVisible((prev) => !prev);\n\n const handleTagRemove = (tagToRemove: string, filterType: FilterTypes) => {\n const update = {\n [filterType]: (query[filterType] ?? []).filter((previousTag) => previousTag !== tagToRemove),\n };\n\n handleSelectChange(update);\n };\n\n return (\n <>\n <Box paddingTop={1} paddingBottom={1}>\n <ButtonToggle\n variant=\"tertiary\"\n ref={buttonRef}\n startIcon={<Filter />}\n onClick={handleToggle}\n size=\"S\"\n >\n {formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </ButtonToggle>\n {isVisible && (\n <Popover source={buttonRef} onDismiss={handleToggle} padding={3} spacing={4}>\n <FiltersFlex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <FilterSelect\n message={formatMessage({\n id: 'admin.pages.MarketPlacePage.filters.collections',\n defaultMessage: 'Collections',\n })}\n value={query?.collections || []}\n onChange={(newCollections) => {\n const update = { collections: newCollections };\n handleSelectChange(update);\n }}\n onClear={() => handleSelectClear('collections')}\n possibleFilters={possibleCollections}\n customizeContent={(values) =>\n formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.filters.collectionsSelected',\n defaultMessage:\n '{count, plural, =0 {No collections} one {# collection} other {# collections}} selected',\n },\n { count: values?.length ?? 0 }\n )\n }\n />\n {npmPackageType === 'plugin' && (\n <FilterSelect\n message={formatMessage({\n id: 'admin.pages.MarketPlacePage.filters.categories',\n defaultMessage: 'Categories',\n })}\n value={query?.categories || []}\n onChange={(newCategories) => {\n const update = { categories: newCategories };\n handleSelectChange(update);\n }}\n onClear={() => handleSelectClear('categories')}\n possibleFilters={possibleCategories}\n customizeContent={(values) =>\n formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.filters.categoriesSelected',\n defaultMessage:\n '{count, plural, =0 {No categories} one {# category} other {# categories}} selected',\n },\n { count: values?.length ?? 0 }\n )\n }\n />\n )}\n </FiltersFlex>\n </Popover>\n )}\n </Box>\n {query.collections?.map((collection) => (\n <Box key={collection} padding={1}>\n <Tag icon={<Cross />} onClick={() => handleTagRemove(collection, 'collections')}>\n {collection}\n </Tag>\n </Box>\n ))}\n {npmPackageType === 'plugin' &&\n query.categories?.map((category) => (\n <Box key={category} padding={1}>\n <Tag icon={<Cross />} onClick={() => handleTagRemove(category, 'categories')}>\n {category}\n </Tag>\n </Box>\n ))}\n </>\n );\n};\n\nconst ButtonToggle = styled(Button)`\n height: ${({ theme }) => theme.sizes.input.S};\n`;\n\nconst FiltersFlex = styled(Flex)`\n /* Hide the label, every input needs a label. */\n label {\n border: 0;\n clip: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * FilterSelect\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FilterSelectProps\n extends Pick<MultiSelectProps, 'customizeContent' | 'onClear' | 'onChange' | 'value'> {\n message: string;\n possibleFilters:\n | NpmPackagesFiltersProps['possibleCategories']\n | NpmPackagesFiltersProps['possibleCollections'];\n}\n\nconst FilterSelect = ({\n message,\n value,\n onChange,\n possibleFilters,\n onClear,\n customizeContent,\n}: FilterSelectProps) => {\n return (\n <MultiSelect\n data-testid={`${message}-button`}\n label={message}\n placeholder={message}\n size=\"M\"\n onChange={onChange}\n onClear={onClear}\n value={value}\n customizeContent={customizeContent}\n >\n {Object.entries(possibleFilters).map(([filterName, count]) => {\n return (\n <MultiSelectOption\n data-testid={`${filterName}-${count}`}\n key={filterName}\n value={filterName}\n >\n {`${filterName} (${count})`}\n </MultiSelectOption>\n );\n })}\n </MultiSelect>\n );\n};\n\nexport { NpmPackagesFilters };\nexport type { NpmPackagesFiltersProps };\n","import { Box, Flex, Tooltip, Typography, Divider, Button, LinkButton } from '@strapi/design-system';\nimport { CheckCircle, ExternalLink, Download, Star, Check, Duplicate } from '@strapi/icons';\nimport { GitHub } from '@strapi/icons/symbols';\nimport pluralize from 'pluralize';\nimport { useIntl } from 'react-intl';\nimport * as semver from 'semver';\nimport styled from 'styled-components';\n\nimport StrapiLogo from '../../../assets/images/logo-strapi-2022.svg';\nimport { AppInfoContextValue } from '../../../features/AppInfo';\nimport { useNotification } from '../../../features/Notifications';\nimport { useTracking } from '../../../features/Tracking';\nimport { useClipboard } from '../../../hooks/useClipboard';\n\nimport type { Plugin, Provider } from '../hooks/useMarketplaceData';\nimport type { NpmPackageType } from '../MarketplacePage';\n\n// Custom component to have an ellipsis after the 2nd line\nconst EllipsisText = styled(Typography)`\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n overflow: hidden;\n`;\n\ninterface NpmPackageCardProps extends Pick<AppInfoContextValue, 'useYarn'> {\n npmPackage: Plugin | Provider;\n isInstalled: boolean;\n isInDevelopmentMode: AppInfoContextValue['autoReload'];\n npmPackageType: NpmPackageType;\n strapiAppVersion: AppInfoContextValue['strapiVersion'];\n}\n\nconst NpmPackageCard = ({\n npmPackage,\n isInstalled,\n useYarn,\n isInDevelopmentMode,\n npmPackageType,\n strapiAppVersion,\n}: NpmPackageCardProps) => {\n const { attributes } = npmPackage;\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const commandToCopy = useYarn\n ? `yarn add ${attributes.npmPackageName}`\n : `npm install ${attributes.npmPackageName}`;\n\n const madeByStrapiMessage = formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.tooltip.madeByStrapi',\n defaultMessage: 'Made by Strapi',\n });\n\n const npmPackageHref = `https://market.strapi.io/${pluralize.plural(npmPackageType)}/${\n attributes.slug\n }`;\n\n return (\n <Flex\n direction=\"column\"\n justifyContent=\"space-between\"\n paddingTop={4}\n paddingRight={4}\n paddingBottom={4}\n paddingLeft={4}\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n height=\"100%\"\n alignItems=\"normal\"\n data-testid=\"npm-package-card\"\n >\n <Box>\n <Flex direction=\"row\" justifyContent=\"space-between\" alignItems=\"flex-start\">\n <Box\n as=\"img\"\n src={attributes.logo.url}\n alt={`${attributes.name} logo`}\n hasRadius\n width={11}\n height={11}\n />\n <PackageStats\n githubStars={attributes.githubStars}\n npmDownloads={attributes.npmDownloads}\n npmPackageType={npmPackageType}\n />\n </Flex>\n <Box paddingTop={4}>\n <Typography as=\"h3\" variant=\"delta\">\n <Flex\n alignItems=\"center\"\n gap={attributes.validated && !attributes.madeByStrapi ? 2 : 1}\n >\n {attributes.name}\n {attributes.validated && !attributes.madeByStrapi && (\n <Tooltip\n description={formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.tooltip.verified',\n defaultMessage: 'Plugin verified by Strapi',\n })}\n >\n <CheckCircle fill=\"success600\" />\n </Tooltip>\n )}\n {attributes.madeByStrapi && (\n <Tooltip description={madeByStrapiMessage}>\n <Box\n as=\"img\"\n src={StrapiLogo}\n alt={madeByStrapiMessage}\n width={6}\n height=\"auto\"\n />\n </Tooltip>\n )}\n </Flex>\n </Typography>\n </Box>\n <Box paddingTop={2}>\n <EllipsisText as=\"p\" variant=\"omega\" textColor=\"neutral600\">\n {attributes.description}\n </EllipsisText>\n </Box>\n </Box>\n\n <Flex gap={2} style={{ alignSelf: 'flex-end' }} paddingTop={6}>\n <LinkButton\n size=\"S\"\n href={npmPackageHref}\n isExternal\n endIcon={<ExternalLink />}\n aria-label={formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.plugin.info.label',\n defaultMessage: 'Learn more about {pluginName}',\n },\n { pluginName: attributes.name }\n )}\n variant=\"tertiary\"\n onClick={() => trackUsage('didPluginLearnMore')}\n >\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.info.text',\n defaultMessage: 'More',\n })}\n </LinkButton>\n <InstallPluginButton\n isInstalled={isInstalled}\n isInDevelopmentMode={isInDevelopmentMode}\n commandToCopy={commandToCopy}\n strapiAppVersion={strapiAppVersion}\n strapiPeerDepVersion={attributes.strapiVersion}\n pluginName={attributes.name}\n />\n </Flex>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * InstallPluginButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface InstallPluginButtonProps\n extends Pick<NpmPackageCardProps, 'isInstalled' | 'isInDevelopmentMode' | 'strapiAppVersion'> {\n commandToCopy: string;\n pluginName: string;\n strapiPeerDepVersion?: string;\n}\n\nconst InstallPluginButton = ({\n isInstalled,\n isInDevelopmentMode,\n commandToCopy,\n strapiAppVersion,\n strapiPeerDepVersion,\n pluginName,\n}: InstallPluginButtonProps) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { copy } = useClipboard();\n\n const handleCopy = async () => {\n const didCopy = await copy(commandToCopy);\n\n if (didCopy) {\n trackUsage('willInstallPlugin');\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'admin.pages.MarketPlacePage.plugin.copy.success' }),\n });\n }\n };\n\n // Already installed\n if (isInstalled) {\n return (\n <Flex gap={2} paddingLeft={4}>\n <Check width=\"1.2rem\" height=\"1.2rem\" color=\"success600\" />\n <Typography variant=\"omega\" textColor=\"success600\" fontWeight=\"bold\">\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.installed',\n defaultMessage: 'Installed',\n })}\n </Typography>\n </Flex>\n );\n }\n\n // In development, show install button\n if (isInDevelopmentMode) {\n return (\n <CardButton\n strapiAppVersion={strapiAppVersion}\n strapiPeerDepVersion={strapiPeerDepVersion}\n handleCopy={handleCopy}\n pluginName={pluginName}\n />\n );\n }\n\n // Not in development and plugin not installed already. Show nothing\n return null;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CardButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CardButtonProps\n extends Pick<NpmPackageCardProps, 'strapiAppVersion'>,\n Pick<InstallPluginButtonProps, 'strapiPeerDepVersion' | 'pluginName'> {\n handleCopy: () => void;\n}\n\nconst CardButton = ({\n strapiPeerDepVersion,\n strapiAppVersion,\n handleCopy,\n pluginName,\n}: CardButtonProps) => {\n const { formatMessage } = useIntl();\n const versionRange = semver.validRange(strapiPeerDepVersion);\n const isCompatible = semver.satisfies(strapiAppVersion ?? '', versionRange ?? '');\n\n const installMessage = formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.copy',\n defaultMessage: 'Copy install command',\n });\n\n // Only plugins receive a strapiAppVersion\n if (strapiAppVersion) {\n if (!versionRange || !isCompatible) {\n return (\n <Tooltip\n data-testid={`tooltip-${pluginName}`}\n description={\n !versionRange\n ? formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.plugin.version.null',\n defaultMessage:\n 'Unable to verify compatibility with your Strapi version: \"{strapiAppVersion}\"',\n },\n { strapiAppVersion }\n )\n : formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.plugin.version',\n defaultMessage:\n 'Update your Strapi version: \"{strapiAppVersion}\" to: \"{versionRange}\"',\n },\n {\n strapiAppVersion,\n versionRange,\n }\n )\n }\n >\n <Button\n size=\"S\"\n startIcon={<Duplicate />}\n variant=\"secondary\"\n onClick={handleCopy}\n disabled={!isCompatible}\n >\n {installMessage}\n </Button>\n </Tooltip>\n );\n }\n }\n\n return (\n <Button size=\"S\" startIcon={<Duplicate />} variant=\"secondary\" onClick={handleCopy}>\n {installMessage}\n </Button>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PackageStats\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PackageStatsProps {\n githubStars?: number;\n npmDownloads?: number;\n npmPackageType: NpmPackageType;\n}\n\nconst PackageStats = ({ githubStars = 0, npmDownloads = 0, npmPackageType }: PackageStatsProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex gap={1}>\n {!!githubStars && (\n <>\n <GitHub height=\"1.2rem\" width=\"1.2rem\" aria-hidden />\n <Star height=\"1.2rem\" width=\"1.2rem\" fill=\"warning500\" aria-hidden />\n <p\n aria-label={formatMessage(\n {\n id: `admin.pages.MarketPlacePage.${npmPackageType}.githubStars`,\n defaultMessage: `This {package} was starred {starsCount} on GitHub`,\n },\n {\n starsCount: githubStars,\n package: npmPackageType,\n }\n )}\n >\n <Typography variant=\"pi\" textColor=\"neutral800\">\n {githubStars}\n </Typography>\n </p>\n <VerticalDivider unsetMargin={false} />\n </>\n )}\n <Download height=\"1.2rem\" width=\"1.2rem\" aria-hidden />\n <p\n aria-label={formatMessage(\n {\n id: `admin.pages.MarketPlacePage.${npmPackageType}.downloads`,\n defaultMessage: `This {package} has {downloadsCount} weekly downloads`,\n },\n {\n downloadsCount: npmDownloads,\n package: npmPackageType,\n }\n )}\n >\n <Typography variant=\"pi\" textColor=\"neutral800\">\n {npmDownloads}\n </Typography>\n </p>\n </Flex>\n );\n};\n\nconst VerticalDivider = styled(Divider)`\n width: 1.2rem;\n transform: rotate(90deg);\n`;\n\nexport { NpmPackageCard };\nexport type { NpmPackageCardProps };\n","import { Box, Flex, Grid, GridItem, GridLayout, Typography } from '@strapi/design-system';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { Page } from '../../../components/PageHelpers';\nimport { AppInfoContextValue } from '../../../features/AppInfo';\n\nimport { NpmPackageCard, NpmPackageCardProps } from './NpmPackageCard';\n\nimport type { Plugin, Provider } from '../hooks/useMarketplaceData';\n\ninterface NpmPackagesGridProps extends Pick<NpmPackageCardProps, 'npmPackageType' | 'useYarn'> {\n debouncedSearch: string;\n installedPackageNames: string[];\n isInDevelopmentMode: AppInfoContextValue['autoReload'];\n npmPackages?: Array<Plugin | Provider>;\n status: 'idle' | 'loading' | 'error' | 'success';\n strapiAppVersion?: NpmPackageCardProps['strapiAppVersion'];\n}\n\nconst NpmPackagesGrid = ({\n status,\n npmPackages = [],\n installedPackageNames = [],\n useYarn,\n isInDevelopmentMode,\n npmPackageType,\n strapiAppVersion,\n debouncedSearch,\n}: NpmPackagesGridProps) => {\n const { formatMessage } = useIntl();\n\n if (status === 'error') {\n return <Page.Error />;\n }\n\n if (status === 'loading') {\n return <Page.Loading />;\n }\n\n const emptySearchMessage = formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.search.empty',\n defaultMessage: 'No result for \"{target}\"',\n },\n { target: debouncedSearch }\n );\n\n if (npmPackages.length === 0) {\n return (\n <Box position=\"relative\">\n <GridLayout>\n {Array(12)\n .fill(null)\n .map((_, idx) => (\n <EmptyPluginCard key={idx} height=\"234px\" hasRadius />\n ))}\n </GridLayout>\n <Box position=\"absolute\" top={11} width=\"100%\">\n <Flex alignItems=\"center\" justifyContent=\"center\" direction=\"column\">\n <EmptyDocuments width=\"160px\" height=\"88px\" />\n <Box paddingTop={6}>\n <Typography variant=\"delta\" as=\"p\" textColor=\"neutral600\">\n {emptySearchMessage}\n </Typography>\n </Box>\n </Flex>\n </Box>\n </Box>\n );\n }\n\n return (\n <Grid gap={4}>\n {npmPackages.map((npmPackage) => (\n <GridItem col={4} s={6} xs={12} style={{ height: '100%' }} key={npmPackage.id}>\n <NpmPackageCard\n npmPackage={npmPackage}\n isInstalled={installedPackageNames.includes(npmPackage.attributes.npmPackageName)}\n useYarn={useYarn}\n isInDevelopmentMode={isInDevelopmentMode}\n npmPackageType={npmPackageType}\n strapiAppVersion={strapiAppVersion}\n />\n </GridItem>\n ))}\n </Grid>\n );\n};\n\nconst EmptyPluginCard = styled(Box)`\n background: ${({ theme }) =>\n `linear-gradient(180deg, rgba(234, 234, 239, 0) 0%, ${theme.colors.neutral150} 100%)`};\n opacity: 0.33;\n`;\n\nexport { NpmPackagesGrid };\n","import { HeaderLayout, LinkButton } from '@strapi/design-system';\nimport { Upload } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useTracking } from '../../../features/Tracking';\n\nimport type { NpmPackageType } from '../MarketplacePage';\n\ninterface PageHeaderProps {\n isOnline?: boolean;\n npmPackageType?: NpmPackageType;\n}\n\nconst PageHeader = ({ isOnline, npmPackageType = 'plugin' }: PageHeaderProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const tracking = npmPackageType === 'provider' ? 'didSubmitProvider' : 'didSubmitPlugin';\n\n return (\n <HeaderLayout\n title={formatMessage({\n id: 'global.marketplace',\n defaultMessage: 'Marketplace',\n })}\n subtitle={formatMessage({\n id: 'admin.pages.MarketPlacePage.subtitle',\n defaultMessage: 'Get more out of Strapi',\n })}\n primaryAction={\n isOnline && (\n <LinkButton\n startIcon={<Upload />}\n variant=\"tertiary\"\n href={`https://market.strapi.io/submit-${npmPackageType}`}\n onClick={() => trackUsage(tracking)}\n isExternal\n >\n {formatMessage({\n id: `admin.pages.MarketPlacePage.submit.${npmPackageType}.link`,\n defaultMessage: `Submit ${npmPackageType}`,\n })}\n </LinkButton>\n )\n }\n />\n );\n};\n\nexport { PageHeader };\nexport type { PageHeaderProps };\n","import { Box, Flex, Layout, Main, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { PageHeader } from './PageHeader';\n\nconst OfflineLayout = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Layout>\n <Main>\n <PageHeader />\n <Flex\n width=\"100%\"\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n paddingTop={`12rem`}\n >\n <Box paddingBottom={2}>\n <Typography textColor=\"neutral700\" variant=\"alpha\">\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.offline.title',\n defaultMessage: 'You are offline',\n })}\n </Typography>\n </Box>\n <Box paddingBottom={6}>\n <Typography textColor=\"neutral700\" variant=\"epsilon\">\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.offline.subtitle',\n defaultMessage: 'You need to be connected to the Internet to access Strapi Market.',\n })}\n </Typography>\n </Box>\n <svg\n width=\"88\"\n height=\"88\"\n viewBox=\"0 0 88 88\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect x=\".5\" y=\".5\" width=\"87\" height=\"87\" rx=\"43.5\" fill=\"#F0F0FF\" />\n <path\n d=\"M34 39.3h-4c-2.6 0-4.7 1-6.6 2.8a9 9 0 0 0-2.7 6.6 9 9 0 0 0 2.7 6.6A9 9 0 0 0 30 58h22.8L34 39.3Zm-11-11 3-3 39 39-3 3-4.7-4.6H30a13.8 13.8 0 0 1-14-14c0-3.8 1.3-7 4-9.7 2.6-2.7 5.7-4.2 9.5-4.3L23 28.2Zm38.2 11.1c3 .2 5.5 1.5 7.6 3.7A11 11 0 0 1 72 51c0 4-1.6 7.2-5 9.5l-3.3-3.4a6.5 6.5 0 0 0 3.6-6.1c0-1.9-.7-3.5-2-5-1.5-1.3-3.1-2-5-2h-3.5v-1.2c0-3.6-1.2-6.6-3.7-9a13 13 0 0 0-15-2.3L34.6 28a17 17 0 0 1 20.3 1.5c3.5 2.7 5.5 6 6.3 10Z\"\n fill=\"#4945FF\"\n />\n <rect x=\".5\" y=\".5\" width=\"87\" height=\"87\" rx=\"43.5\" stroke=\"#D9D8FF\" />\n </svg>\n </Flex>\n </Main>\n </Layout>\n );\n};\n\nexport { OfflineLayout };\n","import { Box, SingleSelectOption, SingleSelect } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nconst SORT_TYPES = {\n 'name:asc': {\n selected: {\n id: 'admin.pages.MarketPlacePage.sort.alphabetical.selected',\n defaultMessage: 'Sort by alphabetical order',\n },\n option: {\n id: 'admin.pages.MarketPlacePage.sort.alphabetical',\n defaultMessage: 'Alphabetical order',\n },\n },\n 'submissionDate:desc': {\n selected: {\n id: 'admin.pages.MarketPlacePage.sort.newest.selected',\n defaultMessage: 'Sort by newest',\n },\n option: {\n id: 'admin.pages.MarketPlacePage.sort.newest',\n defaultMessage: 'Newest',\n },\n },\n 'githubStars:desc': {\n selected: {\n id: 'admin.pages.MarketPlacePage.sort.githubStars.selected',\n defaultMessage: 'Sort by GitHub stars',\n },\n option: {\n id: 'admin.pages.MarketPlacePage.sort.githubStars',\n defaultMessage: 'Number of GitHub stars',\n },\n },\n 'npmDownloads:desc': {\n selected: {\n id: 'admin.pages.MarketPlacePage.sort.npmDownloads.selected',\n defaultMessage: 'Sort by npm downloads',\n },\n option: {\n id: 'admin.pages.MarketPlacePage.sort.npmDownloads',\n defaultMessage: 'Number of downloads',\n },\n },\n} as const;\n\ninterface SortSelectProps {\n sortQuery: keyof typeof SORT_TYPES;\n handleSelectChange: (payload: { sort: string }) => void;\n}\n\nconst SortSelect = ({ sortQuery, handleSelectChange }: SortSelectProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <SelectWrapper>\n <SingleSelect\n size=\"S\"\n id=\"sort-by-select\"\n value={sortQuery}\n customizeContent={() => formatMessage(SORT_TYPES[sortQuery].selected)}\n onChange={(sortName) => {\n // @ts-expect-error – in V2 design-system we'll only ever return strings.\n handleSelectChange({ sort: sortName });\n }}\n label={formatMessage({\n id: 'admin.pages.MarketPlacePage.sort.label',\n defaultMessage: 'Sort by',\n })}\n >\n {Object.entries(SORT_TYPES).map(([sortName, messages]) => {\n return (\n <SingleSelectOption key={sortName} value={sortName}>\n {formatMessage(messages.option)}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </SelectWrapper>\n );\n};\n\nconst SelectWrapper = styled(Box)`\n font-weight: ${({ theme }) => theme.fontWeights.semiBold};\n\n span {\n font-size: ${({ theme }) => theme.fontSizes[1]};\n }\n\n /* Hide the label, every input needs a label. */\n label {\n border: 0;\n clip: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n }\n`;\n\nexport { SortSelect };\nexport type { SortSelectProps };\n","import { useNotifyAT } from '@strapi/design-system';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useQuery } from 'react-query';\n\nimport { useNotification } from '../../../features/Notifications';\n\nimport type { MarketplacePageQuery, NpmPackageType, TabQuery } from '../MarketplacePage';\n\nconst MARKETPLACE_API_URL = 'https://market-api.strapi.io';\n\ninterface UseMarketplaceDataParams {\n npmPackageType: NpmPackageType;\n debouncedSearch: string;\n query?: MarketplacePageQuery;\n tabQuery: TabQuery;\n}\n\ntype Collections =\n | 'Verified'\n | 'Made by the community'\n | 'Made by Strapi'\n | 'Made by official partners';\n\ntype Categories = 'Custom fields' | 'Deployment' | 'Monitoring';\n\ntype FilterTypes = 'categories' | 'collections';\n\ninterface Plugin {\n id: string;\n attributes: {\n name: string;\n description: string;\n slug: string;\n npmPackageName: string;\n npmPackageUrl: string;\n npmDownloads: number;\n repositoryUrl: string;\n githubStars: number;\n logo: {\n url: string;\n };\n developerName: string;\n validated: boolean;\n madeByStrapi: boolean;\n strapiCompatibility: string;\n submissionDate: string;\n collections: Collections[];\n categories: Categories[];\n strapiVersion: string;\n screenshots: Array<{\n url: string;\n }>;\n };\n}\n\ninterface Provider {\n id: string;\n attributes: {\n name: string;\n description: string;\n slug: string;\n npmPackageName: string;\n npmPackageUrl: string;\n npmDownloads: number;\n repositoryUrl: string;\n githubStars: number;\n pluginName: string;\n logo: {\n url: string;\n };\n developerName: string;\n validated: boolean;\n madeByStrapi: boolean;\n strapiCompatibility: string;\n strapiVersion?: never;\n submissionDate: string;\n collections: Collections[];\n };\n}\n\ninterface MarketplaceMeta {\n collections: Record<Collections, number>;\n pagination: {\n page: number;\n pageSize: number;\n pageCount: number;\n total: number;\n };\n}\n\ninterface MarketplaceResponse<TData extends Plugin | Provider> {\n data: TData[];\n meta: TData extends Provider\n ? MarketplaceMeta\n : MarketplaceMeta & { categories: Record<Categories, number> };\n}\n\nfunction useMarketplaceData({\n npmPackageType,\n debouncedSearch,\n query,\n tabQuery,\n}: UseMarketplaceDataParams) {\n const { notifyStatus } = useNotifyAT();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const marketplaceTitle = formatMessage({\n id: 'global.marketplace',\n defaultMessage: 'Marketplace',\n });\n\n const notifyMarketplaceLoad = () => {\n notifyStatus(\n formatMessage(\n {\n id: 'app.utils.notify.data-loaded',\n defaultMessage: 'The {target} has loaded',\n },\n { target: marketplaceTitle }\n )\n );\n };\n\n const paginationParams = {\n page: query?.page || 1,\n pageSize: query?.pageSize || 24,\n };\n\n const pluginParams = {\n ...tabQuery.plugin,\n pagination: paginationParams,\n search: debouncedSearch,\n };\n\n const { data: pluginsResponse, status: pluginsStatus } = useQuery(\n ['marketplace', 'plugins', pluginParams],\n async () => {\n try {\n const queryString = qs.stringify(pluginParams);\n const res = await fetch(`${MARKETPLACE_API_URL}/plugins?${queryString}`);\n\n if (!res.ok) {\n throw new Error('Failed to fetch marketplace plugins.');\n }\n\n const data = (await res.json()) as MarketplaceResponse<Plugin>;\n\n return data;\n } catch (error) {\n // silence\n }\n\n return null;\n },\n {\n onSuccess() {\n notifyMarketplaceLoad();\n },\n onError() {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n },\n }\n );\n\n const providerParams = {\n ...tabQuery.provider,\n pagination: paginationParams,\n search: debouncedSearch,\n };\n\n const { data: providersResponse, status: providersStatus } = useQuery(\n ['marketplace', 'providers', providerParams],\n async () => {\n const queryString = qs.stringify(providerParams);\n const res = await fetch(`${MARKETPLACE_API_URL}/providers?${queryString}`);\n\n if (!res.ok) {\n throw new Error('Failed to fetch marketplace providers.');\n }\n\n const data = (await res.json()) as MarketplaceResponse<Provider>;\n\n return data;\n },\n {\n onSuccess() {\n notifyMarketplaceLoad();\n },\n onError() {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n },\n }\n );\n\n const npmPackageTypeResponse = npmPackageType === 'plugin' ? pluginsResponse : providersResponse;\n\n const possibleCollections = npmPackageTypeResponse?.meta.collections ?? {};\n const possibleCategories = pluginsResponse?.meta.categories ?? {};\n\n const { pagination } = npmPackageTypeResponse?.meta ?? {};\n\n return {\n pluginsResponse,\n providersResponse,\n pluginsStatus,\n providersStatus,\n possibleCollections,\n possibleCategories,\n pagination,\n };\n}\n\nexport { useMarketplaceData };\nexport type {\n MarketplaceResponse,\n Plugin,\n Provider,\n MarketplaceMeta,\n Collections,\n Categories,\n FilterTypes,\n UseMarketplaceDataParams,\n};\n","import * as React from 'react';\n\n/**\n * For more details about this hook see:\n * https://www.30secondsofcode.org/react/s/use-navigator-on-line\n */\nexport const useNavigatorOnline = (): boolean => {\n const onlineStatus =\n typeof navigator !== 'undefined' && typeof navigator.onLine === 'boolean'\n ? navigator.onLine\n : true;\n\n const [isOnline, setIsOnline] = React.useState(onlineStatus);\n\n const setOnline = () => setIsOnline(true);\n const setOffline = () => setIsOnline(false);\n\n React.useEffect(() => {\n window.addEventListener('online', setOnline);\n window.addEventListener('offline', setOffline);\n\n return () => {\n window.removeEventListener('online', setOnline);\n window.removeEventListener('offline', setOffline);\n };\n }, []);\n\n return isOnline;\n};\n","import * as React from 'react';\n\nimport {\n Box,\n ContentLayout,\n Flex,\n Layout,\n Searchbar,\n Tab,\n TabGroup,\n TabPanel,\n TabPanels,\n Tabs,\n} from '@strapi/design-system';\nimport { ExternalLink } from '@strapi/icons';\nimport { GlassesSquare } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\n\nimport { ContentBox } from '../../components/ContentBox';\nimport { Page } from '../../components/PageHelpers';\nimport { Pagination } from '../../components/Pagination';\nimport { useTypedSelector } from '../../core/store/hooks';\nimport { useAppInfo } from '../../features/AppInfo';\nimport { useNotification } from '../../features/Notifications';\nimport { useTracking } from '../../features/Tracking';\nimport { useDebounce } from '../../hooks/useDebounce';\nimport { useQueryParams } from '../../hooks/useQueryParams';\n\nimport { NpmPackagesFilters } from './components/NpmPackagesFilters';\nimport { NpmPackagesGrid } from './components/NpmPackagesGrid';\nimport { OfflineLayout } from './components/OfflineLayout';\nimport { PageHeader } from './components/PageHeader';\nimport { SortSelect, SortSelectProps } from './components/SortSelect';\nimport { FilterTypes, useMarketplaceData } from './hooks/useMarketplaceData';\nimport { useNavigatorOnline } from './hooks/useNavigatorOnline';\n\ntype NpmPackageType = 'plugin' | 'provider';\n\ninterface MarketplacePageQuery {\n collections?: string[];\n categories?: string[];\n npmPackageType?: NpmPackageType;\n page?: number;\n pageSize?: number;\n search?: string;\n sort?: SortSelectProps['sortQuery'];\n}\n\ninterface TabQuery {\n plugin: MarketplacePageQuery;\n provider: MarketplacePageQuery;\n}\n\nconst MarketplacePage = () => {\n const tabRef = React.useRef<any>(null);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const [{ query }, setQuery] = useQueryParams<MarketplacePageQuery>();\n const debouncedSearch = useDebounce(query?.search, 500) || '';\n\n const {\n autoReload: isInDevelopmentMode,\n dependencies,\n useYarn,\n strapiVersion,\n } = useAppInfo('MarketplacePage', (state) => state);\n const isOnline = useNavigatorOnline();\n\n const npmPackageType = query?.npmPackageType || 'plugin';\n\n const [tabQuery, setTabQuery] = React.useState<TabQuery>({\n plugin: npmPackageType === 'plugin' ? { ...query } : {},\n provider: npmPackageType === 'provider' ? { ...query } : {},\n });\n\n React.useEffect(() => {\n trackUsage('didGoToMarketplace');\n }, [trackUsage]);\n\n React.useEffect(() => {\n if (!isInDevelopmentMode) {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: 'admin.pages.MarketPlacePage.production',\n defaultMessage: 'Manage plugins from the development environment',\n }),\n });\n }\n }, [toggleNotification, isInDevelopmentMode, formatMessage]);\n\n const {\n pluginsResponse,\n providersResponse,\n pluginsStatus,\n providersStatus,\n possibleCollections,\n possibleCategories,\n pagination,\n } = useMarketplaceData({ npmPackageType, debouncedSearch, query, tabQuery });\n\n const indexOfNpmPackageType = ['plugin', 'provider'].indexOf(npmPackageType);\n\n // TODO: Replace this solution with v2 of the Design System\n // Check if the active tab index changes and call the handler of the ref to update the tab group component\n React.useEffect(() => {\n if (tabRef.current) {\n tabRef.current._handlers.setSelectedTabIndex(indexOfNpmPackageType);\n }\n }, [indexOfNpmPackageType]);\n\n if (!isOnline) {\n return <OfflineLayout />;\n }\n\n const handleTabChange = (selected: number) => {\n const selectedTab = selected === 0 ? 'plugin' : 'provider';\n const hasTabQuery = tabQuery[selectedTab] && Object.keys(tabQuery[selectedTab]).length;\n\n if (hasTabQuery) {\n setQuery({\n // Keep filters and search\n ...tabQuery[selectedTab],\n search: query?.search || '',\n // Set tab and reset page\n npmPackageType: selectedTab,\n page: 1,\n });\n } else {\n setQuery({\n // Set tab\n npmPackageType: selectedTab,\n // Clear filters\n collections: [],\n categories: [],\n sort: 'name:asc',\n page: 1,\n // Keep search\n search: query?.search || '',\n });\n }\n };\n\n const handleSelectChange = (update: Partial<MarketplacePageQuery>) => {\n setQuery({ ...update, page: 1 });\n setTabQuery((prev) => ({\n ...prev,\n [npmPackageType]: { ...prev[npmPackageType], ...update },\n }));\n };\n\n const handleSelectClear = (filterType: FilterTypes) => {\n setQuery({ [filterType]: [], page: undefined }, 'remove');\n setTabQuery((prev) => ({ ...prev, [npmPackageType]: {} }));\n };\n\n const handleSortSelectChange: SortSelectProps['handleSelectChange'] = ({ sort }) =>\n // @ts-expect-error - this is a narrowing issue.\n handleSelectChange({ sort });\n\n // Check if plugins and providers are installed already\n const installedPackageNames = Object.keys(dependencies ?? {});\n\n return (\n <Layout>\n <Page.Main>\n <Page.Title>\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.head',\n defaultMessage: 'Marketplace - Plugins',\n })}\n </Page.Title>\n <PageHeader isOnline={isOnline} npmPackageType={npmPackageType} />\n <ContentLayout>\n <TabGroup\n label={formatMessage({\n id: 'admin.pages.MarketPlacePage.tab-group.label',\n defaultMessage: 'Plugins and Providers for Strapi',\n })}\n id=\"tabs\"\n variant=\"simple\"\n initialSelectedTabIndex={indexOfNpmPackageType}\n onTabChange={handleTabChange}\n ref={tabRef}\n >\n <Flex justifyContent=\"space-between\" paddingBottom={4}>\n <Tabs>\n <Tab>\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.plugins',\n defaultMessage: 'Plugins',\n })}{' '}\n {pluginsResponse ? `(${pluginsResponse.meta.pagination.total})` : '...'}\n </Tab>\n <Tab>\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.providers',\n defaultMessage: 'Providers',\n })}{' '}\n {providersResponse ? `(${providersResponse.meta.pagination.total})` : '...'}\n </Tab>\n </Tabs>\n <Box width=\"25%\">\n <Searchbar\n name=\"searchbar\"\n onClear={() => setQuery({ search: '', page: 1 })}\n value={query?.search}\n onChange={(e) => setQuery({ search: e.target.value, page: 1 })}\n clearLabel={formatMessage({\n id: 'admin.pages.MarketPlacePage.search.clear',\n defaultMessage: 'Clear the search',\n })}\n placeholder={formatMessage({\n id: 'admin.pages.MarketPlacePage.search.placeholder',\n defaultMessage: 'Search',\n })}\n >\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.search.placeholder',\n defaultMessage: 'Search',\n })}\n </Searchbar>\n </Box>\n </Flex>\n <Flex paddingBottom={4} gap={2}>\n <SortSelect\n sortQuery={query?.sort || 'name:asc'}\n handleSelectChange={handleSortSelectChange}\n />\n <NpmPackagesFilters\n npmPackageType={npmPackageType}\n possibleCollections={possibleCollections}\n possibleCategories={possibleCategories}\n query={query || {}}\n handleSelectChange={handleSelectChange}\n handleSelectClear={handleSelectClear}\n />\n </Flex>\n\n <TabPanels>\n {/* Plugins panel */}\n <TabPanel>\n <NpmPackagesGrid\n npmPackages={pluginsResponse?.data}\n status={pluginsStatus}\n installedPackageNames={installedPackageNames}\n useYarn={useYarn}\n isInDevelopmentMode={isInDevelopmentMode}\n npmPackageType=\"plugin\"\n strapiAppVersion={strapiVersion}\n debouncedSearch={debouncedSearch}\n />\n </TabPanel>\n {/* Providers panel */}\n <TabPanel>\n <NpmPackagesGrid\n npmPackages={providersResponse?.data}\n status={providersStatus}\n installedPackageNames={installedPackageNames}\n useYarn={useYarn}\n isInDevelopmentMode={isInDevelopmentMode}\n npmPackageType=\"provider\"\n debouncedSearch={debouncedSearch}\n />\n </TabPanel>\n </TabPanels>\n </TabGroup>\n <Pagination.Root {...pagination} defaultPageSize={24}>\n <Pagination.PageSize options={['12', '24', '50', '100']} />\n <Pagination.Links />\n </Pagination.Root>\n <Box paddingTop={8}>\n <a\n href=\"https://strapi.canny.io/plugin-requests\"\n target=\"_blank\"\n rel=\"noopener noreferrer nofollow\"\n style={{ textDecoration: 'none' }}\n onClick={() => trackUsage('didMissMarketplacePlugin')}\n >\n <ContentBox\n title={formatMessage({\n id: 'admin.pages.MarketPlacePage.missingPlugin.title',\n defaultMessage: 'Documentation',\n })}\n subtitle={formatMessage({\n id: 'admin.pages.MarketPlacePage.missingPlugin.description',\n defaultMessage:\n \"Tell us what plugin you are looking for and we'll let our community plugin developers know in case they are in search for inspiration!\",\n })}\n icon={<GlassesSquare />}\n iconBackground=\"alternative100\"\n endAction={\n <ExternalLink\n fill=\"neutral600\"\n width=\"1.2rem\"\n height=\"1.2rem\"\n style={{ marginLeft: '0.8rem' }}\n />\n }\n />\n </a>\n </Box>\n </ContentLayout>\n </Page.Main>\n </Layout>\n );\n};\n\nconst ProtectedMarketplacePage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.marketplace?.main);\n\n return (\n <Page.Protect permissions={permissions}>\n <MarketplacePage />\n </Page.Protect>\n );\n};\n\nexport { MarketplacePage, ProtectedMarketplacePage };\nexport type { NpmPackageType, MarketplacePageQuery, TabQuery };\n"],"names":[],"mappings":"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"}
|
|
@@ -6,12 +6,12 @@ const jsxRuntime = require('react/jsx-runtime');
|
|
|
6
6
|
const React = require('react');
|
|
7
7
|
const designSystem = require('@strapi/design-system');
|
|
8
8
|
const icons = require('@strapi/icons');
|
|
9
|
+
const symbols = require('@strapi/icons/symbols');
|
|
9
10
|
const reactIntl = require('react-intl');
|
|
10
|
-
const ContentBox = require('./ContentBox-
|
|
11
|
-
const rbac = require('./rbac-
|
|
12
|
-
const index = require('./index-
|
|
11
|
+
const ContentBox = require('./ContentBox-Mzcpnn32.js');
|
|
12
|
+
const rbac = require('./rbac-xgYdpUSq.js');
|
|
13
|
+
const index = require('./index-FJLgZ-Wg.js');
|
|
13
14
|
const styled = require('styled-components');
|
|
14
|
-
const v2 = require('@strapi/design-system/v2');
|
|
15
15
|
const pluralize = require('pluralize');
|
|
16
16
|
const semver = require('semver');
|
|
17
17
|
const qs = require('qs');
|
|
@@ -251,35 +251,41 @@ const NpmPackageCard = ({
|
|
|
251
251
|
}
|
|
252
252
|
)
|
|
253
253
|
] }),
|
|
254
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingTop: 4, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { as: "h3", variant: "delta", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
254
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingTop: 4, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { as: "h3", variant: "delta", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
255
|
+
designSystem.Flex,
|
|
256
|
+
{
|
|
257
|
+
alignItems: "center",
|
|
258
|
+
gap: attributes.validated && !attributes.madeByStrapi ? 2 : 1,
|
|
259
|
+
children: [
|
|
260
|
+
attributes.name,
|
|
261
|
+
attributes.validated && !attributes.madeByStrapi && /* @__PURE__ */ jsxRuntime.jsx(
|
|
262
|
+
designSystem.Tooltip,
|
|
263
|
+
{
|
|
264
|
+
description: formatMessage({
|
|
265
|
+
id: "admin.pages.MarketPlacePage.plugin.tooltip.verified",
|
|
266
|
+
defaultMessage: "Plugin verified by Strapi"
|
|
267
|
+
}),
|
|
268
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(icons.CheckCircle, { fill: "success600" })
|
|
269
|
+
}
|
|
270
|
+
),
|
|
271
|
+
attributes.madeByStrapi && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tooltip, { description: madeByStrapiMessage, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
272
|
+
designSystem.Box,
|
|
273
|
+
{
|
|
274
|
+
as: "img",
|
|
275
|
+
src: index.StrapiLogo,
|
|
276
|
+
alt: madeByStrapiMessage,
|
|
277
|
+
width: 6,
|
|
278
|
+
height: "auto"
|
|
279
|
+
}
|
|
280
|
+
) })
|
|
281
|
+
]
|
|
282
|
+
}
|
|
283
|
+
) }) }),
|
|
278
284
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingTop: 2, children: /* @__PURE__ */ jsxRuntime.jsx(EllipsisText, { as: "p", variant: "omega", textColor: "neutral600", children: attributes.description }) })
|
|
279
285
|
] }),
|
|
280
286
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, style: { alignSelf: "flex-end" }, paddingTop: 6, children: [
|
|
281
287
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
282
|
-
|
|
288
|
+
designSystem.LinkButton,
|
|
283
289
|
{
|
|
284
290
|
size: "S",
|
|
285
291
|
href: npmPackageHref,
|
|
@@ -339,8 +345,8 @@ const InstallPluginButton = ({
|
|
|
339
345
|
}
|
|
340
346
|
};
|
|
341
347
|
if (isInstalled) {
|
|
342
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.
|
|
343
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
348
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, paddingLeft: 4, children: [
|
|
349
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.Check, { width: "1.2rem", height: "1.2rem", color: "success600" }),
|
|
344
350
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "success600", fontWeight: "bold", children: formatMessage({
|
|
345
351
|
id: "admin.pages.MarketPlacePage.plugin.installed",
|
|
346
352
|
defaultMessage: "Installed"
|
|
@@ -416,17 +422,8 @@ const PackageStats = ({ githubStars = 0, npmDownloads = 0, npmPackageType }) =>
|
|
|
416
422
|
const { formatMessage } = reactIntl.useIntl();
|
|
417
423
|
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 1, children: [
|
|
418
424
|
!!githubStars && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
419
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
420
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
421
|
-
designSystem.Icon,
|
|
422
|
-
{
|
|
423
|
-
as: icons.Star,
|
|
424
|
-
height: `${12 / 16}rem`,
|
|
425
|
-
width: `${12 / 16}rem`,
|
|
426
|
-
color: "warning500",
|
|
427
|
-
"aria-hidden": true
|
|
428
|
-
}
|
|
429
|
-
),
|
|
425
|
+
/* @__PURE__ */ jsxRuntime.jsx(symbols.GitHub, { height: "1.2rem", width: "1.2rem", "aria-hidden": true }),
|
|
426
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.Star, { height: "1.2rem", width: "1.2rem", fill: "warning500", "aria-hidden": true }),
|
|
430
427
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
431
428
|
"p",
|
|
432
429
|
{
|
|
@@ -445,7 +442,7 @@ const PackageStats = ({ githubStars = 0, npmDownloads = 0, npmPackageType }) =>
|
|
|
445
442
|
),
|
|
446
443
|
/* @__PURE__ */ jsxRuntime.jsx(VerticalDivider, { unsetMargin: false })
|
|
447
444
|
] }),
|
|
448
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
445
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.Download, { height: "1.2rem", width: "1.2rem", "aria-hidden": true }),
|
|
449
446
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
450
447
|
"p",
|
|
451
448
|
{
|
|
@@ -465,7 +462,7 @@ const PackageStats = ({ githubStars = 0, npmDownloads = 0, npmPackageType }) =>
|
|
|
465
462
|
] });
|
|
466
463
|
};
|
|
467
464
|
const VerticalDivider = styled__default.default(designSystem.Divider)`
|
|
468
|
-
width:
|
|
465
|
+
width: 1.2rem;
|
|
469
466
|
transform: rotate(90deg);
|
|
470
467
|
`;
|
|
471
468
|
|
|
@@ -497,7 +494,7 @@ const NpmPackagesGrid = ({
|
|
|
497
494
|
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { position: "relative", children: [
|
|
498
495
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.GridLayout, { children: Array(12).fill(null).map((_, idx) => /* @__PURE__ */ jsxRuntime.jsx(EmptyPluginCard, { height: "234px", hasRadius: true }, idx)) }),
|
|
499
496
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { position: "absolute", top: 11, width: "100%", children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { alignItems: "center", justifyContent: "center", direction: "column", children: [
|
|
500
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
497
|
+
/* @__PURE__ */ jsxRuntime.jsx(symbols.EmptyDocuments, { width: "160px", height: "88px" }),
|
|
501
498
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingTop: 6, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", as: "p", textColor: "neutral600", children: emptySearchMessage }) })
|
|
502
499
|
] }) })
|
|
503
500
|
] });
|
|
@@ -535,7 +532,7 @@ const PageHeader = ({ isOnline, npmPackageType = "plugin" }) => {
|
|
|
535
532
|
defaultMessage: "Get more out of Strapi"
|
|
536
533
|
}),
|
|
537
534
|
primaryAction: isOnline && /* @__PURE__ */ jsxRuntime.jsx(
|
|
538
|
-
|
|
535
|
+
designSystem.LinkButton,
|
|
539
536
|
{
|
|
540
537
|
startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Upload, {}),
|
|
541
538
|
variant: "tertiary",
|
|
@@ -563,7 +560,7 @@ const OfflineLayout = () => {
|
|
|
563
560
|
direction: "column",
|
|
564
561
|
alignItems: "center",
|
|
565
562
|
justifyContent: "center",
|
|
566
|
-
paddingTop:
|
|
563
|
+
paddingTop: `12rem`,
|
|
567
564
|
children: [
|
|
568
565
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingBottom: 2, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral700", variant: "alpha", children: formatMessage({
|
|
569
566
|
id: "admin.pages.MarketPlacePage.offline.title",
|
|
@@ -1031,9 +1028,17 @@ const MarketplacePage = () => {
|
|
|
1031
1028
|
id: "admin.pages.MarketPlacePage.missingPlugin.description",
|
|
1032
1029
|
defaultMessage: "Tell us what plugin you are looking for and we'll let our community plugin developers know in case they are in search for inspiration!"
|
|
1033
1030
|
}),
|
|
1034
|
-
icon: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1031
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(symbols.GlassesSquare, {}),
|
|
1035
1032
|
iconBackground: "alternative100",
|
|
1036
|
-
endAction: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1033
|
+
endAction: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1034
|
+
icons.ExternalLink,
|
|
1035
|
+
{
|
|
1036
|
+
fill: "neutral600",
|
|
1037
|
+
width: "1.2rem",
|
|
1038
|
+
height: "1.2rem",
|
|
1039
|
+
style: { marginLeft: "0.8rem" }
|
|
1040
|
+
}
|
|
1041
|
+
)
|
|
1037
1042
|
}
|
|
1038
1043
|
)
|
|
1039
1044
|
}
|
|
@@ -1048,4 +1053,4 @@ const ProtectedMarketplacePage = () => {
|
|
|
1048
1053
|
|
|
1049
1054
|
exports.MarketplacePage = MarketplacePage;
|
|
1050
1055
|
exports.ProtectedMarketplacePage = ProtectedMarketplacePage;
|
|
1051
|
-
//# sourceMappingURL=MarketplacePage-
|
|
1056
|
+
//# sourceMappingURL=MarketplacePage-sSTqINSu.js.map
|