@strapi/admin 5.22.0 → 5.23.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 (122) hide show
  1. package/dist/admin/admin/src/components/GuidedTour/Context.js +48 -8
  2. package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
  3. package/dist/admin/admin/src/components/GuidedTour/Context.mjs +48 -9
  4. package/dist/admin/admin/src/components/GuidedTour/Context.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/GuidedTour/Overview.js +35 -24
  6. package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
  7. package/dist/admin/admin/src/components/GuidedTour/Overview.mjs +36 -25
  8. package/dist/admin/admin/src/components/GuidedTour/Overview.mjs.map +1 -1
  9. package/dist/admin/admin/src/components/GuidedTour/Steps/ApiTokensSteps.js +156 -0
  10. package/dist/admin/admin/src/components/GuidedTour/Steps/ApiTokensSteps.js.map +1 -0
  11. package/dist/admin/admin/src/components/GuidedTour/Steps/ApiTokensSteps.mjs +154 -0
  12. package/dist/admin/admin/src/components/GuidedTour/Steps/ApiTokensSteps.mjs.map +1 -0
  13. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentManagerSteps.js +221 -0
  14. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentManagerSteps.js.map +1 -0
  15. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentManagerSteps.mjs +219 -0
  16. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentManagerSteps.mjs.map +1 -0
  17. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js +219 -0
  18. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js.map +1 -0
  19. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs +217 -0
  20. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs.map +1 -0
  21. package/dist/admin/admin/src/components/GuidedTour/{Step.js → Steps/Step.js} +116 -71
  22. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -0
  23. package/dist/admin/admin/src/components/GuidedTour/{Step.mjs → Steps/Step.mjs} +117 -74
  24. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.mjs.map +1 -0
  25. package/dist/admin/admin/src/components/GuidedTour/Tours.js +47 -324
  26. package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
  27. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs +48 -326
  28. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -1
  29. package/dist/admin/admin/src/components/GuidedTour/utils/constants.js +19 -0
  30. package/dist/admin/admin/src/components/GuidedTour/utils/constants.js.map +1 -0
  31. package/dist/admin/admin/src/components/GuidedTour/utils/constants.mjs +17 -0
  32. package/dist/admin/admin/src/components/GuidedTour/utils/constants.mjs.map +1 -0
  33. package/dist/admin/admin/src/components/GuidedTour/utils/migrations.js +31 -0
  34. package/dist/admin/admin/src/components/GuidedTour/utils/migrations.js.map +1 -0
  35. package/dist/admin/admin/src/components/GuidedTour/utils/migrations.mjs +29 -0
  36. package/dist/admin/admin/src/components/GuidedTour/utils/migrations.mjs.map +1 -0
  37. package/dist/admin/admin/src/components/SubNav.js +3 -1
  38. package/dist/admin/admin/src/components/SubNav.js.map +1 -1
  39. package/dist/admin/admin/src/components/SubNav.mjs +3 -1
  40. package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
  41. package/dist/admin/admin/src/components/Widgets.js +4 -0
  42. package/dist/admin/admin/src/components/Widgets.js.map +1 -1
  43. package/dist/admin/admin/src/components/Widgets.mjs +5 -1
  44. package/dist/admin/admin/src/components/Widgets.mjs.map +1 -1
  45. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  46. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  47. package/dist/admin/admin/src/pages/Home/HomePage.js +10 -1
  48. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  49. package/dist/admin/admin/src/pages/Home/HomePage.mjs +10 -1
  50. package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
  51. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +17 -14
  52. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  53. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs +17 -14
  54. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs.map +1 -1
  55. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +31 -6
  56. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  57. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs +12 -6
  58. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs.map +1 -1
  59. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js +28 -24
  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 +28 -24
  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.map +1 -1
  64. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs.map +1 -1
  65. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +56 -57
  66. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
  67. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs +57 -58
  68. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs.map +1 -1
  69. package/dist/admin/admin/src/services/apiTokens.js +0 -1
  70. package/dist/admin/admin/src/services/apiTokens.js.map +1 -1
  71. package/dist/admin/admin/src/services/apiTokens.mjs +0 -1
  72. package/dist/admin/admin/src/services/apiTokens.mjs.map +1 -1
  73. package/dist/admin/admin/src/translations/en.json.js +33 -21
  74. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  75. package/dist/admin/admin/src/translations/en.json.mjs +33 -21
  76. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  77. package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js +2 -2
  78. package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js.map +1 -1
  79. package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.mjs +2 -2
  80. package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.mjs.map +1 -1
  81. package/dist/admin/index.js +6 -2
  82. package/dist/admin/index.js.map +1 -1
  83. package/dist/admin/index.mjs +2 -0
  84. package/dist/admin/index.mjs.map +1 -1
  85. package/dist/admin/src/components/GuidedTour/Context.d.ts +28 -10
  86. package/dist/admin/src/components/GuidedTour/Steps/ApiTokensSteps.d.ts +20 -0
  87. package/dist/admin/src/components/GuidedTour/Steps/ContentManagerSteps.d.ts +21 -0
  88. package/dist/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.d.ts +30 -0
  89. package/dist/admin/src/components/GuidedTour/{Step.d.ts → Steps/Step.d.ts} +25 -6
  90. package/dist/admin/src/components/GuidedTour/Tours.d.ts +53 -14
  91. package/dist/admin/src/components/GuidedTour/utils/constants.d.ts +15 -0
  92. package/dist/admin/src/components/GuidedTour/utils/migrations.d.ts +6 -0
  93. package/dist/admin/src/features/Tracking.d.ts +23 -4
  94. package/dist/admin/src/index.d.ts +5 -0
  95. package/dist/admin/src/pages/Home/HomePage.d.ts +2 -2
  96. package/dist/server/server/src/controllers/admin.js +2 -5
  97. package/dist/server/server/src/controllers/admin.js.map +1 -1
  98. package/dist/server/server/src/controllers/admin.mjs +2 -5
  99. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  100. package/dist/server/server/src/services/index.js +0 -2
  101. package/dist/server/server/src/services/index.js.map +1 -1
  102. package/dist/server/server/src/services/index.mjs +0 -2
  103. package/dist/server/server/src/services/index.mjs.map +1 -1
  104. package/dist/server/src/controllers/admin.d.ts +1 -1
  105. package/dist/server/src/controllers/admin.d.ts.map +1 -1
  106. package/dist/server/src/controllers/index.d.ts +1 -1
  107. package/dist/server/src/index.d.ts +1 -6
  108. package/dist/server/src/index.d.ts.map +1 -1
  109. package/dist/server/src/services/constants.d.ts +1 -0
  110. package/dist/server/src/services/guided-tour.d.ts +2 -3
  111. package/dist/server/src/services/guided-tour.d.ts.map +1 -1
  112. package/dist/server/src/services/index.d.ts +0 -5
  113. package/dist/server/src/services/index.d.ts.map +1 -1
  114. package/dist/shared/contracts/admin.d.ts +2 -2
  115. package/dist/shared/contracts/admin.d.ts.map +1 -1
  116. package/package.json +7 -7
  117. package/dist/admin/admin/src/components/GuidedTour/Step.js.map +0 -1
  118. package/dist/admin/admin/src/components/GuidedTour/Step.mjs.map +0 -1
  119. package/dist/server/server/src/services/guided-tour.js +0 -61
  120. package/dist/server/server/src/services/guided-tour.js.map +0 -1
  121. package/dist/server/server/src/services/guided-tour.mjs +0 -59
  122. package/dist/server/server/src/services/guided-tour.mjs.map +0 -1
@@ -6,8 +6,9 @@ var designSystem = require('@strapi/design-system');
6
6
  var reactIntl = require('react-intl');
7
7
  var reactRouterDom = require('react-router-dom');
8
8
  var styled = require('styled-components');
9
- var Tracking = require('../../features/Tracking.js');
10
- var Context = require('./Context.js');
9
+ var Tracking = require('../../../features/Tracking.js');
10
+ var Context = require('../Context.js');
11
+ var Tours = require('../Tours.js');
11
12
 
12
13
  function _interopNamespaceDefault(e) {
13
14
  var n = Object.create(null);
@@ -28,21 +29,12 @@ function _interopNamespaceDefault(e) {
28
29
 
29
30
  var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
30
31
 
31
- const ActionsContainer = styled.styled(designSystem.Flex)`
32
- border-top: ${({ theme })=>`1px solid ${theme.colors.neutral150}`};
33
- `;
34
- /**
35
- * TODO:
36
- * We should probably move all arrow styles + svg to the DS
37
- */ const PopoverArrow = styled.styled(designSystem.Popover.Arrow)`
38
- fill: ${({ theme })=>theme.colors.neutral0};
39
- transform: translateY(-16px) rotate(-90deg);
40
- `;
41
- const StepCount = ({ tourName })=>{
32
+ /* -------------------------------------------------------------------------------------------------
33
+ * Common Step Components
34
+ * -----------------------------------------------------------------------------------------------*/ const StepCount = ({ tourName, displayedCurrentStep, displayedTourLength })=>{
42
35
  const state = Context.useGuidedTour('GuidedTourPopover', (s)=>s.state);
43
- const currentStep = state.tours[tourName].currentStep + 1;
44
- // TODO: Currently all tours do not count their last step, but we should find a way to make this more smart
45
- const displayedLength = state.tours[tourName].length - 1;
36
+ const currentStep = displayedCurrentStep ?? state.tours[tourName].currentStep + 1;
37
+ const displayedStepCount = displayedTourLength ?? Tours.tours[tourName]._meta.displayedStepCount;
46
38
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
47
39
  variant: "omega",
48
40
  fontSize: "12px",
@@ -51,11 +43,107 @@ const StepCount = ({ tourName })=>{
51
43
  defaultMessage: "Step {currentStep} of {tourLength}",
52
44
  values: {
53
45
  currentStep,
54
- tourLength: displayedLength
46
+ tourLength: displayedStepCount
55
47
  }
56
48
  })
57
49
  });
58
50
  };
51
+ const GotItAction = ({ onClick })=>{
52
+ return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
53
+ onClick: onClick,
54
+ children: /*#__PURE__*/ jsxRuntime.jsx(reactIntl.FormattedMessage, {
55
+ id: "tours.gotIt",
56
+ defaultMessage: "Got it"
57
+ })
58
+ });
59
+ };
60
+ const DefaultActions = ({ showSkip, showPrevious, to, tourName, onNextStep, onPreviousStep })=>{
61
+ const { trackUsage } = Tracking.useTracking();
62
+ const dispatch = Context.useGuidedTour('GuidedTourPopover', (s)=>s.dispatch);
63
+ const state = Context.useGuidedTour('GuidedTourPopover', (s)=>s.state);
64
+ const currentStep = state.tours[tourName].currentStep + 1;
65
+ const actualTourLength = Tours.tours[tourName]._meta.totalStepCount;
66
+ const handleSkip = ()=>{
67
+ trackUsage('didSkipGuidedTour', {
68
+ name: tourName
69
+ });
70
+ dispatch({
71
+ type: 'skip_tour',
72
+ payload: tourName
73
+ });
74
+ };
75
+ const handleNextStep = ()=>{
76
+ if (currentStep === actualTourLength) {
77
+ trackUsage('didCompleteGuidedTour', {
78
+ name: tourName
79
+ });
80
+ }
81
+ if (onNextStep) {
82
+ onNextStep();
83
+ } else {
84
+ dispatch({
85
+ type: 'next_step',
86
+ payload: tourName
87
+ });
88
+ }
89
+ };
90
+ const handlePreviousStep = ()=>{
91
+ if (onPreviousStep) {
92
+ onPreviousStep();
93
+ } else {
94
+ dispatch({
95
+ type: 'previous_step',
96
+ payload: tourName
97
+ });
98
+ }
99
+ };
100
+ return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
101
+ gap: 2,
102
+ children: [
103
+ showSkip && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
104
+ variant: "tertiary",
105
+ onClick: handleSkip,
106
+ children: /*#__PURE__*/ jsxRuntime.jsx(reactIntl.FormattedMessage, {
107
+ id: "tours.skip",
108
+ defaultMessage: "Skip"
109
+ })
110
+ }),
111
+ !showSkip && showPrevious && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
112
+ variant: "tertiary",
113
+ onClick: handlePreviousStep,
114
+ children: /*#__PURE__*/ jsxRuntime.jsx(reactIntl.FormattedMessage, {
115
+ id: "tours.previous",
116
+ defaultMessage: "Previous"
117
+ })
118
+ }),
119
+ to ? /*#__PURE__*/ jsxRuntime.jsx(designSystem.LinkButton, {
120
+ tag: reactRouterDom.NavLink,
121
+ to: to,
122
+ onClick: handleNextStep,
123
+ children: /*#__PURE__*/ jsxRuntime.jsx(reactIntl.FormattedMessage, {
124
+ id: "tours.next",
125
+ defaultMessage: "Next"
126
+ })
127
+ }) : /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
128
+ onClick: handleNextStep,
129
+ children: /*#__PURE__*/ jsxRuntime.jsx(reactIntl.FormattedMessage, {
130
+ id: "tours.next",
131
+ defaultMessage: "Next"
132
+ })
133
+ })
134
+ ]
135
+ });
136
+ };
137
+ const ActionsContainer = styled.styled(designSystem.Flex)`
138
+ border-top: ${({ theme })=>`1px solid ${theme.colors.neutral150}`};
139
+ `;
140
+ /**
141
+ * TODO:
142
+ * We should probably move all arrow styles + svg to the DS
143
+ */ const PopoverArrow = styled.styled(designSystem.Popover.Arrow)`
144
+ fill: ${({ theme })=>theme.colors.neutral0};
145
+ transform: translateY(-16px) rotate(-90deg);
146
+ `;
59
147
  const createStepComponents = (tourName)=>({
60
148
  Root: /*#__PURE__*/ React__namespace.forwardRef(({ withArrow = true, ...props }, ref)=>{
61
149
  return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Popover.Content, {
@@ -66,6 +154,7 @@ const createStepComponents = (tourName)=>({
66
154
  style: {
67
155
  border: 'none'
68
156
  },
157
+ onClick: (e)=>e.stopPropagation(),
69
158
  ...props,
70
159
  children: [
71
160
  withArrow && /*#__PURE__*/ jsxRuntime.jsx(PopoverArrow, {
@@ -119,36 +208,12 @@ const createStepComponents = (tourName)=>({
119
208
  variant: "omega",
120
209
  children: /*#__PURE__*/ jsxRuntime.jsx(reactIntl.FormattedMessage, {
121
210
  id: props.id,
122
- defaultMessage: props.defaultMessage
211
+ defaultMessage: props.defaultMessage,
212
+ values: props.values
123
213
  })
124
214
  })
125
215
  }),
126
- Actions: ({ showStepCount = true, showSkip = false, to, children, ...flexProps })=>{
127
- const { trackUsage } = Tracking.useTracking();
128
- const dispatch = Context.useGuidedTour('GuidedTourPopover', (s)=>s.dispatch);
129
- const state = Context.useGuidedTour('GuidedTourPopover', (s)=>s.state);
130
- const currentStep = state.tours[tourName].currentStep + 1;
131
- const actualTourLength = state.tours[tourName].length;
132
- const handleSkipAction = ()=>{
133
- trackUsage('didSkipGuidedTour', {
134
- name: tourName
135
- });
136
- dispatch({
137
- type: 'skip_tour',
138
- payload: tourName
139
- });
140
- };
141
- const handleNextStep = ()=>{
142
- if (currentStep === actualTourLength) {
143
- trackUsage('didCompleteGuidedTour', {
144
- name: tourName
145
- });
146
- }
147
- dispatch({
148
- type: 'next_step',
149
- payload: tourName
150
- });
151
- };
216
+ Actions: ({ showStepCount = true, showPrevious = true, showSkip = false, to, children, ...flexProps })=>{
152
217
  return /*#__PURE__*/ jsxRuntime.jsx(ActionsContainer, {
153
218
  width: "100%",
154
219
  padding: 3,
@@ -160,33 +225,11 @@ const createStepComponents = (tourName)=>({
160
225
  showStepCount && /*#__PURE__*/ jsxRuntime.jsx(StepCount, {
161
226
  tourName: tourName
162
227
  }),
163
- /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
164
- gap: 2,
165
- children: [
166
- showSkip && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
167
- variant: "tertiary",
168
- onClick: handleSkipAction,
169
- children: /*#__PURE__*/ jsxRuntime.jsx(reactIntl.FormattedMessage, {
170
- id: "tours.skip",
171
- defaultMessage: "Skip"
172
- })
173
- }),
174
- to ? /*#__PURE__*/ jsxRuntime.jsx(designSystem.LinkButton, {
175
- tag: reactRouterDom.NavLink,
176
- to: to,
177
- onClick: handleNextStep,
178
- children: /*#__PURE__*/ jsxRuntime.jsx(reactIntl.FormattedMessage, {
179
- id: "tours.next",
180
- defaultMessage: "Next"
181
- })
182
- }) : /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
183
- onClick: handleNextStep,
184
- children: /*#__PURE__*/ jsxRuntime.jsx(reactIntl.FormattedMessage, {
185
- id: "tours.next",
186
- defaultMessage: "Next"
187
- })
188
- })
189
- ]
228
+ /*#__PURE__*/ jsxRuntime.jsx(DefaultActions, {
229
+ tourName: tourName,
230
+ showSkip: showSkip,
231
+ showPrevious: !showSkip && showPrevious,
232
+ to: to
190
233
  })
191
234
  ]
192
235
  })
@@ -194,6 +237,8 @@ const createStepComponents = (tourName)=>({
194
237
  }
195
238
  });
196
239
 
240
+ exports.DefaultActions = DefaultActions;
241
+ exports.GotItAction = GotItAction;
197
242
  exports.StepCount = StepCount;
198
243
  exports.createStepComponents = createStepComponents;
199
244
  //# sourceMappingURL=Step.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Step.js","sources":["../../../../../../../admin/src/components/GuidedTour/Steps/Step.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Popover,\n Box,\n Flex,\n Button,\n Typography,\n LinkButton,\n FlexProps,\n} from '@strapi/design-system';\nimport { FormattedMessage, type MessageDescriptor } from 'react-intl';\nimport { To, NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useTracking } from '../../../features/Tracking';\nimport { useGuidedTour, type ValidTourName } from '../Context';\nimport { tours } from '../Tours';\n\n/* -------------------------------------------------------------------------------------------------\n * Common Step Components\n * -----------------------------------------------------------------------------------------------*/\n\nconst StepCount = ({\n tourName,\n displayedCurrentStep,\n displayedTourLength,\n}: {\n tourName: ValidTourName;\n displayedCurrentStep?: number;\n displayedTourLength?: number;\n}) => {\n const state = useGuidedTour('GuidedTourPopover', (s) => s.state);\n const currentStep = displayedCurrentStep ?? state.tours[tourName].currentStep + 1;\n const displayedStepCount = displayedTourLength ?? tours[tourName]._meta.displayedStepCount;\n\n return (\n <Typography variant=\"omega\" fontSize=\"12px\">\n <FormattedMessage\n id=\"tours.stepCount\"\n defaultMessage=\"Step {currentStep} of {tourLength}\"\n values={{ currentStep, tourLength: displayedStepCount }}\n />\n </Typography>\n );\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\nexport type DefaultActionsProps = {\n showSkip?: boolean;\n showPrevious?: boolean;\n to?: To;\n onNextStep?: () => void;\n onPreviousStep?: () => void;\n tourName: ValidTourName;\n};\nconst DefaultActions = ({\n showSkip,\n showPrevious,\n to,\n tourName,\n onNextStep,\n onPreviousStep,\n}: DefaultActionsProps) => {\n const { trackUsage } = useTracking();\n const dispatch = useGuidedTour('GuidedTourPopover', (s) => s.dispatch);\n const state = useGuidedTour('GuidedTourPopover', (s) => s.state);\n const currentStep = state.tours[tourName].currentStep + 1;\n const actualTourLength = tours[tourName]._meta.totalStepCount;\n\n const handleSkip = () => {\n trackUsage('didSkipGuidedTour', { name: tourName });\n dispatch({ type: 'skip_tour', payload: tourName });\n };\n\n const handleNextStep = () => {\n if (currentStep === actualTourLength) {\n trackUsage('didCompleteGuidedTour', { name: tourName });\n }\n\n if (onNextStep) {\n onNextStep();\n } else {\n dispatch({ type: 'next_step', payload: tourName });\n }\n };\n\n const handlePreviousStep = () => {\n if (onPreviousStep) {\n onPreviousStep();\n } else {\n dispatch({ type: 'previous_step', payload: tourName });\n }\n };\n\n return (\n <Flex gap={2}>\n {showSkip && (\n <Button variant=\"tertiary\" onClick={handleSkip}>\n <FormattedMessage id=\"tours.skip\" defaultMessage=\"Skip\" />\n </Button>\n )}\n {!showSkip && showPrevious && (\n <Button variant=\"tertiary\" onClick={handlePreviousStep}>\n <FormattedMessage id=\"tours.previous\" defaultMessage=\"Previous\" />\n </Button>\n )}\n {to ? (\n <LinkButton tag={NavLink} to={to} onClick={handleNextStep}>\n <FormattedMessage id=\"tours.next\" defaultMessage=\"Next\" />\n </LinkButton>\n ) : (\n <Button onClick={handleNextStep}>\n <FormattedMessage id=\"tours.next\" defaultMessage=\"Next\" />\n </Button>\n )}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Step factory\n * -----------------------------------------------------------------------------------------------*/\n\ntype WithChildren = {\n children: React.ReactNode;\n id?: never;\n defaultMessage?: never;\n};\n\ntype WithIntl = {\n children?: undefined;\n id: MessageDescriptor['id'];\n defaultMessage: MessageDescriptor['defaultMessage'];\n withArrow?: boolean;\n};\n\ntype WithActionsChildren = {\n children: React.ReactNode;\n showStepCount?: boolean;\n showSkip?: boolean;\n showPrevious?: boolean;\n};\n\ntype WithActionsProps = {\n children?: undefined;\n showStepCount?: boolean;\n showSkip?: boolean;\n showPrevious?: boolean;\n};\n\ntype StepProps = WithChildren | WithIntl;\ntype ActionsProps = WithActionsChildren | WithActionsProps;\n\ntype Step = {\n Root: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof Popover.Content> & { withArrow?: boolean }\n >;\n Title: (props: StepProps) => React.ReactNode;\n Content: (\n props: StepProps & {\n values?: Record<string, React.ReactNode | ((chunks: React.ReactNode) => React.ReactNode)>;\n }\n ) => React.ReactNode;\n Actions: (props: ActionsProps & { to?: string } & FlexProps) => React.ReactNode;\n};\n\nconst ActionsContainer = styled(Flex)`\n border-top: ${({ theme }) => `1px solid ${theme.colors.neutral150}`};\n`;\n\n/**\n * TODO:\n * We should probably move all arrow styles + svg to the DS\n */\nconst PopoverArrow = styled(Popover.Arrow)`\n fill: ${({ theme }) => theme.colors.neutral0};\n transform: translateY(-16px) rotate(-90deg);\n`;\n\nconst createStepComponents = (tourName: ValidTourName): Step => ({\n Root: React.forwardRef(({ withArrow = true, ...props }, ref) => {\n return (\n <Popover.Content\n ref={ref}\n aria-labelledby=\"guided-tour-title\"\n side=\"top\"\n align=\"center\"\n style={{ border: 'none' }}\n onClick={(e) => e.stopPropagation()}\n {...props}\n >\n {withArrow && (\n <PopoverArrow asChild>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"23\"\n height=\"25\"\n viewBox=\"0 0 23 25\"\n fill=\"none\"\n >\n <path d=\"M11 24.5L1.82843 15.3284C0.266332 13.7663 0.26633 11.2337 1.82843 9.67157L11 0.5L23 12.5L11 24.5Z\" />\n </svg>\n </PopoverArrow>\n )}\n <Flex width=\"360px\" direction=\"column\" alignItems=\"start\">\n {props.children}\n </Flex>\n </Popover.Content>\n );\n }),\n\n Title: (props) => {\n return (\n <Box paddingTop={5} paddingLeft={5} paddingRight={5} paddingBottom={1} width=\"100%\">\n {'children' in props ? (\n props.children\n ) : (\n <Typography tag=\"h1\" id=\"guided-tour-title\" variant=\"omega\" fontWeight=\"bold\">\n <FormattedMessage id={props.id} defaultMessage={props.defaultMessage} />\n </Typography>\n )}\n </Box>\n );\n },\n\n Content: (props) => (\n <Box paddingBottom={5} paddingLeft={5} paddingRight={5} width=\"100%\">\n {'children' in props ? (\n props.children\n ) : (\n <Typography tag=\"div\" variant=\"omega\">\n <FormattedMessage\n id={props.id}\n defaultMessage={props.defaultMessage}\n values={props.values}\n />\n </Typography>\n )}\n </Box>\n ),\n\n Actions: ({\n showStepCount = true,\n showPrevious = true,\n showSkip = false,\n to,\n children,\n ...flexProps\n }) => {\n return (\n <ActionsContainer\n width=\"100%\"\n padding={3}\n paddingLeft={5}\n justifyContent={showStepCount ? 'space-between' : 'flex-end'}\n {...flexProps}\n >\n {children ? (\n children\n ) : (\n <>\n {showStepCount && <StepCount tourName={tourName} />}\n <DefaultActions\n tourName={tourName}\n showSkip={showSkip}\n showPrevious={!showSkip && showPrevious}\n to={to}\n />\n </>\n )}\n </ActionsContainer>\n );\n },\n});\n\nexport type { Step };\nexport { createStepComponents, GotItAction, StepCount, DefaultActions };\n"],"names":["StepCount","tourName","displayedCurrentStep","displayedTourLength","state","useGuidedTour","s","currentStep","tours","displayedStepCount","_meta","_jsx","Typography","variant","fontSize","FormattedMessage","id","defaultMessage","values","tourLength","GotItAction","onClick","Button","DefaultActions","showSkip","showPrevious","to","onNextStep","onPreviousStep","trackUsage","useTracking","dispatch","actualTourLength","totalStepCount","handleSkip","name","type","payload","handleNextStep","handlePreviousStep","_jsxs","Flex","gap","LinkButton","tag","NavLink","ActionsContainer","styled","theme","colors","neutral150","PopoverArrow","Popover","Arrow","neutral0","createStepComponents","Root","React","forwardRef","withArrow","props","ref","Content","aria-labelledby","side","align","style","border","e","stopPropagation","asChild","svg","xmlns","width","height","viewBox","fill","path","d","direction","alignItems","children","Title","Box","paddingTop","paddingLeft","paddingRight","paddingBottom","fontWeight","Actions","showStepCount","flexProps","padding","justifyContent","_Fragment"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA;;qGAIA,MAAMA,YAAY,CAAC,EACjBC,QAAQ,EACRC,oBAAoB,EACpBC,mBAAmB,EAKpB,GAAA;AACC,IAAA,MAAMC,QAAQC,qBAAc,CAAA,mBAAA,EAAqB,CAACC,CAAAA,GAAMA,EAAEF,KAAK,CAAA;IAC/D,MAAMG,WAAAA,GAAcL,wBAAwBE,KAAMI,CAAAA,KAAK,CAACP,QAAS,CAAA,CAACM,WAAW,GAAG,CAAA;IAChF,MAAME,kBAAAA,GAAqBN,uBAAuBK,WAAK,CAACP,SAAS,CAACS,KAAK,CAACD,kBAAkB;AAE1F,IAAA,qBACEE,cAACC,CAAAA,uBAAAA,EAAAA;QAAWC,OAAQ,EAAA,OAAA;QAAQC,QAAS,EAAA,MAAA;AACnC,QAAA,QAAA,gBAAAH,cAACI,CAAAA,0BAAAA,EAAAA;YACCC,EAAG,EAAA,iBAAA;YACHC,cAAe,EAAA,oCAAA;YACfC,MAAQ,EAAA;AAAEX,gBAAAA,WAAAA;gBAAaY,UAAYV,EAAAA;AAAmB;;;AAI9D;AAEA,MAAMW,WAAc,GAAA,CAAC,EAAEC,OAAO,EAA2B,GAAA;AACvD,IAAA,qBACEV,cAACW,CAAAA,mBAAAA,EAAAA;QAAOD,OAASA,EAAAA,OAAAA;AACf,QAAA,QAAA,gBAAAV,cAACI,CAAAA,0BAAAA,EAAAA;YAAiBC,EAAG,EAAA,aAAA;YAAcC,cAAe,EAAA;;;AAGxD;AAUA,MAAMM,cAAiB,GAAA,CAAC,EACtBC,QAAQ,EACRC,YAAY,EACZC,EAAE,EACFzB,QAAQ,EACR0B,UAAU,EACVC,cAAc,EACM,GAAA;IACpB,MAAM,EAAEC,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;AACvB,IAAA,MAAMC,WAAW1B,qBAAc,CAAA,mBAAA,EAAqB,CAACC,CAAAA,GAAMA,EAAEyB,QAAQ,CAAA;AACrE,IAAA,MAAM3B,QAAQC,qBAAc,CAAA,mBAAA,EAAqB,CAACC,CAAAA,GAAMA,EAAEF,KAAK,CAAA;AAC/D,IAAA,MAAMG,cAAcH,KAAMI,CAAAA,KAAK,CAACP,QAAS,CAAA,CAACM,WAAW,GAAG,CAAA;AACxD,IAAA,MAAMyB,mBAAmBxB,WAAK,CAACP,SAAS,CAACS,KAAK,CAACuB,cAAc;AAE7D,IAAA,MAAMC,UAAa,GAAA,IAAA;AACjBL,QAAAA,UAAAA,CAAW,mBAAqB,EAAA;YAAEM,IAAMlC,EAAAA;AAAS,SAAA,CAAA;QACjD8B,QAAS,CAAA;YAAEK,IAAM,EAAA,WAAA;YAAaC,OAASpC,EAAAA;AAAS,SAAA,CAAA;AAClD,KAAA;AAEA,IAAA,MAAMqC,cAAiB,GAAA,IAAA;AACrB,QAAA,IAAI/B,gBAAgByB,gBAAkB,EAAA;AACpCH,YAAAA,UAAAA,CAAW,uBAAyB,EAAA;gBAAEM,IAAMlC,EAAAA;AAAS,aAAA,CAAA;AACvD;AAEA,QAAA,IAAI0B,UAAY,EAAA;AACdA,YAAAA,UAAAA,EAAAA;SACK,MAAA;YACLI,QAAS,CAAA;gBAAEK,IAAM,EAAA,WAAA;gBAAaC,OAASpC,EAAAA;AAAS,aAAA,CAAA;AAClD;AACF,KAAA;AAEA,IAAA,MAAMsC,kBAAqB,GAAA,IAAA;AACzB,QAAA,IAAIX,cAAgB,EAAA;AAClBA,YAAAA,cAAAA,EAAAA;SACK,MAAA;YACLG,QAAS,CAAA;gBAAEK,IAAM,EAAA,eAAA;gBAAiBC,OAASpC,EAAAA;AAAS,aAAA,CAAA;AACtD;AACF,KAAA;AAEA,IAAA,qBACEuC,eAACC,CAAAA,iBAAAA,EAAAA;QAAKC,GAAK,EAAA,CAAA;;AACRlB,YAAAA,QAAAA,kBACCb,cAACW,CAAAA,mBAAAA,EAAAA;gBAAOT,OAAQ,EAAA,UAAA;gBAAWQ,OAASa,EAAAA,UAAAA;AAClC,gBAAA,QAAA,gBAAAvB,cAACI,CAAAA,0BAAAA,EAAAA;oBAAiBC,EAAG,EAAA,YAAA;oBAAaC,cAAe,EAAA;;;YAGpD,CAACO,QAAAA,IAAYC,8BACZd,cAACW,CAAAA,mBAAAA,EAAAA;gBAAOT,OAAQ,EAAA,UAAA;gBAAWQ,OAASkB,EAAAA,kBAAAA;AAClC,gBAAA,QAAA,gBAAA5B,cAACI,CAAAA,0BAAAA,EAAAA;oBAAiBC,EAAG,EAAA,gBAAA;oBAAiBC,cAAe,EAAA;;;AAGxDS,YAAAA,EAAAA,iBACCf,cAACgC,CAAAA,uBAAAA,EAAAA;gBAAWC,GAAKC,EAAAA,sBAAAA;gBAASnB,EAAIA,EAAAA,EAAAA;gBAAIL,OAASiB,EAAAA,cAAAA;AACzC,gBAAA,QAAA,gBAAA3B,cAACI,CAAAA,0BAAAA,EAAAA;oBAAiBC,EAAG,EAAA,YAAA;oBAAaC,cAAe,EAAA;;+BAGnDN,cAACW,CAAAA,mBAAAA,EAAAA;gBAAOD,OAASiB,EAAAA,cAAAA;AACf,gBAAA,QAAA,gBAAA3B,cAACI,CAAAA,0BAAAA,EAAAA;oBAAiBC,EAAG,EAAA,YAAA;oBAAaC,cAAe,EAAA;;;;;AAK3D;AAiDA,MAAM6B,gBAAAA,GAAmBC,aAAON,CAAAA,iBAAAA,CAAK;AACvB,cAAA,EAAE,CAAC,EAAEO,KAAK,EAAE,GAAK,CAAC,UAAU,EAAEA,KAAAA,CAAMC,MAAM,CAACC,UAAU,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;AAGC,IACD,MAAMC,YAAeJ,GAAAA,aAAAA,CAAOK,oBAAQC,CAAAA,KAAK,CAAC;QAClC,EAAE,CAAC,EAAEL,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACK,QAAQ,CAAC;;AAE/C,CAAC;AAEKC,MAAAA,oBAAAA,GAAuB,CAACtD,QAAAA,IAAmC;QAC/DuD,IAAMC,gBAAAA,gBAAAA,CAAMC,UAAU,CAAC,CAAC,EAAEC,YAAY,IAAI,EAAE,GAAGC,KAAAA,EAAO,EAAEC,GAAAA,GAAAA;YACtD,qBACErB,eAAA,CAACY,qBAAQU,OAAO,EAAA;gBACdD,GAAKA,EAAAA,GAAAA;gBACLE,iBAAgB,EAAA,mBAAA;gBAChBC,IAAK,EAAA,KAAA;gBACLC,KAAM,EAAA,QAAA;gBACNC,KAAO,EAAA;oBAAEC,MAAQ,EAAA;AAAO,iBAAA;gBACxB9C,OAAS,EAAA,CAAC+C,CAAMA,GAAAA,CAAAA,CAAEC,eAAe,EAAA;AAChC,gBAAA,GAAGT,KAAK;;AAERD,oBAAAA,SAAAA,kBACChD,cAACwC,CAAAA,YAAAA,EAAAA;wBAAamB,OAAO,EAAA,IAAA;AACnB,wBAAA,QAAA,gBAAA3D,cAAC4D,CAAAA,KAAAA,EAAAA;4BACCC,KAAM,EAAA,4BAAA;4BACNC,KAAM,EAAA,IAAA;4BACNC,MAAO,EAAA,IAAA;4BACPC,OAAQ,EAAA,WAAA;4BACRC,IAAK,EAAA,MAAA;AAEL,4BAAA,QAAA,gBAAAjE,cAACkE,CAAAA,MAAAA,EAAAA;gCAAKC,CAAE,EAAA;;;;kCAIdnE,cAAC8B,CAAAA,iBAAAA,EAAAA;wBAAKgC,KAAM,EAAA,OAAA;wBAAQM,SAAU,EAAA,QAAA;wBAASC,UAAW,EAAA,OAAA;AAC/CpB,wBAAAA,QAAAA,EAAAA,KAAAA,CAAMqB;;;;AAIf,SAAA,CAAA;AAEAC,QAAAA,KAAAA,EAAO,CAACtB,KAAAA,GAAAA;AACN,YAAA,qBACEjD,cAACwE,CAAAA,gBAAAA,EAAAA;gBAAIC,UAAY,EAAA,CAAA;gBAAGC,WAAa,EAAA,CAAA;gBAAGC,YAAc,EAAA,CAAA;gBAAGC,aAAe,EAAA,CAAA;gBAAGd,KAAM,EAAA,MAAA;AAC1E,gBAAA,QAAA,EAAA,UAAA,IAAcb,KACbA,GAAAA,KAAAA,CAAMqB,QAAQ,iBAEdtE,cAACC,CAAAA,uBAAAA,EAAAA;oBAAWgC,GAAI,EAAA,IAAA;oBAAK5B,EAAG,EAAA,mBAAA;oBAAoBH,OAAQ,EAAA,OAAA;oBAAQ2E,UAAW,EAAA,MAAA;AACrE,oBAAA,QAAA,gBAAA7E,cAACI,CAAAA,0BAAAA,EAAAA;AAAiBC,wBAAAA,EAAAA,EAAI4C,MAAM5C,EAAE;AAAEC,wBAAAA,cAAAA,EAAgB2C,MAAM3C;;;;AAKhE,SAAA;QAEA6C,OAAS,EAAA,CAACF,sBACRjD,cAACwE,CAAAA,gBAAAA,EAAAA;gBAAII,aAAe,EAAA,CAAA;gBAAGF,WAAa,EAAA,CAAA;gBAAGC,YAAc,EAAA,CAAA;gBAAGb,KAAM,EAAA,MAAA;AAC3D,gBAAA,QAAA,EAAA,UAAA,IAAcb,KACbA,GAAAA,KAAAA,CAAMqB,QAAQ,iBAEdtE,cAACC,CAAAA,uBAAAA,EAAAA;oBAAWgC,GAAI,EAAA,KAAA;oBAAM/B,OAAQ,EAAA,OAAA;AAC5B,oBAAA,QAAA,gBAAAF,cAACI,CAAAA,0BAAAA,EAAAA;AACCC,wBAAAA,EAAAA,EAAI4C,MAAM5C,EAAE;AACZC,wBAAAA,cAAAA,EAAgB2C,MAAM3C,cAAc;AACpCC,wBAAAA,MAAAA,EAAQ0C,MAAM1C;;;;AAOxBuE,QAAAA,OAAAA,EAAS,CAAC,EACRC,aAAAA,GAAgB,IAAI,EACpBjE,eAAe,IAAI,EACnBD,QAAW,GAAA,KAAK,EAChBE,EAAE,EACFuD,QAAQ,EACR,GAAGU,SACJ,EAAA,GAAA;AACC,YAAA,qBACEhF,cAACmC,CAAAA,gBAAAA,EAAAA;gBACC2B,KAAM,EAAA,MAAA;gBACNmB,OAAS,EAAA,CAAA;gBACTP,WAAa,EAAA,CAAA;AACbQ,gBAAAA,cAAAA,EAAgBH,gBAAgB,eAAkB,GAAA,UAAA;AACjD,gBAAA,GAAGC,SAAS;AAEZV,gBAAAA,QAAAA,EAAAA,QAAAA,GACCA,QAEA,iBAAAzC,eAAA,CAAAsD,mBAAA,EAAA;;AACGJ,wBAAAA,aAAAA,kBAAiB/E,cAACX,CAAAA,SAAAA,EAAAA;4BAAUC,QAAUA,EAAAA;;sCACvCU,cAACY,CAAAA,cAAAA,EAAAA;4BACCtB,QAAUA,EAAAA,QAAAA;4BACVuB,QAAUA,EAAAA,QAAAA;AACVC,4BAAAA,YAAAA,EAAc,CAACD,QAAYC,IAAAA,YAAAA;4BAC3BC,EAAIA,EAAAA;;;;;AAMhB;KACF;;;;;;;"}
@@ -1,27 +1,19 @@
1
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
1
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { Flex, Popover, Typography, Box, Button, LinkButton } from '@strapi/design-system';
3
+ import { Flex, Popover, Box, Typography, Button, LinkButton } from '@strapi/design-system';
4
4
  import { FormattedMessage } from 'react-intl';
5
5
  import { NavLink } from 'react-router-dom';
6
6
  import { styled } from 'styled-components';
7
- import { useTracking } from '../../features/Tracking.mjs';
8
- import { useGuidedTour } from './Context.mjs';
7
+ import { useTracking } from '../../../features/Tracking.mjs';
8
+ import { useGuidedTour } from '../Context.mjs';
9
+ import { tours } from '../Tours.mjs';
9
10
 
10
- const ActionsContainer = styled(Flex)`
11
- border-top: ${({ theme })=>`1px solid ${theme.colors.neutral150}`};
12
- `;
13
- /**
14
- * TODO:
15
- * We should probably move all arrow styles + svg to the DS
16
- */ const PopoverArrow = styled(Popover.Arrow)`
17
- fill: ${({ theme })=>theme.colors.neutral0};
18
- transform: translateY(-16px) rotate(-90deg);
19
- `;
20
- const StepCount = ({ tourName })=>{
11
+ /* -------------------------------------------------------------------------------------------------
12
+ * Common Step Components
13
+ * -----------------------------------------------------------------------------------------------*/ const StepCount = ({ tourName, displayedCurrentStep, displayedTourLength })=>{
21
14
  const state = useGuidedTour('GuidedTourPopover', (s)=>s.state);
22
- const currentStep = state.tours[tourName].currentStep + 1;
23
- // TODO: Currently all tours do not count their last step, but we should find a way to make this more smart
24
- const displayedLength = state.tours[tourName].length - 1;
15
+ const currentStep = displayedCurrentStep ?? state.tours[tourName].currentStep + 1;
16
+ const displayedStepCount = displayedTourLength ?? tours[tourName]._meta.displayedStepCount;
25
17
  return /*#__PURE__*/ jsx(Typography, {
26
18
  variant: "omega",
27
19
  fontSize: "12px",
@@ -30,11 +22,107 @@ const StepCount = ({ tourName })=>{
30
22
  defaultMessage: "Step {currentStep} of {tourLength}",
31
23
  values: {
32
24
  currentStep,
33
- tourLength: displayedLength
25
+ tourLength: displayedStepCount
34
26
  }
35
27
  })
36
28
  });
37
29
  };
30
+ const GotItAction = ({ onClick })=>{
31
+ return /*#__PURE__*/ jsx(Button, {
32
+ onClick: onClick,
33
+ children: /*#__PURE__*/ jsx(FormattedMessage, {
34
+ id: "tours.gotIt",
35
+ defaultMessage: "Got it"
36
+ })
37
+ });
38
+ };
39
+ const DefaultActions = ({ showSkip, showPrevious, to, tourName, onNextStep, onPreviousStep })=>{
40
+ const { trackUsage } = useTracking();
41
+ const dispatch = useGuidedTour('GuidedTourPopover', (s)=>s.dispatch);
42
+ const state = useGuidedTour('GuidedTourPopover', (s)=>s.state);
43
+ const currentStep = state.tours[tourName].currentStep + 1;
44
+ const actualTourLength = tours[tourName]._meta.totalStepCount;
45
+ const handleSkip = ()=>{
46
+ trackUsage('didSkipGuidedTour', {
47
+ name: tourName
48
+ });
49
+ dispatch({
50
+ type: 'skip_tour',
51
+ payload: tourName
52
+ });
53
+ };
54
+ const handleNextStep = ()=>{
55
+ if (currentStep === actualTourLength) {
56
+ trackUsage('didCompleteGuidedTour', {
57
+ name: tourName
58
+ });
59
+ }
60
+ if (onNextStep) {
61
+ onNextStep();
62
+ } else {
63
+ dispatch({
64
+ type: 'next_step',
65
+ payload: tourName
66
+ });
67
+ }
68
+ };
69
+ const handlePreviousStep = ()=>{
70
+ if (onPreviousStep) {
71
+ onPreviousStep();
72
+ } else {
73
+ dispatch({
74
+ type: 'previous_step',
75
+ payload: tourName
76
+ });
77
+ }
78
+ };
79
+ return /*#__PURE__*/ jsxs(Flex, {
80
+ gap: 2,
81
+ children: [
82
+ showSkip && /*#__PURE__*/ jsx(Button, {
83
+ variant: "tertiary",
84
+ onClick: handleSkip,
85
+ children: /*#__PURE__*/ jsx(FormattedMessage, {
86
+ id: "tours.skip",
87
+ defaultMessage: "Skip"
88
+ })
89
+ }),
90
+ !showSkip && showPrevious && /*#__PURE__*/ jsx(Button, {
91
+ variant: "tertiary",
92
+ onClick: handlePreviousStep,
93
+ children: /*#__PURE__*/ jsx(FormattedMessage, {
94
+ id: "tours.previous",
95
+ defaultMessage: "Previous"
96
+ })
97
+ }),
98
+ to ? /*#__PURE__*/ jsx(LinkButton, {
99
+ tag: NavLink,
100
+ to: to,
101
+ onClick: handleNextStep,
102
+ children: /*#__PURE__*/ jsx(FormattedMessage, {
103
+ id: "tours.next",
104
+ defaultMessage: "Next"
105
+ })
106
+ }) : /*#__PURE__*/ jsx(Button, {
107
+ onClick: handleNextStep,
108
+ children: /*#__PURE__*/ jsx(FormattedMessage, {
109
+ id: "tours.next",
110
+ defaultMessage: "Next"
111
+ })
112
+ })
113
+ ]
114
+ });
115
+ };
116
+ const ActionsContainer = styled(Flex)`
117
+ border-top: ${({ theme })=>`1px solid ${theme.colors.neutral150}`};
118
+ `;
119
+ /**
120
+ * TODO:
121
+ * We should probably move all arrow styles + svg to the DS
122
+ */ const PopoverArrow = styled(Popover.Arrow)`
123
+ fill: ${({ theme })=>theme.colors.neutral0};
124
+ transform: translateY(-16px) rotate(-90deg);
125
+ `;
38
126
  const createStepComponents = (tourName)=>({
39
127
  Root: /*#__PURE__*/ React.forwardRef(({ withArrow = true, ...props }, ref)=>{
40
128
  return /*#__PURE__*/ jsxs(Popover.Content, {
@@ -45,6 +133,7 @@ const createStepComponents = (tourName)=>({
45
133
  style: {
46
134
  border: 'none'
47
135
  },
136
+ onClick: (e)=>e.stopPropagation(),
48
137
  ...props,
49
138
  children: [
50
139
  withArrow && /*#__PURE__*/ jsx(PopoverArrow, {
@@ -98,36 +187,12 @@ const createStepComponents = (tourName)=>({
98
187
  variant: "omega",
99
188
  children: /*#__PURE__*/ jsx(FormattedMessage, {
100
189
  id: props.id,
101
- defaultMessage: props.defaultMessage
190
+ defaultMessage: props.defaultMessage,
191
+ values: props.values
102
192
  })
103
193
  })
104
194
  }),
105
- Actions: ({ showStepCount = true, showSkip = false, to, children, ...flexProps })=>{
106
- const { trackUsage } = useTracking();
107
- const dispatch = useGuidedTour('GuidedTourPopover', (s)=>s.dispatch);
108
- const state = useGuidedTour('GuidedTourPopover', (s)=>s.state);
109
- const currentStep = state.tours[tourName].currentStep + 1;
110
- const actualTourLength = state.tours[tourName].length;
111
- const handleSkipAction = ()=>{
112
- trackUsage('didSkipGuidedTour', {
113
- name: tourName
114
- });
115
- dispatch({
116
- type: 'skip_tour',
117
- payload: tourName
118
- });
119
- };
120
- const handleNextStep = ()=>{
121
- if (currentStep === actualTourLength) {
122
- trackUsage('didCompleteGuidedTour', {
123
- name: tourName
124
- });
125
- }
126
- dispatch({
127
- type: 'next_step',
128
- payload: tourName
129
- });
130
- };
195
+ Actions: ({ showStepCount = true, showPrevious = true, showSkip = false, to, children, ...flexProps })=>{
131
196
  return /*#__PURE__*/ jsx(ActionsContainer, {
132
197
  width: "100%",
133
198
  padding: 3,
@@ -139,33 +204,11 @@ const createStepComponents = (tourName)=>({
139
204
  showStepCount && /*#__PURE__*/ jsx(StepCount, {
140
205
  tourName: tourName
141
206
  }),
142
- /*#__PURE__*/ jsxs(Flex, {
143
- gap: 2,
144
- children: [
145
- showSkip && /*#__PURE__*/ jsx(Button, {
146
- variant: "tertiary",
147
- onClick: handleSkipAction,
148
- children: /*#__PURE__*/ jsx(FormattedMessage, {
149
- id: "tours.skip",
150
- defaultMessage: "Skip"
151
- })
152
- }),
153
- to ? /*#__PURE__*/ jsx(LinkButton, {
154
- tag: NavLink,
155
- to: to,
156
- onClick: handleNextStep,
157
- children: /*#__PURE__*/ jsx(FormattedMessage, {
158
- id: "tours.next",
159
- defaultMessage: "Next"
160
- })
161
- }) : /*#__PURE__*/ jsx(Button, {
162
- onClick: handleNextStep,
163
- children: /*#__PURE__*/ jsx(FormattedMessage, {
164
- id: "tours.next",
165
- defaultMessage: "Next"
166
- })
167
- })
168
- ]
207
+ /*#__PURE__*/ jsx(DefaultActions, {
208
+ tourName: tourName,
209
+ showSkip: showSkip,
210
+ showPrevious: !showSkip && showPrevious,
211
+ to: to
169
212
  })
170
213
  ]
171
214
  })
@@ -173,5 +216,5 @@ const createStepComponents = (tourName)=>({
173
216
  }
174
217
  });
175
218
 
176
- export { StepCount, createStepComponents };
219
+ export { DefaultActions, GotItAction, StepCount, createStepComponents };
177
220
  //# sourceMappingURL=Step.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Step.mjs","sources":["../../../../../../../admin/src/components/GuidedTour/Steps/Step.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Popover,\n Box,\n Flex,\n Button,\n Typography,\n LinkButton,\n FlexProps,\n} from '@strapi/design-system';\nimport { FormattedMessage, type MessageDescriptor } from 'react-intl';\nimport { To, NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useTracking } from '../../../features/Tracking';\nimport { useGuidedTour, type ValidTourName } from '../Context';\nimport { tours } from '../Tours';\n\n/* -------------------------------------------------------------------------------------------------\n * Common Step Components\n * -----------------------------------------------------------------------------------------------*/\n\nconst StepCount = ({\n tourName,\n displayedCurrentStep,\n displayedTourLength,\n}: {\n tourName: ValidTourName;\n displayedCurrentStep?: number;\n displayedTourLength?: number;\n}) => {\n const state = useGuidedTour('GuidedTourPopover', (s) => s.state);\n const currentStep = displayedCurrentStep ?? state.tours[tourName].currentStep + 1;\n const displayedStepCount = displayedTourLength ?? tours[tourName]._meta.displayedStepCount;\n\n return (\n <Typography variant=\"omega\" fontSize=\"12px\">\n <FormattedMessage\n id=\"tours.stepCount\"\n defaultMessage=\"Step {currentStep} of {tourLength}\"\n values={{ currentStep, tourLength: displayedStepCount }}\n />\n </Typography>\n );\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\nexport type DefaultActionsProps = {\n showSkip?: boolean;\n showPrevious?: boolean;\n to?: To;\n onNextStep?: () => void;\n onPreviousStep?: () => void;\n tourName: ValidTourName;\n};\nconst DefaultActions = ({\n showSkip,\n showPrevious,\n to,\n tourName,\n onNextStep,\n onPreviousStep,\n}: DefaultActionsProps) => {\n const { trackUsage } = useTracking();\n const dispatch = useGuidedTour('GuidedTourPopover', (s) => s.dispatch);\n const state = useGuidedTour('GuidedTourPopover', (s) => s.state);\n const currentStep = state.tours[tourName].currentStep + 1;\n const actualTourLength = tours[tourName]._meta.totalStepCount;\n\n const handleSkip = () => {\n trackUsage('didSkipGuidedTour', { name: tourName });\n dispatch({ type: 'skip_tour', payload: tourName });\n };\n\n const handleNextStep = () => {\n if (currentStep === actualTourLength) {\n trackUsage('didCompleteGuidedTour', { name: tourName });\n }\n\n if (onNextStep) {\n onNextStep();\n } else {\n dispatch({ type: 'next_step', payload: tourName });\n }\n };\n\n const handlePreviousStep = () => {\n if (onPreviousStep) {\n onPreviousStep();\n } else {\n dispatch({ type: 'previous_step', payload: tourName });\n }\n };\n\n return (\n <Flex gap={2}>\n {showSkip && (\n <Button variant=\"tertiary\" onClick={handleSkip}>\n <FormattedMessage id=\"tours.skip\" defaultMessage=\"Skip\" />\n </Button>\n )}\n {!showSkip && showPrevious && (\n <Button variant=\"tertiary\" onClick={handlePreviousStep}>\n <FormattedMessage id=\"tours.previous\" defaultMessage=\"Previous\" />\n </Button>\n )}\n {to ? (\n <LinkButton tag={NavLink} to={to} onClick={handleNextStep}>\n <FormattedMessage id=\"tours.next\" defaultMessage=\"Next\" />\n </LinkButton>\n ) : (\n <Button onClick={handleNextStep}>\n <FormattedMessage id=\"tours.next\" defaultMessage=\"Next\" />\n </Button>\n )}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Step factory\n * -----------------------------------------------------------------------------------------------*/\n\ntype WithChildren = {\n children: React.ReactNode;\n id?: never;\n defaultMessage?: never;\n};\n\ntype WithIntl = {\n children?: undefined;\n id: MessageDescriptor['id'];\n defaultMessage: MessageDescriptor['defaultMessage'];\n withArrow?: boolean;\n};\n\ntype WithActionsChildren = {\n children: React.ReactNode;\n showStepCount?: boolean;\n showSkip?: boolean;\n showPrevious?: boolean;\n};\n\ntype WithActionsProps = {\n children?: undefined;\n showStepCount?: boolean;\n showSkip?: boolean;\n showPrevious?: boolean;\n};\n\ntype StepProps = WithChildren | WithIntl;\ntype ActionsProps = WithActionsChildren | WithActionsProps;\n\ntype Step = {\n Root: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof Popover.Content> & { withArrow?: boolean }\n >;\n Title: (props: StepProps) => React.ReactNode;\n Content: (\n props: StepProps & {\n values?: Record<string, React.ReactNode | ((chunks: React.ReactNode) => React.ReactNode)>;\n }\n ) => React.ReactNode;\n Actions: (props: ActionsProps & { to?: string } & FlexProps) => React.ReactNode;\n};\n\nconst ActionsContainer = styled(Flex)`\n border-top: ${({ theme }) => `1px solid ${theme.colors.neutral150}`};\n`;\n\n/**\n * TODO:\n * We should probably move all arrow styles + svg to the DS\n */\nconst PopoverArrow = styled(Popover.Arrow)`\n fill: ${({ theme }) => theme.colors.neutral0};\n transform: translateY(-16px) rotate(-90deg);\n`;\n\nconst createStepComponents = (tourName: ValidTourName): Step => ({\n Root: React.forwardRef(({ withArrow = true, ...props }, ref) => {\n return (\n <Popover.Content\n ref={ref}\n aria-labelledby=\"guided-tour-title\"\n side=\"top\"\n align=\"center\"\n style={{ border: 'none' }}\n onClick={(e) => e.stopPropagation()}\n {...props}\n >\n {withArrow && (\n <PopoverArrow asChild>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"23\"\n height=\"25\"\n viewBox=\"0 0 23 25\"\n fill=\"none\"\n >\n <path d=\"M11 24.5L1.82843 15.3284C0.266332 13.7663 0.26633 11.2337 1.82843 9.67157L11 0.5L23 12.5L11 24.5Z\" />\n </svg>\n </PopoverArrow>\n )}\n <Flex width=\"360px\" direction=\"column\" alignItems=\"start\">\n {props.children}\n </Flex>\n </Popover.Content>\n );\n }),\n\n Title: (props) => {\n return (\n <Box paddingTop={5} paddingLeft={5} paddingRight={5} paddingBottom={1} width=\"100%\">\n {'children' in props ? (\n props.children\n ) : (\n <Typography tag=\"h1\" id=\"guided-tour-title\" variant=\"omega\" fontWeight=\"bold\">\n <FormattedMessage id={props.id} defaultMessage={props.defaultMessage} />\n </Typography>\n )}\n </Box>\n );\n },\n\n Content: (props) => (\n <Box paddingBottom={5} paddingLeft={5} paddingRight={5} width=\"100%\">\n {'children' in props ? (\n props.children\n ) : (\n <Typography tag=\"div\" variant=\"omega\">\n <FormattedMessage\n id={props.id}\n defaultMessage={props.defaultMessage}\n values={props.values}\n />\n </Typography>\n )}\n </Box>\n ),\n\n Actions: ({\n showStepCount = true,\n showPrevious = true,\n showSkip = false,\n to,\n children,\n ...flexProps\n }) => {\n return (\n <ActionsContainer\n width=\"100%\"\n padding={3}\n paddingLeft={5}\n justifyContent={showStepCount ? 'space-between' : 'flex-end'}\n {...flexProps}\n >\n {children ? (\n children\n ) : (\n <>\n {showStepCount && <StepCount tourName={tourName} />}\n <DefaultActions\n tourName={tourName}\n showSkip={showSkip}\n showPrevious={!showSkip && showPrevious}\n to={to}\n />\n </>\n )}\n </ActionsContainer>\n );\n },\n});\n\nexport type { Step };\nexport { createStepComponents, GotItAction, StepCount, DefaultActions };\n"],"names":["StepCount","tourName","displayedCurrentStep","displayedTourLength","state","useGuidedTour","s","currentStep","tours","displayedStepCount","_meta","_jsx","Typography","variant","fontSize","FormattedMessage","id","defaultMessage","values","tourLength","GotItAction","onClick","Button","DefaultActions","showSkip","showPrevious","to","onNextStep","onPreviousStep","trackUsage","useTracking","dispatch","actualTourLength","totalStepCount","handleSkip","name","type","payload","handleNextStep","handlePreviousStep","_jsxs","Flex","gap","LinkButton","tag","NavLink","ActionsContainer","styled","theme","colors","neutral150","PopoverArrow","Popover","Arrow","neutral0","createStepComponents","Root","React","forwardRef","withArrow","props","ref","Content","aria-labelledby","side","align","style","border","e","stopPropagation","asChild","svg","xmlns","width","height","viewBox","fill","path","d","direction","alignItems","children","Title","Box","paddingTop","paddingLeft","paddingRight","paddingBottom","fontWeight","Actions","showStepCount","flexProps","padding","justifyContent","_Fragment"],"mappings":"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"}