@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":"Table.mjs","sources":["../../../../../admin/src/components/Table.tsx"],"sourcesContent":["/**\n * TODO: honestly, half of this stuff should come straight from\n * the design-system and then we can just wrap round the bits for\n * the i18n & router interactions.\n *\n * So we'll do that in v2 of the DS.\n */\n\nimport * as React from 'react';\n\nimport {\n Flex,\n Typography,\n Th,\n Tbody,\n Td,\n Tooltip,\n IconButton,\n Thead,\n Tr,\n RawTrProps,\n Checkbox,\n Loader,\n Table as DSTable,\n EmptyStateLayout,\n EmptyStateLayoutProps,\n TableProps,\n RawTdProps,\n} from '@strapi/design-system';\nimport { CaretDown } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useControllableState } from '../hooks/useControllableState';\nimport { useQueryParams } from '../hooks/useQueryParams';\n\nimport { createContext } from './Context';\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BaseRow {\n id: string | number;\n [key: string]: any;\n}\n\ninterface TableHeader<TData = object, THeader = object> {\n /**\n * Typically used by plugins to render a custom cell\n */\n cellFormatter?: (data: TData, header: Omit<THeader, 'cellFormatter'>) => React.ReactNode;\n label: string;\n name: string;\n searchable?: boolean;\n sortable?: boolean;\n}\n\ninterface TableContextValue<TRow extends BaseRow, THeader extends TableHeader<TRow, THeader>>\n extends Pick<TableProps, 'footer'> {\n colCount: number;\n hasHeaderCheckbox: boolean;\n headers: THeader[];\n isLoading: boolean;\n rowCount: number;\n rows: TRow[];\n setHasHeaderCheckbox: (value: boolean) => void;\n selectedRows: TRow[];\n selectRow: (row: TRow | TRow[]) => void;\n}\n\nconst [TableProvider, useTable] = createContext<TableContextValue<any, any>>('Table');\n\ninterface RootProps<TRow extends BaseRow, THeader extends TableHeader<TRow, THeader>>\n extends Partial<\n Pick<\n TableContextValue<TRow, THeader>,\n 'footer' | 'headers' | 'isLoading' | 'rows' | 'selectedRows'\n >\n > {\n children?: React.ReactNode;\n defaultSelectedRows?: TRow[];\n onSelectedRowsChange?: (selectedRows: TRow[]) => void;\n}\n\nconst Root = <TRow extends BaseRow, THeader extends TableHeader<TRow, THeader>>({\n children,\n defaultSelectedRows,\n footer,\n headers = [],\n isLoading = false,\n onSelectedRowsChange,\n rows = [],\n selectedRows: selectedRowsProps,\n}: RootProps<TRow, THeader>) => {\n const [selectedRows = [], setSelectedRows] = useControllableState({\n prop: selectedRowsProps,\n defaultProp: defaultSelectedRows,\n onChange: onSelectedRowsChange,\n });\n const [hasHeaderCheckbox, setHasHeaderCheckbox] = React.useState(false);\n\n const rowCount = rows.length + 1;\n const colCount = hasHeaderCheckbox ? headers.length + 1 : headers.length;\n\n const selectRow: TableContextValue<TRow, THeader>['selectRow'] = (row) => {\n if (Array.isArray(row)) {\n setSelectedRows(row);\n } else {\n setSelectedRows((prev = []) => {\n const currentRowIndex = prev.findIndex((r) => r.id === row.id);\n if (currentRowIndex > -1) {\n return prev.toSpliced(currentRowIndex, 1);\n }\n\n return [...prev, row];\n });\n }\n };\n\n return (\n <TableProvider\n colCount={colCount}\n hasHeaderCheckbox={hasHeaderCheckbox}\n setHasHeaderCheckbox={setHasHeaderCheckbox}\n footer={footer}\n headers={headers}\n isLoading={isLoading}\n rowCount={rowCount}\n rows={rows}\n selectedRows={selectedRows}\n selectRow={selectRow}\n >\n {children}\n </TableProvider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Content\n * -----------------------------------------------------------------------------------------------*/\n\nconst Content = ({ children }: Table.ContentProps) => {\n const rowCount = useTable('Content', (state) => state.rowCount);\n const colCount = useTable('Content', (state) => state.colCount);\n const footer = useTable('Content', (state) => state.footer);\n\n return (\n <DSTable rowCount={rowCount} colCount={colCount} footer={footer}>\n {children}\n </DSTable>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Head\n * -----------------------------------------------------------------------------------------------*/\n\nconst Head = ({ children }: Table.HeadProps) => {\n return (\n <Thead>\n <Tr>{children}</Tr>\n </Thead>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCell\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @description A header cell in your table, internally will set the query params for sorting to\n * be passed to your data-fetching function.\n */\nconst HeaderCell = <TData, THead>({ name, label, sortable }: TableHeader<TData, THead>) => {\n const [{ query }, setQuery] = useQueryParams<{ sort?: `${string}:${'ASC' | 'DESC'}` }>();\n const sort = query?.sort ?? '';\n const [sortBy, sortOrder] = sort.split(':');\n const { formatMessage } = useIntl();\n const isSorted = sortBy === name;\n\n const sortLabel = formatMessage(\n {\n id: 'components.TableHeader.sort',\n defaultMessage: 'Sort on {label}',\n },\n { label }\n );\n\n const handleClickSort = () => {\n if (sortable) {\n setQuery(\n {\n sort: `${name}:${isSorted && sortOrder === 'ASC' ? 'DESC' : 'ASC'}`,\n },\n 'push',\n true\n );\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (sortable && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n handleClickSort();\n }\n };\n\n return (\n <SortableTh\n onClick={sortable ? handleClickSort : undefined}\n onKeyDown={sortable ? handleKeyDown : undefined}\n tabIndex={sortable ? 0 : undefined}\n aria-sort={isSorted ? (sortOrder === 'ASC' ? 'ascending' : 'descending') : undefined}\n $sortable={!!sortable}\n >\n <Tooltip label={sortable ? sortLabel : label}>\n <Flex gap={1}>\n <Typography textColor=\"neutral600\" tag=\"span\" variant=\"sigma\">\n {label}\n </Typography>\n {isSorted && sortable && <SortIcon $isUp={sortOrder === 'ASC'} />}\n </Flex>\n </Tooltip>\n </SortableTh>\n );\n};\n\nconst SortableTh = styled(Th)<{ $sortable: boolean }>`\n cursor: ${({ $sortable }) => ($sortable ? 'pointer' : 'default')};\n`;\n\nconst SortIcon = styled(CaretDown)<{\n $isUp: boolean;\n}>`\n transform: ${({ $isUp }) => `rotate(${$isUp ? '180' : '0'}deg)`};\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ActionBar\n * -----------------------------------------------------------------------------------------------*/\n\nconst ActionBar = ({ children }: Table.ActionBarProps) => {\n const { formatMessage } = useIntl();\n const selectedRows = useTable('ActionBar', (state) => state.selectedRows);\n\n if (selectedRows.length === 0) return null;\n\n return (\n <Flex gap={2}>\n <Typography variant=\"omega\" textColor=\"neutral500\">\n {formatMessage(\n {\n id: 'content-manager.components.TableDelete.label',\n defaultMessage: '{number, plural, one {# row} other {# rows}} selected',\n },\n { number: selectedRows.length }\n )}\n </Typography>\n {children}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCheckboxCell\n * -----------------------------------------------------------------------------------------------*/\n\nconst HeaderCheckboxCell = () => {\n const rows = useTable('HeaderCheckboxCell', (state) => state.rows);\n const selectedRows = useTable('HeaderCheckboxCell', (state) => state.selectedRows);\n const selectRow = useTable('HeaderCheckboxCell', (state) => state.selectRow);\n const setHasHeaderCheckbox = useTable(\n 'HeaderCheckboxCell',\n (state) => state.setHasHeaderCheckbox\n );\n\n const { formatMessage } = useIntl();\n\n const areAllEntriesSelected = selectedRows.length === rows.length && rows.length > 0;\n const isIndeterminate = !areAllEntriesSelected && selectedRows.length > 0;\n\n React.useEffect(() => {\n setHasHeaderCheckbox(true);\n\n return () => setHasHeaderCheckbox(false);\n }, [setHasHeaderCheckbox]);\n\n const handleSelectAll = () => {\n if (!areAllEntriesSelected) {\n selectRow(rows);\n } else {\n selectRow([]);\n }\n };\n\n return (\n <Th>\n <Checkbox\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n disabled={rows.length === 0}\n checked={isIndeterminate ? 'indeterminate' : areAllEntriesSelected}\n onCheckedChange={handleSelectAll}\n />\n </Th>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Empty\n * -----------------------------------------------------------------------------------------------*/\n\nconst Empty = (props: Table.EmptyProps) => {\n const { formatMessage } = useIntl();\n\n const rows = useTable('Empty', (state) => state.rows);\n const isLoading = useTable('Empty', (state) => state.isLoading);\n const colCount = useTable('Empty', (state) => state.colCount);\n\n /**\n * If we're loading or we have some data, we don't show the empty state.\n */\n if (rows.length > 0 || isLoading) {\n return null;\n }\n\n return (\n <Tbody>\n <Tr>\n <Td colSpan={colCount}>\n <EmptyStateLayout\n content={formatMessage({\n id: 'app.components.EmptyStateLayout.content-document',\n defaultMessage: 'No content found',\n })}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n {...props}\n />\n </Td>\n </Tr>\n </Tbody>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * LoadingBody\n * -----------------------------------------------------------------------------------------------*/\n\nconst Loading = ({ children = 'Loading content' }: Table.LoadingProps) => {\n const isLoading = useTable('Loading', (state) => state.isLoading);\n const colCount = useTable('Loading', (state) => state.colCount);\n\n if (!isLoading) {\n return null;\n }\n\n return (\n <Tbody>\n <Tr>\n <Td colSpan={colCount}>\n <Flex justifyContent=\"center\" padding={11} background=\"neutral0\">\n <Loader>{children}</Loader>\n </Flex>\n </Td>\n </Tr>\n </Tbody>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Body\n * -----------------------------------------------------------------------------------------------*/\n\nconst Body = ({ children }: Table.BodyProps) => {\n const isLoading = useTable('Body', (state) => state.isLoading);\n const rows = useTable('Body', (state) => state.rows);\n\n if (isLoading || rows.length === 0) {\n return null;\n }\n\n return <Tbody>{children}</Tbody>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\nconst Row = (props: Table.RowProps) => {\n return <Tr {...props} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Cell\n * -----------------------------------------------------------------------------------------------*/\nconst Cell = (props: Table.CellProps) => {\n return <Td {...props} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\nconst CheckboxCell = ({ id, ...props }: Table.CheckboxCellProps) => {\n const rows = useTable('CheckboxCell', (state) => state.rows);\n const selectedRows = useTable('CheckboxCell', (state) => state.selectedRows);\n const selectRow = useTable('CheckboxCell', (state) => state.selectRow);\n\n const { formatMessage } = useIntl();\n\n const handleSelectRow = () => {\n selectRow(rows.find((row) => row.id === id));\n };\n\n const isChecked = selectedRows.findIndex((row) => row.id === id) > -1;\n\n return (\n <Cell {...props} onClick={(e) => e.stopPropagation()}>\n <Checkbox\n aria-label={formatMessage(\n {\n id: 'app.component.table.select.one-entry',\n defaultMessage: `Select {target}`,\n },\n { target: id }\n )}\n disabled={rows.length === 0}\n checked={isChecked}\n onCheckedChange={handleSelectRow}\n />\n </Cell>\n );\n};\n/* -------------------------------------------------------------------------------------------------\n * Exports\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @alpha we may move this component to the design-system.\n * @public\n * @description A generic table component composition. Internally handles the state of the table\n * such as selected rows, loading state, and more assuming the correct pieces are put togther.\n * @example\n * ```tsx\n * interace Data {\n * id: string;\n * name: string;\n * email: string;\n * }\n *\n * const ListView = () => {\n * const { data, isLoading } = useGetData<Data>();\n *\n * const headers: Table.Header<Data>[] = [\n * {\n * label: 'Name',\n * name: 'name',\n * sortable: true,\n * },\n * {\n * label: 'Email',\n * name: 'email',\n * sortable: true,\n * },\n * ];\n *\n * return (\n * <Table.Root rows={data} headers={headers} isLoading={isLoading}>\n * <Table.Content>\n * <Table.Head>\n * {headers.map((head) => (\n * <Table.HeaderCell key={head.name} {...head} />\n * ))}\n * </Table.Head>\n * <Table.Body>\n * <Table.Loading />\n * <Table.Empty />\n * {data.map((row) => (\n * <Table.Row key={row.id}>\n * <Table.Cell>{row.name}</Table.Cell>\n * <Table.Cell>{row.email}</Table.Cell>\n * </Table.Row>\n * ))}\n * </Table.Body>\n * </Table.Content>\n * </Table.Root>\n * );\n * };\n * ```\n */\nconst Table = {\n Root,\n Content,\n ActionBar,\n Head,\n HeaderCell,\n HeaderCheckboxCell,\n Body,\n CheckboxCell,\n Cell,\n Row,\n Loading,\n Empty,\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Table {\n export type Props<\n TData extends BaseRow,\n THeader extends TableHeader<TData, THeader> = TableHeader<TData, TableHeader>,\n > = RootProps<TData, THeader>;\n export interface ActionBarProps {\n children?: React.ReactNode;\n }\n\n export interface ContentProps {\n children: React.ReactNode;\n }\n\n export type Header<TData, THeader> = TableHeader<TData, THeader>;\n\n export interface HeadProps {\n children: React.ReactNode;\n }\n\n export interface EmptyProps extends Partial<EmptyStateLayoutProps> {}\n\n export interface LoadingProps {\n children?: React.ReactNode;\n }\n\n export interface BodyProps {\n children: React.ReactNode;\n }\n\n export interface RowProps extends RawTrProps {}\n\n export interface CellProps extends RawTdProps {}\n\n export interface CheckboxCellProps extends Pick<BaseRow, 'id'>, Omit<RawTdProps, 'id'> {}\n}\n\nexport { Table, useTable };\n"],"names":["TableProvider","useTable","createContext","Root","children","defaultSelectedRows","footer","headers","isLoading","onSelectedRowsChange","rows","selectedRows","selectedRowsProps","setSelectedRows","useControllableState","prop","defaultProp","onChange","hasHeaderCheckbox","setHasHeaderCheckbox","React","useState","rowCount","length","colCount","selectRow","row","Array","isArray","prev","currentRowIndex","findIndex","r","id","toSpliced","_jsx","Content","state","DSTable","Head","Thead","Tr","HeaderCell","name","label","sortable","query","setQuery","useQueryParams","sort","sortBy","sortOrder","split","formatMessage","useIntl","isSorted","sortLabel","defaultMessage","handleClickSort","handleKeyDown","e","key","preventDefault","SortableTh","onClick","undefined","onKeyDown","tabIndex","aria-sort","$sortable","Tooltip","_jsxs","Flex","gap","Typography","textColor","tag","variant","SortIcon","$isUp","styled","Th","CaretDown","ActionBar","number","HeaderCheckboxCell","areAllEntriesSelected","isIndeterminate","useEffect","handleSelectAll","Checkbox","aria-label","disabled","checked","onCheckedChange","Empty","props","Tbody","Td","colSpan","EmptyStateLayout","content","hasRadius","icon","EmptyDocuments","width","Loading","justifyContent","padding","background","Loader","Body","Row","Cell","CheckboxCell","handleSelectRow","find","isChecked","stopPropagation","target","Table"],"mappings":"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"}
1
+ {"version":3,"file":"Table.mjs","sources":["../../../../../admin/src/components/Table.tsx"],"sourcesContent":["/**\n * TODO: honestly, half of this stuff should come straight from\n * the design-system and then we can just wrap round the bits for\n * the i18n & router interactions.\n *\n * So we'll do that in v2 of the DS.\n */\n\nimport * as React from 'react';\n\nimport {\n Flex,\n Typography,\n Th,\n Tbody,\n Td,\n Tooltip,\n Thead,\n Tr,\n RawTrProps,\n Checkbox,\n Loader,\n Table as DSTable,\n EmptyStateLayout,\n EmptyStateLayoutProps,\n TableProps,\n RawTdProps,\n} from '@strapi/design-system';\nimport { CaretDown } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useControllableState } from '../hooks/useControllableState';\nimport { useQueryParams } from '../hooks/useQueryParams';\n\nimport { createContext } from './Context';\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BaseRow {\n id: string | number;\n}\n\ninterface TableHeader<TData = object, THeader = object> {\n /**\n * Typically used by plugins to render a custom cell\n */\n cellFormatter?: (data: TData, header: Omit<THeader, 'cellFormatter'>) => React.ReactNode;\n label: string;\n name: string;\n searchable?: boolean;\n sortable?: boolean;\n}\n\ninterface TableContextValue<TRow extends BaseRow, THeader extends TableHeader<TRow, THeader>>\n extends Pick<TableProps, 'footer'> {\n colCount: number;\n hasHeaderCheckbox: boolean;\n headers: THeader[];\n isLoading: boolean;\n rowCount: number;\n rows: TRow[];\n setHasHeaderCheckbox: (value: boolean) => void;\n selectedRows: TRow[];\n selectRow: (row: TRow | TRow[]) => void;\n}\n\ntype DefaultTableHeader = TableHeader<BaseRow, object>;\ntype DefaultTableContextValue = TableContextValue<BaseRow, DefaultTableHeader>;\n\nconst [TableProvider, useTable] = createContext<DefaultTableContextValue>('Table');\n\nconst GenericTableProvider = TableProvider as <\n TRow extends BaseRow,\n THeader extends TableHeader<TRow, THeader>,\n>(\n props: TableContextValue<TRow, THeader> & { children?: React.ReactNode }\n) => React.ReactElement;\n\ninterface RootProps<TRow extends BaseRow, THeader extends TableHeader<TRow, THeader>>\n extends Partial<\n Pick<\n TableContextValue<TRow, THeader>,\n 'footer' | 'headers' | 'isLoading' | 'rows' | 'selectedRows'\n >\n > {\n children?: React.ReactNode;\n defaultSelectedRows?: TRow[];\n onSelectedRowsChange?: (selectedRows: TRow[]) => void;\n}\n\nconst Root = <TRow extends BaseRow, THeader extends TableHeader<TRow, THeader>>({\n children,\n defaultSelectedRows,\n footer,\n headers = [],\n isLoading = false,\n onSelectedRowsChange,\n rows = [],\n selectedRows: selectedRowsProps,\n}: RootProps<TRow, THeader>) => {\n const [selectedRows = [], setSelectedRows] = useControllableState({\n prop: selectedRowsProps,\n defaultProp: defaultSelectedRows,\n onChange: onSelectedRowsChange,\n });\n const [hasHeaderCheckbox, setHasHeaderCheckbox] = React.useState(false);\n\n const rowCount = rows.length + 1;\n const colCount = hasHeaderCheckbox ? headers.length + 1 : headers.length;\n\n const selectRow: TableContextValue<TRow, THeader>['selectRow'] = (row) => {\n if (Array.isArray(row)) {\n setSelectedRows(row);\n } else {\n setSelectedRows((prev = []) => {\n const currentRowIndex = prev.findIndex((r) => r.id === row.id);\n if (currentRowIndex > -1) {\n return prev.toSpliced(currentRowIndex, 1);\n }\n\n return [...prev, row];\n });\n }\n };\n\n return (\n <GenericTableProvider\n colCount={colCount}\n hasHeaderCheckbox={hasHeaderCheckbox}\n setHasHeaderCheckbox={setHasHeaderCheckbox}\n footer={footer}\n headers={headers}\n isLoading={isLoading}\n rowCount={rowCount}\n rows={rows}\n selectedRows={selectedRows}\n selectRow={selectRow}\n >\n {children}\n </GenericTableProvider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Content\n * -----------------------------------------------------------------------------------------------*/\n\nconst Content = ({ children }: Table.ContentProps) => {\n const rowCount = useTable('Content', (state) => state.rowCount);\n const colCount = useTable('Content', (state) => state.colCount);\n const footer = useTable('Content', (state) => state.footer);\n\n return (\n <DSTable rowCount={rowCount} colCount={colCount} footer={footer}>\n {children}\n </DSTable>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Head\n * -----------------------------------------------------------------------------------------------*/\n\nconst Head = ({ children }: Table.HeadProps) => {\n return (\n <Thead>\n <Tr>{children}</Tr>\n </Thead>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCell\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @description A header cell in your table, internally will set the query params for sorting to\n * be passed to your data-fetching function.\n */\nconst HeaderCell = <TData, THead>({ name, label, sortable }: TableHeader<TData, THead>) => {\n const [{ query }, setQuery] = useQueryParams<{ sort?: `${string}:${'ASC' | 'DESC'}` }>();\n const sort = query?.sort ?? '';\n const [sortBy, sortOrder] = sort.split(':');\n const { formatMessage } = useIntl();\n const isSorted = sortBy === name;\n\n const sortLabel = formatMessage(\n {\n id: 'components.TableHeader.sort',\n defaultMessage: 'Sort on {label}',\n },\n { label }\n );\n\n const handleClickSort = () => {\n if (sortable) {\n setQuery(\n {\n sort: `${name}:${isSorted && sortOrder === 'ASC' ? 'DESC' : 'ASC'}`,\n },\n 'push',\n true\n );\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (sortable && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n handleClickSort();\n }\n };\n\n return (\n <SortableTh\n onClick={sortable ? handleClickSort : undefined}\n onKeyDown={sortable ? handleKeyDown : undefined}\n tabIndex={sortable ? 0 : undefined}\n aria-sort={isSorted ? (sortOrder === 'ASC' ? 'ascending' : 'descending') : undefined}\n $sortable={!!sortable}\n >\n <Tooltip label={sortable ? sortLabel : label}>\n <Flex gap={1}>\n <Typography textColor=\"neutral600\" tag=\"span\" variant=\"sigma\">\n {label}\n </Typography>\n {isSorted && sortable && <SortIcon $isUp={sortOrder === 'ASC'} />}\n </Flex>\n </Tooltip>\n </SortableTh>\n );\n};\n\nconst SortableTh = styled(Th)<{ $sortable: boolean }>`\n cursor: ${({ $sortable }) => ($sortable ? 'pointer' : 'default')};\n`;\n\nconst SortIcon = styled(CaretDown)<{\n $isUp: boolean;\n}>`\n transform: ${({ $isUp }) => `rotate(${$isUp ? '180' : '0'}deg)`};\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ActionBar\n * -----------------------------------------------------------------------------------------------*/\n\nconst ActionBar = ({ children }: Table.ActionBarProps) => {\n const { formatMessage } = useIntl();\n const selectedRows = useTable('ActionBar', (state) => state.selectedRows);\n\n if (selectedRows.length === 0) return null;\n\n return (\n <Flex gap={2}>\n <Typography variant=\"omega\" textColor=\"neutral500\">\n {formatMessage(\n {\n id: 'content-manager.components.TableDelete.label',\n defaultMessage: '{number, plural, one {# row} other {# rows}} selected',\n },\n { number: selectedRows.length }\n )}\n </Typography>\n {children}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCheckboxCell\n * -----------------------------------------------------------------------------------------------*/\n\nconst HeaderCheckboxCell = () => {\n const rows = useTable('HeaderCheckboxCell', (state) => state.rows);\n const selectedRows = useTable('HeaderCheckboxCell', (state) => state.selectedRows);\n const selectRow = useTable('HeaderCheckboxCell', (state) => state.selectRow);\n const setHasHeaderCheckbox = useTable(\n 'HeaderCheckboxCell',\n (state) => state.setHasHeaderCheckbox\n );\n\n const { formatMessage } = useIntl();\n\n const areAllEntriesSelected = selectedRows.length === rows.length && rows.length > 0;\n const isIndeterminate = !areAllEntriesSelected && selectedRows.length > 0;\n\n React.useEffect(() => {\n setHasHeaderCheckbox(true);\n\n return () => setHasHeaderCheckbox(false);\n }, [setHasHeaderCheckbox]);\n\n const handleSelectAll = () => {\n if (!areAllEntriesSelected) {\n selectRow(rows);\n } else {\n selectRow([]);\n }\n };\n\n return (\n <Th>\n <Checkbox\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n disabled={rows.length === 0}\n checked={isIndeterminate ? 'indeterminate' : areAllEntriesSelected}\n onCheckedChange={handleSelectAll}\n />\n </Th>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Empty\n * -----------------------------------------------------------------------------------------------*/\n\nconst Empty = (props: Table.EmptyProps) => {\n const { formatMessage } = useIntl();\n\n const rows = useTable('Empty', (state) => state.rows);\n const isLoading = useTable('Empty', (state) => state.isLoading);\n const colCount = useTable('Empty', (state) => state.colCount);\n\n /**\n * If we're loading or we have some data, we don't show the empty state.\n */\n if (rows.length > 0 || isLoading) {\n return null;\n }\n\n return (\n <Tbody>\n <Tr>\n <Td colSpan={colCount}>\n <EmptyStateLayout\n content={formatMessage({\n id: 'app.components.EmptyStateLayout.content-document',\n defaultMessage: 'No content found',\n })}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n {...props}\n />\n </Td>\n </Tr>\n </Tbody>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * LoadingBody\n * -----------------------------------------------------------------------------------------------*/\n\nconst Loading = ({ children = 'Loading content' }: Table.LoadingProps) => {\n const isLoading = useTable('Loading', (state) => state.isLoading);\n const colCount = useTable('Loading', (state) => state.colCount);\n\n if (!isLoading) {\n return null;\n }\n\n return (\n <Tbody>\n <Tr>\n <Td colSpan={colCount}>\n <Flex justifyContent=\"center\" padding={11} background=\"neutral0\">\n <Loader>{children}</Loader>\n </Flex>\n </Td>\n </Tr>\n </Tbody>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Body\n * -----------------------------------------------------------------------------------------------*/\n\nconst Body = ({ children }: Table.BodyProps) => {\n const isLoading = useTable('Body', (state) => state.isLoading);\n const rows = useTable('Body', (state) => state.rows);\n\n if (isLoading || rows.length === 0) {\n return null;\n }\n\n return <Tbody>{children}</Tbody>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\nconst Row = (props: Table.RowProps) => {\n return <Tr {...props} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Cell\n * -----------------------------------------------------------------------------------------------*/\nconst Cell = (props: Table.CellProps) => {\n return <Td {...props} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\nconst CheckboxCell = ({ id, ...props }: Table.CheckboxCellProps) => {\n const rows = useTable('CheckboxCell', (state) => state.rows);\n const selectedRows = useTable('CheckboxCell', (state) => state.selectedRows);\n const selectRow = useTable('CheckboxCell', (state) => state.selectRow);\n\n const { formatMessage } = useIntl();\n\n const handleSelectRow = () => {\n const row = rows.find((row) => row.id === id);\n\n if (row !== undefined) {\n selectRow(row);\n }\n };\n\n const isChecked = selectedRows.findIndex((row) => row.id === id) > -1;\n\n return (\n <Cell {...props} onClick={(e) => e.stopPropagation()}>\n <Checkbox\n aria-label={formatMessage(\n {\n id: 'app.component.table.select.one-entry',\n defaultMessage: `Select {target}`,\n },\n { target: id }\n )}\n disabled={rows.length === 0}\n checked={isChecked}\n onCheckedChange={handleSelectRow}\n />\n </Cell>\n );\n};\n/* -------------------------------------------------------------------------------------------------\n * Exports\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @alpha we may move this component to the design-system.\n * @public\n * @description A generic table component composition. Internally handles the state of the table\n * such as selected rows, loading state, and more assuming the correct pieces are put togther.\n * @example\n * ```tsx\n * interace Data {\n * id: string;\n * name: string;\n * email: string;\n * }\n *\n * const ListView = () => {\n * const { data, isLoading } = useGetData<Data>();\n *\n * const headers: Table.Header<Data>[] = [\n * {\n * label: 'Name',\n * name: 'name',\n * sortable: true,\n * },\n * {\n * label: 'Email',\n * name: 'email',\n * sortable: true,\n * },\n * ];\n *\n * return (\n * <Table.Root rows={data} headers={headers} isLoading={isLoading}>\n * <Table.Content>\n * <Table.Head>\n * {headers.map((head) => (\n * <Table.HeaderCell key={head.name} {...head} />\n * ))}\n * </Table.Head>\n * <Table.Body>\n * <Table.Loading />\n * <Table.Empty />\n * {data.map((row) => (\n * <Table.Row key={row.id}>\n * <Table.Cell>{row.name}</Table.Cell>\n * <Table.Cell>{row.email}</Table.Cell>\n * </Table.Row>\n * ))}\n * </Table.Body>\n * </Table.Content>\n * </Table.Root>\n * );\n * };\n * ```\n */\nconst Table = {\n Root,\n Content,\n ActionBar,\n Head,\n HeaderCell,\n HeaderCheckboxCell,\n Body,\n CheckboxCell,\n Cell,\n Row,\n Loading,\n Empty,\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Table {\n export type Props<\n TData extends BaseRow,\n THeader extends TableHeader<TData, THeader> = TableHeader<TData, TableHeader>,\n > = RootProps<TData, THeader>;\n export interface ActionBarProps {\n children?: React.ReactNode;\n }\n\n export interface ContentProps {\n children: React.ReactNode;\n }\n\n export type Header<TData, THeader> = TableHeader<TData, THeader>;\n\n export interface HeadProps {\n children: React.ReactNode;\n }\n\n export interface EmptyProps extends Partial<EmptyStateLayoutProps> {}\n\n export interface LoadingProps {\n children?: React.ReactNode;\n }\n\n export interface BodyProps {\n children: React.ReactNode;\n }\n\n export interface RowProps extends RawTrProps {}\n\n export interface CellProps extends RawTdProps {}\n\n export interface CheckboxCellProps extends Pick<BaseRow, 'id'>, Omit<RawTdProps, 'id'> {}\n}\n\nexport { Table, useTable };\n"],"names":["TableProvider","useTable","createContext","GenericTableProvider","Root","children","defaultSelectedRows","footer","headers","isLoading","onSelectedRowsChange","rows","selectedRows","selectedRowsProps","setSelectedRows","useControllableState","prop","defaultProp","onChange","hasHeaderCheckbox","setHasHeaderCheckbox","React","useState","rowCount","length","colCount","selectRow","row","Array","isArray","prev","currentRowIndex","findIndex","r","id","toSpliced","_jsx","Content","state","DSTable","Head","Thead","Tr","HeaderCell","name","label","sortable","query","setQuery","useQueryParams","sort","sortBy","sortOrder","split","formatMessage","useIntl","isSorted","sortLabel","defaultMessage","handleClickSort","handleKeyDown","e","key","preventDefault","SortableTh","onClick","undefined","onKeyDown","tabIndex","aria-sort","$sortable","Tooltip","_jsxs","Flex","gap","Typography","textColor","tag","variant","SortIcon","$isUp","styled","Th","CaretDown","ActionBar","number","HeaderCheckboxCell","areAllEntriesSelected","isIndeterminate","useEffect","handleSelectAll","Checkbox","aria-label","disabled","checked","onCheckedChange","Empty","props","Tbody","Td","colSpan","EmptyStateLayout","content","hasRadius","icon","EmptyDocuments","width","Loading","justifyContent","padding","background","Loader","Body","Row","Cell","CheckboxCell","handleSelectRow","find","isChecked","stopPropagation","target","Table"],"mappings":"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"}
@@ -5,7 +5,7 @@ var React = require('react');
5
5
  var designSystem = require('@strapi/design-system');
6
6
  var reactIntl = require('react-intl');
7
7
  var reactRedux = require('react-redux');
8
- var styled = require('styled-components');
8
+ var styledComponents = require('styled-components');
9
9
  var hooks = require('../core/store/hooks.js');
10
10
  var reducer = require('../reducer.js');
11
11
 
@@ -77,7 +77,7 @@ const Theme = ({ children, themes })=>{
77
77
  ]
78
78
  });
79
79
  };
80
- const GlobalStyle = styled.createGlobalStyle`
80
+ const GlobalStyle = styledComponents.createGlobalStyle`
81
81
  body {
82
82
  background: ${({ theme })=>theme.colors.neutral100};
83
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Theme.js","sources":["../../../../../admin/src/components/Theme.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { DesignSystemProvider } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useDispatch } from 'react-redux';\nimport { type DefaultTheme, createGlobalStyle } from 'styled-components';\n\nimport { useTypedSelector } from '../core/store/hooks';\nimport { setAvailableThemes } from '../reducer';\n\ninterface ThemeProps {\n children: React.ReactNode;\n themes: {\n dark: DefaultTheme;\n light: DefaultTheme;\n };\n}\n\nconst Theme = ({ children, themes }: ThemeProps) => {\n const { currentTheme } = useTypedSelector((state) => state.admin_app.theme);\n const [systemTheme, setSystemTheme] = React.useState<'light' | 'dark'>();\n const { locale } = useIntl();\n const dispatch = useDispatch();\n const isIos =\n ['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'].includes(\n navigator.platform\n ) ||\n (navigator.userAgent.includes('Mac') && 'ontouchend' in document);\n\n // Listen to changes in the system theme\n React.useEffect(() => {\n const themeWatcher = window.matchMedia('(prefers-color-scheme: dark)');\n setSystemTheme(themeWatcher.matches ? 'dark' : 'light');\n\n const listener = (event: MediaQueryListEvent) => {\n setSystemTheme(event.matches ? 'dark' : 'light');\n };\n themeWatcher.addEventListener('change', listener);\n\n // Remove listener on cleanup\n return () => {\n themeWatcher.removeEventListener('change', listener);\n };\n }, []);\n\n React.useEffect(() => {\n dispatch(setAvailableThemes(Object.keys(themes)));\n }, [dispatch, themes]);\n\n const computedThemeName = currentTheme === 'system' ? systemTheme : currentTheme;\n\n return (\n <DesignSystemProvider\n locale={locale}\n /**\n * TODO: could we make this neater i.e. by setting up the context to throw\n * if it can't find it, that way the type is always fully defined and we're\n * not checking it all the time...\n */\n theme={themes?.[computedThemeName || 'light']}\n >\n {children}\n <GlobalStyle $shouldOverrideInputFontSize={isIos} />\n </DesignSystemProvider>\n );\n};\n\nconst GlobalStyle = createGlobalStyle<{ $shouldOverrideInputFontSize: boolean }>`\n body {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n\n // Temporary fix override to fix iOS zoom due to the 14px input font size\n ${({ $shouldOverrideInputFontSize }) =>\n $shouldOverrideInputFontSize\n ? `\n input[type=\"color\"],\n input[type=\"date\"],\n input[type=\"datetime\"],\n input[type=\"datetime-local\"],\n input[type=\"email\"],\n input[type=\"month\"],\n input[type=\"number\"],\n input[type=\"password\"],\n input[type=\"search\"],\n input[type=\"tel\"],\n input[type=\"text\"],\n input[type=\"time\"],\n input[type=\"url\"],\n input[type=\"week\"],\n select:focus,\n textarea {\n font-size: 16px !important;\n line-height: 2.4rem !important;\n }\n `\n : undefined}\n`;\n\nexport { Theme };\nexport type { ThemeProps };\n"],"names":["Theme","children","themes","currentTheme","useTypedSelector","state","admin_app","theme","systemTheme","setSystemTheme","React","useState","locale","useIntl","dispatch","useDispatch","isIos","includes","navigator","platform","userAgent","document","useEffect","themeWatcher","window","matchMedia","matches","listener","event","addEventListener","removeEventListener","setAvailableThemes","Object","keys","computedThemeName","_jsxs","DesignSystemProvider","_jsx","GlobalStyle","$shouldOverrideInputFontSize","createGlobalStyle","colors","neutral100","undefined"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,MAAMA,QAAQ,CAAC,EAAEC,QAAQ,EAAEC,MAAM,EAAc,GAAA;IAC7C,MAAM,EAAEC,YAAY,EAAE,GAAGC,sBAAAA,CAAiB,CAACC,KAAAA,GAAUA,KAAAA,CAAMC,SAAS,CAACC,KAAK,CAAA;AAC1E,IAAA,MAAM,CAACC,WAAAA,EAAaC,cAAAA,CAAe,GAAGC,iBAAMC,QAAQ,EAAA;IACpD,MAAM,EAAEC,MAAM,EAAE,GAAGC,iBAAAA,EAAAA;AACnB,IAAA,MAAMC,QAAAA,GAAWC,sBAAAA,EAAAA;AACjB,IAAA,MAAMC,KAAAA,GACJ;AAAC,QAAA,gBAAA;AAAkB,QAAA,kBAAA;AAAoB,QAAA,gBAAA;AAAkB,QAAA,MAAA;AAAQ,QAAA,QAAA;AAAU,QAAA;KAAO,CAACC,QAAQ,CACzFC,SAAAA,CAAUC,QAAQ,CAAA,IAEnBD,SAAAA,CAAUE,SAAS,CAACH,QAAQ,CAAC,KAAA,CAAA,IAAU,YAAA,IAAgBI,QAAAA;;AAG1DX,IAAAA,gBAAAA,CAAMY,SAAS,CAAC,IAAA;QACd,MAAMC,YAAAA,GAAeC,MAAAA,CAAOC,UAAU,CAAC,8BAAA,CAAA;QACvChB,cAAAA,CAAec,YAAAA,CAAaG,OAAO,GAAG,MAAA,GAAS,OAAA,CAAA;AAE/C,QAAA,MAAMC,WAAW,CAACC,KAAAA,GAAAA;YAChBnB,cAAAA,CAAemB,KAAAA,CAAMF,OAAO,GAAG,MAAA,GAAS,OAAA,CAAA;AAC1C,QAAA,CAAA;QACAH,YAAAA,CAAaM,gBAAgB,CAAC,QAAA,EAAUF,QAAAA,CAAAA;;QAGxC,OAAO,IAAA;YACLJ,YAAAA,CAAaO,mBAAmB,CAAC,QAAA,EAAUH,QAAAA,CAAAA;AAC7C,QAAA,CAAA;AACF,IAAA,CAAA,EAAG,EAAE,CAAA;AAELjB,IAAAA,gBAAAA,CAAMY,SAAS,CAAC,IAAA;QACdR,QAAAA,CAASiB,0BAAAA,CAAmBC,MAAAA,CAAOC,IAAI,CAAC/B,MAAAA,CAAAA,CAAAA,CAAAA;IAC1C,CAAA,EAAG;AAACY,QAAAA,QAAAA;AAAUZ,QAAAA;AAAO,KAAA,CAAA;IAErB,MAAMgC,iBAAAA,GAAoB/B,YAAAA,KAAiB,QAAA,GAAWK,WAAAA,GAAcL,YAAAA;AAEpE,IAAA,qBACEgC,eAAA,CAACC,iCAAAA,EAAAA;QACCxB,MAAAA,EAAQA,MAAAA;AACR;;;;AAIC,UACDL,KAAAA,EAAOL,MAAAA,GAASgC,iBAAAA,IAAqB,OAAA,CAAQ;;AAE5CjC,YAAAA,QAAAA;0BACDoC,cAAA,CAACC,WAAAA,EAAAA;gBAAYC,4BAAAA,EAA8BvB;;;;AAGjD;AAEA,MAAMsB,WAAAA,GAAcE,wBAA4D;;gBAEhE,EAAE,CAAC,EAAEjC,KAAK,EAAE,GAAKA,KAAAA,CAAMkC,MAAM,CAACC,UAAU,CAAC;;;;AAIvD,EAAA,EAAE,CAAC,EAAEH,4BAA4B,EAAE,GACjCA,+BACI;;;;;;;;;;;;;;;;;;;;AAoBN,EAAA,CAAC,GACKI,SAAAA;AACR,CAAC;;;;"}
1
+ {"version":3,"file":"Theme.js","sources":["../../../../../admin/src/components/Theme.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { DesignSystemProvider } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useDispatch } from 'react-redux';\nimport { type DefaultTheme, createGlobalStyle } from 'styled-components';\n\nimport { useTypedSelector } from '../core/store/hooks';\nimport { setAvailableThemes } from '../reducer';\n\ninterface ThemeProps {\n children: React.ReactNode;\n themes: {\n dark: DefaultTheme;\n light: DefaultTheme;\n };\n}\n\nconst Theme = ({ children, themes }: ThemeProps) => {\n const { currentTheme } = useTypedSelector((state) => state.admin_app.theme);\n const [systemTheme, setSystemTheme] = React.useState<'light' | 'dark'>();\n const { locale } = useIntl();\n const dispatch = useDispatch();\n const isIos =\n ['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'].includes(\n navigator.platform\n ) ||\n (navigator.userAgent.includes('Mac') && 'ontouchend' in document);\n\n // Listen to changes in the system theme\n React.useEffect(() => {\n const themeWatcher = window.matchMedia('(prefers-color-scheme: dark)');\n setSystemTheme(themeWatcher.matches ? 'dark' : 'light');\n\n const listener = (event: MediaQueryListEvent) => {\n setSystemTheme(event.matches ? 'dark' : 'light');\n };\n themeWatcher.addEventListener('change', listener);\n\n // Remove listener on cleanup\n return () => {\n themeWatcher.removeEventListener('change', listener);\n };\n }, []);\n\n React.useEffect(() => {\n dispatch(setAvailableThemes(Object.keys(themes)));\n }, [dispatch, themes]);\n\n const computedThemeName = currentTheme === 'system' ? systemTheme : currentTheme;\n\n return (\n <DesignSystemProvider\n locale={locale}\n /**\n * TODO: could we make this neater i.e. by setting up the context to throw\n * if it can't find it, that way the type is always fully defined and we're\n * not checking it all the time...\n */\n theme={themes?.[computedThemeName || 'light']}\n >\n {children}\n <GlobalStyle $shouldOverrideInputFontSize={isIos} />\n </DesignSystemProvider>\n );\n};\n\nconst GlobalStyle = createGlobalStyle<{ $shouldOverrideInputFontSize: boolean }>`\n body {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n\n // Temporary fix override to fix iOS zoom due to the 14px input font size\n ${({ $shouldOverrideInputFontSize }) =>\n $shouldOverrideInputFontSize\n ? `\n input[type=\"color\"],\n input[type=\"date\"],\n input[type=\"datetime\"],\n input[type=\"datetime-local\"],\n input[type=\"email\"],\n input[type=\"month\"],\n input[type=\"number\"],\n input[type=\"password\"],\n input[type=\"search\"],\n input[type=\"tel\"],\n input[type=\"text\"],\n input[type=\"time\"],\n input[type=\"url\"],\n input[type=\"week\"],\n select:focus,\n textarea {\n font-size: 16px !important;\n line-height: 2.4rem !important;\n }\n `\n : undefined}\n`;\n\nexport { Theme };\nexport type { ThemeProps };\n"],"names":["Theme","children","themes","currentTheme","useTypedSelector","state","admin_app","theme","systemTheme","setSystemTheme","React","useState","locale","useIntl","dispatch","useDispatch","isIos","includes","navigator","platform","userAgent","document","useEffect","themeWatcher","window","matchMedia","matches","listener","event","addEventListener","removeEventListener","setAvailableThemes","Object","keys","computedThemeName","_jsxs","DesignSystemProvider","_jsx","GlobalStyle","$shouldOverrideInputFontSize","createGlobalStyle","colors","neutral100","undefined"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,MAAMA,QAAQ,CAAC,EAAEC,QAAQ,EAAEC,MAAM,EAAc,GAAA;IAC7C,MAAM,EAAEC,YAAY,EAAE,GAAGC,sBAAAA,CAAiB,CAACC,KAAAA,GAAUA,KAAAA,CAAMC,SAAS,CAACC,KAAK,CAAA;AAC1E,IAAA,MAAM,CAACC,WAAAA,EAAaC,cAAAA,CAAe,GAAGC,iBAAMC,QAAQ,EAAA;IACpD,MAAM,EAAEC,MAAM,EAAE,GAAGC,iBAAAA,EAAAA;AACnB,IAAA,MAAMC,QAAAA,GAAWC,sBAAAA,EAAAA;AACjB,IAAA,MAAMC,KAAAA,GACJ;AAAC,QAAA,gBAAA;AAAkB,QAAA,kBAAA;AAAoB,QAAA,gBAAA;AAAkB,QAAA,MAAA;AAAQ,QAAA,QAAA;AAAU,QAAA;KAAO,CAACC,QAAQ,CACzFC,SAAAA,CAAUC,QAAQ,CAAA,IAEnBD,SAAAA,CAAUE,SAAS,CAACH,QAAQ,CAAC,KAAA,CAAA,IAAU,YAAA,IAAgBI,QAAAA;;AAG1DX,IAAAA,gBAAAA,CAAMY,SAAS,CAAC,IAAA;QACd,MAAMC,YAAAA,GAAeC,MAAAA,CAAOC,UAAU,CAAC,8BAAA,CAAA;QACvChB,cAAAA,CAAec,YAAAA,CAAaG,OAAO,GAAG,MAAA,GAAS,OAAA,CAAA;AAE/C,QAAA,MAAMC,WAAW,CAACC,KAAAA,GAAAA;YAChBnB,cAAAA,CAAemB,KAAAA,CAAMF,OAAO,GAAG,MAAA,GAAS,OAAA,CAAA;AAC1C,QAAA,CAAA;QACAH,YAAAA,CAAaM,gBAAgB,CAAC,QAAA,EAAUF,QAAAA,CAAAA;;QAGxC,OAAO,IAAA;YACLJ,YAAAA,CAAaO,mBAAmB,CAAC,QAAA,EAAUH,QAAAA,CAAAA;AAC7C,QAAA,CAAA;AACF,IAAA,CAAA,EAAG,EAAE,CAAA;AAELjB,IAAAA,gBAAAA,CAAMY,SAAS,CAAC,IAAA;QACdR,QAAAA,CAASiB,0BAAAA,CAAmBC,MAAAA,CAAOC,IAAI,CAAC/B,MAAAA,CAAAA,CAAAA,CAAAA;IAC1C,CAAA,EAAG;AAACY,QAAAA,QAAAA;AAAUZ,QAAAA;AAAO,KAAA,CAAA;IAErB,MAAMgC,iBAAAA,GAAoB/B,YAAAA,KAAiB,QAAA,GAAWK,WAAAA,GAAcL,YAAAA;AAEpE,IAAA,qBACEgC,eAAA,CAACC,iCAAAA,EAAAA;QACCxB,MAAAA,EAAQA,MAAAA;AACR;;;;AAIC,UACDL,KAAAA,EAAOL,MAAAA,GAASgC,iBAAAA,IAAqB,OAAA,CAAQ;;AAE5CjC,YAAAA,QAAAA;0BACDoC,cAAA,CAACC,WAAAA,EAAAA;gBAAYC,4BAAAA,EAA8BvB;;;;AAGjD;AAEA,MAAMsB,WAAAA,GAAcE,kCAA4D;;gBAEhE,EAAE,CAAC,EAAEjC,KAAK,EAAE,GAAKA,KAAAA,CAAMkC,MAAM,CAACC,UAAU,CAAC;;;;AAIvD,EAAA,EAAE,CAAC,EAAEH,4BAA4B,EAAE,GACjCA,+BACI;;;;;;;;;;;;;;;;;;;;AAoBN,EAAA,CAAC,GACKI,SAAAA;AACR,CAAC;;;;"}
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
- var styled = require('styled-components');
4
+ var styledComponents = require('styled-components');
5
5
  var Configuration = require('../features/Configuration.js');
6
6
 
7
- const Img = styled.styled.img`
7
+ const Img = styledComponents.styled.img`
8
8
  height: 7.2rem;
9
9
  `;
10
10
  const Logo = ()=>{
@@ -1 +1 @@
1
- {"version":3,"file":"UnauthenticatedLogo.js","sources":["../../../../../admin/src/components/UnauthenticatedLogo.tsx"],"sourcesContent":["import { styled } from 'styled-components';\n\nimport { useConfiguration } from '../features/Configuration';\n\nconst Img = styled.img`\n height: 7.2rem;\n`;\n\nconst Logo = () => {\n const {\n logos: { auth },\n } = useConfiguration('UnauthenticatedLogo');\n\n return <Img src={auth?.custom?.url || auth.default} aria-hidden alt=\"\" />;\n};\n\nexport { Logo };\n"],"names":["Img","styled","img","Logo","logos","auth","useConfiguration","_jsx","src","custom","url","default","aria-hidden","alt"],"mappings":";;;;;;AAIA,MAAMA,GAAAA,GAAMC,aAAAA,CAAOC,GAAG;;AAEtB,CAAC;AAED,MAAMC,IAAAA,GAAO,IAAA;AACX,IAAA,MAAM,EACJC,KAAAA,EAAO,EAAEC,IAAI,EAAE,EAChB,GAAGC,8BAAAA,CAAiB,qBAAA,CAAA;AAErB,IAAA,qBAAOC,cAAA,CAACP,GAAAA,EAAAA;AAAIQ,QAAAA,GAAAA,EAAKH,IAAAA,EAAMI,MAAAA,EAAQC,GAAAA,IAAOL,IAAAA,CAAKM,OAAO;QAAEC,aAAW,EAAA,IAAA;QAACC,GAAAA,EAAI;;AACtE;;;;"}
1
+ {"version":3,"file":"UnauthenticatedLogo.js","sources":["../../../../../admin/src/components/UnauthenticatedLogo.tsx"],"sourcesContent":["import { styled } from 'styled-components';\n\nimport { useConfiguration } from '../features/Configuration';\n\nconst Img = styled.img`\n height: 7.2rem;\n`;\n\nconst Logo = () => {\n const {\n logos: { auth },\n } = useConfiguration('UnauthenticatedLogo');\n\n return <Img src={auth?.custom?.url || auth.default} aria-hidden alt=\"\" />;\n};\n\nexport { Logo };\n"],"names":["Img","styled","img","Logo","logos","auth","useConfiguration","_jsx","src","custom","url","default","aria-hidden","alt"],"mappings":";;;;;;AAIA,MAAMA,GAAAA,GAAMC,uBAAAA,CAAOC,GAAG;;AAEtB,CAAC;AAED,MAAMC,IAAAA,GAAO,IAAA;AACX,IAAA,MAAM,EACJC,KAAAA,EAAO,EAAEC,IAAI,EAAE,EAChB,GAAGC,8BAAAA,CAAiB,qBAAA,CAAA;AAErB,IAAA,qBAAOC,cAAA,CAACP,GAAAA,EAAAA;AAAIQ,QAAAA,GAAAA,EAAKH,IAAAA,EAAMI,MAAAA,EAAQC,GAAAA,IAAOL,IAAAA,CAAKM,OAAO;QAAEC,aAAW,EAAA,IAAA;QAACC,GAAAA,EAAI;;AACtE;;;;"}
@@ -7,12 +7,12 @@ var designSystem = require('@strapi/design-system');
7
7
  var icons = require('@strapi/icons');
8
8
  var dateFns = require('date-fns');
9
9
  var reactIntl = require('react-intl');
10
- var styled = require('styled-components');
10
+ var styledComponents = require('styled-components');
11
11
  var admin = require('../services/admin.js');
12
12
  var theme = require('../constants/theme.js');
13
13
  var usePersistentState = require('../hooks/usePersistentState.js');
14
14
 
15
- const BannerBackground = styled.styled(designSystem.Flex)`
15
+ const BannerBackground = styledComponents.styled(designSystem.Flex)`
16
16
  background: linear-gradient(
17
17
  90deg,
18
18
  ${({ theme })=>theme.colors.primary600} 0%,
@@ -20,7 +20,7 @@ const BannerBackground = styled.styled(designSystem.Flex)`
20
20
  );
21
21
  position: relative;
22
22
  `;
23
- const FixedButtonWrapper = styled.styled(designSystem.Box)`
23
+ const FixedButtonWrapper = styledComponents.styled(designSystem.Box)`
24
24
  position: fixed;
25
25
  display: flex;
26
26
  flex-direction: column;
@@ -1 +1 @@
1
- {"version":3,"file":"UpsellBanner.js","sources":["../../../../../admin/src/components/UpsellBanner.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useLicenseLimits } from '@strapi/admin/strapi-admin/ee';\nimport { Box, Flex, IconButton, LinkButton, Typography } from '@strapi/design-system';\nimport { ArrowsOut, Cross } from '@strapi/icons';\nimport { isAfter, isValid, subDays } from 'date-fns';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useGetLicenseTrialTimeLeftQuery } from '../../src/services/admin';\nimport { RESPONSIVE_DEFAULT_SPACING } from '../constants/theme';\nimport { useScopedPersistentState } from '../hooks/usePersistentState';\n\nconst BannerBackground = styled(Flex)`\n background: linear-gradient(\n 90deg,\n ${({ theme }) => theme.colors.primary600} 0%,\n ${({ theme }) => theme.colors.alternative600} 121.48%\n );\n position: relative;\n`;\n\nconst FixedButtonWrapper = styled(Box)`\n position: fixed;\n display: flex;\n flex-direction: column;\n z-index: 11;\n align-items: flex-end;\n top: 9px;\n right: 16px;\n`;\n\nconst Banner = ({\n isTrialEndedRecently,\n onDismiss,\n}: {\n isTrialEndedRecently: boolean;\n onDismiss: () => void;\n}) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <BannerBackground width=\"100%\" justifyContent=\"center\">\n <Flex\n justifyContent=\"center\"\n alignItems=\"center\"\n width=\"100%\"\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n gap={2}\n >\n <Box>\n <Typography\n variant=\"delta\"\n fontWeight=\"bold\"\n textColor=\"neutral0\"\n textAlign=\"center\"\n fontSize={2}\n >\n {formatMessage(\n isTrialEndedRecently\n ? {\n id: 'app.components.UpsellBanner.intro.ended',\n defaultMessage: 'Your trial has ended: ',\n }\n : {\n id: 'app.components.UpsellBanner.intro',\n defaultMessage: 'Access to Growth plan features: ',\n }\n )}\n </Typography>\n <Typography\n variant=\"delta\"\n textColor=\"neutral0\"\n textAlign=\"center\"\n paddingRight={4}\n fontSize={2}\n >\n {formatMessage(\n isTrialEndedRecently\n ? {\n id: 'app.components.UpsellBanner.text.ended',\n defaultMessage: 'Keep access to Growth features by upgrading now.',\n }\n : {\n id: 'app.components.UpsellBanner.text',\n defaultMessage:\n 'As part of your trial, you can explore premium tools such as Content History, Releases, and Single Sign-On (SSO).',\n }\n )}\n </Typography>\n </Box>\n <Box>\n <LinkButton\n width=\"max-content\"\n variant=\"tertiary\"\n href=\"https://billing.strapi.io\"\n target=\"_blank\"\n >\n {formatMessage(\n isTrialEndedRecently\n ? {\n id: 'app.components.UpsellBanner.button.ended',\n defaultMessage: 'Keep Growth plan',\n }\n : {\n id: 'app.components.UpsellBanner.button',\n defaultMessage: 'Upgrade now',\n }\n )}\n </LinkButton>\n </Box>\n </Flex>\n </BannerBackground>\n <FixedButtonWrapper>\n <IconButton\n withTooltip={false}\n label={formatMessage({\n id: 'app.components.UpsellBanner.close',\n defaultMessage: 'Close',\n })}\n onClick={onDismiss}\n >\n <Cross />\n </IconButton>\n </FixedButtonWrapper>\n </>\n );\n};\n\nconst UpsellBanner = () => {\n const { license } = useLicenseLimits();\n const { formatMessage } = useIntl();\n\n const [cachedTrialEndsAt, setCachedTrialEndsAt] = useScopedPersistentState<string | undefined>(\n 'STRAPI_FREE_TRIAL_ENDS_AT',\n undefined\n );\n\n const [dismissedFor, setDismissedFor] = useScopedPersistentState<string | undefined>(\n 'STRAPI_UPSELL_BANNER_DISMISSED_FOR',\n undefined\n );\n\n const sevenDaysAgo = subDays(new Date(), 7);\n\n const timeLeftData = useGetLicenseTrialTimeLeftQuery(undefined, {\n skip: !license?.isTrial,\n });\n\n useEffect(() => {\n if (timeLeftData.data?.trialEndsAt) {\n setCachedTrialEndsAt(timeLeftData.data.trialEndsAt);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [timeLeftData.data?.trialEndsAt]);\n\n // When the license is not a trial + not EE, and the cached trial end date is found in the localstorage, that means the trial has ended\n // We show the banner to encourage the user to upgrade (for 7 days after the trial ends)\n const isTrialEndedRecently = Boolean(\n !license?.isTrial &&\n !window.strapi.isEE &&\n cachedTrialEndsAt &&\n isAfter(new Date(cachedTrialEndsAt), sevenDaysAgo)\n );\n\n const trialEndsAt = timeLeftData.data?.trialEndsAt ?? cachedTrialEndsAt;\n\n const toCanonicalISO = (v: string | undefined): string | undefined => {\n if (!v) return undefined;\n const date = new Date(v);\n return isValid(date) ? date.toISOString() : undefined;\n };\n\n const isDismissed = Boolean(\n trialEndsAt && toCanonicalISO(dismissedFor) === toCanonicalISO(trialEndsAt)\n );\n\n const handleDismiss = () => setDismissedFor(toCanonicalISO(trialEndsAt));\n const handleReopen = () => setDismissedFor(undefined);\n\n if (!(timeLeftData.data?.trialEndsAt || isTrialEndedRecently)) {\n return null;\n }\n\n if (isDismissed) {\n return (\n <FixedButtonWrapper>\n <IconButton\n withTooltip={false}\n label={formatMessage({\n id: 'app.components.UpsellBanner.reopen',\n defaultMessage: 'Reopen banner',\n })}\n onClick={handleReopen}\n >\n <ArrowsOut />\n </IconButton>\n </FixedButtonWrapper>\n );\n }\n\n return <Banner isTrialEndedRecently={isTrialEndedRecently} onDismiss={handleDismiss} />;\n};\n\nexport { UpsellBanner };\n"],"names":["BannerBackground","styled","Flex","theme","colors","primary600","alternative600","FixedButtonWrapper","Box","Banner","isTrialEndedRecently","onDismiss","formatMessage","useIntl","_jsxs","_Fragment","_jsx","width","justifyContent","alignItems","paddingTop","paddingBottom","paddingLeft","RESPONSIVE_DEFAULT_SPACING","paddingRight","gap","Typography","variant","fontWeight","textColor","textAlign","fontSize","id","defaultMessage","LinkButton","href","target","IconButton","withTooltip","label","onClick","Cross","UpsellBanner","license","useLicenseLimits","cachedTrialEndsAt","setCachedTrialEndsAt","useScopedPersistentState","undefined","dismissedFor","setDismissedFor","sevenDaysAgo","subDays","Date","timeLeftData","useGetLicenseTrialTimeLeftQuery","skip","isTrial","useEffect","data","trialEndsAt","Boolean","window","strapi","isEE","isAfter","toCanonicalISO","v","date","isValid","toISOString","isDismissed","handleDismiss","handleReopen","ArrowsOut"],"mappings":"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"}
1
+ {"version":3,"file":"UpsellBanner.js","sources":["../../../../../admin/src/components/UpsellBanner.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useLicenseLimits } from '@strapi/admin/strapi-admin/ee';\nimport { Box, Flex, IconButton, LinkButton, Typography } from '@strapi/design-system';\nimport { ArrowsOut, Cross } from '@strapi/icons';\nimport { isAfter, isValid, subDays } from 'date-fns';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useGetLicenseTrialTimeLeftQuery } from '../../src/services/admin';\nimport { RESPONSIVE_DEFAULT_SPACING } from '../constants/theme';\nimport { useScopedPersistentState } from '../hooks/usePersistentState';\n\nconst BannerBackground = styled(Flex)`\n background: linear-gradient(\n 90deg,\n ${({ theme }) => theme.colors.primary600} 0%,\n ${({ theme }) => theme.colors.alternative600} 121.48%\n );\n position: relative;\n`;\n\nconst FixedButtonWrapper = styled(Box)`\n position: fixed;\n display: flex;\n flex-direction: column;\n z-index: 11;\n align-items: flex-end;\n top: 9px;\n right: 16px;\n`;\n\nconst Banner = ({\n isTrialEndedRecently,\n onDismiss,\n}: {\n isTrialEndedRecently: boolean;\n onDismiss: () => void;\n}) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <BannerBackground width=\"100%\" justifyContent=\"center\">\n <Flex\n justifyContent=\"center\"\n alignItems=\"center\"\n width=\"100%\"\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n gap={2}\n >\n <Box>\n <Typography\n variant=\"delta\"\n fontWeight=\"bold\"\n textColor=\"neutral0\"\n textAlign=\"center\"\n fontSize={2}\n >\n {formatMessage(\n isTrialEndedRecently\n ? {\n id: 'app.components.UpsellBanner.intro.ended',\n defaultMessage: 'Your trial has ended: ',\n }\n : {\n id: 'app.components.UpsellBanner.intro',\n defaultMessage: 'Access to Growth plan features: ',\n }\n )}\n </Typography>\n <Typography\n variant=\"delta\"\n textColor=\"neutral0\"\n textAlign=\"center\"\n paddingRight={4}\n fontSize={2}\n >\n {formatMessage(\n isTrialEndedRecently\n ? {\n id: 'app.components.UpsellBanner.text.ended',\n defaultMessage: 'Keep access to Growth features by upgrading now.',\n }\n : {\n id: 'app.components.UpsellBanner.text',\n defaultMessage:\n 'As part of your trial, you can explore premium tools such as Content History, Releases, and Single Sign-On (SSO).',\n }\n )}\n </Typography>\n </Box>\n <Box>\n <LinkButton\n width=\"max-content\"\n variant=\"tertiary\"\n href=\"https://billing.strapi.io\"\n target=\"_blank\"\n >\n {formatMessage(\n isTrialEndedRecently\n ? {\n id: 'app.components.UpsellBanner.button.ended',\n defaultMessage: 'Keep Growth plan',\n }\n : {\n id: 'app.components.UpsellBanner.button',\n defaultMessage: 'Upgrade now',\n }\n )}\n </LinkButton>\n </Box>\n </Flex>\n </BannerBackground>\n <FixedButtonWrapper>\n <IconButton\n withTooltip={false}\n label={formatMessage({\n id: 'app.components.UpsellBanner.close',\n defaultMessage: 'Close',\n })}\n onClick={onDismiss}\n >\n <Cross />\n </IconButton>\n </FixedButtonWrapper>\n </>\n );\n};\n\nconst UpsellBanner = () => {\n const { license } = useLicenseLimits();\n const { formatMessage } = useIntl();\n\n const [cachedTrialEndsAt, setCachedTrialEndsAt] = useScopedPersistentState<string | undefined>(\n 'STRAPI_FREE_TRIAL_ENDS_AT',\n undefined\n );\n\n const [dismissedFor, setDismissedFor] = useScopedPersistentState<string | undefined>(\n 'STRAPI_UPSELL_BANNER_DISMISSED_FOR',\n undefined\n );\n\n const sevenDaysAgo = subDays(new Date(), 7);\n\n const timeLeftData = useGetLicenseTrialTimeLeftQuery(undefined, {\n skip: !license?.isTrial,\n });\n\n useEffect(() => {\n if (timeLeftData.data?.trialEndsAt) {\n setCachedTrialEndsAt(timeLeftData.data.trialEndsAt);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [timeLeftData.data?.trialEndsAt]);\n\n // When the license is not a trial + not EE, and the cached trial end date is found in the localstorage, that means the trial has ended\n // We show the banner to encourage the user to upgrade (for 7 days after the trial ends)\n const isTrialEndedRecently = Boolean(\n !license?.isTrial &&\n !window.strapi.isEE &&\n cachedTrialEndsAt &&\n isAfter(new Date(cachedTrialEndsAt), sevenDaysAgo)\n );\n\n const trialEndsAt = timeLeftData.data?.trialEndsAt ?? cachedTrialEndsAt;\n\n const toCanonicalISO = (v: string | undefined): string | undefined => {\n if (!v) return undefined;\n const date = new Date(v);\n return isValid(date) ? date.toISOString() : undefined;\n };\n\n const isDismissed = Boolean(\n trialEndsAt && toCanonicalISO(dismissedFor) === toCanonicalISO(trialEndsAt)\n );\n\n const handleDismiss = () => setDismissedFor(toCanonicalISO(trialEndsAt));\n const handleReopen = () => setDismissedFor(undefined);\n\n if (!(timeLeftData.data?.trialEndsAt || isTrialEndedRecently)) {\n return null;\n }\n\n if (isDismissed) {\n return (\n <FixedButtonWrapper>\n <IconButton\n withTooltip={false}\n label={formatMessage({\n id: 'app.components.UpsellBanner.reopen',\n defaultMessage: 'Reopen banner',\n })}\n onClick={handleReopen}\n >\n <ArrowsOut />\n </IconButton>\n </FixedButtonWrapper>\n );\n }\n\n return <Banner isTrialEndedRecently={isTrialEndedRecently} onDismiss={handleDismiss} />;\n};\n\nexport { UpsellBanner };\n"],"names":["BannerBackground","styled","Flex","theme","colors","primary600","alternative600","FixedButtonWrapper","Box","Banner","isTrialEndedRecently","onDismiss","formatMessage","useIntl","_jsxs","_Fragment","_jsx","width","justifyContent","alignItems","paddingTop","paddingBottom","paddingLeft","RESPONSIVE_DEFAULT_SPACING","paddingRight","gap","Typography","variant","fontWeight","textColor","textAlign","fontSize","id","defaultMessage","LinkButton","href","target","IconButton","withTooltip","label","onClick","Cross","UpsellBanner","license","useLicenseLimits","cachedTrialEndsAt","setCachedTrialEndsAt","useScopedPersistentState","undefined","dismissedFor","setDismissedFor","sevenDaysAgo","subDays","Date","timeLeftData","useGetLicenseTrialTimeLeftQuery","skip","isTrial","useEffect","data","trialEndsAt","Boolean","window","strapi","isEE","isAfter","toCanonicalISO","v","date","isValid","toISOString","isDismissed","handleDismiss","handleReopen","ArrowsOut"],"mappings":"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"}
@@ -8,12 +8,10 @@ var reactDnd = require('react-dnd');
8
8
  var reactDndHtml5Backend = require('react-dnd-html5-backend');
9
9
  var reactIntl = require('react-intl');
10
10
  var reactRouterDom = require('react-router-dom');
11
- var styled = require('styled-components');
11
+ var styledComponents = require('styled-components');
12
12
  var Tracking = require('../features/Tracking.js');
13
13
  var widgetLayout = require('../utils/widgetLayout.js');
14
14
 
15
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
16
-
17
15
  function _interopNamespace(e) {
18
16
  if (e && e.__esModule) return e;
19
17
  var n = Object.create(null);
@@ -33,23 +31,22 @@ function _interopNamespace(e) {
33
31
  }
34
32
 
35
33
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
36
- var styled__default = /*#__PURE__*/_interopDefault(styled);
37
34
 
38
- const WidgetActions = styled__default.default(designSystem.Flex)`
35
+ const WidgetActions = styledComponents.styled(designSystem.Flex)`
39
36
  display: flex;
40
37
 
41
38
  @media (hover: hover) and (pointer: fine) {
42
39
  display: none;
43
40
  }
44
41
  `;
45
- const DragIconButton = styled__default.default(designSystem.IconButton)`
42
+ const DragIconButton = styledComponents.styled(designSystem.IconButton)`
46
43
  display: none;
47
44
 
48
45
  @media (hover: hover) and (pointer: fine) {
49
46
  display: flex;
50
47
  }
51
48
  `;
52
- const WidgetContainer = styled__default.default(designSystem.Flex)`
49
+ const WidgetContainer = styledComponents.styled(designSystem.Flex)`
53
50
  @media (hover: hover) and (pointer: fine) {
54
51
  &:hover ${WidgetActions} {
55
52
  display: flex;
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetRoot.js","sources":["../../../../../admin/src/components/WidgetRoot.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography, ScrollArea, IconButton } from '@strapi/design-system';\nimport { PuzzlePiece, Trash, Drag } from '@strapi/icons';\nimport { useDrag } from 'react-dnd';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { useTracking } from '../features/Tracking';\nimport { WIDGET_DATA_ATTRIBUTES } from '../utils/widgetLayout';\n\nimport type { FindWidgetFunction, WidgetIdFunction, DragEndFunction } from '../features/Widgets';\nimport type { WidgetType } from '@strapi/admin/strapi-admin';\n\nexport interface BaseWidgetProps\n extends Pick<WidgetType, 'title' | 'icon' | 'permissions' | 'link' | 'uid'> {\n findWidget?: FindWidgetFunction;\n deleteWidget?: WidgetIdFunction;\n onDragStart?: WidgetIdFunction;\n onDragEnd?: DragEndFunction;\n}\n\nexport interface WidgetRootProps extends BaseWidgetProps {\n children: React.ReactNode;\n component?: () => Promise<React.ComponentType>;\n}\n\nconst WidgetActions = styled(Flex)`\n display: flex;\n\n @media (hover: hover) and (pointer: fine) {\n display: none;\n }\n`;\n\nconst DragIconButton = styled(IconButton)`\n display: none;\n\n @media (hover: hover) and (pointer: fine) {\n display: flex;\n }\n`;\n\nconst WidgetContainer = styled(Flex)`\n @media (hover: hover) and (pointer: fine) {\n &:hover ${WidgetActions} {\n display: flex;\n }\n }\n\n &:focus-within ${WidgetActions} {\n display: flex;\n }\n\n &:focus-within ${DragIconButton} {\n pointer-events: none;\n\n ${({ theme }) => theme.breakpoints.medium} {\n pointer-events: auto;\n }\n }\n`;\n\nexport const WidgetRoot = ({\n title,\n icon = PuzzlePiece,\n children,\n link,\n uid,\n findWidget,\n deleteWidget,\n onDragStart,\n onDragEnd,\n component,\n}: WidgetRootProps) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const Icon = icon;\n\n const handleClickOnLink = () => {\n trackUsage('didOpenHomeWidgetLink', { widgetUID: uid });\n };\n\n const handleDeleteWidget = () => {\n deleteWidget?.(uid);\n };\n\n const [, drag, preview] = useDrag(\n () => ({\n type: 'widget',\n item: () => {\n onDragStart?.(uid);\n return {\n id: uid,\n originalIndex: findWidget?.(uid)?.index ?? 0,\n title,\n icon,\n link,\n component,\n };\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n end: () => {\n onDragEnd?.();\n },\n }),\n [uid, findWidget, onDragStart, onDragEnd, title, icon, link, component]\n );\n\n // Suppress default drag preview\n React.useEffect(() => {\n preview(getEmptyImage(), { captureDraggingState: true });\n }, [preview]);\n\n return (\n <WidgetContainer\n width=\"100%\"\n hasRadius\n direction=\"column\"\n alignItems=\"flex-start\"\n background={'neutral0'}\n borderColor={'neutral150'}\n shadow=\"tableShadow\"\n tag=\"section\"\n gap={4}\n padding={6}\n position=\"relative\"\n aria-labelledby={uid}\n tabIndex={0}\n {...{ [WIDGET_DATA_ATTRIBUTES.WIDGET_ID]: uid }}\n style={{\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n }}\n >\n <Flex\n direction=\"row\"\n gap={2}\n width=\"100%\"\n tag=\"header\"\n alignItems=\"center\"\n minHeight=\"2.25rem\"\n >\n <Flex gap={2} marginRight=\"auto\">\n <Icon fill=\"neutral500\" aria-hidden />\n <Typography textColor=\"neutral500\" variant=\"sigma\" tag=\"h2\" id={uid}>\n {formatMessage(title)}\n </Typography>\n </Flex>\n {link && (\n <Typography\n tag={ReactRouterLink}\n variant=\"omega\"\n textColor=\"primary600\"\n style={{ textDecoration: 'none' }}\n textAlign=\"right\"\n to={link.href}\n onClick={handleClickOnLink}\n >\n {formatMessage(link.label)}\n </Typography>\n )}\n <WidgetActions gap={2}>\n <IconButton\n variant=\"danger-light\"\n size=\"XS\"\n onClick={handleDeleteWidget}\n label={formatMessage({\n id: 'HomePage.widget.delete',\n defaultMessage: 'Delete',\n })}\n cursor=\"pointer\"\n >\n <Trash />\n </IconButton>\n <DragIconButton\n variant=\"tertiary\"\n size=\"XS\"\n ref={drag}\n tabIndex={-1}\n label={formatMessage({\n id: 'HomePage.widget.drag',\n defaultMessage: 'Drag to move',\n })}\n cursor=\"grab\"\n >\n <Drag />\n </DragIconButton>\n </WidgetActions>\n </Flex>\n <ScrollArea>\n <Box width=\"100%\" height=\"261px\" overflow=\"auto\" tag=\"main\">\n {children}\n </Box>\n </ScrollArea>\n </WidgetContainer>\n );\n};\n"],"names":["WidgetActions","styled","Flex","DragIconButton","IconButton","WidgetContainer","theme","breakpoints","medium","WidgetRoot","title","icon","PuzzlePiece","children","link","uid","findWidget","deleteWidget","onDragStart","onDragEnd","component","trackUsage","useTracking","formatMessage","useIntl","Icon","handleClickOnLink","widgetUID","handleDeleteWidget","drag","preview","useDrag","type","item","id","originalIndex","index","collect","monitor","isDragging","end","React","useEffect","getEmptyImage","captureDraggingState","_jsxs","width","hasRadius","direction","alignItems","background","borderColor","shadow","tag","gap","padding","position","aria-labelledby","tabIndex","WIDGET_DATA_ATTRIBUTES","WIDGET_ID","style","transition","minHeight","marginRight","_jsx","fill","aria-hidden","Typography","textColor","variant","ReactRouterLink","textDecoration","textAlign","to","href","onClick","label","size","defaultMessage","cursor","Trash","ref","Drag","ScrollArea","Box","height","overflow"],"mappings":"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"}
1
+ {"version":3,"file":"WidgetRoot.js","sources":["../../../../../admin/src/components/WidgetRoot.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography, ScrollArea, IconButton } from '@strapi/design-system';\nimport { PuzzlePiece, Trash, Drag } from '@strapi/icons';\nimport { useDrag } from 'react-dnd';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useTracking } from '../features/Tracking';\nimport { WIDGET_DATA_ATTRIBUTES } from '../utils/widgetLayout';\n\nimport type { FindWidgetFunction, WidgetIdFunction, DragEndFunction } from '../features/Widgets';\nimport type { WidgetType } from '@strapi/admin/strapi-admin';\n\nexport interface BaseWidgetProps\n extends Pick<WidgetType, 'title' | 'icon' | 'permissions' | 'link' | 'uid'> {\n findWidget?: FindWidgetFunction;\n deleteWidget?: WidgetIdFunction;\n onDragStart?: WidgetIdFunction;\n onDragEnd?: DragEndFunction;\n}\n\nexport interface WidgetRootProps extends BaseWidgetProps {\n children: React.ReactNode;\n component?: () => Promise<React.ComponentType>;\n}\n\nconst WidgetActions = styled(Flex)`\n display: flex;\n\n @media (hover: hover) and (pointer: fine) {\n display: none;\n }\n`;\n\nconst DragIconButton = styled(IconButton)`\n display: none;\n\n @media (hover: hover) and (pointer: fine) {\n display: flex;\n }\n`;\n\nconst WidgetContainer = styled(Flex)`\n @media (hover: hover) and (pointer: fine) {\n &:hover ${WidgetActions} {\n display: flex;\n }\n }\n\n &:focus-within ${WidgetActions} {\n display: flex;\n }\n\n &:focus-within ${DragIconButton} {\n pointer-events: none;\n\n ${({ theme }) => theme.breakpoints.medium} {\n pointer-events: auto;\n }\n }\n`;\n\nexport const WidgetRoot = ({\n title,\n icon = PuzzlePiece,\n children,\n link,\n uid,\n findWidget,\n deleteWidget,\n onDragStart,\n onDragEnd,\n component,\n}: WidgetRootProps) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const Icon = icon;\n\n const handleClickOnLink = () => {\n trackUsage('didOpenHomeWidgetLink', { widgetUID: uid });\n };\n\n const handleDeleteWidget = () => {\n deleteWidget?.(uid);\n };\n\n const [, drag, preview] = useDrag(\n () => ({\n type: 'widget',\n item: () => {\n onDragStart?.(uid);\n return {\n id: uid,\n originalIndex: findWidget?.(uid)?.index ?? 0,\n title,\n icon,\n link,\n component,\n };\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n end: () => {\n onDragEnd?.();\n },\n }),\n [uid, findWidget, onDragStart, onDragEnd, title, icon, link, component]\n );\n\n // Suppress default drag preview\n React.useEffect(() => {\n preview(getEmptyImage(), { captureDraggingState: true });\n }, [preview]);\n\n return (\n <WidgetContainer\n width=\"100%\"\n hasRadius\n direction=\"column\"\n alignItems=\"flex-start\"\n background={'neutral0'}\n borderColor={'neutral150'}\n shadow=\"tableShadow\"\n tag=\"section\"\n gap={4}\n padding={6}\n position=\"relative\"\n aria-labelledby={uid}\n tabIndex={0}\n {...{ [WIDGET_DATA_ATTRIBUTES.WIDGET_ID]: uid }}\n style={{\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n }}\n >\n <Flex\n direction=\"row\"\n gap={2}\n width=\"100%\"\n tag=\"header\"\n alignItems=\"center\"\n minHeight=\"2.25rem\"\n >\n <Flex gap={2} marginRight=\"auto\">\n <Icon fill=\"neutral500\" aria-hidden />\n <Typography textColor=\"neutral500\" variant=\"sigma\" tag=\"h2\" id={uid}>\n {formatMessage(title)}\n </Typography>\n </Flex>\n {link && (\n <Typography\n tag={ReactRouterLink}\n variant=\"omega\"\n textColor=\"primary600\"\n style={{ textDecoration: 'none' }}\n textAlign=\"right\"\n to={link.href}\n onClick={handleClickOnLink}\n >\n {formatMessage(link.label)}\n </Typography>\n )}\n <WidgetActions gap={2}>\n <IconButton\n variant=\"danger-light\"\n size=\"XS\"\n onClick={handleDeleteWidget}\n label={formatMessage({\n id: 'HomePage.widget.delete',\n defaultMessage: 'Delete',\n })}\n cursor=\"pointer\"\n >\n <Trash />\n </IconButton>\n <DragIconButton\n variant=\"tertiary\"\n size=\"XS\"\n ref={drag}\n tabIndex={-1}\n label={formatMessage({\n id: 'HomePage.widget.drag',\n defaultMessage: 'Drag to move',\n })}\n cursor=\"grab\"\n >\n <Drag />\n </DragIconButton>\n </WidgetActions>\n </Flex>\n <ScrollArea>\n <Box width=\"100%\" height=\"261px\" overflow=\"auto\" tag=\"main\">\n {children}\n </Box>\n </ScrollArea>\n </WidgetContainer>\n );\n};\n"],"names":["WidgetActions","styled","Flex","DragIconButton","IconButton","WidgetContainer","theme","breakpoints","medium","WidgetRoot","title","icon","PuzzlePiece","children","link","uid","findWidget","deleteWidget","onDragStart","onDragEnd","component","trackUsage","useTracking","formatMessage","useIntl","Icon","handleClickOnLink","widgetUID","handleDeleteWidget","drag","preview","useDrag","type","item","id","originalIndex","index","collect","monitor","isDragging","end","React","useEffect","getEmptyImage","captureDraggingState","_jsxs","width","hasRadius","direction","alignItems","background","borderColor","shadow","tag","gap","padding","position","aria-labelledby","tabIndex","WIDGET_DATA_ATTRIBUTES","WIDGET_ID","style","transition","minHeight","marginRight","_jsx","fill","aria-hidden","Typography","textColor","variant","ReactRouterLink","textDecoration","textAlign","to","href","onClick","label","size","defaultMessage","cursor","Trash","ref","Drag","ScrollArea","Box","height","overflow"],"mappings":"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"}
@@ -6,7 +6,7 @@ import { useDrag } from 'react-dnd';
6
6
  import { getEmptyImage } from 'react-dnd-html5-backend';
7
7
  import { useIntl } from 'react-intl';
8
8
  import { Link } from 'react-router-dom';
9
- import styled from 'styled-components';
9
+ import { styled } from 'styled-components';
10
10
  import { useTracking } from '../features/Tracking.mjs';
11
11
  import { WIDGET_DATA_ATTRIBUTES } from '../utils/widgetLayout.mjs';
12
12
 
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetRoot.mjs","sources":["../../../../../admin/src/components/WidgetRoot.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography, ScrollArea, IconButton } from '@strapi/design-system';\nimport { PuzzlePiece, Trash, Drag } from '@strapi/icons';\nimport { useDrag } from 'react-dnd';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { useTracking } from '../features/Tracking';\nimport { WIDGET_DATA_ATTRIBUTES } from '../utils/widgetLayout';\n\nimport type { FindWidgetFunction, WidgetIdFunction, DragEndFunction } from '../features/Widgets';\nimport type { WidgetType } from '@strapi/admin/strapi-admin';\n\nexport interface BaseWidgetProps\n extends Pick<WidgetType, 'title' | 'icon' | 'permissions' | 'link' | 'uid'> {\n findWidget?: FindWidgetFunction;\n deleteWidget?: WidgetIdFunction;\n onDragStart?: WidgetIdFunction;\n onDragEnd?: DragEndFunction;\n}\n\nexport interface WidgetRootProps extends BaseWidgetProps {\n children: React.ReactNode;\n component?: () => Promise<React.ComponentType>;\n}\n\nconst WidgetActions = styled(Flex)`\n display: flex;\n\n @media (hover: hover) and (pointer: fine) {\n display: none;\n }\n`;\n\nconst DragIconButton = styled(IconButton)`\n display: none;\n\n @media (hover: hover) and (pointer: fine) {\n display: flex;\n }\n`;\n\nconst WidgetContainer = styled(Flex)`\n @media (hover: hover) and (pointer: fine) {\n &:hover ${WidgetActions} {\n display: flex;\n }\n }\n\n &:focus-within ${WidgetActions} {\n display: flex;\n }\n\n &:focus-within ${DragIconButton} {\n pointer-events: none;\n\n ${({ theme }) => theme.breakpoints.medium} {\n pointer-events: auto;\n }\n }\n`;\n\nexport const WidgetRoot = ({\n title,\n icon = PuzzlePiece,\n children,\n link,\n uid,\n findWidget,\n deleteWidget,\n onDragStart,\n onDragEnd,\n component,\n}: WidgetRootProps) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const Icon = icon;\n\n const handleClickOnLink = () => {\n trackUsage('didOpenHomeWidgetLink', { widgetUID: uid });\n };\n\n const handleDeleteWidget = () => {\n deleteWidget?.(uid);\n };\n\n const [, drag, preview] = useDrag(\n () => ({\n type: 'widget',\n item: () => {\n onDragStart?.(uid);\n return {\n id: uid,\n originalIndex: findWidget?.(uid)?.index ?? 0,\n title,\n icon,\n link,\n component,\n };\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n end: () => {\n onDragEnd?.();\n },\n }),\n [uid, findWidget, onDragStart, onDragEnd, title, icon, link, component]\n );\n\n // Suppress default drag preview\n React.useEffect(() => {\n preview(getEmptyImage(), { captureDraggingState: true });\n }, [preview]);\n\n return (\n <WidgetContainer\n width=\"100%\"\n hasRadius\n direction=\"column\"\n alignItems=\"flex-start\"\n background={'neutral0'}\n borderColor={'neutral150'}\n shadow=\"tableShadow\"\n tag=\"section\"\n gap={4}\n padding={6}\n position=\"relative\"\n aria-labelledby={uid}\n tabIndex={0}\n {...{ [WIDGET_DATA_ATTRIBUTES.WIDGET_ID]: uid }}\n style={{\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n }}\n >\n <Flex\n direction=\"row\"\n gap={2}\n width=\"100%\"\n tag=\"header\"\n alignItems=\"center\"\n minHeight=\"2.25rem\"\n >\n <Flex gap={2} marginRight=\"auto\">\n <Icon fill=\"neutral500\" aria-hidden />\n <Typography textColor=\"neutral500\" variant=\"sigma\" tag=\"h2\" id={uid}>\n {formatMessage(title)}\n </Typography>\n </Flex>\n {link && (\n <Typography\n tag={ReactRouterLink}\n variant=\"omega\"\n textColor=\"primary600\"\n style={{ textDecoration: 'none' }}\n textAlign=\"right\"\n to={link.href}\n onClick={handleClickOnLink}\n >\n {formatMessage(link.label)}\n </Typography>\n )}\n <WidgetActions gap={2}>\n <IconButton\n variant=\"danger-light\"\n size=\"XS\"\n onClick={handleDeleteWidget}\n label={formatMessage({\n id: 'HomePage.widget.delete',\n defaultMessage: 'Delete',\n })}\n cursor=\"pointer\"\n >\n <Trash />\n </IconButton>\n <DragIconButton\n variant=\"tertiary\"\n size=\"XS\"\n ref={drag}\n tabIndex={-1}\n label={formatMessage({\n id: 'HomePage.widget.drag',\n defaultMessage: 'Drag to move',\n })}\n cursor=\"grab\"\n >\n <Drag />\n </DragIconButton>\n </WidgetActions>\n </Flex>\n <ScrollArea>\n <Box width=\"100%\" height=\"261px\" overflow=\"auto\" tag=\"main\">\n {children}\n </Box>\n </ScrollArea>\n </WidgetContainer>\n );\n};\n"],"names":["WidgetActions","styled","Flex","DragIconButton","IconButton","WidgetContainer","theme","breakpoints","medium","WidgetRoot","title","icon","PuzzlePiece","children","link","uid","findWidget","deleteWidget","onDragStart","onDragEnd","component","trackUsage","useTracking","formatMessage","useIntl","Icon","handleClickOnLink","widgetUID","handleDeleteWidget","drag","preview","useDrag","type","item","id","originalIndex","index","collect","monitor","isDragging","end","React","useEffect","getEmptyImage","captureDraggingState","_jsxs","width","hasRadius","direction","alignItems","background","borderColor","shadow","tag","gap","padding","position","aria-labelledby","tabIndex","WIDGET_DATA_ATTRIBUTES","WIDGET_ID","style","transition","minHeight","marginRight","_jsx","fill","aria-hidden","Typography","textColor","variant","ReactRouterLink","textDecoration","textAlign","to","href","onClick","label","size","defaultMessage","cursor","Trash","ref","Drag","ScrollArea","Box","height","overflow"],"mappings":"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"}
1
+ {"version":3,"file":"WidgetRoot.mjs","sources":["../../../../../admin/src/components/WidgetRoot.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography, ScrollArea, IconButton } from '@strapi/design-system';\nimport { PuzzlePiece, Trash, Drag } from '@strapi/icons';\nimport { useDrag } from 'react-dnd';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useTracking } from '../features/Tracking';\nimport { WIDGET_DATA_ATTRIBUTES } from '../utils/widgetLayout';\n\nimport type { FindWidgetFunction, WidgetIdFunction, DragEndFunction } from '../features/Widgets';\nimport type { WidgetType } from '@strapi/admin/strapi-admin';\n\nexport interface BaseWidgetProps\n extends Pick<WidgetType, 'title' | 'icon' | 'permissions' | 'link' | 'uid'> {\n findWidget?: FindWidgetFunction;\n deleteWidget?: WidgetIdFunction;\n onDragStart?: WidgetIdFunction;\n onDragEnd?: DragEndFunction;\n}\n\nexport interface WidgetRootProps extends BaseWidgetProps {\n children: React.ReactNode;\n component?: () => Promise<React.ComponentType>;\n}\n\nconst WidgetActions = styled(Flex)`\n display: flex;\n\n @media (hover: hover) and (pointer: fine) {\n display: none;\n }\n`;\n\nconst DragIconButton = styled(IconButton)`\n display: none;\n\n @media (hover: hover) and (pointer: fine) {\n display: flex;\n }\n`;\n\nconst WidgetContainer = styled(Flex)`\n @media (hover: hover) and (pointer: fine) {\n &:hover ${WidgetActions} {\n display: flex;\n }\n }\n\n &:focus-within ${WidgetActions} {\n display: flex;\n }\n\n &:focus-within ${DragIconButton} {\n pointer-events: none;\n\n ${({ theme }) => theme.breakpoints.medium} {\n pointer-events: auto;\n }\n }\n`;\n\nexport const WidgetRoot = ({\n title,\n icon = PuzzlePiece,\n children,\n link,\n uid,\n findWidget,\n deleteWidget,\n onDragStart,\n onDragEnd,\n component,\n}: WidgetRootProps) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const Icon = icon;\n\n const handleClickOnLink = () => {\n trackUsage('didOpenHomeWidgetLink', { widgetUID: uid });\n };\n\n const handleDeleteWidget = () => {\n deleteWidget?.(uid);\n };\n\n const [, drag, preview] = useDrag(\n () => ({\n type: 'widget',\n item: () => {\n onDragStart?.(uid);\n return {\n id: uid,\n originalIndex: findWidget?.(uid)?.index ?? 0,\n title,\n icon,\n link,\n component,\n };\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n end: () => {\n onDragEnd?.();\n },\n }),\n [uid, findWidget, onDragStart, onDragEnd, title, icon, link, component]\n );\n\n // Suppress default drag preview\n React.useEffect(() => {\n preview(getEmptyImage(), { captureDraggingState: true });\n }, [preview]);\n\n return (\n <WidgetContainer\n width=\"100%\"\n hasRadius\n direction=\"column\"\n alignItems=\"flex-start\"\n background={'neutral0'}\n borderColor={'neutral150'}\n shadow=\"tableShadow\"\n tag=\"section\"\n gap={4}\n padding={6}\n position=\"relative\"\n aria-labelledby={uid}\n tabIndex={0}\n {...{ [WIDGET_DATA_ATTRIBUTES.WIDGET_ID]: uid }}\n style={{\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n }}\n >\n <Flex\n direction=\"row\"\n gap={2}\n width=\"100%\"\n tag=\"header\"\n alignItems=\"center\"\n minHeight=\"2.25rem\"\n >\n <Flex gap={2} marginRight=\"auto\">\n <Icon fill=\"neutral500\" aria-hidden />\n <Typography textColor=\"neutral500\" variant=\"sigma\" tag=\"h2\" id={uid}>\n {formatMessage(title)}\n </Typography>\n </Flex>\n {link && (\n <Typography\n tag={ReactRouterLink}\n variant=\"omega\"\n textColor=\"primary600\"\n style={{ textDecoration: 'none' }}\n textAlign=\"right\"\n to={link.href}\n onClick={handleClickOnLink}\n >\n {formatMessage(link.label)}\n </Typography>\n )}\n <WidgetActions gap={2}>\n <IconButton\n variant=\"danger-light\"\n size=\"XS\"\n onClick={handleDeleteWidget}\n label={formatMessage({\n id: 'HomePage.widget.delete',\n defaultMessage: 'Delete',\n })}\n cursor=\"pointer\"\n >\n <Trash />\n </IconButton>\n <DragIconButton\n variant=\"tertiary\"\n size=\"XS\"\n ref={drag}\n tabIndex={-1}\n label={formatMessage({\n id: 'HomePage.widget.drag',\n defaultMessage: 'Drag to move',\n })}\n cursor=\"grab\"\n >\n <Drag />\n </DragIconButton>\n </WidgetActions>\n </Flex>\n <ScrollArea>\n <Box width=\"100%\" height=\"261px\" overflow=\"auto\" tag=\"main\">\n {children}\n </Box>\n </ScrollArea>\n </WidgetContainer>\n );\n};\n"],"names":["WidgetActions","styled","Flex","DragIconButton","IconButton","WidgetContainer","theme","breakpoints","medium","WidgetRoot","title","icon","PuzzlePiece","children","link","uid","findWidget","deleteWidget","onDragStart","onDragEnd","component","trackUsage","useTracking","formatMessage","useIntl","Icon","handleClickOnLink","widgetUID","handleDeleteWidget","drag","preview","useDrag","type","item","id","originalIndex","index","collect","monitor","isDragging","end","React","useEffect","getEmptyImage","captureDraggingState","_jsxs","width","hasRadius","direction","alignItems","background","borderColor","shadow","tag","gap","padding","position","aria-labelledby","tabIndex","WIDGET_DATA_ATTRIBUTES","WIDGET_ID","style","transition","minHeight","marginRight","_jsx","fill","aria-hidden","Typography","textColor","variant","ReactRouterLink","textDecoration","textAlign","to","href","onClick","label","size","defaultMessage","cursor","Trash","ref","Drag","ScrollArea","Box","height","overflow"],"mappings":"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"}
@@ -6,14 +6,14 @@ 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 homepage = require('../services/homepage.js');
11
11
  var users = require('../utils/users.js');
12
12
  var WidgetHelpers = require('./WidgetHelpers.js');
13
13
 
14
14
  /* -------------------------------------------------------------------------------------------------
15
15
  * ProfileWidget
16
- * -----------------------------------------------------------------------------------------------*/ const DisplayNameTypography = styled.styled(designSystem.Typography)`
16
+ * -----------------------------------------------------------------------------------------------*/ const DisplayNameTypography = styledComponents.styled(designSystem.Typography)`
17
17
  font-size: 2.4rem;
18
18
  `;
19
19
  const ProfileWidget = ()=>{
@@ -54,7 +54,7 @@ const ProfileWidget = ()=>{
54
54
  };
55
55
  /* -------------------------------------------------------------------------------------------------
56
56
  * Key Statistics
57
- * -----------------------------------------------------------------------------------------------*/ const Grid = styled.styled(designSystem.Box)`
57
+ * -----------------------------------------------------------------------------------------------*/ const Grid = styledComponents.styled(designSystem.Box)`
58
58
  display: grid;
59
59
  grid-template-columns: 1fr 1fr;
60
60
  gap: 0;
@@ -62,7 +62,7 @@ const ProfileWidget = ()=>{
62
62
  border-radius: ${({ theme })=>theme.borderRadius};
63
63
  overflow: hidden;
64
64
  `;
65
- const GridCell = styled.styled(designSystem.Box)`
65
+ const GridCell = styledComponents.styled(designSystem.Box)`
66
66
  border-bottom: 1px solid ${({ theme })=>theme.colors.neutral200};
67
67
  border-right: 1px solid ${({ theme })=>theme.colors.neutral200};
68
68
  display: flex;
@@ -82,7 +82,7 @@ const formatNumber = ({ locale, number })=>{
82
82
  maximumFractionDigits: 1
83
83
  }).format(number);
84
84
  };
85
- const LinkCell = styled.styled(reactRouterDom.Link)`
85
+ const LinkCell = styledComponents.styled(reactRouterDom.Link)`
86
86
  text-decoration: none;
87
87
  padding: ${({ theme })=>theme.spaces[3]};
88
88
  `;