@strapi/admin 5.13.0-beta.0 → 5.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  2. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  3. package/dist/admin/admin/src/pages/Auth/components/Register.js +1 -1
  4. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  5. package/dist/admin/admin/src/pages/Auth/components/Register.mjs +1 -1
  6. package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
  7. package/dist/admin/admin/src/pages/Home/HomePage.js +4 -76
  8. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  9. package/dist/admin/admin/src/pages/Home/HomePage.mjs +5 -77
  10. package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
  11. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +19 -1
  12. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  13. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs +21 -3
  14. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs.map +1 -1
  15. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js +4 -1
  16. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js.map +1 -1
  17. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs +4 -1
  18. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs.map +1 -1
  19. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js +32 -2
  20. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
  21. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs +32 -2
  22. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs.map +1 -1
  23. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js +1 -0
  24. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
  25. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs +1 -0
  26. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs.map +1 -1
  27. package/dist/admin/admin/src/translations/ru.json.js +14 -1
  28. package/dist/admin/admin/src/translations/ru.json.js.map +1 -1
  29. package/dist/admin/admin/src/translations/ru.json.mjs +14 -1
  30. package/dist/admin/admin/src/translations/ru.json.mjs.map +1 -1
  31. package/dist/admin/src/pages/Settings/components/Tokens/FormHead.d.ts +4 -1
  32. package/dist/server/server/src/content-types/api-token.js +7 -0
  33. package/dist/server/server/src/content-types/api-token.js.map +1 -1
  34. package/dist/server/server/src/content-types/api-token.mjs +7 -0
  35. package/dist/server/server/src/content-types/api-token.mjs.map +1 -1
  36. package/dist/server/server/src/services/api-token.js +21 -3
  37. package/dist/server/server/src/services/api-token.js.map +1 -1
  38. package/dist/server/server/src/services/api-token.mjs +21 -3
  39. package/dist/server/server/src/services/api-token.mjs.map +1 -1
  40. package/dist/server/server/src/services/encryption.js +62 -0
  41. package/dist/server/server/src/services/encryption.js.map +1 -0
  42. package/dist/server/server/src/services/encryption.mjs +60 -0
  43. package/dist/server/server/src/services/encryption.mjs.map +1 -0
  44. package/dist/server/server/src/services/index.js +3 -1
  45. package/dist/server/server/src/services/index.js.map +1 -1
  46. package/dist/server/server/src/services/index.mjs +3 -1
  47. package/dist/server/server/src/services/index.mjs.map +1 -1
  48. package/dist/server/src/content-types/api-token.d.ts +7 -0
  49. package/dist/server/src/content-types/api-token.d.ts.map +1 -1
  50. package/dist/server/src/content-types/index.d.ts +7 -0
  51. package/dist/server/src/content-types/index.d.ts.map +1 -1
  52. package/dist/server/src/index.d.ts +11 -0
  53. package/dist/server/src/index.d.ts.map +1 -1
  54. package/dist/server/src/services/api-token.d.ts.map +1 -1
  55. package/dist/server/src/services/encryption.d.ts +6 -0
  56. package/dist/server/src/services/encryption.d.ts.map +1 -0
  57. package/dist/server/src/services/index.d.ts +4 -0
  58. package/dist/server/src/services/index.d.ts.map +1 -1
  59. package/dist/shared/contracts/api-token.d.ts +1 -0
  60. package/dist/shared/contracts/api-token.d.ts.map +1 -1
  61. package/package.json +7 -7
  62. package/dist/admin/admin/src/pages/Home/components/ContentManagerWidgets.js +0 -179
  63. package/dist/admin/admin/src/pages/Home/components/ContentManagerWidgets.js.map +0 -1
  64. package/dist/admin/admin/src/pages/Home/components/ContentManagerWidgets.mjs +0 -176
  65. package/dist/admin/admin/src/pages/Home/components/ContentManagerWidgets.mjs.map +0 -1
  66. package/dist/admin/admin/src/services/homepage.js +0 -28
  67. package/dist/admin/admin/src/services/homepage.js.map +0 -1
  68. package/dist/admin/admin/src/services/homepage.mjs +0 -26
  69. package/dist/admin/admin/src/services/homepage.mjs.map +0 -1
  70. package/dist/admin/src/pages/Home/components/ContentManagerWidgets.d.ts +0 -3
  71. package/dist/admin/src/services/homepage.d.ts +0 -5
@@ -1 +1 @@
1
- {"version":3,"file":"HomePage.js","sources":["../../../../../../admin/src/pages/Home/HomePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Grid, Main, Typography } from '@strapi/design-system';\nimport { CheckCircle, Pencil, PuzzlePiece } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\n\nimport { Layouts } from '../../components/Layouts/Layout';\nimport { Page } from '../../components/PageHelpers';\nimport { Widget } from '../../components/WidgetHelpers';\nimport { useEnterprise } from '../../ee';\nimport { useAuth } from '../../features/Auth';\nimport { useStrapiApp } from '../../features/StrapiApp';\n\nimport { LastEditedWidget, LastPublishedWidget } from './components/ContentManagerWidgets';\nimport { GuidedTour } from './components/GuidedTour';\n\nimport type { WidgetType } from '@strapi/admin/strapi-admin';\n\n/* -------------------------------------------------------------------------------------------------\n * WidgetRoot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface WidgetRootProps extends Pick<WidgetType, 'title' | 'icon' | 'permissions' | 'link'> {\n children: React.ReactNode;\n}\n\nexport const WidgetRoot = ({\n title,\n icon = PuzzlePiece,\n permissions = [],\n children,\n link,\n}: WidgetRootProps) => {\n const { formatMessage } = useIntl();\n const id = React.useId();\n const Icon = icon;\n\n const [permissionStatus, setPermissionStatus] = React.useState<\n 'loading' | 'granted' | 'forbidden'\n >('loading');\n const checkUserHasPermissions = useAuth('WidgetRoot', (state) => state.checkUserHasPermissions);\n React.useEffect(() => {\n const checkPermissions = async () => {\n const matchingPermissions = await checkUserHasPermissions(permissions);\n const shouldGrant = matchingPermissions.length >= permissions.length;\n setPermissionStatus(shouldGrant ? 'granted' : 'forbidden');\n };\n\n if (\n // TODO: remove unstable check once widgets API is stable\n !window.strapi.future.isEnabled('unstableWidgetsApi') ||\n !permissions ||\n permissions.length === 0\n ) {\n setPermissionStatus('granted');\n } else {\n checkPermissions();\n }\n }, [checkUserHasPermissions, permissions]);\n\n return (\n <Flex\n width=\"100%\"\n hasRadius\n direction=\"column\"\n alignItems=\"flex-start\"\n background=\"neutral0\"\n borderColor=\"neutral150\"\n shadow=\"tableShadow\"\n tag=\"section\"\n gap={4}\n padding={6}\n aria-labelledby={id}\n >\n <Flex direction=\"row\" gap={2} justifyContent=\"space-between\" width=\"100%\" tag=\"header\">\n <Flex gap={2}>\n <Icon fill=\"neutral500\" aria-hidden />\n <Typography textColor=\"neutral500\" variant=\"sigma\" tag=\"h2\" id={id}>\n {formatMessage(title)}\n </Typography>\n </Flex>\n {link && (\n <Typography\n tag={ReactRouterLink}\n variant=\"omega\"\n textColor=\"primary600\"\n style={{ textDecoration: 'none' }}\n to={link.href}\n >\n {formatMessage(link.label)}\n </Typography>\n )}\n </Flex>\n <Box width=\"100%\" height=\"261px\" overflow=\"auto\" tag=\"main\">\n {permissionStatus === 'loading' && <Widget.Loading />}\n {permissionStatus === 'forbidden' && <Widget.NoPermissions />}\n {permissionStatus === 'granted' && children}\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UnstableHomePageCe\n * -----------------------------------------------------------------------------------------------*/\n\nconst WidgetComponent = ({ component }: { component: () => Promise<React.ComponentType> }) => {\n const [loadedComponent, setLoadedComponent] = React.useState<React.ComponentType | null>(null);\n\n React.useEffect(() => {\n const loadComponent = async () => {\n const resolvedComponent = await component();\n\n setLoadedComponent(() => resolvedComponent);\n };\n\n loadComponent();\n }, [component]);\n\n const Component = loadedComponent;\n\n if (!Component) {\n return <Widget.Loading />;\n }\n\n return <Component />;\n};\n\nconst UnstableHomePageCe = () => {\n const { formatMessage } = useIntl();\n const user = useAuth('HomePageCE', (state) => state.user);\n const displayName = user?.firstname ?? user?.username ?? user?.email;\n\n const getAllWidgets = useStrapiApp('UnstableHomepageCe', (state) => state.widgets.getAll);\n\n return (\n <Main>\n <Page.Title>\n {formatMessage({ id: 'HomePage.head.title', defaultMessage: 'Homepage' })}\n </Page.Title>\n <Layouts.Header\n title={formatMessage(\n { id: 'HomePage.header.title', defaultMessage: 'Hello {name}' },\n { name: displayName }\n )}\n subtitle={formatMessage({\n id: 'HomePage.header.subtitle',\n defaultMessage: 'Welcome to your administration panel',\n })}\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={8} paddingBottom={10}>\n <GuidedTour />\n <Grid.Root gap={5}>\n {getAllWidgets().map((widget) => {\n return (\n <Grid.Item col={6} s={12} key={widget.uid}>\n <WidgetRoot\n title={widget.title}\n icon={widget.icon}\n permissions={widget.permissions}\n link={widget.link}\n >\n <WidgetComponent component={widget.component} />\n </WidgetRoot>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Flex>\n </Layouts.Content>\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePageCE\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePageCE = () => {\n const { formatMessage } = useIntl();\n const user = useAuth('HomePageCE', (state) => state.user);\n const displayName = user?.firstname ?? user?.username ?? user?.email;\n\n if (window.strapi.future.isEnabled('unstableWidgetsApi')) {\n return <UnstableHomePageCe />;\n }\n\n return (\n <Main>\n <Page.Title>\n {formatMessage({ id: 'HomePage.head.title', defaultMessage: 'Homepage' })}\n </Page.Title>\n <Layouts.Header\n title={formatMessage(\n { id: 'HomePage.header.title', defaultMessage: 'Hello {name}' },\n { name: displayName }\n )}\n subtitle={formatMessage({\n id: 'HomePage.header.subtitle',\n defaultMessage: 'Welcome to your administration panel',\n })}\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={8} paddingBottom={10}>\n <GuidedTour />\n <Grid.Root gap={5}>\n <Grid.Item col={6} s={12}>\n <WidgetRoot\n title={{\n id: 'content-manager.widget.last-edited.title',\n defaultMessage: 'Last edited entries',\n }}\n icon={Pencil}\n >\n <LastEditedWidget />\n </WidgetRoot>\n </Grid.Item>\n <Grid.Item col={6} s={12}>\n <WidgetRoot\n title={{\n id: 'content-manager.widget.last-published.title',\n defaultMessage: 'Last published entries',\n }}\n icon={CheckCircle}\n >\n <LastPublishedWidget />\n </WidgetRoot>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Layouts.Content>\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePage = () => {\n const Page = useEnterprise(\n HomePageCE,\n // eslint-disable-next-line import/no-cycle\n async () => (await import('../../../../ee/admin/src/pages/HomePage')).HomePageEE\n );\n\n // block rendering until the EE component is fully loaded\n if (!Page) {\n return null;\n }\n\n return <Page />;\n};\n\nexport { HomePage, HomePageCE };\n"],"names":["WidgetRoot","title","icon","PuzzlePiece","permissions","children","link","formatMessage","useIntl","id","React","useId","Icon","permissionStatus","setPermissionStatus","useState","checkUserHasPermissions","useAuth","state","useEffect","checkPermissions","matchingPermissions","shouldGrant","length","window","strapi","future","isEnabled","_jsxs","Flex","width","hasRadius","direction","alignItems","background","borderColor","shadow","tag","gap","padding","aria-labelledby","justifyContent","_jsx","fill","aria-hidden","Typography","textColor","variant","ReactRouterLink","style","textDecoration","to","href","label","Box","height","overflow","Widget","Loading","NoPermissions","WidgetComponent","component","loadedComponent","setLoadedComponent","loadComponent","resolvedComponent","Component","UnstableHomePageCe","user","displayName","firstname","username","email","getAllWidgets","useStrapiApp","widgets","getAll","Main","Page","Title","defaultMessage","Layouts","Header","name","subtitle","Content","paddingBottom","GuidedTour","Grid","Root","map","widget","Item","col","s","uid","HomePageCE","Pencil","LastEditedWidget","CheckCircle","LastPublishedWidget","HomePage","useEnterprise","HomePageEE"],"mappings":"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"}
1
+ {"version":3,"file":"HomePage.js","sources":["../../../../../../admin/src/pages/Home/HomePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Grid, Main, Typography } from '@strapi/design-system';\nimport { PuzzlePiece } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\n\nimport { Layouts } from '../../components/Layouts/Layout';\nimport { Page } from '../../components/PageHelpers';\nimport { Widget } from '../../components/WidgetHelpers';\nimport { useEnterprise } from '../../ee';\nimport { useAuth } from '../../features/Auth';\nimport { useStrapiApp } from '../../features/StrapiApp';\n\nimport { GuidedTour } from './components/GuidedTour';\n\nimport type { WidgetType } from '@strapi/admin/strapi-admin';\n\n/* -------------------------------------------------------------------------------------------------\n * WidgetRoot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface WidgetRootProps extends Pick<WidgetType, 'title' | 'icon' | 'permissions' | 'link'> {\n children: React.ReactNode;\n}\n\nexport const WidgetRoot = ({\n title,\n icon = PuzzlePiece,\n permissions = [],\n children,\n link,\n}: WidgetRootProps) => {\n const { formatMessage } = useIntl();\n const id = React.useId();\n const Icon = icon;\n\n const [permissionStatus, setPermissionStatus] = React.useState<\n 'loading' | 'granted' | 'forbidden'\n >('loading');\n const checkUserHasPermissions = useAuth('WidgetRoot', (state) => state.checkUserHasPermissions);\n React.useEffect(() => {\n const checkPermissions = async () => {\n const matchingPermissions = await checkUserHasPermissions(permissions);\n const shouldGrant = matchingPermissions.length >= permissions.length;\n setPermissionStatus(shouldGrant ? 'granted' : 'forbidden');\n };\n\n if (!permissions || permissions.length === 0) {\n setPermissionStatus('granted');\n } else {\n checkPermissions();\n }\n }, [checkUserHasPermissions, permissions]);\n\n return (\n <Flex\n width=\"100%\"\n hasRadius\n direction=\"column\"\n alignItems=\"flex-start\"\n background=\"neutral0\"\n borderColor=\"neutral150\"\n shadow=\"tableShadow\"\n tag=\"section\"\n gap={4}\n padding={6}\n aria-labelledby={id}\n >\n <Flex direction=\"row\" gap={2} justifyContent=\"space-between\" width=\"100%\" tag=\"header\">\n <Flex gap={2}>\n <Icon fill=\"neutral500\" aria-hidden />\n <Typography textColor=\"neutral500\" variant=\"sigma\" tag=\"h2\" id={id}>\n {formatMessage(title)}\n </Typography>\n </Flex>\n {link && (\n <Typography\n tag={ReactRouterLink}\n variant=\"omega\"\n textColor=\"primary600\"\n style={{ textDecoration: 'none' }}\n to={link.href}\n >\n {formatMessage(link.label)}\n </Typography>\n )}\n </Flex>\n <Box width=\"100%\" height=\"261px\" overflow=\"auto\" tag=\"main\">\n {permissionStatus === 'loading' && <Widget.Loading />}\n {permissionStatus === 'forbidden' && <Widget.NoPermissions />}\n {permissionStatus === 'granted' && children}\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UnstableHomePageCe\n * -----------------------------------------------------------------------------------------------*/\n\nconst WidgetComponent = ({ component }: { component: () => Promise<React.ComponentType> }) => {\n const [loadedComponent, setLoadedComponent] = React.useState<React.ComponentType | null>(null);\n\n React.useEffect(() => {\n const loadComponent = async () => {\n const resolvedComponent = await component();\n\n setLoadedComponent(() => resolvedComponent);\n };\n\n loadComponent();\n }, [component]);\n\n const Component = loadedComponent;\n\n if (!Component) {\n return <Widget.Loading />;\n }\n\n return <Component />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePageCE\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePageCE = () => {\n const { formatMessage } = useIntl();\n const user = useAuth('HomePageCE', (state) => state.user);\n const displayName = user?.firstname ?? user?.username ?? user?.email;\n\n const getAllWidgets = useStrapiApp('UnstableHomepageCe', (state) => state.widgets.getAll);\n\n return (\n <Main>\n <Page.Title>\n {formatMessage({ id: 'HomePage.head.title', defaultMessage: 'Homepage' })}\n </Page.Title>\n <Layouts.Header\n title={formatMessage(\n { id: 'HomePage.header.title', defaultMessage: 'Hello {name}' },\n { name: displayName }\n )}\n subtitle={formatMessage({\n id: 'HomePage.header.subtitle',\n defaultMessage: 'Welcome to your administration panel',\n })}\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={8} paddingBottom={10}>\n <GuidedTour />\n <Grid.Root gap={5}>\n {getAllWidgets().map((widget) => {\n return (\n <Grid.Item col={6} s={12} key={widget.uid}>\n <WidgetRoot\n title={widget.title}\n icon={widget.icon}\n permissions={widget.permissions}\n link={widget.link}\n >\n <WidgetComponent component={widget.component} />\n </WidgetRoot>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Flex>\n </Layouts.Content>\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePage = () => {\n const Page = useEnterprise(\n HomePageCE,\n // eslint-disable-next-line import/no-cycle\n async () => (await import('../../../../ee/admin/src/pages/HomePage')).HomePageEE\n );\n\n // block rendering until the EE component is fully loaded\n if (!Page) {\n return null;\n }\n\n return <Page />;\n};\n\nexport { HomePage, HomePageCE };\n"],"names":["WidgetRoot","title","icon","PuzzlePiece","permissions","children","link","formatMessage","useIntl","id","React","useId","Icon","permissionStatus","setPermissionStatus","useState","checkUserHasPermissions","useAuth","state","useEffect","checkPermissions","matchingPermissions","shouldGrant","length","_jsxs","Flex","width","hasRadius","direction","alignItems","background","borderColor","shadow","tag","gap","padding","aria-labelledby","justifyContent","_jsx","fill","aria-hidden","Typography","textColor","variant","ReactRouterLink","style","textDecoration","to","href","label","Box","height","overflow","Widget","Loading","NoPermissions","WidgetComponent","component","loadedComponent","setLoadedComponent","loadComponent","resolvedComponent","Component","HomePageCE","user","displayName","firstname","username","email","getAllWidgets","useStrapiApp","widgets","getAll","Main","Page","Title","defaultMessage","Layouts","Header","name","subtitle","Content","paddingBottom","GuidedTour","Grid","Root","map","widget","Item","col","s","uid","HomePage","useEnterprise","HomePageEE"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import { Main, Flex, Grid, Typography, Box } from '@strapi/design-system';
4
- import { Pencil, CheckCircle, PuzzlePiece } from '@strapi/icons';
4
+ import { PuzzlePiece } from '@strapi/icons';
5
5
  import { useIntl } from 'react-intl';
6
6
  import { Link } from 'react-router-dom';
7
7
  import { Layouts } from '../../components/Layouts/Layout.mjs';
@@ -11,7 +11,6 @@ import '../../services/admin.mjs';
11
11
  import { useEnterprise } from '../../hooks/useEnterprise.mjs';
12
12
  import { useAuth } from '../../features/Auth.mjs';
13
13
  import { useStrapiApp } from '../../features/StrapiApp.mjs';
14
- import { LastEditedWidget, LastPublishedWidget } from './components/ContentManagerWidgets.mjs';
15
14
  import { GuidedTour } from './components/GuidedTour.mjs';
16
15
 
17
16
  const WidgetRoot = ({ title, icon = PuzzlePiece, permissions = [], children, link })=>{
@@ -26,8 +25,7 @@ const WidgetRoot = ({ title, icon = PuzzlePiece, permissions = [], children, lin
26
25
  const shouldGrant = matchingPermissions.length >= permissions.length;
27
26
  setPermissionStatus(shouldGrant ? 'granted' : 'forbidden');
28
27
  };
29
- if (// TODO: remove unstable check once widgets API is stable
30
- !window.strapi.future.isEnabled('unstableWidgetsApi') || !permissions || permissions.length === 0) {
28
+ if (!permissions || permissions.length === 0) {
31
29
  setPermissionStatus('granted');
32
30
  } else {
33
31
  checkPermissions();
@@ -117,7 +115,9 @@ const WidgetRoot = ({ title, icon = PuzzlePiece, permissions = [], children, lin
117
115
  }
118
116
  return /*#__PURE__*/ jsx(Component, {});
119
117
  };
120
- const UnstableHomePageCe = ()=>{
118
+ /* -------------------------------------------------------------------------------------------------
119
+ * HomePageCE
120
+ * -----------------------------------------------------------------------------------------------*/ const HomePageCE = ()=>{
121
121
  const { formatMessage } = useIntl();
122
122
  const user = useAuth('HomePageCE', (state)=>state.user);
123
123
  const displayName = user?.firstname ?? user?.username ?? user?.email;
@@ -174,78 +174,6 @@ const UnstableHomePageCe = ()=>{
174
174
  ]
175
175
  });
176
176
  };
177
- /* -------------------------------------------------------------------------------------------------
178
- * HomePageCE
179
- * -----------------------------------------------------------------------------------------------*/ const HomePageCE = ()=>{
180
- const { formatMessage } = useIntl();
181
- const user = useAuth('HomePageCE', (state)=>state.user);
182
- const displayName = user?.firstname ?? user?.username ?? user?.email;
183
- if (window.strapi.future.isEnabled('unstableWidgetsApi')) {
184
- return /*#__PURE__*/ jsx(UnstableHomePageCe, {});
185
- }
186
- return /*#__PURE__*/ jsxs(Main, {
187
- children: [
188
- /*#__PURE__*/ jsx(Page.Title, {
189
- children: formatMessage({
190
- id: 'HomePage.head.title',
191
- defaultMessage: 'Homepage'
192
- })
193
- }),
194
- /*#__PURE__*/ jsx(Layouts.Header, {
195
- title: formatMessage({
196
- id: 'HomePage.header.title',
197
- defaultMessage: 'Hello {name}'
198
- }, {
199
- name: displayName
200
- }),
201
- subtitle: formatMessage({
202
- id: 'HomePage.header.subtitle',
203
- defaultMessage: 'Welcome to your administration panel'
204
- })
205
- }),
206
- /*#__PURE__*/ jsx(Layouts.Content, {
207
- children: /*#__PURE__*/ jsxs(Flex, {
208
- direction: "column",
209
- alignItems: "stretch",
210
- gap: 8,
211
- paddingBottom: 10,
212
- children: [
213
- /*#__PURE__*/ jsx(GuidedTour, {}),
214
- /*#__PURE__*/ jsxs(Grid.Root, {
215
- gap: 5,
216
- children: [
217
- /*#__PURE__*/ jsx(Grid.Item, {
218
- col: 6,
219
- s: 12,
220
- children: /*#__PURE__*/ jsx(WidgetRoot, {
221
- title: {
222
- id: 'content-manager.widget.last-edited.title',
223
- defaultMessage: 'Last edited entries'
224
- },
225
- icon: Pencil,
226
- children: /*#__PURE__*/ jsx(LastEditedWidget, {})
227
- })
228
- }),
229
- /*#__PURE__*/ jsx(Grid.Item, {
230
- col: 6,
231
- s: 12,
232
- children: /*#__PURE__*/ jsx(WidgetRoot, {
233
- title: {
234
- id: 'content-manager.widget.last-published.title',
235
- defaultMessage: 'Last published entries'
236
- },
237
- icon: CheckCircle,
238
- children: /*#__PURE__*/ jsx(LastPublishedWidget, {})
239
- })
240
- })
241
- ]
242
- })
243
- ]
244
- })
245
- })
246
- ]
247
- });
248
- };
249
177
  /* -------------------------------------------------------------------------------------------------
250
178
  * HomePage
251
179
  * -----------------------------------------------------------------------------------------------*/ const HomePage = ()=>{
@@ -1 +1 @@
1
- {"version":3,"file":"HomePage.mjs","sources":["../../../../../../admin/src/pages/Home/HomePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Grid, Main, Typography } from '@strapi/design-system';\nimport { CheckCircle, Pencil, PuzzlePiece } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\n\nimport { Layouts } from '../../components/Layouts/Layout';\nimport { Page } from '../../components/PageHelpers';\nimport { Widget } from '../../components/WidgetHelpers';\nimport { useEnterprise } from '../../ee';\nimport { useAuth } from '../../features/Auth';\nimport { useStrapiApp } from '../../features/StrapiApp';\n\nimport { LastEditedWidget, LastPublishedWidget } from './components/ContentManagerWidgets';\nimport { GuidedTour } from './components/GuidedTour';\n\nimport type { WidgetType } from '@strapi/admin/strapi-admin';\n\n/* -------------------------------------------------------------------------------------------------\n * WidgetRoot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface WidgetRootProps extends Pick<WidgetType, 'title' | 'icon' | 'permissions' | 'link'> {\n children: React.ReactNode;\n}\n\nexport const WidgetRoot = ({\n title,\n icon = PuzzlePiece,\n permissions = [],\n children,\n link,\n}: WidgetRootProps) => {\n const { formatMessage } = useIntl();\n const id = React.useId();\n const Icon = icon;\n\n const [permissionStatus, setPermissionStatus] = React.useState<\n 'loading' | 'granted' | 'forbidden'\n >('loading');\n const checkUserHasPermissions = useAuth('WidgetRoot', (state) => state.checkUserHasPermissions);\n React.useEffect(() => {\n const checkPermissions = async () => {\n const matchingPermissions = await checkUserHasPermissions(permissions);\n const shouldGrant = matchingPermissions.length >= permissions.length;\n setPermissionStatus(shouldGrant ? 'granted' : 'forbidden');\n };\n\n if (\n // TODO: remove unstable check once widgets API is stable\n !window.strapi.future.isEnabled('unstableWidgetsApi') ||\n !permissions ||\n permissions.length === 0\n ) {\n setPermissionStatus('granted');\n } else {\n checkPermissions();\n }\n }, [checkUserHasPermissions, permissions]);\n\n return (\n <Flex\n width=\"100%\"\n hasRadius\n direction=\"column\"\n alignItems=\"flex-start\"\n background=\"neutral0\"\n borderColor=\"neutral150\"\n shadow=\"tableShadow\"\n tag=\"section\"\n gap={4}\n padding={6}\n aria-labelledby={id}\n >\n <Flex direction=\"row\" gap={2} justifyContent=\"space-between\" width=\"100%\" tag=\"header\">\n <Flex gap={2}>\n <Icon fill=\"neutral500\" aria-hidden />\n <Typography textColor=\"neutral500\" variant=\"sigma\" tag=\"h2\" id={id}>\n {formatMessage(title)}\n </Typography>\n </Flex>\n {link && (\n <Typography\n tag={ReactRouterLink}\n variant=\"omega\"\n textColor=\"primary600\"\n style={{ textDecoration: 'none' }}\n to={link.href}\n >\n {formatMessage(link.label)}\n </Typography>\n )}\n </Flex>\n <Box width=\"100%\" height=\"261px\" overflow=\"auto\" tag=\"main\">\n {permissionStatus === 'loading' && <Widget.Loading />}\n {permissionStatus === 'forbidden' && <Widget.NoPermissions />}\n {permissionStatus === 'granted' && children}\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UnstableHomePageCe\n * -----------------------------------------------------------------------------------------------*/\n\nconst WidgetComponent = ({ component }: { component: () => Promise<React.ComponentType> }) => {\n const [loadedComponent, setLoadedComponent] = React.useState<React.ComponentType | null>(null);\n\n React.useEffect(() => {\n const loadComponent = async () => {\n const resolvedComponent = await component();\n\n setLoadedComponent(() => resolvedComponent);\n };\n\n loadComponent();\n }, [component]);\n\n const Component = loadedComponent;\n\n if (!Component) {\n return <Widget.Loading />;\n }\n\n return <Component />;\n};\n\nconst UnstableHomePageCe = () => {\n const { formatMessage } = useIntl();\n const user = useAuth('HomePageCE', (state) => state.user);\n const displayName = user?.firstname ?? user?.username ?? user?.email;\n\n const getAllWidgets = useStrapiApp('UnstableHomepageCe', (state) => state.widgets.getAll);\n\n return (\n <Main>\n <Page.Title>\n {formatMessage({ id: 'HomePage.head.title', defaultMessage: 'Homepage' })}\n </Page.Title>\n <Layouts.Header\n title={formatMessage(\n { id: 'HomePage.header.title', defaultMessage: 'Hello {name}' },\n { name: displayName }\n )}\n subtitle={formatMessage({\n id: 'HomePage.header.subtitle',\n defaultMessage: 'Welcome to your administration panel',\n })}\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={8} paddingBottom={10}>\n <GuidedTour />\n <Grid.Root gap={5}>\n {getAllWidgets().map((widget) => {\n return (\n <Grid.Item col={6} s={12} key={widget.uid}>\n <WidgetRoot\n title={widget.title}\n icon={widget.icon}\n permissions={widget.permissions}\n link={widget.link}\n >\n <WidgetComponent component={widget.component} />\n </WidgetRoot>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Flex>\n </Layouts.Content>\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePageCE\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePageCE = () => {\n const { formatMessage } = useIntl();\n const user = useAuth('HomePageCE', (state) => state.user);\n const displayName = user?.firstname ?? user?.username ?? user?.email;\n\n if (window.strapi.future.isEnabled('unstableWidgetsApi')) {\n return <UnstableHomePageCe />;\n }\n\n return (\n <Main>\n <Page.Title>\n {formatMessage({ id: 'HomePage.head.title', defaultMessage: 'Homepage' })}\n </Page.Title>\n <Layouts.Header\n title={formatMessage(\n { id: 'HomePage.header.title', defaultMessage: 'Hello {name}' },\n { name: displayName }\n )}\n subtitle={formatMessage({\n id: 'HomePage.header.subtitle',\n defaultMessage: 'Welcome to your administration panel',\n })}\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={8} paddingBottom={10}>\n <GuidedTour />\n <Grid.Root gap={5}>\n <Grid.Item col={6} s={12}>\n <WidgetRoot\n title={{\n id: 'content-manager.widget.last-edited.title',\n defaultMessage: 'Last edited entries',\n }}\n icon={Pencil}\n >\n <LastEditedWidget />\n </WidgetRoot>\n </Grid.Item>\n <Grid.Item col={6} s={12}>\n <WidgetRoot\n title={{\n id: 'content-manager.widget.last-published.title',\n defaultMessage: 'Last published entries',\n }}\n icon={CheckCircle}\n >\n <LastPublishedWidget />\n </WidgetRoot>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Layouts.Content>\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePage = () => {\n const Page = useEnterprise(\n HomePageCE,\n // eslint-disable-next-line import/no-cycle\n async () => (await import('../../../../ee/admin/src/pages/HomePage')).HomePageEE\n );\n\n // block rendering until the EE component is fully loaded\n if (!Page) {\n return null;\n }\n\n return <Page />;\n};\n\nexport { HomePage, HomePageCE };\n"],"names":["WidgetRoot","title","icon","PuzzlePiece","permissions","children","link","formatMessage","useIntl","id","React","useId","Icon","permissionStatus","setPermissionStatus","useState","checkUserHasPermissions","useAuth","state","useEffect","checkPermissions","matchingPermissions","shouldGrant","length","window","strapi","future","isEnabled","_jsxs","Flex","width","hasRadius","direction","alignItems","background","borderColor","shadow","tag","gap","padding","aria-labelledby","justifyContent","_jsx","fill","aria-hidden","Typography","textColor","variant","ReactRouterLink","style","textDecoration","to","href","label","Box","height","overflow","Widget","Loading","NoPermissions","WidgetComponent","component","loadedComponent","setLoadedComponent","loadComponent","resolvedComponent","Component","UnstableHomePageCe","user","displayName","firstname","username","email","getAllWidgets","useStrapiApp","widgets","getAll","Main","Page","Title","defaultMessage","Layouts","Header","name","subtitle","Content","paddingBottom","GuidedTour","Grid","Root","map","widget","Item","col","s","uid","HomePageCE","Pencil","LastEditedWidget","CheckCircle","LastPublishedWidget","HomePage","useEnterprise","HomePageEE"],"mappings":"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"}
1
+ {"version":3,"file":"HomePage.mjs","sources":["../../../../../../admin/src/pages/Home/HomePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Grid, Main, Typography } from '@strapi/design-system';\nimport { PuzzlePiece } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\n\nimport { Layouts } from '../../components/Layouts/Layout';\nimport { Page } from '../../components/PageHelpers';\nimport { Widget } from '../../components/WidgetHelpers';\nimport { useEnterprise } from '../../ee';\nimport { useAuth } from '../../features/Auth';\nimport { useStrapiApp } from '../../features/StrapiApp';\n\nimport { GuidedTour } from './components/GuidedTour';\n\nimport type { WidgetType } from '@strapi/admin/strapi-admin';\n\n/* -------------------------------------------------------------------------------------------------\n * WidgetRoot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface WidgetRootProps extends Pick<WidgetType, 'title' | 'icon' | 'permissions' | 'link'> {\n children: React.ReactNode;\n}\n\nexport const WidgetRoot = ({\n title,\n icon = PuzzlePiece,\n permissions = [],\n children,\n link,\n}: WidgetRootProps) => {\n const { formatMessage } = useIntl();\n const id = React.useId();\n const Icon = icon;\n\n const [permissionStatus, setPermissionStatus] = React.useState<\n 'loading' | 'granted' | 'forbidden'\n >('loading');\n const checkUserHasPermissions = useAuth('WidgetRoot', (state) => state.checkUserHasPermissions);\n React.useEffect(() => {\n const checkPermissions = async () => {\n const matchingPermissions = await checkUserHasPermissions(permissions);\n const shouldGrant = matchingPermissions.length >= permissions.length;\n setPermissionStatus(shouldGrant ? 'granted' : 'forbidden');\n };\n\n if (!permissions || permissions.length === 0) {\n setPermissionStatus('granted');\n } else {\n checkPermissions();\n }\n }, [checkUserHasPermissions, permissions]);\n\n return (\n <Flex\n width=\"100%\"\n hasRadius\n direction=\"column\"\n alignItems=\"flex-start\"\n background=\"neutral0\"\n borderColor=\"neutral150\"\n shadow=\"tableShadow\"\n tag=\"section\"\n gap={4}\n padding={6}\n aria-labelledby={id}\n >\n <Flex direction=\"row\" gap={2} justifyContent=\"space-between\" width=\"100%\" tag=\"header\">\n <Flex gap={2}>\n <Icon fill=\"neutral500\" aria-hidden />\n <Typography textColor=\"neutral500\" variant=\"sigma\" tag=\"h2\" id={id}>\n {formatMessage(title)}\n </Typography>\n </Flex>\n {link && (\n <Typography\n tag={ReactRouterLink}\n variant=\"omega\"\n textColor=\"primary600\"\n style={{ textDecoration: 'none' }}\n to={link.href}\n >\n {formatMessage(link.label)}\n </Typography>\n )}\n </Flex>\n <Box width=\"100%\" height=\"261px\" overflow=\"auto\" tag=\"main\">\n {permissionStatus === 'loading' && <Widget.Loading />}\n {permissionStatus === 'forbidden' && <Widget.NoPermissions />}\n {permissionStatus === 'granted' && children}\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UnstableHomePageCe\n * -----------------------------------------------------------------------------------------------*/\n\nconst WidgetComponent = ({ component }: { component: () => Promise<React.ComponentType> }) => {\n const [loadedComponent, setLoadedComponent] = React.useState<React.ComponentType | null>(null);\n\n React.useEffect(() => {\n const loadComponent = async () => {\n const resolvedComponent = await component();\n\n setLoadedComponent(() => resolvedComponent);\n };\n\n loadComponent();\n }, [component]);\n\n const Component = loadedComponent;\n\n if (!Component) {\n return <Widget.Loading />;\n }\n\n return <Component />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePageCE\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePageCE = () => {\n const { formatMessage } = useIntl();\n const user = useAuth('HomePageCE', (state) => state.user);\n const displayName = user?.firstname ?? user?.username ?? user?.email;\n\n const getAllWidgets = useStrapiApp('UnstableHomepageCe', (state) => state.widgets.getAll);\n\n return (\n <Main>\n <Page.Title>\n {formatMessage({ id: 'HomePage.head.title', defaultMessage: 'Homepage' })}\n </Page.Title>\n <Layouts.Header\n title={formatMessage(\n { id: 'HomePage.header.title', defaultMessage: 'Hello {name}' },\n { name: displayName }\n )}\n subtitle={formatMessage({\n id: 'HomePage.header.subtitle',\n defaultMessage: 'Welcome to your administration panel',\n })}\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={8} paddingBottom={10}>\n <GuidedTour />\n <Grid.Root gap={5}>\n {getAllWidgets().map((widget) => {\n return (\n <Grid.Item col={6} s={12} key={widget.uid}>\n <WidgetRoot\n title={widget.title}\n icon={widget.icon}\n permissions={widget.permissions}\n link={widget.link}\n >\n <WidgetComponent component={widget.component} />\n </WidgetRoot>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Flex>\n </Layouts.Content>\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePage = () => {\n const Page = useEnterprise(\n HomePageCE,\n // eslint-disable-next-line import/no-cycle\n async () => (await import('../../../../ee/admin/src/pages/HomePage')).HomePageEE\n );\n\n // block rendering until the EE component is fully loaded\n if (!Page) {\n return null;\n }\n\n return <Page />;\n};\n\nexport { HomePage, HomePageCE };\n"],"names":["WidgetRoot","title","icon","PuzzlePiece","permissions","children","link","formatMessage","useIntl","id","React","useId","Icon","permissionStatus","setPermissionStatus","useState","checkUserHasPermissions","useAuth","state","useEffect","checkPermissions","matchingPermissions","shouldGrant","length","_jsxs","Flex","width","hasRadius","direction","alignItems","background","borderColor","shadow","tag","gap","padding","aria-labelledby","justifyContent","_jsx","fill","aria-hidden","Typography","textColor","variant","ReactRouterLink","style","textDecoration","to","href","label","Box","height","overflow","Widget","Loading","NoPermissions","WidgetComponent","component","loadedComponent","setLoadedComponent","loadComponent","resolvedComponent","Component","HomePageCE","user","displayName","firstname","username","email","getAllWidgets","useStrapiApp","widgets","getAll","Main","Page","Title","defaultMessage","Layouts","Header","name","subtitle","Content","paddingBottom","GuidedTour","Grid","Root","map","widget","Item","col","s","uid","HomePage","useEnterprise","HomePageEE"],"mappings":"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"}
@@ -107,13 +107,14 @@ const Regenerate = ({ onRegenerate, url })=>{
107
107
  ]
108
108
  });
109
109
  };
110
- const FormHead = ({ title, token, setToken, canEditInputs, canRegenerate, isSubmitting, regenerateUrl })=>{
110
+ const FormHead = ({ title, token, setToken, toggleToken, showToken, canShowToken, canEditInputs, canRegenerate, isSubmitting, regenerateUrl })=>{
111
111
  const { formatMessage } = reactIntl.useIntl();
112
112
  const handleRegenerate = (newKey)=>{
113
113
  setToken({
114
114
  ...token,
115
115
  accessKey: newKey
116
116
  });
117
+ toggleToken?.();
117
118
  };
118
119
  return /*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Header, {
119
120
  title: token?.name || formatMessage(title),
@@ -124,6 +125,23 @@ const FormHead = ({ title, token, setToken, canEditInputs, canRegenerate, isSubm
124
125
  onRegenerate: handleRegenerate,
125
126
  url: `${regenerateUrl}${token?.id ?? ''}`
126
127
  }),
128
+ token?.id && toggleToken && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Tooltip, {
129
+ label: !canShowToken && formatMessage({
130
+ id: 'Settings.tokens.encryptionKeyMissing',
131
+ defaultMessage: 'In order to view the token, you need a valid encryption key in the admin configuration'
132
+ }),
133
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
134
+ type: "button",
135
+ startIcon: showToken ? /*#__PURE__*/ jsxRuntime.jsx(icons.EyeStriked, {}) : /*#__PURE__*/ jsxRuntime.jsx(icons.Eye, {}),
136
+ variant: "secondary",
137
+ onClick: ()=>toggleToken?.(),
138
+ disabled: !canShowToken,
139
+ children: formatMessage({
140
+ id: 'Settings.tokens.viewToken',
141
+ defaultMessage: 'View token'
142
+ })
143
+ })
144
+ }),
127
145
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
128
146
  disabled: isSubmitting,
129
147
  loading: isSubmitting,
@@ -1 +1 @@
1
- {"version":3,"file":"FormHead.js","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/FormHead.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Dialog, Flex } from '@strapi/design-system';\nimport { Check, ArrowClockwise } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useRegenerateTokenMutation } from '../../../../services/transferTokens';\n\nimport type { Data } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <Dialog.Trigger>\n <Button\n startIcon={<ArrowClockwise />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n </Dialog.Trigger>\n\n <ConfirmDialog\n title={formatMessage({\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n })}\n endAction={\n <Button\n startIcon={<ArrowClockwise />}\n loading={isLoadingConfirmation}\n onClick={handleConfirmRegeneration}\n >\n {formatMessage({\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n }\n >\n {formatMessage({\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n\ninterface Token {\n id: Data.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n setToken: (token: TToken) => void;\n isSubmitting: boolean;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n };\n\n return (\n <Layouts.Header\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex gap={2}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n <Button\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={<BackButton />}\n ellipsis\n />\n );\n};\n"],"names":["Regenerate","onRegenerate","url","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","React","useState","isLoadingConfirmation","setIsLoadingConfirmation","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","regenerateToken","useRegenerateTokenMutation","regenerateData","res","type","message","error","data","accessKey","id","defaultMessage","handleConfirmRegeneration","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Trigger","Button","startIcon","ArrowClockwise","size","variant","onClick","name","ConfirmDialog","title","endAction","loading","FormHead","token","setToken","canEditInputs","canRegenerate","isSubmitting","regenerateUrl","handleRegenerate","newKey","Layouts","Header","primaryAction","Flex","gap","disabled","Check","navigationAction","BackButton","ellipsis"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,MAAMA,aAAa,CAAC,EAAEC,YAAY,EAAEC,GAAG,EAAmB,GAAA;IACxD,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACC,iBAAmBC,EAAAA,oBAAAA,CAAqB,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AAEjE,IAAA,MAAM,CAACC,qBAAuBC,EAAAA,wBAAAA,CAAyB,GAAGH,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IACzE,MAAM,EAAEG,kBAAkB,EAAE,GAAGC,6BAAAA,EAAAA;AAC/B,IAAA,MAAM,EAAEC,uBAAAA,EAAyBC,cAAc,EAAE,GAAGC,qCAAAA,EAAAA;IAEpD,MAAM,CAACC,gBAAgB,GAAGC,yCAAAA,EAAAA;AAE1B,IAAA,MAAMC,cAAiB,GAAA,UAAA;QACrB,IAAI;YACF,MAAMC,GAAAA,GAAM,MAAMH,eAAgBd,CAAAA,GAAAA,CAAAA;AAElC,YAAA,IAAI,WAAWiB,GAAK,EAAA;gBAClBR,kBAAmB,CAAA;oBACjBS,IAAM,EAAA,QAAA;oBACNC,OAASP,EAAAA,cAAAA,CAAeK,IAAIG,KAAK;AACnC,iBAAA,CAAA;AAEA,gBAAA;AACF;AAEA,YAAA,IAAIrB,YAAc,EAAA;gBAChBA,YAAakB,CAAAA,GAAAA,CAAII,IAAI,CAACC,SAAS,CAAA;AACjC;AACF,SAAA,CAAE,OAAOF,KAAO,EAAA;YACdX,kBAAmB,CAAA;gBACjBS,IAAM,EAAA,QAAA;AACNC,gBAAAA,OAAAA,EAASlB,aAAc,CAAA;oBACrBsB,EAAI,EAAA,oBAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA;AACF,aAAA,CAAA;SACQ,QAAA;YACRhB,wBAAyB,CAAA,KAAA,CAAA;AAC3B;AACF,KAAA;AAEA,IAAA,MAAMiB,yBAA4B,GAAA,UAAA;AAChCT,QAAAA,cAAAA,EAAAA;QACAZ,oBAAqB,CAAA,KAAA,CAAA;AACvB,KAAA;IAEA,qBACEsB,eAAA,CAACC,oBAAOC,IAAI,EAAA;QAACC,IAAM1B,EAAAA,iBAAAA;QAAmB2B,YAAc1B,EAAAA,oBAAAA;;AAClD,0BAAA2B,cAAA,CAACJ,oBAAOK,OAAO,EAAA;AACb,gBAAA,QAAA,gBAAAD,cAACE,CAAAA,mBAAAA,EAAAA;AACCC,oBAAAA,SAAAA,gBAAWH,cAACI,CAAAA,oBAAAA,EAAAA,EAAAA,CAAAA;oBACZjB,IAAK,EAAA,QAAA;oBACLkB,IAAK,EAAA,GAAA;oBACLC,OAAQ,EAAA,UAAA;AACRC,oBAAAA,OAAAA,EAAS,IAAMlC,oBAAqB,CAAA,IAAA,CAAA;oBACpCmC,IAAK,EAAA,YAAA;8BAEJtC,aAAc,CAAA;wBACbsB,EAAI,EAAA,4BAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA;;;0BAIJO,cAACS,CAAAA,2BAAAA,EAAAA;AACCC,gBAAAA,KAAAA,EAAOxC,aAAc,CAAA;oBACnBsB,EAAI,EAAA,wCAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA,CAAA;AACAkB,gBAAAA,SAAAA,gBACEX,cAACE,CAAAA,mBAAAA,EAAAA;AACCC,oBAAAA,SAAAA,gBAAWH,cAACI,CAAAA,oBAAAA,EAAAA,EAAAA,CAAAA;oBACZQ,OAASpC,EAAAA,qBAAAA;oBACT+B,OAASb,EAAAA,yBAAAA;8BAERxB,aAAc,CAAA;wBACbsB,EAAI,EAAA,mCAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA;;0BAIHvB,aAAc,CAAA;oBACbsB,EAAI,EAAA,sCAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA;;;;AAIR,CAAA;MAiBaoB,QAAW,GAAA,CAA8B,EACpDH,KAAK,EACLI,KAAK,EACLC,QAAQ,EACRC,aAAa,EACbC,aAAa,EACbC,YAAY,EACZC,aAAa,EACS,GAAA;IACtB,MAAM,EAAEjD,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMiD,mBAAmB,CAACC,MAAAA,GAAAA;QACxBN,QAAS,CAAA;AACP,YAAA,GAAGD,KAAK;YACRvB,SAAW8B,EAAAA;AACb,SAAA,CAAA;AACF,KAAA;IAEA,qBACErB,cAAA,CAACsB,eAAQC,MAAM,EAAA;QACbb,KAAOI,EAAAA,KAAAA,EAAON,QAAQtC,aAAcwC,CAAAA,KAAAA,CAAAA;AACpCc,QAAAA,aAAAA,EACER,8BACErB,eAAC8B,CAAAA,iBAAAA,EAAAA;YAAKC,GAAK,EAAA,CAAA;;gBACRT,aAAiBH,IAAAA,KAAAA,EAAOtB,oBACvBQ,cAACjC,CAAAA,UAAAA,EAAAA;oBACCC,YAAcoD,EAAAA,gBAAAA;AACdnD,oBAAAA,GAAAA,EAAK,CAAC,EAAEkD,aAAAA,CAAc,EAAEL,KAAOtB,EAAAA,EAAAA,IAAM,GAAG;;8BAG5CQ,cAACE,CAAAA,mBAAAA,EAAAA;oBACCyB,QAAUT,EAAAA,YAAAA;oBACVN,OAASM,EAAAA,YAAAA;AACTf,oBAAAA,SAAAA,gBAAWH,cAAC4B,CAAAA,WAAAA,EAAAA,EAAAA,CAAAA;oBACZzC,IAAK,EAAA,QAAA;oBACLkB,IAAK,EAAA,GAAA;8BAEJnC,aAAc,CAAA;wBACbsB,EAAI,EAAA,aAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA;;;aAIJwB,aACAH,IAAAA,KAAAA,EAAOtB,oBACLQ,cAACjC,CAAAA,UAAAA,EAAAA;YACCC,YAAcoD,EAAAA,gBAAAA;AACdnD,YAAAA,GAAAA,EAAK,CAAC,EAAEkD,aAAAA,CAAc,EAAEL,KAAOtB,EAAAA,EAAAA,IAAM,GAAG;;AAKhDqC,QAAAA,gBAAAA,gBAAkB7B,cAAC8B,CAAAA,qBAAAA,EAAAA,EAAAA,CAAAA;QACnBC,QAAQ,EAAA;;AAGd;;;;"}
1
+ {"version":3,"file":"FormHead.js","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/FormHead.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Dialog, Flex, Tooltip } from '@strapi/design-system';\nimport { Check, ArrowClockwise, Eye, EyeStriked } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useRegenerateTokenMutation } from '../../../../services/transferTokens';\n\nimport type { Data } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <Dialog.Trigger>\n <Button\n startIcon={<ArrowClockwise />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n </Dialog.Trigger>\n\n <ConfirmDialog\n title={formatMessage({\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n })}\n endAction={\n <Button\n startIcon={<ArrowClockwise />}\n loading={isLoadingConfirmation}\n onClick={handleConfirmRegeneration}\n >\n {formatMessage({\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n }\n >\n {formatMessage({\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n\ninterface Token {\n id: Data.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n canShowToken?: boolean;\n setToken: (token: TToken) => void;\n toggleToken?: () => void;\n showToken?: boolean;\n isSubmitting: boolean;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n toggleToken,\n showToken,\n canShowToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n toggleToken?.();\n };\n\n return (\n <Layouts.Header\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex gap={2}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n {token?.id && toggleToken && (\n <Tooltip\n label={\n !canShowToken &&\n formatMessage({\n id: 'Settings.tokens.encryptionKeyMissing',\n defaultMessage:\n 'In order to view the token, you need a valid encryption key in the admin configuration',\n })\n }\n >\n <Button\n type=\"button\"\n startIcon={showToken ? <EyeStriked /> : <Eye />}\n variant=\"secondary\"\n onClick={() => toggleToken?.()}\n disabled={!canShowToken}\n >\n {formatMessage({\n id: 'Settings.tokens.viewToken',\n defaultMessage: 'View token',\n })}\n </Button>\n </Tooltip>\n )}\n <Button\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={<BackButton />}\n ellipsis\n />\n );\n};\n"],"names":["Regenerate","onRegenerate","url","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","React","useState","isLoadingConfirmation","setIsLoadingConfirmation","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","regenerateToken","useRegenerateTokenMutation","regenerateData","res","type","message","error","data","accessKey","id","defaultMessage","handleConfirmRegeneration","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Trigger","Button","startIcon","ArrowClockwise","size","variant","onClick","name","ConfirmDialog","title","endAction","loading","FormHead","token","setToken","toggleToken","showToken","canShowToken","canEditInputs","canRegenerate","isSubmitting","regenerateUrl","handleRegenerate","newKey","Layouts","Header","primaryAction","Flex","gap","Tooltip","label","EyeStriked","Eye","disabled","Check","navigationAction","BackButton","ellipsis"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { Flex, Button, Dialog } from '@strapi/design-system';
4
- import { Check, ArrowClockwise } from '@strapi/icons';
3
+ import { Flex, Tooltip, Button, Dialog } from '@strapi/design-system';
4
+ import { EyeStriked, Eye, Check, ArrowClockwise } from '@strapi/icons';
5
5
  import { useIntl } from 'react-intl';
6
6
  import { ConfirmDialog } from '../../../../components/ConfirmDialog.mjs';
7
7
  import { Layouts } from '../../../../components/Layouts/Layout.mjs';
@@ -86,13 +86,14 @@ const Regenerate = ({ onRegenerate, url })=>{
86
86
  ]
87
87
  });
88
88
  };
89
- const FormHead = ({ title, token, setToken, canEditInputs, canRegenerate, isSubmitting, regenerateUrl })=>{
89
+ const FormHead = ({ title, token, setToken, toggleToken, showToken, canShowToken, canEditInputs, canRegenerate, isSubmitting, regenerateUrl })=>{
90
90
  const { formatMessage } = useIntl();
91
91
  const handleRegenerate = (newKey)=>{
92
92
  setToken({
93
93
  ...token,
94
94
  accessKey: newKey
95
95
  });
96
+ toggleToken?.();
96
97
  };
97
98
  return /*#__PURE__*/ jsx(Layouts.Header, {
98
99
  title: token?.name || formatMessage(title),
@@ -103,6 +104,23 @@ const FormHead = ({ title, token, setToken, canEditInputs, canRegenerate, isSubm
103
104
  onRegenerate: handleRegenerate,
104
105
  url: `${regenerateUrl}${token?.id ?? ''}`
105
106
  }),
107
+ token?.id && toggleToken && /*#__PURE__*/ jsx(Tooltip, {
108
+ label: !canShowToken && formatMessage({
109
+ id: 'Settings.tokens.encryptionKeyMissing',
110
+ defaultMessage: 'In order to view the token, you need a valid encryption key in the admin configuration'
111
+ }),
112
+ children: /*#__PURE__*/ jsx(Button, {
113
+ type: "button",
114
+ startIcon: showToken ? /*#__PURE__*/ jsx(EyeStriked, {}) : /*#__PURE__*/ jsx(Eye, {}),
115
+ variant: "secondary",
116
+ onClick: ()=>toggleToken?.(),
117
+ disabled: !canShowToken,
118
+ children: formatMessage({
119
+ id: 'Settings.tokens.viewToken',
120
+ defaultMessage: 'View token'
121
+ })
122
+ })
123
+ }),
106
124
  /*#__PURE__*/ jsx(Button, {
107
125
  disabled: isSubmitting,
108
126
  loading: isSubmitting,
@@ -1 +1 @@
1
- {"version":3,"file":"FormHead.mjs","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/FormHead.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Dialog, Flex } from '@strapi/design-system';\nimport { Check, ArrowClockwise } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useRegenerateTokenMutation } from '../../../../services/transferTokens';\n\nimport type { Data } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <Dialog.Trigger>\n <Button\n startIcon={<ArrowClockwise />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n </Dialog.Trigger>\n\n <ConfirmDialog\n title={formatMessage({\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n })}\n endAction={\n <Button\n startIcon={<ArrowClockwise />}\n loading={isLoadingConfirmation}\n onClick={handleConfirmRegeneration}\n >\n {formatMessage({\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n }\n >\n {formatMessage({\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n\ninterface Token {\n id: Data.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n setToken: (token: TToken) => void;\n isSubmitting: boolean;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n };\n\n return (\n <Layouts.Header\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex gap={2}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n <Button\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={<BackButton />}\n ellipsis\n />\n );\n};\n"],"names":["Regenerate","onRegenerate","url","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","React","useState","isLoadingConfirmation","setIsLoadingConfirmation","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","regenerateToken","useRegenerateTokenMutation","regenerateData","res","type","message","error","data","accessKey","id","defaultMessage","handleConfirmRegeneration","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Trigger","Button","startIcon","ArrowClockwise","size","variant","onClick","name","ConfirmDialog","title","endAction","loading","FormHead","token","setToken","canEditInputs","canRegenerate","isSubmitting","regenerateUrl","handleRegenerate","newKey","Layouts","Header","primaryAction","Flex","gap","disabled","Check","navigationAction","BackButton","ellipsis"],"mappings":"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"}
1
+ {"version":3,"file":"FormHead.mjs","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/FormHead.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Dialog, Flex, Tooltip } from '@strapi/design-system';\nimport { Check, ArrowClockwise, Eye, EyeStriked } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useRegenerateTokenMutation } from '../../../../services/transferTokens';\n\nimport type { Data } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <Dialog.Trigger>\n <Button\n startIcon={<ArrowClockwise />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n </Dialog.Trigger>\n\n <ConfirmDialog\n title={formatMessage({\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n })}\n endAction={\n <Button\n startIcon={<ArrowClockwise />}\n loading={isLoadingConfirmation}\n onClick={handleConfirmRegeneration}\n >\n {formatMessage({\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n }\n >\n {formatMessage({\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n\ninterface Token {\n id: Data.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n canShowToken?: boolean;\n setToken: (token: TToken) => void;\n toggleToken?: () => void;\n showToken?: boolean;\n isSubmitting: boolean;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n toggleToken,\n showToken,\n canShowToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n toggleToken?.();\n };\n\n return (\n <Layouts.Header\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex gap={2}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n {token?.id && toggleToken && (\n <Tooltip\n label={\n !canShowToken &&\n formatMessage({\n id: 'Settings.tokens.encryptionKeyMissing',\n defaultMessage:\n 'In order to view the token, you need a valid encryption key in the admin configuration',\n })\n }\n >\n <Button\n type=\"button\"\n startIcon={showToken ? <EyeStriked /> : <Eye />}\n variant=\"secondary\"\n onClick={() => toggleToken?.()}\n disabled={!canShowToken}\n >\n {formatMessage({\n id: 'Settings.tokens.viewToken',\n defaultMessage: 'View token',\n })}\n </Button>\n </Tooltip>\n )}\n <Button\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={<BackButton />}\n ellipsis\n />\n );\n};\n"],"names":["Regenerate","onRegenerate","url","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","React","useState","isLoadingConfirmation","setIsLoadingConfirmation","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","regenerateToken","useRegenerateTokenMutation","regenerateData","res","type","message","error","data","accessKey","id","defaultMessage","handleConfirmRegeneration","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Trigger","Button","startIcon","ArrowClockwise","size","variant","onClick","name","ConfirmDialog","title","endAction","loading","FormHead","token","setToken","toggleToken","showToken","canShowToken","canEditInputs","canRegenerate","isSubmitting","regenerateUrl","handleRegenerate","newKey","Layouts","Header","primaryAction","Flex","gap","Tooltip","label","EyeStriked","Eye","disabled","Check","navigationAction","BackButton","ellipsis"],"mappings":"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"}
@@ -54,7 +54,10 @@ const TokenBox = ({ token, tokenType })=>{
54
54
  id: 'Settings.tokens.copy.editTitle',
55
55
  defaultMessage: 'This token isn’t accessible anymore.'
56
56
  }),
57
- subtitle: token ? formatMessage({
57
+ subtitle: token ? formatMessage(tokenType === 'api-token' ? {
58
+ id: 'Settings.tokens.copy.subtitle',
59
+ defaultMessage: 'Copy this token for use elsewhere'
60
+ } : {
58
61
  id: 'Settings.tokens.copy.lastWarning',
59
62
  defaultMessage: 'Make sure to copy this token, you won’t be able to see it again!'
60
63
  }) : formatMessage({
@@ -1 +1 @@
1
- {"version":3,"file":"TokenBox.js","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/TokenBox.tsx"],"sourcesContent":["import { IconButton } from '@strapi/design-system';\nimport { Duplicate, Key } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { ContentBox } from '../../../../components/ContentBox';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useClipboard } from '../../../../hooks/useClipboard';\n\ninterface TokenBoxProps {\n token?: string;\n tokenType: 'transfer-token' | 'api-token';\n}\n\nexport const TokenBox = ({ token, tokenType }: TokenBoxProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { trackUsage } = useTracking();\n\n const { copy } = useClipboard();\n\n const handleClick = (token: TokenBoxProps['token']) => async () => {\n if (token) {\n const didCopy = await copy(token);\n\n if (didCopy) {\n trackUsage('didCopyTokenKey', {\n tokenType,\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.tokens.notification.copied' }),\n });\n }\n }\n };\n\n return (\n <ContentBox\n endAction={\n token && (\n <span style={{ alignSelf: 'start' }}>\n <IconButton\n label={formatMessage({\n id: 'app.component.CopyToClipboard.label',\n defaultMessage: 'Copy to clipboard',\n })}\n onClick={handleClick(token)}\n variant=\"ghost\"\n type=\"button\"\n style={{ padding: 0, height: '1.6rem' }}\n >\n <Duplicate />\n </IconButton>\n </span>\n )\n }\n title={\n token ||\n formatMessage({\n id: 'Settings.tokens.copy.editTitle',\n defaultMessage: 'This token isn’t accessible anymore.',\n })\n }\n subtitle={\n token\n ? formatMessage({\n id: 'Settings.tokens.copy.lastWarning',\n defaultMessage: 'Make sure to copy this token, you won’t be able to see it again!',\n })\n : formatMessage({\n id: 'Settings.tokens.copy.editMessage',\n defaultMessage: 'For security reasons, you can only see your token once.',\n })\n }\n icon={<Key />}\n iconBackground=\"neutral100\"\n />\n );\n};\n"],"names":["TokenBox","token","tokenType","formatMessage","useIntl","toggleNotification","useNotification","trackUsage","useTracking","copy","useClipboard","handleClick","didCopy","type","message","id","_jsx","ContentBox","endAction","span","style","alignSelf","IconButton","label","defaultMessage","onClick","variant","padding","height","Duplicate","title","subtitle","icon","Key","iconBackground"],"mappings":";;;;;;;;;;;MAcaA,QAAW,GAAA,CAAC,EAAEC,KAAK,EAAEC,SAAS,EAAiB,GAAA;IAC1D,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,6BAAAA,EAAAA;IAC/B,MAAM,EAAEC,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;IAEvB,MAAM,EAAEC,IAAI,EAAE,GAAGC,yBAAAA,EAAAA;IAEjB,MAAMC,WAAAA,GAAc,CAACV,KAAkC,GAAA,UAAA;AACrD,YAAA,IAAIA,KAAO,EAAA;gBACT,MAAMW,OAAAA,GAAU,MAAMH,IAAKR,CAAAA,KAAAA,CAAAA;AAE3B,gBAAA,IAAIW,OAAS,EAAA;AACXL,oBAAAA,UAAAA,CAAW,iBAAmB,EAAA;AAC5BL,wBAAAA;AACF,qBAAA,CAAA;oBACAG,kBAAmB,CAAA;wBACjBQ,IAAM,EAAA,SAAA;AACNC,wBAAAA,OAAAA,EAASX,aAAc,CAAA;4BAAEY,EAAI,EAAA;AAAsC,yBAAA;AACrE,qBAAA,CAAA;AACF;AACF;AACF,SAAA;AAEA,IAAA,qBACEC,cAACC,CAAAA,qBAAAA,EAAAA;AACCC,QAAAA,SAAAA,EACEjB,uBACEe,cAACG,CAAAA,MAAAA,EAAAA;YAAKC,KAAO,EAAA;gBAAEC,SAAW,EAAA;AAAQ,aAAA;AAChC,YAAA,QAAA,gBAAAL,cAACM,CAAAA,uBAAAA,EAAAA;AACCC,gBAAAA,KAAAA,EAAOpB,aAAc,CAAA;oBACnBY,EAAI,EAAA,qCAAA;oBACJS,cAAgB,EAAA;AAClB,iBAAA,CAAA;AACAC,gBAAAA,OAAAA,EAASd,WAAYV,CAAAA,KAAAA,CAAAA;gBACrByB,OAAQ,EAAA,OAAA;gBACRb,IAAK,EAAA,QAAA;gBACLO,KAAO,EAAA;oBAAEO,OAAS,EAAA,CAAA;oBAAGC,MAAQ,EAAA;AAAS,iBAAA;AAEtC,gBAAA,QAAA,gBAAAZ,cAACa,CAAAA,eAAAA,EAAAA,EAAAA;;;AAKTC,QAAAA,KAAAA,EACE7B,SACAE,aAAc,CAAA;YACZY,EAAI,EAAA,gCAAA;YACJS,cAAgB,EAAA;AAClB,SAAA,CAAA;AAEFO,QAAAA,QAAAA,EACE9B,QACIE,aAAc,CAAA;YACZY,EAAI,EAAA,kCAAA;YACJS,cAAgB,EAAA;AAClB,SAAA,CAAA,GACArB,aAAc,CAAA;YACZY,EAAI,EAAA,kCAAA;YACJS,cAAgB,EAAA;AAClB,SAAA,CAAA;AAENQ,QAAAA,IAAAA,gBAAMhB,cAACiB,CAAAA,SAAAA,EAAAA,EAAAA,CAAAA;QACPC,cAAe,EAAA;;AAGrB;;;;"}
1
+ {"version":3,"file":"TokenBox.js","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/TokenBox.tsx"],"sourcesContent":["import { IconButton } from '@strapi/design-system';\nimport { Duplicate, Key } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { ContentBox } from '../../../../components/ContentBox';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useClipboard } from '../../../../hooks/useClipboard';\n\ninterface TokenBoxProps {\n token?: string;\n tokenType: 'transfer-token' | 'api-token';\n}\n\nexport const TokenBox = ({ token, tokenType }: TokenBoxProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { trackUsage } = useTracking();\n\n const { copy } = useClipboard();\n\n const handleClick = (token: TokenBoxProps['token']) => async () => {\n if (token) {\n const didCopy = await copy(token);\n\n if (didCopy) {\n trackUsage('didCopyTokenKey', {\n tokenType,\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.tokens.notification.copied' }),\n });\n }\n }\n };\n\n return (\n <ContentBox\n endAction={\n token && (\n <span style={{ alignSelf: 'start' }}>\n <IconButton\n label={formatMessage({\n id: 'app.component.CopyToClipboard.label',\n defaultMessage: 'Copy to clipboard',\n })}\n onClick={handleClick(token)}\n variant=\"ghost\"\n type=\"button\"\n style={{ padding: 0, height: '1.6rem' }}\n >\n <Duplicate />\n </IconButton>\n </span>\n )\n }\n title={\n token ||\n formatMessage({\n id: 'Settings.tokens.copy.editTitle',\n defaultMessage: 'This token isn’t accessible anymore.',\n })\n }\n subtitle={\n token\n ? formatMessage(\n tokenType === 'api-token'\n ? {\n id: 'Settings.tokens.copy.subtitle',\n defaultMessage: 'Copy this token for use elsewhere',\n }\n : {\n id: 'Settings.tokens.copy.lastWarning',\n defaultMessage:\n 'Make sure to copy this token, you won’t be able to see it again!',\n }\n )\n : formatMessage({\n id: 'Settings.tokens.copy.editMessage',\n defaultMessage: 'For security reasons, you can only see your token once.',\n })\n }\n icon={<Key />}\n iconBackground=\"neutral100\"\n />\n );\n};\n"],"names":["TokenBox","token","tokenType","formatMessage","useIntl","toggleNotification","useNotification","trackUsage","useTracking","copy","useClipboard","handleClick","didCopy","type","message","id","_jsx","ContentBox","endAction","span","style","alignSelf","IconButton","label","defaultMessage","onClick","variant","padding","height","Duplicate","title","subtitle","icon","Key","iconBackground"],"mappings":";;;;;;;;;;;MAcaA,QAAW,GAAA,CAAC,EAAEC,KAAK,EAAEC,SAAS,EAAiB,GAAA;IAC1D,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,6BAAAA,EAAAA;IAC/B,MAAM,EAAEC,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;IAEvB,MAAM,EAAEC,IAAI,EAAE,GAAGC,yBAAAA,EAAAA;IAEjB,MAAMC,WAAAA,GAAc,CAACV,KAAkC,GAAA,UAAA;AACrD,YAAA,IAAIA,KAAO,EAAA;gBACT,MAAMW,OAAAA,GAAU,MAAMH,IAAKR,CAAAA,KAAAA,CAAAA;AAE3B,gBAAA,IAAIW,OAAS,EAAA;AACXL,oBAAAA,UAAAA,CAAW,iBAAmB,EAAA;AAC5BL,wBAAAA;AACF,qBAAA,CAAA;oBACAG,kBAAmB,CAAA;wBACjBQ,IAAM,EAAA,SAAA;AACNC,wBAAAA,OAAAA,EAASX,aAAc,CAAA;4BAAEY,EAAI,EAAA;AAAsC,yBAAA;AACrE,qBAAA,CAAA;AACF;AACF;AACF,SAAA;AAEA,IAAA,qBACEC,cAACC,CAAAA,qBAAAA,EAAAA;AACCC,QAAAA,SAAAA,EACEjB,uBACEe,cAACG,CAAAA,MAAAA,EAAAA;YAAKC,KAAO,EAAA;gBAAEC,SAAW,EAAA;AAAQ,aAAA;AAChC,YAAA,QAAA,gBAAAL,cAACM,CAAAA,uBAAAA,EAAAA;AACCC,gBAAAA,KAAAA,EAAOpB,aAAc,CAAA;oBACnBY,EAAI,EAAA,qCAAA;oBACJS,cAAgB,EAAA;AAClB,iBAAA,CAAA;AACAC,gBAAAA,OAAAA,EAASd,WAAYV,CAAAA,KAAAA,CAAAA;gBACrByB,OAAQ,EAAA,OAAA;gBACRb,IAAK,EAAA,QAAA;gBACLO,KAAO,EAAA;oBAAEO,OAAS,EAAA,CAAA;oBAAGC,MAAQ,EAAA;AAAS,iBAAA;AAEtC,gBAAA,QAAA,gBAAAZ,cAACa,CAAAA,eAAAA,EAAAA,EAAAA;;;AAKTC,QAAAA,KAAAA,EACE7B,SACAE,aAAc,CAAA;YACZY,EAAI,EAAA,gCAAA;YACJS,cAAgB,EAAA;AAClB,SAAA,CAAA;QAEFO,QACE9B,EAAAA,KAAAA,GACIE,aACED,CAAAA,SAAAA,KAAc,WACV,GAAA;YACEa,EAAI,EAAA,+BAAA;YACJS,cAAgB,EAAA;SAElB,GAAA;YACET,EAAI,EAAA,kCAAA;YACJS,cACE,EAAA;AACJ,SAAA,CAAA,GAENrB,aAAc,CAAA;YACZY,EAAI,EAAA,kCAAA;YACJS,cAAgB,EAAA;AAClB,SAAA,CAAA;AAENQ,QAAAA,IAAAA,gBAAMhB,cAACiB,CAAAA,SAAAA,EAAAA,EAAAA,CAAAA;QACPC,cAAe,EAAA;;AAGrB;;;;"}
@@ -52,7 +52,10 @@ const TokenBox = ({ token, tokenType })=>{
52
52
  id: 'Settings.tokens.copy.editTitle',
53
53
  defaultMessage: 'This token isn’t accessible anymore.'
54
54
  }),
55
- subtitle: token ? formatMessage({
55
+ subtitle: token ? formatMessage(tokenType === 'api-token' ? {
56
+ id: 'Settings.tokens.copy.subtitle',
57
+ defaultMessage: 'Copy this token for use elsewhere'
58
+ } : {
56
59
  id: 'Settings.tokens.copy.lastWarning',
57
60
  defaultMessage: 'Make sure to copy this token, you won’t be able to see it again!'
58
61
  }) : formatMessage({
@@ -1 +1 @@
1
- {"version":3,"file":"TokenBox.mjs","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/TokenBox.tsx"],"sourcesContent":["import { IconButton } from '@strapi/design-system';\nimport { Duplicate, Key } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { ContentBox } from '../../../../components/ContentBox';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useClipboard } from '../../../../hooks/useClipboard';\n\ninterface TokenBoxProps {\n token?: string;\n tokenType: 'transfer-token' | 'api-token';\n}\n\nexport const TokenBox = ({ token, tokenType }: TokenBoxProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { trackUsage } = useTracking();\n\n const { copy } = useClipboard();\n\n const handleClick = (token: TokenBoxProps['token']) => async () => {\n if (token) {\n const didCopy = await copy(token);\n\n if (didCopy) {\n trackUsage('didCopyTokenKey', {\n tokenType,\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.tokens.notification.copied' }),\n });\n }\n }\n };\n\n return (\n <ContentBox\n endAction={\n token && (\n <span style={{ alignSelf: 'start' }}>\n <IconButton\n label={formatMessage({\n id: 'app.component.CopyToClipboard.label',\n defaultMessage: 'Copy to clipboard',\n })}\n onClick={handleClick(token)}\n variant=\"ghost\"\n type=\"button\"\n style={{ padding: 0, height: '1.6rem' }}\n >\n <Duplicate />\n </IconButton>\n </span>\n )\n }\n title={\n token ||\n formatMessage({\n id: 'Settings.tokens.copy.editTitle',\n defaultMessage: 'This token isn’t accessible anymore.',\n })\n }\n subtitle={\n token\n ? formatMessage({\n id: 'Settings.tokens.copy.lastWarning',\n defaultMessage: 'Make sure to copy this token, you won’t be able to see it again!',\n })\n : formatMessage({\n id: 'Settings.tokens.copy.editMessage',\n defaultMessage: 'For security reasons, you can only see your token once.',\n })\n }\n icon={<Key />}\n iconBackground=\"neutral100\"\n />\n );\n};\n"],"names":["TokenBox","token","tokenType","formatMessage","useIntl","toggleNotification","useNotification","trackUsage","useTracking","copy","useClipboard","handleClick","didCopy","type","message","id","_jsx","ContentBox","endAction","span","style","alignSelf","IconButton","label","defaultMessage","onClick","variant","padding","height","Duplicate","title","subtitle","icon","Key","iconBackground"],"mappings":";;;;;;;;;MAcaA,QAAW,GAAA,CAAC,EAAEC,KAAK,EAAEC,SAAS,EAAiB,GAAA;IAC1D,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;IAC/B,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;IAEvB,MAAM,EAAEC,IAAI,EAAE,GAAGC,YAAAA,EAAAA;IAEjB,MAAMC,WAAAA,GAAc,CAACV,KAAkC,GAAA,UAAA;AACrD,YAAA,IAAIA,KAAO,EAAA;gBACT,MAAMW,OAAAA,GAAU,MAAMH,IAAKR,CAAAA,KAAAA,CAAAA;AAE3B,gBAAA,IAAIW,OAAS,EAAA;AACXL,oBAAAA,UAAAA,CAAW,iBAAmB,EAAA;AAC5BL,wBAAAA;AACF,qBAAA,CAAA;oBACAG,kBAAmB,CAAA;wBACjBQ,IAAM,EAAA,SAAA;AACNC,wBAAAA,OAAAA,EAASX,aAAc,CAAA;4BAAEY,EAAI,EAAA;AAAsC,yBAAA;AACrE,qBAAA,CAAA;AACF;AACF;AACF,SAAA;AAEA,IAAA,qBACEC,GAACC,CAAAA,UAAAA,EAAAA;AACCC,QAAAA,SAAAA,EACEjB,uBACEe,GAACG,CAAAA,MAAAA,EAAAA;YAAKC,KAAO,EAAA;gBAAEC,SAAW,EAAA;AAAQ,aAAA;AAChC,YAAA,QAAA,gBAAAL,GAACM,CAAAA,UAAAA,EAAAA;AACCC,gBAAAA,KAAAA,EAAOpB,aAAc,CAAA;oBACnBY,EAAI,EAAA,qCAAA;oBACJS,cAAgB,EAAA;AAClB,iBAAA,CAAA;AACAC,gBAAAA,OAAAA,EAASd,WAAYV,CAAAA,KAAAA,CAAAA;gBACrByB,OAAQ,EAAA,OAAA;gBACRb,IAAK,EAAA,QAAA;gBACLO,KAAO,EAAA;oBAAEO,OAAS,EAAA,CAAA;oBAAGC,MAAQ,EAAA;AAAS,iBAAA;AAEtC,gBAAA,QAAA,gBAAAZ,GAACa,CAAAA,SAAAA,EAAAA,EAAAA;;;AAKTC,QAAAA,KAAAA,EACE7B,SACAE,aAAc,CAAA;YACZY,EAAI,EAAA,gCAAA;YACJS,cAAgB,EAAA;AAClB,SAAA,CAAA;AAEFO,QAAAA,QAAAA,EACE9B,QACIE,aAAc,CAAA;YACZY,EAAI,EAAA,kCAAA;YACJS,cAAgB,EAAA;AAClB,SAAA,CAAA,GACArB,aAAc,CAAA;YACZY,EAAI,EAAA,kCAAA;YACJS,cAAgB,EAAA;AAClB,SAAA,CAAA;AAENQ,QAAAA,IAAAA,gBAAMhB,GAACiB,CAAAA,GAAAA,EAAAA,EAAAA,CAAAA;QACPC,cAAe,EAAA;;AAGrB;;;;"}
1
+ {"version":3,"file":"TokenBox.mjs","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/TokenBox.tsx"],"sourcesContent":["import { IconButton } from '@strapi/design-system';\nimport { Duplicate, Key } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { ContentBox } from '../../../../components/ContentBox';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useClipboard } from '../../../../hooks/useClipboard';\n\ninterface TokenBoxProps {\n token?: string;\n tokenType: 'transfer-token' | 'api-token';\n}\n\nexport const TokenBox = ({ token, tokenType }: TokenBoxProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { trackUsage } = useTracking();\n\n const { copy } = useClipboard();\n\n const handleClick = (token: TokenBoxProps['token']) => async () => {\n if (token) {\n const didCopy = await copy(token);\n\n if (didCopy) {\n trackUsage('didCopyTokenKey', {\n tokenType,\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.tokens.notification.copied' }),\n });\n }\n }\n };\n\n return (\n <ContentBox\n endAction={\n token && (\n <span style={{ alignSelf: 'start' }}>\n <IconButton\n label={formatMessage({\n id: 'app.component.CopyToClipboard.label',\n defaultMessage: 'Copy to clipboard',\n })}\n onClick={handleClick(token)}\n variant=\"ghost\"\n type=\"button\"\n style={{ padding: 0, height: '1.6rem' }}\n >\n <Duplicate />\n </IconButton>\n </span>\n )\n }\n title={\n token ||\n formatMessage({\n id: 'Settings.tokens.copy.editTitle',\n defaultMessage: 'This token isn’t accessible anymore.',\n })\n }\n subtitle={\n token\n ? formatMessage(\n tokenType === 'api-token'\n ? {\n id: 'Settings.tokens.copy.subtitle',\n defaultMessage: 'Copy this token for use elsewhere',\n }\n : {\n id: 'Settings.tokens.copy.lastWarning',\n defaultMessage:\n 'Make sure to copy this token, you won’t be able to see it again!',\n }\n )\n : formatMessage({\n id: 'Settings.tokens.copy.editMessage',\n defaultMessage: 'For security reasons, you can only see your token once.',\n })\n }\n icon={<Key />}\n iconBackground=\"neutral100\"\n />\n );\n};\n"],"names":["TokenBox","token","tokenType","formatMessage","useIntl","toggleNotification","useNotification","trackUsage","useTracking","copy","useClipboard","handleClick","didCopy","type","message","id","_jsx","ContentBox","endAction","span","style","alignSelf","IconButton","label","defaultMessage","onClick","variant","padding","height","Duplicate","title","subtitle","icon","Key","iconBackground"],"mappings":";;;;;;;;;MAcaA,QAAW,GAAA,CAAC,EAAEC,KAAK,EAAEC,SAAS,EAAiB,GAAA;IAC1D,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;IAC/B,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;IAEvB,MAAM,EAAEC,IAAI,EAAE,GAAGC,YAAAA,EAAAA;IAEjB,MAAMC,WAAAA,GAAc,CAACV,KAAkC,GAAA,UAAA;AACrD,YAAA,IAAIA,KAAO,EAAA;gBACT,MAAMW,OAAAA,GAAU,MAAMH,IAAKR,CAAAA,KAAAA,CAAAA;AAE3B,gBAAA,IAAIW,OAAS,EAAA;AACXL,oBAAAA,UAAAA,CAAW,iBAAmB,EAAA;AAC5BL,wBAAAA;AACF,qBAAA,CAAA;oBACAG,kBAAmB,CAAA;wBACjBQ,IAAM,EAAA,SAAA;AACNC,wBAAAA,OAAAA,EAASX,aAAc,CAAA;4BAAEY,EAAI,EAAA;AAAsC,yBAAA;AACrE,qBAAA,CAAA;AACF;AACF;AACF,SAAA;AAEA,IAAA,qBACEC,GAACC,CAAAA,UAAAA,EAAAA;AACCC,QAAAA,SAAAA,EACEjB,uBACEe,GAACG,CAAAA,MAAAA,EAAAA;YAAKC,KAAO,EAAA;gBAAEC,SAAW,EAAA;AAAQ,aAAA;AAChC,YAAA,QAAA,gBAAAL,GAACM,CAAAA,UAAAA,EAAAA;AACCC,gBAAAA,KAAAA,EAAOpB,aAAc,CAAA;oBACnBY,EAAI,EAAA,qCAAA;oBACJS,cAAgB,EAAA;AAClB,iBAAA,CAAA;AACAC,gBAAAA,OAAAA,EAASd,WAAYV,CAAAA,KAAAA,CAAAA;gBACrByB,OAAQ,EAAA,OAAA;gBACRb,IAAK,EAAA,QAAA;gBACLO,KAAO,EAAA;oBAAEO,OAAS,EAAA,CAAA;oBAAGC,MAAQ,EAAA;AAAS,iBAAA;AAEtC,gBAAA,QAAA,gBAAAZ,GAACa,CAAAA,SAAAA,EAAAA,EAAAA;;;AAKTC,QAAAA,KAAAA,EACE7B,SACAE,aAAc,CAAA;YACZY,EAAI,EAAA,gCAAA;YACJS,cAAgB,EAAA;AAClB,SAAA,CAAA;QAEFO,QACE9B,EAAAA,KAAAA,GACIE,aACED,CAAAA,SAAAA,KAAc,WACV,GAAA;YACEa,EAAI,EAAA,+BAAA;YACJS,cAAgB,EAAA;SAElB,GAAA;YACET,EAAI,EAAA,kCAAA;YACJS,cACE,EAAA;AACJ,SAAA,CAAA,GAENrB,aAAc,CAAA;YACZY,EAAI,EAAA,kCAAA;YACJS,cAAgB,EAAA;AAClB,SAAA,CAAA;AAENQ,QAAAA,IAAAA,gBAAMhB,GAACiB,CAAAA,GAAAA,EAAAA,EAAAA,CAAAA;QACPC,cAAe,EAAA;;AAGrB;;;;"}