@strapi/admin 4.12.7 → 4.13.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) 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/DynamicTable/CellContent/ReviewWorkflowsStage/getTableColumns.js +2 -0
  4. package/admin/src/content-manager/components/DynamicZone/components/DynamicZoneLabel.js +1 -1
  5. package/admin/src/content-manager/components/EditViewDataManagerProvider/reducer.js +7 -2
  6. package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/cleanData.js +6 -0
  7. package/admin/src/content-manager/components/Filter/CustomInputs/AdminUsersFilter.js +42 -0
  8. package/admin/src/content-manager/components/Filter/Filter.js +54 -0
  9. package/admin/src/content-manager/components/Filter/index.js +1 -0
  10. package/admin/src/content-manager/components/InputUID/index.js +222 -216
  11. package/admin/src/content-manager/components/RelationInput/RelationInput.js +4 -0
  12. package/admin/src/content-manager/components/RepeatableComponent/index.js +32 -2
  13. package/admin/src/content-manager/components/Wysiwyg/Editor.js +432 -68
  14. package/admin/src/content-manager/components/Wysiwyg/WysiwygStyles.js +0 -7
  15. package/admin/src/content-manager/components/Wysiwyg/index.js +147 -152
  16. package/admin/src/content-manager/constants/attributes.js +3 -0
  17. package/admin/src/content-manager/hooks/useAllowedAttributes.js +43 -0
  18. package/admin/src/content-manager/pages/EditView/Information/index.js +9 -8
  19. package/admin/src/content-manager/pages/ListSettingsView/components/Settings.js +40 -7
  20. package/admin/src/content-manager/pages/ListSettingsView/index.js +6 -2
  21. package/admin/src/content-manager/pages/ListView/components/FieldPicker/index.js +67 -69
  22. package/admin/src/content-manager/pages/ListView/components/ViewSettingsMenu/index.js +80 -0
  23. package/admin/src/content-manager/pages/ListView/index.js +236 -67
  24. package/admin/src/content-manager/utils/getDisplayName.js +33 -0
  25. package/admin/src/content-manager/utils/index.js +1 -0
  26. package/admin/src/pages/Admin/index.js +3 -1
  27. package/admin/src/pages/AuthPage/components/Register/index.js +5 -0
  28. package/admin/src/pages/SettingsPage/components/SettingsNav/index.js +3 -3
  29. package/admin/src/pages/SettingsPage/index.js +16 -26
  30. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/index.js +69 -35
  31. package/admin/src/plugins.js +7 -8
  32. package/admin/src/translations/en.json +10 -1
  33. package/build/{1049.f76cb14b.chunk.js → 1049.ec69f5e0.chunk.js} +1 -1
  34. package/build/1227.9f37e1dc.chunk.js +1 -0
  35. package/build/{1386.879bcd90.chunk.js → 1386.ea73b677.chunk.js} +1 -1
  36. package/build/1504.eff012f7.chunk.js +95 -0
  37. package/build/{2225.c6244756.chunk.js → 2225.649fb7bc.chunk.js} +11 -11
  38. package/build/2237.b832ae6e.chunk.js +114 -0
  39. package/build/2379.1f98a31a.chunk.js +1 -0
  40. package/build/2395.0e5e8ded.chunk.js +26 -0
  41. package/build/2801.8e1aa82a.chunk.js +1 -0
  42. package/build/{3483.03c24f96.chunk.js → 3483.19381b40.chunk.js} +1 -1
  43. package/build/4174.f1f39e40.chunk.js +1 -0
  44. package/build/4546.a5946d22.chunk.js +1 -0
  45. package/build/4724.aea5c8c1.chunk.js +6 -0
  46. package/build/502.7bba43b1.chunk.js +1 -0
  47. package/build/6158.c3c13c20.chunk.js +1 -0
  48. package/build/7464.eb057bec.chunk.js +1 -0
  49. package/build/78.dcc6df5c.chunk.js +1 -0
  50. package/build/8276.be3ed581.chunk.js +26 -0
  51. package/build/{Admin-authenticatedApp.31497f74.chunk.js → Admin-authenticatedApp.36b0fe22.chunk.js} +2 -2
  52. package/build/{Admin_InternalErrorPage.f45f2462.chunk.js → Admin_InternalErrorPage.38155af3.chunk.js} +1 -1
  53. package/build/{Admin_homePage.ac9dfb86.chunk.js → Admin_homePage.6f128523.chunk.js} +1 -1
  54. package/build/{Admin_marketplace.c94239f6.chunk.js → Admin_marketplace.061a6e5a.chunk.js} +1 -1
  55. package/build/{Admin_pluginsPage.bbe79434.chunk.js → Admin_pluginsPage.16f837b8.chunk.js} +1 -1
  56. package/build/{Admin_profilePage.192edc52.chunk.js → Admin_profilePage.678bce24.chunk.js} +2 -2
  57. package/build/Admin_settingsPage.af7309e4.chunk.js +111 -0
  58. package/build/{Upload_ConfigureTheView.345ac1e0.chunk.js → Upload_ConfigureTheView.3fc1c100.chunk.js} +1 -1
  59. package/build/admin-app.d63bd229.chunk.js +36 -0
  60. package/build/{admin-edit-roles-page.6d567273.chunk.js → admin-edit-roles-page.38a6c863.chunk.js} +3 -3
  61. package/build/{admin-edit-users.acfd4128.chunk.js → admin-edit-users.545fc882.chunk.js} +2 -2
  62. package/build/{admin-roles-list.23ddff26.chunk.js → admin-roles-list.1e2e814d.chunk.js} +1 -1
  63. package/build/{admin-users.00e20017.chunk.js → admin-users.b8ea5677.chunk.js} +2 -2
  64. package/build/{api-tokens-create-page.46c2ea84.chunk.js → api-tokens-create-page.e0c15627.chunk.js} +1 -1
  65. package/build/{api-tokens-edit-page.58139df9.chunk.js → api-tokens-edit-page.9f2dce47.chunk.js} +1 -1
  66. package/build/{api-tokens-list-page.0af7d431.chunk.js → api-tokens-list-page.d747051c.chunk.js} +2 -2
  67. package/build/{audit-logs-settings-page.0f73ccf8.chunk.js → audit-logs-settings-page.96f9d608.chunk.js} +1 -1
  68. package/build/content-manager.2d676432.chunk.js +1097 -0
  69. package/build/{content-type-builder-list-view.bf9be456.chunk.js → content-type-builder-list-view.b71cf240.chunk.js} +1 -1
  70. package/build/{content-type-builder.cd999f6e.chunk.js → content-type-builder.e5669749.chunk.js} +2 -2
  71. package/build/email-settings-page.2809f0bf.chunk.js +11 -0
  72. package/build/en-json.e12fd5fc.chunk.js +1 -0
  73. package/build/{i18n-settings-page.47f78016.chunk.js → i18n-settings-page.5f716172.chunk.js} +1 -1
  74. package/build/index.html +1 -1
  75. package/build/main.c6c9e04c.js +2859 -0
  76. package/build/review-workflows-settings-create-view.4a156a19.chunk.js +1 -0
  77. package/build/review-workflows-settings-edit-view.ce984d1f.chunk.js +1 -0
  78. package/build/review-workflows-settings-list-view.419b8deb.chunk.js +56 -0
  79. package/build/{runtime~main.d515c521.js → runtime~main.5a10b789.js} +2 -2
  80. package/build/{sso-settings-page.12b6d8ae.chunk.js → sso-settings-page.45153df5.chunk.js} +1 -1
  81. package/build/{transfer-tokens-create-page.1597e6ab.chunk.js → transfer-tokens-create-page.ebba16d8.chunk.js} +1 -1
  82. package/build/{transfer-tokens-edit-page.8741529f.chunk.js → transfer-tokens-edit-page.d7bb2b3e.chunk.js} +1 -1
  83. package/build/{transfer-tokens-list-page.d6986b03.chunk.js → transfer-tokens-list-page.cfe1736c.chunk.js} +2 -2
  84. package/build/{upload-settings.7f93d4c0.chunk.js → upload-settings.cc5ad813.chunk.js} +1 -1
  85. package/build/{upload.37488080.chunk.js → upload.756efc28.chunk.js} +1 -1
  86. package/build/users-advanced-settings-page.818d84eb.chunk.js +9 -0
  87. package/build/users-email-settings-page.c1967c09.chunk.js +9 -0
  88. package/build/users-providers-settings-page.11893e08.chunk.js +14 -0
  89. package/build/users-roles-settings-page.2b051e6a.chunk.js +55 -0
  90. package/build/{webhook-edit-page.6cb479ff.chunk.js → webhook-edit-page.de45c635.chunk.js} +2 -2
  91. package/build/{webhook-list-page.65e1b5bb.chunk.js → webhook-list-page.ca91df8b.chunk.js} +1 -1
  92. package/ee/admin/content-manager/components/Filter/CustomInputs/ReviewWorkflows/AssigneeFilter.js +42 -0
  93. package/ee/admin/content-manager/components/Filter/CustomInputs/ReviewWorkflows/StageFilter.js +70 -0
  94. package/ee/admin/content-manager/components/Filter/CustomInputs/ReviewWorkflows/constants.js +71 -0
  95. package/ee/admin/content-manager/pages/EditView/InformationBox/InformationBoxEE.js +9 -217
  96. package/ee/admin/content-manager/pages/EditView/InformationBox/components/AssigneeSelect/AssigneeSelect.js +147 -0
  97. package/ee/admin/content-manager/pages/EditView/InformationBox/components/AssigneeSelect/index.js +1 -0
  98. package/ee/admin/content-manager/pages/EditView/InformationBox/components/StageSelect/StageSelect.js +243 -0
  99. package/ee/admin/content-manager/pages/EditView/InformationBox/components/StageSelect/index.js +1 -0
  100. package/ee/admin/content-manager/pages/EditView/InformationBox/constants.js +2 -0
  101. package/ee/admin/content-manager/pages/ListSettingsView/constants.js +7 -0
  102. package/ee/admin/content-manager/pages/ListView/ReviewWorkflowsColumn/ReviewWorkflowsAssigneeEE.js +21 -0
  103. package/ee/admin/content-manager/pages/ListView/ReviewWorkflowsColumn/constants.js +44 -17
  104. package/ee/admin/content-manager/pages/ListView/ReviewWorkflowsColumn/index.js +1 -0
  105. package/ee/admin/hooks/useAuthProviders.js +25 -0
  106. package/ee/admin/hooks/{useLicenseLimitNotification/index.js → useLicenseLimitNotification.js} +2 -4
  107. package/ee/admin/hooks/{useLicenseLimits/useLicenseLimits.js → useLicenseLimits.js} +4 -1
  108. package/ee/admin/pages/AuthPage/components/Login/index.js +8 -4
  109. package/ee/admin/pages/AuthPage/components/Providers/index.js +8 -5
  110. package/ee/admin/pages/HomePage/index.js +1 -1
  111. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/pages/CreateView/CreateView.js +1 -1
  112. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/pages/EditView/EditView.js +1 -1
  113. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/pages/ListView/ListView.js +1 -1
  114. package/ee/admin/pages/SettingsPage/pages/Users/ListPage/CreateAction/index.js +1 -1
  115. package/ee/admin/pages/SettingsPage/pages/Users/ListPage/index.js +1 -1
  116. package/ee/server/constants/workflows.js +1 -0
  117. package/ee/server/controllers/index.js +1 -0
  118. package/ee/server/controllers/workflows/assignees/index.js +44 -0
  119. package/ee/server/routes/review-workflows.js +17 -0
  120. package/ee/server/services/index.js +1 -0
  121. package/ee/server/services/review-workflows/assignees.js +54 -0
  122. package/ee/server/services/review-workflows/metrics/index.js +5 -0
  123. package/ee/server/services/review-workflows/review-workflows.js +20 -11
  124. package/ee/server/validation/review-workflows.js +8 -0
  125. package/index.js +2 -6
  126. package/package.json +9 -9
  127. package/scripts/build.js +15 -15
  128. package/scripts/create-dev-plugins-file.js +5 -38
  129. package/server/controllers/role.js +2 -0
  130. package/server/controllers/user.js +2 -0
  131. package/server/services/permission/permissions-manager/index.js +3 -1
  132. package/server/services/permission/permissions-manager/sanitize.js +19 -7
  133. package/server/services/permission/permissions-manager/validate.js +218 -0
  134. package/utils/create-cache-dir.js +62 -16
  135. package/utils/create-plugins-exclude-path.js +3 -23
  136. package/utils/get-plugins.js +110 -0
  137. package/utils/index.js +1 -1
  138. package/webpack.config.js +10 -13
  139. package/admin/src/content-manager/components/AttributeFilter/Filters.js +0 -58
  140. package/admin/src/content-manager/components/AttributeFilter/hooks/useAllowedAttributes.js +0 -42
  141. package/admin/src/content-manager/components/AttributeFilter/index.js +0 -40
  142. package/admin/src/content-manager/components/Wysiwyg/EditorStylesContainer.js +0 -344
  143. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/api.js +0 -23
  144. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/prefixAllUrls.js +0 -17
  145. package/admin/src/pages/SettingsPage/utils/createSectionsRoutes.js +0 -11
  146. package/admin/src/pages/SettingsPage/utils/getSectionsToDisplay.js +0 -5
  147. package/admin/src/pages/SettingsPage/utils/index.js +0 -2
  148. package/build/2379.f1641312.chunk.js +0 -1
  149. package/build/2395.46f8d0c1.chunk.js +0 -26
  150. package/build/2801.5cef5ec8.chunk.js +0 -1
  151. package/build/3929.5632f24d.chunk.js +0 -114
  152. package/build/3984.dda474f7.chunk.js +0 -1
  153. package/build/4546.7a3c0d03.chunk.js +0 -1
  154. package/build/502.8ae8ef60.chunk.js +0 -1
  155. package/build/5483.6dd2e776.chunk.js +0 -6
  156. package/build/5542.2415a393.chunk.js +0 -63
  157. package/build/6158.c974fd83.chunk.js +0 -1
  158. package/build/7464.3e64a1d5.chunk.js +0 -1
  159. package/build/8276.10a3f883.chunk.js +0 -26
  160. package/build/Admin_settingsPage.97cb9d41.chunk.js +0 -111
  161. package/build/admin-app.91898385.chunk.js +0 -36
  162. package/build/content-manager.b40f79c0.chunk.js +0 -1099
  163. package/build/email-settings-page.d494d1eb.chunk.js +0 -11
  164. package/build/en-json.08c05fcf.chunk.js +0 -1
  165. package/build/main.9dbe4579.js +0 -2859
  166. package/build/review-workflows-settings-create-view.cb08cfa2.chunk.js +0 -1
  167. package/build/review-workflows-settings-edit-view.3c7cbe63.chunk.js +0 -1
  168. package/build/review-workflows-settings-list-view.1611dc1f.chunk.js +0 -56
  169. package/build/users-advanced-settings-page.f0760eb8.chunk.js +0 -9
  170. package/build/users-email-settings-page.ff4b32f3.chunk.js +0 -9
  171. package/build/users-providers-settings-page.48de0306.chunk.js +0 -14
  172. package/build/users-roles-settings-page.9d9a1eff.chunk.js +0 -30
  173. package/ee/admin/hooks/index.js +0 -4
  174. package/ee/admin/hooks/useAuthProviders/index.js +0 -50
  175. package/ee/admin/hooks/useAuthProviders/reducer.js +0 -26
  176. package/ee/admin/hooks/useLicenseLimits/index.js +0 -1
  177. package/scripts/create-plugins-file.js +0 -92
  178. package/utils/get-plugins-path.js +0 -41
  179. /package/ee/admin/hooks/{useLicenseLimits/__mocks__/index.js → __mocks__/useLicenseLimits.js} +0 -0
  180. /package/server/services/permission/permissions-manager/{query-builers.js → query-builders.js} +0 -0
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Retrieves the display name of an admin panel user
3
+ * @typedef AdminUserNamesAttributes
4
+ * @property {string} firstname
5
+ * @property {string} lastname
6
+ * @property {string} username
7
+ * @property {string} email
8
+ *
9
+ * @type {(user: AdminUserNamesAttributes, formatMessage: import('react-intl').formatMessage) => string}
10
+ */
11
+ const getDisplayName = ({ firstname, lastname, username, email }, formatMessage) => {
12
+ if (username) {
13
+ return username;
14
+ }
15
+
16
+ // firstname is not required if the user is created with a username
17
+ if (firstname) {
18
+ return formatMessage(
19
+ {
20
+ id: 'global.fullname',
21
+ defaultMessage: '{firstname} {lastname}',
22
+ },
23
+ {
24
+ firstname,
25
+ lastname,
26
+ }
27
+ ).trim();
28
+ }
29
+
30
+ return email;
31
+ };
32
+
33
+ export { getDisplayName };
@@ -12,3 +12,4 @@ export { default as mergeMetasWithSchema } from './mergeMetasWithSchema';
12
12
  export { default as removeKeyInObject } from './removeKeyInObject';
13
13
  export { default as removePasswordFieldsFromData } from './removePasswordFieldsFromData';
14
14
  export { default as createYupSchema } from './schema';
15
+ export { getDisplayName } from './getDisplayName';
@@ -42,7 +42,9 @@ const ProfilePage = lazy(() =>
42
42
  import(/* webpackChunkName: "Admin_profilePage" */ '../ProfilePage')
43
43
  );
44
44
  const SettingsPage = lazy(() =>
45
- import(/* webpackChunkName: "Admin_settingsPage" */ '../SettingsPage')
45
+ import(/* webpackChunkName: "Admin_settingsPage" */ '../SettingsPage').then((module) => ({
46
+ default: module.SettingsPage,
47
+ }))
46
48
  );
47
49
 
48
50
  // Simple hook easier for testing
@@ -29,6 +29,7 @@ import { useIntl } from 'react-intl';
29
29
  import { useHistory } from 'react-router-dom';
30
30
  import styled from 'styled-components';
31
31
 
32
+ import { useNpsSurveySettings } from '../../../../components/NpsSurvey/hooks/useNpsSurveySettings';
32
33
  import Logo from '../../../../components/UnauthenticatedLogo';
33
34
  import UnauthenticatedLayout, { LayoutContent } from '../../../../layouts/UnauthenticatedLayout';
34
35
  import FieldActionWrapper from '../FieldActionWrapper';
@@ -55,6 +56,7 @@ const Register = ({ authType, fieldsToDisable, noSignin, onSubmit, schema }) =>
55
56
  const query = useQuery();
56
57
  const { formatAPIError } = useAPIErrorHandler();
57
58
  const { get } = useFetchClient();
59
+ const { setNpsSurveySettings } = useNpsSurveySettings();
58
60
 
59
61
  const registrationToken = query.get('registrationToken');
60
62
 
@@ -143,6 +145,9 @@ const Register = ({ authType, fieldsToDisable, noSignin, onSubmit, schema }) =>
143
145
  } else {
144
146
  onSubmit(normalizedData, formik);
145
147
  }
148
+
149
+ // Only enable EE survey if user accepted the newsletter
150
+ setNpsSurveySettings({ enabled: data.news });
146
151
  } catch (err) {
147
152
  const errors = getYupInnerErrors(err);
148
153
  setSubmitCount(submitCount + 1);
@@ -12,14 +12,14 @@ import PropTypes from 'prop-types';
12
12
  import { useIntl } from 'react-intl';
13
13
  import { NavLink, useLocation } from 'react-router-dom';
14
14
 
15
- import { getSectionsToDisplay } from '../../utils';
16
-
17
15
  const SettingsNav = ({ menu }) => {
18
16
  const { formatMessage } = useIntl();
19
17
  const { trackUsage } = useTracking();
20
18
  const { pathname } = useLocation();
21
19
 
22
- const filteredMenu = getSectionsToDisplay(menu);
20
+ const filteredMenu = menu.filter(
21
+ (section) => !section.links.every((link) => link.isDisplayed === false)
22
+ );
23
23
 
24
24
  const sections = filteredMenu.map((section) => {
25
25
  return {
@@ -1,15 +1,4 @@
1
- /**
2
- *
3
- * SettingsPage
4
- *
5
- */
6
-
7
- // NOTE TO PLUGINS DEVELOPERS:
8
- // If you modify this file you also need to update the documentation accordingly
9
- // Here's the file: strapi/docs/3.0.0-beta.x/plugin-development/frontend-settings-api.md
10
- // IF THE DOC IS NOT UPDATED THE PULL REQUEST WILL NOT BE MERGED
11
-
12
- import React, { memo, useMemo } from 'react';
1
+ import * as React from 'react';
13
2
 
14
3
  import { Layout } from '@strapi/design-system';
15
4
  import { LoadingIndicatorPage, useStrapiApp } from '@strapi/helper-plugin';
@@ -19,14 +8,14 @@ import { Redirect, Route, Switch, useParams } from 'react-router-dom';
19
8
 
20
9
  import { useSettingsMenu } from '../../hooks';
21
10
  import { useEnterprise } from '../../hooks/useEnterprise';
22
- import { createRoute, makeUniqueRoutes } from '../../utils';
11
+ import createRoute from '../../utils/createRoute';
12
+ import makeUniqueRoutes from '../../utils/makeUniqueRoutes';
23
13
 
24
14
  import SettingsNav from './components/SettingsNav';
25
15
  import { ROUTES_CE } from './constants';
26
16
  import ApplicationInfosPage from './pages/ApplicationInfosPage';
27
- import { createSectionsRoutes } from './utils';
28
17
 
29
- function SettingsPage() {
18
+ export function SettingsPage() {
30
19
  const { settingId } = useParams();
31
20
  const { settings } = useStrapiApp();
32
21
  const { formatMessage } = useIntl();
@@ -43,13 +32,17 @@ function SettingsPage() {
43
32
  );
44
33
 
45
34
  // Creates the admin routes
46
- const adminRoutes = useMemo(() => {
35
+ const adminRoutes = React.useMemo(() => {
47
36
  return makeUniqueRoutes(
48
37
  routes.map(({ to, Component, exact }) => createRoute(Component, to, exact))
49
38
  );
50
39
  }, [routes]);
51
40
 
52
- const pluginsRoutes = createSectionsRoutes(settings);
41
+ const pluginsRoutes = Object.values(settings).flatMap((section) => {
42
+ const { links } = section;
43
+
44
+ return links.map((link) => createRoute(link.Component, link.to, link.exact || false));
45
+ });
53
46
 
54
47
  // Since the useSettingsMenu hook can make API calls in order to check the links permissions
55
48
  // We need to add a loading state to prevent redirecting the user while permissions are being checked
@@ -61,14 +54,14 @@ function SettingsPage() {
61
54
  return <Redirect to="/settings/application-infos" />;
62
55
  }
63
56
 
64
- const settingTitle = formatMessage({
65
- id: 'global.settings',
66
- defaultMessage: 'Settings',
67
- });
68
-
69
57
  return (
70
58
  <Layout sideNav={<SettingsNav menu={menu} />}>
71
- <Helmet title={settingTitle} />
59
+ <Helmet
60
+ title={formatMessage({
61
+ id: 'global.settings',
62
+ defaultMessage: 'Settings',
63
+ })}
64
+ />
72
65
 
73
66
  <Switch>
74
67
  <Route path="/settings/application-infos" component={ApplicationInfosPage} exact />
@@ -78,6 +71,3 @@ function SettingsPage() {
78
71
  </Layout>
79
72
  );
80
73
  }
81
-
82
- export default memo(SettingsPage);
83
- export { SettingsPage };
@@ -1,4 +1,4 @@
1
- import React, { useRef } from 'react';
1
+ import * as React from 'react';
2
2
 
3
3
  import {
4
4
  Button,
@@ -14,8 +14,11 @@ import {
14
14
  Typography,
15
15
  } from '@strapi/design-system';
16
16
  import {
17
+ prefixFileUrlWithBackendUrl,
17
18
  SettingsPageTitle,
19
+ useAPIErrorHandler,
18
20
  useAppInfo,
21
+ useFetchClient,
19
22
  useFocusWhenNavigate,
20
23
  useNotification,
21
24
  useRBAC,
@@ -23,7 +26,7 @@ import {
23
26
  } from '@strapi/helper-plugin';
24
27
  import { Check, ExternalLink } from '@strapi/icons';
25
28
  import { useIntl } from 'react-intl';
26
- import { useMutation, useQuery, useQueryClient } from 'react-query';
29
+ import { useMutation, useQuery } from 'react-query';
27
30
  import { useSelector } from 'react-redux';
28
31
 
29
32
  import { useConfigurations } from '../../../../hooks';
@@ -31,18 +34,20 @@ import { useEnterprise } from '../../../../hooks/useEnterprise';
31
34
  import { selectAdminPermissions } from '../../../App/selectors';
32
35
 
33
36
  import CustomizationInfos from './components/CustomizationInfos';
34
- import { fetchProjectSettings, postProjectSettings } from './utils/api';
35
37
  import getFormData from './utils/getFormData';
36
38
 
37
39
  const AdminSeatInfoCE = () => null;
38
40
 
39
41
  const ApplicationInfosPage = () => {
40
- const inputsRef = useRef();
42
+ const inputsRef = React.useRef();
41
43
  const toggleNotification = useNotification();
42
44
  const { trackUsage } = useTracking();
43
45
  const { formatMessage } = useIntl();
44
- const queryClient = useQueryClient();
45
- useFocusWhenNavigate();
46
+ const { get, post } = useFetchClient();
47
+ const { updateProjectSettings } = useConfigurations();
48
+ const permissions = useSelector(selectAdminPermissions);
49
+ const { formatAPIError } = useAPIErrorHandler();
50
+
46
51
  const {
47
52
  communityEdition,
48
53
  latestStrapiReleaseTag,
@@ -50,8 +55,7 @@ const ApplicationInfosPage = () => {
50
55
  shouldUpdateStrapi,
51
56
  strapiVersion,
52
57
  } = useAppInfo();
53
- const { updateProjectSettings } = useConfigurations();
54
- const permissions = useSelector(selectAdminPermissions);
58
+
55
59
  const AdminSeatInfo = useEnterprise(
56
60
  AdminSeatInfoCE,
57
61
  async () =>
@@ -65,38 +69,68 @@ const ApplicationInfosPage = () => {
65
69
  const {
66
70
  allowedActions: { canRead, canUpdate },
67
71
  } = useRBAC(permissions.settings['project-settings']);
68
- const canSubmit = canRead && canUpdate;
69
72
 
70
- const { data, isLoading } = useQuery('project-settings', fetchProjectSettings, {
71
- enabled: canRead,
72
- });
73
+ useFocusWhenNavigate();
73
74
 
74
- const submitMutation = useMutation((body) => postProjectSettings(body), {
75
- async onSuccess({ menuLogo, authLogo }) {
76
- await queryClient.invalidateQueries('project-settings', { refetchActive: true });
77
- updateProjectSettings({ menuLogo: menuLogo?.url, authLogo: authLogo?.url });
75
+ const { data, isLoading } = useQuery(
76
+ ['project-settings'],
77
+ async () => {
78
+ const { data } = await get('/admin/project-settings');
79
+
80
+ return data;
78
81
  },
79
- });
82
+ {
83
+ cacheTime: 0,
84
+ enabled: canRead,
85
+ select(data) {
86
+ return {
87
+ ...data,
80
88
 
81
- const handleSubmit = (e) => {
82
- e.preventDefault();
89
+ authLogo: data.authLogo
90
+ ? {
91
+ ...data.authLogo,
92
+ url: prefixFileUrlWithBackendUrl(data.authLogo.url),
93
+ }
94
+ : data.authLogo,
83
95
 
84
- if (!canUpdate) return;
96
+ menuLogo: data.menuLogo
97
+ ? {
98
+ ...data.menuLogo,
99
+ url: prefixFileUrlWithBackendUrl(data.menuLogo.url),
100
+ }
101
+ : data.menuLogo,
102
+ };
103
+ },
104
+ }
105
+ );
85
106
 
86
- const inputValues = inputsRef.current.getValues();
87
- const formData = getFormData(inputValues);
107
+ const submitMutation = useMutation(
108
+ (body) =>
109
+ post('/admin/project-settings', body, {
110
+ headers: {
111
+ 'Content-Type': 'multipart/form-data',
112
+ },
113
+ }),
114
+ {
115
+ onError(error) {
116
+ toggleNotification({
117
+ type: 'warning',
118
+ message: formatAPIError(error),
119
+ });
120
+ },
88
121
 
89
- submitMutation.mutate(formData, {
90
- onSuccess() {
91
- const { menuLogo, authLogo } = inputValues;
122
+ async onSuccess(data) {
123
+ const { menuLogo, authLogo } = data;
92
124
 
93
- if (menuLogo.rawFile) {
125
+ updateProjectSettings({ menuLogo: menuLogo?.url, authLogo: authLogo?.url });
126
+
127
+ if (menuLogo?.rawFile) {
94
128
  trackUsage('didChangeLogo', {
95
129
  logo: 'menu',
96
130
  });
97
131
  }
98
132
 
99
- if (authLogo.rawFile) {
133
+ if (authLogo?.rawFile) {
100
134
  trackUsage('didChangeLogo', {
101
135
  logo: 'auth',
102
136
  });
@@ -107,13 +141,13 @@ const ApplicationInfosPage = () => {
107
141
  message: formatMessage({ id: 'app', defaultMessage: 'Saved' }),
108
142
  });
109
143
  },
110
- onError() {
111
- toggleNotification({
112
- type: 'warning',
113
- message: { id: 'notification.error', defaultMessage: 'An error occurred' },
114
- });
115
- },
116
- });
144
+ }
145
+ );
146
+
147
+ const handleSubmit = (e) => {
148
+ e.preventDefault();
149
+
150
+ submitMutation.mutate(getFormData(inputsRef.current.getValues()));
117
151
  };
118
152
 
119
153
  // block rendering until the EE component is fully loaded
@@ -145,7 +179,7 @@ const ApplicationInfosPage = () => {
145
179
  defaultMessage: 'Administration panel’s global information',
146
180
  })}
147
181
  primaryAction={
148
- canSubmit && (
182
+ canUpdate && (
149
183
  <Button type="submit" startIcon={<Check />}>
150
184
  {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}
151
185
  </Button>
@@ -1,11 +1,10 @@
1
1
 
2
- // To override this file create a plugins-dev.js one and copy the content of the plugin.js one.
3
- // When starting the app the script will copy the plugins-dev.js into this one instead.
4
- import contentTypeBuilder from '../../../content-type-builder/admin/src';
5
- import email from '../../../email/admin/src';
6
- import upload from '../../../upload/admin/src';
7
- import i18N from '../../../../plugins/i18n/admin/src';
8
- import usersPermissions from '../../../../plugins/users-permissions/admin/src';
2
+ import contentTypeBuilder from '@strapi/plugin-content-type-builder/strapi-admin';
3
+ import email from '@strapi/plugin-email/strapi-admin';
4
+ import upload from '@strapi/plugin-upload/strapi-admin';
5
+ import i18N from '@strapi/plugin-i18n/strapi-admin';
6
+ import usersPermissions from '@strapi/plugin-users-permissions/strapi-admin';
7
+
9
8
 
10
9
  const plugins = {
11
10
  'content-type-builder': contentTypeBuilder,
@@ -14,5 +13,5 @@ const plugins = {
14
13
  'i18n': i18N,
15
14
  'users-permissions': usersPermissions,
16
15
  };
17
-
16
+
18
17
  export default plugins;
@@ -479,6 +479,13 @@
479
479
  "app.components.MarketplaceBanner.link": "Check it out now",
480
480
  "app.components.NotFoundPage.back": "Back to homepage",
481
481
  "app.components.NotFoundPage.description": "Not Found",
482
+ "app.components.NpsSurvey.banner-title": "How likely are you to recommend Strapi to a friend or colleague?",
483
+ "app.components.NpsSurvey.feedback-response": "Thank you very much for your feedback!",
484
+ "app.components.NpsSurvey.feedback-question": "Do you have any suggestion for improvements?",
485
+ "app.components.NpsSurvey.submit-feedback": "Submit Feedback",
486
+ "app.components.NpsSurvey.dismiss-survey-label": "Dismiss survey",
487
+ "app.components.NpsSurvey.no-recommendation": "Not at all likely",
488
+ "app.components.NpsSurvey.happy-to-recommend": "Extremely likely",
482
489
  "app.components.Official": "Official",
483
490
  "app.components.Onboarding.help.button": "Help button",
484
491
  "app.components.Onboarding.label.completed": "% completed",
@@ -612,7 +619,7 @@
612
619
  "components.PageFooter.select": "Entries per page",
613
620
  "components.ProductionBlocker.description": "For safety purposes we have to disable this plugin in other environments.",
614
621
  "components.ProductionBlocker.header": "This plugin is only available in development.",
615
- "components.Search.placeholder": "Search...",
622
+ "components.ViewSettings.tooltip": "View settings",
616
623
  "components.TableHeader.sort": "Sort on {label}",
617
624
  "components.Wysiwyg.ToggleMode.markdown-mode": "Markdown mode",
618
625
  "components.Wysiwyg.ToggleMode.preview-mode": "Preview mode",
@@ -671,6 +678,7 @@
671
678
  "content-manager.components.FiltersPickWrapper.PluginHeader.description": "Set the conditions to apply to filter the entries",
672
679
  "content-manager.components.FiltersPickWrapper.PluginHeader.title.filter": "Filters",
673
680
  "content-manager.components.FiltersPickWrapper.hide": "Hide",
681
+ "content-manager.components.Filters.usersSelect.label": "Search and select a user to filter by",
674
682
  "content-manager.components.LeftMenu.Search.label": "Search for a content type",
675
683
  "content-manager.components.LeftMenu.collection-types": "Collection Types",
676
684
  "content-manager.components.LeftMenu.single-types": "Single Types",
@@ -914,6 +922,7 @@
914
922
  "global.settings": "Settings",
915
923
  "global.type": "Type",
916
924
  "global.users": "Users",
925
+ "global.fullname": "{firstname} {lastname}",
917
926
  "light": "Light",
918
927
  "notification.contentType.relations.conflict": "Content type has conflicting relations",
919
928
  "notification.default.title": "Information:",
@@ -1 +1 @@
1
- "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[1049],{39404:function(A,T,e){e.d(T,{Z:function(){return M}});var t=e(32735),y=e(82055),c=e(87933),o=e(41415),s=e(19565),a=e(66456),r=e(29439),f=e(60216),n=e.n(f),m=e(67879),u=e(44647),E=e(79652);const d=({onRegenerate:R,idToRegenerate:O,backUrl:L,onError:W})=>{const{formatMessage:i}=(0,m.Z)(),[K,B]=(0,t.useState)(!1),{regenerateData:U,isLoadingConfirmation:x}=(0,E.rW)(L,O,R,W),h=async()=>{U(),B(!1)};return t.createElement(t.Fragment,null,t.createElement(o.z,{startIcon:t.createElement(u.Z,null),type:"button",size:"S",variant:"tertiary",onClick:()=>B(!0),name:"regenerate"},i({id:"Settings.tokens.regenerate",defaultMessage:"Regenerate"})),t.createElement(s.QH,{bodyText:{id:"Settings.tokens.popUpWarning.message",defaultMessage:"Are you sure you want to regenerate this token?"},iconRightButton:t.createElement(u.Z,null),isConfirmButtonLoading:x,isOpen:K,onToggleDialog:()=>B(!1),onConfirm:h,leftButtonText:{id:"Settings.tokens.Button.cancel",defaultMessage:"Cancel"},rightButtonText:{id:"Settings.tokens.Button.regenerate",defaultMessage:"Regenerate"},title:{id:"Settings.tokens.RegenerateDialog.title",defaultMessage:"Regenerate token"}}))};d.defaultProps={onRegenerate(){},onError:void 0},d.propTypes={onRegenerate:n().func,idToRegenerate:n().oneOfType([n().number,n().string]).isRequired,backUrl:n().string.isRequired,onError:n().func};var g=d;const l=({title:R,token:O,setToken:L,canEditInputs:W,canRegenerate:i,isSubmitting:K,backUrl:B,regenerateUrl:U,onErrorRegenerate:x})=>{const{formatMessage:h}=(0,m.Z)(),z=j=>{L({...O,accessKey:j})};return t.createElement(y.T,{title:O?.name||h(R),primaryAction:W?t.createElement(c.k,{gap:2},i&&O?.id&&t.createElement(g,{backUrl:U,onRegenerate:z,idToRegenerate:O?.id,onError:x}),t.createElement(o.z,{disabled:K,loading:K,startIcon:t.createElement(a.Z,null),type:"submit",size:"S"},h({id:"global.save",defaultMessage:"Save"}))):i&&O?.id&&t.createElement(g,{onRegenerate:z,idToRegenerate:O?.id,backUrl:U}),navigationAction:t.createElement(s.rU,{startIcon:t.createElement(r.Z,null),to:B},h({id:"global.back",defaultMessage:"Back"})),ellipsis:!0})};l.propTypes={token:n().shape({id:n().oneOfType([n().number,n().string]),type:n().string,lifespan:n().oneOfType([n().number,n().string]),name:n().string,accessKey:n().string,permissions:n().array,description:n().string,createdAt:n().string}),canEditInputs:n().bool.isRequired,canRegenerate:n().bool.isRequired,setToken:n().func.isRequired,isSubmitting:n().bool.isRequired,backUrl:n().string.isRequired,title:n().shape({id:n().string,label:n().string}).isRequired,regenerateUrl:n().string.isRequired,onErrorRegenerate:n().func},l.defaultProps={token:void 0,onErrorRegenerate:void 0};var M=l},82505:function(A,T,e){var t=e(32735),y=e(68465),c=e(84967),o=e(49372),s=e(60216),a=e.n(s),r=e(67879),f=e(25652);const n=({token:m,errors:u,values:E,onChange:d,isCreating:g})=>{const{formatMessage:l}=(0,r.Z)();return t.createElement(t.Fragment,null,t.createElement(y.P,{name:"lifespan",label:l({id:"Settings.tokens.form.duration",defaultMessage:"Token duration"}),value:E.lifespan!==null?E.lifespan:"0",error:u.lifespan?l(u.lifespan?.id?u.lifespan:{id:u.lifespan,defaultMessage:u.lifespan}):null,onChange:M=>{d({target:{name:"lifespan",value:M}})},required:!0,disabled:!g,placeholder:"Select"},t.createElement(c.W,{value:"604800000"},l({id:"Settings.tokens.duration.7-days",defaultMessage:"7 days"})),t.createElement(c.W,{value:"2592000000"},l({id:"Settings.tokens.duration.30-days",defaultMessage:"30 days"})),t.createElement(c.W,{value:"7776000000"},l({id:"Settings.tokens.duration.90-days",defaultMessage:"90 days"})),t.createElement(c.W,{value:"0"},l({id:"Settings.tokens.duration.unlimited",defaultMessage:"Unlimited"}))),t.createElement(o.Z,{variant:"pi",textColor:"neutral600"},!g&&`${l({id:"Settings.tokens.duration.expiration-date",defaultMessage:"Expiration date"})}: ${(0,f.IX)(m?.createdAt,parseInt(E.lifespan,10))}`))};n.propTypes={errors:a().shape({lifespan:a().string}),onChange:a().func.isRequired,values:a().shape({lifespan:a().oneOfType([a().number,a().string])}).isRequired,isCreating:a().bool.isRequired,token:a().shape({id:a().oneOfType([a().number,a().string]),type:a().string,lifespan:a().string,name:a().string,accessKey:a().string,permissions:a().array,description:a().string,createdAt:a().string})},n.defaultProps={errors:{},token:{}},T.Z=n},7210:function(A,T,e){var t=e(32735),y=e(50563),c=e(19565),o=e(47765),s=e(11631),a=e(60216),r=e.n(a),f=e(67879);const n=({token:m,tokenType:u})=>{const{formatMessage:E}=(0,f.Z)(),d=(0,c.lm)(),{trackUsage:g}=(0,c.rS)(),{copy:l}=(0,c.VP)(),M=R=>async()=>{await l(R)&&(g("didCopyTokenKey",{tokenType:u}),d({type:"success",message:{id:"Settings.tokens.notification.copied"}}))};return t.createElement(c.Y_,{endAction:m&&t.createElement("span",{style:{alignSelf:"start"}},t.createElement(y.h,{label:E({id:"app.component.CopyToClipboard.label",defaultMessage:"Copy to clipboard"}),onClick:M(m),noBorder:!0,icon:t.createElement(o.Z,null),style:{padding:0,height:"1rem"}})),title:m||E({id:"Settings.tokens.copy.editTitle",defaultMessage:"This token isn\u2019t accessible anymore."}),subtitle:E(m?{id:"Settings.tokens.copy.lastWarning",defaultMessage:"Make sure to copy this token, you won\u2019t be able to see it again!"}:{id:"Settings.tokens.copy.editMessage",defaultMessage:"For security reasons, you can only see your token once."}),icon:t.createElement(s.Z,null),iconBackground:"neutral100"})};n.defaultProps={token:null},n.propTypes={token:r().string,tokenType:r().string.isRequired},T.Z=n},58380:function(A,T,e){var t=e(32735),y=e(33475),c=e(60216),o=e.n(c),s=e(67879);const a=({errors:r,values:f,onChange:n,canEditInputs:m})=>{const{formatMessage:u}=(0,s.Z)();return t.createElement(y.g,{label:u({id:"Settings.tokens.form.description",defaultMessage:"Description"}),id:"description",error:r.description?u(r.description?.id?r.description:{id:r.description,defaultMessage:r.description}):null,onChange:n,disabled:!m},f.description)};a.propTypes={errors:o().shape({description:o().string}),onChange:o().func.isRequired,canEditInputs:o().bool.isRequired,values:o().shape({description:o().string}).isRequired},a.defaultProps={errors:{}},T.Z=a},37823:function(A,T,e){var t=e(32735),y=e(10369),c=e(60216),o=e.n(c),s=e(67879);const a=({errors:r,values:f,onChange:n,canEditInputs:m})=>{const{formatMessage:u}=(0,s.Z)();return t.createElement(y.o,{name:"name",error:r.name?u(r.name?.id?r.name:{id:r.name,defaultMessage:r.name}):null,label:u({id:"Settings.tokens.form.name",defaultMessage:"Name"}),onChange:n,value:f.name,disabled:!m,required:!0})};a.propTypes={errors:o().shape({name:o().string}),onChange:o().func.isRequired,canEditInputs:o().bool.isRequired,values:o().shape({name:o().string}).isRequired},a.defaultProps={errors:{}},T.Z=a},32655:function(A,T,e){var t=e(32735),y=e(68465),c=e(84967),o=e(60216),s=e.n(o),a=e(67879);const r=({name:f,errors:n,values:m,onChange:u,canEditInputs:E,options:d,label:g})=>{const{formatMessage:l}=(0,a.Z)();return t.createElement(y.P,{name:f,label:l({id:g.id,defaultMessage:g.defaultMessage}),value:m&&m[f],error:n[f]?l(n[f]?.id?n[f]:{id:n[f],defaultMessage:n[f]}):null,onChange:u,placeholder:"Select",required:!0,disabled:!E},d&&d.map(({value:M,label:R})=>t.createElement(c.W,{key:M,value:M},l(R))))};r.propTypes={name:s().string,options:s().arrayOf(s().shape({label:s().shape({id:s().string,defaultMessage:s().string}),value:s().string})),errors:s().shape({type:s().string}),onChange:s().func.isRequired,canEditInputs:s().bool.isRequired,values:s().shape({type:s().string}).isRequired,label:s().shape({id:s().string,defaultMessage:s().string}).isRequired},r.defaultProps={name:"type",errors:{},options:[]},T.Z=r},49756:function(A,T,e){e.d(T,{Z:function(){return t},f:function(){return y}});const t="api-token",y="transfer-token"},25652:function(A,T,e){e.d(T,{IX:function(){return s},fK:function(){return n},mk:function(){return u}});var t=e(14723),y=e(85544),c=e(76698),s=(E,d,g="en")=>{if(d&&typeof d=="number"){const l=d/24/60/60/1e3;return(0,t.Z)((0,y.Z)(new Date(E),l),"PPP",{locale:c[g]})}return"Unlimited"},a=e(19565),r=e(24346),n=r.Ry().shape({name:r.Z_(a.I0.string).max(100).required(a.I0.required),type:r.Z_(a.I0.string).oneOf(["read-only","full-access","custom"]).required(a.I0.required),description:r.Z_().nullable(),lifespan:r.Rx().integer().min(0).nullable().defined(a.I0.required)}),u=E=>{const d={allActionsIds:[],permissions:[]};return d.permissions=Object.keys(E).map(g=>({apiId:g,label:g.split("::")[1],controllers:Object.keys(E[g].controllers).map(l=>({controller:l,actions:E[g].controllers[l].map(M=>{const R=`${g}.${l}.${M}`;return g.includes("api::")&&d.allActionsIds.push(R),{action:M,actionId:R}}).flat()})).flat()})),d}},1930:function(A,T,e){e.d(T,{Z:function(){return ne}});var t=e(32735),y=e(27649),c=e(17e3),o=e(87933),s=e(19565),a=e(92802),r=e(67879),f=e(20108),n=e(15062),m=e(53038),u=e(24388),E=e(30305),d=e(49756),g=e(39404),l=e(7210),M=e(72850),R=e(49372),O=e(15335),L=e(5803),W=e(60216),i=e.n(W),K=e(82505),B=e(58380),U=e(37823),x=e(32655);const h=({errors:C,onChange:k,canEditInputs:Z,isCreating:D,values:S,transferToken:v})=>{const{formatMessage:F}=(0,r.Z)(),Q=[{value:"push",label:{id:"Settings.transferTokens.types.push",defaultMessage:"Push"}},{value:"pull",label:{id:"Settings.transferTokens.types.pull",defaultMessage:"Pull"}},{value:"push-pull",label:{id:"Settings.transferTokens.types.push-pull",defaultMessage:"Full Access"}}];return t.createElement(M.x,{background:"neutral0",hasRadius:!0,shadow:"filterShadow",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},t.createElement(o.k,{direction:"column",alignItems:"stretch",gap:4},t.createElement(R.Z,{variant:"delta",as:"h2"},F({id:"global.details",defaultMessage:"Details"})),t.createElement(O.r,{gap:5},t.createElement(L.P,{key:"name",col:6,xs:12},t.createElement(U.Z,{errors:C,values:S,canEditInputs:Z,onChange:k})),t.createElement(L.P,{key:"description",col:6,xs:12},t.createElement(B.Z,{errors:C,values:S,canEditInputs:Z,onChange:k})),t.createElement(L.P,{key:"lifespan",col:6,xs:12},t.createElement(K.Z,{isCreating:D,errors:C,values:S,onChange:k,token:v})),t.createElement(L.P,{key:"permissions",col:6,xs:12},t.createElement(x.Z,{name:"permissions",values:S,errors:C,label:{id:"Settings.tokens.form.type",defaultMessage:"Token type"},onChange:V=>{k({target:{name:"permissions",value:V}})},options:Q,canEditInputs:Z})))))};h.propTypes={errors:i().shape({name:i().string,description:i().string,lifespan:i().string,type:i().string}),onChange:i().func.isRequired,canEditInputs:i().bool.isRequired,values:i().shape({name:i().string,description:i().string,lifespan:i().oneOfType([i().number,i().string]),type:i().string}).isRequired,isCreating:i().bool.isRequired,transferToken:i().shape({id:i().oneOfType([i().number,i().string]),type:i().string,lifespan:i().string,name:i().string,accessKey:i().string,permissions:i().array,description:i().string,createdAt:i().string})},h.defaultProps={errors:{},transferToken:{}};var z=h,j=e(82055),_=e(41415),q=e(66456);const G=({transferTokenName:C})=>{const{formatMessage:k}=(0,r.Z)();return(0,s.go)(),t.createElement(y.o,{"aria-busy":"true"},t.createElement(s.SL,{name:"Transfer Tokens"}),t.createElement(j.T,{primaryAction:t.createElement(_.z,{disabled:!0,startIcon:t.createElement(q.Z,null),type:"button",size:"L"},k({id:"global.save",defaultMessage:"Save"})),title:C||k({id:"Settings.transferTokens.createPage.title",defaultMessage:"Create Transfer Token"})}),t.createElement(c.D,null,t.createElement(s.dO,null)))};G.defaultProps={transferTokenName:null},G.propTypes={transferTokenName:i().string};var w=G,N=e(24346),ee=N.Ry().shape({name:N.Z_(s.I0.string).max(100).required(s.I0.required),description:N.Z_().nullable(),lifespan:N.Rx().integer().min(0).nullable().defined(s.I0.required),permissions:N.Z_(s.I0.string).required(s.I0.required)});const te="Name already taken";var ne=()=>{(0,s.go)();const{formatMessage:C}=(0,r.Z)(),{lockApp:k,unlockApp:Z}=(0,s.o1)(),D=(0,s.lm)(),S=(0,m.k6)(),[v,F]=(0,t.useState)(S.location.state?.transferToken.accessKey?{...S.location.state.transferToken}:null),{trackUsage:Q}=(0,s.rS)(),V=(0,t.useRef)(Q),{setCurrentStep:se}=(0,s.c1)(),ae=(0,n.v9)(E._),{allowedActions:{canCreate:re,canUpdate:ie,canRegenerate:oe}}=(0,s.ss)(ae.settings["transfer-tokens"]),{params:{id:Y}}=(0,m.$B)("/settings/transfer-tokens/:id"),{get:le,post:de,put:ce}=(0,s.kY)(),P=Y==="create",{formatAPIError:J}=(0,s.So)();(0,t.useEffect)(()=>{V.current(P?"didAddTokenFromList":"didEditTokenFromList",{tokenType:d.f})},[P]);const{status:ue}=(0,f.useQuery)(["transfer-token",Y],async()=>{const{data:{data:p}}=await le(`/admin/transfer/tokens/${Y}`);return F({...p}),p},{enabled:!P&&!v,onError(p){p.response.data.error.details?.code==="INVALID_TOKEN_SALT"?D({type:"warning",message:{id:"notification.error.invalid.configuration",defaultMessage:"You have an invalid configuration, check your server log for more information."}}):D({type:"warning",message:J(p)})}}),ge=async(p,$)=>{V.current(P?"willCreateToken":"willEditToken",{tokenType:d.f}),k();const X=p.lifespan&&parseInt(p.lifespan,10)&&p.lifespan!=="0"?parseInt(p.lifespan,10):null,H=p.permissions.split("-");try{const{data:{data:I}}=P?await de("/admin/transfer/tokens",{...p,lifespan:X,permissions:H}):await ce(`/admin/transfer/tokens/${Y}`,{name:p.name,description:p.description,permissions:H});Z(),P&&(S.replace(`/settings/transfer-tokens/${I.id}`,{transferToken:I}),se("transferTokens.success")),F({...I}),D({type:"success",message:C(P?{id:"notification.success.transfertokencreated",defaultMessage:"Transfer Token successfully created"}:{id:"notification.success.transfertokenedited",defaultMessage:"Transfer Token successfully edited"})}),V.current(P?"didCreateToken":"didEditToken",{type:v?.permissions,tokenType:d.f})}catch(I){const fe=(0,u.Iz)(I.response.data);$.setErrors(fe),I?.response?.data?.error?.message===te?D({type:"warning",message:I.response.data.message||"notification.error.tokennamenotunique"}):I?.response?.data?.error?.details?.code==="INVALID_TOKEN_SALT"?D({type:"warning",message:{id:"notification.error.invalid.configuration",defaultMessage:"You have an invalid configuration, check your server log for more information."}}):D({type:"warning",message:I?.response?.data?.message||"notification.error"}),Z()}},b=ie&&!P||re&&P;if(!P&&!v&&ue!=="success")return t.createElement(w,{transferTokenName:v?.name});const pe=p=>{p?.response?.data?.error?.details?.code==="INVALID_TOKEN_SALT"?D({type:"warning",message:{id:"notification.error.invalid.configuration",defaultMessage:"You have an invalid configuration, check your server log for more information."}}):D({type:"warning",message:J(p)})};return t.createElement(y.o,null,t.createElement(s.SL,{name:"Transfer Tokens"}),t.createElement(a.J9,{validationSchema:ee,validateOnChange:!1,initialValues:{name:v?.name||"",description:v?.description||"",lifespan:v?.lifespan?v.lifespan.toString():v?.lifespan,permissions:v?.permissions.join("-")},enableReinitialize:!0,onSubmit:(p,$)=>ge(p,$)},({errors:p,handleChange:$,isSubmitting:X,values:H})=>t.createElement(s.l0,null,t.createElement(g.Z,{backUrl:"/settings/transfer-tokens",title:{id:"Settings.transferTokens.createPage.title",defaultMessage:"Create Transfer Token"},token:v,setToken:F,canEditInputs:b,canRegenerate:oe,isSubmitting:X,regenerateUrl:"/admin/transfer/tokens/",onErrorRegenerate:pe}),t.createElement(c.D,null,t.createElement(o.k,{direction:"column",alignItems:"stretch",gap:6},Boolean(v?.name)&&t.createElement(l.Z,{token:v?.accessKey,tokenType:d.f}),t.createElement(z,{errors:p,onChange:$,canEditInputs:b,isCreating:P,values:H,transferToken:v}))))))}}}]);
1
+ "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[1049],{39404:function(A,T,e){e.d(T,{Z:function(){return M}});var t=e(32735),y=e(82055),c=e(87933),o=e(41415),s=e(45509),a=e(66456),r=e(29439),f=e(60216),n=e.n(f),m=e(67879),u=e(44647),E=e(79652);const d=({onRegenerate:R,idToRegenerate:O,backUrl:L,onError:W})=>{const{formatMessage:i}=(0,m.Z)(),[K,B]=(0,t.useState)(!1),{regenerateData:U,isLoadingConfirmation:x}=(0,E.rW)(L,O,R,W),h=async()=>{U(),B(!1)};return t.createElement(t.Fragment,null,t.createElement(o.z,{startIcon:t.createElement(u.Z,null),type:"button",size:"S",variant:"tertiary",onClick:()=>B(!0),name:"regenerate"},i({id:"Settings.tokens.regenerate",defaultMessage:"Regenerate"})),t.createElement(s.QH,{bodyText:{id:"Settings.tokens.popUpWarning.message",defaultMessage:"Are you sure you want to regenerate this token?"},iconRightButton:t.createElement(u.Z,null),isConfirmButtonLoading:x,isOpen:K,onToggleDialog:()=>B(!1),onConfirm:h,leftButtonText:{id:"Settings.tokens.Button.cancel",defaultMessage:"Cancel"},rightButtonText:{id:"Settings.tokens.Button.regenerate",defaultMessage:"Regenerate"},title:{id:"Settings.tokens.RegenerateDialog.title",defaultMessage:"Regenerate token"}}))};d.defaultProps={onRegenerate(){},onError:void 0},d.propTypes={onRegenerate:n().func,idToRegenerate:n().oneOfType([n().number,n().string]).isRequired,backUrl:n().string.isRequired,onError:n().func};var g=d;const l=({title:R,token:O,setToken:L,canEditInputs:W,canRegenerate:i,isSubmitting:K,backUrl:B,regenerateUrl:U,onErrorRegenerate:x})=>{const{formatMessage:h}=(0,m.Z)(),z=j=>{L({...O,accessKey:j})};return t.createElement(y.T,{title:O?.name||h(R),primaryAction:W?t.createElement(c.k,{gap:2},i&&O?.id&&t.createElement(g,{backUrl:U,onRegenerate:z,idToRegenerate:O?.id,onError:x}),t.createElement(o.z,{disabled:K,loading:K,startIcon:t.createElement(a.Z,null),type:"submit",size:"S"},h({id:"global.save",defaultMessage:"Save"}))):i&&O?.id&&t.createElement(g,{onRegenerate:z,idToRegenerate:O?.id,backUrl:U}),navigationAction:t.createElement(s.rU,{startIcon:t.createElement(r.Z,null),to:B},h({id:"global.back",defaultMessage:"Back"})),ellipsis:!0})};l.propTypes={token:n().shape({id:n().oneOfType([n().number,n().string]),type:n().string,lifespan:n().oneOfType([n().number,n().string]),name:n().string,accessKey:n().string,permissions:n().array,description:n().string,createdAt:n().string}),canEditInputs:n().bool.isRequired,canRegenerate:n().bool.isRequired,setToken:n().func.isRequired,isSubmitting:n().bool.isRequired,backUrl:n().string.isRequired,title:n().shape({id:n().string,label:n().string}).isRequired,regenerateUrl:n().string.isRequired,onErrorRegenerate:n().func},l.defaultProps={token:void 0,onErrorRegenerate:void 0};var M=l},82505:function(A,T,e){var t=e(32735),y=e(68465),c=e(84967),o=e(49372),s=e(60216),a=e.n(s),r=e(67879),f=e(25652);const n=({token:m,errors:u,values:E,onChange:d,isCreating:g})=>{const{formatMessage:l}=(0,r.Z)();return t.createElement(t.Fragment,null,t.createElement(y.P,{name:"lifespan",label:l({id:"Settings.tokens.form.duration",defaultMessage:"Token duration"}),value:E.lifespan!==null?E.lifespan:"0",error:u.lifespan?l(u.lifespan?.id?u.lifespan:{id:u.lifespan,defaultMessage:u.lifespan}):null,onChange:M=>{d({target:{name:"lifespan",value:M}})},required:!0,disabled:!g,placeholder:"Select"},t.createElement(c.W,{value:"604800000"},l({id:"Settings.tokens.duration.7-days",defaultMessage:"7 days"})),t.createElement(c.W,{value:"2592000000"},l({id:"Settings.tokens.duration.30-days",defaultMessage:"30 days"})),t.createElement(c.W,{value:"7776000000"},l({id:"Settings.tokens.duration.90-days",defaultMessage:"90 days"})),t.createElement(c.W,{value:"0"},l({id:"Settings.tokens.duration.unlimited",defaultMessage:"Unlimited"}))),t.createElement(o.Z,{variant:"pi",textColor:"neutral600"},!g&&`${l({id:"Settings.tokens.duration.expiration-date",defaultMessage:"Expiration date"})}: ${(0,f.IX)(m?.createdAt,parseInt(E.lifespan,10))}`))};n.propTypes={errors:a().shape({lifespan:a().string}),onChange:a().func.isRequired,values:a().shape({lifespan:a().oneOfType([a().number,a().string])}).isRequired,isCreating:a().bool.isRequired,token:a().shape({id:a().oneOfType([a().number,a().string]),type:a().string,lifespan:a().string,name:a().string,accessKey:a().string,permissions:a().array,description:a().string,createdAt:a().string})},n.defaultProps={errors:{},token:{}},T.Z=n},7210:function(A,T,e){var t=e(32735),y=e(50563),c=e(45509),o=e(47765),s=e(11631),a=e(60216),r=e.n(a),f=e(67879);const n=({token:m,tokenType:u})=>{const{formatMessage:E}=(0,f.Z)(),d=(0,c.lm)(),{trackUsage:g}=(0,c.rS)(),{copy:l}=(0,c.VP)(),M=R=>async()=>{await l(R)&&(g("didCopyTokenKey",{tokenType:u}),d({type:"success",message:{id:"Settings.tokens.notification.copied"}}))};return t.createElement(c.Y_,{endAction:m&&t.createElement("span",{style:{alignSelf:"start"}},t.createElement(y.h,{label:E({id:"app.component.CopyToClipboard.label",defaultMessage:"Copy to clipboard"}),onClick:M(m),noBorder:!0,icon:t.createElement(o.Z,null),style:{padding:0,height:"1rem"}})),title:m||E({id:"Settings.tokens.copy.editTitle",defaultMessage:"This token isn\u2019t accessible anymore."}),subtitle:E(m?{id:"Settings.tokens.copy.lastWarning",defaultMessage:"Make sure to copy this token, you won\u2019t be able to see it again!"}:{id:"Settings.tokens.copy.editMessage",defaultMessage:"For security reasons, you can only see your token once."}),icon:t.createElement(s.Z,null),iconBackground:"neutral100"})};n.defaultProps={token:null},n.propTypes={token:r().string,tokenType:r().string.isRequired},T.Z=n},58380:function(A,T,e){var t=e(32735),y=e(33475),c=e(60216),o=e.n(c),s=e(67879);const a=({errors:r,values:f,onChange:n,canEditInputs:m})=>{const{formatMessage:u}=(0,s.Z)();return t.createElement(y.g,{label:u({id:"Settings.tokens.form.description",defaultMessage:"Description"}),id:"description",error:r.description?u(r.description?.id?r.description:{id:r.description,defaultMessage:r.description}):null,onChange:n,disabled:!m},f.description)};a.propTypes={errors:o().shape({description:o().string}),onChange:o().func.isRequired,canEditInputs:o().bool.isRequired,values:o().shape({description:o().string}).isRequired},a.defaultProps={errors:{}},T.Z=a},37823:function(A,T,e){var t=e(32735),y=e(10369),c=e(60216),o=e.n(c),s=e(67879);const a=({errors:r,values:f,onChange:n,canEditInputs:m})=>{const{formatMessage:u}=(0,s.Z)();return t.createElement(y.o,{name:"name",error:r.name?u(r.name?.id?r.name:{id:r.name,defaultMessage:r.name}):null,label:u({id:"Settings.tokens.form.name",defaultMessage:"Name"}),onChange:n,value:f.name,disabled:!m,required:!0})};a.propTypes={errors:o().shape({name:o().string}),onChange:o().func.isRequired,canEditInputs:o().bool.isRequired,values:o().shape({name:o().string}).isRequired},a.defaultProps={errors:{}},T.Z=a},32655:function(A,T,e){var t=e(32735),y=e(68465),c=e(84967),o=e(60216),s=e.n(o),a=e(67879);const r=({name:f,errors:n,values:m,onChange:u,canEditInputs:E,options:d,label:g})=>{const{formatMessage:l}=(0,a.Z)();return t.createElement(y.P,{name:f,label:l({id:g.id,defaultMessage:g.defaultMessage}),value:m&&m[f],error:n[f]?l(n[f]?.id?n[f]:{id:n[f],defaultMessage:n[f]}):null,onChange:u,placeholder:"Select",required:!0,disabled:!E},d&&d.map(({value:M,label:R})=>t.createElement(c.W,{key:M,value:M},l(R))))};r.propTypes={name:s().string,options:s().arrayOf(s().shape({label:s().shape({id:s().string,defaultMessage:s().string}),value:s().string})),errors:s().shape({type:s().string}),onChange:s().func.isRequired,canEditInputs:s().bool.isRequired,values:s().shape({type:s().string}).isRequired,label:s().shape({id:s().string,defaultMessage:s().string}).isRequired},r.defaultProps={name:"type",errors:{},options:[]},T.Z=r},49756:function(A,T,e){e.d(T,{Z:function(){return t},f:function(){return y}});const t="api-token",y="transfer-token"},25652:function(A,T,e){e.d(T,{IX:function(){return s},fK:function(){return n},mk:function(){return u}});var t=e(14723),y=e(85544),c=e(76698),s=(E,d,g="en")=>{if(d&&typeof d=="number"){const l=d/24/60/60/1e3;return(0,t.Z)((0,y.Z)(new Date(E),l),"PPP",{locale:c[g]})}return"Unlimited"},a=e(45509),r=e(24346),n=r.Ry().shape({name:r.Z_(a.I0.string).max(100).required(a.I0.required),type:r.Z_(a.I0.string).oneOf(["read-only","full-access","custom"]).required(a.I0.required),description:r.Z_().nullable(),lifespan:r.Rx().integer().min(0).nullable().defined(a.I0.required)}),u=E=>{const d={allActionsIds:[],permissions:[]};return d.permissions=Object.keys(E).map(g=>({apiId:g,label:g.split("::")[1],controllers:Object.keys(E[g].controllers).map(l=>({controller:l,actions:E[g].controllers[l].map(M=>{const R=`${g}.${l}.${M}`;return g.includes("api::")&&d.allActionsIds.push(R),{action:M,actionId:R}}).flat()})).flat()})),d}},1930:function(A,T,e){e.d(T,{Z:function(){return ne}});var t=e(32735),y=e(27649),c=e(17e3),o=e(87933),s=e(45509),a=e(92802),r=e(67879),f=e(20108),n=e(15062),m=e(53038),u=e(90869),E=e(30305),d=e(49756),g=e(39404),l=e(7210),M=e(72850),R=e(49372),O=e(15335),L=e(5803),W=e(60216),i=e.n(W),K=e(82505),B=e(58380),U=e(37823),x=e(32655);const h=({errors:C,onChange:k,canEditInputs:Z,isCreating:D,values:S,transferToken:v})=>{const{formatMessage:F}=(0,r.Z)(),Q=[{value:"push",label:{id:"Settings.transferTokens.types.push",defaultMessage:"Push"}},{value:"pull",label:{id:"Settings.transferTokens.types.pull",defaultMessage:"Pull"}},{value:"push-pull",label:{id:"Settings.transferTokens.types.push-pull",defaultMessage:"Full Access"}}];return t.createElement(M.x,{background:"neutral0",hasRadius:!0,shadow:"filterShadow",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},t.createElement(o.k,{direction:"column",alignItems:"stretch",gap:4},t.createElement(R.Z,{variant:"delta",as:"h2"},F({id:"global.details",defaultMessage:"Details"})),t.createElement(O.r,{gap:5},t.createElement(L.P,{key:"name",col:6,xs:12},t.createElement(U.Z,{errors:C,values:S,canEditInputs:Z,onChange:k})),t.createElement(L.P,{key:"description",col:6,xs:12},t.createElement(B.Z,{errors:C,values:S,canEditInputs:Z,onChange:k})),t.createElement(L.P,{key:"lifespan",col:6,xs:12},t.createElement(K.Z,{isCreating:D,errors:C,values:S,onChange:k,token:v})),t.createElement(L.P,{key:"permissions",col:6,xs:12},t.createElement(x.Z,{name:"permissions",values:S,errors:C,label:{id:"Settings.tokens.form.type",defaultMessage:"Token type"},onChange:V=>{k({target:{name:"permissions",value:V}})},options:Q,canEditInputs:Z})))))};h.propTypes={errors:i().shape({name:i().string,description:i().string,lifespan:i().string,type:i().string}),onChange:i().func.isRequired,canEditInputs:i().bool.isRequired,values:i().shape({name:i().string,description:i().string,lifespan:i().oneOfType([i().number,i().string]),type:i().string}).isRequired,isCreating:i().bool.isRequired,transferToken:i().shape({id:i().oneOfType([i().number,i().string]),type:i().string,lifespan:i().string,name:i().string,accessKey:i().string,permissions:i().array,description:i().string,createdAt:i().string})},h.defaultProps={errors:{},transferToken:{}};var z=h,j=e(82055),_=e(41415),q=e(66456);const G=({transferTokenName:C})=>{const{formatMessage:k}=(0,r.Z)();return(0,s.go)(),t.createElement(y.o,{"aria-busy":"true"},t.createElement(s.SL,{name:"Transfer Tokens"}),t.createElement(j.T,{primaryAction:t.createElement(_.z,{disabled:!0,startIcon:t.createElement(q.Z,null),type:"button",size:"L"},k({id:"global.save",defaultMessage:"Save"})),title:C||k({id:"Settings.transferTokens.createPage.title",defaultMessage:"Create Transfer Token"})}),t.createElement(c.D,null,t.createElement(s.dO,null)))};G.defaultProps={transferTokenName:null},G.propTypes={transferTokenName:i().string};var w=G,N=e(24346),ee=N.Ry().shape({name:N.Z_(s.I0.string).max(100).required(s.I0.required),description:N.Z_().nullable(),lifespan:N.Rx().integer().min(0).nullable().defined(s.I0.required),permissions:N.Z_(s.I0.string).required(s.I0.required)});const te="Name already taken";var ne=()=>{(0,s.go)();const{formatMessage:C}=(0,r.Z)(),{lockApp:k,unlockApp:Z}=(0,s.o1)(),D=(0,s.lm)(),S=(0,m.k6)(),[v,F]=(0,t.useState)(S.location.state?.transferToken.accessKey?{...S.location.state.transferToken}:null),{trackUsage:Q}=(0,s.rS)(),V=(0,t.useRef)(Q),{setCurrentStep:se}=(0,s.c1)(),ae=(0,n.v9)(E._),{allowedActions:{canCreate:re,canUpdate:ie,canRegenerate:oe}}=(0,s.ss)(ae.settings["transfer-tokens"]),{params:{id:Y}}=(0,m.$B)("/settings/transfer-tokens/:id"),{get:le,post:de,put:ce}=(0,s.kY)(),P=Y==="create",{formatAPIError:J}=(0,s.So)();(0,t.useEffect)(()=>{V.current(P?"didAddTokenFromList":"didEditTokenFromList",{tokenType:d.f})},[P]);const{status:ue}=(0,f.useQuery)(["transfer-token",Y],async()=>{const{data:{data:p}}=await le(`/admin/transfer/tokens/${Y}`);return F({...p}),p},{enabled:!P&&!v,onError(p){p.response.data.error.details?.code==="INVALID_TOKEN_SALT"?D({type:"warning",message:{id:"notification.error.invalid.configuration",defaultMessage:"You have an invalid configuration, check your server log for more information."}}):D({type:"warning",message:J(p)})}}),ge=async(p,$)=>{V.current(P?"willCreateToken":"willEditToken",{tokenType:d.f}),k();const X=p.lifespan&&parseInt(p.lifespan,10)&&p.lifespan!=="0"?parseInt(p.lifespan,10):null,H=p.permissions.split("-");try{const{data:{data:I}}=P?await de("/admin/transfer/tokens",{...p,lifespan:X,permissions:H}):await ce(`/admin/transfer/tokens/${Y}`,{name:p.name,description:p.description,permissions:H});Z(),P&&(S.replace(`/settings/transfer-tokens/${I.id}`,{transferToken:I}),se("transferTokens.success")),F({...I}),D({type:"success",message:C(P?{id:"notification.success.transfertokencreated",defaultMessage:"Transfer Token successfully created"}:{id:"notification.success.transfertokenedited",defaultMessage:"Transfer Token successfully edited"})}),V.current(P?"didCreateToken":"didEditToken",{type:v?.permissions,tokenType:d.f})}catch(I){const fe=(0,u.Iz)(I.response.data);$.setErrors(fe),I?.response?.data?.error?.message===te?D({type:"warning",message:I.response.data.message||"notification.error.tokennamenotunique"}):I?.response?.data?.error?.details?.code==="INVALID_TOKEN_SALT"?D({type:"warning",message:{id:"notification.error.invalid.configuration",defaultMessage:"You have an invalid configuration, check your server log for more information."}}):D({type:"warning",message:I?.response?.data?.message||"notification.error"}),Z()}},b=ie&&!P||re&&P;if(!P&&!v&&ue!=="success")return t.createElement(w,{transferTokenName:v?.name});const pe=p=>{p?.response?.data?.error?.details?.code==="INVALID_TOKEN_SALT"?D({type:"warning",message:{id:"notification.error.invalid.configuration",defaultMessage:"You have an invalid configuration, check your server log for more information."}}):D({type:"warning",message:J(p)})};return t.createElement(y.o,null,t.createElement(s.SL,{name:"Transfer Tokens"}),t.createElement(a.J9,{validationSchema:ee,validateOnChange:!1,initialValues:{name:v?.name||"",description:v?.description||"",lifespan:v?.lifespan?v.lifespan.toString():v?.lifespan,permissions:v?.permissions.join("-")},enableReinitialize:!0,onSubmit:(p,$)=>ge(p,$)},({errors:p,handleChange:$,isSubmitting:X,values:H})=>t.createElement(s.l0,null,t.createElement(g.Z,{backUrl:"/settings/transfer-tokens",title:{id:"Settings.transferTokens.createPage.title",defaultMessage:"Create Transfer Token"},token:v,setToken:F,canEditInputs:b,canRegenerate:oe,isSubmitting:X,regenerateUrl:"/admin/transfer/tokens/",onErrorRegenerate:pe}),t.createElement(c.D,null,t.createElement(o.k,{direction:"column",alignItems:"stretch",gap:6},Boolean(v?.name)&&t.createElement(l.Z,{token:v?.accessKey,tokenType:d.f}),t.createElement(z,{errors:p,onChange:$,canEditInputs:b,isCreating:P,values:H,transferToken:v}))))))}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[1227],{21227:function(g,E,t){t.d(E,{ReviewWorkflowsAssigneeEE:function(){return O},ReviewWorkflowsStageEE:function(){return f}});var e=t(32735),s=t(87933),c=t(72850),i=t(49372),r=t(45509),l=t(60216),n=t.n(l),o=t(2121),u=t(68886);function f({color:a,name:A}){const{themeColorName:R}=(0,u.k)(a);return e.createElement(s.k,{alignItems:"center",gap:2,maxWidth:(0,r.Q1)(300)},e.createElement(c.x,{height:2,background:a,borderColor:R==="neutral0"?"neutral150":"transparent",hasRadius:!0,shrink:0,width:2}),e.createElement(i.Z,{fontWeight:"regular",textColor:"neutral700",ellipsis:!0},A))}f.defaultProps={color:o.FT},f.propTypes={color:n().string,name:n().string.isRequired};var T=t(67879),W=t(69997);function O({user:a}){const{formatMessage:A}=(0,T.Z)();return e.createElement(i.Z,{textColor:"neutral800"},(0,W.Gf)(a,A))}O.propTypes={user:n().shape({firstname:n().string,lastname:n().string,username:n().string}).isRequired}},2121:function(g,E,t){t.d(E,{$k:function(){return o},Ef:function(){return O},FT:function(){return T},Nj:function(){return n},Ot:function(){return l},VS:function(){return u},_X:function(){return a},gu:function(){return c},lv:function(){return f},qZ:function(){return i},sN:function(){return s},uL:function(){return W},x4:function(){return r}});var e=t(12301);const s="settings_review-workflows",c="Settings/Review_Workflows/RESET_WORKFLOW",i="Settings/Review_Workflows/SET_WORKFLOW",r="Settings/Review_Workflows/WORKFLOW_DELETE_STAGE",l="Settings/Review_Workflows/WORKFLOW_ADD_STAGE",n="Settings/Review_Workflows/WORKFLOW_UPDATE_STAGE",o="Settings/Review_Workflows/WORKFLOW_UPDATE_STAGE_POSITION",u="Settings/Review_Workflows/WORKFLOW_UPDATE",f={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"},T=e.W.colors.primary600,W={STAGE:"stage"},O="numberOfWorkflows",a="stagesPerWorkflow"},68886:function(g,E,t){t.d(E,{k:function(){return c},s:function(){return i}});var e=t(12301),s=t(2121);function c(r){if(!r)return null;const n=Object.entries(e.W.colors).filter(([,o])=>o.toUpperCase()===r.toUpperCase()).reduce((o,[u])=>(s.lv?.[u]&&(o=u),o),null);return n?{themeColorName:n,name:s.lv[n]}:null}function i(){return Object.entries(s.lv).map(([r,l])=>({hex:e.W.colors[r].toUpperCase(),name:l}))}}}]);
@@ -1,4 +1,4 @@
1
- (self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[1386],{31386:function(E,v,c){"use strict";c.r(v),c.d(v,{ROUTES_EE:function(){return l}});var u=c(32735),a=c(19565),p=c(49189),d=c.n(p),C=c(67879),t=c(53038);const o=()=>{const{params:{authResponse:n}}=(0,t.$B)("/auth/login/:authResponse"),{formatMessage:r}=(0,C.Z)(),{push:e}=(0,t.k6)(),g=(0,u.useRef)(r);let i=(0,u.useCallback)(()=>{e(`/auth/oops?info=${encodeURIComponent(g.current({id:"Auth.form.button.login.providers.error",defaultMessage:"We cannot connect you through the selected provider."}))}`)},[e]);const{get:f}=(0,a.kY)(),s=(0,u.useCallback)(async()=>{try{const h=d().get("jwtToken");if(a.I8.clearAppStorage(),h){a.I8.setToken(h,!0);const R="/admin/users/me",{data:{data:I}}=await f(R);a.I8.setUserInfo(I,!0),d().remove("jwtToken"),e("/auth/login")}}catch{i()}},[f,e,i]);return(0,u.useEffect)(()=>{n==="error"&&i(),n==="success"&&s()},[n,s,i]),u.createElement(a.dO,null)};var m=null;const l=[{Component:()=>({default:o}),to:"/auth/login/:authResponse",exact:!0}]},49189:function(E,v,c){var u,a;/*!
1
+ (self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[1386],{31386:function(E,v,c){"use strict";c.r(v),c.d(v,{ROUTES_EE:function(){return l}});var u=c(32735),a=c(45509),p=c(49189),d=c.n(p),C=c(67879),t=c(53038);const o=()=>{const{params:{authResponse:n}}=(0,t.$B)("/auth/login/:authResponse"),{formatMessage:r}=(0,C.Z)(),{push:e}=(0,t.k6)(),g=(0,u.useRef)(r);let i=(0,u.useCallback)(()=>{e(`/auth/oops?info=${encodeURIComponent(g.current({id:"Auth.form.button.login.providers.error",defaultMessage:"We cannot connect you through the selected provider."}))}`)},[e]);const{get:f}=(0,a.kY)(),s=(0,u.useCallback)(async()=>{try{const h=d().get("jwtToken");if(a.I8.clearAppStorage(),h){a.I8.setToken(h,!0);const R="/admin/users/me",{data:{data:I}}=await f(R);a.I8.setUserInfo(I,!0),d().remove("jwtToken"),e("/auth/login")}}catch{i()}},[f,e,i]);return(0,u.useEffect)(()=>{n==="error"&&i(),n==="success"&&s()},[n,s,i]),u.createElement(a.dO,null)};var m=null;const l=[{Component:()=>({default:o}),to:"/auth/login/:authResponse",exact:!0}]},49189:function(E,v,c){var u,a;/*!
2
2
  * JavaScript Cookie v2.2.1
3
3
  * https://github.com/js-cookie/js-cookie
4
4
  *
@@ -0,0 +1,95 @@
1
+ (self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[1504],{88058:function(c,u,n){var t=n(87650);function r(e,s){var o=e==null?0:e.length;return!!o&&t(e,s,0)>-1}c.exports=r},37431:function(c){function u(n,t,r){for(var e=-1,s=n==null?0:n.length;++e<s;)if(r(t,n[e]))return!0;return!1}c.exports=u},91096:function(c,u,n){var t=n(61124),r=n(88058),e=n(37431),s=n(26460),o=n(76535),l=n(30555),i=200;function h(m,v,E,g){var a=-1,d=r,p=!0,x=m.length,f=[],j=v.length;if(!x)return f;E&&(v=s(v,o(E))),g?(d=e,p=!1):v.length>=i&&(d=l,p=!1,v=new t(v));n:for(;++a<x;){var _=m[a],M=E==null?_:E(_);if(_=g||_!==0?_:0,p&&M===M){for(var O=j;O--;)if(v[O]===M)continue n;f.push(_)}else d(v,M,g)||f.push(_)}return f}c.exports=h},56671:function(c,u,n){var t=n(35897),r=n(74741),e=r(t);c.exports=e},60528:function(c){function u(n,t,r,e){for(var s=n.length,o=r+(e?1:-1);e?o--:++o<s;)if(t(n[o],o,n))return o;return-1}c.exports=u},87650:function(c,u,n){var t=n(60528),r=n(25556),e=n(54256);function s(o,l,i){return l===l?e(o,l,i):t(o,r,i)}c.exports=s},25556:function(c){function u(n){return n!==n}c.exports=u},52920:function(c,u,n){var t=n(56671),r=n(81580);function e(s,o){var l=-1,i=r(s)?Array(s.length):[];return t(s,function(h,m,v){i[++l]=o(h,m,v)}),i}c.exports=e},50690:function(c,u,n){var t=n(26460),r=n(80166),e=n(88904),s=n(52920),o=n(36024),l=n(76535),i=n(1397),h=n(15362),m=n(77236);function v(E,g,a){g.length?g=t(g,function(x){return m(x)?function(f){return r(f,x.length===1?x[0]:x)}:x}):g=[h];var d=-1;g=t(g,l(e));var p=s(E,function(x,f,j){var _=t(g,function(M){return M(x)});return{criteria:_,index:++d,value:x}});return o(p,function(x,f){return i(x,f,a)})}c.exports=v},36024:function(c){function u(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].value;return n}c.exports=u},40709:function(c,u,n){var t=n(22945);function r(e,s){if(e!==s){var o=e!==void 0,l=e===null,i=e===e,h=t(e),m=s!==void 0,v=s===null,E=s===s,g=t(s);if(!v&&!g&&!h&&e>s||h&&m&&E&&!v&&!g||l&&m&&E||!o&&E||!i)return 1;if(!l&&!h&&!g&&e<s||g&&o&&i&&!l&&!h||v&&o&&i||!m&&i||!E)return-1}return 0}c.exports=r},1397:function(c,u,n){var t=n(40709);function r(e,s,o){for(var l=-1,i=e.criteria,h=s.criteria,m=i.length,v=o.length;++l<m;){var E=t(i[l],h[l]);if(E){if(l>=v)return E;var g=o[l];return E*(g=="desc"?-1:1)}}return e.index-s.index}c.exports=r},74741:function(c,u,n){var t=n(81580);function r(e,s){return function(o,l){if(o==null)return o;if(!t(o))return e(o,l);for(var i=o.length,h=s?i:-1,m=Object(o);(s?h--:++h<i)&&l(m[h],h,m)!==!1;);return o}}c.exports=r},54256:function(c){function u(n,t,r){for(var e=r-1,s=n.length;++e<s;)if(n[e]===t)return e;return-1}c.exports=u},37213:function(c,u,n){var t=n(26460),r=n(88904),e=n(52920),s=n(77236);function o(l,i){var h=s(l)?t:e;return h(l,r(i,3))}c.exports=o},98978:function(c,u,n){var t=n(40314),r=n(50690),e=n(94569),s=n(63108),o=e(function(l,i){if(l==null)return[];var h=i.length;return h>1&&s(l,i[0],i[1])?i=[]:h>2&&s(i[0],i[1],i[2])&&(i=[i[0]]),r(l,t(i,1),[])});c.exports=o},15738:function(c,u,n){var t=n(4293);function r(e){var s=e==null?0:e.length;return s?t(e,1,s):[]}c.exports=r},88708:function(c,u,n){var t=n(4293),r=n(25225);function e(s,o,l){return s&&s.length?(o=l||o===void 0?1:r(o),t(s,0,o<0?0:o)):[]}c.exports=e},86205:function(c,u,n){var t=n(91096),r=n(94569),e=n(99747),s=r(function(o,l){return e(o)?t(o,l):[]});c.exports=s},83828:function(c,u,n){"use strict";n.d(u,{U:function(){return g},y:function(){return v}});var t=n(74512),r=n(32735),e=n(8471),s=n(91045),o=n(74971),l=n(49372),i=n(87933),h=n(72850);const m=({theme:a,expanded:d,variant:p,disabled:x,error:f})=>f?`1px solid ${a.colors.danger600} !important`:x?`1px solid ${a.colors.neutral150}`:d?`1px solid ${a.colors.primary600}`:p==="primary"?`1px solid ${a.colors.neutral0}`:`1px solid ${a.colors.neutral100}`,v=(0,e.ZP)(l.Z)``,E=(0,e.ZP)(h.x)`
2
+ border: ${m};
3
+
4
+ &:hover:not([aria-disabled='true']) {
5
+ border: 1px solid ${({theme:a})=>a.colors.primary600};
6
+
7
+ ${v} {
8
+ color: ${({theme:a,expanded:d})=>d?void 0:a.colors.primary700};
9
+ }
10
+
11
+ ${l.Z} {
12
+ color: ${({theme:a,expanded:d})=>d?void 0:a.colors.primary600};
13
+ }
14
+
15
+ & > ${i.k} {
16
+ background: ${({theme:a})=>a.colors.primary100};
17
+ }
18
+
19
+ [data-strapi-dropdown='true'] {
20
+ background: ${({theme:a})=>a.colors.primary200};
21
+ }
22
+ }
23
+ `,g=({children:a,disabled:d=!1,error:p,expanded:x=!1,hasErrorMessage:f=!0,id:j,onToggle:_,toggle:M,size:O="M",variant:P="primary",shadow:B})=>{const y=(0,o.M)(j),A=r.useMemo(()=>({expanded:x,onToggle:_,toggle:M,id:y,size:O,variant:P,disabled:d}),[d,x,y,_,O,M,P]);return(0,t.jsxs)(s.S.Provider,{value:A,children:[(0,t.jsx)(E,{"data-strapi-expanded":x,disabled:d,"aria-disabled":d,expanded:x,hasRadius:!0,variant:P,error:p,shadow:B,children:a}),p&&f&&(0,t.jsx)(h.x,{paddingTop:1,children:(0,t.jsx)(l.Z,{variant:"pi",textColor:"danger600",children:p})})]})}},89966:function(c,u,n){"use strict";n.d(u,{v:function(){return s}});var t=n(74512),r=n(91045),e=n(72850);const s=({children:o,...l})=>{const{expanded:i,id:h}=(0,r.A)();if(!i)return null;const m=`accordion-content-${h}`,v=`accordion-label-${h}`,E=`accordion-desc-${h}`;return(0,t.jsx)(e.x,{role:"region",id:m,"aria-labelledby":v,"aria-describedby":E,...l,children:o})}},91045:function(c,u,n){"use strict";n.d(u,{A:function(){return e},S:function(){return r}});var t=n(32735);const r=(0,t.createContext)({disabled:!1,expanded:!1,id:"",size:"M",variant:"primary"}),e=()=>(0,t.useContext)(r)},61762:function(c,u,n){"use strict";n.d(u,{B:function(){return a}});var t=n(74512),r=n(16899),e=n(8471),s=n(83828),o=n(91045);const l=({expanded:d,disabled:p,variant:x})=>{let f="neutral100";return d?f="primary100":p?f="neutral150":x==="primary"&&(f="neutral0"),f};var i=n(7563),h=n(99140),m=n(87933),v=n(49372);const E=(0,e.ZP)(i.A)`
24
+ text-align: left;
25
+
26
+ // necessary to make the ellipsis prop work on the title
27
+ > span {
28
+ max-width: 100%;
29
+ }
30
+
31
+ svg {
32
+ width: ${14/16}rem;
33
+ height: ${14/16}rem;
34
+
35
+ path {
36
+ fill: ${({theme:d,expanded:p})=>p?d.colors.primary600:d.colors.neutral500};
37
+ }
38
+ }
39
+ `,g=(0,e.ZP)(m.k)`
40
+ min-height: ${({theme:d,size:p})=>d.sizes.accordions[p]};
41
+ border-radius: ${({theme:d,expanded:p})=>p?`${d.borderRadius} ${d.borderRadius} 0 0`:d.borderRadius};
42
+
43
+ &:hover {
44
+ svg {
45
+ path {
46
+ fill: ${({theme:d})=>d.colors.primary600};
47
+ }
48
+ }
49
+ }
50
+ `,a=({title:d,description:p,as:x="span",togglePosition:f="right",action:j,..._})=>{const{onToggle:M,toggle:O,expanded:P,id:B,size:y,variant:A,disabled:D}=(0,o.A)(),W=`accordion-content-${B}`,L=`accordion-label-${B}`,I=`accordion-desc-${B}`,C=y==="M"?6:4,b=y==="M"?C:C-2,U=l({expanded:P,disabled:D,variant:A}),K={as:x,fontWeight:y==="S"?"bold":void 0,id:L,textColor:P?"primary600":"neutral700",ellipsis:!0,variant:y==="M"?"delta":void 0},Z=P?"primary600":"neutral600",w=P?"primary200":"neutral200",T=y==="M"?`${32/16}rem`:`${24/16}rem`,R=()=>{D||(O&&!M?(console.warn('Deprecation warning: Usage of "toggle" prop in Accordion component is deprecated. This is discouraged and will be removed in the next major release. Please use "onToggle" instead'),O()):M&&M())},$=(0,t.jsx)(m.k,{justifyContent:"center",borderRadius:"50%",height:T,width:T,transform:P?"rotate(180deg)":void 0,"data-strapi-dropdown":!0,"aria-hidden":!0,as:"span",background:w,cursor:D?"not-allowed":"pointer",onClick:R,shrink:0,children:(0,t.jsx)(h.J,{as:r.Z,width:y==="M"?`${11/16}rem`:`${8/16}rem`,color:P?"primary600":"neutral600"})});return(0,t.jsx)(g,{paddingBottom:b,paddingLeft:C,paddingRight:C,paddingTop:b,background:U,expanded:P,size:y,justifyContent:"space-between",cursor:D?"not-allowed":"",children:(0,t.jsxs)(m.k,{gap:3,flex:1,maxWidth:"100%",children:[f==="left"&&$,(0,t.jsx)(E,{onClick:R,"aria-disabled":D,"aria-expanded":P,"aria-controls":W,"aria-labelledby":L,"data-strapi-accordion-toggle":!0,expanded:P,type:"button",flex:1,minWidth:0,..._,children:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.y,{...K,children:d}),p&&(0,t.jsx)(v.Z,{as:"p",id:I,textColor:Z,children:p})]})}),f==="right"&&(0,t.jsxs)(m.k,{gap:3,children:[$,j]}),f==="left"&&j]})})}},99223:function(c,u,n){"use strict";n.d(u,{Z:function(){return e}});var t=n(74512),r=n(87933);const e=({startActions:s,endActions:o})=>!s&&!o?null:(0,t.jsxs)(r.k,{justifyContent:"space-between",alignItems:"flex-start",paddingBottom:4,paddingLeft:10,paddingRight:10,children:[(0,t.jsx)(r.k,{gap:2,wrap:"wrap",children:s}),(0,t.jsx)(r.k,{gap:2,shrink:0,wrap:"wrap",children:o})]})},17e3:function(c,u,n){"use strict";n.d(u,{D:function(){return e}});var t=n(74512),r=n(72850);const e=({children:s})=>(0,t.jsx)(r.x,{paddingLeft:10,paddingRight:10,children:s})},82055:function(c,u,n){"use strict";n.d(u,{T:function(){return v}});var t=n(74512),r=n(32735),e=n(8471);const s=a=>{const d=(0,r.useRef)(null),[p,x]=(0,r.useState)(!0),f=([j])=>{x(j.isIntersecting)};return(0,r.useEffect)(()=>{const j=d.current,_=new IntersectionObserver(f,a);return j&&_.observe(d.current),()=>{j&&_.disconnect()}},[d,a]),[d,p]};var o=n(81957);const l=(a,d)=>{const p=(0,o.W)(d);(0,r.useLayoutEffect)(()=>{const x=new ResizeObserver(p);return Array.isArray(a)?a.forEach(f=>{f.current&&x.observe(f.current)}):a.current&&x.observe(a.current),()=>{x.disconnect()}},[a,p])};var i=n(72850),h=n(87933),m=n(49372);const v=a=>{const d=(0,r.useRef)(null),[p,x]=(0,r.useState)(null),[f,j]=s({root:null,rootMargin:"0px",threshold:0});return l(f,()=>{f.current&&x(f.current.getBoundingClientRect())}),(0,r.useEffect)(()=>{d.current&&x(d.current.getBoundingClientRect())},[d]),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{style:{height:p?.height},ref:f,children:j&&(0,t.jsx)(g,{ref:d,...a})}),!j&&(0,t.jsx)(g,{...a,sticky:!0,width:p?.width})]})};v.displayName="HeaderLayout";const E=(0,e.ZP)(i.x)`
51
+ width: ${({width:a})=>a?`${a/16}rem`:void 0};
52
+ z-index: ${({theme:a})=>a.zIndices[1]};
53
+ `,g=r.forwardRef(({navigationAction:a,primaryAction:d,secondaryAction:p,subtitle:x,title:f,sticky:j,width:_,...M},O)=>{const P=typeof x=="string";return j?(0,t.jsx)(E,{paddingLeft:6,paddingRight:6,paddingTop:3,paddingBottom:3,position:"fixed",top:0,right:0,background:"neutral0",shadow:"tableShadow",width:_,"data-strapi-header-sticky":!0,children:(0,t.jsxs)(h.k,{justifyContent:"space-between",children:[(0,t.jsxs)(h.k,{children:[a&&(0,t.jsx)(i.x,{paddingRight:3,children:a}),(0,t.jsxs)(i.x,{children:[(0,t.jsx)(m.Z,{variant:"beta",as:"h1",...M,children:f}),P?(0,t.jsx)(m.Z,{variant:"pi",textColor:"neutral600",children:x}):x]}),p?(0,t.jsx)(i.x,{paddingLeft:4,children:p}):null]}),(0,t.jsx)(h.k,{children:d?(0,t.jsx)(i.x,{paddingLeft:2,children:d}):void 0})]})}):(0,t.jsxs)(i.x,{ref:O,paddingLeft:10,paddingRight:10,paddingBottom:8,paddingTop:a?6:8,background:"neutral100","data-strapi-header":!0,children:[a?(0,t.jsx)(i.x,{paddingBottom:2,children:a}):null,(0,t.jsxs)(h.k,{justifyContent:"space-between",children:[(0,t.jsxs)(h.k,{minWidth:0,children:[(0,t.jsx)(m.Z,{as:"h1",variant:"alpha",...M,children:f}),p?(0,t.jsx)(i.x,{paddingLeft:4,children:p}):null]}),d]}),P?(0,t.jsx)(m.Z,{variant:"epsilon",textColor:"neutral600",as:"p",children:x}):x]})})},96709:function(c,u,n){"use strict";n.d(u,{A:function(){return l}});var t=n(74512),r=n(8471),e=n(72850);const s=(0,r.ZP)(e.x)`
54
+ display: grid;
55
+ grid-template-columns: ${({hasSideNav:i})=>i?"auto 1fr":"1fr"};
56
+ `,o=(0,r.ZP)(e.x)`
57
+ overflow-x: hidden;
58
+ `,l=({sideNav:i,children:h})=>(0,t.jsxs)(s,{hasSideNav:!!i,children:[i,(0,t.jsx)(o,{paddingBottom:10,children:h})]})},50428:function(c,u,n){"use strict";n.d(u,{r:function(){return E}});var t=n(74512),r=n(32735),e=n(47361),s=n(14911),o=n(8471),l=n(30350),i=n(49372),h=n(72850);const m=o.ZP.a`
59
+ display: inline-flex;
60
+ align-items: center;
61
+ text-decoration: none;
62
+ pointer-events: ${({disabled:g})=>g?"none":void 0};
63
+ color: ${({disabled:g,theme:a})=>g?a.colors.neutral600:a.colors.primary600};
64
+
65
+ svg path {
66
+ transition: fill 150ms ease-out;
67
+ fill: currentColor;
68
+ }
69
+
70
+ svg {
71
+ font-size: ${10/16}rem;
72
+ }
73
+
74
+ ${i.Z} {
75
+ transition: color 150ms ease-out;
76
+ color: currentColor;
77
+ }
78
+
79
+ &:hover {
80
+ color: ${({theme:g})=>g.colors.primary500};
81
+ }
82
+
83
+ &:active {
84
+ color: ${({theme:g})=>g.colors.primary700};
85
+ }
86
+
87
+ ${l.BF};
88
+ `,v=(0,o.ZP)(h.x)`
89
+ display: flex;
90
+ `,E=r.forwardRef(({children:g,href:a,to:d,disabled:p=!1,startIcon:x,endIcon:f,...j},_)=>(0,t.jsxs)(m,{as:d&&!p?s.OL:"a",target:a?"_blank":void 0,rel:a?"noreferrer noopener":void 0,to:p?void 0:d,href:p?"#":a,disabled:p,ref:_,...j,children:[x&&(0,t.jsx)(v,{as:"span","aria-hidden":!0,paddingRight:2,children:x}),(0,t.jsx)(i.Z,{children:g}),f&&!a&&(0,t.jsx)(v,{as:"span","aria-hidden":!0,paddingLeft:2,children:f}),a&&(0,t.jsx)(v,{as:"span","aria-hidden":!0,paddingLeft:2,children:(0,t.jsx)(e.Z,{})})]}))},27649:function(c,u,n){"use strict";n.d(u,{o:function(){return o}});var t=n(74512),r=n(8471),e=n(72850);const s=(0,r.ZP)(e.x)`
91
+ // To prevent global outline on focus visible to force an outline when Main is focused
92
+ &:focus-visible {
93
+ outline: none;
94
+ }
95
+ `,o=({labelledBy:l="main-content-title",...i})=>(0,t.jsx)(s,{"aria-labelledby":l,as:"main",id:"main-content",tabIndex:-1,...i})},29439:function(c,u,n){"use strict";n.d(u,{Z:function(){return e}});var t=n(74512);const r=s=>(0,t.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1rem",height:"1rem",fill:"none",viewBox:"0 0 24 24",...s,children:(0,t.jsx)("path",{fill:"#212134",d:"M24 13.3a.2.2 0 0 1-.2.2H5.74l8.239 8.239a.2.2 0 0 1 0 .282L12.14 23.86a.2.2 0 0 1-.282 0L.14 12.14a.2.2 0 0 1 0-.282L11.86.14a.2.2 0 0 1 .282 0L13.98 1.98a.2.2 0 0 1 0 .282L5.74 10.5H23.8c.11 0 .2.09.2.2v2.6Z"})}),e=r},45112:function(c,u,n){"use strict";n.d(u,{Z:function(){return e}});var t=n(74512);const r=s=>(0,t.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1rem",height:"1rem",fill:"none",viewBox:"0 0 24 24",...s,children:(0,t.jsx)("path",{fill:"#212134",fillRule:"evenodd",d:"M2.68 9.192c-.6.276-2.114 1.18-2.306 1.303a.792.792 0 0 0-.374.68v1.65a.797.797 0 0 0 .384.687c.254.16 1.73 1.042 2.306 1.303l.744 1.8c-.24.634-.67 2.333-.72 2.554a.797.797 0 0 0 .216.744l1.167 1.166a.801.801 0 0 0 .744.216l.03-.008c.36-.092 1.946-.498 2.523-.712l1.8.744c.276.6 1.181 2.115 1.304 2.307a.805.805 0 0 0 .679.374h1.649a.797.797 0 0 0 .686-.384c.16-.254 1.042-1.73 1.303-2.306l1.8-.744c.634.24 2.333.67 2.554.72a.797.797 0 0 0 .744-.216l1.166-1.167a.803.803 0 0 0 .216-.744l-.008-.03c-.092-.36-.498-1.946-.712-2.523l.744-1.8c.6-.276 2.115-1.181 2.307-1.304a.804.804 0 0 0 .374-.679v-1.649a.796.796 0 0 0-.382-.679c-.254-.16-1.73-1.041-2.306-1.303l-.744-1.8c.24-.634.67-2.333.72-2.554a.796.796 0 0 0-.216-.744l-1.166-1.173a.802.802 0 0 0-.744-.216l-.03.008c-.361.092-1.947.498-2.524.712l-1.8-.744c-.276-.6-1.18-2.115-1.303-2.307a.803.803 0 0 0-.68-.374h-1.65a.797.797 0 0 0-.68.382c-.16.254-1.041 1.73-1.303 2.306l-1.8.744c-.634-.24-2.333-.67-2.554-.72a.797.797 0 0 0-.744.216L2.921 4.094a.802.802 0 0 0-.216.744l.008.03c.092.361.498 1.947.712 2.524l-.744 1.8ZM12 17a5 5 0 1 0 0-10 5 5 0 0 0 0 10Z",clipRule:"evenodd"})}),e=r}}]);