@strapi/admin 5.14.0 → 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 (282) 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 +6 -6
  44. package/dist/admin/admin/src/components/SubNav.js.map +1 -1
  45. package/dist/admin/admin/src/components/Table.js +2 -2
  46. package/dist/admin/admin/src/components/Table.js.map +1 -1
  47. package/dist/admin/admin/src/components/Theme.js +2 -2
  48. package/dist/admin/admin/src/components/Theme.js.map +1 -1
  49. package/dist/admin/admin/src/components/UnauthenticatedLogo.js +2 -2
  50. package/dist/admin/admin/src/components/UnauthenticatedLogo.js.map +1 -1
  51. package/dist/admin/admin/src/components/UpsellBanner.js +113 -0
  52. package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -0
  53. package/dist/admin/admin/src/components/UpsellBanner.mjs +111 -0
  54. package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -0
  55. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +2 -0
  56. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  57. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +2 -0
  58. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  59. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js +3 -3
  60. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js.map +1 -1
  61. package/dist/admin/admin/src/pages/Auth/components/Register.js +2 -2
  62. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  63. package/dist/admin/admin/src/pages/Home/HomePage.js +4 -0
  64. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  65. package/dist/admin/admin/src/pages/Home/HomePage.mjs +4 -0
  66. package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
  67. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +183 -0
  68. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -0
  69. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs +181 -0
  70. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -0
  71. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +128 -0
  72. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -0
  73. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs +126 -0
  74. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs.map +1 -0
  75. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.js +3 -3
  76. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.js.map +1 -1
  77. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesGrid.js +2 -2
  78. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesGrid.js.map +1 -1
  79. package/dist/admin/admin/src/pages/Marketplace/components/SortSelect.js +2 -2
  80. package/dist/admin/admin/src/pages/Marketplace/components/SortSelect.js.map +1 -1
  81. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +3 -3
  82. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  83. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +1 -1
  84. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  85. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +2 -2
  86. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  87. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +2 -2
  88. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
  89. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +4 -4
  90. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  91. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +2 -2
  92. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
  93. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +2 -2
  94. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
  95. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.js +2 -2
  96. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.js.map +1 -1
  97. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +10 -10
  98. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  99. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js +3 -3
  100. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js.map +1 -1
  101. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +5 -5
  102. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  103. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.js +2 -2
  104. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.js.map +1 -1
  105. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +3 -3
  106. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  107. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js +3 -3
  108. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js.map +1 -1
  109. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js +2 -2
  110. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js.map +1 -1
  111. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +2 -2
  112. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
  113. package/dist/admin/admin/src/render.js +3 -1
  114. package/dist/admin/admin/src/render.js.map +1 -1
  115. package/dist/admin/admin/src/render.mjs +3 -1
  116. package/dist/admin/admin/src/render.mjs.map +1 -1
  117. package/dist/admin/admin/src/services/admin.js +13 -2
  118. package/dist/admin/admin/src/services/admin.js.map +1 -1
  119. package/dist/admin/admin/src/services/admin.mjs +13 -3
  120. package/dist/admin/admin/src/services/admin.mjs.map +1 -1
  121. package/dist/admin/admin/src/translations/ar.json.js +1 -0
  122. package/dist/admin/admin/src/translations/ar.json.js.map +1 -1
  123. package/dist/admin/admin/src/translations/ar.json.mjs +1 -0
  124. package/dist/admin/admin/src/translations/ar.json.mjs.map +1 -1
  125. package/dist/admin/admin/src/translations/ca.json.js +1 -0
  126. package/dist/admin/admin/src/translations/ca.json.js.map +1 -1
  127. package/dist/admin/admin/src/translations/ca.json.mjs +1 -0
  128. package/dist/admin/admin/src/translations/ca.json.mjs.map +1 -1
  129. package/dist/admin/admin/src/translations/de.json.js +1 -0
  130. package/dist/admin/admin/src/translations/de.json.js.map +1 -1
  131. package/dist/admin/admin/src/translations/de.json.mjs +1 -0
  132. package/dist/admin/admin/src/translations/de.json.mjs.map +1 -1
  133. package/dist/admin/admin/src/translations/dk.json.js +1 -0
  134. package/dist/admin/admin/src/translations/dk.json.js.map +1 -1
  135. package/dist/admin/admin/src/translations/dk.json.mjs +1 -0
  136. package/dist/admin/admin/src/translations/dk.json.mjs.map +1 -1
  137. package/dist/admin/admin/src/translations/en.json.js +19 -0
  138. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  139. package/dist/admin/admin/src/translations/en.json.mjs +19 -0
  140. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  141. package/dist/admin/admin/src/translations/es.json.js +1 -0
  142. package/dist/admin/admin/src/translations/es.json.js.map +1 -1
  143. package/dist/admin/admin/src/translations/es.json.mjs +1 -0
  144. package/dist/admin/admin/src/translations/es.json.mjs.map +1 -1
  145. package/dist/admin/admin/src/translations/eu.json.js +1 -0
  146. package/dist/admin/admin/src/translations/eu.json.js.map +1 -1
  147. package/dist/admin/admin/src/translations/eu.json.mjs +1 -0
  148. package/dist/admin/admin/src/translations/eu.json.mjs.map +1 -1
  149. package/dist/admin/admin/src/translations/fr.json.js +1 -0
  150. package/dist/admin/admin/src/translations/fr.json.js.map +1 -1
  151. package/dist/admin/admin/src/translations/fr.json.mjs +1 -0
  152. package/dist/admin/admin/src/translations/fr.json.mjs.map +1 -1
  153. package/dist/admin/admin/src/translations/gu.json.js +1 -0
  154. package/dist/admin/admin/src/translations/gu.json.js.map +1 -1
  155. package/dist/admin/admin/src/translations/gu.json.mjs +1 -0
  156. package/dist/admin/admin/src/translations/gu.json.mjs.map +1 -1
  157. package/dist/admin/admin/src/translations/hi.json.js +1 -0
  158. package/dist/admin/admin/src/translations/hi.json.js.map +1 -1
  159. package/dist/admin/admin/src/translations/hi.json.mjs +1 -0
  160. package/dist/admin/admin/src/translations/hi.json.mjs.map +1 -1
  161. package/dist/admin/admin/src/translations/hu.json.js +1 -0
  162. package/dist/admin/admin/src/translations/hu.json.js.map +1 -1
  163. package/dist/admin/admin/src/translations/hu.json.mjs +1 -0
  164. package/dist/admin/admin/src/translations/hu.json.mjs.map +1 -1
  165. package/dist/admin/admin/src/translations/ja.json.js +1 -0
  166. package/dist/admin/admin/src/translations/ja.json.js.map +1 -1
  167. package/dist/admin/admin/src/translations/ja.json.mjs +1 -0
  168. package/dist/admin/admin/src/translations/ja.json.mjs.map +1 -1
  169. package/dist/admin/admin/src/translations/ko.json.js +1 -0
  170. package/dist/admin/admin/src/translations/ko.json.js.map +1 -1
  171. package/dist/admin/admin/src/translations/ko.json.mjs +1 -0
  172. package/dist/admin/admin/src/translations/ko.json.mjs.map +1 -1
  173. package/dist/admin/admin/src/translations/ml.json.js +1 -0
  174. package/dist/admin/admin/src/translations/ml.json.js.map +1 -1
  175. package/dist/admin/admin/src/translations/ml.json.mjs +1 -0
  176. package/dist/admin/admin/src/translations/ml.json.mjs.map +1 -1
  177. package/dist/admin/admin/src/translations/nl.json.js +1 -0
  178. package/dist/admin/admin/src/translations/nl.json.js.map +1 -1
  179. package/dist/admin/admin/src/translations/nl.json.mjs +1 -0
  180. package/dist/admin/admin/src/translations/nl.json.mjs.map +1 -1
  181. package/dist/admin/admin/src/translations/pl.json.js +1 -0
  182. package/dist/admin/admin/src/translations/pl.json.js.map +1 -1
  183. package/dist/admin/admin/src/translations/pl.json.mjs +1 -0
  184. package/dist/admin/admin/src/translations/pl.json.mjs.map +1 -1
  185. package/dist/admin/admin/src/translations/pt-BR.json.js +1 -0
  186. package/dist/admin/admin/src/translations/pt-BR.json.js.map +1 -1
  187. package/dist/admin/admin/src/translations/pt-BR.json.mjs +1 -0
  188. package/dist/admin/admin/src/translations/pt-BR.json.mjs.map +1 -1
  189. package/dist/admin/admin/src/translations/ru.json.js +1 -0
  190. package/dist/admin/admin/src/translations/ru.json.js.map +1 -1
  191. package/dist/admin/admin/src/translations/ru.json.mjs +1 -0
  192. package/dist/admin/admin/src/translations/ru.json.mjs.map +1 -1
  193. package/dist/admin/admin/src/translations/sa.json.js +1 -0
  194. package/dist/admin/admin/src/translations/sa.json.js.map +1 -1
  195. package/dist/admin/admin/src/translations/sa.json.mjs +1 -0
  196. package/dist/admin/admin/src/translations/sa.json.mjs.map +1 -1
  197. package/dist/admin/admin/src/translations/sk.json.js +1 -0
  198. package/dist/admin/admin/src/translations/sk.json.js.map +1 -1
  199. package/dist/admin/admin/src/translations/sk.json.mjs +1 -0
  200. package/dist/admin/admin/src/translations/sk.json.mjs.map +1 -1
  201. package/dist/admin/admin/src/translations/sv.json.js +1 -0
  202. package/dist/admin/admin/src/translations/sv.json.js.map +1 -1
  203. package/dist/admin/admin/src/translations/sv.json.mjs +1 -0
  204. package/dist/admin/admin/src/translations/sv.json.mjs.map +1 -1
  205. package/dist/admin/admin/src/translations/tr.json.js +1 -0
  206. package/dist/admin/admin/src/translations/tr.json.js.map +1 -1
  207. package/dist/admin/admin/src/translations/tr.json.mjs +1 -0
  208. package/dist/admin/admin/src/translations/tr.json.mjs.map +1 -1
  209. package/dist/admin/admin/src/translations/uk.json.js +1 -0
  210. package/dist/admin/admin/src/translations/uk.json.js.map +1 -1
  211. package/dist/admin/admin/src/translations/uk.json.mjs +1 -0
  212. package/dist/admin/admin/src/translations/uk.json.mjs.map +1 -1
  213. package/dist/admin/admin/src/translations/zh-Hans.json.js +1 -0
  214. package/dist/admin/admin/src/translations/zh-Hans.json.js.map +1 -1
  215. package/dist/admin/admin/src/translations/zh-Hans.json.mjs +1 -0
  216. package/dist/admin/admin/src/translations/zh-Hans.json.mjs.map +1 -1
  217. package/dist/admin/admin/src/translations/zh.json.js +1 -0
  218. package/dist/admin/admin/src/translations/zh.json.js.map +1 -1
  219. package/dist/admin/admin/src/translations/zh.json.mjs +1 -0
  220. package/dist/admin/admin/src/translations/zh.json.mjs.map +1 -1
  221. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js +2 -1
  222. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js.map +1 -1
  223. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.mjs +2 -1
  224. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.mjs.map +1 -1
  225. package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js +2 -2
  226. package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js.map +1 -1
  227. package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js +2 -2
  228. package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js.map +1 -1
  229. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js +3 -3
  230. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js.map +1 -1
  231. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js +2 -2
  232. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
  233. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +7 -0
  234. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
  235. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs +7 -0
  236. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
  237. package/dist/admin/index.js +2 -0
  238. package/dist/admin/index.js.map +1 -1
  239. package/dist/admin/index.mjs +1 -0
  240. package/dist/admin/index.mjs.map +1 -1
  241. package/dist/admin/src/components/GradientBadge.d.ts +4 -0
  242. package/dist/admin/src/components/MainNav/TrialCountdown.d.ts +2 -0
  243. package/dist/admin/src/components/UpsellBanner.d.ts +2 -0
  244. package/dist/admin/src/index.d.ts +1 -0
  245. package/dist/admin/src/pages/Home/components/FreeTrialEndedModal.d.ts +1 -0
  246. package/dist/admin/src/pages/Home/components/FreeTrialWelcomeModal.d.ts +1 -0
  247. package/dist/admin/src/services/admin.d.ts +8 -6
  248. package/dist/ee/admin/src/hooks/useLicenseLimits.d.ts +2 -0
  249. package/dist/ee/server/src/controllers/admin.d.ts +3 -0
  250. package/dist/ee/server/src/controllers/admin.d.ts.map +1 -1
  251. package/dist/ee/server/src/controllers/index.d.ts +3 -0
  252. package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
  253. package/dist/ee/server/src/index.d.ts +6 -0
  254. package/dist/ee/server/src/index.d.ts.map +1 -1
  255. package/dist/server/ee/server/src/controllers/admin.js +2 -0
  256. package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
  257. package/dist/server/ee/server/src/controllers/admin.mjs +2 -0
  258. package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
  259. package/dist/server/server/src/controllers/admin.js +6 -0
  260. package/dist/server/server/src/controllers/admin.js.map +1 -1
  261. package/dist/server/server/src/controllers/admin.mjs +6 -0
  262. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  263. package/dist/server/server/src/routes/admin.js +10 -0
  264. package/dist/server/server/src/routes/admin.js.map +1 -1
  265. package/dist/server/server/src/routes/admin.mjs +10 -0
  266. package/dist/server/server/src/routes/admin.mjs.map +1 -1
  267. package/dist/server/server/src/services/content-type.js +10 -15
  268. package/dist/server/server/src/services/content-type.js.map +1 -1
  269. package/dist/server/server/src/services/content-type.mjs +11 -16
  270. package/dist/server/server/src/services/content-type.mjs.map +1 -1
  271. package/dist/server/src/controllers/admin.d.ts +3 -0
  272. package/dist/server/src/controllers/admin.d.ts.map +1 -1
  273. package/dist/server/src/controllers/index.d.ts +3 -0
  274. package/dist/server/src/controllers/index.d.ts.map +1 -1
  275. package/dist/server/src/index.d.ts +3 -0
  276. package/dist/server/src/index.d.ts.map +1 -1
  277. package/dist/server/src/routes/admin.d.ts.map +1 -1
  278. package/dist/server/src/services/content-type.d.ts +1 -1
  279. package/dist/server/src/services/content-type.d.ts.map +1 -1
  280. package/dist/shared/contracts/admin.d.ts +1 -0
  281. package/dist/shared/contracts/admin.d.ts.map +1 -1
  282. package/package.json +9 -9
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
- var styledComponents = require('styled-components');
4
+ var styled = require('styled-components');
5
5
  var Configuration = require('../features/Configuration.js');
6
6
 
7
- const Img = styledComponents.styled.img`
7
+ const Img = styled.styled.img`
8
8
  height: 7.2rem;
9
9
  `;
10
10
  const Logo = ()=>{
@@ -1 +1 @@
1
- {"version":3,"file":"UnauthenticatedLogo.js","sources":["../../../../../admin/src/components/UnauthenticatedLogo.tsx"],"sourcesContent":["import { styled } from 'styled-components';\n\nimport { useConfiguration } from '../features/Configuration';\n\nconst Img = styled.img`\n height: 7.2rem;\n`;\n\nconst Logo = () => {\n const {\n logos: { auth },\n } = useConfiguration('UnauthenticatedLogo');\n\n return <Img src={auth?.custom?.url || auth.default} aria-hidden alt=\"\" />;\n};\n\nexport { Logo };\n"],"names":["Img","styled","img","Logo","logos","auth","useConfiguration","_jsx","src","custom","url","default","aria-hidden","alt"],"mappings":";;;;;;AAIA,MAAMA,GAAAA,GAAMC,uBAAOC,CAAAA,GAAG;;AAEtB,CAAC;AAED,MAAMC,IAAO,GAAA,IAAA;AACX,IAAA,MAAM,EACJC,KAAO,EAAA,EAAEC,IAAI,EAAE,EAChB,GAAGC,8BAAiB,CAAA,qBAAA,CAAA;AAErB,IAAA,qBAAOC,cAACP,CAAAA,GAAAA,EAAAA;AAAIQ,QAAAA,GAAAA,EAAKH,IAAMI,EAAAA,MAAAA,EAAQC,GAAOL,IAAAA,IAAAA,CAAKM,OAAO;QAAEC,aAAW,EAAA,IAAA;QAACC,GAAI,EAAA;;AACtE;;;;"}
1
+ {"version":3,"file":"UnauthenticatedLogo.js","sources":["../../../../../admin/src/components/UnauthenticatedLogo.tsx"],"sourcesContent":["import { styled } from 'styled-components';\n\nimport { useConfiguration } from '../features/Configuration';\n\nconst Img = styled.img`\n height: 7.2rem;\n`;\n\nconst Logo = () => {\n const {\n logos: { auth },\n } = useConfiguration('UnauthenticatedLogo');\n\n return <Img src={auth?.custom?.url || auth.default} aria-hidden alt=\"\" />;\n};\n\nexport { Logo };\n"],"names":["Img","styled","img","Logo","logos","auth","useConfiguration","_jsx","src","custom","url","default","aria-hidden","alt"],"mappings":";;;;;;AAIA,MAAMA,GAAAA,GAAMC,aAAOC,CAAAA,GAAG;;AAEtB,CAAC;AAED,MAAMC,IAAO,GAAA,IAAA;AACX,IAAA,MAAM,EACJC,KAAO,EAAA,EAAEC,IAAI,EAAE,EAChB,GAAGC,8BAAiB,CAAA,qBAAA,CAAA;AAErB,IAAA,qBAAOC,cAACP,CAAAA,GAAAA,EAAAA;AAAIQ,QAAAA,GAAAA,EAAKH,IAAMI,EAAAA,MAAAA,EAAQC,GAAOL,IAAAA,IAAAA,CAAKM,OAAO;QAAEC,aAAW,EAAA,IAAA;QAACC,GAAI,EAAA;;AACtE;;;;"}
@@ -0,0 +1,113 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var ee = require('@strapi/admin/strapi-admin/ee');
6
+ var designSystem = require('@strapi/design-system');
7
+ var dateFns = require('date-fns');
8
+ var reactIntl = require('react-intl');
9
+ var styled = require('styled-components');
10
+ var admin = require('../services/admin.js');
11
+ var usePersistentState = require('../hooks/usePersistentState.js');
12
+
13
+ const BannerBackground = styled.styled(designSystem.Flex)`
14
+ background: linear-gradient(
15
+ 90deg,
16
+ ${({ theme })=>theme.colors.primary600} 0%,
17
+ ${({ theme })=>theme.colors.alternative600} 121.48%
18
+ );
19
+ `;
20
+ const Banner = ({ isTrialEndedRecently })=>{
21
+ const { formatMessage } = reactIntl.useIntl();
22
+ return /*#__PURE__*/ jsxRuntime.jsx(BannerBackground, {
23
+ width: "100%",
24
+ justifyContent: "center",
25
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
26
+ justifyContent: "center",
27
+ alignItems: "center",
28
+ width: "100%",
29
+ paddingTop: 2,
30
+ paddingBottom: 2,
31
+ paddingLeft: 10,
32
+ paddingRight: 10,
33
+ gap: 2,
34
+ children: [
35
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Box, {
36
+ children: [
37
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
38
+ variant: "delta",
39
+ fontWeight: "bold",
40
+ textColor: "neutral0",
41
+ textAlign: "center",
42
+ fontSize: 2,
43
+ children: formatMessage(isTrialEndedRecently ? {
44
+ id: 'app.components.UpsellBanner.intro.ended',
45
+ defaultMessage: 'Your trial has ended: '
46
+ } : {
47
+ id: 'app.components.UpsellBanner.intro',
48
+ defaultMessage: 'Access to Growth plan features: '
49
+ })
50
+ }),
51
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
52
+ variant: "delta",
53
+ textColor: "neutral0",
54
+ textAlign: "center",
55
+ paddingRight: 4,
56
+ fontSize: 2,
57
+ children: formatMessage(isTrialEndedRecently ? {
58
+ id: 'app.components.UpsellBanner.text.ended',
59
+ defaultMessage: 'Keep access to Growth features by upgrading now.'
60
+ } : {
61
+ id: 'app.components.UpsellBanner.text',
62
+ defaultMessage: 'As part of your trial, you can explore premium tools such as Content History, Releases, and Single Sign-On (SSO).'
63
+ })
64
+ })
65
+ ]
66
+ }),
67
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
68
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.LinkButton, {
69
+ width: "max-content",
70
+ variant: "tertiary",
71
+ href: "https://strapi.chargebeeportal.com",
72
+ target: "_blank",
73
+ children: formatMessage(isTrialEndedRecently ? {
74
+ id: 'app.components.UpsellBanner.button.ended',
75
+ defaultMessage: 'Keep Growth plan'
76
+ } : {
77
+ id: 'app.components.UpsellBanner.button',
78
+ defaultMessage: 'Upgrade now'
79
+ })
80
+ })
81
+ })
82
+ ]
83
+ })
84
+ });
85
+ };
86
+ const UpsellBanner = ()=>{
87
+ const { license } = ee.useLicenseLimits();
88
+ const [cachedTrialEndsAt, setCachedTrialEndsAt] = usePersistentState.usePersistentState('STRAPI_FREE_TRIAL_ENDS_AT', undefined);
89
+ const sevenDaysAgo = dateFns.subDays(new Date(), 7);
90
+ const timeLeftData = admin.useGetLicenseTrialTimeLeftQuery(undefined, {
91
+ skip: !license?.isTrial
92
+ });
93
+ React.useEffect(()=>{
94
+ if (timeLeftData.data?.trialEndsAt) {
95
+ setCachedTrialEndsAt(timeLeftData.data.trialEndsAt);
96
+ }
97
+ // eslint-disable-next-line react-hooks/exhaustive-deps
98
+ }, [
99
+ timeLeftData.data?.trialEndsAt
100
+ ]);
101
+ // When the license is not a trial + not EE, and the cached trial end date is found in the localstorage, that means the trial has ended
102
+ // We show the banner to encourage the user to upgrade (for 7 days after the trial ends)
103
+ const isTrialEndedRecently = Boolean(!license?.isTrial && !window.strapi.isEE && cachedTrialEndsAt && dateFns.isAfter(new Date(cachedTrialEndsAt), sevenDaysAgo));
104
+ if (timeLeftData.data?.trialEndsAt || isTrialEndedRecently) {
105
+ return /*#__PURE__*/ jsxRuntime.jsx(Banner, {
106
+ isTrialEndedRecently: isTrialEndedRecently
107
+ });
108
+ }
109
+ return null;
110
+ };
111
+
112
+ exports.UpsellBanner = UpsellBanner;
113
+ //# sourceMappingURL=UpsellBanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpsellBanner.js","sources":["../../../../../admin/src/components/UpsellBanner.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useLicenseLimits } from '@strapi/admin/strapi-admin/ee';\nimport { Box, Flex, LinkButton, Typography } from '@strapi/design-system';\nimport { isAfter, subDays } from 'date-fns';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useGetLicenseTrialTimeLeftQuery } from '../../src/services/admin';\nimport { usePersistentState } from '../hooks/usePersistentState';\n\nconst BannerBackground = styled(Flex)`\n background: linear-gradient(\n 90deg,\n ${({ theme }) => theme.colors.primary600} 0%,\n ${({ theme }) => theme.colors.alternative600} 121.48%\n );\n`;\n\nconst Banner = ({ isTrialEndedRecently }: { isTrialEndedRecently: boolean }) => {\n const { formatMessage } = useIntl();\n\n return (\n <BannerBackground width=\"100%\" justifyContent=\"center\">\n <Flex\n justifyContent=\"center\"\n alignItems=\"center\"\n width=\"100%\"\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={10}\n paddingRight={10}\n gap={2}\n >\n <Box>\n <Typography\n variant=\"delta\"\n fontWeight=\"bold\"\n textColor=\"neutral0\"\n textAlign=\"center\"\n fontSize={2}\n >\n {formatMessage(\n isTrialEndedRecently\n ? {\n id: 'app.components.UpsellBanner.intro.ended',\n defaultMessage: 'Your trial has ended: ',\n }\n : {\n id: 'app.components.UpsellBanner.intro',\n defaultMessage: 'Access to Growth plan features: ',\n }\n )}\n </Typography>\n <Typography\n variant=\"delta\"\n textColor=\"neutral0\"\n textAlign=\"center\"\n paddingRight={4}\n fontSize={2}\n >\n {formatMessage(\n isTrialEndedRecently\n ? {\n id: 'app.components.UpsellBanner.text.ended',\n defaultMessage: 'Keep access to Growth features by upgrading now.',\n }\n : {\n id: 'app.components.UpsellBanner.text',\n defaultMessage:\n 'As part of your trial, you can explore premium tools such as Content History, Releases, and Single Sign-On (SSO).',\n }\n )}\n </Typography>\n </Box>\n <Box>\n <LinkButton\n width=\"max-content\"\n variant=\"tertiary\"\n href=\"https://strapi.chargebeeportal.com\"\n target=\"_blank\"\n >\n {formatMessage(\n isTrialEndedRecently\n ? {\n id: 'app.components.UpsellBanner.button.ended',\n defaultMessage: 'Keep Growth plan',\n }\n : {\n id: 'app.components.UpsellBanner.button',\n defaultMessage: 'Upgrade now',\n }\n )}\n </LinkButton>\n </Box>\n </Flex>\n </BannerBackground>\n );\n};\n\nconst UpsellBanner = () => {\n const { license } = useLicenseLimits();\n\n const [cachedTrialEndsAt, setCachedTrialEndsAt] = usePersistentState<string | undefined>(\n 'STRAPI_FREE_TRIAL_ENDS_AT',\n undefined\n );\n\n const sevenDaysAgo = subDays(new Date(), 7);\n\n const timeLeftData = useGetLicenseTrialTimeLeftQuery(undefined, {\n skip: !license?.isTrial,\n });\n\n useEffect(() => {\n if (timeLeftData.data?.trialEndsAt) {\n setCachedTrialEndsAt(timeLeftData.data.trialEndsAt);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [timeLeftData.data?.trialEndsAt]);\n\n // When the license is not a trial + not EE, and the cached trial end date is found in the localstorage, that means the trial has ended\n // We show the banner to encourage the user to upgrade (for 7 days after the trial ends)\n const isTrialEndedRecently = Boolean(\n !license?.isTrial &&\n !window.strapi.isEE &&\n cachedTrialEndsAt &&\n isAfter(new Date(cachedTrialEndsAt), sevenDaysAgo)\n );\n\n if (timeLeftData.data?.trialEndsAt || isTrialEndedRecently) {\n return <Banner isTrialEndedRecently={isTrialEndedRecently} />;\n }\n\n return null;\n};\n\nexport { UpsellBanner };\n"],"names":["BannerBackground","styled","Flex","theme","colors","primary600","alternative600","Banner","isTrialEndedRecently","formatMessage","useIntl","_jsx","width","justifyContent","_jsxs","alignItems","paddingTop","paddingBottom","paddingLeft","paddingRight","gap","Box","Typography","variant","fontWeight","textColor","textAlign","fontSize","id","defaultMessage","LinkButton","href","target","UpsellBanner","license","useLicenseLimits","cachedTrialEndsAt","setCachedTrialEndsAt","usePersistentState","undefined","sevenDaysAgo","subDays","Date","timeLeftData","useGetLicenseTrialTimeLeftQuery","skip","isTrial","useEffect","data","trialEndsAt","Boolean","window","strapi","isEE","isAfter"],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useEffect } from 'react';
3
+ import { useLicenseLimits } from '@strapi/admin/strapi-admin/ee';
4
+ import { Flex, Box, Typography, LinkButton } from '@strapi/design-system';
5
+ import { subDays, isAfter } from 'date-fns';
6
+ import { useIntl } from 'react-intl';
7
+ import { styled } from 'styled-components';
8
+ import { useGetLicenseTrialTimeLeftQuery } from '../services/admin.mjs';
9
+ import { usePersistentState } from '../hooks/usePersistentState.mjs';
10
+
11
+ const BannerBackground = styled(Flex)`
12
+ background: linear-gradient(
13
+ 90deg,
14
+ ${({ theme })=>theme.colors.primary600} 0%,
15
+ ${({ theme })=>theme.colors.alternative600} 121.48%
16
+ );
17
+ `;
18
+ const Banner = ({ isTrialEndedRecently })=>{
19
+ const { formatMessage } = useIntl();
20
+ return /*#__PURE__*/ jsx(BannerBackground, {
21
+ width: "100%",
22
+ justifyContent: "center",
23
+ children: /*#__PURE__*/ jsxs(Flex, {
24
+ justifyContent: "center",
25
+ alignItems: "center",
26
+ width: "100%",
27
+ paddingTop: 2,
28
+ paddingBottom: 2,
29
+ paddingLeft: 10,
30
+ paddingRight: 10,
31
+ gap: 2,
32
+ children: [
33
+ /*#__PURE__*/ jsxs(Box, {
34
+ children: [
35
+ /*#__PURE__*/ jsx(Typography, {
36
+ variant: "delta",
37
+ fontWeight: "bold",
38
+ textColor: "neutral0",
39
+ textAlign: "center",
40
+ fontSize: 2,
41
+ children: formatMessage(isTrialEndedRecently ? {
42
+ id: 'app.components.UpsellBanner.intro.ended',
43
+ defaultMessage: 'Your trial has ended: '
44
+ } : {
45
+ id: 'app.components.UpsellBanner.intro',
46
+ defaultMessage: 'Access to Growth plan features: '
47
+ })
48
+ }),
49
+ /*#__PURE__*/ jsx(Typography, {
50
+ variant: "delta",
51
+ textColor: "neutral0",
52
+ textAlign: "center",
53
+ paddingRight: 4,
54
+ fontSize: 2,
55
+ children: formatMessage(isTrialEndedRecently ? {
56
+ id: 'app.components.UpsellBanner.text.ended',
57
+ defaultMessage: 'Keep access to Growth features by upgrading now.'
58
+ } : {
59
+ id: 'app.components.UpsellBanner.text',
60
+ defaultMessage: 'As part of your trial, you can explore premium tools such as Content History, Releases, and Single Sign-On (SSO).'
61
+ })
62
+ })
63
+ ]
64
+ }),
65
+ /*#__PURE__*/ jsx(Box, {
66
+ children: /*#__PURE__*/ jsx(LinkButton, {
67
+ width: "max-content",
68
+ variant: "tertiary",
69
+ href: "https://strapi.chargebeeportal.com",
70
+ target: "_blank",
71
+ children: formatMessage(isTrialEndedRecently ? {
72
+ id: 'app.components.UpsellBanner.button.ended',
73
+ defaultMessage: 'Keep Growth plan'
74
+ } : {
75
+ id: 'app.components.UpsellBanner.button',
76
+ defaultMessage: 'Upgrade now'
77
+ })
78
+ })
79
+ })
80
+ ]
81
+ })
82
+ });
83
+ };
84
+ const UpsellBanner = ()=>{
85
+ const { license } = useLicenseLimits();
86
+ const [cachedTrialEndsAt, setCachedTrialEndsAt] = usePersistentState('STRAPI_FREE_TRIAL_ENDS_AT', undefined);
87
+ const sevenDaysAgo = subDays(new Date(), 7);
88
+ const timeLeftData = useGetLicenseTrialTimeLeftQuery(undefined, {
89
+ skip: !license?.isTrial
90
+ });
91
+ useEffect(()=>{
92
+ if (timeLeftData.data?.trialEndsAt) {
93
+ setCachedTrialEndsAt(timeLeftData.data.trialEndsAt);
94
+ }
95
+ // eslint-disable-next-line react-hooks/exhaustive-deps
96
+ }, [
97
+ timeLeftData.data?.trialEndsAt
98
+ ]);
99
+ // When the license is not a trial + not EE, and the cached trial end date is found in the localstorage, that means the trial has ended
100
+ // We show the banner to encourage the user to upgrade (for 7 days after the trial ends)
101
+ const isTrialEndedRecently = Boolean(!license?.isTrial && !window.strapi.isEE && cachedTrialEndsAt && isAfter(new Date(cachedTrialEndsAt), sevenDaysAgo));
102
+ if (timeLeftData.data?.trialEndsAt || isTrialEndedRecently) {
103
+ return /*#__PURE__*/ jsx(Banner, {
104
+ isTrialEndedRecently: isTrialEndedRecently
105
+ });
106
+ }
107
+ return null;
108
+ };
109
+
110
+ export { UpsellBanner };
111
+ //# sourceMappingURL=UpsellBanner.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpsellBanner.mjs","sources":["../../../../../admin/src/components/UpsellBanner.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useLicenseLimits } from '@strapi/admin/strapi-admin/ee';\nimport { Box, Flex, LinkButton, Typography } from '@strapi/design-system';\nimport { isAfter, subDays } from 'date-fns';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useGetLicenseTrialTimeLeftQuery } from '../../src/services/admin';\nimport { usePersistentState } from '../hooks/usePersistentState';\n\nconst BannerBackground = styled(Flex)`\n background: linear-gradient(\n 90deg,\n ${({ theme }) => theme.colors.primary600} 0%,\n ${({ theme }) => theme.colors.alternative600} 121.48%\n );\n`;\n\nconst Banner = ({ isTrialEndedRecently }: { isTrialEndedRecently: boolean }) => {\n const { formatMessage } = useIntl();\n\n return (\n <BannerBackground width=\"100%\" justifyContent=\"center\">\n <Flex\n justifyContent=\"center\"\n alignItems=\"center\"\n width=\"100%\"\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={10}\n paddingRight={10}\n gap={2}\n >\n <Box>\n <Typography\n variant=\"delta\"\n fontWeight=\"bold\"\n textColor=\"neutral0\"\n textAlign=\"center\"\n fontSize={2}\n >\n {formatMessage(\n isTrialEndedRecently\n ? {\n id: 'app.components.UpsellBanner.intro.ended',\n defaultMessage: 'Your trial has ended: ',\n }\n : {\n id: 'app.components.UpsellBanner.intro',\n defaultMessage: 'Access to Growth plan features: ',\n }\n )}\n </Typography>\n <Typography\n variant=\"delta\"\n textColor=\"neutral0\"\n textAlign=\"center\"\n paddingRight={4}\n fontSize={2}\n >\n {formatMessage(\n isTrialEndedRecently\n ? {\n id: 'app.components.UpsellBanner.text.ended',\n defaultMessage: 'Keep access to Growth features by upgrading now.',\n }\n : {\n id: 'app.components.UpsellBanner.text',\n defaultMessage:\n 'As part of your trial, you can explore premium tools such as Content History, Releases, and Single Sign-On (SSO).',\n }\n )}\n </Typography>\n </Box>\n <Box>\n <LinkButton\n width=\"max-content\"\n variant=\"tertiary\"\n href=\"https://strapi.chargebeeportal.com\"\n target=\"_blank\"\n >\n {formatMessage(\n isTrialEndedRecently\n ? {\n id: 'app.components.UpsellBanner.button.ended',\n defaultMessage: 'Keep Growth plan',\n }\n : {\n id: 'app.components.UpsellBanner.button',\n defaultMessage: 'Upgrade now',\n }\n )}\n </LinkButton>\n </Box>\n </Flex>\n </BannerBackground>\n );\n};\n\nconst UpsellBanner = () => {\n const { license } = useLicenseLimits();\n\n const [cachedTrialEndsAt, setCachedTrialEndsAt] = usePersistentState<string | undefined>(\n 'STRAPI_FREE_TRIAL_ENDS_AT',\n undefined\n );\n\n const sevenDaysAgo = subDays(new Date(), 7);\n\n const timeLeftData = useGetLicenseTrialTimeLeftQuery(undefined, {\n skip: !license?.isTrial,\n });\n\n useEffect(() => {\n if (timeLeftData.data?.trialEndsAt) {\n setCachedTrialEndsAt(timeLeftData.data.trialEndsAt);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [timeLeftData.data?.trialEndsAt]);\n\n // When the license is not a trial + not EE, and the cached trial end date is found in the localstorage, that means the trial has ended\n // We show the banner to encourage the user to upgrade (for 7 days after the trial ends)\n const isTrialEndedRecently = Boolean(\n !license?.isTrial &&\n !window.strapi.isEE &&\n cachedTrialEndsAt &&\n isAfter(new Date(cachedTrialEndsAt), sevenDaysAgo)\n );\n\n if (timeLeftData.data?.trialEndsAt || isTrialEndedRecently) {\n return <Banner isTrialEndedRecently={isTrialEndedRecently} />;\n }\n\n return null;\n};\n\nexport { UpsellBanner };\n"],"names":["BannerBackground","styled","Flex","theme","colors","primary600","alternative600","Banner","isTrialEndedRecently","formatMessage","useIntl","_jsx","width","justifyContent","_jsxs","alignItems","paddingTop","paddingBottom","paddingLeft","paddingRight","gap","Box","Typography","variant","fontWeight","textColor","textAlign","fontSize","id","defaultMessage","LinkButton","href","target","UpsellBanner","license","useLicenseLimits","cachedTrialEndsAt","setCachedTrialEndsAt","usePersistentState","undefined","sevenDaysAgo","subDays","Date","timeLeftData","useGetLicenseTrialTimeLeftQuery","skip","isTrial","useEffect","data","trialEndsAt","Boolean","window","strapi","isEE","isAfter"],"mappings":"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"}
@@ -17,6 +17,7 @@ var NpsSurvey = require('../components/NpsSurvey.js');
17
17
  var PageHelpers = require('../components/PageHelpers.js');
18
18
  var PluginsInitializer = require('../components/PluginsInitializer.js');
19
19
  var PrivateRoute = require('../components/PrivateRoute.js');
20
+ var UpsellBanner = require('../components/UpsellBanner.js');
20
21
  var AppInfo = require('../features/AppInfo.js');
21
22
  var Auth = require('../features/Auth.js');
22
23
  var Configuration = require('../features/Configuration.js');
@@ -138,6 +139,7 @@ const AdminLayout = ()=>{
138
139
  /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Box, {
139
140
  flex: 1,
140
141
  children: [
142
+ /*#__PURE__*/ jsxRuntime.jsx(UpsellBanner.UpsellBanner, {}),
141
143
  /*#__PURE__*/ jsxRuntime.jsx(reactRouterDom.Outlet, {}),
142
144
  /*#__PURE__*/ jsxRuntime.jsx(Modal.GuidedTourModal, {})
143
145
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"AuthenticatedLayout.js","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { GuidedTourModal } from '../components/GuidedTour/Modal';\nimport { useGuidedTour } from '../components/GuidedTour/Provider';\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useOnce } from '../hooks/useOnce';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const setGuidedTourVisibility = useGuidedTour(\n 'AdminLayout',\n (state) => state.setGuidedTourVisibility\n );\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n const userRoles = useAuth('AuthenticatedApp', (state) => state.user?.roles);\n\n React.useEffect(() => {\n if (userRoles) {\n const isUserSuperAdmin = userRoles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin && appInfo?.autoReload) {\n setGuidedTourVisibility(true);\n }\n }\n }, [userRoles, appInfo?.autoReload, setGuidedTourVisibility]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n /**\n * Make sure the event is only send once after accessing the admin panel\n * and not at runtime for example when regenerating the permissions with the ctb\n * or with i18n\n */\n useOnce(() => {\n trackUsage('didAccessAuthenticatedAdministration');\n });\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex alignItems=\"flex-start\">\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n />\n <Box flex={1}>\n <Outlet />\n <GuidedTourModal />\n </Box>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","setGuidedTourVisibility","useGuidedTour","state","formatMessage","useIntl","userInfo","useAuth","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","userRoles","roles","isUserSuperAdmin","find","code","autoReload","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","useMenu","checkLatestStrapiVersion","useOnce","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","alignItems","LeftMenu","flex","Outlet","GuidedTourModal","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}
1
+ {"version":3,"file":"AuthenticatedLayout.js","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { GuidedTourModal } from '../components/GuidedTour/Modal';\nimport { useGuidedTour } from '../components/GuidedTour/Provider';\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useOnce } from '../hooks/useOnce';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const setGuidedTourVisibility = useGuidedTour(\n 'AdminLayout',\n (state) => state.setGuidedTourVisibility\n );\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n const userRoles = useAuth('AuthenticatedApp', (state) => state.user?.roles);\n\n React.useEffect(() => {\n if (userRoles) {\n const isUserSuperAdmin = userRoles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin && appInfo?.autoReload) {\n setGuidedTourVisibility(true);\n }\n }\n }, [userRoles, appInfo?.autoReload, setGuidedTourVisibility]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n /**\n * Make sure the event is only send once after accessing the admin panel\n * and not at runtime for example when regenerating the permissions with the ctb\n * or with i18n\n */\n useOnce(() => {\n trackUsage('didAccessAuthenticatedAdministration');\n });\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex alignItems=\"flex-start\">\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n />\n <Box flex={1}>\n <UpsellBanner />\n <Outlet />\n <GuidedTourModal />\n </Box>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","setGuidedTourVisibility","useGuidedTour","state","formatMessage","useIntl","userInfo","useAuth","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","userRoles","roles","isUserSuperAdmin","find","code","autoReload","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","useMenu","checkLatestStrapiVersion","useOnce","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","alignItems","LeftMenu","flex","UpsellBanner","Outlet","GuidedTourModal","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAM,EAAEA,OAAAA,EAASC,aAAa,EAAE,GAAGC,WAAAA;AAEnC,MAAMC,WAAc,GAAA,IAAA;AAClB,IAAA,MAAMC,0BAA0BC,sBAC9B,CAAA,aAAA,EACA,CAACC,KAAAA,GAAUA,MAAMF,uBAAuB,CAAA;IAE1C,MAAM,EAAEG,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,WAAWC,YAAQ,CAAA,kBAAA,EAAoB,CAACJ,KAAAA,GAAUA,MAAMK,IAAI,CAAA;AAClE,IAAA,MAAM,CAACC,MAAAA,EAAQC,SAAU,CAAA,GAAGC,iBAAMC,QAAQ,EAAA;AAC1C,IAAA,MAAM,EAAEC,uBAAuB,EAAE,GAAGC,8BAAiB,CAAA,kBAAA,CAAA;AAErD,IAAA,MAAM,EAAEC,IAAMC,EAAAA,OAAO,EAAEC,SAAWC,EAAAA,gBAAgB,EAAE,GAAGC,yBAAAA,EAAAA;AACvD,IAAA,MAAM,CAACC,OAASC,EAAAA,UAAAA,CAAW,GAAGV,gBAAAA,CAAMC,QAAQ,CAASd,aAAAA,CAAAA;AAErDa,IAAAA,gBAAAA,CAAMW,SAAS,CAAC,IAAA;AACd,QAAA,IAAIT,uBAAyB,EAAA;YAC3BU,KAAM,CAAA,4DAAA,CAAA,CACHC,IAAI,CAAC,OAAOC,GAAAA,GAAAA;gBACX,IAAI,CAACA,GAAIC,CAAAA,EAAE,EAAE;AACX,oBAAA;AACF;gBAEA,MAAMC,QAAAA,GAAY,MAAMF,GAAAA,CAAIG,IAAI,EAAA;gBAEhC,IAAI,CAACD,QAASE,CAAAA,QAAQ,EAAE;AACtB,oBAAA,MAAM,IAAIC,KAAAA,EAAAA;AACZ;AAEAT,gBAAAA,UAAAA,CAAWM,SAASE,QAAQ,CAAA;AAC9B,aAAA,CAAA,CACCE,KAAK,CAAC,IAAA;AACL;;eAGF,CAAA;AACJ;KACC,EAAA;AAAClB,QAAAA;AAAwB,KAAA,CAAA;AAE5B,IAAA,MAAMmB,YAAYzB,YAAQ,CAAA,kBAAA,EAAoB,CAACJ,KAAUA,GAAAA,KAAAA,CAAMK,IAAI,EAAEyB,KAAAA,CAAAA;AAErEtB,IAAAA,gBAAAA,CAAMW,SAAS,CAAC,IAAA;AACd,QAAA,IAAIU,SAAW,EAAA;YACb,MAAME,gBAAAA,GAAmBF,UAAUG,IAAI,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA,IAAS,KAAA,oBAAA,CAAA;YAE/D,IAAIF,gBAAAA,IAAoBlB,SAASqB,UAAY,EAAA;gBAC3CpC,uBAAwB,CAAA,IAAA,CAAA;AAC1B;AACF;KACC,EAAA;AAAC+B,QAAAA,SAAAA;QAAWhB,OAASqB,EAAAA,UAAAA;AAAYpC,QAAAA;AAAwB,KAAA,CAAA;AAE5DU,IAAAA,gBAAAA,CAAMW,SAAS,CAAC,IAAA;QACdgB,wBAAmBhC,CAAAA,QAAAA,CAAAA,CAAUkB,IAAI,CAAC,CAACe,EAAAA,GAAAA;AACjC,YAAA,IAAIA,EAAI,EAAA;gBACN7B,SAAU6B,CAAAA,EAAAA,CAAAA;AACZ;AACF,SAAA,CAAA;KACC,EAAA;AAACjC,QAAAA;AAAS,KAAA,CAAA;IAEb,MAAM,EAAEkC,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;IAEvB,MAAM,EACJxB,SAAWyB,EAAAA,aAAa,EACxBC,mBAAmB,EACnBC,mBAAmB,EACpB,GAAGC,eAAQC,CAAAA,wBAAAA,CAAyBhD,aAAesB,EAAAA,OAAAA,CAAAA,CAAAA;AAEpD;;;;AAIC,MACD2B,eAAQ,CAAA,IAAA;QACNP,UAAW,CAAA,sCAAA,CAAA;AACb,KAAA,CAAA;;;AAIA,IAAA,IAAIE,iBAAiBxB,gBAAkB,EAAA;QACrC,qBAAO8B,cAAA,CAACC,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB;AAEA,IAAA,qBACEC,eAACC,CAAAA,uBAAAA,EAAAA;AACE,QAAA,GAAGpC,OAAO;QACXP,MAAQA,EAAAA,MAAAA;QACR4C,sBAAwBjC,EAAAA,OAAAA;AACxBkC,QAAAA,kBAAAA,EAAoBR,yBAAyBhD,aAAesB,EAAAA,OAAAA,CAAAA;;0BAE5D4B,cAACO,CAAAA,mBAAAA,EAAAA,EAAAA,CAAAA;0BACDP,cAACQ,CAAAA,qCAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAR,cAACS,CAAAA,oBAAAA,EAAAA;oBAAYC,OAASC,EAAAA,iCAAAA;AACpB,oBAAA,QAAA,gBAAAR,eAACS,CAAAA,gBAAAA,EAAAA;wBAAIC,UAAW,EAAA,YAAA;;0CACdb,cAACc,CAAAA,0BAAAA,EAAAA;0CACE1D,aAAc,CAAA;oCAAEmC,EAAI,EAAA,eAAA;oCAAiBwB,cAAgB,EAAA;AAAkB,iCAAA;;0CAE1EZ,eAACa,CAAAA,iBAAAA,EAAAA;gCAAKC,UAAW,EAAA,YAAA;;kDACfjB,cAACkB,CAAAA,iBAAAA,EAAAA;wCACCvB,mBAAqBA,EAAAA,mBAAAA;wCACrBC,mBAAqBA,EAAAA;;kDAEvBO,eAACS,CAAAA,gBAAAA,EAAAA;wCAAIO,IAAM,EAAA,CAAA;;0DACTnB,cAACoB,CAAAA,yBAAAA,EAAAA,EAAAA,CAAAA;0DACDpB,cAACqB,CAAAA,qBAAAA,EAAAA,EAAAA,CAAAA;0DACDrB,cAACsB,CAAAA,qBAAAA,EAAAA,EAAAA;;;;;;;;;;;AAQjB;AAEA,MAAMC,kBAAqB,GAAA,IAAA;AACzB,IAAA,qBACEvB,cAACwB,CAAAA,yBAAAA,EAAAA;AACC,QAAA,QAAA,gBAAAxB,cAAChD,CAAAA,WAAAA,EAAAA,EAAAA;;AAGP;AAEA,MAAM8C,wBAA2B,GAAA,CAC/B2B,qBACAC,EAAAA,sBAAAA,GAAiC,EAAE,GAAA;AAEnC,IAAA,IAAI,CAACC,KAAAA,CAAMF,qBAA0B,CAAA,IAAA,CAACE,MAAMD,sBAAyB,CAAA,EAAA;QACnE,OAAO,KAAA;AACT;AAEA,IAAA,OAAOE,GAAGH,qBAAuBC,EAAAA,sBAAAA,CAAAA;AACnC,CAAA;;;;;"}
@@ -15,6 +15,7 @@ import { NpsSurvey } from '../components/NpsSurvey.mjs';
15
15
  import { Page } from '../components/PageHelpers.mjs';
16
16
  import { PluginsInitializer } from '../components/PluginsInitializer.mjs';
17
17
  import { PrivateRoute } from '../components/PrivateRoute.mjs';
18
+ import { UpsellBanner } from '../components/UpsellBanner.mjs';
18
19
  import { AppInfoProvider } from '../features/AppInfo.mjs';
19
20
  import { useAuth } from '../features/Auth.mjs';
20
21
  import { useConfiguration } from '../features/Configuration.mjs';
@@ -117,6 +118,7 @@ const AdminLayout = ()=>{
117
118
  /*#__PURE__*/ jsxs(Box, {
118
119
  flex: 1,
119
120
  children: [
121
+ /*#__PURE__*/ jsx(UpsellBanner, {}),
120
122
  /*#__PURE__*/ jsx(Outlet, {}),
121
123
  /*#__PURE__*/ jsx(GuidedTourModal, {})
122
124
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"AuthenticatedLayout.mjs","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { GuidedTourModal } from '../components/GuidedTour/Modal';\nimport { useGuidedTour } from '../components/GuidedTour/Provider';\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useOnce } from '../hooks/useOnce';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const setGuidedTourVisibility = useGuidedTour(\n 'AdminLayout',\n (state) => state.setGuidedTourVisibility\n );\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n const userRoles = useAuth('AuthenticatedApp', (state) => state.user?.roles);\n\n React.useEffect(() => {\n if (userRoles) {\n const isUserSuperAdmin = userRoles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin && appInfo?.autoReload) {\n setGuidedTourVisibility(true);\n }\n }\n }, [userRoles, appInfo?.autoReload, setGuidedTourVisibility]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n /**\n * Make sure the event is only send once after accessing the admin panel\n * and not at runtime for example when regenerating the permissions with the ctb\n * or with i18n\n */\n useOnce(() => {\n trackUsage('didAccessAuthenticatedAdministration');\n });\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex alignItems=\"flex-start\">\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n />\n <Box flex={1}>\n <Outlet />\n <GuidedTourModal />\n </Box>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","setGuidedTourVisibility","useGuidedTour","state","formatMessage","useIntl","userInfo","useAuth","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","userRoles","roles","isUserSuperAdmin","find","code","autoReload","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","useMenu","checkLatestStrapiVersion","useOnce","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","alignItems","LeftMenu","flex","Outlet","GuidedTourModal","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}
1
+ {"version":3,"file":"AuthenticatedLayout.mjs","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { GuidedTourModal } from '../components/GuidedTour/Modal';\nimport { useGuidedTour } from '../components/GuidedTour/Provider';\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useOnce } from '../hooks/useOnce';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const setGuidedTourVisibility = useGuidedTour(\n 'AdminLayout',\n (state) => state.setGuidedTourVisibility\n );\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n const userRoles = useAuth('AuthenticatedApp', (state) => state.user?.roles);\n\n React.useEffect(() => {\n if (userRoles) {\n const isUserSuperAdmin = userRoles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin && appInfo?.autoReload) {\n setGuidedTourVisibility(true);\n }\n }\n }, [userRoles, appInfo?.autoReload, setGuidedTourVisibility]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n /**\n * Make sure the event is only send once after accessing the admin panel\n * and not at runtime for example when regenerating the permissions with the ctb\n * or with i18n\n */\n useOnce(() => {\n trackUsage('didAccessAuthenticatedAdministration');\n });\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex alignItems=\"flex-start\">\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n />\n <Box flex={1}>\n <UpsellBanner />\n <Outlet />\n <GuidedTourModal />\n </Box>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","setGuidedTourVisibility","useGuidedTour","state","formatMessage","useIntl","userInfo","useAuth","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","userRoles","roles","isUserSuperAdmin","find","code","autoReload","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","useMenu","checkLatestStrapiVersion","useOnce","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","alignItems","LeftMenu","flex","UpsellBanner","Outlet","GuidedTourModal","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}
@@ -4,15 +4,15 @@ var jsxRuntime = require('react/jsx-runtime');
4
4
  require('react');
5
5
  var designSystem = require('@strapi/design-system');
6
6
  var reactIntl = require('react-intl');
7
- var styledComponents = require('styled-components');
7
+ var styled = require('styled-components');
8
8
  var hooks = require('../core/store/hooks.js');
9
9
  var reducer = require('../reducer.js');
10
10
 
11
- const Wrapper = styledComponents.styled(designSystem.Box)`
11
+ const Wrapper = styled.styled(designSystem.Box)`
12
12
  margin: 0 auto;
13
13
  width: 552px;
14
14
  `;
15
- const Column = styledComponents.styled(designSystem.Flex)`
15
+ const Column = styled.styled(designSystem.Flex)`
16
16
  flex-direction: column;
17
17
  `;
18
18
  const LocaleToggle = ()=>{
@@ -1 +1 @@
1
- {"version":3,"file":"UnauthenticatedLayout.js","sources":["../../../../../admin/src/layouts/UnauthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n BoxComponent,\n Flex,\n FlexComponent,\n SingleSelect,\n SingleSelectOption,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { setLocale } from '../reducer';\n\nconst Wrapper = styled<BoxComponent>(Box)`\n margin: 0 auto;\n width: 552px;\n`;\n\nexport const Column = styled<FlexComponent>(Flex)`\n flex-direction: column;\n`;\n\nconst LocaleToggle = () => {\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const dispatch = useTypedDispatch();\n const { formatMessage, locale } = useIntl();\n\n return (\n <SingleSelect\n aria-label={formatMessage({\n id: 'global.localeToggle.label',\n defaultMessage: 'Select interface language',\n })}\n value={locale}\n onChange={(language) => {\n dispatch(setLocale(language as string));\n }}\n >\n {Object.entries(localeNames).map(([language, name]) => (\n <SingleSelectOption key={language} value={language}>\n {name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n\ninterface LayoutContentProps {\n children: React.ReactNode;\n}\n\nexport const LayoutContent = ({ children }: LayoutContentProps) => (\n <Wrapper\n shadow=\"tableShadow\"\n hasRadius\n paddingTop={9}\n paddingBottom={9}\n paddingLeft={10}\n paddingRight={10}\n background=\"neutral0\"\n >\n {children}\n </Wrapper>\n);\n\ninterface UnauthenticatedLayoutProps {\n children: React.ReactNode;\n}\n\nexport const UnauthenticatedLayout = ({ children }: UnauthenticatedLayoutProps) => {\n return (\n <div>\n <Flex tag=\"header\" justifyContent=\"flex-end\">\n <Box paddingTop={6} paddingRight={8}>\n <LocaleToggle />\n </Box>\n </Flex>\n <Box paddingTop={2} paddingBottom={11}>\n {children}\n </Box>\n </div>\n );\n};\n"],"names":["Wrapper","styled","Box","Column","Flex","LocaleToggle","localeNames","useTypedSelector","state","admin_app","language","dispatch","useTypedDispatch","formatMessage","locale","useIntl","_jsx","SingleSelect","aria-label","id","defaultMessage","value","onChange","setLocale","Object","entries","map","name","SingleSelectOption","LayoutContent","children","shadow","hasRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","background","UnauthenticatedLayout","_jsxs","div","tag","justifyContent"],"mappings":";;;;;;;;;;AAgBA,MAAMA,OAAAA,GAAUC,uBAAqBC,CAAAA,gBAAAA,CAAI;;;AAGzC,CAAC;AAEYC,MAAAA,MAAAA,GAASF,uBAAsBG,CAAAA,iBAAAA,CAAK;;AAEjD;AAEA,MAAMC,YAAe,GAAA,IAAA;IACnB,MAAMC,WAAAA,GAAcC,uBAAiB,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAACC,QAAQ,CAACJ,WAAW,CAAA;AACpF,IAAA,MAAMK,QAAWC,GAAAA,sBAAAA,EAAAA;AACjB,IAAA,MAAM,EAAEC,aAAa,EAAEC,MAAM,EAAE,GAAGC,iBAAAA,EAAAA;AAElC,IAAA,qBACEC,cAACC,CAAAA,yBAAAA,EAAAA;AACCC,QAAAA,YAAAA,EAAYL,aAAc,CAAA;YACxBM,EAAI,EAAA,2BAAA;YACJC,cAAgB,EAAA;AAClB,SAAA,CAAA;QACAC,KAAOP,EAAAA,MAAAA;AACPQ,QAAAA,QAAAA,EAAU,CAACZ,QAAAA,GAAAA;AACTC,YAAAA,QAAAA,CAASY,iBAAUb,CAAAA,QAAAA,CAAAA,CAAAA;AACrB,SAAA;kBAECc,MAAOC,CAAAA,OAAO,CAACnB,WAAAA,CAAAA,CAAaoB,GAAG,CAAC,CAAC,CAAChB,QAAAA,EAAUiB,IAAK,CAAA,iBAChDX,cAACY,CAAAA,+BAAAA,EAAAA;gBAAkCP,KAAOX,EAAAA,QAAAA;AACvCiB,gBAAAA,QAAAA,EAAAA;AADsBjB,aAAAA,EAAAA,QAAAA,CAAAA;;AAMjC,CAAA;MAMamB,aAAgB,GAAA,CAAC,EAAEC,QAAQ,EAAsB,iBAC5Dd,cAAChB,CAAAA,OAAAA,EAAAA;QACC+B,MAAO,EAAA,aAAA;QACPC,SAAS,EAAA,IAAA;QACTC,UAAY,EAAA,CAAA;QACZC,aAAe,EAAA,CAAA;QACfC,WAAa,EAAA,EAAA;QACbC,YAAc,EAAA,EAAA;QACdC,UAAW,EAAA,UAAA;AAEVP,QAAAA,QAAAA,EAAAA;AAEH,KAAA;AAMWQ,MAAAA,qBAAAA,GAAwB,CAAC,EAAER,QAAQ,EAA8B,GAAA;AAC5E,IAAA,qBACES,eAACC,CAAAA,KAAAA,EAAAA;;0BACCxB,cAACZ,CAAAA,iBAAAA,EAAAA;gBAAKqC,GAAI,EAAA,QAAA;gBAASC,cAAe,EAAA,UAAA;AAChC,gBAAA,QAAA,gBAAA1B,cAACd,CAAAA,gBAAAA,EAAAA;oBAAI+B,UAAY,EAAA,CAAA;oBAAGG,YAAc,EAAA,CAAA;AAChC,oBAAA,QAAA,gBAAApB,cAACX,CAAAA,YAAAA,EAAAA,EAAAA;;;0BAGLW,cAACd,CAAAA,gBAAAA,EAAAA;gBAAI+B,UAAY,EAAA,CAAA;gBAAGC,aAAe,EAAA,EAAA;AAChCJ,gBAAAA,QAAAA,EAAAA;;;;AAIT;;;;;;"}
1
+ {"version":3,"file":"UnauthenticatedLayout.js","sources":["../../../../../admin/src/layouts/UnauthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n BoxComponent,\n Flex,\n FlexComponent,\n SingleSelect,\n SingleSelectOption,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { setLocale } from '../reducer';\n\nconst Wrapper = styled<BoxComponent>(Box)`\n margin: 0 auto;\n width: 552px;\n`;\n\nexport const Column = styled<FlexComponent>(Flex)`\n flex-direction: column;\n`;\n\nconst LocaleToggle = () => {\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const dispatch = useTypedDispatch();\n const { formatMessage, locale } = useIntl();\n\n return (\n <SingleSelect\n aria-label={formatMessage({\n id: 'global.localeToggle.label',\n defaultMessage: 'Select interface language',\n })}\n value={locale}\n onChange={(language) => {\n dispatch(setLocale(language as string));\n }}\n >\n {Object.entries(localeNames).map(([language, name]) => (\n <SingleSelectOption key={language} value={language}>\n {name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n\ninterface LayoutContentProps {\n children: React.ReactNode;\n}\n\nexport const LayoutContent = ({ children }: LayoutContentProps) => (\n <Wrapper\n shadow=\"tableShadow\"\n hasRadius\n paddingTop={9}\n paddingBottom={9}\n paddingLeft={10}\n paddingRight={10}\n background=\"neutral0\"\n >\n {children}\n </Wrapper>\n);\n\ninterface UnauthenticatedLayoutProps {\n children: React.ReactNode;\n}\n\nexport const UnauthenticatedLayout = ({ children }: UnauthenticatedLayoutProps) => {\n return (\n <div>\n <Flex tag=\"header\" justifyContent=\"flex-end\">\n <Box paddingTop={6} paddingRight={8}>\n <LocaleToggle />\n </Box>\n </Flex>\n <Box paddingTop={2} paddingBottom={11}>\n {children}\n </Box>\n </div>\n );\n};\n"],"names":["Wrapper","styled","Box","Column","Flex","LocaleToggle","localeNames","useTypedSelector","state","admin_app","language","dispatch","useTypedDispatch","formatMessage","locale","useIntl","_jsx","SingleSelect","aria-label","id","defaultMessage","value","onChange","setLocale","Object","entries","map","name","SingleSelectOption","LayoutContent","children","shadow","hasRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","background","UnauthenticatedLayout","_jsxs","div","tag","justifyContent"],"mappings":";;;;;;;;;;AAgBA,MAAMA,OAAAA,GAAUC,aAAqBC,CAAAA,gBAAAA,CAAI;;;AAGzC,CAAC;AAEYC,MAAAA,MAAAA,GAASF,aAAsBG,CAAAA,iBAAAA,CAAK;;AAEjD;AAEA,MAAMC,YAAe,GAAA,IAAA;IACnB,MAAMC,WAAAA,GAAcC,uBAAiB,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAACC,QAAQ,CAACJ,WAAW,CAAA;AACpF,IAAA,MAAMK,QAAWC,GAAAA,sBAAAA,EAAAA;AACjB,IAAA,MAAM,EAAEC,aAAa,EAAEC,MAAM,EAAE,GAAGC,iBAAAA,EAAAA;AAElC,IAAA,qBACEC,cAACC,CAAAA,yBAAAA,EAAAA;AACCC,QAAAA,YAAAA,EAAYL,aAAc,CAAA;YACxBM,EAAI,EAAA,2BAAA;YACJC,cAAgB,EAAA;AAClB,SAAA,CAAA;QACAC,KAAOP,EAAAA,MAAAA;AACPQ,QAAAA,QAAAA,EAAU,CAACZ,QAAAA,GAAAA;AACTC,YAAAA,QAAAA,CAASY,iBAAUb,CAAAA,QAAAA,CAAAA,CAAAA;AACrB,SAAA;kBAECc,MAAOC,CAAAA,OAAO,CAACnB,WAAAA,CAAAA,CAAaoB,GAAG,CAAC,CAAC,CAAChB,QAAAA,EAAUiB,IAAK,CAAA,iBAChDX,cAACY,CAAAA,+BAAAA,EAAAA;gBAAkCP,KAAOX,EAAAA,QAAAA;AACvCiB,gBAAAA,QAAAA,EAAAA;AADsBjB,aAAAA,EAAAA,QAAAA,CAAAA;;AAMjC,CAAA;MAMamB,aAAgB,GAAA,CAAC,EAAEC,QAAQ,EAAsB,iBAC5Dd,cAAChB,CAAAA,OAAAA,EAAAA;QACC+B,MAAO,EAAA,aAAA;QACPC,SAAS,EAAA,IAAA;QACTC,UAAY,EAAA,CAAA;QACZC,aAAe,EAAA,CAAA;QACfC,WAAa,EAAA,EAAA;QACbC,YAAc,EAAA,EAAA;QACdC,UAAW,EAAA,UAAA;AAEVP,QAAAA,QAAAA,EAAAA;AAEH,KAAA;AAMWQ,MAAAA,qBAAAA,GAAwB,CAAC,EAAER,QAAQ,EAA8B,GAAA;AAC5E,IAAA,qBACES,eAACC,CAAAA,KAAAA,EAAAA;;0BACCxB,cAACZ,CAAAA,iBAAAA,EAAAA;gBAAKqC,GAAI,EAAA,QAAA;gBAASC,cAAe,EAAA,UAAA;AAChC,gBAAA,QAAA,gBAAA1B,cAACd,CAAAA,gBAAAA,EAAAA;oBAAI+B,UAAY,EAAA,CAAA;oBAAGG,YAAc,EAAA,CAAA;AAChC,oBAAA,QAAA,gBAAApB,cAACX,CAAAA,YAAAA,EAAAA,EAAAA;;;0BAGLW,cAACd,CAAAA,gBAAAA,EAAAA;gBAAI+B,UAAY,EAAA,CAAA;gBAAGC,aAAe,EAAA,EAAA;AAChCJ,gBAAAA,QAAAA,EAAAA;;;;AAIT;;;;;;"}
@@ -6,7 +6,7 @@ var designSystem = require('@strapi/design-system');
6
6
  var omit = require('lodash/omit');
7
7
  var reactIntl = require('react-intl');
8
8
  var reactRouterDom = require('react-router-dom');
9
- var styledComponents = require('styled-components');
9
+ var styled = require('styled-components');
10
10
  var yup = require('yup');
11
11
  var Form = require('../../../components/Form.js');
12
12
  var Renderer = require('../../../components/FormInputs/Renderer.js');
@@ -500,7 +500,7 @@ const Register = ({ hasAdmin })=>{
500
500
  return acc;
501
501
  }, {});
502
502
  }
503
- const A = styledComponents.styled.a`
503
+ const A = styled.styled.a`
504
504
  color: ${({ theme })=>theme.colors.primary600};
505
505
  `;
506
506