@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":"ApplicationInfoPage.mjs","sources":["../../../../../../../../admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Link, Typography } from '@strapi/design-system';\nimport { Check, ExternalLink } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useAppInfo } from '../../../../features/AppInfo';\nimport { useConfiguration } from '../../../../features/Configuration';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\n\nimport { LogoInput, LogoInputProps } from './components/LogoInput';\nimport { DIMENSION, SIZE } from './utils/constants';\n\nconst AdminSeatInfoCE = () => null;\nconst AIUageDataCE = () => null;\n\n/* -------------------------------------------------------------------------------------------------\n * ApplicationInfoPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ApplicationInfoPage = () => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { logos: serverLogos, updateProjectSettings } = useConfiguration('ApplicationInfoPage');\n const [logos, setLogos] = React.useState({ menu: serverLogos.menu, auth: serverLogos.auth });\n const { settings } = useSelector(selectAdminPermissions);\n\n const latestStrapiReleaseTag = useAppInfo(\n 'ApplicationInfoPage',\n (state) => state.latestStrapiReleaseTag\n );\n const nodeVersion = useAppInfo('ApplicationInfoPage', (state) => state.nodeVersion);\n const shouldUpdateStrapi = useAppInfo('ApplicationInfoPage', (state) => state.shouldUpdateStrapi);\n const strapiVersion = useAppInfo('ApplicationInfoPage', (state) => state.strapiVersion);\n\n const AdminSeatInfo = useEnterprise(\n AdminSeatInfoCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo'\n )\n ).AdminSeatInfoEE\n );\n const isAiEnabled = window.strapi.ai?.enabled !== false;\n const AIUsageData = useEnterprise(\n AIUageDataCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage'\n )\n ).AIUsage,\n {\n enabled: isAiEnabled,\n }\n );\n\n const {\n allowedActions: { canRead, canUpdate },\n } = useRBAC(settings ? settings['project-settings'] : {});\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = (e) => {\n e.preventDefault();\n\n updateProjectSettings({\n authLogo: logos.auth.custom ?? null,\n menuLogo: logos.menu.custom ?? null,\n });\n };\n\n const handleChangeLogo =\n (logo: 'menu' | 'auth'): LogoInputProps['onChangeLogo'] =>\n (newLogo) => {\n /**\n * If there's no newLogo value we can assume we're reseting.\n */\n if (newLogo === null) {\n trackUsage('didClickResetLogo', {\n logo,\n });\n }\n\n setLogos((prev) => ({\n ...prev,\n [logo]: {\n ...prev[logo],\n custom: newLogo,\n },\n }));\n };\n\n React.useEffect(() => {\n setLogos({\n menu: serverLogos.menu,\n auth: serverLogos.auth,\n });\n }, [serverLogos]);\n\n // block rendering until the EE component is fully loaded\n if (!AdminSeatInfo) {\n return null;\n }\n\n if (!AIUsageData) {\n return null;\n }\n\n const isSaveDisabled =\n logos.auth.custom === serverLogos.auth.custom && logos.menu.custom === serverLogos.menu.custom;\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: formatMessage({\n id: 'Settings.application.header',\n defaultMessage: 'Application',\n }),\n }\n )}\n </Page.Title>\n <Page.Main>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n title={formatMessage({\n id: 'Settings.application.title',\n defaultMessage: 'Overview',\n })}\n subtitle={formatMessage({\n id: 'Settings.application.description',\n defaultMessage: 'Administration panel’s global information',\n })}\n primaryAction={\n canUpdate && (\n <Button disabled={isSaveDisabled} type=\"submit\" startIcon={<Check />} fullWidth>\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n )\n }\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingRight={7}\n paddingLeft={7}\n >\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n\n <Grid.Root gap={5} tag=\"dl\">\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"sigma\" textColor=\"neutral600\" tag=\"dt\">\n {formatMessage({\n id: 'Settings.application.strapiVersion',\n defaultMessage: 'strapi version',\n })}\n </Typography>\n <Flex gap={3} direction=\"column\" alignItems=\"start\" tag=\"dd\">\n <Typography>v{strapiVersion}</Typography>\n {shouldUpdateStrapi && (\n <Link\n href={`https://github.com/strapi/strapi/releases/tag/${latestStrapiReleaseTag}`}\n endIcon={<ExternalLink />}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {formatMessage({\n id: 'Settings.application.link-upgrade',\n defaultMessage: 'Upgrade your admin panel',\n })}\n </Link>\n )}\n </Flex>\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"sigma\" textColor=\"neutral600\" tag=\"dt\">\n {formatMessage({\n id: 'Settings.application.plan-title',\n defaultMessage: 'current plan',\n })}\n </Typography>\n <Flex gap={3} direction=\"column\" alignItems=\"start\" tag=\"dd\">\n <Typography>{window.strapi.projectType}</Typography>\n <Link\n href=\"https://strapi.io/pricing-self-hosted\"\n endIcon={<ExternalLink />}\n target=\"_blank\"\n >\n {formatMessage({\n id: 'Settings.application.link-pricing',\n defaultMessage: 'See all pricing plans',\n })}\n </Link>\n </Flex>\n </Grid.Item>\n\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"sigma\" textColor=\"neutral600\" tag=\"dt\">\n {formatMessage({\n id: 'Settings.application.node-version',\n defaultMessage: 'node version',\n })}\n </Typography>\n <Typography tag=\"dd\">{nodeVersion}</Typography>\n </Grid.Item>\n <AdminSeatInfo />\n <AIUsageData />\n </Grid.Root>\n </Flex>\n {canRead && (\n <Box\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingRight={7}\n paddingLeft={7}\n >\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'Settings.application.customization',\n defaultMessage: 'Customization',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.application.customization.size-details',\n defaultMessage:\n 'Max dimension: {dimension}×{dimension}, Max file size: {size}KB',\n },\n { dimension: DIMENSION, size: SIZE }\n )}\n </Typography>\n <Grid.Root paddingTop={4} gap={4}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <LogoInput\n canUpdate={canUpdate}\n customLogo={logos.menu.custom}\n defaultLogo={logos.menu.default}\n hint={formatMessage({\n id: 'Settings.application.customization.menu-logo.carousel-hint',\n defaultMessage: 'Replace the logo in the main navigation',\n })}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.menu-logo.title',\n defaultMessage: 'Menu logo',\n })}\n onChangeLogo={handleChangeLogo('menu')}\n />\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <LogoInput\n canUpdate={canUpdate}\n customLogo={logos.auth.custom}\n defaultLogo={logos.auth.default}\n hint={formatMessage({\n id: 'Settings.application.customization.auth-logo.carousel-hint',\n defaultMessage: 'Replace the logo in the authentication pages',\n })}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.auth-logo.title',\n defaultMessage: 'Auth logo',\n })}\n onChangeLogo={handleChangeLogo('auth')}\n />\n </Grid.Item>\n </Grid.Root>\n </Box>\n )}\n </Flex>\n </Layouts.Content>\n </form>\n </Page.Main>\n </>\n );\n};\n\nexport { ApplicationInfoPage };\n"],"names":["AdminSeatInfoCE","AIUageDataCE","ApplicationInfoPage","trackUsage","useTracking","formatMessage","useIntl","logos","serverLogos","updateProjectSettings","useConfiguration","setLogos","React","useState","menu","auth","settings","useSelector","selectAdminPermissions","latestStrapiReleaseTag","useAppInfo","state","nodeVersion","shouldUpdateStrapi","strapiVersion","AdminSeatInfo","useEnterprise","AdminSeatInfoEE","isAiEnabled","window","strapi","ai","enabled","AIUsageData","AIUsage","allowedActions","canRead","canUpdate","useRBAC","handleSubmit","e","preventDefault","authLogo","custom","menuLogo","handleChangeLogo","logo","newLogo","prev","useEffect","isSaveDisabled","_jsxs","_Fragment","_jsx","Page","Title","id","defaultMessage","name","Main","form","onSubmit","Layouts","Header","title","subtitle","primaryAction","Button","disabled","type","startIcon","Check","fullWidth","Content","Flex","direction","alignItems","gap","hasRadius","background","shadow","paddingTop","paddingBottom","paddingRight","paddingLeft","Typography","variant","tag","Grid","Root","Item","col","xs","textColor","Link","href","endIcon","ExternalLink","target","rel","projectType","Box","dimension","DIMENSION","size","SIZE","LogoInput","customLogo","defaultLogo","default","hint","label","onChangeLogo"],"mappings":"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"}
1
+ {"version":3,"file":"ApplicationInfoPage.mjs","sources":["../../../../../../../../admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Link, Typography } from '@strapi/design-system';\nimport { Check, ExternalLink } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useAppInfo } from '../../../../features/AppInfo';\nimport { useConfiguration } from '../../../../features/Configuration';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\n\nimport { LogoInput, LogoInputProps } from './components/LogoInput';\nimport { PlanCard } from './components/PlanCard';\nimport { SupportCard } from './components/SupportCard';\nimport { DIMENSION, SIZE } from './utils/constants';\n\n/* -------------------------------------------------------------------------------------------------\n * ApplicationInfoPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ApplicationInfoPage = () => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { logos: serverLogos, updateProjectSettings } = useConfiguration('ApplicationInfoPage');\n const [logos, setLogos] = React.useState({ menu: serverLogos.menu, auth: serverLogos.auth });\n const { settings } = useSelector(selectAdminPermissions);\n\n const nodeVersion = useAppInfo('ApplicationInfoPage', (state) => state.nodeVersion);\n const shouldUpdateStrapi = useAppInfo('ApplicationInfoPage', (state) => state.shouldUpdateStrapi);\n const strapiVersion = useAppInfo('ApplicationInfoPage', (state) => state.strapiVersion);\n\n const {\n allowedActions: { canRead, canUpdate },\n } = useRBAC(settings ? settings['project-settings'] : {});\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = (e) => {\n e.preventDefault();\n\n updateProjectSettings({\n authLogo: logos.auth.custom ?? null,\n menuLogo: logos.menu.custom ?? null,\n });\n };\n\n const handleChangeLogo =\n (logo: 'menu' | 'auth'): LogoInputProps['onChangeLogo'] =>\n (newLogo) => {\n /**\n * If there's no newLogo value we can assume we're reseting.\n */\n if (newLogo === null) {\n trackUsage('didClickResetLogo', {\n logo,\n });\n }\n\n setLogos((prev) => ({\n ...prev,\n [logo]: {\n ...prev[logo],\n custom: newLogo,\n },\n }));\n };\n\n React.useEffect(() => {\n setLogos({\n menu: serverLogos.menu,\n auth: serverLogos.auth,\n });\n }, [serverLogos]);\n\n const isSaveDisabled =\n logos.auth.custom === serverLogos.auth.custom && logos.menu.custom === serverLogos.menu.custom;\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: formatMessage({\n id: 'Settings.application.header',\n defaultMessage: 'Application',\n }),\n }\n )}\n </Page.Title>\n <Page.Main>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n title={formatMessage({\n id: 'Settings.application.title',\n defaultMessage: 'Overview',\n })}\n subtitle={formatMessage({\n id: 'Settings.application.description',\n defaultMessage: 'Administration panel’s global information',\n })}\n primaryAction={\n canUpdate && (\n <Button disabled={isSaveDisabled} type=\"submit\" startIcon={<Check />} fullWidth>\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n )\n }\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingRight={7}\n paddingLeft={7}\n >\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n\n <Grid.Root gap={5} tag=\"dl\">\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"sigma\" textColor=\"neutral600\" tag=\"dt\">\n {formatMessage({\n id: 'Settings.application.strapiVersion',\n defaultMessage: 'strapi version',\n })}\n </Typography>\n <Flex gap={3} direction=\"column\" alignItems=\"start\" tag=\"dd\">\n <Typography>v{strapiVersion}</Typography>\n {shouldUpdateStrapi && (\n <Link\n href={`https://docs.strapi.io/cms/upgrades`}\n endIcon={<ExternalLink />}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {formatMessage({\n id: 'Settings.application.link-upgrade',\n defaultMessage: 'Upgrade your admin panel',\n })}\n </Link>\n )}\n </Flex>\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"sigma\" textColor=\"neutral600\" tag=\"dt\">\n {formatMessage({\n id: 'Settings.application.node-version',\n defaultMessage: 'node version',\n })}\n </Typography>\n <Typography tag=\"dd\">{nodeVersion}</Typography>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n <PlanCard />\n {canRead && (\n <Box\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingRight={7}\n paddingLeft={7}\n >\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'Settings.application.customization',\n defaultMessage: 'Customization',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.application.customization.size-details',\n defaultMessage:\n 'Max dimension: {dimension}×{dimension}, Max file size: {size}KB',\n },\n { dimension: DIMENSION, size: SIZE }\n )}\n </Typography>\n <Grid.Root paddingTop={4} gap={4}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <LogoInput\n canUpdate={canUpdate}\n customLogo={logos.menu.custom}\n defaultLogo={logos.menu.default}\n hint={formatMessage({\n id: 'Settings.application.customization.menu-logo.carousel-hint',\n defaultMessage: 'Replace the logo in the main navigation',\n })}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.menu-logo.title',\n defaultMessage: 'Menu logo',\n })}\n onChangeLogo={handleChangeLogo('menu')}\n />\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <LogoInput\n canUpdate={canUpdate}\n customLogo={logos.auth.custom}\n defaultLogo={logos.auth.default}\n hint={formatMessage({\n id: 'Settings.application.customization.auth-logo.carousel-hint',\n defaultMessage: 'Replace the logo in the authentication pages',\n })}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.auth-logo.title',\n defaultMessage: 'Auth logo',\n })}\n onChangeLogo={handleChangeLogo('auth')}\n />\n </Grid.Item>\n </Grid.Root>\n </Box>\n )}\n <SupportCard />\n </Flex>\n </Layouts.Content>\n </form>\n </Page.Main>\n </>\n );\n};\n\nexport { ApplicationInfoPage };\n"],"names":["ApplicationInfoPage","trackUsage","useTracking","formatMessage","useIntl","logos","serverLogos","updateProjectSettings","useConfiguration","setLogos","React","useState","menu","auth","settings","useSelector","selectAdminPermissions","nodeVersion","useAppInfo","state","shouldUpdateStrapi","strapiVersion","allowedActions","canRead","canUpdate","useRBAC","handleSubmit","e","preventDefault","authLogo","custom","menuLogo","handleChangeLogo","logo","newLogo","prev","useEffect","isSaveDisabled","_jsxs","_Fragment","_jsx","Page","Title","id","defaultMessage","name","Main","form","onSubmit","Layouts","Header","title","subtitle","primaryAction","Button","disabled","type","startIcon","Check","fullWidth","Content","Flex","direction","alignItems","gap","hasRadius","background","shadow","paddingTop","paddingBottom","paddingRight","paddingLeft","Typography","variant","tag","Grid","Root","Item","col","xs","textColor","Link","href","endIcon","ExternalLink","target","rel","PlanCard","Box","dimension","DIMENSION","size","SIZE","LogoInput","customLogo","defaultLogo","default","hint","label","onChangeLogo","SupportCard"],"mappings":"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"}
@@ -0,0 +1,217 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var designSystem = require('@strapi/design-system');
6
+ var icons = require('@strapi/icons');
7
+ var reactIntl = require('react-intl');
8
+ var Notifications = require('../../../../../features/Notifications.js');
9
+ var useClipboard = require('../../../../../hooks/useClipboard.js');
10
+ var admin = require('../../../../../services/admin.js');
11
+
12
+ function _interopNamespace(e) {
13
+ if (e && e.__esModule) return e;
14
+ var n = Object.create(null);
15
+ if (e) {
16
+ Object.keys(e).forEach(function (k) {
17
+ if (k !== 'default') {
18
+ var d = Object.getOwnPropertyDescriptor(e, k);
19
+ Object.defineProperty(n, k, d.get ? d : {
20
+ enumerable: true,
21
+ get: function () { return e[k]; }
22
+ });
23
+ }
24
+ });
25
+ }
26
+ n.default = e;
27
+ return Object.freeze(n);
28
+ }
29
+
30
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
31
+
32
+ /**
33
+ * Generates the redacted diagnostic snapshot behind the Support card's "Generate snapshot" action.
34
+ * The fetch is triggered as soon as the modal opens, so the user only ever sees a spinner followed
35
+ * by the payload (or, on failure, a notification while the modal closes itself).
36
+ */ const DiagnosticSnapshotModal = ({ isOpen, onClose })=>{
37
+ const { formatMessage } = reactIntl.useIntl();
38
+ const { toggleNotification } = Notifications.useNotification();
39
+ const { copy } = useClipboard.useClipboard();
40
+ const [triggerGetDump, { data, isFetching }] = admin.useLazyGetDebugDumpQuery();
41
+ // Failure is read from this open's own request. The lazy query keeps `isError` from an earlier
42
+ // failed request while a new one is in flight, which closed the next open straight away.
43
+ React__namespace.useEffect(()=>{
44
+ if (!isOpen) {
45
+ return undefined;
46
+ }
47
+ let active = true;
48
+ triggerGetDump().unwrap().catch(()=>{
49
+ if (!active) {
50
+ return;
51
+ }
52
+ toggleNotification({
53
+ type: 'danger',
54
+ message: formatMessage({
55
+ id: 'Settings.debug-dump.error',
56
+ defaultMessage: 'Failed to generate the debug dump. Check the server logs and try again.'
57
+ })
58
+ });
59
+ onClose();
60
+ });
61
+ return ()=>{
62
+ active = false;
63
+ };
64
+ }, [
65
+ isOpen,
66
+ triggerGetDump,
67
+ toggleNotification,
68
+ formatMessage,
69
+ onClose
70
+ ]);
71
+ const serialized = React__namespace.useMemo(()=>data === undefined ? '' : JSON.stringify(data, null, 2), [
72
+ data
73
+ ]);
74
+ const isReady = !isFetching && data !== undefined;
75
+ const handleCopy = async ()=>{
76
+ const didCopy = await copy(serialized);
77
+ toggleNotification({
78
+ type: didCopy ? 'success' : 'danger',
79
+ message: didCopy ? formatMessage({
80
+ id: 'Settings.debug-dump.copied',
81
+ defaultMessage: 'Copied to clipboard'
82
+ }) : formatMessage({
83
+ id: 'Settings.debug-dump.copy-failed',
84
+ defaultMessage: 'Could not copy to clipboard'
85
+ })
86
+ });
87
+ };
88
+ const handleDownload = ()=>{
89
+ const blob = new Blob([
90
+ serialized
91
+ ], {
92
+ type: 'application/json'
93
+ });
94
+ const url = URL.createObjectURL(blob);
95
+ const anchor = document.createElement('a');
96
+ anchor.href = url;
97
+ anchor.download = `strapi-debug-dump-${new Date().toISOString().replaceAll(':', '-')}.json`;
98
+ // In the document for the click and revoked on a later turn, as the audit-log export does:
99
+ // some browsers cancel a click on a detached anchor or a download whose URL is gone.
100
+ document.body.appendChild(anchor);
101
+ anchor.click();
102
+ anchor.remove();
103
+ setTimeout(()=>URL.revokeObjectURL(url), 60000);
104
+ };
105
+ return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Modal.Root, {
106
+ open: isOpen,
107
+ onOpenChange: onClose,
108
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Modal.Content, {
109
+ children: [
110
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Modal.Header, {
111
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Modal.Title, {
112
+ children: formatMessage({
113
+ id: 'Settings.debug-dump.snapshot-modal.title',
114
+ defaultMessage: 'Diagnostic snapshot'
115
+ })
116
+ })
117
+ }),
118
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Modal.Body, {
119
+ children: isReady ? /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
120
+ direction: "column",
121
+ alignItems: "stretch",
122
+ gap: 4,
123
+ children: [
124
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
125
+ children: formatMessage({
126
+ id: 'Settings.debug-dump.snapshot-modal.description',
127
+ defaultMessage: "This snapshot describes how your project is built so a third party can reproduce the bug locally. It does not contain any of your app's content and no credentials."
128
+ })
129
+ }),
130
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
131
+ variant: "sigma",
132
+ children: formatMessage({
133
+ id: 'Settings.debug-dump.payload-label',
134
+ defaultMessage: 'payload'
135
+ })
136
+ }),
137
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
138
+ hasRadius: true,
139
+ padding: 4,
140
+ maxHeight: "26rem",
141
+ overflow: "auto",
142
+ // A code surface that stays dark in BOTH themes. The design-system neutrals invert
143
+ // between themes (`neutral800` is #32324d in light but #ffffff in dark, and
144
+ // `neutral0` inverts with it), so tokens here flip the block to white on dark.
145
+ // These are the same fixed values the WYSIWYG preview uses for its code surface.
146
+ style: {
147
+ backgroundColor: '#32324d'
148
+ },
149
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
150
+ tag: "pre",
151
+ variant: "pi",
152
+ style: {
153
+ color: '#ffffff',
154
+ whiteSpace: 'pre-wrap',
155
+ wordBreak: 'break-word',
156
+ margin: 0
157
+ },
158
+ children: serialized
159
+ })
160
+ })
161
+ ]
162
+ }) : /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
163
+ justifyContent: "center",
164
+ alignItems: "center",
165
+ padding: 7,
166
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Loader, {
167
+ children: formatMessage({
168
+ id: 'Settings.debug-dump.generating',
169
+ defaultMessage: 'Generating diagnostic snapshot'
170
+ })
171
+ })
172
+ })
173
+ }),
174
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Modal.Footer, {
175
+ children: [
176
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Modal.Close, {
177
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
178
+ variant: "tertiary",
179
+ children: formatMessage({
180
+ id: 'app.components.Button.cancel',
181
+ defaultMessage: 'Cancel'
182
+ })
183
+ })
184
+ }),
185
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
186
+ gap: 2,
187
+ children: [
188
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
189
+ variant: "secondary",
190
+ onClick: handleCopy,
191
+ startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Duplicate, {}),
192
+ disabled: !isReady,
193
+ children: formatMessage({
194
+ id: 'Settings.debug-dump.copy',
195
+ defaultMessage: 'Copy'
196
+ })
197
+ }),
198
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
199
+ onClick: handleDownload,
200
+ startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Download, {}),
201
+ disabled: !isReady,
202
+ children: formatMessage({
203
+ id: 'Settings.debug-dump.download',
204
+ defaultMessage: 'Download'
205
+ })
206
+ })
207
+ ]
208
+ })
209
+ ]
210
+ })
211
+ ]
212
+ })
213
+ });
214
+ };
215
+
216
+ exports.DiagnosticSnapshotModal = DiagnosticSnapshotModal;
217
+ //# sourceMappingURL=DiagnosticSnapshotModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiagnosticSnapshotModal.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Loader, Modal, Typography } from '@strapi/design-system';\nimport { Download, Duplicate } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useNotification } from '../../../../../features/Notifications';\nimport { useClipboard } from '../../../../../hooks/useClipboard';\nimport { useLazyGetDebugDumpQuery } from '../../../../../services/admin';\n\n/* -------------------------------------------------------------------------------------------------\n * DiagnosticSnapshotModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DiagnosticSnapshotModalProps {\n isOpen: boolean;\n onClose: () => void;\n}\n\n/**\n * Generates the redacted diagnostic snapshot behind the Support card's \"Generate snapshot\" action.\n * The fetch is triggered as soon as the modal opens, so the user only ever sees a spinner followed\n * by the payload (or, on failure, a notification while the modal closes itself).\n */\nconst DiagnosticSnapshotModal = ({ isOpen, onClose }: DiagnosticSnapshotModalProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { copy } = useClipboard();\n const [triggerGetDump, { data, isFetching }] = useLazyGetDebugDumpQuery();\n\n // Failure is read from this open's own request. The lazy query keeps `isError` from an earlier\n // failed request while a new one is in flight, which closed the next open straight away.\n React.useEffect(() => {\n if (!isOpen) {\n return undefined;\n }\n\n let active = true;\n\n triggerGetDump()\n .unwrap()\n .catch(() => {\n if (!active) {\n return;\n }\n\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'Settings.debug-dump.error',\n defaultMessage:\n 'Failed to generate the debug dump. Check the server logs and try again.',\n }),\n });\n onClose();\n });\n\n return () => {\n active = false;\n };\n }, [isOpen, triggerGetDump, toggleNotification, formatMessage, onClose]);\n\n const serialized = React.useMemo(\n () => (data === undefined ? '' : JSON.stringify(data, null, 2)),\n [data]\n );\n\n const isReady = !isFetching && data !== undefined;\n\n const handleCopy = async () => {\n const didCopy = await copy(serialized);\n toggleNotification({\n type: didCopy ? 'success' : 'danger',\n message: didCopy\n ? formatMessage({ id: 'Settings.debug-dump.copied', defaultMessage: 'Copied to clipboard' })\n : formatMessage({\n id: 'Settings.debug-dump.copy-failed',\n defaultMessage: 'Could not copy to clipboard',\n }),\n });\n };\n\n const handleDownload = () => {\n const blob = new Blob([serialized], { type: 'application/json' });\n const url = URL.createObjectURL(blob);\n const anchor = document.createElement('a');\n anchor.href = url;\n anchor.download = `strapi-debug-dump-${new Date().toISOString().replaceAll(':', '-')}.json`;\n // In the document for the click and revoked on a later turn, as the audit-log export does:\n // some browsers cancel a click on a detached anchor or a download whose URL is gone.\n document.body.appendChild(anchor);\n anchor.click();\n anchor.remove();\n setTimeout(() => URL.revokeObjectURL(url), 60000);\n };\n\n return (\n <Modal.Root open={isOpen} onOpenChange={onClose}>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: 'Settings.debug-dump.snapshot-modal.title',\n defaultMessage: 'Diagnostic snapshot',\n })}\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n {isReady ? (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography>\n {formatMessage({\n id: 'Settings.debug-dump.snapshot-modal.description',\n defaultMessage:\n \"This snapshot describes how your project is built so a third party can reproduce the bug locally. It does not contain any of your app's content and no credentials.\",\n })}\n </Typography>\n <Typography variant=\"sigma\">\n {formatMessage({\n id: 'Settings.debug-dump.payload-label',\n defaultMessage: 'payload',\n })}\n </Typography>\n <Box\n hasRadius\n padding={4}\n maxHeight=\"26rem\"\n overflow=\"auto\"\n // A code surface that stays dark in BOTH themes. The design-system neutrals invert\n // between themes (`neutral800` is #32324d in light but #ffffff in dark, and\n // `neutral0` inverts with it), so tokens here flip the block to white on dark.\n // These are the same fixed values the WYSIWYG preview uses for its code surface.\n style={{ backgroundColor: '#32324d' }}\n >\n <Typography\n tag=\"pre\"\n variant=\"pi\"\n style={{\n color: '#ffffff',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word',\n margin: 0,\n }}\n >\n {serialized}\n </Typography>\n </Box>\n </Flex>\n ) : (\n <Flex justifyContent=\"center\" alignItems=\"center\" padding={7}>\n <Loader>\n {formatMessage({\n id: 'Settings.debug-dump.generating',\n defaultMessage: 'Generating diagnostic snapshot',\n })}\n </Loader>\n </Flex>\n )}\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Close>\n {/* Grouped so Copy and Download stay together on the right rather than being pushed to\n opposite edges by the footer's `space-between`. */}\n <Flex gap={2}>\n <Button\n variant=\"secondary\"\n onClick={handleCopy}\n startIcon={<Duplicate />}\n disabled={!isReady}\n >\n {formatMessage({ id: 'Settings.debug-dump.copy', defaultMessage: 'Copy' })}\n </Button>\n <Button onClick={handleDownload} startIcon={<Download />} disabled={!isReady}>\n {formatMessage({ id: 'Settings.debug-dump.download', defaultMessage: 'Download' })}\n </Button>\n </Flex>\n </Modal.Footer>\n </Modal.Content>\n </Modal.Root>\n );\n};\n\nexport { DiagnosticSnapshotModal };\nexport type { DiagnosticSnapshotModalProps };\n"],"names":["DiagnosticSnapshotModal","isOpen","onClose","formatMessage","useIntl","toggleNotification","useNotification","copy","useClipboard","triggerGetDump","data","isFetching","useLazyGetDebugDumpQuery","React","useEffect","undefined","active","unwrap","catch","type","message","id","defaultMessage","serialized","useMemo","JSON","stringify","isReady","handleCopy","didCopy","handleDownload","blob","Blob","url","URL","createObjectURL","anchor","document","createElement","href","download","Date","toISOString","replaceAll","body","appendChild","click","remove","setTimeout","revokeObjectURL","_jsx","Modal","Root","open","onOpenChange","_jsxs","Content","Header","Title","Body","Flex","direction","alignItems","gap","Typography","variant","Box","hasRadius","padding","maxHeight","overflow","style","backgroundColor","tag","color","whiteSpace","wordBreak","margin","justifyContent","Loader","Footer","Close","Button","onClick","startIcon","Duplicate","disabled","Download"],"mappings":"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"}
@@ -0,0 +1,195 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { Modal, Flex, Typography, Box, Loader, Button } from '@strapi/design-system';
4
+ import { Duplicate, Download } from '@strapi/icons';
5
+ import { useIntl } from 'react-intl';
6
+ import { useNotification } from '../../../../../features/Notifications.mjs';
7
+ import { useClipboard } from '../../../../../hooks/useClipboard.mjs';
8
+ import { useLazyGetDebugDumpQuery } from '../../../../../services/admin.mjs';
9
+
10
+ /**
11
+ * Generates the redacted diagnostic snapshot behind the Support card's "Generate snapshot" action.
12
+ * The fetch is triggered as soon as the modal opens, so the user only ever sees a spinner followed
13
+ * by the payload (or, on failure, a notification while the modal closes itself).
14
+ */ const DiagnosticSnapshotModal = ({ isOpen, onClose })=>{
15
+ const { formatMessage } = useIntl();
16
+ const { toggleNotification } = useNotification();
17
+ const { copy } = useClipboard();
18
+ const [triggerGetDump, { data, isFetching }] = useLazyGetDebugDumpQuery();
19
+ // Failure is read from this open's own request. The lazy query keeps `isError` from an earlier
20
+ // failed request while a new one is in flight, which closed the next open straight away.
21
+ React.useEffect(()=>{
22
+ if (!isOpen) {
23
+ return undefined;
24
+ }
25
+ let active = true;
26
+ triggerGetDump().unwrap().catch(()=>{
27
+ if (!active) {
28
+ return;
29
+ }
30
+ toggleNotification({
31
+ type: 'danger',
32
+ message: formatMessage({
33
+ id: 'Settings.debug-dump.error',
34
+ defaultMessage: 'Failed to generate the debug dump. Check the server logs and try again.'
35
+ })
36
+ });
37
+ onClose();
38
+ });
39
+ return ()=>{
40
+ active = false;
41
+ };
42
+ }, [
43
+ isOpen,
44
+ triggerGetDump,
45
+ toggleNotification,
46
+ formatMessage,
47
+ onClose
48
+ ]);
49
+ const serialized = React.useMemo(()=>data === undefined ? '' : JSON.stringify(data, null, 2), [
50
+ data
51
+ ]);
52
+ const isReady = !isFetching && data !== undefined;
53
+ const handleCopy = async ()=>{
54
+ const didCopy = await copy(serialized);
55
+ toggleNotification({
56
+ type: didCopy ? 'success' : 'danger',
57
+ message: didCopy ? formatMessage({
58
+ id: 'Settings.debug-dump.copied',
59
+ defaultMessage: 'Copied to clipboard'
60
+ }) : formatMessage({
61
+ id: 'Settings.debug-dump.copy-failed',
62
+ defaultMessage: 'Could not copy to clipboard'
63
+ })
64
+ });
65
+ };
66
+ const handleDownload = ()=>{
67
+ const blob = new Blob([
68
+ serialized
69
+ ], {
70
+ type: 'application/json'
71
+ });
72
+ const url = URL.createObjectURL(blob);
73
+ const anchor = document.createElement('a');
74
+ anchor.href = url;
75
+ anchor.download = `strapi-debug-dump-${new Date().toISOString().replaceAll(':', '-')}.json`;
76
+ // In the document for the click and revoked on a later turn, as the audit-log export does:
77
+ // some browsers cancel a click on a detached anchor or a download whose URL is gone.
78
+ document.body.appendChild(anchor);
79
+ anchor.click();
80
+ anchor.remove();
81
+ setTimeout(()=>URL.revokeObjectURL(url), 60000);
82
+ };
83
+ return /*#__PURE__*/ jsx(Modal.Root, {
84
+ open: isOpen,
85
+ onOpenChange: onClose,
86
+ children: /*#__PURE__*/ jsxs(Modal.Content, {
87
+ children: [
88
+ /*#__PURE__*/ jsx(Modal.Header, {
89
+ children: /*#__PURE__*/ jsx(Modal.Title, {
90
+ children: formatMessage({
91
+ id: 'Settings.debug-dump.snapshot-modal.title',
92
+ defaultMessage: 'Diagnostic snapshot'
93
+ })
94
+ })
95
+ }),
96
+ /*#__PURE__*/ jsx(Modal.Body, {
97
+ children: isReady ? /*#__PURE__*/ jsxs(Flex, {
98
+ direction: "column",
99
+ alignItems: "stretch",
100
+ gap: 4,
101
+ children: [
102
+ /*#__PURE__*/ jsx(Typography, {
103
+ children: formatMessage({
104
+ id: 'Settings.debug-dump.snapshot-modal.description',
105
+ defaultMessage: "This snapshot describes how your project is built so a third party can reproduce the bug locally. It does not contain any of your app's content and no credentials."
106
+ })
107
+ }),
108
+ /*#__PURE__*/ jsx(Typography, {
109
+ variant: "sigma",
110
+ children: formatMessage({
111
+ id: 'Settings.debug-dump.payload-label',
112
+ defaultMessage: 'payload'
113
+ })
114
+ }),
115
+ /*#__PURE__*/ jsx(Box, {
116
+ hasRadius: true,
117
+ padding: 4,
118
+ maxHeight: "26rem",
119
+ overflow: "auto",
120
+ // A code surface that stays dark in BOTH themes. The design-system neutrals invert
121
+ // between themes (`neutral800` is #32324d in light but #ffffff in dark, and
122
+ // `neutral0` inverts with it), so tokens here flip the block to white on dark.
123
+ // These are the same fixed values the WYSIWYG preview uses for its code surface.
124
+ style: {
125
+ backgroundColor: '#32324d'
126
+ },
127
+ children: /*#__PURE__*/ jsx(Typography, {
128
+ tag: "pre",
129
+ variant: "pi",
130
+ style: {
131
+ color: '#ffffff',
132
+ whiteSpace: 'pre-wrap',
133
+ wordBreak: 'break-word',
134
+ margin: 0
135
+ },
136
+ children: serialized
137
+ })
138
+ })
139
+ ]
140
+ }) : /*#__PURE__*/ jsx(Flex, {
141
+ justifyContent: "center",
142
+ alignItems: "center",
143
+ padding: 7,
144
+ children: /*#__PURE__*/ jsx(Loader, {
145
+ children: formatMessage({
146
+ id: 'Settings.debug-dump.generating',
147
+ defaultMessage: 'Generating diagnostic snapshot'
148
+ })
149
+ })
150
+ })
151
+ }),
152
+ /*#__PURE__*/ jsxs(Modal.Footer, {
153
+ children: [
154
+ /*#__PURE__*/ jsx(Modal.Close, {
155
+ children: /*#__PURE__*/ jsx(Button, {
156
+ variant: "tertiary",
157
+ children: formatMessage({
158
+ id: 'app.components.Button.cancel',
159
+ defaultMessage: 'Cancel'
160
+ })
161
+ })
162
+ }),
163
+ /*#__PURE__*/ jsxs(Flex, {
164
+ gap: 2,
165
+ children: [
166
+ /*#__PURE__*/ jsx(Button, {
167
+ variant: "secondary",
168
+ onClick: handleCopy,
169
+ startIcon: /*#__PURE__*/ jsx(Duplicate, {}),
170
+ disabled: !isReady,
171
+ children: formatMessage({
172
+ id: 'Settings.debug-dump.copy',
173
+ defaultMessage: 'Copy'
174
+ })
175
+ }),
176
+ /*#__PURE__*/ jsx(Button, {
177
+ onClick: handleDownload,
178
+ startIcon: /*#__PURE__*/ jsx(Download, {}),
179
+ disabled: !isReady,
180
+ children: formatMessage({
181
+ id: 'Settings.debug-dump.download',
182
+ defaultMessage: 'Download'
183
+ })
184
+ })
185
+ ]
186
+ })
187
+ ]
188
+ })
189
+ ]
190
+ })
191
+ });
192
+ };
193
+
194
+ export { DiagnosticSnapshotModal };
195
+ //# sourceMappingURL=DiagnosticSnapshotModal.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiagnosticSnapshotModal.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Loader, Modal, Typography } from '@strapi/design-system';\nimport { Download, Duplicate } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useNotification } from '../../../../../features/Notifications';\nimport { useClipboard } from '../../../../../hooks/useClipboard';\nimport { useLazyGetDebugDumpQuery } from '../../../../../services/admin';\n\n/* -------------------------------------------------------------------------------------------------\n * DiagnosticSnapshotModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DiagnosticSnapshotModalProps {\n isOpen: boolean;\n onClose: () => void;\n}\n\n/**\n * Generates the redacted diagnostic snapshot behind the Support card's \"Generate snapshot\" action.\n * The fetch is triggered as soon as the modal opens, so the user only ever sees a spinner followed\n * by the payload (or, on failure, a notification while the modal closes itself).\n */\nconst DiagnosticSnapshotModal = ({ isOpen, onClose }: DiagnosticSnapshotModalProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { copy } = useClipboard();\n const [triggerGetDump, { data, isFetching }] = useLazyGetDebugDumpQuery();\n\n // Failure is read from this open's own request. The lazy query keeps `isError` from an earlier\n // failed request while a new one is in flight, which closed the next open straight away.\n React.useEffect(() => {\n if (!isOpen) {\n return undefined;\n }\n\n let active = true;\n\n triggerGetDump()\n .unwrap()\n .catch(() => {\n if (!active) {\n return;\n }\n\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'Settings.debug-dump.error',\n defaultMessage:\n 'Failed to generate the debug dump. Check the server logs and try again.',\n }),\n });\n onClose();\n });\n\n return () => {\n active = false;\n };\n }, [isOpen, triggerGetDump, toggleNotification, formatMessage, onClose]);\n\n const serialized = React.useMemo(\n () => (data === undefined ? '' : JSON.stringify(data, null, 2)),\n [data]\n );\n\n const isReady = !isFetching && data !== undefined;\n\n const handleCopy = async () => {\n const didCopy = await copy(serialized);\n toggleNotification({\n type: didCopy ? 'success' : 'danger',\n message: didCopy\n ? formatMessage({ id: 'Settings.debug-dump.copied', defaultMessage: 'Copied to clipboard' })\n : formatMessage({\n id: 'Settings.debug-dump.copy-failed',\n defaultMessage: 'Could not copy to clipboard',\n }),\n });\n };\n\n const handleDownload = () => {\n const blob = new Blob([serialized], { type: 'application/json' });\n const url = URL.createObjectURL(blob);\n const anchor = document.createElement('a');\n anchor.href = url;\n anchor.download = `strapi-debug-dump-${new Date().toISOString().replaceAll(':', '-')}.json`;\n // In the document for the click and revoked on a later turn, as the audit-log export does:\n // some browsers cancel a click on a detached anchor or a download whose URL is gone.\n document.body.appendChild(anchor);\n anchor.click();\n anchor.remove();\n setTimeout(() => URL.revokeObjectURL(url), 60000);\n };\n\n return (\n <Modal.Root open={isOpen} onOpenChange={onClose}>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: 'Settings.debug-dump.snapshot-modal.title',\n defaultMessage: 'Diagnostic snapshot',\n })}\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n {isReady ? (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography>\n {formatMessage({\n id: 'Settings.debug-dump.snapshot-modal.description',\n defaultMessage:\n \"This snapshot describes how your project is built so a third party can reproduce the bug locally. It does not contain any of your app's content and no credentials.\",\n })}\n </Typography>\n <Typography variant=\"sigma\">\n {formatMessage({\n id: 'Settings.debug-dump.payload-label',\n defaultMessage: 'payload',\n })}\n </Typography>\n <Box\n hasRadius\n padding={4}\n maxHeight=\"26rem\"\n overflow=\"auto\"\n // A code surface that stays dark in BOTH themes. The design-system neutrals invert\n // between themes (`neutral800` is #32324d in light but #ffffff in dark, and\n // `neutral0` inverts with it), so tokens here flip the block to white on dark.\n // These are the same fixed values the WYSIWYG preview uses for its code surface.\n style={{ backgroundColor: '#32324d' }}\n >\n <Typography\n tag=\"pre\"\n variant=\"pi\"\n style={{\n color: '#ffffff',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word',\n margin: 0,\n }}\n >\n {serialized}\n </Typography>\n </Box>\n </Flex>\n ) : (\n <Flex justifyContent=\"center\" alignItems=\"center\" padding={7}>\n <Loader>\n {formatMessage({\n id: 'Settings.debug-dump.generating',\n defaultMessage: 'Generating diagnostic snapshot',\n })}\n </Loader>\n </Flex>\n )}\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Close>\n {/* Grouped so Copy and Download stay together on the right rather than being pushed to\n opposite edges by the footer's `space-between`. */}\n <Flex gap={2}>\n <Button\n variant=\"secondary\"\n onClick={handleCopy}\n startIcon={<Duplicate />}\n disabled={!isReady}\n >\n {formatMessage({ id: 'Settings.debug-dump.copy', defaultMessage: 'Copy' })}\n </Button>\n <Button onClick={handleDownload} startIcon={<Download />} disabled={!isReady}>\n {formatMessage({ id: 'Settings.debug-dump.download', defaultMessage: 'Download' })}\n </Button>\n </Flex>\n </Modal.Footer>\n </Modal.Content>\n </Modal.Root>\n );\n};\n\nexport { DiagnosticSnapshotModal };\nexport type { DiagnosticSnapshotModalProps };\n"],"names":["DiagnosticSnapshotModal","isOpen","onClose","formatMessage","useIntl","toggleNotification","useNotification","copy","useClipboard","triggerGetDump","data","isFetching","useLazyGetDebugDumpQuery","React","useEffect","undefined","active","unwrap","catch","type","message","id","defaultMessage","serialized","useMemo","JSON","stringify","isReady","handleCopy","didCopy","handleDownload","blob","Blob","url","URL","createObjectURL","anchor","document","createElement","href","download","Date","toISOString","replaceAll","body","appendChild","click","remove","setTimeout","revokeObjectURL","_jsx","Modal","Root","open","onOpenChange","_jsxs","Content","Header","Title","Body","Flex","direction","alignItems","gap","Typography","variant","Box","hasRadius","padding","maxHeight","overflow","style","backgroundColor","tag","color","whiteSpace","wordBreak","margin","justifyContent","Loader","Footer","Close","Button","onClick","startIcon","Duplicate","disabled","Download"],"mappings":"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"}