@strapi/admin 5.17.0 → 5.18.0

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