react-native-elearn-ui 0.1.11 → 0.1.13

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 (60) hide show
  1. package/lib/module/index.js +1 -1
  2. package/lib/module/index.js.map +1 -1
  3. package/lib/module/screens/HomeScreen.js +672 -662
  4. package/lib/module/screens/HomeScreen.js.map +1 -1
  5. package/lib/module/screens/index.js +0 -8
  6. package/lib/module/screens/index.js.map +1 -1
  7. package/lib/typescript/src/index.d.ts +1 -1
  8. package/lib/typescript/src/index.d.ts.map +1 -1
  9. package/lib/typescript/src/screens/HomeScreen.d.ts.map +1 -1
  10. package/lib/typescript/src/screens/index.d.ts +0 -8
  11. package/lib/typescript/src/screens/index.d.ts.map +1 -1
  12. package/package.json +1 -1
  13. package/src/index.tsx +0 -8
  14. package/src/screens/HomeScreen.tsx +471 -534
  15. package/src/screens/index.ts +0 -8
  16. package/lib/module/screens/PearlChaptersScreen.js +0 -359
  17. package/lib/module/screens/PearlChaptersScreen.js.map +0 -1
  18. package/lib/module/screens/PearlReaderScreen.js +0 -313
  19. package/lib/module/screens/PearlReaderScreen.js.map +0 -1
  20. package/lib/module/screens/PearlsScreen.js +0 -153
  21. package/lib/module/screens/PearlsScreen.js.map +0 -1
  22. package/lib/module/screens/QbankScreen.js +0 -370
  23. package/lib/module/screens/QbankScreen.js.map +0 -1
  24. package/lib/module/screens/QuestionScreen.js +0 -437
  25. package/lib/module/screens/QuestionScreen.js.map +0 -1
  26. package/lib/module/screens/QuizStartScreen.js +0 -283
  27. package/lib/module/screens/QuizStartScreen.js.map +0 -1
  28. package/lib/module/screens/ResultScreen.js +0 -646
  29. package/lib/module/screens/ResultScreen.js.map +0 -1
  30. package/lib/module/screens/TopicListScreen.js +0 -420
  31. package/lib/module/screens/TopicListScreen.js.map +0 -1
  32. package/lib/module/screens/pearlsMockData.js +0 -77
  33. package/lib/module/screens/pearlsMockData.js.map +0 -1
  34. package/lib/typescript/src/screens/PearlChaptersScreen.d.ts +0 -13
  35. package/lib/typescript/src/screens/PearlChaptersScreen.d.ts.map +0 -1
  36. package/lib/typescript/src/screens/PearlReaderScreen.d.ts +0 -14
  37. package/lib/typescript/src/screens/PearlReaderScreen.d.ts.map +0 -1
  38. package/lib/typescript/src/screens/PearlsScreen.d.ts +0 -11
  39. package/lib/typescript/src/screens/PearlsScreen.d.ts.map +0 -1
  40. package/lib/typescript/src/screens/QbankScreen.d.ts +0 -10
  41. package/lib/typescript/src/screens/QbankScreen.d.ts.map +0 -1
  42. package/lib/typescript/src/screens/QuestionScreen.d.ts +0 -14
  43. package/lib/typescript/src/screens/QuestionScreen.d.ts.map +0 -1
  44. package/lib/typescript/src/screens/QuizStartScreen.d.ts +0 -14
  45. package/lib/typescript/src/screens/QuizStartScreen.d.ts.map +0 -1
  46. package/lib/typescript/src/screens/ResultScreen.d.ts +0 -13
  47. package/lib/typescript/src/screens/ResultScreen.d.ts.map +0 -1
  48. package/lib/typescript/src/screens/TopicListScreen.d.ts +0 -12
  49. package/lib/typescript/src/screens/TopicListScreen.d.ts.map +0 -1
  50. package/lib/typescript/src/screens/pearlsMockData.d.ts +0 -3
  51. package/lib/typescript/src/screens/pearlsMockData.d.ts.map +0 -1
  52. package/src/screens/PearlChaptersScreen.tsx +0 -330
  53. package/src/screens/PearlReaderScreen.tsx +0 -306
  54. package/src/screens/PearlsScreen.tsx +0 -147
  55. package/src/screens/QbankScreen.tsx +0 -327
  56. package/src/screens/QuestionScreen.tsx +0 -423
  57. package/src/screens/QuizStartScreen.tsx +0 -260
  58. package/src/screens/ResultScreen.tsx +0 -618
  59. package/src/screens/TopicListScreen.tsx +0 -388
  60. package/src/screens/pearlsMockData.ts +0 -70
@@ -1,618 +0,0 @@
1
- import React, { useState } from 'react';
2
- import {
3
- View,
4
- ScrollView,
5
- StyleSheet,
6
- TouchableOpacity,
7
- StatusBar,
8
- Image,
9
- } from 'react-native';
10
- import { SafeAreaView } from 'react-native-safe-area-context';
11
- import type { QuizResults, Question } from '../types';
12
- import { useElearnConfig } from '../context/ElearnConfigContext';
13
- import { useTheme } from '../context/ThemeContext';
14
- import { Typography, Card, CircularProgress, Button, Icon } from '../components';
15
-
16
- interface ResultScreenProps {
17
- results: QuizResults;
18
- questions?: Question[];
19
- topicId?: string;
20
- onClose: () => void;
21
- onReviewAnswers?: () => void;
22
- hideHeader?: boolean;
23
- }
24
-
25
- export const ResultScreen: React.FC<ResultScreenProps> = ({
26
- results,
27
- questions,
28
- topicId,
29
- onClose,
30
- hideHeader = false,
31
- }) => {
32
- const { config, getString } = useElearnConfig();
33
- const theme = useTheme();
34
-
35
- const activeTopic = topicId ? config.courses?.flatMap((c) => c.topics).find((t) => t.id === topicId) : undefined;
36
- const activeQuestions = questions || activeTopic?.questions || [];
37
-
38
- // Selected question index for individual review
39
- const [selectedReviewIndex, setSelectedReviewIndex] = useState<number | null>(null);
40
-
41
- const optionPrefixes = ['A', 'B', 'C', 'D', 'E'];
42
-
43
- const formatTime = (totalSeconds: number) => {
44
- const mins = Math.floor(totalSeconds / 60);
45
- const secs = totalSeconds % 60;
46
- if (mins > 0) {
47
- return `${mins}m ${secs}s`;
48
- }
49
- return `${secs}s`;
50
- };
51
-
52
- const handlePrevReview = () => {
53
- if (selectedReviewIndex !== null && selectedReviewIndex > 0) {
54
- setSelectedReviewIndex(selectedReviewIndex - 1);
55
- }
56
- };
57
-
58
- const handleNextReview = () => {
59
- if (selectedReviewIndex !== null && selectedReviewIndex < activeQuestions.length - 1) {
60
- setSelectedReviewIndex(selectedReviewIndex + 1);
61
- }
62
- };
63
-
64
- // --- Sub-View: Individual Question Detail Review ---
65
- if (selectedReviewIndex !== null) {
66
- const currentReviewQuestion = activeQuestions[selectedReviewIndex]!;
67
- const userAnswerIdx = results.userAnswers[currentReviewQuestion.id];
68
- // Removed unused isCorrect variable
69
-
70
- return (
71
- <SafeAreaView style={[styles.safeArea, { backgroundColor: theme.background }]}>
72
- <StatusBar barStyle="dark-content" />
73
-
74
- {/* Review Header */}
75
- {!hideHeader && (
76
- <View style={styles.header}>
77
- <TouchableOpacity onPress={() => setSelectedReviewIndex(null)} style={styles.backButton}>
78
- <Icon name="arrow-left" size={20} color={theme.textPrimary} />
79
- </TouchableOpacity>
80
-
81
- <Typography variant="h2" bold style={styles.headerTitle}>
82
- QBank Analysis
83
- </Typography>
84
-
85
- <TouchableOpacity onPress={onClose} style={styles.closeButton}>
86
- <Icon name="x-circle" size={24} color={theme.textSecondary} />
87
- </TouchableOpacity>
88
- </View>
89
- )}
90
-
91
- <ScrollView contentContainerStyle={styles.scrollContent} showsVerticalScrollIndicator={false}>
92
-
93
- {/* Question Index Meta */}
94
- <View style={styles.metaRow}>
95
- <Typography variant="caption" bold color={theme.textSecondary} style={styles.questionNumLabel}>
96
- QUESTION {selectedReviewIndex + 1}/{activeQuestions.length}
97
- </Typography>
98
- <View style={styles.metaActions}>
99
- <TouchableOpacity style={styles.metaActionBtn}>
100
- <Icon name="bookmark" size={18} color={theme.textSecondary} />
101
- </TouchableOpacity>
102
- </View>
103
- </View>
104
-
105
- {/* Question text */}
106
- <Typography variant="h2" bold color={theme.textPrimary} style={styles.questionText}>
107
- {currentReviewQuestion.text}
108
- </Typography>
109
-
110
- {/* Optional microscope image */}
111
- {currentReviewQuestion.imageUrl && (
112
- <Image
113
- source={{ uri: currentReviewQuestion.imageUrl }}
114
- style={styles.questionImage}
115
- resizeMode="cover"
116
- />
117
- )}
118
-
119
- {/* Options list showing correctness evaluations */}
120
- <View style={styles.optionsList}>
121
- {currentReviewQuestion.options.map((option, idx) => {
122
- const isUserSelection = userAnswerIdx === idx;
123
- const isCorrectAnswer = idx === currentReviewQuestion.correctOptionIndex;
124
-
125
- let optionBg = '#FFFFFF';
126
- let optionBorder = theme.border;
127
- let labelColor = theme.textPrimary;
128
- let prefixColor = theme.textSecondary;
129
- let statText = '';
130
-
131
- if (isCorrectAnswer) {
132
- optionBg = '#E6F4F1'; // Tinted green bg
133
- optionBorder = '#10B981'; // Green border
134
- labelColor = '#065F46';
135
- prefixColor = '#065F46';
136
- statText = isUserSelection ? 'Your Correct Answer' : 'Correct Answer';
137
- } else if (isUserSelection) {
138
- optionBg = '#FEF2F2'; // Tinted red bg
139
- optionBorder = '#EF4444'; // Red border
140
- labelColor = '#991B1B';
141
- prefixColor = '#991B1B';
142
- statText = 'Your Incorrect Answer';
143
- }
144
-
145
- return (
146
- <View
147
- key={idx}
148
- style={[
149
- styles.optionCard,
150
- {
151
- backgroundColor: optionBg,
152
- borderColor: optionBorder,
153
- },
154
- ]}
155
- >
156
- <View style={styles.optionRow}>
157
- <Typography variant="body" bold color={prefixColor} style={styles.optionPrefix}>
158
- {optionPrefixes[idx] || idx + 1}
159
- </Typography>
160
- <Typography variant="body" color={labelColor} style={styles.optionText}>
161
- {option}
162
- </Typography>
163
- </View>
164
-
165
- {statText !== '' && (
166
- <View style={styles.statBadgeRow}>
167
- <Typography variant="caption" bold color={isCorrectAnswer ? '#10B981' : '#EF4444'}>
168
- {statText}
169
- </Typography>
170
- </View>
171
- )}
172
- </View>
173
- );
174
- })}
175
- </View>
176
-
177
- {/* Explanation info */}
178
- <View style={styles.explanationSection}>
179
- <Typography variant="h2" bold color={theme.textPrimary} style={styles.explanationTitle}>
180
- Explanation
181
- </Typography>
182
- <Typography variant="body" color={theme.textSecondary} style={styles.explanationBody}>
183
- {currentReviewQuestion.explanation}
184
- </Typography>
185
-
186
- <Typography variant="h3" bold color={theme.textSecondary} style={styles.rxdxId}>
187
- RXDX ID: R23082
188
- </Typography>
189
- </View>
190
-
191
- </ScrollView>
192
-
193
- {/* Previous and Next Navigation Footer */}
194
- <View style={styles.footerRow}>
195
- {/* Previous Button */}
196
- <TouchableOpacity
197
- onPress={handlePrevReview}
198
- disabled={selectedReviewIndex === 0}
199
- style={[styles.footerActionBtn, selectedReviewIndex === 0 && { opacity: 0.4 }]}
200
- >
201
- <Typography variant="body" bold color={theme.textPrimary}>
202
- Previous
203
- </Typography>
204
- </TouchableOpacity>
205
-
206
- {/* Back to summary */}
207
- <TouchableOpacity
208
- onPress={() => setSelectedReviewIndex(null)}
209
- style={styles.backToListBtn}
210
- >
211
- <Typography variant="body" bold color={theme.primary}>
212
- Back to Summary
213
- </Typography>
214
- </TouchableOpacity>
215
-
216
- {/* Next Button */}
217
- <TouchableOpacity
218
- onPress={handleNextReview}
219
- disabled={selectedReviewIndex === activeQuestions.length - 1}
220
- style={[
221
- styles.nextActionBtn,
222
- { backgroundColor: theme.primary },
223
- selectedReviewIndex === activeQuestions.length - 1 && { opacity: 0.4 }
224
- ]}
225
- >
226
- <Typography variant="body" bold color="#FFFFFF">
227
- Next
228
- </Typography>
229
- </TouchableOpacity>
230
- </View>
231
- </SafeAreaView>
232
- );
233
- }
234
-
235
- // --- Main View: Quiz Performance Scorecard & Summary List ---
236
- return (
237
- <SafeAreaView style={[styles.safeArea, { backgroundColor: theme.background }]}>
238
- <StatusBar barStyle="dark-content" />
239
-
240
- {/* Header */}
241
- {!hideHeader && (
242
- <View style={styles.header}>
243
- <View style={styles.headerLeftPlaceholder} />
244
- <Typography variant="h2" bold style={styles.headerTitleMain}>
245
- QBank Analysis
246
- </Typography>
247
- <TouchableOpacity onPress={onClose} style={styles.closeButton}>
248
- <Icon name="x-circle" size={24} color={theme.textSecondary} />
249
- </TouchableOpacity>
250
- </View>
251
- )}
252
-
253
- <ScrollView contentContainerStyle={styles.scrollContent} showsVerticalScrollIndicator={false}>
254
-
255
- {/* Scorecard Summary */}
256
- <Card bordered style={styles.summaryCard}>
257
- <View style={styles.summaryRow}>
258
- <View style={styles.summaryLeft}>
259
- <Typography variant="h1" bold color={theme.textPrimary}>
260
- {getString('scorecardTitle') || 'Quiz Analysis'}
261
- </Typography>
262
- <Typography variant="body" color={theme.textSecondary} style={styles.summarySubtitle}>
263
- {getString('resultsSubtitle') || 'Here is your QBank performance summary!'}
264
- </Typography>
265
-
266
- <View style={styles.statsContainer}>
267
- <View style={styles.statBox}>
268
- <Typography variant="caption" color={theme.textSecondary}>
269
- {getString('correctAnswersCountLabel') || 'Correct Answers'}
270
- </Typography>
271
- <Typography variant="h2" bold color={theme.success} style={styles.statValue}>
272
- {results.correctCount} / {results.totalQuestions}
273
- </Typography>
274
- </View>
275
-
276
- <View style={styles.statBox}>
277
- <Typography variant="caption" color={theme.textSecondary}>
278
- {getString('timeSpentLabel') || 'Time Spent'}
279
- </Typography>
280
- <Typography variant="h2" bold color={theme.textPrimary} style={styles.statValue}>
281
- {formatTime(results.timeSpentSeconds)}
282
- </Typography>
283
- </View>
284
- </View>
285
- </View>
286
-
287
- <View style={styles.summaryRight}>
288
- <CircularProgress
289
- progress={results.accuracy / 100}
290
- size={84}
291
- strokeWidth={8}
292
- color={results.accuracy >= 60 ? theme.success : theme.warning}
293
- backgroundColor={theme.secondary}
294
- textStyle={{ fontSize: 16 }}
295
- />
296
- <Typography variant="caption" color={theme.textSecondary} style={styles.accuracyText}>
297
- {getString('accuracyLabel') || 'Accuracy'}
298
- </Typography>
299
- </View>
300
- </View>
301
- </Card>
302
-
303
- {/* Detailed Question Review List */}
304
- <View style={styles.sectionHeader}>
305
- <Typography variant="h2" bold>
306
- Questions Summary
307
- </Typography>
308
- </View>
309
-
310
- <View style={styles.reviewList}>
311
- {activeQuestions.map((question, idx) => {
312
- const userAnswerIdx = results.userAnswers[question.id];
313
- const isCorrect = userAnswerIdx === question.correctOptionIndex;
314
-
315
- return (
316
- <TouchableOpacity
317
- key={question.id}
318
- activeOpacity={0.8}
319
- onPress={() => setSelectedReviewIndex(idx)}
320
- >
321
- <Card bordered style={styles.reviewCard}>
322
- <View style={styles.reviewCardHeader}>
323
- <View style={[styles.questionNumBadge, { backgroundColor: theme.secondary }]}>
324
- <Typography variant="caption" bold color={theme.primary}>
325
- Q{idx + 1}
326
- </Typography>
327
- </View>
328
-
329
- <View style={styles.statusBadge}>
330
- <Icon
331
- name={isCorrect ? 'check-circle' : 'x-circle'}
332
- size={18}
333
- color={isCorrect ? theme.success : theme.danger}
334
- />
335
- <Typography
336
- variant="caption"
337
- bold
338
- color={isCorrect ? theme.success : theme.danger}
339
- style={styles.statusBadgeText}
340
- >
341
- {isCorrect ? 'Correct' : 'Incorrect'}
342
- </Typography>
343
- </View>
344
- </View>
345
-
346
- <Typography variant="body" bold style={styles.reviewQuestionText}>
347
- {question.text}
348
- </Typography>
349
-
350
- <View style={styles.userSelectionContainer}>
351
- <Typography variant="caption" color={theme.textSecondary}>
352
- Your answer:{' '}
353
- <Typography variant="caption" bold color={isCorrect ? theme.success : theme.danger}>
354
- {userAnswerIdx !== undefined
355
- ? `Option ${optionPrefixes[userAnswerIdx] || userAnswerIdx + 1}`
356
- : 'Skipped'}
357
- </Typography>
358
- </Typography>
359
-
360
- {!isCorrect && (
361
- <Typography variant="caption" color={theme.textSecondary} style={styles.correctAnswerText}>
362
- Correct answer:{' '}
363
- <Typography variant="caption" bold color={theme.success}>
364
- Option {optionPrefixes[question.correctOptionIndex] || question.correctOptionIndex + 1}
365
- </Typography>
366
- </Typography>
367
- )}
368
- </View>
369
- </Card>
370
- </TouchableOpacity>
371
- );
372
- })}
373
- </View>
374
-
375
- </ScrollView>
376
-
377
- {/* Footer Controls */}
378
- <View style={[styles.footer, { backgroundColor: theme.cardBackground, borderTopColor: theme.border }]}>
379
- <Button
380
- title="Back to Dashboard"
381
- onPress={onClose}
382
- variant="primary"
383
- style={styles.homeBtn}
384
- />
385
- </View>
386
- </SafeAreaView>
387
- );
388
- };
389
-
390
- const styles = StyleSheet.create({
391
- safeArea: {
392
- flex: 1,
393
- },
394
- header: {
395
- flexDirection: 'row',
396
- justifyContent: 'space-between',
397
- alignItems: 'center',
398
- paddingHorizontal: 16,
399
- paddingVertical: 12,
400
- },
401
- backButton: {
402
- padding: 6,
403
- },
404
- closeButton: {
405
- padding: 6,
406
- },
407
- headerTitle: {
408
- fontSize: 18,
409
- fontWeight: '700',
410
- },
411
- headerTitleMain: {
412
- fontSize: 18,
413
- fontWeight: '700',
414
- },
415
- headerLeftPlaceholder: {
416
- width: 36,
417
- },
418
- scrollContent: {
419
- paddingHorizontal: 16,
420
- paddingTop: 12,
421
- paddingBottom: 40,
422
- },
423
- summaryCard: {
424
- padding: 20,
425
- borderRadius: 20,
426
- },
427
- summaryRow: {
428
- flexDirection: 'row',
429
- justifyContent: 'space-between',
430
- alignItems: 'center',
431
- },
432
- summaryLeft: {
433
- flex: 1,
434
- paddingRight: 16,
435
- },
436
- summarySubtitle: {
437
- marginTop: 4,
438
- marginBottom: 16,
439
- fontSize: 12,
440
- },
441
- statsContainer: {
442
- flexDirection: 'row',
443
- },
444
- statBox: {
445
- marginRight: 24,
446
- },
447
- statValue: {
448
- fontSize: 18,
449
- marginTop: 2,
450
- },
451
- summaryRight: {
452
- alignItems: 'center',
453
- justifyContent: 'center',
454
- },
455
- accuracyText: {
456
- marginTop: 8,
457
- fontWeight: '600',
458
- },
459
- sectionHeader: {
460
- marginTop: 24,
461
- marginBottom: 12,
462
- },
463
- reviewList: {
464
- marginTop: 4,
465
- },
466
- reviewCard: {
467
- padding: 16,
468
- marginBottom: 12,
469
- borderRadius: 16,
470
- },
471
- reviewCardHeader: {
472
- flexDirection: 'row',
473
- justifyContent: 'space-between',
474
- alignItems: 'center',
475
- marginBottom: 10,
476
- },
477
- questionNumBadge: {
478
- paddingHorizontal: 8,
479
- paddingVertical: 4,
480
- borderRadius: 8,
481
- },
482
- statusBadge: {
483
- flexDirection: 'row',
484
- alignItems: 'center',
485
- },
486
- statusBadgeText: {
487
- marginLeft: 6,
488
- },
489
- reviewQuestionText: {
490
- fontSize: 14,
491
- lineHeight: 20,
492
- marginBottom: 10,
493
- },
494
- userSelectionContainer: {
495
- backgroundColor: '#F8FAFC',
496
- padding: 10,
497
- borderRadius: 8,
498
- },
499
- correctAnswerText: {
500
- marginTop: 4,
501
- },
502
- footer: {
503
- paddingHorizontal: 16,
504
- paddingVertical: 14,
505
- borderTopWidth: 1,
506
- backgroundColor: '#FFFFFF',
507
- },
508
- homeBtn: {
509
- width: '100%',
510
- height: 48,
511
- justifyContent: 'center',
512
- alignItems: 'center',
513
- borderRadius: 24, // Matches "Back to Dashboard" rounded pill button
514
- },
515
- // --- Detailed Review Screen Styles ---
516
- metaRow: {
517
- flexDirection: 'row',
518
- justifyContent: 'space-between',
519
- alignItems: 'center',
520
- marginBottom: 12,
521
- },
522
- questionNumLabel: {
523
- fontSize: 12,
524
- letterSpacing: 0.8,
525
- },
526
- metaActions: {
527
- flexDirection: 'row',
528
- alignItems: 'center',
529
- },
530
- metaActionBtn: {
531
- padding: 6,
532
- },
533
- questionText: {
534
- fontSize: 16,
535
- lineHeight: 22,
536
- marginBottom: 14,
537
- },
538
- questionImage: {
539
- width: '100%',
540
- height: 180,
541
- borderRadius: 12,
542
- marginBottom: 16,
543
- backgroundColor: '#F8FAFC',
544
- },
545
- optionsList: {
546
- marginBottom: 12,
547
- },
548
- optionCard: {
549
- borderWidth: 1,
550
- borderRadius: 10,
551
- padding: 12,
552
- marginBottom: 10,
553
- },
554
- optionRow: {
555
- flexDirection: 'row',
556
- alignItems: 'flex-start',
557
- },
558
- optionPrefix: {
559
- width: 24,
560
- fontSize: 14,
561
- fontWeight: '600',
562
- },
563
- optionText: {
564
- flex: 1,
565
- fontSize: 14,
566
- lineHeight: 18,
567
- },
568
- statBadgeRow: {
569
- marginTop: 6,
570
- paddingLeft: 24,
571
- },
572
- explanationSection: {
573
- marginTop: 14,
574
- paddingTop: 14,
575
- borderTopWidth: 1,
576
- borderTopColor: '#E2E8F0',
577
- },
578
- explanationTitle: {
579
- fontSize: 15,
580
- marginBottom: 6,
581
- },
582
- explanationBody: {
583
- fontSize: 13,
584
- lineHeight: 18,
585
- marginBottom: 16,
586
- },
587
- rxdxId: {
588
- fontSize: 12,
589
- textAlign: 'center',
590
- marginTop: 12,
591
- },
592
- footerRow: {
593
- flexDirection: 'row',
594
- alignItems: 'center',
595
- paddingHorizontal: 16,
596
- paddingVertical: 12,
597
- backgroundColor: '#FFFFFF',
598
- borderTopWidth: 1,
599
- borderTopColor: '#E2E8F0',
600
- justifyContent: 'space-between',
601
- },
602
- footerActionBtn: {
603
- paddingVertical: 8,
604
- paddingHorizontal: 12,
605
- },
606
- backToListBtn: {
607
- paddingVertical: 8,
608
- paddingHorizontal: 12,
609
- },
610
- nextActionBtn: {
611
- paddingHorizontal: 24,
612
- paddingVertical: 10,
613
- borderRadius: 8,
614
- minWidth: 80,
615
- justifyContent: 'center',
616
- alignItems: 'center',
617
- },
618
- });