@rubixscript/react-native-onboarding 1.2.0 → 1.3.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/components/NavigationButtons.js +1 -0
- package/dist/components/NavigationButtons.js.map +1 -0
- package/dist/components/Onboarding.js +1 -0
- package/dist/components/Onboarding.js.map +1 -0
- package/dist/components/Pagination.js +1 -0
- package/dist/components/Pagination.js.map +1 -0
- package/dist/components/SimpleOnboardingScreen.js +1 -0
- package/dist/components/SimpleOnboardingScreen.js.map +1 -0
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -0
- package/dist/presets/index.d.ts +59 -19
- package/dist/presets/index.d.ts.map +1 -1
- package/dist/presets/index.js +139 -229
- package/dist/presets/index.js.map +1 -0
- package/dist/slides/FormSlide.js +1 -0
- package/dist/slides/FormSlide.js.map +1 -0
- package/dist/slides/IconSlide.js +1 -0
- package/dist/slides/IconSlide.js.map +1 -0
- package/dist/slides/ImageSlide.js +1 -0
- package/dist/slides/ImageSlide.js.map +1 -0
- package/dist/slides/VideoSlide.js +1 -0
- package/dist/slides/VideoSlide.js.map +1 -0
- package/dist/slides/index.js +1 -0
- package/dist/slides/index.js.map +1 -0
- package/dist/themes/index.d.ts +12 -12
- package/dist/themes/index.d.ts.map +1 -1
- package/dist/themes/index.js +27 -26
- package/dist/themes/index.js.map +1 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +1 -1
- package/src/index.ts +29 -7
- package/src/presets/index.ts +165 -231
- package/src/themes/index.ts +26 -26
- package/src/types/index.ts +1 -1
package/src/presets/index.ts
CHANGED
|
@@ -1,214 +1,117 @@
|
|
|
1
|
-
import { SlideData, OnboardingConfig } from '../types';
|
|
1
|
+
import { SlideData, OnboardingConfig, ImageSlideData, IconSlideData, FormSlideData } from '../types';
|
|
2
2
|
|
|
3
3
|
// ============================================================================
|
|
4
|
-
//
|
|
4
|
+
// HELPER FUNCTIONS TO CREATE SLIDES
|
|
5
5
|
// ============================================================================
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
type: 'select',
|
|
65
|
-
required: true,
|
|
66
|
-
options: [
|
|
67
|
-
{ value: '0-500', label: '0-500 pages' },
|
|
68
|
-
{ value: '500-1500', label: '500-1500 pages' },
|
|
69
|
-
{ value: '1500-3000', label: '1500-3000 pages' },
|
|
70
|
-
{ value: '3000-5000', label: '3000-5000 pages' },
|
|
71
|
-
{ value: '5000+', label: '5000+ pages' },
|
|
72
|
-
],
|
|
73
|
-
},
|
|
74
|
-
],
|
|
75
|
-
submitLabel: 'Start Reading',
|
|
76
|
-
gradientColors: ['#667EEA', '#764BA2'],
|
|
7
|
+
/**
|
|
8
|
+
* Create an image slide with a gradient background
|
|
9
|
+
* @param id Unique slide identifier
|
|
10
|
+
* @param title Slide title
|
|
11
|
+
* @param description Slide description
|
|
12
|
+
* @param image Image source (use require() for local images)
|
|
13
|
+
* @param gradientColors Array of gradient colors
|
|
14
|
+
* @param overlayIcon Optional icon to show on the image
|
|
15
|
+
*/
|
|
16
|
+
export const createImageSlide = (
|
|
17
|
+
id: string,
|
|
18
|
+
title: string,
|
|
19
|
+
description: string,
|
|
20
|
+
image: any,
|
|
21
|
+
gradientColors?: string[],
|
|
22
|
+
overlayIcon?: { name: string; size?: number; color?: string }
|
|
23
|
+
): ImageSlideData => ({
|
|
24
|
+
id,
|
|
25
|
+
type: 'image',
|
|
26
|
+
title,
|
|
27
|
+
description,
|
|
28
|
+
image,
|
|
29
|
+
gradientColors,
|
|
30
|
+
overlayIcon,
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Create an icon slide
|
|
35
|
+
* @param id Unique slide identifier
|
|
36
|
+
* @param title Slide title
|
|
37
|
+
* @param description Slide description
|
|
38
|
+
* @param iconName Icon name from the icon library
|
|
39
|
+
* @param iconType Icon library type
|
|
40
|
+
* @param backgroundColor Background color
|
|
41
|
+
* @param iconColor Icon color
|
|
42
|
+
*/
|
|
43
|
+
export const createIconSlide = (
|
|
44
|
+
id: string,
|
|
45
|
+
title: string,
|
|
46
|
+
description: string,
|
|
47
|
+
iconName: string,
|
|
48
|
+
iconType: 'ionicons' | 'material' | 'material-community' | 'font-awesome' = 'material-community',
|
|
49
|
+
backgroundColor: string = '#F6F6F6',
|
|
50
|
+
iconColor: string = '#000000',
|
|
51
|
+
iconBackgroundColor: string = 'rgba(255, 107, 107, 0.1)'
|
|
52
|
+
): IconSlideData => ({
|
|
53
|
+
id,
|
|
54
|
+
type: 'icon',
|
|
55
|
+
title,
|
|
56
|
+
description,
|
|
57
|
+
icon: {
|
|
58
|
+
name: iconName,
|
|
59
|
+
type: iconType,
|
|
60
|
+
size: 80,
|
|
61
|
+
color: iconColor,
|
|
62
|
+
backgroundColor: iconBackgroundColor,
|
|
63
|
+
backgroundSize: 160,
|
|
77
64
|
},
|
|
78
|
-
|
|
65
|
+
backgroundColor,
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Create a form slide for user data collection
|
|
70
|
+
* @param id Unique slide identifier
|
|
71
|
+
* @param title Form title
|
|
72
|
+
* @param description Form description
|
|
73
|
+
* @param fields Array of form field configurations
|
|
74
|
+
* @param submitLabel Button label for form submission
|
|
75
|
+
* @param gradientColors Optional gradient background colors
|
|
76
|
+
*/
|
|
77
|
+
export const createFormSlide = (
|
|
78
|
+
id: string,
|
|
79
|
+
title: string,
|
|
80
|
+
description: string,
|
|
81
|
+
fields: FormSlideData['fields'],
|
|
82
|
+
submitLabel: string = 'Get Started',
|
|
83
|
+
gradientColors?: string[]
|
|
84
|
+
): FormSlideData => ({
|
|
85
|
+
id,
|
|
86
|
+
type: 'form',
|
|
87
|
+
title,
|
|
88
|
+
description,
|
|
89
|
+
fields,
|
|
90
|
+
submitLabel,
|
|
91
|
+
gradientColors,
|
|
92
|
+
});
|
|
79
93
|
|
|
80
94
|
// ============================================================================
|
|
81
|
-
//
|
|
95
|
+
// NOTE: Example slides below are for reference only.
|
|
96
|
+
// Apps should create their own slides using the helper functions above
|
|
97
|
+
// or by defining SlideData objects directly.
|
|
82
98
|
// ============================================================================
|
|
83
99
|
|
|
84
|
-
export const zaprecipeSlides: SlideData[] = [
|
|
85
|
-
{
|
|
86
|
-
id: 'discover',
|
|
87
|
-
type: 'image',
|
|
88
|
-
title: 'Find Perfect Recipes',
|
|
89
|
-
description: 'Discover thousands of recipes tailored to your taste and dietary preferences.',
|
|
90
|
-
image: require('../../assets/images/onboarding/recipes.jpg'),
|
|
91
|
-
overlayIcon: { name: 'search', size: 40 },
|
|
92
|
-
gradientColors: ['#667eea', '#764ba2', '#6B4EFF'],
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
id: 'save',
|
|
96
|
-
type: 'image',
|
|
97
|
-
title: 'Save Your Favorites',
|
|
98
|
-
description: 'Build your personal cookbook with recipes you love and want to try.',
|
|
99
|
-
image: require('../../assets/images/onboarding/favorites.jpg'),
|
|
100
|
-
overlayIcon: { name: 'heart', size: 40 },
|
|
101
|
-
gradientColors: ['#667eea', '#764ba2', '#6B4EFF'],
|
|
102
|
-
},
|
|
103
|
-
{
|
|
104
|
-
id: 'cook',
|
|
105
|
-
type: 'image',
|
|
106
|
-
title: 'Cook with Confidence',
|
|
107
|
-
description: 'Step-by-step instructions make cooking easy and enjoyable for everyone.',
|
|
108
|
-
image: require('../../assets/images/onboarding/cooking.jpg'),
|
|
109
|
-
overlayIcon: { name: 'restaurant', size: 40 },
|
|
110
|
-
gradientColors: ['#667eea', '#764ba2', '#6B4EFF'],
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
id: 'profile',
|
|
114
|
-
type: 'form',
|
|
115
|
-
title: 'Tell Us About Yourself',
|
|
116
|
-
description: 'Help us personalize your cooking experience.',
|
|
117
|
-
fields: [
|
|
118
|
-
{
|
|
119
|
-
key: 'name',
|
|
120
|
-
label: 'Your Name',
|
|
121
|
-
placeholder: 'Enter your name',
|
|
122
|
-
type: 'text',
|
|
123
|
-
required: true,
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
key: 'cookingLevel',
|
|
127
|
-
label: 'Cooking Level',
|
|
128
|
-
placeholder: 'Select your level',
|
|
129
|
-
type: 'select',
|
|
130
|
-
required: true,
|
|
131
|
-
options: [
|
|
132
|
-
{ value: 'beginner', label: 'Beginner', icon: 'leaf' },
|
|
133
|
-
{ value: 'intermediate', label: 'Intermediate', icon: 'flame' },
|
|
134
|
-
{ value: 'advanced', label: 'Advanced', icon: 'star' },
|
|
135
|
-
],
|
|
136
|
-
},
|
|
137
|
-
{
|
|
138
|
-
key: 'improveHabits',
|
|
139
|
-
label: 'What cooking habits do you want to improve?',
|
|
140
|
-
placeholder: 'e.g., Faster prep, Better seasoning',
|
|
141
|
-
type: 'text',
|
|
142
|
-
},
|
|
143
|
-
{
|
|
144
|
-
key: 'masterSkill',
|
|
145
|
-
label: 'What culinary skill do you want to master?',
|
|
146
|
-
placeholder: 'e.g., Knife skills, Baking',
|
|
147
|
-
type: 'text',
|
|
148
|
-
},
|
|
149
|
-
],
|
|
150
|
-
submitLabel: "Let's Start Cooking!",
|
|
151
|
-
gradientColors: ['#667eea', '#764ba2', '#6B4EFF'],
|
|
152
|
-
},
|
|
153
|
-
];
|
|
154
|
-
|
|
155
100
|
// ============================================================================
|
|
156
|
-
//
|
|
101
|
+
// ICON STYLE PRESET - Example slides for icon-based onboarding
|
|
157
102
|
// ============================================================================
|
|
158
103
|
|
|
159
|
-
export const
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
title: 'Focus Timer',
|
|
164
|
-
description: 'Stay productive with our Pomodoro timer. Work in focused intervals for better results.',
|
|
165
|
-
icon: {
|
|
166
|
-
name: 'timer-outline',
|
|
167
|
-
type: 'material-community',
|
|
168
|
-
size: 80,
|
|
169
|
-
color: '#000000',
|
|
170
|
-
backgroundColor: 'rgba(255, 107, 107, 0.1)',
|
|
171
|
-
backgroundSize: 160,
|
|
172
|
-
},
|
|
173
|
-
backgroundColor: '#F6F6F6',
|
|
174
|
-
},
|
|
175
|
-
{
|
|
176
|
-
id: '2',
|
|
177
|
-
type: 'icon',
|
|
178
|
-
title: 'Task Management',
|
|
179
|
-
description: 'Organize your tasks efficiently. Track progress and set priorities with ease.',
|
|
180
|
-
icon: {
|
|
181
|
-
name: 'checkbox-marked-circle-outline',
|
|
182
|
-
type: 'material-community',
|
|
183
|
-
size: 80,
|
|
184
|
-
color: '#000000',
|
|
185
|
-
backgroundColor: 'rgba(255, 107, 107, 0.1)',
|
|
186
|
-
backgroundSize: 160,
|
|
187
|
-
},
|
|
188
|
-
backgroundColor: '#F6F6F6',
|
|
189
|
-
},
|
|
190
|
-
{
|
|
191
|
-
id: '3',
|
|
192
|
-
type: 'icon',
|
|
193
|
-
title: 'Statistics',
|
|
194
|
-
description: 'Monitor your productivity with detailed statistics and insights.',
|
|
195
|
-
icon: {
|
|
196
|
-
name: 'chart-line',
|
|
197
|
-
type: 'material-community',
|
|
198
|
-
size: 80,
|
|
199
|
-
color: '#000000',
|
|
200
|
-
backgroundColor: 'rgba(255, 107, 107, 0.1)',
|
|
201
|
-
backgroundSize: 160,
|
|
202
|
-
},
|
|
203
|
-
backgroundColor: '#F6F6F6',
|
|
204
|
-
},
|
|
104
|
+
export const iconStyleSlides: SlideData[] = [
|
|
105
|
+
createIconSlide('1', 'Feature One', 'Discover the first amazing feature of our app.', 'star-outline'),
|
|
106
|
+
createIconSlide('2', 'Feature Two', 'Explore the second feature that makes us unique.', 'heart-outline'),
|
|
107
|
+
createIconSlide('3', 'Feature Three', 'Complete your journey with our third feature.', 'check-circle-outline'),
|
|
205
108
|
];
|
|
206
109
|
|
|
207
110
|
// ============================================================================
|
|
208
|
-
// MODERN PRESET
|
|
111
|
+
// MODERN STYLE PRESET - Modern icon-based design with vibrant colors
|
|
209
112
|
// ============================================================================
|
|
210
113
|
|
|
211
|
-
export const
|
|
114
|
+
export const modernStyleSlides: SlideData[] = [
|
|
212
115
|
{
|
|
213
116
|
id: 'welcome',
|
|
214
117
|
type: 'icon',
|
|
@@ -254,10 +157,10 @@ export const modernSlides: SlideData[] = [
|
|
|
254
157
|
];
|
|
255
158
|
|
|
256
159
|
// ============================================================================
|
|
257
|
-
// MINIMAL PRESET
|
|
160
|
+
// MINIMAL STYLE PRESET - Clean, simple design
|
|
258
161
|
// ============================================================================
|
|
259
162
|
|
|
260
|
-
export const
|
|
163
|
+
export const minimalStyleSlides: SlideData[] = [
|
|
261
164
|
{
|
|
262
165
|
id: 'one',
|
|
263
166
|
type: 'icon',
|
|
@@ -303,32 +206,54 @@ export const minimalSlides: SlideData[] = [
|
|
|
303
206
|
];
|
|
304
207
|
|
|
305
208
|
// ============================================================================
|
|
306
|
-
// GRADIENT PRESET
|
|
209
|
+
// GRADIENT STYLE PRESET - Icon slides with gradient colors
|
|
210
|
+
// Note: For image-based gradient slides, use createImageSlide() with your own images
|
|
307
211
|
// ============================================================================
|
|
308
212
|
|
|
309
|
-
export const
|
|
213
|
+
export const gradientStyleSlides: SlideData[] = [
|
|
310
214
|
{
|
|
311
215
|
id: 'discover',
|
|
312
|
-
type: '
|
|
216
|
+
type: 'icon',
|
|
313
217
|
title: 'Discover',
|
|
314
218
|
description: 'Explore new possibilities and unlock your potential.',
|
|
315
|
-
|
|
219
|
+
icon: {
|
|
220
|
+
name: 'compass-outline',
|
|
221
|
+
type: 'material-community',
|
|
222
|
+
size: 72,
|
|
223
|
+
color: '#FFFFFF',
|
|
224
|
+
backgroundColor: '#667EEA',
|
|
225
|
+
backgroundSize: 160,
|
|
226
|
+
},
|
|
316
227
|
gradientColors: ['#667EEA', '#764BA2'],
|
|
317
228
|
},
|
|
318
229
|
{
|
|
319
230
|
id: 'create',
|
|
320
|
-
type: '
|
|
231
|
+
type: 'icon',
|
|
321
232
|
title: 'Create',
|
|
322
233
|
description: 'Build something amazing with powerful tools at your fingertips.',
|
|
323
|
-
|
|
234
|
+
icon: {
|
|
235
|
+
name: 'lightbulb-outline',
|
|
236
|
+
type: 'material-community',
|
|
237
|
+
size: 72,
|
|
238
|
+
color: '#FFFFFF',
|
|
239
|
+
backgroundColor: '#f093fb',
|
|
240
|
+
backgroundSize: 160,
|
|
241
|
+
},
|
|
324
242
|
gradientColors: ['#f093fb', '#f5576c'],
|
|
325
243
|
},
|
|
326
244
|
{
|
|
327
245
|
id: 'share',
|
|
328
|
-
type: '
|
|
246
|
+
type: 'icon',
|
|
329
247
|
title: 'Share',
|
|
330
248
|
description: 'Connect with others and share your journey.',
|
|
331
|
-
|
|
249
|
+
icon: {
|
|
250
|
+
name: 'share-variant-outline',
|
|
251
|
+
type: 'material-community',
|
|
252
|
+
size: 72,
|
|
253
|
+
color: '#FFFFFF',
|
|
254
|
+
backgroundColor: '#4facfe',
|
|
255
|
+
backgroundSize: 160,
|
|
256
|
+
},
|
|
332
257
|
gradientColors: ['#4facfe', '#00f2fe'],
|
|
333
258
|
},
|
|
334
259
|
];
|
|
@@ -339,14 +264,12 @@ export const gradientSlides: SlideData[] = [
|
|
|
339
264
|
|
|
340
265
|
export const getPresetSlides = (preset: string): SlideData[] => {
|
|
341
266
|
const slidesMap: Record<string, SlideData[]> = {
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
minimal: minimalSlides,
|
|
347
|
-
gradient: gradientSlides,
|
|
267
|
+
icon: iconStyleSlides,
|
|
268
|
+
modern: modernStyleSlides,
|
|
269
|
+
minimal: minimalStyleSlides,
|
|
270
|
+
gradient: gradientStyleSlides,
|
|
348
271
|
};
|
|
349
|
-
return slidesMap[preset] ||
|
|
272
|
+
return slidesMap[preset] || modernStyleSlides;
|
|
350
273
|
};
|
|
351
274
|
|
|
352
275
|
export const getPresetConfig = (preset: string): Partial<OnboardingConfig> => {
|
|
@@ -357,35 +280,46 @@ export const getPresetConfig = (preset: string): Partial<OnboardingConfig> => {
|
|
|
357
280
|
};
|
|
358
281
|
|
|
359
282
|
// ============================================================================
|
|
360
|
-
// QUICK START CONFIGS
|
|
283
|
+
// QUICK START CONFIGS - Generic configurations for each style
|
|
361
284
|
// ============================================================================
|
|
362
285
|
|
|
363
|
-
export const
|
|
364
|
-
slides:
|
|
365
|
-
storage: { key: '@
|
|
286
|
+
export const iconStyleConfig: OnboardingConfig = {
|
|
287
|
+
slides: iconStyleSlides,
|
|
288
|
+
storage: { key: '@onboarding:icon_complete', enabled: true },
|
|
289
|
+
navigation: { showSkip: false },
|
|
366
290
|
};
|
|
367
291
|
|
|
368
|
-
export const
|
|
369
|
-
slides:
|
|
370
|
-
storage: { key: '@
|
|
292
|
+
export const modernStyleConfig: OnboardingConfig = {
|
|
293
|
+
slides: modernStyleSlides,
|
|
294
|
+
storage: { key: '@onboarding:modern_complete', enabled: true },
|
|
371
295
|
};
|
|
372
296
|
|
|
373
|
-
export const
|
|
374
|
-
slides:
|
|
375
|
-
storage: { key: '@
|
|
376
|
-
|
|
297
|
+
export const minimalStyleConfig: OnboardingConfig = {
|
|
298
|
+
slides: minimalStyleSlides,
|
|
299
|
+
storage: { key: '@onboarding:minimal_complete', enabled: true },
|
|
300
|
+
};
|
|
301
|
+
|
|
302
|
+
export const gradientStyleConfig: OnboardingConfig = {
|
|
303
|
+
slides: gradientStyleSlides,
|
|
304
|
+
storage: { key: '@onboarding:gradient_complete', enabled: true },
|
|
377
305
|
};
|
|
378
306
|
|
|
379
307
|
export default {
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
308
|
+
// Helper functions for creating slides
|
|
309
|
+
createImageSlide,
|
|
310
|
+
createIconSlide,
|
|
311
|
+
createFormSlide,
|
|
312
|
+
// Example slides
|
|
313
|
+
iconStyleSlides,
|
|
314
|
+
modernStyleSlides,
|
|
315
|
+
minimalStyleSlides,
|
|
316
|
+
gradientStyleSlides,
|
|
317
|
+
// Getters
|
|
386
318
|
getPresetSlides,
|
|
387
319
|
getPresetConfig,
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
320
|
+
// Configs
|
|
321
|
+
iconStyleConfig,
|
|
322
|
+
modernStyleConfig,
|
|
323
|
+
minimalStyleConfig,
|
|
324
|
+
gradientStyleConfig,
|
|
391
325
|
};
|
package/src/themes/index.ts
CHANGED
|
@@ -66,10 +66,10 @@ const createShadows = () => ({
|
|
|
66
66
|
});
|
|
67
67
|
|
|
68
68
|
// ============================================================================
|
|
69
|
-
//
|
|
69
|
+
// IMAGE STYLE THEME - For image-based onboarding with gradient backgrounds
|
|
70
70
|
// ============================================================================
|
|
71
71
|
|
|
72
|
-
export const
|
|
72
|
+
export const imageStyleTheme: OnboardingTheme = {
|
|
73
73
|
colors: {
|
|
74
74
|
primary: '#667EEA',
|
|
75
75
|
secondary: '#06D6A0',
|
|
@@ -110,8 +110,8 @@ export const onepageTheme: OnboardingTheme = {
|
|
|
110
110
|
shadows: createShadows(),
|
|
111
111
|
};
|
|
112
112
|
|
|
113
|
-
export const
|
|
114
|
-
theme:
|
|
113
|
+
export const imageStylePreset: PresetConfig = {
|
|
114
|
+
theme: imageStyleTheme,
|
|
115
115
|
navigation: {
|
|
116
116
|
style: 'dots',
|
|
117
117
|
position: 'bottom',
|
|
@@ -120,7 +120,7 @@ export const onepagePreset: PresetConfig = {
|
|
|
120
120
|
skipLabel: 'Skip',
|
|
121
121
|
backLabel: 'Back',
|
|
122
122
|
nextLabel: 'Next',
|
|
123
|
-
doneLabel: "
|
|
123
|
+
doneLabel: "Get Started",
|
|
124
124
|
},
|
|
125
125
|
animation: {
|
|
126
126
|
type: 'slide',
|
|
@@ -148,10 +148,10 @@ export const onepagePreset: PresetConfig = {
|
|
|
148
148
|
};
|
|
149
149
|
|
|
150
150
|
// ============================================================================
|
|
151
|
-
//
|
|
151
|
+
// IMAGE GRADIENT THEME - Image slides with gradient overlay (dark text on gradient)
|
|
152
152
|
// ============================================================================
|
|
153
153
|
|
|
154
|
-
export const
|
|
154
|
+
export const imageGradientTheme: OnboardingTheme = {
|
|
155
155
|
colors: {
|
|
156
156
|
primary: '#6B4EFF',
|
|
157
157
|
secondary: '#FF8C42',
|
|
@@ -192,8 +192,8 @@ export const zaprecipeTheme: OnboardingTheme = {
|
|
|
192
192
|
shadows: createShadows(),
|
|
193
193
|
};
|
|
194
194
|
|
|
195
|
-
export const
|
|
196
|
-
theme:
|
|
195
|
+
export const imageGradientPreset: PresetConfig = {
|
|
196
|
+
theme: imageGradientTheme,
|
|
197
197
|
navigation: {
|
|
198
198
|
style: 'dots',
|
|
199
199
|
position: 'floating',
|
|
@@ -202,7 +202,7 @@ export const zaprecipePreset: PresetConfig = {
|
|
|
202
202
|
skipLabel: 'Skip',
|
|
203
203
|
backLabel: 'Back',
|
|
204
204
|
nextLabel: 'Continue',
|
|
205
|
-
doneLabel: "
|
|
205
|
+
doneLabel: "Get Started",
|
|
206
206
|
},
|
|
207
207
|
animation: {
|
|
208
208
|
type: 'fade',
|
|
@@ -230,10 +230,10 @@ export const zaprecipePreset: PresetConfig = {
|
|
|
230
230
|
};
|
|
231
231
|
|
|
232
232
|
// ============================================================================
|
|
233
|
-
//
|
|
233
|
+
// ICON STYLE THEME - For icon-based onboarding
|
|
234
234
|
// ============================================================================
|
|
235
235
|
|
|
236
|
-
export const
|
|
236
|
+
export const iconStyleTheme: OnboardingTheme = {
|
|
237
237
|
colors: {
|
|
238
238
|
primary: '#FF6B6B',
|
|
239
239
|
secondary: '#667EEA',
|
|
@@ -269,8 +269,8 @@ export const pomodoTheme: OnboardingTheme = {
|
|
|
269
269
|
shadows: createShadows(),
|
|
270
270
|
};
|
|
271
271
|
|
|
272
|
-
export const
|
|
273
|
-
theme:
|
|
272
|
+
export const iconStylePreset: PresetConfig = {
|
|
273
|
+
theme: iconStyleTheme,
|
|
274
274
|
navigation: {
|
|
275
275
|
style: 'dots',
|
|
276
276
|
position: 'bottom',
|
|
@@ -523,9 +523,9 @@ export const gradientPreset: PresetConfig = {
|
|
|
523
523
|
|
|
524
524
|
export const getTheme = (preset: string): OnboardingTheme => {
|
|
525
525
|
const themes: Record<string, OnboardingTheme> = {
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
526
|
+
image: imageStyleTheme,
|
|
527
|
+
imageGradient: imageGradientTheme,
|
|
528
|
+
icon: iconStyleTheme,
|
|
529
529
|
modern: modernTheme,
|
|
530
530
|
minimal: minimalTheme,
|
|
531
531
|
gradient: gradientTheme,
|
|
@@ -535,9 +535,9 @@ export const getTheme = (preset: string): OnboardingTheme => {
|
|
|
535
535
|
|
|
536
536
|
export const getPreset = (preset: string): PresetConfig => {
|
|
537
537
|
const presets: Record<string, PresetConfig> = {
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
538
|
+
image: imageStylePreset,
|
|
539
|
+
imageGradient: imageGradientPreset,
|
|
540
|
+
icon: iconStylePreset,
|
|
541
541
|
modern: modernPreset,
|
|
542
542
|
minimal: minimalPreset,
|
|
543
543
|
gradient: gradientPreset,
|
|
@@ -558,15 +558,15 @@ export const mergeTheme = (base: OnboardingTheme, custom?: Partial<OnboardingThe
|
|
|
558
558
|
};
|
|
559
559
|
|
|
560
560
|
export default {
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
561
|
+
imageStyleTheme,
|
|
562
|
+
imageGradientTheme,
|
|
563
|
+
iconStyleTheme,
|
|
564
564
|
modernTheme,
|
|
565
565
|
minimalTheme,
|
|
566
566
|
gradientTheme,
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
567
|
+
imageStylePreset,
|
|
568
|
+
imageGradientPreset,
|
|
569
|
+
iconStylePreset,
|
|
570
570
|
modernPreset,
|
|
571
571
|
minimalPreset,
|
|
572
572
|
gradientPreset,
|
package/src/types/index.ts
CHANGED
|
@@ -232,7 +232,7 @@ export interface NavigationButtonProps {
|
|
|
232
232
|
// PRESET TYPES
|
|
233
233
|
// ============================================================================
|
|
234
234
|
|
|
235
|
-
export type OnboardingPreset = '
|
|
235
|
+
export type OnboardingPreset = 'image' | 'imageGradient' | 'icon' | 'modern' | 'minimal' | 'gradient';
|
|
236
236
|
|
|
237
237
|
export interface PresetConfig {
|
|
238
238
|
theme: OnboardingTheme;
|