@strapi/admin 5.10.2 → 5.10.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/dist/admin/chunks/{AdminSeatInfo-Cw1ujAsZ.mjs → AdminSeatInfo-CQ4w8a3g.mjs} +3 -3
  2. package/dist/admin/chunks/{AdminSeatInfo-Cw1ujAsZ.mjs.map → AdminSeatInfo-CQ4w8a3g.mjs.map} +1 -1
  3. package/dist/admin/chunks/{AdminSeatInfo-BfPqdNN0.js → AdminSeatInfo-DZ4hBesy.js} +3 -3
  4. package/dist/admin/chunks/{AdminSeatInfo-BfPqdNN0.js.map → AdminSeatInfo-DZ4hBesy.js.map} +1 -1
  5. package/dist/admin/chunks/{ApplicationInfoPage-DIiAE-tT.js → ApplicationInfoPage-CsBvES_c.js} +5 -5
  6. package/dist/admin/chunks/{ApplicationInfoPage-DIiAE-tT.js.map → ApplicationInfoPage-CsBvES_c.js.map} +1 -1
  7. package/dist/admin/chunks/{ApplicationInfoPage-Ch6hKH4Y.mjs → ApplicationInfoPage-DiEcqVEU.mjs} +5 -5
  8. package/dist/admin/chunks/{ApplicationInfoPage-Ch6hKH4Y.mjs.map → ApplicationInfoPage-DiEcqVEU.mjs.map} +1 -1
  9. package/dist/admin/chunks/{AuthResponse-DI-Q1kQL.js → AuthResponse-Ch0hurir.js} +2 -2
  10. package/dist/admin/chunks/{AuthResponse-DI-Q1kQL.js.map → AuthResponse-Ch0hurir.js.map} +1 -1
  11. package/dist/admin/chunks/{AuthResponse-DFS6gVO4.mjs → AuthResponse-Cu7HgPEK.mjs} +2 -2
  12. package/dist/admin/chunks/{AuthResponse-DFS6gVO4.mjs.map → AuthResponse-Cu7HgPEK.mjs.map} +1 -1
  13. package/dist/admin/chunks/{AuthenticatedLayout-BNWCtSH2.mjs → AuthenticatedLayout-C9eZ12Ue.mjs} +10 -291
  14. package/dist/admin/chunks/AuthenticatedLayout-C9eZ12Ue.mjs.map +1 -0
  15. package/dist/admin/chunks/{AuthenticatedLayout-D067wUoO.js → AuthenticatedLayout-D_VSoB1l.js} +5 -286
  16. package/dist/admin/chunks/AuthenticatedLayout-D_VSoB1l.js.map +1 -0
  17. package/dist/admin/chunks/{CreatePage-DojcQqvH.mjs → CreatePage-Cb-ETkOn.mjs} +5 -5
  18. package/dist/admin/chunks/{CreatePage-DojcQqvH.mjs.map → CreatePage-Cb-ETkOn.mjs.map} +1 -1
  19. package/dist/admin/chunks/{CreatePage-0PdN9Fyc.mjs → CreatePage-DQDa78K3.mjs} +4 -4
  20. package/dist/admin/chunks/{CreatePage-0PdN9Fyc.mjs.map → CreatePage-DQDa78K3.mjs.map} +1 -1
  21. package/dist/admin/chunks/{CreatePage-BK_ivKDk.js → CreatePage-DbmpFjHt.js} +4 -4
  22. package/dist/admin/chunks/{CreatePage-BK_ivKDk.js.map → CreatePage-DbmpFjHt.js.map} +1 -1
  23. package/dist/admin/chunks/{CreatePage-C8PMNi_P.js → CreatePage-DkzHz0zk.js} +5 -5
  24. package/dist/admin/chunks/{CreatePage-C8PMNi_P.js.map → CreatePage-DkzHz0zk.js.map} +1 -1
  25. package/dist/admin/chunks/{CreateView-DtccbWiR.js → CreateView-CE4-drK6.js} +5 -5
  26. package/dist/admin/chunks/{CreateView-DtccbWiR.js.map → CreateView-CE4-drK6.js.map} +1 -1
  27. package/dist/admin/chunks/{CreateView-BuN2a7bo.mjs → CreateView-CmubtWzn.mjs} +5 -5
  28. package/dist/admin/chunks/{CreateView-BuN2a7bo.mjs.map → CreateView-CmubtWzn.mjs.map} +1 -1
  29. package/dist/admin/chunks/{CreateView-DB0xD4f5.mjs → CreateView-DZaIevIB.mjs} +5 -5
  30. package/dist/admin/chunks/{CreateView-DB0xD4f5.mjs.map → CreateView-DZaIevIB.mjs.map} +1 -1
  31. package/dist/admin/chunks/{CreateView-ITRNGoQ6.js → CreateView-yjsS9KUJ.js} +5 -5
  32. package/dist/admin/chunks/{CreateView-ITRNGoQ6.js.map → CreateView-yjsS9KUJ.js.map} +1 -1
  33. package/dist/admin/chunks/{EditPage-BazkPM17.mjs → EditPage-Bjr4f1Bs.mjs} +5 -5
  34. package/dist/admin/chunks/{EditPage-BazkPM17.mjs.map → EditPage-Bjr4f1Bs.mjs.map} +1 -1
  35. package/dist/admin/chunks/{EditPage-ibh8EtSv.js → EditPage-BrMhV8aB.js} +8 -8
  36. package/dist/admin/chunks/{EditPage-ibh8EtSv.js.map → EditPage-BrMhV8aB.js.map} +1 -1
  37. package/dist/admin/chunks/{EditPage-BNZ90ISm.mjs → EditPage-C44OaxjN.mjs} +5 -5
  38. package/dist/admin/chunks/{EditPage-BNZ90ISm.mjs.map → EditPage-C44OaxjN.mjs.map} +1 -1
  39. package/dist/admin/chunks/{EditPage-r043NYgB.js → EditPage-CNaAuT5C.js} +5 -5
  40. package/dist/admin/chunks/{EditPage-r043NYgB.js.map → EditPage-CNaAuT5C.js.map} +1 -1
  41. package/dist/admin/chunks/{EditPage-DiDSR0tz.js → EditPage-CycQlsFL.js} +5 -5
  42. package/dist/admin/chunks/{EditPage-DiDSR0tz.js.map → EditPage-CycQlsFL.js.map} +1 -1
  43. package/dist/admin/chunks/{EditPage-LRn1-C88.mjs → EditPage-MmQQ4hWc.mjs} +8 -8
  44. package/dist/admin/chunks/{EditPage-LRn1-C88.mjs.map → EditPage-MmQQ4hWc.mjs.map} +1 -1
  45. package/dist/admin/chunks/{EditView-DxmJI6e0.js → EditView-C9cKaoY1.js} +4 -4
  46. package/dist/admin/chunks/{EditView-DxmJI6e0.js.map → EditView-C9cKaoY1.js.map} +1 -1
  47. package/dist/admin/chunks/{EditView-CgMgqsza.mjs → EditView-CFIkvFrt.mjs} +4 -4
  48. package/dist/admin/chunks/{EditView-CgMgqsza.mjs.map → EditView-CFIkvFrt.mjs.map} +1 -1
  49. package/dist/admin/chunks/{EditViewPage-BE_u8pQP.mjs → EditViewPage-CwdhHAuX.mjs} +4 -4
  50. package/dist/admin/chunks/{EditViewPage-BE_u8pQP.mjs.map → EditViewPage-CwdhHAuX.mjs.map} +1 -1
  51. package/dist/admin/chunks/{EditViewPage-Bz4GEIsc.js → EditViewPage-DBga-70A.js} +4 -4
  52. package/dist/admin/chunks/{EditViewPage-Bz4GEIsc.js.map → EditViewPage-DBga-70A.js.map} +1 -1
  53. package/dist/admin/chunks/{EventsTable-CsFf4rOj.mjs → EventsTable-CeqMb1jP.mjs} +5 -5
  54. package/dist/admin/chunks/{EventsTable-CsFf4rOj.mjs.map → EventsTable-CeqMb1jP.mjs.map} +1 -1
  55. package/dist/admin/chunks/{EventsTable-CZY0aI5G.js → EventsTable-fkWvAMuL.js} +5 -5
  56. package/dist/admin/chunks/{EventsTable-CZY0aI5G.js.map → EventsTable-fkWvAMuL.js.map} +1 -1
  57. package/dist/admin/chunks/{HomePage-ebJLhO6a.js → HomePage-B2skN1xt.js} +5 -5
  58. package/dist/admin/chunks/{HomePage-ebJLhO6a.js.map → HomePage-B2skN1xt.js.map} +1 -1
  59. package/dist/admin/chunks/{HomePage-Df0YSqNE.js → HomePage-CVc0RfvD.js} +4 -4
  60. package/dist/admin/chunks/{HomePage-Df0YSqNE.js.map → HomePage-CVc0RfvD.js.map} +1 -1
  61. package/dist/admin/chunks/{HomePage-CFTx_SgI.mjs → HomePage-DGTeFboL.mjs} +4 -4
  62. package/dist/admin/chunks/{HomePage-CFTx_SgI.mjs.map → HomePage-DGTeFboL.mjs.map} +1 -1
  63. package/dist/admin/chunks/{HomePage-C2Sue0eX.mjs → HomePage-MfOqcIag.mjs} +5 -5
  64. package/dist/admin/chunks/{HomePage-C2Sue0eX.mjs.map → HomePage-MfOqcIag.mjs.map} +1 -1
  65. package/dist/admin/chunks/{InstalledPlugins-B4gyKUHh.mjs → InstalledPlugins-5j7xjDqh.mjs} +3 -3
  66. package/dist/admin/chunks/{InstalledPlugins-B4gyKUHh.mjs.map → InstalledPlugins-5j7xjDqh.mjs.map} +1 -1
  67. package/dist/admin/chunks/{InstalledPlugins-BtwwVsQ_.js → InstalledPlugins-BXM3i3xr.js} +3 -3
  68. package/dist/admin/chunks/{InstalledPlugins-BtwwVsQ_.js.map → InstalledPlugins-BXM3i3xr.js.map} +1 -1
  69. package/dist/admin/chunks/{Layout-BZTqa7oj.js → Layout-DST1PxaO.js} +5 -5
  70. package/dist/admin/chunks/{Layout-BZTqa7oj.js.map → Layout-DST1PxaO.js.map} +1 -1
  71. package/dist/admin/chunks/{Layout-B_xkPr1q.mjs → Layout-DYjtK6iP.mjs} +5 -5
  72. package/dist/admin/chunks/{Layout-B_xkPr1q.mjs.map → Layout-DYjtK6iP.mjs.map} +1 -1
  73. package/dist/admin/chunks/{ListPage-BtMdu1eQ.mjs → ListPage-B5Hb8BA-.mjs} +7 -7
  74. package/dist/admin/chunks/{ListPage-BtMdu1eQ.mjs.map → ListPage-B5Hb8BA-.mjs.map} +1 -1
  75. package/dist/admin/chunks/{ListPage-Beh8uBDE.mjs → ListPage-BVI0O8bq.mjs} +3 -3
  76. package/dist/admin/chunks/{ListPage-Beh8uBDE.mjs.map → ListPage-BVI0O8bq.mjs.map} +1 -1
  77. package/dist/admin/chunks/{ListPage-YW-UVjk3.js → ListPage-BgyypnOM.js} +7 -7
  78. package/dist/admin/chunks/{ListPage-YW-UVjk3.js.map → ListPage-BgyypnOM.js.map} +1 -1
  79. package/dist/admin/chunks/{ListPage-CENQarKY.mjs → ListPage-BhGt3EBQ.mjs} +3 -3
  80. package/dist/admin/chunks/{ListPage-CENQarKY.mjs.map → ListPage-BhGt3EBQ.mjs.map} +1 -1
  81. package/dist/admin/chunks/{ListPage-gKsEm3Px.js → ListPage-CLXy5r60.js} +5 -5
  82. package/dist/admin/chunks/{ListPage-gKsEm3Px.js.map → ListPage-CLXy5r60.js.map} +1 -1
  83. package/dist/admin/chunks/{ListPage-Du6Jt5wY.js → ListPage-CWINpwfS.js} +7 -7
  84. package/dist/admin/chunks/{ListPage-Du6Jt5wY.js.map → ListPage-CWINpwfS.js.map} +1 -1
  85. package/dist/admin/chunks/{ListPage-DgmOJv7H.js → ListPage-D21yUih2.js} +3 -3
  86. package/dist/admin/chunks/{ListPage-DgmOJv7H.js.map → ListPage-D21yUih2.js.map} +1 -1
  87. package/dist/admin/chunks/{ListPage-LqcmQd_Q.js → ListPage-DbfL2rpi.js} +3 -3
  88. package/dist/admin/chunks/{ListPage-LqcmQd_Q.js.map → ListPage-DbfL2rpi.js.map} +1 -1
  89. package/dist/admin/chunks/{ListPage-r9rW__R8.mjs → ListPage-PwzVjSsA.mjs} +7 -7
  90. package/dist/admin/chunks/{ListPage-r9rW__R8.mjs.map → ListPage-PwzVjSsA.mjs.map} +1 -1
  91. package/dist/admin/chunks/{ListPage-Czwak48Z.mjs → ListPage-srJutHdv.mjs} +5 -5
  92. package/dist/admin/chunks/{ListPage-Czwak48Z.mjs.map → ListPage-srJutHdv.mjs.map} +1 -1
  93. package/dist/admin/chunks/{ListView-Q2AO0JSX.mjs → ListView--KzJiQiO.mjs} +4 -4
  94. package/dist/admin/chunks/{ListView-Q2AO0JSX.mjs.map → ListView--KzJiQiO.mjs.map} +1 -1
  95. package/dist/admin/chunks/{ListView-CajksON_.mjs → ListView-CoGoDDiF.mjs} +4 -4
  96. package/dist/admin/chunks/{ListView-CajksON_.mjs.map → ListView-CoGoDDiF.mjs.map} +1 -1
  97. package/dist/admin/chunks/{ListView-Bys8EN-y.js → ListView-DGfxO89i.js} +4 -4
  98. package/dist/admin/chunks/{ListView-Bys8EN-y.js.map → ListView-DGfxO89i.js.map} +1 -1
  99. package/dist/admin/chunks/{ListView-BfwBUxHL.js → ListView-DzwvQ8nW.js} +4 -4
  100. package/dist/admin/chunks/{ListView-BfwBUxHL.js.map → ListView-DzwvQ8nW.js.map} +1 -1
  101. package/dist/admin/chunks/{Login-5ByBaKI3.mjs → Login-Dtkhd0GV.mjs} +3 -3
  102. package/dist/admin/chunks/{Login-5ByBaKI3.mjs.map → Login-Dtkhd0GV.mjs.map} +1 -1
  103. package/dist/admin/chunks/{Login-BpEOnVbU.js → Login-Iw84AH9L.js} +3 -3
  104. package/dist/admin/chunks/{Login-BpEOnVbU.js.map → Login-Iw84AH9L.js.map} +1 -1
  105. package/dist/admin/chunks/{MagicLinkEE-a-AbOB4s.js → MagicLinkEE-C5K8p8Rk.js} +5 -5
  106. package/dist/admin/chunks/{MagicLinkEE-a-AbOB4s.js.map → MagicLinkEE-C5K8p8Rk.js.map} +1 -1
  107. package/dist/admin/chunks/{MagicLinkEE-CiQG7NL3.mjs → MagicLinkEE-EcyHC46Y.mjs} +5 -5
  108. package/dist/admin/chunks/{MagicLinkEE-CiQG7NL3.mjs.map → MagicLinkEE-EcyHC46Y.mjs.map} +1 -1
  109. package/dist/admin/chunks/{MarketplacePage-my1nDaHy.js → MarketplacePage-BmqfuAvB.js} +3 -3
  110. package/dist/admin/chunks/{MarketplacePage-my1nDaHy.js.map → MarketplacePage-BmqfuAvB.js.map} +1 -1
  111. package/dist/admin/chunks/{MarketplacePage-BrHNQ8SG.mjs → MarketplacePage-CcAYozK2.mjs} +3 -3
  112. package/dist/admin/chunks/{MarketplacePage-BrHNQ8SG.mjs.map → MarketplacePage-CcAYozK2.mjs.map} +1 -1
  113. package/dist/admin/chunks/{Permissions-C7FA_7J9.js → Permissions-D6qH78lN.js} +2 -2
  114. package/dist/admin/chunks/{Permissions-C7FA_7J9.js.map → Permissions-D6qH78lN.js.map} +1 -1
  115. package/dist/admin/chunks/{Permissions-CuLck8vw.mjs → Permissions-rJmE3qb1.mjs} +2 -2
  116. package/dist/admin/chunks/{Permissions-CuLck8vw.mjs.map → Permissions-rJmE3qb1.mjs.map} +1 -1
  117. package/dist/admin/chunks/{PrivateRoute-BnxIlIDb.js → PrivateRoute-DvGSyomB.js} +2 -2
  118. package/dist/admin/chunks/{PrivateRoute-BnxIlIDb.js.map → PrivateRoute-DvGSyomB.js.map} +1 -1
  119. package/dist/admin/chunks/{PrivateRoute-BYKd2yE4.mjs → PrivateRoute-KL_RhoV8.mjs} +2 -2
  120. package/dist/admin/chunks/{PrivateRoute-BYKd2yE4.mjs.map → PrivateRoute-KL_RhoV8.mjs.map} +1 -1
  121. package/dist/admin/chunks/{ProfilePage-Do6nPMsx.mjs → ProfilePage-CN8SAQ9w.mjs} +4 -4
  122. package/dist/admin/chunks/{ProfilePage-Do6nPMsx.mjs.map → ProfilePage-CN8SAQ9w.mjs.map} +1 -1
  123. package/dist/admin/chunks/{ProfilePage-C8zWtYzY.js → ProfilePage-DiGV7o6c.js} +4 -4
  124. package/dist/admin/chunks/{ProfilePage-C8zWtYzY.js.map → ProfilePage-DiGV7o6c.js.map} +1 -1
  125. package/dist/admin/chunks/{PurchaseAuditLogs-McvZESGI.mjs → PurchaseAuditLogs-BI41XTBD.mjs} +3 -3
  126. package/dist/admin/chunks/{PurchaseAuditLogs-McvZESGI.mjs.map → PurchaseAuditLogs-BI41XTBD.mjs.map} +1 -1
  127. package/dist/admin/chunks/{PurchaseAuditLogs-BTAi887h.js → PurchaseAuditLogs-DnWVbru3.js} +3 -3
  128. package/dist/admin/chunks/{PurchaseAuditLogs-BTAi887h.js.map → PurchaseAuditLogs-DnWVbru3.js.map} +1 -1
  129. package/dist/admin/chunks/{PurchaseContentHistory-pb7RDvhZ.mjs → PurchaseContentHistory-BzC2C4Pv.mjs} +3 -3
  130. package/dist/admin/chunks/{PurchaseContentHistory-pb7RDvhZ.mjs.map → PurchaseContentHistory-BzC2C4Pv.mjs.map} +1 -1
  131. package/dist/admin/chunks/{PurchaseContentHistory-dfepsahq.js → PurchaseContentHistory-DUk7otrp.js} +3 -3
  132. package/dist/admin/chunks/{PurchaseContentHistory-dfepsahq.js.map → PurchaseContentHistory-DUk7otrp.js.map} +1 -1
  133. package/dist/admin/chunks/{PurchaseSingleSignOn-Dgal5RnY.js → PurchaseSingleSignOn-Bq0YHAHt.js} +3 -3
  134. package/dist/admin/chunks/{PurchaseSingleSignOn-Dgal5RnY.js.map → PurchaseSingleSignOn-Bq0YHAHt.js.map} +1 -1
  135. package/dist/admin/chunks/{PurchaseSingleSignOn-BUB9Irlt.mjs → PurchaseSingleSignOn-G1TKPP15.mjs} +3 -3
  136. package/dist/admin/chunks/{PurchaseSingleSignOn-BUB9Irlt.mjs.map → PurchaseSingleSignOn-G1TKPP15.mjs.map} +1 -1
  137. package/dist/admin/chunks/{SelectRoles-Clx1_4zB.js → SelectRoles-CKInlnSd.js} +4 -4
  138. package/dist/admin/chunks/{SelectRoles-Clx1_4zB.js.map → SelectRoles-CKInlnSd.js.map} +1 -1
  139. package/dist/admin/chunks/{SelectRoles-CG3Czm0u.mjs → SelectRoles-DR4KBZkw.mjs} +4 -4
  140. package/dist/admin/chunks/{SelectRoles-CG3Czm0u.mjs.map → SelectRoles-DR4KBZkw.mjs.map} +1 -1
  141. package/dist/admin/chunks/{SingleSignOnPage-Bqn13t3u.mjs → SingleSignOnPage-CRzrEUGp.mjs} +4 -4
  142. package/dist/admin/chunks/{SingleSignOnPage-Bqn13t3u.mjs.map → SingleSignOnPage-CRzrEUGp.mjs.map} +1 -1
  143. package/dist/admin/chunks/{SingleSignOnPage-DqHWnXWQ.js → SingleSignOnPage-DtRVlrGP.js} +4 -4
  144. package/dist/admin/chunks/{SingleSignOnPage-DqHWnXWQ.js.map → SingleSignOnPage-DtRVlrGP.js.map} +1 -1
  145. package/dist/admin/chunks/{Table-Ra6bYcx7.mjs → Table-BohVeu0r.mjs} +3 -3
  146. package/dist/admin/chunks/{Table-Ra6bYcx7.mjs.map → Table-BohVeu0r.mjs.map} +1 -1
  147. package/dist/admin/chunks/{Table-BHi0q5It.js → Table-CBZnqMuN.js} +3 -3
  148. package/dist/admin/chunks/{Table-BHi0q5It.js.map → Table-CBZnqMuN.js.map} +1 -1
  149. package/dist/admin/chunks/{Theme-CDaBfQ-7.mjs → Theme-C3oHrQcy.mjs} +6 -4
  150. package/dist/admin/chunks/Theme-C3oHrQcy.mjs.map +1 -0
  151. package/dist/admin/chunks/{Theme-CFGbtvHi.js → Theme-DDlJz91O.js} +6 -3
  152. package/dist/admin/chunks/Theme-DDlJz91O.js.map +1 -0
  153. package/dist/admin/chunks/{TokenTypeSelect-EY1WftKo.js → TokenTypeSelect-BV_ZNiY_.js} +3 -3
  154. package/dist/admin/chunks/{TokenTypeSelect-EY1WftKo.js.map → TokenTypeSelect-BV_ZNiY_.js.map} +1 -1
  155. package/dist/admin/chunks/{TokenTypeSelect-BIRgChNx.mjs → TokenTypeSelect-CpEAVZ_b.mjs} +3 -3
  156. package/dist/admin/chunks/{TokenTypeSelect-BIRgChNx.mjs.map → TokenTypeSelect-CpEAVZ_b.mjs.map} +1 -1
  157. package/dist/admin/chunks/{UseCasePage-Y_h0Fbiv.mjs → UseCasePage-Bro5fyP3.mjs} +4 -4
  158. package/dist/admin/chunks/{UseCasePage-Y_h0Fbiv.mjs.map → UseCasePage-Bro5fyP3.mjs.map} +1 -1
  159. package/dist/admin/chunks/{UseCasePage-Dl-WfgYc.js → UseCasePage-CipG2GC4.js} +4 -4
  160. package/dist/admin/chunks/{UseCasePage-Dl-WfgYc.js.map → UseCasePage-CipG2GC4.js.map} +1 -1
  161. package/dist/admin/chunks/{constants-DoArvzRr.mjs → constants-BddeukI7.mjs} +3 -3
  162. package/dist/admin/chunks/{constants-DoArvzRr.mjs.map → constants-BddeukI7.mjs.map} +1 -1
  163. package/dist/admin/chunks/{constants-DClZ3JYF.js → constants-CaerHoe3.js} +3 -3
  164. package/dist/admin/chunks/{constants-DClZ3JYF.js.map → constants-CaerHoe3.js.map} +1 -1
  165. package/dist/admin/chunks/en-GB-3SrHvAFz.mjs +6 -0
  166. package/dist/admin/chunks/en-GB-3SrHvAFz.mjs.map +1 -0
  167. package/dist/admin/chunks/en-GB-Cc-PTeUP.js +8 -0
  168. package/dist/admin/chunks/en-GB-Cc-PTeUP.js.map +1 -0
  169. package/dist/admin/chunks/{en-CRu3-kTC.mjs → en-n340Bke8.mjs} +2 -1
  170. package/dist/admin/chunks/{en-CRu3-kTC.mjs.map → en-n340Bke8.mjs.map} +1 -1
  171. package/dist/admin/chunks/{en-CJjqxA2Q.js → en-rWmm12oE.js} +2 -1
  172. package/dist/admin/chunks/{en-CJjqxA2Q.js.map → en-rWmm12oE.js.map} +1 -1
  173. package/dist/admin/chunks/{index-BUGouNML.mjs → index-BM8-DG5K.mjs} +56 -36
  174. package/dist/admin/chunks/index-BM8-DG5K.mjs.map +1 -0
  175. package/dist/admin/chunks/{index-D7OmC33R.js → index-HGaughzt.js} +56 -36
  176. package/dist/admin/chunks/index-HGaughzt.js.map +1 -0
  177. package/dist/admin/chunks/{selectors-2ohXQx5g.js → selectors-Bf-6Fmez.js} +2 -2
  178. package/dist/admin/chunks/{selectors-2ohXQx5g.js.map → selectors-Bf-6Fmez.js.map} +1 -1
  179. package/dist/admin/chunks/{selectors-PQdhPmzv.mjs → selectors-Dej_6h4x.mjs} +2 -2
  180. package/dist/admin/chunks/{selectors-PQdhPmzv.mjs.map → selectors-Dej_6h4x.mjs.map} +1 -1
  181. package/dist/admin/chunks/{useAdminRoles-BEmkB0uj.mjs → useAdminRoles-C6Es4UUq.mjs} +2 -2
  182. package/dist/admin/chunks/{useAdminRoles-BEmkB0uj.mjs.map → useAdminRoles-C6Es4UUq.mjs.map} +1 -1
  183. package/dist/admin/chunks/{useAdminRoles-DwDqOIvp.js → useAdminRoles-_4HKisJz.js} +2 -2
  184. package/dist/admin/chunks/{useAdminRoles-DwDqOIvp.js.map → useAdminRoles-_4HKisJz.js.map} +1 -1
  185. package/dist/admin/chunks/{useLicenseLimitNotification-CGkazzao.mjs → useLicenseLimitNotification-DbPhRccK.mjs} +2 -2
  186. package/dist/admin/chunks/{useLicenseLimitNotification-CGkazzao.mjs.map → useLicenseLimitNotification-DbPhRccK.mjs.map} +1 -1
  187. package/dist/admin/chunks/{useLicenseLimitNotification-BMCQ8obE.js → useLicenseLimitNotification-iuozPic9.js} +2 -2
  188. package/dist/admin/chunks/{useLicenseLimitNotification-BMCQ8obE.js.map → useLicenseLimitNotification-iuozPic9.js.map} +1 -1
  189. package/dist/admin/chunks/{validation-DOQs6_Ay.mjs → validation-Dmvl0gZQ.mjs} +8 -2
  190. package/dist/admin/chunks/validation-Dmvl0gZQ.mjs.map +1 -0
  191. package/dist/admin/chunks/{validation-ECrFbJ6K.js → validation-dPl3P7dv.js} +8 -2
  192. package/dist/admin/chunks/validation-dPl3P7dv.js.map +1 -0
  193. package/dist/admin/index.js +2 -2
  194. package/dist/admin/index.mjs +2 -2
  195. package/dist/admin/src/features/Configuration.d.ts +1 -3
  196. package/dist/admin/src/utils/strings.d.ts +2 -1
  197. package/dist/admin/test.js +1 -2
  198. package/dist/admin/test.js.map +1 -1
  199. package/dist/admin/test.mjs +1 -2
  200. package/dist/admin/test.mjs.map +1 -1
  201. package/dist/server/index.js +23 -9
  202. package/dist/server/index.js.map +1 -1
  203. package/dist/server/index.mjs +23 -9
  204. package/dist/server/index.mjs.map +1 -1
  205. package/dist/server/src/routes/authentication.d.ts.map +1 -1
  206. package/dist/server/src/services/homepage.d.ts.map +1 -1
  207. package/dist/server/src/validation/common-validators.d.ts.map +1 -1
  208. package/package.json +7 -7
  209. package/dist/admin/chunks/AuthenticatedLayout-BNWCtSH2.mjs.map +0 -1
  210. package/dist/admin/chunks/AuthenticatedLayout-D067wUoO.js.map +0 -1
  211. package/dist/admin/chunks/Theme-CDaBfQ-7.mjs.map +0 -1
  212. package/dist/admin/chunks/Theme-CFGbtvHi.js.map +0 -1
  213. package/dist/admin/chunks/en-GB-CMP_CCZs.js +0 -8
  214. package/dist/admin/chunks/en-GB-CMP_CCZs.js.map +0 -1
  215. package/dist/admin/chunks/en-GB-DZyWkup_.mjs +0 -6
  216. package/dist/admin/chunks/en-GB-DZyWkup_.mjs.map +0 -1
  217. package/dist/admin/chunks/index-BUGouNML.mjs.map +0 -1
  218. package/dist/admin/chunks/index-D7OmC33R.js.map +0 -1
  219. package/dist/admin/chunks/validation-DOQs6_Ay.mjs.map +0 -1
  220. package/dist/admin/chunks/validation-ECrFbJ6K.js.map +0 -1
  221. package/dist/admin/src/components/Onboarding.d.ts +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"MarketplacePage-my1nDaHy.js","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';\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 { formatMessage } = useIntl();\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 <Popover.Root>\n <Popover.Trigger>\n <Button variant=\"tertiary\" startIcon={<Filter />}>\n {formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n </Popover.Trigger>\n <Popover.Content sideOffset={4}>\n <Flex padding={3} 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 </Flex>\n </Popover.Content>\n\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 </Popover.Root>\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 aria-label={message}\n placeholder={message}\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 {\n Box,\n Flex,\n Tooltip,\n Typography,\n Divider,\n Button,\n LinkButton,\n TypographyComponent,\n} 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<TypographyComponent<'p'>>(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 const versionRange = semver.validRange(attributes.strapiVersion);\n\n const isCompatible = versionRange\n ? semver.satisfies(strapiAppVersion ?? '', versionRange)\n : false;\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 tag=\"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 tag=\"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 tag=\"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 tag=\"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 isCompatible={isCompatible}\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 isCompatible?: boolean;\n}\n\nconst InstallPluginButton = ({\n isInstalled,\n isInDevelopmentMode,\n isCompatible,\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 && isCompatible !== false) {\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 label={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 <span>\n <Button\n size=\"S\"\n startIcon={<Duplicate />}\n variant=\"secondary\"\n onClick={handleCopy}\n disabled={!isCompatible}\n >\n {installMessage}\n </Button>\n </span>\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 />\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, BoxComponent, Flex, Grid, Typography } from '@strapi/design-system';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { Layouts } from '../../../components/Layouts/Layout';\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 <Layouts.Grid size=\"M\">\n {Array(12)\n .fill(null)\n .map((_, idx) => (\n <EmptyPluginCard key={idx} height=\"234px\" hasRadius />\n ))}\n </Layouts.Grid>\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\" tag=\"p\" textColor=\"neutral600\">\n {emptySearchMessage}\n </Typography>\n </Box>\n </Flex>\n </Box>\n </Box>\n );\n }\n\n return (\n <Grid.Root gap={4}>\n {npmPackages.map((npmPackage) => (\n <Grid.Item\n col={4}\n s={6}\n xs={12}\n style={{ height: '100%' }}\n key={npmPackage.id}\n direction=\"column\"\n alignItems=\"stretch\"\n >\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 </Grid.Item>\n ))}\n </Grid.Root>\n );\n};\n\nconst EmptyPluginCard = styled<BoxComponent>(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 { LinkButton } from '@strapi/design-system';\nimport { Upload } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { Layouts } from '../../../components/Layouts/Layout';\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 <Layouts.Header\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, Main, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { Layouts } from '../../../components/Layouts/Layout';\n\nimport { PageHeader } from './PageHeader';\n\nconst OfflineLayout = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Layouts.Root>\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 </Layouts.Root>\n );\n};\n\nexport { OfflineLayout };\n","import { Box, SingleSelectOption, SingleSelect, BoxComponent } 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 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 aria-label={formatMessage({\n id: 'admin.pages.MarketPlacePage.sort.label',\n defaultMessage: 'Sort by',\n })}\n size=\"S\"\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<BoxComponent>(Box)`\n font-weight: ${({ theme }) => theme.fontWeights.semiBold};\n\n span {\n font-size: ${({ theme }) => theme.fontSizes[1]};\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 strapiVersion?: string | null;\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 strapiVersion,\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 version: strapiVersion,\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 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 version: strapiVersion,\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 { Box, Flex, Searchbar, Tabs } 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 { Layouts } from '../../components/Layouts/Layout';\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 PLUGIN = 'plugin';\nconst PROVIDER = 'provider';\n\nconst MarketplacePage = () => {\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, strapiVersion });\n\n if (!isOnline) {\n return <OfflineLayout />;\n }\n\n const handleTabChange = (tab: string) => {\n const selectedTab = tab === PLUGIN || tab === PROVIDER ? tab : PLUGIN;\n\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 <Layouts.Root>\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 <Layouts.Content>\n <Tabs.Root variant=\"simple\" onValueChange={handleTabChange} value={npmPackageType}>\n <Flex justifyContent=\"space-between\" paddingBottom={4}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'admin.pages.MarketPlacePage.tab-group.label',\n defaultMessage: 'Plugins and Providers for Strapi',\n })}\n >\n <Tabs.Trigger value={PLUGIN}>\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.plugins',\n defaultMessage: 'Plugins',\n })}{' '}\n {pluginsResponse ? `(${pluginsResponse.meta.pagination.total})` : '...'}\n </Tabs.Trigger>\n <Tabs.Trigger value={PROVIDER}>\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.providers',\n defaultMessage: 'Providers',\n })}{' '}\n {providersResponse ? `(${providersResponse.meta.pagination.total})` : '...'}\n </Tabs.Trigger>\n </Tabs.List>\n\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 <Tabs.Content value={PLUGIN}>\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 </Tabs.Content>\n <Tabs.Content value={PROVIDER}>\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 </Tabs.Content>\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 </Tabs.Root>\n </Layouts.Content>\n </Page.Main>\n </Layouts.Root>\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":["useDebounce","value","delay","debouncedValue","setDebouncedValue","React","useState","useEffect","handler","setTimeout","clearTimeout","NpmPackagesFilters","handleSelectClear","handleSelectChange","npmPackageType","possibleCategories","possibleCollections","query","formatMessage","useIntl","handleTagRemove","tagToRemove","filterType","update","filter","previousTag","_jsxs","Popover","Root","_jsx","Trigger","Button","variant","startIcon","Filter","id","defaultMessage","Content","sideOffset","Flex","padding","direction","alignItems","gap","FilterSelect","message","collections","onChange","newCollections","onClear","possibleFilters","customizeContent","values","count","length","categories","newCategories","map","collection","Box","Tag","icon","Cross","onClick","category","MultiSelect","data-testid","aria-label","placeholder","Object","entries","filterName","MultiSelectOption","EllipsisText","styled","Typography","NpmPackageCard","npmPackage","isInstalled","useYarn","isInDevelopmentMode","strapiAppVersion","attributes","trackUsage","useTracking","commandToCopy","npmPackageName","madeByStrapiMessage","npmPackageHref","pluralize","plural","slug","versionRange","semver","validRange","strapiVersion","isCompatible","satisfies","justifyContent","paddingTop","paddingRight","paddingBottom","paddingLeft","hasRadius","background","shadow","height","tag","src","logo","url","alt","name","width","PackageStats","githubStars","npmDownloads","validated","madeByStrapi","Tooltip","description","CheckCircle","fill","StrapiLogo","textColor","style","alignSelf","LinkButton","size","href","isExternal","endIcon","ExternalLink","pluginName","InstallPluginButton","strapiPeerDepVersion","toggleNotification","useNotification","copy","useClipboard","handleCopy","didCopy","type","Check","color","fontWeight","CardButton","installMessage","label","span","Duplicate","disabled","_Fragment","GitHub","aria-hidden","Star","p","starsCount","package","VerticalDivider","Download","downloadsCount","Divider","NpmPackagesGrid","status","npmPackages","installedPackageNames","debouncedSearch","Page","Error","Loading","emptySearchMessage","target","position","Layouts","Grid","Array","_","idx","EmptyPluginCard","top","EmptyDocuments","Item","col","s","xs","includes","theme","colors","neutral150","PageHeader","isOnline","tracking","Header","title","subtitle","primaryAction","Upload","OfflineLayout","Main","svg","viewBox","xmlns","rect","x","y","rx","path","d","stroke","SORT_TYPES","selected","option","SortSelect","sortQuery","SelectWrapper","SingleSelect","sortName","sort","messages","SingleSelectOption","fontWeights","semiBold","fontSizes","MARKETPLACE_API_URL","useMarketplaceData","tabQuery","notifyStatus","useNotifyAT","marketplaceTitle","notifyMarketplaceLoad","paginationParams","page","pageSize","pluginParams","plugin","pagination","search","version","data","pluginsResponse","pluginsStatus","useQuery","queryString","qs","stringify","res","fetch","ok","json","error","onSuccess","onError","providerParams","provider","providersResponse","providersStatus","npmPackageTypeResponse","meta","useNavigatorOnline","onlineStatus","navigator","onLine","setIsOnline","setOnline","setOffline","window","addEventListener","removeEventListener","PLUGIN","PROVIDER","MarketplacePage","setQuery","useQueryParams","autoReload","dependencies","useAppInfo","state","setTabQuery","handleTabChange","tab","selectedTab","hasTabQuery","keys","prev","undefined","handleSortSelectChange","Title","Tabs","onValueChange","List","total","Searchbar","e","clearLabel","Pagination","defaultPageSize","PageSize","options","Links","a","rel","textDecoration","ContentBox","GlassesSquare","iconBackground","endAction","marginLeft","ProtectedMarketplacePage","permissions","useTypedSelector","admin_app","marketplace","main","Protect"],"mappings":"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"}
1
+ {"version":3,"file":"MarketplacePage-BmqfuAvB.js","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';\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 { formatMessage } = useIntl();\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 <Popover.Root>\n <Popover.Trigger>\n <Button variant=\"tertiary\" startIcon={<Filter />}>\n {formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n </Popover.Trigger>\n <Popover.Content sideOffset={4}>\n <Flex padding={3} 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 </Flex>\n </Popover.Content>\n\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 </Popover.Root>\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 aria-label={message}\n placeholder={message}\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 {\n Box,\n Flex,\n Tooltip,\n Typography,\n Divider,\n Button,\n LinkButton,\n TypographyComponent,\n} 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<TypographyComponent<'p'>>(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 const versionRange = semver.validRange(attributes.strapiVersion);\n\n const isCompatible = versionRange\n ? semver.satisfies(strapiAppVersion ?? '', versionRange)\n : false;\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 tag=\"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 tag=\"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 tag=\"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 tag=\"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 isCompatible={isCompatible}\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 isCompatible?: boolean;\n}\n\nconst InstallPluginButton = ({\n isInstalled,\n isInDevelopmentMode,\n isCompatible,\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 && isCompatible !== false) {\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 label={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 <span>\n <Button\n size=\"S\"\n startIcon={<Duplicate />}\n variant=\"secondary\"\n onClick={handleCopy}\n disabled={!isCompatible}\n >\n {installMessage}\n </Button>\n </span>\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 />\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, BoxComponent, Flex, Grid, Typography } from '@strapi/design-system';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { Layouts } from '../../../components/Layouts/Layout';\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 <Layouts.Grid size=\"M\">\n {Array(12)\n .fill(null)\n .map((_, idx) => (\n <EmptyPluginCard key={idx} height=\"234px\" hasRadius />\n ))}\n </Layouts.Grid>\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\" tag=\"p\" textColor=\"neutral600\">\n {emptySearchMessage}\n </Typography>\n </Box>\n </Flex>\n </Box>\n </Box>\n );\n }\n\n return (\n <Grid.Root gap={4}>\n {npmPackages.map((npmPackage) => (\n <Grid.Item\n col={4}\n s={6}\n xs={12}\n style={{ height: '100%' }}\n key={npmPackage.id}\n direction=\"column\"\n alignItems=\"stretch\"\n >\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 </Grid.Item>\n ))}\n </Grid.Root>\n );\n};\n\nconst EmptyPluginCard = styled<BoxComponent>(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 { LinkButton } from '@strapi/design-system';\nimport { Upload } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { Layouts } from '../../../components/Layouts/Layout';\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 <Layouts.Header\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, Main, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { Layouts } from '../../../components/Layouts/Layout';\n\nimport { PageHeader } from './PageHeader';\n\nconst OfflineLayout = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Layouts.Root>\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 </Layouts.Root>\n );\n};\n\nexport { OfflineLayout };\n","import { Box, SingleSelectOption, SingleSelect, BoxComponent } 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 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 aria-label={formatMessage({\n id: 'admin.pages.MarketPlacePage.sort.label',\n defaultMessage: 'Sort by',\n })}\n size=\"S\"\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<BoxComponent>(Box)`\n font-weight: ${({ theme }) => theme.fontWeights.semiBold};\n\n span {\n font-size: ${({ theme }) => theme.fontSizes[1]};\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 strapiVersion?: string | null;\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 strapiVersion,\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 version: strapiVersion,\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 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 version: strapiVersion,\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 { Box, Flex, Searchbar, Tabs } 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 { Layouts } from '../../components/Layouts/Layout';\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 PLUGIN = 'plugin';\nconst PROVIDER = 'provider';\n\nconst MarketplacePage = () => {\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, strapiVersion });\n\n if (!isOnline) {\n return <OfflineLayout />;\n }\n\n const handleTabChange = (tab: string) => {\n const selectedTab = tab === PLUGIN || tab === PROVIDER ? tab : PLUGIN;\n\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 <Layouts.Root>\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 <Layouts.Content>\n <Tabs.Root variant=\"simple\" onValueChange={handleTabChange} value={npmPackageType}>\n <Flex justifyContent=\"space-between\" paddingBottom={4}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'admin.pages.MarketPlacePage.tab-group.label',\n defaultMessage: 'Plugins and Providers for Strapi',\n })}\n >\n <Tabs.Trigger value={PLUGIN}>\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.plugins',\n defaultMessage: 'Plugins',\n })}{' '}\n {pluginsResponse ? `(${pluginsResponse.meta.pagination.total})` : '...'}\n </Tabs.Trigger>\n <Tabs.Trigger value={PROVIDER}>\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.providers',\n defaultMessage: 'Providers',\n })}{' '}\n {providersResponse ? `(${providersResponse.meta.pagination.total})` : '...'}\n </Tabs.Trigger>\n </Tabs.List>\n\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 <Tabs.Content value={PLUGIN}>\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 </Tabs.Content>\n <Tabs.Content value={PROVIDER}>\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 </Tabs.Content>\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 </Tabs.Root>\n </Layouts.Content>\n </Page.Main>\n </Layouts.Root>\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":["useDebounce","value","delay","debouncedValue","setDebouncedValue","React","useState","useEffect","handler","setTimeout","clearTimeout","NpmPackagesFilters","handleSelectClear","handleSelectChange","npmPackageType","possibleCategories","possibleCollections","query","formatMessage","useIntl","handleTagRemove","tagToRemove","filterType","update","filter","previousTag","_jsxs","Popover","Root","_jsx","Trigger","Button","variant","startIcon","Filter","id","defaultMessage","Content","sideOffset","Flex","padding","direction","alignItems","gap","FilterSelect","message","collections","onChange","newCollections","onClear","possibleFilters","customizeContent","values","count","length","categories","newCategories","map","collection","Box","Tag","icon","Cross","onClick","category","MultiSelect","data-testid","aria-label","placeholder","Object","entries","filterName","MultiSelectOption","EllipsisText","styled","Typography","NpmPackageCard","npmPackage","isInstalled","useYarn","isInDevelopmentMode","strapiAppVersion","attributes","trackUsage","useTracking","commandToCopy","npmPackageName","madeByStrapiMessage","npmPackageHref","pluralize","plural","slug","versionRange","semver","validRange","strapiVersion","isCompatible","satisfies","justifyContent","paddingTop","paddingRight","paddingBottom","paddingLeft","hasRadius","background","shadow","height","tag","src","logo","url","alt","name","width","PackageStats","githubStars","npmDownloads","validated","madeByStrapi","Tooltip","description","CheckCircle","fill","StrapiLogo","textColor","style","alignSelf","LinkButton","size","href","isExternal","endIcon","ExternalLink","pluginName","InstallPluginButton","strapiPeerDepVersion","toggleNotification","useNotification","copy","useClipboard","handleCopy","didCopy","type","Check","color","fontWeight","CardButton","installMessage","label","span","Duplicate","disabled","_Fragment","GitHub","aria-hidden","Star","p","starsCount","package","VerticalDivider","Download","downloadsCount","Divider","NpmPackagesGrid","status","npmPackages","installedPackageNames","debouncedSearch","Page","Error","Loading","emptySearchMessage","target","position","Layouts","Grid","Array","_","idx","EmptyPluginCard","top","EmptyDocuments","Item","col","s","xs","includes","theme","colors","neutral150","PageHeader","isOnline","tracking","Header","title","subtitle","primaryAction","Upload","OfflineLayout","Main","svg","viewBox","xmlns","rect","x","y","rx","path","d","stroke","SORT_TYPES","selected","option","SortSelect","sortQuery","SelectWrapper","SingleSelect","sortName","sort","messages","SingleSelectOption","fontWeights","semiBold","fontSizes","MARKETPLACE_API_URL","useMarketplaceData","tabQuery","notifyStatus","useNotifyAT","marketplaceTitle","notifyMarketplaceLoad","paginationParams","page","pageSize","pluginParams","plugin","pagination","search","version","data","pluginsResponse","pluginsStatus","useQuery","queryString","qs","stringify","res","fetch","ok","json","error","onSuccess","onError","providerParams","provider","providersResponse","providersStatus","npmPackageTypeResponse","meta","useNavigatorOnline","onlineStatus","navigator","onLine","setIsOnline","setOnline","setOffline","window","addEventListener","removeEventListener","PLUGIN","PROVIDER","MarketplacePage","setQuery","useQueryParams","autoReload","dependencies","useAppInfo","state","setTabQuery","handleTabChange","tab","selectedTab","hasTabQuery","keys","prev","undefined","handleSortSelectChange","Title","Tabs","onValueChange","List","total","Searchbar","e","clearLabel","Pagination","defaultPageSize","PageSize","options","Links","a","rel","textDecoration","ContentBox","GlassesSquare","iconBackground","endAction","marginLeft","ProtectedMarketplacePage","permissions","useTypedSelector","admin_app","marketplace","main","Protect"],"mappings":"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"}
@@ -4,8 +4,8 @@ import { Popover, Button, Flex, Box, Tag, MultiSelect, MultiSelectOption, Typogr
4
4
  import { Filter, Cross, CheckCircle, ExternalLink, Check, Duplicate, Star, Download, Upload } from '@strapi/icons';
5
5
  import { GitHub, EmptyDocuments, GlassesSquare } from '@strapi/icons/symbols';
6
6
  import { useIntl } from 'react-intl';
7
- import { y as img, t as useClipboard, b as Layouts, P as Pagination, v as ContentBox } from './index-BUGouNML.mjs';
8
- import { c as useTracking, a as useNotification, P as Page, b as useTypedSelector, n as useQueryParams, p as useAppInfo } from './Theme-CDaBfQ-7.mjs';
7
+ import { y as img, t as useClipboard, b as Layouts, P as Pagination, v as ContentBox } from './index-BM8-DG5K.mjs';
8
+ import { c as useTracking, a as useNotification, P as Page, b as useTypedSelector, n as useQueryParams, p as useAppInfo } from './Theme-C3oHrQcy.mjs';
9
9
  import { styled } from 'styled-components';
10
10
  import pluralize from 'pluralize';
11
11
  import * as semver from 'semver';
@@ -1131,4 +1131,4 @@ const ProtectedMarketplacePage = ()=>{
1131
1131
  };
1132
1132
 
1133
1133
  export { MarketplacePage, ProtectedMarketplacePage };
1134
- //# sourceMappingURL=MarketplacePage-BrHNQ8SG.mjs.map
1134
+ //# sourceMappingURL=MarketplacePage-CcAYozK2.mjs.map