@strapi/admin 5.21.0 → 5.23.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.
- package/dist/admin/admin/src/StrapiApp.js +38 -8
- package/dist/admin/admin/src/StrapiApp.js.map +1 -1
- package/dist/admin/admin/src/StrapiApp.mjs +36 -6
- package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Context.js +23 -8
- package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Context.mjs +23 -8
- package/dist/admin/admin/src/components/GuidedTour/Context.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.js +7 -5
- package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.mjs +7 -5
- package/dist/admin/admin/src/components/GuidedTour/Overview.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ApiTokensSteps.js +156 -0
- package/dist/admin/admin/src/components/GuidedTour/Steps/ApiTokensSteps.js.map +1 -0
- package/dist/admin/admin/src/components/GuidedTour/Steps/ApiTokensSteps.mjs +154 -0
- package/dist/admin/admin/src/components/GuidedTour/Steps/ApiTokensSteps.mjs.map +1 -0
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentManagerSteps.js +221 -0
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentManagerSteps.js.map +1 -0
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentManagerSteps.mjs +219 -0
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentManagerSteps.mjs.map +1 -0
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js +219 -0
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js.map +1 -0
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs +217 -0
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs.map +1 -0
- package/dist/admin/admin/src/components/GuidedTour/{Step.js → Steps/Step.js} +116 -71
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -0
- package/dist/admin/admin/src/components/GuidedTour/{Step.mjs → Steps/Step.mjs} +117 -74
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.mjs.map +1 -0
- package/dist/admin/admin/src/components/GuidedTour/Tours.js +47 -322
- package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.mjs +48 -324
- package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/utils/constants.js +19 -0
- package/dist/admin/admin/src/components/GuidedTour/utils/constants.js.map +1 -0
- package/dist/admin/admin/src/components/GuidedTour/utils/constants.mjs +17 -0
- package/dist/admin/admin/src/components/GuidedTour/utils/constants.mjs.map +1 -0
- package/dist/admin/admin/src/components/GuidedTour/utils/migrations.js +31 -0
- package/dist/admin/admin/src/components/GuidedTour/utils/migrations.js.map +1 -0
- package/dist/admin/admin/src/components/GuidedTour/utils/migrations.mjs +29 -0
- package/dist/admin/admin/src/components/GuidedTour/utils/migrations.mjs.map +1 -0
- package/dist/admin/admin/src/components/SubNav.js +3 -1
- package/dist/admin/admin/src/components/SubNav.js.map +1 -1
- package/dist/admin/admin/src/components/SubNav.mjs +3 -1
- package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
- package/dist/admin/admin/src/components/Widgets.js +27 -9
- package/dist/admin/admin/src/components/Widgets.js.map +1 -1
- package/dist/admin/admin/src/components/Widgets.mjs +28 -10
- package/dist/admin/admin/src/components/Widgets.mjs.map +1 -1
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.js +40 -33
- package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.mjs +41 -34
- package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +17 -14
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs +17 -14
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +31 -6
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs +12 -6
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js +28 -24
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs +28 -24
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +56 -57
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs +57 -58
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs.map +1 -1
- package/dist/admin/admin/src/services/apiTokens.js +0 -1
- package/dist/admin/admin/src/services/apiTokens.js.map +1 -1
- package/dist/admin/admin/src/services/apiTokens.mjs +0 -1
- package/dist/admin/admin/src/services/apiTokens.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +35 -21
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +35 -21
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js +131 -0
- package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js.map +1 -0
- package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.mjs +129 -0
- package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.mjs.map +1 -0
- package/dist/admin/ee/admin/src/constants.js +3 -1
- package/dist/admin/ee/admin/src/constants.js.map +1 -1
- package/dist/admin/ee/admin/src/constants.mjs +3 -2
- package/dist/admin/ee/admin/src/constants.mjs.map +1 -1
- package/dist/admin/index.js +6 -2
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +2 -0
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/src/components/GuidedTour/Context.d.ts +26 -9
- package/dist/admin/src/components/GuidedTour/Steps/ApiTokensSteps.d.ts +20 -0
- package/dist/admin/src/components/GuidedTour/Steps/ContentManagerSteps.d.ts +21 -0
- package/dist/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.d.ts +30 -0
- package/dist/admin/src/components/GuidedTour/{Step.d.ts → Steps/Step.d.ts} +25 -6
- package/dist/admin/src/components/GuidedTour/Tours.d.ts +53 -14
- package/dist/admin/src/components/GuidedTour/utils/constants.d.ts +15 -0
- package/dist/admin/src/components/GuidedTour/utils/migrations.d.ts +6 -0
- package/dist/admin/src/features/Tracking.d.ts +20 -2
- package/dist/admin/src/index.d.ts +5 -0
- package/dist/admin/src/pages/Home/HomePage.d.ts +2 -2
- package/dist/ee/admin/src/components/AuditLogs/Widgets.d.ts +2 -0
- package/dist/ee/admin/src/constants.d.ts +1 -0
- package/dist/server/server/src/controllers/admin.js +2 -5
- package/dist/server/server/src/controllers/admin.js.map +1 -1
- package/dist/server/server/src/controllers/admin.mjs +2 -5
- package/dist/server/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/server/src/services/index.js +0 -2
- package/dist/server/server/src/services/index.js.map +1 -1
- package/dist/server/server/src/services/index.mjs +0 -2
- package/dist/server/server/src/services/index.mjs.map +1 -1
- package/dist/server/src/controllers/admin.d.ts +1 -1
- package/dist/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +1 -1
- package/dist/server/src/index.d.ts +1 -6
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/services/constants.d.ts +1 -0
- package/dist/server/src/services/guided-tour.d.ts +2 -3
- package/dist/server/src/services/guided-tour.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +0 -5
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/shared/contracts/admin.d.ts +2 -2
- package/dist/shared/contracts/admin.d.ts.map +1 -1
- package/package.json +7 -7
- package/dist/admin/admin/src/components/GuidedTour/Step.js.map +0 -1
- package/dist/admin/admin/src/components/GuidedTour/Step.mjs.map +0 -1
- package/dist/server/server/src/services/guided-tour.js +0 -61
- package/dist/server/server/src/services/guided-tour.js.map +0 -1
- package/dist/server/server/src/services/guided-tour.mjs +0 -59
- package/dist/server/server/src/services/guided-tour.mjs.map +0 -1
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useParams } from 'react-router-dom';
|
|
3
|
+
import { useGetGuidedTourMetaQuery } from '../../../services/admin.mjs';
|
|
4
|
+
import { GUIDED_TOUR_REQUIRED_ACTIONS } from '../utils/constants.mjs';
|
|
5
|
+
import { StepCount, GotItAction } from './Step.mjs';
|
|
6
|
+
|
|
7
|
+
/* -------------------------------------------------------------------------------------------------
|
|
8
|
+
* Step Components
|
|
9
|
+
* -----------------------------------------------------------------------------------------------*/ const Introduction = ({ Step })=>/*#__PURE__*/ jsxs(Step.Root, {
|
|
10
|
+
sideOffset: 33,
|
|
11
|
+
withArrow: false,
|
|
12
|
+
children: [
|
|
13
|
+
/*#__PURE__*/ jsx(Step.Title, {
|
|
14
|
+
id: "tours.contentTypeBuilder.Introduction.title",
|
|
15
|
+
defaultMessage: "Content-Type Builder"
|
|
16
|
+
}),
|
|
17
|
+
/*#__PURE__*/ jsx(Step.Content, {
|
|
18
|
+
id: "tours.contentTypeBuilder.Introduction.content",
|
|
19
|
+
defaultMessage: "Create and manage your content structure with collection types, single types and components."
|
|
20
|
+
}),
|
|
21
|
+
/*#__PURE__*/ jsx(Step.Actions, {
|
|
22
|
+
showPrevious: false
|
|
23
|
+
})
|
|
24
|
+
]
|
|
25
|
+
});
|
|
26
|
+
const CollectionTypes = ({ Step })=>/*#__PURE__*/ jsxs(Step.Root, {
|
|
27
|
+
side: "right",
|
|
28
|
+
sideOffset: 16,
|
|
29
|
+
children: [
|
|
30
|
+
/*#__PURE__*/ jsx(Step.Title, {
|
|
31
|
+
id: "tours.contentTypeBuilder.CollectionTypes.title",
|
|
32
|
+
defaultMessage: "Collection Types"
|
|
33
|
+
}),
|
|
34
|
+
/*#__PURE__*/ jsx(Step.Content, {
|
|
35
|
+
id: "tours.contentTypeBuilder.CollectionTypes.content",
|
|
36
|
+
defaultMessage: "A content structure that can manage multiple entries, such as articles or products."
|
|
37
|
+
}),
|
|
38
|
+
/*#__PURE__*/ jsx(Step.Actions, {})
|
|
39
|
+
]
|
|
40
|
+
});
|
|
41
|
+
const SingleTypes = ({ Step })=>/*#__PURE__*/ jsxs(Step.Root, {
|
|
42
|
+
side: "right",
|
|
43
|
+
sideOffset: 16,
|
|
44
|
+
children: [
|
|
45
|
+
/*#__PURE__*/ jsx(Step.Title, {
|
|
46
|
+
id: "tours.contentTypeBuilder.SingleTypes.title",
|
|
47
|
+
defaultMessage: "Single Types"
|
|
48
|
+
}),
|
|
49
|
+
/*#__PURE__*/ jsx(Step.Content, {
|
|
50
|
+
id: "tours.contentTypeBuilder.SingleTypes.content",
|
|
51
|
+
defaultMessage: "A content structure that can manage a single entry, such as a homepage or a header."
|
|
52
|
+
}),
|
|
53
|
+
/*#__PURE__*/ jsx(Step.Actions, {})
|
|
54
|
+
]
|
|
55
|
+
});
|
|
56
|
+
const Components = ({ Step })=>/*#__PURE__*/ jsxs(Step.Root, {
|
|
57
|
+
side: "right",
|
|
58
|
+
sideOffset: 16,
|
|
59
|
+
children: [
|
|
60
|
+
/*#__PURE__*/ jsx(Step.Title, {
|
|
61
|
+
id: "tours.contentTypeBuilder.Components.title",
|
|
62
|
+
defaultMessage: "Components"
|
|
63
|
+
}),
|
|
64
|
+
/*#__PURE__*/ jsx(Step.Content, {
|
|
65
|
+
id: "tours.contentTypeBuilder.Components.content",
|
|
66
|
+
defaultMessage: "A reusable content structure that can be used across multiple content types, such as buttons, sliders or cards."
|
|
67
|
+
}),
|
|
68
|
+
/*#__PURE__*/ jsx(Step.Actions, {})
|
|
69
|
+
]
|
|
70
|
+
});
|
|
71
|
+
const YourTurn = ({ Step })=>/*#__PURE__*/ jsxs(Step.Root, {
|
|
72
|
+
side: "right",
|
|
73
|
+
sideOffset: 16,
|
|
74
|
+
children: [
|
|
75
|
+
/*#__PURE__*/ jsx(Step.Title, {
|
|
76
|
+
id: "tours.contentTypeBuilder.YourTurn.title",
|
|
77
|
+
defaultMessage: "Your turn"
|
|
78
|
+
}),
|
|
79
|
+
/*#__PURE__*/ jsx(Step.Content, {
|
|
80
|
+
id: "tours.contentTypeBuilder.YourTurn.content",
|
|
81
|
+
defaultMessage: "Create a collection type or single type and configure it."
|
|
82
|
+
}),
|
|
83
|
+
/*#__PURE__*/ jsx(Step.Actions, {})
|
|
84
|
+
]
|
|
85
|
+
});
|
|
86
|
+
const AddFields = ({ Step, dispatch })=>/*#__PURE__*/ jsxs(Step.Root, {
|
|
87
|
+
side: "bottom",
|
|
88
|
+
children: [
|
|
89
|
+
/*#__PURE__*/ jsx(Step.Title, {
|
|
90
|
+
id: "tours.contentTypeBuilder.AddFields.title",
|
|
91
|
+
defaultMessage: "Don't forget to add a field to your content type"
|
|
92
|
+
}),
|
|
93
|
+
/*#__PURE__*/ jsx(Step.Content, {
|
|
94
|
+
id: "tours.contentTypeBuilder.AddFields.content",
|
|
95
|
+
defaultMessage: "Add the fields your content needs such as text, media and relations."
|
|
96
|
+
}),
|
|
97
|
+
/*#__PURE__*/ jsxs(Step.Actions, {
|
|
98
|
+
children: [
|
|
99
|
+
/*#__PURE__*/ jsx(StepCount, {
|
|
100
|
+
tourName: "contentTypeBuilder"
|
|
101
|
+
}),
|
|
102
|
+
/*#__PURE__*/ jsx(GotItAction, {
|
|
103
|
+
onClick: ()=>dispatch({
|
|
104
|
+
type: 'next_step',
|
|
105
|
+
payload: 'contentTypeBuilder'
|
|
106
|
+
})
|
|
107
|
+
})
|
|
108
|
+
]
|
|
109
|
+
})
|
|
110
|
+
]
|
|
111
|
+
});
|
|
112
|
+
const Save = ({ Step, dispatch })=>/*#__PURE__*/ jsxs(Step.Root, {
|
|
113
|
+
side: "right",
|
|
114
|
+
children: [
|
|
115
|
+
/*#__PURE__*/ jsx(Step.Title, {
|
|
116
|
+
id: "tours.contentTypeBuilder.Save.title",
|
|
117
|
+
defaultMessage: "Save before you leave!"
|
|
118
|
+
}),
|
|
119
|
+
/*#__PURE__*/ jsx(Step.Content, {
|
|
120
|
+
id: "tours.contentTypeBuilder.Save.content",
|
|
121
|
+
defaultMessage: "Save the changes you made here before leaving this page."
|
|
122
|
+
}),
|
|
123
|
+
/*#__PURE__*/ jsxs(Step.Actions, {
|
|
124
|
+
children: [
|
|
125
|
+
/*#__PURE__*/ jsx(StepCount, {
|
|
126
|
+
tourName: "contentTypeBuilder"
|
|
127
|
+
}),
|
|
128
|
+
/*#__PURE__*/ jsx(GotItAction, {
|
|
129
|
+
onClick: ()=>{
|
|
130
|
+
// Ensure the completed action is removed
|
|
131
|
+
// in the event the user already has a schema but is still doing the tour
|
|
132
|
+
dispatch({
|
|
133
|
+
type: 'remove_completed_action',
|
|
134
|
+
payload: GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.createSchema
|
|
135
|
+
});
|
|
136
|
+
dispatch({
|
|
137
|
+
type: 'next_step',
|
|
138
|
+
payload: 'contentTypeBuilder'
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
})
|
|
142
|
+
]
|
|
143
|
+
})
|
|
144
|
+
]
|
|
145
|
+
});
|
|
146
|
+
const Finish = ({ Step })=>{
|
|
147
|
+
const { data: guidedTourMeta } = useGetGuidedTourMetaQuery();
|
|
148
|
+
const { '*': routeParams } = useParams();
|
|
149
|
+
// Get the uid from the params
|
|
150
|
+
const uid = routeParams?.split('/').pop();
|
|
151
|
+
const contentType = uid ? guidedTourMeta?.data?.schemas?.[uid] : null;
|
|
152
|
+
const contentTypeKindDictionary = {
|
|
153
|
+
collectionType: 'collection-types',
|
|
154
|
+
singleType: 'single-types'
|
|
155
|
+
};
|
|
156
|
+
const to = contentType ? `/content-manager/${contentTypeKindDictionary[contentType.kind]}/${contentType.uid}` : '/content-manager';
|
|
157
|
+
return /*#__PURE__*/ jsxs(Step.Root, {
|
|
158
|
+
side: "right",
|
|
159
|
+
children: [
|
|
160
|
+
/*#__PURE__*/ jsx(Step.Title, {
|
|
161
|
+
id: "tours.contentTypeBuilder.Finish.title",
|
|
162
|
+
defaultMessage: "It's time to create content!"
|
|
163
|
+
}),
|
|
164
|
+
/*#__PURE__*/ jsx(Step.Content, {
|
|
165
|
+
id: "tours.contentTypeBuilder.Finish.content",
|
|
166
|
+
defaultMessage: "Now that you created content types, you'll be able to create content in the content manager."
|
|
167
|
+
}),
|
|
168
|
+
/*#__PURE__*/ jsx(Step.Actions, {
|
|
169
|
+
showStepCount: false,
|
|
170
|
+
showPrevious: false,
|
|
171
|
+
to: to
|
|
172
|
+
})
|
|
173
|
+
]
|
|
174
|
+
});
|
|
175
|
+
};
|
|
176
|
+
/* -------------------------------------------------------------------------------------------------
|
|
177
|
+
* Steps
|
|
178
|
+
* -----------------------------------------------------------------------------------------------*/ const contentTypeBuilderSteps = [
|
|
179
|
+
{
|
|
180
|
+
name: 'Introduction',
|
|
181
|
+
content: Introduction
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
name: 'CollectionTypes',
|
|
185
|
+
content: CollectionTypes
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
name: 'SingleTypes',
|
|
189
|
+
content: SingleTypes
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
name: 'Components',
|
|
193
|
+
content: Components
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
name: 'YourTurn',
|
|
197
|
+
content: YourTurn
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
name: 'AddFields',
|
|
201
|
+
content: AddFields
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
name: 'Save',
|
|
205
|
+
when: (completedActions)=>completedActions.includes(GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.addField),
|
|
206
|
+
content: Save
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
name: 'Finish',
|
|
210
|
+
content: Finish,
|
|
211
|
+
excludeFromStepCount: true,
|
|
212
|
+
when: (completedActions)=>completedActions.includes(GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.createSchema)
|
|
213
|
+
}
|
|
214
|
+
];
|
|
215
|
+
|
|
216
|
+
export { contentTypeBuilderSteps };
|
|
217
|
+
//# sourceMappingURL=ContentTypeBuilderSteps.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContentTypeBuilderSteps.mjs","sources":["../../../../../../../admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.tsx"],"sourcesContent":["import { UID } from '@strapi/types';\nimport { useParams } from 'react-router-dom';\n\nimport { useGetGuidedTourMetaQuery } from '../../../services/admin';\nimport { CompletedActions } from '../Context';\nimport { type StepContentProps } from '../Tours';\nimport { GUIDED_TOUR_REQUIRED_ACTIONS } from '../utils/constants';\n\nimport { GotItAction, StepCount } from './Step';\n\n/* -------------------------------------------------------------------------------------------------\n * Step Components\n * -----------------------------------------------------------------------------------------------*/\n\nconst Introduction = ({ Step }: StepContentProps) => (\n <Step.Root sideOffset={33} 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 showPrevious={false} />\n </Step.Root>\n);\n\nconst CollectionTypes = ({ Step }: StepContentProps) => (\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\nconst SingleTypes = ({ Step }: StepContentProps) => (\n <Step.Root side=\"right\" sideOffset={16}>\n <Step.Title id=\"tours.contentTypeBuilder.SingleTypes.title\" defaultMessage=\"Single Types\" />\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\nconst Components = ({ Step }: StepContentProps) => (\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 />\n </Step.Root>\n);\n\nconst YourTurn = ({ Step }: StepContentProps) => (\n <Step.Root side=\"right\" sideOffset={16}>\n <Step.Title id=\"tours.contentTypeBuilder.YourTurn.title\" defaultMessage=\"Your turn\" />\n <Step.Content\n id=\"tours.contentTypeBuilder.YourTurn.content\"\n defaultMessage=\"Create a collection type or single type and configure it.\"\n />\n <Step.Actions />\n </Step.Root>\n);\n\nconst AddFields = ({ Step, dispatch }: StepContentProps) => (\n <Step.Root side=\"bottom\">\n <Step.Title\n id=\"tours.contentTypeBuilder.AddFields.title\"\n defaultMessage=\"Don't forget to add a field to your content type\"\n />\n <Step.Content\n id=\"tours.contentTypeBuilder.AddFields.content\"\n defaultMessage=\"Add the fields your content needs such as text, media and relations.\"\n />\n <Step.Actions>\n <StepCount tourName=\"contentTypeBuilder\" />\n <GotItAction onClick={() => dispatch({ type: 'next_step', payload: 'contentTypeBuilder' })} />\n </Step.Actions>\n </Step.Root>\n);\n\nconst Save = ({ Step, dispatch }: StepContentProps) => (\n <Step.Root side=\"right\">\n <Step.Title id=\"tours.contentTypeBuilder.Save.title\" defaultMessage=\"Save before you leave!\" />\n <Step.Content\n id=\"tours.contentTypeBuilder.Save.content\"\n defaultMessage=\"Save the changes you made here before leaving this page.\"\n />\n <Step.Actions>\n <StepCount tourName=\"contentTypeBuilder\" />\n <GotItAction\n onClick={() => {\n // Ensure the completed action is removed\n // in the event the user already has a schema but is still doing the tour\n dispatch({\n type: 'remove_completed_action',\n payload: GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.createSchema,\n });\n dispatch({ type: 'next_step', payload: 'contentTypeBuilder' });\n }}\n />\n </Step.Actions>\n </Step.Root>\n);\n\nconst Finish = ({ Step }: StepContentProps) => {\n const { data: guidedTourMeta } = useGetGuidedTourMetaQuery();\n const { '*': routeParams } = useParams();\n // Get the uid from the params\n const uid = routeParams?.split('/').pop();\n const contentType = uid ? guidedTourMeta?.data?.schemas?.[uid as UID.ContentType] : null;\n const contentTypeKindDictionary = {\n collectionType: 'collection-types',\n singleType: 'single-types',\n };\n\n const to = contentType\n ? `/content-manager/${contentTypeKindDictionary[contentType.kind]}/${contentType.uid}`\n : '/content-manager';\n\n return (\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} showPrevious={false} to={to} />\n </Step.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Steps\n * -----------------------------------------------------------------------------------------------*/\n\nexport const contentTypeBuilderSteps = [\n {\n name: 'Introduction',\n content: Introduction,\n },\n {\n name: 'CollectionTypes',\n content: CollectionTypes,\n },\n {\n name: 'SingleTypes',\n content: SingleTypes,\n },\n {\n name: 'Components',\n content: Components,\n },\n {\n name: 'YourTurn',\n content: YourTurn,\n },\n {\n name: 'AddFields',\n content: AddFields,\n },\n {\n name: 'Save',\n when: (completedActions: CompletedActions) =>\n completedActions.includes(GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.addField),\n content: Save,\n },\n {\n name: 'Finish',\n content: Finish,\n excludeFromStepCount: true,\n when: (completedActions: CompletedActions) =>\n completedActions.includes(GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.createSchema),\n },\n] as const;\n"],"names":["Introduction","Step","_jsxs","Root","sideOffset","withArrow","_jsx","Title","id","defaultMessage","Content","Actions","showPrevious","CollectionTypes","side","SingleTypes","Components","YourTurn","AddFields","dispatch","StepCount","tourName","GotItAction","onClick","type","payload","Save","GUIDED_TOUR_REQUIRED_ACTIONS","contentTypeBuilder","createSchema","Finish","data","guidedTourMeta","useGetGuidedTourMetaQuery","routeParams","useParams","uid","split","pop","contentType","schemas","contentTypeKindDictionary","collectionType","singleType","to","kind","showStepCount","contentTypeBuilderSteps","name","content","when","completedActions","includes","addField","excludeFromStepCount"],"mappings":"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"}
|
|
@@ -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('
|
|
10
|
-
var Context = require('
|
|
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
|
-
|
|
32
|
-
|
|
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
|
-
|
|
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:
|
|
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.
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
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":"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"}
|