@strapi/admin 5.18.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 (30) hide show
  1. package/dist/admin/admin/src/components/GuidedTour/Provider.js +2 -1
  2. package/dist/admin/admin/src/components/GuidedTour/Provider.js.map +1 -1
  3. package/dist/admin/admin/src/components/GuidedTour/Provider.mjs +2 -1
  4. package/dist/admin/admin/src/components/GuidedTour/Provider.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/UnstableGuidedTour/Overview.js +24 -9
  6. package/dist/admin/admin/src/components/UnstableGuidedTour/Overview.js.map +1 -1
  7. package/dist/admin/admin/src/components/UnstableGuidedTour/Overview.mjs +25 -10
  8. package/dist/admin/admin/src/components/UnstableGuidedTour/Overview.mjs.map +1 -1
  9. package/dist/admin/admin/src/components/UnstableGuidedTour/Step.js +57 -27
  10. package/dist/admin/admin/src/components/UnstableGuidedTour/Step.js.map +1 -1
  11. package/dist/admin/admin/src/components/UnstableGuidedTour/Step.mjs +59 -30
  12. package/dist/admin/admin/src/components/UnstableGuidedTour/Step.mjs.map +1 -1
  13. package/dist/admin/admin/src/components/UnstableGuidedTour/Tours.js +62 -47
  14. package/dist/admin/admin/src/components/UnstableGuidedTour/Tours.js.map +1 -1
  15. package/dist/admin/admin/src/components/UnstableGuidedTour/Tours.mjs +62 -47
  16. package/dist/admin/admin/src/components/UnstableGuidedTour/Tours.mjs.map +1 -1
  17. package/dist/admin/admin/src/pages/Home/HomePage.js +1 -0
  18. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  19. package/dist/admin/admin/src/pages/Home/HomePage.mjs +1 -0
  20. package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
  21. package/dist/admin/admin/src/translations/en.json.js +10 -1
  22. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  23. package/dist/admin/admin/src/translations/en.json.mjs +10 -1
  24. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  25. package/dist/admin/admin/src/translations/es.json.js +2 -1
  26. package/dist/admin/admin/src/translations/es.json.js.map +1 -1
  27. package/dist/admin/admin/src/translations/es.json.mjs +2 -1
  28. package/dist/admin/admin/src/translations/es.json.mjs.map +1 -1
  29. package/dist/admin/src/components/UnstableGuidedTour/Step.d.ts +9 -3
  30. 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, Portal, Flex, LinkButton } from '@strapi/design-system';\nimport { FormattedMessage } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\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, createStepComponents } from './Step';\n\n/* -------------------------------------------------------------------------------------------------\n * Tours\n * -----------------------------------------------------------------------------------------------*/\n\nconst tours = {\n contentTypeBuilder: createTour('contentTypeBuilder', [\n {\n name: 'Introduction',\n content: (Step) => (\n <Step.Root side=\"bottom\">\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={26}>\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=\"Create and manage your content structure with collection types, single types and components.\"\n />\n <Step.Actions />\n </Step.Root>\n ),\n },\n {\n name: 'SingleTypes',\n content: (Step) => (\n <Step.Root side=\"right\" sideOffset={26}>\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) => (\n <Step.Root side=\"right\" sideOffset={26}>\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 />\n </Step.Root>\n ),\n },\n {\n name: 'Finish',\n content: (Step) => (\n <Step.Root side=\"right\" sideOffset={32}>\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 content: (Step) => (\n <Step.Root side=\"top\">\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 side={'top'} align=\"start\" sideOffset={-36}>\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) => (\n <Step.Root side=\"left\" align=\"center\" sideOffset={20}>\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 />\n </Step.Root>\n ),\n },\n {\n name: 'Finish',\n content: (Step) => (\n <Step.Root side=\"right\" sideOffset={32}>\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 content: (Step) => (\n <Step.Root sideOffset={-36}>\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 when: (completedActions) => !completedActions.includes('didCreateApiToken'),\n },\n {\n name: 'CreateAnAPIToken',\n content: (Step) => (\n <Step.Root side=\"bottom\" sideOffset={20} align=\"end\">\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) => (\n <Step.Root side=\"bottom\" align=\"start\">\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 </Step.Root>\n ),\n when: (completedActions) => completedActions.includes('didCreateApiToken'),\n },\n {\n name: 'Finish',\n content: (Step) => {\n const dispatch = unstableUseGuidedTour('GuidedTourPopover', (s) => s.dispatch);\n return (\n <Step.Root side=\"right\" align=\"start\" sideOffset={32}>\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}>\n <Flex justifyContent=\"end\" width={'100%'}>\n <LinkButton\n onClick={() => {\n dispatch({ type: 'next_step', payload: 'apiTokens' });\n }}\n tag={NavLink}\n to=\"/\"\n >\n <FormattedMessage id=\"tours.gotIt\" defaultMessage=\"Got it\" />\n </LinkButton>\n </Flex>\n </Step.Actions>\n </Step.Root>\n );\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":["tours","contentTypeBuilder","createTour","name","content","Step","_jsxs","Root","side","_jsx","Title","id","defaultMessage","Content","Actions","showSkip","sideOffset","showStepCount","to","when","completedActions","includes","contentManager","align","apiTokens","dispatch","unstableUseGuidedTour","s","Flex","justifyContent","width","LinkButton","onClick","type","payload","tag","NavLink","FormattedMessage","strapiCloud","UnstableGuidedTourTooltip","children","props","state","hasFutureFlag","window","strapi","future","isEnabled","enabled","_Fragment","GuidedTourTooltipImpl","GuidedTourOverlay","styled","Box","tourName","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
+ {"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,21 +1,30 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { Box, Flex, LinkButton, Portal, Popover } from '@strapi/design-system';
3
+ import { Box, Portal, Popover, Button } from '@strapi/design-system';
4
4
  import { FormattedMessage } from 'react-intl';
5
- import { NavLink } from 'react-router-dom';
6
5
  import { styled } from 'styled-components';
7
6
  import { useGetGuidedTourMetaQuery } from '../../services/admin.mjs';
8
7
  import { unstableUseGuidedTour } from './Context.mjs';
9
- import { createStepComponents } from './Step.mjs';
8
+ import { StepCount, createStepComponents } from './Step.mjs';
10
9
 
11
10
  /* -------------------------------------------------------------------------------------------------
12
11
  * Tours
13
- * -----------------------------------------------------------------------------------------------*/ const tours = {
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 = {
14
22
  contentTypeBuilder: createTour('contentTypeBuilder', [
15
23
  {
16
24
  name: 'Introduction',
17
25
  content: (Step)=>/*#__PURE__*/ jsxs(Step.Root, {
18
26
  side: "bottom",
27
+ withArrow: false,
19
28
  children: [
20
29
  /*#__PURE__*/ jsx(Step.Title, {
21
30
  id: "tours.contentTypeBuilder.Introduction.title",
@@ -35,7 +44,7 @@ import { createStepComponents } from './Step.mjs';
35
44
  name: 'CollectionTypes',
36
45
  content: (Step)=>/*#__PURE__*/ jsxs(Step.Root, {
37
46
  side: "right",
38
- sideOffset: 26,
47
+ sideOffset: 16,
39
48
  children: [
40
49
  /*#__PURE__*/ jsx(Step.Title, {
41
50
  id: "tours.contentTypeBuilder.CollectionTypes.title",
@@ -43,7 +52,7 @@ import { createStepComponents } from './Step.mjs';
43
52
  }),
44
53
  /*#__PURE__*/ jsx(Step.Content, {
45
54
  id: "tours.contentTypeBuilder.CollectionTypes.content",
46
- defaultMessage: "Create and manage your content structure with collection types, single types and components."
55
+ defaultMessage: "A content structure that can manage multiple entries, such as articles or products."
47
56
  }),
48
57
  /*#__PURE__*/ jsx(Step.Actions, {})
49
58
  ]
@@ -53,7 +62,7 @@ import { createStepComponents } from './Step.mjs';
53
62
  name: 'SingleTypes',
54
63
  content: (Step)=>/*#__PURE__*/ jsxs(Step.Root, {
55
64
  side: "right",
56
- sideOffset: 26,
65
+ sideOffset: 16,
57
66
  children: [
58
67
  /*#__PURE__*/ jsx(Step.Title, {
59
68
  id: "tours.contentTypeBuilder.SingleTypes.title",
@@ -69,9 +78,9 @@ import { createStepComponents } from './Step.mjs';
69
78
  },
70
79
  {
71
80
  name: 'Components',
72
- content: (Step)=>/*#__PURE__*/ jsxs(Step.Root, {
81
+ content: (Step, { dispatch })=>/*#__PURE__*/ jsxs(Step.Root, {
73
82
  side: "right",
74
- sideOffset: 26,
83
+ sideOffset: 16,
75
84
  children: [
76
85
  /*#__PURE__*/ jsx(Step.Title, {
77
86
  id: "tours.contentTypeBuilder.Components.title",
@@ -81,7 +90,15 @@ import { createStepComponents } from './Step.mjs';
81
90
  id: "tours.contentTypeBuilder.Components.content",
82
91
  defaultMessage: "A reusable content structure that can be used across multiple content types, such as buttons, sliders or cards."
83
92
  }),
84
- /*#__PURE__*/ jsx(Step.Actions, {})
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
+ })
85
102
  ]
86
103
  })
87
104
  },
@@ -89,7 +106,6 @@ import { createStepComponents } from './Step.mjs';
89
106
  name: 'Finish',
90
107
  content: (Step)=>/*#__PURE__*/ jsxs(Step.Root, {
91
108
  side: "right",
92
- sideOffset: 32,
93
109
  children: [
94
110
  /*#__PURE__*/ jsx(Step.Title, {
95
111
  id: "tours.contentTypeBuilder.Finish.title",
@@ -111,8 +127,10 @@ import { createStepComponents } from './Step.mjs';
111
127
  contentManager: createTour('contentManager', [
112
128
  {
113
129
  name: 'Introduction',
130
+ when: (completedActions)=>completedActions.includes('didCreateContentTypeSchema') && !completedActions.includes('didCreateContent'),
114
131
  content: (Step)=>/*#__PURE__*/ jsxs(Step.Root, {
115
132
  side: "top",
133
+ withArrow: false,
116
134
  children: [
117
135
  /*#__PURE__*/ jsx(Step.Title, {
118
136
  id: "tours.contentManager.Introduction.title",
@@ -131,9 +149,7 @@ import { createStepComponents } from './Step.mjs';
131
149
  {
132
150
  name: 'Fields',
133
151
  content: (Step)=>/*#__PURE__*/ jsxs(Step.Root, {
134
- side: 'top',
135
- align: "start",
136
- sideOffset: -36,
152
+ sideOffset: -12,
137
153
  children: [
138
154
  /*#__PURE__*/ jsx(Step.Title, {
139
155
  id: "tours.contentManager.Fields.title",
@@ -149,10 +165,9 @@ import { createStepComponents } from './Step.mjs';
149
165
  },
150
166
  {
151
167
  name: 'Publish',
152
- content: (Step)=>/*#__PURE__*/ jsxs(Step.Root, {
168
+ content: (Step, { dispatch })=>/*#__PURE__*/ jsxs(Step.Root, {
153
169
  side: "left",
154
170
  align: "center",
155
- sideOffset: 20,
156
171
  children: [
157
172
  /*#__PURE__*/ jsx(Step.Title, {
158
173
  id: "tours.contentManager.Publish.title",
@@ -162,7 +177,15 @@ import { createStepComponents } from './Step.mjs';
162
177
  id: "tours.contentManager.Publish.content",
163
178
  defaultMessage: "Publish entries to make their content available through the Document Service API."
164
179
  }),
165
- /*#__PURE__*/ jsx(Step.Actions, {})
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
+ })
166
189
  ]
167
190
  })
168
191
  },
@@ -170,7 +193,6 @@ import { createStepComponents } from './Step.mjs';
170
193
  name: 'Finish',
171
194
  content: (Step)=>/*#__PURE__*/ jsxs(Step.Root, {
172
195
  side: "right",
173
- sideOffset: 32,
174
196
  children: [
175
197
  /*#__PURE__*/ jsx(Step.Title, {
176
198
  id: "tours.contentManager.FinalStep.title",
@@ -192,8 +214,10 @@ import { createStepComponents } from './Step.mjs';
192
214
  apiTokens: createTour('apiTokens', [
193
215
  {
194
216
  name: 'Introduction',
217
+ when: (completedActions)=>!completedActions.includes('didCreateApiToken'),
195
218
  content: (Step)=>/*#__PURE__*/ jsxs(Step.Root, {
196
219
  sideOffset: -36,
220
+ withArrow: false,
197
221
  children: [
198
222
  /*#__PURE__*/ jsx(Step.Title, {
199
223
  id: "tours.apiTokens.Introduction.title",
@@ -207,15 +231,14 @@ import { createStepComponents } from './Step.mjs';
207
231
  showSkip: true
208
232
  })
209
233
  ]
210
- }),
211
- when: (completedActions)=>!completedActions.includes('didCreateApiToken')
234
+ })
212
235
  },
213
236
  {
214
237
  name: 'CreateAnAPIToken',
215
238
  content: (Step)=>/*#__PURE__*/ jsxs(Step.Root, {
216
239
  side: "bottom",
217
- sideOffset: 20,
218
240
  align: "end",
241
+ sideOffset: -10,
219
242
  children: [
220
243
  /*#__PURE__*/ jsx(Step.Title, {
221
244
  id: "tours.apiTokens.CreateAnAPIToken.title",
@@ -231,9 +254,10 @@ import { createStepComponents } from './Step.mjs';
231
254
  },
232
255
  {
233
256
  name: 'CopyAPIToken',
234
- content: (Step)=>/*#__PURE__*/ jsxs(Step.Root, {
257
+ content: (Step, { dispatch })=>/*#__PURE__*/ jsxs(Step.Root, {
235
258
  side: "bottom",
236
259
  align: "start",
260
+ sideOffset: -5,
237
261
  children: [
238
262
  /*#__PURE__*/ jsx(Step.Title, {
239
263
  id: "tours.apiTokens.CopyAPIToken.title",
@@ -243,19 +267,28 @@ import { createStepComponents } from './Step.mjs';
243
267
  id: "tours.apiTokens.CopyAPIToken.content",
244
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."
245
269
  }),
246
- /*#__PURE__*/ jsx(Step.Actions, {})
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
+ })
247
283
  ]
248
284
  }),
249
285
  when: (completedActions)=>completedActions.includes('didCreateApiToken')
250
286
  },
251
287
  {
252
288
  name: 'Finish',
253
- content: (Step)=>{
254
- const dispatch = unstableUseGuidedTour('GuidedTourPopover', (s)=>s.dispatch);
255
- return /*#__PURE__*/ jsxs(Step.Root, {
289
+ content: (Step)=>/*#__PURE__*/ jsxs(Step.Root, {
256
290
  side: "right",
257
291
  align: "start",
258
- sideOffset: 32,
259
292
  children: [
260
293
  /*#__PURE__*/ jsx(Step.Title, {
261
294
  id: "tours.apiTokens.FinalStep.title",
@@ -267,28 +300,10 @@ import { createStepComponents } from './Step.mjs';
267
300
  }),
268
301
  /*#__PURE__*/ jsx(Step.Actions, {
269
302
  showStepCount: false,
270
- children: /*#__PURE__*/ jsx(Flex, {
271
- justifyContent: "end",
272
- width: '100%',
273
- children: /*#__PURE__*/ jsx(LinkButton, {
274
- onClick: ()=>{
275
- dispatch({
276
- type: 'next_step',
277
- payload: 'apiTokens'
278
- });
279
- },
280
- tag: NavLink,
281
- to: "/",
282
- children: /*#__PURE__*/ jsx(FormattedMessage, {
283
- id: "tours.gotIt",
284
- defaultMessage: "Got it"
285
- })
286
- })
287
- })
303
+ to: "/"
288
304
  })
289
305
  ]
290
- });
291
- },
306
+ }),
292
307
  when: (completedActions)=>completedActions.includes('didCopyApiToken')
293
308
  }
294
309
  ]),
@@ -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, Portal, Flex, LinkButton } from '@strapi/design-system';\nimport { FormattedMessage } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\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, createStepComponents } from './Step';\n\n/* -------------------------------------------------------------------------------------------------\n * Tours\n * -----------------------------------------------------------------------------------------------*/\n\nconst tours = {\n contentTypeBuilder: createTour('contentTypeBuilder', [\n {\n name: 'Introduction',\n content: (Step) => (\n <Step.Root side=\"bottom\">\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={26}>\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=\"Create and manage your content structure with collection types, single types and components.\"\n />\n <Step.Actions />\n </Step.Root>\n ),\n },\n {\n name: 'SingleTypes',\n content: (Step) => (\n <Step.Root side=\"right\" sideOffset={26}>\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) => (\n <Step.Root side=\"right\" sideOffset={26}>\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 />\n </Step.Root>\n ),\n },\n {\n name: 'Finish',\n content: (Step) => (\n <Step.Root side=\"right\" sideOffset={32}>\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 content: (Step) => (\n <Step.Root side=\"top\">\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 side={'top'} align=\"start\" sideOffset={-36}>\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) => (\n <Step.Root side=\"left\" align=\"center\" sideOffset={20}>\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 />\n </Step.Root>\n ),\n },\n {\n name: 'Finish',\n content: (Step) => (\n <Step.Root side=\"right\" sideOffset={32}>\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 content: (Step) => (\n <Step.Root sideOffset={-36}>\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 when: (completedActions) => !completedActions.includes('didCreateApiToken'),\n },\n {\n name: 'CreateAnAPIToken',\n content: (Step) => (\n <Step.Root side=\"bottom\" sideOffset={20} align=\"end\">\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) => (\n <Step.Root side=\"bottom\" align=\"start\">\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 </Step.Root>\n ),\n when: (completedActions) => completedActions.includes('didCreateApiToken'),\n },\n {\n name: 'Finish',\n content: (Step) => {\n const dispatch = unstableUseGuidedTour('GuidedTourPopover', (s) => s.dispatch);\n return (\n <Step.Root side=\"right\" align=\"start\" sideOffset={32}>\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}>\n <Flex justifyContent=\"end\" width={'100%'}>\n <LinkButton\n onClick={() => {\n dispatch({ type: 'next_step', payload: 'apiTokens' });\n }}\n tag={NavLink}\n to=\"/\"\n >\n <FormattedMessage id=\"tours.gotIt\" defaultMessage=\"Got it\" />\n </LinkButton>\n </Flex>\n </Step.Actions>\n </Step.Root>\n );\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":["tours","contentTypeBuilder","createTour","name","content","Step","_jsxs","Root","side","_jsx","Title","id","defaultMessage","Content","Actions","showSkip","sideOffset","showStepCount","to","when","completedActions","includes","contentManager","align","apiTokens","dispatch","unstableUseGuidedTour","s","Flex","justifyContent","width","LinkButton","onClick","type","payload","tag","NavLink","FormattedMessage","strapiCloud","UnstableGuidedTourTooltip","children","props","state","hasFutureFlag","window","strapi","future","isEnabled","enabled","_Fragment","GuidedTourTooltipImpl","GuidedTourOverlay","styled","Box","tourName","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
+ {"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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"}
@@ -101,6 +101,7 @@ const WidgetRoot = ({ title, icon = icons.PuzzlePiece, permissions = [], childre
101
101
  style: {
102
102
  textDecoration: 'none'
103
103
  },
104
+ textAlign: "right",
104
105
  to: link.href,
105
106
  children: formatMessage(link.label)
106
107
  })
@@ -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 { 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
+ {"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 textAlign=\"right\"\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","textAlign","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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"}
@@ -80,6 +80,7 @@ const WidgetRoot = ({ title, icon = PuzzlePiece, permissions = [], children, lin
80
80
  style: {
81
81
  textDecoration: 'none'
82
82
  },
83
+ textAlign: "right",
83
84
  to: link.href,
84
85
  children: formatMessage(link.label)
85
86
  })