react-native-elearn-ui 0.1.5 → 0.1.7
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/lib/module/components/Icon.js +97 -0
- package/lib/module/components/Icon.js.map +1 -1
- package/lib/module/screens/QbankScreen.js +251 -99
- package/lib/module/screens/QbankScreen.js.map +1 -1
- package/lib/module/screens/QuestionScreen.js +219 -179
- package/lib/module/screens/QuestionScreen.js.map +1 -1
- package/lib/module/screens/QuizStartScreen.js +134 -131
- package/lib/module/screens/QuizStartScreen.js.map +1 -1
- package/lib/module/screens/ResultScreen.js +407 -85
- package/lib/module/screens/ResultScreen.js.map +1 -1
- package/lib/module/screens/TopicListScreen.js +284 -135
- package/lib/module/screens/TopicListScreen.js.map +1 -1
- package/lib/typescript/src/components/Icon.d.ts +1 -1
- package/lib/typescript/src/components/Icon.d.ts.map +1 -1
- package/lib/typescript/src/screens/QbankScreen.d.ts.map +1 -1
- package/lib/typescript/src/screens/QuestionScreen.d.ts.map +1 -1
- package/lib/typescript/src/screens/QuizStartScreen.d.ts.map +1 -1
- package/lib/typescript/src/screens/ResultScreen.d.ts.map +1 -1
- package/lib/typescript/src/screens/TopicListScreen.d.ts.map +1 -1
- package/lib/typescript/src/types/index.d.ts +4 -0
- package/lib/typescript/src/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/Icon.tsx +125 -1
- package/src/screens/QbankScreen.tsx +191 -67
- package/src/screens/QuestionScreen.tsx +179 -176
- package/src/screens/QuizStartScreen.tsx +118 -112
- package/src/screens/ResultScreen.tsx +382 -76
- package/src/screens/TopicListScreen.tsx +262 -111
- package/src/types/index.ts +4 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuizStartScreen.d.ts","sourceRoot":"","sources":["../../../../src/screens/QuizStartScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAU,CAAC;AAK9C,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,
|
|
1
|
+
{"version":3,"file":"QuizStartScreen.d.ts","sourceRoot":"","sources":["../../../../src/screens/QuizStartScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAU,CAAC;AAK9C,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAyG1D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResultScreen.d.ts","sourceRoot":"","sources":["../../../../src/screens/ResultScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ResultScreen.d.ts","sourceRoot":"","sources":["../../../../src/screens/ResultScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAUxC,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,mBAAU,CAAC;AAKtD,UAAU,iBAAiB;IACzB,OAAO,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAuWpD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TopicListScreen.d.ts","sourceRoot":"","sources":["../../../../src/screens/TopicListScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"TopicListScreen.d.ts","sourceRoot":"","sources":["../../../../src/screens/TopicListScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AASxC,OAAO,KAAK,EAAE,MAAM,EAAS,MAAM,mBAAU,CAAC;AAK9C,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAuL1D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAE5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAG5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAG7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAG9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/components/Icon.tsx
CHANGED
|
@@ -26,7 +26,14 @@ export type IconName =
|
|
|
26
26
|
| 'bookmark'
|
|
27
27
|
| 'file-text'
|
|
28
28
|
| 'download'
|
|
29
|
-
| 'share'
|
|
29
|
+
| 'share'
|
|
30
|
+
| 'lock'
|
|
31
|
+
| 'activity'
|
|
32
|
+
| 'eye'
|
|
33
|
+
| 'clipboard'
|
|
34
|
+
| 'whatsapp'
|
|
35
|
+
| 'alert-circle'
|
|
36
|
+
| 'pause-circle';
|
|
30
37
|
|
|
31
38
|
interface IconProps {
|
|
32
39
|
name: IconName;
|
|
@@ -407,6 +414,123 @@ export const Icon: React.FC<IconProps> = ({
|
|
|
407
414
|
fill="none"
|
|
408
415
|
/>
|
|
409
416
|
);
|
|
417
|
+
case 'lock':
|
|
418
|
+
return (
|
|
419
|
+
<G>
|
|
420
|
+
<Path
|
|
421
|
+
d="M3 11v11a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V11a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2z"
|
|
422
|
+
stroke={iconColor}
|
|
423
|
+
strokeWidth={strokeWidth}
|
|
424
|
+
fill="none"
|
|
425
|
+
/>
|
|
426
|
+
<Path
|
|
427
|
+
d="M7 9V5a5 5 0 0 1 10 0v4"
|
|
428
|
+
stroke={iconColor}
|
|
429
|
+
strokeWidth={strokeWidth}
|
|
430
|
+
fill="none"
|
|
431
|
+
/>
|
|
432
|
+
</G>
|
|
433
|
+
);
|
|
434
|
+
case 'activity':
|
|
435
|
+
return (
|
|
436
|
+
<Path
|
|
437
|
+
d="M22 12h-4l-3 9L9 3l-3 9H2"
|
|
438
|
+
stroke={iconColor}
|
|
439
|
+
strokeWidth={strokeWidth}
|
|
440
|
+
fill="none"
|
|
441
|
+
strokeLinecap="round"
|
|
442
|
+
strokeLinejoin="round"
|
|
443
|
+
/>
|
|
444
|
+
);
|
|
445
|
+
case 'eye':
|
|
446
|
+
return (
|
|
447
|
+
<G>
|
|
448
|
+
<Path
|
|
449
|
+
d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"
|
|
450
|
+
stroke={iconColor}
|
|
451
|
+
strokeWidth={strokeWidth}
|
|
452
|
+
fill="none"
|
|
453
|
+
/>
|
|
454
|
+
<Circle
|
|
455
|
+
cx="12"
|
|
456
|
+
cy="12"
|
|
457
|
+
r="3"
|
|
458
|
+
stroke={iconColor}
|
|
459
|
+
strokeWidth={strokeWidth}
|
|
460
|
+
fill="none"
|
|
461
|
+
/>
|
|
462
|
+
</G>
|
|
463
|
+
);
|
|
464
|
+
case 'clipboard':
|
|
465
|
+
return (
|
|
466
|
+
<G>
|
|
467
|
+
<Path
|
|
468
|
+
d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"
|
|
469
|
+
stroke={iconColor}
|
|
470
|
+
strokeWidth={strokeWidth}
|
|
471
|
+
fill="none"
|
|
472
|
+
/>
|
|
473
|
+
<Path
|
|
474
|
+
d="M8 2h8v4H8z"
|
|
475
|
+
stroke={iconColor}
|
|
476
|
+
strokeWidth={strokeWidth}
|
|
477
|
+
fill="none"
|
|
478
|
+
/>
|
|
479
|
+
</G>
|
|
480
|
+
);
|
|
481
|
+
case 'whatsapp':
|
|
482
|
+
return (
|
|
483
|
+
<Path
|
|
484
|
+
d="M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z"
|
|
485
|
+
stroke={iconColor}
|
|
486
|
+
strokeWidth={strokeWidth}
|
|
487
|
+
fill="none"
|
|
488
|
+
/>
|
|
489
|
+
);
|
|
490
|
+
case 'alert-circle':
|
|
491
|
+
return (
|
|
492
|
+
<G>
|
|
493
|
+
<Circle
|
|
494
|
+
cx="12"
|
|
495
|
+
cy="12"
|
|
496
|
+
r="10"
|
|
497
|
+
stroke={iconColor}
|
|
498
|
+
strokeWidth={strokeWidth}
|
|
499
|
+
fill="none"
|
|
500
|
+
/>
|
|
501
|
+
<Path
|
|
502
|
+
d="M12 8v4"
|
|
503
|
+
stroke={iconColor}
|
|
504
|
+
strokeWidth={strokeWidth}
|
|
505
|
+
strokeLinecap="round"
|
|
506
|
+
/>
|
|
507
|
+
<Circle
|
|
508
|
+
cx="12"
|
|
509
|
+
cy="16"
|
|
510
|
+
r="0.5"
|
|
511
|
+
fill={iconColor}
|
|
512
|
+
/>
|
|
513
|
+
</G>
|
|
514
|
+
);
|
|
515
|
+
case 'pause-circle':
|
|
516
|
+
return (
|
|
517
|
+
<G>
|
|
518
|
+
<Circle
|
|
519
|
+
cx="12"
|
|
520
|
+
cy="12"
|
|
521
|
+
r="10"
|
|
522
|
+
stroke={iconColor}
|
|
523
|
+
strokeWidth={strokeWidth}
|
|
524
|
+
fill="none"
|
|
525
|
+
/>
|
|
526
|
+
<Path
|
|
527
|
+
d="M10 15V9M14 15V9"
|
|
528
|
+
stroke={iconColor}
|
|
529
|
+
strokeWidth={strokeWidth}
|
|
530
|
+
strokeLinecap="round"
|
|
531
|
+
/>
|
|
532
|
+
</G>
|
|
533
|
+
);
|
|
410
534
|
default:
|
|
411
535
|
return null;
|
|
412
536
|
}
|
|
@@ -6,17 +6,19 @@ import {
|
|
|
6
6
|
TouchableOpacity,
|
|
7
7
|
SafeAreaView,
|
|
8
8
|
StatusBar,
|
|
9
|
+
Image,
|
|
9
10
|
} from 'react-native';
|
|
10
11
|
import { useElearnConfig } from '../context/ElearnConfigContext';
|
|
11
12
|
import { useTheme } from '../context/ThemeContext';
|
|
12
13
|
import { Typography, Card, ProgressBar, Icon } from '../components';
|
|
14
|
+
import type { IconName } from '../components';
|
|
13
15
|
|
|
14
16
|
interface QbankScreenProps {
|
|
15
17
|
hideHeader?: boolean;
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
export const QbankScreen: React.FC<QbankScreenProps> = ({ hideHeader = false }) => {
|
|
19
|
-
const { config, callbacks
|
|
21
|
+
const { config, callbacks } = useElearnConfig();
|
|
20
22
|
const theme = useTheme();
|
|
21
23
|
|
|
22
24
|
const courses = config.courses || [];
|
|
@@ -35,20 +37,67 @@ export const QbankScreen: React.FC<QbankScreenProps> = ({ hideHeader = false })
|
|
|
35
37
|
<Icon name="arrow-left" size={20} color={theme.textPrimary} />
|
|
36
38
|
</TouchableOpacity>
|
|
37
39
|
<Typography variant="h2" bold style={styles.headerTitle}>
|
|
38
|
-
|
|
40
|
+
QBank
|
|
39
41
|
</Typography>
|
|
40
|
-
<
|
|
42
|
+
<TouchableOpacity style={styles.searchButton}>
|
|
43
|
+
<Icon name="search" size={20} color={theme.textPrimary} />
|
|
44
|
+
</TouchableOpacity>
|
|
41
45
|
</View>
|
|
42
46
|
)}
|
|
43
47
|
|
|
44
48
|
<ScrollView contentContainerStyle={styles.scrollContent} showsVerticalScrollIndicator={false}>
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
|
|
50
|
+
{/* Promoted Premium Card */}
|
|
51
|
+
<Card style={styles.premiumCard}>
|
|
52
|
+
<View style={styles.premiumTextContainer}>
|
|
53
|
+
<Typography variant="h2" bold color={theme.textPrimary} style={styles.premiumTitle}>
|
|
54
|
+
More than 100+ Courses in premium
|
|
55
|
+
</Typography>
|
|
56
|
+
<Typography variant="caption" color={theme.textSecondary} style={styles.premiumSub}>
|
|
57
|
+
Advance your skills with top-rated, expert-led courses anytime
|
|
58
|
+
</Typography>
|
|
59
|
+
<TouchableOpacity style={[styles.premiumBtn, { backgroundColor: theme.primary }]}>
|
|
60
|
+
<Typography variant="caption" bold color="#FFFFFF">
|
|
61
|
+
Get Premium
|
|
62
|
+
</Typography>
|
|
63
|
+
</TouchableOpacity>
|
|
64
|
+
</View>
|
|
65
|
+
<View style={styles.premiumImageContainer}>
|
|
66
|
+
<Image
|
|
67
|
+
source={{ uri: 'https://images.unsplash.com/photo-1559839734-2b71ea197ec2?q=80&w=200&auto=format&fit=crop' }}
|
|
68
|
+
style={styles.premiumImage}
|
|
69
|
+
/>
|
|
70
|
+
</View>
|
|
71
|
+
</Card>
|
|
72
|
+
|
|
73
|
+
{/* Quick Options */}
|
|
74
|
+
<View style={styles.optionsRow}>
|
|
75
|
+
<TouchableOpacity style={styles.optionBtn}>
|
|
76
|
+
<View style={[styles.optionIconContainer, { backgroundColor: 'rgba(59, 130, 246, 0.1)' }]}>
|
|
77
|
+
<Icon name="bookmark" size={18} color="#3B82F6" />
|
|
78
|
+
</View>
|
|
79
|
+
<Typography variant="caption" bold color={theme.textPrimary} style={styles.optionLabel}>
|
|
80
|
+
Bookmark
|
|
81
|
+
</Typography>
|
|
82
|
+
</TouchableOpacity>
|
|
83
|
+
|
|
84
|
+
<TouchableOpacity style={styles.optionBtn}>
|
|
85
|
+
<View style={[styles.optionIconContainer, { backgroundColor: 'rgba(16, 185, 129, 0.1)' }]}>
|
|
86
|
+
<Icon name="clipboard" size={18} color="#10B981" strokeWidth={1.5} />
|
|
87
|
+
</View>
|
|
88
|
+
<Typography variant="caption" bold color={theme.textPrimary} style={styles.optionLabel}>
|
|
89
|
+
Costume module
|
|
90
|
+
</Typography>
|
|
91
|
+
</TouchableOpacity>
|
|
92
|
+
|
|
93
|
+
<TouchableOpacity style={styles.optionBtn}>
|
|
94
|
+
<View style={[styles.optionIconContainer, { backgroundColor: 'rgba(168, 85, 247, 0.1)' }]}>
|
|
95
|
+
<Icon name="activity" size={18} color="#A855F7" />
|
|
96
|
+
</View>
|
|
97
|
+
<Typography variant="caption" bold color={theme.textPrimary} style={styles.optionLabel}>
|
|
98
|
+
Track Qbank
|
|
99
|
+
</Typography>
|
|
100
|
+
</TouchableOpacity>
|
|
52
101
|
</View>
|
|
53
102
|
|
|
54
103
|
{/* Subjects List */}
|
|
@@ -56,6 +105,42 @@ export const QbankScreen: React.FC<QbankScreenProps> = ({ hideHeader = false })
|
|
|
56
105
|
{courses.map((course) => {
|
|
57
106
|
const pct = Math.round(course.progress * 100);
|
|
58
107
|
|
|
108
|
+
// Map course icon name or fall back to diamond
|
|
109
|
+
let iconName: IconName = 'diamond';
|
|
110
|
+
let iconBg = 'rgba(249, 115, 22, 0.1)';
|
|
111
|
+
let iconColor = '#F97316';
|
|
112
|
+
|
|
113
|
+
const titleLower = course.title.toLowerCase();
|
|
114
|
+
if (titleLower.includes('anatomy')) {
|
|
115
|
+
iconName = 'diamond';
|
|
116
|
+
iconBg = 'rgba(251, 146, 60, 0.1)';
|
|
117
|
+
iconColor = '#EA580C';
|
|
118
|
+
} else if (titleLower.includes('biochem')) {
|
|
119
|
+
iconName = 'dna';
|
|
120
|
+
iconBg = 'rgba(168, 85, 247, 0.1)';
|
|
121
|
+
iconColor = '#A855F7';
|
|
122
|
+
} else if (titleLower.includes('physio')) {
|
|
123
|
+
iconName = 'user';
|
|
124
|
+
iconBg = 'rgba(239, 68, 68, 0.1)';
|
|
125
|
+
iconColor = '#EF4444';
|
|
126
|
+
} else if (titleLower.includes('ophthalmology')) {
|
|
127
|
+
iconName = 'eye';
|
|
128
|
+
iconBg = 'rgba(59, 130, 246, 0.1)';
|
|
129
|
+
iconColor = '#3B82F6';
|
|
130
|
+
} else if (titleLower.includes('pharmacology')) {
|
|
131
|
+
iconName = 'award';
|
|
132
|
+
iconBg = 'rgba(245, 158, 11, 0.1)';
|
|
133
|
+
iconColor = '#D97706';
|
|
134
|
+
} else if (titleLower.includes('microbiology')) {
|
|
135
|
+
iconName = 'atom';
|
|
136
|
+
iconBg = 'rgba(236, 72, 153, 0.1)';
|
|
137
|
+
iconColor = '#DB2777';
|
|
138
|
+
} else if (titleLower.includes('pathology')) {
|
|
139
|
+
iconName = 'flask';
|
|
140
|
+
iconBg = 'rgba(20, 184, 166, 0.1)';
|
|
141
|
+
iconColor = '#0D9488';
|
|
142
|
+
}
|
|
143
|
+
|
|
59
144
|
return (
|
|
60
145
|
<Card
|
|
61
146
|
key={course.id}
|
|
@@ -63,36 +148,29 @@ export const QbankScreen: React.FC<QbankScreenProps> = ({ hideHeader = false })
|
|
|
63
148
|
onPress={() => callbacks.onSelectCourse?.(course)}
|
|
64
149
|
style={styles.subjectCard}
|
|
65
150
|
>
|
|
66
|
-
<View style={styles.
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
151
|
+
<View style={styles.subjectRow}>
|
|
152
|
+
{/* Left Icon Container */}
|
|
153
|
+
<View style={[styles.subjectIconBox, { backgroundColor: iconBg }]}>
|
|
154
|
+
<Icon name={iconName} size={22} color={iconColor} />
|
|
155
|
+
</View>
|
|
156
|
+
|
|
157
|
+
{/* Right Content */}
|
|
158
|
+
<View style={styles.subjectInfo}>
|
|
159
|
+
<Typography variant="h3" bold color={theme.textPrimary} style={styles.subjectTitle}>
|
|
160
|
+
{course.title}
|
|
161
|
+
</Typography>
|
|
162
|
+
|
|
163
|
+
<ProgressBar progress={course.progress} height={6} style={styles.subjectProgressBar} />
|
|
164
|
+
|
|
165
|
+
<View style={styles.subjectStatsRow}>
|
|
75
166
|
<Typography variant="caption" color={theme.textSecondary}>
|
|
76
|
-
{course.
|
|
167
|
+
{course.completedQuestions} / {course.totalQuestions} Modules
|
|
168
|
+
</Typography>
|
|
169
|
+
<Typography variant="caption" bold color={theme.textPrimary}>
|
|
170
|
+
{pct}%
|
|
77
171
|
</Typography>
|
|
78
172
|
</View>
|
|
79
173
|
</View>
|
|
80
|
-
<Typography variant="h3" bold color={theme.primary}>
|
|
81
|
-
{pct}%
|
|
82
|
-
</Typography>
|
|
83
|
-
</View>
|
|
84
|
-
|
|
85
|
-
{/* Progress Details */}
|
|
86
|
-
<View style={styles.progressSection}>
|
|
87
|
-
<ProgressBar progress={course.progress} style={styles.progressBar} />
|
|
88
|
-
<View style={styles.progressTextRow}>
|
|
89
|
-
<Typography variant="caption" color={theme.textSecondary}>
|
|
90
|
-
{getString('questionsCountLabel')}
|
|
91
|
-
</Typography>
|
|
92
|
-
<Typography variant="caption" bold color={theme.textPrimary}>
|
|
93
|
-
{course.completedQuestions}/{course.totalQuestions}
|
|
94
|
-
</Typography>
|
|
95
|
-
</View>
|
|
96
174
|
</View>
|
|
97
175
|
</Card>
|
|
98
176
|
);
|
|
@@ -112,55 +190,99 @@ const styles = StyleSheet.create({
|
|
|
112
190
|
flexDirection: 'row',
|
|
113
191
|
justifyContent: 'space-between',
|
|
114
192
|
alignItems: 'center',
|
|
115
|
-
paddingHorizontal:
|
|
193
|
+
paddingHorizontal: 16,
|
|
116
194
|
paddingVertical: 12,
|
|
117
195
|
},
|
|
118
196
|
backButton: {
|
|
119
|
-
|
|
120
|
-
height: 40,
|
|
121
|
-
borderRadius: 20,
|
|
122
|
-
borderWidth: 1,
|
|
123
|
-
justifyContent: 'center',
|
|
124
|
-
alignItems: 'center',
|
|
197
|
+
padding: 6,
|
|
125
198
|
},
|
|
126
199
|
headerTitle: {
|
|
127
200
|
fontSize: 18,
|
|
201
|
+
fontWeight: '700',
|
|
128
202
|
},
|
|
129
|
-
|
|
130
|
-
|
|
203
|
+
searchButton: {
|
|
204
|
+
padding: 6,
|
|
131
205
|
},
|
|
132
206
|
scrollContent: {
|
|
133
|
-
paddingHorizontal:
|
|
207
|
+
paddingHorizontal: 16,
|
|
134
208
|
paddingBottom: 24,
|
|
135
209
|
},
|
|
136
|
-
|
|
137
|
-
|
|
210
|
+
premiumCard: {
|
|
211
|
+
flexDirection: 'row',
|
|
212
|
+
backgroundColor: '#FFFFFF',
|
|
213
|
+
borderRadius: 16,
|
|
214
|
+
padding: 16,
|
|
215
|
+
marginTop: 12,
|
|
216
|
+
borderWidth: 1,
|
|
217
|
+
borderColor: '#E2E8F0',
|
|
138
218
|
},
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
219
|
+
premiumTextContainer: {
|
|
220
|
+
flex: 1.3,
|
|
221
|
+
justifyContent: 'center',
|
|
142
222
|
},
|
|
143
|
-
|
|
144
|
-
|
|
223
|
+
premiumTitle: {
|
|
224
|
+
fontSize: 15,
|
|
225
|
+
lineHeight: 19,
|
|
226
|
+
marginBottom: 4,
|
|
145
227
|
},
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
228
|
+
premiumSub: {
|
|
229
|
+
fontSize: 11,
|
|
230
|
+
lineHeight: 14,
|
|
231
|
+
marginBottom: 10,
|
|
149
232
|
},
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
233
|
+
premiumBtn: {
|
|
234
|
+
alignSelf: 'flex-start',
|
|
235
|
+
paddingHorizontal: 12,
|
|
236
|
+
paddingVertical: 6,
|
|
237
|
+
borderRadius: 8,
|
|
238
|
+
},
|
|
239
|
+
premiumImageContainer: {
|
|
240
|
+
flex: 0.7,
|
|
241
|
+
justifyContent: 'center',
|
|
153
242
|
alignItems: 'center',
|
|
154
243
|
},
|
|
155
|
-
|
|
244
|
+
premiumImage: {
|
|
245
|
+
width: 70,
|
|
246
|
+
height: 70,
|
|
247
|
+
borderRadius: 35,
|
|
248
|
+
backgroundColor: '#E9D5FF', // Light purple
|
|
249
|
+
},
|
|
250
|
+
optionsRow: {
|
|
156
251
|
flexDirection: 'row',
|
|
157
|
-
|
|
252
|
+
justifyContent: 'space-between',
|
|
253
|
+
marginVertical: 16,
|
|
254
|
+
},
|
|
255
|
+
optionBtn: {
|
|
158
256
|
flex: 1,
|
|
257
|
+
alignItems: 'center',
|
|
159
258
|
},
|
|
160
|
-
|
|
259
|
+
optionIconContainer: {
|
|
161
260
|
width: 44,
|
|
162
261
|
height: 44,
|
|
262
|
+
borderRadius: 22,
|
|
263
|
+
justifyContent: 'center',
|
|
264
|
+
alignItems: 'center',
|
|
265
|
+
marginBottom: 6,
|
|
266
|
+
},
|
|
267
|
+
optionLabel: {
|
|
268
|
+
fontSize: 12,
|
|
269
|
+
},
|
|
270
|
+
listContainer: {
|
|
271
|
+
marginTop: 4,
|
|
272
|
+
},
|
|
273
|
+
subjectCard: {
|
|
274
|
+
padding: 10,
|
|
275
|
+
marginBottom: 8,
|
|
163
276
|
borderRadius: 12,
|
|
277
|
+
},
|
|
278
|
+
subjectRow: {
|
|
279
|
+
flexDirection: 'row',
|
|
280
|
+
alignItems: 'center',
|
|
281
|
+
},
|
|
282
|
+
subjectIconBox: {
|
|
283
|
+
width: 40,
|
|
284
|
+
height: 40,
|
|
285
|
+
borderRadius: 10,
|
|
164
286
|
justifyContent: 'center',
|
|
165
287
|
alignItems: 'center',
|
|
166
288
|
marginRight: 12,
|
|
@@ -168,15 +290,17 @@ const styles = StyleSheet.create({
|
|
|
168
290
|
subjectInfo: {
|
|
169
291
|
flex: 1,
|
|
170
292
|
},
|
|
171
|
-
|
|
172
|
-
|
|
293
|
+
subjectTitle: {
|
|
294
|
+
fontSize: 14,
|
|
295
|
+
marginBottom: 2,
|
|
173
296
|
},
|
|
174
|
-
|
|
175
|
-
|
|
297
|
+
subjectProgressBar: {
|
|
298
|
+
marginVertical: 2,
|
|
176
299
|
},
|
|
177
|
-
|
|
300
|
+
subjectStatsRow: {
|
|
178
301
|
flexDirection: 'row',
|
|
179
302
|
justifyContent: 'space-between',
|
|
180
303
|
alignItems: 'center',
|
|
304
|
+
marginTop: 2,
|
|
181
305
|
},
|
|
182
306
|
});
|