@strapi/admin 5.17.0-beta.0 → 5.18.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 (191) hide show
  1. package/dist/admin/admin/src/StrapiApp.js +27 -4
  2. package/dist/admin/admin/src/StrapiApp.js.map +1 -1
  3. package/dist/admin/admin/src/StrapiApp.mjs +27 -4
  4. package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/LeftMenu.js +1 -1
  6. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  7. package/dist/admin/admin/src/components/LeftMenu.mjs +2 -2
  8. package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
  9. package/dist/admin/admin/src/components/MainNav/NavLink.js +40 -4
  10. package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
  11. package/dist/admin/admin/src/components/MainNav/NavLink.mjs +21 -4
  12. package/dist/admin/admin/src/components/MainNav/NavLink.mjs.map +1 -1
  13. package/dist/admin/admin/src/components/MainNav/NavUser.js +1 -1
  14. package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
  15. package/dist/admin/admin/src/components/MainNav/NavUser.mjs +1 -1
  16. package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
  17. package/dist/admin/admin/src/components/Providers.js +8 -5
  18. package/dist/admin/admin/src/components/Providers.js.map +1 -1
  19. package/dist/admin/admin/src/components/Providers.mjs +8 -5
  20. package/dist/admin/admin/src/components/Providers.mjs.map +1 -1
  21. package/dist/admin/admin/src/components/SubNav.js +27 -7
  22. package/dist/admin/admin/src/components/SubNav.js.map +1 -1
  23. package/dist/admin/admin/src/components/SubNav.mjs +28 -8
  24. package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
  25. package/dist/admin/admin/src/components/UnstableGuidedTour/Context.js +89 -0
  26. package/dist/admin/admin/src/components/UnstableGuidedTour/Context.js.map +1 -0
  27. package/dist/admin/admin/src/components/UnstableGuidedTour/Context.mjs +66 -0
  28. package/dist/admin/admin/src/components/UnstableGuidedTour/Context.mjs.map +1 -0
  29. package/dist/admin/admin/src/components/UnstableGuidedTour/Overview.js +291 -0
  30. package/dist/admin/admin/src/components/UnstableGuidedTour/Overview.js.map +1 -0
  31. package/dist/admin/admin/src/components/UnstableGuidedTour/Overview.mjs +289 -0
  32. package/dist/admin/admin/src/components/UnstableGuidedTour/Overview.mjs.map +1 -0
  33. package/dist/admin/admin/src/components/UnstableGuidedTour/Step.js +153 -0
  34. package/dist/admin/admin/src/components/UnstableGuidedTour/Step.js.map +1 -0
  35. package/dist/admin/admin/src/components/UnstableGuidedTour/Step.mjs +132 -0
  36. package/dist/admin/admin/src/components/UnstableGuidedTour/Step.mjs.map +1 -0
  37. package/dist/admin/admin/src/components/UnstableGuidedTour/Tours.js +416 -0
  38. package/dist/admin/admin/src/components/UnstableGuidedTour/Tours.js.map +1 -0
  39. package/dist/admin/admin/src/components/UnstableGuidedTour/Tours.mjs +395 -0
  40. package/dist/admin/admin/src/components/UnstableGuidedTour/Tours.mjs.map +1 -0
  41. package/dist/admin/admin/src/components/Widgets.js +52 -0
  42. package/dist/admin/admin/src/components/Widgets.js.map +1 -0
  43. package/dist/admin/admin/src/components/Widgets.mjs +50 -0
  44. package/dist/admin/admin/src/components/Widgets.mjs.map +1 -0
  45. package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
  46. package/dist/admin/admin/src/core/apis/Widgets.mjs.map +1 -1
  47. package/dist/admin/admin/src/features/Auth.js.map +1 -1
  48. package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
  49. package/dist/admin/admin/src/features/Tracking.js +0 -33
  50. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  51. package/dist/admin/admin/src/features/Tracking.mjs +0 -33
  52. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  53. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +15 -8
  54. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  55. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +15 -8
  56. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  57. package/dist/admin/admin/src/pages/Home/HomePage.js +2 -1
  58. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  59. package/dist/admin/admin/src/pages/Home/HomePage.mjs +2 -1
  60. package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
  61. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js +93 -0
  62. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js.map +1 -1
  63. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs +95 -3
  64. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs.map +1 -1
  65. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js +8 -3
  66. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
  67. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs +10 -5
  68. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs.map +1 -1
  69. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +6 -1
  70. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  71. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs +6 -1
  72. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs.map +1 -1
  73. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +58 -53
  74. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
  75. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs +58 -53
  76. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs.map +1 -1
  77. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js +3 -3
  78. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
  79. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs +3 -3
  80. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
  81. package/dist/admin/admin/src/services/admin.js +17 -3
  82. package/dist/admin/admin/src/services/admin.js.map +1 -1
  83. package/dist/admin/admin/src/services/admin.mjs +17 -4
  84. package/dist/admin/admin/src/services/admin.mjs.map +1 -1
  85. package/dist/admin/admin/src/services/apiTokens.js +4 -2
  86. package/dist/admin/admin/src/services/apiTokens.js.map +1 -1
  87. package/dist/admin/admin/src/services/apiTokens.mjs +4 -2
  88. package/dist/admin/admin/src/services/apiTokens.mjs.map +1 -1
  89. package/dist/admin/admin/src/translations/en.json.js +34 -2
  90. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  91. package/dist/admin/admin/src/translations/en.json.mjs +34 -2
  92. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  93. package/dist/admin/admin/src/translations/es.json.js +1 -0
  94. package/dist/admin/admin/src/translations/es.json.js.map +1 -1
  95. package/dist/admin/admin/src/translations/es.json.mjs +1 -0
  96. package/dist/admin/admin/src/translations/es.json.mjs.map +1 -1
  97. package/dist/admin/admin/src/translations/fr.json.js +3 -1
  98. package/dist/admin/admin/src/translations/fr.json.js.map +1 -1
  99. package/dist/admin/admin/src/translations/fr.json.mjs +3 -1
  100. package/dist/admin/admin/src/translations/fr.json.mjs.map +1 -1
  101. package/dist/admin/admin/src/utils/users.js +8 -0
  102. package/dist/admin/admin/src/utils/users.js.map +1 -1
  103. package/dist/admin/admin/src/utils/users.mjs +8 -1
  104. package/dist/admin/admin/src/utils/users.mjs.map +1 -1
  105. package/dist/admin/admin/tests/server.js +8 -0
  106. package/dist/admin/admin/tests/server.js.map +1 -1
  107. package/dist/admin/admin/tests/server.mjs +8 -0
  108. package/dist/admin/admin/tests/server.mjs.map +1 -1
  109. package/dist/admin/admin/tests/utils.js +25 -21
  110. package/dist/admin/admin/tests/utils.js.map +1 -1
  111. package/dist/admin/admin/tests/utils.mjs +25 -21
  112. package/dist/admin/admin/tests/utils.mjs.map +1 -1
  113. package/dist/admin/index.js +2 -0
  114. package/dist/admin/index.js.map +1 -1
  115. package/dist/admin/index.mjs +1 -0
  116. package/dist/admin/index.mjs.map +1 -1
  117. package/dist/admin/src/components/UnstableGuidedTour/Context.d.ts +38 -0
  118. package/dist/admin/src/components/UnstableGuidedTour/Overview.d.ts +1 -0
  119. package/dist/admin/src/components/UnstableGuidedTour/Step.d.ts +37 -0
  120. package/dist/admin/src/components/UnstableGuidedTour/Tours.d.ts +58 -0
  121. package/dist/admin/src/components/Widgets.d.ts +2 -0
  122. package/dist/admin/src/core/apis/Widgets.d.ts +1 -1
  123. package/dist/admin/src/features/Auth.d.ts +1 -1
  124. package/dist/admin/src/features/Tracking.d.ts +9 -2
  125. package/dist/admin/src/index.d.ts +1 -0
  126. package/dist/admin/src/pages/Settings/components/Tokens/TokenBox.d.ts +1 -0
  127. package/dist/admin/src/services/admin.d.ts +8 -8
  128. package/dist/admin/src/services/apiTokens.d.ts +1 -1
  129. package/dist/admin/src/utils/users.d.ts +5 -1
  130. package/dist/ee/server/src/index.d.ts +2 -12
  131. package/dist/ee/server/src/index.d.ts.map +1 -1
  132. package/dist/ee/server/src/routes/index.d.ts +1 -6
  133. package/dist/ee/server/src/routes/index.d.ts.map +1 -1
  134. package/dist/ee/server/src/routes/license-limit.d.ts +1 -6
  135. package/dist/ee/server/src/routes/license-limit.d.ts.map +1 -1
  136. package/dist/server/ee/server/src/routes/license-limit.js +1 -12
  137. package/dist/server/ee/server/src/routes/license-limit.js.map +1 -1
  138. package/dist/server/ee/server/src/routes/license-limit.mjs +1 -12
  139. package/dist/server/ee/server/src/routes/license-limit.mjs.map +1 -1
  140. package/dist/server/server/src/bootstrap.js +4 -12
  141. package/dist/server/server/src/bootstrap.js.map +1 -1
  142. package/dist/server/server/src/bootstrap.mjs +4 -12
  143. package/dist/server/server/src/bootstrap.mjs.map +1 -1
  144. package/dist/server/server/src/controllers/admin.js +12 -1
  145. package/dist/server/server/src/controllers/admin.js.map +1 -1
  146. package/dist/server/server/src/controllers/admin.mjs +12 -1
  147. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  148. package/dist/server/server/src/routes/admin.js +10 -0
  149. package/dist/server/server/src/routes/admin.js.map +1 -1
  150. package/dist/server/server/src/routes/admin.mjs +10 -0
  151. package/dist/server/server/src/routes/admin.mjs.map +1 -1
  152. package/dist/server/server/src/services/constants.js +14 -0
  153. package/dist/server/server/src/services/constants.js.map +1 -1
  154. package/dist/server/server/src/services/constants.mjs +14 -0
  155. package/dist/server/server/src/services/constants.mjs.map +1 -1
  156. package/dist/server/server/src/services/guided-tour.js +61 -0
  157. package/dist/server/server/src/services/guided-tour.js.map +1 -0
  158. package/dist/server/server/src/services/guided-tour.mjs +59 -0
  159. package/dist/server/server/src/services/guided-tour.mjs.map +1 -0
  160. package/dist/server/server/src/services/index.js +3 -1
  161. package/dist/server/server/src/services/index.js.map +1 -1
  162. package/dist/server/server/src/services/index.mjs +3 -1
  163. package/dist/server/server/src/services/index.mjs.map +1 -1
  164. package/dist/server/server/src/services/user.js +28 -1
  165. package/dist/server/server/src/services/user.js.map +1 -1
  166. package/dist/server/server/src/services/user.mjs +28 -1
  167. package/dist/server/server/src/services/user.mjs.map +1 -1
  168. package/dist/server/server/src/strategies/api-token.js +15 -4
  169. package/dist/server/server/src/strategies/api-token.js.map +1 -1
  170. package/dist/server/server/src/strategies/api-token.mjs +15 -4
  171. package/dist/server/server/src/strategies/api-token.mjs.map +1 -1
  172. package/dist/server/src/bootstrap.d.ts.map +1 -1
  173. package/dist/server/src/controllers/admin.d.ts +6 -1
  174. package/dist/server/src/controllers/admin.d.ts.map +1 -1
  175. package/dist/server/src/controllers/index.d.ts +6 -0
  176. package/dist/server/src/controllers/index.d.ts.map +1 -1
  177. package/dist/server/src/index.d.ts +12 -0
  178. package/dist/server/src/index.d.ts.map +1 -1
  179. package/dist/server/src/routes/admin.d.ts.map +1 -1
  180. package/dist/server/src/services/constants.d.ts +11 -1
  181. package/dist/server/src/services/constants.d.ts.map +1 -1
  182. package/dist/server/src/services/guided-tour.d.ts +12 -0
  183. package/dist/server/src/services/guided-tour.d.ts.map +1 -0
  184. package/dist/server/src/services/index.d.ts +6 -0
  185. package/dist/server/src/services/index.d.ts.map +1 -1
  186. package/dist/server/src/services/user.d.ts +1 -0
  187. package/dist/server/src/services/user.d.ts.map +1 -1
  188. package/dist/server/src/strategies/api-token.d.ts.map +1 -1
  189. package/dist/shared/contracts/admin.d.ts +15 -0
  190. package/dist/shared/contracts/admin.d.ts.map +1 -1
  191. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"file":"AuthenticatedLayout.mjs","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { GuidedTourModal } from '../components/GuidedTour/Modal';\nimport { useGuidedTour } from '../components/GuidedTour/Provider';\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useOnce } from '../hooks/useOnce';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const setGuidedTourVisibility = useGuidedTour(\n 'AdminLayout',\n (state) => state.setGuidedTourVisibility\n );\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n const userRoles = useAuth('AuthenticatedApp', (state) => state.user?.roles);\n\n React.useEffect(() => {\n if (userRoles) {\n const isUserSuperAdmin = userRoles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin && appInfo?.autoReload) {\n setGuidedTourVisibility(true);\n }\n }\n }, [userRoles, appInfo?.autoReload, setGuidedTourVisibility]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n /**\n * Make sure the event is only send once after accessing the admin panel\n * and not at runtime for example when regenerating the permissions with the ctb\n * or with i18n\n */\n useOnce(() => {\n trackUsage('didAccessAuthenticatedAdministration');\n });\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex alignItems=\"flex-start\">\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n />\n <Box flex={1}>\n <UpsellBanner />\n <Outlet />\n <GuidedTourModal />\n </Box>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","setGuidedTourVisibility","useGuidedTour","state","formatMessage","useIntl","userInfo","useAuth","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","userRoles","roles","isUserSuperAdmin","find","code","autoReload","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","useMenu","checkLatestStrapiVersion","useOnce","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","alignItems","LeftMenu","flex","UpsellBanner","Outlet","GuidedTourModal","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAM,EAAEA,OAAAA,EAASC,aAAa,EAAE,GAAGC,WAAAA;AAEnC,MAAMC,WAAc,GAAA,IAAA;AAClB,IAAA,MAAMC,0BAA0BC,aAC9B,CAAA,aAAA,EACA,CAACC,KAAAA,GAAUA,MAAMF,uBAAuB,CAAA;IAE1C,MAAM,EAAEG,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,WAAWC,OAAQ,CAAA,kBAAA,EAAoB,CAACJ,KAAAA,GAAUA,MAAMK,IAAI,CAAA;AAClE,IAAA,MAAM,CAACC,MAAAA,EAAQC,SAAU,CAAA,GAAGC,MAAMC,QAAQ,EAAA;AAC1C,IAAA,MAAM,EAAEC,uBAAuB,EAAE,GAAGC,gBAAiB,CAAA,kBAAA,CAAA;AAErD,IAAA,MAAM,EAAEC,IAAMC,EAAAA,OAAO,EAAEC,SAAWC,EAAAA,gBAAgB,EAAE,GAAGC,mBAAAA,EAAAA;AACvD,IAAA,MAAM,CAACC,OAASC,EAAAA,UAAAA,CAAW,GAAGV,KAAAA,CAAMC,QAAQ,CAASd,aAAAA,CAAAA;AAErDa,IAAAA,KAAAA,CAAMW,SAAS,CAAC,IAAA;AACd,QAAA,IAAIT,uBAAyB,EAAA;YAC3BU,KAAM,CAAA,4DAAA,CAAA,CACHC,IAAI,CAAC,OAAOC,GAAAA,GAAAA;gBACX,IAAI,CAACA,GAAIC,CAAAA,EAAE,EAAE;AACX,oBAAA;AACF;gBAEA,MAAMC,QAAAA,GAAY,MAAMF,GAAAA,CAAIG,IAAI,EAAA;gBAEhC,IAAI,CAACD,QAASE,CAAAA,QAAQ,EAAE;AACtB,oBAAA,MAAM,IAAIC,KAAAA,EAAAA;AACZ;AAEAT,gBAAAA,UAAAA,CAAWM,SAASE,QAAQ,CAAA;AAC9B,aAAA,CAAA,CACCE,KAAK,CAAC,IAAA;AACL;;eAGF,CAAA;AACJ;KACC,EAAA;AAAClB,QAAAA;AAAwB,KAAA,CAAA;AAE5B,IAAA,MAAMmB,YAAYzB,OAAQ,CAAA,kBAAA,EAAoB,CAACJ,KAAUA,GAAAA,KAAAA,CAAMK,IAAI,EAAEyB,KAAAA,CAAAA;AAErEtB,IAAAA,KAAAA,CAAMW,SAAS,CAAC,IAAA;AACd,QAAA,IAAIU,SAAW,EAAA;YACb,MAAME,gBAAAA,GAAmBF,UAAUG,IAAI,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA,IAAS,KAAA,oBAAA,CAAA;YAE/D,IAAIF,gBAAAA,IAAoBlB,SAASqB,UAAY,EAAA;gBAC3CpC,uBAAwB,CAAA,IAAA,CAAA;AAC1B;AACF;KACC,EAAA;AAAC+B,QAAAA,SAAAA;QAAWhB,OAASqB,EAAAA,UAAAA;AAAYpC,QAAAA;AAAwB,KAAA,CAAA;AAE5DU,IAAAA,KAAAA,CAAMW,SAAS,CAAC,IAAA;QACdgB,kBAAmBhC,CAAAA,QAAAA,CAAAA,CAAUkB,IAAI,CAAC,CAACe,EAAAA,GAAAA;AACjC,YAAA,IAAIA,EAAI,EAAA;gBACN7B,SAAU6B,CAAAA,EAAAA,CAAAA;AACZ;AACF,SAAA,CAAA;KACC,EAAA;AAACjC,QAAAA;AAAS,KAAA,CAAA;IAEb,MAAM,EAAEkC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;IAEvB,MAAM,EACJxB,SAAWyB,EAAAA,aAAa,EACxBC,mBAAmB,EACnBC,mBAAmB,EACpB,GAAGC,OAAQC,CAAAA,wBAAAA,CAAyBhD,aAAesB,EAAAA,OAAAA,CAAAA,CAAAA;AAEpD;;;;AAIC,MACD2B,OAAQ,CAAA,IAAA;QACNP,UAAW,CAAA,sCAAA,CAAA;AACb,KAAA,CAAA;;;AAIA,IAAA,IAAIE,iBAAiBxB,gBAAkB,EAAA;QACrC,qBAAO8B,GAAA,CAACC,KAAKC,OAAO,EAAA,EAAA,CAAA;AACtB;AAEA,IAAA,qBACEC,IAACC,CAAAA,eAAAA,EAAAA;AACE,QAAA,GAAGpC,OAAO;QACXP,MAAQA,EAAAA,MAAAA;QACR4C,sBAAwBjC,EAAAA,OAAAA;AACxBkC,QAAAA,kBAAAA,EAAoBR,yBAAyBhD,aAAesB,EAAAA,OAAAA,CAAAA;;0BAE5D4B,GAACO,CAAAA,SAAAA,EAAAA,EAAAA,CAAAA;0BACDP,GAACQ,CAAAA,kBAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAR,GAACS,CAAAA,WAAAA,EAAAA;oBAAYC,OAASC,EAAAA,YAAAA;AACpB,oBAAA,QAAA,gBAAAR,IAACS,CAAAA,GAAAA,EAAAA;wBAAIC,UAAW,EAAA,YAAA;;0CACdb,GAACc,CAAAA,aAAAA,EAAAA;0CACE1D,aAAc,CAAA;oCAAEmC,EAAI,EAAA,eAAA;oCAAiBwB,cAAgB,EAAA;AAAkB,iCAAA;;0CAE1EZ,IAACa,CAAAA,IAAAA,EAAAA;gCAAKC,UAAW,EAAA,YAAA;;kDACfjB,GAACkB,CAAAA,QAAAA,EAAAA;wCACCvB,mBAAqBA,EAAAA,mBAAAA;wCACrBC,mBAAqBA,EAAAA;;kDAEvBO,IAACS,CAAAA,GAAAA,EAAAA;wCAAIO,IAAM,EAAA,CAAA;;0DACTnB,GAACoB,CAAAA,YAAAA,EAAAA,EAAAA,CAAAA;0DACDpB,GAACqB,CAAAA,MAAAA,EAAAA,EAAAA,CAAAA;0DACDrB,GAACsB,CAAAA,eAAAA,EAAAA,EAAAA;;;;;;;;;;;AAQjB;AAEA,MAAMC,kBAAqB,GAAA,IAAA;AACzB,IAAA,qBACEvB,GAACwB,CAAAA,YAAAA,EAAAA;AACC,QAAA,QAAA,gBAAAxB,GAAChD,CAAAA,WAAAA,EAAAA,EAAAA;;AAGP;AAEA,MAAM8C,wBAA2B,GAAA,CAC/B2B,qBACAC,EAAAA,sBAAAA,GAAiC,EAAE,GAAA;AAEnC,IAAA,IAAI,CAACC,KAAAA,CAAMF,qBAA0B,CAAA,IAAA,CAACE,MAAMD,sBAAyB,CAAA,EAAA;QACnE,OAAO,KAAA;AACT;AAEA,IAAA,OAAOE,GAAGH,qBAAuBC,EAAAA,sBAAAA,CAAAA;AACnC,CAAA;;;;"}
1
+ {"version":3,"file":"AuthenticatedLayout.mjs","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { GuidedTourModal } from '../components/GuidedTour/Modal';\nimport { useGuidedTour } from '../components/GuidedTour/Provider';\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const setGuidedTourVisibility = useGuidedTour(\n 'AdminLayout',\n (state) => state.setGuidedTourVisibility\n );\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n const userRoles = useAuth('AuthenticatedApp', (state) => state.user?.roles);\n\n React.useEffect(() => {\n if (userRoles) {\n const isUserSuperAdmin = userRoles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin && appInfo?.autoReload) {\n setGuidedTourVisibility(true);\n }\n }\n }, [userRoles, appInfo?.autoReload, setGuidedTourVisibility]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n const getAllWidgets = useStrapiApp('TrackingProvider', (state) => state.widgets.getAll);\n const projectId = appInfo?.projectId;\n React.useEffect(() => {\n if (projectId) {\n trackUsage('didAccessAuthenticatedAdministration', {\n registeredWidgets: getAllWidgets().map((widget) => widget.uid),\n projectId,\n });\n }\n }, [projectId, getAllWidgets, trackUsage]);\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex alignItems=\"flex-start\">\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n />\n <Box flex={1}>\n <UpsellBanner />\n <Outlet />\n <GuidedTourModal />\n </Box>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","setGuidedTourVisibility","useGuidedTour","state","formatMessage","useIntl","userInfo","useAuth","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","userRoles","roles","isUserSuperAdmin","find","code","autoReload","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","useMenu","checkLatestStrapiVersion","getAllWidgets","useStrapiApp","widgets","getAll","projectId","registeredWidgets","map","widget","uid","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","alignItems","LeftMenu","flex","UpsellBanner","Outlet","GuidedTourModal","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}
@@ -8,6 +8,7 @@ var reactIntl = require('react-intl');
8
8
  var reactRouterDom = require('react-router-dom');
9
9
  var Layout = require('../../components/Layouts/Layout.js');
10
10
  var PageHelpers = require('../../components/PageHelpers.js');
11
+ var Overview = require('../../components/UnstableGuidedTour/Overview.js');
11
12
  var WidgetHelpers = require('../../components/WidgetHelpers.js');
12
13
  require('../../services/admin.js');
13
14
  var useEnterprise = require('../../hooks/useEnterprise.js');
@@ -174,7 +175,7 @@ const WidgetRoot = ({ title, icon = icons.PuzzlePiece, permissions = [], childre
174
175
  gap: 8,
175
176
  paddingBottom: 10,
176
177
  children: [
177
- /*#__PURE__*/ jsxRuntime.jsx(GuidedTour.GuidedTour, {}),
178
+ window.strapi.future.isEnabled('unstableGuidedTour') ? /*#__PURE__*/ jsxRuntime.jsx(Overview.UnstableGuidedTourOverview, {}) : /*#__PURE__*/ jsxRuntime.jsx(GuidedTour.GuidedTour, {}),
178
179
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Root, {
179
180
  gap: 5,
180
181
  children: getAllWidgets().map((widget)=>{
@@ -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 { 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 { FreeTrialEndedModal } from './components/FreeTrialEndedModal';\nimport { FreeTrialWelcomeModal } from './components/FreeTrialWelcomeModal';\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 <FreeTrialWelcomeModal />\n <FreeTrialEndedModal />\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","FreeTrialWelcomeModal","FreeTrialEndedModal","Content","paddingBottom","GuidedTour","Grid","Root","map","widget","Item","col","s","uid","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 { UnstableGuidedTourOverview } from '../../components/UnstableGuidedTour/Overview';\nimport { Widget } from '../../components/WidgetHelpers';\nimport { useEnterprise } from '../../ee';\nimport { useAuth } from '../../features/Auth';\nimport { useStrapiApp } from '../../features/StrapiApp';\n\nimport { FreeTrialEndedModal } from './components/FreeTrialEndedModal';\nimport { FreeTrialWelcomeModal } from './components/FreeTrialWelcomeModal';\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 <FreeTrialWelcomeModal />\n <FreeTrialEndedModal />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={8} paddingBottom={10}>\n {window.strapi.future.isEnabled('unstableGuidedTour') ? (\n <UnstableGuidedTourOverview />\n ) : (\n <GuidedTour />\n )}\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","FreeTrialWelcomeModal","FreeTrialEndedModal","Content","paddingBottom","window","strapi","future","isEnabled","UnstableGuidedTourOverview","GuidedTour","Grid","Root","map","widget","Item","col","s","uid","HomePage","useEnterprise","HomePageEE"],"mappings":"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"}
@@ -6,6 +6,7 @@ import { useIntl } from 'react-intl';
6
6
  import { Link } from 'react-router-dom';
7
7
  import { Layouts } from '../../components/Layouts/Layout.mjs';
8
8
  import { Page } from '../../components/PageHelpers.mjs';
9
+ import { UnstableGuidedTourOverview } from '../../components/UnstableGuidedTour/Overview.mjs';
9
10
  import { Widget } from '../../components/WidgetHelpers.mjs';
10
11
  import '../../services/admin.mjs';
11
12
  import { useEnterprise } from '../../hooks/useEnterprise.mjs';
@@ -153,7 +154,7 @@ const WidgetRoot = ({ title, icon = PuzzlePiece, permissions = [], children, lin
153
154
  gap: 8,
154
155
  paddingBottom: 10,
155
156
  children: [
156
- /*#__PURE__*/ jsx(GuidedTour, {}),
157
+ window.strapi.future.isEnabled('unstableGuidedTour') ? /*#__PURE__*/ jsx(UnstableGuidedTourOverview, {}) : /*#__PURE__*/ jsx(GuidedTour, {}),
157
158
  /*#__PURE__*/ jsx(Grid.Root, {
158
159
  gap: 5,
159
160
  children: getAllWidgets().map((widget)=>{
@@ -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 { 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 { FreeTrialEndedModal } from './components/FreeTrialEndedModal';\nimport { FreeTrialWelcomeModal } from './components/FreeTrialWelcomeModal';\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 <FreeTrialWelcomeModal />\n <FreeTrialEndedModal />\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","FreeTrialWelcomeModal","FreeTrialEndedModal","Content","paddingBottom","GuidedTour","Grid","Root","map","widget","Item","col","s","uid","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 { UnstableGuidedTourOverview } from '../../components/UnstableGuidedTour/Overview';\nimport { Widget } from '../../components/WidgetHelpers';\nimport { useEnterprise } from '../../ee';\nimport { useAuth } from '../../features/Auth';\nimport { useStrapiApp } from '../../features/StrapiApp';\n\nimport { FreeTrialEndedModal } from './components/FreeTrialEndedModal';\nimport { FreeTrialWelcomeModal } from './components/FreeTrialWelcomeModal';\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 <FreeTrialWelcomeModal />\n <FreeTrialEndedModal />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={8} paddingBottom={10}>\n {window.strapi.future.isEnabled('unstableGuidedTour') ? (\n <UnstableGuidedTourOverview />\n ) : (\n <GuidedTour />\n )}\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","FreeTrialWelcomeModal","FreeTrialEndedModal","Content","paddingBottom","window","strapi","future","isEnabled","UnstableGuidedTourOverview","GuidedTour","Grid","Root","map","widget","Item","col","s","uid","HomePage","useEnterprise","HomePageEE"],"mappings":"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"}
@@ -1,14 +1,106 @@
1
1
  'use strict';
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
+ require('react');
4
5
  var designSystem = require('@strapi/design-system');
5
6
  var icons = require('@strapi/icons');
6
7
  var reactIntl = require('react-intl');
8
+ var styled = require('styled-components');
7
9
  var ContentBox = require('../../../../components/ContentBox.js');
10
+ var Context = require('../../../../components/UnstableGuidedTour/Context.js');
11
+ var Tours = require('../../../../components/UnstableGuidedTour/Tours.js');
8
12
  var Notifications = require('../../../../features/Notifications.js');
9
13
  var Tracking = require('../../../../features/Tracking.js');
10
14
  var useClipboard = require('../../../../hooks/useClipboard.js');
11
15
 
16
+ const TypographyWordBreak = styled.styled(designSystem.Typography)`
17
+ word-break: break-all;
18
+ `;
19
+ const UnstableApiTokenBox = ({ token, tokenType })=>{
20
+ const { formatMessage } = reactIntl.useIntl();
21
+ const { toggleNotification } = Notifications.useNotification();
22
+ const { trackUsage } = Tracking.useTracking();
23
+ const dispatch = Context.unstableUseGuidedTour('TokenBox', (s)=>s.dispatch);
24
+ const { copy } = useClipboard.useClipboard();
25
+ const handleClick = (token)=>async ()=>{
26
+ if (token) {
27
+ const didCopy = await copy(token);
28
+ if (didCopy) {
29
+ trackUsage('didCopyTokenKey', {
30
+ tokenType
31
+ });
32
+ dispatch({
33
+ type: 'set_completed_actions',
34
+ payload: [
35
+ 'didCopyApiToken'
36
+ ]
37
+ });
38
+ toggleNotification({
39
+ type: 'success',
40
+ message: formatMessage({
41
+ id: 'Settings.tokens.notification.copied'
42
+ })
43
+ });
44
+ }
45
+ }
46
+ };
47
+ return /*#__PURE__*/ jsxRuntime.jsx(jsxRuntime.Fragment, {
48
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
49
+ shadow: "tableShadow",
50
+ direction: "column",
51
+ alignItems: "start",
52
+ hasRadius: true,
53
+ padding: 6,
54
+ background: "neutral0",
55
+ children: [
56
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
57
+ direction: "column",
58
+ alignItems: "start",
59
+ gap: 1,
60
+ paddingBottom: 4,
61
+ children: [
62
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
63
+ fontWeight: "bold",
64
+ children: formatMessage({
65
+ id: 'Settings.tokens.copy.title',
66
+ defaultMessage: 'Token'
67
+ })
68
+ }),
69
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
70
+ children: formatMessage({
71
+ id: 'Settings.tokens.copy.lastWarning',
72
+ defaultMessage: 'Make sure to copy this token, you won’t be able to see it again!'
73
+ })
74
+ })
75
+ ]
76
+ }),
77
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
78
+ background: "neutral100",
79
+ hasRadius: true,
80
+ padding: 2,
81
+ borderColor: "neutral150",
82
+ children: /*#__PURE__*/ jsxRuntime.jsx(TypographyWordBreak, {
83
+ fontWeight: "semiBold",
84
+ variant: "pi",
85
+ children: token
86
+ })
87
+ }),
88
+ /*#__PURE__*/ jsxRuntime.jsx(Tours.tours.apiTokens.CopyAPIToken, {
89
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
90
+ startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Duplicate, {}),
91
+ variant: "secondary",
92
+ onClick: handleClick(token),
93
+ marginTop: 6,
94
+ children: formatMessage({
95
+ id: 'Settings.tokens.copy.copy',
96
+ defaultMessage: 'Copy'
97
+ })
98
+ })
99
+ })
100
+ ]
101
+ })
102
+ });
103
+ };
12
104
  const TokenBox = ({ token, tokenType })=>{
13
105
  const { formatMessage } = reactIntl.useIntl();
14
106
  const { toggleNotification } = Notifications.useNotification();
@@ -70,4 +162,5 @@ const TokenBox = ({ token, tokenType })=>{
70
162
  };
71
163
 
72
164
  exports.TokenBox = TokenBox;
165
+ exports.UnstableApiTokenBox = UnstableApiTokenBox;
73
166
  //# sourceMappingURL=TokenBox.js.map
@@ -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 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;;;;"}
1
+ {"version":3,"file":"TokenBox.js","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/TokenBox.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { IconButton, Flex, Box, Typography, Button } from '@strapi/design-system';\nimport { Duplicate, Key } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ContentBox } from '../../../../components/ContentBox';\nimport { unstableUseGuidedTour } from '../../../../components/UnstableGuidedTour/Context';\nimport { tours as unstable_tours } from '../../../../components/UnstableGuidedTour/Tours';\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\nconst TypographyWordBreak = styled(Typography)`\n word-break: break-all;\n`;\n\nexport const UnstableApiTokenBox = ({ token, tokenType }: TokenBoxProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { trackUsage } = useTracking();\n const dispatch = unstableUseGuidedTour('TokenBox', (s) => s.dispatch);\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 dispatch({\n type: 'set_completed_actions',\n payload: ['didCopyApiToken'],\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.tokens.notification.copied' }),\n });\n }\n }\n };\n\n return (\n <>\n <Flex\n shadow=\"tableShadow\"\n direction=\"column\"\n alignItems=\"start\"\n hasRadius\n padding={6}\n background=\"neutral0\"\n >\n <Flex direction=\"column\" alignItems=\"start\" gap={1} paddingBottom={4}>\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: 'Settings.tokens.copy.title',\n defaultMessage: 'Token',\n })}\n </Typography>\n <Typography>\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 </Typography>\n </Flex>\n <Box background=\"neutral100\" hasRadius padding={2} borderColor=\"neutral150\">\n <TypographyWordBreak fontWeight=\"semiBold\" variant=\"pi\">\n {token}\n </TypographyWordBreak>\n </Box>\n <unstable_tours.apiTokens.CopyAPIToken>\n <Button\n startIcon={<Duplicate />}\n variant=\"secondary\"\n onClick={handleClick(token)}\n marginTop={6}\n >\n {formatMessage({ id: 'Settings.tokens.copy.copy', defaultMessage: 'Copy' })}\n </Button>\n </unstable_tours.apiTokens.CopyAPIToken>\n </Flex>\n </>\n );\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":["TypographyWordBreak","styled","Typography","UnstableApiTokenBox","token","tokenType","formatMessage","useIntl","toggleNotification","useNotification","trackUsage","useTracking","dispatch","unstableUseGuidedTour","s","copy","useClipboard","handleClick","didCopy","type","payload","message","id","_jsx","_Fragment","_jsxs","Flex","shadow","direction","alignItems","hasRadius","padding","background","gap","paddingBottom","fontWeight","defaultMessage","Box","borderColor","variant","unstable_tours","apiTokens","CopyAPIToken","Button","startIcon","Duplicate","onClick","marginTop","TokenBox","ContentBox","endAction","span","style","alignSelf","IconButton","label","height","title","subtitle","icon","Key","iconBackground"],"mappings":"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"}
@@ -1,12 +1,104 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { IconButton } from '@strapi/design-system';
1
+ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
+ import 'react';
3
+ import { Typography, Flex, Box, Button, IconButton } from '@strapi/design-system';
3
4
  import { Duplicate, Key } from '@strapi/icons';
4
5
  import { useIntl } from 'react-intl';
6
+ import { styled } from 'styled-components';
5
7
  import { ContentBox } from '../../../../components/ContentBox.mjs';
8
+ import { unstableUseGuidedTour } from '../../../../components/UnstableGuidedTour/Context.mjs';
9
+ import { tours } from '../../../../components/UnstableGuidedTour/Tours.mjs';
6
10
  import { useNotification } from '../../../../features/Notifications.mjs';
7
11
  import { useTracking } from '../../../../features/Tracking.mjs';
8
12
  import { useClipboard } from '../../../../hooks/useClipboard.mjs';
9
13
 
14
+ const TypographyWordBreak = styled(Typography)`
15
+ word-break: break-all;
16
+ `;
17
+ const UnstableApiTokenBox = ({ token, tokenType })=>{
18
+ const { formatMessage } = useIntl();
19
+ const { toggleNotification } = useNotification();
20
+ const { trackUsage } = useTracking();
21
+ const dispatch = unstableUseGuidedTour('TokenBox', (s)=>s.dispatch);
22
+ const { copy } = useClipboard();
23
+ const handleClick = (token)=>async ()=>{
24
+ if (token) {
25
+ const didCopy = await copy(token);
26
+ if (didCopy) {
27
+ trackUsage('didCopyTokenKey', {
28
+ tokenType
29
+ });
30
+ dispatch({
31
+ type: 'set_completed_actions',
32
+ payload: [
33
+ 'didCopyApiToken'
34
+ ]
35
+ });
36
+ toggleNotification({
37
+ type: 'success',
38
+ message: formatMessage({
39
+ id: 'Settings.tokens.notification.copied'
40
+ })
41
+ });
42
+ }
43
+ }
44
+ };
45
+ return /*#__PURE__*/ jsx(Fragment, {
46
+ children: /*#__PURE__*/ jsxs(Flex, {
47
+ shadow: "tableShadow",
48
+ direction: "column",
49
+ alignItems: "start",
50
+ hasRadius: true,
51
+ padding: 6,
52
+ background: "neutral0",
53
+ children: [
54
+ /*#__PURE__*/ jsxs(Flex, {
55
+ direction: "column",
56
+ alignItems: "start",
57
+ gap: 1,
58
+ paddingBottom: 4,
59
+ children: [
60
+ /*#__PURE__*/ jsx(Typography, {
61
+ fontWeight: "bold",
62
+ children: formatMessage({
63
+ id: 'Settings.tokens.copy.title',
64
+ defaultMessage: 'Token'
65
+ })
66
+ }),
67
+ /*#__PURE__*/ jsx(Typography, {
68
+ children: formatMessage({
69
+ id: 'Settings.tokens.copy.lastWarning',
70
+ defaultMessage: 'Make sure to copy this token, you won’t be able to see it again!'
71
+ })
72
+ })
73
+ ]
74
+ }),
75
+ /*#__PURE__*/ jsx(Box, {
76
+ background: "neutral100",
77
+ hasRadius: true,
78
+ padding: 2,
79
+ borderColor: "neutral150",
80
+ children: /*#__PURE__*/ jsx(TypographyWordBreak, {
81
+ fontWeight: "semiBold",
82
+ variant: "pi",
83
+ children: token
84
+ })
85
+ }),
86
+ /*#__PURE__*/ jsx(tours.apiTokens.CopyAPIToken, {
87
+ children: /*#__PURE__*/ jsx(Button, {
88
+ startIcon: /*#__PURE__*/ jsx(Duplicate, {}),
89
+ variant: "secondary",
90
+ onClick: handleClick(token),
91
+ marginTop: 6,
92
+ children: formatMessage({
93
+ id: 'Settings.tokens.copy.copy',
94
+ defaultMessage: 'Copy'
95
+ })
96
+ })
97
+ })
98
+ ]
99
+ })
100
+ });
101
+ };
10
102
  const TokenBox = ({ token, tokenType })=>{
11
103
  const { formatMessage } = useIntl();
12
104
  const { toggleNotification } = useNotification();
@@ -67,5 +159,5 @@ const TokenBox = ({ token, tokenType })=>{
67
159
  });
68
160
  };
69
161
 
70
- export { TokenBox };
162
+ export { TokenBox, UnstableApiTokenBox };
71
163
  //# sourceMappingURL=TokenBox.mjs.map
@@ -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 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;;;;"}
1
+ {"version":3,"file":"TokenBox.mjs","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/TokenBox.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { IconButton, Flex, Box, Typography, Button } from '@strapi/design-system';\nimport { Duplicate, Key } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ContentBox } from '../../../../components/ContentBox';\nimport { unstableUseGuidedTour } from '../../../../components/UnstableGuidedTour/Context';\nimport { tours as unstable_tours } from '../../../../components/UnstableGuidedTour/Tours';\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\nconst TypographyWordBreak = styled(Typography)`\n word-break: break-all;\n`;\n\nexport const UnstableApiTokenBox = ({ token, tokenType }: TokenBoxProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { trackUsage } = useTracking();\n const dispatch = unstableUseGuidedTour('TokenBox', (s) => s.dispatch);\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 dispatch({\n type: 'set_completed_actions',\n payload: ['didCopyApiToken'],\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.tokens.notification.copied' }),\n });\n }\n }\n };\n\n return (\n <>\n <Flex\n shadow=\"tableShadow\"\n direction=\"column\"\n alignItems=\"start\"\n hasRadius\n padding={6}\n background=\"neutral0\"\n >\n <Flex direction=\"column\" alignItems=\"start\" gap={1} paddingBottom={4}>\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: 'Settings.tokens.copy.title',\n defaultMessage: 'Token',\n })}\n </Typography>\n <Typography>\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 </Typography>\n </Flex>\n <Box background=\"neutral100\" hasRadius padding={2} borderColor=\"neutral150\">\n <TypographyWordBreak fontWeight=\"semiBold\" variant=\"pi\">\n {token}\n </TypographyWordBreak>\n </Box>\n <unstable_tours.apiTokens.CopyAPIToken>\n <Button\n startIcon={<Duplicate />}\n variant=\"secondary\"\n onClick={handleClick(token)}\n marginTop={6}\n >\n {formatMessage({ id: 'Settings.tokens.copy.copy', defaultMessage: 'Copy' })}\n </Button>\n </unstable_tours.apiTokens.CopyAPIToken>\n </Flex>\n </>\n );\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":["TypographyWordBreak","styled","Typography","UnstableApiTokenBox","token","tokenType","formatMessage","useIntl","toggleNotification","useNotification","trackUsage","useTracking","dispatch","unstableUseGuidedTour","s","copy","useClipboard","handleClick","didCopy","type","payload","message","id","_jsx","_Fragment","_jsxs","Flex","shadow","direction","alignItems","hasRadius","padding","background","gap","paddingBottom","fontWeight","defaultMessage","Box","borderColor","variant","unstable_tours","apiTokens","CopyAPIToken","Button","startIcon","Duplicate","onClick","marginTop","TokenBox","ContentBox","endAction","span","style","alignSelf","IconButton","label","height","title","subtitle","icon","Key","iconBackground"],"mappings":"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"}
@@ -374,9 +374,14 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
374
374
  alignItems: "stretch",
375
375
  gap: 6,
376
376
  children: [
377
- apiToken?.accessKey && showToken && /*#__PURE__*/ jsxRuntime.jsx(TokenBox.TokenBox, {
378
- token: apiToken.accessKey,
379
- tokenType: constants.API_TOKEN_TYPE
377
+ apiToken?.accessKey && showToken && /*#__PURE__*/ jsxRuntime.jsx(jsxRuntime.Fragment, {
378
+ children: window.strapi.future.isEnabled('unstableGuidedTour') ? /*#__PURE__*/ jsxRuntime.jsx(TokenBox.UnstableApiTokenBox, {
379
+ token: apiToken.accessKey,
380
+ tokenType: constants.API_TOKEN_TYPE
381
+ }) : /*#__PURE__*/ jsxRuntime.jsx(TokenBox.TokenBox, {
382
+ token: apiToken.accessKey,
383
+ tokenType: constants.API_TOKEN_TYPE
384
+ })
380
385
  }),
381
386
  /*#__PURE__*/ jsxRuntime.jsx(FormApiTokenContainer.FormApiTokenContainer, {
382
387
  errors: errors,