@strapi/admin 5.17.0 → 5.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) 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/GuidedTour/Provider.js +2 -1
  6. package/dist/admin/admin/src/components/GuidedTour/Provider.js.map +1 -1
  7. package/dist/admin/admin/src/components/GuidedTour/Provider.mjs +2 -1
  8. package/dist/admin/admin/src/components/GuidedTour/Provider.mjs.map +1 -1
  9. package/dist/admin/admin/src/components/LeftMenu.js +1 -1
  10. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  11. package/dist/admin/admin/src/components/LeftMenu.mjs +2 -2
  12. package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
  13. package/dist/admin/admin/src/components/MainNav/NavLink.js +40 -4
  14. package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
  15. package/dist/admin/admin/src/components/MainNav/NavLink.mjs +21 -4
  16. package/dist/admin/admin/src/components/MainNav/NavLink.mjs.map +1 -1
  17. package/dist/admin/admin/src/components/MainNav/NavUser.js +1 -1
  18. package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
  19. package/dist/admin/admin/src/components/MainNav/NavUser.mjs +1 -1
  20. package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
  21. package/dist/admin/admin/src/components/Providers.js +0 -2
  22. package/dist/admin/admin/src/components/Providers.js.map +1 -1
  23. package/dist/admin/admin/src/components/Providers.mjs +0 -2
  24. package/dist/admin/admin/src/components/Providers.mjs.map +1 -1
  25. package/dist/admin/admin/src/components/SubNav.js +27 -7
  26. package/dist/admin/admin/src/components/SubNav.js.map +1 -1
  27. package/dist/admin/admin/src/components/SubNav.mjs +28 -8
  28. package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
  29. package/dist/admin/admin/src/components/UnstableGuidedTour/Context.js +31 -9
  30. package/dist/admin/admin/src/components/UnstableGuidedTour/Context.js.map +1 -1
  31. package/dist/admin/admin/src/components/UnstableGuidedTour/Context.mjs +31 -9
  32. package/dist/admin/admin/src/components/UnstableGuidedTour/Context.mjs.map +1 -1
  33. package/dist/admin/admin/src/components/UnstableGuidedTour/Overview.js +306 -0
  34. package/dist/admin/admin/src/components/UnstableGuidedTour/Overview.js.map +1 -0
  35. package/dist/admin/admin/src/components/UnstableGuidedTour/Overview.mjs +304 -0
  36. package/dist/admin/admin/src/components/UnstableGuidedTour/Overview.mjs.map +1 -0
  37. package/dist/admin/admin/src/components/UnstableGuidedTour/Step.js +73 -27
  38. package/dist/admin/admin/src/components/UnstableGuidedTour/Step.js.map +1 -1
  39. package/dist/admin/admin/src/components/UnstableGuidedTour/Step.mjs +75 -30
  40. package/dist/admin/admin/src/components/UnstableGuidedTour/Step.mjs.map +1 -1
  41. package/dist/admin/admin/src/components/UnstableGuidedTour/Tours.js +316 -28
  42. package/dist/admin/admin/src/components/UnstableGuidedTour/Tours.js.map +1 -1
  43. package/dist/admin/admin/src/components/UnstableGuidedTour/Tours.mjs +319 -30
  44. package/dist/admin/admin/src/components/UnstableGuidedTour/Tours.mjs.map +1 -1
  45. package/dist/admin/admin/src/components/Widgets.js +52 -0
  46. package/dist/admin/admin/src/components/Widgets.js.map +1 -0
  47. package/dist/admin/admin/src/components/Widgets.mjs +50 -0
  48. package/dist/admin/admin/src/components/Widgets.mjs.map +1 -0
  49. package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
  50. package/dist/admin/admin/src/core/apis/Widgets.mjs.map +1 -1
  51. package/dist/admin/admin/src/features/Auth.js.map +1 -1
  52. package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
  53. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  54. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  55. package/dist/admin/admin/src/pages/Home/HomePage.js +3 -1
  56. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  57. package/dist/admin/admin/src/pages/Home/HomePage.mjs +3 -1
  58. package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
  59. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js +93 -0
  60. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js.map +1 -1
  61. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs +95 -3
  62. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs.map +1 -1
  63. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js +8 -3
  64. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
  65. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs +10 -5
  66. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs.map +1 -1
  67. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +6 -1
  68. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  69. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs +6 -1
  70. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs.map +1 -1
  71. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +58 -53
  72. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
  73. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs +58 -53
  74. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs.map +1 -1
  75. package/dist/admin/admin/src/translations/en.json.js +38 -2
  76. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  77. package/dist/admin/admin/src/translations/en.json.mjs +38 -2
  78. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  79. package/dist/admin/admin/src/translations/es.json.js +3 -1
  80. package/dist/admin/admin/src/translations/es.json.js.map +1 -1
  81. package/dist/admin/admin/src/translations/es.json.mjs +3 -1
  82. package/dist/admin/admin/src/translations/es.json.mjs.map +1 -1
  83. package/dist/admin/admin/src/translations/fr.json.js +3 -1
  84. package/dist/admin/admin/src/translations/fr.json.js.map +1 -1
  85. package/dist/admin/admin/src/translations/fr.json.mjs +3 -1
  86. package/dist/admin/admin/src/translations/fr.json.mjs.map +1 -1
  87. package/dist/admin/admin/src/utils/users.js +8 -0
  88. package/dist/admin/admin/src/utils/users.js.map +1 -1
  89. package/dist/admin/admin/src/utils/users.mjs +8 -1
  90. package/dist/admin/admin/src/utils/users.mjs.map +1 -1
  91. package/dist/admin/admin/tests/server.js +8 -0
  92. package/dist/admin/admin/tests/server.js.map +1 -1
  93. package/dist/admin/admin/tests/server.mjs +8 -0
  94. package/dist/admin/admin/tests/server.mjs.map +1 -1
  95. package/dist/admin/admin/tests/utils.js +25 -21
  96. package/dist/admin/admin/tests/utils.js.map +1 -1
  97. package/dist/admin/admin/tests/utils.mjs +25 -21
  98. package/dist/admin/admin/tests/utils.mjs.map +1 -1
  99. package/dist/admin/src/components/UnstableGuidedTour/Context.d.ts +12 -3
  100. package/dist/admin/src/components/UnstableGuidedTour/Overview.d.ts +1 -0
  101. package/dist/admin/src/components/UnstableGuidedTour/Step.d.ts +11 -3
  102. package/dist/admin/src/components/UnstableGuidedTour/Tours.d.ts +40 -9
  103. package/dist/admin/src/components/Widgets.d.ts +2 -0
  104. package/dist/admin/src/core/apis/Widgets.d.ts +1 -1
  105. package/dist/admin/src/features/Auth.d.ts +1 -1
  106. package/dist/admin/src/pages/Settings/components/Tokens/TokenBox.d.ts +1 -0
  107. package/dist/admin/src/utils/users.d.ts +5 -1
  108. package/dist/server/server/src/services/guided-tour.js +20 -2
  109. package/dist/server/server/src/services/guided-tour.js.map +1 -1
  110. package/dist/server/server/src/services/guided-tour.mjs +20 -2
  111. package/dist/server/server/src/services/guided-tour.mjs.map +1 -1
  112. package/dist/server/server/src/strategies/api-token.js +15 -4
  113. package/dist/server/server/src/strategies/api-token.js.map +1 -1
  114. package/dist/server/server/src/strategies/api-token.mjs +15 -4
  115. package/dist/server/server/src/strategies/api-token.mjs.map +1 -1
  116. package/dist/server/src/services/guided-tour.d.ts.map +1 -1
  117. package/dist/server/src/strategies/api-token.d.ts.map +1 -1
  118. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"file":"Tours.js","sources":["../../../../../../admin/src/components/UnstableGuidedTour/Tours.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Popover } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport { type GetGuidedTourMeta } from '../../../../shared/contracts/admin';\nimport { useGetGuidedTourMetaQuery } from '../../services/admin';\n\nimport { type State, type Action, unstableUseGuidedTour, ValidTourName } from './Context';\nimport { Step, createStepComponents } from './Step';\n\n/* -------------------------------------------------------------------------------------------------\n * Tours\n * -----------------------------------------------------------------------------------------------*/\n\nconst tours = {\n TEST: createTour('TEST', [\n {\n name: 'Introduction',\n content: (Step) => (\n <Step.Root sideOffset={-36}>\n <Step.Title\n id=\"tours.contentManager.Introduction.title\"\n defaultMessage=\"Content manager\"\n />\n <Step.Content\n id=\"tours.contentManager.Introduction.content\"\n defaultMessage=\"Create and manage content from your collection types and single types.\"\n />\n <Step.Actions showSkip />\n </Step.Root>\n ),\n },\n {\n name: 'Done',\n requiredActions: ['didCreateApiToken'],\n content: (Step) => (\n <Step.Root align=\"start\">\n <Step.Title id=\"tours.contentManager.CreateEntry.title\" defaultMessage=\"Create entry\" />\n <Step.Content\n id=\"tours.contentManager.CreateEntry.content\"\n defaultMessage=\"Click this button to create an entry\"\n />\n <Step.Actions />\n </Step.Root>\n ),\n },\n ]),\n} as const;\n\ntype Tours = typeof tours;\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourTooltip\n * -----------------------------------------------------------------------------------------------*/\n\ntype Content = (\n Step: Step,\n {\n state,\n dispatch,\n }: {\n state: State;\n dispatch: React.Dispatch<Action>;\n }\n) => React.ReactNode;\n\nexport const GuidedTourOverlay = styled(Box)`\n position: fixed;\n inset: 0;\n background-color: rgba(50, 50, 77, 0.2);\n z-index: 10;\n`;\n\nconst UnstableGuidedTourTooltip = ({\n children,\n content,\n tourName,\n step,\n requiredActions,\n}: {\n children: React.ReactNode;\n content: Content;\n tourName: ValidTourName;\n step: number;\n requiredActions?: GetGuidedTourMeta.Response['data']['completedActions'];\n}) => {\n const { data: guidedTourMeta } = useGetGuidedTourMetaQuery();\n\n const state = unstableUseGuidedTour('UnstableGuidedTourTooltip', (s) => s.state);\n const dispatch = unstableUseGuidedTour('UnstableGuidedTourTooltip', (s) => s.dispatch);\n\n const Step = React.useMemo(() => createStepComponents(tourName), [tourName]);\n\n const isCurrentStep = state.tours[tourName].currentStep === step;\n const hasCompletedRequiredActions =\n requiredActions?.every((action) => {\n return guidedTourMeta?.data?.completedActions.includes(action);\n }) ?? true;\n const hasFutureFlag = window.strapi.future.isEnabled('unstableGuidedTour');\n const isEnabled =\n guidedTourMeta?.data?.isFirstSuperAdminUser &&\n !state.tours[tourName].isCompleted &&\n hasFutureFlag;\n\n const isPopoverOpen = isEnabled && isCurrentStep && hasCompletedRequiredActions;\n\n // Lock the scroll\n React.useEffect(() => {\n if (!isPopoverOpen) return;\n\n const originalStyle = window.getComputedStyle(document.body).overflow;\n document.body.style.overflow = 'hidden';\n\n return () => {\n document.body.style.overflow = originalStyle;\n };\n }, [isPopoverOpen]);\n\n return (\n <>\n {isPopoverOpen && <GuidedTourOverlay />}\n <Popover.Root open={isPopoverOpen}>\n <Popover.Anchor>{children}</Popover.Anchor>\n {content(Step, { state, dispatch })}\n </Popover.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Tour factory\n * -----------------------------------------------------------------------------------------------*/\n\ntype TourStep<P extends string> = {\n name: P;\n content: Content;\n requiredActions?: GetGuidedTourMeta.Response['data']['completedActions'];\n};\n\nfunction createTour<const T extends ReadonlyArray<TourStep<string>>>(tourName: string, steps: T) {\n type Components = {\n [K in T[number]['name']]: React.ComponentType<{ children: React.ReactNode }>;\n };\n\n const tour = steps.reduce((acc, step, index) => {\n if (step.name in acc) {\n throw Error(`The tour: ${tourName} with step: ${step.name} has already been registered`);\n }\n\n acc[step.name as keyof Components] = ({ children }: { children: React.ReactNode }) => (\n <UnstableGuidedTourTooltip\n tourName={tourName as ValidTourName}\n step={index}\n content={step.content}\n requiredActions={step.requiredActions}\n >\n {children}\n </UnstableGuidedTourTooltip>\n );\n\n return acc;\n }, {} as Components);\n\n return tour;\n}\n\nexport type { Content, Tours };\nexport { tours };\n"],"names":["tours","TEST","createTour","name","content","Step","_jsxs","Root","sideOffset","_jsx","Title","id","defaultMessage","Content","Actions","showSkip","requiredActions","align","GuidedTourOverlay","styled","Box","UnstableGuidedTourTooltip","children","tourName","step","data","guidedTourMeta","useGetGuidedTourMetaQuery","state","unstableUseGuidedTour","s","dispatch","React","useMemo","createStepComponents","isCurrentStep","currentStep","hasCompletedRequiredActions","every","action","completedActions","includes","hasFutureFlag","window","strapi","future","isEnabled","isFirstSuperAdminUser","isCompleted","isPopoverOpen","useEffect","originalStyle","getComputedStyle","document","body","overflow","style","_Fragment","Popover","open","Anchor","steps","tour","reduce","acc","index","Error"],"mappings":"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"}
1
+ {"version":3,"file":"Tours.js","sources":["../../../../../../admin/src/components/UnstableGuidedTour/Tours.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Popover, Portal, Flex, Button, FlexProps } from '@strapi/design-system';\nimport { FormattedMessage } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useGetGuidedTourMetaQuery } from '../../services/admin';\n\nimport {\n type State,\n type Action,\n unstableUseGuidedTour,\n ValidTourName,\n ExtendedCompletedActions,\n} from './Context';\nimport { Step, StepCount, createStepComponents } from './Step';\n\n/* -------------------------------------------------------------------------------------------------\n * Tours\n * -----------------------------------------------------------------------------------------------*/\n\nconst GotItAction = ({ onClick }: { onClick: () => void }) => {\n return (\n <Button onClick={onClick}>\n <FormattedMessage id=\"tours.gotIt\" defaultMessage=\"Got it\" />\n </Button>\n );\n};\n\nconst tours = {\n contentTypeBuilder: createTour('contentTypeBuilder', [\n {\n name: 'Introduction',\n content: (Step) => (\n <Step.Root side=\"bottom\" withArrow={false}>\n <Step.Title\n id=\"tours.contentTypeBuilder.Introduction.title\"\n defaultMessage=\"Content-Type Builder\"\n />\n <Step.Content\n id=\"tours.contentTypeBuilder.Introduction.content\"\n defaultMessage=\"Create and manage your content structure with collection types, single types and components.\"\n />\n <Step.Actions showSkip />\n </Step.Root>\n ),\n },\n {\n name: 'CollectionTypes',\n content: (Step) => (\n <Step.Root side=\"right\" sideOffset={16}>\n <Step.Title\n id=\"tours.contentTypeBuilder.CollectionTypes.title\"\n defaultMessage=\"Collection Types\"\n />\n <Step.Content\n id=\"tours.contentTypeBuilder.CollectionTypes.content\"\n defaultMessage=\"A content structure that can manage multiple entries, such as articles or products.\"\n />\n <Step.Actions />\n </Step.Root>\n ),\n },\n {\n name: 'SingleTypes',\n content: (Step) => (\n <Step.Root side=\"right\" sideOffset={16}>\n <Step.Title\n id=\"tours.contentTypeBuilder.SingleTypes.title\"\n defaultMessage=\"Single Types\"\n />\n <Step.Content\n id=\"tours.contentTypeBuilder.SingleTypes.content\"\n defaultMessage=\"A content structure that can manage a single entry, such as a homepage or a header.\"\n />\n <Step.Actions />\n </Step.Root>\n ),\n },\n {\n name: 'Components',\n content: (Step, { dispatch }) => (\n <Step.Root side=\"right\" sideOffset={16}>\n <Step.Title id=\"tours.contentTypeBuilder.Components.title\" defaultMessage=\"Components\" />\n <Step.Content\n id=\"tours.contentTypeBuilder.Components.content\"\n defaultMessage=\"A reusable content structure that can be used across multiple content types, such as buttons, sliders or cards.\"\n />\n <Step.Actions justifyContent=\"flex-end\">\n <GotItAction\n onClick={() => dispatch({ type: 'next_step', payload: 'contentTypeBuilder' })}\n />\n </Step.Actions>\n </Step.Root>\n ),\n },\n {\n name: 'Finish',\n content: (Step) => (\n <Step.Root side=\"right\">\n <Step.Title\n id=\"tours.contentTypeBuilder.Finish.title\"\n defaultMessage=\"It’s time to create content!\"\n />\n <Step.Content\n id=\"tours.contentTypeBuilder.Finish.content\"\n defaultMessage=\"Now that you created content types, you’ll be able to create content in the content manager.\"\n />\n <Step.Actions showStepCount={false} to=\"/content-manager\" />\n </Step.Root>\n ),\n when: (completedActions) => completedActions.includes('didCreateContentTypeSchema'),\n },\n ]),\n contentManager: createTour('contentManager', [\n {\n name: 'Introduction',\n when: (completedActions) =>\n completedActions.includes('didCreateContentTypeSchema') &&\n !completedActions.includes('didCreateContent'),\n content: (Step) => (\n <Step.Root side=\"top\" withArrow={false}>\n <Step.Title\n id=\"tours.contentManager.Introduction.title\"\n defaultMessage=\"Content manager\"\n />\n <Step.Content\n id=\"tours.contentManager.Introduction.content\"\n defaultMessage=\"Create and manage content from your collection types and single types.\"\n />\n <Step.Actions showSkip />\n </Step.Root>\n ),\n },\n {\n name: 'Fields',\n content: (Step) => (\n <Step.Root sideOffset={-12}>\n <Step.Title id=\"tours.contentManager.Fields.title\" defaultMessage=\"Fields\" />\n <Step.Content\n id=\"tours.contentManager.Fields.content\"\n defaultMessage=\"Add content to the fields created in the Content-Type Builder.\"\n />\n <Step.Actions />\n </Step.Root>\n ),\n },\n {\n name: 'Publish',\n content: (Step, { dispatch }) => (\n <Step.Root side=\"left\" align=\"center\">\n <Step.Title id=\"tours.contentManager.Publish.title\" defaultMessage=\"Publish\" />\n <Step.Content\n id=\"tours.contentManager.Publish.content\"\n defaultMessage=\"Publish entries to make their content available through the Document Service API.\"\n />\n <Step.Actions justifyContent=\"flex-end\">\n <GotItAction\n onClick={() => dispatch({ type: 'next_step', payload: 'contentManager' })}\n />\n </Step.Actions>\n </Step.Root>\n ),\n },\n {\n name: 'Finish',\n content: (Step) => (\n <Step.Root side=\"right\">\n <Step.Title\n id=\"tours.contentManager.FinalStep.title\"\n defaultMessage=\"It’s time to create API Tokens!\"\n />\n <Step.Content\n id=\"tours.contentManager.FinalStep.content\"\n defaultMessage=\"Now that you’ve created and published content, time to create API tokens and set up permissions.\"\n />\n <Step.Actions showStepCount={false} to=\"/settings/api-tokens\" />\n </Step.Root>\n ),\n when: (completedActions) => completedActions.includes('didCreateContent'),\n },\n ]),\n apiTokens: createTour('apiTokens', [\n {\n name: 'Introduction',\n when: (completedActions) => !completedActions.includes('didCreateApiToken'),\n content: (Step) => (\n <Step.Root sideOffset={-36} withArrow={false}>\n <Step.Title id=\"tours.apiTokens.Introduction.title\" defaultMessage=\"API tokens\" />\n <Step.Content\n id=\"tours.apiTokens.Introduction.content\"\n defaultMessage=\"Create and manage API tokens with highly customizable permissions.\"\n />\n <Step.Actions showSkip />\n </Step.Root>\n ),\n },\n {\n name: 'CreateAnAPIToken',\n content: (Step) => (\n <Step.Root side=\"bottom\" align=\"end\" sideOffset={-10}>\n <Step.Title\n id=\"tours.apiTokens.CreateAnAPIToken.title\"\n defaultMessage=\"Create an API token\"\n />\n <Step.Content\n id=\"tours.apiTokens.CreateAnAPIToken.content\"\n defaultMessage=\"Create a new API token. Choose a name, duration and type.\"\n />\n <Step.Actions />\n </Step.Root>\n ),\n },\n {\n name: 'CopyAPIToken',\n content: (Step, { dispatch }) => (\n <Step.Root side=\"bottom\" align=\"start\" sideOffset={-5}>\n <Step.Title\n id=\"tours.apiTokens.CopyAPIToken.title\"\n defaultMessage=\"Copy your new API token\"\n />\n <Step.Content\n id=\"tours.apiTokens.CopyAPIToken.content\"\n defaultMessage=\"Make sure to do it now, you won’t be able to see it again. You’ll need to generate a new one if you lose it.\"\n />\n <Step.Actions>\n <StepCount tourName=\"apiTokens\" />\n <GotItAction onClick={() => dispatch({ type: 'next_step', payload: 'apiTokens' })} />\n </Step.Actions>\n </Step.Root>\n ),\n when: (completedActions) => completedActions.includes('didCreateApiToken'),\n },\n {\n name: 'Finish',\n content: (Step) => (\n <Step.Root side=\"right\" align=\"start\">\n <Step.Title\n id=\"tours.apiTokens.FinalStep.title\"\n defaultMessage=\"It’s time to deploy your application!\"\n />\n <Step.Content\n id=\"tours.apiTokens.FinalStep.content\"\n defaultMessage=\"Your application is ready to be deployed and its content to be shared with the world!\"\n />\n <Step.Actions showStepCount={false} to=\"/\" />\n </Step.Root>\n ),\n when: (completedActions) => completedActions.includes('didCopyApiToken'),\n },\n ]),\n strapiCloud: createTour('strapiCloud', []),\n} as const;\n\ntype Tours = typeof tours;\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourTooltip\n * -----------------------------------------------------------------------------------------------*/\n\ntype Content = (\n Step: Step,\n {\n state,\n dispatch,\n }: {\n state: State;\n dispatch: React.Dispatch<Action>;\n }\n) => React.ReactNode;\n\ntype GuidedTourTooltipProps = {\n children: React.ReactNode;\n content: Content;\n tourName: ValidTourName;\n step: number;\n when?: (completedActions: ExtendedCompletedActions) => boolean;\n};\n\nconst UnstableGuidedTourTooltip = ({ children, ...props }: GuidedTourTooltipProps) => {\n const state = unstableUseGuidedTour('TooltipWrapper', (s) => s.state);\n const hasFutureFlag = window.strapi.future.isEnabled('unstableGuidedTour');\n\n if (!state.enabled) {\n return <>{children}</>;\n }\n\n if (!hasFutureFlag) {\n return <>{children}</>;\n }\n\n return <GuidedTourTooltipImpl {...props}>{children}</GuidedTourTooltipImpl>;\n};\n\nconst GuidedTourOverlay = styled(Box)`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(50, 50, 77, 0.2);\n z-index: 10;\n`;\n\nconst GuidedTourTooltipImpl = ({\n children,\n content,\n tourName,\n step,\n when,\n}: GuidedTourTooltipProps) => {\n const { data: guidedTourMeta } = useGetGuidedTourMetaQuery();\n\n const state = unstableUseGuidedTour('UnstableGuidedTourTooltip', (s) => s.state);\n const dispatch = unstableUseGuidedTour('UnstableGuidedTourTooltip', (s) => s.dispatch);\n\n const isCurrentStep = state.tours[tourName].currentStep === step;\n const isStepConditionMet = when ? when(state.completedActions) : true;\n const isPopoverOpen =\n guidedTourMeta?.data?.isFirstSuperAdminUser &&\n !state.tours[tourName].isCompleted &&\n isCurrentStep &&\n isStepConditionMet;\n\n // Lock the scroll\n React.useEffect(() => {\n if (!isPopoverOpen) return;\n\n const originalStyle = window.getComputedStyle(document.body).overflow;\n document.body.style.overflow = 'hidden';\n\n return () => {\n document.body.style.overflow = originalStyle;\n };\n }, [isPopoverOpen]);\n\n // TODO: This isn't great but the only solution for syncing the completed actions\n React.useEffect(() => {\n dispatch({\n type: 'set_completed_actions',\n payload: guidedTourMeta?.data?.completedActions ?? [],\n });\n }, [dispatch, guidedTourMeta?.data?.completedActions]);\n\n const Step = React.useMemo(() => createStepComponents(tourName), [tourName]);\n\n return (\n <>\n {isPopoverOpen && (\n <Portal>\n <GuidedTourOverlay />\n </Portal>\n )}\n <Popover.Root open={isPopoverOpen}>\n <Popover.Anchor>{children}</Popover.Anchor>\n {content(Step, { state, dispatch })}\n </Popover.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Tour factory\n * -----------------------------------------------------------------------------------------------*/\n\ntype TourStep<P extends string> = {\n name: P;\n content: Content;\n when?: (completedActions: ExtendedCompletedActions) => boolean;\n};\n\nfunction createTour<const T extends ReadonlyArray<TourStep<string>>>(tourName: string, steps: T) {\n type Components = {\n [K in T[number]['name']]: React.ComponentType<{ children: React.ReactNode }>;\n };\n\n const tour = steps.reduce((acc, step, index) => {\n if (step.name in acc) {\n throw Error(`The tour: ${tourName} with step: ${step.name} has already been registered`);\n }\n\n acc[step.name as keyof Components] = ({ children }: { children: React.ReactNode }) => {\n return (\n <UnstableGuidedTourTooltip\n tourName={tourName as ValidTourName}\n step={index}\n content={step.content}\n when={step.when}\n >\n {children}\n </UnstableGuidedTourTooltip>\n );\n };\n\n return acc;\n }, {} as Components);\n\n return tour;\n}\n\nexport type { Content, Tours };\nexport { tours };\n"],"names":["GotItAction","onClick","_jsx","Button","FormattedMessage","id","defaultMessage","tours","contentTypeBuilder","createTour","name","content","Step","_jsxs","Root","side","withArrow","Title","Content","Actions","showSkip","sideOffset","dispatch","justifyContent","type","payload","showStepCount","to","when","completedActions","includes","contentManager","align","apiTokens","StepCount","tourName","strapiCloud","UnstableGuidedTourTooltip","children","props","state","unstableUseGuidedTour","s","hasFutureFlag","window","strapi","future","isEnabled","enabled","_Fragment","GuidedTourTooltipImpl","GuidedTourOverlay","styled","Box","step","data","guidedTourMeta","useGetGuidedTourMetaQuery","isCurrentStep","currentStep","isStepConditionMet","isPopoverOpen","isFirstSuperAdminUser","isCompleted","React","useEffect","originalStyle","getComputedStyle","document","body","overflow","style","useMemo","createStepComponents","Portal","Popover","open","Anchor","steps","tour","reduce","acc","index","Error"],"mappings":"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"}
@@ -1,19 +1,136 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { Box, Popover } from '@strapi/design-system';
3
+ import { Box, Portal, Popover, Button } from '@strapi/design-system';
4
+ import { FormattedMessage } from 'react-intl';
4
5
  import { styled } from 'styled-components';
5
6
  import { useGetGuidedTourMetaQuery } from '../../services/admin.mjs';
6
7
  import { unstableUseGuidedTour } from './Context.mjs';
7
- import { createStepComponents } from './Step.mjs';
8
+ import { StepCount, createStepComponents } from './Step.mjs';
8
9
 
9
10
  /* -------------------------------------------------------------------------------------------------
10
11
  * Tours
11
- * -----------------------------------------------------------------------------------------------*/ const tours = {
12
- TEST: createTour('TEST', [
12
+ * -----------------------------------------------------------------------------------------------*/ const GotItAction = ({ onClick })=>{
13
+ return /*#__PURE__*/ jsx(Button, {
14
+ onClick: onClick,
15
+ children: /*#__PURE__*/ jsx(FormattedMessage, {
16
+ id: "tours.gotIt",
17
+ defaultMessage: "Got it"
18
+ })
19
+ });
20
+ };
21
+ const tours = {
22
+ contentTypeBuilder: createTour('contentTypeBuilder', [
13
23
  {
14
24
  name: 'Introduction',
15
25
  content: (Step)=>/*#__PURE__*/ jsxs(Step.Root, {
16
- sideOffset: -36,
26
+ side: "bottom",
27
+ withArrow: false,
28
+ children: [
29
+ /*#__PURE__*/ jsx(Step.Title, {
30
+ id: "tours.contentTypeBuilder.Introduction.title",
31
+ defaultMessage: "Content-Type Builder"
32
+ }),
33
+ /*#__PURE__*/ jsx(Step.Content, {
34
+ id: "tours.contentTypeBuilder.Introduction.content",
35
+ defaultMessage: "Create and manage your content structure with collection types, single types and components."
36
+ }),
37
+ /*#__PURE__*/ jsx(Step.Actions, {
38
+ showSkip: true
39
+ })
40
+ ]
41
+ })
42
+ },
43
+ {
44
+ name: 'CollectionTypes',
45
+ content: (Step)=>/*#__PURE__*/ jsxs(Step.Root, {
46
+ side: "right",
47
+ sideOffset: 16,
48
+ children: [
49
+ /*#__PURE__*/ jsx(Step.Title, {
50
+ id: "tours.contentTypeBuilder.CollectionTypes.title",
51
+ defaultMessage: "Collection Types"
52
+ }),
53
+ /*#__PURE__*/ jsx(Step.Content, {
54
+ id: "tours.contentTypeBuilder.CollectionTypes.content",
55
+ defaultMessage: "A content structure that can manage multiple entries, such as articles or products."
56
+ }),
57
+ /*#__PURE__*/ jsx(Step.Actions, {})
58
+ ]
59
+ })
60
+ },
61
+ {
62
+ name: 'SingleTypes',
63
+ content: (Step)=>/*#__PURE__*/ jsxs(Step.Root, {
64
+ side: "right",
65
+ sideOffset: 16,
66
+ children: [
67
+ /*#__PURE__*/ jsx(Step.Title, {
68
+ id: "tours.contentTypeBuilder.SingleTypes.title",
69
+ defaultMessage: "Single Types"
70
+ }),
71
+ /*#__PURE__*/ jsx(Step.Content, {
72
+ id: "tours.contentTypeBuilder.SingleTypes.content",
73
+ defaultMessage: "A content structure that can manage a single entry, such as a homepage or a header."
74
+ }),
75
+ /*#__PURE__*/ jsx(Step.Actions, {})
76
+ ]
77
+ })
78
+ },
79
+ {
80
+ name: 'Components',
81
+ content: (Step, { dispatch })=>/*#__PURE__*/ jsxs(Step.Root, {
82
+ side: "right",
83
+ sideOffset: 16,
84
+ children: [
85
+ /*#__PURE__*/ jsx(Step.Title, {
86
+ id: "tours.contentTypeBuilder.Components.title",
87
+ defaultMessage: "Components"
88
+ }),
89
+ /*#__PURE__*/ jsx(Step.Content, {
90
+ id: "tours.contentTypeBuilder.Components.content",
91
+ defaultMessage: "A reusable content structure that can be used across multiple content types, such as buttons, sliders or cards."
92
+ }),
93
+ /*#__PURE__*/ jsx(Step.Actions, {
94
+ justifyContent: "flex-end",
95
+ children: /*#__PURE__*/ jsx(GotItAction, {
96
+ onClick: ()=>dispatch({
97
+ type: 'next_step',
98
+ payload: 'contentTypeBuilder'
99
+ })
100
+ })
101
+ })
102
+ ]
103
+ })
104
+ },
105
+ {
106
+ name: 'Finish',
107
+ content: (Step)=>/*#__PURE__*/ jsxs(Step.Root, {
108
+ side: "right",
109
+ children: [
110
+ /*#__PURE__*/ jsx(Step.Title, {
111
+ id: "tours.contentTypeBuilder.Finish.title",
112
+ defaultMessage: "It’s time to create content!"
113
+ }),
114
+ /*#__PURE__*/ jsx(Step.Content, {
115
+ id: "tours.contentTypeBuilder.Finish.content",
116
+ defaultMessage: "Now that you created content types, you’ll be able to create content in the content manager."
117
+ }),
118
+ /*#__PURE__*/ jsx(Step.Actions, {
119
+ showStepCount: false,
120
+ to: "/content-manager"
121
+ })
122
+ ]
123
+ }),
124
+ when: (completedActions)=>completedActions.includes('didCreateContentTypeSchema')
125
+ }
126
+ ]),
127
+ contentManager: createTour('contentManager', [
128
+ {
129
+ name: 'Introduction',
130
+ when: (completedActions)=>completedActions.includes('didCreateContentTypeSchema') && !completedActions.includes('didCreateContent'),
131
+ content: (Step)=>/*#__PURE__*/ jsxs(Step.Root, {
132
+ side: "top",
133
+ withArrow: false,
17
134
  children: [
18
135
  /*#__PURE__*/ jsx(Step.Title, {
19
136
  id: "tours.contentManager.Introduction.title",
@@ -30,47 +147,202 @@ import { createStepComponents } from './Step.mjs';
30
147
  })
31
148
  },
32
149
  {
33
- name: 'Done',
34
- requiredActions: [
35
- 'didCreateApiToken'
36
- ],
150
+ name: 'Fields',
37
151
  content: (Step)=>/*#__PURE__*/ jsxs(Step.Root, {
38
- align: "start",
152
+ sideOffset: -12,
153
+ children: [
154
+ /*#__PURE__*/ jsx(Step.Title, {
155
+ id: "tours.contentManager.Fields.title",
156
+ defaultMessage: "Fields"
157
+ }),
158
+ /*#__PURE__*/ jsx(Step.Content, {
159
+ id: "tours.contentManager.Fields.content",
160
+ defaultMessage: "Add content to the fields created in the Content-Type Builder."
161
+ }),
162
+ /*#__PURE__*/ jsx(Step.Actions, {})
163
+ ]
164
+ })
165
+ },
166
+ {
167
+ name: 'Publish',
168
+ content: (Step, { dispatch })=>/*#__PURE__*/ jsxs(Step.Root, {
169
+ side: "left",
170
+ align: "center",
171
+ children: [
172
+ /*#__PURE__*/ jsx(Step.Title, {
173
+ id: "tours.contentManager.Publish.title",
174
+ defaultMessage: "Publish"
175
+ }),
176
+ /*#__PURE__*/ jsx(Step.Content, {
177
+ id: "tours.contentManager.Publish.content",
178
+ defaultMessage: "Publish entries to make their content available through the Document Service API."
179
+ }),
180
+ /*#__PURE__*/ jsx(Step.Actions, {
181
+ justifyContent: "flex-end",
182
+ children: /*#__PURE__*/ jsx(GotItAction, {
183
+ onClick: ()=>dispatch({
184
+ type: 'next_step',
185
+ payload: 'contentManager'
186
+ })
187
+ })
188
+ })
189
+ ]
190
+ })
191
+ },
192
+ {
193
+ name: 'Finish',
194
+ content: (Step)=>/*#__PURE__*/ jsxs(Step.Root, {
195
+ side: "right",
196
+ children: [
197
+ /*#__PURE__*/ jsx(Step.Title, {
198
+ id: "tours.contentManager.FinalStep.title",
199
+ defaultMessage: "It’s time to create API Tokens!"
200
+ }),
201
+ /*#__PURE__*/ jsx(Step.Content, {
202
+ id: "tours.contentManager.FinalStep.content",
203
+ defaultMessage: "Now that you’ve created and published content, time to create API tokens and set up permissions."
204
+ }),
205
+ /*#__PURE__*/ jsx(Step.Actions, {
206
+ showStepCount: false,
207
+ to: "/settings/api-tokens"
208
+ })
209
+ ]
210
+ }),
211
+ when: (completedActions)=>completedActions.includes('didCreateContent')
212
+ }
213
+ ]),
214
+ apiTokens: createTour('apiTokens', [
215
+ {
216
+ name: 'Introduction',
217
+ when: (completedActions)=>!completedActions.includes('didCreateApiToken'),
218
+ content: (Step)=>/*#__PURE__*/ jsxs(Step.Root, {
219
+ sideOffset: -36,
220
+ withArrow: false,
221
+ children: [
222
+ /*#__PURE__*/ jsx(Step.Title, {
223
+ id: "tours.apiTokens.Introduction.title",
224
+ defaultMessage: "API tokens"
225
+ }),
226
+ /*#__PURE__*/ jsx(Step.Content, {
227
+ id: "tours.apiTokens.Introduction.content",
228
+ defaultMessage: "Create and manage API tokens with highly customizable permissions."
229
+ }),
230
+ /*#__PURE__*/ jsx(Step.Actions, {
231
+ showSkip: true
232
+ })
233
+ ]
234
+ })
235
+ },
236
+ {
237
+ name: 'CreateAnAPIToken',
238
+ content: (Step)=>/*#__PURE__*/ jsxs(Step.Root, {
239
+ side: "bottom",
240
+ align: "end",
241
+ sideOffset: -10,
39
242
  children: [
40
243
  /*#__PURE__*/ jsx(Step.Title, {
41
- id: "tours.contentManager.CreateEntry.title",
42
- defaultMessage: "Create entry"
244
+ id: "tours.apiTokens.CreateAnAPIToken.title",
245
+ defaultMessage: "Create an API token"
43
246
  }),
44
247
  /*#__PURE__*/ jsx(Step.Content, {
45
- id: "tours.contentManager.CreateEntry.content",
46
- defaultMessage: "Click this button to create an entry"
248
+ id: "tours.apiTokens.CreateAnAPIToken.content",
249
+ defaultMessage: "Create a new API token. Choose a name, duration and type."
47
250
  }),
48
251
  /*#__PURE__*/ jsx(Step.Actions, {})
49
252
  ]
50
253
  })
254
+ },
255
+ {
256
+ name: 'CopyAPIToken',
257
+ content: (Step, { dispatch })=>/*#__PURE__*/ jsxs(Step.Root, {
258
+ side: "bottom",
259
+ align: "start",
260
+ sideOffset: -5,
261
+ children: [
262
+ /*#__PURE__*/ jsx(Step.Title, {
263
+ id: "tours.apiTokens.CopyAPIToken.title",
264
+ defaultMessage: "Copy your new API token"
265
+ }),
266
+ /*#__PURE__*/ jsx(Step.Content, {
267
+ id: "tours.apiTokens.CopyAPIToken.content",
268
+ defaultMessage: "Make sure to do it now, you won’t be able to see it again. You’ll need to generate a new one if you lose it."
269
+ }),
270
+ /*#__PURE__*/ jsxs(Step.Actions, {
271
+ children: [
272
+ /*#__PURE__*/ jsx(StepCount, {
273
+ tourName: "apiTokens"
274
+ }),
275
+ /*#__PURE__*/ jsx(GotItAction, {
276
+ onClick: ()=>dispatch({
277
+ type: 'next_step',
278
+ payload: 'apiTokens'
279
+ })
280
+ })
281
+ ]
282
+ })
283
+ ]
284
+ }),
285
+ when: (completedActions)=>completedActions.includes('didCreateApiToken')
286
+ },
287
+ {
288
+ name: 'Finish',
289
+ content: (Step)=>/*#__PURE__*/ jsxs(Step.Root, {
290
+ side: "right",
291
+ align: "start",
292
+ children: [
293
+ /*#__PURE__*/ jsx(Step.Title, {
294
+ id: "tours.apiTokens.FinalStep.title",
295
+ defaultMessage: "It’s time to deploy your application!"
296
+ }),
297
+ /*#__PURE__*/ jsx(Step.Content, {
298
+ id: "tours.apiTokens.FinalStep.content",
299
+ defaultMessage: "Your application is ready to be deployed and its content to be shared with the world!"
300
+ }),
301
+ /*#__PURE__*/ jsx(Step.Actions, {
302
+ showStepCount: false,
303
+ to: "/"
304
+ })
305
+ ]
306
+ }),
307
+ when: (completedActions)=>completedActions.includes('didCopyApiToken')
51
308
  }
52
- ])
309
+ ]),
310
+ strapiCloud: createTour('strapiCloud', [])
311
+ };
312
+ const UnstableGuidedTourTooltip = ({ children, ...props })=>{
313
+ const state = unstableUseGuidedTour('TooltipWrapper', (s)=>s.state);
314
+ const hasFutureFlag = window.strapi.future.isEnabled('unstableGuidedTour');
315
+ if (!state.enabled) {
316
+ return /*#__PURE__*/ jsx(Fragment, {
317
+ children: children
318
+ });
319
+ }
320
+ if (!hasFutureFlag) {
321
+ return /*#__PURE__*/ jsx(Fragment, {
322
+ children: children
323
+ });
324
+ }
325
+ return /*#__PURE__*/ jsx(GuidedTourTooltipImpl, {
326
+ ...props,
327
+ children: children
328
+ });
53
329
  };
54
330
  const GuidedTourOverlay = styled(Box)`
55
331
  position: fixed;
56
- inset: 0;
332
+ top: 0;
333
+ left: 0;
334
+ right: 0;
335
+ bottom: 0;
57
336
  background-color: rgba(50, 50, 77, 0.2);
58
337
  z-index: 10;
59
338
  `;
60
- const UnstableGuidedTourTooltip = ({ children, content, tourName, step, requiredActions })=>{
339
+ const GuidedTourTooltipImpl = ({ children, content, tourName, step, when })=>{
61
340
  const { data: guidedTourMeta } = useGetGuidedTourMetaQuery();
62
341
  const state = unstableUseGuidedTour('UnstableGuidedTourTooltip', (s)=>s.state);
63
342
  const dispatch = unstableUseGuidedTour('UnstableGuidedTourTooltip', (s)=>s.dispatch);
64
- const Step = React.useMemo(()=>createStepComponents(tourName), [
65
- tourName
66
- ]);
67
343
  const isCurrentStep = state.tours[tourName].currentStep === step;
68
- const hasCompletedRequiredActions = requiredActions?.every((action)=>{
69
- return guidedTourMeta?.data?.completedActions.includes(action);
70
- }) ?? true;
71
- const hasFutureFlag = window.strapi.future.isEnabled('unstableGuidedTour');
72
- const isEnabled = guidedTourMeta?.data?.isFirstSuperAdminUser && !state.tours[tourName].isCompleted && hasFutureFlag;
73
- const isPopoverOpen = isEnabled && isCurrentStep && hasCompletedRequiredActions;
344
+ const isStepConditionMet = when ? when(state.completedActions) : true;
345
+ const isPopoverOpen = guidedTourMeta?.data?.isFirstSuperAdminUser && !state.tours[tourName].isCompleted && isCurrentStep && isStepConditionMet;
74
346
  // Lock the scroll
75
347
  React.useEffect(()=>{
76
348
  if (!isPopoverOpen) return;
@@ -82,9 +354,24 @@ const UnstableGuidedTourTooltip = ({ children, content, tourName, step, required
82
354
  }, [
83
355
  isPopoverOpen
84
356
  ]);
357
+ // TODO: This isn't great but the only solution for syncing the completed actions
358
+ React.useEffect(()=>{
359
+ dispatch({
360
+ type: 'set_completed_actions',
361
+ payload: guidedTourMeta?.data?.completedActions ?? []
362
+ });
363
+ }, [
364
+ dispatch,
365
+ guidedTourMeta?.data?.completedActions
366
+ ]);
367
+ const Step = React.useMemo(()=>createStepComponents(tourName), [
368
+ tourName
369
+ ]);
85
370
  return /*#__PURE__*/ jsxs(Fragment, {
86
371
  children: [
87
- isPopoverOpen && /*#__PURE__*/ jsx(GuidedTourOverlay, {}),
372
+ isPopoverOpen && /*#__PURE__*/ jsx(Portal, {
373
+ children: /*#__PURE__*/ jsx(GuidedTourOverlay, {})
374
+ }),
88
375
  /*#__PURE__*/ jsxs(Popover.Root, {
89
376
  open: isPopoverOpen,
90
377
  children: [
@@ -105,17 +392,19 @@ function createTour(tourName, steps) {
105
392
  if (step.name in acc) {
106
393
  throw Error(`The tour: ${tourName} with step: ${step.name} has already been registered`);
107
394
  }
108
- acc[step.name] = ({ children })=>/*#__PURE__*/ jsx(UnstableGuidedTourTooltip, {
395
+ acc[step.name] = ({ children })=>{
396
+ return /*#__PURE__*/ jsx(UnstableGuidedTourTooltip, {
109
397
  tourName: tourName,
110
398
  step: index,
111
399
  content: step.content,
112
- requiredActions: step.requiredActions,
400
+ when: step.when,
113
401
  children: children
114
402
  });
403
+ };
115
404
  return acc;
116
405
  }, {});
117
406
  return tour;
118
407
  }
119
408
 
120
- export { GuidedTourOverlay, tours };
409
+ export { tours };
121
410
  //# sourceMappingURL=Tours.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tours.mjs","sources":["../../../../../../admin/src/components/UnstableGuidedTour/Tours.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Popover } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport { type GetGuidedTourMeta } from '../../../../shared/contracts/admin';\nimport { useGetGuidedTourMetaQuery } from '../../services/admin';\n\nimport { type State, type Action, unstableUseGuidedTour, ValidTourName } from './Context';\nimport { Step, createStepComponents } from './Step';\n\n/* -------------------------------------------------------------------------------------------------\n * Tours\n * -----------------------------------------------------------------------------------------------*/\n\nconst tours = {\n TEST: createTour('TEST', [\n {\n name: 'Introduction',\n content: (Step) => (\n <Step.Root sideOffset={-36}>\n <Step.Title\n id=\"tours.contentManager.Introduction.title\"\n defaultMessage=\"Content manager\"\n />\n <Step.Content\n id=\"tours.contentManager.Introduction.content\"\n defaultMessage=\"Create and manage content from your collection types and single types.\"\n />\n <Step.Actions showSkip />\n </Step.Root>\n ),\n },\n {\n name: 'Done',\n requiredActions: ['didCreateApiToken'],\n content: (Step) => (\n <Step.Root align=\"start\">\n <Step.Title id=\"tours.contentManager.CreateEntry.title\" defaultMessage=\"Create entry\" />\n <Step.Content\n id=\"tours.contentManager.CreateEntry.content\"\n defaultMessage=\"Click this button to create an entry\"\n />\n <Step.Actions />\n </Step.Root>\n ),\n },\n ]),\n} as const;\n\ntype Tours = typeof tours;\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourTooltip\n * -----------------------------------------------------------------------------------------------*/\n\ntype Content = (\n Step: Step,\n {\n state,\n dispatch,\n }: {\n state: State;\n dispatch: React.Dispatch<Action>;\n }\n) => React.ReactNode;\n\nexport const GuidedTourOverlay = styled(Box)`\n position: fixed;\n inset: 0;\n background-color: rgba(50, 50, 77, 0.2);\n z-index: 10;\n`;\n\nconst UnstableGuidedTourTooltip = ({\n children,\n content,\n tourName,\n step,\n requiredActions,\n}: {\n children: React.ReactNode;\n content: Content;\n tourName: ValidTourName;\n step: number;\n requiredActions?: GetGuidedTourMeta.Response['data']['completedActions'];\n}) => {\n const { data: guidedTourMeta } = useGetGuidedTourMetaQuery();\n\n const state = unstableUseGuidedTour('UnstableGuidedTourTooltip', (s) => s.state);\n const dispatch = unstableUseGuidedTour('UnstableGuidedTourTooltip', (s) => s.dispatch);\n\n const Step = React.useMemo(() => createStepComponents(tourName), [tourName]);\n\n const isCurrentStep = state.tours[tourName].currentStep === step;\n const hasCompletedRequiredActions =\n requiredActions?.every((action) => {\n return guidedTourMeta?.data?.completedActions.includes(action);\n }) ?? true;\n const hasFutureFlag = window.strapi.future.isEnabled('unstableGuidedTour');\n const isEnabled =\n guidedTourMeta?.data?.isFirstSuperAdminUser &&\n !state.tours[tourName].isCompleted &&\n hasFutureFlag;\n\n const isPopoverOpen = isEnabled && isCurrentStep && hasCompletedRequiredActions;\n\n // Lock the scroll\n React.useEffect(() => {\n if (!isPopoverOpen) return;\n\n const originalStyle = window.getComputedStyle(document.body).overflow;\n document.body.style.overflow = 'hidden';\n\n return () => {\n document.body.style.overflow = originalStyle;\n };\n }, [isPopoverOpen]);\n\n return (\n <>\n {isPopoverOpen && <GuidedTourOverlay />}\n <Popover.Root open={isPopoverOpen}>\n <Popover.Anchor>{children}</Popover.Anchor>\n {content(Step, { state, dispatch })}\n </Popover.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Tour factory\n * -----------------------------------------------------------------------------------------------*/\n\ntype TourStep<P extends string> = {\n name: P;\n content: Content;\n requiredActions?: GetGuidedTourMeta.Response['data']['completedActions'];\n};\n\nfunction createTour<const T extends ReadonlyArray<TourStep<string>>>(tourName: string, steps: T) {\n type Components = {\n [K in T[number]['name']]: React.ComponentType<{ children: React.ReactNode }>;\n };\n\n const tour = steps.reduce((acc, step, index) => {\n if (step.name in acc) {\n throw Error(`The tour: ${tourName} with step: ${step.name} has already been registered`);\n }\n\n acc[step.name as keyof Components] = ({ children }: { children: React.ReactNode }) => (\n <UnstableGuidedTourTooltip\n tourName={tourName as ValidTourName}\n step={index}\n content={step.content}\n requiredActions={step.requiredActions}\n >\n {children}\n </UnstableGuidedTourTooltip>\n );\n\n return acc;\n }, {} as Components);\n\n return tour;\n}\n\nexport type { Content, Tours };\nexport { tours };\n"],"names":["tours","TEST","createTour","name","content","Step","_jsxs","Root","sideOffset","_jsx","Title","id","defaultMessage","Content","Actions","showSkip","requiredActions","align","GuidedTourOverlay","styled","Box","UnstableGuidedTourTooltip","children","tourName","step","data","guidedTourMeta","useGetGuidedTourMetaQuery","state","unstableUseGuidedTour","s","dispatch","React","useMemo","createStepComponents","isCurrentStep","currentStep","hasCompletedRequiredActions","every","action","completedActions","includes","hasFutureFlag","window","strapi","future","isEnabled","isFirstSuperAdminUser","isCompleted","isPopoverOpen","useEffect","originalStyle","getComputedStyle","document","body","overflow","style","_Fragment","Popover","open","Anchor","steps","tour","reduce","acc","index","Error"],"mappings":"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"}
1
+ {"version":3,"file":"Tours.mjs","sources":["../../../../../../admin/src/components/UnstableGuidedTour/Tours.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Popover, Portal, Flex, Button, FlexProps } from '@strapi/design-system';\nimport { FormattedMessage } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useGetGuidedTourMetaQuery } from '../../services/admin';\n\nimport {\n type State,\n type Action,\n unstableUseGuidedTour,\n ValidTourName,\n ExtendedCompletedActions,\n} from './Context';\nimport { Step, StepCount, createStepComponents } from './Step';\n\n/* -------------------------------------------------------------------------------------------------\n * Tours\n * -----------------------------------------------------------------------------------------------*/\n\nconst GotItAction = ({ onClick }: { onClick: () => void }) => {\n return (\n <Button onClick={onClick}>\n <FormattedMessage id=\"tours.gotIt\" defaultMessage=\"Got it\" />\n </Button>\n );\n};\n\nconst tours = {\n contentTypeBuilder: createTour('contentTypeBuilder', [\n {\n name: 'Introduction',\n content: (Step) => (\n <Step.Root side=\"bottom\" withArrow={false}>\n <Step.Title\n id=\"tours.contentTypeBuilder.Introduction.title\"\n defaultMessage=\"Content-Type Builder\"\n />\n <Step.Content\n id=\"tours.contentTypeBuilder.Introduction.content\"\n defaultMessage=\"Create and manage your content structure with collection types, single types and components.\"\n />\n <Step.Actions showSkip />\n </Step.Root>\n ),\n },\n {\n name: 'CollectionTypes',\n content: (Step) => (\n <Step.Root side=\"right\" sideOffset={16}>\n <Step.Title\n id=\"tours.contentTypeBuilder.CollectionTypes.title\"\n defaultMessage=\"Collection Types\"\n />\n <Step.Content\n id=\"tours.contentTypeBuilder.CollectionTypes.content\"\n defaultMessage=\"A content structure that can manage multiple entries, such as articles or products.\"\n />\n <Step.Actions />\n </Step.Root>\n ),\n },\n {\n name: 'SingleTypes',\n content: (Step) => (\n <Step.Root side=\"right\" sideOffset={16}>\n <Step.Title\n id=\"tours.contentTypeBuilder.SingleTypes.title\"\n defaultMessage=\"Single Types\"\n />\n <Step.Content\n id=\"tours.contentTypeBuilder.SingleTypes.content\"\n defaultMessage=\"A content structure that can manage a single entry, such as a homepage or a header.\"\n />\n <Step.Actions />\n </Step.Root>\n ),\n },\n {\n name: 'Components',\n content: (Step, { dispatch }) => (\n <Step.Root side=\"right\" sideOffset={16}>\n <Step.Title id=\"tours.contentTypeBuilder.Components.title\" defaultMessage=\"Components\" />\n <Step.Content\n id=\"tours.contentTypeBuilder.Components.content\"\n defaultMessage=\"A reusable content structure that can be used across multiple content types, such as buttons, sliders or cards.\"\n />\n <Step.Actions justifyContent=\"flex-end\">\n <GotItAction\n onClick={() => dispatch({ type: 'next_step', payload: 'contentTypeBuilder' })}\n />\n </Step.Actions>\n </Step.Root>\n ),\n },\n {\n name: 'Finish',\n content: (Step) => (\n <Step.Root side=\"right\">\n <Step.Title\n id=\"tours.contentTypeBuilder.Finish.title\"\n defaultMessage=\"It’s time to create content!\"\n />\n <Step.Content\n id=\"tours.contentTypeBuilder.Finish.content\"\n defaultMessage=\"Now that you created content types, you’ll be able to create content in the content manager.\"\n />\n <Step.Actions showStepCount={false} to=\"/content-manager\" />\n </Step.Root>\n ),\n when: (completedActions) => completedActions.includes('didCreateContentTypeSchema'),\n },\n ]),\n contentManager: createTour('contentManager', [\n {\n name: 'Introduction',\n when: (completedActions) =>\n completedActions.includes('didCreateContentTypeSchema') &&\n !completedActions.includes('didCreateContent'),\n content: (Step) => (\n <Step.Root side=\"top\" withArrow={false}>\n <Step.Title\n id=\"tours.contentManager.Introduction.title\"\n defaultMessage=\"Content manager\"\n />\n <Step.Content\n id=\"tours.contentManager.Introduction.content\"\n defaultMessage=\"Create and manage content from your collection types and single types.\"\n />\n <Step.Actions showSkip />\n </Step.Root>\n ),\n },\n {\n name: 'Fields',\n content: (Step) => (\n <Step.Root sideOffset={-12}>\n <Step.Title id=\"tours.contentManager.Fields.title\" defaultMessage=\"Fields\" />\n <Step.Content\n id=\"tours.contentManager.Fields.content\"\n defaultMessage=\"Add content to the fields created in the Content-Type Builder.\"\n />\n <Step.Actions />\n </Step.Root>\n ),\n },\n {\n name: 'Publish',\n content: (Step, { dispatch }) => (\n <Step.Root side=\"left\" align=\"center\">\n <Step.Title id=\"tours.contentManager.Publish.title\" defaultMessage=\"Publish\" />\n <Step.Content\n id=\"tours.contentManager.Publish.content\"\n defaultMessage=\"Publish entries to make their content available through the Document Service API.\"\n />\n <Step.Actions justifyContent=\"flex-end\">\n <GotItAction\n onClick={() => dispatch({ type: 'next_step', payload: 'contentManager' })}\n />\n </Step.Actions>\n </Step.Root>\n ),\n },\n {\n name: 'Finish',\n content: (Step) => (\n <Step.Root side=\"right\">\n <Step.Title\n id=\"tours.contentManager.FinalStep.title\"\n defaultMessage=\"It’s time to create API Tokens!\"\n />\n <Step.Content\n id=\"tours.contentManager.FinalStep.content\"\n defaultMessage=\"Now that you’ve created and published content, time to create API tokens and set up permissions.\"\n />\n <Step.Actions showStepCount={false} to=\"/settings/api-tokens\" />\n </Step.Root>\n ),\n when: (completedActions) => completedActions.includes('didCreateContent'),\n },\n ]),\n apiTokens: createTour('apiTokens', [\n {\n name: 'Introduction',\n when: (completedActions) => !completedActions.includes('didCreateApiToken'),\n content: (Step) => (\n <Step.Root sideOffset={-36} withArrow={false}>\n <Step.Title id=\"tours.apiTokens.Introduction.title\" defaultMessage=\"API tokens\" />\n <Step.Content\n id=\"tours.apiTokens.Introduction.content\"\n defaultMessage=\"Create and manage API tokens with highly customizable permissions.\"\n />\n <Step.Actions showSkip />\n </Step.Root>\n ),\n },\n {\n name: 'CreateAnAPIToken',\n content: (Step) => (\n <Step.Root side=\"bottom\" align=\"end\" sideOffset={-10}>\n <Step.Title\n id=\"tours.apiTokens.CreateAnAPIToken.title\"\n defaultMessage=\"Create an API token\"\n />\n <Step.Content\n id=\"tours.apiTokens.CreateAnAPIToken.content\"\n defaultMessage=\"Create a new API token. Choose a name, duration and type.\"\n />\n <Step.Actions />\n </Step.Root>\n ),\n },\n {\n name: 'CopyAPIToken',\n content: (Step, { dispatch }) => (\n <Step.Root side=\"bottom\" align=\"start\" sideOffset={-5}>\n <Step.Title\n id=\"tours.apiTokens.CopyAPIToken.title\"\n defaultMessage=\"Copy your new API token\"\n />\n <Step.Content\n id=\"tours.apiTokens.CopyAPIToken.content\"\n defaultMessage=\"Make sure to do it now, you won’t be able to see it again. You’ll need to generate a new one if you lose it.\"\n />\n <Step.Actions>\n <StepCount tourName=\"apiTokens\" />\n <GotItAction onClick={() => dispatch({ type: 'next_step', payload: 'apiTokens' })} />\n </Step.Actions>\n </Step.Root>\n ),\n when: (completedActions) => completedActions.includes('didCreateApiToken'),\n },\n {\n name: 'Finish',\n content: (Step) => (\n <Step.Root side=\"right\" align=\"start\">\n <Step.Title\n id=\"tours.apiTokens.FinalStep.title\"\n defaultMessage=\"It’s time to deploy your application!\"\n />\n <Step.Content\n id=\"tours.apiTokens.FinalStep.content\"\n defaultMessage=\"Your application is ready to be deployed and its content to be shared with the world!\"\n />\n <Step.Actions showStepCount={false} to=\"/\" />\n </Step.Root>\n ),\n when: (completedActions) => completedActions.includes('didCopyApiToken'),\n },\n ]),\n strapiCloud: createTour('strapiCloud', []),\n} as const;\n\ntype Tours = typeof tours;\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourTooltip\n * -----------------------------------------------------------------------------------------------*/\n\ntype Content = (\n Step: Step,\n {\n state,\n dispatch,\n }: {\n state: State;\n dispatch: React.Dispatch<Action>;\n }\n) => React.ReactNode;\n\ntype GuidedTourTooltipProps = {\n children: React.ReactNode;\n content: Content;\n tourName: ValidTourName;\n step: number;\n when?: (completedActions: ExtendedCompletedActions) => boolean;\n};\n\nconst UnstableGuidedTourTooltip = ({ children, ...props }: GuidedTourTooltipProps) => {\n const state = unstableUseGuidedTour('TooltipWrapper', (s) => s.state);\n const hasFutureFlag = window.strapi.future.isEnabled('unstableGuidedTour');\n\n if (!state.enabled) {\n return <>{children}</>;\n }\n\n if (!hasFutureFlag) {\n return <>{children}</>;\n }\n\n return <GuidedTourTooltipImpl {...props}>{children}</GuidedTourTooltipImpl>;\n};\n\nconst GuidedTourOverlay = styled(Box)`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(50, 50, 77, 0.2);\n z-index: 10;\n`;\n\nconst GuidedTourTooltipImpl = ({\n children,\n content,\n tourName,\n step,\n when,\n}: GuidedTourTooltipProps) => {\n const { data: guidedTourMeta } = useGetGuidedTourMetaQuery();\n\n const state = unstableUseGuidedTour('UnstableGuidedTourTooltip', (s) => s.state);\n const dispatch = unstableUseGuidedTour('UnstableGuidedTourTooltip', (s) => s.dispatch);\n\n const isCurrentStep = state.tours[tourName].currentStep === step;\n const isStepConditionMet = when ? when(state.completedActions) : true;\n const isPopoverOpen =\n guidedTourMeta?.data?.isFirstSuperAdminUser &&\n !state.tours[tourName].isCompleted &&\n isCurrentStep &&\n isStepConditionMet;\n\n // Lock the scroll\n React.useEffect(() => {\n if (!isPopoverOpen) return;\n\n const originalStyle = window.getComputedStyle(document.body).overflow;\n document.body.style.overflow = 'hidden';\n\n return () => {\n document.body.style.overflow = originalStyle;\n };\n }, [isPopoverOpen]);\n\n // TODO: This isn't great but the only solution for syncing the completed actions\n React.useEffect(() => {\n dispatch({\n type: 'set_completed_actions',\n payload: guidedTourMeta?.data?.completedActions ?? [],\n });\n }, [dispatch, guidedTourMeta?.data?.completedActions]);\n\n const Step = React.useMemo(() => createStepComponents(tourName), [tourName]);\n\n return (\n <>\n {isPopoverOpen && (\n <Portal>\n <GuidedTourOverlay />\n </Portal>\n )}\n <Popover.Root open={isPopoverOpen}>\n <Popover.Anchor>{children}</Popover.Anchor>\n {content(Step, { state, dispatch })}\n </Popover.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Tour factory\n * -----------------------------------------------------------------------------------------------*/\n\ntype TourStep<P extends string> = {\n name: P;\n content: Content;\n when?: (completedActions: ExtendedCompletedActions) => boolean;\n};\n\nfunction createTour<const T extends ReadonlyArray<TourStep<string>>>(tourName: string, steps: T) {\n type Components = {\n [K in T[number]['name']]: React.ComponentType<{ children: React.ReactNode }>;\n };\n\n const tour = steps.reduce((acc, step, index) => {\n if (step.name in acc) {\n throw Error(`The tour: ${tourName} with step: ${step.name} has already been registered`);\n }\n\n acc[step.name as keyof Components] = ({ children }: { children: React.ReactNode }) => {\n return (\n <UnstableGuidedTourTooltip\n tourName={tourName as ValidTourName}\n step={index}\n content={step.content}\n when={step.when}\n >\n {children}\n </UnstableGuidedTourTooltip>\n );\n };\n\n return acc;\n }, {} as Components);\n\n return tour;\n}\n\nexport type { Content, Tours };\nexport { tours };\n"],"names":["GotItAction","onClick","_jsx","Button","FormattedMessage","id","defaultMessage","tours","contentTypeBuilder","createTour","name","content","Step","_jsxs","Root","side","withArrow","Title","Content","Actions","showSkip","sideOffset","dispatch","justifyContent","type","payload","showStepCount","to","when","completedActions","includes","contentManager","align","apiTokens","StepCount","tourName","strapiCloud","UnstableGuidedTourTooltip","children","props","state","unstableUseGuidedTour","s","hasFutureFlag","window","strapi","future","isEnabled","enabled","_Fragment","GuidedTourTooltipImpl","GuidedTourOverlay","styled","Box","step","data","guidedTourMeta","useGetGuidedTourMetaQuery","isCurrentStep","currentStep","isStepConditionMet","isPopoverOpen","isFirstSuperAdminUser","isCompleted","React","useEffect","originalStyle","getComputedStyle","document","body","overflow","style","useMemo","createStepComponents","Portal","Popover","open","Anchor","steps","tour","reduce","acc","index","Error"],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var strapiAdmin = require('@strapi/admin/strapi-admin');
5
+ var designSystem = require('@strapi/design-system');
6
+ var styled = require('styled-components');
7
+ var users = require('../utils/users.js');
8
+
9
+ /* -------------------------------------------------------------------------------------------------
10
+ * ProfileWidget
11
+ * -----------------------------------------------------------------------------------------------*/ const DisplayNameTypography = styled.styled(designSystem.Typography)`
12
+ font-size: 2.4rem;
13
+ `;
14
+ const ProfileWidget = ()=>{
15
+ const user = strapiAdmin.useAuth('User', (state)=>state.user);
16
+ const userDisplayName = users.getDisplayName(user);
17
+ const initials = users.getInitials(user);
18
+ return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
19
+ direction: "column",
20
+ gap: 3,
21
+ height: "100%",
22
+ justifyContent: "center",
23
+ children: [
24
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Avatar.Item, {
25
+ delayMs: 0,
26
+ fallback: initials
27
+ }),
28
+ userDisplayName && /*#__PURE__*/ jsxRuntime.jsx(DisplayNameTypography, {
29
+ fontWeight: "bold",
30
+ textTransform: "none",
31
+ textAlign: "center",
32
+ children: userDisplayName
33
+ }),
34
+ user?.email && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
35
+ variant: "omega",
36
+ textColor: "neutral600",
37
+ children: user?.email
38
+ }),
39
+ user?.roles?.length && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
40
+ marginTop: 2,
41
+ gap: 1,
42
+ wrap: "wrap",
43
+ children: user?.roles?.map((role)=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.Badge, {
44
+ children: role.name
45
+ }, role.id))
46
+ })
47
+ ]
48
+ });
49
+ };
50
+
51
+ exports.ProfileWidget = ProfileWidget;
52
+ //# sourceMappingURL=Widgets.js.map