@strapi/admin 4.13.0-beta.0 → 4.13.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 (156) hide show
  1. package/admin/src/components/NpsSurvey/hooks/useNpsSurveySettings.js +17 -0
  2. package/admin/src/components/NpsSurvey/index.js +365 -0
  3. package/admin/src/content-manager/components/DynamicZone/components/DynamicZoneLabel.js +1 -1
  4. package/admin/src/content-manager/components/EditViewDataManagerProvider/reducer.js +7 -9
  5. package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/cleanData.js +6 -0
  6. package/admin/src/content-manager/components/Filter/Filter.js +21 -23
  7. package/admin/src/content-manager/components/InputUID/index.js +222 -216
  8. package/admin/src/content-manager/components/RelationInput/RelationInput.js +4 -0
  9. package/admin/src/content-manager/components/RepeatableComponent/index.js +32 -2
  10. package/admin/src/content-manager/components/Wysiwyg/Editor.js +432 -68
  11. package/admin/src/content-manager/components/Wysiwyg/WysiwygNav.js +7 -30
  12. package/admin/src/content-manager/components/Wysiwyg/WysiwygStyles.js +0 -7
  13. package/admin/src/content-manager/components/Wysiwyg/index.js +147 -152
  14. package/admin/src/content-manager/constants/attributes.js +3 -0
  15. package/admin/src/content-manager/hooks/useAllowedAttributes.js +3 -7
  16. package/admin/src/content-manager/pages/CollectionTypeRecursivePath/index.js +1 -1
  17. package/admin/src/content-manager/pages/ListSettingsView/index.js +16 -41
  18. package/admin/src/content-manager/pages/ListView/components/ViewSettingsMenu/index.js +7 -1
  19. package/admin/src/content-manager/pages/ListView/index.js +14 -5
  20. package/admin/src/pages/Admin/index.js +3 -1
  21. package/admin/src/pages/AuthPage/components/Register/index.js +5 -0
  22. package/admin/src/pages/MarketplacePage/index.js +0 -1
  23. package/admin/src/pages/SettingsPage/components/SettingsNav/index.js +3 -3
  24. package/admin/src/pages/SettingsPage/index.js +16 -26
  25. package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/index.js +24 -31
  26. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/index.js +69 -35
  27. package/admin/src/pages/SettingsPage/pages/TransferTokens/ListView/index.js +11 -6
  28. package/admin/src/pages/SettingsPage/pages/Users/EditPage/index.js +2 -0
  29. package/admin/src/pages/SettingsPage/pages/Users/ListPage/index.js +1 -0
  30. package/admin/src/plugins.js +7 -8
  31. package/admin/src/translations/en.json +7 -0
  32. package/build/{1049.f76cb14b.chunk.js → 1049.ec69f5e0.chunk.js} +1 -1
  33. package/build/1227.9f37e1dc.chunk.js +1 -0
  34. package/build/{1386.879bcd90.chunk.js → 1386.ea73b677.chunk.js} +1 -1
  35. package/build/1504.eff012f7.chunk.js +95 -0
  36. package/build/{2225.c6244756.chunk.js → 2225.649fb7bc.chunk.js} +11 -11
  37. package/build/2237.b832ae6e.chunk.js +114 -0
  38. package/build/2379.1f98a31a.chunk.js +1 -0
  39. package/build/2395.0e5e8ded.chunk.js +26 -0
  40. package/build/2801.8e1aa82a.chunk.js +1 -0
  41. package/build/{3483.03c24f96.chunk.js → 3483.19381b40.chunk.js} +1 -1
  42. package/build/{4174.fa8f9954.chunk.js → 4174.f1f39e40.chunk.js} +1 -1
  43. package/build/{4546.ff09eeda.chunk.js → 4546.a5946d22.chunk.js} +1 -1
  44. package/build/4724.aea5c8c1.chunk.js +6 -0
  45. package/build/502.7bba43b1.chunk.js +1 -0
  46. package/build/7464.eb057bec.chunk.js +1 -0
  47. package/build/8276.be3ed581.chunk.js +26 -0
  48. package/build/{Admin-authenticatedApp.53a24d28.chunk.js → Admin-authenticatedApp.73b6f8af.chunk.js} +2 -2
  49. package/build/{Admin_InternalErrorPage.f45f2462.chunk.js → Admin_InternalErrorPage.38155af3.chunk.js} +1 -1
  50. package/build/{Admin_homePage.ac9dfb86.chunk.js → Admin_homePage.6f128523.chunk.js} +1 -1
  51. package/build/{Admin_marketplace.dde9c148.chunk.js → Admin_marketplace.061a6e5a.chunk.js} +2 -2
  52. package/build/{Admin_pluginsPage.bbe79434.chunk.js → Admin_pluginsPage.16f837b8.chunk.js} +1 -1
  53. package/build/{Admin_profilePage.192edc52.chunk.js → Admin_profilePage.678bce24.chunk.js} +2 -2
  54. package/build/Admin_settingsPage.af7309e4.chunk.js +111 -0
  55. package/build/{Upload_ConfigureTheView.345ac1e0.chunk.js → Upload_ConfigureTheView.3fc1c100.chunk.js} +1 -1
  56. package/build/admin-app.d63bd229.chunk.js +36 -0
  57. package/build/{admin-edit-roles-page.6d567273.chunk.js → admin-edit-roles-page.38a6c863.chunk.js} +3 -3
  58. package/build/admin-edit-users.545fc882.chunk.js +10 -0
  59. package/build/{admin-roles-list.23ddff26.chunk.js → admin-roles-list.1e2e814d.chunk.js} +1 -1
  60. package/build/{admin-users.123aa08e.chunk.js → admin-users.b8ea5677.chunk.js} +2 -2
  61. package/build/{api-tokens-create-page.46c2ea84.chunk.js → api-tokens-create-page.e0c15627.chunk.js} +1 -1
  62. package/build/{api-tokens-edit-page.58139df9.chunk.js → api-tokens-edit-page.9f2dce47.chunk.js} +1 -1
  63. package/build/api-tokens-list-page.d747051c.chunk.js +16 -0
  64. package/build/{audit-logs-settings-page.0f73ccf8.chunk.js → audit-logs-settings-page.96f9d608.chunk.js} +1 -1
  65. package/build/content-manager.2d676432.chunk.js +1097 -0
  66. package/build/{content-type-builder-list-view.bf9be456.chunk.js → content-type-builder-list-view.b71cf240.chunk.js} +1 -1
  67. package/build/{content-type-builder.cd999f6e.chunk.js → content-type-builder.e5669749.chunk.js} +2 -2
  68. package/build/email-settings-page.2809f0bf.chunk.js +11 -0
  69. package/build/en-json.e12fd5fc.chunk.js +1 -0
  70. package/build/{i18n-settings-page.47f78016.chunk.js → i18n-settings-page.5f716172.chunk.js} +1 -1
  71. package/build/index.html +1 -1
  72. package/build/main.c6c9e04c.js +2859 -0
  73. package/build/review-workflows-settings-create-view.4a156a19.chunk.js +1 -0
  74. package/build/review-workflows-settings-edit-view.ce984d1f.chunk.js +1 -0
  75. package/build/review-workflows-settings-list-view.419b8deb.chunk.js +56 -0
  76. package/build/{runtime~main.b16af570.js → runtime~main.3d78854e.js} +2 -2
  77. package/build/{sso-settings-page.12b6d8ae.chunk.js → sso-settings-page.45153df5.chunk.js} +1 -1
  78. package/build/{transfer-tokens-create-page.1597e6ab.chunk.js → transfer-tokens-create-page.ebba16d8.chunk.js} +1 -1
  79. package/build/{transfer-tokens-edit-page.8741529f.chunk.js → transfer-tokens-edit-page.d7bb2b3e.chunk.js} +1 -1
  80. package/build/transfer-tokens-list-page.cfe1736c.chunk.js +16 -0
  81. package/build/{upload-settings.7f93d4c0.chunk.js → upload-settings.cc5ad813.chunk.js} +1 -1
  82. package/build/{upload.37488080.chunk.js → upload.756efc28.chunk.js} +1 -1
  83. package/build/users-advanced-settings-page.818d84eb.chunk.js +9 -0
  84. package/build/users-email-settings-page.c1967c09.chunk.js +9 -0
  85. package/build/users-providers-settings-page.11893e08.chunk.js +14 -0
  86. package/build/users-roles-settings-page.2b051e6a.chunk.js +55 -0
  87. package/build/{webhook-edit-page.6cb479ff.chunk.js → webhook-edit-page.de45c635.chunk.js} +2 -2
  88. package/build/{webhook-list-page.65e1b5bb.chunk.js → webhook-list-page.ca91df8b.chunk.js} +1 -1
  89. package/ee/admin/content-manager/pages/EditView/InformationBox/components/AssigneeSelect/AssigneeSelect.js +69 -71
  90. package/ee/admin/content-manager/pages/EditView/InformationBox/components/StageSelect/StageSelect.js +3 -1
  91. package/ee/admin/content-manager/pages/ListView/ReviewWorkflowsColumn/ReviewWorkflowsAssigneeEE.js +8 -38
  92. package/ee/admin/hooks/useAuthProviders.js +25 -0
  93. package/ee/admin/hooks/{useLicenseLimitNotification/index.js → useLicenseLimitNotification.js} +2 -4
  94. package/ee/admin/hooks/{useLicenseLimits/useLicenseLimits.js → useLicenseLimits.js} +4 -1
  95. package/ee/admin/pages/AuthPage/components/Login/index.js +8 -4
  96. package/ee/admin/pages/AuthPage/components/Providers/index.js +8 -5
  97. package/ee/admin/pages/HomePage/index.js +1 -1
  98. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/pages/CreateView/CreateView.js +1 -1
  99. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/pages/EditView/EditView.js +1 -1
  100. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/pages/ListView/ListView.js +1 -1
  101. package/ee/admin/pages/SettingsPage/pages/Users/ListPage/CreateAction/index.js +1 -1
  102. package/ee/admin/pages/SettingsPage/pages/Users/ListPage/index.js +1 -1
  103. package/index.js +2 -6
  104. package/package.json +9 -9
  105. package/scripts/build.js +15 -15
  106. package/scripts/create-dev-plugins-file.js +5 -38
  107. package/server/controllers/role.js +2 -0
  108. package/server/controllers/user.js +2 -0
  109. package/server/services/permission/permissions-manager/index.js +3 -1
  110. package/server/services/permission/permissions-manager/sanitize.js +7 -7
  111. package/server/services/permission/permissions-manager/validate.js +218 -0
  112. package/utils/create-cache-dir.js +62 -16
  113. package/utils/create-plugins-exclude-path.js +3 -23
  114. package/utils/get-plugins.js +110 -0
  115. package/utils/index.js +1 -1
  116. package/webpack.config.js +10 -13
  117. package/admin/src/content-manager/components/Wysiwyg/EditorStylesContainer.js +0 -344
  118. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/api.js +0 -23
  119. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/prefixAllUrls.js +0 -17
  120. package/admin/src/pages/SettingsPage/utils/createSectionsRoutes.js +0 -11
  121. package/admin/src/pages/SettingsPage/utils/getSectionsToDisplay.js +0 -5
  122. package/admin/src/pages/SettingsPage/utils/index.js +0 -2
  123. package/build/1227.32fe57ce.chunk.js +0 -1
  124. package/build/2379.f1641312.chunk.js +0 -1
  125. package/build/2395.46f8d0c1.chunk.js +0 -26
  126. package/build/2801.5cef5ec8.chunk.js +0 -1
  127. package/build/3929.5632f24d.chunk.js +0 -114
  128. package/build/4724.baf7c5b1.chunk.js +0 -6
  129. package/build/502.8ae8ef60.chunk.js +0 -1
  130. package/build/5542.2415a393.chunk.js +0 -63
  131. package/build/7464.3e64a1d5.chunk.js +0 -1
  132. package/build/8276.10a3f883.chunk.js +0 -26
  133. package/build/Admin_settingsPage.97cb9d41.chunk.js +0 -111
  134. package/build/admin-app.91898385.chunk.js +0 -36
  135. package/build/admin-edit-users.79eeb125.chunk.js +0 -10
  136. package/build/api-tokens-list-page.505bf7e0.chunk.js +0 -16
  137. package/build/content-manager.7f96a2f1.chunk.js +0 -1097
  138. package/build/email-settings-page.d494d1eb.chunk.js +0 -11
  139. package/build/en-json.4f06fe03.chunk.js +0 -1
  140. package/build/main.40b94779.js +0 -2859
  141. package/build/review-workflows-settings-create-view.cb08cfa2.chunk.js +0 -1
  142. package/build/review-workflows-settings-edit-view.3c7cbe63.chunk.js +0 -1
  143. package/build/review-workflows-settings-list-view.1611dc1f.chunk.js +0 -56
  144. package/build/transfer-tokens-list-page.22147d2c.chunk.js +0 -16
  145. package/build/users-advanced-settings-page.f0760eb8.chunk.js +0 -9
  146. package/build/users-email-settings-page.ff4b32f3.chunk.js +0 -9
  147. package/build/users-providers-settings-page.48de0306.chunk.js +0 -14
  148. package/build/users-roles-settings-page.9d9a1eff.chunk.js +0 -30
  149. package/ee/admin/hooks/index.js +0 -4
  150. package/ee/admin/hooks/useAuthProviders/index.js +0 -50
  151. package/ee/admin/hooks/useAuthProviders/reducer.js +0 -26
  152. package/ee/admin/hooks/useLicenseLimits/index.js +0 -1
  153. package/scripts/create-plugins-file.js +0 -92
  154. package/utils/get-plugins-path.js +0 -41
  155. /package/ee/admin/hooks/{useLicenseLimits/__mocks__/index.js → __mocks__/useLicenseLimits.js} +0 -0
  156. /package/server/services/permission/permissions-manager/{query-builers.js → query-builders.js} +0 -0
package/utils/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const createCacheDir = require('./create-cache-dir');
3
+ const { createCacheDir } = require('./create-cache-dir');
4
4
  const getCustomWebpackConfig = require('./get-custom-webpack-config');
5
5
  const shouldBuildAdmin = require('./should-build-admin');
6
6
  const watchAdminFiles = require('./watch-admin-files');
package/webpack.config.js CHANGED
@@ -4,24 +4,23 @@ const path = require('path');
4
4
  const webpack = require('webpack');
5
5
  const MiniCssExtractPlugin = require('mini-css-extract-plugin');
6
6
  const ForkTsCheckerPlugin = require('fork-ts-checker-webpack-plugin');
7
+ const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin');
7
8
  const HtmlWebpackPlugin = require('html-webpack-plugin');
8
9
  const { ESBuildMinifyPlugin } = require('esbuild-loader');
9
10
  const WebpackBar = require('webpackbar');
10
- const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin');
11
11
  const browserslist = require('browserslist');
12
12
  const browserslistToEsbuild = require('browserslist-to-esbuild');
13
13
 
14
14
  const alias = require('./webpack.alias');
15
15
  const getClientEnvironment = require('./env');
16
- const createPluginsExcludePath = require('./utils/create-plugins-exclude-path');
16
+ const { createPluginsExcludePath } = require('./utils/create-plugins-exclude-path');
17
17
 
18
18
  module.exports = ({
19
- cacheDir,
20
19
  dest,
21
20
  entry,
22
21
  env,
23
22
  optimize,
24
- pluginsPath,
23
+ plugins,
25
24
  options = {
26
25
  backend: 'http://localhost:1337',
27
26
  adminPath: '/admin/',
@@ -45,7 +44,11 @@ module.exports = ({
45
44
  ]
46
45
  : [];
47
46
 
48
- const excludeRegex = createPluginsExcludePath(pluginsPath);
47
+ const nodeModulePluginPaths = Object.values(plugins)
48
+ .filter((plugin) => plugin.info?.packageName || plugin.info?.required)
49
+ .map((plugin) => plugin.pathToPlugin);
50
+
51
+ const excludeRegex = createPluginsExcludePath(nodeModulePluginPaths);
49
52
 
50
53
  // Ensure we use the config in this directory, even if run with a different
51
54
  // working directory
@@ -84,7 +87,6 @@ module.exports = ({
84
87
  {
85
88
  test: /\.tsx?$/,
86
89
  loader: require.resolve('esbuild-loader'),
87
- include: [cacheDir, ...pluginsPath],
88
90
  exclude: excludeRegex,
89
91
  options: {
90
92
  loader: 'tsx',
@@ -92,8 +94,8 @@ module.exports = ({
92
94
  },
93
95
  },
94
96
  {
95
- test: /\.m?jsx?$/,
96
- include: [cacheDir, ...pluginsPath],
97
+ test: /\.(js|jsx|mjs)$/,
98
+ exclude: excludeRegex,
97
99
  use: {
98
100
  loader: require.resolve('esbuild-loader'),
99
101
  options: {
@@ -150,10 +152,7 @@ module.exports = ({
150
152
  },
151
153
  resolve: {
152
154
  alias,
153
- symlinks: false,
154
155
  extensions: ['.js', '.jsx', '.react.js', '.ts', '.tsx'],
155
- mainFields: ['browser', 'module', 'jsnext:main', 'main'],
156
- modules: ['node_modules', path.resolve(__dirname, 'node_modules')],
157
156
  },
158
157
  plugins: [
159
158
  new HtmlWebpackPlugin({
@@ -167,9 +166,7 @@ module.exports = ({
167
166
  configFile: tsConfigFilePath,
168
167
  },
169
168
  }),
170
-
171
169
  !isProduction && process.env.REACT_REFRESH !== 'false' && new ReactRefreshWebpackPlugin(),
172
-
173
170
  ...webpackPlugins,
174
171
  ].filter(Boolean),
175
172
  };
@@ -1,344 +0,0 @@
1
- import styled from 'styled-components';
2
-
3
- /* eslint-disable */
4
- /* stylelint-disable */
5
- export const EditorStylesContainer = styled.div`
6
- cursor: ${({ disabled }) => (disabled ? 'not-allowed !important' : 'auto')};
7
- height: 100%;
8
- /* BASICS */
9
- .CodeMirror-placeholder {
10
- color: ${({ theme }) => theme.colors.neutral600} !important;
11
- }
12
-
13
- .CodeMirror {
14
- /* Set height, width, borders, and global font properties here */
15
- font-size: ${14 / 16}rem;
16
- height: ${({ isExpandMode }) => (isExpandMode ? '100%' : '290px')};
17
- color: ${({ theme }) => theme.colors.neutral800};
18
- direction: ltr;
19
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell,
20
- 'Open Sans', 'Helvetica Neue', sans-serif;
21
- }
22
-
23
- /* PADDING */
24
-
25
- .CodeMirror-lines {
26
- padding: ${({ theme }) => `${theme.spaces[3]} ${theme.spaces[4]}`};
27
- /* Vertical padding around content */
28
- }
29
-
30
- .CodeMirror-scrollbar-filler,
31
- .CodeMirror-gutter-filler {
32
- /* The little square between H and V scrollbars */
33
- background-color: ${({ theme }) => `${theme.colors.neutral0}`};
34
- }
35
-
36
- /* GUTTER */
37
-
38
- .CodeMirror-gutters {
39
- border-right: 1px solid #ddd;
40
- background-color: #f7f7f7;
41
- white-space: nowrap;
42
- }
43
- .CodeMirror-linenumbers {
44
- }
45
- .CodeMirror-linenumber {
46
- padding: 0 3px 0 5px;
47
- min-width: 20px;
48
- text-align: right;
49
- color: #999;
50
- white-space: nowrap;
51
- }
52
-
53
- .CodeMirror-guttermarker {
54
- color: black;
55
- }
56
- .CodeMirror-guttermarker-subtle {
57
- color: #999;
58
- }
59
-
60
- /* CURSOR */
61
-
62
- .CodeMirror-cursor {
63
- border-left: 1px solid black;
64
- border-right: none;
65
- width: 0;
66
- }
67
- /* Shown when moving in bi-directional text */
68
- .CodeMirror div.CodeMirror-secondarycursor {
69
- border-left: 1px solid silver;
70
- }
71
- .cm-fat-cursor .CodeMirror-cursor {
72
- width: auto;
73
- border: 0 !important;
74
- background: #7e7;
75
- }
76
- .cm-fat-cursor div.CodeMirror-cursors {
77
- /* z-index: 1; */
78
- }
79
-
80
- .cm-fat-cursor-mark {
81
- background-color: rgba(20, 255, 20, 0.5);
82
- -webkit-animation: blink 1.06s steps(1) infinite;
83
- -moz-animation: blink 1.06s steps(1) infinite;
84
- animation: blink 1.06s steps(1) infinite;
85
- }
86
- .cm-animate-fat-cursor {
87
- width: auto;
88
- border: 0;
89
- -webkit-animation: blink 1.06s steps(1) infinite;
90
- -moz-animation: blink 1.06s steps(1) infinite;
91
- animation: blink 1.06s steps(1) infinite;
92
- background-color: #7e7;
93
- }
94
-
95
- /* Can style cursor different in overwrite (non-insert) mode */
96
- .CodeMirror-overwrite .CodeMirror-cursor {
97
- }
98
-
99
- .cm-tab {
100
- display: inline-block;
101
- text-decoration: inherit;
102
- }
103
-
104
- .CodeMirror-rulers {
105
- position: absolute;
106
- left: 0;
107
- right: 0;
108
- top: -50px;
109
- bottom: 0;
110
- overflow: hidden;
111
- }
112
- .CodeMirror-ruler {
113
- border-left: 1px solid #ccc;
114
- top: 0;
115
- bottom: 0;
116
- position: absolute;
117
- }
118
-
119
- /* DEFAULT THEME */
120
-
121
- .cm-header,
122
- .cm-strong {
123
- font-weight: bold;
124
- }
125
- .cm-em {
126
- font-style: italic;
127
- }
128
- .cm-link {
129
- text-decoration: underline;
130
- }
131
- .cm-strikethrough {
132
- text-decoration: line-through;
133
- }
134
-
135
- .CodeMirror-composing {
136
- border-bottom: 2px solid;
137
- }
138
-
139
- /* Default styles for common addons */
140
-
141
- div.CodeMirror span.CodeMirror-matchingbracket {
142
- color: #0b0;
143
- }
144
- div.CodeMirror span.CodeMirror-nonmatchingbracket {
145
- color: #a22;
146
- }
147
- .CodeMirror-matchingtag {
148
- background: rgba(255, 150, 0, 0.3);
149
- }
150
- .CodeMirror-activeline-background {
151
- background: #e8f2ff;
152
- }
153
-
154
- /* STOP */
155
-
156
- /* The rest of this file contains styles related to the mechanics of
157
- the editor. You probably shouldn't touch them. */
158
-
159
- .CodeMirror {
160
- position: relative;
161
- overflow: hidden;
162
- background: ${({ theme }) => `${theme.colors.neutral0}`};
163
- }
164
-
165
- .CodeMirror-scroll {
166
- overflow: scroll !important; /* Things will break if this is overridden */
167
- /* 50px is the magic margin used to hide the element's real scrollbars */
168
- /* See overflow: hidden in .CodeMirror */
169
- margin-bottom: -50px;
170
- margin-right: -50px;
171
- padding-bottom: 50px;
172
- height: 100%;
173
- outline: none; /* Prevent dragging from highlighting the element */
174
- position: relative;
175
- }
176
- .CodeMirror-sizer {
177
- position: relative;
178
- border-right: 50px solid transparent;
179
- }
180
-
181
- /* The fake, visible scrollbars. Used to force redraw during scrolling
182
- before actual scrolling happens, thus preventing shaking and
183
- flickering artifacts. */
184
- .CodeMirror-vscrollbar,
185
- .CodeMirror-hscrollbar,
186
- .CodeMirror-scrollbar-filler,
187
- .CodeMirror-gutter-filler {
188
- position: absolute;
189
- z-index: 1;
190
- display: none;
191
- outline: none;
192
- }
193
-
194
- .CodeMirror-vscrollbar {
195
- right: 0;
196
- top: 0;
197
- overflow-x: hidden;
198
- overflow-y: scroll;
199
- }
200
- .CodeMirror-hscrollbar {
201
- bottom: 0;
202
- left: 0;
203
- overflow-y: hidden;
204
- overflow-x: scroll;
205
- }
206
- .CodeMirror-scrollbar-filler {
207
- right: 0;
208
- bottom: 0;
209
- }
210
-
211
- .CodeMirror-lines {
212
- cursor: text;
213
- min-height: 1px; /* prevents collapsing before first draw */
214
- }
215
- /* Reset some styles that the rest of the page might have set */
216
- .CodeMirror pre.CodeMirror-line,
217
- .CodeMirror pre.CodeMirror-line-like {
218
- -moz-border-radius: 0;
219
- -webkit-border-radius: 0;
220
- border-radius: 0;
221
- border-width: 0;
222
- background: transparent;
223
- font-family: inherit;
224
- font-size: inherit;
225
- margin: 0;
226
- white-space: pre;
227
- word-wrap: normal;
228
- line-height: 1.5;
229
- color: inherit;
230
- /* z-index: 2; */
231
- position: relative;
232
- overflow: visible;
233
- -webkit-tap-highlight-color: transparent;
234
- -webkit-font-variant-ligatures: contextual;
235
- font-variant-ligatures: contextual;
236
- }
237
-
238
- .CodeMirror pre.CodeMirror-line-like {
239
- z-index: 2;
240
- }
241
-
242
- .CodeMirror-wrap pre.CodeMirror-line,
243
- .CodeMirror-wrap pre.CodeMirror-line-like {
244
- word-wrap: break-word;
245
- white-space: pre-wrap;
246
- word-break: normal;
247
- }
248
-
249
- .CodeMirror-linebackground {
250
- position: absolute;
251
- left: 0;
252
- right: 0;
253
- top: 0;
254
- bottom: 0;
255
- z-index: 0;
256
- }
257
-
258
- .CodeMirror-linewidget {
259
- position: relative;
260
- /* z-index: 2; */
261
- padding: 0.1px; /* Force widget margins to stay inside of the container */
262
- }
263
-
264
- .CodeMirror-widget {
265
- }
266
-
267
- .CodeMirror-rtl pre {
268
- direction: rtl;
269
- }
270
-
271
- .CodeMirror-code {
272
- outline: none;
273
- }
274
-
275
- /* Force content-box sizing for the elements where we expect it */
276
- .CodeMirror-scroll,
277
- .CodeMirror-sizer,
278
- .CodeMirror-gutter,
279
- .CodeMirror-gutters,
280
- .CodeMirror-linenumber {
281
- -moz-box-sizing: content-box;
282
- box-sizing: content-box;
283
- }
284
-
285
- .CodeMirror-measure {
286
- position: absolute;
287
- width: 100%;
288
- height: 0;
289
- overflow: hidden;
290
- visibility: hidden;
291
- }
292
-
293
- .CodeMirror-cursor {
294
- position: absolute;
295
- pointer-events: none;
296
- border-color: ${({ theme }) => `${theme.colors.neutral800}`};
297
- }
298
- .CodeMirror-measure pre {
299
- position: static;
300
- }
301
-
302
- div.CodeMirror-cursors {
303
- visibility: hidden;
304
- position: relative;
305
- + div {
306
- z-index: 0 !important;
307
- }
308
- }
309
-
310
- div.CodeMirror-dragcursors {
311
- visibility: visible;
312
- }
313
-
314
- .CodeMirror-focused div.CodeMirror-cursors {
315
- visibility: visible;
316
- }
317
-
318
- .CodeMirror-selected {
319
- background: ${({ theme }) => theme.colors.neutral200};
320
- /* z-index: -10; */
321
- }
322
- .CodeMirror-crosshair {
323
- cursor: crosshair;
324
- }
325
-
326
- /* Used to force a border model for a node */
327
- .cm-force-border {
328
- padding-right: 0.1px;
329
- }
330
-
331
- /* See issue #2901 */
332
- .cm-tab-wrap-hack:after {
333
- content: '';
334
- }
335
-
336
- /* Help users use markselection to safely style text background */
337
- span.CodeMirror-selectedtext {
338
- background: none;
339
- }
340
-
341
- span {
342
- color: ${({ theme }) => theme.colors.neutral800} !important;
343
- }
344
- `;
@@ -1,23 +0,0 @@
1
- import { getFetchClient } from '@strapi/helper-plugin';
2
-
3
- import prefixAllUrls from './prefixAllUrls';
4
-
5
- const fetchProjectSettings = async () => {
6
- const { get } = getFetchClient();
7
- const { data } = await get('/admin/project-settings');
8
-
9
- return prefixAllUrls(data);
10
- };
11
-
12
- const postProjectSettings = async (body) => {
13
- const { post } = getFetchClient();
14
- const { data } = await post('/admin/project-settings', body, {
15
- headers: {
16
- 'Content-Type': 'multipart/form-data',
17
- },
18
- });
19
-
20
- return prefixAllUrls(data);
21
- };
22
-
23
- export { fetchProjectSettings, postProjectSettings };
@@ -1,17 +0,0 @@
1
- import { prefixFileUrlWithBackendUrl } from '@strapi/helper-plugin';
2
- import transform from 'lodash/transform';
3
-
4
- const prefixAllUrls = (data) =>
5
- transform(
6
- data,
7
- (result, value, key) => {
8
- if (value && value.url) {
9
- result[key] = { ...value, url: prefixFileUrlWithBackendUrl(value.url) };
10
- } else {
11
- result[key] = value;
12
- }
13
- },
14
- {}
15
- );
16
-
17
- export default prefixAllUrls;
@@ -1,11 +0,0 @@
1
- import flatMap from 'lodash/flatMap';
2
-
3
- import { createRoute } from '../../../utils';
4
-
5
- const createSectionsRoutes = (settings) => {
6
- const allLinks = flatMap(settings, (section) => section.links);
7
-
8
- return allLinks.map((link) => createRoute(link.Component, link.to, link.exact || false));
9
- };
10
-
11
- export default createSectionsRoutes;
@@ -1,5 +0,0 @@
1
- const getSectionsToDisplay = (menu) => {
2
- return menu.filter((section) => !section.links.every((link) => link.isDisplayed === false));
3
- };
4
-
5
- export default getSectionsToDisplay;
@@ -1,2 +0,0 @@
1
- export { default as createSectionsRoutes } from './createSectionsRoutes';
2
- export { default as getSectionsToDisplay } from './getSectionsToDisplay';
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[1227],{21227:function(R,E,e){e.d(E,{ReviewWorkflowsAssigneeEE:function(){return O},ReviewWorkflowsStageEE:function(){return c}});var n=e(32735),o=e(87933),f=e(72850),a=e(49372),r=e(19565),i=e(60216),t=e.n(i),s=e(2121),l=e(68886);function c({color:u,name:A}){const{themeColorName:W}=(0,l.k)(u);return n.createElement(o.k,{alignItems:"center",gap:2,maxWidth:(0,r.Q1)(300)},n.createElement(f.x,{height:2,background:u,borderColor:W==="neutral0"?"neutral150":"transparent",hasRadius:!0,shrink:0,width:2}),n.createElement(a.Z,{fontWeight:"regular",textColor:"neutral700",ellipsis:!0},A))}c.defaultProps={color:s.FT},c.propTypes={color:t().string,name:t().string.isRequired};var g=e(67879),T=e(7921);function O({firstname:u,lastname:A,displayname:W}){const{formatMessage:m}=(0,g.Z)();return W?n.createElement(a.Z,{textColor:"neutral800"},m({id:(0,T.Z)("containers.ListPage.reviewWorkflows.assignee"),defaultMessage:"{displayname}"},{displayname:W})):n.createElement(a.Z,{textColor:"neutral800"},m({id:(0,T.Z)("containers.ListPage.reviewWorkflows.assignee"),defaultMessage:"{firstname} {lastname}"},{firstname:u,lastname:A}))}O.defaultProps={firstname:"",lastname:"",displayname:""},O.propTypes={firstname:t().string,lastname:t().string,displayname:t().string}},2121:function(R,E,e){e.d(E,{$k:function(){return s},Ef:function(){return O},FT:function(){return g},Nj:function(){return t},Ot:function(){return i},VS:function(){return l},_X:function(){return u},gu:function(){return f},lv:function(){return c},qZ:function(){return a},sN:function(){return o},uL:function(){return T},x4:function(){return r}});var n=e(12301);const o="settings_review-workflows",f="Settings/Review_Workflows/RESET_WORKFLOW",a="Settings/Review_Workflows/SET_WORKFLOW",r="Settings/Review_Workflows/WORKFLOW_DELETE_STAGE",i="Settings/Review_Workflows/WORKFLOW_ADD_STAGE",t="Settings/Review_Workflows/WORKFLOW_UPDATE_STAGE",s="Settings/Review_Workflows/WORKFLOW_UPDATE_STAGE_POSITION",l="Settings/Review_Workflows/WORKFLOW_UPDATE",c={primary600:"Blue",primary200:"Lilac",alternative600:"Violet",alternative200:"Lavender",success600:"Green",success200:"Pale Green",danger500:"Cherry",danger200:"Pink",warning600:"Orange",warning200:"Yellow",secondary600:"Teal",secondary200:"Baby Blue",neutral400:"Gray",neutral0:"White"},g=n.W.colors.primary600,T={STAGE:"stage"},O="numberOfWorkflows",u="stagesPerWorkflow"},68886:function(R,E,e){e.d(E,{k:function(){return f},s:function(){return a}});var n=e(12301),o=e(2121);function f(r){if(!r)return null;const t=Object.entries(n.W.colors).filter(([,s])=>s.toUpperCase()===r.toUpperCase()).reduce((s,[l])=>(o.lv?.[l]&&(s=l),s),null);return t?{themeColorName:t,name:o.lv[t]}:null}function a(){return Object.entries(o.lv).map(([r,i])=>({hex:n.W.colors[r].toUpperCase(),name:i}))}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[2379],{50337:function(S,c,t){t.d(c,{pl:function(){return L},aY:function(){return p},q5:function(){return D.q}});var e=t(32735),a=t(19565),E=t(97889);const f={data:[],isLoading:!0};var m=(s,n)=>(0,E.ZP)(s,i=>{switch(n.type){case"GET_DATA_SUCCEEDED":{i.data=n.data,i.isLoading=!1;break}case"GET_DATA_ERROR":{i.isLoading=!1;break}default:return i}}),L=({ssoEnabled:s})=>{const[n,i]=(0,e.useReducer)(m,f),T=(0,a.lm)(),{get:v}=(0,a.kY)();return(0,e.useEffect)(()=>{(async()=>{try{if(!s){i({type:"GET_DATA_SUCCEEDED",data:[]});return}const{data:u}=await v("/admin/providers");i({type:"GET_DATA_SUCCEEDED",data:u})}catch(u){console.error(u),i({type:"GET_DATA_ERROR"}),T({type:"warning",message:{id:"notification.error"}})}})()},[v,s,T]),n},g=t(36866),o=t.n(g),A=t(67879),r=t(53038),D=t(53104);const l="strapi-notification-seat-limit",_="https://cloud.strapi.io/profile/billing",I="https://strapi.io/billing/request-seats";var p=()=>{const{formatMessage:s}=(0,A.Z)();let{license:n,isError:i,isLoading:T}=(0,D.q)();const v=(0,a.lm)(),{pathname:P}=(0,r.TH)(),{enforcementUserCount:u,permittedSeats:C,licenseLimitStatus:d,isHostedOnStrapiCloud:h}=n;(0,e.useEffect)(()=>{if(i||T)return;const U=!o()(C)&&!window.sessionStorage.getItem(`${l}-${P}`)&&(d==="AT_LIMIT"||d==="OVER_LIMIT");let R;d==="OVER_LIMIT"?R="warning":d==="AT_LIMIT"&&(R="softWarning"),U&&v({type:R,message:s({id:"notification.ee.warning.over-.message",defaultMessage:"Add seats to {licenseLimitStatus, select, OVER_LIMIT {invite} other {re-enable}} Users. If you already did it but it's not reflected in Strapi yet, make sure to restart your app."},{licenseLimitStatus:d}),title:s({id:"notification.ee.warning.at-seat-limit.title",defaultMessage:"{licenseLimitStatus, select, OVER_LIMIT {Over} other {At}} seat limit ({enforcementUserCount}/{permittedSeats})"},{licenseLimitStatus:d,enforcementUserCount:u,permittedSeats:C}),link:{url:h?_:I,label:s({id:"notification.ee.warning.seat-limit.link",defaultMessage:"{isHostedOnStrapiCloud, select, true {ADD SEATS} other {CONTACT SALES}}"},{isHostedOnStrapiCloud:h})},blockTransition:!0,onClose(){window.sessionStorage.setItem(`${l}-${P}`,!0)}})},[v,n,P,s,T,C,d,u,h,i])}},53104:function(S,c,t){t.d(c,{q:function(){return f}});var e=t(32735),a=t(19565),E=t(20108);function f({enabled:M}={enabled:!0}){const{get:m}=(0,a.kY)(),{data:O,isError:L,isLoading:g}=(0,E.useQuery)(["ee","license-limit-info"],async()=>{const{data:{data:r}}=await m("/admin/license-limit-information");return r},{enabled:M}),o=O??{},A=e.useCallback(r=>(o?.features??[]).find(l=>l.name===r)?.options??{},[o?.features]);return{license:o,getFeature:A,isError:L,isLoading:g}}},42379:function(S,c,t){t.r(c),t.d(c,{CreateActionEE:function(){return l}});var e=t(32735),a=t(87933),E=t(63919),f=t(99140),M=t(41415),m=t(69932),O=t(7961),L=t(36866),g=t.n(L),o=t(60216),A=t.n(o),r=t(67879),D=t(50337);const l=({onClick:_})=>{const{formatMessage:I}=(0,r.Z)(),{license:{permittedSeats:y,shouldStopCreate:p},isError:s,isLoading:n}=(0,D.q5)();return s||n?null:e.createElement(a.k,{gap:2},!g()(y)&&p&&e.createElement(E.u,{description:I({id:"Settings.application.admin-seats.at-limit-tooltip",defaultMessage:"At limit: add seats to invite more users"}),position:"left"},e.createElement(f.J,{width:`${14/16}rem`,height:`${14/16}rem`,color:"danger500",as:m.Z})),e.createElement(M.z,{"data-testid":"create-user-button",onClick:_,startIcon:e.createElement(O.Z,null),size:"S",disabled:p},I({id:"Settings.permissions.users.create",defaultMessage:"Invite new user"})))};l.propTypes={onClick:A().func.isRequired}}}]);
@@ -1,26 +0,0 @@
1
- "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[2395],{50337:function(y,g,t){t.d(g,{pl:function(){return i},aY:function(){return A},q5:function(){return L.q}});var e=t(32735),c=t(19565),E=t(97889);const P={data:[],isLoading:!0};var u=(n,f)=>(0,E.ZP)(n,r=>{switch(f.type){case"GET_DATA_SUCCEEDED":{r.data=f.data,r.isLoading=!1;break}case"GET_DATA_ERROR":{r.isLoading=!1;break}default:return r}}),i=({ssoEnabled:n})=>{const[f,r]=(0,e.useReducer)(u,P),v=(0,c.lm)(),{get:h}=(0,c.kY)();return(0,e.useEffect)(()=>{(async()=>{try{if(!n){r({type:"GET_DATA_SUCCEEDED",data:[]});return}const{data:T}=await h("/admin/providers");r({type:"GET_DATA_SUCCEEDED",data:T})}catch(T){console.error(T),r({type:"GET_DATA_ERROR"}),v({type:"warning",message:{id:"notification.error"}})}})()},[h,n,v]),f},D=t(36866),l=t.n(D),m=t(67879),d=t(53038),L=t(53104);const a="strapi-notification-seat-limit",_="https://cloud.strapi.io/profile/billing",s="https://strapi.io/billing/request-seats";var A=()=>{const{formatMessage:n}=(0,m.Z)();let{license:f,isError:r,isLoading:v}=(0,L.q)();const h=(0,c.lm)(),{pathname:R}=(0,d.TH)(),{enforcementUserCount:T,permittedSeats:I,licenseLimitStatus:p,isHostedOnStrapiCloud:C}=f;(0,e.useEffect)(()=>{if(r||v)return;const S=!l()(I)&&!window.sessionStorage.getItem(`${a}-${R}`)&&(p==="AT_LIMIT"||p==="OVER_LIMIT");let U;p==="OVER_LIMIT"?U="warning":p==="AT_LIMIT"&&(U="softWarning"),S&&h({type:U,message:n({id:"notification.ee.warning.over-.message",defaultMessage:"Add seats to {licenseLimitStatus, select, OVER_LIMIT {invite} other {re-enable}} Users. If you already did it but it's not reflected in Strapi yet, make sure to restart your app."},{licenseLimitStatus:p}),title:n({id:"notification.ee.warning.at-seat-limit.title",defaultMessage:"{licenseLimitStatus, select, OVER_LIMIT {Over} other {At}} seat limit ({enforcementUserCount}/{permittedSeats})"},{licenseLimitStatus:p,enforcementUserCount:T,permittedSeats:I}),link:{url:C?_:s,label:n({id:"notification.ee.warning.seat-limit.link",defaultMessage:"{isHostedOnStrapiCloud, select, true {ADD SEATS} other {CONTACT SALES}}"},{isHostedOnStrapiCloud:C})},blockTransition:!0,onClose(){window.sessionStorage.setItem(`${a}-${R}`,!0)}})},[h,f,R,n,v,I,p,T,C,r])}},53104:function(y,g,t){t.d(g,{q:function(){return P}});var e=t(32735),c=t(19565),E=t(20108);function P({enabled:O}={enabled:!0}){const{get:u}=(0,c.kY)(),{data:o,isError:i,isLoading:D}=(0,E.useQuery)(["ee","license-limit-info"],async()=>{const{data:{data:d}}=await u("/admin/license-limit-information");return d},{enabled:O}),l=o??{},m=e.useCallback(d=>(l?.features??[]).find(a=>a.name===d)?.options??{},[l?.features]);return{license:l,getFeature:m,isError:i,isLoading:D}}},82395:function(y,g,t){t.r(g),t.d(g,{LoginEE:function(){return _}});var e=t(32735),c=t(9026),E=t(72850),P=t(87933),O=t(49372),u=t(60216),o=t.n(u),i=t(67879),D=t(8471),l=t(11060),m=t(24436),d=t(50337),L=t(68726);const a=(0,D.ZP)(c.i)`
2
- flex: 1;
3
- `,_=s=>{const M=window.strapi.features.isEnabled(window.strapi.features.SSO),{isLoading:A,data:n}=(0,d.pl)({ssoEnabled:M}),{formatMessage:f}=(0,i.Z)();return!M||!A&&n.length===0?e.createElement(l.ZP,null,e.createElement(m.Z,{...s})):e.createElement(l.ZP,null,e.createElement(m.Z,{...s},e.createElement(E.x,{paddingTop:7},e.createElement(P.k,{direction:"column",alignItems:"stretch",gap:7},e.createElement(P.k,null,e.createElement(a,null),e.createElement(E.x,{paddingLeft:3,paddingRight:3},e.createElement(O.Z,{variant:"sigma",textColor:"neutral600"},f({id:"Auth.login.sso.divider"}))),e.createElement(a,null)),e.createElement(L.Z,{providers:n,displayAllProviders:!1})))))};_.defaultProps={onSubmit:s=>s.preventDefault(),requestError:null},_.propTypes={formErrors:o().object.isRequired,modifiedData:o().object.isRequired,onChange:o().func.isRequired,onSubmit:o().func,requestError:o().object}},68726:function(y,g,t){var e=t(32735),c=t(87933),E=t(63919),P=t(49372),O=t(15335),u=t(5803),o=t(60216),i=t.n(o),D=t(67879),l=t(14911),m=t(8471);const d=m.ZP.a`
4
- width: ${136/16}rem;
5
- display: flex;
6
- justify-content: center;
7
- align-items: center;
8
- height: ${48/16}rem;
9
- border: 1px solid ${({theme:s})=>s.colors.neutral150};
10
- border-radius: ${({theme:s})=>s.borderRadius};
11
- text-decoration: inherit;
12
- &:link {
13
- text-decoration: none;
14
- }
15
- color: ${({theme:s})=>s.colors.neutral600};
16
- `,L=(0,m.ZP)(c.k)`
17
- & a:not(:first-child):not(:last-child) {
18
- margin: 0 ${({theme:s})=>s.spaces[2]};
19
- }
20
- & a:first-child {
21
- margin-right: ${({theme:s})=>s.spaces[2]};
22
- }
23
- & a:last-child {
24
- margin-left: ${({theme:s})=>s.spaces[2]};
25
- }
26
- `,a=({provider:s})=>e.createElement(E.u,{label:s.displayName},e.createElement(d,{href:`${window.strapi.backendURL}/admin/connect/${s.uid}`},s.icon?e.createElement("img",{src:s.icon,"aria-hidden":!0,alt:"",height:"32px"}):e.createElement(P.Z,null,s.displayName)));a.propTypes={provider:i().shape({icon:i().string,displayName:i().string.isRequired,uid:i().string.isRequired}).isRequired};const _=({providers:s,displayAllProviders:M})=>{const{formatMessage:A}=(0,D.Z)();return M?e.createElement(O.r,{gap:4},s.map(n=>e.createElement(u.P,{key:n.uid,col:4},e.createElement(a,{provider:n})))):s.length>2&&!M?e.createElement(O.r,{gap:4},s.slice(0,2).map(n=>e.createElement(u.P,{key:n.uid,col:4},e.createElement(a,{provider:n}))),e.createElement(u.P,{col:4},e.createElement(E.u,{label:A({id:"global.see-more"})},e.createElement(d,{as:l.rU,to:"/auth/providers"},e.createElement("span",{"aria-hidden":!0},"\u2022\u2022\u2022"))))):e.createElement(L,{justifyContent:"center"},s.map(n=>e.createElement(a,{key:n.uid,provider:n})))};_.defaultProps={displayAllProviders:!0},_.propTypes={providers:i().arrayOf(i().object).isRequired,displayAllProviders:i().bool},g.Z=_}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[2801],{50337:function(S,r,t){t.d(r,{pl:function(){return A},aY:function(){return M},q5:function(){return I.q}});var s=t(32735),n=t(19565),c=t(97889);const l={data:[],isLoading:!0};var T=(i,a)=>(0,c.ZP)(i,e=>{switch(a.type){case"GET_DATA_SUCCEEDED":{e.data=a.data,e.isLoading=!1;break}case"GET_DATA_ERROR":{e.isLoading=!1;break}default:return e}}),A=({ssoEnabled:i})=>{const[a,e]=(0,s.useReducer)(T,l),m=(0,n.lm)(),{get:E}=(0,n.kY)();return(0,s.useEffect)(()=>{(async()=>{try{if(!i){e({type:"GET_DATA_SUCCEEDED",data:[]});return}const{data:u}=await E("/admin/providers");e({type:"GET_DATA_SUCCEEDED",data:u})}catch(u){console.error(u),e({type:"GET_DATA_ERROR"}),m({type:"warning",message:{id:"notification.error"}})}})()},[E,i,m]),a},v=t(36866),d=t.n(v),h=t(67879),f=t(53038),I=t(53104);const g="strapi-notification-seat-limit",R="https://cloud.strapi.io/profile/billing",y="https://strapi.io/billing/request-seats";var M=()=>{const{formatMessage:i}=(0,h.Z)();let{license:a,isError:e,isLoading:m}=(0,I.q)();const E=(0,n.lm)(),{pathname:L}=(0,f.TH)(),{enforcementUserCount:u,permittedSeats:p,licenseLimitStatus:o,isHostedOnStrapiCloud:D}=a;(0,s.useEffect)(()=>{if(e||m)return;const U=!d()(p)&&!window.sessionStorage.getItem(`${g}-${L}`)&&(o==="AT_LIMIT"||o==="OVER_LIMIT");let C;o==="OVER_LIMIT"?C="warning":o==="AT_LIMIT"&&(C="softWarning"),U&&E({type:C,message:i({id:"notification.ee.warning.over-.message",defaultMessage:"Add seats to {licenseLimitStatus, select, OVER_LIMIT {invite} other {re-enable}} Users. If you already did it but it's not reflected in Strapi yet, make sure to restart your app."},{licenseLimitStatus:o}),title:i({id:"notification.ee.warning.at-seat-limit.title",defaultMessage:"{licenseLimitStatus, select, OVER_LIMIT {Over} other {At}} seat limit ({enforcementUserCount}/{permittedSeats})"},{licenseLimitStatus:o,enforcementUserCount:u,permittedSeats:p}),link:{url:D?R:y,label:i({id:"notification.ee.warning.seat-limit.link",defaultMessage:"{isHostedOnStrapiCloud, select, true {ADD SEATS} other {CONTACT SALES}}"},{isHostedOnStrapiCloud:D})},blockTransition:!0,onClose(){window.sessionStorage.setItem(`${g}-${L}`,!0)}})},[E,a,L,i,m,p,o,u,D,e])}},53104:function(S,r,t){t.d(r,{q:function(){return l}});var s=t(32735),n=t(19565),c=t(20108);function l({enabled:O}={enabled:!0}){const{get:T}=(0,n.kY)(),{data:P,isError:A,isLoading:v}=(0,c.useQuery)(["ee","license-limit-info"],async()=>{const{data:{data:f}}=await T("/admin/license-limit-information");return f},{enabled:O}),d=P??{},h=s.useCallback(f=>(d?.features??[]).find(g=>g.name===f)?.options??{},[d?.features]);return{license:d,getFeature:h,isError:A,isLoading:v}}},12801:function(S,r,t){t.r(r),t.d(r,{UserListPageEE:function(){return l}});var s=t(32735),n=t(99528),c=t(50337);function l(){return(0,c.aY)(),s.createElement(n.W,null)}}}]);