vibefast-cli 0.6.1 → 0.6.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"recipes.d.ts","sourceRoot":"","sources":["../../src/core/recipes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,CAAC;AAEvE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,UAAU,EAgH/B,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,cAAc,GAAG,UAAU,EAAE,CAE3E;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,cAAc,EAAE,CAIhD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAElE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAS/D"}
1
+ {"version":3,"file":"recipes.d.ts","sourceRoot":"","sources":["../../src/core/recipes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,CAAC;AAEvE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,UAAU,EAoE/B,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,cAAc,GAAG,UAAU,EAAE,CAE3E;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,cAAc,EAAE,CAIhD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAElE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAS/D"}
@@ -72,49 +72,6 @@ export const RECIPES = [
72
72
  description: 'In-app purchases and subscriptions with RevenueCat',
73
73
  icon: '💳',
74
74
  },
75
- // Advanced UI Components
76
- {
77
- name: 'glowing-button',
78
- category: 'advanced-ui',
79
- description: 'Animated glowing button with presets',
80
- icon: '✨',
81
- },
82
- {
83
- name: 'animated-chip',
84
- category: 'advanced-ui',
85
- description: 'Animated chip component',
86
- icon: '🏷️',
87
- },
88
- {
89
- name: 'number-stepper',
90
- category: 'advanced-ui',
91
- description: 'Number stepper with animations',
92
- icon: '🔢',
93
- },
94
- {
95
- name: 'animated-switch',
96
- category: 'advanced-ui',
97
- description: 'Smooth animated switch',
98
- icon: '🎚️',
99
- },
100
- {
101
- name: 'progress-circle',
102
- category: 'advanced-ui',
103
- description: 'Circular progress indicator',
104
- icon: '⭕',
105
- },
106
- {
107
- name: 'swipe-slider',
108
- category: 'advanced-ui',
109
- description: 'Swipeable slider component',
110
- icon: '👆',
111
- },
112
- {
113
- name: 'timeline',
114
- category: 'advanced-ui',
115
- description: 'Timeline view component',
116
- icon: '📅',
117
- },
118
75
  ];
119
76
  /**
120
77
  * Get recipes by category
@@ -1 +1 @@
1
- {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../src/core/recipes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../src/core/recipes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAiB;IACnC,WAAW;IACX;QACE,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,0CAA0C;QACvD,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,2BAA2B;QACxC,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,gDAAgD;QAC7D,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,6BAA6B;QAC1C,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,0BAA0B;QACvC,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,6BAA6B;QAC1C,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,uCAAuC;QACpD,IAAI,EAAE,KAAK;KACZ;IACD;QACE,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,KAAK;KACZ;IACD;QACE,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,8CAA8C;QAC3D,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,oDAAoD;QACjE,IAAI,EAAE,IAAI;KACX;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAwB;IAC3D,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjD,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAwB;IACrD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,UAAU,CAAC;QACpB,KAAK,aAAa;YAChB,OAAO,aAAa,CAAC;QACvB,KAAK,aAAa;YAChB,OAAO,cAAc,CAAC;IAC1B,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibefast-cli",
3
- "version": "0.6.1",
3
+ "version": "0.6.2",
4
4
  "description": "CLI for installing VibeFast features into your monorepo",
5
5
  "type": "module",
6
6
  "bin": {
@@ -0,0 +1,444 @@
1
+ import { MaterialIcons } from '@expo/vector-icons';
2
+ import { ScrollView, StyleSheet, Text, View } from 'react-native';
3
+ import { SafeAreaView } from 'react-native-safe-area-context';
4
+
5
+ import { useThemeConfig } from '../../../lib/use-theme-config';
6
+ import { Timeline } from './timeline-view';
7
+ import type { TimelineItem } from './types';
8
+
9
+ const ShippingDetailsComponent = () => {
10
+ const { colors } = useThemeConfig();
11
+ const styles = createDemoStyles(colors);
12
+ return (
13
+ <View style={styles.detailsCard}>
14
+ <Text style={styles.detailsTitle}>📦 Shipping Information</Text>
15
+ <View style={styles.detailsRow}>
16
+ <Text style={styles.detailsLabel}>Carrier</Text>
17
+ <Text style={styles.detailsValue}>FedEx Express</Text>
18
+ </View>
19
+ <View style={styles.detailsRow}>
20
+ <Text style={styles.detailsLabel}>Tracking ID</Text>
21
+ <Text style={styles.detailsValue}>1Z999AA1234567890</Text>
22
+ </View>
23
+ <View style={styles.detailsRow}>
24
+ <Text style={styles.detailsLabel}>Est. Delivery</Text>
25
+ <Text style={styles.detailsValue}>May 10, 6:00 PM</Text>
26
+ </View>
27
+ </View>
28
+ );
29
+ };
30
+
31
+ const ProjectMilestoneComponent = () => {
32
+ const { colors } = useThemeConfig();
33
+ const styles = createDemoStyles(colors);
34
+ return (
35
+ <View style={styles.detailsCard}>
36
+ <Text style={styles.detailsTitle}>🎯 Milestone Details</Text>
37
+ <View style={styles.detailsRow}>
38
+ <Text style={styles.detailsLabel}>Deliverables</Text>
39
+ <Text style={styles.detailsValue}>Design v2</Text>
40
+ </View>
41
+ <View style={styles.detailsRow}>
42
+ <Text style={styles.detailsLabel}>Team Size</Text>
43
+ <Text style={styles.detailsValue}>5 Designers</Text>
44
+ </View>
45
+ <View style={styles.detailsRow}>
46
+ <Text style={styles.detailsLabel}>Budget</Text>
47
+ <Text style={styles.detailsValue}>$24,500</Text>
48
+ </View>
49
+ </View>
50
+ );
51
+ };
52
+
53
+ const DevelopmentStatusComponent = () => {
54
+ const { colors } = useThemeConfig();
55
+ const styles = createDemoStyles(colors);
56
+ return (
57
+ <View style={styles.detailsCard}>
58
+ <Text style={styles.detailsTitle}>⚡ Development Progress</Text>
59
+ <View style={styles.progressRow}>
60
+ <Text style={styles.progressLabel}>Frontend</Text>
61
+ <View style={styles.progressBar}>
62
+ <View style={[styles.progressFill, { width: '85%' }]} />
63
+ </View>
64
+ <Text style={styles.progressValue}>85%</Text>
65
+ </View>
66
+ <View style={styles.progressRow}>
67
+ <Text style={styles.progressLabel}>Backend</Text>
68
+ <View style={styles.progressBar}>
69
+ <View
70
+ style={[
71
+ styles.progressFill,
72
+ { width: '92%', backgroundColor: colors.success },
73
+ ]}
74
+ />
75
+ </View>
76
+ <Text style={styles.progressValue}>92%</Text>
77
+ </View>
78
+ </View>
79
+ );
80
+ };
81
+
82
+ const TimelineDemo = () => {
83
+ const { colors } = useThemeConfig();
84
+ const styles = createDemoStyles(colors);
85
+
86
+ const orderTimelineItems: TimelineItem[] = [
87
+ {
88
+ id: 1,
89
+ title: 'Order Placed',
90
+ description: "We've received your order and will begin processing it.",
91
+ timestamp: 'May 7, 10:23 AM',
92
+ icon: 'shopping-bag',
93
+ status: 'complete',
94
+ meta: 'Order #38492',
95
+ },
96
+ {
97
+ id: 2,
98
+ title: 'Order Confirmed',
99
+ description: 'Your order is confirmed and ready to ship.',
100
+ timestamp: 'May 7, 11:05 AM',
101
+ icon: 'check-circle',
102
+ status: 'complete',
103
+ meta: 'Ready for shipment',
104
+ },
105
+ {
106
+ id: 3,
107
+ title: 'Shipped',
108
+ description: 'The package has left our facility and is on its way.',
109
+ timestamp: 'May 8, 9:15 AM',
110
+ icon: 'package',
111
+ status: 'complete',
112
+ children: <ShippingDetailsComponent />,
113
+ childrenContainer: { marginTop: 0 },
114
+ meta: 'In Transit',
115
+ },
116
+ {
117
+ id: 4,
118
+ title: 'Delivered',
119
+ timestamp: 'Est. May 10, by 6:00 PM',
120
+ icon: 'home',
121
+ status: 'upcoming',
122
+ meta: 'Pending delivery',
123
+ description: 'Your order will be delivered to your doorstep.',
124
+ },
125
+ ];
126
+
127
+ const projectTimelineItems: TimelineItem[] = [
128
+ {
129
+ id: 1,
130
+ title: 'Project Kickoff',
131
+ description: 'Initial meeting with stakeholders and team formation.',
132
+ timestamp: 'Jan 15, 2024',
133
+ icon: 'play-circle',
134
+ status: 'complete',
135
+ meta: 'Team assembled',
136
+ },
137
+ {
138
+ id: 2,
139
+ title: 'Design Phase',
140
+ description: 'UI/UX design, prototyping, and design system creation.',
141
+ timestamp: 'Feb 12, 2024',
142
+ icon: 'edit-3',
143
+ status: 'complete',
144
+ children: <ProjectMilestoneComponent />,
145
+ childrenContainer: { marginTop: 0 },
146
+ meta: 'Design system v2.0',
147
+ },
148
+ {
149
+ id: 3,
150
+ title: 'Development Sprint',
151
+ description: 'Frontend and backend development in parallel tracks.',
152
+ timestamp: 'Mar 5, 2024',
153
+ icon: 'code',
154
+ status: 'current',
155
+ children: <DevelopmentStatusComponent />,
156
+ childrenContainer: { marginTop: 0 },
157
+ meta: 'In Progress',
158
+ },
159
+ {
160
+ id: 4,
161
+ title: 'Launch',
162
+ description: 'Production deployment and go-live celebration.',
163
+ timestamp: 'Apr 15, 2024',
164
+ icon: 'zap',
165
+ status: 'upcoming',
166
+ meta: 'Launch day',
167
+ },
168
+ ];
169
+
170
+ const userJourneyItems: TimelineItem[] = [
171
+ {
172
+ id: 1,
173
+ title: 'Account Created',
174
+ description: 'User registered with email verification.',
175
+ timestamp: '2 hours ago',
176
+ icon: 'user-plus',
177
+ status: 'complete',
178
+ meta: 'sarah.johnson@email.com',
179
+ },
180
+ {
181
+ id: 2,
182
+ title: 'First Purchase',
183
+ description: 'Completed their first transaction successfully.',
184
+ timestamp: '45 minutes ago',
185
+ icon: 'shopping-cart',
186
+ status: 'complete',
187
+ meta: '$127.50',
188
+ },
189
+ {
190
+ id: 3,
191
+ title: 'App Downloaded',
192
+ description: 'Downloaded and logged into mobile application.',
193
+ timestamp: '12 minutes ago',
194
+ icon: 'smartphone',
195
+ status: 'current',
196
+ meta: 'iOS App',
197
+ },
198
+ ];
199
+
200
+ const handleItemPress = (item: TimelineItem) => {
201
+ console.log('Timeline item pressed:', item.title);
202
+ };
203
+
204
+ return (
205
+ <SafeAreaView style={styles.container}>
206
+ <ScrollView
207
+ contentContainerStyle={styles.content}
208
+ showsVerticalScrollIndicator={false}
209
+ contentInsetAdjustmentBehavior="always"
210
+ scrollEnabled
211
+ >
212
+ <View style={styles.header}>
213
+ <View style={styles.iconContainer}>
214
+ <MaterialIcons name="timeline" size={32} color={colors.primary} />
215
+ </View>
216
+ <Text style={styles.headerTitle}>Timeline Component Demo</Text>
217
+ <Text style={styles.subtitle}>
218
+ Beautiful timelines with various styles and interactive features
219
+ </Text>
220
+ </View>
221
+ <View style={styles.section}>
222
+ <View style={styles.sectionHeader}>
223
+ <Text style={styles.sectionTitle}>🧾 Order Timeline</Text>
224
+ <Text style={styles.sectionSubtitle}>
225
+ Follow your delivery journey
226
+ </Text>
227
+ </View>
228
+
229
+ <View style={styles.timelineWrapper}>
230
+ <Timeline
231
+ metaContainerStyle={styles.metaContainer}
232
+ animationType="rotate"
233
+ items={orderTimelineItems}
234
+ onItemPress={handleItemPress}
235
+ activeColor={colors.primary}
236
+ animated
237
+ titleStyle={styles.timelineTitle}
238
+ descriptionStyle={styles.timelineDescription}
239
+ timestampStyle={styles.timelineTimestamp}
240
+ metaTextStyle={styles.timelineMeta}
241
+ />
242
+ </View>
243
+ </View>
244
+
245
+ <View style={styles.section}>
246
+ <View style={styles.sectionHeader}>
247
+ <Text style={styles.sectionTitle}>🚀 Project Timeline</Text>
248
+ <Text style={styles.sectionSubtitle}>
249
+ Development milestones and progress
250
+ </Text>
251
+ </View>
252
+
253
+ <View style={styles.timelineWrapper}>
254
+ <Timeline
255
+ metaContainerStyle={[
256
+ styles.metaContainer,
257
+ { backgroundColor: colors.card },
258
+ ]}
259
+ animationType="fade"
260
+ items={projectTimelineItems}
261
+ onItemPress={handleItemPress}
262
+ activeColor={colors.success}
263
+ animated
264
+ titleStyle={styles.timelineTitle}
265
+ descriptionStyle={styles.timelineDescription}
266
+ timestampStyle={styles.timelineTimestamp}
267
+ metaTextStyle={styles.timelineMeta}
268
+ />
269
+ </View>
270
+ </View>
271
+
272
+ <View style={styles.section}>
273
+ <View style={styles.sectionHeader}>
274
+ <Text style={styles.sectionTitle}>👤 User Journey</Text>
275
+ <Text style={styles.sectionSubtitle}>
276
+ Real-time user activity tracking
277
+ </Text>
278
+ </View>
279
+
280
+ <View style={styles.timelineWrapper}>
281
+ <Timeline
282
+ metaContainerStyle={[
283
+ styles.metaContainer,
284
+ { backgroundColor: colors.background },
285
+ ]}
286
+ animationType="scale"
287
+ items={userJourneyItems}
288
+ onItemPress={handleItemPress}
289
+ activeColor={colors.destructive}
290
+ animated
291
+ titleStyle={styles.timelineTitle}
292
+ descriptionStyle={styles.timelineDescription}
293
+ timestampStyle={styles.timelineTimestamp}
294
+ metaTextStyle={styles.timelineMeta}
295
+ />
296
+ </View>
297
+ </View>
298
+ </ScrollView>
299
+ </SafeAreaView>
300
+ );
301
+ };
302
+
303
+ const createDemoStyles = (colors: any) =>
304
+ StyleSheet.create({
305
+ container: {
306
+ flex: 1,
307
+ backgroundColor: colors.background,
308
+ },
309
+ content: {
310
+ padding: 24,
311
+ paddingBottom: 48,
312
+ },
313
+ header: {
314
+ alignItems: 'center',
315
+ marginBottom: 32,
316
+ paddingTop: 20,
317
+ },
318
+ iconContainer: {
319
+ width: 64,
320
+ height: 64,
321
+ borderRadius: 32,
322
+ backgroundColor: colors.card,
323
+ alignItems: 'center',
324
+ justifyContent: 'center',
325
+ marginBottom: 16,
326
+ borderWidth: 1,
327
+ borderColor: colors.border,
328
+ },
329
+ headerTitle: {
330
+ fontSize: 28,
331
+ fontWeight: '700',
332
+ color: colors.foreground,
333
+ textAlign: 'center',
334
+ marginBottom: 8,
335
+ },
336
+ subtitle: {
337
+ fontSize: 16,
338
+ color: colors.mutedForeground,
339
+ textAlign: 'center',
340
+ lineHeight: 24,
341
+ maxWidth: 320,
342
+ },
343
+ section: {
344
+ marginBottom: 32,
345
+ },
346
+ sectionTitle: {
347
+ fontSize: 18,
348
+ fontWeight: '600',
349
+ color: colors.foreground,
350
+ marginBottom: 16,
351
+ marginLeft: 4,
352
+ },
353
+ sectionHeader: {
354
+ marginBottom: 16,
355
+ },
356
+ sectionSubtitle: {
357
+ fontSize: 14,
358
+ color: colors.mutedForeground,
359
+ marginTop: 4,
360
+ marginLeft: 4,
361
+ },
362
+ timelineWrapper: {
363
+ backgroundColor: colors.card,
364
+ borderWidth: 1,
365
+ borderColor: colors.border,
366
+ borderRadius: 12,
367
+ padding: 16,
368
+ },
369
+ metaContainer: {
370
+ backgroundColor: colors.background,
371
+ borderRadius: 8,
372
+ padding: 8,
373
+ },
374
+ timelineTitle: {
375
+ color: colors.foreground,
376
+ fontWeight: '600',
377
+ },
378
+ timelineDescription: {
379
+ color: colors.mutedForeground,
380
+ },
381
+ timelineTimestamp: {
382
+ color: colors.mutedForeground,
383
+ },
384
+ timelineMeta: {
385
+ color: colors.foreground,
386
+ },
387
+ detailsCard: {
388
+ backgroundColor: colors.background,
389
+ borderRadius: 12,
390
+ padding: 12,
391
+ marginTop: 8,
392
+ },
393
+ detailsTitle: {
394
+ fontSize: 14,
395
+ color: colors.foreground,
396
+ fontWeight: '500',
397
+ marginBottom: 8,
398
+ },
399
+ detailsRow: {
400
+ flexDirection: 'row',
401
+ justifyContent: 'space-between',
402
+ marginBottom: 6,
403
+ },
404
+ detailsLabel: {
405
+ fontSize: 13,
406
+ color: colors.mutedForeground,
407
+ },
408
+ detailsValue: {
409
+ fontSize: 13,
410
+ color: colors.foreground,
411
+ fontWeight: '500',
412
+ },
413
+ progressRow: {
414
+ flexDirection: 'row',
415
+ alignItems: 'center',
416
+ marginBottom: 8,
417
+ },
418
+ progressLabel: {
419
+ fontSize: 12,
420
+ color: colors.mutedForeground,
421
+ width: 60,
422
+ },
423
+ progressBar: {
424
+ flex: 1,
425
+ height: 6,
426
+ backgroundColor: colors.border,
427
+ borderRadius: 3,
428
+ marginHorizontal: 12,
429
+ },
430
+ progressFill: {
431
+ height: 6,
432
+ backgroundColor: colors.primary,
433
+ borderRadius: 3,
434
+ },
435
+ progressValue: {
436
+ fontSize: 12,
437
+ color: colors.foreground,
438
+ fontWeight: '500',
439
+ width: 35,
440
+ textAlign: 'right',
441
+ },
442
+ });
443
+
444
+ export default TimelineDemo;