@strapi/admin 5.26.0 → 5.28.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 (318) hide show
  1. package/dist/admin/admin/src/components/DragLayer.js +67 -0
  2. package/dist/admin/admin/src/components/DragLayer.js.map +1 -0
  3. package/dist/admin/admin/src/components/DragLayer.mjs +64 -0
  4. package/dist/admin/admin/src/components/DragLayer.mjs.map +1 -0
  5. package/dist/admin/admin/src/components/ErrorElement.js +10 -3
  6. package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
  7. package/dist/admin/admin/src/components/ErrorElement.mjs +10 -3
  8. package/dist/admin/admin/src/components/ErrorElement.mjs.map +1 -1
  9. package/dist/admin/admin/src/components/GapDropZone.js +292 -0
  10. package/dist/admin/admin/src/components/GapDropZone.js.map +1 -0
  11. package/dist/admin/admin/src/components/GapDropZone.mjs +268 -0
  12. package/dist/admin/admin/src/components/GapDropZone.mjs.map +1 -0
  13. package/dist/admin/admin/src/components/GuidedTour/Context.js +15 -0
  14. package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
  15. package/dist/admin/admin/src/components/GuidedTour/Context.mjs +15 -0
  16. package/dist/admin/admin/src/components/GuidedTour/Context.mjs.map +1 -1
  17. package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.js +15 -0
  18. package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.js.map +1 -0
  19. package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.mjs +13 -0
  20. package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.mjs.map +1 -0
  21. package/dist/admin/admin/src/components/GuidedTour/Overview.js +2 -1
  22. package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
  23. package/dist/admin/admin/src/components/GuidedTour/Overview.mjs +2 -1
  24. package/dist/admin/admin/src/components/GuidedTour/Overview.mjs.map +1 -1
  25. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js +2 -2
  26. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js.map +1 -1
  27. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs +2 -2
  28. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs.map +1 -1
  29. package/dist/admin/admin/src/components/GuidedTour/Tours.js +1 -1
  30. package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
  31. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs +1 -1
  32. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -1
  33. package/dist/admin/admin/src/components/Layouts/ActionLayout.js +3 -2
  34. package/dist/admin/admin/src/components/Layouts/ActionLayout.js.map +1 -1
  35. package/dist/admin/admin/src/components/Layouts/ActionLayout.mjs +3 -2
  36. package/dist/admin/admin/src/components/Layouts/ActionLayout.mjs.map +1 -1
  37. package/dist/admin/admin/src/components/Layouts/ContentLayout.js +3 -2
  38. package/dist/admin/admin/src/components/Layouts/ContentLayout.js.map +1 -1
  39. package/dist/admin/admin/src/components/Layouts/ContentLayout.mjs +3 -2
  40. package/dist/admin/admin/src/components/Layouts/ContentLayout.mjs.map +1 -1
  41. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +65 -32
  42. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
  43. package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs +66 -33
  44. package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs.map +1 -1
  45. package/dist/admin/admin/src/components/Layouts/Layout.js +29 -6
  46. package/dist/admin/admin/src/components/Layouts/Layout.js.map +1 -1
  47. package/dist/admin/admin/src/components/Layouts/Layout.mjs +30 -7
  48. package/dist/admin/admin/src/components/Layouts/Layout.mjs.map +1 -1
  49. package/dist/admin/admin/src/components/LeftMenu.js +147 -92
  50. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  51. package/dist/admin/admin/src/components/LeftMenu.mjs +131 -95
  52. package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
  53. package/dist/admin/admin/src/components/MainNav/MainNav.js +20 -6
  54. package/dist/admin/admin/src/components/MainNav/MainNav.js.map +1 -1
  55. package/dist/admin/admin/src/components/MainNav/MainNav.mjs +20 -6
  56. package/dist/admin/admin/src/components/MainNav/MainNav.mjs.map +1 -1
  57. package/dist/admin/admin/src/components/MainNav/MainNavLinks.js +157 -0
  58. package/dist/admin/admin/src/components/MainNav/MainNavLinks.js.map +1 -0
  59. package/dist/admin/admin/src/components/MainNav/MainNavLinks.mjs +154 -0
  60. package/dist/admin/admin/src/components/MainNav/MainNavLinks.mjs.map +1 -0
  61. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js +65 -0
  62. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js.map +1 -0
  63. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.mjs +63 -0
  64. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.mjs.map +1 -0
  65. package/dist/admin/admin/src/components/MainNav/NavLink.js +2 -1
  66. package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
  67. package/dist/admin/admin/src/components/MainNav/NavLink.mjs +2 -1
  68. package/dist/admin/admin/src/components/MainNav/NavLink.mjs.map +1 -1
  69. package/dist/admin/admin/src/components/MainNav/NavUser.js +39 -22
  70. package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
  71. package/dist/admin/admin/src/components/MainNav/NavUser.mjs +39 -22
  72. package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
  73. package/dist/admin/admin/src/components/MainNav/TrialCountdown.js +8 -1
  74. package/dist/admin/admin/src/components/MainNav/TrialCountdown.js.map +1 -1
  75. package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs +9 -2
  76. package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs.map +1 -1
  77. package/dist/admin/admin/src/components/NpsSurvey.js +159 -119
  78. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  79. package/dist/admin/admin/src/components/NpsSurvey.mjs +160 -120
  80. package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
  81. package/dist/admin/admin/src/components/PageHelpers.js +1 -1
  82. package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
  83. package/dist/admin/admin/src/components/PageHelpers.mjs +1 -1
  84. package/dist/admin/admin/src/components/PageHelpers.mjs.map +1 -1
  85. package/dist/admin/admin/src/components/Providers.js +2 -4
  86. package/dist/admin/admin/src/components/Providers.js.map +1 -1
  87. package/dist/admin/admin/src/components/Providers.mjs +2 -4
  88. package/dist/admin/admin/src/components/Providers.mjs.map +1 -1
  89. package/dist/admin/admin/src/components/ResizeIndicator.js +353 -0
  90. package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -0
  91. package/dist/admin/admin/src/components/ResizeIndicator.mjs +332 -0
  92. package/dist/admin/admin/src/components/ResizeIndicator.mjs.map +1 -0
  93. package/dist/admin/admin/src/components/SubNav.js +98 -33
  94. package/dist/admin/admin/src/components/SubNav.js.map +1 -1
  95. package/dist/admin/admin/src/components/SubNav.mjs +99 -34
  96. package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
  97. package/dist/admin/admin/src/components/UpsellBanner.js +3 -2
  98. package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
  99. package/dist/admin/admin/src/components/UpsellBanner.mjs +3 -2
  100. package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
  101. package/dist/admin/admin/src/components/WidgetRoot.js +216 -0
  102. package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -0
  103. package/dist/admin/admin/src/components/WidgetRoot.mjs +195 -0
  104. package/dist/admin/admin/src/components/WidgetRoot.mjs.map +1 -0
  105. package/dist/admin/admin/src/constants/theme.js +12 -0
  106. package/dist/admin/admin/src/constants/theme.js.map +1 -0
  107. package/dist/admin/admin/src/constants/theme.mjs +9 -0
  108. package/dist/admin/admin/src/constants/theme.mjs.map +1 -0
  109. package/dist/admin/admin/src/features/Notifications.js +14 -7
  110. package/dist/admin/admin/src/features/Notifications.js.map +1 -1
  111. package/dist/admin/admin/src/features/Notifications.mjs +15 -8
  112. package/dist/admin/admin/src/features/Notifications.mjs.map +1 -1
  113. package/dist/admin/admin/src/features/Tracking.js +5 -1
  114. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  115. package/dist/admin/admin/src/features/Tracking.mjs +5 -1
  116. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  117. package/dist/admin/admin/src/features/Widgets.js +276 -0
  118. package/dist/admin/admin/src/features/Widgets.js.map +1 -0
  119. package/dist/admin/admin/src/features/Widgets.mjs +255 -0
  120. package/dist/admin/admin/src/features/Widgets.mjs.map +1 -0
  121. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js +1 -1
  122. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js.map +1 -1
  123. package/dist/admin/admin/src/hooks/useAPIErrorHandler.mjs +1 -1
  124. package/dist/admin/admin/src/hooks/useAPIErrorHandler.mjs.map +1 -1
  125. package/dist/admin/admin/src/hooks/useDeviceType.js +43 -0
  126. package/dist/admin/admin/src/hooks/useDeviceType.js.map +1 -0
  127. package/dist/admin/admin/src/hooks/useDeviceType.mjs +22 -0
  128. package/dist/admin/admin/src/hooks/useDeviceType.mjs.map +1 -0
  129. package/dist/admin/admin/src/hooks/useMediaQuery.js +70 -0
  130. package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -0
  131. package/dist/admin/admin/src/hooks/useMediaQuery.mjs +46 -0
  132. package/dist/admin/admin/src/hooks/useMediaQuery.mjs.map +1 -0
  133. package/dist/admin/admin/src/hooks/useMenu.js +19 -0
  134. package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
  135. package/dist/admin/admin/src/hooks/useMenu.mjs +19 -0
  136. package/dist/admin/admin/src/hooks/useMenu.mjs.map +1 -1
  137. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +15 -2
  138. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  139. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +15 -2
  140. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  141. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js +11 -7
  142. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js.map +1 -1
  143. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.mjs +11 -7
  144. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.mjs.map +1 -1
  145. package/dist/admin/admin/src/pages/Auth/components/Login.js +3 -0
  146. package/dist/admin/admin/src/pages/Auth/components/Login.js.map +1 -1
  147. package/dist/admin/admin/src/pages/Auth/components/Login.mjs +3 -0
  148. package/dist/admin/admin/src/pages/Auth/components/Login.mjs.map +1 -1
  149. package/dist/admin/admin/src/pages/Home/HomePage.js +200 -130
  150. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  151. package/dist/admin/admin/src/pages/Home/HomePage.mjs +202 -132
  152. package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
  153. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js +189 -0
  154. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -0
  155. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs +168 -0
  156. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs.map +1 -0
  157. package/dist/admin/admin/src/pages/ProfilePage.js +54 -51
  158. package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
  159. package/dist/admin/admin/src/pages/ProfilePage.mjs +55 -52
  160. package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
  161. package/dist/admin/admin/src/pages/Settings/Layout.js +42 -6
  162. package/dist/admin/admin/src/pages/Settings/Layout.js.map +1 -1
  163. package/dist/admin/admin/src/pages/Settings/Layout.mjs +43 -7
  164. package/dist/admin/admin/src/pages/Settings/Layout.mjs.map +1 -1
  165. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +44 -32
  166. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  167. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +45 -33
  168. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  169. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +1 -1
  170. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  171. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +2 -2
  172. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  173. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js +1 -1
  174. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js.map +1 -1
  175. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.mjs +2 -2
  176. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.mjs.map +1 -1
  177. package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.js +4 -3
  178. package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.js.map +1 -1
  179. package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.mjs +5 -4
  180. package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.mjs.map +1 -1
  181. package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.js +4 -3
  182. package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.js.map +1 -1
  183. package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.mjs +5 -4
  184. package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.mjs.map +1 -1
  185. package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.js +4 -3
  186. package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.js.map +1 -1
  187. package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.mjs +5 -4
  188. package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.mjs.map +1 -1
  189. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +36 -32
  190. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  191. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs +36 -32
  192. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs.map +1 -1
  193. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js +1 -1
  194. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
  195. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.mjs +1 -1
  196. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.mjs.map +1 -1
  197. package/dist/admin/admin/src/services/api.js +2 -1
  198. package/dist/admin/admin/src/services/api.js.map +1 -1
  199. package/dist/admin/admin/src/services/api.mjs +2 -1
  200. package/dist/admin/admin/src/services/api.mjs.map +1 -1
  201. package/dist/admin/admin/src/services/auth.js +13 -2
  202. package/dist/admin/admin/src/services/auth.js.map +1 -1
  203. package/dist/admin/admin/src/services/auth.mjs +12 -3
  204. package/dist/admin/admin/src/services/auth.mjs.map +1 -1
  205. package/dist/admin/admin/src/services/homepage.js +11 -4
  206. package/dist/admin/admin/src/services/homepage.js.map +1 -1
  207. package/dist/admin/admin/src/services/homepage.mjs +11 -4
  208. package/dist/admin/admin/src/services/homepage.mjs.map +1 -1
  209. package/dist/admin/admin/src/translations/en.json.js +7 -1
  210. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  211. package/dist/admin/admin/src/translations/en.json.mjs +7 -1
  212. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  213. package/dist/admin/admin/src/translations/uk.json.js +9 -9
  214. package/dist/admin/admin/src/translations/uk.json.mjs +9 -9
  215. package/dist/admin/admin/src/utils/resizeHandlers.js +109 -0
  216. package/dist/admin/admin/src/utils/resizeHandlers.js.map +1 -0
  217. package/dist/admin/admin/src/utils/resizeHandlers.mjs +100 -0
  218. package/dist/admin/admin/src/utils/resizeHandlers.mjs.map +1 -0
  219. package/dist/admin/admin/src/utils/widgetLayout.js +293 -0
  220. package/dist/admin/admin/src/utils/widgetLayout.js.map +1 -0
  221. package/dist/admin/admin/src/utils/widgetLayout.mjs +273 -0
  222. package/dist/admin/admin/src/utils/widgetLayout.mjs.map +1 -0
  223. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +1 -1
  224. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
  225. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs +1 -1
  226. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
  227. package/dist/admin/ee/admin/src/services/ai.js +5 -2
  228. package/dist/admin/ee/admin/src/services/ai.js.map +1 -1
  229. package/dist/admin/ee/admin/src/services/ai.mjs +5 -2
  230. package/dist/admin/ee/admin/src/services/ai.mjs.map +1 -1
  231. package/dist/admin/index.js +11 -0
  232. package/dist/admin/index.js.map +1 -1
  233. package/dist/admin/index.mjs +4 -0
  234. package/dist/admin/index.mjs.map +1 -1
  235. package/dist/admin/src/components/DragLayer.d.ts +8 -4
  236. package/dist/admin/src/components/GapDropZone.d.ts +36 -0
  237. package/dist/admin/src/components/GuidedTour/Context.d.ts +4 -0
  238. package/dist/admin/src/components/GuidedTour/GuidedTourProvider.d.ts +6 -0
  239. package/dist/admin/src/components/LeftMenu.d.ts +2 -2
  240. package/dist/admin/src/components/MainNav/MainNavLinks.d.ts +11 -0
  241. package/dist/admin/src/components/MainNav/NavBurgerMenu.d.ts +9 -0
  242. package/dist/admin/src/components/MainNav/NavUser.d.ts +5 -4
  243. package/dist/admin/src/components/ResizeIndicator.d.ts +12 -0
  244. package/dist/admin/src/components/SubNav.d.ts +18 -5
  245. package/dist/admin/src/components/WidgetRoot.d.ts +14 -0
  246. package/dist/admin/src/constants/theme.d.ts +7 -0
  247. package/dist/admin/src/core/store/configure.d.ts +2 -2
  248. package/dist/admin/src/core/store/hooks.d.ts +2 -2
  249. package/dist/admin/src/features/Tracking.d.ts +1 -1
  250. package/dist/admin/src/features/Widgets.d.ts +29 -0
  251. package/dist/admin/src/hooks/useAdminRoles.d.ts +1 -1
  252. package/dist/admin/src/hooks/useDeviceType.d.ts +6 -0
  253. package/dist/admin/src/hooks/useMediaQuery.d.ts +21 -0
  254. package/dist/admin/src/hooks/useMenu.d.ts +9 -1
  255. package/dist/admin/src/index.d.ts +4 -0
  256. package/dist/admin/src/pages/Home/HomePage.d.ts +4 -5
  257. package/dist/admin/src/pages/Home/components/AddWidgetModal.d.ts +10 -0
  258. package/dist/admin/src/pages/Settings/components/SettingsNav.d.ts +3 -6
  259. package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +4 -4
  260. package/dist/admin/src/selectors.d.ts +2 -2
  261. package/dist/admin/src/services/admin.d.ts +6 -6
  262. package/dist/admin/src/services/api.d.ts +1 -1
  263. package/dist/admin/src/services/apiTokens.d.ts +1 -1
  264. package/dist/admin/src/services/auth.d.ts +21 -12
  265. package/dist/admin/src/services/contentApi.d.ts +1 -1
  266. package/dist/admin/src/services/contentManager.d.ts +1 -1
  267. package/dist/admin/src/services/homepage.d.ts +3 -3
  268. package/dist/admin/src/services/transferTokens.d.ts +1 -1
  269. package/dist/admin/src/services/users.d.ts +8 -8
  270. package/dist/admin/src/services/webhooks.d.ts +2 -2
  271. package/dist/admin/src/utils/resizeHandlers.d.ts +58 -0
  272. package/dist/admin/src/utils/widgetLayout.d.ts +78 -0
  273. package/dist/admin/tests/utils.d.ts +1 -1
  274. package/dist/ee/admin/src/services/ai.d.ts +2 -2
  275. package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
  276. package/dist/ee/server/src/controllers/authentication-utils/middlewares.d.ts.map +1 -1
  277. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +4 -2
  278. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
  279. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs +4 -2
  280. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs.map +1 -1
  281. package/dist/server/server/src/bootstrap.js +5 -0
  282. package/dist/server/server/src/bootstrap.js.map +1 -1
  283. package/dist/server/server/src/bootstrap.mjs +5 -0
  284. package/dist/server/server/src/bootstrap.mjs.map +1 -1
  285. package/dist/server/server/src/controllers/authenticated-user.js +15 -0
  286. package/dist/server/server/src/controllers/authenticated-user.js.map +1 -1
  287. package/dist/server/server/src/controllers/authenticated-user.mjs +15 -0
  288. package/dist/server/server/src/controllers/authenticated-user.mjs.map +1 -1
  289. package/dist/server/server/src/routes/users.js +10 -0
  290. package/dist/server/server/src/routes/users.js.map +1 -1
  291. package/dist/server/server/src/routes/users.mjs +10 -0
  292. package/dist/server/server/src/routes/users.mjs.map +1 -1
  293. package/dist/server/server/src/services/user.js +113 -1
  294. package/dist/server/server/src/services/user.js.map +1 -1
  295. package/dist/server/server/src/services/user.mjs +113 -1
  296. package/dist/server/server/src/services/user.mjs.map +1 -1
  297. package/dist/server/shared/utils/session-auth.js +4 -2
  298. package/dist/server/shared/utils/session-auth.js.map +1 -1
  299. package/dist/server/shared/utils/session-auth.mjs +4 -2
  300. package/dist/server/shared/utils/session-auth.mjs.map +1 -1
  301. package/dist/server/src/bootstrap.d.ts.map +1 -1
  302. package/dist/server/src/controllers/authenticated-user.d.ts +1 -0
  303. package/dist/server/src/controllers/authenticated-user.d.ts.map +1 -1
  304. package/dist/server/src/controllers/index.d.ts +1 -0
  305. package/dist/server/src/controllers/index.d.ts.map +1 -1
  306. package/dist/server/src/index.d.ts +5 -0
  307. package/dist/server/src/index.d.ts.map +1 -1
  308. package/dist/server/src/routes/users.d.ts.map +1 -1
  309. package/dist/server/src/services/index.d.ts +4 -0
  310. package/dist/server/src/services/index.d.ts.map +1 -1
  311. package/dist/server/src/services/user.d.ts +4 -0
  312. package/dist/server/src/services/user.d.ts.map +1 -1
  313. package/dist/shared/contracts/homepage.d.ts +8 -4
  314. package/dist/shared/contracts/homepage.d.ts.map +1 -1
  315. package/dist/shared/contracts/users.d.ts +16 -0
  316. package/dist/shared/contracts/users.d.ts.map +1 -1
  317. package/dist/shared/utils/session-auth.d.ts.map +1 -1
  318. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"SubNav.js","sources":["../../../../../admin/src/components/SubNav.tsx"],"sourcesContent":["import { useId, useState } from 'react';\n\nimport { Box, SubNav as DSSubNav, Flex, Typography, IconButton } from '@strapi/design-system';\nimport { ChevronDown, Plus } from '@strapi/icons';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { tours } from './GuidedTour/Tours';\n\nconst Main = styled(DSSubNav)`\n background-color: ${({ theme }) => theme.colors.neutral0};\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n\n scrollbar-width: none;\n -ms-overflow-style: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n`;\n\nconst StyledLink = styled(NavLink)`\n display: flex;\n align-items: center;\n justify-content: space-between;\n text-decoration: none;\n height: 32px;\n\n color: ${({ theme }) => theme.colors.neutral800};\n\n &.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n color: ${theme.colors.primary700};\n font-weight: 500;\n `;\n }}\n }\n\n &:hover.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n `;\n }}\n }\n\n &:hover > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.neutral100};\n `;\n }}\n }\n\n &:focus-visible {\n outline-offset: -2px;\n }\n`;\n\nconst Link = (\n props: Omit<React.ComponentProps<typeof StyledLink>, 'label'> & {\n label: React.ReactNode;\n endAction?: React.ReactNode;\n }\n) => {\n const { label, endAction, ...rest } = props;\n return (\n <StyledLink {...rest}>\n <Box width={'100%'} paddingLeft={3} paddingRight={3} borderRadius={1}>\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={1}>\n <Typography\n tag=\"div\"\n lineHeight=\"32px\"\n width=\"100%\"\n overflow=\"hidden\"\n style={{ textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}\n >\n {label}\n </Typography>\n <Flex gap={2}>{endAction}</Flex>\n </Flex>\n </Box>\n </StyledLink>\n );\n};\n\nconst StyledHeader = styled(Box)`\n height: 56px;\n display: flex;\n align-items: center;\n padding-left: ${({ theme }) => theme.spaces[5]};\n`;\n\nconst Header = ({ label }: { label: string }) => {\n return (\n <StyledHeader>\n <Typography variant=\"beta\" tag=\"h2\">\n {label}\n </Typography>\n </StyledHeader>\n );\n};\n\nconst Sections = ({ children, ...props }: { children: React.ReactNode[]; [key: string]: any }) => {\n return (\n <Box paddingBottom={4}>\n <Flex tag=\"ol\" gap=\"5\" direction=\"column\" alignItems=\"stretch\" {...props}>\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Box>\n );\n};\n\n/**\n * TODO:\n * This would be better in the content-type-builder package directly but currently\n * the SubNav API does not expose a way to wrap the link, instead it wraps the link and the list\n */\nconst GuidedTourTooltip = ({\n sectionId,\n children,\n}: {\n sectionId?: string;\n children: React.ReactNode;\n}) => {\n switch (sectionId) {\n case 'models':\n return (\n <tours.contentTypeBuilder.CollectionTypes>\n <tours.contentTypeBuilder.YourTurn>{children}</tours.contentTypeBuilder.YourTurn>\n </tours.contentTypeBuilder.CollectionTypes>\n );\n case 'singleTypes':\n return (\n <tours.contentTypeBuilder.SingleTypes>{children}</tours.contentTypeBuilder.SingleTypes>\n );\n case 'components':\n return <tours.contentTypeBuilder.Components>{children}</tours.contentTypeBuilder.Components>;\n default:\n return children;\n }\n};\n\nconst Section = ({\n label,\n children,\n link,\n sectionId,\n}: {\n label: string;\n children: React.ReactNode[];\n link?: { label: string; onClik: () => void };\n sectionId?: string;\n}) => {\n const listId = useId();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box paddingLeft={5} paddingRight={5}>\n <Flex position=\"relative\" justifyContent=\"space-between\">\n <Flex>\n <Box>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {label}\n </Typography>\n </Box>\n </Flex>\n {link && (\n <GuidedTourTooltip sectionId={sectionId}>\n <IconButton\n label={link.label}\n variant=\"ghost\"\n withTooltip\n onClick={link.onClik}\n size=\"XS\"\n >\n <Plus />\n </IconButton>\n </GuidedTourTooltip>\n )}\n </Flex>\n </Box>\n <Flex\n tag=\"ol\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n marginLeft={2}\n marginRight={2}\n >\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Flex>\n );\n};\n\nconst SubSectionHeader = styled.button`\n cursor: pointer;\n width: 100%;\n border: none;\n padding: 0;\n background: transparent;\n display: flex;\n align-items: center;\n\n height: 32px;\n\n border-radius: ${({ theme }) => theme.borderRadius};\n\n padding-left: ${({ theme }) => theme.spaces[3]};\n padding-right: ${({ theme }) => theme.spaces[3]};\n padding-top: ${({ theme }) => theme.spaces[2]};\n padding-bottom: ${({ theme }) => theme.spaces[2]};\n\n &:hover {\n background-color: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\nconst SubSectionLinkWrapper = styled.li`\n ${StyledLink} > div {\n padding-left: 36px;\n }\n`;\n\nconst SubSection = ({ label, children }: { label: string; children: React.ReactNode[] }) => {\n const [isOpen, setOpenLinks] = useState(true);\n const listId = useId();\n\n const handleClick = () => {\n setOpenLinks((prev) => !prev);\n };\n\n return (\n <Box>\n <Flex justifyContent=\"space-between\">\n <SubSectionHeader onClick={handleClick} aria-expanded={isOpen} aria-controls={listId}>\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n <Box paddingLeft={2}>\n <Typography tag=\"span\" fontWeight=\"semiBold\" textColor=\"neutral800\">\n {label}\n </Typography>\n </Box>\n </SubSectionHeader>\n </Flex>\n {\n <Flex\n tag=\"ul\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n style={{\n maxHeight: isOpen ? '1000px' : 0,\n overflow: 'hidden',\n transition: isOpen\n ? 'max-height 1s ease-in-out'\n : 'max-height 0.5s cubic-bezier(0, 1, 0, 1)',\n }}\n >\n {children.map((child, index) => {\n return <SubSectionLinkWrapper key={index}>{child}</SubSectionLinkWrapper>;\n })}\n </Flex>\n }\n </Box>\n );\n};\n\nexport const SubNav = {\n Main,\n Header,\n Link,\n Sections,\n Section,\n SubSection,\n};\n"],"names":["Main","styled","DSSubNav","theme","colors","neutral0","neutral150","StyledLink","NavLink","neutral800","primary100","primary700","neutral100","Link","props","label","endAction","rest","_jsx","Box","width","paddingLeft","paddingRight","borderRadius","_jsxs","Flex","justifyContent","gap","Typography","tag","lineHeight","overflow","style","textOverflow","whiteSpace","StyledHeader","spaces","Header","variant","Sections","children","paddingBottom","direction","alignItems","map","child","index","li","GuidedTourTooltip","sectionId","tours","contentTypeBuilder","CollectionTypes","YourTurn","SingleTypes","Components","Section","link","listId","useId","position","textColor","IconButton","withTooltip","onClick","onClik","size","Plus","id","marginLeft","marginRight","SubSectionHeader","button","SubSectionLinkWrapper","SubSection","isOpen","setOpenLinks","useState","handleClick","prev","aria-expanded","aria-controls","ChevronDown","aria-hidden","fill","transform","transition","fontWeight","maxHeight","SubNav"],"mappings":"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"}
1
+ {"version":3,"file":"SubNav.js","sources":["../../../../../admin/src/components/SubNav.tsx"],"sourcesContent":["import { useId, useState } from 'react';\n\nimport {\n Box,\n SubNav as DSSubNav,\n Flex,\n Typography,\n IconButton,\n Badge,\n ScrollArea,\n} from '@strapi/design-system';\nimport { ChevronDown, Plus } from '@strapi/icons';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { HEIGHT_TOP_NAVIGATION } from '../constants/theme';\n\nimport { tours } from './GuidedTour/Tours';\n\nconst MainSubNav = styled(DSSubNav)`\n width: 100%;\n height: calc(100dvh - ${HEIGHT_TOP_NAVIGATION} - 1px);\n overflow: hidden;\n background-color: ${({ theme }) => theme.colors.neutral0};\n display: flex;\n flex-direction: column;\n border-right: 0;\n box-shadow: none;\n position: fixed;\n top: calc(${HEIGHT_TOP_NAVIGATION} + 1px);\n left: 0;\n z-index: 2;\n\n ${({ theme }) => theme.breakpoints.medium} {\n position: sticky;\n top: 0;\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n }\n ${({ theme }) => theme.breakpoints.large} {\n height: 100dvh;\n }\n`;\n\nconst Main = ({ children, ...props }: { children: React.ReactNode; isFullPage?: boolean }) => (\n <MainSubNav {...props}>{children}</MainSubNav>\n);\n\nconst StyledLink = styled(NavLink)`\n display: flex;\n align-items: center;\n justify-content: space-between;\n text-decoration: none;\n height: 32px;\n\n color: ${({ theme }) => theme.colors.neutral800};\n\n &.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n color: ${theme.colors.primary700};\n font-weight: 500;\n `;\n }}\n }\n\n &:hover.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n `;\n }}\n }\n\n &:hover > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.neutral100};\n `;\n }}\n }\n\n &:focus-visible {\n outline-offset: -2px;\n }\n`;\n\nconst Link = (\n props: Omit<React.ComponentProps<typeof StyledLink>, 'label'> & {\n label: React.ReactNode;\n endAction?: React.ReactNode;\n handleClick?: () => void;\n }\n) => {\n const { label, endAction, handleClick, ...rest } = props;\n\n return (\n <StyledLink {...rest} onClick={handleClick}>\n <Box width={'100%'} paddingLeft={3} paddingRight={3} borderRadius={1}>\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={1}>\n <Typography\n tag=\"div\"\n lineHeight=\"32px\"\n width=\"100%\"\n overflow=\"hidden\"\n style={{ textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}\n >\n {label}\n </Typography>\n <Flex gap={2}>{endAction}</Flex>\n </Flex>\n </Box>\n </StyledLink>\n );\n};\n\nconst StyledHeader = styled(Flex)`\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION};\n height: ${HEIGHT_TOP_NAVIGATION};\n`;\n\nconst Header = ({ label }: { label: string }) => {\n return (\n <StyledHeader\n justifyContent=\"space-between\"\n paddingLeft={{\n initial: 4,\n large: 5,\n }}\n paddingRight={{\n initial: 4,\n large: 5,\n }}\n >\n <Typography variant=\"beta\" tag=\"h2\">\n {label}\n </Typography>\n </StyledHeader>\n );\n};\n\nconst Sections = ({ children, ...props }: { children: React.ReactNode[]; [key: string]: any }) => {\n return (\n <Box paddingTop={4} paddingBottom={4}>\n <Flex tag=\"ol\" gap=\"5\" direction=\"column\" alignItems=\"stretch\" {...props}>\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Box>\n );\n};\n\n/**\n * TODO:\n * This would be better in the content-type-builder package directly but currently\n * the SubNav API does not expose a way to wrap the link, instead it wraps the link and the list\n */\nconst GuidedTourTooltip = ({\n sectionId,\n children,\n}: {\n sectionId?: string;\n children: React.ReactNode;\n}) => {\n switch (sectionId) {\n case 'models':\n return (\n <tours.contentTypeBuilder.CollectionTypes>\n <tours.contentTypeBuilder.YourTurn>{children}</tours.contentTypeBuilder.YourTurn>\n </tours.contentTypeBuilder.CollectionTypes>\n );\n case 'singleTypes':\n return (\n <tours.contentTypeBuilder.SingleTypes>{children}</tours.contentTypeBuilder.SingleTypes>\n );\n case 'components':\n return <tours.contentTypeBuilder.Components>{children}</tours.contentTypeBuilder.Components>;\n default:\n return children;\n }\n};\n\nconst Section = ({\n label,\n children,\n link,\n sectionId,\n badgeLabel,\n}: {\n label: string;\n children: React.ReactNode[];\n link?: { label: string; onClick: () => void };\n sectionId?: string;\n badgeLabel?: string;\n}) => {\n const listId = useId();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box\n paddingLeft={{\n initial: 4,\n large: 5,\n }}\n paddingRight={{\n initial: 4,\n large: 5,\n }}\n >\n <Flex position=\"relative\" justifyContent=\"space-between\" gap={2}>\n <Flex>\n <Box paddingRight={1}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {label}\n </Typography>\n </Box>\n </Flex>\n <Flex gap={1}>\n {badgeLabel && (\n <Badge backgroundColor=\"neutral150\" textColor=\"neutral600\">\n {badgeLabel}\n </Badge>\n )}\n {link && (\n <GuidedTourTooltip sectionId={sectionId}>\n <IconButton\n label={link.label}\n variant=\"ghost\"\n withTooltip\n onClick={link.onClick}\n size=\"XS\"\n >\n <Plus />\n </IconButton>\n </GuidedTourTooltip>\n )}\n </Flex>\n </Flex>\n </Box>\n <Flex\n tag=\"ol\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n marginLeft={{\n initial: 1,\n large: 2,\n }}\n marginRight={{\n initial: 1,\n large: 2,\n }}\n >\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Flex>\n );\n};\n\nconst SubSectionHeader = styled.button`\n cursor: pointer;\n width: 100%;\n border: none;\n padding: 0;\n background: transparent;\n display: flex;\n align-items: center;\n border-radius: ${({ theme }) => theme.borderRadius};\n padding-left: ${({ theme }) => theme.spaces[3]};\n padding-right: ${({ theme }) => theme.spaces[3]};\n padding-top: ${({ theme }) => theme.spaces[2]};\n padding-bottom: ${({ theme }) => theme.spaces[2]};\n\n &:hover {\n background-color: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\nconst SubSectionLinkWrapper = styled.li`\n ${StyledLink} > div {\n padding-left: 36px;\n }\n`;\n\nconst SubSection = ({ label, children }: { label: string; children: React.ReactNode[] }) => {\n const [isOpen, setOpenLinks] = useState(true);\n const listId = useId();\n\n const handleClick = () => {\n setOpenLinks((prev) => !prev);\n };\n\n return (\n <Box>\n <Flex justifyContent=\"space-between\">\n <SubSectionHeader onClick={handleClick} aria-expanded={isOpen} aria-controls={listId}>\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n <Box paddingLeft={2}>\n <Typography tag=\"span\" fontWeight=\"semiBold\" textColor=\"neutral800\">\n {label}\n </Typography>\n </Box>\n </SubSectionHeader>\n </Flex>\n {\n <Flex\n tag=\"ul\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n style={{\n maxHeight: isOpen ? '1000px' : 0,\n overflow: 'hidden',\n transition: isOpen\n ? 'max-height 1s ease-in-out'\n : 'max-height 0.5s cubic-bezier(0, 1, 0, 1)',\n }}\n >\n {children.map((child, index) => {\n return <SubSectionLinkWrapper key={index}>{child}</SubSectionLinkWrapper>;\n })}\n </Flex>\n }\n </Box>\n );\n};\n\nconst PageWrapper = styled(Box)`\n ${MainSubNav} {\n background-color: transparent;\n border-right: none;\n }\n\n ${({ theme }) => theme.breakpoints.medium} {\n ${MainSubNav} {\n top: 0;\n }\n }\n`;\n\nconst Content = ({ children }: { children: React.ReactNode }) => {\n return <ScrollArea>{children}</ScrollArea>;\n};\n\nexport const SubNav = {\n Main,\n Content,\n Header,\n Link,\n Sections,\n Section,\n SubSection,\n PageWrapper,\n};\n"],"names":["MainSubNav","styled","DSSubNav","HEIGHT_TOP_NAVIGATION","theme","colors","neutral0","breakpoints","medium","neutral150","large","Main","children","props","_jsx","StyledLink","NavLink","neutral800","primary100","primary700","neutral100","Link","label","endAction","handleClick","rest","onClick","Box","width","paddingLeft","paddingRight","borderRadius","_jsxs","Flex","justifyContent","gap","Typography","tag","lineHeight","overflow","style","textOverflow","whiteSpace","StyledHeader","Header","initial","variant","Sections","paddingTop","paddingBottom","direction","alignItems","map","child","index","li","GuidedTourTooltip","sectionId","tours","contentTypeBuilder","CollectionTypes","YourTurn","SingleTypes","Components","Section","link","badgeLabel","listId","useId","position","textColor","Badge","backgroundColor","IconButton","withTooltip","size","Plus","id","marginLeft","marginRight","SubSectionHeader","button","spaces","SubSectionLinkWrapper","SubSection","isOpen","setOpenLinks","useState","prev","aria-expanded","aria-controls","ChevronDown","aria-hidden","fill","transform","transition","fontWeight","maxHeight","PageWrapper","Content","ScrollArea","SubNav"],"mappings":"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"}
@@ -1,22 +1,39 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { useId, useState } from 'react';
3
- import { SubNav as SubNav$1, Box, Flex, Typography, IconButton } from '@strapi/design-system';
3
+ import { SubNav as SubNav$1, Flex, Box, Typography, Badge, IconButton, ScrollArea } from '@strapi/design-system';
4
4
  import { Plus, ChevronDown } from '@strapi/icons';
5
5
  import { NavLink } from 'react-router-dom';
6
6
  import { styled } from 'styled-components';
7
+ import { HEIGHT_TOP_NAVIGATION } from '../constants/theme.mjs';
7
8
  import { tours } from './GuidedTour/Tours.mjs';
8
9
 
9
- const Main = styled(SubNav$1)`
10
+ const MainSubNav = styled(SubNav$1)`
11
+ width: 100%;
12
+ height: calc(100dvh - ${HEIGHT_TOP_NAVIGATION} - 1px);
13
+ overflow: hidden;
10
14
  background-color: ${({ theme })=>theme.colors.neutral0};
11
- border-right: 1px solid ${({ theme })=>theme.colors.neutral150};
12
-
13
- scrollbar-width: none;
14
- -ms-overflow-style: none;
15
+ display: flex;
16
+ flex-direction: column;
17
+ border-right: 0;
18
+ box-shadow: none;
19
+ position: fixed;
20
+ top: calc(${HEIGHT_TOP_NAVIGATION} + 1px);
21
+ left: 0;
22
+ z-index: 2;
15
23
 
16
- &::-webkit-scrollbar {
17
- display: none;
24
+ ${({ theme })=>theme.breakpoints.medium} {
25
+ position: sticky;
26
+ top: 0;
27
+ border-right: 1px solid ${({ theme })=>theme.colors.neutral150};
28
+ }
29
+ ${({ theme })=>theme.breakpoints.large} {
30
+ height: 100dvh;
18
31
  }
19
32
  `;
33
+ const Main = ({ children, ...props })=>/*#__PURE__*/ jsx(MainSubNav, {
34
+ ...props,
35
+ children: children
36
+ });
20
37
  const StyledLink = styled(NavLink)`
21
38
  display: flex;
22
39
  align-items: center;
@@ -57,9 +74,10 @@ const StyledLink = styled(NavLink)`
57
74
  }
58
75
  `;
59
76
  const Link = (props)=>{
60
- const { label, endAction, ...rest } = props;
77
+ const { label, endAction, handleClick, ...rest } = props;
61
78
  return /*#__PURE__*/ jsx(StyledLink, {
62
79
  ...rest,
80
+ onClick: handleClick,
63
81
  children: /*#__PURE__*/ jsx(Box, {
64
82
  width: '100%',
65
83
  paddingLeft: 3,
@@ -90,14 +108,21 @@ const Link = (props)=>{
90
108
  })
91
109
  });
92
110
  };
93
- const StyledHeader = styled(Box)`
94
- height: 56px;
95
- display: flex;
96
- align-items: center;
97
- padding-left: ${({ theme })=>theme.spaces[5]};
111
+ const StyledHeader = styled(Flex)`
112
+ flex: 0 0 ${HEIGHT_TOP_NAVIGATION};
113
+ height: ${HEIGHT_TOP_NAVIGATION};
98
114
  `;
99
115
  const Header = ({ label })=>{
100
116
  return /*#__PURE__*/ jsx(StyledHeader, {
117
+ justifyContent: "space-between",
118
+ paddingLeft: {
119
+ initial: 4,
120
+ large: 5
121
+ },
122
+ paddingRight: {
123
+ initial: 4,
124
+ large: 5
125
+ },
101
126
  children: /*#__PURE__*/ jsx(Typography, {
102
127
  variant: "beta",
103
128
  tag: "h2",
@@ -107,6 +132,7 @@ const Header = ({ label })=>{
107
132
  };
108
133
  const Sections = ({ children, ...props })=>{
109
134
  return /*#__PURE__*/ jsx(Box, {
135
+ paddingTop: 4,
110
136
  paddingBottom: 4,
111
137
  children: /*#__PURE__*/ jsx(Flex, {
112
138
  tag: "ol",
@@ -146,7 +172,7 @@ const Sections = ({ children, ...props })=>{
146
172
  return children;
147
173
  }
148
174
  };
149
- const Section = ({ label, children, link, sectionId })=>{
175
+ const Section = ({ label, children, link, sectionId, badgeLabel })=>{
150
176
  const listId = useId();
151
177
  return /*#__PURE__*/ jsxs(Flex, {
152
178
  direction: "column",
@@ -154,14 +180,22 @@ const Section = ({ label, children, link, sectionId })=>{
154
180
  gap: 2,
155
181
  children: [
156
182
  /*#__PURE__*/ jsx(Box, {
157
- paddingLeft: 5,
158
- paddingRight: 5,
183
+ paddingLeft: {
184
+ initial: 4,
185
+ large: 5
186
+ },
187
+ paddingRight: {
188
+ initial: 4,
189
+ large: 5
190
+ },
159
191
  children: /*#__PURE__*/ jsxs(Flex, {
160
192
  position: "relative",
161
193
  justifyContent: "space-between",
194
+ gap: 2,
162
195
  children: [
163
196
  /*#__PURE__*/ jsx(Flex, {
164
197
  children: /*#__PURE__*/ jsx(Box, {
198
+ paddingRight: 1,
165
199
  children: /*#__PURE__*/ jsx(Typography, {
166
200
  variant: "sigma",
167
201
  textColor: "neutral600",
@@ -169,16 +203,26 @@ const Section = ({ label, children, link, sectionId })=>{
169
203
  })
170
204
  })
171
205
  }),
172
- link && /*#__PURE__*/ jsx(GuidedTourTooltip, {
173
- sectionId: sectionId,
174
- children: /*#__PURE__*/ jsx(IconButton, {
175
- label: link.label,
176
- variant: "ghost",
177
- withTooltip: true,
178
- onClick: link.onClik,
179
- size: "XS",
180
- children: /*#__PURE__*/ jsx(Plus, {})
181
- })
206
+ /*#__PURE__*/ jsxs(Flex, {
207
+ gap: 1,
208
+ children: [
209
+ badgeLabel && /*#__PURE__*/ jsx(Badge, {
210
+ backgroundColor: "neutral150",
211
+ textColor: "neutral600",
212
+ children: badgeLabel
213
+ }),
214
+ link && /*#__PURE__*/ jsx(GuidedTourTooltip, {
215
+ sectionId: sectionId,
216
+ children: /*#__PURE__*/ jsx(IconButton, {
217
+ label: link.label,
218
+ variant: "ghost",
219
+ withTooltip: true,
220
+ onClick: link.onClick,
221
+ size: "XS",
222
+ children: /*#__PURE__*/ jsx(Plus, {})
223
+ })
224
+ })
225
+ ]
182
226
  })
183
227
  ]
184
228
  })
@@ -189,8 +233,14 @@ const Section = ({ label, children, link, sectionId })=>{
189
233
  direction: "column",
190
234
  gap: "2px",
191
235
  alignItems: 'stretch',
192
- marginLeft: 2,
193
- marginRight: 2,
236
+ marginLeft: {
237
+ initial: 1,
238
+ large: 2
239
+ },
240
+ marginRight: {
241
+ initial: 1,
242
+ large: 2
243
+ },
194
244
  children: children.map((child, index)=>{
195
245
  return /*#__PURE__*/ jsx("li", {
196
246
  children: child
@@ -208,11 +258,7 @@ const SubSectionHeader = styled.button`
208
258
  background: transparent;
209
259
  display: flex;
210
260
  align-items: center;
211
-
212
- height: 32px;
213
-
214
261
  border-radius: ${({ theme })=>theme.borderRadius};
215
-
216
262
  padding-left: ${({ theme })=>theme.spaces[3]};
217
263
  padding-right: ${({ theme })=>theme.spaces[3]};
218
264
  padding-top: ${({ theme })=>theme.spaces[2]};
@@ -282,13 +328,32 @@ const SubSection = ({ label, children })=>{
282
328
  ]
283
329
  });
284
330
  };
331
+ const PageWrapper = styled(Box)`
332
+ ${MainSubNav} {
333
+ background-color: transparent;
334
+ border-right: none;
335
+ }
336
+
337
+ ${({ theme })=>theme.breakpoints.medium} {
338
+ ${MainSubNav} {
339
+ top: 0;
340
+ }
341
+ }
342
+ `;
343
+ const Content = ({ children })=>{
344
+ return /*#__PURE__*/ jsx(ScrollArea, {
345
+ children: children
346
+ });
347
+ };
285
348
  const SubNav = {
286
349
  Main,
350
+ Content,
287
351
  Header,
288
352
  Link,
289
353
  Sections,
290
354
  Section,
291
- SubSection
355
+ SubSection,
356
+ PageWrapper
292
357
  };
293
358
 
294
359
  export { SubNav };
@@ -1 +1 @@
1
- {"version":3,"file":"SubNav.mjs","sources":["../../../../../admin/src/components/SubNav.tsx"],"sourcesContent":["import { useId, useState } from 'react';\n\nimport { Box, SubNav as DSSubNav, Flex, Typography, IconButton } from '@strapi/design-system';\nimport { ChevronDown, Plus } from '@strapi/icons';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { tours } from './GuidedTour/Tours';\n\nconst Main = styled(DSSubNav)`\n background-color: ${({ theme }) => theme.colors.neutral0};\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n\n scrollbar-width: none;\n -ms-overflow-style: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n`;\n\nconst StyledLink = styled(NavLink)`\n display: flex;\n align-items: center;\n justify-content: space-between;\n text-decoration: none;\n height: 32px;\n\n color: ${({ theme }) => theme.colors.neutral800};\n\n &.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n color: ${theme.colors.primary700};\n font-weight: 500;\n `;\n }}\n }\n\n &:hover.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n `;\n }}\n }\n\n &:hover > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.neutral100};\n `;\n }}\n }\n\n &:focus-visible {\n outline-offset: -2px;\n }\n`;\n\nconst Link = (\n props: Omit<React.ComponentProps<typeof StyledLink>, 'label'> & {\n label: React.ReactNode;\n endAction?: React.ReactNode;\n }\n) => {\n const { label, endAction, ...rest } = props;\n return (\n <StyledLink {...rest}>\n <Box width={'100%'} paddingLeft={3} paddingRight={3} borderRadius={1}>\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={1}>\n <Typography\n tag=\"div\"\n lineHeight=\"32px\"\n width=\"100%\"\n overflow=\"hidden\"\n style={{ textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}\n >\n {label}\n </Typography>\n <Flex gap={2}>{endAction}</Flex>\n </Flex>\n </Box>\n </StyledLink>\n );\n};\n\nconst StyledHeader = styled(Box)`\n height: 56px;\n display: flex;\n align-items: center;\n padding-left: ${({ theme }) => theme.spaces[5]};\n`;\n\nconst Header = ({ label }: { label: string }) => {\n return (\n <StyledHeader>\n <Typography variant=\"beta\" tag=\"h2\">\n {label}\n </Typography>\n </StyledHeader>\n );\n};\n\nconst Sections = ({ children, ...props }: { children: React.ReactNode[]; [key: string]: any }) => {\n return (\n <Box paddingBottom={4}>\n <Flex tag=\"ol\" gap=\"5\" direction=\"column\" alignItems=\"stretch\" {...props}>\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Box>\n );\n};\n\n/**\n * TODO:\n * This would be better in the content-type-builder package directly but currently\n * the SubNav API does not expose a way to wrap the link, instead it wraps the link and the list\n */\nconst GuidedTourTooltip = ({\n sectionId,\n children,\n}: {\n sectionId?: string;\n children: React.ReactNode;\n}) => {\n switch (sectionId) {\n case 'models':\n return (\n <tours.contentTypeBuilder.CollectionTypes>\n <tours.contentTypeBuilder.YourTurn>{children}</tours.contentTypeBuilder.YourTurn>\n </tours.contentTypeBuilder.CollectionTypes>\n );\n case 'singleTypes':\n return (\n <tours.contentTypeBuilder.SingleTypes>{children}</tours.contentTypeBuilder.SingleTypes>\n );\n case 'components':\n return <tours.contentTypeBuilder.Components>{children}</tours.contentTypeBuilder.Components>;\n default:\n return children;\n }\n};\n\nconst Section = ({\n label,\n children,\n link,\n sectionId,\n}: {\n label: string;\n children: React.ReactNode[];\n link?: { label: string; onClik: () => void };\n sectionId?: string;\n}) => {\n const listId = useId();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box paddingLeft={5} paddingRight={5}>\n <Flex position=\"relative\" justifyContent=\"space-between\">\n <Flex>\n <Box>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {label}\n </Typography>\n </Box>\n </Flex>\n {link && (\n <GuidedTourTooltip sectionId={sectionId}>\n <IconButton\n label={link.label}\n variant=\"ghost\"\n withTooltip\n onClick={link.onClik}\n size=\"XS\"\n >\n <Plus />\n </IconButton>\n </GuidedTourTooltip>\n )}\n </Flex>\n </Box>\n <Flex\n tag=\"ol\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n marginLeft={2}\n marginRight={2}\n >\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Flex>\n );\n};\n\nconst SubSectionHeader = styled.button`\n cursor: pointer;\n width: 100%;\n border: none;\n padding: 0;\n background: transparent;\n display: flex;\n align-items: center;\n\n height: 32px;\n\n border-radius: ${({ theme }) => theme.borderRadius};\n\n padding-left: ${({ theme }) => theme.spaces[3]};\n padding-right: ${({ theme }) => theme.spaces[3]};\n padding-top: ${({ theme }) => theme.spaces[2]};\n padding-bottom: ${({ theme }) => theme.spaces[2]};\n\n &:hover {\n background-color: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\nconst SubSectionLinkWrapper = styled.li`\n ${StyledLink} > div {\n padding-left: 36px;\n }\n`;\n\nconst SubSection = ({ label, children }: { label: string; children: React.ReactNode[] }) => {\n const [isOpen, setOpenLinks] = useState(true);\n const listId = useId();\n\n const handleClick = () => {\n setOpenLinks((prev) => !prev);\n };\n\n return (\n <Box>\n <Flex justifyContent=\"space-between\">\n <SubSectionHeader onClick={handleClick} aria-expanded={isOpen} aria-controls={listId}>\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n <Box paddingLeft={2}>\n <Typography tag=\"span\" fontWeight=\"semiBold\" textColor=\"neutral800\">\n {label}\n </Typography>\n </Box>\n </SubSectionHeader>\n </Flex>\n {\n <Flex\n tag=\"ul\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n style={{\n maxHeight: isOpen ? '1000px' : 0,\n overflow: 'hidden',\n transition: isOpen\n ? 'max-height 1s ease-in-out'\n : 'max-height 0.5s cubic-bezier(0, 1, 0, 1)',\n }}\n >\n {children.map((child, index) => {\n return <SubSectionLinkWrapper key={index}>{child}</SubSectionLinkWrapper>;\n })}\n </Flex>\n }\n </Box>\n );\n};\n\nexport const SubNav = {\n Main,\n Header,\n Link,\n Sections,\n Section,\n SubSection,\n};\n"],"names":["Main","styled","DSSubNav","theme","colors","neutral0","neutral150","StyledLink","NavLink","neutral800","primary100","primary700","neutral100","Link","props","label","endAction","rest","_jsx","Box","width","paddingLeft","paddingRight","borderRadius","_jsxs","Flex","justifyContent","gap","Typography","tag","lineHeight","overflow","style","textOverflow","whiteSpace","StyledHeader","spaces","Header","variant","Sections","children","paddingBottom","direction","alignItems","map","child","index","li","GuidedTourTooltip","sectionId","tours","contentTypeBuilder","CollectionTypes","YourTurn","SingleTypes","Components","Section","link","listId","useId","position","textColor","IconButton","withTooltip","onClick","onClik","size","Plus","id","marginLeft","marginRight","SubSectionHeader","button","SubSectionLinkWrapper","SubSection","isOpen","setOpenLinks","useState","handleClick","prev","aria-expanded","aria-controls","ChevronDown","aria-hidden","fill","transform","transition","fontWeight","maxHeight","SubNav"],"mappings":"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"}
1
+ {"version":3,"file":"SubNav.mjs","sources":["../../../../../admin/src/components/SubNav.tsx"],"sourcesContent":["import { useId, useState } from 'react';\n\nimport {\n Box,\n SubNav as DSSubNav,\n Flex,\n Typography,\n IconButton,\n Badge,\n ScrollArea,\n} from '@strapi/design-system';\nimport { ChevronDown, Plus } from '@strapi/icons';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { HEIGHT_TOP_NAVIGATION } from '../constants/theme';\n\nimport { tours } from './GuidedTour/Tours';\n\nconst MainSubNav = styled(DSSubNav)`\n width: 100%;\n height: calc(100dvh - ${HEIGHT_TOP_NAVIGATION} - 1px);\n overflow: hidden;\n background-color: ${({ theme }) => theme.colors.neutral0};\n display: flex;\n flex-direction: column;\n border-right: 0;\n box-shadow: none;\n position: fixed;\n top: calc(${HEIGHT_TOP_NAVIGATION} + 1px);\n left: 0;\n z-index: 2;\n\n ${({ theme }) => theme.breakpoints.medium} {\n position: sticky;\n top: 0;\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n }\n ${({ theme }) => theme.breakpoints.large} {\n height: 100dvh;\n }\n`;\n\nconst Main = ({ children, ...props }: { children: React.ReactNode; isFullPage?: boolean }) => (\n <MainSubNav {...props}>{children}</MainSubNav>\n);\n\nconst StyledLink = styled(NavLink)`\n display: flex;\n align-items: center;\n justify-content: space-between;\n text-decoration: none;\n height: 32px;\n\n color: ${({ theme }) => theme.colors.neutral800};\n\n &.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n color: ${theme.colors.primary700};\n font-weight: 500;\n `;\n }}\n }\n\n &:hover.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n `;\n }}\n }\n\n &:hover > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.neutral100};\n `;\n }}\n }\n\n &:focus-visible {\n outline-offset: -2px;\n }\n`;\n\nconst Link = (\n props: Omit<React.ComponentProps<typeof StyledLink>, 'label'> & {\n label: React.ReactNode;\n endAction?: React.ReactNode;\n handleClick?: () => void;\n }\n) => {\n const { label, endAction, handleClick, ...rest } = props;\n\n return (\n <StyledLink {...rest} onClick={handleClick}>\n <Box width={'100%'} paddingLeft={3} paddingRight={3} borderRadius={1}>\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={1}>\n <Typography\n tag=\"div\"\n lineHeight=\"32px\"\n width=\"100%\"\n overflow=\"hidden\"\n style={{ textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}\n >\n {label}\n </Typography>\n <Flex gap={2}>{endAction}</Flex>\n </Flex>\n </Box>\n </StyledLink>\n );\n};\n\nconst StyledHeader = styled(Flex)`\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION};\n height: ${HEIGHT_TOP_NAVIGATION};\n`;\n\nconst Header = ({ label }: { label: string }) => {\n return (\n <StyledHeader\n justifyContent=\"space-between\"\n paddingLeft={{\n initial: 4,\n large: 5,\n }}\n paddingRight={{\n initial: 4,\n large: 5,\n }}\n >\n <Typography variant=\"beta\" tag=\"h2\">\n {label}\n </Typography>\n </StyledHeader>\n );\n};\n\nconst Sections = ({ children, ...props }: { children: React.ReactNode[]; [key: string]: any }) => {\n return (\n <Box paddingTop={4} paddingBottom={4}>\n <Flex tag=\"ol\" gap=\"5\" direction=\"column\" alignItems=\"stretch\" {...props}>\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Box>\n );\n};\n\n/**\n * TODO:\n * This would be better in the content-type-builder package directly but currently\n * the SubNav API does not expose a way to wrap the link, instead it wraps the link and the list\n */\nconst GuidedTourTooltip = ({\n sectionId,\n children,\n}: {\n sectionId?: string;\n children: React.ReactNode;\n}) => {\n switch (sectionId) {\n case 'models':\n return (\n <tours.contentTypeBuilder.CollectionTypes>\n <tours.contentTypeBuilder.YourTurn>{children}</tours.contentTypeBuilder.YourTurn>\n </tours.contentTypeBuilder.CollectionTypes>\n );\n case 'singleTypes':\n return (\n <tours.contentTypeBuilder.SingleTypes>{children}</tours.contentTypeBuilder.SingleTypes>\n );\n case 'components':\n return <tours.contentTypeBuilder.Components>{children}</tours.contentTypeBuilder.Components>;\n default:\n return children;\n }\n};\n\nconst Section = ({\n label,\n children,\n link,\n sectionId,\n badgeLabel,\n}: {\n label: string;\n children: React.ReactNode[];\n link?: { label: string; onClick: () => void };\n sectionId?: string;\n badgeLabel?: string;\n}) => {\n const listId = useId();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box\n paddingLeft={{\n initial: 4,\n large: 5,\n }}\n paddingRight={{\n initial: 4,\n large: 5,\n }}\n >\n <Flex position=\"relative\" justifyContent=\"space-between\" gap={2}>\n <Flex>\n <Box paddingRight={1}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {label}\n </Typography>\n </Box>\n </Flex>\n <Flex gap={1}>\n {badgeLabel && (\n <Badge backgroundColor=\"neutral150\" textColor=\"neutral600\">\n {badgeLabel}\n </Badge>\n )}\n {link && (\n <GuidedTourTooltip sectionId={sectionId}>\n <IconButton\n label={link.label}\n variant=\"ghost\"\n withTooltip\n onClick={link.onClick}\n size=\"XS\"\n >\n <Plus />\n </IconButton>\n </GuidedTourTooltip>\n )}\n </Flex>\n </Flex>\n </Box>\n <Flex\n tag=\"ol\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n marginLeft={{\n initial: 1,\n large: 2,\n }}\n marginRight={{\n initial: 1,\n large: 2,\n }}\n >\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Flex>\n );\n};\n\nconst SubSectionHeader = styled.button`\n cursor: pointer;\n width: 100%;\n border: none;\n padding: 0;\n background: transparent;\n display: flex;\n align-items: center;\n border-radius: ${({ theme }) => theme.borderRadius};\n padding-left: ${({ theme }) => theme.spaces[3]};\n padding-right: ${({ theme }) => theme.spaces[3]};\n padding-top: ${({ theme }) => theme.spaces[2]};\n padding-bottom: ${({ theme }) => theme.spaces[2]};\n\n &:hover {\n background-color: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\nconst SubSectionLinkWrapper = styled.li`\n ${StyledLink} > div {\n padding-left: 36px;\n }\n`;\n\nconst SubSection = ({ label, children }: { label: string; children: React.ReactNode[] }) => {\n const [isOpen, setOpenLinks] = useState(true);\n const listId = useId();\n\n const handleClick = () => {\n setOpenLinks((prev) => !prev);\n };\n\n return (\n <Box>\n <Flex justifyContent=\"space-between\">\n <SubSectionHeader onClick={handleClick} aria-expanded={isOpen} aria-controls={listId}>\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n <Box paddingLeft={2}>\n <Typography tag=\"span\" fontWeight=\"semiBold\" textColor=\"neutral800\">\n {label}\n </Typography>\n </Box>\n </SubSectionHeader>\n </Flex>\n {\n <Flex\n tag=\"ul\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n style={{\n maxHeight: isOpen ? '1000px' : 0,\n overflow: 'hidden',\n transition: isOpen\n ? 'max-height 1s ease-in-out'\n : 'max-height 0.5s cubic-bezier(0, 1, 0, 1)',\n }}\n >\n {children.map((child, index) => {\n return <SubSectionLinkWrapper key={index}>{child}</SubSectionLinkWrapper>;\n })}\n </Flex>\n }\n </Box>\n );\n};\n\nconst PageWrapper = styled(Box)`\n ${MainSubNav} {\n background-color: transparent;\n border-right: none;\n }\n\n ${({ theme }) => theme.breakpoints.medium} {\n ${MainSubNav} {\n top: 0;\n }\n }\n`;\n\nconst Content = ({ children }: { children: React.ReactNode }) => {\n return <ScrollArea>{children}</ScrollArea>;\n};\n\nexport const SubNav = {\n Main,\n Content,\n Header,\n Link,\n Sections,\n Section,\n SubSection,\n PageWrapper,\n};\n"],"names":["MainSubNav","styled","DSSubNav","HEIGHT_TOP_NAVIGATION","theme","colors","neutral0","breakpoints","medium","neutral150","large","Main","children","props","_jsx","StyledLink","NavLink","neutral800","primary100","primary700","neutral100","Link","label","endAction","handleClick","rest","onClick","Box","width","paddingLeft","paddingRight","borderRadius","_jsxs","Flex","justifyContent","gap","Typography","tag","lineHeight","overflow","style","textOverflow","whiteSpace","StyledHeader","Header","initial","variant","Sections","paddingTop","paddingBottom","direction","alignItems","map","child","index","li","GuidedTourTooltip","sectionId","tours","contentTypeBuilder","CollectionTypes","YourTurn","SingleTypes","Components","Section","link","badgeLabel","listId","useId","position","textColor","Badge","backgroundColor","IconButton","withTooltip","size","Plus","id","marginLeft","marginRight","SubSectionHeader","button","spaces","SubSectionLinkWrapper","SubSection","isOpen","setOpenLinks","useState","prev","aria-expanded","aria-controls","ChevronDown","aria-hidden","fill","transform","transition","fontWeight","maxHeight","PageWrapper","Content","ScrollArea","SubNav"],"mappings":"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"}
@@ -8,6 +8,7 @@ var dateFns = require('date-fns');
8
8
  var reactIntl = require('react-intl');
9
9
  var styled = require('styled-components');
10
10
  var admin = require('../services/admin.js');
11
+ var theme = require('../constants/theme.js');
11
12
  var usePersistentState = require('../hooks/usePersistentState.js');
12
13
 
13
14
  const BannerBackground = styled.styled(designSystem.Flex)`
@@ -28,8 +29,8 @@ const Banner = ({ isTrialEndedRecently })=>{
28
29
  width: "100%",
29
30
  paddingTop: 2,
30
31
  paddingBottom: 2,
31
- paddingLeft: 10,
32
- paddingRight: 10,
32
+ paddingLeft: theme.RESPONSIVE_DEFAULT_SPACING,
33
+ paddingRight: theme.RESPONSIVE_DEFAULT_SPACING,
33
34
  gap: 2,
34
35
  children: [
35
36
  /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Box, {
@@ -1 +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 { useScopedPersistentState } 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] = useScopedPersistentState<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","useScopedPersistentState","undefined","sevenDaysAgo","subDays","Date","timeLeftData","useGetLicenseTrialTimeLeftQuery","skip","isTrial","useEffect","data","trialEndsAt","Boolean","window","strapi","isEE","isAfter"],"mappings":";;;;;;;;;;;;AAWA,MAAMA,gBAAAA,GAAmBC,aAAOC,CAAAA,iBAAAA,CAAK;;;IAGjC,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;IACzC,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACE,cAAc,CAAC;;AAEjD,CAAC;AAED,MAAMC,MAAS,GAAA,CAAC,EAAEC,oBAAoB,EAAqC,GAAA;IACzE,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACEC,cAACX,CAAAA,gBAAAA,EAAAA;QAAiBY,KAAM,EAAA,MAAA;QAAOC,cAAe,EAAA,QAAA;AAC5C,QAAA,QAAA,gBAAAC,eAACZ,CAAAA,iBAAAA,EAAAA;YACCW,cAAe,EAAA,QAAA;YACfE,UAAW,EAAA,QAAA;YACXH,KAAM,EAAA,MAAA;YACNI,UAAY,EAAA,CAAA;YACZC,aAAe,EAAA,CAAA;YACfC,WAAa,EAAA,EAAA;YACbC,YAAc,EAAA,EAAA;YACdC,GAAK,EAAA,CAAA;;8BAELN,eAACO,CAAAA,gBAAAA,EAAAA;;sCACCV,cAACW,CAAAA,uBAAAA,EAAAA;4BACCC,OAAQ,EAAA,OAAA;4BACRC,UAAW,EAAA,MAAA;4BACXC,SAAU,EAAA,UAAA;4BACVC,SAAU,EAAA,QAAA;4BACVC,QAAU,EAAA,CAAA;AAETlB,4BAAAA,QAAAA,EAAAA,aAAAA,CACCD,oBACI,GAAA;gCACEoB,EAAI,EAAA,yCAAA;gCACJC,cAAgB,EAAA;6BAElB,GAAA;gCACED,EAAI,EAAA,mCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;sCAGRlB,cAACW,CAAAA,uBAAAA,EAAAA;4BACCC,OAAQ,EAAA,OAAA;4BACRE,SAAU,EAAA,UAAA;4BACVC,SAAU,EAAA,QAAA;4BACVP,YAAc,EAAA,CAAA;4BACdQ,QAAU,EAAA,CAAA;AAETlB,4BAAAA,QAAAA,EAAAA,aAAAA,CACCD,oBACI,GAAA;gCACEoB,EAAI,EAAA,wCAAA;gCACJC,cAAgB,EAAA;6BAElB,GAAA;gCACED,EAAI,EAAA,kCAAA;gCACJC,cACE,EAAA;AACJ,6BAAA;;;;8BAIVlB,cAACU,CAAAA,gBAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAAV,cAACmB,CAAAA,uBAAAA,EAAAA;wBACClB,KAAM,EAAA,aAAA;wBACNW,OAAQ,EAAA,UAAA;wBACRQ,IAAK,EAAA,oCAAA;wBACLC,MAAO,EAAA,QAAA;AAENvB,wBAAAA,QAAAA,EAAAA,aAAAA,CACCD,oBACI,GAAA;4BACEoB,EAAI,EAAA,0CAAA;4BACJC,cAAgB,EAAA;yBAElB,GAAA;4BACED,EAAI,EAAA,oCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA;;;;;;AAOlB,CAAA;AAEA,MAAMI,YAAe,GAAA,IAAA;IACnB,MAAM,EAAEC,OAAO,EAAE,GAAGC,mBAAAA,EAAAA;AAEpB,IAAA,MAAM,CAACC,iBAAAA,EAAmBC,oBAAqB,CAAA,GAAGC,4CAChD,2BACAC,EAAAA,SAAAA,CAAAA;IAGF,MAAMC,YAAAA,GAAeC,eAAQ,CAAA,IAAIC,IAAQ,EAAA,EAAA,CAAA,CAAA;IAEzC,MAAMC,YAAAA,GAAeC,sCAAgCL,SAAW,EAAA;AAC9DM,QAAAA,IAAAA,EAAM,CAACX,OAASY,EAAAA;AAClB,KAAA,CAAA;IAEAC,eAAU,CAAA,IAAA;QACR,IAAIJ,YAAAA,CAAaK,IAAI,EAAEC,WAAa,EAAA;YAClCZ,oBAAqBM,CAAAA,YAAAA,CAAaK,IAAI,CAACC,WAAW,CAAA;AACpD;;KAEC,EAAA;AAACN,QAAAA,YAAAA,CAAaK,IAAI,EAAEC;AAAY,KAAA,CAAA;;;AAInC,IAAA,MAAMzC,oBAAuB0C,GAAAA,OAAAA,CAC3B,CAAChB,OAAAA,EAASY,WACR,CAACK,MAAAA,CAAOC,MAAM,CAACC,IAAI,IACnBjB,iBAAAA,IACAkB,eAAQ,CAAA,IAAIZ,KAAKN,iBAAoBI,CAAAA,EAAAA,YAAAA,CAAAA,CAAAA;AAGzC,IAAA,IAAIG,YAAaK,CAAAA,IAAI,EAAEC,WAAAA,IAAezC,oBAAsB,EAAA;AAC1D,QAAA,qBAAOG,cAACJ,CAAAA,MAAAA,EAAAA;YAAOC,oBAAsBA,EAAAA;;AACvC;IAEA,OAAO,IAAA;AACT;;;;"}
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 { RESPONSIVE_DEFAULT_SPACING } from '../constants/theme';\nimport { useScopedPersistentState } 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={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\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] = useScopedPersistentState<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","RESPONSIVE_DEFAULT_SPACING","paddingRight","gap","Box","Typography","variant","fontWeight","textColor","textAlign","fontSize","id","defaultMessage","LinkButton","href","target","UpsellBanner","license","useLicenseLimits","cachedTrialEndsAt","setCachedTrialEndsAt","useScopedPersistentState","undefined","sevenDaysAgo","subDays","Date","timeLeftData","useGetLicenseTrialTimeLeftQuery","skip","isTrial","useEffect","data","trialEndsAt","Boolean","window","strapi","isEE","isAfter"],"mappings":"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"}
@@ -6,6 +6,7 @@ import { subDays, isAfter } from 'date-fns';
6
6
  import { useIntl } from 'react-intl';
7
7
  import { styled } from 'styled-components';
8
8
  import { useGetLicenseTrialTimeLeftQuery } from '../services/admin.mjs';
9
+ import { RESPONSIVE_DEFAULT_SPACING } from '../constants/theme.mjs';
9
10
  import { useScopedPersistentState } from '../hooks/usePersistentState.mjs';
10
11
 
11
12
  const BannerBackground = styled(Flex)`
@@ -26,8 +27,8 @@ const Banner = ({ isTrialEndedRecently })=>{
26
27
  width: "100%",
27
28
  paddingTop: 2,
28
29
  paddingBottom: 2,
29
- paddingLeft: 10,
30
- paddingRight: 10,
30
+ paddingLeft: RESPONSIVE_DEFAULT_SPACING,
31
+ paddingRight: RESPONSIVE_DEFAULT_SPACING,
31
32
  gap: 2,
32
33
  children: [
33
34
  /*#__PURE__*/ jsxs(Box, {
@@ -1 +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 { useScopedPersistentState } 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] = useScopedPersistentState<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","useScopedPersistentState","undefined","sevenDaysAgo","subDays","Date","timeLeftData","useGetLicenseTrialTimeLeftQuery","skip","isTrial","useEffect","data","trialEndsAt","Boolean","window","strapi","isEE","isAfter"],"mappings":"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"}
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 { RESPONSIVE_DEFAULT_SPACING } from '../constants/theme';\nimport { useScopedPersistentState } 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={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\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] = useScopedPersistentState<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","RESPONSIVE_DEFAULT_SPACING","paddingRight","gap","Box","Typography","variant","fontWeight","textColor","textAlign","fontSize","id","defaultMessage","LinkButton","href","target","UpsellBanner","license","useLicenseLimits","cachedTrialEndsAt","setCachedTrialEndsAt","useScopedPersistentState","undefined","sevenDaysAgo","subDays","Date","timeLeftData","useGetLicenseTrialTimeLeftQuery","skip","isTrial","useEffect","data","trialEndsAt","Boolean","window","strapi","isEE","isAfter"],"mappings":"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"}