@strapi/admin 4.1.8 → 4.1.10

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 (120) hide show
  1. package/admin/src/assets/images/homepage-logo.png +0 -0
  2. package/admin/src/components/AutoReloadOverlayBlockerProvider/Blocker.js +2 -6
  3. package/admin/src/components/GuidedTour/Homepage/index.js +1 -2
  4. package/admin/src/components/GuidedTour/Modal/components/Stepper.js +1 -2
  5. package/admin/src/components/LeftMenu/index.js +7 -5
  6. package/admin/src/components/Notifications/Notification/index.js +2 -2
  7. package/admin/src/components/UpgradePlanModal/index.js +6 -2
  8. package/admin/src/content-manager/components/SelectMany/ListItem.js +1 -2
  9. package/admin/src/content-manager/components/SelectWrapper/index.js +8 -7
  10. package/admin/src/content-manager/components/SingleTypeFormWrapper/index.js +2 -2
  11. package/admin/src/content-manager/components/Wysiwyg/Editor.js +2 -0
  12. package/admin/src/content-manager/pages/App/LeftMenu/index.js +8 -7
  13. package/admin/src/content-manager/pages/EditSettingsView/components/ComponentFieldList.js +1 -1
  14. package/admin/src/content-manager/pages/EditSettingsView/components/LinkToCTB.js +1 -2
  15. package/admin/src/content-manager/pages/EditSettingsView/index.js +1 -2
  16. package/admin/src/content-manager/pages/EditView/Header/index.js +3 -3
  17. package/admin/src/content-manager/pages/EditView/index.js +1 -4
  18. package/admin/src/content-manager/pages/ListSettingsView/index.js +1 -2
  19. package/admin/src/content-manager/pages/ListView/index.js +1 -1
  20. package/admin/src/content-manager/pages/NoContentType/index.js +1 -2
  21. package/admin/src/pages/AuthPage/components/ForgotPassword/index.js +1 -2
  22. package/admin/src/pages/AuthPage/components/ForgotPasswordSuccess/index.js +1 -1
  23. package/admin/src/pages/AuthPage/components/Login/BaseLogin.js +1 -2
  24. package/admin/src/pages/AuthPage/components/Oops/index.js +1 -2
  25. package/admin/src/pages/AuthPage/components/Register/index.js +12 -12
  26. package/admin/src/pages/AuthPage/components/ResetPassword/index.js +3 -4
  27. package/admin/src/pages/HomePage/HomeHeader.js +2 -2
  28. package/admin/src/pages/HomePage/SocialLinks.js +4 -3
  29. package/admin/src/pages/InternalErrorPage/index.js +1 -2
  30. package/admin/src/pages/MarketplacePage/components/PageHeader/index.js +2 -1
  31. package/admin/src/pages/MarketplacePage/components/PluginCard/index.js +4 -3
  32. package/admin/src/pages/NotFoundPage/index.js +1 -2
  33. package/admin/src/pages/SettingsPage/components/SettingsNav/index.js +5 -4
  34. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/index.js +1 -1
  35. package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/UpdateButton/index.js +1 -1
  36. package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/index.js +1 -1
  37. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/index.js +8 -2
  38. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/index.js +1 -1
  39. package/admin/src/pages/SettingsPage/pages/Users/EditPage/index.js +1 -1
  40. package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/WebhookForm/index.js +1 -2
  41. package/admin/src/pages/SettingsPage/pages/Webhooks/ListView/index.js +1 -1
  42. package/admin/src/translations/ca.json +699 -0
  43. package/admin/src/translations/languageNativeNames.js +1 -0
  44. package/admin/src/translations/ru.json +34 -0
  45. package/build/1856.521a99fd.chunk.js +172 -0
  46. package/build/2077.51485bfb.chunk.js +194 -0
  47. package/build/{2758.19d211ea.chunk.js → 2758.927ecb6d.chunk.js} +17 -16
  48. package/build/2912.79c2b3c8.chunk.js +253 -0
  49. package/build/4715.77e04177.chunk.js +385 -0
  50. package/build/4982.f53b78a4.chunk.js +308 -0
  51. package/build/6706.7f57cb76.chunk.js +113 -0
  52. package/build/7589.95466f9a.chunk.js +194 -0
  53. package/build/{5289.ef1a4517.chunk.js → 7757.6d20cfe0.chunk.js} +91 -102
  54. package/build/7841.f0e7d629.chunk.js +253 -0
  55. package/build/8681.96961454.chunk.js +163 -0
  56. package/build/9066.118ecccd.chunk.js +101 -0
  57. package/build/9115.abdf4e3b.chunk.js +1 -0
  58. package/build/9158.60fcd720.chunk.js +503 -0
  59. package/build/{9298.22f09063.chunk.js → 9298.5b5c6ea1.chunk.js} +80 -91
  60. package/build/9420.cb0b75e8.chunk.js +508 -0
  61. package/build/Admin-authenticatedApp.ec0f0834.chunk.js +80 -0
  62. package/build/Admin_homePage.e6d4d977.chunk.js +71 -0
  63. package/build/Admin_marketplace.25133b64.chunk.js +11 -0
  64. package/build/Admin_settingsPage.e1dfbb1d.chunk.js +172 -0
  65. package/build/admin-edit-roles-page.e77a2acc.chunk.js +1 -0
  66. package/build/admin-edit-users.4c49fe98.chunk.js +11 -0
  67. package/build/api-tokens-create-page.618b3e40.chunk.js +1 -0
  68. package/build/api-tokens-edit-page.8d19dfe1.chunk.js +1 -0
  69. package/build/api-tokens-list-page.274e1c80.chunk.js +15 -0
  70. package/build/ca-json.0097e443.chunk.js +1 -0
  71. package/build/content-manager.d6449678.chunk.js +1204 -0
  72. package/build/{content-type-builder.0d8729ad.chunk.js → content-type-builder.a9554707.chunk.js} +8 -8
  73. package/build/{email-settings-page.c520fd0d.chunk.js → email-settings-page.fcc7e65d.chunk.js} +5 -5
  74. package/build/fb376b132d18bf4522ca.png +0 -0
  75. package/build/{i18n-settings-page.24c106d4.chunk.js → i18n-settings-page.477ffac7.chunk.js} +5 -5
  76. package/build/index.html +1 -1
  77. package/build/main.6dad6108.js +8404 -0
  78. package/build/ru-json.28147733.chunk.js +1 -0
  79. package/build/runtime~main.26528011.js +2 -0
  80. package/build/{upload-settings.4fcb502d.chunk.js → upload-settings.1456cd65.chunk.js} +5 -5
  81. package/build/{upload.0ca61128.chunk.js → upload.d45af2c9.chunk.js} +5 -5
  82. package/build/{users-advanced-settings-page.a8c38517.chunk.js → users-advanced-settings-page.5aa21b84.chunk.js} +5 -5
  83. package/build/users-roles-settings-page.28bf6bdc.chunk.js +30 -0
  84. package/build/{webhook-edit-page.2e6727ab.chunk.js → webhook-edit-page.ca670f8d.chunk.js} +3 -3
  85. package/build/webhook-list-page.ce1fa92f.chunk.js +133 -0
  86. package/ee/admin/pages/AuthPage/components/Providers/index.js +1 -1
  87. package/ee/admin/pages/SettingsPage/pages/Roles/CreatePage/index.js +1 -1
  88. package/package.json +7 -7
  89. package/server/services/permission/permissions-manager/sanitize.js +22 -0
  90. package/server/services/user.js +1 -1
  91. package/webpack.config.js +2 -2
  92. package/build/1856.e2bce2e8.chunk.js +0 -171
  93. package/build/2481.5fe150c7.chunk.js +0 -184
  94. package/build/2912.5a7b0406.chunk.js +0 -252
  95. package/build/2a9e9ef5c4c775bb7c7b.png +0 -0
  96. package/build/372.f3b7829c.chunk.js +0 -896
  97. package/build/4715.7f616cf6.chunk.js +0 -387
  98. package/build/497.2ba35e90.chunk.js +0 -284
  99. package/build/4982.91235074.chunk.js +0 -310
  100. package/build/6404.25d0f0d8.chunk.js +0 -508
  101. package/build/6706.b0b5124d.chunk.js +0 -113
  102. package/build/7589.f3b26345.chunk.js +0 -194
  103. package/build/7841.0d73dde1.chunk.js +0 -252
  104. package/build/9115.318a6841.chunk.js +0 -1
  105. package/build/9853.b7d6aba5.chunk.js +0 -354
  106. package/build/Admin-authenticatedApp.f7b81029.chunk.js +0 -80
  107. package/build/Admin_homePage.50b6c129.chunk.js +0 -71
  108. package/build/Admin_marketplace.514ace37.chunk.js +0 -11
  109. package/build/Admin_settingsPage.f83a7c21.chunk.js +0 -172
  110. package/build/admin-edit-roles-page.06f3d288.chunk.js +0 -1
  111. package/build/admin-edit-users.6a325cca.chunk.js +0 -11
  112. package/build/api-tokens-create-page.635e20c8.chunk.js +0 -1
  113. package/build/api-tokens-edit-page.db07253e.chunk.js +0 -1
  114. package/build/api-tokens-list-page.346c2149.chunk.js +0 -15
  115. package/build/content-manager.78e3f35c.chunk.js +0 -1204
  116. package/build/main.3ca0e44c.js +0 -7918
  117. package/build/ru-json.4560906c.chunk.js +0 -1
  118. package/build/runtime~main.fcd5a5b5.js +0 -2
  119. package/build/users-roles-settings-page.97d7092d.chunk.js +0 -30
  120. package/build/webhook-list-page.d893312b.chunk.js +0 -132
@@ -6,7 +6,7 @@ import styled, { keyframes } from 'styled-components';
6
6
  import { pxToRem } from '@strapi/helper-plugin';
7
7
  import Clock from '@strapi/icons/Clock';
8
8
  import Refresh from '@strapi/icons/Refresh';
9
- import { Link } from '@strapi/design-system/Link';
9
+ import { Link } from '@strapi/design-system/v2/Link';
10
10
  import { Box } from '@strapi/design-system/Box';
11
11
  import { Stack } from '@strapi/design-system/Stack';
12
12
  import { Flex } from '@strapi/design-system/Flex';
@@ -72,11 +72,7 @@ const Blocker = ({ displayedIcon, description, title, isOpen }) => {
72
72
  </Flex>
73
73
  <Flex justifyContent="center">
74
74
  <Box paddingTop={2}>
75
- <Link
76
- href="https://docs.strapi.io"
77
- target="_blank"
78
- rel="noopener noreferrer nofollow"
79
- >
75
+ <Link href="https://docs.strapi.io" isExternal>
80
76
  {formatMessage({
81
77
  id: 'global.documentation',
82
78
  defaultMessage: 'Read the documentation',
@@ -1,11 +1,10 @@
1
1
  import React from 'react';
2
- import { useGuidedTour, useTracking } from '@strapi/helper-plugin';
2
+ import { useGuidedTour, useTracking, LinkButton } from '@strapi/helper-plugin';
3
3
  import { useIntl } from 'react-intl';
4
4
  import { Stack } from '@strapi/design-system/Stack';
5
5
  import { Flex } from '@strapi/design-system/Flex';
6
6
  import { Box } from '@strapi/design-system/Box';
7
7
  import { Typography } from '@strapi/design-system/Typography';
8
- import { LinkButton } from '@strapi/design-system/LinkButton';
9
8
  import { Button } from '@strapi/design-system/Button';
10
9
  import ArrowRight from '@strapi/icons/ArrowRight';
11
10
  import StepperHomepage from './components/Stepper';
@@ -1,10 +1,9 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { useIntl } from 'react-intl';
4
- import { pxToRem } from '@strapi/helper-plugin';
4
+ import { pxToRem, LinkButton } from '@strapi/helper-plugin';
5
5
  import { Typography } from '@strapi/design-system/Typography';
6
6
  import { Button } from '@strapi/design-system/Button';
7
- import { LinkButton } from '@strapi/design-system/LinkButton';
8
7
  import { Box } from '@strapi/design-system/Box';
9
8
  import { Flex } from '@strapi/design-system/Flex';
10
9
  import ArrowRight from '@strapi/icons/ArrowRight';
@@ -2,7 +2,7 @@ import React, { useRef, useState } from 'react';
2
2
  import styled from 'styled-components';
3
3
  import PropTypes from 'prop-types';
4
4
  import { useIntl } from 'react-intl';
5
- import { NavLink as Link } from 'react-router-dom';
5
+ import { NavLink as RouterNavLink } from 'react-router-dom';
6
6
  import { Divider } from '@strapi/design-system/Divider';
7
7
  import {
8
8
  MainNav,
@@ -12,7 +12,7 @@ import {
12
12
  NavSection,
13
13
  NavUser,
14
14
  NavCondense,
15
- } from '@strapi/design-system/MainNav';
15
+ } from '@strapi/design-system/v2/MainNav';
16
16
  import { FocusTrap } from '@strapi/design-system/FocusTrap';
17
17
  import { Box } from '@strapi/design-system/Box';
18
18
  import { Typography } from '@strapi/design-system/Typography';
@@ -29,7 +29,7 @@ const LinkUserWrapper = styled(Box)`
29
29
  left: ${({ theme }) => theme.spaces[5]};
30
30
  `;
31
31
 
32
- const LinkUser = styled(Link)`
32
+ const LinkUser = styled(RouterNavLink)`
33
33
  display: flex;
34
34
  justify-content: space-between;
35
35
  align-items: center;
@@ -88,6 +88,7 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => {
88
88
  return (
89
89
  <MainNav condensed={condensed}>
90
90
  <NavBrand
91
+ as={RouterNavLink}
91
92
  workplace={formatMessage({
92
93
  id: 'app.components.LeftMenu.navbrand.workplace',
93
94
  defaultMessage: 'Workplace',
@@ -99,7 +100,7 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => {
99
100
  <Divider />
100
101
 
101
102
  <NavSections>
102
- <NavLink to="/content-manager" icon={<Write />}>
103
+ <NavLink as={RouterNavLink} to="/content-manager" icon={<Write />}>
103
104
  {formatMessage({ id: 'global.content-manager', defaultMessage: 'Content manager' })}
104
105
  </NavLink>
105
106
 
@@ -109,7 +110,7 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => {
109
110
  const Icon = link.icon;
110
111
 
111
112
  return (
112
- <NavLink to={link.to} key={link.to} icon={<Icon />}>
113
+ <NavLink as={RouterNavLink} to={link.to} key={link.to} icon={<Icon />}>
113
114
  {formatMessage(link.intlLabel)}
114
115
  </NavLink>
115
116
  );
@@ -124,6 +125,7 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => {
124
125
 
125
126
  return (
126
127
  <NavLink
128
+ as={RouterNavLink}
127
129
  badgeContent={
128
130
  (link.notificationsCount > 0 && link.notificationsCount.toString()) || undefined
129
131
  }
@@ -2,7 +2,7 @@ import React, { useEffect, useCallback } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { useIntl } from 'react-intl';
4
4
  import { Alert } from '@strapi/design-system/Alert';
5
- import { Link } from '@strapi/design-system/Link';
5
+ import { Link } from '@strapi/design-system/v2/Link';
6
6
 
7
7
  const Notification = ({ dispatch, notification }) => {
8
8
  const { formatMessage } = useIntl();
@@ -60,7 +60,7 @@ const Notification = ({ dispatch, notification }) => {
60
60
  <Alert
61
61
  action={
62
62
  link ? (
63
- <Link href={link.url} target="_blank">
63
+ <Link href={link.url} isExternal>
64
64
  {formatMessage({
65
65
  id: link.label?.id || link.label,
66
66
  defaultMessage: link.label?.defaultMessage || link.label?.id || link.label,
@@ -5,7 +5,7 @@ import { useIntl } from 'react-intl';
5
5
  import { Portal } from '@strapi/design-system/Portal';
6
6
  import { FocusTrap } from '@strapi/design-system/FocusTrap';
7
7
  import { IconButton } from '@strapi/design-system/IconButton';
8
- import { LinkButton } from '@strapi/design-system/LinkButton';
8
+ import { LinkButton } from '@strapi/design-system/v2/LinkButton';
9
9
  import { Box } from '@strapi/design-system/Box';
10
10
  import { Flex } from '@strapi/design-system/Flex';
11
11
  import { Typography } from '@strapi/design-system/Typography';
@@ -104,7 +104,11 @@ const UpgradePlanModal = ({ onClose, isOpen }) => {
104
104
  })}
105
105
  </Typography>
106
106
  </Stack>
107
- <LinkButton href="https://strapi.io/pricing-self-hosted" endIcon={<ExternalLink />}>
107
+ <LinkButton
108
+ href="https://strapi.io/pricing-self-hosted"
109
+ isExternal
110
+ endIcon={<ExternalLink />}
111
+ >
108
112
  {formatMessage({
109
113
  id: 'app.components.UpgradePlanModal.button',
110
114
  defaultMessage: 'Learn more',
@@ -1,7 +1,7 @@
1
1
  import React, { memo } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import styled from 'styled-components';
4
- import { pxToRem, RemoveRoundedButton } from '@strapi/helper-plugin';
4
+ import { pxToRem, RemoveRoundedButton, Link } from '@strapi/helper-plugin';
5
5
  import { useIntl } from 'react-intl';
6
6
  import { useLocation } from 'react-router-dom';
7
7
  import has from 'lodash/has';
@@ -9,7 +9,6 @@ import isEmpty from 'lodash/isEmpty';
9
9
  import { Box } from '@strapi/design-system/Box';
10
10
  import { Flex } from '@strapi/design-system/Flex';
11
11
  import { Typography } from '@strapi/design-system/Typography';
12
- import { Link } from '@strapi/design-system/Link';
13
12
  import { getTrad } from '../../utils';
14
13
 
15
14
  const StyledBullet = styled.div`
@@ -1,21 +1,22 @@
1
1
  import React, { useCallback, useState, useEffect, useMemo, memo } from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import {
4
- // FormattedMessage,
5
- useIntl,
6
- } from 'react-intl';
3
+ import { useIntl } from 'react-intl';
7
4
  import { useLocation } from 'react-router-dom';
8
- import { Link } from '@strapi/design-system/Link';
9
- import { Stack } from '@strapi/design-system/Stack';
10
5
  import { useTheme } from 'styled-components';
11
6
  import findIndex from 'lodash/findIndex';
12
7
  import get from 'lodash/get';
13
8
  import isArray from 'lodash/isArray';
14
9
  import isEmpty from 'lodash/isEmpty';
15
10
  import set from 'lodash/set';
16
- import { NotAllowedInput, useCMEditViewDataManager, useQueryParams } from '@strapi/helper-plugin';
11
+ import {
12
+ NotAllowedInput,
13
+ useCMEditViewDataManager,
14
+ useQueryParams,
15
+ Link,
16
+ } from '@strapi/helper-plugin';
17
17
  import { stringify } from 'qs';
18
18
  import axios from 'axios';
19
+ import { Stack } from '@strapi/design-system/Stack';
19
20
  import { axiosInstance } from '../../../core/utils';
20
21
  import { getTrad } from '../../utils';
21
22
  import Label from './Label';
@@ -143,8 +143,8 @@ const SingleTypeFormWrapper = ({ allLayoutData, children, slug }) => {
143
143
 
144
144
  const displayErrors = useCallback(
145
145
  err => {
146
- const errorPayload = err.response.payload;
147
- let errorMessage = get(errorPayload, ['message'], 'Bad Request');
146
+ const errorPayload = err.response.data;
147
+ let errorMessage = get(errorPayload, ['error', 'message'], 'Bad Request');
148
148
 
149
149
  // TODO handle errors correctly when back-end ready
150
150
  if (Array.isArray(errorMessage)) {
@@ -32,6 +32,8 @@ const Editor = ({
32
32
  readOnly: false,
33
33
  smartIndent: false,
34
34
  placeholder,
35
+ spellcheck: true,
36
+ inputStyle: 'contenteditable',
35
37
  });
36
38
 
37
39
  CodeMirror.commands.newlineAndIndentContinueMarkdownList = newlineAndIndentContinueMarkdownList;
@@ -5,18 +5,19 @@
5
5
  */
6
6
 
7
7
  import React, { useMemo, useState } from 'react';
8
+ import { useSelector, shallowEqual } from 'react-redux';
9
+ import { useIntl } from 'react-intl';
10
+ import matchSorter from 'match-sorter';
11
+ import sortBy from 'lodash/sortBy';
12
+ import toLower from 'lodash/toLower';
13
+ import { NavLink } from 'react-router-dom';
8
14
  import {
9
15
  SubNav,
10
16
  SubNavHeader,
11
17
  SubNavSection,
12
18
  SubNavSections,
13
19
  SubNavLink,
14
- } from '@strapi/design-system/SubNav';
15
- import { useSelector, shallowEqual } from 'react-redux';
16
- import { useIntl } from 'react-intl';
17
- import matchSorter from 'match-sorter';
18
- import sortBy from 'lodash/sortBy';
19
- import toLower from 'lodash/toLower';
20
+ } from '@strapi/design-system/v2/SubNav';
20
21
  import getTrad from '../../../utils/getTrad';
21
22
  import { makeSelectModelLinks } from '../selectors';
22
23
 
@@ -111,7 +112,7 @@ const LeftMenu = () => {
111
112
  const search = link.search ? `?${link.search}` : '';
112
113
 
113
114
  return (
114
- <SubNavLink key={link.uid} to={`${link.to}${search}`}>
115
+ <SubNavLink as={NavLink} key={link.uid} to={`${link.to}${search}`}>
115
116
  {link.title}
116
117
  </SubNavLink>
117
118
  );
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
+ import { Link } from '@strapi/helper-plugin';
3
4
  import { Box } from '@strapi/design-system/Box';
4
5
  import { Flex } from '@strapi/design-system/Flex';
5
- import { Link } from '@strapi/design-system/Link';
6
6
  import { Typography } from '@strapi/design-system/Typography';
7
7
  import Cog from '@strapi/icons/Cog';
8
8
  import { useIntl } from 'react-intl';
@@ -5,10 +5,9 @@
5
5
  */
6
6
 
7
7
  import React from 'react';
8
- import { useTracking, CheckPermissions } from '@strapi/helper-plugin';
8
+ import { useTracking, CheckPermissions, LinkButton } from '@strapi/helper-plugin';
9
9
  import { useIntl } from 'react-intl';
10
10
  import get from 'lodash/get';
11
- import { LinkButton } from '@strapi/design-system/LinkButton';
12
11
  import Pencil from '@strapi/icons/Pencil';
13
12
  import getTrad from '../../../utils/getTrad';
14
13
  import useLayoutDnd from '../../../hooks/useLayoutDnd';
@@ -9,11 +9,10 @@ import flatMap from 'lodash/flatMap';
9
9
  import isEqual from 'lodash/isEqual';
10
10
  import get from 'lodash/get';
11
11
  import set from 'lodash/set';
12
- import { useNotification, useTracking, ConfirmDialog } from '@strapi/helper-plugin';
12
+ import { useNotification, useTracking, ConfirmDialog, Link } from '@strapi/helper-plugin';
13
13
  import { useHistory } from 'react-router-dom';
14
14
  import { Main } from '@strapi/design-system/Main';
15
15
  import { HeaderLayout, ContentLayout } from '@strapi/design-system/Layout';
16
- import { Link } from '@strapi/design-system/Link';
17
16
  import { Button } from '@strapi/design-system/Button';
18
17
  import { Box } from '@strapi/design-system/Box';
19
18
  import { Typography } from '@strapi/design-system/Typography';
@@ -1,22 +1,22 @@
1
1
  import React, { memo, useRef, useState } from 'react';
2
2
  import { useIntl } from 'react-intl';
3
3
  import { useHistory } from 'react-router-dom';
4
+ import PropTypes from 'prop-types';
5
+ import isEqualFastCompare from 'react-fast-compare';
4
6
  import get from 'lodash/get';
5
7
  import isEqual from 'lodash/isEqual';
6
8
  import isEmpty from 'lodash/isEmpty';
7
9
  import ArrowLeft from '@strapi/icons/ArrowLeft';
10
+ import { Link } from '@strapi/helper-plugin';
8
11
  import { HeaderLayout } from '@strapi/design-system/Layout';
9
12
  import { Box } from '@strapi/design-system/Box';
10
13
  import { Button } from '@strapi/design-system/Button';
11
14
  import { Dialog, DialogBody, DialogFooter } from '@strapi/design-system/Dialog';
12
- import { Link } from '@strapi/design-system/Link';
13
15
  import { Flex } from '@strapi/design-system/Flex';
14
16
  import { Typography } from '@strapi/design-system/Typography';
15
17
  import { Stack } from '@strapi/design-system/Stack';
16
18
  import ExclamationMarkCircle from '@strapi/icons/ExclamationMarkCircle';
17
19
  import Check from '@strapi/icons/Check';
18
- import PropTypes from 'prop-types';
19
- import isEqualFastCompare from 'react-fast-compare';
20
20
  import { getTrad } from '../../../utils';
21
21
  import { connect, getDraftRelations, select } from './utils';
22
22
 
@@ -1,13 +1,12 @@
1
1
  import React, { memo, useCallback, useMemo } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import get from 'lodash/get';
4
- import { CheckPermissions, useTracking } from '@strapi/helper-plugin';
4
+ import { CheckPermissions, useTracking, LinkButton } from '@strapi/helper-plugin';
5
5
  import { useIntl } from 'react-intl';
6
6
  import { ContentLayout } from '@strapi/design-system/Layout';
7
7
  import { Box } from '@strapi/design-system/Box';
8
8
  import { Divider } from '@strapi/design-system/Divider';
9
9
  import { Grid, GridItem } from '@strapi/design-system/Grid';
10
- import { LinkButton } from '@strapi/design-system/LinkButton';
11
10
  import { Main } from '@strapi/design-system/Main';
12
11
  import { Stack } from '@strapi/design-system/Stack';
13
12
  import { Typography } from '@strapi/design-system/Typography';
@@ -15,9 +14,7 @@ import Layer from '@strapi/icons/Layer';
15
14
  import Pencil from '@strapi/icons/Pencil';
16
15
  import { InjectionZone } from '../../../shared/components';
17
16
  import permissions from '../../../permissions';
18
- // import Container from '../../components/Container';
19
17
  import DynamicZone from '../../components/DynamicZone';
20
- // import FormWrapper from '../../components/FormWrapper';
21
18
  import FieldComponent from '../../components/FieldComponent';
22
19
  import Inputs from '../../components/Inputs';
23
20
  import SelectWrapper from '../../components/SelectWrapper';
@@ -6,12 +6,11 @@ import upperFirst from 'lodash/upperFirst';
6
6
  import pick from 'lodash/pick';
7
7
  import get from 'lodash/get';
8
8
  import { stringify } from 'qs';
9
- import { useNotification, useTracking, ConfirmDialog } from '@strapi/helper-plugin';
9
+ import { useNotification, useTracking, ConfirmDialog, Link } from '@strapi/helper-plugin';
10
10
  import { useIntl } from 'react-intl';
11
11
  import { Box } from '@strapi/design-system/Box';
12
12
  import { Divider } from '@strapi/design-system/Divider';
13
13
  import { Layout, HeaderLayout, ContentLayout } from '@strapi/design-system/Layout';
14
- import { Link } from '@strapi/design-system/Link';
15
14
  import { Main } from '@strapi/design-system/Main';
16
15
  import { Button } from '@strapi/design-system/Button';
17
16
  import Check from '@strapi/icons/Check';
@@ -17,6 +17,7 @@ import {
17
17
  useNotification,
18
18
  useRBACProvider,
19
19
  useTracking,
20
+ Link,
20
21
  } from '@strapi/helper-plugin';
21
22
  import { IconButton } from '@strapi/design-system/IconButton';
22
23
  import { Main } from '@strapi/design-system/Main';
@@ -24,7 +25,6 @@ import { Box } from '@strapi/design-system/Box';
24
25
  import { ActionLayout, ContentLayout, HeaderLayout } from '@strapi/design-system/Layout';
25
26
  import { useNotifyAT } from '@strapi/design-system/LiveRegions';
26
27
  import { Button } from '@strapi/design-system/Button';
27
- import { Link } from '@strapi/design-system/Link';
28
28
  import ArrowLeft from '@strapi/icons/ArrowLeft';
29
29
  import Plus from '@strapi/icons/Plus';
30
30
  import Cog from '@strapi/icons/Cog';
@@ -1,7 +1,6 @@
1
1
  import React from 'react';
2
- import { useFocusWhenNavigate } from '@strapi/helper-plugin';
2
+ import { useFocusWhenNavigate, LinkButton } from '@strapi/helper-plugin';
3
3
  import { Main } from '@strapi/design-system/Main';
4
- import { LinkButton } from '@strapi/design-system/LinkButton';
5
4
  import { ContentLayout, HeaderLayout } from '@strapi/design-system/Layout';
6
5
  import { EmptyStateLayout } from '@strapi/design-system/EmptyStateLayout';
7
6
  import Plus from '@strapi/icons/Plus';
@@ -1,12 +1,11 @@
1
1
  import React from 'react';
2
2
  import { useIntl } from 'react-intl';
3
3
  import PropTypes from 'prop-types';
4
- import { Form } from '@strapi/helper-plugin';
4
+ import { Form, Link } from '@strapi/helper-plugin';
5
5
  import { Box } from '@strapi/design-system/Box';
6
6
  import { Stack } from '@strapi/design-system/Stack';
7
7
  import { Main } from '@strapi/design-system/Main';
8
8
  import { Flex } from '@strapi/design-system/Flex';
9
- import { Link } from '@strapi/design-system/Link';
10
9
  import { Button } from '@strapi/design-system/Button';
11
10
  import { TextInput } from '@strapi/design-system/TextInput';
12
11
  import { Typography } from '@strapi/design-system/Typography';
@@ -1,9 +1,9 @@
1
1
  import React from 'react';
2
2
  import { useIntl } from 'react-intl';
3
+ import { Link } from '@strapi/helper-plugin';
3
4
  import { Box } from '@strapi/design-system/Box';
4
5
  import { Main } from '@strapi/design-system/Main';
5
6
  import { Flex } from '@strapi/design-system/Flex';
6
- import { Link } from '@strapi/design-system/Link';
7
7
  import { Typography } from '@strapi/design-system/Typography';
8
8
  import UnauthenticatedLayout, {
9
9
  Column,
@@ -1,16 +1,15 @@
1
1
  import React, { useState } from 'react';
2
+ import { Form, Link } from '@strapi/helper-plugin';
2
3
  import EyeStriked from '@strapi/icons/EyeStriked';
3
4
  import Eye from '@strapi/icons/Eye';
4
5
  import { Box } from '@strapi/design-system/Box';
5
6
  import { Stack } from '@strapi/design-system/Stack';
6
7
  import { Main } from '@strapi/design-system/Main';
7
8
  import { Flex } from '@strapi/design-system/Flex';
8
- import { Link } from '@strapi/design-system/Link';
9
9
  import { Button } from '@strapi/design-system/Button';
10
10
  import { TextInput } from '@strapi/design-system/TextInput';
11
11
  import { Checkbox } from '@strapi/design-system/Checkbox';
12
12
  import { Typography } from '@strapi/design-system/Typography';
13
- import { Form } from '@strapi/helper-plugin';
14
13
  import PropTypes from 'prop-types';
15
14
  import { useIntl } from 'react-intl';
16
15
  import styled from 'styled-components';
@@ -1,10 +1,9 @@
1
1
  import React from 'react';
2
2
  import { useIntl } from 'react-intl';
3
- import { useQuery } from '@strapi/helper-plugin';
3
+ import { useQuery, Link } from '@strapi/helper-plugin';
4
4
  import { Box } from '@strapi/design-system/Box';
5
5
  import { Main } from '@strapi/design-system/Main';
6
6
  import { Flex } from '@strapi/design-system/Flex';
7
- import { Link } from '@strapi/design-system/Link';
8
7
  import { Typography } from '@strapi/design-system/Typography';
9
8
  import UnauthenticatedLayout, {
10
9
  Column,
@@ -3,11 +3,22 @@ import { useIntl } from 'react-intl';
3
3
  import styled from 'styled-components';
4
4
  import get from 'lodash/get';
5
5
  import omit from 'lodash/omit';
6
+ import { useHistory } from 'react-router-dom';
7
+ import PropTypes from 'prop-types';
8
+ import { Formik } from 'formik';
9
+ import axios from 'axios';
10
+ import {
11
+ Form,
12
+ useQuery,
13
+ useNotification,
14
+ useTracking,
15
+ getYupInnerErrors,
16
+ Link,
17
+ } from '@strapi/helper-plugin';
6
18
  import { Box } from '@strapi/design-system/Box';
7
19
  import { Stack } from '@strapi/design-system/Stack';
8
20
  import { Main } from '@strapi/design-system/Main';
9
21
  import { Flex } from '@strapi/design-system/Flex';
10
- import { Link } from '@strapi/design-system/Link';
11
22
  import { Button } from '@strapi/design-system/Button';
12
23
  import { TextInput } from '@strapi/design-system/TextInput';
13
24
  import { Checkbox } from '@strapi/design-system/Checkbox';
@@ -15,17 +26,6 @@ import { Grid, GridItem } from '@strapi/design-system/Grid';
15
26
  import { Typography } from '@strapi/design-system/Typography';
16
27
  import EyeStriked from '@strapi/icons/EyeStriked';
17
28
  import Eye from '@strapi/icons/Eye';
18
- import {
19
- Form,
20
- useQuery,
21
- useNotification,
22
- useTracking,
23
- getYupInnerErrors,
24
- } from '@strapi/helper-plugin';
25
- import { useHistory } from 'react-router-dom';
26
- import PropTypes from 'prop-types';
27
- import { Formik } from 'formik';
28
- import axios from 'axios';
29
29
  import UnauthenticatedLayout, {
30
30
  Column,
31
31
  LayoutContent,
@@ -1,19 +1,18 @@
1
1
  import React, { useState } from 'react';
2
2
  import { useIntl } from 'react-intl';
3
3
  import PropTypes from 'prop-types';
4
- import { Form } from '@strapi/helper-plugin';
4
+ import styled from 'styled-components';
5
+ import { Formik } from 'formik';
6
+ import { Form, Link } from '@strapi/helper-plugin';
5
7
  import { Box } from '@strapi/design-system/Box';
6
8
  import { Stack } from '@strapi/design-system/Stack';
7
9
  import { Main } from '@strapi/design-system/Main';
8
10
  import { Flex } from '@strapi/design-system/Flex';
9
- import { Link } from '@strapi/design-system/Link';
10
11
  import { Button } from '@strapi/design-system/Button';
11
12
  import { TextInput } from '@strapi/design-system/TextInput';
12
13
  import { Typography } from '@strapi/design-system/Typography';
13
14
  import EyeStriked from '@strapi/icons/EyeStriked';
14
15
  import Eye from '@strapi/icons/Eye';
15
- import styled from 'styled-components';
16
- import { Formik } from 'formik';
17
16
  import UnauthenticatedLayout, {
18
17
  Column,
19
18
  LayoutContent,
@@ -3,7 +3,7 @@ import styled from 'styled-components';
3
3
  import PropTypes from 'prop-types';
4
4
  import { useIntl } from 'react-intl';
5
5
  import { Typography } from '@strapi/design-system/Typography';
6
- import { Link } from '@strapi/design-system/Link';
6
+ import { Link } from '@strapi/design-system/v2/Link';
7
7
  import { Stack } from '@strapi/design-system/Stack';
8
8
  import { Box } from '@strapi/design-system/Box';
9
9
  import { Button } from '@strapi/design-system/Button';
@@ -49,7 +49,7 @@ const HomeHeader = ({ hasCreatedContentType, onCreateCT }) => {
49
49
  })}
50
50
  </WordWrap>
51
51
  {hasCreatedContentType ? (
52
- <Link href="https://strapi.io/blog">
52
+ <Link isExternal href="https://strapi.io/blog">
53
53
  {formatMessage({
54
54
  id: 'app.components.HomePage.button.blog',
55
55
  defaultMessage: 'See more on the blog',
@@ -10,8 +10,8 @@ import { Typography } from '@strapi/design-system/Typography';
10
10
  import { Box } from '@strapi/design-system/Box';
11
11
  import { Stack } from '@strapi/design-system/Stack';
12
12
  import { Grid, GridItem } from '@strapi/design-system/Grid';
13
- import { LinkButton } from '@strapi/design-system/LinkButton';
14
- import { Link } from '@strapi/design-system/Link';
13
+ import { LinkButton } from '@strapi/design-system/v2/LinkButton';
14
+ import { Link } from '@strapi/design-system/v2/Link';
15
15
  import ExternalLink from '@strapi/icons/ExternalLink';
16
16
  import Github from '@strapi/icons/Github';
17
17
  import Discord from '@strapi/icons/Discord';
@@ -167,7 +167,7 @@ const SocialLinks = () => {
167
167
  })}
168
168
  </Typography>
169
169
  </Stack>
170
- <Link href="https://feedback.strapi.io/" endIcon={<ExternalLink />}>
170
+ <Link href="https://feedback.strapi.io/" isExternal endIcon={<ExternalLink />}>
171
171
  {formatMessage({
172
172
  id: 'app.components.HomePage.roadmap',
173
173
  defaultMessage: 'See our road map',
@@ -184,6 +184,7 @@ const SocialLinks = () => {
184
184
  startIcon={socialLink.icon}
185
185
  variant="tertiary"
186
186
  href={socialLink.link}
187
+ isExternal
187
188
  >
188
189
  {socialLink.name}
189
190
  </LinkCustom>
@@ -5,9 +5,8 @@
5
5
  *
6
6
  */
7
7
  import React from 'react';
8
- import { useFocusWhenNavigate } from '@strapi/helper-plugin';
8
+ import { useFocusWhenNavigate, LinkButton } from '@strapi/helper-plugin';
9
9
  import { Main } from '@strapi/design-system/Main';
10
- import { LinkButton } from '@strapi/design-system/LinkButton';
11
10
  import { ContentLayout, HeaderLayout } from '@strapi/design-system/Layout';
12
11
  import { EmptyStateLayout } from '@strapi/design-system/EmptyStateLayout';
13
12
  import EmptyPictures from '@strapi/icons/EmptyPictures';
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { useIntl } from 'react-intl';
4
4
  import { HeaderLayout } from '@strapi/design-system/Layout';
5
- import { LinkButton } from '@strapi/design-system/LinkButton';
5
+ import { LinkButton } from '@strapi/design-system/v2/LinkButton';
6
6
  import Upload from '@strapi/icons/Upload';
7
7
  import { useTracking } from '@strapi/helper-plugin';
8
8
 
@@ -27,6 +27,7 @@ const PageHeader = ({ isOnline }) => {
27
27
  variant="tertiary"
28
28
  href="https://market.strapi.io/submit-plugin"
29
29
  onClick={() => trackUsage('didSubmitPlugin')}
30
+ isExternal
30
31
  >
31
32
  {formatMessage({
32
33
  id: 'admin.pages.MarketPlacePage.submit.plugin.link',
@@ -5,7 +5,7 @@ import styled from 'styled-components';
5
5
  import { Box } from '@strapi/design-system/Box';
6
6
  import { Stack } from '@strapi/design-system/Stack';
7
7
  import { Typography } from '@strapi/design-system/Typography';
8
- import { LinkButton } from '@strapi/design-system/LinkButton';
8
+ import { LinkButton } from '@strapi/design-system/v2/LinkButton';
9
9
  import { Flex } from '@strapi/design-system/Flex';
10
10
  import { Icon } from '@strapi/design-system/Icon';
11
11
  import { Tooltip } from '@strapi/design-system/Tooltip';
@@ -46,9 +46,9 @@ const PluginCard = ({ plugin, installedPluginNames, useYarn, isInDevelopmentMode
46
46
  direction="column"
47
47
  justifyContent="space-between"
48
48
  paddingTop={4}
49
- paddingRight={6}
49
+ paddingRight={4}
50
50
  paddingBottom={4}
51
- paddingLeft={6}
51
+ paddingLeft={4}
52
52
  hasRadius
53
53
  background="neutral0"
54
54
  shadow="tableShadow"
@@ -108,6 +108,7 @@ const PluginCard = ({ plugin, installedPluginNames, useYarn, isInDevelopmentMode
108
108
  <LinkButton
109
109
  size="S"
110
110
  href={`https://market.strapi.io/plugins/${attributes.slug}`}
111
+ isExternal
111
112
  endIcon={<ExternalLink />}
112
113
  aria-label={formatMessage(
113
114
  {
@@ -5,9 +5,8 @@
5
5
  *
6
6
  */
7
7
  import React from 'react';
8
- import { useFocusWhenNavigate } from '@strapi/helper-plugin';
8
+ import { useFocusWhenNavigate, LinkButton } from '@strapi/helper-plugin';
9
9
  import { Main } from '@strapi/design-system/Main';
10
- import { LinkButton } from '@strapi/design-system/LinkButton';
11
10
  import { ContentLayout, HeaderLayout } from '@strapi/design-system/Layout';
12
11
  import { EmptyStateLayout } from '@strapi/design-system/EmptyStateLayout';
13
12
  import EmptyPictures from '@strapi/icons/EmptyPictures';