@strapi/admin 5.49.0 → 5.50.1

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 (626) 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 +100 -5
  10. package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
  11. package/dist/admin/admin/src/components/ErrorElement.mjs +99 -4
  12. package/dist/admin/admin/src/components/ErrorElement.mjs.map +1 -1
  13. package/dist/admin/admin/src/components/Form.js +41 -27
  14. package/dist/admin/admin/src/components/Form.js.map +1 -1
  15. package/dist/admin/admin/src/components/Form.mjs +41 -27
  16. package/dist/admin/admin/src/components/Form.mjs.map +1 -1
  17. package/dist/admin/admin/src/components/FormInputs/Boolean.js +3 -2
  18. package/dist/admin/admin/src/components/FormInputs/Boolean.js.map +1 -1
  19. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs +3 -2
  20. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs.map +1 -1
  21. package/dist/admin/admin/src/components/FormInputs/Date.js +1 -1
  22. package/dist/admin/admin/src/components/FormInputs/Date.js.map +1 -1
  23. package/dist/admin/admin/src/components/FormInputs/Date.mjs +1 -1
  24. package/dist/admin/admin/src/components/FormInputs/Date.mjs.map +1 -1
  25. package/dist/admin/admin/src/components/FormInputs/Email.js.map +1 -1
  26. package/dist/admin/admin/src/components/FormInputs/Email.mjs.map +1 -1
  27. package/dist/admin/admin/src/components/FormInputs/Enumeration.js +4 -1
  28. package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
  29. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs +4 -1
  30. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
  31. package/dist/admin/admin/src/components/FormInputs/Json.js +2 -1
  32. package/dist/admin/admin/src/components/FormInputs/Json.js.map +1 -1
  33. package/dist/admin/admin/src/components/FormInputs/Json.mjs +2 -1
  34. package/dist/admin/admin/src/components/FormInputs/Json.mjs.map +1 -1
  35. package/dist/admin/admin/src/components/FormInputs/Password.js.map +1 -1
  36. package/dist/admin/admin/src/components/FormInputs/Password.mjs.map +1 -1
  37. package/dist/admin/admin/src/components/FormInputs/Renderer.js +18 -26
  38. package/dist/admin/admin/src/components/FormInputs/Renderer.js.map +1 -1
  39. package/dist/admin/admin/src/components/FormInputs/Renderer.mjs +20 -28
  40. package/dist/admin/admin/src/components/FormInputs/Renderer.mjs.map +1 -1
  41. package/dist/admin/admin/src/components/FormInputs/String.js.map +1 -1
  42. package/dist/admin/admin/src/components/FormInputs/String.mjs.map +1 -1
  43. package/dist/admin/admin/src/components/FormInputs/Textarea.js.map +1 -1
  44. package/dist/admin/admin/src/components/FormInputs/Textarea.mjs.map +1 -1
  45. package/dist/admin/admin/src/components/GapDropZone.js +2 -2
  46. package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
  47. package/dist/admin/admin/src/components/GradientBadge.js +3 -3
  48. package/dist/admin/admin/src/components/GradientBadge.js.map +1 -1
  49. package/dist/admin/admin/src/components/GuidedTour/Overview.js +8 -8
  50. package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
  51. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js +4 -4
  52. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
  53. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.mjs.map +1 -1
  54. package/dist/admin/admin/src/components/GuidedTour/Tours.js +2 -2
  55. package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
  56. package/dist/admin/admin/src/components/Layouts/ActionLayout.js +2 -2
  57. package/dist/admin/admin/src/components/Layouts/ActionLayout.js.map +1 -1
  58. package/dist/admin/admin/src/components/Layouts/GridLayout.js +2 -2
  59. package/dist/admin/admin/src/components/Layouts/GridLayout.js.map +1 -1
  60. package/dist/admin/admin/src/components/Layouts/Layout.js +4 -4
  61. package/dist/admin/admin/src/components/Layouts/Layout.js.map +1 -1
  62. package/dist/admin/admin/src/components/LazyOutlet.js +57 -0
  63. package/dist/admin/admin/src/components/LazyOutlet.js.map +1 -0
  64. package/dist/admin/admin/src/components/LazyOutlet.mjs +35 -0
  65. package/dist/admin/admin/src/components/LazyOutlet.mjs.map +1 -0
  66. package/dist/admin/admin/src/components/LeftMenu.js +3 -3
  67. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  68. package/dist/admin/admin/src/components/MainNav/MainNav.js +2 -2
  69. package/dist/admin/admin/src/components/MainNav/MainNav.js.map +1 -1
  70. package/dist/admin/admin/src/components/MainNav/MainNavLinks.js +4 -4
  71. package/dist/admin/admin/src/components/MainNav/MainNavLinks.js.map +1 -1
  72. package/dist/admin/admin/src/components/MainNav/NavBrand.js +2 -2
  73. package/dist/admin/admin/src/components/MainNav/NavBrand.js.map +1 -1
  74. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js +3 -3
  75. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js.map +1 -1
  76. package/dist/admin/admin/src/components/MainNav/NavLink.js +8 -8
  77. package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
  78. package/dist/admin/admin/src/components/MainNav/NavUser.js +17 -7
  79. package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
  80. package/dist/admin/admin/src/components/MainNav/NavUser.mjs +10 -0
  81. package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
  82. package/dist/admin/admin/src/components/MainNav/TrialCountdown.js +3 -3
  83. package/dist/admin/admin/src/components/MainNav/TrialCountdown.js.map +1 -1
  84. package/dist/admin/admin/src/components/NpsSurvey.js +2 -2
  85. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  86. package/dist/admin/admin/src/components/RelativeTime.js +3 -2
  87. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  88. package/dist/admin/admin/src/components/RelativeTime.mjs +3 -2
  89. package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
  90. package/dist/admin/admin/src/components/ResizeIndicator.js +6 -6
  91. package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
  92. package/dist/admin/admin/src/components/SubNav.js +11 -9
  93. package/dist/admin/admin/src/components/SubNav.js.map +1 -1
  94. package/dist/admin/admin/src/components/SubNav.mjs +4 -2
  95. package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
  96. package/dist/admin/admin/src/components/Table.js +9 -5
  97. package/dist/admin/admin/src/components/Table.js.map +1 -1
  98. package/dist/admin/admin/src/components/Table.mjs +6 -2
  99. package/dist/admin/admin/src/components/Table.mjs.map +1 -1
  100. package/dist/admin/admin/src/components/Theme.js +2 -2
  101. package/dist/admin/admin/src/components/Theme.js.map +1 -1
  102. package/dist/admin/admin/src/components/UnauthenticatedLogo.js +2 -2
  103. package/dist/admin/admin/src/components/UnauthenticatedLogo.js.map +1 -1
  104. package/dist/admin/admin/src/components/UpsellBanner.js +3 -3
  105. package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
  106. package/dist/admin/admin/src/components/WidgetRoot.js +4 -7
  107. package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
  108. package/dist/admin/admin/src/components/WidgetRoot.mjs +1 -1
  109. package/dist/admin/admin/src/components/WidgetRoot.mjs.map +1 -1
  110. package/dist/admin/admin/src/components/Widgets.js +5 -5
  111. package/dist/admin/admin/src/components/Widgets.js.map +1 -1
  112. package/dist/admin/admin/src/core/apis/Plugin.js.map +1 -1
  113. package/dist/admin/admin/src/core/apis/Plugin.mjs.map +1 -1
  114. package/dist/admin/admin/src/core/apis/Widgets.js +1 -1
  115. package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
  116. package/dist/admin/admin/src/core/apis/Widgets.mjs +1 -1
  117. package/dist/admin/admin/src/core/apis/Widgets.mjs.map +1 -1
  118. package/dist/admin/admin/src/core/apis/router.js +19 -17
  119. package/dist/admin/admin/src/core/apis/router.js.map +1 -1
  120. package/dist/admin/admin/src/core/apis/router.mjs +19 -17
  121. package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
  122. package/dist/admin/admin/src/core/store/configure.js.map +1 -1
  123. package/dist/admin/admin/src/core/store/configure.mjs.map +1 -1
  124. package/dist/admin/admin/src/core/utils/createHook.js.map +1 -1
  125. package/dist/admin/admin/src/core/utils/createHook.mjs.map +1 -1
  126. package/dist/admin/admin/src/features/Tracking.js +3 -1
  127. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  128. package/dist/admin/admin/src/features/Tracking.mjs +3 -1
  129. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  130. package/dist/admin/admin/src/features/Widgets.js.map +1 -1
  131. package/dist/admin/admin/src/features/Widgets.mjs.map +1 -1
  132. package/dist/admin/admin/src/hooks/useMediaQuery.js +4 -4
  133. package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -1
  134. package/dist/admin/admin/src/hooks/useMenu.js +5 -3
  135. package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
  136. package/dist/admin/admin/src/hooks/useMenu.mjs +5 -3
  137. package/dist/admin/admin/src/hooks/useMenu.mjs.map +1 -1
  138. package/dist/admin/admin/src/hooks/useQueryParams.js +0 -1
  139. package/dist/admin/admin/src/hooks/useQueryParams.js.map +1 -1
  140. package/dist/admin/admin/src/hooks/useQueryParams.mjs +0 -1
  141. package/dist/admin/admin/src/hooks/useQueryParams.mjs.map +1 -1
  142. package/dist/admin/admin/src/hooks/useThrottledCallback.js.map +1 -1
  143. package/dist/admin/admin/src/hooks/useThrottledCallback.mjs.map +1 -1
  144. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +5 -3
  145. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  146. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +5 -3
  147. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  148. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js +3 -3
  149. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js.map +1 -1
  150. package/dist/admin/admin/src/pages/Auth/AuthPage.js +3 -2
  151. package/dist/admin/admin/src/pages/Auth/AuthPage.js.map +1 -1
  152. package/dist/admin/admin/src/pages/Auth/AuthPage.mjs +3 -2
  153. package/dist/admin/admin/src/pages/Auth/AuthPage.mjs.map +1 -1
  154. package/dist/admin/admin/src/pages/Auth/components/Register.js +17 -9
  155. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  156. package/dist/admin/admin/src/pages/Auth/components/Register.mjs +15 -7
  157. package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
  158. package/dist/admin/admin/src/pages/Home/HomePage.js +2 -2
  159. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  160. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js +3 -6
  161. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -1
  162. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs +1 -1
  163. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs.map +1 -1
  164. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +4 -8
  165. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
  166. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs +1 -1
  167. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -1
  168. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +4 -8
  169. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
  170. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs +1 -1
  171. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs.map +1 -1
  172. package/dist/admin/admin/src/pages/SessionsPage.js +318 -0
  173. package/dist/admin/admin/src/pages/SessionsPage.js.map +1 -0
  174. package/dist/admin/admin/src/pages/SessionsPage.mjs +296 -0
  175. package/dist/admin/admin/src/pages/SessionsPage.mjs.map +1 -0
  176. package/dist/admin/admin/src/pages/Settings/Layout.js +4 -1
  177. package/dist/admin/admin/src/pages/Settings/Layout.js.map +1 -1
  178. package/dist/admin/admin/src/pages/Settings/Layout.mjs +5 -2
  179. package/dist/admin/admin/src/pages/Settings/Layout.mjs.map +1 -1
  180. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +2 -2
  181. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  182. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  183. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +2 -2
  184. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  185. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +2 -2
  186. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  187. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js +2 -2
  188. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js.map +1 -1
  189. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +2 -2
  190. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
  191. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +4 -4
  192. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  193. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js.map +1 -1
  194. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.mjs.map +1 -1
  195. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +1 -2
  196. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  197. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +1 -2
  198. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  199. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +2 -2
  200. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
  201. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +9 -2
  202. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
  203. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs +7 -0
  204. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs.map +1 -1
  205. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js +7 -1
  206. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
  207. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs +7 -1
  208. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs.map +1 -1
  209. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.js +2 -2
  210. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.js.map +1 -1
  211. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +44 -10
  212. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  213. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs +34 -0
  214. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
  215. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js +3 -3
  216. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js.map +1 -1
  217. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +5 -5
  218. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  219. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.js +2 -2
  220. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.js.map +1 -1
  221. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +38 -2
  222. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
  223. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs +38 -2
  224. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
  225. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +3 -3
  226. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  227. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.js.map +1 -1
  228. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.mjs.map +1 -1
  229. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js +18 -1
  230. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js.map +1 -1
  231. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs +18 -1
  232. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs.map +1 -1
  233. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.js +59 -0
  234. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.js.map +1 -0
  235. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.mjs +52 -0
  236. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.mjs.map +1 -0
  237. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
  238. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
  239. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js +3 -3
  240. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js.map +1 -1
  241. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js +2 -2
  242. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js.map +1 -1
  243. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +2 -2
  244. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
  245. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs.map +1 -1
  246. package/dist/admin/admin/src/router.js +9 -0
  247. package/dist/admin/admin/src/router.js.map +1 -1
  248. package/dist/admin/admin/src/router.mjs +9 -0
  249. package/dist/admin/admin/src/router.mjs.map +1 -1
  250. package/dist/admin/admin/src/services/auth.js +43 -2
  251. package/dist/admin/admin/src/services/auth.js.map +1 -1
  252. package/dist/admin/admin/src/services/auth.mjs +41 -3
  253. package/dist/admin/admin/src/services/auth.mjs.map +1 -1
  254. package/dist/admin/admin/src/translations/en.json.js +22 -0
  255. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  256. package/dist/admin/admin/src/translations/en.json.mjs +22 -0
  257. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  258. package/dist/admin/admin/src/translations/ja.json.js +726 -237
  259. package/dist/admin/admin/src/translations/ja.json.js.map +1 -1
  260. package/dist/admin/admin/src/translations/ja.json.mjs +723 -238
  261. package/dist/admin/admin/src/translations/ja.json.mjs.map +1 -1
  262. package/dist/admin/admin/src/translations/languageNativeNames.js +1 -0
  263. package/dist/admin/admin/src/translations/languageNativeNames.js.map +1 -1
  264. package/dist/admin/admin/src/translations/languageNativeNames.mjs +1 -0
  265. package/dist/admin/admin/src/translations/languageNativeNames.mjs.map +1 -1
  266. package/dist/admin/admin/src/translations/pl.json.js +22 -0
  267. package/dist/admin/admin/src/translations/pl.json.js.map +1 -1
  268. package/dist/admin/admin/src/translations/pl.json.mjs +22 -0
  269. package/dist/admin/admin/src/translations/pl.json.mjs.map +1 -1
  270. package/dist/admin/admin/src/utils/arrays.js.map +1 -1
  271. package/dist/admin/admin/src/utils/arrays.mjs.map +1 -1
  272. package/dist/admin/admin/src/utils/baseQuery.js +1 -1
  273. package/dist/admin/admin/src/utils/baseQuery.js.map +1 -1
  274. package/dist/admin/admin/src/utils/baseQuery.mjs +1 -1
  275. package/dist/admin/admin/src/utils/baseQuery.mjs.map +1 -1
  276. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  277. package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
  278. package/dist/admin/admin/src/utils/objects.js +43 -11
  279. package/dist/admin/admin/src/utils/objects.js.map +1 -1
  280. package/dist/admin/admin/src/utils/objects.mjs +43 -11
  281. package/dist/admin/admin/src/utils/objects.mjs.map +1 -1
  282. package/dist/admin/admin/src/utils/once.js.map +1 -1
  283. package/dist/admin/admin/src/utils/once.mjs.map +1 -1
  284. package/dist/admin/admin/src/utils/retryDynamicImport.js +85 -0
  285. package/dist/admin/admin/src/utils/retryDynamicImport.js.map +1 -0
  286. package/dist/admin/admin/src/utils/retryDynamicImport.mjs +80 -0
  287. package/dist/admin/admin/src/utils/retryDynamicImport.mjs.map +1 -0
  288. package/dist/admin/admin/src/utils/rulesEngine.js +2 -1
  289. package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
  290. package/dist/admin/admin/src/utils/rulesEngine.mjs +2 -1
  291. package/dist/admin/admin/src/utils/rulesEngine.mjs.map +1 -1
  292. package/dist/admin/admin/src/utils/shims.js.map +1 -1
  293. package/dist/admin/admin/src/utils/shims.mjs.map +1 -1
  294. package/dist/admin/admin/src/utils/widgetVisibility.js +16 -1
  295. package/dist/admin/admin/src/utils/widgetVisibility.js.map +1 -1
  296. package/dist/admin/admin/src/utils/widgetVisibility.mjs +14 -2
  297. package/dist/admin/admin/src/utils/widgetVisibility.mjs.map +1 -1
  298. package/dist/admin/admin/tests/server.js +25 -0
  299. package/dist/admin/admin/tests/server.js.map +1 -1
  300. package/dist/admin/admin/tests/server.mjs +25 -0
  301. package/dist/admin/admin/tests/server.mjs.map +1 -1
  302. package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js +2 -2
  303. package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js.map +1 -1
  304. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js +2 -2
  305. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
  306. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.mjs +2 -2
  307. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.mjs.map +1 -1
  308. package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js +2 -2
  309. package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js.map +1 -1
  310. package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js +2 -2
  311. package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js.map +1 -1
  312. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js +3 -3
  313. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js.map +1 -1
  314. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js +3 -3
  315. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
  316. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js.map +1 -1
  317. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs.map +1 -1
  318. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.js.map +1 -1
  319. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.mjs.map +1 -1
  320. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js +2 -2
  321. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
  322. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
  323. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
  324. package/dist/admin/index.js +2 -0
  325. package/dist/admin/index.js.map +1 -1
  326. package/dist/admin/index.mjs +1 -0
  327. package/dist/admin/index.mjs.map +1 -1
  328. package/dist/admin/src/StrapiApp.d.ts +7 -7
  329. package/dist/admin/src/components/DescriptionComponentRenderer.d.ts +2 -1
  330. package/dist/admin/src/components/Form.d.ts +14 -12
  331. package/dist/admin/src/components/FormInputs/Boolean.d.ts +0 -1
  332. package/dist/admin/src/components/FormInputs/Checkbox.d.ts +0 -1
  333. package/dist/admin/src/components/FormInputs/DateTime.d.ts +0 -1
  334. package/dist/admin/src/components/FormInputs/Email.d.ts +0 -1
  335. package/dist/admin/src/components/FormInputs/Enumeration.d.ts +0 -1
  336. package/dist/admin/src/components/FormInputs/Number.d.ts +0 -1
  337. package/dist/admin/src/components/FormInputs/Password.d.ts +0 -1
  338. package/dist/admin/src/components/FormInputs/Renderer.d.ts +1 -2
  339. package/dist/admin/src/components/FormInputs/String.d.ts +0 -1
  340. package/dist/admin/src/components/FormInputs/Textarea.d.ts +0 -1
  341. package/dist/admin/src/components/FormInputs/Time.d.ts +0 -1
  342. package/dist/admin/src/components/GuidedTour/GuidedTourProvider.d.ts +0 -1
  343. package/dist/admin/src/components/GuidedTour/Steps/Step.d.ts +1 -1
  344. package/dist/admin/src/components/LazyOutlet.d.ts +20 -0
  345. package/dist/admin/src/components/MainNav/MainNav.d.ts +1 -1
  346. package/dist/admin/src/components/MainNav/NavUser.d.ts +0 -1
  347. package/dist/admin/src/components/SubNav.d.ts +6 -7
  348. package/dist/admin/src/components/Table.d.ts +3 -2
  349. package/dist/admin/src/core/apis/Plugin.d.ts +2 -2
  350. package/dist/admin/src/core/apis/Widgets.d.ts +0 -1
  351. package/dist/admin/src/core/apis/router.d.ts +1 -1
  352. package/dist/admin/src/core/store/configure.d.ts +2 -2
  353. package/dist/admin/src/core/utils/createHook.d.ts +7 -7
  354. package/dist/admin/src/features/AppInfo.d.ts +1 -2
  355. package/dist/admin/src/features/StrapiApp.d.ts +1 -2
  356. package/dist/admin/src/hooks/useAPIErrorHandler.d.ts +1 -1
  357. package/dist/admin/src/hooks/useAdminRoles.d.ts +3 -3
  358. package/dist/admin/src/hooks/useFetchClient.d.ts +1 -1
  359. package/dist/admin/src/hooks/useMenu.d.ts +1 -1
  360. package/dist/admin/src/hooks/usePersistentState.d.ts +0 -1
  361. package/dist/admin/src/hooks/useQueryParams.d.ts +3 -2
  362. package/dist/admin/src/hooks/useThrottledCallback.d.ts +1 -2
  363. package/dist/admin/src/index.d.ts +1 -0
  364. package/dist/admin/src/layouts/UnauthenticatedLayout.d.ts +2 -2
  365. package/dist/admin/src/pages/SessionsPage.d.ts +2 -0
  366. package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.d.ts +1 -1
  367. package/dist/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.d.ts +2 -3
  368. package/dist/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.d.ts +2 -2
  369. package/dist/admin/src/pages/Settings/pages/Roles/components/HiddenAction.d.ts +0 -1
  370. package/dist/admin/src/pages/Settings/pages/Roles/components/Permissions.d.ts +2 -0
  371. package/dist/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.d.ts +1 -1
  372. package/dist/admin/src/pages/Settings/pages/Roles/utils/forms.d.ts +1 -1
  373. package/dist/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.d.ts +5 -0
  374. package/dist/admin/src/pages/Settings/pages/Roles/utils/permissions.d.ts +3 -1
  375. package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +8 -8
  376. package/dist/admin/src/reducer.d.ts +1 -1
  377. package/dist/admin/src/services/admin.d.ts +8 -8
  378. package/dist/admin/src/services/api.d.ts +1 -1
  379. package/dist/admin/src/services/apiTokens.d.ts +3 -3
  380. package/dist/admin/src/services/auth.d.ts +29 -27
  381. package/dist/admin/src/services/contentApi.d.ts +2 -2
  382. package/dist/admin/src/services/contentManager.d.ts +1 -1
  383. package/dist/admin/src/services/homepage.d.ts +3 -3
  384. package/dist/admin/src/services/transferTokens.d.ts +1 -1
  385. package/dist/admin/src/services/users.d.ts +15 -15
  386. package/dist/admin/src/services/webhooks.d.ts +4 -4
  387. package/dist/admin/src/translations/languageNativeNames.d.ts +1 -0
  388. package/dist/admin/src/utils/arrays.d.ts +1 -1
  389. package/dist/admin/src/utils/baseQuery.d.ts +1 -1
  390. package/dist/admin/src/utils/getFetchClient.d.ts +7 -7
  391. package/dist/admin/src/utils/locales.d.ts +0 -1
  392. package/dist/admin/src/utils/objects.d.ts +6 -4
  393. package/dist/admin/src/utils/once.d.ts +1 -1
  394. package/dist/admin/src/utils/retryDynamicImport.d.ts +19 -0
  395. package/dist/admin/src/utils/shims.d.ts +1 -1
  396. package/dist/admin/src/utils/widgetVisibility.d.ts +11 -0
  397. package/dist/admin/tests/store.d.ts +4 -4
  398. package/dist/admin/tests/utils.d.ts +5 -5
  399. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.d.ts +1 -1
  400. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/tableHeaders.d.ts +2 -1
  401. package/dist/ee/admin/src/services/ai.d.ts +5 -5
  402. package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
  403. package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts +1 -1
  404. package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts.map +1 -1
  405. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts +3 -3
  406. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -1
  407. package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts +2 -2
  408. package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts.map +1 -1
  409. package/dist/ee/server/src/bootstrap.d.ts.map +1 -1
  410. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts +30 -31
  411. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts.map +1 -1
  412. package/dist/ee/server/src/controllers/index.d.ts +1 -2
  413. package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
  414. package/dist/ee/server/src/controllers/user.d.ts +1 -1
  415. package/dist/ee/server/src/destroy.d.ts.map +1 -1
  416. package/dist/ee/server/src/index.d.ts +2 -3
  417. package/dist/ee/server/src/index.d.ts.map +1 -1
  418. package/dist/ee/server/src/register.d.ts.map +1 -1
  419. package/dist/ee/server/src/routes/utils.d.ts.map +1 -1
  420. package/dist/ee/server/src/services/auth.d.ts.map +1 -1
  421. package/dist/ee/server/src/services/index.d.ts +1 -1
  422. package/dist/ee/server/src/services/metrics.d.ts.map +1 -1
  423. package/dist/ee/server/src/services/passport/sso.d.ts.map +1 -1
  424. package/dist/ee/server/src/services/persist-tables.d.ts +1 -1
  425. package/dist/ee/server/src/services/persist-tables.d.ts.map +1 -1
  426. package/dist/ee/server/src/services/role.d.ts.map +1 -1
  427. package/dist/ee/server/src/services/user.d.ts.map +1 -1
  428. package/dist/ee/server/src/utils/index.d.ts.map +1 -1
  429. package/dist/ee/server/src/utils/sso-lock.d.ts.map +1 -1
  430. package/dist/ee/server/src/validation/authentication.d.ts +2 -2
  431. package/dist/ee/server/src/validation/role.d.ts +6 -6
  432. package/dist/ee/server/src/validation/role.d.ts.map +1 -1
  433. package/dist/ee/server/src/validation/user.d.ts.map +1 -1
  434. package/dist/server/server/src/content-types/session.js +6 -0
  435. package/dist/server/server/src/content-types/session.js.map +1 -1
  436. package/dist/server/server/src/content-types/session.mjs +6 -0
  437. package/dist/server/server/src/content-types/session.mjs.map +1 -1
  438. package/dist/server/server/src/controllers/admin.js.map +1 -1
  439. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  440. package/dist/server/server/src/controllers/authenticated-session.js +61 -0
  441. package/dist/server/server/src/controllers/authenticated-session.js.map +1 -0
  442. package/dist/server/server/src/controllers/authenticated-session.mjs +59 -0
  443. package/dist/server/server/src/controllers/authenticated-session.mjs.map +1 -0
  444. package/dist/server/server/src/controllers/authentication.js +11 -4
  445. package/dist/server/server/src/controllers/authentication.js.map +1 -1
  446. package/dist/server/server/src/controllers/authentication.mjs +12 -5
  447. package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
  448. package/dist/server/server/src/controllers/index.js +2 -0
  449. package/dist/server/server/src/controllers/index.js.map +1 -1
  450. package/dist/server/server/src/controllers/index.mjs +2 -0
  451. package/dist/server/server/src/controllers/index.mjs.map +1 -1
  452. package/dist/server/server/src/controllers/role.js +2 -4
  453. package/dist/server/server/src/controllers/role.js.map +1 -1
  454. package/dist/server/server/src/controllers/role.mjs +2 -4
  455. package/dist/server/server/src/controllers/role.mjs.map +1 -1
  456. package/dist/server/server/src/routes/serve-admin-panel.js +1 -1
  457. package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
  458. package/dist/server/server/src/routes/serve-admin-panel.mjs +1 -1
  459. package/dist/server/server/src/routes/serve-admin-panel.mjs.map +1 -1
  460. package/dist/server/server/src/routes/users.js +12 -26
  461. package/dist/server/server/src/routes/users.js.map +1 -1
  462. package/dist/server/server/src/routes/users.mjs +12 -26
  463. package/dist/server/server/src/routes/users.mjs.map +1 -1
  464. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js +0 -2
  465. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
  466. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs +0 -2
  467. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
  468. package/dist/server/server/src/services/permission/sections-builder/handlers.js +9 -2
  469. package/dist/server/server/src/services/permission/sections-builder/handlers.js.map +1 -1
  470. package/dist/server/server/src/services/permission/sections-builder/handlers.mjs +9 -2
  471. package/dist/server/server/src/services/permission/sections-builder/handlers.mjs.map +1 -1
  472. package/dist/server/server/src/services/role.js +7 -2
  473. package/dist/server/server/src/services/role.js.map +1 -1
  474. package/dist/server/server/src/services/role.mjs +7 -2
  475. package/dist/server/server/src/services/role.mjs.map +1 -1
  476. package/dist/server/server/src/strategies/admin.js +4 -0
  477. package/dist/server/server/src/strategies/admin.js.map +1 -1
  478. package/dist/server/server/src/strategies/admin.mjs +4 -0
  479. package/dist/server/server/src/strategies/admin.mjs.map +1 -1
  480. package/dist/server/server/src/validation/common-validators.js +19 -11
  481. package/dist/server/server/src/validation/common-validators.js.map +1 -1
  482. package/dist/server/server/src/validation/common-validators.mjs +19 -11
  483. package/dist/server/server/src/validation/common-validators.mjs.map +1 -1
  484. package/dist/server/server/src/validation/permission.js +1 -1
  485. package/dist/server/server/src/validation/permission.js.map +1 -1
  486. package/dist/server/server/src/validation/permission.mjs +1 -1
  487. package/dist/server/server/src/validation/permission.mjs.map +1 -1
  488. package/dist/server/server/src/validation/role.js +2 -2
  489. package/dist/server/server/src/validation/role.js.map +1 -1
  490. package/dist/server/server/src/validation/role.mjs +2 -2
  491. package/dist/server/server/src/validation/role.mjs.map +1 -1
  492. package/dist/server/src/ai/controllers/ai.d.ts +3 -3
  493. package/dist/server/src/ai/services/ai.d.ts.map +1 -1
  494. package/dist/server/src/bootstrap.d.ts.map +1 -1
  495. package/dist/server/src/config/admin-conditions.d.ts +2 -2
  496. package/dist/server/src/config/admin-conditions.d.ts.map +1 -1
  497. package/dist/server/src/content-types/index.d.ts +6 -0
  498. package/dist/server/src/content-types/index.d.ts.map +1 -1
  499. package/dist/server/src/content-types/session.d.ts +6 -0
  500. package/dist/server/src/content-types/session.d.ts.map +1 -1
  501. package/dist/server/src/controllers/admin-token.d.ts +5 -5
  502. package/dist/server/src/controllers/api-token.d.ts +1 -1
  503. package/dist/server/src/controllers/authenticated-session.d.ts +8 -0
  504. package/dist/server/src/controllers/authenticated-session.d.ts.map +1 -0
  505. package/dist/server/src/controllers/authenticated-user.d.ts +1 -1
  506. package/dist/server/src/controllers/authentication.d.ts +4 -4
  507. package/dist/server/src/controllers/authentication.d.ts.map +1 -1
  508. package/dist/server/src/controllers/formatters/conditions.d.ts +0 -1
  509. package/dist/server/src/controllers/formatters/conditions.d.ts.map +1 -1
  510. package/dist/server/src/controllers/formatters/format-actions-by-sections.d.ts.map +1 -1
  511. package/dist/server/src/controllers/homepage.d.ts +2 -2
  512. package/dist/server/src/controllers/homepage.d.ts.map +1 -1
  513. package/dist/server/src/controllers/index.d.ts +33 -43
  514. package/dist/server/src/controllers/index.d.ts.map +1 -1
  515. package/dist/server/src/controllers/role.d.ts +4 -4
  516. package/dist/server/src/controllers/transfer/runner.d.ts +4 -4
  517. package/dist/server/src/controllers/transfer/runner.d.ts.map +1 -1
  518. package/dist/server/src/controllers/transfer/token.d.ts +1 -1
  519. package/dist/server/src/controllers/user.d.ts +2 -2
  520. package/dist/server/src/controllers/webhooks.d.ts +4 -4
  521. package/dist/server/src/domain/action/index.d.ts +4 -65
  522. package/dist/server/src/domain/action/index.d.ts.map +1 -1
  523. package/dist/server/src/domain/action/provider.d.ts +30 -3
  524. package/dist/server/src/domain/action/provider.d.ts.map +1 -1
  525. package/dist/server/src/domain/condition/index.d.ts.map +1 -1
  526. package/dist/server/src/domain/condition/provider.d.ts +19 -2
  527. package/dist/server/src/domain/condition/provider.d.ts.map +1 -1
  528. package/dist/server/src/domain/permission/index.d.ts +0 -1
  529. package/dist/server/src/domain/permission/index.d.ts.map +1 -1
  530. package/dist/server/src/domain/user.d.ts.map +1 -1
  531. package/dist/server/src/index.d.ts +51 -63
  532. package/dist/server/src/index.d.ts.map +1 -1
  533. package/dist/server/src/middlewares/data-transfer.d.ts.map +1 -1
  534. package/dist/server/src/middlewares/index.d.ts +0 -1
  535. package/dist/server/src/middlewares/index.d.ts.map +1 -1
  536. package/dist/server/src/middlewares/rateLimit.d.ts.map +1 -1
  537. package/dist/server/src/policies/hasPermissions.d.ts.map +1 -1
  538. package/dist/server/src/policies/index.d.ts.map +1 -1
  539. package/dist/server/src/policies/isAuthenticatedAdmin.d.ts.map +1 -1
  540. package/dist/server/src/policies/isTelemetryEnabled.d.ts.map +1 -1
  541. package/dist/server/src/register.d.ts.map +1 -1
  542. package/dist/server/src/routes/index.d.ts +0 -1
  543. package/dist/server/src/routes/index.d.ts.map +1 -1
  544. package/dist/server/src/routes/serve-admin-panel.d.ts.map +1 -1
  545. package/dist/server/src/routes/transfer.d.ts +0 -1
  546. package/dist/server/src/routes/transfer.d.ts.map +1 -1
  547. package/dist/server/src/routes/users.d.ts.map +1 -1
  548. package/dist/server/src/services/action.d.ts.map +1 -1
  549. package/dist/server/src/services/api-token.d.ts +5 -6
  550. package/dist/server/src/services/api-token.d.ts.map +1 -1
  551. package/dist/server/src/services/auth.d.ts.map +1 -1
  552. package/dist/server/src/services/condition.d.ts.map +1 -1
  553. package/dist/server/src/services/content-type.d.ts.map +1 -1
  554. package/dist/server/src/services/encryption.d.ts.map +1 -1
  555. package/dist/server/src/services/homepage.d.ts.map +1 -1
  556. package/dist/server/src/services/index.d.ts +12 -21
  557. package/dist/server/src/services/index.d.ts.map +1 -1
  558. package/dist/server/src/services/metrics.d.ts.map +1 -1
  559. package/dist/server/src/services/passport/local-strategy.d.ts.map +1 -1
  560. package/dist/server/src/services/passport.d.ts +0 -1
  561. package/dist/server/src/services/passport.d.ts.map +1 -1
  562. package/dist/server/src/services/permission/engine.d.ts +1 -2
  563. package/dist/server/src/services/permission/engine.d.ts.map +1 -1
  564. package/dist/server/src/services/permission/permissions-manager/index.d.ts +5 -5
  565. package/dist/server/src/services/permission/permissions-manager/index.d.ts.map +1 -1
  566. package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts.map +1 -1
  567. package/dist/server/src/services/permission/permissions-manager/query-builders.d.ts.map +1 -1
  568. package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts +3 -3
  569. package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts.map +1 -1
  570. package/dist/server/src/services/permission/permissions-manager/validate.d.ts.map +1 -1
  571. package/dist/server/src/services/permission/queries.d.ts.map +1 -1
  572. package/dist/server/src/services/permission/sections-builder/builder.d.ts +4 -4
  573. package/dist/server/src/services/permission/sections-builder/builder.d.ts.map +1 -1
  574. package/dist/server/src/services/permission/sections-builder/handlers.d.ts.map +1 -1
  575. package/dist/server/src/services/permission/sections-builder/index.d.ts +4 -4
  576. package/dist/server/src/services/permission/sections-builder/section.d.ts.map +1 -1
  577. package/dist/server/src/services/permission/sections-builder/utils.d.ts +0 -1
  578. package/dist/server/src/services/permission/sections-builder/utils.d.ts.map +1 -1
  579. package/dist/server/src/services/permission.d.ts +13 -38
  580. package/dist/server/src/services/permission.d.ts.map +1 -1
  581. package/dist/server/src/services/project-settings.d.ts +2 -4
  582. package/dist/server/src/services/project-settings.d.ts.map +1 -1
  583. package/dist/server/src/services/role.d.ts +7 -1
  584. package/dist/server/src/services/role.d.ts.map +1 -1
  585. package/dist/server/src/services/token.d.ts +1 -1
  586. package/dist/server/src/services/token.d.ts.map +1 -1
  587. package/dist/server/src/services/transfer/token.d.ts +11 -11
  588. package/dist/server/src/services/transfer/token.d.ts.map +1 -1
  589. package/dist/server/src/services/user.d.ts +3 -3
  590. package/dist/server/src/services/user.d.ts.map +1 -1
  591. package/dist/server/src/strategies/admin-token.d.ts +4 -4
  592. package/dist/server/src/strategies/admin-token.d.ts.map +1 -1
  593. package/dist/server/src/strategies/admin.d.ts.map +1 -1
  594. package/dist/server/src/strategies/api-token-utils.d.ts.map +1 -1
  595. package/dist/server/src/strategies/content-api-token.d.ts.map +1 -1
  596. package/dist/server/src/strategies/data-transfer.d.ts.map +1 -1
  597. package/dist/server/src/utils/normalize-email.d.ts.map +1 -1
  598. package/dist/server/src/validation/action-provider.d.ts +2 -2
  599. package/dist/server/src/validation/action-provider.d.ts.map +1 -1
  600. package/dist/server/src/validation/admin-tokens.d.ts +2 -2
  601. package/dist/server/src/validation/api-tokens.d.ts +4 -4
  602. package/dist/server/src/validation/authentication/forgot-password.d.ts +1 -1
  603. package/dist/server/src/validation/authentication/login.d.ts +1 -1
  604. package/dist/server/src/validation/authentication/register.d.ts +6 -6
  605. package/dist/server/src/validation/authentication/register.d.ts.map +1 -1
  606. package/dist/server/src/validation/authentication/reset-password.d.ts +1 -1
  607. package/dist/server/src/validation/common-functions/check-fields-are-correctly-nested.d.ts.map +1 -1
  608. package/dist/server/src/validation/common-functions/check-fields-dont-have-duplicates.d.ts.map +1 -1
  609. package/dist/server/src/validation/common-validators.d.ts.map +1 -1
  610. package/dist/server/src/validation/permission.d.ts +6 -6
  611. package/dist/server/src/validation/permission.d.ts.map +1 -1
  612. package/dist/server/src/validation/policies/hasPermissions.d.ts +2 -2
  613. package/dist/server/src/validation/project-settings.d.ts +6 -6
  614. package/dist/server/src/validation/role.d.ts +8 -8
  615. package/dist/server/src/validation/role.d.ts.map +1 -1
  616. package/dist/server/src/validation/transfer/token.d.ts +4 -4
  617. package/dist/server/src/validation/user.d.ts +8 -8
  618. package/dist/shared/contracts/permissions.d.ts +1 -0
  619. package/dist/shared/contracts/permissions.d.ts.map +1 -1
  620. package/dist/shared/contracts/sessions.d.ts +62 -0
  621. package/dist/shared/contracts/sessions.d.ts.map +1 -0
  622. package/dist/shared/contracts/shared.d.ts +1 -1
  623. package/dist/shared/contracts/shared.d.ts.map +1 -1
  624. package/dist/shared/utils/session-auth.d.ts +1 -1
  625. package/dist/shared/utils/session-auth.d.ts.map +1 -1
  626. package/package.json +12 -12
@@ -1 +1 @@
1
- {"version":3,"file":"NpsSurvey.js","sources":["../../../../../admin/src/components/NpsSurvey.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n IconButton,\n Button,\n Typography,\n Textarea,\n Portal,\n Field,\n VisuallyHidden,\n SingleSelect,\n SingleSelectOption,\n} from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useAppInfo } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useIsMobile } from '../hooks/useMediaQuery';\nimport { usePersistentState } from '../hooks/usePersistentState';\n\nconst FieldWrapper = styled(Field.Root)`\n height: 3.2rem;\n width: 3.2rem;\n align-items: center;\n justify-content: center;\n\n > label,\n ~ input {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n\n > label {\n color: inherit;\n cursor: pointer;\n padding: ${({ theme }) => theme.spaces[2]};\n text-align: center;\n vertical-align: middle;\n }\n\n &:hover,\n &:focus-within {\n background-color: ${({ theme }) => theme.colors.neutral0};\n }\n\n &:active,\n &.selected {\n color: ${({ theme }) => theme.colors.primary700};\n background-color: ${({ theme }) => theme.colors.neutral0};\n border-color: ${({ theme }) => theme.colors.primary700};\n }\n`;\n\nconst delays = {\n postResponse: 90 * 24 * 60 * 60 * 1000, // 90 days in ms\n postFirstDismissal: 14 * 24 * 60 * 60 * 1000, // 14 days in ms\n postSubsequentDismissal: 90 * 24 * 60 * 60 * 1000, // 90 days in ms\n display: 30 * 60 * 1000, // 30 minutes in ms\n};\n\nconst ratingArray = [...Array(11).keys()];\n\nconst checkIfShouldShowSurvey = (settings: NpsSurveySettings) => {\n const { enabled, lastResponseDate, firstDismissalDate, lastDismissalDate } = settings;\n\n // This function goes through all the cases where we'd want to not show the survey:\n // 1. If the survey is disabled by strapi, abort mission, don't bother checking the other settings.\n // 2. If the survey is disabled by user, abort mission, don't bother checking the other settings.\n // 3. If the user has already responded to the survey, check if enough time has passed since the last response.\n // 4. If the user has dismissed the survey twice or more before, check if enough time has passed since the last dismissal.\n // 5. If the user has only dismissed the survey once before, check if enough time has passed since the first dismissal.\n // If none of these cases check out, then we show the survey.\n // Note that submitting a response resets the dismissal counts.\n // Checks 4 and 5 should not be reversed, since the first dismissal will also exist if the user has dismissed the survey twice or more before.\n\n // For users who had created an account before the NPS feature was introduced,\n // we assume that they would have enabled the NPS feature if they had the chance.\n\n // Global strapi disable for NSP.\n if (window.strapi.flags.nps === false) {\n return false;\n }\n\n // User chose not to enable the NPS feature when signing up\n if (enabled === false) {\n return false;\n }\n\n // The user has already responded to the survey\n if (lastResponseDate) {\n const timeSinceLastResponse = Date.now() - new Date(lastResponseDate).getTime();\n\n if (timeSinceLastResponse >= delays.postResponse) {\n return true;\n }\n\n return false;\n }\n\n // The user has dismissed the survey twice or more before\n if (lastDismissalDate) {\n const timeSinceLastDismissal = Date.now() - new Date(lastDismissalDate).getTime();\n\n if (timeSinceLastDismissal >= delays.postSubsequentDismissal) {\n return true;\n }\n\n return false;\n }\n\n // The user has only dismissed the survey once before\n if (firstDismissalDate) {\n const timeSinceFirstDismissal = Date.now() - new Date(firstDismissalDate).getTime();\n\n if (timeSinceFirstDismissal >= delays.postFirstDismissal) {\n return true;\n }\n\n return false;\n }\n\n // The user has not interacted with the survey before\n return true;\n};\n\nconst NpsSurvey = () => {\n const isMobile = useIsMobile();\n const { formatMessage } = useIntl();\n const { npsSurveySettings, setNpsSurveySettings } = useNpsSurveySettings();\n const [isFeedbackResponse, setIsFeedbackResponse] = React.useState(false);\n const { toggleNotification } = useNotification();\n const currentEnvironment = useAppInfo('NpsSurvey', (state) => state.currentEnvironment);\n const strapiVersion = useAppInfo('NpsSurvey', (state) => state.strapiVersion);\n\n interface NpsSurveyMutationBody {\n email: string;\n rating: number | null;\n comment: string;\n environment?: string;\n version?: string;\n license: 'Enterprise' | 'Community';\n }\n\n // Only check on first render if the survey should be shown\n const [surveyIsShown, setSurveyIsShown] = React.useState(\n checkIfShouldShowSurvey(npsSurveySettings)\n );\n\n // Set a cooldown to show the survey when session begins\n const [displaySurvey, setDisplaySurvey] = React.useState(false);\n\n React.useEffect(() => {\n const displayTime = setTimeout(() => {\n setDisplaySurvey(true);\n }, delays.display);\n\n return () => {\n clearTimeout(displayTime);\n };\n }, []);\n\n const { user } = useAuth('NpsSurvey', (auth) => auth);\n\n if (!displaySurvey) {\n return null;\n }\n\n if (!surveyIsShown) {\n return null;\n }\n\n const handleSubmitResponse = async ({\n npsSurveyRating,\n npsSurveyFeedback,\n }: {\n npsSurveyRating: NpsSurveyMutationBody['rating'];\n npsSurveyFeedback: NpsSurveyMutationBody['comment'];\n }) => {\n try {\n const body = {\n email: typeof user === 'object' && user.email ? user.email : '',\n rating: npsSurveyRating,\n comment: npsSurveyFeedback,\n environment: currentEnvironment,\n version: strapiVersion ?? undefined,\n license: window.strapi.projectType,\n isHostedOnStrapiCloud: process.env.STRAPI_HOSTING === 'strapi.cloud',\n };\n const res = await fetch(\n `${process.env.STRAPI_ANALYTICS_URL || 'https://analytics.strapi.io'}/submit-nps`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n }\n );\n\n if (!res.ok) {\n throw new Error('Failed to submit NPS survey');\n }\n\n setNpsSurveySettings((settings) => ({\n ...settings,\n lastResponseDate: new Date().toString(),\n firstDismissalDate: null,\n lastDismissalDate: null,\n }));\n setIsFeedbackResponse(true);\n // Thank you message displayed in the banner should disappear after few seconds.\n setTimeout(() => {\n setSurveyIsShown(false);\n }, 3000);\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const handleDismiss = () => {\n setNpsSurveySettings((settings) => {\n const nextSettings = {\n ...settings,\n lastResponseDate: null,\n };\n\n if (settings.firstDismissalDate) {\n // If the user dismisses the survey for the second time\n nextSettings.lastDismissalDate = new Date().toString();\n } else {\n // If the user dismisses the survey for the first time\n nextSettings.firstDismissalDate = new Date().toString();\n }\n\n return nextSettings;\n });\n\n setSurveyIsShown(false);\n };\n\n return (\n <Portal>\n <Formik\n initialValues={{ npsSurveyFeedback: '', npsSurveyRating: null }}\n onSubmit={handleSubmitResponse}\n validationSchema={yup.object({\n npsSurveyFeedback: yup.string(),\n npsSurveyRating: yup.number().required(),\n })}\n >\n {({ values, handleChange, setFieldValue, isSubmitting }) => (\n <Form name=\"npsSurveyForm\">\n <Box\n padding={4}\n position=\"fixed\"\n bottom={0}\n left=\"50%\"\n transform=\"translateX(-50%)\"\n zIndex=\"200\"\n minWidth={{ initial: '100%', medium: '50%' }}\n >\n <Flex\n hasRadius\n direction=\"column\"\n padding={4}\n borderColor=\"primary200\"\n background=\"neutral0\"\n shadow=\"popupShadow\"\n wrap=\"wrap\"\n >\n {isFeedbackResponse ? (\n <Typography fontWeight=\"semiBold\">\n {formatMessage({\n id: 'app.components.NpsSurvey.feedback-response',\n defaultMessage: 'Thank you very much for your feedback!',\n })}\n </Typography>\n ) : (\n <Box tag=\"fieldset\" width=\"100%\" borderWidth={0}>\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={2}>\n <Box marginLeft=\"auto\" marginRight=\"auto\">\n <Typography fontWeight=\"semiBold\" tag=\"legend\">\n {formatMessage({\n id: 'app.components.NpsSurvey.banner-title',\n defaultMessage:\n 'How likely are you to recommend Strapi to a friend or colleague?',\n })}\n </Typography>\n </Box>\n <IconButton\n onClick={handleDismiss}\n withTooltip={false}\n label={formatMessage({\n id: 'app.components.NpsSurvey.dismiss-survey-label',\n defaultMessage: 'Dismiss survey',\n })}\n type=\"button\"\n >\n <Cross />\n </IconButton>\n </Flex>\n {isMobile ? (\n <Box marginTop={2}>\n <SingleSelect\n placeholder={formatMessage({\n id: 'app.components.NpsSurvey.select-rating',\n defaultMessage: 'Select rating',\n })}\n onChange={(value) => {\n setFieldValue('npsSurveyRating', parseInt(value.toString(), 10));\n }}\n value={values.npsSurveyRating}\n >\n {ratingArray\n .sort((a, b) => b - a)\n .map((number) => {\n const suffixMessage =\n number === 0\n ? formatMessage({\n id: 'app.components.NpsSurvey.no-recommendation',\n defaultMessage: 'Not at all likely',\n })\n : number === 10\n ? formatMessage({\n id: 'app.components.NpsSurvey.happy-to-recommend',\n defaultMessage: 'Extremely likely',\n })\n : '';\n return (\n <SingleSelectOption key={number} value={number}>\n {number} {suffixMessage && `(${suffixMessage})`}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </Box>\n ) : (\n <Flex gap={2} marginTop={2} marginBottom={2} justifyContent=\"center\">\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.NpsSurvey.no-recommendation',\n defaultMessage: 'Not at all likely',\n })}\n </Typography>\n {ratingArray.map((number) => {\n return (\n <FieldWrapper\n key={number}\n name=\"npsSurveyRating\"\n className={values.npsSurveyRating === number ? 'selected' : undefined} // \"selected\" class added when child radio button is checked\n hasRadius\n background=\"primary100\"\n borderColor=\"primary200\"\n color=\"primary600\"\n position=\"relative\"\n cursor=\"pointer\"\n >\n <Field.Label>\n <VisuallyHidden>\n <Field.Input\n type=\"radio\"\n checked={values.npsSurveyRating === number}\n onChange={(e) =>\n setFieldValue('npsSurveyRating', parseInt(e.target.value, 10))\n }\n value={number}\n />\n </VisuallyHidden>\n {number}\n </Field.Label>\n </FieldWrapper>\n );\n })}\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.NpsSurvey.happy-to-recommend',\n defaultMessage: 'Extremely likely',\n })}\n </Typography>\n </Flex>\n )}\n {values.npsSurveyRating !== null && (\n <Flex direction=\"column\" alignItems=\"stretch\">\n <Box marginTop={2}>\n <Field.Label fontWeight=\"semiBold\" fontSize={2}>\n {formatMessage({\n id: 'app.components.NpsSurvey.feedback-question',\n defaultMessage: 'Do you have any suggestion for improvements?',\n })}\n </Field.Label>\n </Box>\n <Box marginTop={3} marginBottom={4} width=\"100%\">\n <Textarea\n id=\"npsSurveyFeedback\" // formik element attribute \"id\" should be same as the values key to work\n width=\"100%\"\n onChange={handleChange}\n value={values.npsSurveyFeedback}\n />\n </Box>\n <Box>\n <Button marginBottom={2} type=\"submit\" loading={isSubmitting}>\n {formatMessage({\n id: 'app.components.NpsSurvey.submit-feedback',\n defaultMessage: 'Submit Feedback',\n })}\n </Button>\n </Box>\n </Flex>\n )}\n </Box>\n )}\n </Flex>\n </Box>\n </Form>\n )}\n </Formik>\n </Portal>\n );\n};\n\ninterface NpsSurveySettings {\n enabled: boolean;\n lastResponseDate: string | null;\n firstDismissalDate: string | null;\n lastDismissalDate: string | null;\n}\n\n/**\n * We exported to make it available during admin user registration.\n * Because we only enable the NPS for users who subscribe to the newsletter when signing up\n */\nfunction useNpsSurveySettings() {\n const [npsSurveySettings, setNpsSurveySettings] = usePersistentState<NpsSurveySettings>(\n 'STRAPI_NPS_SURVEY_SETTINGS',\n {\n enabled: true,\n lastResponseDate: null,\n firstDismissalDate: null,\n lastDismissalDate: null,\n }\n );\n\n /**\n * TODO: should this just be an array so we can alias the `usePersistentState` hook?\n */\n return { npsSurveySettings, setNpsSurveySettings };\n}\n\nexport { NpsSurvey, useNpsSurveySettings };\n"],"names":["FieldWrapper","styled","Field","Root","theme","spaces","colors","neutral0","primary700","delays","postResponse","postFirstDismissal","postSubsequentDismissal","display","ratingArray","Array","keys","checkIfShouldShowSurvey","settings","enabled","lastResponseDate","firstDismissalDate","lastDismissalDate","window","strapi","flags","nps","timeSinceLastResponse","Date","now","getTime","timeSinceLastDismissal","timeSinceFirstDismissal","NpsSurvey","isMobile","useIsMobile","formatMessage","useIntl","npsSurveySettings","setNpsSurveySettings","useNpsSurveySettings","isFeedbackResponse","setIsFeedbackResponse","React","useState","toggleNotification","useNotification","currentEnvironment","useAppInfo","state","strapiVersion","surveyIsShown","setSurveyIsShown","displaySurvey","setDisplaySurvey","useEffect","displayTime","setTimeout","clearTimeout","user","useAuth","auth","handleSubmitResponse","npsSurveyRating","npsSurveyFeedback","body","email","rating","comment","environment","version","undefined","license","projectType","isHostedOnStrapiCloud","process","env","STRAPI_HOSTING","res","fetch","STRAPI_ANALYTICS_URL","method","headers","JSON","stringify","ok","Error","toString","err","type","message","id","defaultMessage","handleDismiss","nextSettings","_jsx","Portal","Formik","initialValues","onSubmit","validationSchema","yup","object","string","number","required","values","handleChange","setFieldValue","isSubmitting","Form","name","Box","padding","position","bottom","left","transform","zIndex","minWidth","initial","medium","Flex","hasRadius","direction","borderColor","background","shadow","wrap","Typography","fontWeight","_jsxs","tag","width","borderWidth","justifyContent","gap","marginLeft","marginRight","IconButton","onClick","withTooltip","label","Cross","marginTop","SingleSelect","placeholder","onChange","value","parseInt","sort","a","b","map","suffixMessage","SingleSelectOption","marginBottom","variant","textColor","className","color","cursor","Label","VisuallyHidden","Input","checked","e","target","alignItems","fontSize","Textarea","Button","loading","usePersistentState"],"mappings":"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"}
1
+ {"version":3,"file":"NpsSurvey.js","sources":["../../../../../admin/src/components/NpsSurvey.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n IconButton,\n Button,\n Typography,\n Textarea,\n Portal,\n Field,\n VisuallyHidden,\n SingleSelect,\n SingleSelectOption,\n} from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useAppInfo } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useIsMobile } from '../hooks/useMediaQuery';\nimport { usePersistentState } from '../hooks/usePersistentState';\n\nconst FieldWrapper = styled(Field.Root)`\n height: 3.2rem;\n width: 3.2rem;\n align-items: center;\n justify-content: center;\n\n > label,\n ~ input {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n\n > label {\n color: inherit;\n cursor: pointer;\n padding: ${({ theme }) => theme.spaces[2]};\n text-align: center;\n vertical-align: middle;\n }\n\n &:hover,\n &:focus-within {\n background-color: ${({ theme }) => theme.colors.neutral0};\n }\n\n &:active,\n &.selected {\n color: ${({ theme }) => theme.colors.primary700};\n background-color: ${({ theme }) => theme.colors.neutral0};\n border-color: ${({ theme }) => theme.colors.primary700};\n }\n`;\n\nconst delays = {\n postResponse: 90 * 24 * 60 * 60 * 1000, // 90 days in ms\n postFirstDismissal: 14 * 24 * 60 * 60 * 1000, // 14 days in ms\n postSubsequentDismissal: 90 * 24 * 60 * 60 * 1000, // 90 days in ms\n display: 30 * 60 * 1000, // 30 minutes in ms\n};\n\nconst ratingArray = [...Array(11).keys()];\n\nconst checkIfShouldShowSurvey = (settings: NpsSurveySettings) => {\n const { enabled, lastResponseDate, firstDismissalDate, lastDismissalDate } = settings;\n\n // This function goes through all the cases where we'd want to not show the survey:\n // 1. If the survey is disabled by strapi, abort mission, don't bother checking the other settings.\n // 2. If the survey is disabled by user, abort mission, don't bother checking the other settings.\n // 3. If the user has already responded to the survey, check if enough time has passed since the last response.\n // 4. If the user has dismissed the survey twice or more before, check if enough time has passed since the last dismissal.\n // 5. If the user has only dismissed the survey once before, check if enough time has passed since the first dismissal.\n // If none of these cases check out, then we show the survey.\n // Note that submitting a response resets the dismissal counts.\n // Checks 4 and 5 should not be reversed, since the first dismissal will also exist if the user has dismissed the survey twice or more before.\n\n // For users who had created an account before the NPS feature was introduced,\n // we assume that they would have enabled the NPS feature if they had the chance.\n\n // Global strapi disable for NSP.\n if (window.strapi.flags.nps === false) {\n return false;\n }\n\n // User chose not to enable the NPS feature when signing up\n if (enabled === false) {\n return false;\n }\n\n // The user has already responded to the survey\n if (lastResponseDate) {\n const timeSinceLastResponse = Date.now() - new Date(lastResponseDate).getTime();\n\n if (timeSinceLastResponse >= delays.postResponse) {\n return true;\n }\n\n return false;\n }\n\n // The user has dismissed the survey twice or more before\n if (lastDismissalDate) {\n const timeSinceLastDismissal = Date.now() - new Date(lastDismissalDate).getTime();\n\n if (timeSinceLastDismissal >= delays.postSubsequentDismissal) {\n return true;\n }\n\n return false;\n }\n\n // The user has only dismissed the survey once before\n if (firstDismissalDate) {\n const timeSinceFirstDismissal = Date.now() - new Date(firstDismissalDate).getTime();\n\n if (timeSinceFirstDismissal >= delays.postFirstDismissal) {\n return true;\n }\n\n return false;\n }\n\n // The user has not interacted with the survey before\n return true;\n};\n\nconst NpsSurvey = () => {\n const isMobile = useIsMobile();\n const { formatMessage } = useIntl();\n const { npsSurveySettings, setNpsSurveySettings } = useNpsSurveySettings();\n const [isFeedbackResponse, setIsFeedbackResponse] = React.useState(false);\n const { toggleNotification } = useNotification();\n const currentEnvironment = useAppInfo('NpsSurvey', (state) => state.currentEnvironment);\n const strapiVersion = useAppInfo('NpsSurvey', (state) => state.strapiVersion);\n\n interface NpsSurveyMutationBody {\n email: string;\n rating: number | null;\n comment: string;\n environment?: string;\n version?: string;\n license: 'Enterprise' | 'Community';\n }\n\n // Only check on first render if the survey should be shown\n const [surveyIsShown, setSurveyIsShown] = React.useState(\n checkIfShouldShowSurvey(npsSurveySettings)\n );\n\n // Set a cooldown to show the survey when session begins\n const [displaySurvey, setDisplaySurvey] = React.useState(false);\n\n React.useEffect(() => {\n const displayTime = setTimeout(() => {\n setDisplaySurvey(true);\n }, delays.display);\n\n return () => {\n clearTimeout(displayTime);\n };\n }, []);\n\n const { user } = useAuth('NpsSurvey', (auth) => auth);\n\n if (!displaySurvey) {\n return null;\n }\n\n if (!surveyIsShown) {\n return null;\n }\n\n const handleSubmitResponse = async ({\n npsSurveyRating,\n npsSurveyFeedback,\n }: {\n npsSurveyRating: NpsSurveyMutationBody['rating'];\n npsSurveyFeedback: NpsSurveyMutationBody['comment'];\n }) => {\n try {\n const body = {\n email: typeof user === 'object' && user.email ? user.email : '',\n rating: npsSurveyRating,\n comment: npsSurveyFeedback,\n environment: currentEnvironment,\n version: strapiVersion ?? undefined,\n license: window.strapi.projectType,\n isHostedOnStrapiCloud: process.env.STRAPI_HOSTING === 'strapi.cloud',\n };\n const res = await fetch(\n `${process.env.STRAPI_ANALYTICS_URL || 'https://analytics.strapi.io'}/submit-nps`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n }\n );\n\n if (!res.ok) {\n throw new Error('Failed to submit NPS survey');\n }\n\n setNpsSurveySettings((settings) => ({\n ...settings,\n lastResponseDate: new Date().toString(),\n firstDismissalDate: null,\n lastDismissalDate: null,\n }));\n setIsFeedbackResponse(true);\n // Thank you message displayed in the banner should disappear after few seconds.\n setTimeout(() => {\n setSurveyIsShown(false);\n }, 3000);\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const handleDismiss = () => {\n setNpsSurveySettings((settings) => {\n const nextSettings = {\n ...settings,\n lastResponseDate: null,\n };\n\n if (settings.firstDismissalDate) {\n // If the user dismisses the survey for the second time\n nextSettings.lastDismissalDate = new Date().toString();\n } else {\n // If the user dismisses the survey for the first time\n nextSettings.firstDismissalDate = new Date().toString();\n }\n\n return nextSettings;\n });\n\n setSurveyIsShown(false);\n };\n\n return (\n <Portal>\n <Formik\n initialValues={{ npsSurveyFeedback: '', npsSurveyRating: null }}\n onSubmit={handleSubmitResponse}\n validationSchema={yup.object({\n npsSurveyFeedback: yup.string(),\n npsSurveyRating: yup.number().required(),\n })}\n >\n {({ values, handleChange, setFieldValue, isSubmitting }) => (\n <Form name=\"npsSurveyForm\">\n <Box\n padding={4}\n position=\"fixed\"\n bottom={0}\n left=\"50%\"\n transform=\"translateX(-50%)\"\n zIndex=\"200\"\n minWidth={{ initial: '100%', medium: '50%' }}\n >\n <Flex\n hasRadius\n direction=\"column\"\n padding={4}\n borderColor=\"primary200\"\n background=\"neutral0\"\n shadow=\"popupShadow\"\n wrap=\"wrap\"\n >\n {isFeedbackResponse ? (\n <Typography fontWeight=\"semiBold\">\n {formatMessage({\n id: 'app.components.NpsSurvey.feedback-response',\n defaultMessage: 'Thank you very much for your feedback!',\n })}\n </Typography>\n ) : (\n <Box tag=\"fieldset\" width=\"100%\" borderWidth={0}>\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={2}>\n <Box marginLeft=\"auto\" marginRight=\"auto\">\n <Typography fontWeight=\"semiBold\" tag=\"legend\">\n {formatMessage({\n id: 'app.components.NpsSurvey.banner-title',\n defaultMessage:\n 'How likely are you to recommend Strapi to a friend or colleague?',\n })}\n </Typography>\n </Box>\n <IconButton\n onClick={handleDismiss}\n withTooltip={false}\n label={formatMessage({\n id: 'app.components.NpsSurvey.dismiss-survey-label',\n defaultMessage: 'Dismiss survey',\n })}\n type=\"button\"\n >\n <Cross />\n </IconButton>\n </Flex>\n {isMobile ? (\n <Box marginTop={2}>\n <SingleSelect\n placeholder={formatMessage({\n id: 'app.components.NpsSurvey.select-rating',\n defaultMessage: 'Select rating',\n })}\n onChange={(value) => {\n setFieldValue('npsSurveyRating', parseInt(value.toString(), 10));\n }}\n value={values.npsSurveyRating}\n >\n {ratingArray\n .sort((a, b) => b - a)\n .map((number) => {\n const suffixMessage =\n number === 0\n ? formatMessage({\n id: 'app.components.NpsSurvey.no-recommendation',\n defaultMessage: 'Not at all likely',\n })\n : number === 10\n ? formatMessage({\n id: 'app.components.NpsSurvey.happy-to-recommend',\n defaultMessage: 'Extremely likely',\n })\n : '';\n return (\n <SingleSelectOption key={number} value={number}>\n {number} {suffixMessage && `(${suffixMessage})`}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </Box>\n ) : (\n <Flex gap={2} marginTop={2} marginBottom={2} justifyContent=\"center\">\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.NpsSurvey.no-recommendation',\n defaultMessage: 'Not at all likely',\n })}\n </Typography>\n {ratingArray.map((number) => {\n return (\n <FieldWrapper\n key={number}\n name=\"npsSurveyRating\"\n className={values.npsSurveyRating === number ? 'selected' : undefined} // \"selected\" class added when child radio button is checked\n hasRadius\n background=\"primary100\"\n borderColor=\"primary200\"\n color=\"primary600\"\n position=\"relative\"\n cursor=\"pointer\"\n >\n <Field.Label>\n <VisuallyHidden>\n <Field.Input\n type=\"radio\"\n checked={values.npsSurveyRating === number}\n onChange={(e) =>\n setFieldValue('npsSurveyRating', parseInt(e.target.value, 10))\n }\n value={number}\n />\n </VisuallyHidden>\n {number}\n </Field.Label>\n </FieldWrapper>\n );\n })}\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.NpsSurvey.happy-to-recommend',\n defaultMessage: 'Extremely likely',\n })}\n </Typography>\n </Flex>\n )}\n {values.npsSurveyRating !== null && (\n <Flex direction=\"column\" alignItems=\"stretch\">\n <Box marginTop={2}>\n <Field.Label fontWeight=\"semiBold\" fontSize={2}>\n {formatMessage({\n id: 'app.components.NpsSurvey.feedback-question',\n defaultMessage: 'Do you have any suggestion for improvements?',\n })}\n </Field.Label>\n </Box>\n <Box marginTop={3} marginBottom={4} width=\"100%\">\n <Textarea\n id=\"npsSurveyFeedback\" // formik element attribute \"id\" should be same as the values key to work\n width=\"100%\"\n onChange={handleChange}\n value={values.npsSurveyFeedback}\n />\n </Box>\n <Box>\n <Button marginBottom={2} type=\"submit\" loading={isSubmitting}>\n {formatMessage({\n id: 'app.components.NpsSurvey.submit-feedback',\n defaultMessage: 'Submit Feedback',\n })}\n </Button>\n </Box>\n </Flex>\n )}\n </Box>\n )}\n </Flex>\n </Box>\n </Form>\n )}\n </Formik>\n </Portal>\n );\n};\n\ninterface NpsSurveySettings {\n enabled: boolean;\n lastResponseDate: string | null;\n firstDismissalDate: string | null;\n lastDismissalDate: string | null;\n}\n\n/**\n * We exported to make it available during admin user registration.\n * Because we only enable the NPS for users who subscribe to the newsletter when signing up\n */\nfunction useNpsSurveySettings() {\n const [npsSurveySettings, setNpsSurveySettings] = usePersistentState<NpsSurveySettings>(\n 'STRAPI_NPS_SURVEY_SETTINGS',\n {\n enabled: true,\n lastResponseDate: null,\n firstDismissalDate: null,\n lastDismissalDate: null,\n }\n );\n\n /**\n * TODO: should this just be an array so we can alias the `usePersistentState` hook?\n */\n return { npsSurveySettings, setNpsSurveySettings };\n}\n\nexport { NpsSurvey, useNpsSurveySettings };\n"],"names":["FieldWrapper","styled","Field","Root","theme","spaces","colors","neutral0","primary700","delays","postResponse","postFirstDismissal","postSubsequentDismissal","display","ratingArray","Array","keys","checkIfShouldShowSurvey","settings","enabled","lastResponseDate","firstDismissalDate","lastDismissalDate","window","strapi","flags","nps","timeSinceLastResponse","Date","now","getTime","timeSinceLastDismissal","timeSinceFirstDismissal","NpsSurvey","isMobile","useIsMobile","formatMessage","useIntl","npsSurveySettings","setNpsSurveySettings","useNpsSurveySettings","isFeedbackResponse","setIsFeedbackResponse","React","useState","toggleNotification","useNotification","currentEnvironment","useAppInfo","state","strapiVersion","surveyIsShown","setSurveyIsShown","displaySurvey","setDisplaySurvey","useEffect","displayTime","setTimeout","clearTimeout","user","useAuth","auth","handleSubmitResponse","npsSurveyRating","npsSurveyFeedback","body","email","rating","comment","environment","version","undefined","license","projectType","isHostedOnStrapiCloud","process","env","STRAPI_HOSTING","res","fetch","STRAPI_ANALYTICS_URL","method","headers","JSON","stringify","ok","Error","toString","err","type","message","id","defaultMessage","handleDismiss","nextSettings","_jsx","Portal","Formik","initialValues","onSubmit","validationSchema","yup","object","string","number","required","values","handleChange","setFieldValue","isSubmitting","Form","name","Box","padding","position","bottom","left","transform","zIndex","minWidth","initial","medium","Flex","hasRadius","direction","borderColor","background","shadow","wrap","Typography","fontWeight","_jsxs","tag","width","borderWidth","justifyContent","gap","marginLeft","marginRight","IconButton","onClick","withTooltip","label","Cross","marginTop","SingleSelect","placeholder","onChange","value","parseInt","sort","a","b","map","suffixMessage","SingleSelectOption","marginBottom","variant","textColor","className","color","cursor","Label","VisuallyHidden","Input","checked","e","target","alignItems","fontSize","Textarea","Button","loading","usePersistentState"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,MAAMA,YAAAA,GAAeC,uBAAAA,CAAOC,kBAAAA,CAAMC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;aAmB1B,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,CAAC;;;;;;;sBAOxB,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAAA,CAAME,MAAM,CAACC,QAAQ,CAAC;;;;;WAKlD,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAKA,KAAAA,CAAME,MAAM,CAACE,UAAU,CAAC;sBAC9B,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAAA,CAAME,MAAM,CAACC,QAAQ,CAAC;kBAC3C,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAKA,KAAAA,CAAME,MAAM,CAACE,UAAU,CAAC;;AAE3D,CAAC;AAED,MAAMC,MAAAA,GAAS;IACbC,YAAAA,EAAc,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,IAAA;IAClCC,kBAAAA,EAAoB,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,IAAA;IACxCC,uBAAAA,EAAyB,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,IAAA;AAC7CC,IAAAA,OAAAA,EAAS,KAAK,EAAA,GAAK;AACrB,CAAA;AAEA,MAAMC,WAAAA,GAAc;AAAIC,IAAAA,GAAAA,KAAAA,CAAM,IAAIC,IAAI;AAAG,CAAA;AAEzC,MAAMC,0BAA0B,CAACC,QAAAA,GAAAA;IAC/B,MAAM,EAAEC,OAAO,EAAEC,gBAAgB,EAAEC,kBAAkB,EAAEC,iBAAiB,EAAE,GAAGJ,QAAAA;;;;;;;;;;;;;AAgB7E,IAAA,IAAIK,OAAOC,MAAM,CAACC,KAAK,CAACC,GAAG,KAAK,KAAA,EAAO;QACrC,OAAO,KAAA;AACT,IAAA;;AAGA,IAAA,IAAIP,YAAY,KAAA,EAAO;QACrB,OAAO,KAAA;AACT,IAAA;;AAGA,IAAA,IAAIC,gBAAAA,EAAkB;AACpB,QAAA,MAAMO,wBAAwBC,IAAAA,CAAKC,GAAG,KAAK,IAAID,IAAAA,CAAKR,kBAAkBU,OAAO,EAAA;QAE7E,IAAIH,qBAAAA,IAAyBlB,MAAAA,CAAOC,YAAY,EAAE;YAChD,OAAO,IAAA;AACT,QAAA;QAEA,OAAO,KAAA;AACT,IAAA;;AAGA,IAAA,IAAIY,iBAAAA,EAAmB;AACrB,QAAA,MAAMS,yBAAyBH,IAAAA,CAAKC,GAAG,KAAK,IAAID,IAAAA,CAAKN,mBAAmBQ,OAAO,EAAA;QAE/E,IAAIC,sBAAAA,IAA0BtB,MAAAA,CAAOG,uBAAuB,EAAE;YAC5D,OAAO,IAAA;AACT,QAAA;QAEA,OAAO,KAAA;AACT,IAAA;;AAGA,IAAA,IAAIS,kBAAAA,EAAoB;AACtB,QAAA,MAAMW,0BAA0BJ,IAAAA,CAAKC,GAAG,KAAK,IAAID,IAAAA,CAAKP,oBAAoBS,OAAO,EAAA;QAEjF,IAAIE,uBAAAA,IAA2BvB,MAAAA,CAAOE,kBAAkB,EAAE;YACxD,OAAO,IAAA;AACT,QAAA;QAEA,OAAO,KAAA;AACT,IAAA;;IAGA,OAAO,IAAA;AACT,CAAA;AAEA,MAAMsB,SAAAA,GAAY,IAAA;AAChB,IAAA,MAAMC,QAAAA,GAAWC,yBAAAA,EAAAA;IACjB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,iBAAiB,EAAEC,oBAAoB,EAAE,GAAGC,oBAAAA,EAAAA;AACpD,IAAA,MAAM,CAACC,kBAAAA,EAAoBC,qBAAAA,CAAsB,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IACnE,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,6BAAAA,EAAAA;AAC/B,IAAA,MAAMC,qBAAqBC,kBAAAA,CAAW,WAAA,EAAa,CAACC,KAAAA,GAAUA,MAAMF,kBAAkB,CAAA;AACtF,IAAA,MAAMG,gBAAgBF,kBAAAA,CAAW,WAAA,EAAa,CAACC,KAAAA,GAAUA,MAAMC,aAAa,CAAA;;AAY5E,IAAA,MAAM,CAACC,aAAAA,EAAeC,gBAAAA,CAAiB,GAAGT,gBAAAA,CAAMC,QAAQ,CACtD3B,uBAAAA,CAAwBqB,iBAAAA,CAAAA,CAAAA;;AAI1B,IAAA,MAAM,CAACe,aAAAA,EAAeC,gBAAAA,CAAiB,GAAGX,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AAEzDD,IAAAA,gBAAAA,CAAMY,SAAS,CAAC,IAAA;AACd,QAAA,MAAMC,cAAcC,UAAAA,CAAW,IAAA;YAC7BH,gBAAAA,CAAiB,IAAA,CAAA;AACnB,QAAA,CAAA,EAAG7C,OAAOI,OAAO,CAAA;QAEjB,OAAO,IAAA;YACL6C,YAAAA,CAAaF,WAAAA,CAAAA;AACf,QAAA,CAAA;AACF,IAAA,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,MAAM,EAAEG,IAAI,EAAE,GAAGC,YAAAA,CAAQ,WAAA,EAAa,CAACC,IAAAA,GAASA,IAAAA,CAAAA;AAEhD,IAAA,IAAI,CAACR,aAAAA,EAAe;QAClB,OAAO,IAAA;AACT,IAAA;AAEA,IAAA,IAAI,CAACF,aAAAA,EAAe;QAClB,OAAO,IAAA;AACT,IAAA;AAEA,IAAA,MAAMW,uBAAuB,OAAO,EAClCC,eAAe,EACfC,iBAAiB,EAIlB,GAAA;QACC,IAAI;AACF,YAAA,MAAMC,IAAAA,GAAO;gBACXC,KAAAA,EAAO,OAAOP,SAAS,QAAA,IAAYA,IAAAA,CAAKO,KAAK,GAAGP,IAAAA,CAAKO,KAAK,GAAG,EAAA;gBAC7DC,MAAAA,EAAQJ,eAAAA;gBACRK,OAAAA,EAASJ,iBAAAA;gBACTK,WAAAA,EAAatB,kBAAAA;AACbuB,gBAAAA,OAAAA,EAASpB,aAAAA,IAAiBqB,SAAAA;gBAC1BC,OAAAA,EAASjD,MAAAA,CAAOC,MAAM,CAACiD,WAAW;AAClCC,gBAAAA,qBAAAA,EAAuBC,OAAAA,CAAQC,GAAG,CAACC,cAAc,KAAK;AACxD,aAAA;AACA,YAAA,MAAMC,GAAAA,GAAM,MAAMC,KAAAA,CAChB,CAAA,EAAGJ,OAAAA,CAAQC,GAAG,CAACI,oBAAoB,IAAI,6BAAA,CAA8B,WAAW,CAAC,EACjF;gBACEC,MAAAA,EAAQ,MAAA;gBACRC,OAAAA,EAAS;oBACP,cAAA,EAAgB;AAClB,iBAAA;gBACAjB,IAAAA,EAAMkB,IAAAA,CAAKC,SAAS,CAACnB,IAAAA;AACvB,aAAA,CAAA;YAGF,IAAI,CAACa,GAAAA,CAAIO,EAAE,EAAE;AACX,gBAAA,MAAM,IAAIC,KAAAA,CAAM,6BAAA,CAAA;AAClB,YAAA;YAEA/C,oBAAAA,CAAqB,CAACrB,YAAc;AAClC,oBAAA,GAAGA,QAAQ;oBACXE,gBAAAA,EAAkB,IAAIQ,OAAO2D,QAAQ,EAAA;oBACrClE,kBAAAA,EAAoB,IAAA;oBACpBC,iBAAAA,EAAmB;iBACrB,CAAA,CAAA;YACAoB,qBAAAA,CAAsB,IAAA,CAAA;;YAEtBe,UAAAA,CAAW,IAAA;gBACTL,gBAAAA,CAAiB,KAAA,CAAA;YACnB,CAAA,EAAG,IAAA,CAAA;AACL,QAAA,CAAA,CAAE,OAAOoC,GAAAA,EAAK;YACZ3C,kBAAAA,CAAmB;gBACjB4C,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAAStD,aAAAA,CAAc;oBAAEuD,EAAAA,EAAI,oBAAA;oBAAsBC,cAAAA,EAAgB;AAAoB,iBAAA;AACzF,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMC,aAAAA,GAAgB,IAAA;AACpBtD,QAAAA,oBAAAA,CAAqB,CAACrB,QAAAA,GAAAA;AACpB,YAAA,MAAM4E,YAAAA,GAAe;AACnB,gBAAA,GAAG5E,QAAQ;gBACXE,gBAAAA,EAAkB;AACpB,aAAA;YAEA,IAAIF,QAAAA,CAASG,kBAAkB,EAAE;;AAE/ByE,gBAAAA,YAAAA,CAAaxE,iBAAiB,GAAG,IAAIM,IAAAA,EAAAA,CAAO2D,QAAQ,EAAA;YACtD,CAAA,MAAO;;AAELO,gBAAAA,YAAAA,CAAazE,kBAAkB,GAAG,IAAIO,IAAAA,EAAAA,CAAO2D,QAAQ,EAAA;AACvD,YAAA;YAEA,OAAOO,YAAAA;AACT,QAAA,CAAA,CAAA;QAEA1C,gBAAAA,CAAiB,KAAA,CAAA;AACnB,IAAA,CAAA;AAEA,IAAA,qBACE2C,cAAA,CAACC,mBAAAA,EAAAA;AACC,QAAA,QAAA,gBAAAD,cAAA,CAACE,aAAAA,EAAAA;YACCC,aAAAA,EAAe;gBAAElC,iBAAAA,EAAmB,EAAA;gBAAID,eAAAA,EAAiB;AAAK,aAAA;YAC9DoC,QAAAA,EAAUrC,oBAAAA;YACVsC,gBAAAA,EAAkBC,cAAAA,CAAIC,MAAM,CAAC;AAC3BtC,gBAAAA,iBAAAA,EAAmBqC,eAAIE,MAAM,EAAA;gBAC7BxC,eAAAA,EAAiBsC,cAAAA,CAAIG,MAAM,EAAA,CAAGC,QAAQ;AACxC,aAAA,CAAA;sBAEC,CAAC,EAAEC,MAAM,EAAEC,YAAY,EAAEC,aAAa,EAAEC,YAAY,EAAE,iBACrDd,cAAA,CAACe,WAAAA,EAAAA;oBAAKC,IAAAA,EAAK,eAAA;AACT,oBAAA,QAAA,gBAAAhB,cAAA,CAACiB,gBAAAA,EAAAA;wBACCC,OAAAA,EAAS,CAAA;wBACTC,QAAAA,EAAS,OAAA;wBACTC,MAAAA,EAAQ,CAAA;wBACRC,IAAAA,EAAK,KAAA;wBACLC,SAAAA,EAAU,kBAAA;wBACVC,MAAAA,EAAO,KAAA;wBACPC,QAAAA,EAAU;4BAAEC,OAAAA,EAAS,MAAA;4BAAQC,MAAAA,EAAQ;AAAM,yBAAA;AAE3C,wBAAA,QAAA,gBAAA1B,cAAA,CAAC2B,iBAAAA,EAAAA;4BACCC,SAAS,EAAA,IAAA;4BACTC,SAAAA,EAAU,QAAA;4BACVX,OAAAA,EAAS,CAAA;4BACTY,WAAAA,EAAY,YAAA;4BACZC,UAAAA,EAAW,UAAA;4BACXC,MAAAA,EAAO,aAAA;4BACPC,IAAAA,EAAK,MAAA;AAEJvF,4BAAAA,QAAAA,EAAAA,kBAAAA,iBACCsD,cAAA,CAACkC,uBAAAA,EAAAA;gCAAWC,UAAAA,EAAW,UAAA;0CACpB9F,aAAAA,CAAc;oCACbuD,EAAAA,EAAI,4CAAA;oCACJC,cAAAA,EAAgB;AAClB,iCAAA;+CAGFuC,eAAA,CAACnB,gBAAAA,EAAAA;gCAAIoB,GAAAA,EAAI,UAAA;gCAAWC,KAAAA,EAAM,MAAA;gCAAOC,WAAAA,EAAa,CAAA;;kDAC5CH,eAAA,CAACT,iBAAAA,EAAAA;wCAAKa,cAAAA,EAAe,eAAA;wCAAgBF,KAAAA,EAAM,MAAA;wCAAOG,GAAAA,EAAK,CAAA;;0DACrDzC,cAAA,CAACiB,gBAAAA,EAAAA;gDAAIyB,UAAAA,EAAW,MAAA;gDAAOC,WAAAA,EAAY,MAAA;AACjC,gDAAA,QAAA,gBAAA3C,cAAA,CAACkC,uBAAAA,EAAAA;oDAAWC,UAAAA,EAAW,UAAA;oDAAWE,GAAAA,EAAI,QAAA;8DACnChG,aAAAA,CAAc;wDACbuD,EAAAA,EAAI,uCAAA;wDACJC,cAAAA,EACE;AACJ,qDAAA;;;0DAGJG,cAAA,CAAC4C,uBAAAA,EAAAA;gDACCC,OAAAA,EAAS/C,aAAAA;gDACTgD,WAAAA,EAAa,KAAA;AACbC,gDAAAA,KAAAA,EAAO1G,aAAAA,CAAc;oDACnBuD,EAAAA,EAAI,+CAAA;oDACJC,cAAAA,EAAgB;AAClB,iDAAA,CAAA;gDACAH,IAAAA,EAAK,QAAA;AAEL,gDAAA,QAAA,gBAAAM,cAAA,CAACgD,WAAAA,EAAAA,EAAAA;;;;AAGJ7G,oCAAAA,QAAAA,iBACC6D,cAAA,CAACiB,gBAAAA,EAAAA;wCAAIgC,SAAAA,EAAW,CAAA;AACd,wCAAA,QAAA,gBAAAjD,cAAA,CAACkD,yBAAAA,EAAAA;AACCC,4CAAAA,WAAAA,EAAa9G,aAAAA,CAAc;gDACzBuD,EAAAA,EAAI,wCAAA;gDACJC,cAAAA,EAAgB;AAClB,6CAAA,CAAA;AACAuD,4CAAAA,QAAAA,EAAU,CAACC,KAAAA,GAAAA;AACTxC,gDAAAA,aAAAA,CAAc,iBAAA,EAAmByC,QAAAA,CAASD,KAAAA,CAAM7D,QAAQ,EAAA,EAAI,EAAA,CAAA,CAAA;AAC9D,4CAAA,CAAA;AACA6D,4CAAAA,KAAAA,EAAO1C,OAAO3C,eAAe;sDAE5BjD,WAAAA,CACEwI,IAAI,CAAC,CAACC,CAAAA,EAAGC,IAAMA,CAAAA,GAAID,CAAAA,CAAAA,CACnBE,GAAG,CAAC,CAACjD,MAAAA,GAAAA;gDACJ,MAAMkD,aAAAA,GACJlD,MAAAA,KAAW,CAAA,GACPpE,aAAAA,CAAc;oDACZuD,EAAAA,EAAI,4CAAA;oDACJC,cAAAA,EAAgB;iDAClB,CAAA,GACAY,MAAAA,KAAW,KACTpE,aAAAA,CAAc;oDACZuD,EAAAA,EAAI,6CAAA;oDACJC,cAAAA,EAAgB;iDAClB,CAAA,GACA,EAAA;AACR,gDAAA,qBACEuC,eAAA,CAACwB,+BAAAA,EAAAA;oDAAgCP,KAAAA,EAAO5C,MAAAA;;AACrCA,wDAAAA,MAAAA;AAAO,wDAAA,GAAA;AAAEkD,wDAAAA,aAAAA,IAAiB,CAAC,CAAC,EAAEA,aAAAA,CAAc,CAAC;;AADvBlD,iDAAAA,EAAAA,MAAAA,CAAAA;AAI7B,4CAAA,CAAA;;uDAIN2B,eAAA,CAACT,iBAAAA,EAAAA;wCAAKc,GAAAA,EAAK,CAAA;wCAAGQ,SAAAA,EAAW,CAAA;wCAAGY,YAAAA,EAAc,CAAA;wCAAGrB,cAAAA,EAAe,QAAA;;0DAC1DxC,cAAA,CAACkC,uBAAAA,EAAAA;gDAAW4B,OAAAA,EAAQ,IAAA;gDAAKC,SAAAA,EAAU,YAAA;0DAChC1H,aAAAA,CAAc;oDACbuD,EAAAA,EAAI,4CAAA;oDACJC,cAAAA,EAAgB;AAClB,iDAAA;;4CAED9E,WAAAA,CAAY2I,GAAG,CAAC,CAACjD,MAAAA,GAAAA;AAChB,gDAAA,qBACET,cAAA,CAAC/F,YAAAA,EAAAA;oDAEC+G,IAAAA,EAAK,iBAAA;AACLgD,oDAAAA,SAAAA,EAAWrD,MAAAA,CAAO3C,eAAe,KAAKyC,MAAAA,GAAS,UAAA,GAAajC,SAAAA;oDAC5DoD,SAAS,EAAA,IAAA;oDACTG,UAAAA,EAAW,YAAA;oDACXD,WAAAA,EAAY,YAAA;oDACZmC,KAAAA,EAAM,YAAA;oDACN9C,QAAAA,EAAS,UAAA;oDACT+C,MAAAA,EAAO,SAAA;4EAEP9B,eAAA,CAACjI,mBAAMgK,KAAK,EAAA;;0EACVnE,cAAA,CAACoE,2BAAAA,EAAAA;wFACCpE,cAAA,CAAC7F,mBAAMkK,KAAK,EAAA;oEACV3E,IAAAA,EAAK,OAAA;oEACL4E,OAAAA,EAAS3D,MAAAA,CAAO3C,eAAe,KAAKyC,MAAAA;oEACpC2C,QAAAA,EAAU,CAACmB,IACT1D,aAAAA,CAAc,iBAAA,EAAmByC,SAASiB,CAAAA,CAAEC,MAAM,CAACnB,KAAK,EAAE,EAAA,CAAA,CAAA;oEAE5DA,KAAAA,EAAO5C;;;AAGVA,4DAAAA;;;AArBEA,iDAAAA,EAAAA,MAAAA,CAAAA;AAyBX,4CAAA,CAAA,CAAA;0DACAT,cAAA,CAACkC,uBAAAA,EAAAA;gDAAW4B,OAAAA,EAAQ,IAAA;gDAAKC,SAAAA,EAAU,YAAA;0DAChC1H,aAAAA,CAAc;oDACbuD,EAAAA,EAAI,6CAAA;oDACJC,cAAAA,EAAgB;AAClB,iDAAA;;;;oCAILc,MAAAA,CAAO3C,eAAe,KAAK,IAAA,kBAC1BoE,eAAA,CAACT,iBAAAA,EAAAA;wCAAKE,SAAAA,EAAU,QAAA;wCAAS4C,UAAAA,EAAW,SAAA;;0DAClCzE,cAAA,CAACiB,gBAAAA,EAAAA;gDAAIgC,SAAAA,EAAW,CAAA;wEACdjD,cAAA,CAAC7F,mBAAMgK,KAAK,EAAA;oDAAChC,UAAAA,EAAW,UAAA;oDAAWuC,QAAAA,EAAU,CAAA;8DAC1CrI,aAAAA,CAAc;wDACbuD,EAAAA,EAAI,4CAAA;wDACJC,cAAAA,EAAgB;AAClB,qDAAA;;;0DAGJG,cAAA,CAACiB,gBAAAA,EAAAA;gDAAIgC,SAAAA,EAAW,CAAA;gDAAGY,YAAAA,EAAc,CAAA;gDAAGvB,KAAAA,EAAM,MAAA;AACxC,gDAAA,QAAA,gBAAAtC,cAAA,CAAC2E,qBAAAA,EAAAA;oDACC/E,EAAAA,EAAG,mBAAA;oDACH0C,KAAAA,EAAM,MAAA;oDACNc,QAAAA,EAAUxC,YAAAA;AACVyC,oDAAAA,KAAAA,EAAO1C,OAAO1C;;;0DAGlB+B,cAAA,CAACiB,gBAAAA,EAAAA;AACC,gDAAA,QAAA,gBAAAjB,cAAA,CAAC4E,mBAAAA,EAAAA;oDAAOf,YAAAA,EAAc,CAAA;oDAAGnE,IAAAA,EAAK,QAAA;oDAASmF,OAAAA,EAAS/D,YAAAA;8DAC7CzE,aAAAA,CAAc;wDACbuD,EAAAA,EAAI,0CAAA;wDACJC,cAAAA,EAAgB;AAClB,qDAAA;;;;;;;;;;;;AAc5B;AASA;;;AAGC,IACD,SAASpD,oBAAAA,GAAAA;AACP,IAAA,MAAM,CAACF,iBAAAA,EAAmBC,oBAAAA,CAAqB,GAAGsI,sCAChD,4BAAA,EACA;QACE1J,OAAAA,EAAS,IAAA;QACTC,gBAAAA,EAAkB,IAAA;QAClBC,kBAAAA,EAAoB,IAAA;QACpBC,iBAAAA,EAAmB;AACrB,KAAA,CAAA;AAGF;;AAEC,MACD,OAAO;AAAEgB,QAAAA,iBAAAA;AAAmBC,QAAAA;AAAqB,KAAA;AACnD;;;;;"}
@@ -56,8 +56,9 @@ const intervals = [
56
56
  });
57
57
  const unit = intervals.find((intervalUnit)=>{
58
58
  return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);
59
- });
60
- const relativeTime = dateFns.isPast(timestamp) ? -interval[unit] : interval[unit];
59
+ }) ?? 'seconds';
60
+ const value = interval[unit] ?? 0;
61
+ const relativeTime = dateFns.isPast(timestamp) ? -value : value;
61
62
  // Display custom text if interval is less than the threshold
62
63
  const customInterval = customIntervals.find((custom)=>interval[custom.unit] < custom.threshold);
63
64
  const displayText = customInterval ? customInterval.text : formatRelativeTime(relativeTime, unit, {
@@ -1 +1 @@
1
- {"version":3,"file":"RelativeTime.js","sources":["../../../../../admin/src/components/RelativeTime.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Duration, intervalToDuration, isPast } from 'date-fns';\nimport { useIntl } from 'react-intl';\n\nconst intervals: Array<keyof Duration> = ['years', 'months', 'days', 'hours', 'minutes', 'seconds'];\n\ninterface CustomInterval {\n unit: keyof Duration;\n text: string;\n threshold: number;\n}\n\ninterface RelativeTimeProps extends React.ComponentPropsWithoutRef<'time'> {\n timestamp: Date;\n customIntervals?: CustomInterval[];\n}\n\n/**\n * Displays the relative time between a given timestamp and the current time.\n * You can display a custom message for given time intervals by passing an array of custom intervals.\n *\n * @example\n * ```jsx\n * <caption>Display \"last hour\" if the timestamp is less than an hour ago</caption>\n * <RelativeTime\n * timestamp={new Date('2021-01-01')}\n * customIntervals={[\n * { unit: 'hours', threshold: 1, text: 'last hour' },\n * ]}\n * ```\n */\nconst RelativeTime = React.forwardRef<HTMLTimeElement, RelativeTimeProps>(\n ({ timestamp, customIntervals = [], ...restProps }, forwardedRef) => {\n const { formatRelativeTime, formatDate, formatTime } = useIntl();\n\n /**\n * TODO: make this auto-update, like a clock.\n */\n const interval = intervalToDuration({\n start: timestamp,\n end: Date.now(),\n // see https://github.com/date-fns/date-fns/issues/2891 – No idea why it's all partial it returns it every time.\n }) as Required<Duration>;\n\n const unit = intervals.find((intervalUnit) => {\n return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);\n })!;\n\n const relativeTime = isPast(timestamp) ? -interval[unit] : interval[unit];\n\n // Display custom text if interval is less than the threshold\n const customInterval = customIntervals.find(\n (custom) => interval[custom.unit] < custom.threshold\n );\n\n const displayText = customInterval\n ? customInterval.text\n : formatRelativeTime(relativeTime, unit, { numeric: 'auto' });\n\n return (\n <time\n ref={forwardedRef}\n dateTime={timestamp.toISOString()}\n role=\"time\"\n title={`${formatDate(timestamp)} ${formatTime(timestamp)}`}\n {...restProps}\n >\n {displayText}\n </time>\n );\n }\n);\n\nexport { RelativeTime };\nexport type { CustomInterval, RelativeTimeProps };\n"],"names":["intervals","RelativeTime","React","forwardRef","timestamp","customIntervals","restProps","forwardedRef","formatRelativeTime","formatDate","formatTime","useIntl","interval","intervalToDuration","start","end","Date","now","unit","find","intervalUnit","Object","keys","includes","relativeTime","isPast","customInterval","custom","threshold","displayText","text","numeric","_jsx","time","ref","dateTime","toISOString","role","title"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,MAAMA,SAAAA,GAAmC;AAAC,IAAA,OAAA;AAAS,IAAA,QAAA;AAAU,IAAA,MAAA;AAAQ,IAAA,OAAA;AAAS,IAAA,SAAA;AAAW,IAAA;AAAU,CAAA;AAanG;;;;;;;;;;;;;AAaC,IACD,MAAMC,YAAAA,iBAAeC,gBAAAA,CAAMC,UAAU,CACnC,CAAC,EAAEC,SAAS,EAAEC,eAAAA,GAAkB,EAAE,EAAE,GAAGC,WAAW,EAAEC,YAAAA,GAAAA;AAClD,IAAA,MAAM,EAAEC,kBAAkB,EAAEC,UAAU,EAAEC,UAAU,EAAE,GAAGC,iBAAAA,EAAAA;AAEvD;;QAGA,MAAMC,WAAWC,0BAAAA,CAAmB;QAClCC,KAAAA,EAAOV,SAAAA;AACPW,QAAAA,GAAAA,EAAKC,KAAKC,GAAG;AAEf,KAAA,CAAA;AAEA,IAAA,MAAMC,IAAAA,GAAOlB,SAAAA,CAAUmB,IAAI,CAAC,CAACC,YAAAA,GAAAA;QAC3B,OAAOR,QAAQ,CAACQ,YAAAA,CAAa,GAAG,CAAA,IAAKC,OAAOC,IAAI,CAACV,QAAAA,CAAAA,CAAUW,QAAQ,CAACH,YAAAA,CAAAA;AACtE,IAAA,CAAA,CAAA;IAEA,MAAMI,YAAAA,GAAeC,cAAAA,CAAOrB,SAAAA,CAAAA,GAAa,CAACQ,QAAQ,CAACM,IAAAA,CAAK,GAAGN,QAAQ,CAACM,IAAAA,CAAK;;AAGzE,IAAA,MAAMQ,cAAAA,GAAiBrB,eAAAA,CAAgBc,IAAI,CACzC,CAACQ,MAAAA,GAAWf,QAAQ,CAACe,MAAAA,CAAOT,IAAI,CAAC,GAAGS,OAAOC,SAAS,CAAA;AAGtD,IAAA,MAAMC,cAAcH,cAAAA,GAChBA,cAAAA,CAAeI,IAAI,GACnBtB,kBAAAA,CAAmBgB,cAAcN,IAAAA,EAAM;QAAEa,OAAAA,EAAS;AAAO,KAAA,CAAA;AAE7D,IAAA,qBACEC,cAAA,CAACC,MAAAA,EAAAA;QACCC,GAAAA,EAAK3B,YAAAA;AACL4B,QAAAA,QAAAA,EAAU/B,UAAUgC,WAAW,EAAA;QAC/BC,IAAAA,EAAK,MAAA;AACLC,QAAAA,KAAAA,EAAO,GAAG7B,UAAAA,CAAWL,SAAAA,CAAAA,CAAW,CAAC,EAAEM,WAAWN,SAAAA,CAAAA,CAAAA,CAAY;AACzD,QAAA,GAAGE,SAAS;AAEZuB,QAAAA,QAAAA,EAAAA;;AAGP,CAAA;;;;"}
1
+ {"version":3,"file":"RelativeTime.js","sources":["../../../../../admin/src/components/RelativeTime.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Duration, intervalToDuration, isPast } from 'date-fns';\nimport { useIntl } from 'react-intl';\n\nconst intervals: Array<keyof Duration> = ['years', 'months', 'days', 'hours', 'minutes', 'seconds'];\n\ninterface CustomInterval {\n unit: keyof Duration;\n text: string;\n threshold: number;\n}\n\ninterface RelativeTimeProps extends React.ComponentPropsWithoutRef<'time'> {\n timestamp: Date;\n customIntervals?: CustomInterval[];\n}\n\n/**\n * Displays the relative time between a given timestamp and the current time.\n * You can display a custom message for given time intervals by passing an array of custom intervals.\n *\n * @example\n * ```jsx\n * <caption>Display \"last hour\" if the timestamp is less than an hour ago</caption>\n * <RelativeTime\n * timestamp={new Date('2021-01-01')}\n * customIntervals={[\n * { unit: 'hours', threshold: 1, text: 'last hour' },\n * ]}\n * ```\n */\nconst RelativeTime = React.forwardRef<HTMLTimeElement, RelativeTimeProps>(\n ({ timestamp, customIntervals = [], ...restProps }, forwardedRef) => {\n const { formatRelativeTime, formatDate, formatTime } = useIntl();\n\n /**\n * TODO: make this auto-update, like a clock.\n */\n const interval = intervalToDuration({\n start: timestamp,\n end: Date.now(),\n // see https://github.com/date-fns/date-fns/issues/2891 – No idea why it's all partial it returns it every time.\n }) as Required<Duration>;\n\n const unit =\n intervals.find((intervalUnit) => {\n return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);\n }) ?? 'seconds';\n\n const value = interval[unit] ?? 0;\n const relativeTime = isPast(timestamp) ? -value : value;\n\n // Display custom text if interval is less than the threshold\n const customInterval = customIntervals.find(\n (custom) => interval[custom.unit] < custom.threshold\n );\n\n const displayText = customInterval\n ? customInterval.text\n : formatRelativeTime(relativeTime, unit, { numeric: 'auto' });\n\n return (\n <time\n ref={forwardedRef}\n dateTime={timestamp.toISOString()}\n role=\"time\"\n title={`${formatDate(timestamp)} ${formatTime(timestamp)}`}\n {...restProps}\n >\n {displayText}\n </time>\n );\n }\n);\n\nexport { RelativeTime };\nexport type { CustomInterval, RelativeTimeProps };\n"],"names":["intervals","RelativeTime","React","forwardRef","timestamp","customIntervals","restProps","forwardedRef","formatRelativeTime","formatDate","formatTime","useIntl","interval","intervalToDuration","start","end","Date","now","unit","find","intervalUnit","Object","keys","includes","value","relativeTime","isPast","customInterval","custom","threshold","displayText","text","numeric","_jsx","time","ref","dateTime","toISOString","role","title"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,MAAMA,SAAAA,GAAmC;AAAC,IAAA,OAAA;AAAS,IAAA,QAAA;AAAU,IAAA,MAAA;AAAQ,IAAA,OAAA;AAAS,IAAA,SAAA;AAAW,IAAA;AAAU,CAAA;AAanG;;;;;;;;;;;;;AAaC,IACD,MAAMC,YAAAA,iBAAeC,gBAAAA,CAAMC,UAAU,CACnC,CAAC,EAAEC,SAAS,EAAEC,eAAAA,GAAkB,EAAE,EAAE,GAAGC,WAAW,EAAEC,YAAAA,GAAAA;AAClD,IAAA,MAAM,EAAEC,kBAAkB,EAAEC,UAAU,EAAEC,UAAU,EAAE,GAAGC,iBAAAA,EAAAA;AAEvD;;QAGA,MAAMC,WAAWC,0BAAAA,CAAmB;QAClCC,KAAAA,EAAOV,SAAAA;AACPW,QAAAA,GAAAA,EAAKC,KAAKC,GAAG;AAEf,KAAA,CAAA;AAEA,IAAA,MAAMC,IAAAA,GACJlB,SAAAA,CAAUmB,IAAI,CAAC,CAACC,YAAAA,GAAAA;QACd,OAAOR,QAAQ,CAACQ,YAAAA,CAAa,GAAG,CAAA,IAAKC,OAAOC,IAAI,CAACV,QAAAA,CAAAA,CAAUW,QAAQ,CAACH,YAAAA,CAAAA;IACtE,CAAA,CAAA,IAAM,SAAA;AAER,IAAA,MAAMI,KAAAA,GAAQZ,QAAQ,CAACM,IAAAA,CAAK,IAAI,CAAA;AAChC,IAAA,MAAMO,YAAAA,GAAeC,cAAAA,CAAOtB,SAAAA,CAAAA,GAAa,CAACoB,KAAAA,GAAQA,KAAAA;;AAGlD,IAAA,MAAMG,cAAAA,GAAiBtB,eAAAA,CAAgBc,IAAI,CACzC,CAACS,MAAAA,GAAWhB,QAAQ,CAACgB,MAAAA,CAAOV,IAAI,CAAC,GAAGU,OAAOC,SAAS,CAAA;AAGtD,IAAA,MAAMC,cAAcH,cAAAA,GAChBA,cAAAA,CAAeI,IAAI,GACnBvB,kBAAAA,CAAmBiB,cAAcP,IAAAA,EAAM;QAAEc,OAAAA,EAAS;AAAO,KAAA,CAAA;AAE7D,IAAA,qBACEC,cAAA,CAACC,MAAAA,EAAAA;QACCC,GAAAA,EAAK5B,YAAAA;AACL6B,QAAAA,QAAAA,EAAUhC,UAAUiC,WAAW,EAAA;QAC/BC,IAAAA,EAAK,MAAA;AACLC,QAAAA,KAAAA,EAAO,GAAG9B,UAAAA,CAAWL,SAAAA,CAAAA,CAAW,CAAC,EAAEM,WAAWN,SAAAA,CAAAA,CAAAA,CAAY;AACzD,QAAA,GAAGE,SAAS;AAEZwB,QAAAA,QAAAA,EAAAA;;AAGP,CAAA;;;;"}
@@ -34,8 +34,9 @@ const intervals = [
34
34
  });
35
35
  const unit = intervals.find((intervalUnit)=>{
36
36
  return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);
37
- });
38
- const relativeTime = isPast(timestamp) ? -interval[unit] : interval[unit];
37
+ }) ?? 'seconds';
38
+ const value = interval[unit] ?? 0;
39
+ const relativeTime = isPast(timestamp) ? -value : value;
39
40
  // Display custom text if interval is less than the threshold
40
41
  const customInterval = customIntervals.find((custom)=>interval[custom.unit] < custom.threshold);
41
42
  const displayText = customInterval ? customInterval.text : formatRelativeTime(relativeTime, unit, {
@@ -1 +1 @@
1
- {"version":3,"file":"RelativeTime.mjs","sources":["../../../../../admin/src/components/RelativeTime.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Duration, intervalToDuration, isPast } from 'date-fns';\nimport { useIntl } from 'react-intl';\n\nconst intervals: Array<keyof Duration> = ['years', 'months', 'days', 'hours', 'minutes', 'seconds'];\n\ninterface CustomInterval {\n unit: keyof Duration;\n text: string;\n threshold: number;\n}\n\ninterface RelativeTimeProps extends React.ComponentPropsWithoutRef<'time'> {\n timestamp: Date;\n customIntervals?: CustomInterval[];\n}\n\n/**\n * Displays the relative time between a given timestamp and the current time.\n * You can display a custom message for given time intervals by passing an array of custom intervals.\n *\n * @example\n * ```jsx\n * <caption>Display \"last hour\" if the timestamp is less than an hour ago</caption>\n * <RelativeTime\n * timestamp={new Date('2021-01-01')}\n * customIntervals={[\n * { unit: 'hours', threshold: 1, text: 'last hour' },\n * ]}\n * ```\n */\nconst RelativeTime = React.forwardRef<HTMLTimeElement, RelativeTimeProps>(\n ({ timestamp, customIntervals = [], ...restProps }, forwardedRef) => {\n const { formatRelativeTime, formatDate, formatTime } = useIntl();\n\n /**\n * TODO: make this auto-update, like a clock.\n */\n const interval = intervalToDuration({\n start: timestamp,\n end: Date.now(),\n // see https://github.com/date-fns/date-fns/issues/2891 – No idea why it's all partial it returns it every time.\n }) as Required<Duration>;\n\n const unit = intervals.find((intervalUnit) => {\n return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);\n })!;\n\n const relativeTime = isPast(timestamp) ? -interval[unit] : interval[unit];\n\n // Display custom text if interval is less than the threshold\n const customInterval = customIntervals.find(\n (custom) => interval[custom.unit] < custom.threshold\n );\n\n const displayText = customInterval\n ? customInterval.text\n : formatRelativeTime(relativeTime, unit, { numeric: 'auto' });\n\n return (\n <time\n ref={forwardedRef}\n dateTime={timestamp.toISOString()}\n role=\"time\"\n title={`${formatDate(timestamp)} ${formatTime(timestamp)}`}\n {...restProps}\n >\n {displayText}\n </time>\n );\n }\n);\n\nexport { RelativeTime };\nexport type { CustomInterval, RelativeTimeProps };\n"],"names":["intervals","RelativeTime","React","forwardRef","timestamp","customIntervals","restProps","forwardedRef","formatRelativeTime","formatDate","formatTime","useIntl","interval","intervalToDuration","start","end","Date","now","unit","find","intervalUnit","Object","keys","includes","relativeTime","isPast","customInterval","custom","threshold","displayText","text","numeric","_jsx","time","ref","dateTime","toISOString","role","title"],"mappings":";;;;;AAKA,MAAMA,SAAAA,GAAmC;AAAC,IAAA,OAAA;AAAS,IAAA,QAAA;AAAU,IAAA,MAAA;AAAQ,IAAA,OAAA;AAAS,IAAA,SAAA;AAAW,IAAA;AAAU,CAAA;AAanG;;;;;;;;;;;;;AAaC,IACD,MAAMC,YAAAA,iBAAeC,KAAAA,CAAMC,UAAU,CACnC,CAAC,EAAEC,SAAS,EAAEC,eAAAA,GAAkB,EAAE,EAAE,GAAGC,WAAW,EAAEC,YAAAA,GAAAA;AAClD,IAAA,MAAM,EAAEC,kBAAkB,EAAEC,UAAU,EAAEC,UAAU,EAAE,GAAGC,OAAAA,EAAAA;AAEvD;;QAGA,MAAMC,WAAWC,kBAAAA,CAAmB;QAClCC,KAAAA,EAAOV,SAAAA;AACPW,QAAAA,GAAAA,EAAKC,KAAKC,GAAG;AAEf,KAAA,CAAA;AAEA,IAAA,MAAMC,IAAAA,GAAOlB,SAAAA,CAAUmB,IAAI,CAAC,CAACC,YAAAA,GAAAA;QAC3B,OAAOR,QAAQ,CAACQ,YAAAA,CAAa,GAAG,CAAA,IAAKC,OAAOC,IAAI,CAACV,QAAAA,CAAAA,CAAUW,QAAQ,CAACH,YAAAA,CAAAA;AACtE,IAAA,CAAA,CAAA;IAEA,MAAMI,YAAAA,GAAeC,MAAAA,CAAOrB,SAAAA,CAAAA,GAAa,CAACQ,QAAQ,CAACM,IAAAA,CAAK,GAAGN,QAAQ,CAACM,IAAAA,CAAK;;AAGzE,IAAA,MAAMQ,cAAAA,GAAiBrB,eAAAA,CAAgBc,IAAI,CACzC,CAACQ,MAAAA,GAAWf,QAAQ,CAACe,MAAAA,CAAOT,IAAI,CAAC,GAAGS,OAAOC,SAAS,CAAA;AAGtD,IAAA,MAAMC,cAAcH,cAAAA,GAChBA,cAAAA,CAAeI,IAAI,GACnBtB,kBAAAA,CAAmBgB,cAAcN,IAAAA,EAAM;QAAEa,OAAAA,EAAS;AAAO,KAAA,CAAA;AAE7D,IAAA,qBACEC,GAAA,CAACC,MAAAA,EAAAA;QACCC,GAAAA,EAAK3B,YAAAA;AACL4B,QAAAA,QAAAA,EAAU/B,UAAUgC,WAAW,EAAA;QAC/BC,IAAAA,EAAK,MAAA;AACLC,QAAAA,KAAAA,EAAO,GAAG7B,UAAAA,CAAWL,SAAAA,CAAAA,CAAW,CAAC,EAAEM,WAAWN,SAAAA,CAAAA,CAAAA,CAAY;AACzD,QAAA,GAAGE,SAAS;AAEZuB,QAAAA,QAAAA,EAAAA;;AAGP,CAAA;;;;"}
1
+ {"version":3,"file":"RelativeTime.mjs","sources":["../../../../../admin/src/components/RelativeTime.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Duration, intervalToDuration, isPast } from 'date-fns';\nimport { useIntl } from 'react-intl';\n\nconst intervals: Array<keyof Duration> = ['years', 'months', 'days', 'hours', 'minutes', 'seconds'];\n\ninterface CustomInterval {\n unit: keyof Duration;\n text: string;\n threshold: number;\n}\n\ninterface RelativeTimeProps extends React.ComponentPropsWithoutRef<'time'> {\n timestamp: Date;\n customIntervals?: CustomInterval[];\n}\n\n/**\n * Displays the relative time between a given timestamp and the current time.\n * You can display a custom message for given time intervals by passing an array of custom intervals.\n *\n * @example\n * ```jsx\n * <caption>Display \"last hour\" if the timestamp is less than an hour ago</caption>\n * <RelativeTime\n * timestamp={new Date('2021-01-01')}\n * customIntervals={[\n * { unit: 'hours', threshold: 1, text: 'last hour' },\n * ]}\n * ```\n */\nconst RelativeTime = React.forwardRef<HTMLTimeElement, RelativeTimeProps>(\n ({ timestamp, customIntervals = [], ...restProps }, forwardedRef) => {\n const { formatRelativeTime, formatDate, formatTime } = useIntl();\n\n /**\n * TODO: make this auto-update, like a clock.\n */\n const interval = intervalToDuration({\n start: timestamp,\n end: Date.now(),\n // see https://github.com/date-fns/date-fns/issues/2891 – No idea why it's all partial it returns it every time.\n }) as Required<Duration>;\n\n const unit =\n intervals.find((intervalUnit) => {\n return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);\n }) ?? 'seconds';\n\n const value = interval[unit] ?? 0;\n const relativeTime = isPast(timestamp) ? -value : value;\n\n // Display custom text if interval is less than the threshold\n const customInterval = customIntervals.find(\n (custom) => interval[custom.unit] < custom.threshold\n );\n\n const displayText = customInterval\n ? customInterval.text\n : formatRelativeTime(relativeTime, unit, { numeric: 'auto' });\n\n return (\n <time\n ref={forwardedRef}\n dateTime={timestamp.toISOString()}\n role=\"time\"\n title={`${formatDate(timestamp)} ${formatTime(timestamp)}`}\n {...restProps}\n >\n {displayText}\n </time>\n );\n }\n);\n\nexport { RelativeTime };\nexport type { CustomInterval, RelativeTimeProps };\n"],"names":["intervals","RelativeTime","React","forwardRef","timestamp","customIntervals","restProps","forwardedRef","formatRelativeTime","formatDate","formatTime","useIntl","interval","intervalToDuration","start","end","Date","now","unit","find","intervalUnit","Object","keys","includes","value","relativeTime","isPast","customInterval","custom","threshold","displayText","text","numeric","_jsx","time","ref","dateTime","toISOString","role","title"],"mappings":";;;;;AAKA,MAAMA,SAAAA,GAAmC;AAAC,IAAA,OAAA;AAAS,IAAA,QAAA;AAAU,IAAA,MAAA;AAAQ,IAAA,OAAA;AAAS,IAAA,SAAA;AAAW,IAAA;AAAU,CAAA;AAanG;;;;;;;;;;;;;AAaC,IACD,MAAMC,YAAAA,iBAAeC,KAAAA,CAAMC,UAAU,CACnC,CAAC,EAAEC,SAAS,EAAEC,eAAAA,GAAkB,EAAE,EAAE,GAAGC,WAAW,EAAEC,YAAAA,GAAAA;AAClD,IAAA,MAAM,EAAEC,kBAAkB,EAAEC,UAAU,EAAEC,UAAU,EAAE,GAAGC,OAAAA,EAAAA;AAEvD;;QAGA,MAAMC,WAAWC,kBAAAA,CAAmB;QAClCC,KAAAA,EAAOV,SAAAA;AACPW,QAAAA,GAAAA,EAAKC,KAAKC,GAAG;AAEf,KAAA,CAAA;AAEA,IAAA,MAAMC,IAAAA,GACJlB,SAAAA,CAAUmB,IAAI,CAAC,CAACC,YAAAA,GAAAA;QACd,OAAOR,QAAQ,CAACQ,YAAAA,CAAa,GAAG,CAAA,IAAKC,OAAOC,IAAI,CAACV,QAAAA,CAAAA,CAAUW,QAAQ,CAACH,YAAAA,CAAAA;IACtE,CAAA,CAAA,IAAM,SAAA;AAER,IAAA,MAAMI,KAAAA,GAAQZ,QAAQ,CAACM,IAAAA,CAAK,IAAI,CAAA;AAChC,IAAA,MAAMO,YAAAA,GAAeC,MAAAA,CAAOtB,SAAAA,CAAAA,GAAa,CAACoB,KAAAA,GAAQA,KAAAA;;AAGlD,IAAA,MAAMG,cAAAA,GAAiBtB,eAAAA,CAAgBc,IAAI,CACzC,CAACS,MAAAA,GAAWhB,QAAQ,CAACgB,MAAAA,CAAOV,IAAI,CAAC,GAAGU,OAAOC,SAAS,CAAA;AAGtD,IAAA,MAAMC,cAAcH,cAAAA,GAChBA,cAAAA,CAAeI,IAAI,GACnBvB,kBAAAA,CAAmBiB,cAAcP,IAAAA,EAAM;QAAEc,OAAAA,EAAS;AAAO,KAAA,CAAA;AAE7D,IAAA,qBACEC,GAAA,CAACC,MAAAA,EAAAA;QACCC,GAAAA,EAAK5B,YAAAA;AACL6B,QAAAA,QAAAA,EAAUhC,UAAUiC,WAAW,EAAA;QAC/BC,IAAAA,EAAK,MAAA;AACLC,QAAAA,KAAAA,EAAO,GAAG9B,UAAAA,CAAWL,SAAAA,CAAAA,CAAW,CAAC,EAAEM,WAAWN,SAAAA,CAAAA,CAAAA,CAAY;AACzD,QAAA,GAAGE,SAAS;AAEZwB,QAAAA,QAAAA,EAAAA;;AAGP,CAAA;;;;"}
@@ -3,7 +3,7 @@
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
5
  var designSystem = require('@strapi/design-system');
6
- var styled = require('styled-components');
6
+ var styledComponents = require('styled-components');
7
7
  var resizeHandlers = require('../utils/resizeHandlers.js');
8
8
  var widgetLayout = require('../utils/widgetLayout.js');
9
9
 
@@ -28,7 +28,7 @@ function _interopNamespace(e) {
28
28
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
29
29
 
30
30
  const INDICATOR_SIZE = 20;
31
- const IndicatorContainer = styled.styled(designSystem.Box)`
31
+ const IndicatorContainer = styledComponents.styled(designSystem.Box)`
32
32
  position: absolute;
33
33
  z-index: 1;
34
34
  pointer-events: none;
@@ -40,13 +40,13 @@ const IndicatorContainer = styled.styled(designSystem.Box)`
40
40
  align-items: center;
41
41
  justify-content: center;
42
42
  `;
43
- const DotContainer = styled.styled(designSystem.Box)`
43
+ const DotContainer = styledComponents.styled(designSystem.Box)`
44
44
  position: absolute;
45
45
  top: 50%;
46
46
  left: ${({ $position })=>$position}%;
47
47
  transform: translate(-50%, -50%);
48
48
  `;
49
- const Dot = styled.styled(designSystem.Box)`
49
+ const Dot = styledComponents.styled(designSystem.Box)`
50
50
  width: 6px;
51
51
  height: 6px;
52
52
  border-radius: 50%;
@@ -129,7 +129,7 @@ const ResizeIndicator = ({ isVisible, position, currentLeftWidth, currentRightWi
129
129
  })
130
130
  });
131
131
  };
132
- const ResizeHandleContainer = styled.styled(designSystem.Box)`
132
+ const ResizeHandleContainer = styledComponents.styled(designSystem.Box)`
133
133
  position: absolute;
134
134
  top: 0;
135
135
  bottom: 0;
@@ -143,7 +143,7 @@ const ResizeHandleContainer = styled.styled(designSystem.Box)`
143
143
  cursor: col-resize;
144
144
  background-color: ${({ $isDragging })=>$isDragging ? 'rgba(0, 0, 0, 0.1)' : 'transparent'};
145
145
  `;
146
- const ResizeHandleBar = styled.styled(designSystem.Box)`
146
+ const ResizeHandleBar = styledComponents.styled(designSystem.Box)`
147
147
  width: 2px;
148
148
  height: 100%;
149
149
  background-color: ${({ theme })=>theme.colors.primary500};
@@ -1 +1 @@
1
- {"version":3,"file":"ResizeIndicator.js","sources":["../../../../../admin/src/components/ResizeIndicator.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport {\n isValidResize,\n calculateTargetWidths,\n shouldTriggerResize,\n calculateResizeHandlePosition,\n calculateRowBounds,\n} from '../utils/resizeHandlers';\nimport { getWidgetElement, getWidgetGridContainer } from '../utils/widgetLayout';\n\nimport type { WidgetWithUID } from '../core/apis/Widgets';\n\nconst INDICATOR_SIZE = 20;\n\ninterface ResizeIndicatorProps {\n isVisible: boolean;\n position: { left: number; top: number; height: number };\n currentLeftWidth: number;\n currentRightWidth: number;\n totalColumns?: number;\n rowPosition?: { left: number; top: number; width: number; height: number } | null;\n}\n\nconst IndicatorContainer = styled(Box)<{ $isVisible: boolean }>`\n position: absolute;\n z-index: 1;\n pointer-events: none;\n opacity: ${({ $isVisible }) => ($isVisible ? 1 : 0)};\n transition: opacity 0.2s ease-in-out;\n background: transparent;\n height: ${INDICATOR_SIZE}px;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst DotContainer = styled(Box)<{ $position: number }>`\n position: absolute;\n top: 50%;\n left: ${({ $position }) => $position}%;\n transform: translate(-50%, -50%);\n`;\n\nconst Dot = styled(Box)<{ $isActive: boolean; $isCurrent: boolean }>`\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: ${({ $isActive, $isCurrent, theme }) => {\n if ($isCurrent) return theme.colors.primary600;\n if ($isActive) return theme.colors.primary500;\n return theme.colors.neutral300;\n }};\n transition: all 0.2s ease-in-out;\n box-shadow: ${({ $isCurrent, theme }) =>\n $isCurrent ? `0 0 0 3px ${theme.colors.primary100}` : 'none'};\n transform: ${({ $isCurrent }) => ($isCurrent ? 'scale(1.2)' : 'scale(1)')};\n`;\n\nconst calculateGapAdjustment = (rowWidth: number, leftColumns: number): number => {\n const dotWidth = 6;\n const gapAdjustmentPixels = dotWidth / 2; // Half dot width to center on boundary\n const gapAdjustmentPercent = (gapAdjustmentPixels / rowWidth) * 100;\n\n // Different adjustments for different positions\n switch (leftColumns) {\n case 4:\n return -gapAdjustmentPercent; // Left dot\n case 8:\n return gapAdjustmentPercent; // Right dot\n default: // Center dot\n return 0;\n }\n};\n\nconst ResizeIndicator = ({\n isVisible,\n position,\n currentLeftWidth,\n currentRightWidth,\n totalColumns = 12,\n rowPosition,\n}: ResizeIndicatorProps) => {\n // Calculate available resize positions accounting for grid gaps\n const availablePositions = React.useMemo(() => {\n const rowWidth = rowPosition?.width || 800;\n\n return [4, 6, 8].map((left) => {\n const right = totalColumns - left;\n const basePosition = (left / totalColumns) * 100;\n const gapAdjustment = calculateGapAdjustment(rowWidth, left);\n const positionPercent = basePosition + gapAdjustment;\n\n return { left, right, positionPercent };\n });\n }, [totalColumns, rowPosition?.width]);\n\n // Find the current position index\n const currentPositionIndex = React.useMemo(() => {\n return availablePositions.findIndex(\n (pos) => pos.left === currentLeftWidth && pos.right === currentRightWidth\n );\n }, [availablePositions, currentLeftWidth, currentRightWidth]);\n\n if (!isVisible) {\n return null;\n }\n\n // Calculate positioning - indicator always spans the full row width\n const indicatorTop = rowPosition\n ? rowPosition.top - INDICATOR_SIZE\n : Math.max(10, position.top + position.height / 2 - 40);\n const isCurrent = (index: number) => index === currentPositionIndex;\n const isActive = (index: number) => Math.abs(index - currentPositionIndex) <= 1;\n\n return (\n <IndicatorContainer\n $isVisible={isVisible}\n style={{\n left: rowPosition ? `${rowPosition.left}px` : `${position.left + 10}px`,\n top: `${indicatorTop}px`,\n width: rowPosition ? `${rowPosition.width}px` : 'auto',\n }}\n >\n {availablePositions.map((pos, index) => {\n return (\n <DotContainer key={`${pos.left}-${pos.right}`} $position={pos.positionPercent}>\n <Dot $isActive={isActive(index)} $isCurrent={isCurrent(index)} />\n </DotContainer>\n );\n })}\n </IndicatorContainer>\n );\n};\nconst ResizeHandleContainer = styled(Box)<{ $isDragging?: boolean }>`\n position: absolute;\n top: 0;\n bottom: 0;\n width: ${INDICATOR_SIZE}px;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.8;\n transition: opacity 0.2s ease-in-out;\n cursor: col-resize;\n background-color: ${({ $isDragging }) => ($isDragging ? 'rgba(0, 0, 0, 0.1)' : 'transparent')};\n`;\n\nconst ResizeHandleBar = styled(Box)<{ $isDragging?: boolean }>`\n width: 2px;\n height: 100%;\n background-color: ${({ theme }) => theme.colors.primary500};\n border-radius: 1px;\n opacity: 0;\n transition: opacity 0.2s ease-in-out;\n\n ${ResizeHandleContainer}:hover & {\n opacity: 0.8;\n }\n\n ${({ $isDragging }) => $isDragging && `opacity: 0.8;`}\n`;\n\ninterface WidgetResizeHandleProps {\n leftWidgetId: string;\n rightWidgetId: string;\n leftWidgetWidth: number;\n rightWidgetWidth: number;\n onResize: (\n leftWidgetId: string,\n rightWidgetId: string,\n newLeftWidth: number,\n newRightWidth: number\n ) => void;\n saveLayout: () => void;\n filteredWidgets?: WidgetWithUID[];\n}\n\nexport const WidgetResizeHandle = ({\n leftWidgetId,\n rightWidgetId,\n leftWidgetWidth,\n rightWidgetWidth,\n onResize,\n saveLayout,\n}: WidgetResizeHandleProps) => {\n const [state, setState] = React.useState({\n isDragging: false,\n startX: 0,\n startLeftWidth: 0,\n startRightWidth: 0,\n position: { left: 0, top: 0, height: 0 },\n lastResizeValues: { leftWidth: 0, rightWidth: 0 },\n currentResizeValues: { leftWidth: leftWidgetWidth, rightWidth: rightWidgetWidth },\n rowPosition: null as { left: number; top: number; width: number; height: number } | null,\n });\n\n const throttleRef = React.useRef<NodeJS.Timeout | null>(null);\n\n const handleResize = React.useCallback(\n (deltaColumns: number) => {\n // Only resize if there's significant movement (dead zone)\n if (Math.abs(deltaColumns) < 0.25) {\n return;\n }\n\n // Calculate target widths\n const { targetLeftWidth, targetRightWidth } = calculateTargetWidths(\n deltaColumns,\n state.startLeftWidth,\n state.startRightWidth\n );\n\n // Validate the resize\n if (!isValidResize(targetLeftWidth, targetRightWidth)) {\n return;\n }\n\n // Update current resize values for the indicator\n setState((prev) => ({\n ...prev,\n currentResizeValues: { leftWidth: targetLeftWidth, rightWidth: targetRightWidth },\n }));\n\n // Only trigger resize if values have changed\n if (shouldTriggerResize(targetLeftWidth, targetRightWidth, state.lastResizeValues)) {\n setState((prev) => ({\n ...prev,\n lastResizeValues: { leftWidth: targetLeftWidth, rightWidth: targetRightWidth },\n }));\n onResize(leftWidgetId, rightWidgetId, targetLeftWidth, targetRightWidth);\n }\n },\n [\n leftWidgetId,\n rightWidgetId,\n onResize,\n state.startLeftWidth,\n state.startRightWidth,\n state.lastResizeValues,\n ]\n );\n\n const handlePointerMove = React.useCallback(\n (e: PointerEvent) => {\n if (!state.isDragging) return;\n\n // Clear any existing throttle timeout\n if (throttleRef.current) {\n clearTimeout(throttleRef.current);\n }\n\n // Throttle the resize calls to prevent excessive updates\n throttleRef.current = setTimeout(() => {\n const deltaX = e.clientX - state.startX;\n const threshold = 120; // Pixels per column unit\n const deltaColumns = Math.round(deltaX / threshold);\n\n handleResize(deltaColumns);\n }, 0);\n },\n [state.isDragging, state.startX, handleResize]\n );\n\n // Handle pointer up to end drag\n const handlePointerUp = React.useCallback(() => {\n // Clear any pending throttle timeout\n if (throttleRef.current) {\n clearTimeout(throttleRef.current);\n throttleRef.current = null;\n }\n\n // Save the layout\n saveLayout();\n\n // Reset last resize values and stop dragging\n setState((prev) => ({\n ...prev,\n lastResizeValues: { leftWidth: 0, rightWidth: 0 },\n currentResizeValues: { leftWidth: leftWidgetWidth, rightWidth: rightWidgetWidth },\n isDragging: false,\n }));\n }, [leftWidgetWidth, rightWidgetWidth, saveLayout]);\n\n // Handle pointer down to start drag\n const handlePointerDown = React.useCallback(\n (e: React.PointerEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n setState((prev) => ({\n ...prev,\n isDragging: true,\n startX: e.clientX,\n startLeftWidth: leftWidgetWidth,\n startRightWidth: rightWidgetWidth,\n }));\n },\n [leftWidgetWidth, rightWidgetWidth]\n );\n\n // Set up drag event listeners\n React.useEffect(() => {\n if (state.isDragging) {\n document.addEventListener('pointermove', handlePointerMove);\n document.addEventListener('pointerup', handlePointerUp);\n\n return () => {\n document.removeEventListener('pointermove', handlePointerMove);\n document.removeEventListener('pointerup', handlePointerUp);\n };\n }\n }, [state.isDragging, handlePointerMove, handlePointerUp]);\n\n // Set up resize observer for position updates - watching widgets and grid container\n React.useLayoutEffect(() => {\n const leftElement = getWidgetElement(leftWidgetId);\n const rightElement = getWidgetElement(rightWidgetId);\n const containerElement = getWidgetGridContainer();\n\n const updatePosition = () => {\n const position = calculateResizeHandlePosition(leftElement, rightElement, containerElement);\n const rowPosition = calculateRowBounds(leftElement, rightElement, containerElement);\n\n setState((prev) => ({\n ...prev,\n position,\n rowPosition,\n }));\n };\n\n // Create ResizeObserver to watch widgets and grid container\n const resizeObserver = new ResizeObserver(updatePosition);\n\n // Observe all relevant elements\n if (leftElement) resizeObserver.observe(leftElement);\n if (rightElement) resizeObserver.observe(rightElement);\n if (containerElement) resizeObserver.observe(containerElement);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [leftWidgetId, rightWidgetId]);\n\n // Cleanup throttle timeout on unmount\n React.useEffect(() => {\n return () => {\n if (throttleRef.current) {\n clearTimeout(throttleRef.current);\n }\n };\n }, []);\n\n return (\n <>\n <ResizeHandleContainer\n onPointerDown={handlePointerDown}\n style={{\n transform: `translate(${state.position.left}px, ${state.position.top}px)`,\n height: `${state.position.height}px`,\n }}\n >\n <ResizeHandleBar $isDragging={state.isDragging} />\n </ResizeHandleContainer>\n\n <ResizeIndicator\n isVisible={state.isDragging}\n position={state.position}\n currentLeftWidth={state.currentResizeValues.leftWidth}\n currentRightWidth={state.currentResizeValues.rightWidth}\n rowPosition={state.rowPosition}\n />\n </>\n );\n};\n"],"names":["INDICATOR_SIZE","IndicatorContainer","styled","Box","$isVisible","DotContainer","$position","Dot","$isActive","$isCurrent","theme","colors","primary600","primary500","neutral300","primary100","calculateGapAdjustment","rowWidth","leftColumns","dotWidth","gapAdjustmentPixels","gapAdjustmentPercent","ResizeIndicator","isVisible","position","currentLeftWidth","currentRightWidth","totalColumns","rowPosition","availablePositions","React","useMemo","width","map","left","right","basePosition","gapAdjustment","positionPercent","currentPositionIndex","findIndex","pos","indicatorTop","top","Math","max","height","isCurrent","index","isActive","abs","_jsx","style","ResizeHandleContainer","$isDragging","ResizeHandleBar","WidgetResizeHandle","leftWidgetId","rightWidgetId","leftWidgetWidth","rightWidgetWidth","onResize","saveLayout","state","setState","useState","isDragging","startX","startLeftWidth","startRightWidth","lastResizeValues","leftWidth","rightWidth","currentResizeValues","throttleRef","useRef","handleResize","useCallback","deltaColumns","targetLeftWidth","targetRightWidth","calculateTargetWidths","isValidResize","prev","shouldTriggerResize","handlePointerMove","e","current","clearTimeout","setTimeout","deltaX","clientX","threshold","round","handlePointerUp","handlePointerDown","preventDefault","stopPropagation","useEffect","document","addEventListener","removeEventListener","useLayoutEffect","leftElement","getWidgetElement","rightElement","containerElement","getWidgetGridContainer","updatePosition","calculateResizeHandlePosition","calculateRowBounds","resizeObserver","ResizeObserver","observe","disconnect","_jsxs","_Fragment","onPointerDown","transform"],"mappings":"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"}
1
+ {"version":3,"file":"ResizeIndicator.js","sources":["../../../../../admin/src/components/ResizeIndicator.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport {\n isValidResize,\n calculateTargetWidths,\n shouldTriggerResize,\n calculateResizeHandlePosition,\n calculateRowBounds,\n} from '../utils/resizeHandlers';\nimport { getWidgetElement, getWidgetGridContainer } from '../utils/widgetLayout';\n\nimport type { WidgetWithUID } from '../core/apis/Widgets';\n\nconst INDICATOR_SIZE = 20;\n\ninterface ResizeIndicatorProps {\n isVisible: boolean;\n position: { left: number; top: number; height: number };\n currentLeftWidth: number;\n currentRightWidth: number;\n totalColumns?: number;\n rowPosition?: { left: number; top: number; width: number; height: number } | null;\n}\n\nconst IndicatorContainer = styled(Box)<{ $isVisible: boolean }>`\n position: absolute;\n z-index: 1;\n pointer-events: none;\n opacity: ${({ $isVisible }) => ($isVisible ? 1 : 0)};\n transition: opacity 0.2s ease-in-out;\n background: transparent;\n height: ${INDICATOR_SIZE}px;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst DotContainer = styled(Box)<{ $position: number }>`\n position: absolute;\n top: 50%;\n left: ${({ $position }) => $position}%;\n transform: translate(-50%, -50%);\n`;\n\nconst Dot = styled(Box)<{ $isActive: boolean; $isCurrent: boolean }>`\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: ${({ $isActive, $isCurrent, theme }) => {\n if ($isCurrent) return theme.colors.primary600;\n if ($isActive) return theme.colors.primary500;\n return theme.colors.neutral300;\n }};\n transition: all 0.2s ease-in-out;\n box-shadow: ${({ $isCurrent, theme }) =>\n $isCurrent ? `0 0 0 3px ${theme.colors.primary100}` : 'none'};\n transform: ${({ $isCurrent }) => ($isCurrent ? 'scale(1.2)' : 'scale(1)')};\n`;\n\nconst calculateGapAdjustment = (rowWidth: number, leftColumns: number): number => {\n const dotWidth = 6;\n const gapAdjustmentPixels = dotWidth / 2; // Half dot width to center on boundary\n const gapAdjustmentPercent = (gapAdjustmentPixels / rowWidth) * 100;\n\n // Different adjustments for different positions\n switch (leftColumns) {\n case 4:\n return -gapAdjustmentPercent; // Left dot\n case 8:\n return gapAdjustmentPercent; // Right dot\n default: // Center dot\n return 0;\n }\n};\n\nconst ResizeIndicator = ({\n isVisible,\n position,\n currentLeftWidth,\n currentRightWidth,\n totalColumns = 12,\n rowPosition,\n}: ResizeIndicatorProps) => {\n // Calculate available resize positions accounting for grid gaps\n const availablePositions = React.useMemo(() => {\n const rowWidth = rowPosition?.width || 800;\n\n return [4, 6, 8].map((left) => {\n const right = totalColumns - left;\n const basePosition = (left / totalColumns) * 100;\n const gapAdjustment = calculateGapAdjustment(rowWidth, left);\n const positionPercent = basePosition + gapAdjustment;\n\n return { left, right, positionPercent };\n });\n }, [totalColumns, rowPosition?.width]);\n\n // Find the current position index\n const currentPositionIndex = React.useMemo(() => {\n return availablePositions.findIndex(\n (pos) => pos.left === currentLeftWidth && pos.right === currentRightWidth\n );\n }, [availablePositions, currentLeftWidth, currentRightWidth]);\n\n if (!isVisible) {\n return null;\n }\n\n // Calculate positioning - indicator always spans the full row width\n const indicatorTop = rowPosition\n ? rowPosition.top - INDICATOR_SIZE\n : Math.max(10, position.top + position.height / 2 - 40);\n const isCurrent = (index: number) => index === currentPositionIndex;\n const isActive = (index: number) => Math.abs(index - currentPositionIndex) <= 1;\n\n return (\n <IndicatorContainer\n $isVisible={isVisible}\n style={{\n left: rowPosition ? `${rowPosition.left}px` : `${position.left + 10}px`,\n top: `${indicatorTop}px`,\n width: rowPosition ? `${rowPosition.width}px` : 'auto',\n }}\n >\n {availablePositions.map((pos, index) => {\n return (\n <DotContainer key={`${pos.left}-${pos.right}`} $position={pos.positionPercent}>\n <Dot $isActive={isActive(index)} $isCurrent={isCurrent(index)} />\n </DotContainer>\n );\n })}\n </IndicatorContainer>\n );\n};\nconst ResizeHandleContainer = styled(Box)<{ $isDragging?: boolean }>`\n position: absolute;\n top: 0;\n bottom: 0;\n width: ${INDICATOR_SIZE}px;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.8;\n transition: opacity 0.2s ease-in-out;\n cursor: col-resize;\n background-color: ${({ $isDragging }) => ($isDragging ? 'rgba(0, 0, 0, 0.1)' : 'transparent')};\n`;\n\nconst ResizeHandleBar = styled(Box)<{ $isDragging?: boolean }>`\n width: 2px;\n height: 100%;\n background-color: ${({ theme }) => theme.colors.primary500};\n border-radius: 1px;\n opacity: 0;\n transition: opacity 0.2s ease-in-out;\n\n ${ResizeHandleContainer}:hover & {\n opacity: 0.8;\n }\n\n ${({ $isDragging }) => $isDragging && `opacity: 0.8;`}\n`;\n\ninterface WidgetResizeHandleProps {\n leftWidgetId: string;\n rightWidgetId: string;\n leftWidgetWidth: number;\n rightWidgetWidth: number;\n onResize: (\n leftWidgetId: string,\n rightWidgetId: string,\n newLeftWidth: number,\n newRightWidth: number\n ) => void;\n saveLayout: () => void;\n filteredWidgets?: WidgetWithUID[];\n}\n\nexport const WidgetResizeHandle = ({\n leftWidgetId,\n rightWidgetId,\n leftWidgetWidth,\n rightWidgetWidth,\n onResize,\n saveLayout,\n}: WidgetResizeHandleProps) => {\n const [state, setState] = React.useState({\n isDragging: false,\n startX: 0,\n startLeftWidth: 0,\n startRightWidth: 0,\n position: { left: 0, top: 0, height: 0 },\n lastResizeValues: { leftWidth: 0, rightWidth: 0 },\n currentResizeValues: { leftWidth: leftWidgetWidth, rightWidth: rightWidgetWidth },\n rowPosition: null as { left: number; top: number; width: number; height: number } | null,\n });\n\n const throttleRef = React.useRef<NodeJS.Timeout | null>(null);\n\n const handleResize = React.useCallback(\n (deltaColumns: number) => {\n // Only resize if there's significant movement (dead zone)\n if (Math.abs(deltaColumns) < 0.25) {\n return;\n }\n\n // Calculate target widths\n const { targetLeftWidth, targetRightWidth } = calculateTargetWidths(\n deltaColumns,\n state.startLeftWidth,\n state.startRightWidth\n );\n\n // Validate the resize\n if (!isValidResize(targetLeftWidth, targetRightWidth)) {\n return;\n }\n\n // Update current resize values for the indicator\n setState((prev) => ({\n ...prev,\n currentResizeValues: { leftWidth: targetLeftWidth, rightWidth: targetRightWidth },\n }));\n\n // Only trigger resize if values have changed\n if (shouldTriggerResize(targetLeftWidth, targetRightWidth, state.lastResizeValues)) {\n setState((prev) => ({\n ...prev,\n lastResizeValues: { leftWidth: targetLeftWidth, rightWidth: targetRightWidth },\n }));\n onResize(leftWidgetId, rightWidgetId, targetLeftWidth, targetRightWidth);\n }\n },\n [\n leftWidgetId,\n rightWidgetId,\n onResize,\n state.startLeftWidth,\n state.startRightWidth,\n state.lastResizeValues,\n ]\n );\n\n const handlePointerMove = React.useCallback(\n (e: PointerEvent) => {\n if (!state.isDragging) return;\n\n // Clear any existing throttle timeout\n if (throttleRef.current) {\n clearTimeout(throttleRef.current);\n }\n\n // Throttle the resize calls to prevent excessive updates\n throttleRef.current = setTimeout(() => {\n const deltaX = e.clientX - state.startX;\n const threshold = 120; // Pixels per column unit\n const deltaColumns = Math.round(deltaX / threshold);\n\n handleResize(deltaColumns);\n }, 0);\n },\n [state.isDragging, state.startX, handleResize]\n );\n\n // Handle pointer up to end drag\n const handlePointerUp = React.useCallback(() => {\n // Clear any pending throttle timeout\n if (throttleRef.current) {\n clearTimeout(throttleRef.current);\n throttleRef.current = null;\n }\n\n // Save the layout\n saveLayout();\n\n // Reset last resize values and stop dragging\n setState((prev) => ({\n ...prev,\n lastResizeValues: { leftWidth: 0, rightWidth: 0 },\n currentResizeValues: { leftWidth: leftWidgetWidth, rightWidth: rightWidgetWidth },\n isDragging: false,\n }));\n }, [leftWidgetWidth, rightWidgetWidth, saveLayout]);\n\n // Handle pointer down to start drag\n const handlePointerDown = React.useCallback(\n (e: React.PointerEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n setState((prev) => ({\n ...prev,\n isDragging: true,\n startX: e.clientX,\n startLeftWidth: leftWidgetWidth,\n startRightWidth: rightWidgetWidth,\n }));\n },\n [leftWidgetWidth, rightWidgetWidth]\n );\n\n // Set up drag event listeners\n React.useEffect(() => {\n if (state.isDragging) {\n document.addEventListener('pointermove', handlePointerMove);\n document.addEventListener('pointerup', handlePointerUp);\n\n return () => {\n document.removeEventListener('pointermove', handlePointerMove);\n document.removeEventListener('pointerup', handlePointerUp);\n };\n }\n }, [state.isDragging, handlePointerMove, handlePointerUp]);\n\n // Set up resize observer for position updates - watching widgets and grid container\n React.useLayoutEffect(() => {\n const leftElement = getWidgetElement(leftWidgetId);\n const rightElement = getWidgetElement(rightWidgetId);\n const containerElement = getWidgetGridContainer();\n\n const updatePosition = () => {\n const position = calculateResizeHandlePosition(leftElement, rightElement, containerElement);\n const rowPosition = calculateRowBounds(leftElement, rightElement, containerElement);\n\n setState((prev) => ({\n ...prev,\n position,\n rowPosition,\n }));\n };\n\n // Create ResizeObserver to watch widgets and grid container\n const resizeObserver = new ResizeObserver(updatePosition);\n\n // Observe all relevant elements\n if (leftElement) resizeObserver.observe(leftElement);\n if (rightElement) resizeObserver.observe(rightElement);\n if (containerElement) resizeObserver.observe(containerElement);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [leftWidgetId, rightWidgetId]);\n\n // Cleanup throttle timeout on unmount\n React.useEffect(() => {\n return () => {\n if (throttleRef.current) {\n clearTimeout(throttleRef.current);\n }\n };\n }, []);\n\n return (\n <>\n <ResizeHandleContainer\n onPointerDown={handlePointerDown}\n style={{\n transform: `translate(${state.position.left}px, ${state.position.top}px)`,\n height: `${state.position.height}px`,\n }}\n >\n <ResizeHandleBar $isDragging={state.isDragging} />\n </ResizeHandleContainer>\n\n <ResizeIndicator\n isVisible={state.isDragging}\n position={state.position}\n currentLeftWidth={state.currentResizeValues.leftWidth}\n currentRightWidth={state.currentResizeValues.rightWidth}\n rowPosition={state.rowPosition}\n />\n </>\n );\n};\n"],"names":["INDICATOR_SIZE","IndicatorContainer","styled","Box","$isVisible","DotContainer","$position","Dot","$isActive","$isCurrent","theme","colors","primary600","primary500","neutral300","primary100","calculateGapAdjustment","rowWidth","leftColumns","dotWidth","gapAdjustmentPixels","gapAdjustmentPercent","ResizeIndicator","isVisible","position","currentLeftWidth","currentRightWidth","totalColumns","rowPosition","availablePositions","React","useMemo","width","map","left","right","basePosition","gapAdjustment","positionPercent","currentPositionIndex","findIndex","pos","indicatorTop","top","Math","max","height","isCurrent","index","isActive","abs","_jsx","style","ResizeHandleContainer","$isDragging","ResizeHandleBar","WidgetResizeHandle","leftWidgetId","rightWidgetId","leftWidgetWidth","rightWidgetWidth","onResize","saveLayout","state","setState","useState","isDragging","startX","startLeftWidth","startRightWidth","lastResizeValues","leftWidth","rightWidth","currentResizeValues","throttleRef","useRef","handleResize","useCallback","deltaColumns","targetLeftWidth","targetRightWidth","calculateTargetWidths","isValidResize","prev","shouldTriggerResize","handlePointerMove","e","current","clearTimeout","setTimeout","deltaX","clientX","threshold","round","handlePointerUp","handlePointerDown","preventDefault","stopPropagation","useEffect","document","addEventListener","removeEventListener","useLayoutEffect","leftElement","getWidgetElement","rightElement","containerElement","getWidgetGridContainer","updatePosition","calculateResizeHandlePosition","calculateRowBounds","resizeObserver","ResizeObserver","observe","disconnect","_jsxs","_Fragment","onPointerDown","transform"],"mappings":"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"}
@@ -5,14 +5,14 @@ var React = require('react');
5
5
  var designSystem = require('@strapi/design-system');
6
6
  var icons = require('@strapi/icons');
7
7
  var reactRouterDom = require('react-router-dom');
8
- var styled = require('styled-components');
8
+ var styledComponents = require('styled-components');
9
9
  var theme = require('../constants/theme.js');
10
10
  var Tours = require('./GuidedTour/Tours.js');
11
11
 
12
- const MainSubNav = styled.styled(designSystem.SubNav)`
12
+ const MainSubNav = styledComponents.styled(designSystem.SubNav)`
13
13
  width: 100%;
14
14
  height: 100%;
15
- overflow: hidden;
15
+ overflow: ${({ $isFullPage })=>$isFullPage ? 'visible' : 'hidden'};
16
16
  background-color: ${({ theme })=>theme.colors.neutral0};
17
17
  display: flex;
18
18
  flex-direction: column;
@@ -24,15 +24,17 @@ const MainSubNav = styled.styled(designSystem.SubNav)`
24
24
  width: ${theme.WIDTH_SIDE_NAVIGATION};
25
25
  position: sticky;
26
26
  top: 0;
27
+ overflow: hidden;
27
28
  border-right: 1px solid ${({ theme })=>theme.colors.neutral150};
28
29
  overscroll-behavior: contain;
29
30
  }
30
31
  `;
31
- const Main = ({ children, ...props })=>/*#__PURE__*/ jsxRuntime.jsx(MainSubNav, {
32
+ const Main = ({ children, isFullPage, ...props })=>/*#__PURE__*/ jsxRuntime.jsx(MainSubNav, {
33
+ $isFullPage: isFullPage,
32
34
  ...props,
33
35
  children: children
34
36
  });
35
- const StyledLink = styled.styled(reactRouterDom.NavLink)`
37
+ const StyledLink = styledComponents.styled(reactRouterDom.NavLink)`
36
38
  display: flex;
37
39
  align-items: center;
38
40
  justify-content: space-between;
@@ -120,7 +122,7 @@ const Link = (props)=>{
120
122
  })
121
123
  });
122
124
  };
123
- const StyledHeader = styled.styled(designSystem.Flex)`
125
+ const StyledHeader = styledComponents.styled(designSystem.Flex)`
124
126
  flex: 0 0 ${theme.HEIGHT_TOP_NAVIGATION};
125
127
  height: ${theme.HEIGHT_TOP_NAVIGATION};
126
128
 
@@ -281,7 +283,7 @@ const Section = ({ label, children, link, sectionId, badgeLabel })=>{
281
283
  ]
282
284
  });
283
285
  };
284
- const SubSectionHeader = styled.styled.button`
286
+ const SubSectionHeader = styledComponents.styled.button`
285
287
  cursor: pointer;
286
288
  width: 100%;
287
289
  border: none;
@@ -299,7 +301,7 @@ const SubSectionHeader = styled.styled.button`
299
301
  background-color: ${({ theme })=>theme.colors.neutral100};
300
302
  }
301
303
  `;
302
- const SubSectionLinkWrapper = styled.styled.li`
304
+ const SubSectionLinkWrapper = styledComponents.styled.li`
303
305
  ${StyledLink} > div {
304
306
  padding-left: 36px;
305
307
  }
@@ -369,7 +371,7 @@ const SubSection = ({ label, children })=>{
369
371
  ]
370
372
  });
371
373
  };
372
- const PageWrapper = styled.styled(designSystem.Box)`
374
+ const PageWrapper = styledComponents.styled(designSystem.Box)`
373
375
  width: 100%;
374
376
 
375
377
  ${MainSubNav} {
@@ -1 +1 @@
1
- {"version":3,"file":"SubNav.js","sources":["../../../../../admin/src/components/SubNav.tsx"],"sourcesContent":["import { useEffect, useId, useRef, useState } from 'react';\n\nimport {\n Badge,\n Box,\n Flex,\n IconButton,\n ScrollArea,\n SubNav as DSSubNav,\n Typography,\n} from '@strapi/design-system';\nimport { ChevronDown, Plus } from '@strapi/icons';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport {\n HEIGHT_TOP_NAVIGATION,\n HEIGHT_TOP_NAVIGATION_MEDIUM,\n WIDTH_SIDE_NAVIGATION,\n} from '../constants/theme';\n\nimport { tours } from './GuidedTour/Tours';\n\nconst MainSubNav = styled(DSSubNav)`\n width: 100%;\n height: 100%;\n overflow: hidden;\n background-color: ${({ theme }) => theme.colors.neutral0};\n display: flex;\n flex-direction: column;\n border-right: 0;\n box-shadow: none;\n position: relative;\n\n ${({ theme }) => theme.breakpoints.medium} {\n width: ${WIDTH_SIDE_NAVIGATION};\n position: sticky;\n top: 0;\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n overscroll-behavior: contain;\n }\n`;\n\nconst Main = ({ children, ...props }: { children: React.ReactNode; isFullPage?: boolean }) => (\n <MainSubNav {...props}>{children}</MainSubNav>\n);\n\nconst StyledLink = styled(NavLink)`\n display: flex;\n align-items: center;\n justify-content: space-between;\n text-decoration: none;\n height: 32px;\n\n color: ${({ theme }) => theme.colors.neutral800};\n\n &.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n color: ${theme.colors.primary700};\n font-weight: 500;\n `;\n }}\n }\n\n &:hover.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n `;\n }}\n }\n\n &:hover > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.neutral100};\n `;\n }}\n }\n\n &:focus-visible {\n outline-offset: -2px;\n }\n`;\n\nconst Link = (\n props: Omit<React.ComponentProps<typeof StyledLink>, 'label'> & {\n label: React.ReactNode;\n endAction?: React.ReactNode;\n handleClick?: () => void;\n }\n) => {\n const { label, endAction, handleClick, ...rest } = props;\n\n return (\n <StyledLink {...rest} onClick={handleClick}>\n <Box\n width={'100%'}\n paddingLeft={3}\n paddingRight={3}\n paddingTop={{ initial: 1, large: 0 }}\n paddingBottom={{ initial: 1, large: 0 }}\n borderRadius={1}\n >\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={{ initial: 2, large: 1 }}>\n <Typography\n tag=\"div\"\n lineHeight=\"32px\"\n width={{ initial: '80dvw', medium: '100%' }}\n overflow=\"hidden\"\n style={{ textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}\n >\n {label}\n </Typography>\n <Flex gap={2}>{endAction}</Flex>\n </Flex>\n </Box>\n </StyledLink>\n );\n};\n\nconst StyledHeader = styled(Flex)`\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION};\n height: ${HEIGHT_TOP_NAVIGATION};\n\n ${({ theme }) => theme.breakpoints.medium} {\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION_MEDIUM};\n height: ${HEIGHT_TOP_NAVIGATION_MEDIUM};\n }\n`;\n\nconst Header = ({ label }: { label: string }) => {\n return (\n <StyledHeader justifyContent=\"space-between\" paddingLeft={5} paddingRight={5}>\n <Typography variant=\"beta\" tag=\"h2\">\n {label}\n </Typography>\n </StyledHeader>\n );\n};\n\nconst Sections = ({\n children,\n ...props\n}: {\n children: React.ReactNode[];\n [key: string]: unknown;\n}) => {\n return (\n <Box\n paddingTop={{ initial: 5, large: 4 }}\n paddingBottom={{ initial: 5, large: 4 }}\n paddingLeft={{ initial: 3, large: 0 }}\n paddingRight={{ initial: 3, large: 0 }}\n maxWidth={{ initial: '100%', medium: WIDTH_SIDE_NAVIGATION }}\n >\n <Flex tag=\"ul\" gap={6} direction=\"column\" alignItems=\"stretch\" {...props}>\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Box>\n );\n};\n\n/**\n * TODO:\n * This would be better in the content-type-builder package directly but currently\n * the SubNav API does not expose a way to wrap the link, instead it wraps the link and the list\n */\nconst GuidedTourTooltip = ({\n sectionId,\n children,\n}: {\n sectionId?: string;\n children: React.ReactNode;\n}) => {\n switch (sectionId) {\n case 'models':\n return (\n <tours.contentTypeBuilder.CollectionTypes>\n <tours.contentTypeBuilder.YourTurn>{children}</tours.contentTypeBuilder.YourTurn>\n </tours.contentTypeBuilder.CollectionTypes>\n );\n case 'singleTypes':\n return (\n <tours.contentTypeBuilder.SingleTypes>{children}</tours.contentTypeBuilder.SingleTypes>\n );\n case 'components':\n return <tours.contentTypeBuilder.Components>{children}</tours.contentTypeBuilder.Components>;\n default:\n return children;\n }\n};\n\nconst Section = ({\n label,\n children,\n link,\n sectionId,\n badgeLabel,\n}: {\n label: string;\n children: React.ReactNode[];\n link?: { label: string; onClick: () => void };\n sectionId?: string;\n badgeLabel?: string;\n}) => {\n const listId = useId();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box\n paddingLeft={{\n initial: 3,\n large: 5,\n }}\n paddingRight={{\n initial: 3,\n large: 5,\n }}\n >\n <Flex position=\"relative\" justifyContent=\"space-between\" gap={2}>\n <Flex>\n <Box>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {label}\n </Typography>\n </Box>\n </Flex>\n <Flex gap={1}>\n {badgeLabel && (\n <Badge backgroundColor=\"neutral150\" textColor=\"neutral600\">\n {badgeLabel}\n </Badge>\n )}\n {link && (\n <GuidedTourTooltip sectionId={sectionId}>\n <IconButton\n label={link.label}\n variant=\"ghost\"\n withTooltip\n onClick={link.onClick}\n size=\"XS\"\n >\n <Plus />\n </IconButton>\n </GuidedTourTooltip>\n )}\n </Flex>\n </Flex>\n </Box>\n <Flex\n tag=\"ol\"\n id={listId}\n direction=\"column\"\n gap={{ initial: 2, large: '2px' }}\n alignItems={'stretch'}\n marginLeft={{\n initial: 0,\n large: 2,\n }}\n marginRight={{\n initial: 0,\n large: 2,\n }}\n >\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Flex>\n );\n};\n\nconst SubSectionHeader = styled.button`\n cursor: pointer;\n width: 100%;\n border: none;\n padding: 0;\n background: transparent;\n display: flex;\n align-items: center;\n border-radius: ${({ theme }) => theme.borderRadius};\n padding-left: ${({ theme }) => theme.spaces[3]};\n padding-right: ${({ theme }) => theme.spaces[3]};\n padding-top: ${({ theme }) => theme.spaces[2]};\n padding-bottom: ${({ theme }) => theme.spaces[2]};\n\n &:hover {\n background-color: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\nconst SubSectionLinkWrapper = styled.li`\n ${StyledLink} > div {\n padding-left: 36px;\n }\n`;\n\nconst SubSection = ({ label, children }: { label: string; children: React.ReactNode[] }) => {\n const [isOpen, setOpenLinks] = useState(true);\n const [contentHeight, setContentHeight] = useState(0);\n const listId = useId();\n const contentRef = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (contentRef.current) {\n setContentHeight(contentRef.current.scrollHeight);\n }\n }, [children]);\n\n const handleClick = () => {\n setOpenLinks((prev) => !prev);\n };\n\n return (\n <Box>\n <Flex justifyContent=\"space-between\">\n <SubSectionHeader onClick={handleClick} aria-expanded={isOpen} aria-controls={listId}>\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n <Box paddingLeft={2}>\n <Typography tag=\"span\" fontWeight=\"semiBold\" textColor=\"neutral800\">\n {label}\n </Typography>\n </Box>\n </SubSectionHeader>\n </Flex>\n <Flex\n ref={contentRef}\n tag=\"ul\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n style={{\n maxHeight: isOpen ? `${contentHeight}px` : 0,\n overflow: 'hidden',\n transition: 'max-height 0.5s cubic-bezier(0, 1, 0, 1)',\n }}\n >\n {children.map((child, index) => {\n return <SubSectionLinkWrapper key={index}>{child}</SubSectionLinkWrapper>;\n })}\n </Flex>\n </Box>\n );\n};\n\nconst PageWrapper = styled(Box)`\n width: 100%;\n\n ${MainSubNav} {\n background-color: transparent;\n border-right: none;\n }\n\n ${({ theme }) => theme.breakpoints.medium} {\n overflow: hidden;\n\n ${MainSubNav} {\n top: 0;\n }\n }\n`;\n\nconst Content = ({ children }: { children: React.ReactNode }) => {\n return <ScrollArea>{children}</ScrollArea>;\n};\n\nexport const SubNav = {\n Main,\n Content,\n Header,\n Link,\n Sections,\n Section,\n SubSection,\n PageWrapper,\n};\n"],"names":["MainSubNav","styled","DSSubNav","theme","colors","neutral0","breakpoints","medium","WIDTH_SIDE_NAVIGATION","neutral150","Main","children","props","_jsx","StyledLink","NavLink","neutral800","primary100","primary700","neutral100","Link","label","endAction","handleClick","rest","onClick","Box","width","paddingLeft","paddingRight","paddingTop","initial","large","paddingBottom","borderRadius","_jsxs","Flex","justifyContent","gap","Typography","tag","lineHeight","overflow","style","textOverflow","whiteSpace","StyledHeader","HEIGHT_TOP_NAVIGATION","HEIGHT_TOP_NAVIGATION_MEDIUM","Header","variant","Sections","maxWidth","direction","alignItems","map","child","index","li","GuidedTourTooltip","sectionId","tours","contentTypeBuilder","CollectionTypes","YourTurn","SingleTypes","Components","Section","link","badgeLabel","listId","useId","position","textColor","Badge","backgroundColor","IconButton","withTooltip","size","Plus","id","marginLeft","marginRight","SubSectionHeader","button","spaces","SubSectionLinkWrapper","SubSection","isOpen","setOpenLinks","useState","contentHeight","setContentHeight","contentRef","useRef","useEffect","current","scrollHeight","prev","aria-expanded","aria-controls","ChevronDown","aria-hidden","fill","transform","transition","fontWeight","ref","maxHeight","PageWrapper","Content","ScrollArea","SubNav"],"mappings":"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"}
1
+ {"version":3,"file":"SubNav.js","sources":["../../../../../admin/src/components/SubNav.tsx"],"sourcesContent":["import { useEffect, useId, useRef, useState } from 'react';\n\nimport {\n Badge,\n Box,\n Flex,\n IconButton,\n ScrollArea,\n SubNav as DSSubNav,\n Typography,\n} from '@strapi/design-system';\nimport { ChevronDown, Plus } from '@strapi/icons';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport {\n HEIGHT_TOP_NAVIGATION,\n HEIGHT_TOP_NAVIGATION_MEDIUM,\n WIDTH_SIDE_NAVIGATION,\n} from '../constants/theme';\n\nimport { tours } from './GuidedTour/Tours';\n\nconst MainSubNav = styled(DSSubNav)<{ $isFullPage?: boolean }>`\n width: 100%;\n height: 100%;\n overflow: ${({ $isFullPage }) => ($isFullPage ? 'visible' : 'hidden')};\n background-color: ${({ theme }) => theme.colors.neutral0};\n display: flex;\n flex-direction: column;\n border-right: 0;\n box-shadow: none;\n position: relative;\n\n ${({ theme }) => theme.breakpoints.medium} {\n width: ${WIDTH_SIDE_NAVIGATION};\n position: sticky;\n top: 0;\n overflow: hidden;\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n overscroll-behavior: contain;\n }\n`;\n\nconst Main = ({\n children,\n isFullPage,\n ...props\n}: {\n children: React.ReactNode;\n isFullPage?: boolean;\n}) => (\n <MainSubNav $isFullPage={isFullPage} {...props}>\n {children}\n </MainSubNav>\n);\n\nconst StyledLink = styled(NavLink)`\n display: flex;\n align-items: center;\n justify-content: space-between;\n text-decoration: none;\n height: 32px;\n\n color: ${({ theme }) => theme.colors.neutral800};\n\n &.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n color: ${theme.colors.primary700};\n font-weight: 500;\n `;\n }}\n }\n\n &:hover.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n `;\n }}\n }\n\n &:hover > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.neutral100};\n `;\n }}\n }\n\n &:focus-visible {\n outline-offset: -2px;\n }\n`;\n\nconst Link = (\n props: Omit<React.ComponentProps<typeof StyledLink>, 'label'> & {\n label: React.ReactNode;\n endAction?: React.ReactNode;\n handleClick?: () => void;\n }\n) => {\n const { label, endAction, handleClick, ...rest } = props;\n\n return (\n <StyledLink {...rest} onClick={handleClick}>\n <Box\n width={'100%'}\n paddingLeft={3}\n paddingRight={3}\n paddingTop={{ initial: 1, large: 0 }}\n paddingBottom={{ initial: 1, large: 0 }}\n borderRadius={1}\n >\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={{ initial: 2, large: 1 }}>\n <Typography\n tag=\"div\"\n lineHeight=\"32px\"\n width={{ initial: '80dvw', medium: '100%' }}\n overflow=\"hidden\"\n style={{ textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}\n >\n {label}\n </Typography>\n <Flex gap={2}>{endAction}</Flex>\n </Flex>\n </Box>\n </StyledLink>\n );\n};\n\nconst StyledHeader = styled(Flex)`\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION};\n height: ${HEIGHT_TOP_NAVIGATION};\n\n ${({ theme }) => theme.breakpoints.medium} {\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION_MEDIUM};\n height: ${HEIGHT_TOP_NAVIGATION_MEDIUM};\n }\n`;\n\nconst Header = ({ label }: { label: string }) => {\n return (\n <StyledHeader justifyContent=\"space-between\" paddingLeft={5} paddingRight={5}>\n <Typography variant=\"beta\" tag=\"h2\">\n {label}\n </Typography>\n </StyledHeader>\n );\n};\n\nconst Sections = ({\n children,\n ...props\n}: {\n children: React.ReactNode[];\n [key: string]: unknown;\n}) => {\n return (\n <Box\n paddingTop={{ initial: 5, large: 4 }}\n paddingBottom={{ initial: 5, large: 4 }}\n paddingLeft={{ initial: 3, large: 0 }}\n paddingRight={{ initial: 3, large: 0 }}\n maxWidth={{ initial: '100%', medium: WIDTH_SIDE_NAVIGATION }}\n >\n <Flex tag=\"ul\" gap={6} direction=\"column\" alignItems=\"stretch\" {...props}>\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Box>\n );\n};\n\n/**\n * TODO:\n * This would be better in the content-type-builder package directly but currently\n * the SubNav API does not expose a way to wrap the link, instead it wraps the link and the list\n */\nconst GuidedTourTooltip = ({\n sectionId,\n children,\n}: {\n sectionId?: string;\n children: React.ReactNode;\n}) => {\n switch (sectionId) {\n case 'models':\n return (\n <tours.contentTypeBuilder.CollectionTypes>\n <tours.contentTypeBuilder.YourTurn>{children}</tours.contentTypeBuilder.YourTurn>\n </tours.contentTypeBuilder.CollectionTypes>\n );\n case 'singleTypes':\n return (\n <tours.contentTypeBuilder.SingleTypes>{children}</tours.contentTypeBuilder.SingleTypes>\n );\n case 'components':\n return <tours.contentTypeBuilder.Components>{children}</tours.contentTypeBuilder.Components>;\n default:\n return children;\n }\n};\n\nconst Section = ({\n label,\n children,\n link,\n sectionId,\n badgeLabel,\n}: {\n label: string;\n children: React.ReactNode[];\n link?: { label: string; onClick: () => void };\n sectionId?: string;\n badgeLabel?: string;\n}) => {\n const listId = useId();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box\n paddingLeft={{\n initial: 3,\n large: 5,\n }}\n paddingRight={{\n initial: 3,\n large: 5,\n }}\n >\n <Flex position=\"relative\" justifyContent=\"space-between\" gap={2}>\n <Flex>\n <Box>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {label}\n </Typography>\n </Box>\n </Flex>\n <Flex gap={1}>\n {badgeLabel && (\n <Badge backgroundColor=\"neutral150\" textColor=\"neutral600\">\n {badgeLabel}\n </Badge>\n )}\n {link && (\n <GuidedTourTooltip sectionId={sectionId}>\n <IconButton\n label={link.label}\n variant=\"ghost\"\n withTooltip\n onClick={link.onClick}\n size=\"XS\"\n >\n <Plus />\n </IconButton>\n </GuidedTourTooltip>\n )}\n </Flex>\n </Flex>\n </Box>\n <Flex\n tag=\"ol\"\n id={listId}\n direction=\"column\"\n gap={{ initial: 2, large: '2px' }}\n alignItems={'stretch'}\n marginLeft={{\n initial: 0,\n large: 2,\n }}\n marginRight={{\n initial: 0,\n large: 2,\n }}\n >\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Flex>\n );\n};\n\nconst SubSectionHeader = styled.button`\n cursor: pointer;\n width: 100%;\n border: none;\n padding: 0;\n background: transparent;\n display: flex;\n align-items: center;\n border-radius: ${({ theme }) => theme.borderRadius};\n padding-left: ${({ theme }) => theme.spaces[3]};\n padding-right: ${({ theme }) => theme.spaces[3]};\n padding-top: ${({ theme }) => theme.spaces[2]};\n padding-bottom: ${({ theme }) => theme.spaces[2]};\n\n &:hover {\n background-color: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\nconst SubSectionLinkWrapper = styled.li`\n ${StyledLink} > div {\n padding-left: 36px;\n }\n`;\n\nconst SubSection = ({ label, children }: { label: string; children: React.ReactNode[] }) => {\n const [isOpen, setOpenLinks] = useState(true);\n const [contentHeight, setContentHeight] = useState(0);\n const listId = useId();\n const contentRef = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (contentRef.current) {\n setContentHeight(contentRef.current.scrollHeight);\n }\n }, [children]);\n\n const handleClick = () => {\n setOpenLinks((prev) => !prev);\n };\n\n return (\n <Box>\n <Flex justifyContent=\"space-between\">\n <SubSectionHeader onClick={handleClick} aria-expanded={isOpen} aria-controls={listId}>\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n <Box paddingLeft={2}>\n <Typography tag=\"span\" fontWeight=\"semiBold\" textColor=\"neutral800\">\n {label}\n </Typography>\n </Box>\n </SubSectionHeader>\n </Flex>\n <Flex\n ref={contentRef}\n tag=\"ul\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n style={{\n maxHeight: isOpen ? `${contentHeight}px` : 0,\n overflow: 'hidden',\n transition: 'max-height 0.5s cubic-bezier(0, 1, 0, 1)',\n }}\n >\n {children.map((child, index) => {\n return <SubSectionLinkWrapper key={index}>{child}</SubSectionLinkWrapper>;\n })}\n </Flex>\n </Box>\n );\n};\n\nconst PageWrapper = styled(Box)`\n width: 100%;\n\n ${MainSubNav} {\n background-color: transparent;\n border-right: none;\n }\n\n ${({ theme }) => theme.breakpoints.medium} {\n overflow: hidden;\n\n ${MainSubNav} {\n top: 0;\n }\n }\n`;\n\nconst Content = ({ children }: { children: React.ReactNode }) => {\n return <ScrollArea>{children}</ScrollArea>;\n};\n\nexport const SubNav = {\n Main,\n Content,\n Header,\n Link,\n Sections,\n Section,\n SubSection,\n PageWrapper,\n};\n"],"names":["MainSubNav","styled","DSSubNav","$isFullPage","theme","colors","neutral0","breakpoints","medium","WIDTH_SIDE_NAVIGATION","neutral150","Main","children","isFullPage","props","_jsx","StyledLink","NavLink","neutral800","primary100","primary700","neutral100","Link","label","endAction","handleClick","rest","onClick","Box","width","paddingLeft","paddingRight","paddingTop","initial","large","paddingBottom","borderRadius","_jsxs","Flex","justifyContent","gap","Typography","tag","lineHeight","overflow","style","textOverflow","whiteSpace","StyledHeader","HEIGHT_TOP_NAVIGATION","HEIGHT_TOP_NAVIGATION_MEDIUM","Header","variant","Sections","maxWidth","direction","alignItems","map","child","index","li","GuidedTourTooltip","sectionId","tours","contentTypeBuilder","CollectionTypes","YourTurn","SingleTypes","Components","Section","link","badgeLabel","listId","useId","position","textColor","Badge","backgroundColor","IconButton","withTooltip","size","Plus","id","marginLeft","marginRight","SubSectionHeader","button","spaces","SubSectionLinkWrapper","SubSection","isOpen","setOpenLinks","useState","contentHeight","setContentHeight","contentRef","useRef","useEffect","current","scrollHeight","prev","aria-expanded","aria-controls","ChevronDown","aria-hidden","fill","transform","transition","fontWeight","ref","maxHeight","PageWrapper","Content","ScrollArea","SubNav"],"mappings":"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"}
@@ -10,7 +10,7 @@ import { tours } from './GuidedTour/Tours.mjs';
10
10
  const MainSubNav = styled(SubNav$1)`
11
11
  width: 100%;
12
12
  height: 100%;
13
- overflow: hidden;
13
+ overflow: ${({ $isFullPage })=>$isFullPage ? 'visible' : 'hidden'};
14
14
  background-color: ${({ theme })=>theme.colors.neutral0};
15
15
  display: flex;
16
16
  flex-direction: column;
@@ -22,11 +22,13 @@ const MainSubNav = styled(SubNav$1)`
22
22
  width: ${WIDTH_SIDE_NAVIGATION};
23
23
  position: sticky;
24
24
  top: 0;
25
+ overflow: hidden;
25
26
  border-right: 1px solid ${({ theme })=>theme.colors.neutral150};
26
27
  overscroll-behavior: contain;
27
28
  }
28
29
  `;
29
- const Main = ({ children, ...props })=>/*#__PURE__*/ jsx(MainSubNav, {
30
+ const Main = ({ children, isFullPage, ...props })=>/*#__PURE__*/ jsx(MainSubNav, {
31
+ $isFullPage: isFullPage,
30
32
  ...props,
31
33
  children: children
32
34
  });