@strapi/admin 5.13.1 → 5.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) hide show
  1. package/dist/admin/admin/src/assets/images/free-trial.png.js +6 -0
  2. package/dist/admin/admin/src/assets/images/free-trial.png.js.map +1 -0
  3. package/dist/admin/admin/src/assets/images/free-trial.png.mjs +4 -0
  4. package/dist/admin/admin/src/assets/images/free-trial.png.mjs.map +1 -0
  5. package/dist/admin/admin/src/components/ConfirmDialog.js +2 -2
  6. package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
  7. package/dist/admin/admin/src/components/ContentBox.js +3 -3
  8. package/dist/admin/admin/src/components/ContentBox.js.map +1 -1
  9. package/dist/admin/admin/src/components/ErrorElement.js +3 -3
  10. package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
  11. package/dist/admin/admin/src/components/GradientBadge.js +37 -0
  12. package/dist/admin/admin/src/components/GradientBadge.js.map +1 -0
  13. package/dist/admin/admin/src/components/GradientBadge.mjs +35 -0
  14. package/dist/admin/admin/src/components/GradientBadge.mjs.map +1 -0
  15. package/dist/admin/admin/src/components/GuidedTour/Modal.js +3 -3
  16. package/dist/admin/admin/src/components/GuidedTour/Modal.js.map +1 -1
  17. package/dist/admin/admin/src/components/Layouts/GridLayout.js +2 -2
  18. package/dist/admin/admin/src/components/Layouts/GridLayout.js.map +1 -1
  19. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +1 -1
  20. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
  21. package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs +1 -1
  22. package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs.map +1 -1
  23. package/dist/admin/admin/src/components/Layouts/Layout.js +3 -3
  24. package/dist/admin/admin/src/components/Layouts/Layout.js.map +1 -1
  25. package/dist/admin/admin/src/components/LeftMenu.js +7 -5
  26. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  27. package/dist/admin/admin/src/components/LeftMenu.mjs +3 -1
  28. package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
  29. package/dist/admin/admin/src/components/MainNav/MainNav.js +2 -2
  30. package/dist/admin/admin/src/components/MainNav/MainNav.js.map +1 -1
  31. package/dist/admin/admin/src/components/MainNav/NavBrand.js +2 -2
  32. package/dist/admin/admin/src/components/MainNav/NavBrand.js.map +1 -1
  33. package/dist/admin/admin/src/components/MainNav/NavLink.js +3 -3
  34. package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
  35. package/dist/admin/admin/src/components/MainNav/NavUser.js +8 -8
  36. package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
  37. package/dist/admin/admin/src/components/MainNav/TrialCountdown.js +114 -0
  38. package/dist/admin/admin/src/components/MainNav/TrialCountdown.js.map +1 -0
  39. package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs +112 -0
  40. package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs.map +1 -0
  41. package/dist/admin/admin/src/components/NpsSurvey.js +2 -2
  42. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  43. package/dist/admin/admin/src/components/SubNav.js +269 -0
  44. package/dist/admin/admin/src/components/SubNav.js.map +1 -0
  45. package/dist/admin/admin/src/components/SubNav.mjs +267 -0
  46. package/dist/admin/admin/src/components/SubNav.mjs.map +1 -0
  47. package/dist/admin/admin/src/components/Table.js +2 -2
  48. package/dist/admin/admin/src/components/Table.js.map +1 -1
  49. package/dist/admin/admin/src/components/Theme.js +2 -2
  50. package/dist/admin/admin/src/components/Theme.js.map +1 -1
  51. package/dist/admin/admin/src/components/UnauthenticatedLogo.js +2 -2
  52. package/dist/admin/admin/src/components/UnauthenticatedLogo.js.map +1 -1
  53. package/dist/admin/admin/src/components/UpsellBanner.js +113 -0
  54. package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -0
  55. package/dist/admin/admin/src/components/UpsellBanner.mjs +111 -0
  56. package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -0
  57. package/dist/admin/admin/src/features/Auth.js +8 -2
  58. package/dist/admin/admin/src/features/Auth.js.map +1 -1
  59. package/dist/admin/admin/src/features/Auth.mjs +8 -2
  60. package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
  61. package/dist/admin/admin/src/hooks/useQueryParams.js +7 -1
  62. package/dist/admin/admin/src/hooks/useQueryParams.js.map +1 -1
  63. package/dist/admin/admin/src/hooks/useQueryParams.mjs +8 -2
  64. package/dist/admin/admin/src/hooks/useQueryParams.mjs.map +1 -1
  65. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +2 -0
  66. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  67. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +2 -0
  68. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  69. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js +3 -3
  70. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js.map +1 -1
  71. package/dist/admin/admin/src/pages/Auth/components/Register.js +2 -2
  72. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  73. package/dist/admin/admin/src/pages/Home/HomePage.js +4 -0
  74. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  75. package/dist/admin/admin/src/pages/Home/HomePage.mjs +4 -0
  76. package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
  77. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +183 -0
  78. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -0
  79. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs +181 -0
  80. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -0
  81. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +128 -0
  82. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -0
  83. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs +126 -0
  84. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs.map +1 -0
  85. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.js +3 -3
  86. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.js.map +1 -1
  87. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesGrid.js +2 -2
  88. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesGrid.js.map +1 -1
  89. package/dist/admin/admin/src/pages/Marketplace/components/SortSelect.js +2 -2
  90. package/dist/admin/admin/src/pages/Marketplace/components/SortSelect.js.map +1 -1
  91. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +31 -30
  92. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  93. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +33 -32
  94. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  95. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +2 -2
  96. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  97. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +2 -2
  98. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
  99. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +4 -4
  100. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  101. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +2 -2
  102. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
  103. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +2 -2
  104. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
  105. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.js +2 -2
  106. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.js.map +1 -1
  107. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +10 -10
  108. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  109. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js +3 -3
  110. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js.map +1 -1
  111. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +5 -5
  112. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  113. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.js +2 -2
  114. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.js.map +1 -1
  115. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +3 -3
  116. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  117. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js +3 -3
  118. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js.map +1 -1
  119. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js +2 -2
  120. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js.map +1 -1
  121. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +2 -2
  122. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
  123. package/dist/admin/admin/src/render.js +3 -1
  124. package/dist/admin/admin/src/render.js.map +1 -1
  125. package/dist/admin/admin/src/render.mjs +3 -1
  126. package/dist/admin/admin/src/render.mjs.map +1 -1
  127. package/dist/admin/admin/src/services/admin.js +13 -2
  128. package/dist/admin/admin/src/services/admin.js.map +1 -1
  129. package/dist/admin/admin/src/services/admin.mjs +13 -3
  130. package/dist/admin/admin/src/services/admin.mjs.map +1 -1
  131. package/dist/admin/admin/src/translations/ar.json.js +1 -0
  132. package/dist/admin/admin/src/translations/ar.json.js.map +1 -1
  133. package/dist/admin/admin/src/translations/ar.json.mjs +1 -0
  134. package/dist/admin/admin/src/translations/ar.json.mjs.map +1 -1
  135. package/dist/admin/admin/src/translations/ca.json.js +1 -0
  136. package/dist/admin/admin/src/translations/ca.json.js.map +1 -1
  137. package/dist/admin/admin/src/translations/ca.json.mjs +1 -0
  138. package/dist/admin/admin/src/translations/ca.json.mjs.map +1 -1
  139. package/dist/admin/admin/src/translations/de.json.js +1 -0
  140. package/dist/admin/admin/src/translations/de.json.js.map +1 -1
  141. package/dist/admin/admin/src/translations/de.json.mjs +1 -0
  142. package/dist/admin/admin/src/translations/de.json.mjs.map +1 -1
  143. package/dist/admin/admin/src/translations/dk.json.js +1 -0
  144. package/dist/admin/admin/src/translations/dk.json.js.map +1 -1
  145. package/dist/admin/admin/src/translations/dk.json.mjs +1 -0
  146. package/dist/admin/admin/src/translations/dk.json.mjs.map +1 -1
  147. package/dist/admin/admin/src/translations/en.json.js +19 -0
  148. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  149. package/dist/admin/admin/src/translations/en.json.mjs +19 -0
  150. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  151. package/dist/admin/admin/src/translations/es.json.js +1 -0
  152. package/dist/admin/admin/src/translations/es.json.js.map +1 -1
  153. package/dist/admin/admin/src/translations/es.json.mjs +1 -0
  154. package/dist/admin/admin/src/translations/es.json.mjs.map +1 -1
  155. package/dist/admin/admin/src/translations/eu.json.js +1 -0
  156. package/dist/admin/admin/src/translations/eu.json.js.map +1 -1
  157. package/dist/admin/admin/src/translations/eu.json.mjs +1 -0
  158. package/dist/admin/admin/src/translations/eu.json.mjs.map +1 -1
  159. package/dist/admin/admin/src/translations/fr.json.js +1 -0
  160. package/dist/admin/admin/src/translations/fr.json.js.map +1 -1
  161. package/dist/admin/admin/src/translations/fr.json.mjs +1 -0
  162. package/dist/admin/admin/src/translations/fr.json.mjs.map +1 -1
  163. package/dist/admin/admin/src/translations/gu.json.js +1 -0
  164. package/dist/admin/admin/src/translations/gu.json.js.map +1 -1
  165. package/dist/admin/admin/src/translations/gu.json.mjs +1 -0
  166. package/dist/admin/admin/src/translations/gu.json.mjs.map +1 -1
  167. package/dist/admin/admin/src/translations/hi.json.js +1 -0
  168. package/dist/admin/admin/src/translations/hi.json.js.map +1 -1
  169. package/dist/admin/admin/src/translations/hi.json.mjs +1 -0
  170. package/dist/admin/admin/src/translations/hi.json.mjs.map +1 -1
  171. package/dist/admin/admin/src/translations/hu.json.js +1 -0
  172. package/dist/admin/admin/src/translations/hu.json.js.map +1 -1
  173. package/dist/admin/admin/src/translations/hu.json.mjs +1 -0
  174. package/dist/admin/admin/src/translations/hu.json.mjs.map +1 -1
  175. package/dist/admin/admin/src/translations/ja.json.js +1 -0
  176. package/dist/admin/admin/src/translations/ja.json.js.map +1 -1
  177. package/dist/admin/admin/src/translations/ja.json.mjs +1 -0
  178. package/dist/admin/admin/src/translations/ja.json.mjs.map +1 -1
  179. package/dist/admin/admin/src/translations/ko.json.js +1 -0
  180. package/dist/admin/admin/src/translations/ko.json.js.map +1 -1
  181. package/dist/admin/admin/src/translations/ko.json.mjs +1 -0
  182. package/dist/admin/admin/src/translations/ko.json.mjs.map +1 -1
  183. package/dist/admin/admin/src/translations/ml.json.js +1 -0
  184. package/dist/admin/admin/src/translations/ml.json.js.map +1 -1
  185. package/dist/admin/admin/src/translations/ml.json.mjs +1 -0
  186. package/dist/admin/admin/src/translations/ml.json.mjs.map +1 -1
  187. package/dist/admin/admin/src/translations/nl.json.js +1 -0
  188. package/dist/admin/admin/src/translations/nl.json.js.map +1 -1
  189. package/dist/admin/admin/src/translations/nl.json.mjs +1 -0
  190. package/dist/admin/admin/src/translations/nl.json.mjs.map +1 -1
  191. package/dist/admin/admin/src/translations/pl.json.js +1 -0
  192. package/dist/admin/admin/src/translations/pl.json.js.map +1 -1
  193. package/dist/admin/admin/src/translations/pl.json.mjs +1 -0
  194. package/dist/admin/admin/src/translations/pl.json.mjs.map +1 -1
  195. package/dist/admin/admin/src/translations/pt-BR.json.js +1 -0
  196. package/dist/admin/admin/src/translations/pt-BR.json.js.map +1 -1
  197. package/dist/admin/admin/src/translations/pt-BR.json.mjs +1 -0
  198. package/dist/admin/admin/src/translations/pt-BR.json.mjs.map +1 -1
  199. package/dist/admin/admin/src/translations/ru.json.js +1 -0
  200. package/dist/admin/admin/src/translations/ru.json.js.map +1 -1
  201. package/dist/admin/admin/src/translations/ru.json.mjs +1 -0
  202. package/dist/admin/admin/src/translations/ru.json.mjs.map +1 -1
  203. package/dist/admin/admin/src/translations/sa.json.js +1 -0
  204. package/dist/admin/admin/src/translations/sa.json.js.map +1 -1
  205. package/dist/admin/admin/src/translations/sa.json.mjs +1 -0
  206. package/dist/admin/admin/src/translations/sa.json.mjs.map +1 -1
  207. package/dist/admin/admin/src/translations/sk.json.js +1 -0
  208. package/dist/admin/admin/src/translations/sk.json.js.map +1 -1
  209. package/dist/admin/admin/src/translations/sk.json.mjs +1 -0
  210. package/dist/admin/admin/src/translations/sk.json.mjs.map +1 -1
  211. package/dist/admin/admin/src/translations/sv.json.js +1 -0
  212. package/dist/admin/admin/src/translations/sv.json.js.map +1 -1
  213. package/dist/admin/admin/src/translations/sv.json.mjs +1 -0
  214. package/dist/admin/admin/src/translations/sv.json.mjs.map +1 -1
  215. package/dist/admin/admin/src/translations/tr.json.js +1 -0
  216. package/dist/admin/admin/src/translations/tr.json.js.map +1 -1
  217. package/dist/admin/admin/src/translations/tr.json.mjs +1 -0
  218. package/dist/admin/admin/src/translations/tr.json.mjs.map +1 -1
  219. package/dist/admin/admin/src/translations/uk.json.js +1 -0
  220. package/dist/admin/admin/src/translations/uk.json.js.map +1 -1
  221. package/dist/admin/admin/src/translations/uk.json.mjs +1 -0
  222. package/dist/admin/admin/src/translations/uk.json.mjs.map +1 -1
  223. package/dist/admin/admin/src/translations/zh-Hans.json.js +1 -0
  224. package/dist/admin/admin/src/translations/zh-Hans.json.js.map +1 -1
  225. package/dist/admin/admin/src/translations/zh-Hans.json.mjs +1 -0
  226. package/dist/admin/admin/src/translations/zh-Hans.json.mjs.map +1 -1
  227. package/dist/admin/admin/src/translations/zh.json.js +1 -0
  228. package/dist/admin/admin/src/translations/zh.json.js.map +1 -1
  229. package/dist/admin/admin/src/translations/zh.json.mjs +1 -0
  230. package/dist/admin/admin/src/translations/zh.json.mjs.map +1 -1
  231. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js +2 -1
  232. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js.map +1 -1
  233. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.mjs +2 -1
  234. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.mjs.map +1 -1
  235. package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js +2 -2
  236. package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js.map +1 -1
  237. package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js +2 -2
  238. package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js.map +1 -1
  239. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js +3 -3
  240. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js.map +1 -1
  241. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js +2 -2
  242. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
  243. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +7 -0
  244. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
  245. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs +7 -0
  246. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
  247. package/dist/admin/index.js +4 -0
  248. package/dist/admin/index.js.map +1 -1
  249. package/dist/admin/index.mjs +2 -0
  250. package/dist/admin/index.mjs.map +1 -1
  251. package/dist/admin/src/components/GradientBadge.d.ts +4 -0
  252. package/dist/admin/src/components/MainNav/TrialCountdown.d.ts +2 -0
  253. package/dist/admin/src/components/SubNav.d.ts +33 -0
  254. package/dist/admin/src/components/UpsellBanner.d.ts +2 -0
  255. package/dist/admin/src/index.d.ts +2 -0
  256. package/dist/admin/src/pages/Home/components/FreeTrialEndedModal.d.ts +1 -0
  257. package/dist/admin/src/pages/Home/components/FreeTrialWelcomeModal.d.ts +1 -0
  258. package/dist/admin/src/services/admin.d.ts +8 -6
  259. package/dist/ee/admin/src/hooks/useLicenseLimits.d.ts +2 -0
  260. package/dist/ee/server/src/controllers/admin.d.ts +3 -0
  261. package/dist/ee/server/src/controllers/admin.d.ts.map +1 -1
  262. package/dist/ee/server/src/controllers/index.d.ts +3 -0
  263. package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
  264. package/dist/ee/server/src/index.d.ts +6 -0
  265. package/dist/ee/server/src/index.d.ts.map +1 -1
  266. package/dist/server/ee/server/src/controllers/admin.js +2 -0
  267. package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
  268. package/dist/server/ee/server/src/controllers/admin.mjs +2 -0
  269. package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
  270. package/dist/server/server/src/controllers/admin.js +6 -0
  271. package/dist/server/server/src/controllers/admin.js.map +1 -1
  272. package/dist/server/server/src/controllers/admin.mjs +6 -0
  273. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  274. package/dist/server/server/src/routes/admin.js +10 -0
  275. package/dist/server/server/src/routes/admin.js.map +1 -1
  276. package/dist/server/server/src/routes/admin.mjs +10 -0
  277. package/dist/server/server/src/routes/admin.mjs.map +1 -1
  278. package/dist/server/server/src/services/content-type.js +10 -15
  279. package/dist/server/server/src/services/content-type.js.map +1 -1
  280. package/dist/server/server/src/services/content-type.mjs +11 -16
  281. package/dist/server/server/src/services/content-type.mjs.map +1 -1
  282. package/dist/server/src/controllers/admin.d.ts +3 -0
  283. package/dist/server/src/controllers/admin.d.ts.map +1 -1
  284. package/dist/server/src/controllers/index.d.ts +3 -0
  285. package/dist/server/src/controllers/index.d.ts.map +1 -1
  286. package/dist/server/src/index.d.ts +3 -0
  287. package/dist/server/src/index.d.ts.map +1 -1
  288. package/dist/server/src/routes/admin.d.ts.map +1 -1
  289. package/dist/server/src/services/content-type.d.ts +1 -1
  290. package/dist/server/src/services/content-type.d.ts.map +1 -1
  291. package/dist/server/src/validation/project-settings.d.ts +4 -4
  292. package/dist/shared/contracts/admin.d.ts +1 -0
  293. package/dist/shared/contracts/admin.d.ts.map +1 -1
  294. package/package.json +12 -12
@@ -0,0 +1,126 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useState } from 'react';
3
+ import { Modal, Button, Box, Flex, Typography } from '@strapi/design-system';
4
+ import { Cross } from '@strapi/icons';
5
+ import { useIntl } from 'react-intl';
6
+ import styled from 'styled-components';
7
+ import { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits.mjs';
8
+ import img from '../../../assets/images/free-trial.png.mjs';
9
+ import { usePersistentState } from '../../../hooks/usePersistentState.mjs';
10
+
11
+ const StyledModalContent = styled(Modal.Content)`
12
+ max-width: 51.6rem;
13
+ `;
14
+ const StyledModalBody = styled(Modal.Body)`
15
+ padding: 0;
16
+ position: relative;
17
+
18
+ > div {
19
+ padding: 0;
20
+ }
21
+ `;
22
+ const StyledButton = styled(Button)`
23
+ border: 0;
24
+ border-radius: 50%;
25
+
26
+ > span {
27
+ line-height: 0;
28
+ }
29
+ `;
30
+ const FreeTrialWelcomeModal = ()=>{
31
+ const { formatMessage } = useIntl();
32
+ const [open, setOpen] = useState(true);
33
+ const [previouslyOpen, setPreviouslyOpen] = usePersistentState('STRAPI_FREE_TRIAL_WELCOME_MODAL', false);
34
+ const { license } = useLicenseLimits();
35
+ const handleClose = ()=>{
36
+ setPreviouslyOpen(true);
37
+ setOpen(false);
38
+ };
39
+ const handleOnOpenChange = (isOpen)=>{
40
+ if (!isOpen) {
41
+ setPreviouslyOpen(true);
42
+ }
43
+ setOpen(isOpen);
44
+ };
45
+ if (previouslyOpen || !license?.isTrial) {
46
+ return null;
47
+ }
48
+ return /*#__PURE__*/ jsx(Modal.Root, {
49
+ open: open,
50
+ onOpenChange: handleOnOpenChange,
51
+ children: /*#__PURE__*/ jsx(StyledModalContent, {
52
+ "aria-labelledby": "title",
53
+ children: /*#__PURE__*/ jsxs(StyledModalBody, {
54
+ children: [
55
+ /*#__PURE__*/ jsx(Box, {
56
+ position: "absolute",
57
+ top: 0,
58
+ right: 0,
59
+ padding: 2,
60
+ children: /*#__PURE__*/ jsx(StyledButton, {
61
+ "aria-label": formatMessage({
62
+ id: 'app.utils.close-label',
63
+ defaultMessage: 'Close'
64
+ }),
65
+ variant: "tertiary",
66
+ width: "2.4rem",
67
+ height: "2.4rem",
68
+ onClick: handleClose,
69
+ children: /*#__PURE__*/ jsx(Cross, {})
70
+ })
71
+ }),
72
+ /*#__PURE__*/ jsx("img", {
73
+ src: img,
74
+ alt: "free-trial",
75
+ width: "100%",
76
+ height: "100%"
77
+ }),
78
+ /*#__PURE__*/ jsxs(Flex, {
79
+ direction: "column",
80
+ alignItems: "start",
81
+ justifyContent: "stretch",
82
+ padding: 8,
83
+ gap: 4,
84
+ children: [
85
+ /*#__PURE__*/ jsx(Typography, {
86
+ variant: "alpha",
87
+ fontWeight: "bold",
88
+ fontSize: 4,
89
+ id: "title",
90
+ children: formatMessage({
91
+ id: 'app.components.FreeTrialWelcomeModal.title',
92
+ defaultMessage: "We're glad to have you on board"
93
+ })
94
+ }),
95
+ /*#__PURE__*/ jsx(Typography, {
96
+ children: formatMessage({
97
+ id: 'app.components.FreeTrialWelcomeModal.description1',
98
+ defaultMessage: 'For the next 30 days, you will have full access to advanced features like Content History, Releases and Single Sign-On (SSO) – everything you need to explore the power of Strapi CMS.'
99
+ })
100
+ }),
101
+ /*#__PURE__*/ jsx(Typography, {
102
+ children: formatMessage({
103
+ id: 'app.components.FreeTrialWelcomeModal.description2',
104
+ defaultMessage: 'Use this time to build, customize, and test your content workflows with complete flexibility!'
105
+ })
106
+ }),
107
+ /*#__PURE__*/ jsx(Box, {
108
+ marginTop: 4,
109
+ children: /*#__PURE__*/ jsx(Button, {
110
+ onClick: handleClose,
111
+ children: formatMessage({
112
+ id: 'app.components.FreeTrialWelcomeModal.button',
113
+ defaultMessage: 'Start exploring'
114
+ })
115
+ })
116
+ })
117
+ ]
118
+ })
119
+ ]
120
+ })
121
+ })
122
+ });
123
+ };
124
+
125
+ export { FreeTrialWelcomeModal };
126
+ //# sourceMappingURL=FreeTrialWelcomeModal.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FreeTrialWelcomeModal.mjs","sources":["../../../../../../../admin/src/pages/Home/components/FreeTrialWelcomeModal.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { Box, Button, Flex, Modal, Typography } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport lightIllustration from '../../../assets/images/free-trial.png';\nimport { usePersistentState } from '../../../hooks/usePersistentState';\n\nconst StyledModalContent = styled(Modal.Content)`\n max-width: 51.6rem;\n`;\n\nconst StyledModalBody = styled(Modal.Body)`\n padding: 0;\n position: relative;\n\n > div {\n padding: 0;\n }\n`;\n\nconst StyledButton = styled(Button)`\n border: 0;\n border-radius: 50%;\n\n > span {\n line-height: 0;\n }\n`;\n\nexport const FreeTrialWelcomeModal = () => {\n const { formatMessage } = useIntl();\n const [open, setOpen] = useState(true);\n const [previouslyOpen, setPreviouslyOpen] = usePersistentState(\n 'STRAPI_FREE_TRIAL_WELCOME_MODAL',\n false\n );\n const { license } = useLicenseLimits();\n\n const handleClose = () => {\n setPreviouslyOpen(true);\n setOpen(false);\n };\n\n const handleOnOpenChange = (isOpen: boolean) => {\n if (!isOpen) {\n setPreviouslyOpen(true);\n }\n\n setOpen(isOpen);\n };\n\n if (previouslyOpen || !license?.isTrial) {\n return null;\n }\n\n return (\n <Modal.Root open={open} onOpenChange={handleOnOpenChange}>\n <StyledModalContent aria-labelledby=\"title\">\n <StyledModalBody>\n <Box position=\"absolute\" top={0} right={0} padding={2}>\n <StyledButton\n aria-label={formatMessage({\n id: 'app.utils.close-label',\n defaultMessage: 'Close',\n })}\n variant=\"tertiary\"\n width=\"2.4rem\"\n height=\"2.4rem\"\n onClick={handleClose}\n >\n <Cross />\n </StyledButton>\n </Box>\n <img src={lightIllustration} alt=\"free-trial\" width=\"100%\" height=\"100%\" />\n <Flex direction=\"column\" alignItems=\"start\" justifyContent=\"stretch\" padding={8} gap={4}>\n <Typography variant=\"alpha\" fontWeight=\"bold\" fontSize={4} id=\"title\">\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.title',\n defaultMessage: \"We're glad to have you on board\",\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.description1',\n defaultMessage:\n 'For the next 30 days, you will have full access to advanced features like Content History, Releases and Single Sign-On (SSO) – everything you need to explore the power of Strapi CMS.',\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.description2',\n defaultMessage:\n 'Use this time to build, customize, and test your content workflows with complete flexibility!',\n })}\n </Typography>\n <Box marginTop={4}>\n <Button onClick={handleClose}>\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.button',\n defaultMessage: 'Start exploring',\n })}\n </Button>\n </Box>\n </Flex>\n </StyledModalBody>\n </StyledModalContent>\n </Modal.Root>\n );\n};\n"],"names":["StyledModalContent","styled","Modal","Content","StyledModalBody","Body","StyledButton","Button","FreeTrialWelcomeModal","formatMessage","useIntl","open","setOpen","useState","previouslyOpen","setPreviouslyOpen","usePersistentState","license","useLicenseLimits","handleClose","handleOnOpenChange","isOpen","isTrial","_jsx","Root","onOpenChange","aria-labelledby","_jsxs","Box","position","top","right","padding","aria-label","id","defaultMessage","variant","width","height","onClick","Cross","img","src","lightIllustration","alt","Flex","direction","alignItems","justifyContent","gap","Typography","fontWeight","fontSize","marginTop"],"mappings":"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"}
@@ -7,7 +7,7 @@ var symbols = require('@strapi/icons/symbols');
7
7
  var pluralize = require('pluralize');
8
8
  var reactIntl = require('react-intl');
9
9
  var semver = require('semver');
10
- var styledComponents = require('styled-components');
10
+ var styled = require('styled-components');
11
11
  var logoStrapi2022 = require('../../../assets/images/logo-strapi-2022.svg.js');
12
12
  var Notifications = require('../../../features/Notifications.js');
13
13
  var Tracking = require('../../../features/Tracking.js');
@@ -33,7 +33,7 @@ function _interopNamespaceDefault(e) {
33
33
  var semver__namespace = /*#__PURE__*/_interopNamespaceDefault(semver);
34
34
 
35
35
  // Custom component to have an ellipsis after the 2nd line
36
- const EllipsisText = styledComponents.styled(designSystem.Typography)`
36
+ const EllipsisText = styled.styled(designSystem.Typography)`
37
37
  display: -webkit-box;
38
38
  -webkit-box-orient: vertical;
39
39
  -webkit-line-clamp: 2;
@@ -320,7 +320,7 @@ const PackageStats = ({ githubStars = 0, npmDownloads = 0, npmPackageType })=>{
320
320
  ]
321
321
  });
322
322
  };
323
- const VerticalDivider = styledComponents.styled(designSystem.Divider)`
323
+ const VerticalDivider = styled.styled(designSystem.Divider)`
324
324
  width: 1.2rem;
325
325
  transform: rotate(90deg);
326
326
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"NpmPackageCard.js","sources":["../../../../../../../admin/src/pages/Marketplace/components/NpmPackageCard.tsx"],"sourcesContent":["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"],"names":["EllipsisText","styled","Typography","NpmPackageCard","npmPackage","isInstalled","useYarn","isInDevelopmentMode","npmPackageType","strapiAppVersion","attributes","formatMessage","useIntl","trackUsage","useTracking","commandToCopy","npmPackageName","madeByStrapiMessage","id","defaultMessage","npmPackageHref","pluralize","plural","slug","versionRange","semver","validRange","strapiVersion","isCompatible","satisfies","_jsxs","Flex","direction","justifyContent","paddingTop","paddingRight","paddingBottom","paddingLeft","hasRadius","background","shadow","height","alignItems","data-testid","Box","_jsx","tag","src","logo","url","alt","name","width","PackageStats","githubStars","npmDownloads","variant","gap","validated","madeByStrapi","Tooltip","description","CheckCircle","fill","StrapiLogo","textColor","style","alignSelf","LinkButton","size","href","isExternal","endIcon","ExternalLink","aria-label","pluginName","onClick","InstallPluginButton","strapiPeerDepVersion","toggleNotification","useNotification","copy","useClipboard","handleCopy","didCopy","type","message","Check","color","fontWeight","CardButton","installMessage","label","span","Button","startIcon","Duplicate","disabled","_Fragment","GitHub","aria-hidden","Star","p","starsCount","package","VerticalDivider","Download","downloadsCount","Divider"],"mappings":"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"}
1
+ {"version":3,"file":"NpmPackageCard.js","sources":["../../../../../../../admin/src/pages/Marketplace/components/NpmPackageCard.tsx"],"sourcesContent":["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"],"names":["EllipsisText","styled","Typography","NpmPackageCard","npmPackage","isInstalled","useYarn","isInDevelopmentMode","npmPackageType","strapiAppVersion","attributes","formatMessage","useIntl","trackUsage","useTracking","commandToCopy","npmPackageName","madeByStrapiMessage","id","defaultMessage","npmPackageHref","pluralize","plural","slug","versionRange","semver","validRange","strapiVersion","isCompatible","satisfies","_jsxs","Flex","direction","justifyContent","paddingTop","paddingRight","paddingBottom","paddingLeft","hasRadius","background","shadow","height","alignItems","data-testid","Box","_jsx","tag","src","logo","url","alt","name","width","PackageStats","githubStars","npmDownloads","variant","gap","validated","madeByStrapi","Tooltip","description","CheckCircle","fill","StrapiLogo","textColor","style","alignSelf","LinkButton","size","href","isExternal","endIcon","ExternalLink","aria-label","pluginName","onClick","InstallPluginButton","strapiPeerDepVersion","toggleNotification","useNotification","copy","useClipboard","handleCopy","didCopy","type","message","Check","color","fontWeight","CardButton","installMessage","label","span","Button","startIcon","Duplicate","disabled","_Fragment","GitHub","aria-hidden","Star","p","starsCount","package","VerticalDivider","Download","downloadsCount","Divider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA;AACA,MAAMA,YAAAA,GAAeC,aAAiCC,CAAAA,uBAAAA,CAAW;;;;;AAKjE,CAAC;AAUD,MAAMC,cAAiB,GAAA,CAAC,EACtBC,UAAU,EACVC,WAAW,EACXC,OAAO,EACPC,mBAAmB,EACnBC,cAAc,EACdC,gBAAgB,EACI,GAAA;IACpB,MAAM,EAAEC,UAAU,EAAE,GAAGN,UAAAA;IACvB,MAAM,EAAEO,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;AAEvB,IAAA,MAAMC,gBAAgBT,OAClB,GAAA,CAAC,SAAS,EAAEI,WAAWM,cAAc,CAAC,CAAC,GACvC,CAAC,YAAY,EAAEN,UAAWM,CAAAA,cAAc,CAAC,CAAC;AAE9C,IAAA,MAAMC,sBAAsBN,aAAc,CAAA;QACxCO,EAAI,EAAA,yDAAA;QACJC,cAAgB,EAAA;AAClB,KAAA,CAAA;AAEA,IAAA,MAAMC,cAAiB,GAAA,CAAC,yBAAyB,EAAEC,SAAUC,CAAAA,MAAM,CAACd,cAAAA,CAAAA,CAAgB,CAAC,EACnFE,UAAWa,CAAAA,IAAI,CAChB,CAAC;AAEF,IAAA,MAAMC,YAAeC,GAAAA,iBAAAA,CAAOC,UAAU,CAAChB,WAAWiB,aAAa,CAAA;AAE/D,IAAA,MAAMC,eAAeJ,YACjBC,GAAAA,iBAAAA,CAAOI,SAAS,CAACpB,gBAAAA,IAAoB,IAAIe,YACzC,CAAA,GAAA,KAAA;AAEJ,IAAA,qBACEM,eAACC,CAAAA,iBAAAA,EAAAA;QACCC,SAAU,EAAA,QAAA;QACVC,cAAe,EAAA,eAAA;QACfC,UAAY,EAAA,CAAA;QACZC,YAAc,EAAA,CAAA;QACdC,aAAe,EAAA,CAAA;QACfC,WAAa,EAAA,CAAA;QACbC,SAAS,EAAA,IAAA;QACTC,UAAW,EAAA,UAAA;QACXC,MAAO,EAAA,aAAA;QACPC,MAAO,EAAA,MAAA;QACPC,UAAW,EAAA,QAAA;QACXC,aAAY,EAAA,kBAAA;;0BAEZb,eAACc,CAAAA,gBAAAA,EAAAA;;kCACCd,eAACC,CAAAA,iBAAAA,EAAAA;wBAAKC,SAAU,EAAA,KAAA;wBAAMC,cAAe,EAAA,eAAA;wBAAgBS,UAAW,EAAA,YAAA;;0CAC9DG,cAACD,CAAAA,gBAAAA,EAAAA;gCACCE,GAAI,EAAA,KAAA;gCACJC,GAAKrC,EAAAA,UAAAA,CAAWsC,IAAI,CAACC,GAAG;AACxBC,gCAAAA,GAAAA,EAAK,CAAC,EAAExC,UAAAA,CAAWyC,IAAI,CAAC,KAAK,CAAC;gCAC9Bb,SAAS,EAAA,IAAA;gCACTc,KAAO,EAAA,EAAA;gCACPX,MAAQ,EAAA;;0CAEVI,cAACQ,CAAAA,YAAAA,EAAAA;AACCC,gCAAAA,WAAAA,EAAa5C,WAAW4C,WAAW;AACnCC,gCAAAA,YAAAA,EAAc7C,WAAW6C,YAAY;gCACrC/C,cAAgBA,EAAAA;;;;kCAGpBqC,cAACD,CAAAA,gBAAAA,EAAAA;wBAAIV,UAAY,EAAA,CAAA;AACf,wBAAA,QAAA,gBAAAW,cAAC3C,CAAAA,uBAAAA,EAAAA;4BAAW4C,GAAI,EAAA,IAAA;4BAAKU,OAAQ,EAAA,OAAA;AAC3B,4BAAA,QAAA,gBAAA1B,eAACC,CAAAA,iBAAAA,EAAAA;gCACCW,UAAW,EAAA,QAAA;AACXe,gCAAAA,GAAAA,EAAK/C,WAAWgD,SAAS,IAAI,CAAChD,UAAWiD,CAAAA,YAAY,GAAG,CAAI,GAAA,CAAA;;AAE3DjD,oCAAAA,UAAAA,CAAWyC,IAAI;AACfzC,oCAAAA,UAAAA,CAAWgD,SAAS,IAAI,CAAChD,UAAWiD,CAAAA,YAAY,kBAC/Cd,cAACe,CAAAA,oBAAAA,EAAAA;AACCC,wCAAAA,WAAAA,EAAalD,aAAc,CAAA;4CACzBO,EAAI,EAAA,qDAAA;4CACJC,cAAgB,EAAA;AAClB,yCAAA,CAAA;AAEA,wCAAA,QAAA,gBAAA0B,cAACiB,CAAAA,iBAAAA,EAAAA;4CAAYC,IAAK,EAAA;;;oCAGrBrD,UAAWiD,CAAAA,YAAY,kBACtBd,cAACe,CAAAA,oBAAAA,EAAAA;wCAAQC,WAAa5C,EAAAA,mBAAAA;AACpB,wCAAA,QAAA,gBAAA4B,cAACD,CAAAA,gBAAAA,EAAAA;4CACCE,GAAI,EAAA,KAAA;4CACJC,GAAKiB,EAAAA,cAAAA;4CACLd,GAAKjC,EAAAA,mBAAAA;4CACLmC,KAAO,EAAA,CAAA;4CACPX,MAAO,EAAA;;;;;;;kCAOnBI,cAACD,CAAAA,gBAAAA,EAAAA;wBAAIV,UAAY,EAAA,CAAA;AACf,wBAAA,QAAA,gBAAAW,cAAC7C,CAAAA,YAAAA,EAAAA;4BAAa8C,GAAI,EAAA,GAAA;4BAAIU,OAAQ,EAAA,OAAA;4BAAQS,SAAU,EAAA,YAAA;AAC7CvD,4BAAAA,QAAAA,EAAAA,UAAAA,CAAWmD;;;;;0BAKlB/B,eAACC,CAAAA,iBAAAA,EAAAA;gBAAK0B,GAAK,EAAA,CAAA;gBAAGS,KAAO,EAAA;oBAAEC,SAAW,EAAA;AAAW,iBAAA;gBAAGjC,UAAY,EAAA,CAAA;;kCAC1DW,cAACuB,CAAAA,uBAAAA,EAAAA;wBACCC,IAAK,EAAA,GAAA;wBACLC,IAAMlD,EAAAA,cAAAA;wBACNmD,UAAU,EAAA,IAAA;AACVC,wBAAAA,OAAAA,gBAAS3B,cAAC4B,CAAAA,kBAAAA,EAAAA,EAAAA,CAAAA;AACVC,wBAAAA,YAAAA,EAAY/D,aACV,CAAA;4BACEO,EAAI,EAAA,+CAAA;4BACJC,cAAgB,EAAA;yBAElB,EAAA;AAAEwD,4BAAAA,UAAAA,EAAYjE,WAAWyC;AAAK,yBAAA,CAAA;wBAEhCK,OAAQ,EAAA,UAAA;AACRoB,wBAAAA,OAAAA,EAAS,IAAM/D,UAAW,CAAA,oBAAA,CAAA;kCAEzBF,aAAc,CAAA;4BACbO,EAAI,EAAA,8CAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA;;kCAEF0B,cAACgC,CAAAA,mBAAAA,EAAAA;wBACCxE,WAAaA,EAAAA,WAAAA;wBACbE,mBAAqBA,EAAAA,mBAAAA;wBACrBqB,YAAcA,EAAAA,YAAAA;wBACdb,aAAeA,EAAAA,aAAAA;wBACfN,gBAAkBA,EAAAA,gBAAAA;AAClBqE,wBAAAA,oBAAAA,EAAsBpE,WAAWiB,aAAa;AAC9CgD,wBAAAA,UAAAA,EAAYjE,WAAWyC;;;;;;AAKjC;AAcA,MAAM0B,sBAAsB,CAAC,EAC3BxE,WAAW,EACXE,mBAAmB,EACnBqB,YAAY,EACZb,aAAa,EACbN,gBAAgB,EAChBqE,oBAAoB,EACpBH,UAAU,EACe,GAAA;IACzB,MAAM,EAAEI,kBAAkB,EAAE,GAAGC,6BAAAA,EAAAA;IAC/B,MAAM,EAAErE,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;IACvB,MAAM,EAAEmE,IAAI,EAAE,GAAGC,yBAAAA,EAAAA;AAEjB,IAAA,MAAMC,UAAa,GAAA,UAAA;QACjB,MAAMC,OAAAA,GAAU,MAAMH,IAAKlE,CAAAA,aAAAA,CAAAA;AAE3B,QAAA,IAAIqE,OAAS,EAAA;YACXvE,UAAW,CAAA,mBAAA,CAAA;YACXkE,kBAAmB,CAAA;gBACjBM,IAAM,EAAA,SAAA;AACNC,gBAAAA,OAAAA,EAAS3E,aAAc,CAAA;oBAAEO,EAAI,EAAA;AAAkD,iBAAA;AACjF,aAAA,CAAA;AACF;AACF,KAAA;;AAGA,IAAA,IAAIb,WAAa,EAAA;AACf,QAAA,qBACEyB,eAACC,CAAAA,iBAAAA,EAAAA;YAAK0B,GAAK,EAAA,CAAA;YAAGpB,WAAa,EAAA,CAAA;;8BACzBQ,cAAC0C,CAAAA,WAAAA,EAAAA;oBAAMnC,KAAM,EAAA,QAAA;oBAASX,MAAO,EAAA,QAAA;oBAAS+C,KAAM,EAAA;;8BAC5C3C,cAAC3C,CAAAA,uBAAAA,EAAAA;oBAAWsD,OAAQ,EAAA,OAAA;oBAAQS,SAAU,EAAA,YAAA;oBAAawB,UAAW,EAAA,MAAA;8BAC3D9E,aAAc,CAAA;wBACbO,EAAI,EAAA,8CAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA;;;;AAIR;;IAGA,IAAIZ,mBAAAA,IAAuBqB,iBAAiB,KAAO,EAAA;AACjD,QAAA,qBACEiB,cAAC6C,CAAAA,UAAAA,EAAAA;YACCjF,gBAAkBA,EAAAA,gBAAAA;YAClBqE,oBAAsBA,EAAAA,oBAAAA;YACtBK,UAAYA,EAAAA,UAAAA;YACZR,UAAYA,EAAAA;;AAGlB;;IAGA,OAAO,IAAA;AACT,CAAA;AAYA,MAAMe,UAAAA,GAAa,CAAC,EAClBZ,oBAAoB,EACpBrE,gBAAgB,EAChB0E,UAAU,EACVR,UAAU,EACM,GAAA;IAChB,MAAM,EAAEhE,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAMY,YAAAA,GAAeC,iBAAOC,CAAAA,UAAU,CAACoD,oBAAAA,CAAAA;AACvC,IAAA,MAAMlD,eAAeH,iBAAOI,CAAAA,SAAS,CAACpB,gBAAAA,IAAoB,IAAIe,YAAgB,IAAA,EAAA,CAAA;AAE9E,IAAA,MAAMmE,iBAAiBhF,aAAc,CAAA;QACnCO,EAAI,EAAA,yCAAA;QACJC,cAAgB,EAAA;AAClB,KAAA,CAAA;;AAGA,IAAA,IAAIV,gBAAkB,EAAA;QACpB,IAAI,CAACe,YAAgB,IAAA,CAACI,YAAc,EAAA;AAClC,YAAA,qBACEiB,cAACe,CAAAA,oBAAAA,EAAAA;AACCjB,gBAAAA,aAAAA,EAAa,CAAC,QAAQ,EAAEgC,UAAAA,CAAW,CAAC;AACpCiB,gBAAAA,KAAAA,EAAOjF,aACL,CAAA;oBACEO,EAAI,EAAA,4CAAA;oBACJC,cACE,EAAA;iBAEJ,EAAA;AACEV,oBAAAA,gBAAAA;AACAe,oBAAAA;AACF,iBAAA,CAAA;AAGF,gBAAA,QAAA,gBAAAqB,cAACgD,CAAAA,MAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAAhD,cAACiD,CAAAA,mBAAAA,EAAAA;wBACCzB,IAAK,EAAA,GAAA;AACL0B,wBAAAA,SAAAA,gBAAWlD,cAACmD,CAAAA,eAAAA,EAAAA,EAAAA,CAAAA;wBACZxC,OAAQ,EAAA,WAAA;wBACRoB,OAASO,EAAAA,UAAAA;AACTc,wBAAAA,QAAAA,EAAU,CAACrE,YAAAA;AAEV+D,wBAAAA,QAAAA,EAAAA;;;;AAKX;AACF;AAEA,IAAA,qBACE9C,cAACiD,CAAAA,mBAAAA,EAAAA;QAAOzB,IAAK,EAAA,GAAA;AAAI0B,QAAAA,SAAAA,gBAAWlD,cAACmD,CAAAA,eAAAA,EAAAA,EAAAA,CAAAA;QAAcxC,OAAQ,EAAA,WAAA;QAAYoB,OAASO,EAAAA,UAAAA;AACrEQ,QAAAA,QAAAA,EAAAA;;AAGP,CAAA;AAYA,MAAMtC,YAAAA,GAAe,CAAC,EAAEC,WAAc,GAAA,CAAC,EAAEC,YAAe,GAAA,CAAC,EAAE/C,cAAc,EAAqB,GAAA;IAC5F,MAAM,EAAEG,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACEkB,eAACC,CAAAA,iBAAAA,EAAAA;QAAK0B,GAAK,EAAA,CAAA;;AACR,YAAA,CAAC,CAACH,WACD,kBAAAxB,eAAA,CAAAoE,mBAAA,EAAA;;kCACErD,cAACsD,CAAAA,cAAAA,EAAAA;wBAAO1D,MAAO,EAAA,QAAA;wBAASW,KAAM,EAAA,QAAA;wBAASgD,aAAW,EAAA;;kCAClDvD,cAACwD,CAAAA,UAAAA,EAAAA;wBAAK5D,MAAO,EAAA,QAAA;wBAASW,KAAM,EAAA,QAAA;wBAASW,IAAK,EAAA,YAAA;wBAAaqC,aAAW,EAAA;;kCAClEvD,cAACyD,CAAAA,GAAAA,EAAAA;AACC5B,wBAAAA,YAAAA,EAAY/D,aACV,CAAA;AACEO,4BAAAA,EAAAA,EAAI,CAAC,4BAA4B,EAAEV,cAAAA,CAAe,YAAY,CAAC;4BAC/DW,cAAgB,EAAA,CAAC,iDAAiD;yBAEpE,EAAA;4BACEoF,UAAYjD,EAAAA,WAAAA;4BACZkD,OAAShG,EAAAA;AACX,yBAAA,CAAA;AAGF,wBAAA,QAAA,gBAAAqC,cAAC3C,CAAAA,uBAAAA,EAAAA;4BAAWsD,OAAQ,EAAA,IAAA;4BAAKS,SAAU,EAAA,YAAA;AAChCX,4BAAAA,QAAAA,EAAAA;;;kCAGLT,cAAC4D,CAAAA,eAAAA,EAAAA,EAAAA;;;0BAGL5D,cAAC6D,CAAAA,cAAAA,EAAAA;gBAASjE,MAAO,EAAA,QAAA;gBAASW,KAAM,EAAA,QAAA;gBAASgD,aAAW,EAAA;;0BACpDvD,cAACyD,CAAAA,GAAAA,EAAAA;AACC5B,gBAAAA,YAAAA,EAAY/D,aACV,CAAA;AACEO,oBAAAA,EAAAA,EAAI,CAAC,4BAA4B,EAAEV,cAAAA,CAAe,UAAU,CAAC;oBAC7DW,cAAgB,EAAA,CAAC,oDAAoD;iBAEvE,EAAA;oBACEwF,cAAgBpD,EAAAA,YAAAA;oBAChBiD,OAAShG,EAAAA;AACX,iBAAA,CAAA;AAGF,gBAAA,QAAA,gBAAAqC,cAAC3C,CAAAA,uBAAAA,EAAAA;oBAAWsD,OAAQ,EAAA,IAAA;oBAAKS,SAAU,EAAA,YAAA;AAChCV,oBAAAA,QAAAA,EAAAA;;;;;AAKX,CAAA;AAEA,MAAMkD,eAAAA,GAAkBxG,aAAO2G,CAAAA,oBAAAA,CAAQ;;;AAGvC,CAAC;;;;"}
@@ -4,7 +4,7 @@ var jsxRuntime = require('react/jsx-runtime');
4
4
  var designSystem = require('@strapi/design-system');
5
5
  var symbols = require('@strapi/icons/symbols');
6
6
  var reactIntl = require('react-intl');
7
- var styledComponents = require('styled-components');
7
+ var styled = require('styled-components');
8
8
  var Layout = require('../../../components/Layouts/Layout.js');
9
9
  var PageHelpers = require('../../../components/PageHelpers.js');
10
10
  var NpmPackageCard = require('./NpmPackageCard.js');
@@ -84,7 +84,7 @@ const NpmPackagesGrid = ({ status, npmPackages = [], installedPackageNames = [],
84
84
  }, npmPackage.id))
85
85
  });
86
86
  };
87
- const EmptyPluginCard = styledComponents.styled(designSystem.Box)`
87
+ const EmptyPluginCard = styled.styled(designSystem.Box)`
88
88
  background: ${({ theme })=>`linear-gradient(180deg, rgba(234, 234, 239, 0) 0%, ${theme.colors.neutral150} 100%)`};
89
89
  opacity: 0.33;
90
90
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"NpmPackagesGrid.js","sources":["../../../../../../../admin/src/pages/Marketplace/components/NpmPackagesGrid.tsx"],"sourcesContent":["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"],"names":["NpmPackagesGrid","status","npmPackages","installedPackageNames","useYarn","isInDevelopmentMode","npmPackageType","strapiAppVersion","debouncedSearch","formatMessage","useIntl","_jsx","Page","Error","Loading","emptySearchMessage","id","defaultMessage","target","length","_jsxs","Box","position","Layouts","Grid","size","Array","fill","map","_","idx","EmptyPluginCard","height","hasRadius","top","width","Flex","alignItems","justifyContent","direction","EmptyDocuments","paddingTop","Typography","variant","tag","textColor","Root","gap","npmPackage","Item","col","s","xs","style","NpmPackageCard","isInstalled","includes","attributes","npmPackageName","styled","theme","colors","neutral150"],"mappings":"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"}
1
+ {"version":3,"file":"NpmPackagesGrid.js","sources":["../../../../../../../admin/src/pages/Marketplace/components/NpmPackagesGrid.tsx"],"sourcesContent":["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"],"names":["NpmPackagesGrid","status","npmPackages","installedPackageNames","useYarn","isInDevelopmentMode","npmPackageType","strapiAppVersion","debouncedSearch","formatMessage","useIntl","_jsx","Page","Error","Loading","emptySearchMessage","id","defaultMessage","target","length","_jsxs","Box","position","Layouts","Grid","size","Array","fill","map","_","idx","EmptyPluginCard","height","hasRadius","top","width","Flex","alignItems","justifyContent","direction","EmptyDocuments","paddingTop","Typography","variant","tag","textColor","Root","gap","npmPackage","Item","col","s","xs","style","NpmPackageCard","isInstalled","includes","attributes","npmPackageName","styled","theme","colors","neutral150"],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var designSystem = require('@strapi/design-system');
5
5
  var reactIntl = require('react-intl');
6
- var styledComponents = require('styled-components');
6
+ var styled = require('styled-components');
7
7
 
8
8
  const SORT_TYPES = {
9
9
  'name:asc': {
@@ -73,7 +73,7 @@ const SortSelect = ({ sortQuery, handleSelectChange })=>{
73
73
  })
74
74
  });
75
75
  };
76
- const SelectWrapper = styledComponents.styled(designSystem.Box)`
76
+ const SelectWrapper = styled.styled(designSystem.Box)`
77
77
  font-weight: ${({ theme })=>theme.fontWeights.semiBold};
78
78
 
79
79
  span {
@@ -1 +1 @@
1
- {"version":3,"file":"SortSelect.js","sources":["../../../../../../../admin/src/pages/Marketplace/components/SortSelect.tsx"],"sourcesContent":["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"],"names":["SORT_TYPES","selected","id","defaultMessage","option","SortSelect","sortQuery","handleSelectChange","formatMessage","useIntl","_jsx","SelectWrapper","SingleSelect","value","customizeContent","onChange","sortName","sort","aria-label","size","Object","entries","map","messages","SingleSelectOption","styled","Box","theme","fontWeights","semiBold","fontSizes"],"mappings":";;;;;;;AAIA,MAAMA,UAAa,GAAA;IACjB,UAAY,EAAA;QACVC,QAAU,EAAA;YACRC,EAAI,EAAA,wDAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAC,MAAQ,EAAA;YACNF,EAAI,EAAA,+CAAA;YACJC,cAAgB,EAAA;AAClB;AACF,KAAA;IACA,qBAAuB,EAAA;QACrBF,QAAU,EAAA;YACRC,EAAI,EAAA,kDAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAC,MAAQ,EAAA;YACNF,EAAI,EAAA,yCAAA;YACJC,cAAgB,EAAA;AAClB;AACF,KAAA;IACA,kBAAoB,EAAA;QAClBF,QAAU,EAAA;YACRC,EAAI,EAAA,uDAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAC,MAAQ,EAAA;YACNF,EAAI,EAAA,8CAAA;YACJC,cAAgB,EAAA;AAClB;AACF,KAAA;IACA,mBAAqB,EAAA;QACnBF,QAAU,EAAA;YACRC,EAAI,EAAA,wDAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAC,MAAQ,EAAA;YACNF,EAAI,EAAA,+CAAA;YACJC,cAAgB,EAAA;AAClB;AACF;AACF,CAAA;AAOA,MAAME,aAAa,CAAC,EAAEC,SAAS,EAAEC,kBAAkB,EAAmB,GAAA;IACpE,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACEC,cAACC,CAAAA,aAAAA,EAAAA;AACC,QAAA,QAAA,gBAAAD,cAACE,CAAAA,yBAAAA,EAAAA;YACCC,KAAOP,EAAAA,SAAAA;AACPQ,YAAAA,gBAAAA,EAAkB,IAAMN,aAAcR,CAAAA,UAAU,CAACM,SAAAA,CAAU,CAACL,QAAQ,CAAA;AACpEc,YAAAA,QAAAA,EAAU,CAACC,QAAAA,GAAAA;;gBAETT,kBAAmB,CAAA;oBAAEU,IAAMD,EAAAA;AAAS,iBAAA,CAAA;AACtC,aAAA;AACAE,YAAAA,YAAAA,EAAYV,aAAc,CAAA;gBACxBN,EAAI,EAAA,wCAAA;gBACJC,cAAgB,EAAA;AAClB,aAAA,CAAA;YACAgB,IAAK,EAAA,GAAA;sBAEJC,MAAOC,CAAAA,OAAO,CAACrB,UAAYsB,CAAAA,CAAAA,GAAG,CAAC,CAAC,CAACN,UAAUO,QAAS,CAAA,GAAA;AACnD,gBAAA,qBACEb,cAACc,CAAAA,+BAAAA,EAAAA;oBAAkCX,KAAOG,EAAAA,QAAAA;AACvCR,oBAAAA,QAAAA,EAAAA,aAAAA,CAAce,SAASnB,MAAM;AADPY,iBAAAA,EAAAA,QAAAA,CAAAA;AAI7B,aAAA;;;AAIR;AAEA,MAAML,aAAAA,GAAgBc,uBAAqBC,CAAAA,gBAAAA,CAAI;eAChC,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,WAAW,CAACC,QAAQ,CAAC;;;eAG5C,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAKA,KAAMG,CAAAA,SAAS,CAAC,CAAA,CAAE,CAAC;;AAEnD,CAAC;;;;"}
1
+ {"version":3,"file":"SortSelect.js","sources":["../../../../../../../admin/src/pages/Marketplace/components/SortSelect.tsx"],"sourcesContent":["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"],"names":["SORT_TYPES","selected","id","defaultMessage","option","SortSelect","sortQuery","handleSelectChange","formatMessage","useIntl","_jsx","SelectWrapper","SingleSelect","value","customizeContent","onChange","sortName","sort","aria-label","size","Object","entries","map","messages","SingleSelectOption","styled","Box","theme","fontWeights","semiBold","fontSizes"],"mappings":";;;;;;;AAIA,MAAMA,UAAa,GAAA;IACjB,UAAY,EAAA;QACVC,QAAU,EAAA;YACRC,EAAI,EAAA,wDAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAC,MAAQ,EAAA;YACNF,EAAI,EAAA,+CAAA;YACJC,cAAgB,EAAA;AAClB;AACF,KAAA;IACA,qBAAuB,EAAA;QACrBF,QAAU,EAAA;YACRC,EAAI,EAAA,kDAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAC,MAAQ,EAAA;YACNF,EAAI,EAAA,yCAAA;YACJC,cAAgB,EAAA;AAClB;AACF,KAAA;IACA,kBAAoB,EAAA;QAClBF,QAAU,EAAA;YACRC,EAAI,EAAA,uDAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAC,MAAQ,EAAA;YACNF,EAAI,EAAA,8CAAA;YACJC,cAAgB,EAAA;AAClB;AACF,KAAA;IACA,mBAAqB,EAAA;QACnBF,QAAU,EAAA;YACRC,EAAI,EAAA,wDAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAC,MAAQ,EAAA;YACNF,EAAI,EAAA,+CAAA;YACJC,cAAgB,EAAA;AAClB;AACF;AACF,CAAA;AAOA,MAAME,aAAa,CAAC,EAAEC,SAAS,EAAEC,kBAAkB,EAAmB,GAAA;IACpE,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACEC,cAACC,CAAAA,aAAAA,EAAAA;AACC,QAAA,QAAA,gBAAAD,cAACE,CAAAA,yBAAAA,EAAAA;YACCC,KAAOP,EAAAA,SAAAA;AACPQ,YAAAA,gBAAAA,EAAkB,IAAMN,aAAcR,CAAAA,UAAU,CAACM,SAAAA,CAAU,CAACL,QAAQ,CAAA;AACpEc,YAAAA,QAAAA,EAAU,CAACC,QAAAA,GAAAA;;gBAETT,kBAAmB,CAAA;oBAAEU,IAAMD,EAAAA;AAAS,iBAAA,CAAA;AACtC,aAAA;AACAE,YAAAA,YAAAA,EAAYV,aAAc,CAAA;gBACxBN,EAAI,EAAA,wCAAA;gBACJC,cAAgB,EAAA;AAClB,aAAA,CAAA;YACAgB,IAAK,EAAA,GAAA;sBAEJC,MAAOC,CAAAA,OAAO,CAACrB,UAAYsB,CAAAA,CAAAA,GAAG,CAAC,CAAC,CAACN,UAAUO,QAAS,CAAA,GAAA;AACnD,gBAAA,qBACEb,cAACc,CAAAA,+BAAAA,EAAAA;oBAAkCX,KAAOG,EAAAA,QAAAA;AACvCR,oBAAAA,QAAAA,EAAAA,aAAAA,CAAce,SAASnB,MAAM;AADPY,iBAAAA,EAAAA,QAAAA,CAAAA;AAI7B,aAAA;;;AAIR;AAEA,MAAML,aAAAA,GAAgBc,aAAqBC,CAAAA,gBAAAA,CAAI;eAChC,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,WAAW,CAACC,QAAQ,CAAC;;;eAG5C,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAKA,KAAMG,CAAAA,SAAS,CAAC,CAAA,CAAE,CAAC;;AAEnD,CAAC;;;;"}
@@ -5,23 +5,14 @@ var designSystem = require('@strapi/design-system');
5
5
  var icons = require('@strapi/icons');
6
6
  var reactIntl = require('react-intl');
7
7
  var reactRouterDom = require('react-router-dom');
8
- var styledComponents = require('styled-components');
8
+ var styled = require('styled-components');
9
+ var SubNav = require('../../../components/SubNav.js');
9
10
  var Tracking = require('../../../features/Tracking.js');
10
11
 
11
- const CustomIcon = styledComponents.styled(icons.Lightning)`
12
- right: 15px;
13
- position: absolute;
14
- bottom: 50%;
15
- transform: translateY(50%);
16
-
17
- path {
18
- fill: ${({ theme })=>theme.colors.warning500};
19
- }
20
- `;
21
- const Link = styledComponents.styled(designSystem.SubNavLink)`
22
- &.active ${CustomIcon} {
23
- right: 13px;
24
- }
12
+ const StyledBadge = styled.styled(designSystem.Badge)`
13
+ border-radius: 50%;
14
+ padding: ${({ theme })=>theme.spaces[2]};
15
+ height: 2rem;
25
16
  `;
26
17
  const SettingsNav = ({ menu })=>{
27
18
  const { formatMessage } = reactIntl.useIntl();
@@ -51,29 +42,39 @@ const SettingsNav = ({ menu })=>{
51
42
  to: destination
52
43
  });
53
44
  };
54
- return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.SubNav, {
45
+ return /*#__PURE__*/ jsxRuntime.jsxs(SubNav.SubNav.Main, {
55
46
  "aria-label": label,
56
47
  children: [
57
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.SubNavHeader, {
48
+ /*#__PURE__*/ jsxRuntime.jsx(SubNav.SubNav.Header, {
58
49
  label: label
59
50
  }),
60
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.SubNavSections, {
61
- children: sections.map((section)=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.SubNavSection, {
51
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Divider, {
52
+ background: "neutral150",
53
+ marginBottom: 5
54
+ }),
55
+ /*#__PURE__*/ jsxRuntime.jsx(SubNav.SubNav.Sections, {
56
+ children: sections.map((section)=>/*#__PURE__*/ jsxRuntime.jsx(SubNav.SubNav.Section, {
62
57
  label: formatMessage(section.intlLabel),
63
58
  children: section.links.map((link)=>{
64
- return /*#__PURE__*/ jsxRuntime.jsxs(Link, {
65
- tag: reactRouterDom.NavLink,
66
- withBullet: link.hasNotification,
59
+ return /*#__PURE__*/ jsxRuntime.jsx(SubNav.SubNav.Link, {
67
60
  to: link.to,
68
61
  onClick: handleClickOnLink(link.to),
69
- position: "relative",
70
- children: [
71
- formatMessage(link.intlLabel),
72
- link?.licenseOnly && /*#__PURE__*/ jsxRuntime.jsx(CustomIcon, {
73
- width: "1.5rem",
74
- height: "1.5rem"
75
- })
76
- ]
62
+ label: formatMessage(link.intlLabel),
63
+ endAction: /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
64
+ children: [
65
+ link?.licenseOnly && /*#__PURE__*/ jsxRuntime.jsx(icons.Lightning, {
66
+ fill: "primary600",
67
+ width: "1.5rem",
68
+ height: "1.5rem"
69
+ }),
70
+ link?.hasNotification && /*#__PURE__*/ jsxRuntime.jsx(StyledBadge, {
71
+ "aria-label": "Notification",
72
+ backgroundColor: "primary600",
73
+ textColor: "neutral0",
74
+ children: "1"
75
+ })
76
+ ]
77
+ })
77
78
  }, link.id);
78
79
  })
79
80
  }, section.id))
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsNav.js","sources":["../../../../../../../admin/src/pages/Settings/components/SettingsNav.tsx"],"sourcesContent":["import {\n SubNav,\n SubNavHeader,\n SubNavLink,\n SubNavSection,\n SubNavSections,\n} from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useTracking } from '../../../features/Tracking';\nimport { SettingsMenu } from '../../../hooks/useSettingsMenu';\n\nconst CustomIcon = styled(Lightning)`\n right: 15px;\n position: absolute;\n bottom: 50%;\n transform: translateY(50%);\n\n path {\n fill: ${({ theme }) => theme.colors.warning500};\n }\n`;\n\nconst Link = styled(SubNavLink)`\n &.active ${CustomIcon} {\n right: 13px;\n }\n`;\n\ninterface SettingsNavProps {\n menu: SettingsMenu;\n}\n\nconst SettingsNav = ({ menu }: SettingsNavProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n title: link.intlLabel,\n name: link.id,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav aria-label={label}>\n <SubNavHeader label={label} />\n <SubNavSections>\n {sections.map((section) => (\n <SubNavSection key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <Link\n tag={NavLink}\n withBullet={link.hasNotification}\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n position=\"relative\"\n >\n {formatMessage(link.intlLabel)}\n {link?.licenseOnly && <CustomIcon width=\"1.5rem\" height=\"1.5rem\" />}\n </Link>\n );\n })}\n </SubNavSection>\n ))}\n </SubNavSections>\n </SubNav>\n );\n};\n\nexport { SettingsNav };\nexport type { SettingsNavProps };\n"],"names":["CustomIcon","styled","Lightning","theme","colors","warning500","Link","SubNavLink","SettingsNav","menu","formatMessage","useIntl","trackUsage","useTracking","pathname","useLocation","filteredMenu","filter","section","links","every","link","isDisplayed","sections","map","title","intlLabel","name","id","label","defaultMessage","handleClickOnLink","destination","from","to","_jsxs","SubNav","aria-label","_jsx","SubNavHeader","SubNavSections","SubNavSection","tag","NavLink","withBullet","hasNotification","onClick","position","licenseOnly","width","height"],"mappings":"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"}
1
+ {"version":3,"file":"SettingsNav.js","sources":["../../../../../../../admin/src/pages/Settings/components/SettingsNav.tsx"],"sourcesContent":["import { Badge, Divider } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { SubNav } from '../../../components/SubNav';\nimport { useTracking } from '../../../features/Tracking';\nimport { SettingsMenu } from '../../../hooks/useSettingsMenu';\n\ninterface SettingsNavProps {\n menu: SettingsMenu;\n}\n\nconst StyledBadge = styled(Badge)`\n border-radius: 50%;\n padding: ${({ theme }) => theme.spaces[2]};\n height: 2rem;\n`;\n\nconst SettingsNav = ({ menu }: SettingsNavProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n title: link.intlLabel,\n name: link.id,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav.Main aria-label={label}>\n <SubNav.Header label={label} />\n <Divider background=\"neutral150\" marginBottom={5} />\n <SubNav.Sections>\n {sections.map((section) => (\n <SubNav.Section key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <SubNav.Link\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n label={formatMessage(link.intlLabel)}\n endAction={\n <>\n {link?.licenseOnly && (\n <Lightning fill=\"primary600\" width=\"1.5rem\" height=\"1.5rem\" />\n )}\n {link?.hasNotification && (\n <StyledBadge\n aria-label=\"Notification\"\n backgroundColor=\"primary600\"\n textColor=\"neutral0\"\n >\n 1\n </StyledBadge>\n )}\n </>\n }\n />\n );\n })}\n </SubNav.Section>\n ))}\n </SubNav.Sections>\n </SubNav.Main>\n );\n};\n\nexport { SettingsNav };\nexport type { SettingsNavProps };\n"],"names":["StyledBadge","styled","Badge","theme","spaces","SettingsNav","menu","formatMessage","useIntl","trackUsage","useTracking","pathname","useLocation","filteredMenu","filter","section","links","every","link","isDisplayed","sections","map","title","intlLabel","name","id","label","defaultMessage","handleClickOnLink","destination","from","to","_jsxs","SubNav","Main","aria-label","_jsx","Header","Divider","background","marginBottom","Sections","Section","Link","onClick","endAction","_Fragment","licenseOnly","Lightning","fill","width","height","hasNotification","backgroundColor","textColor"],"mappings":"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"}
@@ -1,25 +1,16 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { SubNavLink, SubNav, SubNavHeader, SubNavSections, SubNavSection } from '@strapi/design-system';
1
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
+ import { Badge, Divider } from '@strapi/design-system';
3
3
  import { Lightning } from '@strapi/icons';
4
4
  import { useIntl } from 'react-intl';
5
- import { useLocation, NavLink } from 'react-router-dom';
5
+ import { useLocation } from 'react-router-dom';
6
6
  import { styled } from 'styled-components';
7
+ import { SubNav } from '../../../components/SubNav.mjs';
7
8
  import { useTracking } from '../../../features/Tracking.mjs';
8
9
 
9
- const CustomIcon = styled(Lightning)`
10
- right: 15px;
11
- position: absolute;
12
- bottom: 50%;
13
- transform: translateY(50%);
14
-
15
- path {
16
- fill: ${({ theme })=>theme.colors.warning500};
17
- }
18
- `;
19
- const Link = styled(SubNavLink)`
20
- &.active ${CustomIcon} {
21
- right: 13px;
22
- }
10
+ const StyledBadge = styled(Badge)`
11
+ border-radius: 50%;
12
+ padding: ${({ theme })=>theme.spaces[2]};
13
+ height: 2rem;
23
14
  `;
24
15
  const SettingsNav = ({ menu })=>{
25
16
  const { formatMessage } = useIntl();
@@ -49,29 +40,39 @@ const SettingsNav = ({ menu })=>{
49
40
  to: destination
50
41
  });
51
42
  };
52
- return /*#__PURE__*/ jsxs(SubNav, {
43
+ return /*#__PURE__*/ jsxs(SubNav.Main, {
53
44
  "aria-label": label,
54
45
  children: [
55
- /*#__PURE__*/ jsx(SubNavHeader, {
46
+ /*#__PURE__*/ jsx(SubNav.Header, {
56
47
  label: label
57
48
  }),
58
- /*#__PURE__*/ jsx(SubNavSections, {
59
- children: sections.map((section)=>/*#__PURE__*/ jsx(SubNavSection, {
49
+ /*#__PURE__*/ jsx(Divider, {
50
+ background: "neutral150",
51
+ marginBottom: 5
52
+ }),
53
+ /*#__PURE__*/ jsx(SubNav.Sections, {
54
+ children: sections.map((section)=>/*#__PURE__*/ jsx(SubNav.Section, {
60
55
  label: formatMessage(section.intlLabel),
61
56
  children: section.links.map((link)=>{
62
- return /*#__PURE__*/ jsxs(Link, {
63
- tag: NavLink,
64
- withBullet: link.hasNotification,
57
+ return /*#__PURE__*/ jsx(SubNav.Link, {
65
58
  to: link.to,
66
59
  onClick: handleClickOnLink(link.to),
67
- position: "relative",
68
- children: [
69
- formatMessage(link.intlLabel),
70
- link?.licenseOnly && /*#__PURE__*/ jsx(CustomIcon, {
71
- width: "1.5rem",
72
- height: "1.5rem"
73
- })
74
- ]
60
+ label: formatMessage(link.intlLabel),
61
+ endAction: /*#__PURE__*/ jsxs(Fragment, {
62
+ children: [
63
+ link?.licenseOnly && /*#__PURE__*/ jsx(Lightning, {
64
+ fill: "primary600",
65
+ width: "1.5rem",
66
+ height: "1.5rem"
67
+ }),
68
+ link?.hasNotification && /*#__PURE__*/ jsx(StyledBadge, {
69
+ "aria-label": "Notification",
70
+ backgroundColor: "primary600",
71
+ textColor: "neutral0",
72
+ children: "1"
73
+ })
74
+ ]
75
+ })
75
76
  }, link.id);
76
77
  })
77
78
  }, section.id))