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.
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/screens/HomeScreen.js +672 -662
- package/lib/module/screens/HomeScreen.js.map +1 -1
- package/lib/module/screens/index.js +0 -8
- package/lib/module/screens/index.js.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/screens/HomeScreen.d.ts.map +1 -1
- package/lib/typescript/src/screens/index.d.ts +0 -8
- package/lib/typescript/src/screens/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.tsx +0 -8
- package/src/screens/HomeScreen.tsx +471 -534
- package/src/screens/index.ts +0 -8
- package/lib/module/screens/PearlChaptersScreen.js +0 -359
- package/lib/module/screens/PearlChaptersScreen.js.map +0 -1
- package/lib/module/screens/PearlReaderScreen.js +0 -313
- package/lib/module/screens/PearlReaderScreen.js.map +0 -1
- package/lib/module/screens/PearlsScreen.js +0 -153
- package/lib/module/screens/PearlsScreen.js.map +0 -1
- package/lib/module/screens/QbankScreen.js +0 -370
- package/lib/module/screens/QbankScreen.js.map +0 -1
- package/lib/module/screens/QuestionScreen.js +0 -437
- package/lib/module/screens/QuestionScreen.js.map +0 -1
- package/lib/module/screens/QuizStartScreen.js +0 -283
- package/lib/module/screens/QuizStartScreen.js.map +0 -1
- package/lib/module/screens/ResultScreen.js +0 -646
- package/lib/module/screens/ResultScreen.js.map +0 -1
- package/lib/module/screens/TopicListScreen.js +0 -420
- package/lib/module/screens/TopicListScreen.js.map +0 -1
- package/lib/module/screens/pearlsMockData.js +0 -77
- package/lib/module/screens/pearlsMockData.js.map +0 -1
- package/lib/typescript/src/screens/PearlChaptersScreen.d.ts +0 -13
- package/lib/typescript/src/screens/PearlChaptersScreen.d.ts.map +0 -1
- package/lib/typescript/src/screens/PearlReaderScreen.d.ts +0 -14
- package/lib/typescript/src/screens/PearlReaderScreen.d.ts.map +0 -1
- package/lib/typescript/src/screens/PearlsScreen.d.ts +0 -11
- package/lib/typescript/src/screens/PearlsScreen.d.ts.map +0 -1
- package/lib/typescript/src/screens/QbankScreen.d.ts +0 -10
- package/lib/typescript/src/screens/QbankScreen.d.ts.map +0 -1
- package/lib/typescript/src/screens/QuestionScreen.d.ts +0 -14
- package/lib/typescript/src/screens/QuestionScreen.d.ts.map +0 -1
- package/lib/typescript/src/screens/QuizStartScreen.d.ts +0 -14
- package/lib/typescript/src/screens/QuizStartScreen.d.ts.map +0 -1
- package/lib/typescript/src/screens/ResultScreen.d.ts +0 -13
- package/lib/typescript/src/screens/ResultScreen.d.ts.map +0 -1
- package/lib/typescript/src/screens/TopicListScreen.d.ts +0 -12
- package/lib/typescript/src/screens/TopicListScreen.d.ts.map +0 -1
- package/lib/typescript/src/screens/pearlsMockData.d.ts +0 -3
- package/lib/typescript/src/screens/pearlsMockData.d.ts.map +0 -1
- package/src/screens/PearlChaptersScreen.tsx +0 -330
- package/src/screens/PearlReaderScreen.tsx +0 -306
- package/src/screens/PearlsScreen.tsx +0 -147
- package/src/screens/QbankScreen.tsx +0 -327
- package/src/screens/QuestionScreen.tsx +0 -423
- package/src/screens/QuizStartScreen.tsx +0 -260
- package/src/screens/ResultScreen.tsx +0 -618
- package/src/screens/TopicListScreen.tsx +0 -388
- package/src/screens/pearlsMockData.ts +0 -70
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
View,
|
|
4
|
-
ScrollView,
|
|
5
|
-
StyleSheet,
|
|
6
|
-
TouchableOpacity,
|
|
7
|
-
StatusBar,
|
|
8
|
-
} from 'react-native';
|
|
9
|
-
import { SafeAreaView } from 'react-native-safe-area-context';
|
|
10
|
-
import { useElearnConfig } from '../context/ElearnConfigContext';
|
|
11
|
-
import { useTheme } from '../context/ThemeContext';
|
|
12
|
-
import { Typography, Card, Icon } from '../components';
|
|
13
|
-
import { MOCK_PEARLS_TOPICS } from './pearlsMockData';
|
|
14
|
-
import type { PearlTopic } from '../types';
|
|
15
|
-
|
|
16
|
-
interface PearlsScreenProps {
|
|
17
|
-
onBack?: () => void;
|
|
18
|
-
hideHeader?: boolean;
|
|
19
|
-
onSelectTopic?: (topic: PearlTopic) => void;
|
|
20
|
-
title?: string;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export const PearlsScreen: React.FC<PearlsScreenProps> = ({
|
|
24
|
-
onBack,
|
|
25
|
-
hideHeader = false,
|
|
26
|
-
onSelectTopic,
|
|
27
|
-
title = 'Pearls',
|
|
28
|
-
}) => {
|
|
29
|
-
const { callbacks } = useElearnConfig();
|
|
30
|
-
const theme = useTheme();
|
|
31
|
-
|
|
32
|
-
const handleBackPress = () => {
|
|
33
|
-
if (onBack) {
|
|
34
|
-
onBack();
|
|
35
|
-
} else {
|
|
36
|
-
callbacks.onBackToDashboard?.();
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
return (
|
|
41
|
-
<SafeAreaView style={[styles.safeArea, { backgroundColor: theme.background }]}>
|
|
42
|
-
<StatusBar barStyle="dark-content" />
|
|
43
|
-
|
|
44
|
-
{/* Header */}
|
|
45
|
-
{!hideHeader && (
|
|
46
|
-
<View style={styles.header}>
|
|
47
|
-
<TouchableOpacity onPress={handleBackPress} style={styles.backButton}>
|
|
48
|
-
<Icon name="arrow-left" size={20} color={theme.textPrimary} />
|
|
49
|
-
</TouchableOpacity>
|
|
50
|
-
|
|
51
|
-
<Typography variant="h2" bold style={styles.headerTitle}>
|
|
52
|
-
{title}
|
|
53
|
-
</Typography>
|
|
54
|
-
|
|
55
|
-
<TouchableOpacity style={styles.headerRightBtn}>
|
|
56
|
-
<Icon name="search" size={20} color={theme.textPrimary} />
|
|
57
|
-
</TouchableOpacity>
|
|
58
|
-
</View>
|
|
59
|
-
)}
|
|
60
|
-
|
|
61
|
-
{/* Topics list view */}
|
|
62
|
-
<ScrollView contentContainerStyle={styles.scrollContent} showsVerticalScrollIndicator={false}>
|
|
63
|
-
<Typography variant="h2" bold color={theme.textPrimary} style={styles.sectionHeaderTitle}>
|
|
64
|
-
All Topics
|
|
65
|
-
</Typography>
|
|
66
|
-
|
|
67
|
-
<View style={styles.listContainer}>
|
|
68
|
-
{MOCK_PEARLS_TOPICS.map((topic) => (
|
|
69
|
-
<TouchableOpacity
|
|
70
|
-
key={topic.id}
|
|
71
|
-
activeOpacity={0.8}
|
|
72
|
-
onPress={() => onSelectTopic?.(topic)}
|
|
73
|
-
>
|
|
74
|
-
<Card bordered style={styles.topicCard}>
|
|
75
|
-
<View style={styles.topicRow}>
|
|
76
|
-
{/* Left Circle Icon */}
|
|
77
|
-
<View style={[styles.iconCircle, { backgroundColor: 'rgba(59, 130, 246, 0.08)' }]}>
|
|
78
|
-
<Icon name="file-text" size={16} color="#3B82F6" />
|
|
79
|
-
</View>
|
|
80
|
-
{/* Right label */}
|
|
81
|
-
<Typography variant="body" bold color={theme.textPrimary} style={styles.topicLabelText}>
|
|
82
|
-
{topic.title}
|
|
83
|
-
</Typography>
|
|
84
|
-
</View>
|
|
85
|
-
</Card>
|
|
86
|
-
</TouchableOpacity>
|
|
87
|
-
))}
|
|
88
|
-
</View>
|
|
89
|
-
</ScrollView>
|
|
90
|
-
</SafeAreaView>
|
|
91
|
-
);
|
|
92
|
-
};
|
|
93
|
-
|
|
94
|
-
const styles = StyleSheet.create({
|
|
95
|
-
safeArea: {
|
|
96
|
-
flex: 1,
|
|
97
|
-
},
|
|
98
|
-
header: {
|
|
99
|
-
flexDirection: 'row',
|
|
100
|
-
justifyContent: 'space-between',
|
|
101
|
-
alignItems: 'center',
|
|
102
|
-
paddingHorizontal: 16,
|
|
103
|
-
paddingVertical: 12,
|
|
104
|
-
},
|
|
105
|
-
backButton: {
|
|
106
|
-
padding: 6,
|
|
107
|
-
},
|
|
108
|
-
headerTitle: {
|
|
109
|
-
fontSize: 18,
|
|
110
|
-
fontWeight: '700',
|
|
111
|
-
},
|
|
112
|
-
headerRightBtn: {
|
|
113
|
-
padding: 6,
|
|
114
|
-
},
|
|
115
|
-
scrollContent: {
|
|
116
|
-
paddingHorizontal: 16,
|
|
117
|
-
paddingTop: 8,
|
|
118
|
-
paddingBottom: 24,
|
|
119
|
-
},
|
|
120
|
-
sectionHeaderTitle: {
|
|
121
|
-
fontSize: 16,
|
|
122
|
-
marginBottom: 16,
|
|
123
|
-
},
|
|
124
|
-
listContainer: {
|
|
125
|
-
marginTop: 4,
|
|
126
|
-
},
|
|
127
|
-
topicCard: {
|
|
128
|
-
padding: 14,
|
|
129
|
-
marginBottom: 10,
|
|
130
|
-
borderRadius: 12,
|
|
131
|
-
},
|
|
132
|
-
topicRow: {
|
|
133
|
-
flexDirection: 'row',
|
|
134
|
-
alignItems: 'center',
|
|
135
|
-
},
|
|
136
|
-
iconCircle: {
|
|
137
|
-
width: 36,
|
|
138
|
-
height: 36,
|
|
139
|
-
borderRadius: 18,
|
|
140
|
-
justifyContent: 'center',
|
|
141
|
-
alignItems: 'center',
|
|
142
|
-
marginRight: 14,
|
|
143
|
-
},
|
|
144
|
-
topicLabelText: {
|
|
145
|
-
fontSize: 14,
|
|
146
|
-
},
|
|
147
|
-
});
|
|
@@ -1,327 +0,0 @@
|
|
|
1
|
-
import React 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 { useElearnConfig } from '../context/ElearnConfigContext';
|
|
12
|
-
import { useTheme } from '../context/ThemeContext';
|
|
13
|
-
import { Typography, Card, ProgressBar, Icon } from '../components';
|
|
14
|
-
import type { IconName } from '../components';
|
|
15
|
-
import type { Course } from '../types';
|
|
16
|
-
|
|
17
|
-
interface QbankScreenProps {
|
|
18
|
-
hideHeader?: boolean;
|
|
19
|
-
onBack?: () => void;
|
|
20
|
-
onSelectCourse?: (course: Course) => void;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export const QbankScreen: React.FC<QbankScreenProps> = ({
|
|
24
|
-
hideHeader = false,
|
|
25
|
-
onBack,
|
|
26
|
-
onSelectCourse,
|
|
27
|
-
}) => {
|
|
28
|
-
const { config, callbacks } = useElearnConfig();
|
|
29
|
-
const theme = useTheme();
|
|
30
|
-
|
|
31
|
-
const courses = config.courses || [];
|
|
32
|
-
|
|
33
|
-
const handleBack = () => {
|
|
34
|
-
if (onBack) {
|
|
35
|
-
onBack();
|
|
36
|
-
} else {
|
|
37
|
-
callbacks.onBackToDashboard?.();
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
return (
|
|
42
|
-
<SafeAreaView style={[styles.safeArea, { backgroundColor: theme.background }]}>
|
|
43
|
-
<StatusBar barStyle="dark-content" />
|
|
44
|
-
|
|
45
|
-
{/* Header */}
|
|
46
|
-
{!hideHeader && (
|
|
47
|
-
<View style={styles.header}>
|
|
48
|
-
<TouchableOpacity
|
|
49
|
-
onPress={handleBack}
|
|
50
|
-
style={[styles.backButton, { borderColor: theme.border }]}
|
|
51
|
-
>
|
|
52
|
-
<Icon name="arrow-left" size={20} color={theme.textPrimary} />
|
|
53
|
-
</TouchableOpacity>
|
|
54
|
-
<Typography variant="h2" bold style={styles.headerTitle}>
|
|
55
|
-
QBank
|
|
56
|
-
</Typography>
|
|
57
|
-
<TouchableOpacity style={styles.searchButton}>
|
|
58
|
-
<Icon name="search" size={20} color={theme.textPrimary} />
|
|
59
|
-
</TouchableOpacity>
|
|
60
|
-
</View>
|
|
61
|
-
)}
|
|
62
|
-
|
|
63
|
-
<ScrollView contentContainerStyle={styles.scrollContent} showsVerticalScrollIndicator={false}>
|
|
64
|
-
|
|
65
|
-
{/* Promoted Premium Card */}
|
|
66
|
-
<Card style={styles.premiumCard}>
|
|
67
|
-
<View style={styles.premiumTextContainer}>
|
|
68
|
-
<Typography variant="h2" bold color={theme.textPrimary} style={styles.premiumTitle}>
|
|
69
|
-
More than 100+ Courses in premium
|
|
70
|
-
</Typography>
|
|
71
|
-
<Typography variant="caption" color={theme.textSecondary} style={styles.premiumSub}>
|
|
72
|
-
Advance your skills with top-rated, expert-led courses anytime
|
|
73
|
-
</Typography>
|
|
74
|
-
<TouchableOpacity style={[styles.premiumBtn, { backgroundColor: theme.primary }]}>
|
|
75
|
-
<Typography variant="caption" bold color="#FFFFFF">
|
|
76
|
-
Get Premium
|
|
77
|
-
</Typography>
|
|
78
|
-
</TouchableOpacity>
|
|
79
|
-
</View>
|
|
80
|
-
<View style={styles.premiumImageContainer}>
|
|
81
|
-
<Image
|
|
82
|
-
source={{ uri: 'https://images.unsplash.com/photo-1559839734-2b71ea197ec2?q=80&w=200&auto=format&fit=crop' }}
|
|
83
|
-
style={styles.premiumImage}
|
|
84
|
-
/>
|
|
85
|
-
</View>
|
|
86
|
-
</Card>
|
|
87
|
-
|
|
88
|
-
{/* Quick Options */}
|
|
89
|
-
<View style={styles.optionsRow}>
|
|
90
|
-
<TouchableOpacity style={styles.optionBtn}>
|
|
91
|
-
<View style={[styles.optionIconContainer, { backgroundColor: 'rgba(59, 130, 246, 0.1)' }]}>
|
|
92
|
-
<Icon name="bookmark" size={18} color="#3B82F6" />
|
|
93
|
-
</View>
|
|
94
|
-
<Typography variant="caption" bold color={theme.textPrimary} style={styles.optionLabel}>
|
|
95
|
-
Bookmark
|
|
96
|
-
</Typography>
|
|
97
|
-
</TouchableOpacity>
|
|
98
|
-
|
|
99
|
-
<TouchableOpacity style={styles.optionBtn}>
|
|
100
|
-
<View style={[styles.optionIconContainer, { backgroundColor: 'rgba(16, 185, 129, 0.1)' }]}>
|
|
101
|
-
<Icon name="clipboard" size={18} color="#10B981" strokeWidth={1.5} />
|
|
102
|
-
</View>
|
|
103
|
-
<Typography variant="caption" bold color={theme.textPrimary} style={styles.optionLabel}>
|
|
104
|
-
Costume module
|
|
105
|
-
</Typography>
|
|
106
|
-
</TouchableOpacity>
|
|
107
|
-
|
|
108
|
-
<TouchableOpacity style={styles.optionBtn}>
|
|
109
|
-
<View style={[styles.optionIconContainer, { backgroundColor: 'rgba(168, 85, 247, 0.1)' }]}>
|
|
110
|
-
<Icon name="activity" size={18} color="#A855F7" />
|
|
111
|
-
</View>
|
|
112
|
-
<Typography variant="caption" bold color={theme.textPrimary} style={styles.optionLabel}>
|
|
113
|
-
Track Qbank
|
|
114
|
-
</Typography>
|
|
115
|
-
</TouchableOpacity>
|
|
116
|
-
</View>
|
|
117
|
-
|
|
118
|
-
{/* Subjects List */}
|
|
119
|
-
<View style={styles.listContainer}>
|
|
120
|
-
{courses.map((course) => {
|
|
121
|
-
const pct = Math.round(course.progress * 100);
|
|
122
|
-
|
|
123
|
-
// Map course icon name or fall back to diamond
|
|
124
|
-
let iconName: IconName = 'diamond';
|
|
125
|
-
let iconBg = 'rgba(249, 115, 22, 0.1)';
|
|
126
|
-
let iconColor = '#F97316';
|
|
127
|
-
|
|
128
|
-
const titleLower = course.title.toLowerCase();
|
|
129
|
-
if (titleLower.includes('anatomy')) {
|
|
130
|
-
iconName = 'diamond';
|
|
131
|
-
iconBg = 'rgba(251, 146, 60, 0.1)';
|
|
132
|
-
iconColor = '#EA580C';
|
|
133
|
-
} else if (titleLower.includes('biochem')) {
|
|
134
|
-
iconName = 'dna';
|
|
135
|
-
iconBg = 'rgba(168, 85, 247, 0.1)';
|
|
136
|
-
iconColor = '#A855F7';
|
|
137
|
-
} else if (titleLower.includes('physio')) {
|
|
138
|
-
iconName = 'user';
|
|
139
|
-
iconBg = 'rgba(239, 68, 68, 0.1)';
|
|
140
|
-
iconColor = '#EF4444';
|
|
141
|
-
} else if (titleLower.includes('ophthalmology')) {
|
|
142
|
-
iconName = 'eye';
|
|
143
|
-
iconBg = 'rgba(59, 130, 246, 0.1)';
|
|
144
|
-
iconColor = '#3B82F6';
|
|
145
|
-
} else if (titleLower.includes('pharmacology')) {
|
|
146
|
-
iconName = 'award';
|
|
147
|
-
iconBg = 'rgba(245, 158, 11, 0.1)';
|
|
148
|
-
iconColor = '#D97706';
|
|
149
|
-
} else if (titleLower.includes('microbiology')) {
|
|
150
|
-
iconName = 'atom';
|
|
151
|
-
iconBg = 'rgba(236, 72, 153, 0.1)';
|
|
152
|
-
iconColor = '#DB2777';
|
|
153
|
-
} else if (titleLower.includes('pathology')) {
|
|
154
|
-
iconName = 'flask';
|
|
155
|
-
iconBg = 'rgba(20, 184, 166, 0.1)';
|
|
156
|
-
iconColor = '#0D9488';
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
return (
|
|
160
|
-
<Card
|
|
161
|
-
key={course.id}
|
|
162
|
-
bordered
|
|
163
|
-
onPress={() => {
|
|
164
|
-
if (onSelectCourse) {
|
|
165
|
-
onSelectCourse(course);
|
|
166
|
-
} else {
|
|
167
|
-
callbacks.onSelectCourse?.(course);
|
|
168
|
-
}
|
|
169
|
-
}}
|
|
170
|
-
style={styles.subjectCard}
|
|
171
|
-
>
|
|
172
|
-
<View style={styles.subjectRow}>
|
|
173
|
-
{/* Left Icon Container */}
|
|
174
|
-
<View style={[styles.subjectIconBox, { backgroundColor: iconBg }]}>
|
|
175
|
-
<Icon name={iconName} size={22} color={iconColor} />
|
|
176
|
-
</View>
|
|
177
|
-
|
|
178
|
-
{/* Right Content */}
|
|
179
|
-
<View style={styles.subjectInfo}>
|
|
180
|
-
<Typography variant="h3" bold color={theme.textPrimary} style={styles.subjectTitle}>
|
|
181
|
-
{course.title}
|
|
182
|
-
</Typography>
|
|
183
|
-
|
|
184
|
-
<ProgressBar progress={course.progress} height={6} style={styles.subjectProgressBar} />
|
|
185
|
-
|
|
186
|
-
<View style={styles.subjectStatsRow}>
|
|
187
|
-
<Typography variant="caption" color={theme.textSecondary}>
|
|
188
|
-
{course.completedQuestions} / {course.totalQuestions} Modules
|
|
189
|
-
</Typography>
|
|
190
|
-
<Typography variant="caption" bold color={theme.textPrimary}>
|
|
191
|
-
{pct}%
|
|
192
|
-
</Typography>
|
|
193
|
-
</View>
|
|
194
|
-
</View>
|
|
195
|
-
</View>
|
|
196
|
-
</Card>
|
|
197
|
-
);
|
|
198
|
-
})}
|
|
199
|
-
</View>
|
|
200
|
-
|
|
201
|
-
</ScrollView>
|
|
202
|
-
</SafeAreaView>
|
|
203
|
-
);
|
|
204
|
-
};
|
|
205
|
-
|
|
206
|
-
const styles = StyleSheet.create({
|
|
207
|
-
safeArea: {
|
|
208
|
-
flex: 1,
|
|
209
|
-
},
|
|
210
|
-
header: {
|
|
211
|
-
flexDirection: 'row',
|
|
212
|
-
justifyContent: 'space-between',
|
|
213
|
-
alignItems: 'center',
|
|
214
|
-
paddingHorizontal: 16,
|
|
215
|
-
paddingVertical: 12,
|
|
216
|
-
},
|
|
217
|
-
backButton: {
|
|
218
|
-
padding: 6,
|
|
219
|
-
},
|
|
220
|
-
headerTitle: {
|
|
221
|
-
fontSize: 18,
|
|
222
|
-
fontWeight: '700',
|
|
223
|
-
},
|
|
224
|
-
searchButton: {
|
|
225
|
-
padding: 6,
|
|
226
|
-
},
|
|
227
|
-
scrollContent: {
|
|
228
|
-
paddingHorizontal: 16,
|
|
229
|
-
paddingBottom: 24,
|
|
230
|
-
},
|
|
231
|
-
premiumCard: {
|
|
232
|
-
flexDirection: 'row',
|
|
233
|
-
backgroundColor: '#FFFFFF',
|
|
234
|
-
borderRadius: 16,
|
|
235
|
-
padding: 16,
|
|
236
|
-
marginTop: 12,
|
|
237
|
-
borderWidth: 1,
|
|
238
|
-
borderColor: '#E2E8F0',
|
|
239
|
-
},
|
|
240
|
-
premiumTextContainer: {
|
|
241
|
-
flex: 1.3,
|
|
242
|
-
justifyContent: 'center',
|
|
243
|
-
},
|
|
244
|
-
premiumTitle: {
|
|
245
|
-
fontSize: 15,
|
|
246
|
-
lineHeight: 19,
|
|
247
|
-
marginBottom: 4,
|
|
248
|
-
},
|
|
249
|
-
premiumSub: {
|
|
250
|
-
fontSize: 11,
|
|
251
|
-
lineHeight: 14,
|
|
252
|
-
marginBottom: 10,
|
|
253
|
-
},
|
|
254
|
-
premiumBtn: {
|
|
255
|
-
alignSelf: 'flex-start',
|
|
256
|
-
paddingHorizontal: 12,
|
|
257
|
-
paddingVertical: 6,
|
|
258
|
-
borderRadius: 8,
|
|
259
|
-
},
|
|
260
|
-
premiumImageContainer: {
|
|
261
|
-
flex: 0.7,
|
|
262
|
-
justifyContent: 'center',
|
|
263
|
-
alignItems: 'center',
|
|
264
|
-
},
|
|
265
|
-
premiumImage: {
|
|
266
|
-
width: 70,
|
|
267
|
-
height: 70,
|
|
268
|
-
borderRadius: 35,
|
|
269
|
-
backgroundColor: '#E9D5FF', // Light purple
|
|
270
|
-
},
|
|
271
|
-
optionsRow: {
|
|
272
|
-
flexDirection: 'row',
|
|
273
|
-
justifyContent: 'space-between',
|
|
274
|
-
marginVertical: 16,
|
|
275
|
-
},
|
|
276
|
-
optionBtn: {
|
|
277
|
-
flex: 1,
|
|
278
|
-
alignItems: 'center',
|
|
279
|
-
},
|
|
280
|
-
optionIconContainer: {
|
|
281
|
-
width: 44,
|
|
282
|
-
height: 44,
|
|
283
|
-
borderRadius: 22,
|
|
284
|
-
justifyContent: 'center',
|
|
285
|
-
alignItems: 'center',
|
|
286
|
-
marginBottom: 6,
|
|
287
|
-
},
|
|
288
|
-
optionLabel: {
|
|
289
|
-
fontSize: 12,
|
|
290
|
-
},
|
|
291
|
-
listContainer: {
|
|
292
|
-
marginTop: 4,
|
|
293
|
-
},
|
|
294
|
-
subjectCard: {
|
|
295
|
-
padding: 10,
|
|
296
|
-
marginBottom: 8,
|
|
297
|
-
borderRadius: 12,
|
|
298
|
-
},
|
|
299
|
-
subjectRow: {
|
|
300
|
-
flexDirection: 'row',
|
|
301
|
-
alignItems: 'center',
|
|
302
|
-
},
|
|
303
|
-
subjectIconBox: {
|
|
304
|
-
width: 40,
|
|
305
|
-
height: 40,
|
|
306
|
-
borderRadius: 10,
|
|
307
|
-
justifyContent: 'center',
|
|
308
|
-
alignItems: 'center',
|
|
309
|
-
marginRight: 12,
|
|
310
|
-
},
|
|
311
|
-
subjectInfo: {
|
|
312
|
-
flex: 1,
|
|
313
|
-
},
|
|
314
|
-
subjectTitle: {
|
|
315
|
-
fontSize: 14,
|
|
316
|
-
marginBottom: 2,
|
|
317
|
-
},
|
|
318
|
-
subjectProgressBar: {
|
|
319
|
-
marginVertical: 2,
|
|
320
|
-
},
|
|
321
|
-
subjectStatsRow: {
|
|
322
|
-
flexDirection: 'row',
|
|
323
|
-
justifyContent: 'space-between',
|
|
324
|
-
alignItems: 'center',
|
|
325
|
-
marginTop: 2,
|
|
326
|
-
},
|
|
327
|
-
});
|