@strapi/admin 5.50.0 → 5.50.2

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 (388) hide show
  1. package/dist/admin/admin/src/components/ConfirmDialog.js +2 -2
  2. package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
  3. package/dist/admin/admin/src/components/ContentBox.js +3 -3
  4. package/dist/admin/admin/src/components/ContentBox.js.map +1 -1
  5. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js +8 -8
  6. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js.map +1 -1
  7. package/dist/admin/admin/src/components/DescriptionComponentRenderer.mjs +8 -8
  8. package/dist/admin/admin/src/components/DescriptionComponentRenderer.mjs.map +1 -1
  9. package/dist/admin/admin/src/components/ErrorElement.js +4 -4
  10. package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
  11. package/dist/admin/admin/src/components/Form.js +41 -27
  12. package/dist/admin/admin/src/components/Form.js.map +1 -1
  13. package/dist/admin/admin/src/components/Form.mjs +41 -27
  14. package/dist/admin/admin/src/components/Form.mjs.map +1 -1
  15. package/dist/admin/admin/src/components/FormInputs/Date.js +1 -1
  16. package/dist/admin/admin/src/components/FormInputs/Date.js.map +1 -1
  17. package/dist/admin/admin/src/components/FormInputs/Date.mjs +1 -1
  18. package/dist/admin/admin/src/components/FormInputs/Date.mjs.map +1 -1
  19. package/dist/admin/admin/src/components/FormInputs/Email.js.map +1 -1
  20. package/dist/admin/admin/src/components/FormInputs/Email.mjs.map +1 -1
  21. package/dist/admin/admin/src/components/FormInputs/Enumeration.js +4 -1
  22. package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
  23. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs +4 -1
  24. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
  25. package/dist/admin/admin/src/components/FormInputs/Json.js +2 -1
  26. package/dist/admin/admin/src/components/FormInputs/Json.js.map +1 -1
  27. package/dist/admin/admin/src/components/FormInputs/Json.mjs +2 -1
  28. package/dist/admin/admin/src/components/FormInputs/Json.mjs.map +1 -1
  29. package/dist/admin/admin/src/components/FormInputs/Password.js.map +1 -1
  30. package/dist/admin/admin/src/components/FormInputs/Password.mjs.map +1 -1
  31. package/dist/admin/admin/src/components/FormInputs/Renderer.js +18 -26
  32. package/dist/admin/admin/src/components/FormInputs/Renderer.js.map +1 -1
  33. package/dist/admin/admin/src/components/FormInputs/Renderer.mjs +20 -28
  34. package/dist/admin/admin/src/components/FormInputs/Renderer.mjs.map +1 -1
  35. package/dist/admin/admin/src/components/FormInputs/String.js.map +1 -1
  36. package/dist/admin/admin/src/components/FormInputs/String.mjs.map +1 -1
  37. package/dist/admin/admin/src/components/FormInputs/Textarea.js.map +1 -1
  38. package/dist/admin/admin/src/components/FormInputs/Textarea.mjs.map +1 -1
  39. package/dist/admin/admin/src/components/GapDropZone.js +2 -2
  40. package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
  41. package/dist/admin/admin/src/components/GradientBadge.js +3 -3
  42. package/dist/admin/admin/src/components/GradientBadge.js.map +1 -1
  43. package/dist/admin/admin/src/components/GuidedTour/Overview.js +8 -8
  44. package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
  45. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js +4 -4
  46. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
  47. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.mjs.map +1 -1
  48. package/dist/admin/admin/src/components/GuidedTour/Tours.js +2 -2
  49. package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
  50. package/dist/admin/admin/src/components/Layouts/ActionLayout.js +2 -2
  51. package/dist/admin/admin/src/components/Layouts/ActionLayout.js.map +1 -1
  52. package/dist/admin/admin/src/components/Layouts/GridLayout.js +2 -2
  53. package/dist/admin/admin/src/components/Layouts/GridLayout.js.map +1 -1
  54. package/dist/admin/admin/src/components/Layouts/Layout.js +4 -4
  55. package/dist/admin/admin/src/components/Layouts/Layout.js.map +1 -1
  56. package/dist/admin/admin/src/components/LeftMenu.js +3 -3
  57. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  58. package/dist/admin/admin/src/components/MainNav/MainNav.js +2 -2
  59. package/dist/admin/admin/src/components/MainNav/MainNav.js.map +1 -1
  60. package/dist/admin/admin/src/components/MainNav/MainNavLinks.js +4 -4
  61. package/dist/admin/admin/src/components/MainNav/MainNavLinks.js.map +1 -1
  62. package/dist/admin/admin/src/components/MainNav/NavBrand.js +2 -2
  63. package/dist/admin/admin/src/components/MainNav/NavBrand.js.map +1 -1
  64. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js +3 -3
  65. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js.map +1 -1
  66. package/dist/admin/admin/src/components/MainNav/NavLink.js +8 -8
  67. package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
  68. package/dist/admin/admin/src/components/MainNav/NavUser.js +7 -7
  69. package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
  70. package/dist/admin/admin/src/components/MainNav/TrialCountdown.js +3 -3
  71. package/dist/admin/admin/src/components/MainNav/TrialCountdown.js.map +1 -1
  72. package/dist/admin/admin/src/components/NpsSurvey.js +2 -2
  73. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  74. package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
  75. package/dist/admin/admin/src/components/ResizeIndicator.js +6 -6
  76. package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
  77. package/dist/admin/admin/src/components/SubNav.js +11 -9
  78. package/dist/admin/admin/src/components/SubNav.js.map +1 -1
  79. package/dist/admin/admin/src/components/SubNav.mjs +4 -2
  80. package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
  81. package/dist/admin/admin/src/components/Table.js +9 -5
  82. package/dist/admin/admin/src/components/Table.js.map +1 -1
  83. package/dist/admin/admin/src/components/Table.mjs +6 -2
  84. package/dist/admin/admin/src/components/Table.mjs.map +1 -1
  85. package/dist/admin/admin/src/components/Theme.js +2 -2
  86. package/dist/admin/admin/src/components/Theme.js.map +1 -1
  87. package/dist/admin/admin/src/components/UnauthenticatedLogo.js +2 -2
  88. package/dist/admin/admin/src/components/UnauthenticatedLogo.js.map +1 -1
  89. package/dist/admin/admin/src/components/UpsellBanner.js +3 -3
  90. package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
  91. package/dist/admin/admin/src/components/WidgetRoot.js +4 -7
  92. package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
  93. package/dist/admin/admin/src/components/WidgetRoot.mjs +1 -1
  94. package/dist/admin/admin/src/components/WidgetRoot.mjs.map +1 -1
  95. package/dist/admin/admin/src/components/Widgets.js +5 -5
  96. package/dist/admin/admin/src/components/Widgets.js.map +1 -1
  97. package/dist/admin/admin/src/core/apis/Plugin.js.map +1 -1
  98. package/dist/admin/admin/src/core/apis/Plugin.mjs.map +1 -1
  99. package/dist/admin/admin/src/core/apis/Widgets.js +1 -1
  100. package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
  101. package/dist/admin/admin/src/core/apis/Widgets.mjs +1 -1
  102. package/dist/admin/admin/src/core/apis/Widgets.mjs.map +1 -1
  103. package/dist/admin/admin/src/core/store/configure.js.map +1 -1
  104. package/dist/admin/admin/src/core/store/configure.mjs.map +1 -1
  105. package/dist/admin/admin/src/core/utils/createHook.js.map +1 -1
  106. package/dist/admin/admin/src/core/utils/createHook.mjs.map +1 -1
  107. package/dist/admin/admin/src/features/Tracking.js +3 -1
  108. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  109. package/dist/admin/admin/src/features/Tracking.mjs +3 -1
  110. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  111. package/dist/admin/admin/src/features/Widgets.js.map +1 -1
  112. package/dist/admin/admin/src/features/Widgets.mjs.map +1 -1
  113. package/dist/admin/admin/src/hooks/useMediaQuery.js +4 -4
  114. package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -1
  115. package/dist/admin/admin/src/hooks/useMenu.js +6 -4
  116. package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
  117. package/dist/admin/admin/src/hooks/useMenu.mjs +6 -4
  118. package/dist/admin/admin/src/hooks/useMenu.mjs.map +1 -1
  119. package/dist/admin/admin/src/hooks/useQueryParams.js.map +1 -1
  120. package/dist/admin/admin/src/hooks/useQueryParams.mjs.map +1 -1
  121. package/dist/admin/admin/src/hooks/useRBAC.js +1 -1
  122. package/dist/admin/admin/src/hooks/useRBAC.js.map +1 -1
  123. package/dist/admin/admin/src/hooks/useRBAC.mjs +1 -1
  124. package/dist/admin/admin/src/hooks/useRBAC.mjs.map +1 -1
  125. package/dist/admin/admin/src/hooks/useThrottledCallback.js.map +1 -1
  126. package/dist/admin/admin/src/hooks/useThrottledCallback.mjs.map +1 -1
  127. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +1 -1
  128. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  129. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +1 -1
  130. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  131. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js +3 -3
  132. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js.map +1 -1
  133. package/dist/admin/admin/src/pages/Auth/components/Register.js +17 -9
  134. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  135. package/dist/admin/admin/src/pages/Auth/components/Register.mjs +15 -7
  136. package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
  137. package/dist/admin/admin/src/pages/Home/HomePage.js +2 -2
  138. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  139. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js +3 -6
  140. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -1
  141. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs +1 -1
  142. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs.map +1 -1
  143. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +4 -8
  144. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
  145. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs +1 -1
  146. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -1
  147. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +4 -8
  148. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
  149. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs +1 -1
  150. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs.map +1 -1
  151. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +2 -2
  152. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  153. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  154. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +2 -2
  155. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  156. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +2 -2
  157. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  158. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js +2 -2
  159. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js.map +1 -1
  160. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +2 -2
  161. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
  162. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +4 -4
  163. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  164. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js.map +1 -1
  165. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.mjs.map +1 -1
  166. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +3 -11
  167. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  168. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +3 -11
  169. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  170. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +2 -2
  171. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
  172. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +2 -2
  173. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
  174. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.js +2 -2
  175. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.js.map +1 -1
  176. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +10 -10
  177. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  178. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js +3 -3
  179. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js.map +1 -1
  180. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +5 -5
  181. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  182. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.js +2 -2
  183. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.js.map +1 -1
  184. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +3 -3
  185. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  186. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.js.map +1 -1
  187. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.mjs.map +1 -1
  188. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
  189. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
  190. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js +3 -3
  191. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js.map +1 -1
  192. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js +2 -2
  193. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js.map +1 -1
  194. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +2 -2
  195. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
  196. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs.map +1 -1
  197. package/dist/admin/admin/src/reducer.js +3 -3
  198. package/dist/admin/admin/src/reducer.js.map +1 -1
  199. package/dist/admin/admin/src/reducer.mjs +4 -4
  200. package/dist/admin/admin/src/reducer.mjs.map +1 -1
  201. package/dist/admin/admin/src/render.js +6 -2
  202. package/dist/admin/admin/src/render.js.map +1 -1
  203. package/dist/admin/admin/src/render.mjs +6 -2
  204. package/dist/admin/admin/src/render.mjs.map +1 -1
  205. package/dist/admin/admin/src/translations/en.json.js +1 -2
  206. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  207. package/dist/admin/admin/src/translations/en.json.mjs +1 -2
  208. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  209. package/dist/admin/admin/src/translations/ja.json.js +693 -687
  210. package/dist/admin/admin/src/translations/ja.json.js.map +1 -1
  211. package/dist/admin/admin/src/translations/ja.json.mjs +693 -687
  212. package/dist/admin/admin/src/translations/ja.json.mjs.map +1 -1
  213. package/dist/admin/admin/src/translations/ko.json.js +157 -1
  214. package/dist/admin/admin/src/translations/ko.json.js.map +1 -1
  215. package/dist/admin/admin/src/translations/ko.json.mjs +157 -1
  216. package/dist/admin/admin/src/translations/ko.json.mjs.map +1 -1
  217. package/dist/admin/admin/src/translations/pl.json.js +22 -0
  218. package/dist/admin/admin/src/translations/pl.json.js.map +1 -1
  219. package/dist/admin/admin/src/translations/pl.json.mjs +22 -0
  220. package/dist/admin/admin/src/translations/pl.json.mjs.map +1 -1
  221. package/dist/admin/admin/src/utils/arrays.js.map +1 -1
  222. package/dist/admin/admin/src/utils/arrays.mjs.map +1 -1
  223. package/dist/admin/admin/src/utils/baseQuery.js +1 -1
  224. package/dist/admin/admin/src/utils/baseQuery.js.map +1 -1
  225. package/dist/admin/admin/src/utils/baseQuery.mjs +1 -1
  226. package/dist/admin/admin/src/utils/baseQuery.mjs.map +1 -1
  227. package/dist/admin/admin/src/utils/cookies.js +7 -0
  228. package/dist/admin/admin/src/utils/cookies.js.map +1 -1
  229. package/dist/admin/admin/src/utils/cookies.mjs +7 -1
  230. package/dist/admin/admin/src/utils/cookies.mjs.map +1 -1
  231. package/dist/admin/admin/src/utils/getFetchClient.js +2 -2
  232. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  233. package/dist/admin/admin/src/utils/getFetchClient.mjs +3 -3
  234. package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
  235. package/dist/admin/admin/src/utils/getProjectType.js +22 -0
  236. package/dist/admin/admin/src/utils/getProjectType.js.map +1 -0
  237. package/dist/admin/admin/src/utils/getProjectType.mjs +20 -0
  238. package/dist/admin/admin/src/utils/getProjectType.mjs.map +1 -0
  239. package/dist/admin/admin/src/utils/objects.js +43 -11
  240. package/dist/admin/admin/src/utils/objects.js.map +1 -1
  241. package/dist/admin/admin/src/utils/objects.mjs +43 -11
  242. package/dist/admin/admin/src/utils/objects.mjs.map +1 -1
  243. package/dist/admin/admin/src/utils/once.js.map +1 -1
  244. package/dist/admin/admin/src/utils/once.mjs.map +1 -1
  245. package/dist/admin/admin/src/utils/rulesEngine.js +2 -1
  246. package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
  247. package/dist/admin/admin/src/utils/rulesEngine.mjs +2 -1
  248. package/dist/admin/admin/src/utils/rulesEngine.mjs.map +1 -1
  249. package/dist/admin/admin/src/utils/shims.js.map +1 -1
  250. package/dist/admin/admin/src/utils/shims.mjs.map +1 -1
  251. package/dist/admin/admin/src/utils/widgetVisibility.js +16 -1
  252. package/dist/admin/admin/src/utils/widgetVisibility.js.map +1 -1
  253. package/dist/admin/admin/src/utils/widgetVisibility.mjs +14 -2
  254. package/dist/admin/admin/src/utils/widgetVisibility.mjs.map +1 -1
  255. package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js +2 -2
  256. package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js.map +1 -1
  257. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js +2 -2
  258. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
  259. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.mjs +2 -2
  260. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.mjs.map +1 -1
  261. package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js +2 -2
  262. package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js.map +1 -1
  263. package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js +2 -2
  264. package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js.map +1 -1
  265. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js +3 -3
  266. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js.map +1 -1
  267. package/dist/admin/ee/admin/src/pages/AuthResponse.js +1 -1
  268. package/dist/admin/ee/admin/src/pages/AuthResponse.js.map +1 -1
  269. package/dist/admin/ee/admin/src/pages/AuthResponse.mjs +2 -2
  270. package/dist/admin/ee/admin/src/pages/AuthResponse.mjs.map +1 -1
  271. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js +3 -3
  272. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
  273. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js.map +1 -1
  274. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs.map +1 -1
  275. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.js.map +1 -1
  276. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.mjs.map +1 -1
  277. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js +2 -2
  278. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
  279. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
  280. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
  281. package/dist/admin/shared/utils/auth-cookie-name.js +31 -0
  282. package/dist/admin/shared/utils/auth-cookie-name.js.map +1 -0
  283. package/dist/admin/shared/utils/auth-cookie-name.mjs +28 -0
  284. package/dist/admin/shared/utils/auth-cookie-name.mjs.map +1 -0
  285. package/dist/admin/src/StrapiApp.d.ts +2 -2
  286. package/dist/admin/src/components/DescriptionComponentRenderer.d.ts +2 -1
  287. package/dist/admin/src/components/Form.d.ts +14 -12
  288. package/dist/admin/src/components/FormInputs/Renderer.d.ts +1 -1
  289. package/dist/admin/src/components/GuidedTour/Steps/Step.d.ts +1 -1
  290. package/dist/admin/src/components/SubNav.d.ts +1 -1
  291. package/dist/admin/src/components/Table.d.ts +3 -2
  292. package/dist/admin/src/core/apis/Plugin.d.ts +1 -1
  293. package/dist/admin/src/core/utils/createHook.d.ts +6 -6
  294. package/dist/admin/src/hooks/useAdminRoles.d.ts +1 -1
  295. package/dist/admin/src/hooks/useMenu.d.ts +1 -1
  296. package/dist/admin/src/hooks/useQueryParams.d.ts +2 -1
  297. package/dist/admin/src/hooks/useThrottledCallback.d.ts +1 -1
  298. package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.d.ts +1 -1
  299. package/dist/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.d.ts +1 -1
  300. package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +5 -5
  301. package/dist/admin/src/services/admin.d.ts +6 -6
  302. package/dist/admin/src/services/api.d.ts +1 -1
  303. package/dist/admin/src/services/apiTokens.d.ts +2 -2
  304. package/dist/admin/src/services/auth.d.ts +12 -12
  305. package/dist/admin/src/services/contentApi.d.ts +1 -1
  306. package/dist/admin/src/services/contentManager.d.ts +1 -1
  307. package/dist/admin/src/services/homepage.d.ts +3 -3
  308. package/dist/admin/src/services/transferTokens.d.ts +1 -1
  309. package/dist/admin/src/services/users.d.ts +8 -8
  310. package/dist/admin/src/services/webhooks.d.ts +3 -3
  311. package/dist/admin/src/utils/arrays.d.ts +1 -1
  312. package/dist/admin/src/utils/baseQuery.d.ts +1 -1
  313. package/dist/admin/src/utils/cookies.d.ts +5 -0
  314. package/dist/admin/src/utils/getFetchClient.d.ts +7 -7
  315. package/dist/admin/src/utils/getProjectType.d.ts +16 -0
  316. package/dist/admin/src/utils/objects.d.ts +6 -4
  317. package/dist/admin/src/utils/once.d.ts +1 -1
  318. package/dist/admin/src/utils/widgetVisibility.d.ts +11 -0
  319. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.d.ts +1 -1
  320. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/tableHeaders.d.ts +2 -1
  321. package/dist/ee/admin/src/services/ai.d.ts +3 -3
  322. package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
  323. package/dist/ee/server/src/audit-logs/routes/audit-logs.d.ts +1 -1
  324. package/dist/ee/server/src/controllers/admin.d.ts +2 -0
  325. package/dist/ee/server/src/controllers/admin.d.ts.map +1 -1
  326. package/dist/ee/server/src/controllers/authentication-utils/middlewares.d.ts.map +1 -1
  327. package/dist/ee/server/src/controllers/index.d.ts +2 -0
  328. package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
  329. package/dist/ee/server/src/index.d.ts +2 -0
  330. package/dist/ee/server/src/index.d.ts.map +1 -1
  331. package/dist/ee/server/src/routes/index.d.ts +2 -2
  332. package/dist/ee/server/src/routes/sso.d.ts +2 -2
  333. package/dist/ee/server/src/services/index.d.ts +2 -2
  334. package/dist/server/ee/server/src/controllers/admin.js +1 -0
  335. package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
  336. package/dist/server/ee/server/src/controllers/admin.mjs +1 -0
  337. package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
  338. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +1 -1
  339. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
  340. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs +2 -2
  341. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs.map +1 -1
  342. package/dist/server/server/src/services/permission/sections-builder/handlers.js +9 -2
  343. package/dist/server/server/src/services/permission/sections-builder/handlers.js.map +1 -1
  344. package/dist/server/server/src/services/permission/sections-builder/handlers.mjs +9 -2
  345. package/dist/server/server/src/services/permission/sections-builder/handlers.mjs.map +1 -1
  346. package/dist/server/server/src/services/role.js +5 -1
  347. package/dist/server/server/src/services/role.js.map +1 -1
  348. package/dist/server/server/src/services/role.mjs +5 -1
  349. package/dist/server/server/src/services/role.mjs.map +1 -1
  350. package/dist/server/server/src/validation/common-validators.js +19 -11
  351. package/dist/server/server/src/validation/common-validators.js.map +1 -1
  352. package/dist/server/server/src/validation/common-validators.mjs +19 -11
  353. package/dist/server/server/src/validation/common-validators.mjs.map +1 -1
  354. package/dist/server/server/src/validation/permission.js +1 -1
  355. package/dist/server/server/src/validation/permission.js.map +1 -1
  356. package/dist/server/server/src/validation/permission.mjs +1 -1
  357. package/dist/server/server/src/validation/permission.mjs.map +1 -1
  358. package/dist/server/server/src/validation/role.js +2 -2
  359. package/dist/server/server/src/validation/role.js.map +1 -1
  360. package/dist/server/server/src/validation/role.mjs +2 -2
  361. package/dist/server/server/src/validation/role.mjs.map +1 -1
  362. package/dist/server/shared/utils/auth-cookie-name.js +31 -0
  363. package/dist/server/shared/utils/auth-cookie-name.js.map +1 -0
  364. package/dist/server/shared/utils/auth-cookie-name.mjs +28 -0
  365. package/dist/server/shared/utils/auth-cookie-name.mjs.map +1 -0
  366. package/dist/server/shared/utils/session-auth.js +6 -0
  367. package/dist/server/shared/utils/session-auth.js.map +1 -1
  368. package/dist/server/shared/utils/session-auth.mjs +6 -1
  369. package/dist/server/shared/utils/session-auth.mjs.map +1 -1
  370. package/dist/server/src/controllers/admin.d.ts +3 -3
  371. package/dist/server/src/controllers/index.d.ts +3 -3
  372. package/dist/server/src/domain/user.d.ts +1 -1
  373. package/dist/server/src/index.d.ts +19 -19
  374. package/dist/server/src/middlewares/index.d.ts +1 -1
  375. package/dist/server/src/services/index.d.ts +13 -13
  376. package/dist/server/src/services/permission/sections-builder/handlers.d.ts.map +1 -1
  377. package/dist/server/src/services/role.d.ts.map +1 -1
  378. package/dist/server/src/validation/common-validators.d.ts.map +1 -1
  379. package/dist/server/src/validation/role.d.ts.map +1 -1
  380. package/dist/shared/utils/__tests__/auth-cookie-name.test.d.ts +1 -0
  381. package/dist/shared/utils/__tests__/auth-cookie-name.test.d.ts.map +1 -0
  382. package/dist/shared/utils/__tests__/session-auth.test.d.ts +1 -0
  383. package/dist/shared/utils/__tests__/session-auth.test.d.ts.map +1 -0
  384. package/dist/shared/utils/auth-cookie-name.d.ts +14 -0
  385. package/dist/shared/utils/auth-cookie-name.d.ts.map +1 -0
  386. package/dist/shared/utils/session-auth.d.ts +1 -0
  387. package/dist/shared/utils/session-auth.d.ts.map +1 -1
  388. package/package.json +20 -17
@@ -1 +1 @@
1
- {"version":3,"file":"FreeTrialEndedModal.js","sources":["../../../../../../../admin/src/pages/Home/components/FreeTrialEndedModal.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { Box, Button, Flex, LinkButton, Modal, Typography } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { isAfter, subDays } from 'date-fns';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport { useScopedPersistentState } from '../../../hooks/usePersistentState';\n\nconst StyledModalContent = styled(Modal.Content)`\n max-width: 51.6rem;\n`;\n\nconst StyledModalBody = styled(Modal.Body)`\n padding: 0;\n position: relative;\n\n > div {\n padding: 0;\n }\n`;\n\nconst StyledButton = styled(Button)`\n border: 0;\n border-radius: 50%;\n`;\n\nexport const FreeTrialEndedModal = () => {\n const { formatMessage } = useIntl();\n const [open, setOpen] = useState(true);\n const [previouslyOpen, setPreviouslyOpen] = useScopedPersistentState(\n 'STRAPI_FREE_TRIAL_ENDED_MODAL',\n false\n );\n const [cachedTrialEndsAt] = useScopedPersistentState<string | undefined>(\n 'STRAPI_FREE_TRIAL_ENDS_AT',\n undefined\n );\n\n const { license } = useLicenseLimits();\n\n const sevenDaysAgo = subDays(new Date(), 7);\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 const handleClose = () => {\n setPreviouslyOpen(true);\n setOpen(false);\n };\n\n const handleOnOpenChange = (isOpen: boolean) => {\n if (!isOpen) {\n setPreviouslyOpen(true);\n }\n\n setOpen(isOpen);\n };\n\n if (!previouslyOpen && isTrialEndedRecently) {\n return (\n <Modal.Root open={open} onOpenChange={handleOnOpenChange}>\n <StyledModalContent aria-labelledby=\"title\">\n <StyledModalBody>\n <Box position=\"absolute\" top={0} right={0} padding={2}>\n <StyledButton\n aria-label={formatMessage({\n id: 'app.utils.close-label',\n defaultMessage: 'Close',\n })}\n variant=\"ghost\"\n width=\"2.4rem\"\n height=\"2.4rem\"\n onClick={handleClose}\n >\n <Cross />\n </StyledButton>\n </Box>\n <Flex\n direction=\"column\"\n alignItems=\"start\"\n justifyContent=\"stretch\"\n padding={8}\n gap={4}\n >\n <Typography variant=\"alpha\" fontWeight=\"bold\" fontSize={4} id=\"title\">\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.title',\n defaultMessage: 'Your trial has ended',\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.description',\n defaultMessage:\n 'Your access to Growth plan features such as Content history, Releases and Single sign-On (SSO) has expired.',\n })}\n </Typography>\n <Box background=\"primary200\" padding={4} hasRadius>\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.title',\n defaultMessage: 'Important to know:',\n })}\n </Typography>\n <ul style={{ listStyleType: 'disc', marginLeft: '1.5rem' }}>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item1',\n defaultMessage: 'Downgrading will remove access to the above features.',\n })}\n </Typography>\n </li>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item2',\n defaultMessage: 'Document version history will be deleted.',\n })}\n </Typography>\n </li>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item3',\n defaultMessage: 'All releases will be erased.',\n })}\n </Typography>\n </li>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item4',\n defaultMessage:\n 'If you downgrade ensure to set a root admin password to keep access to the admin panel.',\n })}\n </Typography>\n </li>\n </ul>\n </Box>\n <Flex marginTop={4} gap={2}>\n <LinkButton href=\"https://billing.strapi.io/\" target=\"_blank\">\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.button.upgrade',\n defaultMessage: 'Stay on the Growth plan',\n })}\n </LinkButton>\n <Button variant=\"tertiary\" onClick={handleClose}>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.button.downgrade',\n defaultMessage: 'Downgrade to Community',\n })}\n </Button>\n </Flex>\n </Flex>\n </StyledModalBody>\n </StyledModalContent>\n </Modal.Root>\n );\n }\n\n return null;\n};\n"],"names":["StyledModalContent","styled","Modal","Content","StyledModalBody","Body","StyledButton","Button","FreeTrialEndedModal","formatMessage","useIntl","open","setOpen","useState","previouslyOpen","setPreviouslyOpen","useScopedPersistentState","cachedTrialEndsAt","undefined","license","useLicenseLimits","sevenDaysAgo","subDays","Date","isTrialEndedRecently","Boolean","isTrial","window","strapi","isEE","isAfter","handleClose","handleOnOpenChange","isOpen","_jsx","Root","onOpenChange","aria-labelledby","_jsxs","Box","position","top","right","padding","aria-label","id","defaultMessage","variant","width","height","onClick","Cross","Flex","direction","alignItems","justifyContent","gap","Typography","fontWeight","fontSize","background","hasRadius","ul","style","listStyleType","marginLeft","li","marginTop","LinkButton","href","target"],"mappings":"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"}
1
+ {"version":3,"file":"FreeTrialEndedModal.js","sources":["../../../../../../../admin/src/pages/Home/components/FreeTrialEndedModal.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { Box, Button, Flex, LinkButton, Modal, Typography } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { isAfter, subDays } from 'date-fns';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport { useScopedPersistentState } from '../../../hooks/usePersistentState';\n\nconst StyledModalContent = styled(Modal.Content)`\n max-width: 51.6rem;\n`;\n\nconst StyledModalBody = styled(Modal.Body)`\n padding: 0;\n position: relative;\n\n > div {\n padding: 0;\n }\n`;\n\nconst StyledButton = styled(Button)`\n border: 0;\n border-radius: 50%;\n`;\n\nexport const FreeTrialEndedModal = () => {\n const { formatMessage } = useIntl();\n const [open, setOpen] = useState(true);\n const [previouslyOpen, setPreviouslyOpen] = useScopedPersistentState(\n 'STRAPI_FREE_TRIAL_ENDED_MODAL',\n false\n );\n const [cachedTrialEndsAt] = useScopedPersistentState<string | undefined>(\n 'STRAPI_FREE_TRIAL_ENDS_AT',\n undefined\n );\n\n const { license } = useLicenseLimits();\n\n const sevenDaysAgo = subDays(new Date(), 7);\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 const handleClose = () => {\n setPreviouslyOpen(true);\n setOpen(false);\n };\n\n const handleOnOpenChange = (isOpen: boolean) => {\n if (!isOpen) {\n setPreviouslyOpen(true);\n }\n\n setOpen(isOpen);\n };\n\n if (!previouslyOpen && isTrialEndedRecently) {\n return (\n <Modal.Root open={open} onOpenChange={handleOnOpenChange}>\n <StyledModalContent aria-labelledby=\"title\">\n <StyledModalBody>\n <Box position=\"absolute\" top={0} right={0} padding={2}>\n <StyledButton\n aria-label={formatMessage({\n id: 'app.utils.close-label',\n defaultMessage: 'Close',\n })}\n variant=\"ghost\"\n width=\"2.4rem\"\n height=\"2.4rem\"\n onClick={handleClose}\n >\n <Cross />\n </StyledButton>\n </Box>\n <Flex\n direction=\"column\"\n alignItems=\"start\"\n justifyContent=\"stretch\"\n padding={8}\n gap={4}\n >\n <Typography variant=\"alpha\" fontWeight=\"bold\" fontSize={4} id=\"title\">\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.title',\n defaultMessage: 'Your trial has ended',\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.description',\n defaultMessage:\n 'Your access to Growth plan features such as Content history, Releases and Single sign-On (SSO) has expired.',\n })}\n </Typography>\n <Box background=\"primary200\" padding={4} hasRadius>\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.title',\n defaultMessage: 'Important to know:',\n })}\n </Typography>\n <ul style={{ listStyleType: 'disc', marginLeft: '1.5rem' }}>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item1',\n defaultMessage: 'Downgrading will remove access to the above features.',\n })}\n </Typography>\n </li>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item2',\n defaultMessage: 'Document version history will be deleted.',\n })}\n </Typography>\n </li>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item3',\n defaultMessage: 'All releases will be erased.',\n })}\n </Typography>\n </li>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item4',\n defaultMessage:\n 'If you downgrade ensure to set a root admin password to keep access to the admin panel.',\n })}\n </Typography>\n </li>\n </ul>\n </Box>\n <Flex marginTop={4} gap={2}>\n <LinkButton href=\"https://billing.strapi.io/\" target=\"_blank\">\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.button.upgrade',\n defaultMessage: 'Stay on the Growth plan',\n })}\n </LinkButton>\n <Button variant=\"tertiary\" onClick={handleClose}>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.button.downgrade',\n defaultMessage: 'Downgrade to Community',\n })}\n </Button>\n </Flex>\n </Flex>\n </StyledModalBody>\n </StyledModalContent>\n </Modal.Root>\n );\n }\n\n return null;\n};\n"],"names":["StyledModalContent","styled","Modal","Content","StyledModalBody","Body","StyledButton","Button","FreeTrialEndedModal","formatMessage","useIntl","open","setOpen","useState","previouslyOpen","setPreviouslyOpen","useScopedPersistentState","cachedTrialEndsAt","undefined","license","useLicenseLimits","sevenDaysAgo","subDays","Date","isTrialEndedRecently","Boolean","isTrial","window","strapi","isEE","isAfter","handleClose","handleOnOpenChange","isOpen","_jsx","Root","onOpenChange","aria-labelledby","_jsxs","Box","position","top","right","padding","aria-label","id","defaultMessage","variant","width","height","onClick","Cross","Flex","direction","alignItems","justifyContent","gap","Typography","fontWeight","fontSize","background","hasRadius","ul","style","listStyleType","marginLeft","li","marginTop","LinkButton","href","target"],"mappings":"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"}
@@ -4,7 +4,7 @@ import { Modal, Box, Flex, Typography, LinkButton, Button } from '@strapi/design
4
4
  import { Cross } from '@strapi/icons';
5
5
  import { subDays, isAfter } from 'date-fns';
6
6
  import { useIntl } from 'react-intl';
7
- import styled from 'styled-components';
7
+ import { styled } from 'styled-components';
8
8
  import { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits.mjs';
9
9
  import { useScopedPersistentState } from '../../../hooks/usePersistentState.mjs';
10
10
 
@@ -1 +1 @@
1
- {"version":3,"file":"FreeTrialEndedModal.mjs","sources":["../../../../../../../admin/src/pages/Home/components/FreeTrialEndedModal.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { Box, Button, Flex, LinkButton, Modal, Typography } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { isAfter, subDays } from 'date-fns';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport { useScopedPersistentState } from '../../../hooks/usePersistentState';\n\nconst StyledModalContent = styled(Modal.Content)`\n max-width: 51.6rem;\n`;\n\nconst StyledModalBody = styled(Modal.Body)`\n padding: 0;\n position: relative;\n\n > div {\n padding: 0;\n }\n`;\n\nconst StyledButton = styled(Button)`\n border: 0;\n border-radius: 50%;\n`;\n\nexport const FreeTrialEndedModal = () => {\n const { formatMessage } = useIntl();\n const [open, setOpen] = useState(true);\n const [previouslyOpen, setPreviouslyOpen] = useScopedPersistentState(\n 'STRAPI_FREE_TRIAL_ENDED_MODAL',\n false\n );\n const [cachedTrialEndsAt] = useScopedPersistentState<string | undefined>(\n 'STRAPI_FREE_TRIAL_ENDS_AT',\n undefined\n );\n\n const { license } = useLicenseLimits();\n\n const sevenDaysAgo = subDays(new Date(), 7);\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 const handleClose = () => {\n setPreviouslyOpen(true);\n setOpen(false);\n };\n\n const handleOnOpenChange = (isOpen: boolean) => {\n if (!isOpen) {\n setPreviouslyOpen(true);\n }\n\n setOpen(isOpen);\n };\n\n if (!previouslyOpen && isTrialEndedRecently) {\n return (\n <Modal.Root open={open} onOpenChange={handleOnOpenChange}>\n <StyledModalContent aria-labelledby=\"title\">\n <StyledModalBody>\n <Box position=\"absolute\" top={0} right={0} padding={2}>\n <StyledButton\n aria-label={formatMessage({\n id: 'app.utils.close-label',\n defaultMessage: 'Close',\n })}\n variant=\"ghost\"\n width=\"2.4rem\"\n height=\"2.4rem\"\n onClick={handleClose}\n >\n <Cross />\n </StyledButton>\n </Box>\n <Flex\n direction=\"column\"\n alignItems=\"start\"\n justifyContent=\"stretch\"\n padding={8}\n gap={4}\n >\n <Typography variant=\"alpha\" fontWeight=\"bold\" fontSize={4} id=\"title\">\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.title',\n defaultMessage: 'Your trial has ended',\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.description',\n defaultMessage:\n 'Your access to Growth plan features such as Content history, Releases and Single sign-On (SSO) has expired.',\n })}\n </Typography>\n <Box background=\"primary200\" padding={4} hasRadius>\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.title',\n defaultMessage: 'Important to know:',\n })}\n </Typography>\n <ul style={{ listStyleType: 'disc', marginLeft: '1.5rem' }}>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item1',\n defaultMessage: 'Downgrading will remove access to the above features.',\n })}\n </Typography>\n </li>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item2',\n defaultMessage: 'Document version history will be deleted.',\n })}\n </Typography>\n </li>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item3',\n defaultMessage: 'All releases will be erased.',\n })}\n </Typography>\n </li>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item4',\n defaultMessage:\n 'If you downgrade ensure to set a root admin password to keep access to the admin panel.',\n })}\n </Typography>\n </li>\n </ul>\n </Box>\n <Flex marginTop={4} gap={2}>\n <LinkButton href=\"https://billing.strapi.io/\" target=\"_blank\">\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.button.upgrade',\n defaultMessage: 'Stay on the Growth plan',\n })}\n </LinkButton>\n <Button variant=\"tertiary\" onClick={handleClose}>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.button.downgrade',\n defaultMessage: 'Downgrade to Community',\n })}\n </Button>\n </Flex>\n </Flex>\n </StyledModalBody>\n </StyledModalContent>\n </Modal.Root>\n );\n }\n\n return null;\n};\n"],"names":["StyledModalContent","styled","Modal","Content","StyledModalBody","Body","StyledButton","Button","FreeTrialEndedModal","formatMessage","useIntl","open","setOpen","useState","previouslyOpen","setPreviouslyOpen","useScopedPersistentState","cachedTrialEndsAt","undefined","license","useLicenseLimits","sevenDaysAgo","subDays","Date","isTrialEndedRecently","Boolean","isTrial","window","strapi","isEE","isAfter","handleClose","handleOnOpenChange","isOpen","_jsx","Root","onOpenChange","aria-labelledby","_jsxs","Box","position","top","right","padding","aria-label","id","defaultMessage","variant","width","height","onClick","Cross","Flex","direction","alignItems","justifyContent","gap","Typography","fontWeight","fontSize","background","hasRadius","ul","style","listStyleType","marginLeft","li","marginTop","LinkButton","href","target"],"mappings":"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"}
1
+ {"version":3,"file":"FreeTrialEndedModal.mjs","sources":["../../../../../../../admin/src/pages/Home/components/FreeTrialEndedModal.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { Box, Button, Flex, LinkButton, Modal, Typography } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { isAfter, subDays } from 'date-fns';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport { useScopedPersistentState } from '../../../hooks/usePersistentState';\n\nconst StyledModalContent = styled(Modal.Content)`\n max-width: 51.6rem;\n`;\n\nconst StyledModalBody = styled(Modal.Body)`\n padding: 0;\n position: relative;\n\n > div {\n padding: 0;\n }\n`;\n\nconst StyledButton = styled(Button)`\n border: 0;\n border-radius: 50%;\n`;\n\nexport const FreeTrialEndedModal = () => {\n const { formatMessage } = useIntl();\n const [open, setOpen] = useState(true);\n const [previouslyOpen, setPreviouslyOpen] = useScopedPersistentState(\n 'STRAPI_FREE_TRIAL_ENDED_MODAL',\n false\n );\n const [cachedTrialEndsAt] = useScopedPersistentState<string | undefined>(\n 'STRAPI_FREE_TRIAL_ENDS_AT',\n undefined\n );\n\n const { license } = useLicenseLimits();\n\n const sevenDaysAgo = subDays(new Date(), 7);\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 const handleClose = () => {\n setPreviouslyOpen(true);\n setOpen(false);\n };\n\n const handleOnOpenChange = (isOpen: boolean) => {\n if (!isOpen) {\n setPreviouslyOpen(true);\n }\n\n setOpen(isOpen);\n };\n\n if (!previouslyOpen && isTrialEndedRecently) {\n return (\n <Modal.Root open={open} onOpenChange={handleOnOpenChange}>\n <StyledModalContent aria-labelledby=\"title\">\n <StyledModalBody>\n <Box position=\"absolute\" top={0} right={0} padding={2}>\n <StyledButton\n aria-label={formatMessage({\n id: 'app.utils.close-label',\n defaultMessage: 'Close',\n })}\n variant=\"ghost\"\n width=\"2.4rem\"\n height=\"2.4rem\"\n onClick={handleClose}\n >\n <Cross />\n </StyledButton>\n </Box>\n <Flex\n direction=\"column\"\n alignItems=\"start\"\n justifyContent=\"stretch\"\n padding={8}\n gap={4}\n >\n <Typography variant=\"alpha\" fontWeight=\"bold\" fontSize={4} id=\"title\">\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.title',\n defaultMessage: 'Your trial has ended',\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.description',\n defaultMessage:\n 'Your access to Growth plan features such as Content history, Releases and Single sign-On (SSO) has expired.',\n })}\n </Typography>\n <Box background=\"primary200\" padding={4} hasRadius>\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.title',\n defaultMessage: 'Important to know:',\n })}\n </Typography>\n <ul style={{ listStyleType: 'disc', marginLeft: '1.5rem' }}>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item1',\n defaultMessage: 'Downgrading will remove access to the above features.',\n })}\n </Typography>\n </li>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item2',\n defaultMessage: 'Document version history will be deleted.',\n })}\n </Typography>\n </li>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item3',\n defaultMessage: 'All releases will be erased.',\n })}\n </Typography>\n </li>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item4',\n defaultMessage:\n 'If you downgrade ensure to set a root admin password to keep access to the admin panel.',\n })}\n </Typography>\n </li>\n </ul>\n </Box>\n <Flex marginTop={4} gap={2}>\n <LinkButton href=\"https://billing.strapi.io/\" target=\"_blank\">\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.button.upgrade',\n defaultMessage: 'Stay on the Growth plan',\n })}\n </LinkButton>\n <Button variant=\"tertiary\" onClick={handleClose}>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.button.downgrade',\n defaultMessage: 'Downgrade to Community',\n })}\n </Button>\n </Flex>\n </Flex>\n </StyledModalBody>\n </StyledModalContent>\n </Modal.Root>\n );\n }\n\n return null;\n};\n"],"names":["StyledModalContent","styled","Modal","Content","StyledModalBody","Body","StyledButton","Button","FreeTrialEndedModal","formatMessage","useIntl","open","setOpen","useState","previouslyOpen","setPreviouslyOpen","useScopedPersistentState","cachedTrialEndsAt","undefined","license","useLicenseLimits","sevenDaysAgo","subDays","Date","isTrialEndedRecently","Boolean","isTrial","window","strapi","isEE","isAfter","handleClose","handleOnOpenChange","isOpen","_jsx","Root","onOpenChange","aria-labelledby","_jsxs","Box","position","top","right","padding","aria-label","id","defaultMessage","variant","width","height","onClick","Cross","Flex","direction","alignItems","justifyContent","gap","Typography","fontWeight","fontSize","background","hasRadius","ul","style","listStyleType","marginLeft","li","marginTop","LinkButton","href","target"],"mappings":"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"}
@@ -5,19 +5,15 @@ var React = require('react');
5
5
  var designSystem = require('@strapi/design-system');
6
6
  var icons = require('@strapi/icons');
7
7
  var reactIntl = require('react-intl');
8
- var styled = require('styled-components');
8
+ var styledComponents = require('styled-components');
9
9
  var useLicenseLimits = require('../../../../../ee/admin/src/hooks/useLicenseLimits.js');
10
10
  var freeTrial = require('../../../assets/images/free-trial.png.js');
11
11
  var usePersistentState = require('../../../hooks/usePersistentState.js');
12
12
 
13
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
14
-
15
- var styled__default = /*#__PURE__*/_interopDefault(styled);
16
-
17
- const StyledModalContent = styled__default.default(designSystem.Modal.Content)`
13
+ const StyledModalContent = styledComponents.styled(designSystem.Modal.Content)`
18
14
  max-width: 51.6rem;
19
15
  `;
20
- const StyledModalBody = styled__default.default(designSystem.Modal.Body)`
16
+ const StyledModalBody = styledComponents.styled(designSystem.Modal.Body)`
21
17
  padding: 0;
22
18
  position: relative;
23
19
 
@@ -25,7 +21,7 @@ const StyledModalBody = styled__default.default(designSystem.Modal.Body)`
25
21
  padding: 0;
26
22
  }
27
23
  `;
28
- const StyledButton = styled__default.default(designSystem.Button)`
24
+ const StyledButton = styledComponents.styled(designSystem.Button)`
29
25
  border: 0;
30
26
  border-radius: 50%;
31
27
 
@@ -1 +1 @@
1
- {"version":3,"file":"FreeTrialWelcomeModal.js","sources":["../../../../../../../admin/src/pages/Home/components/FreeTrialWelcomeModal.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { Box, Button, Flex, Modal, Typography } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport lightIllustration from '../../../assets/images/free-trial.png';\nimport { useScopedPersistentState } from '../../../hooks/usePersistentState';\n\nconst StyledModalContent = styled(Modal.Content)`\n max-width: 51.6rem;\n`;\n\nconst StyledModalBody = styled(Modal.Body)`\n padding: 0;\n position: relative;\n\n > div {\n padding: 0;\n }\n`;\n\nconst StyledButton = styled(Button)`\n border: 0;\n border-radius: 50%;\n\n > span {\n line-height: 0;\n }\n`;\n\nexport const FreeTrialWelcomeModal = () => {\n const { formatMessage } = useIntl();\n const [open, setOpen] = useState(true);\n const [previouslyOpen, setPreviouslyOpen] = useScopedPersistentState(\n 'STRAPI_FREE_TRIAL_WELCOME_MODAL',\n false\n );\n const { license } = useLicenseLimits();\n\n const handleClose = () => {\n setPreviouslyOpen(true);\n setOpen(false);\n };\n\n const handleOnOpenChange = (isOpen: boolean) => {\n if (!isOpen) {\n setPreviouslyOpen(true);\n }\n\n setOpen(isOpen);\n };\n\n if (previouslyOpen || !license?.isTrial) {\n return null;\n }\n\n return (\n <Modal.Root open={open} onOpenChange={handleOnOpenChange}>\n <StyledModalContent aria-labelledby=\"title\">\n <StyledModalBody>\n <Box position=\"absolute\" top={0} right={0} padding={2}>\n <StyledButton\n aria-label={formatMessage({\n id: 'app.utils.close-label',\n defaultMessage: 'Close',\n })}\n variant=\"tertiary\"\n width=\"2.4rem\"\n height=\"2.4rem\"\n onClick={handleClose}\n >\n <Cross />\n </StyledButton>\n </Box>\n <img src={lightIllustration} alt=\"free-trial\" width=\"100%\" height=\"100%\" />\n <Flex direction=\"column\" alignItems=\"start\" justifyContent=\"stretch\" padding={8} gap={4}>\n <Typography variant=\"alpha\" fontWeight=\"bold\" fontSize={4} id=\"title\">\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.title',\n defaultMessage: \"We're glad to have you on board\",\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.description1',\n defaultMessage:\n 'For the next 30 days, you will have full access to advanced features like Content History, Releases and Single Sign-On (SSO) – everything you need to explore the power of Strapi CMS.',\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.description2',\n defaultMessage:\n 'Use this time to build, customize, and test your content workflows with complete flexibility!',\n })}\n </Typography>\n <Box marginTop={4}>\n <Button onClick={handleClose}>\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.button',\n defaultMessage: 'Start exploring',\n })}\n </Button>\n </Box>\n </Flex>\n </StyledModalBody>\n </StyledModalContent>\n </Modal.Root>\n );\n};\n"],"names":["StyledModalContent","styled","Modal","Content","StyledModalBody","Body","StyledButton","Button","FreeTrialWelcomeModal","formatMessage","useIntl","open","setOpen","useState","previouslyOpen","setPreviouslyOpen","useScopedPersistentState","license","useLicenseLimits","handleClose","handleOnOpenChange","isOpen","isTrial","_jsx","Root","onOpenChange","aria-labelledby","_jsxs","Box","position","top","right","padding","aria-label","id","defaultMessage","variant","width","height","onClick","Cross","img","src","lightIllustration","alt","Flex","direction","alignItems","justifyContent","gap","Typography","fontWeight","fontSize","marginTop"],"mappings":"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"}
1
+ {"version":3,"file":"FreeTrialWelcomeModal.js","sources":["../../../../../../../admin/src/pages/Home/components/FreeTrialWelcomeModal.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { Box, Button, Flex, Modal, Typography } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport lightIllustration from '../../../assets/images/free-trial.png';\nimport { useScopedPersistentState } from '../../../hooks/usePersistentState';\n\nconst StyledModalContent = styled(Modal.Content)`\n max-width: 51.6rem;\n`;\n\nconst StyledModalBody = styled(Modal.Body)`\n padding: 0;\n position: relative;\n\n > div {\n padding: 0;\n }\n`;\n\nconst StyledButton = styled(Button)`\n border: 0;\n border-radius: 50%;\n\n > span {\n line-height: 0;\n }\n`;\n\nexport const FreeTrialWelcomeModal = () => {\n const { formatMessage } = useIntl();\n const [open, setOpen] = useState(true);\n const [previouslyOpen, setPreviouslyOpen] = useScopedPersistentState(\n 'STRAPI_FREE_TRIAL_WELCOME_MODAL',\n false\n );\n const { license } = useLicenseLimits();\n\n const handleClose = () => {\n setPreviouslyOpen(true);\n setOpen(false);\n };\n\n const handleOnOpenChange = (isOpen: boolean) => {\n if (!isOpen) {\n setPreviouslyOpen(true);\n }\n\n setOpen(isOpen);\n };\n\n if (previouslyOpen || !license?.isTrial) {\n return null;\n }\n\n return (\n <Modal.Root open={open} onOpenChange={handleOnOpenChange}>\n <StyledModalContent aria-labelledby=\"title\">\n <StyledModalBody>\n <Box position=\"absolute\" top={0} right={0} padding={2}>\n <StyledButton\n aria-label={formatMessage({\n id: 'app.utils.close-label',\n defaultMessage: 'Close',\n })}\n variant=\"tertiary\"\n width=\"2.4rem\"\n height=\"2.4rem\"\n onClick={handleClose}\n >\n <Cross />\n </StyledButton>\n </Box>\n <img src={lightIllustration} alt=\"free-trial\" width=\"100%\" height=\"100%\" />\n <Flex direction=\"column\" alignItems=\"start\" justifyContent=\"stretch\" padding={8} gap={4}>\n <Typography variant=\"alpha\" fontWeight=\"bold\" fontSize={4} id=\"title\">\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.title',\n defaultMessage: \"We're glad to have you on board\",\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.description1',\n defaultMessage:\n 'For the next 30 days, you will have full access to advanced features like Content History, Releases and Single Sign-On (SSO) – everything you need to explore the power of Strapi CMS.',\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.description2',\n defaultMessage:\n 'Use this time to build, customize, and test your content workflows with complete flexibility!',\n })}\n </Typography>\n <Box marginTop={4}>\n <Button onClick={handleClose}>\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.button',\n defaultMessage: 'Start exploring',\n })}\n </Button>\n </Box>\n </Flex>\n </StyledModalBody>\n </StyledModalContent>\n </Modal.Root>\n );\n};\n"],"names":["StyledModalContent","styled","Modal","Content","StyledModalBody","Body","StyledButton","Button","FreeTrialWelcomeModal","formatMessage","useIntl","open","setOpen","useState","previouslyOpen","setPreviouslyOpen","useScopedPersistentState","license","useLicenseLimits","handleClose","handleOnOpenChange","isOpen","isTrial","_jsx","Root","onOpenChange","aria-labelledby","_jsxs","Box","position","top","right","padding","aria-label","id","defaultMessage","variant","width","height","onClick","Cross","img","src","lightIllustration","alt","Flex","direction","alignItems","justifyContent","gap","Typography","fontWeight","fontSize","marginTop"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { useState } from 'react';
3
3
  import { Modal, Box, Flex, Typography, Button } from '@strapi/design-system';
4
4
  import { Cross } from '@strapi/icons';
5
5
  import { useIntl } from 'react-intl';
6
- import styled from 'styled-components';
6
+ import { styled } from 'styled-components';
7
7
  import { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits.mjs';
8
8
  import img from '../../../assets/images/free-trial.png.mjs';
9
9
  import { useScopedPersistentState } from '../../../hooks/usePersistentState.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"FreeTrialWelcomeModal.mjs","sources":["../../../../../../../admin/src/pages/Home/components/FreeTrialWelcomeModal.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { Box, Button, Flex, Modal, Typography } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport lightIllustration from '../../../assets/images/free-trial.png';\nimport { useScopedPersistentState } from '../../../hooks/usePersistentState';\n\nconst StyledModalContent = styled(Modal.Content)`\n max-width: 51.6rem;\n`;\n\nconst StyledModalBody = styled(Modal.Body)`\n padding: 0;\n position: relative;\n\n > div {\n padding: 0;\n }\n`;\n\nconst StyledButton = styled(Button)`\n border: 0;\n border-radius: 50%;\n\n > span {\n line-height: 0;\n }\n`;\n\nexport const FreeTrialWelcomeModal = () => {\n const { formatMessage } = useIntl();\n const [open, setOpen] = useState(true);\n const [previouslyOpen, setPreviouslyOpen] = useScopedPersistentState(\n 'STRAPI_FREE_TRIAL_WELCOME_MODAL',\n false\n );\n const { license } = useLicenseLimits();\n\n const handleClose = () => {\n setPreviouslyOpen(true);\n setOpen(false);\n };\n\n const handleOnOpenChange = (isOpen: boolean) => {\n if (!isOpen) {\n setPreviouslyOpen(true);\n }\n\n setOpen(isOpen);\n };\n\n if (previouslyOpen || !license?.isTrial) {\n return null;\n }\n\n return (\n <Modal.Root open={open} onOpenChange={handleOnOpenChange}>\n <StyledModalContent aria-labelledby=\"title\">\n <StyledModalBody>\n <Box position=\"absolute\" top={0} right={0} padding={2}>\n <StyledButton\n aria-label={formatMessage({\n id: 'app.utils.close-label',\n defaultMessage: 'Close',\n })}\n variant=\"tertiary\"\n width=\"2.4rem\"\n height=\"2.4rem\"\n onClick={handleClose}\n >\n <Cross />\n </StyledButton>\n </Box>\n <img src={lightIllustration} alt=\"free-trial\" width=\"100%\" height=\"100%\" />\n <Flex direction=\"column\" alignItems=\"start\" justifyContent=\"stretch\" padding={8} gap={4}>\n <Typography variant=\"alpha\" fontWeight=\"bold\" fontSize={4} id=\"title\">\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.title',\n defaultMessage: \"We're glad to have you on board\",\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.description1',\n defaultMessage:\n 'For the next 30 days, you will have full access to advanced features like Content History, Releases and Single Sign-On (SSO) – everything you need to explore the power of Strapi CMS.',\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.description2',\n defaultMessage:\n 'Use this time to build, customize, and test your content workflows with complete flexibility!',\n })}\n </Typography>\n <Box marginTop={4}>\n <Button onClick={handleClose}>\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.button',\n defaultMessage: 'Start exploring',\n })}\n </Button>\n </Box>\n </Flex>\n </StyledModalBody>\n </StyledModalContent>\n </Modal.Root>\n );\n};\n"],"names":["StyledModalContent","styled","Modal","Content","StyledModalBody","Body","StyledButton","Button","FreeTrialWelcomeModal","formatMessage","useIntl","open","setOpen","useState","previouslyOpen","setPreviouslyOpen","useScopedPersistentState","license","useLicenseLimits","handleClose","handleOnOpenChange","isOpen","isTrial","_jsx","Root","onOpenChange","aria-labelledby","_jsxs","Box","position","top","right","padding","aria-label","id","defaultMessage","variant","width","height","onClick","Cross","img","src","lightIllustration","alt","Flex","direction","alignItems","justifyContent","gap","Typography","fontWeight","fontSize","marginTop"],"mappings":"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"}
1
+ {"version":3,"file":"FreeTrialWelcomeModal.mjs","sources":["../../../../../../../admin/src/pages/Home/components/FreeTrialWelcomeModal.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { Box, Button, Flex, Modal, Typography } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport lightIllustration from '../../../assets/images/free-trial.png';\nimport { useScopedPersistentState } from '../../../hooks/usePersistentState';\n\nconst StyledModalContent = styled(Modal.Content)`\n max-width: 51.6rem;\n`;\n\nconst StyledModalBody = styled(Modal.Body)`\n padding: 0;\n position: relative;\n\n > div {\n padding: 0;\n }\n`;\n\nconst StyledButton = styled(Button)`\n border: 0;\n border-radius: 50%;\n\n > span {\n line-height: 0;\n }\n`;\n\nexport const FreeTrialWelcomeModal = () => {\n const { formatMessage } = useIntl();\n const [open, setOpen] = useState(true);\n const [previouslyOpen, setPreviouslyOpen] = useScopedPersistentState(\n 'STRAPI_FREE_TRIAL_WELCOME_MODAL',\n false\n );\n const { license } = useLicenseLimits();\n\n const handleClose = () => {\n setPreviouslyOpen(true);\n setOpen(false);\n };\n\n const handleOnOpenChange = (isOpen: boolean) => {\n if (!isOpen) {\n setPreviouslyOpen(true);\n }\n\n setOpen(isOpen);\n };\n\n if (previouslyOpen || !license?.isTrial) {\n return null;\n }\n\n return (\n <Modal.Root open={open} onOpenChange={handleOnOpenChange}>\n <StyledModalContent aria-labelledby=\"title\">\n <StyledModalBody>\n <Box position=\"absolute\" top={0} right={0} padding={2}>\n <StyledButton\n aria-label={formatMessage({\n id: 'app.utils.close-label',\n defaultMessage: 'Close',\n })}\n variant=\"tertiary\"\n width=\"2.4rem\"\n height=\"2.4rem\"\n onClick={handleClose}\n >\n <Cross />\n </StyledButton>\n </Box>\n <img src={lightIllustration} alt=\"free-trial\" width=\"100%\" height=\"100%\" />\n <Flex direction=\"column\" alignItems=\"start\" justifyContent=\"stretch\" padding={8} gap={4}>\n <Typography variant=\"alpha\" fontWeight=\"bold\" fontSize={4} id=\"title\">\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.title',\n defaultMessage: \"We're glad to have you on board\",\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.description1',\n defaultMessage:\n 'For the next 30 days, you will have full access to advanced features like Content History, Releases and Single Sign-On (SSO) – everything you need to explore the power of Strapi CMS.',\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.description2',\n defaultMessage:\n 'Use this time to build, customize, and test your content workflows with complete flexibility!',\n })}\n </Typography>\n <Box marginTop={4}>\n <Button onClick={handleClose}>\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.button',\n defaultMessage: 'Start exploring',\n })}\n </Button>\n </Box>\n </Flex>\n </StyledModalBody>\n </StyledModalContent>\n </Modal.Root>\n );\n};\n"],"names":["StyledModalContent","styled","Modal","Content","StyledModalBody","Body","StyledButton","Button","FreeTrialWelcomeModal","formatMessage","useIntl","open","setOpen","useState","previouslyOpen","setPreviouslyOpen","useScopedPersistentState","license","useLicenseLimits","handleClose","handleOnOpenChange","isOpen","isTrial","_jsx","Root","onOpenChange","aria-labelledby","_jsxs","Box","position","top","right","padding","aria-label","id","defaultMessage","variant","width","height","onClick","Cross","img","src","lightIllustration","alt","Flex","direction","alignItems","justifyContent","gap","Typography","fontWeight","fontSize","marginTop"],"mappings":"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"}
@@ -5,13 +5,13 @@ var designSystem = require('@strapi/design-system');
5
5
  var icons = require('@strapi/icons');
6
6
  var reactIntl = require('react-intl');
7
7
  var reactRouterDom = require('react-router-dom');
8
- var styled = require('styled-components');
8
+ var styledComponents = require('styled-components');
9
9
  var useLicenseLimits = require('../../../../../ee/admin/src/hooks/useLicenseLimits.js');
10
10
  var SubNav = require('../../../components/SubNav.js');
11
11
  var Tracking = require('../../../features/Tracking.js');
12
12
  var useSettingsMenu = require('../../../hooks/useSettingsMenu.js');
13
13
 
14
- const StyledBadge = styled.styled(designSystem.Badge)`
14
+ const StyledBadge = styledComponents.styled(designSystem.Badge)`
15
15
  border-radius: 50%;
16
16
  padding: ${({ theme })=>theme.spaces[2]};
17
17
  height: 2rem;
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsNav.js","sources":["../../../../../../../admin/src/pages/Settings/components/SettingsNav.tsx"],"sourcesContent":["import { Badge, Divider, Typography } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport { SubNav } from '../../../components/SubNav';\nimport { useTracking } from '../../../features/Tracking';\nimport { useSettingsMenu } from '../../../hooks/useSettingsMenu';\n\ntype LinkId =\n | 'content-releases'\n | 'review-workflows'\n | 'sso'\n | 'auditLogs'\n | 'auditLogs-purchase-page';\n\ntype FeatureName = 'cms-content-releases' | 'review-workflows' | 'sso' | 'audit-logs';\n\nconst StyledBadge = styled(Badge)`\n border-radius: 50%;\n padding: ${({ theme }) => theme.spaces[2]};\n height: 2rem;\n`;\n\nconst SettingsNav = ({ isFullPage = false }: { isFullPage?: boolean }) => {\n const { menu } = useSettingsMenu();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const { license } = useLicenseLimits();\n\n const availableFeatureNames = license?.features.map((feature) => feature.name);\n\n const linksIdsToLicenseFeaturesNames: Record<LinkId, FeatureName> = {\n 'content-releases': 'cms-content-releases',\n 'review-workflows': 'review-workflows',\n sso: 'sso',\n auditLogs: 'audit-logs',\n 'auditLogs-purchase-page': 'audit-logs',\n };\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n id: link.id as LinkId,\n title: link.intlLabel,\n name: link.id,\n to: link.to.startsWith('/') ? link.to : `/settings/${link.to}`,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav.Main aria-label={label}>\n {!isFullPage && (\n <>\n <SubNav.Header label={label} />\n <Divider />\n </>\n )}\n <SubNav.Content>\n {isFullPage && (\n <>\n <SubNav.Header label={label} />\n <Divider />\n </>\n )}\n <SubNav.Sections>\n {sections.map((section) => (\n <SubNav.Section key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <SubNav.Link\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n label={formatMessage(link.intlLabel)}\n endAction={\n <>\n {link?.licenseOnly && (\n <Lightning\n fill={\n (availableFeatureNames || []).includes(\n linksIdsToLicenseFeaturesNames[link.id]\n )\n ? 'primary600'\n : 'neutral300'\n }\n width=\"1.5rem\"\n height=\"1.5rem\"\n />\n )}\n {link?.hasNotification && (\n <StyledBadge\n aria-label=\"Notification\"\n backgroundColor=\"primary600\"\n textColor=\"neutral0\"\n >\n 1\n </StyledBadge>\n )}\n </>\n }\n >\n {formatMessage(link.intlLabel)}\n </SubNav.Link>\n );\n })}\n </SubNav.Section>\n ))}\n </SubNav.Sections>\n </SubNav.Content>\n </SubNav.Main>\n );\n};\n\nexport { SettingsNav };\n"],"names":["StyledBadge","styled","Badge","theme","spaces","SettingsNav","isFullPage","menu","useSettingsMenu","formatMessage","useIntl","trackUsage","useTracking","pathname","useLocation","license","useLicenseLimits","availableFeatureNames","features","map","feature","name","linksIdsToLicenseFeaturesNames","sso","auditLogs","filteredMenu","filter","section","links","every","link","isDisplayed","sections","title","intlLabel","id","to","startsWith","label","defaultMessage","handleClickOnLink","destination","from","_jsxs","SubNav","Main","aria-label","_Fragment","_jsx","Header","Divider","Content","Sections","Section","Link","onClick","endAction","licenseOnly","Lightning","fill","includes","width","height","hasNotification","backgroundColor","textColor"],"mappings":"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"}
1
+ {"version":3,"file":"SettingsNav.js","sources":["../../../../../../../admin/src/pages/Settings/components/SettingsNav.tsx"],"sourcesContent":["import { Badge, Divider } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport { SubNav } from '../../../components/SubNav';\nimport { useTracking } from '../../../features/Tracking';\nimport { useSettingsMenu } from '../../../hooks/useSettingsMenu';\n\ntype LinkId =\n | 'content-releases'\n | 'review-workflows'\n | 'sso'\n | 'auditLogs'\n | 'auditLogs-purchase-page';\n\ntype FeatureName = 'cms-content-releases' | 'review-workflows' | 'sso' | 'audit-logs';\n\nconst StyledBadge = styled(Badge)`\n border-radius: 50%;\n padding: ${({ theme }) => theme.spaces[2]};\n height: 2rem;\n`;\n\nconst SettingsNav = ({ isFullPage = false }: { isFullPage?: boolean }) => {\n const { menu } = useSettingsMenu();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const { license } = useLicenseLimits();\n\n const availableFeatureNames = license?.features.map((feature) => feature.name);\n\n const linksIdsToLicenseFeaturesNames: Record<LinkId, FeatureName> = {\n 'content-releases': 'cms-content-releases',\n 'review-workflows': 'review-workflows',\n sso: 'sso',\n auditLogs: 'audit-logs',\n 'auditLogs-purchase-page': 'audit-logs',\n };\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n id: link.id as LinkId,\n title: link.intlLabel,\n name: link.id,\n to: link.to.startsWith('/') ? link.to : `/settings/${link.to}`,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav.Main aria-label={label}>\n {!isFullPage && (\n <>\n <SubNav.Header label={label} />\n <Divider />\n </>\n )}\n <SubNav.Content>\n {isFullPage && (\n <>\n <SubNav.Header label={label} />\n <Divider />\n </>\n )}\n <SubNav.Sections>\n {sections.map((section) => (\n <SubNav.Section key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <SubNav.Link\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n label={formatMessage(link.intlLabel)}\n endAction={\n <>\n {link?.licenseOnly && (\n <Lightning\n fill={\n (availableFeatureNames || []).includes(\n linksIdsToLicenseFeaturesNames[link.id]\n )\n ? 'primary600'\n : 'neutral300'\n }\n width=\"1.5rem\"\n height=\"1.5rem\"\n />\n )}\n {link?.hasNotification && (\n <StyledBadge\n aria-label=\"Notification\"\n backgroundColor=\"primary600\"\n textColor=\"neutral0\"\n >\n 1\n </StyledBadge>\n )}\n </>\n }\n >\n {formatMessage(link.intlLabel)}\n </SubNav.Link>\n );\n })}\n </SubNav.Section>\n ))}\n </SubNav.Sections>\n </SubNav.Content>\n </SubNav.Main>\n );\n};\n\nexport { SettingsNav };\n"],"names":["StyledBadge","styled","Badge","theme","spaces","SettingsNav","isFullPage","menu","useSettingsMenu","formatMessage","useIntl","trackUsage","useTracking","pathname","useLocation","license","useLicenseLimits","availableFeatureNames","features","map","feature","name","linksIdsToLicenseFeaturesNames","sso","auditLogs","filteredMenu","filter","section","links","every","link","isDisplayed","sections","title","intlLabel","id","to","startsWith","label","defaultMessage","handleClickOnLink","destination","from","_jsxs","SubNav","Main","aria-label","_Fragment","_jsx","Header","Divider","Content","Sections","Section","Link","onClick","endAction","licenseOnly","Lightning","fill","includes","width","height","hasNotification","backgroundColor","textColor"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsNav.mjs","sources":["../../../../../../../admin/src/pages/Settings/components/SettingsNav.tsx"],"sourcesContent":["import { Badge, Divider, Typography } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport { SubNav } from '../../../components/SubNav';\nimport { useTracking } from '../../../features/Tracking';\nimport { useSettingsMenu } from '../../../hooks/useSettingsMenu';\n\ntype LinkId =\n | 'content-releases'\n | 'review-workflows'\n | 'sso'\n | 'auditLogs'\n | 'auditLogs-purchase-page';\n\ntype FeatureName = 'cms-content-releases' | 'review-workflows' | 'sso' | 'audit-logs';\n\nconst StyledBadge = styled(Badge)`\n border-radius: 50%;\n padding: ${({ theme }) => theme.spaces[2]};\n height: 2rem;\n`;\n\nconst SettingsNav = ({ isFullPage = false }: { isFullPage?: boolean }) => {\n const { menu } = useSettingsMenu();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const { license } = useLicenseLimits();\n\n const availableFeatureNames = license?.features.map((feature) => feature.name);\n\n const linksIdsToLicenseFeaturesNames: Record<LinkId, FeatureName> = {\n 'content-releases': 'cms-content-releases',\n 'review-workflows': 'review-workflows',\n sso: 'sso',\n auditLogs: 'audit-logs',\n 'auditLogs-purchase-page': 'audit-logs',\n };\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n id: link.id as LinkId,\n title: link.intlLabel,\n name: link.id,\n to: link.to.startsWith('/') ? link.to : `/settings/${link.to}`,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav.Main aria-label={label}>\n {!isFullPage && (\n <>\n <SubNav.Header label={label} />\n <Divider />\n </>\n )}\n <SubNav.Content>\n {isFullPage && (\n <>\n <SubNav.Header label={label} />\n <Divider />\n </>\n )}\n <SubNav.Sections>\n {sections.map((section) => (\n <SubNav.Section key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <SubNav.Link\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n label={formatMessage(link.intlLabel)}\n endAction={\n <>\n {link?.licenseOnly && (\n <Lightning\n fill={\n (availableFeatureNames || []).includes(\n linksIdsToLicenseFeaturesNames[link.id]\n )\n ? 'primary600'\n : 'neutral300'\n }\n width=\"1.5rem\"\n height=\"1.5rem\"\n />\n )}\n {link?.hasNotification && (\n <StyledBadge\n aria-label=\"Notification\"\n backgroundColor=\"primary600\"\n textColor=\"neutral0\"\n >\n 1\n </StyledBadge>\n )}\n </>\n }\n >\n {formatMessage(link.intlLabel)}\n </SubNav.Link>\n );\n })}\n </SubNav.Section>\n ))}\n </SubNav.Sections>\n </SubNav.Content>\n </SubNav.Main>\n );\n};\n\nexport { SettingsNav };\n"],"names":["StyledBadge","styled","Badge","theme","spaces","SettingsNav","isFullPage","menu","useSettingsMenu","formatMessage","useIntl","trackUsage","useTracking","pathname","useLocation","license","useLicenseLimits","availableFeatureNames","features","map","feature","name","linksIdsToLicenseFeaturesNames","sso","auditLogs","filteredMenu","filter","section","links","every","link","isDisplayed","sections","title","intlLabel","id","to","startsWith","label","defaultMessage","handleClickOnLink","destination","from","_jsxs","SubNav","Main","aria-label","_Fragment","_jsx","Header","Divider","Content","Sections","Section","Link","onClick","endAction","licenseOnly","Lightning","fill","includes","width","height","hasNotification","backgroundColor","textColor"],"mappings":"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"}
1
+ {"version":3,"file":"SettingsNav.mjs","sources":["../../../../../../../admin/src/pages/Settings/components/SettingsNav.tsx"],"sourcesContent":["import { Badge, Divider } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport { SubNav } from '../../../components/SubNav';\nimport { useTracking } from '../../../features/Tracking';\nimport { useSettingsMenu } from '../../../hooks/useSettingsMenu';\n\ntype LinkId =\n | 'content-releases'\n | 'review-workflows'\n | 'sso'\n | 'auditLogs'\n | 'auditLogs-purchase-page';\n\ntype FeatureName = 'cms-content-releases' | 'review-workflows' | 'sso' | 'audit-logs';\n\nconst StyledBadge = styled(Badge)`\n border-radius: 50%;\n padding: ${({ theme }) => theme.spaces[2]};\n height: 2rem;\n`;\n\nconst SettingsNav = ({ isFullPage = false }: { isFullPage?: boolean }) => {\n const { menu } = useSettingsMenu();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const { license } = useLicenseLimits();\n\n const availableFeatureNames = license?.features.map((feature) => feature.name);\n\n const linksIdsToLicenseFeaturesNames: Record<LinkId, FeatureName> = {\n 'content-releases': 'cms-content-releases',\n 'review-workflows': 'review-workflows',\n sso: 'sso',\n auditLogs: 'audit-logs',\n 'auditLogs-purchase-page': 'audit-logs',\n };\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n id: link.id as LinkId,\n title: link.intlLabel,\n name: link.id,\n to: link.to.startsWith('/') ? link.to : `/settings/${link.to}`,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav.Main aria-label={label}>\n {!isFullPage && (\n <>\n <SubNav.Header label={label} />\n <Divider />\n </>\n )}\n <SubNav.Content>\n {isFullPage && (\n <>\n <SubNav.Header label={label} />\n <Divider />\n </>\n )}\n <SubNav.Sections>\n {sections.map((section) => (\n <SubNav.Section key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <SubNav.Link\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n label={formatMessage(link.intlLabel)}\n endAction={\n <>\n {link?.licenseOnly && (\n <Lightning\n fill={\n (availableFeatureNames || []).includes(\n linksIdsToLicenseFeaturesNames[link.id]\n )\n ? 'primary600'\n : 'neutral300'\n }\n width=\"1.5rem\"\n height=\"1.5rem\"\n />\n )}\n {link?.hasNotification && (\n <StyledBadge\n aria-label=\"Notification\"\n backgroundColor=\"primary600\"\n textColor=\"neutral0\"\n >\n 1\n </StyledBadge>\n )}\n </>\n }\n >\n {formatMessage(link.intlLabel)}\n </SubNav.Link>\n );\n })}\n </SubNav.Section>\n ))}\n </SubNav.Sections>\n </SubNav.Content>\n </SubNav.Main>\n );\n};\n\nexport { SettingsNav };\n"],"names":["StyledBadge","styled","Badge","theme","spaces","SettingsNav","isFullPage","menu","useSettingsMenu","formatMessage","useIntl","trackUsage","useTracking","pathname","useLocation","license","useLicenseLimits","availableFeatureNames","features","map","feature","name","linksIdsToLicenseFeaturesNames","sso","auditLogs","filteredMenu","filter","section","links","every","link","isDisplayed","sections","title","intlLabel","id","to","startsWith","label","defaultMessage","handleClickOnLink","destination","from","_jsxs","SubNav","Main","aria-label","_Fragment","_jsx","Header","Divider","Content","Sections","Section","Link","onClick","endAction","licenseOnly","Lightning","fill","includes","width","height","hasNotification","backgroundColor","textColor"],"mappings":"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"}
@@ -5,7 +5,7 @@ var React = require('react');
5
5
  var designSystem = require('@strapi/design-system');
6
6
  var icons = require('@strapi/icons');
7
7
  var reactIntl = require('react-intl');
8
- var styled = require('styled-components');
8
+ var styledComponents = require('styled-components');
9
9
  var ConfirmDialog = require('../../../../components/ConfirmDialog.js');
10
10
  var Tours = require('../../../../components/GuidedTour/Tours.js');
11
11
  var Layout = require('../../../../components/Layouts/Layout.js');
@@ -34,7 +34,7 @@ function _interopNamespace(e) {
34
34
 
35
35
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
36
36
 
37
- const ActionButton = styled.styled(designSystem.Button)`
37
+ const ActionButton = styledComponents.styled(designSystem.Button)`
38
38
  white-space: nowrap;
39
39
  `;
40
40
  const Regenerate = ({ onRegenerate, url })=>{
@@ -1 +1 @@
1
- {"version":3,"file":"FormHead.js","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/FormHead.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Dialog, Flex, Tooltip } from '@strapi/design-system';\nimport { Check, ArrowClockwise, Eye, EyeStriked } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { tours } from '../../../../components/GuidedTour/Tours';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useRegenerateTokenMutation } from '../../../../services/transferTokens';\n\nimport type { Data } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst ActionButton = styled(Button)`\n white-space: nowrap;\n`;\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <Dialog.Trigger>\n <ActionButton\n startIcon={<ArrowClockwise />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n fullWidth\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </ActionButton>\n </Dialog.Trigger>\n\n <ConfirmDialog\n title={formatMessage({\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n })}\n endAction={\n <Button\n startIcon={<ArrowClockwise />}\n loading={isLoadingConfirmation}\n onClick={handleConfirmRegeneration}\n >\n {formatMessage({\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n }\n >\n {formatMessage({\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n\ninterface Token {\n id: Data.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n canShowToken?: boolean;\n setToken: (token: TToken) => void;\n toggleToken?: () => void;\n showToken?: boolean;\n isSubmitting: boolean;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n toggleToken,\n showToken,\n canShowToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n toggleToken?.();\n };\n\n return (\n <Layouts.Header\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex width=\"100%\" gap={2} wrap={{ initial: 'wrap', medium: 'nowrap' }}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n <Flex width=\"100%\" gap={2}>\n {token?.id && toggleToken && canShowToken === true && (\n <tours.apiTokens.ViewAPIToken>\n <Tooltip\n label={\n !canShowToken &&\n formatMessage({\n id: 'Settings.tokens.encryptionKeyMissing',\n defaultMessage:\n 'In order to view the token, you need a valid encryption key in the admin configuration',\n })\n }\n >\n <ActionButton\n type=\"button\"\n startIcon={showToken ? <EyeStriked /> : <Eye />}\n variant=\"secondary\"\n onClick={() => toggleToken?.()}\n disabled={!canShowToken}\n fullWidth\n >\n {formatMessage({\n id: 'Settings.tokens.viewToken',\n defaultMessage: 'View token',\n })}\n </ActionButton>\n </Tooltip>\n </tours.apiTokens.ViewAPIToken>\n )}\n <ActionButton\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </ActionButton>\n </Flex>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton />\n </Box>\n }\n ellipsis\n />\n );\n};\n"],"names":["ActionButton","styled","Button","Regenerate","onRegenerate","url","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","React","useState","isLoadingConfirmation","setIsLoadingConfirmation","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","regenerateToken","useRegenerateTokenMutation","regenerateData","res","type","message","error","data","accessKey","id","defaultMessage","handleConfirmRegeneration","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Trigger","startIcon","ArrowClockwise","size","variant","onClick","name","fullWidth","ConfirmDialog","title","endAction","loading","FormHead","token","setToken","toggleToken","showToken","canShowToken","canEditInputs","canRegenerate","isSubmitting","regenerateUrl","handleRegenerate","newKey","Layouts","Header","primaryAction","Flex","width","gap","wrap","initial","medium","tours","apiTokens","ViewAPIToken","Tooltip","label","EyeStriked","Eye","disabled","Check","navigationAction","Box","display","BackButton","ellipsis"],"mappings":"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"}
1
+ {"version":3,"file":"FormHead.js","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/FormHead.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Dialog, Flex, Tooltip } from '@strapi/design-system';\nimport { Check, ArrowClockwise, Eye, EyeStriked } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { tours } from '../../../../components/GuidedTour/Tours';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useRegenerateTokenMutation } from '../../../../services/transferTokens';\n\nimport type { Data } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst ActionButton = styled(Button)`\n white-space: nowrap;\n`;\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <Dialog.Trigger>\n <ActionButton\n startIcon={<ArrowClockwise />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n fullWidth\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </ActionButton>\n </Dialog.Trigger>\n\n <ConfirmDialog\n title={formatMessage({\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n })}\n endAction={\n <Button\n startIcon={<ArrowClockwise />}\n loading={isLoadingConfirmation}\n onClick={handleConfirmRegeneration}\n >\n {formatMessage({\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n }\n >\n {formatMessage({\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n\ninterface Token {\n id: Data.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n canShowToken?: boolean;\n setToken: (token: TToken) => void;\n toggleToken?: () => void;\n showToken?: boolean;\n isSubmitting: boolean;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n toggleToken,\n showToken,\n canShowToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n toggleToken?.();\n };\n\n return (\n <Layouts.Header\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex width=\"100%\" gap={2} wrap={{ initial: 'wrap', medium: 'nowrap' }}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n <Flex width=\"100%\" gap={2}>\n {token?.id && toggleToken && canShowToken === true && (\n <tours.apiTokens.ViewAPIToken>\n <Tooltip\n label={\n !canShowToken &&\n formatMessage({\n id: 'Settings.tokens.encryptionKeyMissing',\n defaultMessage:\n 'In order to view the token, you need a valid encryption key in the admin configuration',\n })\n }\n >\n <ActionButton\n type=\"button\"\n startIcon={showToken ? <EyeStriked /> : <Eye />}\n variant=\"secondary\"\n onClick={() => toggleToken?.()}\n disabled={!canShowToken}\n fullWidth\n >\n {formatMessage({\n id: 'Settings.tokens.viewToken',\n defaultMessage: 'View token',\n })}\n </ActionButton>\n </Tooltip>\n </tours.apiTokens.ViewAPIToken>\n )}\n <ActionButton\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </ActionButton>\n </Flex>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton />\n </Box>\n }\n ellipsis\n />\n );\n};\n"],"names":["ActionButton","styled","Button","Regenerate","onRegenerate","url","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","React","useState","isLoadingConfirmation","setIsLoadingConfirmation","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","regenerateToken","useRegenerateTokenMutation","regenerateData","res","type","message","error","data","accessKey","id","defaultMessage","handleConfirmRegeneration","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Trigger","startIcon","ArrowClockwise","size","variant","onClick","name","fullWidth","ConfirmDialog","title","endAction","loading","FormHead","token","setToken","toggleToken","showToken","canShowToken","canEditInputs","canRegenerate","isSubmitting","regenerateUrl","handleRegenerate","newKey","Layouts","Header","primaryAction","Flex","width","gap","wrap","initial","medium","tours","apiTokens","ViewAPIToken","Tooltip","label","EyeStriked","Eye","disabled","Check","navigationAction","Box","display","BackButton","ellipsis"],"mappings":"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"}
@@ -6,7 +6,7 @@ var designSystem = require('@strapi/design-system');
6
6
  var icons = require('@strapi/icons');
7
7
  var reactIntl = require('react-intl');
8
8
  var reactRouterDom = require('react-router-dom');
9
- var styled = require('styled-components');
9
+ var styledComponents = require('styled-components');
10
10
  var ConfirmDialog = require('../../../../components/ConfirmDialog.js');
11
11
  var Tours = require('../../../../components/GuidedTour/Tours.js');
12
12
  var RelativeTime = require('../../../../components/RelativeTime.js');
@@ -192,7 +192,7 @@ const DefaultButton = ({ tokenName, tokenId, buttonType = 'edit', children })=>{
192
192
  children: children
193
193
  });
194
194
  };
195
- const LinkButtonStyled = styled.styled(designSystem.LinkButton)`
195
+ const LinkButtonStyled = styledComponents.styled(designSystem.LinkButton)`
196
196
  padding: 0.7rem;
197
197
 
198
198
  & > span {
@@ -1 +1 @@
1
- {"version":3,"file":"Table.js","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/Table.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n IconButton,\n Typography,\n useCollator,\n Dialog,\n LinkButton,\n} from '@strapi/design-system';\nimport { Pencil, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport { SanitizedTransferToken } from '../../../../../../shared/contracts/transfer';\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { tours } from '../../../../components/GuidedTour/Tours';\nimport { RelativeTime } from '../../../../components/RelativeTime';\nimport { Table as TableImpl } from '../../../../components/Table';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useQueryParams } from '../../../../hooks/useQueryParams';\n\nimport type { AdminTokenOwner } from '../../../../../../shared/contracts/shared';\nimport type { Data } from '@strapi/types';\n\nconst formatAdminUserName = (\n owner: Pick<AdminTokenOwner, 'firstname' | 'lastname' | 'email' | 'username'>\n): string => {\n const full = [owner.firstname, owner.lastname].filter(Boolean).join(' ');\n return full || owner.username || owner.email || '';\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Table\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TableProps\n extends Pick<TableImpl.Props<SanitizedTransferToken | ApiToken>, 'headers' | 'isLoading'> {\n onConfirmDelete: (id: Data.ID) => void;\n permissions: {\n canRead: boolean;\n canDelete: boolean;\n canUpdate: boolean;\n };\n tokens: SanitizedTransferToken[] | ApiToken[];\n tokenType: 'api-token' | 'transfer-token';\n showOwner?: boolean;\n}\n\nconst Table = ({\n permissions,\n headers = [],\n isLoading = false,\n tokens = [],\n onConfirmDelete,\n tokenType,\n showOwner = false,\n}: TableProps) => {\n const [{ query }] = useQueryParams<{ sort?: string }>();\n const { formatMessage, locale } = useIntl();\n const [, sortOrder] = query && query.sort ? query.sort.split(':') : [undefined, 'ASC'];\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const formatter = useCollator(locale);\n\n const sortedTokens = [...tokens].sort((a, b) => {\n return sortOrder === 'DESC'\n ? formatter.compare(b.name, a.name)\n : formatter.compare(a.name, b.name);\n });\n\n const { canDelete, canUpdate, canRead } = permissions;\n\n const handleRowClick = (id: Data.ID) => () => {\n if (canRead) {\n trackUsage('willEditTokenFromList', {\n tokenType,\n });\n navigate(id.toString());\n }\n };\n\n return (\n <TableImpl.Root headers={headers} rows={sortedTokens} isLoading={isLoading}>\n <TableImpl.Content>\n <TableImpl.Head>\n {headers.map((header) => (\n <TableImpl.HeaderCell key={header.name} {...header} />\n ))}\n </TableImpl.Head>\n <TableImpl.Empty />\n <TableImpl.Loading />\n <TableImpl.Body>\n {sortedTokens.map((token) => {\n const GuidedTourTooltip =\n token.name === 'Read Only' ? tours.apiTokens.ManageAPIToken : React.Fragment;\n return (\n <TableImpl.Row key={token.id} onClick={handleRowClick(token.id)}>\n <TableImpl.Cell maxWidth=\"25rem\">\n <Typography textColor=\"neutral800\" fontWeight=\"bold\" ellipsis>\n {token.name}\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell maxWidth=\"25rem\">\n <Typography textColor=\"neutral800\" ellipsis>\n {token.description}\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell>\n <Typography textColor=\"neutral800\">\n {/* @ts-expect-error One of the tokens doesn't have createdAt */}\n <RelativeTime timestamp={new Date(token.createdAt)} />\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell>\n {token.lastUsedAt && (\n <Typography textColor=\"neutral800\">\n <RelativeTime\n timestamp={new Date(token.lastUsedAt)}\n customIntervals={[\n {\n unit: 'hours',\n threshold: 1,\n text: formatMessage({\n id: 'Settings.apiTokens.lastHour',\n defaultMessage: 'last hour',\n }),\n },\n ]}\n />\n </Typography>\n )}\n </TableImpl.Cell>\n {showOwner === true &&\n (() => {\n const apiToken = token as ApiToken;\n const owner = apiToken.kind === 'admin' ? apiToken.adminUserOwner : undefined;\n const ownerName =\n owner !== undefined && owner !== null && typeof owner === 'object'\n ? formatAdminUserName(owner)\n : '';\n return (\n <TableImpl.Cell maxWidth=\"20rem\">\n <Typography textColor=\"neutral800\" ellipsis>\n {ownerName}\n </Typography>\n </TableImpl.Cell>\n );\n })()}\n {canUpdate || canRead || canDelete ? (\n <TableImpl.Cell>\n <Flex justifyContent=\"end\">\n <GuidedTourTooltip>\n {canUpdate && <UpdateButton tokenName={token.name} tokenId={token.id} />}\n </GuidedTourTooltip>\n {canDelete && (\n <DeleteButton\n tokenName={token.name}\n onClickDelete={() => onConfirmDelete?.(token.id)}\n tokenType={tokenType}\n />\n )}\n </Flex>\n </TableImpl.Cell>\n ) : null}\n </TableImpl.Row>\n );\n })}\n </TableImpl.Body>\n </TableImpl.Content>\n </TableImpl.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CRUD Buttons\n * -----------------------------------------------------------------------------------------------*/\n\nconst MESSAGES_MAP = {\n edit: {\n id: 'app.component.table.edit',\n defaultMessage: 'Edit {target}',\n },\n read: {\n id: 'app.component.table.read',\n defaultMessage: 'Read {target}',\n },\n};\n\ninterface DefaultButtonProps {\n tokenName: string;\n tokenId: Data.ID;\n buttonType?: 'edit' | 'read';\n children: React.ReactNode;\n}\n\nconst DefaultButton = ({\n tokenName,\n tokenId,\n buttonType = 'edit',\n children,\n}: DefaultButtonProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <LinkButtonStyled\n tag={NavLink}\n to={tokenId.toString()}\n onClick={(e: React.MouseEvent) => e.stopPropagation()}\n title={formatMessage(MESSAGES_MAP[buttonType], { target: tokenName })}\n variant=\"ghost\"\n size=\"S\"\n >\n {children}\n </LinkButtonStyled>\n );\n};\n\nconst LinkButtonStyled = styled(LinkButton)`\n padding: 0.7rem;\n\n & > span {\n display: flex;\n }\n`;\n\ninterface DeleteButtonProps extends Pick<ButtonProps, 'tokenName'>, Pick<TableProps, 'tokenType'> {\n onClickDelete: () => void;\n}\n\nconst DeleteButton = ({ tokenName, onClickDelete, tokenType }: DeleteButtonProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const handleClickDelete = () => {\n trackUsage('willDeleteToken', {\n tokenType,\n });\n onClickDelete();\n };\n\n return (\n <Dialog.Root>\n <Box<'div'> paddingLeft={1} onClick={(e) => e.stopPropagation()}>\n <Dialog.Trigger>\n <IconButton\n label={formatMessage(\n {\n id: 'global.delete-target',\n defaultMessage: 'Delete {target}',\n },\n { target: `${tokenName}` }\n )}\n name=\"delete\"\n variant=\"ghost\"\n >\n <Trash />\n </IconButton>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleClickDelete} />\n </Box>\n </Dialog.Root>\n );\n};\n\ninterface ButtonProps {\n tokenName: string;\n tokenId: Data.ID;\n}\n\nconst UpdateButton = ({ tokenName, tokenId }: ButtonProps) => {\n return (\n <DefaultButton tokenName={tokenName} tokenId={tokenId}>\n <Pencil />\n </DefaultButton>\n );\n};\n\nexport { Table };\nexport type { TableProps };\n"],"names":["formatAdminUserName","owner","full","firstname","lastname","filter","Boolean","join","username","email","Table","permissions","headers","isLoading","tokens","onConfirmDelete","tokenType","showOwner","query","useQueryParams","formatMessage","locale","useIntl","sortOrder","sort","split","undefined","navigate","useNavigate","trackUsage","useTracking","formatter","useCollator","sortedTokens","a","b","compare","name","canDelete","canUpdate","canRead","handleRowClick","id","toString","_jsx","TableImpl","Root","rows","_jsxs","Content","Head","map","header","HeaderCell","Empty","Loading","Body","token","GuidedTourTooltip","tours","apiTokens","ManageAPIToken","React","Fragment","Row","onClick","Cell","maxWidth","Typography","textColor","fontWeight","ellipsis","description","RelativeTime","timestamp","Date","createdAt","lastUsedAt","customIntervals","unit","threshold","text","defaultMessage","apiToken","kind","adminUserOwner","ownerName","Flex","justifyContent","UpdateButton","tokenName","tokenId","DeleteButton","onClickDelete","MESSAGES_MAP","edit","read","DefaultButton","buttonType","children","LinkButtonStyled","tag","NavLink","to","e","stopPropagation","title","target","variant","size","styled","LinkButton","handleClickDelete","Dialog","Box","paddingLeft","Trigger","IconButton","label","Trash","ConfirmDialog","onConfirm","Pencil"],"mappings":"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"}
1
+ {"version":3,"file":"Table.js","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/Table.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n IconButton,\n Typography,\n useCollator,\n Dialog,\n LinkButton,\n} from '@strapi/design-system';\nimport { Pencil, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport { SanitizedTransferToken } from '../../../../../../shared/contracts/transfer';\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { tours } from '../../../../components/GuidedTour/Tours';\nimport { RelativeTime } from '../../../../components/RelativeTime';\nimport { Table as TableImpl } from '../../../../components/Table';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useQueryParams } from '../../../../hooks/useQueryParams';\n\nimport type { AdminTokenOwner } from '../../../../../../shared/contracts/shared';\nimport type { Data } from '@strapi/types';\n\nconst formatAdminUserName = (\n owner: Pick<AdminTokenOwner, 'firstname' | 'lastname' | 'email' | 'username'>\n): string => {\n const full = [owner.firstname, owner.lastname].filter(Boolean).join(' ');\n return full || owner.username || owner.email || '';\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Table\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TableProps\n extends Pick<TableImpl.Props<SanitizedTransferToken | ApiToken>, 'headers' | 'isLoading'> {\n onConfirmDelete: (id: Data.ID) => void;\n permissions: {\n canRead: boolean;\n canDelete: boolean;\n canUpdate: boolean;\n };\n tokens: SanitizedTransferToken[] | ApiToken[];\n tokenType: 'api-token' | 'transfer-token';\n showOwner?: boolean;\n}\n\nconst Table = ({\n permissions,\n headers = [],\n isLoading = false,\n tokens = [],\n onConfirmDelete,\n tokenType,\n showOwner = false,\n}: TableProps) => {\n const [{ query }] = useQueryParams<{ sort?: string }>();\n const { formatMessage, locale } = useIntl();\n const [, sortOrder] = query && query.sort ? query.sort.split(':') : [undefined, 'ASC'];\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const formatter = useCollator(locale);\n\n const sortedTokens = [...tokens].sort((a, b) => {\n return sortOrder === 'DESC'\n ? formatter.compare(b.name, a.name)\n : formatter.compare(a.name, b.name);\n });\n\n const { canDelete, canUpdate, canRead } = permissions;\n\n const handleRowClick = (id: Data.ID) => () => {\n if (canRead) {\n trackUsage('willEditTokenFromList', {\n tokenType,\n });\n navigate(id.toString());\n }\n };\n\n return (\n <TableImpl.Root headers={headers} rows={sortedTokens} isLoading={isLoading}>\n <TableImpl.Content>\n <TableImpl.Head>\n {headers.map((header) => (\n <TableImpl.HeaderCell key={header.name} {...header} />\n ))}\n </TableImpl.Head>\n <TableImpl.Empty />\n <TableImpl.Loading />\n <TableImpl.Body>\n {sortedTokens.map((token) => {\n const GuidedTourTooltip =\n token.name === 'Read Only' ? tours.apiTokens.ManageAPIToken : React.Fragment;\n return (\n <TableImpl.Row key={token.id} onClick={handleRowClick(token.id)}>\n <TableImpl.Cell maxWidth=\"25rem\">\n <Typography textColor=\"neutral800\" fontWeight=\"bold\" ellipsis>\n {token.name}\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell maxWidth=\"25rem\">\n <Typography textColor=\"neutral800\" ellipsis>\n {token.description}\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell>\n <Typography textColor=\"neutral800\">\n {/* @ts-expect-error One of the tokens doesn't have createdAt */}\n <RelativeTime timestamp={new Date(token.createdAt)} />\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell>\n {token.lastUsedAt && (\n <Typography textColor=\"neutral800\">\n <RelativeTime\n timestamp={new Date(token.lastUsedAt)}\n customIntervals={[\n {\n unit: 'hours',\n threshold: 1,\n text: formatMessage({\n id: 'Settings.apiTokens.lastHour',\n defaultMessage: 'last hour',\n }),\n },\n ]}\n />\n </Typography>\n )}\n </TableImpl.Cell>\n {showOwner === true &&\n (() => {\n const apiToken = token as ApiToken;\n const owner = apiToken.kind === 'admin' ? apiToken.adminUserOwner : undefined;\n const ownerName =\n owner !== undefined && owner !== null && typeof owner === 'object'\n ? formatAdminUserName(owner)\n : '';\n return (\n <TableImpl.Cell maxWidth=\"20rem\">\n <Typography textColor=\"neutral800\" ellipsis>\n {ownerName}\n </Typography>\n </TableImpl.Cell>\n );\n })()}\n {canUpdate || canRead || canDelete ? (\n <TableImpl.Cell>\n <Flex justifyContent=\"end\">\n <GuidedTourTooltip>\n {canUpdate && <UpdateButton tokenName={token.name} tokenId={token.id} />}\n </GuidedTourTooltip>\n {canDelete && (\n <DeleteButton\n tokenName={token.name}\n onClickDelete={() => onConfirmDelete?.(token.id)}\n tokenType={tokenType}\n />\n )}\n </Flex>\n </TableImpl.Cell>\n ) : null}\n </TableImpl.Row>\n );\n })}\n </TableImpl.Body>\n </TableImpl.Content>\n </TableImpl.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CRUD Buttons\n * -----------------------------------------------------------------------------------------------*/\n\nconst MESSAGES_MAP = {\n edit: {\n id: 'app.component.table.edit',\n defaultMessage: 'Edit {target}',\n },\n read: {\n id: 'app.component.table.read',\n defaultMessage: 'Read {target}',\n },\n};\n\ninterface DefaultButtonProps {\n tokenName: string;\n tokenId: Data.ID;\n buttonType?: 'edit' | 'read';\n children: React.ReactNode;\n}\n\nconst DefaultButton = ({\n tokenName,\n tokenId,\n buttonType = 'edit',\n children,\n}: DefaultButtonProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <LinkButtonStyled\n tag={NavLink}\n to={tokenId.toString()}\n onClick={(e: React.MouseEvent) => e.stopPropagation()}\n title={formatMessage(MESSAGES_MAP[buttonType], { target: tokenName })}\n variant=\"ghost\"\n size=\"S\"\n >\n {children}\n </LinkButtonStyled>\n );\n};\n\nconst LinkButtonStyled = styled(LinkButton)`\n padding: 0.7rem;\n\n & > span {\n display: flex;\n }\n`;\n\ninterface DeleteButtonProps extends Pick<ButtonProps, 'tokenName'>, Pick<TableProps, 'tokenType'> {\n onClickDelete: () => void;\n}\n\nconst DeleteButton = ({ tokenName, onClickDelete, tokenType }: DeleteButtonProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const handleClickDelete = () => {\n trackUsage('willDeleteToken', {\n tokenType,\n });\n onClickDelete();\n };\n\n return (\n <Dialog.Root>\n <Box<'div'> paddingLeft={1} onClick={(e) => e.stopPropagation()}>\n <Dialog.Trigger>\n <IconButton\n label={formatMessage(\n {\n id: 'global.delete-target',\n defaultMessage: 'Delete {target}',\n },\n { target: `${tokenName}` }\n )}\n name=\"delete\"\n variant=\"ghost\"\n >\n <Trash />\n </IconButton>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleClickDelete} />\n </Box>\n </Dialog.Root>\n );\n};\n\ninterface ButtonProps {\n tokenName: string;\n tokenId: Data.ID;\n}\n\nconst UpdateButton = ({ tokenName, tokenId }: ButtonProps) => {\n return (\n <DefaultButton tokenName={tokenName} tokenId={tokenId}>\n <Pencil />\n </DefaultButton>\n );\n};\n\nexport { Table };\nexport type { TableProps };\n"],"names":["formatAdminUserName","owner","full","firstname","lastname","filter","Boolean","join","username","email","Table","permissions","headers","isLoading","tokens","onConfirmDelete","tokenType","showOwner","query","useQueryParams","formatMessage","locale","useIntl","sortOrder","sort","split","undefined","navigate","useNavigate","trackUsage","useTracking","formatter","useCollator","sortedTokens","a","b","compare","name","canDelete","canUpdate","canRead","handleRowClick","id","toString","_jsx","TableImpl","Root","rows","_jsxs","Content","Head","map","header","HeaderCell","Empty","Loading","Body","token","GuidedTourTooltip","tours","apiTokens","ManageAPIToken","React","Fragment","Row","onClick","Cell","maxWidth","Typography","textColor","fontWeight","ellipsis","description","RelativeTime","timestamp","Date","createdAt","lastUsedAt","customIntervals","unit","threshold","text","defaultMessage","apiToken","kind","adminUserOwner","ownerName","Flex","justifyContent","UpdateButton","tokenName","tokenId","DeleteButton","onClickDelete","MESSAGES_MAP","edit","read","DefaultButton","buttonType","children","LinkButtonStyled","tag","NavLink","to","e","stopPropagation","title","target","variant","size","styled","LinkButton","handleClickDelete","Dialog","Box","paddingLeft","Trigger","IconButton","label","Trash","ConfirmDialog","onConfirm","Pencil"],"mappings":"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"}