@strapi/admin 5.57.0 → 5.59.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/dist/admin/admin/src/StrapiApp.js.map +1 -1
  2. package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
  3. package/dist/admin/admin/src/components/ConfirmDialog.js +10 -9
  4. package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
  5. package/dist/admin/admin/src/components/ConfirmDialog.mjs +10 -9
  6. package/dist/admin/admin/src/components/ConfirmDialog.mjs.map +1 -1
  7. package/dist/admin/admin/src/components/Filters.js +57 -12
  8. package/dist/admin/admin/src/components/Filters.js.map +1 -1
  9. package/dist/admin/admin/src/components/Filters.mjs +57 -12
  10. package/dist/admin/admin/src/components/Filters.mjs.map +1 -1
  11. package/dist/admin/admin/src/components/Form.js +3 -1
  12. package/dist/admin/admin/src/components/Form.js.map +1 -1
  13. package/dist/admin/admin/src/components/Form.mjs +3 -1
  14. package/dist/admin/admin/src/components/Form.mjs.map +1 -1
  15. package/dist/admin/admin/src/components/FormInputs/Boolean.js +3 -2
  16. package/dist/admin/admin/src/components/FormInputs/Boolean.js.map +1 -1
  17. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs +3 -2
  18. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs.map +1 -1
  19. package/dist/admin/admin/src/components/FormInputs/Enumeration.js +2 -1
  20. package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
  21. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs +2 -1
  22. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
  23. package/dist/admin/admin/src/components/LeftMenu.js +5 -1
  24. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  25. package/dist/admin/admin/src/components/LeftMenu.mjs +5 -1
  26. package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
  27. package/dist/admin/admin/src/components/PageHelpers.js +2 -1
  28. package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
  29. package/dist/admin/admin/src/components/PageHelpers.mjs +2 -1
  30. package/dist/admin/admin/src/components/PageHelpers.mjs.map +1 -1
  31. package/dist/admin/admin/src/components/Pagination.js +7 -6
  32. package/dist/admin/admin/src/components/Pagination.js.map +1 -1
  33. package/dist/admin/admin/src/components/Pagination.mjs +7 -6
  34. package/dist/admin/admin/src/components/Pagination.mjs.map +1 -1
  35. package/dist/admin/admin/src/components/RelativeTime.js +2 -1
  36. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  37. package/dist/admin/admin/src/components/RelativeTime.mjs +2 -1
  38. package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
  39. package/dist/admin/admin/src/components/SubNav.js +6 -12
  40. package/dist/admin/admin/src/components/SubNav.js.map +1 -1
  41. package/dist/admin/admin/src/components/SubNav.mjs +7 -13
  42. package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
  43. package/dist/admin/admin/src/components/Table.js +3 -1
  44. package/dist/admin/admin/src/components/Table.js.map +1 -1
  45. package/dist/admin/admin/src/components/Table.mjs +3 -1
  46. package/dist/admin/admin/src/components/Table.mjs.map +1 -1
  47. package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
  48. package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
  49. package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
  50. package/dist/admin/admin/src/components/WidgetRoot.mjs.map +1 -1
  51. package/dist/admin/admin/src/constants.js +14 -0
  52. package/dist/admin/admin/src/constants.js.map +1 -1
  53. package/dist/admin/admin/src/constants.mjs +14 -0
  54. package/dist/admin/admin/src/constants.mjs.map +1 -1
  55. package/dist/admin/admin/src/core/apis/Plugin.js.map +1 -1
  56. package/dist/admin/admin/src/core/apis/Plugin.mjs.map +1 -1
  57. package/dist/admin/admin/src/features/Auth.js +2 -1
  58. package/dist/admin/admin/src/features/Auth.js.map +1 -1
  59. package/dist/admin/admin/src/features/Auth.mjs +2 -1
  60. package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
  61. package/dist/admin/admin/src/features/StrapiApp.js.map +1 -1
  62. package/dist/admin/admin/src/features/StrapiApp.mjs.map +1 -1
  63. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  64. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  65. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js +6 -12
  66. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js.map +1 -1
  67. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.mjs +6 -12
  68. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.mjs.map +1 -1
  69. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
  70. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -1
  71. package/dist/admin/admin/src/pages/ProfilePage.js +2 -2
  72. package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
  73. package/dist/admin/admin/src/pages/ProfilePage.mjs +2 -2
  74. package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
  75. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +10 -2
  76. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  77. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +10 -2
  78. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  79. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.js +4 -1
  80. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.js.map +1 -1
  81. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.mjs +4 -1
  82. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.mjs.map +1 -1
  83. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +3 -1
  84. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  85. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs +3 -1
  86. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs.map +1 -1
  87. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.js +2 -1
  88. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.js.map +1 -1
  89. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.mjs +2 -1
  90. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.mjs.map +1 -1
  91. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +6 -5
  92. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
  93. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.mjs +6 -5
  94. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.mjs.map +1 -1
  95. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +2 -1
  96. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  97. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs +2 -1
  98. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs.map +1 -1
  99. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.js +4 -4
  100. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.js.map +1 -1
  101. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.mjs +4 -4
  102. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.mjs.map +1 -1
  103. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +7 -58
  104. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  105. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +7 -58
  106. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  107. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.js +217 -0
  108. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.js.map +1 -0
  109. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.mjs +195 -0
  110. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.mjs.map +1 -0
  111. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
  112. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs.map +1 -1
  113. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.js +185 -0
  114. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.js.map +1 -0
  115. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.mjs +162 -0
  116. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.mjs.map +1 -0
  117. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.js +342 -0
  118. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.js.map +1 -0
  119. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.mjs +320 -0
  120. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.mjs.map +1 -0
  121. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +9 -4
  122. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  123. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs +9 -4
  124. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
  125. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js +15 -9
  126. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
  127. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs +15 -9
  128. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs.map +1 -1
  129. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +5 -2
  130. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  131. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs +5 -2
  132. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs.map +1 -1
  133. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js +2 -1
  134. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
  135. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs +2 -1
  136. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs.map +1 -1
  137. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +2 -1
  138. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
  139. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs +2 -1
  140. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
  141. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +2 -1
  142. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  143. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs +2 -1
  144. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs.map +1 -1
  145. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
  146. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.mjs.map +1 -1
  147. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js +3 -1
  148. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
  149. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs +3 -1
  150. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs.map +1 -1
  151. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
  152. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs.map +1 -1
  153. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
  154. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
  155. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js.map +1 -1
  156. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.mjs.map +1 -1
  157. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js +4 -1
  158. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js.map +1 -1
  159. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.mjs +4 -1
  160. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.mjs.map +1 -1
  161. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +18 -3
  162. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
  163. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs +18 -3
  164. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs.map +1 -1
  165. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
  166. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs.map +1 -1
  167. package/dist/admin/admin/src/router.js.map +1 -1
  168. package/dist/admin/admin/src/router.mjs.map +1 -1
  169. package/dist/admin/admin/src/services/admin.js +11 -1
  170. package/dist/admin/admin/src/services/admin.js.map +1 -1
  171. package/dist/admin/admin/src/services/admin.mjs +11 -2
  172. package/dist/admin/admin/src/services/admin.mjs.map +1 -1
  173. package/dist/admin/admin/src/services/users.js.map +1 -1
  174. package/dist/admin/admin/src/services/users.mjs.map +1 -1
  175. package/dist/admin/admin/src/translations/en.json.js +71 -4
  176. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  177. package/dist/admin/admin/src/translations/en.json.mjs +71 -4
  178. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  179. package/dist/admin/admin/src/translations/eu.json.js +1 -1
  180. package/dist/admin/admin/src/translations/eu.json.mjs +1 -1
  181. package/dist/admin/admin/src/utils/browserStrapi.js +1 -1
  182. package/dist/admin/admin/src/utils/browserStrapi.js.map +1 -1
  183. package/dist/admin/admin/src/utils/browserStrapi.mjs +1 -1
  184. package/dist/admin/admin/src/utils/browserStrapi.mjs.map +1 -1
  185. package/dist/admin/admin/src/utils/cookies.js +7 -6
  186. package/dist/admin/admin/src/utils/cookies.js.map +1 -1
  187. package/dist/admin/admin/src/utils/cookies.mjs +7 -6
  188. package/dist/admin/admin/src/utils/cookies.mjs.map +1 -1
  189. package/dist/admin/admin/src/utils/getFetchClient.js +24 -0
  190. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  191. package/dist/admin/admin/src/utils/getFetchClient.mjs +24 -1
  192. package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
  193. package/dist/admin/admin/tests/utils.js +2 -1
  194. package/dist/admin/admin/tests/utils.js.map +1 -1
  195. package/dist/admin/admin/tests/utils.mjs +2 -1
  196. package/dist/admin/admin/tests/utils.mjs.map +1 -1
  197. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js +52 -22
  198. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
  199. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs +53 -23
  200. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs.map +1 -1
  201. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js +16 -29
  202. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js.map +1 -1
  203. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs +18 -31
  204. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs.map +1 -1
  205. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.js +473 -0
  206. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.js.map +1 -0
  207. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.mjs +471 -0
  208. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.mjs.map +1 -0
  209. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js +2 -0
  210. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js.map +1 -1
  211. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs +2 -0
  212. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs.map +1 -1
  213. package/dist/admin/index.js +1 -0
  214. package/dist/admin/index.js.map +1 -1
  215. package/dist/admin/index.mjs +1 -1
  216. package/dist/admin/shared/utils/auth-cookie-path.js +13 -10
  217. package/dist/admin/shared/utils/auth-cookie-path.js.map +1 -1
  218. package/dist/admin/shared/utils/auth-cookie-path.mjs +13 -10
  219. package/dist/admin/shared/utils/auth-cookie-path.mjs.map +1 -1
  220. package/dist/admin/shared/utils/get-project-type.js +49 -0
  221. package/dist/admin/shared/utils/get-project-type.js.map +1 -0
  222. package/dist/admin/shared/utils/get-project-type.mjs +46 -0
  223. package/dist/admin/shared/utils/get-project-type.mjs.map +1 -0
  224. package/dist/admin/src/components/Filters.d.ts +1 -1
  225. package/dist/admin/src/components/Form.d.ts +1 -1
  226. package/dist/admin/src/constants.d.ts +10 -0
  227. package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.d.ts +1 -1
  228. package/dist/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.d.ts +1 -1
  229. package/dist/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.d.ts +12 -0
  230. package/dist/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.d.ts +14 -0
  231. package/dist/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.d.ts +2 -0
  232. package/dist/admin/src/services/admin.d.ts +2 -2
  233. package/dist/admin/src/types/permissions.d.ts +1 -0
  234. package/dist/admin/src/utils/cookies.d.ts +7 -6
  235. package/dist/admin/src/utils/getFetchClient.d.ts +25 -0
  236. package/dist/ee/admin/src/hooks/useLicenseLimits.d.ts +29 -0
  237. package/dist/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.d.ts +6 -1
  238. package/dist/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.d.ts +2 -0
  239. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.d.ts +2 -0
  240. package/dist/ee/server/src/audit-logs/entitlements.d.ts +8 -0
  241. package/dist/ee/server/src/audit-logs/entitlements.d.ts.map +1 -0
  242. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts +16 -0
  243. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -1
  244. package/dist/ee/server/src/controllers/admin.d.ts +36 -10
  245. package/dist/ee/server/src/controllers/admin.d.ts.map +1 -1
  246. package/dist/ee/server/src/controllers/authentication-utils/middlewares.d.ts.map +1 -1
  247. package/dist/ee/server/src/controllers/index.d.ts +36 -10
  248. package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
  249. package/dist/ee/server/src/index.d.ts +36 -10
  250. package/dist/ee/server/src/index.d.ts.map +1 -1
  251. package/dist/ee/server/src/services/seat-enforcement.d.ts.map +1 -1
  252. package/dist/ee/server/src/validation/role.d.ts.map +1 -1
  253. package/dist/server/ee/server/src/audit-logs/entitlements.js +25 -0
  254. package/dist/server/ee/server/src/audit-logs/entitlements.js.map +1 -0
  255. package/dist/server/ee/server/src/audit-logs/entitlements.mjs +23 -0
  256. package/dist/server/ee/server/src/audit-logs/entitlements.mjs.map +1 -0
  257. package/dist/server/ee/server/src/audit-logs/services/lifecycles.js +20 -8
  258. package/dist/server/ee/server/src/audit-logs/services/lifecycles.js.map +1 -1
  259. package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs +19 -9
  260. package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs.map +1 -1
  261. package/dist/server/ee/server/src/audit-logs/utils/csv.js +3 -3
  262. package/dist/server/ee/server/src/audit-logs/utils/csv.js.map +1 -1
  263. package/dist/server/ee/server/src/audit-logs/utils/csv.mjs +3 -3
  264. package/dist/server/ee/server/src/audit-logs/utils/csv.mjs.map +1 -1
  265. package/dist/server/ee/server/src/controllers/admin.js +76 -3
  266. package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
  267. package/dist/server/ee/server/src/controllers/admin.mjs +76 -3
  268. package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
  269. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +28 -10
  270. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
  271. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs +28 -10
  272. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs.map +1 -1
  273. package/dist/server/ee/server/src/index.js +2 -0
  274. package/dist/server/ee/server/src/index.js.map +1 -1
  275. package/dist/server/ee/server/src/index.mjs +2 -0
  276. package/dist/server/ee/server/src/index.mjs.map +1 -1
  277. package/dist/server/ee/server/src/services/seat-enforcement.js.map +1 -1
  278. package/dist/server/ee/server/src/services/seat-enforcement.mjs.map +1 -1
  279. package/dist/server/ee/server/src/validation/role.js +4 -2
  280. package/dist/server/ee/server/src/validation/role.js.map +1 -1
  281. package/dist/server/ee/server/src/validation/role.mjs +4 -2
  282. package/dist/server/ee/server/src/validation/role.mjs.map +1 -1
  283. package/dist/server/server/src/ai/services/ai.js.map +1 -1
  284. package/dist/server/server/src/ai/services/ai.mjs.map +1 -1
  285. package/dist/server/server/src/audit-logs/auth.js +72 -0
  286. package/dist/server/server/src/audit-logs/auth.js.map +1 -0
  287. package/dist/server/server/src/audit-logs/auth.mjs +67 -0
  288. package/dist/server/server/src/audit-logs/auth.mjs.map +1 -0
  289. package/dist/server/server/src/config/admin-actions.js +7 -0
  290. package/dist/server/server/src/config/admin-actions.js.map +1 -1
  291. package/dist/server/server/src/config/admin-actions.mjs +7 -0
  292. package/dist/server/server/src/config/admin-actions.mjs.map +1 -1
  293. package/dist/server/server/src/controllers/admin.js +17 -12
  294. package/dist/server/server/src/controllers/admin.js.map +1 -1
  295. package/dist/server/server/src/controllers/admin.mjs +17 -12
  296. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  297. package/dist/server/server/src/controllers/authentication.js +34 -8
  298. package/dist/server/server/src/controllers/authentication.js.map +1 -1
  299. package/dist/server/server/src/controllers/authentication.mjs +34 -8
  300. package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
  301. package/dist/server/server/src/domain/permission/index.js.map +1 -1
  302. package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
  303. package/dist/server/server/src/register.js +4 -0
  304. package/dist/server/server/src/register.js.map +1 -1
  305. package/dist/server/server/src/register.mjs +4 -0
  306. package/dist/server/server/src/register.mjs.map +1 -1
  307. package/dist/server/server/src/routes/admin.js +18 -0
  308. package/dist/server/server/src/routes/admin.js.map +1 -1
  309. package/dist/server/server/src/routes/admin.mjs +18 -0
  310. package/dist/server/server/src/routes/admin.mjs.map +1 -1
  311. package/dist/server/server/src/services/api-token.js +4 -8
  312. package/dist/server/server/src/services/api-token.js.map +1 -1
  313. package/dist/server/server/src/services/api-token.mjs +4 -8
  314. package/dist/server/server/src/services/api-token.mjs.map +1 -1
  315. package/dist/server/server/src/services/auth.js +4 -2
  316. package/dist/server/server/src/services/auth.js.map +1 -1
  317. package/dist/server/server/src/services/auth.mjs +4 -3
  318. package/dist/server/server/src/services/auth.mjs.map +1 -1
  319. package/dist/server/server/src/services/constants.js +4 -0
  320. package/dist/server/server/src/services/constants.js.map +1 -1
  321. package/dist/server/server/src/services/constants.mjs +4 -0
  322. package/dist/server/server/src/services/constants.mjs.map +1 -1
  323. package/dist/server/server/src/services/debug-dump.js +173 -0
  324. package/dist/server/server/src/services/debug-dump.js.map +1 -0
  325. package/dist/server/server/src/services/debug-dump.mjs +166 -0
  326. package/dist/server/server/src/services/debug-dump.mjs.map +1 -0
  327. package/dist/server/server/src/services/index.js +3 -1
  328. package/dist/server/server/src/services/index.js.map +1 -1
  329. package/dist/server/server/src/services/index.mjs +3 -1
  330. package/dist/server/server/src/services/index.mjs.map +1 -1
  331. package/dist/server/server/src/services/permission/rename-fields.js.map +1 -1
  332. package/dist/server/server/src/services/permission/rename-fields.mjs.map +1 -1
  333. package/dist/server/server/src/services/permission/sections-builder/handlers.js.map +1 -1
  334. package/dist/server/server/src/services/permission/sections-builder/handlers.mjs.map +1 -1
  335. package/dist/server/server/src/services/role.js +8 -5
  336. package/dist/server/server/src/services/role.js.map +1 -1
  337. package/dist/server/server/src/services/role.mjs +8 -5
  338. package/dist/server/server/src/services/role.mjs.map +1 -1
  339. package/dist/server/server/src/utils/debug-dump/redact.js +197 -0
  340. package/dist/server/server/src/utils/debug-dump/redact.js.map +1 -0
  341. package/dist/server/server/src/utils/debug-dump/redact.mjs +194 -0
  342. package/dist/server/server/src/utils/debug-dump/redact.mjs.map +1 -0
  343. package/dist/server/server/src/validation/admin-tokens.js +4 -4
  344. package/dist/server/server/src/validation/admin-tokens.js.map +1 -1
  345. package/dist/server/server/src/validation/admin-tokens.mjs +4 -4
  346. package/dist/server/server/src/validation/admin-tokens.mjs.map +1 -1
  347. package/dist/server/server/src/validation/api-tokens.js +4 -4
  348. package/dist/server/server/src/validation/api-tokens.js.map +1 -1
  349. package/dist/server/server/src/validation/api-tokens.mjs +4 -4
  350. package/dist/server/server/src/validation/api-tokens.mjs.map +1 -1
  351. package/dist/server/server/src/validation/role.js +6 -4
  352. package/dist/server/server/src/validation/role.js.map +1 -1
  353. package/dist/server/server/src/validation/role.mjs +6 -4
  354. package/dist/server/server/src/validation/role.mjs.map +1 -1
  355. package/dist/server/server/src/validation/transfer/token.js +4 -4
  356. package/dist/server/server/src/validation/transfer/token.js.map +1 -1
  357. package/dist/server/server/src/validation/transfer/token.mjs +4 -4
  358. package/dist/server/server/src/validation/transfer/token.mjs.map +1 -1
  359. package/dist/server/shared/utils/auth-cookie-path.js +13 -10
  360. package/dist/server/shared/utils/auth-cookie-path.js.map +1 -1
  361. package/dist/server/shared/utils/auth-cookie-path.mjs +13 -10
  362. package/dist/server/shared/utils/auth-cookie-path.mjs.map +1 -1
  363. package/dist/server/shared/utils/get-project-type.js +49 -0
  364. package/dist/server/shared/utils/get-project-type.js.map +1 -0
  365. package/dist/server/shared/utils/get-project-type.mjs +46 -0
  366. package/dist/server/shared/utils/get-project-type.mjs.map +1 -0
  367. package/dist/server/shared/utils/session-auth.js +70 -3
  368. package/dist/server/shared/utils/session-auth.js.map +1 -1
  369. package/dist/server/shared/utils/session-auth.mjs +70 -4
  370. package/dist/server/shared/utils/session-auth.mjs.map +1 -1
  371. package/dist/server/src/ai/services/ai.d.ts.map +1 -1
  372. package/dist/server/src/audit-logs/auth.d.ts +72 -0
  373. package/dist/server/src/audit-logs/auth.d.ts.map +1 -0
  374. package/dist/server/src/config/admin-actions.d.ts.map +1 -1
  375. package/dist/server/src/controllers/admin.d.ts +3 -0
  376. package/dist/server/src/controllers/admin.d.ts.map +1 -1
  377. package/dist/server/src/controllers/authentication.d.ts.map +1 -1
  378. package/dist/server/src/controllers/index.d.ts +3 -0
  379. package/dist/server/src/controllers/index.d.ts.map +1 -1
  380. package/dist/server/src/domain/permission/index.d.ts.map +1 -1
  381. package/dist/server/src/index.d.ts +8 -0
  382. package/dist/server/src/index.d.ts.map +1 -1
  383. package/dist/server/src/register.d.ts.map +1 -1
  384. package/dist/server/src/routes/admin.d.ts.map +1 -1
  385. package/dist/server/src/services/auth.d.ts +6 -0
  386. package/dist/server/src/services/auth.d.ts.map +1 -1
  387. package/dist/server/src/services/constants.d.ts +2 -0
  388. package/dist/server/src/services/constants.d.ts.map +1 -1
  389. package/dist/server/src/services/debug-dump.d.ts +9 -0
  390. package/dist/server/src/services/debug-dump.d.ts.map +1 -0
  391. package/dist/server/src/services/index.d.ts +5 -0
  392. package/dist/server/src/services/index.d.ts.map +1 -1
  393. package/dist/server/src/services/permission/rename-fields.d.ts.map +1 -1
  394. package/dist/server/src/services/permission/sections-builder/handlers.d.ts.map +1 -1
  395. package/dist/server/src/services/role.d.ts.map +1 -1
  396. package/dist/server/src/utils/debug-dump/redact.d.ts +8 -0
  397. package/dist/server/src/utils/debug-dump/redact.d.ts.map +1 -0
  398. package/dist/server/src/validation/role.d.ts.map +1 -1
  399. package/dist/shared/contracts/admin.d.ts +106 -0
  400. package/dist/shared/contracts/admin.d.ts.map +1 -1
  401. package/dist/shared/contracts/transfer.d.ts.map +1 -1
  402. package/dist/shared/utils/__tests__/get-project-type.test.d.ts +1 -0
  403. package/dist/shared/utils/__tests__/get-project-type.test.d.ts.map +1 -0
  404. package/dist/shared/utils/auth-cookie-path.d.ts +13 -10
  405. package/dist/shared/utils/auth-cookie-path.d.ts.map +1 -1
  406. package/dist/shared/utils/get-project-type.d.ts +37 -0
  407. package/dist/shared/utils/get-project-type.d.ts.map +1 -0
  408. package/dist/shared/utils/session-auth.d.ts +16 -0
  409. package/dist/shared/utils/session-auth.d.ts.map +1 -1
  410. package/package.json +8 -8
  411. package/dist/admin/admin/src/utils/getProjectType.js +0 -22
  412. package/dist/admin/admin/src/utils/getProjectType.js.map +0 -1
  413. package/dist/admin/admin/src/utils/getProjectType.mjs +0 -20
  414. package/dist/admin/admin/src/utils/getProjectType.mjs.map +0 -1
  415. package/dist/admin/src/utils/getProjectType.d.ts +0 -16
@@ -1 +1 @@
1
- {"version":3,"file":"ProfilePage.js","sources":["../../../../../admin/src/pages/ProfilePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, useNotifyAT, Grid, Typography, FlexProps } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Form, FormHelpers } from '../components/Form';\nimport { InputRenderer } from '../components/FormInputs/Renderer';\nimport { useGuidedTour } from '../components/GuidedTour/Context';\nimport { Layouts } from '../components/Layouts/Layout';\nimport { Page } from '../components/PageHelpers';\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useTracking } from '../features/Tracking';\nimport { useAPIErrorHandler } from '../hooks/useAPIErrorHandler';\nimport { useIsDesktop } from '../hooks/useMediaQuery';\nimport { AppState, setAppTheme } from '../reducer';\nimport { useIsSSOLockedQuery, useUpdateMeMutation } from '../services/auth';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { translatedErrors } from '../utils/translatedErrors';\nimport { getDisplayName } from '../utils/users';\n\nimport { COMMON_USER_SCHEMA } from './Settings/pages/Users/utils/validation';\n\nimport type { UpdateMe } from '../../../shared/contracts/users';\n\nconst PROFILE_VALIDTION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n currentPassword: yup\n .string()\n // @ts-expect-error – no idea why this is failing.\n .when(['password', 'confirmPassword'], (password, confirmPassword, passSchema) => {\n return password || confirmPassword\n ? passSchema\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .nullable()\n : passSchema;\n }),\n preferedLanguage: yup.string().nullable(),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * ProfilePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst Panel = ({ children, ...flexProps }: FlexProps) => {\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4} {...flexProps}>\n {children}\n </Flex>\n </Box>\n );\n};\n\nconst ProfilePage = () => {\n const isDesktop = useIsDesktop();\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const currentTheme = useTypedSelector((state) => state.admin_app.theme.currentTheme);\n const dispatch = useTypedDispatch();\n const {\n _unstableFormatValidationErrors: formatValidationErrors,\n _unstableFormatAPIError: formatApiError,\n } = useAPIErrorHandler();\n\n const user = useAuth('ProfilePage', (state) => state.user);\n\n React.useEffect(() => {\n if (user) {\n notifyStatus(\n formatMessage({\n id: 'Settings.profile.form.notify.data.loaded',\n defaultMessage: 'Your profile data has been loaded',\n })\n );\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }, [formatMessage, notifyStatus, toggleNotification, user]);\n\n const [updateMe, { isLoading: isSubmittingForm }] = useUpdateMeMutation();\n\n const {\n isLoading,\n data: dataSSO,\n error,\n } = useIsSSOLockedQuery(undefined, {\n skip: !(window.strapi.isEE && window.strapi.features.isEnabled('sso')),\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'Settings.permissions.users.sso.provider.error' }),\n });\n }\n }, [error, formatMessage, toggleNotification]);\n\n type UpdateUsersMeBody = UpdateMe.Request['body'] & {\n confirmPassword: string;\n currentTheme: AppState['theme']['currentTheme'];\n };\n\n const handleSubmit = async (\n body: UpdateUsersMeBody,\n { setErrors }: FormHelpers<UpdateUsersMeBody>\n ) => {\n const { confirmPassword: _confirmPassword, currentTheme, ...bodyRest } = body;\n let dataToSend = bodyRest;\n\n // The password fields are optional. If the user didn't touch them, don't send any password\n // to the API, because an empty string would throw a validation error\n if (dataToSend.password === '') {\n const {\n password: _password,\n currentPassword: _currentPassword,\n ...passwordRequestBodyRest\n } = dataToSend;\n dataToSend = passwordRequestBodyRest;\n }\n\n const res = await updateMe(dataToSend);\n\n if ('data' in res) {\n dispatch(setAppTheme(currentTheme));\n\n trackUsage('didChangeMode', { newMode: currentTheme });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n }\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n } else if (isBaseQueryError(res.error)) {\n toggleNotification({\n type: 'danger',\n message: formatApiError(res.error),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n const hasLockedRole = dataSSO?.isSSOLocked ?? false;\n const { email, firstname, lastname, username, preferedLanguage } = user ?? {};\n const initialData = {\n email: email ?? '',\n firstname: firstname ?? '',\n lastname: lastname ?? '',\n username: username ?? '',\n preferedLanguage,\n currentTheme,\n confirmPassword: '',\n password: '',\n };\n\n return (\n <>\n <Page.Main aria-busy={isSubmittingForm}>\n <Page.Title>\n {formatMessage({\n id: 'Settings.profile.form.section.head.title',\n defaultMessage: 'User profile',\n })}\n </Page.Title>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={initialData}\n validationSchema={PROFILE_VALIDTION_SCHEMA}\n >\n {({ isSubmitting, modified }) => (\n <>\n <Layouts.Header\n title={getDisplayName(user)}\n primaryAction={\n <Button\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n disabled={!modified}\n fullWidth\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n <Box paddingBottom={6}>\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <UserInfoSection />\n {!hasLockedRole && <PasswordSection />}\n <PreferencesSection localeNames={localeNames} />\n </Flex>\n </Layouts.Content>\n </Box>\n </>\n )}\n </Form>\n {isDesktop && process.env.NODE_ENV === 'development' && (\n <Box paddingBottom={6}>\n <Layouts.Content>\n <GuidedTourSection />\n </Layouts.Content>\n </Box>\n )}\n </Page.Main>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PasswordSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst PasswordSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.change-password',\n defaultMessage: 'Change password',\n })}\n </Typography>\n {[\n [\n {\n label: formatMessage({\n id: 'Auth.form.currentPassword.label',\n defaultMessage: 'Current Password',\n }),\n name: 'currentPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n [\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n size: 6,\n type: 'password' as const,\n },\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n ].map((row, index) => (\n <Grid.Root key={index} gap={5}>\n {row.map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n ))}\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PreferencesSection\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PreferencesSectionProps {\n localeNames: Record<string, string>;\n}\n\nconst PreferencesSection = ({ localeNames }: PreferencesSectionProps) => {\n const { formatMessage } = useIntl();\n const themesToDisplay = useTypedSelector((state) => state.admin_app.theme.availableThemes);\n\n return (\n <Panel>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'Settings.profile.form.section.experience.title',\n defaultMessage: 'Experience',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'Settings.profile.form.section.experience.interfaceLanguageHelp',\n defaultMessage:\n 'Preference changes will apply only to you. More information is available {here}.',\n },\n {\n here: (\n <Box\n tag=\"a\"\n color=\"primary600\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#locales\"\n >\n {formatMessage({\n id: 'Settings.profile.form.section.experience.here',\n defaultMessage: 'here',\n })}\n </Box>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Grid.Root gap={5}>\n {[\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage.hint',\n defaultMessage: 'This will only display your own interface in the chosen language.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage',\n defaultMessage: 'Interface language',\n }),\n name: 'preferedLanguage',\n options: Object.entries(localeNames).map(([value, label]) => ({\n label,\n value,\n })),\n placeholder: formatMessage({\n id: 'global.select',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.hint',\n defaultMessage: 'Displays your interface in the chosen mode.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.label',\n defaultMessage: 'Interface mode',\n }),\n name: 'currentTheme',\n options: [\n {\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.option-system-label',\n defaultMessage: 'Use system settings',\n }),\n value: 'system',\n },\n ...themesToDisplay.map((theme) => ({\n label: formatMessage(\n {\n id: 'Settings.profile.form.section.experience.mode.option-label',\n defaultMessage: '{name} mode',\n },\n {\n name: formatMessage({\n id: theme,\n defaultMessage: upperFirst(theme),\n }),\n }\n ),\n value: theme,\n })),\n ],\n placeholder: formatMessage({\n id: 'app.components.Select.placeholder',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UserInfoSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst UserInfoSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.profile',\n defaultMessage: 'Profile',\n })}\n </Typography>\n <Grid.Root gap={5}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n }),\n name: 'firstname',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 6,\n type: 'email' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n }),\n name: 'username',\n size: 6,\n type: 'string' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst GuidedTourSection = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const dispatch = useGuidedTour('ProfilePage', (s) => s.dispatch);\n\n const onClickReset = () => {\n dispatch({ type: 'reset_all_tours' });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'tours.profile.notification.success.reset',\n defaultMessage: 'Guided tour reset',\n }),\n });\n };\n\n return (\n <Panel alignItems=\"start\">\n <Flex direction=\"column\" alignItems=\"start\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'tours.profile.title',\n defaultMessage: 'Guided tour',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage({\n id: 'tours.profile.description',\n defaultMessage: 'You can reset the guided tour at any time.',\n })}\n </Typography>\n </Flex>\n <Button variant=\"tertiary\" onClick={onClickReset}>\n {formatMessage({\n id: 'tours.profile.reset',\n defaultMessage: 'Reset guided tour',\n })}\n </Button>\n </Panel>\n );\n};\n\nexport { ProfilePage };\n"],"names":["PROFILE_VALIDTION_SCHEMA","yup","object","shape","COMMON_USER_SCHEMA","currentPassword","string","when","password","confirmPassword","passSchema","required","id","translatedErrors","defaultMessage","nullable","preferedLanguage","Panel","children","flexProps","_jsx","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Flex","direction","alignItems","gap","ProfilePage","isDesktop","useIsDesktop","localeNames","useTypedSelector","state","admin_app","language","formatMessage","useIntl","trackUsage","useTracking","toggleNotification","useNotification","notifyStatus","useNotifyAT","currentTheme","theme","dispatch","useTypedDispatch","_unstableFormatValidationErrors","formatValidationErrors","_unstableFormatAPIError","formatApiError","useAPIErrorHandler","user","useAuth","React","useEffect","type","message","updateMe","isLoading","isSubmittingForm","useUpdateMeMutation","data","dataSSO","error","useIsSSOLockedQuery","undefined","skip","window","strapi","isEE","features","isEnabled","handleSubmit","body","setErrors","_confirmPassword","bodyRest","dataToSend","_password","_currentPassword","passwordRequestBodyRest","res","setAppTheme","newMode","isBaseQueryError","name","Page","Loading","hasLockedRole","isSSOLocked","email","firstname","lastname","username","initialData","_Fragment","_jsxs","Main","aria-busy","Title","Form","method","onSubmit","initialValues","validationSchema","isSubmitting","modified","Layouts","Header","title","getDisplayName","primaryAction","Button","startIcon","Check","loading","disabled","fullWidth","Content","UserInfoSection","PasswordSection","PreferencesSection","process","env","NODE_ENV","GuidedTourSection","Typography","variant","tag","label","size","autoComplete","map","row","index","Grid","Root","field","Item","xs","m","col","InputRenderer","themesToDisplay","availableThemes","here","color","target","rel","href","hint","options","Object","entries","value","placeholder","upperFirst","useGuidedTour","s","onClickReset","onClick"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,MAAMA,wBAAAA,GAA2BC,cAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AAClD,IAAA,GAAGC,6BAAkB;IACrBC,eAAAA,EAAiBJ,cAAAA,CACdK,MAAM,EACP;AACCC,KAAAA,IAAI,CAAC;AAAC,QAAA,UAAA;AAAY,QAAA;KAAkB,EAAE,CAACC,UAAUC,eAAAA,EAAiBC,UAAAA,GAAAA;AACjE,QAAA,OAAOF,QAAAA,IAAYC,eAAAA,GACfC,UAAAA,CACGC,QAAQ,CAAC;YACRC,EAAAA,EAAIC,iCAAAA,CAAiBF,QAAQ,CAACC,EAAE;YAChCE,cAAAA,EAAgB;AAClB,SAAA,CAAA,CACCC,QAAQ,EAAA,GACXL,UAAAA;AACN,IAAA,CAAA,CAAA;IACFM,gBAAAA,EAAkBf,cAAAA,CAAIK,MAAM,EAAA,CAAGS,QAAQ;AACzC,CAAA,CAAA;AAEA;;AAEkG,qGAElG,MAAME,KAAAA,GAAQ,CAAC,EAAEC,QAAQ,EAAE,GAAGC,SAAAA,EAAsB,GAAA;AAClD,IAAA,qBACEC,cAAA,CAACC,gBAAAA,EAAAA;QACCC,UAAAA,EAAW,UAAA;QACXC,SAAS,EAAA,IAAA;QACTC,MAAAA,EAAO,cAAA;QACPC,UAAAA,EAAY,CAAA;QACZC,aAAAA,EAAe,CAAA;QACfC,WAAAA,EAAa,CAAA;QACbC,YAAAA,EAAc,CAAA;AAEd,QAAA,QAAA,gBAAAR,cAAA,CAACS,iBAAAA,EAAAA;YAAKC,SAAAA,EAAU,QAAA;YAASC,UAAAA,EAAW,SAAA;YAAUC,GAAAA,EAAK,CAAA;AAAI,YAAA,GAAGb,SAAS;AAChED,YAAAA,QAAAA,EAAAA;;;AAIT,CAAA;AAEA,MAAMe,WAAAA,GAAc,IAAA;AAClB,IAAA,MAAMC,SAAAA,GAAYC,0BAAAA,EAAAA;IAClB,MAAMC,WAAAA,GAAcC,uBAAiB,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAACC,QAAQ,CAACJ,WAAW,CAAA;IACpF,MAAM,EAAEK,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;IACvB,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,6BAAAA,EAAAA;IAC/B,MAAM,EAAEC,YAAY,EAAE,GAAGC,wBAAAA,EAAAA;IACzB,MAAMC,YAAAA,GAAeZ,uBAAiB,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAACW,KAAK,CAACD,YAAY,CAAA;AACnF,IAAA,MAAME,QAAAA,GAAWC,sBAAAA,EAAAA;AACjB,IAAA,MAAM,EACJC,+BAAAA,EAAiCC,sBAAsB,EACvDC,uBAAAA,EAAyBC,cAAc,EACxC,GAAGC,qCAAAA,EAAAA;AAEJ,IAAA,MAAMC,OAAOC,YAAAA,CAAQ,aAAA,EAAe,CAACrB,KAAAA,GAAUA,MAAMoB,IAAI,CAAA;AAEzDE,IAAAA,gBAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAIH,IAAAA,EAAM;AACRX,YAAAA,YAAAA,CACEN,aAAAA,CAAc;gBACZ7B,EAAAA,EAAI,0CAAA;gBACJE,cAAAA,EAAgB;AAClB,aAAA,CAAA,CAAA;QAEJ,CAAA,MAAO;YACL+B,kBAAAA,CAAmB;gBACjBiB,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAAStB,aAAAA,CAAc;oBAAE7B,EAAAA,EAAI,oBAAA;oBAAsBE,cAAAA,EAAgB;AAAoB,iBAAA;AACzF,aAAA,CAAA;AACF,QAAA;IACF,CAAA,EAAG;AAAC2B,QAAAA,aAAAA;AAAeM,QAAAA,YAAAA;AAAcF,QAAAA,kBAAAA;AAAoBa,QAAAA;AAAK,KAAA,CAAA;AAE1D,IAAA,MAAM,CAACM,QAAAA,EAAU,EAAEC,WAAWC,gBAAgB,EAAE,CAAC,GAAGC,wBAAAA,EAAAA;IAEpD,MAAM,EACJF,SAAS,EACTG,IAAAA,EAAMC,OAAO,EACbC,KAAK,EACN,GAAGC,wBAAAA,CAAoBC,SAAAA,EAAW;AACjCC,QAAAA,IAAAA,EAAM,EAAEC,MAAAA,CAAOC,MAAM,CAACC,IAAI,IAAIF,MAAAA,CAAOC,MAAM,CAACE,QAAQ,CAACC,SAAS,CAAC,KAAA,CAAK;AACtE,KAAA,CAAA;AAEAlB,IAAAA,gBAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAIS,KAAAA,EAAO;YACTzB,kBAAAA,CAAmB;gBACjBiB,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAAStB,aAAAA,CAAc;oBAAE7B,EAAAA,EAAI;AAAgD,iBAAA;AAC/E,aAAA,CAAA;AACF,QAAA;IACF,CAAA,EAAG;AAAC0D,QAAAA,KAAAA;AAAO7B,QAAAA,aAAAA;AAAeI,QAAAA;AAAmB,KAAA,CAAA;AAO7C,IAAA,MAAMkC,YAAAA,GAAe,OACnBC,IAAAA,EACA,EAAEC,SAAS,EAAkC,GAAA;QAE7C,MAAM,EAAExE,iBAAiByE,gBAAgB,EAAEjC,YAAY,EAAE,GAAGkC,UAAU,GAAGH,IAAAA;AACzE,QAAA,IAAII,UAAAA,GAAaD,QAAAA;;;QAIjB,IAAIC,UAAAA,CAAW5E,QAAQ,KAAK,EAAA,EAAI;YAC9B,MAAM,EACJA,UAAU6E,SAAS,EACnBhF,iBAAiBiF,gBAAgB,EACjC,GAAGC,uBAAAA,EACJ,GAAGH,UAAAA;YACJA,UAAAA,GAAaG,uBAAAA;AACf,QAAA;QAEA,MAAMC,GAAAA,GAAM,MAAMxB,QAAAA,CAASoB,UAAAA,CAAAA;AAE3B,QAAA,IAAI,UAAUI,GAAAA,EAAK;AACjBrC,YAAAA,QAAAA,CAASsC,mBAAAA,CAAYxC,YAAAA,CAAAA,CAAAA;AAErBN,YAAAA,UAAAA,CAAW,eAAA,EAAiB;gBAAE+C,OAAAA,EAASzC;AAAa,aAAA,CAAA;YAEpDJ,kBAAAA,CAAmB;gBACjBiB,IAAAA,EAAM,SAAA;AACNC,gBAAAA,OAAAA,EAAStB,aAAAA,CAAc;oBAAE7B,EAAAA,EAAI,4BAAA;oBAA8BE,cAAAA,EAAgB;AAAQ,iBAAA;AACrF,aAAA,CAAA;AACF,QAAA;AAEA,QAAA,IAAI,WAAW0E,GAAAA,EAAK;YAClB,IAAIG,0BAAAA,CAAiBH,IAAIlB,KAAK,CAAA,IAAKkB,IAAIlB,KAAK,CAACsB,IAAI,KAAK,iBAAA,EAAmB;gBACvEX,SAAAA,CAAU3B,sBAAAA,CAAuBkC,IAAIlB,KAAK,CAAA,CAAA;AAC5C,YAAA,CAAA,MAAO,IAAIqB,0BAAAA,CAAiBH,GAAAA,CAAIlB,KAAK,CAAA,EAAG;gBACtCzB,kBAAAA,CAAmB;oBACjBiB,IAAAA,EAAM,QAAA;oBACNC,OAAAA,EAASP,cAAAA,CAAegC,IAAIlB,KAAK;AACnC,iBAAA,CAAA;YACF,CAAA,MAAO;gBACLzB,kBAAAA,CAAmB;oBACjBiB,IAAAA,EAAM,QAAA;AACNC,oBAAAA,OAAAA,EAAStB,aAAAA,CAAc;wBAAE7B,EAAAA,EAAI,oBAAA;wBAAsBE,cAAAA,EAAgB;AAAoB,qBAAA;AACzF,iBAAA,CAAA;AACF,YAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,IAAImD,SAAAA,EAAW;QACb,qBAAO7C,cAAA,CAACyE,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB,IAAA;IAEA,MAAMC,aAAAA,GAAgB1B,SAAS2B,WAAAA,IAAe,KAAA;AAC9C,IAAA,MAAM,EAAEC,KAAK,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,QAAQ,EAAEpF,gBAAgB,EAAE,GAAG0C,QAAQ,EAAC;AAC5E,IAAA,MAAM2C,WAAAA,GAAc;AAClBJ,QAAAA,KAAAA,EAAOA,KAAAA,IAAS,EAAA;AAChBC,QAAAA,SAAAA,EAAWA,SAAAA,IAAa,EAAA;AACxBC,QAAAA,QAAAA,EAAUA,QAAAA,IAAY,EAAA;AACtBC,QAAAA,QAAAA,EAAUA,QAAAA,IAAY,EAAA;AACtBpF,QAAAA,gBAAAA;AACAiC,QAAAA,YAAAA;QACAxC,eAAAA,EAAiB,EAAA;QACjBD,QAAAA,EAAU;AACZ,KAAA;IAEA,qBACEY,cAAA,CAAAkF,mBAAA,EAAA;gCACEC,eAAA,CAACV,iBAAKW,IAAI,EAAA;YAACC,WAAAA,EAAWvC,gBAAAA;;AACpB,8BAAA9C,cAAA,CAACyE,iBAAKa,KAAK,EAAA;8BACRjE,aAAAA,CAAc;wBACb7B,EAAAA,EAAI,0CAAA;wBACJE,cAAAA,EAAgB;AAClB,qBAAA;;8BAEFM,cAAA,CAACuF,SAAAA,EAAAA;oBACCC,MAAAA,EAAO,KAAA;oBACPC,QAAAA,EAAU9B,YAAAA;oBACV+B,aAAAA,EAAeT,WAAAA;oBACfU,gBAAAA,EAAkB/G,wBAAAA;AAEjB,oBAAA,QAAA,EAAA,CAAC,EAAEgH,YAAY,EAAEC,QAAQ,EAAE,iBAC1BV,eAAA,CAAAD,mBAAA,EAAA;;AACE,8CAAAlF,cAAA,CAAC8F,eAAQC,MAAM,EAAA;AACbC,oCAAAA,KAAAA,EAAOC,oBAAAA,CAAe3D,IAAAA,CAAAA;AACtB4D,oCAAAA,aAAAA,gBACElG,cAAA,CAACmG,mBAAAA,EAAAA;AACCC,wCAAAA,SAAAA,gBAAWpG,cAAA,CAACqG,WAAAA,EAAAA,EAAAA,CAAAA;wCACZC,OAAAA,EAASV,YAAAA;wCACTlD,IAAAA,EAAK,QAAA;AACL6D,wCAAAA,QAAAA,EAAU,CAACV,QAAAA;wCACXW,SAAS,EAAA,IAAA;kDAERnF,aAAAA,CAAc;4CAAE7B,EAAAA,EAAI,aAAA;4CAAeE,cAAAA,EAAgB;AAAO,yCAAA;;;8CAIjEM,cAAA,CAACC,gBAAAA,EAAAA;oCAAIK,aAAAA,EAAe,CAAA;4DAClBN,cAAA,CAAC8F,eAAQW,OAAO,EAAA;AACd,wCAAA,QAAA,gBAAAtB,eAAA,CAAC1E,iBAAAA,EAAAA;4CAAKC,SAAAA,EAAU,QAAA;4CAASC,UAAAA,EAAW,SAAA;4CAAUC,GAAAA,EAAK,CAAA;;8DACjDZ,cAAA,CAAC0G,eAAAA,EAAAA,EAAAA,CAAAA;AACA,gDAAA,CAAC/B,+BAAiB3E,cAAA,CAAC2G,eAAAA,EAAAA,EAAAA,CAAAA;8DACpB3G,cAAA,CAAC4G,kBAAAA,EAAAA;oDAAmB5F,WAAAA,EAAaA;;;;;;;;;AAO5CF,gBAAAA,SAAAA,IAAa+F,QAAQC,GAAG,CAACC,QAAQ,KAAK,+BACrC/G,cAAA,CAACC,gBAAAA,EAAAA;oBAAIK,aAAAA,EAAe,CAAA;4CAClBN,cAAA,CAAC8F,eAAQW,OAAO,EAAA;AACd,wBAAA,QAAA,gBAAAzG,cAAA,CAACgH,iBAAAA,EAAAA,EAAAA;;;;;;AAOf;AAEA;;AAEkG,qGAElG,MAAML,eAAAA,GAAkB,IAAA;IACtB,MAAM,EAAEtF,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACE6D,eAAA,CAACtF,KAAAA,EAAAA;;0BACCG,cAAA,CAACiH,uBAAAA,EAAAA;gBAAWC,OAAAA,EAAQ,OAAA;gBAAQC,GAAAA,EAAI,IAAA;0BAC7B9F,aAAAA,CAAc;oBACb7B,EAAAA,EAAI,wBAAA;oBACJE,cAAAA,EAAgB;AAClB,iBAAA;;AAED,YAAA;AACC,gBAAA;AACE,oBAAA;AACE0H,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,iCAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,iBAAA;wBACN6C,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR;AACD,iBAAA;AACD,gBAAA;AACE,oBAAA;wBACE4E,YAAAA,EAAc,cAAA;AACdF,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,iBAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,UAAA;wBACN6C,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR,qBAAA;AACA,oBAAA;wBACE4E,YAAAA,EAAc,cAAA;AACdF,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,iCAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,iBAAA;wBACN6C,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR;AACD;AACF,aAAA,CAAC6E,GAAG,CAAC,CAACC,KAAKC,KAAAA,iBACVzH,cAAA,CAAC0H,kBAAKC,IAAI,EAAA;oBAAa/G,GAAAA,EAAK,CAAA;8BACzB4G,GAAAA,CAAID,GAAG,CAAC,CAAC,EAAEF,IAAI,EAAE,GAAGO,KAAAA,EAAO,iBAC1B5H,cAAA,CAAC0H,iBAAAA,CAAKG,IAAI,EAAA;4BAERC,EAAAA,EAAI,EAAA;4BACJC,CAAAA,EAAG,CAAA;4BACHC,GAAAA,EAAKX,IAAAA;4BACL3G,SAAAA,EAAU,QAAA;4BACVC,UAAAA,EAAW,SAAA;AAEX,4BAAA,QAAA,gBAAAX,cAAA,CAACiI,sBAAAA,EAAAA;AAAe,gCAAA,GAAGL;;AAPdA,yBAAAA,EAAAA,KAAAA,CAAMpD,IAAI,CAAA;AAHLiD,iBAAAA,EAAAA,KAAAA,CAAAA;;;AAiBxB,CAAA;AAUA,MAAMb,kBAAAA,GAAqB,CAAC,EAAE5F,WAAW,EAA2B,GAAA;IAClE,MAAM,EAAEK,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM4G,eAAAA,GAAkBjH,uBAAiB,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAACW,KAAK,CAACqG,eAAe,CAAA;AAEzF,IAAA,qBACEhD,eAAA,CAACtF,KAAAA,EAAAA;;0BACCsF,eAAA,CAAC1E,iBAAAA,EAAAA;gBAAKC,SAAAA,EAAU,QAAA;gBAASC,UAAAA,EAAW,SAAA;gBAAUC,GAAAA,EAAK,CAAA;;kCACjDZ,cAAA,CAACiH,uBAAAA,EAAAA;wBAAWC,OAAAA,EAAQ,OAAA;wBAAQC,GAAAA,EAAI,IAAA;kCAC7B9F,aAAAA,CAAc;4BACb7B,EAAAA,EAAI,gDAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA;;kCAEFM,cAAA,CAACiH,uBAAAA,EAAAA;kCACE5F,aAAAA,CACC;4BACE7B,EAAAA,EAAI,gEAAA;4BACJE,cAAAA,EACE;yBACJ,EACA;AACE0I,4BAAAA,IAAAA,gBACEpI,cAAA,CAACC,gBAAAA,EAAAA;gCACCkH,GAAAA,EAAI,GAAA;gCACJkB,KAAAA,EAAM,YAAA;gCACNC,MAAAA,EAAO,QAAA;gCACPC,GAAAA,EAAI,qBAAA;gCACJC,IAAAA,EAAK,2FAAA;0CAEJnH,aAAAA,CAAc;oCACb7B,EAAAA,EAAI,+CAAA;oCACJE,cAAAA,EAAgB;AAClB,iCAAA;;AAGN,yBAAA;;;;AAIN,0BAAAM,cAAA,CAAC0H,kBAAKC,IAAI,EAAA;gBAAC/G,GAAAA,EAAK,CAAA;AACb,gBAAA,QAAA,EAAA;AACC,oBAAA;AACE6H,wBAAAA,IAAAA,EAAMpH,aAAAA,CAAc;4BAClB7B,EAAAA,EAAI,iEAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AACA0H,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,4DAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,kBAAA;wBACNkE,OAAAA,EAASC,MAAAA,CAAOC,OAAO,CAAC5H,WAAAA,CAAAA,CAAauG,GAAG,CAAC,CAAC,CAACsB,KAAAA,EAAOzB,KAAAA,CAAM,IAAM;AAC5DA,gCAAAA,KAAAA;AACAyB,gCAAAA;6BACF,CAAA,CAAA;AACAC,wBAAAA,WAAAA,EAAazH,aAAAA,CAAc;4BACzB7B,EAAAA,EAAI,eAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA2H,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR,qBAAA;AACA,oBAAA;AACE+F,wBAAAA,IAAAA,EAAMpH,aAAAA,CAAc;4BAClB7B,EAAAA,EAAI,oDAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AACA0H,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,qDAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,cAAA;wBACNkE,OAAAA,EAAS;AACP,4BAAA;AACEtB,gCAAAA,KAAAA,EAAO/F,aAAAA,CAAc;oCACnB7B,EAAAA,EAAI,mEAAA;oCACJE,cAAAA,EAAgB;AAClB,iCAAA,CAAA;gCACAmJ,KAAAA,EAAO;AACT,6BAAA;AACGX,4BAAAA,GAAAA,eAAAA,CAAgBX,GAAG,CAAC,CAACzF,KAAAA,IAAW;AACjCsF,oCAAAA,KAAAA,EAAO/F,aAAAA,CACL;wCACE7B,EAAAA,EAAI,4DAAA;wCACJE,cAAAA,EAAgB;qCAClB,EACA;AACE8E,wCAAAA,IAAAA,EAAMnD,aAAAA,CAAc;4CAClB7B,EAAAA,EAAIsC,KAAAA;AACJpC,4CAAAA,cAAAA,EAAgBqJ,2BAAAA,CAAWjH,KAAAA;AAC7B,yCAAA;AACF,qCAAA,CAAA;oCAEF+G,KAAAA,EAAO/G;iCACT,CAAA;AACD,yBAAA;AACDgH,wBAAAA,WAAAA,EAAazH,aAAAA,CAAc;4BACzB7B,EAAAA,EAAI,mCAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA2H,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR;iBACD,CAAC6E,GAAG,CAAC,CAAC,EAAEF,IAAI,EAAE,GAAGO,KAAAA,EAAO,iBACvB5H,cAAA,CAAC0H,iBAAAA,CAAKG,IAAI,EAAA;wBAERC,EAAAA,EAAI,EAAA;wBACJC,CAAAA,EAAG,CAAA;wBACHC,GAAAA,EAAKX,IAAAA;wBACL3G,SAAAA,EAAU,QAAA;wBACVC,UAAAA,EAAW,SAAA;AAEX,wBAAA,QAAA,gBAAAX,cAAA,CAACiI,sBAAAA,EAAAA;AAAe,4BAAA,GAAGL;;AAPdA,qBAAAA,EAAAA,KAAAA,CAAMpD,IAAI,CAAA;;;;AAa3B,CAAA;AAEA;;AAEkG,qGAElG,MAAMkC,eAAAA,GAAkB,IAAA;IACtB,MAAM,EAAErF,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACE6D,eAAA,CAACtF,KAAAA,EAAAA;;0BACCG,cAAA,CAACiH,uBAAAA,EAAAA;gBAAWC,OAAAA,EAAQ,OAAA;gBAAQC,GAAAA,EAAI,IAAA;0BAC7B9F,aAAAA,CAAc;oBACb7B,EAAAA,EAAI,gBAAA;oBACJE,cAAAA,EAAgB;AAClB,iBAAA;;AAEF,0BAAAM,cAAA,CAAC0H,kBAAKC,IAAI,EAAA;gBAAC/G,GAAAA,EAAK,CAAA;AACb,gBAAA,QAAA,EAAA;AACC,oBAAA;AACEwG,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,2BAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,WAAA;wBACNjF,QAAAA,EAAU,IAAA;wBACV8H,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR,qBAAA;AACA,oBAAA;AACE0E,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,0BAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,UAAA;wBACN6C,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR,qBAAA;AACA,oBAAA;AACE0E,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,uBAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,OAAA;wBACNjF,QAAAA,EAAU,IAAA;wBACV8H,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR,qBAAA;AACA,oBAAA;AACE0E,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,0BAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,UAAA;wBACN6C,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR;iBACD,CAAC6E,GAAG,CAAC,CAAC,EAAEF,IAAI,EAAE,GAAGO,KAAAA,EAAO,iBACvB5H,cAAA,CAAC0H,iBAAAA,CAAKG,IAAI,EAAA;wBAERC,EAAAA,EAAI,EAAA;wBACJC,CAAAA,EAAG,CAAA;wBACHC,GAAAA,EAAKX,IAAAA;wBACL3G,SAAAA,EAAU,QAAA;wBACVC,UAAAA,EAAW,SAAA;AAEX,wBAAA,QAAA,gBAAAX,cAAA,CAACiI,sBAAAA,EAAAA;AAAe,4BAAA,GAAGL;;AAPdA,qBAAAA,EAAAA,KAAAA,CAAMpD,IAAI,CAAA;;;;AAa3B,CAAA;AAEA;;AAEkG,qGAElG,MAAMwC,iBAAAA,GAAoB,IAAA;IACxB,MAAM,EAAE3F,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEG,kBAAkB,EAAE,GAAGC,6BAAAA,EAAAA;AAC/B,IAAA,MAAMK,WAAWiH,qBAAAA,CAAc,aAAA,EAAe,CAACC,CAAAA,GAAMA,EAAElH,QAAQ,CAAA;AAE/D,IAAA,MAAMmH,YAAAA,GAAe,IAAA;QACnBnH,QAAAA,CAAS;YAAEW,IAAAA,EAAM;AAAkB,SAAA,CAAA;QACnCjB,kBAAAA,CAAmB;YACjBiB,IAAAA,EAAM,SAAA;AACNC,YAAAA,OAAAA,EAAStB,aAAAA,CAAc;gBACrB7B,EAAAA,EAAI,0CAAA;gBACJE,cAAAA,EAAgB;AAClB,aAAA;AACF,SAAA,CAAA;AACF,IAAA,CAAA;AAEA,IAAA,qBACEyF,eAAA,CAACtF,KAAAA,EAAAA;QAAMc,UAAAA,EAAW,OAAA;;0BAChBwE,eAAA,CAAC1E,iBAAAA,EAAAA;gBAAKC,SAAAA,EAAU,QAAA;gBAASC,UAAAA,EAAW,OAAA;gBAAQC,GAAAA,EAAK,CAAA;;kCAC/CZ,cAAA,CAACiH,uBAAAA,EAAAA;wBAAWC,OAAAA,EAAQ,OAAA;wBAAQC,GAAAA,EAAI,IAAA;kCAC7B9F,aAAAA,CAAc;4BACb7B,EAAAA,EAAI,qBAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA;;kCAEFM,cAAA,CAACiH,uBAAAA,EAAAA;wBAAWC,OAAAA,EAAQ,IAAA;kCACjB7F,aAAAA,CAAc;4BACb7B,EAAAA,EAAI,2BAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA;;;;0BAGJM,cAAA,CAACmG,mBAAAA,EAAAA;gBAAOe,OAAAA,EAAQ,UAAA;gBAAWiC,OAAAA,EAASD,YAAAA;0BACjC7H,aAAAA,CAAc;oBACb7B,EAAAA,EAAI,qBAAA;oBACJE,cAAAA,EAAgB;AAClB,iBAAA;;;;AAIR,CAAA;;;;"}
1
+ {"version":3,"file":"ProfilePage.js","sources":["../../../../../admin/src/pages/ProfilePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, useNotifyAT, Grid, Typography, FlexProps } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Form, FormHelpers } from '../components/Form';\nimport { InputRenderer } from '../components/FormInputs/Renderer';\nimport { useGuidedTour } from '../components/GuidedTour/Context';\nimport { Layouts } from '../components/Layouts/Layout';\nimport { Page } from '../components/PageHelpers';\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useTracking } from '../features/Tracking';\nimport { useAPIErrorHandler } from '../hooks/useAPIErrorHandler';\nimport { useIsDesktop } from '../hooks/useMediaQuery';\nimport { AppState, setAppTheme } from '../reducer';\nimport { useIsSSOLockedQuery, useUpdateMeMutation } from '../services/auth';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { translatedErrors } from '../utils/translatedErrors';\nimport { getDisplayName } from '../utils/users';\n\nimport { COMMON_USER_SCHEMA } from './Settings/pages/Users/utils/validation';\n\nimport type { UpdateMe } from '../../../shared/contracts/users';\n\nconst PROFILE_VALIDTION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n currentPassword: yup\n .string()\n // @ts-expect-error – no idea why this is failing.\n .when(['password', 'confirmPassword'], (password, confirmPassword, passSchema) => {\n return password || confirmPassword\n ? passSchema\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .nullable()\n : passSchema;\n }),\n preferedLanguage: yup.string().nullable(),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * ProfilePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst Panel = ({ children, ...flexProps }: FlexProps) => {\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4} {...flexProps}>\n {children}\n </Flex>\n </Box>\n );\n};\n\nconst ProfilePage = () => {\n const isDesktop = useIsDesktop();\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const currentTheme = useTypedSelector((state) => state.admin_app.theme.currentTheme);\n const dispatch = useTypedDispatch();\n const {\n _unstableFormatValidationErrors: formatValidationErrors,\n _unstableFormatAPIError: formatApiError,\n } = useAPIErrorHandler();\n\n const user = useAuth('ProfilePage', (state) => state.user);\n\n React.useEffect(() => {\n if (user) {\n notifyStatus(\n formatMessage({\n id: 'Settings.profile.form.notify.data.loaded',\n defaultMessage: 'Your profile data has been loaded',\n })\n );\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }, [formatMessage, notifyStatus, toggleNotification, user]);\n\n const [updateMe, { isLoading: isSubmittingForm }] = useUpdateMeMutation();\n\n const {\n isLoading,\n data: dataSSO,\n error,\n } = useIsSSOLockedQuery(undefined, {\n skip: !(window.strapi.isEE && window.strapi.features.isEnabled('sso')),\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'Settings.permissions.users.sso.provider.error' }),\n });\n }\n }, [error, formatMessage, toggleNotification]);\n\n type UpdateUsersMeBody = UpdateMe.Request['body'] & {\n confirmPassword: string;\n currentTheme: AppState['theme']['currentTheme'];\n };\n\n const handleSubmit = async (\n body: UpdateUsersMeBody,\n { setErrors }: FormHelpers<UpdateUsersMeBody>\n ) => {\n const { confirmPassword: _confirmPassword, currentTheme, ...bodyRest } = body;\n let dataToSend = bodyRest;\n\n // The password fields are optional. If the user didn't touch them, don't send any password\n // to the API, because an empty string would throw a validation error\n if (dataToSend.password === '') {\n const {\n password: _password,\n currentPassword: _currentPassword,\n ...passwordRequestBodyRest\n } = dataToSend;\n dataToSend = passwordRequestBodyRest;\n }\n\n const res = await updateMe(dataToSend);\n\n if ('data' in res) {\n dispatch(setAppTheme(currentTheme));\n\n trackUsage('didChangeMode', { newMode: currentTheme });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n }\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n } else if (isBaseQueryError(res.error)) {\n toggleNotification({\n type: 'danger',\n message: formatApiError(res.error),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n const hasLockedRole = dataSSO?.isSSOLocked ?? false;\n const { email, firstname, lastname, username, preferedLanguage } = user ?? {};\n const initialData = {\n email: email ?? '',\n firstname: firstname ?? '',\n lastname: lastname ?? '',\n username: username ?? '',\n preferedLanguage,\n currentTheme,\n confirmPassword: '',\n password: '',\n };\n\n return (\n <>\n <Page.Main aria-busy={isSubmittingForm}>\n <Page.Title>\n {formatMessage({\n id: 'Settings.profile.form.section.head.title',\n defaultMessage: 'User profile',\n })}\n </Page.Title>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={initialData}\n validationSchema={PROFILE_VALIDTION_SCHEMA}\n >\n {({ isSubmitting, modified }) => (\n <>\n <Layouts.Header\n title={getDisplayName(user)}\n primaryAction={\n <Button\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n disabled={!modified}\n fullWidth\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n <Box paddingBottom={6}>\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <UserInfoSection />\n {!hasLockedRole && <PasswordSection />}\n <PreferencesSection localeNames={localeNames} />\n </Flex>\n </Layouts.Content>\n </Box>\n </>\n )}\n </Form>\n {isDesktop && process.env.NODE_ENV === 'development' && (\n <Box paddingBottom={6}>\n <Layouts.Content>\n <GuidedTourSection />\n </Layouts.Content>\n </Box>\n )}\n </Page.Main>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PasswordSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst PasswordSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.change-password',\n defaultMessage: 'Change password',\n })}\n </Typography>\n {[\n [\n {\n label: formatMessage({\n id: 'Auth.form.currentPassword.label',\n defaultMessage: 'Current Password',\n }),\n name: 'currentPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n [\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n size: 6,\n type: 'password' as const,\n },\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n ].map((row) => (\n <Grid.Root key={row.map((field) => field.name).join('.')} gap={5}>\n {row.map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n ))}\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PreferencesSection\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PreferencesSectionProps {\n localeNames: Record<string, string>;\n}\n\nconst PreferencesSection = ({ localeNames }: PreferencesSectionProps) => {\n const { formatMessage } = useIntl();\n const themesToDisplay = useTypedSelector((state) => state.admin_app.theme.availableThemes);\n\n return (\n <Panel>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'Settings.profile.form.section.experience.title',\n defaultMessage: 'Experience',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'Settings.profile.form.section.experience.interfaceLanguageHelp',\n defaultMessage:\n 'Preference changes will apply only to you. More information is available {here}.',\n },\n {\n here: (\n <Box\n tag=\"a\"\n color=\"primary600\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#locales\"\n >\n {formatMessage({\n id: 'Settings.profile.form.section.experience.here',\n defaultMessage: 'here',\n })}\n </Box>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Grid.Root gap={5}>\n {[\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage.hint',\n defaultMessage: 'This will only display your own interface in the chosen language.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage',\n defaultMessage: 'Interface language',\n }),\n name: 'preferedLanguage',\n options: Object.entries(localeNames).map(([value, label]) => ({\n label,\n value,\n })),\n placeholder: formatMessage({\n id: 'global.select',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.hint',\n defaultMessage: 'Displays your interface in the chosen mode.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.label',\n defaultMessage: 'Interface mode',\n }),\n name: 'currentTheme',\n options: [\n {\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.option-system-label',\n defaultMessage: 'Use system settings',\n }),\n value: 'system',\n },\n ...themesToDisplay.map((theme) => ({\n label: formatMessage(\n {\n id: 'Settings.profile.form.section.experience.mode.option-label',\n defaultMessage: '{name} mode',\n },\n {\n name: formatMessage({\n id: theme,\n defaultMessage: upperFirst(theme),\n }),\n }\n ),\n value: theme,\n })),\n ],\n placeholder: formatMessage({\n id: 'app.components.Select.placeholder',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UserInfoSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst UserInfoSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.profile',\n defaultMessage: 'Profile',\n })}\n </Typography>\n <Grid.Root gap={5}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n }),\n name: 'firstname',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 6,\n type: 'email' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n }),\n name: 'username',\n size: 6,\n type: 'string' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst GuidedTourSection = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const dispatch = useGuidedTour('ProfilePage', (s) => s.dispatch);\n\n const onClickReset = () => {\n dispatch({ type: 'reset_all_tours' });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'tours.profile.notification.success.reset',\n defaultMessage: 'Guided tour reset',\n }),\n });\n };\n\n return (\n <Panel alignItems=\"start\">\n <Flex direction=\"column\" alignItems=\"start\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'tours.profile.title',\n defaultMessage: 'Guided tour',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage({\n id: 'tours.profile.description',\n defaultMessage: 'You can reset the guided tour at any time.',\n })}\n </Typography>\n </Flex>\n <Button variant=\"tertiary\" onClick={onClickReset}>\n {formatMessage({\n id: 'tours.profile.reset',\n defaultMessage: 'Reset guided tour',\n })}\n </Button>\n </Panel>\n );\n};\n\nexport { ProfilePage };\n"],"names":["PROFILE_VALIDTION_SCHEMA","yup","object","shape","COMMON_USER_SCHEMA","currentPassword","string","when","password","confirmPassword","passSchema","required","id","translatedErrors","defaultMessage","nullable","preferedLanguage","Panel","children","flexProps","_jsx","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Flex","direction","alignItems","gap","ProfilePage","isDesktop","useIsDesktop","localeNames","useTypedSelector","state","admin_app","language","formatMessage","useIntl","trackUsage","useTracking","toggleNotification","useNotification","notifyStatus","useNotifyAT","currentTheme","theme","dispatch","useTypedDispatch","_unstableFormatValidationErrors","formatValidationErrors","_unstableFormatAPIError","formatApiError","useAPIErrorHandler","user","useAuth","React","useEffect","type","message","updateMe","isLoading","isSubmittingForm","useUpdateMeMutation","data","dataSSO","error","useIsSSOLockedQuery","undefined","skip","window","strapi","isEE","features","isEnabled","handleSubmit","body","setErrors","_confirmPassword","bodyRest","dataToSend","_password","_currentPassword","passwordRequestBodyRest","res","setAppTheme","newMode","isBaseQueryError","name","Page","Loading","hasLockedRole","isSSOLocked","email","firstname","lastname","username","initialData","_Fragment","_jsxs","Main","aria-busy","Title","Form","method","onSubmit","initialValues","validationSchema","isSubmitting","modified","Layouts","Header","title","getDisplayName","primaryAction","Button","startIcon","Check","loading","disabled","fullWidth","Content","UserInfoSection","PasswordSection","PreferencesSection","process","env","NODE_ENV","GuidedTourSection","Typography","variant","tag","label","size","autoComplete","map","row","Grid","Root","field","Item","xs","m","col","InputRenderer","join","themesToDisplay","availableThemes","here","color","target","rel","href","hint","options","Object","entries","value","placeholder","upperFirst","useGuidedTour","s","onClickReset","onClick"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,MAAMA,wBAAAA,GAA2BC,cAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AAClD,IAAA,GAAGC,6BAAkB;IACrBC,eAAAA,EAAiBJ,cAAAA,CACdK,MAAM,EACP;AACCC,KAAAA,IAAI,CAAC;AAAC,QAAA,UAAA;AAAY,QAAA;KAAkB,EAAE,CAACC,UAAUC,eAAAA,EAAiBC,UAAAA,GAAAA;AACjE,QAAA,OAAOF,QAAAA,IAAYC,eAAAA,GACfC,UAAAA,CACGC,QAAQ,CAAC;YACRC,EAAAA,EAAIC,iCAAAA,CAAiBF,QAAQ,CAACC,EAAE;YAChCE,cAAAA,EAAgB;AAClB,SAAA,CAAA,CACCC,QAAQ,EAAA,GACXL,UAAAA;AACN,IAAA,CAAA,CAAA;IACFM,gBAAAA,EAAkBf,cAAAA,CAAIK,MAAM,EAAA,CAAGS,QAAQ;AACzC,CAAA,CAAA;AAEA;;AAEkG,qGAElG,MAAME,KAAAA,GAAQ,CAAC,EAAEC,QAAQ,EAAE,GAAGC,SAAAA,EAAsB,GAAA;AAClD,IAAA,qBACEC,cAAA,CAACC,gBAAAA,EAAAA;QACCC,UAAAA,EAAW,UAAA;QACXC,SAAS,EAAA,IAAA;QACTC,MAAAA,EAAO,cAAA;QACPC,UAAAA,EAAY,CAAA;QACZC,aAAAA,EAAe,CAAA;QACfC,WAAAA,EAAa,CAAA;QACbC,YAAAA,EAAc,CAAA;AAEd,QAAA,QAAA,gBAAAR,cAAA,CAACS,iBAAAA,EAAAA;YAAKC,SAAAA,EAAU,QAAA;YAASC,UAAAA,EAAW,SAAA;YAAUC,GAAAA,EAAK,CAAA;AAAI,YAAA,GAAGb,SAAS;AAChED,YAAAA,QAAAA,EAAAA;;;AAIT,CAAA;AAEA,MAAMe,WAAAA,GAAc,IAAA;AAClB,IAAA,MAAMC,SAAAA,GAAYC,0BAAAA,EAAAA;IAClB,MAAMC,WAAAA,GAAcC,uBAAiB,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAACC,QAAQ,CAACJ,WAAW,CAAA;IACpF,MAAM,EAAEK,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;IACvB,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,6BAAAA,EAAAA;IAC/B,MAAM,EAAEC,YAAY,EAAE,GAAGC,wBAAAA,EAAAA;IACzB,MAAMC,YAAAA,GAAeZ,uBAAiB,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAACW,KAAK,CAACD,YAAY,CAAA;AACnF,IAAA,MAAME,QAAAA,GAAWC,sBAAAA,EAAAA;AACjB,IAAA,MAAM,EACJC,+BAAAA,EAAiCC,sBAAsB,EACvDC,uBAAAA,EAAyBC,cAAc,EACxC,GAAGC,qCAAAA,EAAAA;AAEJ,IAAA,MAAMC,OAAOC,YAAAA,CAAQ,aAAA,EAAe,CAACrB,KAAAA,GAAUA,MAAMoB,IAAI,CAAA;AAEzDE,IAAAA,gBAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAIH,IAAAA,EAAM;AACRX,YAAAA,YAAAA,CACEN,aAAAA,CAAc;gBACZ7B,EAAAA,EAAI,0CAAA;gBACJE,cAAAA,EAAgB;AAClB,aAAA,CAAA,CAAA;QAEJ,CAAA,MAAO;YACL+B,kBAAAA,CAAmB;gBACjBiB,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAAStB,aAAAA,CAAc;oBAAE7B,EAAAA,EAAI,oBAAA;oBAAsBE,cAAAA,EAAgB;AAAoB,iBAAA;AACzF,aAAA,CAAA;AACF,QAAA;IACF,CAAA,EAAG;AAAC2B,QAAAA,aAAAA;AAAeM,QAAAA,YAAAA;AAAcF,QAAAA,kBAAAA;AAAoBa,QAAAA;AAAK,KAAA,CAAA;AAE1D,IAAA,MAAM,CAACM,QAAAA,EAAU,EAAEC,WAAWC,gBAAgB,EAAE,CAAC,GAAGC,wBAAAA,EAAAA;IAEpD,MAAM,EACJF,SAAS,EACTG,IAAAA,EAAMC,OAAO,EACbC,KAAK,EACN,GAAGC,wBAAAA,CAAoBC,SAAAA,EAAW;AACjCC,QAAAA,IAAAA,EAAM,EAAEC,MAAAA,CAAOC,MAAM,CAACC,IAAI,IAAIF,MAAAA,CAAOC,MAAM,CAACE,QAAQ,CAACC,SAAS,CAAC,KAAA,CAAK;AACtE,KAAA,CAAA;AAEAlB,IAAAA,gBAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAIS,KAAAA,EAAO;YACTzB,kBAAAA,CAAmB;gBACjBiB,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAAStB,aAAAA,CAAc;oBAAE7B,EAAAA,EAAI;AAAgD,iBAAA;AAC/E,aAAA,CAAA;AACF,QAAA;IACF,CAAA,EAAG;AAAC0D,QAAAA,KAAAA;AAAO7B,QAAAA,aAAAA;AAAeI,QAAAA;AAAmB,KAAA,CAAA;AAO7C,IAAA,MAAMkC,YAAAA,GAAe,OACnBC,IAAAA,EACA,EAAEC,SAAS,EAAkC,GAAA;QAE7C,MAAM,EAAExE,iBAAiByE,gBAAgB,EAAEjC,YAAY,EAAE,GAAGkC,UAAU,GAAGH,IAAAA;AACzE,QAAA,IAAII,UAAAA,GAAaD,QAAAA;;;QAIjB,IAAIC,UAAAA,CAAW5E,QAAQ,KAAK,EAAA,EAAI;YAC9B,MAAM,EACJA,UAAU6E,SAAS,EACnBhF,iBAAiBiF,gBAAgB,EACjC,GAAGC,uBAAAA,EACJ,GAAGH,UAAAA;YACJA,UAAAA,GAAaG,uBAAAA;AACf,QAAA;QAEA,MAAMC,GAAAA,GAAM,MAAMxB,QAAAA,CAASoB,UAAAA,CAAAA;AAE3B,QAAA,IAAI,UAAUI,GAAAA,EAAK;AACjBrC,YAAAA,QAAAA,CAASsC,mBAAAA,CAAYxC,YAAAA,CAAAA,CAAAA;AAErBN,YAAAA,UAAAA,CAAW,eAAA,EAAiB;gBAAE+C,OAAAA,EAASzC;AAAa,aAAA,CAAA;YAEpDJ,kBAAAA,CAAmB;gBACjBiB,IAAAA,EAAM,SAAA;AACNC,gBAAAA,OAAAA,EAAStB,aAAAA,CAAc;oBAAE7B,EAAAA,EAAI,4BAAA;oBAA8BE,cAAAA,EAAgB;AAAQ,iBAAA;AACrF,aAAA,CAAA;AACF,QAAA;AAEA,QAAA,IAAI,WAAW0E,GAAAA,EAAK;YAClB,IAAIG,0BAAAA,CAAiBH,IAAIlB,KAAK,CAAA,IAAKkB,IAAIlB,KAAK,CAACsB,IAAI,KAAK,iBAAA,EAAmB;gBACvEX,SAAAA,CAAU3B,sBAAAA,CAAuBkC,IAAIlB,KAAK,CAAA,CAAA;AAC5C,YAAA,CAAA,MAAO,IAAIqB,0BAAAA,CAAiBH,GAAAA,CAAIlB,KAAK,CAAA,EAAG;gBACtCzB,kBAAAA,CAAmB;oBACjBiB,IAAAA,EAAM,QAAA;oBACNC,OAAAA,EAASP,cAAAA,CAAegC,IAAIlB,KAAK;AACnC,iBAAA,CAAA;YACF,CAAA,MAAO;gBACLzB,kBAAAA,CAAmB;oBACjBiB,IAAAA,EAAM,QAAA;AACNC,oBAAAA,OAAAA,EAAStB,aAAAA,CAAc;wBAAE7B,EAAAA,EAAI,oBAAA;wBAAsBE,cAAAA,EAAgB;AAAoB,qBAAA;AACzF,iBAAA,CAAA;AACF,YAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,IAAImD,SAAAA,EAAW;QACb,qBAAO7C,cAAA,CAACyE,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB,IAAA;IAEA,MAAMC,aAAAA,GAAgB1B,SAAS2B,WAAAA,IAAe,KAAA;AAC9C,IAAA,MAAM,EAAEC,KAAK,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,QAAQ,EAAEpF,gBAAgB,EAAE,GAAG0C,QAAQ,EAAC;AAC5E,IAAA,MAAM2C,WAAAA,GAAc;AAClBJ,QAAAA,KAAAA,EAAOA,KAAAA,IAAS,EAAA;AAChBC,QAAAA,SAAAA,EAAWA,SAAAA,IAAa,EAAA;AACxBC,QAAAA,QAAAA,EAAUA,QAAAA,IAAY,EAAA;AACtBC,QAAAA,QAAAA,EAAUA,QAAAA,IAAY,EAAA;AACtBpF,QAAAA,gBAAAA;AACAiC,QAAAA,YAAAA;QACAxC,eAAAA,EAAiB,EAAA;QACjBD,QAAAA,EAAU;AACZ,KAAA;IAEA,qBACEY,cAAA,CAAAkF,mBAAA,EAAA;gCACEC,eAAA,CAACV,iBAAKW,IAAI,EAAA;YAACC,WAAAA,EAAWvC,gBAAAA;;AACpB,8BAAA9C,cAAA,CAACyE,iBAAKa,KAAK,EAAA;8BACRjE,aAAAA,CAAc;wBACb7B,EAAAA,EAAI,0CAAA;wBACJE,cAAAA,EAAgB;AAClB,qBAAA;;8BAEFM,cAAA,CAACuF,SAAAA,EAAAA;oBACCC,MAAAA,EAAO,KAAA;oBACPC,QAAAA,EAAU9B,YAAAA;oBACV+B,aAAAA,EAAeT,WAAAA;oBACfU,gBAAAA,EAAkB/G,wBAAAA;AAEjB,oBAAA,QAAA,EAAA,CAAC,EAAEgH,YAAY,EAAEC,QAAQ,EAAE,iBAC1BV,eAAA,CAAAD,mBAAA,EAAA;;AACE,8CAAAlF,cAAA,CAAC8F,eAAQC,MAAM,EAAA;AACbC,oCAAAA,KAAAA,EAAOC,oBAAAA,CAAe3D,IAAAA,CAAAA;AACtB4D,oCAAAA,aAAAA,gBACElG,cAAA,CAACmG,mBAAAA,EAAAA;AACCC,wCAAAA,SAAAA,gBAAWpG,cAAA,CAACqG,WAAAA,EAAAA,EAAAA,CAAAA;wCACZC,OAAAA,EAASV,YAAAA;wCACTlD,IAAAA,EAAK,QAAA;AACL6D,wCAAAA,QAAAA,EAAU,CAACV,QAAAA;wCACXW,SAAS,EAAA,IAAA;kDAERnF,aAAAA,CAAc;4CAAE7B,EAAAA,EAAI,aAAA;4CAAeE,cAAAA,EAAgB;AAAO,yCAAA;;;8CAIjEM,cAAA,CAACC,gBAAAA,EAAAA;oCAAIK,aAAAA,EAAe,CAAA;4DAClBN,cAAA,CAAC8F,eAAQW,OAAO,EAAA;AACd,wCAAA,QAAA,gBAAAtB,eAAA,CAAC1E,iBAAAA,EAAAA;4CAAKC,SAAAA,EAAU,QAAA;4CAASC,UAAAA,EAAW,SAAA;4CAAUC,GAAAA,EAAK,CAAA;;8DACjDZ,cAAA,CAAC0G,eAAAA,EAAAA,EAAAA,CAAAA;AACA,gDAAA,CAAC/B,+BAAiB3E,cAAA,CAAC2G,eAAAA,EAAAA,EAAAA,CAAAA;8DACpB3G,cAAA,CAAC4G,kBAAAA,EAAAA;oDAAmB5F,WAAAA,EAAaA;;;;;;;;;AAO5CF,gBAAAA,SAAAA,IAAa+F,QAAQC,GAAG,CAACC,QAAQ,KAAK,+BACrC/G,cAAA,CAACC,gBAAAA,EAAAA;oBAAIK,aAAAA,EAAe,CAAA;4CAClBN,cAAA,CAAC8F,eAAQW,OAAO,EAAA;AACd,wBAAA,QAAA,gBAAAzG,cAAA,CAACgH,iBAAAA,EAAAA,EAAAA;;;;;;AAOf;AAEA;;AAEkG,qGAElG,MAAML,eAAAA,GAAkB,IAAA;IACtB,MAAM,EAAEtF,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACE6D,eAAA,CAACtF,KAAAA,EAAAA;;0BACCG,cAAA,CAACiH,uBAAAA,EAAAA;gBAAWC,OAAAA,EAAQ,OAAA;gBAAQC,GAAAA,EAAI,IAAA;0BAC7B9F,aAAAA,CAAc;oBACb7B,EAAAA,EAAI,wBAAA;oBACJE,cAAAA,EAAgB;AAClB,iBAAA;;AAED,YAAA;AACC,gBAAA;AACE,oBAAA;AACE0H,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,iCAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,iBAAA;wBACN6C,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR;AACD,iBAAA;AACD,gBAAA;AACE,oBAAA;wBACE4E,YAAAA,EAAc,cAAA;AACdF,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,iBAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,UAAA;wBACN6C,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR,qBAAA;AACA,oBAAA;wBACE4E,YAAAA,EAAc,cAAA;AACdF,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,iCAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,iBAAA;wBACN6C,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR;AACD;AACF,aAAA,CAAC6E,GAAG,CAAC,CAACC,GAAAA,iBACLxH,cAAA,CAACyH,kBAAKC,IAAI,EAAA;oBAAgD9G,GAAAA,EAAK,CAAA;8BAC5D4G,GAAAA,CAAID,GAAG,CAAC,CAAC,EAAEF,IAAI,EAAE,GAAGM,KAAAA,EAAO,iBAC1B3H,cAAA,CAACyH,iBAAAA,CAAKG,IAAI,EAAA;4BAERC,EAAAA,EAAI,EAAA;4BACJC,CAAAA,EAAG,CAAA;4BACHC,GAAAA,EAAKV,IAAAA;4BACL3G,SAAAA,EAAU,QAAA;4BACVC,UAAAA,EAAW,SAAA;AAEX,4BAAA,QAAA,gBAAAX,cAAA,CAACgI,sBAAAA,EAAAA;AAAe,gCAAA,GAAGL;;AAPdA,yBAAAA,EAAAA,KAAAA,CAAMnD,IAAI,CAAA;mBAHLgD,GAAAA,CAAID,GAAG,CAAC,CAACI,KAAAA,GAAUA,MAAMnD,IAAI,CAAA,CAAEyD,IAAI,CAAC,GAAA,CAAA,CAAA;;;AAiB5D,CAAA;AAUA,MAAMrB,kBAAAA,GAAqB,CAAC,EAAE5F,WAAW,EAA2B,GAAA;IAClE,MAAM,EAAEK,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM4G,eAAAA,GAAkBjH,uBAAiB,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAACW,KAAK,CAACqG,eAAe,CAAA;AAEzF,IAAA,qBACEhD,eAAA,CAACtF,KAAAA,EAAAA;;0BACCsF,eAAA,CAAC1E,iBAAAA,EAAAA;gBAAKC,SAAAA,EAAU,QAAA;gBAASC,UAAAA,EAAW,SAAA;gBAAUC,GAAAA,EAAK,CAAA;;kCACjDZ,cAAA,CAACiH,uBAAAA,EAAAA;wBAAWC,OAAAA,EAAQ,OAAA;wBAAQC,GAAAA,EAAI,IAAA;kCAC7B9F,aAAAA,CAAc;4BACb7B,EAAAA,EAAI,gDAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA;;kCAEFM,cAAA,CAACiH,uBAAAA,EAAAA;kCACE5F,aAAAA,CACC;4BACE7B,EAAAA,EAAI,gEAAA;4BACJE,cAAAA,EACE;yBACJ,EACA;AACE0I,4BAAAA,IAAAA,gBACEpI,cAAA,CAACC,gBAAAA,EAAAA;gCACCkH,GAAAA,EAAI,GAAA;gCACJkB,KAAAA,EAAM,YAAA;gCACNC,MAAAA,EAAO,QAAA;gCACPC,GAAAA,EAAI,qBAAA;gCACJC,IAAAA,EAAK,2FAAA;0CAEJnH,aAAAA,CAAc;oCACb7B,EAAAA,EAAI,+CAAA;oCACJE,cAAAA,EAAgB;AAClB,iCAAA;;AAGN,yBAAA;;;;AAIN,0BAAAM,cAAA,CAACyH,kBAAKC,IAAI,EAAA;gBAAC9G,GAAAA,EAAK,CAAA;AACb,gBAAA,QAAA,EAAA;AACC,oBAAA;AACE6H,wBAAAA,IAAAA,EAAMpH,aAAAA,CAAc;4BAClB7B,EAAAA,EAAI,iEAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AACA0H,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,4DAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,kBAAA;wBACNkE,OAAAA,EAASC,MAAAA,CAAOC,OAAO,CAAC5H,WAAAA,CAAAA,CAAauG,GAAG,CAAC,CAAC,CAACsB,KAAAA,EAAOzB,KAAAA,CAAM,IAAM;AAC5DA,gCAAAA,KAAAA;AACAyB,gCAAAA;6BACF,CAAA,CAAA;AACAC,wBAAAA,WAAAA,EAAazH,aAAAA,CAAc;4BACzB7B,EAAAA,EAAI,eAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA2H,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR,qBAAA;AACA,oBAAA;AACE+F,wBAAAA,IAAAA,EAAMpH,aAAAA,CAAc;4BAClB7B,EAAAA,EAAI,oDAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AACA0H,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,qDAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,cAAA;wBACNkE,OAAAA,EAAS;AACP,4BAAA;AACEtB,gCAAAA,KAAAA,EAAO/F,aAAAA,CAAc;oCACnB7B,EAAAA,EAAI,mEAAA;oCACJE,cAAAA,EAAgB;AAClB,iCAAA,CAAA;gCACAmJ,KAAAA,EAAO;AACT,6BAAA;AACGX,4BAAAA,GAAAA,eAAAA,CAAgBX,GAAG,CAAC,CAACzF,KAAAA,IAAW;AACjCsF,oCAAAA,KAAAA,EAAO/F,aAAAA,CACL;wCACE7B,EAAAA,EAAI,4DAAA;wCACJE,cAAAA,EAAgB;qCAClB,EACA;AACE8E,wCAAAA,IAAAA,EAAMnD,aAAAA,CAAc;4CAClB7B,EAAAA,EAAIsC,KAAAA;AACJpC,4CAAAA,cAAAA,EAAgBqJ,2BAAAA,CAAWjH,KAAAA;AAC7B,yCAAA;AACF,qCAAA,CAAA;oCAEF+G,KAAAA,EAAO/G;iCACT,CAAA;AACD,yBAAA;AACDgH,wBAAAA,WAAAA,EAAazH,aAAAA,CAAc;4BACzB7B,EAAAA,EAAI,mCAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA2H,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR;iBACD,CAAC6E,GAAG,CAAC,CAAC,EAAEF,IAAI,EAAE,GAAGM,KAAAA,EAAO,iBACvB3H,cAAA,CAACyH,iBAAAA,CAAKG,IAAI,EAAA;wBAERC,EAAAA,EAAI,EAAA;wBACJC,CAAAA,EAAG,CAAA;wBACHC,GAAAA,EAAKV,IAAAA;wBACL3G,SAAAA,EAAU,QAAA;wBACVC,UAAAA,EAAW,SAAA;AAEX,wBAAA,QAAA,gBAAAX,cAAA,CAACgI,sBAAAA,EAAAA;AAAe,4BAAA,GAAGL;;AAPdA,qBAAAA,EAAAA,KAAAA,CAAMnD,IAAI,CAAA;;;;AAa3B,CAAA;AAEA;;AAEkG,qGAElG,MAAMkC,eAAAA,GAAkB,IAAA;IACtB,MAAM,EAAErF,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACE6D,eAAA,CAACtF,KAAAA,EAAAA;;0BACCG,cAAA,CAACiH,uBAAAA,EAAAA;gBAAWC,OAAAA,EAAQ,OAAA;gBAAQC,GAAAA,EAAI,IAAA;0BAC7B9F,aAAAA,CAAc;oBACb7B,EAAAA,EAAI,gBAAA;oBACJE,cAAAA,EAAgB;AAClB,iBAAA;;AAEF,0BAAAM,cAAA,CAACyH,kBAAKC,IAAI,EAAA;gBAAC9G,GAAAA,EAAK,CAAA;AACb,gBAAA,QAAA,EAAA;AACC,oBAAA;AACEwG,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,2BAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,WAAA;wBACNjF,QAAAA,EAAU,IAAA;wBACV8H,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR,qBAAA;AACA,oBAAA;AACE0E,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,0BAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,UAAA;wBACN6C,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR,qBAAA;AACA,oBAAA;AACE0E,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,uBAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,OAAA;wBACNjF,QAAAA,EAAU,IAAA;wBACV8H,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR,qBAAA;AACA,oBAAA;AACE0E,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,0BAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,UAAA;wBACN6C,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR;iBACD,CAAC6E,GAAG,CAAC,CAAC,EAAEF,IAAI,EAAE,GAAGM,KAAAA,EAAO,iBACvB3H,cAAA,CAACyH,iBAAAA,CAAKG,IAAI,EAAA;wBAERC,EAAAA,EAAI,EAAA;wBACJC,CAAAA,EAAG,CAAA;wBACHC,GAAAA,EAAKV,IAAAA;wBACL3G,SAAAA,EAAU,QAAA;wBACVC,UAAAA,EAAW,SAAA;AAEX,wBAAA,QAAA,gBAAAX,cAAA,CAACgI,sBAAAA,EAAAA;AAAe,4BAAA,GAAGL;;AAPdA,qBAAAA,EAAAA,KAAAA,CAAMnD,IAAI,CAAA;;;;AAa3B,CAAA;AAEA;;AAEkG,qGAElG,MAAMwC,iBAAAA,GAAoB,IAAA;IACxB,MAAM,EAAE3F,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEG,kBAAkB,EAAE,GAAGC,6BAAAA,EAAAA;AAC/B,IAAA,MAAMK,WAAWiH,qBAAAA,CAAc,aAAA,EAAe,CAACC,CAAAA,GAAMA,EAAElH,QAAQ,CAAA;AAE/D,IAAA,MAAMmH,YAAAA,GAAe,IAAA;QACnBnH,QAAAA,CAAS;YAAEW,IAAAA,EAAM;AAAkB,SAAA,CAAA;QACnCjB,kBAAAA,CAAmB;YACjBiB,IAAAA,EAAM,SAAA;AACNC,YAAAA,OAAAA,EAAStB,aAAAA,CAAc;gBACrB7B,EAAAA,EAAI,0CAAA;gBACJE,cAAAA,EAAgB;AAClB,aAAA;AACF,SAAA,CAAA;AACF,IAAA,CAAA;AAEA,IAAA,qBACEyF,eAAA,CAACtF,KAAAA,EAAAA;QAAMc,UAAAA,EAAW,OAAA;;0BAChBwE,eAAA,CAAC1E,iBAAAA,EAAAA;gBAAKC,SAAAA,EAAU,QAAA;gBAASC,UAAAA,EAAW,OAAA;gBAAQC,GAAAA,EAAK,CAAA;;kCAC/CZ,cAAA,CAACiH,uBAAAA,EAAAA;wBAAWC,OAAAA,EAAQ,OAAA;wBAAQC,GAAAA,EAAI,IAAA;kCAC7B9F,aAAAA,CAAc;4BACb7B,EAAAA,EAAI,qBAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA;;kCAEFM,cAAA,CAACiH,uBAAAA,EAAAA;wBAAWC,OAAAA,EAAQ,IAAA;kCACjB7F,aAAAA,CAAc;4BACb7B,EAAAA,EAAI,2BAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA;;;;0BAGJM,cAAA,CAACmG,mBAAAA,EAAAA;gBAAOe,OAAAA,EAAQ,UAAA;gBAAWiC,OAAAA,EAASD,YAAAA;0BACjC7H,aAAAA,CAAc;oBACb7B,EAAAA,EAAI,qBAAA;oBACJE,cAAAA,EAAgB;AAClB,iBAAA;;;;AAIR,CAAA;;;;"}
@@ -273,7 +273,7 @@ const ProfilePage = ()=>{
273
273
  type: 'password'
274
274
  }
275
275
  ]
276
- ].map((row, index)=>/*#__PURE__*/ jsx(Grid.Root, {
276
+ ].map((row)=>/*#__PURE__*/ jsx(Grid.Root, {
277
277
  gap: 5,
278
278
  children: row.map(({ size, ...field })=>/*#__PURE__*/ jsx(Grid.Item, {
279
279
  xs: 12,
@@ -285,7 +285,7 @@ const ProfilePage = ()=>{
285
285
  ...field
286
286
  })
287
287
  }, field.name))
288
- }, index))
288
+ }, row.map((field)=>field.name).join('.')))
289
289
  ]
290
290
  });
291
291
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ProfilePage.mjs","sources":["../../../../../admin/src/pages/ProfilePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, useNotifyAT, Grid, Typography, FlexProps } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Form, FormHelpers } from '../components/Form';\nimport { InputRenderer } from '../components/FormInputs/Renderer';\nimport { useGuidedTour } from '../components/GuidedTour/Context';\nimport { Layouts } from '../components/Layouts/Layout';\nimport { Page } from '../components/PageHelpers';\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useTracking } from '../features/Tracking';\nimport { useAPIErrorHandler } from '../hooks/useAPIErrorHandler';\nimport { useIsDesktop } from '../hooks/useMediaQuery';\nimport { AppState, setAppTheme } from '../reducer';\nimport { useIsSSOLockedQuery, useUpdateMeMutation } from '../services/auth';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { translatedErrors } from '../utils/translatedErrors';\nimport { getDisplayName } from '../utils/users';\n\nimport { COMMON_USER_SCHEMA } from './Settings/pages/Users/utils/validation';\n\nimport type { UpdateMe } from '../../../shared/contracts/users';\n\nconst PROFILE_VALIDTION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n currentPassword: yup\n .string()\n // @ts-expect-error – no idea why this is failing.\n .when(['password', 'confirmPassword'], (password, confirmPassword, passSchema) => {\n return password || confirmPassword\n ? passSchema\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .nullable()\n : passSchema;\n }),\n preferedLanguage: yup.string().nullable(),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * ProfilePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst Panel = ({ children, ...flexProps }: FlexProps) => {\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4} {...flexProps}>\n {children}\n </Flex>\n </Box>\n );\n};\n\nconst ProfilePage = () => {\n const isDesktop = useIsDesktop();\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const currentTheme = useTypedSelector((state) => state.admin_app.theme.currentTheme);\n const dispatch = useTypedDispatch();\n const {\n _unstableFormatValidationErrors: formatValidationErrors,\n _unstableFormatAPIError: formatApiError,\n } = useAPIErrorHandler();\n\n const user = useAuth('ProfilePage', (state) => state.user);\n\n React.useEffect(() => {\n if (user) {\n notifyStatus(\n formatMessage({\n id: 'Settings.profile.form.notify.data.loaded',\n defaultMessage: 'Your profile data has been loaded',\n })\n );\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }, [formatMessage, notifyStatus, toggleNotification, user]);\n\n const [updateMe, { isLoading: isSubmittingForm }] = useUpdateMeMutation();\n\n const {\n isLoading,\n data: dataSSO,\n error,\n } = useIsSSOLockedQuery(undefined, {\n skip: !(window.strapi.isEE && window.strapi.features.isEnabled('sso')),\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'Settings.permissions.users.sso.provider.error' }),\n });\n }\n }, [error, formatMessage, toggleNotification]);\n\n type UpdateUsersMeBody = UpdateMe.Request['body'] & {\n confirmPassword: string;\n currentTheme: AppState['theme']['currentTheme'];\n };\n\n const handleSubmit = async (\n body: UpdateUsersMeBody,\n { setErrors }: FormHelpers<UpdateUsersMeBody>\n ) => {\n const { confirmPassword: _confirmPassword, currentTheme, ...bodyRest } = body;\n let dataToSend = bodyRest;\n\n // The password fields are optional. If the user didn't touch them, don't send any password\n // to the API, because an empty string would throw a validation error\n if (dataToSend.password === '') {\n const {\n password: _password,\n currentPassword: _currentPassword,\n ...passwordRequestBodyRest\n } = dataToSend;\n dataToSend = passwordRequestBodyRest;\n }\n\n const res = await updateMe(dataToSend);\n\n if ('data' in res) {\n dispatch(setAppTheme(currentTheme));\n\n trackUsage('didChangeMode', { newMode: currentTheme });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n }\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n } else if (isBaseQueryError(res.error)) {\n toggleNotification({\n type: 'danger',\n message: formatApiError(res.error),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n const hasLockedRole = dataSSO?.isSSOLocked ?? false;\n const { email, firstname, lastname, username, preferedLanguage } = user ?? {};\n const initialData = {\n email: email ?? '',\n firstname: firstname ?? '',\n lastname: lastname ?? '',\n username: username ?? '',\n preferedLanguage,\n currentTheme,\n confirmPassword: '',\n password: '',\n };\n\n return (\n <>\n <Page.Main aria-busy={isSubmittingForm}>\n <Page.Title>\n {formatMessage({\n id: 'Settings.profile.form.section.head.title',\n defaultMessage: 'User profile',\n })}\n </Page.Title>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={initialData}\n validationSchema={PROFILE_VALIDTION_SCHEMA}\n >\n {({ isSubmitting, modified }) => (\n <>\n <Layouts.Header\n title={getDisplayName(user)}\n primaryAction={\n <Button\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n disabled={!modified}\n fullWidth\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n <Box paddingBottom={6}>\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <UserInfoSection />\n {!hasLockedRole && <PasswordSection />}\n <PreferencesSection localeNames={localeNames} />\n </Flex>\n </Layouts.Content>\n </Box>\n </>\n )}\n </Form>\n {isDesktop && process.env.NODE_ENV === 'development' && (\n <Box paddingBottom={6}>\n <Layouts.Content>\n <GuidedTourSection />\n </Layouts.Content>\n </Box>\n )}\n </Page.Main>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PasswordSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst PasswordSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.change-password',\n defaultMessage: 'Change password',\n })}\n </Typography>\n {[\n [\n {\n label: formatMessage({\n id: 'Auth.form.currentPassword.label',\n defaultMessage: 'Current Password',\n }),\n name: 'currentPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n [\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n size: 6,\n type: 'password' as const,\n },\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n ].map((row, index) => (\n <Grid.Root key={index} gap={5}>\n {row.map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n ))}\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PreferencesSection\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PreferencesSectionProps {\n localeNames: Record<string, string>;\n}\n\nconst PreferencesSection = ({ localeNames }: PreferencesSectionProps) => {\n const { formatMessage } = useIntl();\n const themesToDisplay = useTypedSelector((state) => state.admin_app.theme.availableThemes);\n\n return (\n <Panel>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'Settings.profile.form.section.experience.title',\n defaultMessage: 'Experience',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'Settings.profile.form.section.experience.interfaceLanguageHelp',\n defaultMessage:\n 'Preference changes will apply only to you. More information is available {here}.',\n },\n {\n here: (\n <Box\n tag=\"a\"\n color=\"primary600\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#locales\"\n >\n {formatMessage({\n id: 'Settings.profile.form.section.experience.here',\n defaultMessage: 'here',\n })}\n </Box>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Grid.Root gap={5}>\n {[\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage.hint',\n defaultMessage: 'This will only display your own interface in the chosen language.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage',\n defaultMessage: 'Interface language',\n }),\n name: 'preferedLanguage',\n options: Object.entries(localeNames).map(([value, label]) => ({\n label,\n value,\n })),\n placeholder: formatMessage({\n id: 'global.select',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.hint',\n defaultMessage: 'Displays your interface in the chosen mode.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.label',\n defaultMessage: 'Interface mode',\n }),\n name: 'currentTheme',\n options: [\n {\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.option-system-label',\n defaultMessage: 'Use system settings',\n }),\n value: 'system',\n },\n ...themesToDisplay.map((theme) => ({\n label: formatMessage(\n {\n id: 'Settings.profile.form.section.experience.mode.option-label',\n defaultMessage: '{name} mode',\n },\n {\n name: formatMessage({\n id: theme,\n defaultMessage: upperFirst(theme),\n }),\n }\n ),\n value: theme,\n })),\n ],\n placeholder: formatMessage({\n id: 'app.components.Select.placeholder',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UserInfoSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst UserInfoSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.profile',\n defaultMessage: 'Profile',\n })}\n </Typography>\n <Grid.Root gap={5}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n }),\n name: 'firstname',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 6,\n type: 'email' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n }),\n name: 'username',\n size: 6,\n type: 'string' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst GuidedTourSection = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const dispatch = useGuidedTour('ProfilePage', (s) => s.dispatch);\n\n const onClickReset = () => {\n dispatch({ type: 'reset_all_tours' });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'tours.profile.notification.success.reset',\n defaultMessage: 'Guided tour reset',\n }),\n });\n };\n\n return (\n <Panel alignItems=\"start\">\n <Flex direction=\"column\" alignItems=\"start\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'tours.profile.title',\n defaultMessage: 'Guided tour',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage({\n id: 'tours.profile.description',\n defaultMessage: 'You can reset the guided tour at any time.',\n })}\n </Typography>\n </Flex>\n <Button variant=\"tertiary\" onClick={onClickReset}>\n {formatMessage({\n id: 'tours.profile.reset',\n defaultMessage: 'Reset guided tour',\n })}\n </Button>\n </Panel>\n );\n};\n\nexport { ProfilePage };\n"],"names":["PROFILE_VALIDTION_SCHEMA","yup","object","shape","COMMON_USER_SCHEMA","currentPassword","string","when","password","confirmPassword","passSchema","required","id","translatedErrors","defaultMessage","nullable","preferedLanguage","Panel","children","flexProps","_jsx","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Flex","direction","alignItems","gap","ProfilePage","isDesktop","useIsDesktop","localeNames","useTypedSelector","state","admin_app","language","formatMessage","useIntl","trackUsage","useTracking","toggleNotification","useNotification","notifyStatus","useNotifyAT","currentTheme","theme","dispatch","useTypedDispatch","_unstableFormatValidationErrors","formatValidationErrors","_unstableFormatAPIError","formatApiError","useAPIErrorHandler","user","useAuth","React","useEffect","type","message","updateMe","isLoading","isSubmittingForm","useUpdateMeMutation","data","dataSSO","error","useIsSSOLockedQuery","undefined","skip","window","strapi","isEE","features","isEnabled","handleSubmit","body","setErrors","_confirmPassword","bodyRest","dataToSend","_password","_currentPassword","passwordRequestBodyRest","res","setAppTheme","newMode","isBaseQueryError","name","Page","Loading","hasLockedRole","isSSOLocked","email","firstname","lastname","username","initialData","_Fragment","_jsxs","Main","aria-busy","Title","Form","method","onSubmit","initialValues","validationSchema","isSubmitting","modified","Layouts","Header","title","getDisplayName","primaryAction","Button","startIcon","Check","loading","disabled","fullWidth","Content","UserInfoSection","PasswordSection","PreferencesSection","process","env","NODE_ENV","GuidedTourSection","Typography","variant","tag","label","size","autoComplete","map","row","index","Grid","Root","field","Item","xs","m","col","InputRenderer","themesToDisplay","availableThemes","here","color","target","rel","href","hint","options","Object","entries","value","placeholder","upperFirst","useGuidedTour","s","onClickReset","onClick"],"mappings":"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"}
1
+ {"version":3,"file":"ProfilePage.mjs","sources":["../../../../../admin/src/pages/ProfilePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, useNotifyAT, Grid, Typography, FlexProps } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Form, FormHelpers } from '../components/Form';\nimport { InputRenderer } from '../components/FormInputs/Renderer';\nimport { useGuidedTour } from '../components/GuidedTour/Context';\nimport { Layouts } from '../components/Layouts/Layout';\nimport { Page } from '../components/PageHelpers';\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useTracking } from '../features/Tracking';\nimport { useAPIErrorHandler } from '../hooks/useAPIErrorHandler';\nimport { useIsDesktop } from '../hooks/useMediaQuery';\nimport { AppState, setAppTheme } from '../reducer';\nimport { useIsSSOLockedQuery, useUpdateMeMutation } from '../services/auth';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { translatedErrors } from '../utils/translatedErrors';\nimport { getDisplayName } from '../utils/users';\n\nimport { COMMON_USER_SCHEMA } from './Settings/pages/Users/utils/validation';\n\nimport type { UpdateMe } from '../../../shared/contracts/users';\n\nconst PROFILE_VALIDTION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n currentPassword: yup\n .string()\n // @ts-expect-error – no idea why this is failing.\n .when(['password', 'confirmPassword'], (password, confirmPassword, passSchema) => {\n return password || confirmPassword\n ? passSchema\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .nullable()\n : passSchema;\n }),\n preferedLanguage: yup.string().nullable(),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * ProfilePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst Panel = ({ children, ...flexProps }: FlexProps) => {\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4} {...flexProps}>\n {children}\n </Flex>\n </Box>\n );\n};\n\nconst ProfilePage = () => {\n const isDesktop = useIsDesktop();\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const currentTheme = useTypedSelector((state) => state.admin_app.theme.currentTheme);\n const dispatch = useTypedDispatch();\n const {\n _unstableFormatValidationErrors: formatValidationErrors,\n _unstableFormatAPIError: formatApiError,\n } = useAPIErrorHandler();\n\n const user = useAuth('ProfilePage', (state) => state.user);\n\n React.useEffect(() => {\n if (user) {\n notifyStatus(\n formatMessage({\n id: 'Settings.profile.form.notify.data.loaded',\n defaultMessage: 'Your profile data has been loaded',\n })\n );\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }, [formatMessage, notifyStatus, toggleNotification, user]);\n\n const [updateMe, { isLoading: isSubmittingForm }] = useUpdateMeMutation();\n\n const {\n isLoading,\n data: dataSSO,\n error,\n } = useIsSSOLockedQuery(undefined, {\n skip: !(window.strapi.isEE && window.strapi.features.isEnabled('sso')),\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'Settings.permissions.users.sso.provider.error' }),\n });\n }\n }, [error, formatMessage, toggleNotification]);\n\n type UpdateUsersMeBody = UpdateMe.Request['body'] & {\n confirmPassword: string;\n currentTheme: AppState['theme']['currentTheme'];\n };\n\n const handleSubmit = async (\n body: UpdateUsersMeBody,\n { setErrors }: FormHelpers<UpdateUsersMeBody>\n ) => {\n const { confirmPassword: _confirmPassword, currentTheme, ...bodyRest } = body;\n let dataToSend = bodyRest;\n\n // The password fields are optional. If the user didn't touch them, don't send any password\n // to the API, because an empty string would throw a validation error\n if (dataToSend.password === '') {\n const {\n password: _password,\n currentPassword: _currentPassword,\n ...passwordRequestBodyRest\n } = dataToSend;\n dataToSend = passwordRequestBodyRest;\n }\n\n const res = await updateMe(dataToSend);\n\n if ('data' in res) {\n dispatch(setAppTheme(currentTheme));\n\n trackUsage('didChangeMode', { newMode: currentTheme });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n }\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n } else if (isBaseQueryError(res.error)) {\n toggleNotification({\n type: 'danger',\n message: formatApiError(res.error),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n const hasLockedRole = dataSSO?.isSSOLocked ?? false;\n const { email, firstname, lastname, username, preferedLanguage } = user ?? {};\n const initialData = {\n email: email ?? '',\n firstname: firstname ?? '',\n lastname: lastname ?? '',\n username: username ?? '',\n preferedLanguage,\n currentTheme,\n confirmPassword: '',\n password: '',\n };\n\n return (\n <>\n <Page.Main aria-busy={isSubmittingForm}>\n <Page.Title>\n {formatMessage({\n id: 'Settings.profile.form.section.head.title',\n defaultMessage: 'User profile',\n })}\n </Page.Title>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={initialData}\n validationSchema={PROFILE_VALIDTION_SCHEMA}\n >\n {({ isSubmitting, modified }) => (\n <>\n <Layouts.Header\n title={getDisplayName(user)}\n primaryAction={\n <Button\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n disabled={!modified}\n fullWidth\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n <Box paddingBottom={6}>\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <UserInfoSection />\n {!hasLockedRole && <PasswordSection />}\n <PreferencesSection localeNames={localeNames} />\n </Flex>\n </Layouts.Content>\n </Box>\n </>\n )}\n </Form>\n {isDesktop && process.env.NODE_ENV === 'development' && (\n <Box paddingBottom={6}>\n <Layouts.Content>\n <GuidedTourSection />\n </Layouts.Content>\n </Box>\n )}\n </Page.Main>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PasswordSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst PasswordSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.change-password',\n defaultMessage: 'Change password',\n })}\n </Typography>\n {[\n [\n {\n label: formatMessage({\n id: 'Auth.form.currentPassword.label',\n defaultMessage: 'Current Password',\n }),\n name: 'currentPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n [\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n size: 6,\n type: 'password' as const,\n },\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n ].map((row) => (\n <Grid.Root key={row.map((field) => field.name).join('.')} gap={5}>\n {row.map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n ))}\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PreferencesSection\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PreferencesSectionProps {\n localeNames: Record<string, string>;\n}\n\nconst PreferencesSection = ({ localeNames }: PreferencesSectionProps) => {\n const { formatMessage } = useIntl();\n const themesToDisplay = useTypedSelector((state) => state.admin_app.theme.availableThemes);\n\n return (\n <Panel>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'Settings.profile.form.section.experience.title',\n defaultMessage: 'Experience',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'Settings.profile.form.section.experience.interfaceLanguageHelp',\n defaultMessage:\n 'Preference changes will apply only to you. More information is available {here}.',\n },\n {\n here: (\n <Box\n tag=\"a\"\n color=\"primary600\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#locales\"\n >\n {formatMessage({\n id: 'Settings.profile.form.section.experience.here',\n defaultMessage: 'here',\n })}\n </Box>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Grid.Root gap={5}>\n {[\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage.hint',\n defaultMessage: 'This will only display your own interface in the chosen language.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage',\n defaultMessage: 'Interface language',\n }),\n name: 'preferedLanguage',\n options: Object.entries(localeNames).map(([value, label]) => ({\n label,\n value,\n })),\n placeholder: formatMessage({\n id: 'global.select',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.hint',\n defaultMessage: 'Displays your interface in the chosen mode.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.label',\n defaultMessage: 'Interface mode',\n }),\n name: 'currentTheme',\n options: [\n {\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.option-system-label',\n defaultMessage: 'Use system settings',\n }),\n value: 'system',\n },\n ...themesToDisplay.map((theme) => ({\n label: formatMessage(\n {\n id: 'Settings.profile.form.section.experience.mode.option-label',\n defaultMessage: '{name} mode',\n },\n {\n name: formatMessage({\n id: theme,\n defaultMessage: upperFirst(theme),\n }),\n }\n ),\n value: theme,\n })),\n ],\n placeholder: formatMessage({\n id: 'app.components.Select.placeholder',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UserInfoSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst UserInfoSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.profile',\n defaultMessage: 'Profile',\n })}\n </Typography>\n <Grid.Root gap={5}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n }),\n name: 'firstname',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 6,\n type: 'email' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n }),\n name: 'username',\n size: 6,\n type: 'string' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst GuidedTourSection = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const dispatch = useGuidedTour('ProfilePage', (s) => s.dispatch);\n\n const onClickReset = () => {\n dispatch({ type: 'reset_all_tours' });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'tours.profile.notification.success.reset',\n defaultMessage: 'Guided tour reset',\n }),\n });\n };\n\n return (\n <Panel alignItems=\"start\">\n <Flex direction=\"column\" alignItems=\"start\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'tours.profile.title',\n defaultMessage: 'Guided tour',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage({\n id: 'tours.profile.description',\n defaultMessage: 'You can reset the guided tour at any time.',\n })}\n </Typography>\n </Flex>\n <Button variant=\"tertiary\" onClick={onClickReset}>\n {formatMessage({\n id: 'tours.profile.reset',\n defaultMessage: 'Reset guided tour',\n })}\n </Button>\n </Panel>\n );\n};\n\nexport { ProfilePage };\n"],"names":["PROFILE_VALIDTION_SCHEMA","yup","object","shape","COMMON_USER_SCHEMA","currentPassword","string","when","password","confirmPassword","passSchema","required","id","translatedErrors","defaultMessage","nullable","preferedLanguage","Panel","children","flexProps","_jsx","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Flex","direction","alignItems","gap","ProfilePage","isDesktop","useIsDesktop","localeNames","useTypedSelector","state","admin_app","language","formatMessage","useIntl","trackUsage","useTracking","toggleNotification","useNotification","notifyStatus","useNotifyAT","currentTheme","theme","dispatch","useTypedDispatch","_unstableFormatValidationErrors","formatValidationErrors","_unstableFormatAPIError","formatApiError","useAPIErrorHandler","user","useAuth","React","useEffect","type","message","updateMe","isLoading","isSubmittingForm","useUpdateMeMutation","data","dataSSO","error","useIsSSOLockedQuery","undefined","skip","window","strapi","isEE","features","isEnabled","handleSubmit","body","setErrors","_confirmPassword","bodyRest","dataToSend","_password","_currentPassword","passwordRequestBodyRest","res","setAppTheme","newMode","isBaseQueryError","name","Page","Loading","hasLockedRole","isSSOLocked","email","firstname","lastname","username","initialData","_Fragment","_jsxs","Main","aria-busy","Title","Form","method","onSubmit","initialValues","validationSchema","isSubmitting","modified","Layouts","Header","title","getDisplayName","primaryAction","Button","startIcon","Check","loading","disabled","fullWidth","Content","UserInfoSection","PasswordSection","PreferencesSection","process","env","NODE_ENV","GuidedTourSection","Typography","variant","tag","label","size","autoComplete","map","row","Grid","Root","field","Item","xs","m","col","InputRenderer","join","themesToDisplay","availableThemes","here","color","target","rel","href","hint","options","Object","entries","value","placeholder","upperFirst","useGuidedTour","s","onClickReset","onClick"],"mappings":"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"}
@@ -22,13 +22,21 @@ const SettingsNav = ({ isFullPage = false })=>{
22
22
  const { trackUsage } = Tracking.useTracking();
23
23
  const { pathname } = reactRouterDom.useLocation();
24
24
  const { license } = useLicenseLimits.useLicenseLimits();
25
- const availableFeatureNames = license?.features.map((feature)=>feature.name);
25
+ // The live license's features, plus what a lapsed license granted: the same availability the
26
+ // Plan card shows, kept until the license key or file is removed.
27
+ const availableFeatureNames = [
28
+ ...(license?.features ?? []).map((feature)=>feature.name),
29
+ ...(license?.planEntitlements ?? []).filter((entitlement)=>entitlement.available).map((entitlement)=>entitlement.feature)
30
+ ];
26
31
  const linksIdsToLicenseFeaturesNames = {
27
32
  'content-releases': 'cms-content-releases',
28
33
  'review-workflows': 'review-workflows',
29
34
  sso: 'sso',
30
35
  auditLogs: 'audit-logs',
31
- 'auditLogs-purchase-page': 'audit-logs'
36
+ 'auditLogs-purchase-page': 'audit-logs',
37
+ // A lapsed license renders these as purchase links, under their own ids
38
+ 'sso-purchase-page': 'sso',
39
+ 'content-history-purchase-page': 'cms-content-history'
32
40
  };
33
41
  const filteredMenu = menu.filter((section)=>!section.links.every((link)=>link.isDisplayed === false));
34
42
  const sections = filteredMenu.map((section)=>{
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsNav.js","sources":["../../../../../../../admin/src/pages/Settings/components/SettingsNav.tsx"],"sourcesContent":["import { Badge, Divider } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport { SubNav } from '../../../components/SubNav';\nimport { useTracking } from '../../../features/Tracking';\nimport { useSettingsMenu } from '../../../hooks/useSettingsMenu';\n\ntype LinkId =\n | 'content-releases'\n | 'review-workflows'\n | 'sso'\n | 'auditLogs'\n | 'auditLogs-purchase-page';\n\ntype FeatureName = 'cms-content-releases' | 'review-workflows' | 'sso' | 'audit-logs';\n\nconst StyledBadge = styled(Badge)`\n border-radius: 50%;\n padding: ${({ theme }) => theme.spaces[2]};\n height: 2rem;\n`;\n\nconst SettingsNav = ({ isFullPage = false }: { isFullPage?: boolean }) => {\n const { menu } = useSettingsMenu();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const { license } = useLicenseLimits();\n\n const availableFeatureNames = license?.features.map((feature) => feature.name);\n\n const linksIdsToLicenseFeaturesNames: Record<LinkId, FeatureName> = {\n 'content-releases': 'cms-content-releases',\n 'review-workflows': 'review-workflows',\n sso: 'sso',\n auditLogs: 'audit-logs',\n 'auditLogs-purchase-page': 'audit-logs',\n };\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n id: link.id as LinkId,\n title: link.intlLabel,\n name: link.id,\n to: link.to.startsWith('/') ? link.to : `/settings/${link.to}`,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav.Main aria-label={label}>\n {!isFullPage && (\n <>\n <SubNav.Header label={label} />\n <Divider />\n </>\n )}\n <SubNav.Content>\n {isFullPage && (\n <>\n <SubNav.Header label={label} />\n <Divider />\n </>\n )}\n <SubNav.Sections>\n {sections.map((section) => (\n <SubNav.Section key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <SubNav.Link\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n label={formatMessage(link.intlLabel)}\n endAction={\n <>\n {link?.licenseOnly && (\n <Lightning\n fill={\n (availableFeatureNames || []).includes(\n linksIdsToLicenseFeaturesNames[link.id]\n )\n ? 'primary600'\n : 'neutral300'\n }\n width=\"1.5rem\"\n height=\"1.5rem\"\n />\n )}\n {link?.hasNotification && (\n <StyledBadge\n aria-label=\"Notification\"\n backgroundColor=\"primary600\"\n textColor=\"neutral0\"\n >\n 1\n </StyledBadge>\n )}\n </>\n }\n >\n {formatMessage(link.intlLabel)}\n </SubNav.Link>\n );\n })}\n </SubNav.Section>\n ))}\n </SubNav.Sections>\n </SubNav.Content>\n </SubNav.Main>\n );\n};\n\nexport { SettingsNav };\n"],"names":["StyledBadge","styled","Badge","theme","spaces","SettingsNav","isFullPage","menu","useSettingsMenu","formatMessage","useIntl","trackUsage","useTracking","pathname","useLocation","license","useLicenseLimits","availableFeatureNames","features","map","feature","name","linksIdsToLicenseFeaturesNames","sso","auditLogs","filteredMenu","filter","section","links","every","link","isDisplayed","sections","title","intlLabel","id","to","startsWith","label","defaultMessage","handleClickOnLink","destination","from","_jsxs","SubNav","Main","aria-label","_Fragment","_jsx","Header","Divider","Content","Sections","Section","Link","onClick","endAction","licenseOnly","Lightning","fill","includes","width","height","hasNotification","backgroundColor","textColor"],"mappings":"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"}
1
+ {"version":3,"file":"SettingsNav.js","sources":["../../../../../../../admin/src/pages/Settings/components/SettingsNav.tsx"],"sourcesContent":["import { Badge, Divider } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport { SubNav } from '../../../components/SubNav';\nimport { useTracking } from '../../../features/Tracking';\nimport { useSettingsMenu } from '../../../hooks/useSettingsMenu';\n\ntype LinkId =\n | 'content-releases'\n | 'review-workflows'\n | 'sso'\n | 'auditLogs'\n | 'auditLogs-purchase-page'\n | 'sso-purchase-page'\n | 'content-history-purchase-page';\n\ntype FeatureName =\n 'cms-content-releases' | 'review-workflows' | 'sso' | 'audit-logs' | 'cms-content-history';\n\nconst StyledBadge = styled(Badge)`\n border-radius: 50%;\n padding: ${({ theme }) => theme.spaces[2]};\n height: 2rem;\n`;\n\nconst SettingsNav = ({ isFullPage = false }: { isFullPage?: boolean }) => {\n const { menu } = useSettingsMenu();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const { license } = useLicenseLimits();\n\n // The live license's features, plus what a lapsed license granted: the same availability the\n // Plan card shows, kept until the license key or file is removed.\n const availableFeatureNames = [\n ...(license?.features ?? []).map((feature) => feature.name),\n ...(license?.planEntitlements ?? [])\n .filter((entitlement) => entitlement.available)\n .map((entitlement) => entitlement.feature),\n ];\n\n const linksIdsToLicenseFeaturesNames: Record<LinkId, FeatureName> = {\n 'content-releases': 'cms-content-releases',\n 'review-workflows': 'review-workflows',\n sso: 'sso',\n auditLogs: 'audit-logs',\n 'auditLogs-purchase-page': 'audit-logs',\n // A lapsed license renders these as purchase links, under their own ids\n 'sso-purchase-page': 'sso',\n 'content-history-purchase-page': 'cms-content-history',\n };\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n id: link.id as LinkId,\n title: link.intlLabel,\n name: link.id,\n to: link.to.startsWith('/') ? link.to : `/settings/${link.to}`,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav.Main aria-label={label}>\n {!isFullPage && (\n <>\n <SubNav.Header label={label} />\n <Divider />\n </>\n )}\n <SubNav.Content>\n {isFullPage && (\n <>\n <SubNav.Header label={label} />\n <Divider />\n </>\n )}\n <SubNav.Sections>\n {sections.map((section) => (\n <SubNav.Section key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <SubNav.Link\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n label={formatMessage(link.intlLabel)}\n endAction={\n <>\n {link?.licenseOnly && (\n <Lightning\n fill={\n (availableFeatureNames || []).includes(\n linksIdsToLicenseFeaturesNames[link.id]\n )\n ? 'primary600'\n : 'neutral300'\n }\n width=\"1.5rem\"\n height=\"1.5rem\"\n />\n )}\n {link?.hasNotification && (\n <StyledBadge\n aria-label=\"Notification\"\n backgroundColor=\"primary600\"\n textColor=\"neutral0\"\n >\n 1\n </StyledBadge>\n )}\n </>\n }\n >\n {formatMessage(link.intlLabel)}\n </SubNav.Link>\n );\n })}\n </SubNav.Section>\n ))}\n </SubNav.Sections>\n </SubNav.Content>\n </SubNav.Main>\n );\n};\n\nexport { SettingsNav };\n"],"names":["StyledBadge","styled","Badge","theme","spaces","SettingsNav","isFullPage","menu","useSettingsMenu","formatMessage","useIntl","trackUsage","useTracking","pathname","useLocation","license","useLicenseLimits","availableFeatureNames","features","map","feature","name","planEntitlements","filter","entitlement","available","linksIdsToLicenseFeaturesNames","sso","auditLogs","filteredMenu","section","links","every","link","isDisplayed","sections","title","intlLabel","id","to","startsWith","label","defaultMessage","handleClickOnLink","destination","from","_jsxs","SubNav","Main","aria-label","_Fragment","_jsx","Header","Divider","Content","Sections","Section","Link","onClick","endAction","licenseOnly","Lightning","fill","includes","width","height","hasNotification","backgroundColor","textColor"],"mappings":"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"}
@@ -20,13 +20,21 @@ const SettingsNav = ({ isFullPage = false })=>{
20
20
  const { trackUsage } = useTracking();
21
21
  const { pathname } = useLocation();
22
22
  const { license } = useLicenseLimits();
23
- const availableFeatureNames = license?.features.map((feature)=>feature.name);
23
+ // The live license's features, plus what a lapsed license granted: the same availability the
24
+ // Plan card shows, kept until the license key or file is removed.
25
+ const availableFeatureNames = [
26
+ ...(license?.features ?? []).map((feature)=>feature.name),
27
+ ...(license?.planEntitlements ?? []).filter((entitlement)=>entitlement.available).map((entitlement)=>entitlement.feature)
28
+ ];
24
29
  const linksIdsToLicenseFeaturesNames = {
25
30
  'content-releases': 'cms-content-releases',
26
31
  'review-workflows': 'review-workflows',
27
32
  sso: 'sso',
28
33
  auditLogs: 'audit-logs',
29
- 'auditLogs-purchase-page': 'audit-logs'
34
+ 'auditLogs-purchase-page': 'audit-logs',
35
+ // A lapsed license renders these as purchase links, under their own ids
36
+ 'sso-purchase-page': 'sso',
37
+ 'content-history-purchase-page': 'cms-content-history'
30
38
  };
31
39
  const filteredMenu = menu.filter((section)=>!section.links.every((link)=>link.isDisplayed === false));
32
40
  const sections = filteredMenu.map((section)=>{
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsNav.mjs","sources":["../../../../../../../admin/src/pages/Settings/components/SettingsNav.tsx"],"sourcesContent":["import { Badge, Divider } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport { SubNav } from '../../../components/SubNav';\nimport { useTracking } from '../../../features/Tracking';\nimport { useSettingsMenu } from '../../../hooks/useSettingsMenu';\n\ntype LinkId =\n | 'content-releases'\n | 'review-workflows'\n | 'sso'\n | 'auditLogs'\n | 'auditLogs-purchase-page';\n\ntype FeatureName = 'cms-content-releases' | 'review-workflows' | 'sso' | 'audit-logs';\n\nconst StyledBadge = styled(Badge)`\n border-radius: 50%;\n padding: ${({ theme }) => theme.spaces[2]};\n height: 2rem;\n`;\n\nconst SettingsNav = ({ isFullPage = false }: { isFullPage?: boolean }) => {\n const { menu } = useSettingsMenu();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const { license } = useLicenseLimits();\n\n const availableFeatureNames = license?.features.map((feature) => feature.name);\n\n const linksIdsToLicenseFeaturesNames: Record<LinkId, FeatureName> = {\n 'content-releases': 'cms-content-releases',\n 'review-workflows': 'review-workflows',\n sso: 'sso',\n auditLogs: 'audit-logs',\n 'auditLogs-purchase-page': 'audit-logs',\n };\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n id: link.id as LinkId,\n title: link.intlLabel,\n name: link.id,\n to: link.to.startsWith('/') ? link.to : `/settings/${link.to}`,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav.Main aria-label={label}>\n {!isFullPage && (\n <>\n <SubNav.Header label={label} />\n <Divider />\n </>\n )}\n <SubNav.Content>\n {isFullPage && (\n <>\n <SubNav.Header label={label} />\n <Divider />\n </>\n )}\n <SubNav.Sections>\n {sections.map((section) => (\n <SubNav.Section key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <SubNav.Link\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n label={formatMessage(link.intlLabel)}\n endAction={\n <>\n {link?.licenseOnly && (\n <Lightning\n fill={\n (availableFeatureNames || []).includes(\n linksIdsToLicenseFeaturesNames[link.id]\n )\n ? 'primary600'\n : 'neutral300'\n }\n width=\"1.5rem\"\n height=\"1.5rem\"\n />\n )}\n {link?.hasNotification && (\n <StyledBadge\n aria-label=\"Notification\"\n backgroundColor=\"primary600\"\n textColor=\"neutral0\"\n >\n 1\n </StyledBadge>\n )}\n </>\n }\n >\n {formatMessage(link.intlLabel)}\n </SubNav.Link>\n );\n })}\n </SubNav.Section>\n ))}\n </SubNav.Sections>\n </SubNav.Content>\n </SubNav.Main>\n );\n};\n\nexport { SettingsNav };\n"],"names":["StyledBadge","styled","Badge","theme","spaces","SettingsNav","isFullPage","menu","useSettingsMenu","formatMessage","useIntl","trackUsage","useTracking","pathname","useLocation","license","useLicenseLimits","availableFeatureNames","features","map","feature","name","linksIdsToLicenseFeaturesNames","sso","auditLogs","filteredMenu","filter","section","links","every","link","isDisplayed","sections","title","intlLabel","id","to","startsWith","label","defaultMessage","handleClickOnLink","destination","from","_jsxs","SubNav","Main","aria-label","_Fragment","_jsx","Header","Divider","Content","Sections","Section","Link","onClick","endAction","licenseOnly","Lightning","fill","includes","width","height","hasNotification","backgroundColor","textColor"],"mappings":"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"}
1
+ {"version":3,"file":"SettingsNav.mjs","sources":["../../../../../../../admin/src/pages/Settings/components/SettingsNav.tsx"],"sourcesContent":["import { Badge, Divider } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport { SubNav } from '../../../components/SubNav';\nimport { useTracking } from '../../../features/Tracking';\nimport { useSettingsMenu } from '../../../hooks/useSettingsMenu';\n\ntype LinkId =\n | 'content-releases'\n | 'review-workflows'\n | 'sso'\n | 'auditLogs'\n | 'auditLogs-purchase-page'\n | 'sso-purchase-page'\n | 'content-history-purchase-page';\n\ntype FeatureName =\n 'cms-content-releases' | 'review-workflows' | 'sso' | 'audit-logs' | 'cms-content-history';\n\nconst StyledBadge = styled(Badge)`\n border-radius: 50%;\n padding: ${({ theme }) => theme.spaces[2]};\n height: 2rem;\n`;\n\nconst SettingsNav = ({ isFullPage = false }: { isFullPage?: boolean }) => {\n const { menu } = useSettingsMenu();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const { license } = useLicenseLimits();\n\n // The live license's features, plus what a lapsed license granted: the same availability the\n // Plan card shows, kept until the license key or file is removed.\n const availableFeatureNames = [\n ...(license?.features ?? []).map((feature) => feature.name),\n ...(license?.planEntitlements ?? [])\n .filter((entitlement) => entitlement.available)\n .map((entitlement) => entitlement.feature),\n ];\n\n const linksIdsToLicenseFeaturesNames: Record<LinkId, FeatureName> = {\n 'content-releases': 'cms-content-releases',\n 'review-workflows': 'review-workflows',\n sso: 'sso',\n auditLogs: 'audit-logs',\n 'auditLogs-purchase-page': 'audit-logs',\n // A lapsed license renders these as purchase links, under their own ids\n 'sso-purchase-page': 'sso',\n 'content-history-purchase-page': 'cms-content-history',\n };\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n id: link.id as LinkId,\n title: link.intlLabel,\n name: link.id,\n to: link.to.startsWith('/') ? link.to : `/settings/${link.to}`,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav.Main aria-label={label}>\n {!isFullPage && (\n <>\n <SubNav.Header label={label} />\n <Divider />\n </>\n )}\n <SubNav.Content>\n {isFullPage && (\n <>\n <SubNav.Header label={label} />\n <Divider />\n </>\n )}\n <SubNav.Sections>\n {sections.map((section) => (\n <SubNav.Section key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <SubNav.Link\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n label={formatMessage(link.intlLabel)}\n endAction={\n <>\n {link?.licenseOnly && (\n <Lightning\n fill={\n (availableFeatureNames || []).includes(\n linksIdsToLicenseFeaturesNames[link.id]\n )\n ? 'primary600'\n : 'neutral300'\n }\n width=\"1.5rem\"\n height=\"1.5rem\"\n />\n )}\n {link?.hasNotification && (\n <StyledBadge\n aria-label=\"Notification\"\n backgroundColor=\"primary600\"\n textColor=\"neutral0\"\n >\n 1\n </StyledBadge>\n )}\n </>\n }\n >\n {formatMessage(link.intlLabel)}\n </SubNav.Link>\n );\n })}\n </SubNav.Section>\n ))}\n </SubNav.Sections>\n </SubNav.Content>\n </SubNav.Main>\n );\n};\n\nexport { SettingsNav };\n"],"names":["StyledBadge","styled","Badge","theme","spaces","SettingsNav","isFullPage","menu","useSettingsMenu","formatMessage","useIntl","trackUsage","useTracking","pathname","useLocation","license","useLicenseLimits","availableFeatureNames","features","map","feature","name","planEntitlements","filter","entitlement","available","linksIdsToLicenseFeaturesNames","sso","auditLogs","filteredMenu","section","links","every","link","isDisplayed","sections","title","intlLabel","id","to","startsWith","label","defaultMessage","handleClickOnLink","destination","from","_jsxs","SubNav","Main","aria-label","_Fragment","_jsx","Header","Divider","Content","Sections","Section","Link","onClick","endAction","licenseOnly","Lightning","fill","includes","width","height","hasNotification","backgroundColor","textColor"],"mappings":"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"}
@@ -10,6 +10,9 @@ var TokenDescription = require('./TokenDescription.js');
10
10
  var TokenName = require('./TokenName.js');
11
11
  var TokenTypeSelect = require('./TokenTypeSelect.js');
12
12
 
13
+ const EMPTY_ERRORS = {};
14
+ const EMPTY_VALUES = {};
15
+ const EMPTY_API_TOKEN = {};
13
16
  const formatAdminUserName = (owner)=>{
14
17
  const full = [
15
18
  owner.firstname,
@@ -17,7 +20,7 @@ const formatAdminUserName = (owner)=>{
17
20
  ].filter(Boolean).join(' ');
18
21
  return full || owner.username || owner.email || '';
19
22
  };
20
- const FormApiTokenContainer = ({ errors = {}, onChange, canEditInputs, isCreating, values = {}, apiToken = {}, kind, onDispatch, setHasChangedPermissions })=>{
23
+ const FormApiTokenContainer = ({ errors = EMPTY_ERRORS, onChange, canEditInputs, isCreating, values = EMPTY_VALUES, apiToken = EMPTY_API_TOKEN, kind, onDispatch, setHasChangedPermissions })=>{
21
24
  const { formatMessage } = reactIntl.useIntl();
22
25
  const currentUser = Auth.useAuth('FormApiTokenContainer', (state)=>state.user);
23
26
  const ownerToDisplay = (()=>{