@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,14 +1,12 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { Grid, Typography, Flex, Tooltip, Link } from '@strapi/design-system';
3
- import { WarningCircle, ExternalLink } from '@strapi/icons';
2
+ import { Flex, Typography, Tooltip } from '@strapi/design-system';
3
+ import { WarningCircle } from '@strapi/icons';
4
4
  import { useIntl } from 'react-intl';
5
5
  import { useSelector } from 'react-redux';
6
6
  import { useRBAC } from '../../../../../../../../admin/src/hooks/useRBAC.mjs';
7
7
  import { selectAdminPermissions } from '../../../../../../../../admin/src/selectors.mjs';
8
8
  import { useLicenseLimits } from '../../../../../hooks/useLicenseLimits.mjs';
9
9
 
10
- const BILLING_SELF_HOSTED_URL = 'mailto:sales@strapi.io';
11
- const MANAGE_SUBSCRIPTION_URL = 'https://billing.strapi.io';
12
10
  const AdminSeatInfoEE = ()=>{
13
11
  const { formatMessage } = useIntl();
14
12
  const { settings } = useSelector(selectAdminPermissions);
@@ -24,15 +22,22 @@ const AdminSeatInfoEE = ()=>{
24
22
  if (isError || isLoading || !license) {
25
23
  return null;
26
24
  }
27
- const { licenseLimitStatus, enforcementUserCount, permittedSeats, type } = license;
28
- if (!permittedSeats) {
25
+ const { enforcementUserCount, permittedSeats, seats } = license;
26
+ // `permittedSeats` is the live enforcement limit and is wiped once the licence stops being
27
+ // usable, so fall back to the retained `seats` to keep showing the count on an expired
28
+ // licence. Enforcement itself (`licenseLimitStatus`, `shouldStopCreate`) still runs off
29
+ // `permittedSeats` server-side and is untouched by this.
30
+ const seatLimit = permittedSeats ?? seats;
31
+ if (!seatLimit) {
29
32
  return null;
30
33
  }
31
- return /*#__PURE__*/ jsxs(Grid.Item, {
32
- col: 6,
33
- xs: 12,
34
+ // The red count and the warning follow the same displayed limit. Server-side
35
+ // `licenseLimitStatus` tracks only the live limit, so it is empty once the licence expires.
36
+ const isOverLimit = enforcementUserCount > seatLimit;
37
+ return /*#__PURE__*/ jsxs(Flex, {
34
38
  direction: "column",
35
- alignItems: "stretch",
39
+ alignItems: "start",
40
+ gap: 2,
36
41
  children: [
37
42
  /*#__PURE__*/ jsx(Typography, {
38
43
  variant: "sigma",
@@ -52,17 +57,17 @@ const AdminSeatInfoEE = ()=>{
52
57
  id: 'Settings.application.ee.admin-seats.count',
53
58
  defaultMessage: '<text>{enforcementUserCount}</text>/{permittedSeats}'
54
59
  }, {
55
- permittedSeats,
60
+ permittedSeats: seatLimit,
56
61
  enforcementUserCount,
57
62
  text: (chunks)=>/*#__PURE__*/ jsx(Typography, {
58
63
  fontWeight: "semiBold",
59
- textColor: enforcementUserCount > permittedSeats ? 'danger500' : undefined,
64
+ textColor: isOverLimit ? 'danger500' : undefined,
60
65
  children: chunks
61
66
  })
62
67
  })
63
68
  })
64
69
  }),
65
- licenseLimitStatus === 'OVER_LIMIT' && /*#__PURE__*/ jsx(Tooltip, {
70
+ isOverLimit && /*#__PURE__*/ jsx(Tooltip, {
66
71
  label: formatMessage({
67
72
  id: 'Settings.application.ee.admin-seats.at-limit-tooltip',
68
73
  defaultMessage: 'At limit: add seats to invite more users'
@@ -74,24 +79,6 @@ const AdminSeatInfoEE = ()=>{
74
79
  })
75
80
  })
76
81
  ]
77
- }),
78
- type === 'gold' ? /*#__PURE__*/ jsx(Link, {
79
- href: BILLING_SELF_HOSTED_URL,
80
- endIcon: /*#__PURE__*/ jsx(ExternalLink, {}),
81
- target: "_blank",
82
- children: formatMessage({
83
- id: 'Settings.application.ee.admin-seats.support',
84
- defaultMessage: 'Contact sales'
85
- })
86
- }) : /*#__PURE__*/ jsx(Link, {
87
- href: MANAGE_SUBSCRIPTION_URL,
88
- isExternal: true,
89
- endIcon: /*#__PURE__*/ jsx(ExternalLink, {}),
90
- target: "_blank",
91
- children: formatMessage({
92
- id: 'Settings.application.ee.admin-seats.add-seats',
93
- defaultMessage: 'Manage subscription'
94
- })
95
82
  })
96
83
  ]
97
84
  });
@@ -1 +1 @@
1
- {"version":3,"file":"AdminSeatInfo.mjs","sources":["../../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { Flex, Tooltip, Typography, Link, Grid } from '@strapi/design-system';\nimport { ExternalLink, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport { useRBAC } from '../../../../../../../../admin/src/hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../../../../../admin/src/selectors';\nimport { useLicenseLimits } from '../../../../../hooks/useLicenseLimits';\n\nconst BILLING_SELF_HOSTED_URL = 'mailto:sales@strapi.io';\nconst MANAGE_SUBSCRIPTION_URL = 'https://billing.strapi.io';\n\nexport const AdminSeatInfoEE = () => {\n const { formatMessage } = useIntl();\n const { settings } = useSelector(selectAdminPermissions);\n const {\n isLoading: isRBACLoading,\n allowedActions: { canRead, canCreate, canUpdate, canDelete },\n } = useRBAC(settings?.users ?? {});\n const {\n license,\n isError,\n isLoading: isLicenseLoading,\n } = useLicenseLimits({\n // TODO: this creates a waterfall which we should avoid to render earlier, but for that\n // we will have to move away from data-fetching hooks to query functions.\n // Short-term we could at least implement a loader, for the user to have visual feedback\n // in case the requests take a while\n enabled: !isRBACLoading && canRead && canCreate && canUpdate && canDelete,\n });\n\n const isLoading = isRBACLoading || isLicenseLoading;\n\n if (isError || isLoading || !license) {\n return null;\n }\n\n const { licenseLimitStatus, enforcementUserCount, permittedSeats, type } = license;\n\n if (!permittedSeats) {\n return null;\n }\n\n return (\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.application.admin-seats',\n defaultMessage: 'Admin seats',\n })}\n </Typography>\n <Flex gap={2}>\n <Flex>\n <Typography tag=\"p\">\n {formatMessage(\n {\n id: 'Settings.application.ee.admin-seats.count',\n defaultMessage: '<text>{enforcementUserCount}</text>/{permittedSeats}',\n },\n {\n permittedSeats,\n enforcementUserCount,\n text: (chunks: ReactNode) => (\n <Typography\n fontWeight=\"semiBold\"\n textColor={enforcementUserCount > permittedSeats ? 'danger500' : undefined}\n >\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n {licenseLimitStatus === 'OVER_LIMIT' && (\n <Tooltip\n label={formatMessage({\n id: 'Settings.application.ee.admin-seats.at-limit-tooltip',\n defaultMessage: 'At limit: add seats to invite more users',\n })}\n >\n <WarningCircle width=\"1.4rem\" height=\"1.4rem\" fill=\"danger500\" />\n </Tooltip>\n )}\n </Flex>\n {type === 'gold' ? (\n <Link href={BILLING_SELF_HOSTED_URL} endIcon={<ExternalLink />} target=\"_blank\">\n {formatMessage({\n id: 'Settings.application.ee.admin-seats.support',\n defaultMessage: 'Contact sales',\n })}\n </Link>\n ) : (\n <Link href={MANAGE_SUBSCRIPTION_URL} isExternal endIcon={<ExternalLink />} target=\"_blank\">\n {formatMessage({\n id: 'Settings.application.ee.admin-seats.add-seats',\n defaultMessage: 'Manage subscription',\n })}\n </Link>\n )}\n </Grid.Item>\n );\n};\n"],"names":["BILLING_SELF_HOSTED_URL","MANAGE_SUBSCRIPTION_URL","AdminSeatInfoEE","formatMessage","useIntl","settings","useSelector","selectAdminPermissions","isLoading","isRBACLoading","allowedActions","canRead","canCreate","canUpdate","canDelete","useRBAC","users","license","isError","isLicenseLoading","useLicenseLimits","enabled","licenseLimitStatus","enforcementUserCount","permittedSeats","type","_jsxs","Grid","Item","col","xs","direction","alignItems","_jsx","Typography","variant","textColor","id","defaultMessage","Flex","gap","tag","text","chunks","fontWeight","undefined","Tooltip","label","WarningCircle","width","height","fill","Link","href","endIcon","ExternalLink","target","isExternal"],"mappings":";;;;;;;;;AAWA,MAAMA,uBAAAA,GAA0B,wBAAA;AAChC,MAAMC,uBAAAA,GAA0B,2BAAA;MAEnBC,eAAAA,GAAkB,IAAA;IAC7B,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,QAAQ,EAAE,GAAGC,WAAAA,CAAYC,sBAAAA,CAAAA;AACjC,IAAA,MAAM,EACJC,SAAAA,EAAWC,aAAa,EACxBC,cAAAA,EAAgB,EAAEC,OAAO,EAAEC,SAAS,EAAEC,SAAS,EAAEC,SAAS,EAAE,EAC7D,GAAGC,OAAAA,CAAQV,QAAAA,EAAUW,SAAS,EAAC,CAAA;IAChC,MAAM,EACJC,OAAO,EACPC,OAAO,EACPV,SAAAA,EAAWW,gBAAgB,EAC5B,GAAGC,gBAAAA,CAAiB;;;;;AAKnBC,QAAAA,OAAAA,EAAS,CAACZ,aAAAA,IAAiBE,OAAAA,IAAWC,SAAAA,IAAaC,SAAAA,IAAaC;AAClE,KAAA,CAAA;AAEA,IAAA,MAAMN,YAAYC,aAAAA,IAAiBU,gBAAAA;IAEnC,IAAID,OAAAA,IAAWV,SAAAA,IAAa,CAACS,OAAAA,EAAS;QACpC,OAAO,IAAA;AACT,IAAA;IAEA,MAAM,EAAEK,kBAAkB,EAAEC,oBAAoB,EAAEC,cAAc,EAAEC,IAAI,EAAE,GAAGR,OAAAA;AAE3E,IAAA,IAAI,CAACO,cAAAA,EAAgB;QACnB,OAAO,IAAA;AACT,IAAA;IAEA,qBACEE,IAAA,CAACC,KAAKC,IAAI,EAAA;QAACC,GAAAA,EAAK,CAAA;QAAGC,EAAAA,EAAI,EAAA;QAAIC,SAAAA,EAAU,QAAA;QAASC,UAAAA,EAAW,SAAA;;0BACvDC,GAAA,CAACC,UAAAA,EAAAA;gBAAWC,OAAAA,EAAQ,OAAA;gBAAQC,SAAAA,EAAU,YAAA;0BACnCjC,aAAAA,CAAc;oBACbkC,EAAAA,EAAI,kCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA;;0BAEFZ,IAAA,CAACa,IAAAA,EAAAA;gBAAKC,GAAAA,EAAK,CAAA;;kCACTP,GAAA,CAACM,IAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAAN,GAAA,CAACC,UAAAA,EAAAA;4BAAWO,GAAAA,EAAI,GAAA;sCACbtC,aAAAA,CACC;gCACEkC,EAAAA,EAAI,2CAAA;gCACJC,cAAAA,EAAgB;6BAClB,EACA;AACEd,gCAAAA,cAAAA;AACAD,gCAAAA,oBAAAA;gCACAmB,IAAAA,EAAM,CAACC,uBACLV,GAAA,CAACC,UAAAA,EAAAA;wCACCU,UAAAA,EAAW,UAAA;wCACXR,SAAAA,EAAWb,oBAAAA,GAAuBC,iBAAiB,WAAA,GAAcqB,SAAAA;AAEhEF,wCAAAA,QAAAA,EAAAA;;AAGP,6BAAA;;;AAILrB,oBAAAA,kBAAAA,KAAuB,8BACtBW,GAAA,CAACa,OAAAA,EAAAA;AACCC,wBAAAA,KAAAA,EAAO5C,aAAAA,CAAc;4BACnBkC,EAAAA,EAAI,sDAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAL,GAAA,CAACe,aAAAA,EAAAA;4BAAcC,KAAAA,EAAM,QAAA;4BAASC,MAAAA,EAAO,QAAA;4BAASC,IAAAA,EAAK;;;;;AAIxD1B,YAAAA,IAAAA,KAAS,uBACRQ,GAAA,CAACmB,IAAAA,EAAAA;gBAAKC,IAAAA,EAAMrD,uBAAAA;AAAyBsD,gBAAAA,OAAAA,gBAASrB,GAAA,CAACsB,YAAAA,EAAAA,EAAAA,CAAAA;gBAAiBC,MAAAA,EAAO,QAAA;0BACpErD,aAAAA,CAAc;oBACbkC,EAAAA,EAAI,6CAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA;+BAGFL,GAAA,CAACmB,IAAAA,EAAAA;gBAAKC,IAAAA,EAAMpD,uBAAAA;gBAAyBwD,UAAU,EAAA,IAAA;AAACH,gBAAAA,OAAAA,gBAASrB,GAAA,CAACsB,YAAAA,EAAAA,EAAAA,CAAAA;gBAAiBC,MAAAA,EAAO,QAAA;0BAC/ErD,aAAAA,CAAc;oBACbkC,EAAAA,EAAI,+CAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA;;;;AAKV;;;;"}
1
+ {"version":3,"file":"AdminSeatInfo.mjs","sources":["../../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { Flex, Tooltip, Typography } from '@strapi/design-system';\nimport { WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport { useRBAC } from '../../../../../../../../admin/src/hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../../../../../admin/src/selectors';\nimport { useLicenseLimits } from '../../../../../hooks/useLicenseLimits';\n\nexport const AdminSeatInfoEE = () => {\n const { formatMessage } = useIntl();\n const { settings } = useSelector(selectAdminPermissions);\n const {\n isLoading: isRBACLoading,\n allowedActions: { canRead, canCreate, canUpdate, canDelete },\n } = useRBAC(settings?.users ?? {});\n const {\n license,\n isError,\n isLoading: isLicenseLoading,\n } = useLicenseLimits({\n // TODO: this creates a waterfall which we should avoid to render earlier, but for that\n // we will have to move away from data-fetching hooks to query functions.\n // Short-term we could at least implement a loader, for the user to have visual feedback\n // in case the requests take a while\n enabled: !isRBACLoading && canRead && canCreate && canUpdate && canDelete,\n });\n\n const isLoading = isRBACLoading || isLicenseLoading;\n\n if (isError || isLoading || !license) {\n return null;\n }\n\n const { enforcementUserCount, permittedSeats, seats } = license;\n\n // `permittedSeats` is the live enforcement limit and is wiped once the licence stops being\n // usable, so fall back to the retained `seats` to keep showing the count on an expired\n // licence. Enforcement itself (`licenseLimitStatus`, `shouldStopCreate`) still runs off\n // `permittedSeats` server-side and is untouched by this.\n const seatLimit = permittedSeats ?? seats;\n\n if (!seatLimit) {\n return null;\n }\n\n // The red count and the warning follow the same displayed limit. Server-side\n // `licenseLimitStatus` tracks only the live limit, so it is empty once the licence expires.\n const isOverLimit = enforcementUserCount > seatLimit;\n\n return (\n <Flex direction=\"column\" alignItems=\"start\" gap={2}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.application.admin-seats',\n defaultMessage: 'Admin seats',\n })}\n </Typography>\n <Flex gap={2}>\n <Flex>\n <Typography tag=\"p\">\n {formatMessage(\n {\n id: 'Settings.application.ee.admin-seats.count',\n defaultMessage: '<text>{enforcementUserCount}</text>/{permittedSeats}',\n },\n {\n permittedSeats: seatLimit,\n enforcementUserCount,\n text: (chunks: ReactNode) => (\n <Typography\n fontWeight=\"semiBold\"\n textColor={isOverLimit ? 'danger500' : undefined}\n >\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n {isOverLimit && (\n <Tooltip\n label={formatMessage({\n id: 'Settings.application.ee.admin-seats.at-limit-tooltip',\n defaultMessage: 'At limit: add seats to invite more users',\n })}\n >\n <WarningCircle width=\"1.4rem\" height=\"1.4rem\" fill=\"danger500\" />\n </Tooltip>\n )}\n </Flex>\n </Flex>\n );\n};\n"],"names":["AdminSeatInfoEE","formatMessage","useIntl","settings","useSelector","selectAdminPermissions","isLoading","isRBACLoading","allowedActions","canRead","canCreate","canUpdate","canDelete","useRBAC","users","license","isError","isLicenseLoading","useLicenseLimits","enabled","enforcementUserCount","permittedSeats","seats","seatLimit","isOverLimit","_jsxs","Flex","direction","alignItems","gap","_jsx","Typography","variant","textColor","id","defaultMessage","tag","text","chunks","fontWeight","undefined","Tooltip","label","WarningCircle","width","height","fill"],"mappings":";;;;;;;;;MAWaA,eAAAA,GAAkB,IAAA;IAC7B,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,QAAQ,EAAE,GAAGC,WAAAA,CAAYC,sBAAAA,CAAAA;AACjC,IAAA,MAAM,EACJC,SAAAA,EAAWC,aAAa,EACxBC,cAAAA,EAAgB,EAAEC,OAAO,EAAEC,SAAS,EAAEC,SAAS,EAAEC,SAAS,EAAE,EAC7D,GAAGC,OAAAA,CAAQV,QAAAA,EAAUW,SAAS,EAAC,CAAA;IAChC,MAAM,EACJC,OAAO,EACPC,OAAO,EACPV,SAAAA,EAAWW,gBAAgB,EAC5B,GAAGC,gBAAAA,CAAiB;;;;;AAKnBC,QAAAA,OAAAA,EAAS,CAACZ,aAAAA,IAAiBE,OAAAA,IAAWC,SAAAA,IAAaC,SAAAA,IAAaC;AAClE,KAAA,CAAA;AAEA,IAAA,MAAMN,YAAYC,aAAAA,IAAiBU,gBAAAA;IAEnC,IAAID,OAAAA,IAAWV,SAAAA,IAAa,CAACS,OAAAA,EAAS;QACpC,OAAO,IAAA;AACT,IAAA;AAEA,IAAA,MAAM,EAAEK,oBAAoB,EAAEC,cAAc,EAAEC,KAAK,EAAE,GAAGP,OAAAA;;;;;AAMxD,IAAA,MAAMQ,YAAYF,cAAAA,IAAkBC,KAAAA;AAEpC,IAAA,IAAI,CAACC,SAAAA,EAAW;QACd,OAAO,IAAA;AACT,IAAA;;;AAIA,IAAA,MAAMC,cAAcJ,oBAAAA,GAAuBG,SAAAA;AAE3C,IAAA,qBACEE,IAAA,CAACC,IAAAA,EAAAA;QAAKC,SAAAA,EAAU,QAAA;QAASC,UAAAA,EAAW,OAAA;QAAQC,GAAAA,EAAK,CAAA;;0BAC/CC,GAAA,CAACC,UAAAA,EAAAA;gBAAWC,OAAAA,EAAQ,OAAA;gBAAQC,SAAAA,EAAU,YAAA;0BACnChC,aAAAA,CAAc;oBACbiC,EAAAA,EAAI,kCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA;;0BAEFV,IAAA,CAACC,IAAAA,EAAAA;gBAAKG,GAAAA,EAAK,CAAA;;kCACTC,GAAA,CAACJ,IAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAAI,GAAA,CAACC,UAAAA,EAAAA;4BAAWK,GAAAA,EAAI,GAAA;sCACbnC,aAAAA,CACC;gCACEiC,EAAAA,EAAI,2CAAA;gCACJC,cAAAA,EAAgB;6BAClB,EACA;gCACEd,cAAAA,EAAgBE,SAAAA;AAChBH,gCAAAA,oBAAAA;gCACAiB,IAAAA,EAAM,CAACC,uBACLR,GAAA,CAACC,UAAAA,EAAAA;wCACCQ,UAAAA,EAAW,UAAA;AACXN,wCAAAA,SAAAA,EAAWT,cAAc,WAAA,GAAcgB,SAAAA;AAEtCF,wCAAAA,QAAAA,EAAAA;;AAGP,6BAAA;;;AAILd,oBAAAA,WAAAA,kBACCM,GAAA,CAACW,OAAAA,EAAAA;AACCC,wBAAAA,KAAAA,EAAOzC,aAAAA,CAAc;4BACnBiC,EAAAA,EAAI,sDAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAL,GAAA,CAACa,aAAAA,EAAAA;4BAAcC,KAAAA,EAAM,QAAA;4BAASC,MAAAA,EAAO,QAAA;4BAASC,IAAAA,EAAK;;;;;;;AAM/D;;;;"}
@@ -0,0 +1,473 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var designSystem = require('@strapi/design-system');
5
+ var icons = require('@strapi/icons');
6
+ var reactIntl = require('react-intl');
7
+ var PlanCard = require('../../../../../../../../admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.js');
8
+ var admin = require('../../../../../../../../admin/src/services/admin.js');
9
+ var getProjectType = require('../../../../../../../../shared/utils/get-project-type.js');
10
+ var useLicenseLimits = require('../../../../../hooks/useLicenseLimits.js');
11
+ var AdminSeatInfo = require('./AdminSeatInfo.js');
12
+ var AIUsage = require('./AIUsage.js');
13
+
14
+ // Feature key -> display label. Labels themselves resolve through i18n; only the
15
+ // mapping of known license feature keys lives here.
16
+ const FEATURE_LABELS = {
17
+ sso: {
18
+ id: 'Settings.license.feature.sso',
19
+ defaultMessage: 'Single Sign-On'
20
+ },
21
+ 'cms-advanced-preview': {
22
+ id: 'Settings.license.feature.cms-advanced-preview',
23
+ defaultMessage: 'Live Preview'
24
+ },
25
+ 'cms-content-releases': {
26
+ id: 'Settings.license.feature.cms-content-releases',
27
+ defaultMessage: 'Releases'
28
+ },
29
+ 'review-workflows': {
30
+ id: 'Settings.license.feature.review-workflows',
31
+ defaultMessage: 'Review Workflows'
32
+ },
33
+ 'cms-content-history': {
34
+ id: 'Settings.license.feature.cms-content-history',
35
+ defaultMessage: 'Content History'
36
+ },
37
+ 'audit-logs': {
38
+ id: 'Settings.license.feature.audit-logs',
39
+ defaultMessage: 'Audit Logs'
40
+ }
41
+ };
42
+ // Entitlement limit key -> display label. Only used when a feature has more than one limit and
43
+ // each value needs to be told apart; a single limit is rendered on its own, unlabelled.
44
+ const LIMIT_LABELS = {
45
+ numberOfWorkflows: {
46
+ id: 'Settings.license.limit.numberOfWorkflows',
47
+ defaultMessage: 'Workflows'
48
+ },
49
+ stagesPerWorkflow: {
50
+ id: 'Settings.license.limit.stagesPerWorkflow',
51
+ defaultMessage: 'Stages per workflow'
52
+ },
53
+ maximumReleases: {
54
+ id: 'Settings.license.limit.maximumReleases',
55
+ defaultMessage: 'Releases'
56
+ },
57
+ retentionDays: {
58
+ id: 'Settings.license.limit.retentionDays',
59
+ defaultMessage: 'Retention'
60
+ }
61
+ };
62
+ /**
63
+ * Shown instead of `Active` while a trial is running. Deliberately keyed on an active
64
+ * licence: once a trial lapses the licence stops validating and `isTrial` goes false, so
65
+ * "In Trial" would be claiming a subscription the instance no longer has.
66
+ */ const TRIAL_BADGE = {
67
+ variant: 'alternative',
68
+ label: {
69
+ id: 'Settings.license.status.in-trial',
70
+ defaultMessage: 'In Trial'
71
+ }
72
+ };
73
+ const STATUS_BADGE = {
74
+ active: {
75
+ variant: 'success',
76
+ label: {
77
+ id: 'Settings.license.status.active',
78
+ defaultMessage: 'Active'
79
+ }
80
+ },
81
+ expired: {
82
+ variant: 'danger',
83
+ label: {
84
+ id: 'Settings.license.status.expired',
85
+ defaultMessage: 'Expired'
86
+ }
87
+ },
88
+ unknown: {
89
+ variant: 'warning',
90
+ label: {
91
+ id: 'Settings.license.status.unknown',
92
+ defaultMessage: 'Unknown'
93
+ }
94
+ },
95
+ // A license-gated component only mounts for EE instances, so `none` should never occur here
96
+ // in practice. Fall back to the same treatment as `unknown` rather than rendering nothing.
97
+ none: {
98
+ variant: 'warning',
99
+ label: {
100
+ id: 'Settings.license.status.unknown',
101
+ defaultMessage: 'Unknown'
102
+ }
103
+ }
104
+ };
105
+ /**
106
+ * Absolute dates are rendered as `yyyy/mm/dd` rather than through `formatDate`, so the
107
+ * value is unambiguous in every locale (a locale-ordered `03/04` could be either March 4th
108
+ * or April 3rd). Relative values, like the last license check, stay relative per the design.
109
+ */ const formatAbsoluteDate = (value)=>{
110
+ const date = new Date(value);
111
+ if (Number.isNaN(date.getTime())) {
112
+ return '';
113
+ }
114
+ // UTC, not the local calendar: license dates are UTC-midnight instants, which local getters
115
+ // turn into the previous day anywhere west of UTC.
116
+ const month = `${date.getUTCMonth() + 1}`.padStart(2, '0');
117
+ const day = `${date.getUTCDate()}`.padStart(2, '0');
118
+ return `${date.getUTCFullYear()}/${month}/${day}`;
119
+ };
120
+ const LicenseInfoEE = ()=>{
121
+ const { formatMessage, formatRelativeTime } = reactIntl.useIntl();
122
+ const { license, isLoading, isError } = useLicenseLimits.useLicenseLimits();
123
+ const { data: trialTimeLeft } = admin.useGetLicenseTrialTimeLeftQuery(undefined, {
124
+ skip: !license?.isTrial
125
+ });
126
+ if (isLoading) {
127
+ return null;
128
+ }
129
+ if (isError || !license) {
130
+ return null;
131
+ }
132
+ const { licenseMode, licenseStatus, renewalDate, subscriptionId, lastRegistrySyncAt, expireAt, isTrial, planEntitlements, usingCachedLicense, registrySyncError, registrySyncErrorKind } = license;
133
+ const licensedPlan = getProjectType.getLicensedPlan({
134
+ licenseStatus,
135
+ type: license.type,
136
+ planPriceId: license.planPriceId
137
+ });
138
+ const isGrowth = licensedPlan === 'Growth';
139
+ // Retention is shown in days (the design lists "30 days retention" / "90 days
140
+ // retention"); only sentinel-sized values collapse to years, so a licence with
141
+ // e.g. 1500 days does not read as a meaningless number.
142
+ const formatDays = (value)=>{
143
+ if (value >= 365) {
144
+ return formatMessage({
145
+ id: 'Settings.license.limit.years',
146
+ defaultMessage: '~{years, plural, one {# year} other {# years}}'
147
+ }, {
148
+ years: Math.round(value / 365)
149
+ });
150
+ }
151
+ return formatMessage({
152
+ id: 'Settings.license.limit.days',
153
+ defaultMessage: '{days, plural, one {# day retention} other {# days retention}}'
154
+ }, {
155
+ days: value
156
+ });
157
+ };
158
+ const formatLimitValue = (limit)=>{
159
+ if (limit.value === null) {
160
+ return formatMessage({
161
+ id: 'Settings.license.unlimited',
162
+ defaultMessage: 'Unlimited'
163
+ });
164
+ }
165
+ if (limit.unit === 'days') {
166
+ return formatDays(limit.value);
167
+ }
168
+ return formatMessage({
169
+ id: 'Settings.license.limit.count',
170
+ defaultMessage: '{value, number}'
171
+ }, {
172
+ value: limit.value
173
+ });
174
+ };
175
+ // Shown relative ("2 hours ago") rather than as an absolute timestamp, matching how the rest of
176
+ // the admin surfaces recency.
177
+ const formatLastCheck = (timestamp)=>{
178
+ if (typeof timestamp !== 'number') {
179
+ return formatMessage({
180
+ id: 'Settings.license.checkin.never',
181
+ defaultMessage: 'Not yet'
182
+ });
183
+ }
184
+ const diffMs = timestamp - Date.now();
185
+ // Minutes decide the unit: rounding hours first turned 31 minutes into "1 hour ago".
186
+ const diffMinutes = Math.round(diffMs / (60 * 1000));
187
+ if (Math.abs(diffMinutes) < 60) {
188
+ return formatRelativeTime(diffMinutes, 'minute', {
189
+ numeric: 'auto'
190
+ });
191
+ }
192
+ return formatRelativeTime(Math.round(diffMs / (60 * 60 * 1000)), 'hour', {
193
+ numeric: 'auto'
194
+ });
195
+ };
196
+ const currentPlanValue = licenseMode === 'offline' ? `${licensedPlan} - offline` : licensedPlan;
197
+ const dateLabel = isTrial ? {
198
+ id: 'Settings.license.trial-end-date',
199
+ defaultMessage: 'trial end date'
200
+ } : {
201
+ id: 'Settings.license.renewal-date',
202
+ defaultMessage: 'renewal date'
203
+ };
204
+ const rawDateValue = isTrial ? trialTimeLeft?.trialEndsAt ?? null : renewalDate;
205
+ const formattedDate = rawDateValue ? formatAbsoluteDate(rawDateValue) : null;
206
+ const statusBadge = licenseStatus === 'active' && isTrial ? TRIAL_BADGE : STATUS_BADGE[licenseStatus];
207
+ /**
208
+ * `unknown` covers two very different situations that used to render identically: we could
209
+ * not reach the registry (the licence is probably fine, we are running on the cached copy),
210
+ * or the registry answered and refused the licence. Only the second one needs the customer
211
+ * to do something, so say which it is.
212
+ */ const registryNotice = usingCachedLicense ? {
213
+ id: 'Settings.license.registry.cached',
214
+ defaultMessage: "Couldn't reach the license registry. Showing the last license we retrieved."
215
+ } : // `usingCachedLicense` is false even though the cause was an outage rather than a
216
+ // refusal. Read the recorded kind instead of inferring the cause from the cache.
217
+ registrySyncErrorKind === 'unreachable' && licenseStatus !== 'active' ? {
218
+ id: 'Settings.license.registry.unreachable',
219
+ defaultMessage: "Couldn't reach the license registry."
220
+ } : registrySyncError && licenseStatus !== 'active' ? {
221
+ id: 'Settings.license.registry.rejected',
222
+ defaultMessage: 'The license registry could not validate this license.'
223
+ } : null;
224
+ const checkinLine = licenseMode === 'offline' ? expireAt ? formatMessage({
225
+ id: 'Settings.license.valid-until',
226
+ defaultMessage: 'License valid until {date}'
227
+ }, {
228
+ date: formatAbsoluteDate(expireAt)
229
+ }) : null : formatMessage({
230
+ id: 'Settings.license.last-check',
231
+ defaultMessage: 'Last license validity check {relative}'
232
+ }, {
233
+ relative: formatLastCheck(lastRegistrySyncAt)
234
+ });
235
+ const renderLimitCell = (entitlement)=>{
236
+ const { available, limits } = entitlement;
237
+ if (limits.length === 0) {
238
+ return available ? /*#__PURE__*/ jsxRuntime.jsx(icons.Check, {
239
+ "aria-label": formatMessage({
240
+ id: 'Settings.license.yes',
241
+ defaultMessage: 'Yes'
242
+ }),
243
+ fill: "success600"
244
+ }) : /*#__PURE__*/ jsxRuntime.jsx(icons.Cross, {
245
+ "aria-label": formatMessage({
246
+ id: 'Settings.license.no',
247
+ defaultMessage: 'No'
248
+ }),
249
+ fill: "danger600"
250
+ });
251
+ }
252
+ if (limits.length === 1) {
253
+ return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
254
+ children: formatLimitValue(limits[0])
255
+ });
256
+ }
257
+ return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
258
+ direction: "column",
259
+ alignItems: "end",
260
+ gap: 1,
261
+ children: limits.map((limit)=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
262
+ variant: "pi",
263
+ children: LIMIT_LABELS[limit.key] ? `${formatMessage(LIMIT_LABELS[limit.key])}: ${formatLimitValue(limit)}` : formatLimitValue(limit)
264
+ }, limit.key))
265
+ });
266
+ };
267
+ return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
268
+ direction: "column",
269
+ alignItems: "stretch",
270
+ gap: 6,
271
+ children: [
272
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
273
+ alignItems: "flex-start",
274
+ gap: 5,
275
+ tag: "dl",
276
+ children: [
277
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
278
+ direction: "column",
279
+ alignItems: "stretch",
280
+ gap: 5,
281
+ flex: "1",
282
+ children: [
283
+ /*#__PURE__*/ jsxRuntime.jsx(PlanCard.PlanDetail, {
284
+ label: {
285
+ id: 'Settings.application.plan.current',
286
+ defaultMessage: 'current plan'
287
+ },
288
+ value: currentPlanValue
289
+ }),
290
+ !isGrowth && formattedDate && /*#__PURE__*/ jsxRuntime.jsx(PlanCard.PlanDetail, {
291
+ label: dateLabel,
292
+ value: formattedDate
293
+ }),
294
+ /*#__PURE__*/ jsxRuntime.jsx(AdminSeatInfo.AdminSeatInfoEE, {}),
295
+ window.strapi.ai?.enabled !== false && /*#__PURE__*/ jsxRuntime.jsx(AIUsage.AIUsage, {
296
+ isTrial: isTrial
297
+ })
298
+ ]
299
+ }),
300
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
301
+ direction: "column",
302
+ alignItems: "stretch",
303
+ gap: 5,
304
+ flex: "1",
305
+ children: [
306
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
307
+ direction: "column",
308
+ alignItems: "start",
309
+ gap: 2,
310
+ children: [
311
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
312
+ gap: 2,
313
+ alignItems: "center",
314
+ tag: "dt",
315
+ children: [
316
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
317
+ variant: "sigma",
318
+ textColor: "neutral600",
319
+ children: formatMessage({
320
+ id: 'Settings.license.status',
321
+ defaultMessage: 'license status'
322
+ })
323
+ }),
324
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Tooltip, {
325
+ label: formatMessage({
326
+ id: 'Settings.license.status-tooltip',
327
+ defaultMessage: 'Strapi checks the license status every 12 hours and on every build.'
328
+ }),
329
+ children: /*#__PURE__*/ jsxRuntime.jsx(icons.Information, {
330
+ width: "1.4rem",
331
+ height: "1.4rem",
332
+ fill: "neutral500"
333
+ })
334
+ })
335
+ ]
336
+ }),
337
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
338
+ direction: "column",
339
+ alignItems: "start",
340
+ gap: 2,
341
+ tag: "dd",
342
+ children: [
343
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Status, {
344
+ size: "S",
345
+ variant: statusBadge.variant,
346
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
347
+ variant: "omega",
348
+ fontWeight: "bold",
349
+ children: formatMessage(statusBadge.label)
350
+ })
351
+ }),
352
+ checkinLine && /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
353
+ gap: 1,
354
+ alignItems: "center",
355
+ children: [
356
+ /*#__PURE__*/ jsxRuntime.jsx(icons.ClockCounterClockwise, {
357
+ width: "1.2rem",
358
+ height: "1.2rem",
359
+ fill: "neutral500"
360
+ }),
361
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
362
+ variant: "pi",
363
+ textColor: "neutral500",
364
+ children: checkinLine
365
+ })
366
+ ]
367
+ }),
368
+ registryNotice && /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
369
+ gap: 1,
370
+ alignItems: "center",
371
+ children: [
372
+ /*#__PURE__*/ jsxRuntime.jsx(icons.WarningCircle, {
373
+ width: "1.2rem",
374
+ height: "1.2rem",
375
+ fill: "warning600"
376
+ }),
377
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
378
+ variant: "pi",
379
+ textColor: "warning600",
380
+ children: formatMessage(registryNotice)
381
+ })
382
+ ]
383
+ })
384
+ ]
385
+ })
386
+ ]
387
+ }),
388
+ isGrowth && formattedDate && /*#__PURE__*/ jsxRuntime.jsx(PlanCard.PlanDetail, {
389
+ label: dateLabel,
390
+ value: formattedDate
391
+ }),
392
+ subscriptionId && /*#__PURE__*/ jsxRuntime.jsx(PlanCard.PlanDetail, {
393
+ label: {
394
+ id: 'Settings.license.subscription',
395
+ defaultMessage: 'Subscription ID'
396
+ },
397
+ value: subscriptionId
398
+ })
399
+ ]
400
+ })
401
+ ]
402
+ }),
403
+ planEntitlements.length > 0 && /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
404
+ direction: "column",
405
+ alignItems: "stretch",
406
+ gap: 4,
407
+ children: [
408
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Divider, {}),
409
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
410
+ variant: "sigma",
411
+ textColor: "neutral600",
412
+ children: formatMessage({
413
+ id: 'Settings.license.entitlements',
414
+ defaultMessage: 'plan entitlements'
415
+ })
416
+ }),
417
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Table, {
418
+ colCount: 2,
419
+ rowCount: planEntitlements.length,
420
+ children: [
421
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Thead, {
422
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Tr, {
423
+ children: [
424
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Th, {
425
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
426
+ variant: "sigma",
427
+ children: formatMessage({
428
+ id: 'Settings.license.feature',
429
+ defaultMessage: 'Feature'
430
+ })
431
+ })
432
+ }),
433
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Th, {
434
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.VisuallyHidden, {
435
+ children: formatMessage({
436
+ id: 'Settings.license.limit',
437
+ defaultMessage: 'Limit'
438
+ })
439
+ })
440
+ })
441
+ ]
442
+ })
443
+ }),
444
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Tbody, {
445
+ children: planEntitlements.map((entitlement)=>{
446
+ const label = FEATURE_LABELS[entitlement.feature];
447
+ return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Tr, {
448
+ children: [
449
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Td, {
450
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
451
+ children: label ? formatMessage(label) : entitlement.feature
452
+ })
453
+ }),
454
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Td, {
455
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
456
+ justifyContent: "flex-end",
457
+ children: renderLimitCell(entitlement)
458
+ })
459
+ })
460
+ ]
461
+ }, entitlement.feature);
462
+ })
463
+ })
464
+ ]
465
+ })
466
+ ]
467
+ })
468
+ ]
469
+ });
470
+ };
471
+
472
+ exports.LicenseInfoEE = LicenseInfoEE;
473
+ //# sourceMappingURL=LicenseInfo.js.map