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
|
@@ -6,11 +6,11 @@ import {
|
|
|
6
6
|
TouchableOpacity,
|
|
7
7
|
StatusBar,
|
|
8
8
|
Image,
|
|
9
|
-
|
|
9
|
+
useWindowDimensions,
|
|
10
10
|
} from 'react-native';
|
|
11
11
|
import { SafeAreaView } from 'react-native-safe-area-context';
|
|
12
12
|
import { useTheme } from '../context/ThemeContext';
|
|
13
|
-
import { Typography,
|
|
13
|
+
import { Typography, Icon } from '../components';
|
|
14
14
|
import type { IconName } from '../components';
|
|
15
15
|
import type { HomeScreenParams } from '../types';
|
|
16
16
|
|
|
@@ -44,20 +44,12 @@ export const HomeScreen: React.FC<HomeScreenProps> = ({
|
|
|
44
44
|
onPressMcqViewDetails,
|
|
45
45
|
}) => {
|
|
46
46
|
const theme = useTheme();
|
|
47
|
+
const { width } = useWindowDimensions();
|
|
48
|
+
const isTablet = width > 768;
|
|
49
|
+
const contentMaxWidth = isTablet ? 768 : '100%';
|
|
50
|
+
const alignSelfCenter = isTablet ? 'center' : 'auto';
|
|
47
51
|
|
|
48
|
-
const [selectedTeaserOption, setSelectedTeaserOption] = useState<number | null>(
|
|
49
|
-
const [activeBannerIndex, setActiveBannerIndex] = useState(0);
|
|
50
|
-
|
|
51
|
-
const handleBannerScroll = (event: any) => {
|
|
52
|
-
const scrollOffset = event.nativeEvent.contentOffset.x;
|
|
53
|
-
const slideWidth = event.nativeEvent.layoutMeasurement.width;
|
|
54
|
-
if (slideWidth > 0) {
|
|
55
|
-
const index = Math.round(scrollOffset / slideWidth);
|
|
56
|
-
setActiveBannerIndex(index);
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
const bannerWidth = Dimensions.get('window').width - 32;
|
|
52
|
+
const [selectedTeaserOption, setSelectedTeaserOption] = useState<number | null>(0);
|
|
61
53
|
|
|
62
54
|
const headerData = params?.header || {
|
|
63
55
|
appName: 'Residency',
|
|
@@ -66,15 +58,6 @@ export const HomeScreen: React.FC<HomeScreenProps> = ({
|
|
|
66
58
|
avatarUrl: 'https://images.unsplash.com/photo-1559839734-2b71ea197ec2?q=80&w=200&auto=format&fit=crop',
|
|
67
59
|
};
|
|
68
60
|
|
|
69
|
-
const bannersData = params?.banner || [
|
|
70
|
-
{
|
|
71
|
-
title: 'Test Your Knowledge – Daily',
|
|
72
|
-
subtitle: 'Smart Learning for Future Doctors',
|
|
73
|
-
imageUrl: 'https://images.unsplash.com/photo-1576091160550-2173dba999ef?q=80&w=400&auto=format&fit=crop',
|
|
74
|
-
gradientColors: ['#15803D', '#166534']
|
|
75
|
-
}
|
|
76
|
-
];
|
|
77
|
-
|
|
78
61
|
const headersConfig = params?.sectionHeaders || {};
|
|
79
62
|
const getHeaderConfig = (key: 'quickLinks' | 'dailyMcq' | 'getStarted' | 'continueLearning', defaultTitle: string) => {
|
|
80
63
|
const section = headersConfig[key];
|
|
@@ -85,15 +68,15 @@ export const HomeScreen: React.FC<HomeScreenProps> = ({
|
|
|
85
68
|
};
|
|
86
69
|
|
|
87
70
|
const quickLinksHeader = getHeaderConfig('quickLinks', 'QUICK LINKS');
|
|
88
|
-
const dailyMcqHeader = getHeaderConfig('dailyMcq', '
|
|
71
|
+
const dailyMcqHeader = getHeaderConfig('dailyMcq', 'MCQ OF THE DAY');
|
|
89
72
|
const getStartedHeader = getHeaderConfig('getStarted', 'GET STARTED');
|
|
90
73
|
const continueLearningHeader = getHeaderConfig('continueLearning', 'CONTINUE LEARNING');
|
|
91
74
|
|
|
92
75
|
const progressData = params?.progress || {
|
|
93
|
-
percentage:
|
|
94
|
-
text: 'Modules Completed
|
|
95
|
-
totalModules:
|
|
96
|
-
buttonText: 'Track
|
|
76
|
+
percentage: 56,
|
|
77
|
+
text: 'Modules Completed pf 800',
|
|
78
|
+
totalModules: 800,
|
|
79
|
+
buttonText: 'Track Progress',
|
|
97
80
|
};
|
|
98
81
|
|
|
99
82
|
const actionsData = params?.actions || {
|
|
@@ -102,21 +85,20 @@ export const HomeScreen: React.FC<HomeScreenProps> = ({
|
|
|
102
85
|
};
|
|
103
86
|
|
|
104
87
|
const quickLinksData = params?.quickLinks || [
|
|
105
|
-
{ id: 'bookmarks', label: '
|
|
106
|
-
{ id: 'custom_module', label: 'Custom
|
|
107
|
-
{ id: 'videos_saved', label: 'Videos
|
|
108
|
-
{ id: 'qbank', label: 'QBank', icon: '
|
|
88
|
+
{ id: 'bookmarks', label: 'Book\nmarks', icon: 'bookmark', color: '#10B981' },
|
|
89
|
+
{ id: 'custom_module', label: 'Custom\nModule', icon: 'file-text', color: '#3B82F6' },
|
|
90
|
+
{ id: 'videos_saved', label: 'Videos\nSaved', icon: 'download', color: '#8B5CF6' },
|
|
91
|
+
{ id: 'qbank', label: 'QBank\nTracker', icon: 'calendar', color: '#F43F5E' },
|
|
109
92
|
];
|
|
110
93
|
|
|
111
94
|
const dailyMcqData = params?.dailyMcq || {
|
|
112
95
|
id: 'teaser_1',
|
|
113
|
-
|
|
114
|
-
question: 'Discuss the causes, radiological features, and management of a solitary pulmonary nodule.',
|
|
96
|
+
question: 'Discuss the causes, radiological features, and visiond of a solitary pulmonary nodule.',
|
|
115
97
|
options: [
|
|
116
|
-
'A. Used
|
|
117
|
-
'B. Used
|
|
118
|
-
'C.
|
|
119
|
-
'D.
|
|
98
|
+
'A. Used tor Heoatitls B',
|
|
99
|
+
'B. Used tor Heoatitls B',
|
|
100
|
+
'C. Used tor Heoatitls B',
|
|
101
|
+
'D. Used tor Heoatitls B',
|
|
120
102
|
],
|
|
121
103
|
correctIndex: 0,
|
|
122
104
|
};
|
|
@@ -128,372 +110,331 @@ export const HomeScreen: React.FC<HomeScreenProps> = ({
|
|
|
128
110
|
};
|
|
129
111
|
|
|
130
112
|
const continueLearningData = params?.continueLearning || [
|
|
131
|
-
{ id: '
|
|
132
|
-
{ id: '
|
|
133
|
-
{ id: 'subj_physio', title: 'Physiology', progressPercentage:
|
|
113
|
+
{ id: 'subj_biochem', title: 'Biochemistry', progressPercentage: 34, completedModules: 17, totalModules: 63, icon: 'dna' },
|
|
114
|
+
{ id: 'subj_pharmacology', title: 'Pharmacology', progressPercentage: 86, completedModules: 56, totalModules: 63, icon: 'flask' },
|
|
115
|
+
{ id: 'subj_physio', title: 'Physiology', progressPercentage: 52, completedModules: 31, totalModules: 63, icon: 'activity' },
|
|
134
116
|
];
|
|
135
117
|
|
|
136
118
|
const referralData = params?.referralBanner || {
|
|
137
|
-
text: 'Invite a friend to
|
|
119
|
+
text: 'Invite a friend to PROMPT PREP, learn together, grow together.',
|
|
138
120
|
buttonText: 'Share App',
|
|
139
121
|
};
|
|
140
122
|
|
|
141
123
|
return (
|
|
142
|
-
<SafeAreaView style={[styles.safeArea, { backgroundColor:
|
|
124
|
+
<SafeAreaView style={[styles.safeArea, { backgroundColor: '#F8FAFC' }]}>
|
|
143
125
|
<StatusBar barStyle="dark-content" />
|
|
144
126
|
|
|
145
127
|
{/* Header Panel */}
|
|
146
128
|
{!hideHeader && (
|
|
147
|
-
<View style={
|
|
148
|
-
<
|
|
149
|
-
<
|
|
150
|
-
<
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
<View
|
|
154
|
-
<
|
|
155
|
-
{
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
<
|
|
129
|
+
<View style={styles.header}>
|
|
130
|
+
<View style={[styles.headerInner, { maxWidth: contentMaxWidth, alignSelf: alignSelfCenter as any }]}>
|
|
131
|
+
<TouchableOpacity style={styles.headerDropdown}>
|
|
132
|
+
<View style={styles.appLogo}>
|
|
133
|
+
<Icon name="check-square" size={20} color="#FFFFFF" />
|
|
134
|
+
</View>
|
|
135
|
+
<View>
|
|
136
|
+
<View style={styles.appNameRow}>
|
|
137
|
+
<Typography variant="h2" bold color={theme.textPrimary}>
|
|
138
|
+
{headerData.appName}
|
|
139
|
+
</Typography>
|
|
140
|
+
<View style={styles.chevronWrap}>
|
|
141
|
+
<Icon name="chevron-left" size={12} color={theme.textSecondary} />
|
|
142
|
+
</View>
|
|
159
143
|
</View>
|
|
144
|
+
<Typography variant="caption" color={theme.textSecondary} style={styles.appSubName}>
|
|
145
|
+
{headerData.subName}
|
|
146
|
+
</Typography>
|
|
160
147
|
</View>
|
|
161
|
-
|
|
162
|
-
{headerData.subName}
|
|
163
|
-
</Typography>
|
|
164
|
-
</View>
|
|
165
|
-
</TouchableOpacity>
|
|
148
|
+
</TouchableOpacity>
|
|
166
149
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
150
|
+
<View style={styles.headerRight}>
|
|
151
|
+
<TouchableOpacity style={styles.headerIconBtn}>
|
|
152
|
+
<Icon name="search" size={22} color={theme.textPrimary} />
|
|
153
|
+
</TouchableOpacity>
|
|
154
|
+
|
|
155
|
+
<TouchableOpacity onPress={onPressNotification} style={styles.headerIconBtn}>
|
|
156
|
+
<Icon name="bell" size={22} color={theme.textPrimary} />
|
|
157
|
+
<View style={styles.badge}>
|
|
172
158
|
<Typography variant="caption" style={styles.badgeText} color="#FFFFFF">
|
|
173
159
|
{headerData.notificationCount}
|
|
174
160
|
</Typography>
|
|
175
161
|
</View>
|
|
176
|
-
|
|
177
|
-
</TouchableOpacity>
|
|
162
|
+
</TouchableOpacity>
|
|
178
163
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
164
|
+
<TouchableOpacity onPress={onPressAvatar} style={styles.profileContainer}>
|
|
165
|
+
<Image source={{ uri: headerData.avatarUrl }} style={styles.profileAvatar} />
|
|
166
|
+
</TouchableOpacity>
|
|
167
|
+
</View>
|
|
182
168
|
</View>
|
|
183
169
|
</View>
|
|
184
170
|
)}
|
|
185
171
|
|
|
186
|
-
<ScrollView contentContainerStyle={
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
<
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
activeOpacity={0.9}
|
|
206
|
-
style={{ width: bannerWidth }}
|
|
207
|
-
>
|
|
208
|
-
<View style={[styles.promoBanner, { backgroundColor: bannerBg, width: '100%' }]}>
|
|
209
|
-
<View style={styles.promoTextColumn}>
|
|
210
|
-
<Typography variant="h2" bold color="#FFFFFF" style={styles.promoTitle}>
|
|
211
|
-
{banner.title}
|
|
212
|
-
</Typography>
|
|
213
|
-
<Typography variant="caption" color="#D1FAE5" style={styles.promoSubtitle}>
|
|
214
|
-
{banner.subtitle}
|
|
215
|
-
</Typography>
|
|
216
|
-
</View>
|
|
217
|
-
{banner.imageUrl && (
|
|
218
|
-
<Image
|
|
219
|
-
source={{ uri: banner.imageUrl }}
|
|
220
|
-
style={styles.promoBannerImage}
|
|
221
|
-
resizeMode="cover"
|
|
222
|
-
/>
|
|
223
|
-
)}
|
|
224
|
-
</View>
|
|
225
|
-
</TouchableOpacity>
|
|
226
|
-
);
|
|
227
|
-
})}
|
|
228
|
-
</ScrollView>
|
|
229
|
-
|
|
230
|
-
{/* Dots Indicator */}
|
|
231
|
-
{bannersData.length > 1 && (
|
|
232
|
-
<View style={styles.dotsContainer}>
|
|
233
|
-
{bannersData.map((_, index) => (
|
|
234
|
-
<View
|
|
235
|
-
key={index}
|
|
236
|
-
style={[
|
|
237
|
-
styles.dot,
|
|
238
|
-
{
|
|
239
|
-
backgroundColor: activeBannerIndex === index ? theme.primary : theme.border,
|
|
240
|
-
width: activeBannerIndex === index ? 16 : 6,
|
|
241
|
-
},
|
|
242
|
-
]}
|
|
243
|
-
/>
|
|
244
|
-
))}
|
|
172
|
+
<ScrollView contentContainerStyle={{flexGrow: 1}} showsVerticalScrollIndicator={false}>
|
|
173
|
+
<View style={[styles.scrollContent, { maxWidth: contentMaxWidth, alignSelf: alignSelfCenter as any, width: '100%' }]}>
|
|
174
|
+
|
|
175
|
+
{/* Progress Section */}
|
|
176
|
+
<View style={styles.progressContainer}>
|
|
177
|
+
<View style={styles.progressRow}>
|
|
178
|
+
<View style={styles.progressTextContainer}>
|
|
179
|
+
<Typography variant="h1" bold color="#10B981" style={styles.percentageTextLarge}>
|
|
180
|
+
{progressData.percentage}%
|
|
181
|
+
</Typography>
|
|
182
|
+
<Typography variant="caption" color={theme.textPrimary} style={styles.modulesCompletedText}>
|
|
183
|
+
{progressData.text}
|
|
184
|
+
</Typography>
|
|
185
|
+
</View>
|
|
186
|
+
<TouchableOpacity onPress={onPressTrackQbank} style={styles.trackProgressBtn}>
|
|
187
|
+
<Typography variant="caption" bold color="#FFFFFF">
|
|
188
|
+
{progressData.buttonText}
|
|
189
|
+
</Typography>
|
|
190
|
+
</TouchableOpacity>
|
|
245
191
|
</View>
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
{/* QBank Progress Card */}
|
|
250
|
-
<Card bordered style={styles.qbankProgressCard}>
|
|
251
|
-
<View style={styles.qbankProgressRow}>
|
|
252
|
-
<View style={styles.qbankProgressTextContainer}>
|
|
253
|
-
<Typography variant="h1" bold color={theme.textPrimary} style={styles.percentageText}>
|
|
254
|
-
{progressData.percentage}%
|
|
255
|
-
</Typography>
|
|
256
|
-
<Typography variant="caption" color={theme.textSecondary}>
|
|
257
|
-
{progressData.text}
|
|
258
|
-
</Typography>
|
|
192
|
+
<View style={styles.progressBarBg}>
|
|
193
|
+
<View style={[styles.progressBarFill, { width: `${progressData.percentage}%` }]} />
|
|
259
194
|
</View>
|
|
260
|
-
<TouchableOpacity onPress={onPressTrackQbank}>
|
|
261
|
-
<Typography variant="h3" bold color={theme.primary}>
|
|
262
|
-
{progressData.buttonText}
|
|
263
|
-
</Typography>
|
|
264
|
-
</TouchableOpacity>
|
|
265
195
|
</View>
|
|
266
|
-
<ProgressBar
|
|
267
|
-
progress={progressData.percentage / 100}
|
|
268
|
-
color="#F97316"
|
|
269
|
-
height={8}
|
|
270
|
-
style={styles.qbankProgressBar}
|
|
271
|
-
/>
|
|
272
|
-
</Card>
|
|
273
|
-
|
|
274
|
-
{/* Stacked Quick Access Actions */}
|
|
275
|
-
<View style={styles.actionsContainer}>
|
|
276
|
-
<TouchableOpacity
|
|
277
|
-
activeOpacity={0.9}
|
|
278
|
-
onPress={onPressPearls}
|
|
279
|
-
style={[styles.actionPill, { backgroundColor: '#5F85E5' }]}
|
|
280
|
-
>
|
|
281
|
-
<View style={styles.actionPillIconContainer}>
|
|
282
|
-
<Icon name="diamond" size={18} color="#5F85E5" />
|
|
283
|
-
</View>
|
|
284
|
-
<Typography variant="h3" bold color="#FFFFFF" style={styles.actionPillText}>
|
|
285
|
-
{actionsData.pearlsLabel}
|
|
286
|
-
</Typography>
|
|
287
|
-
</TouchableOpacity>
|
|
288
|
-
|
|
289
|
-
<TouchableOpacity
|
|
290
|
-
activeOpacity={0.9}
|
|
291
|
-
onPress={onPressUpdates}
|
|
292
|
-
style={[styles.actionPill, { backgroundColor: '#1A7B60' }]}
|
|
293
|
-
>
|
|
294
|
-
<View style={styles.actionPillIconContainer}>
|
|
295
|
-
<Icon name="megaphone" size={18} color="#1A7B60" />
|
|
296
|
-
</View>
|
|
297
|
-
<Typography variant="h3" bold color="#FFFFFF" style={styles.actionPillText}>
|
|
298
|
-
{actionsData.updatesLabel}
|
|
299
|
-
</Typography>
|
|
300
|
-
</TouchableOpacity>
|
|
301
|
-
</View>
|
|
302
196
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
{
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
197
|
+
{/* Action Pills */}
|
|
198
|
+
<View style={styles.actionsContainer}>
|
|
199
|
+
<TouchableOpacity
|
|
200
|
+
activeOpacity={0.9}
|
|
201
|
+
onPress={onPressPearls}
|
|
202
|
+
style={[styles.actionPill, { backgroundColor: '#8B5CF6', marginRight: 8 }]}
|
|
203
|
+
>
|
|
204
|
+
<View style={styles.actionPillContent}>
|
|
205
|
+
<View style={styles.actionPillIconLeft}>
|
|
206
|
+
<Icon name="diamond" size={20} color="#FFFFFF" />
|
|
207
|
+
</View>
|
|
208
|
+
<Typography variant="h3" bold color="#FFFFFF" style={styles.actionPillTextCentered}>
|
|
209
|
+
{actionsData.pearlsLabel}
|
|
210
|
+
</Typography>
|
|
211
|
+
<View style={styles.chevronsRight}>
|
|
212
|
+
<Icon name="chevron-right" size={16} color="rgba(255,255,255,0.4)" />
|
|
213
|
+
<View style={{marginLeft: -8}}>
|
|
214
|
+
<Icon name="chevron-right" size={16} color="rgba(255,255,255,0.8)" />
|
|
215
|
+
</View>
|
|
216
|
+
</View>
|
|
217
|
+
</View>
|
|
218
|
+
</TouchableOpacity>
|
|
311
219
|
|
|
312
|
-
<ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={styles.quickLinksScroll}>
|
|
313
|
-
{quickLinksData.map((link) => (
|
|
314
220
|
<TouchableOpacity
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
link.onPress?.();
|
|
319
|
-
onPressQuickLink?.(link.id);
|
|
320
|
-
}}
|
|
221
|
+
activeOpacity={0.9}
|
|
222
|
+
onPress={onPressUpdates}
|
|
223
|
+
style={[styles.actionPill, { backgroundColor: '#60A5FA', marginLeft: 8 }]}
|
|
321
224
|
>
|
|
322
|
-
<View style={
|
|
323
|
-
<
|
|
225
|
+
<View style={styles.actionPillContent}>
|
|
226
|
+
<View style={styles.actionPillIconLeft}>
|
|
227
|
+
<Icon name="megaphone" size={20} color="#FFFFFF" />
|
|
228
|
+
</View>
|
|
229
|
+
<Typography variant="h3" bold color="#FFFFFF" style={styles.actionPillTextCentered}>
|
|
230
|
+
{actionsData.updatesLabel}
|
|
231
|
+
</Typography>
|
|
232
|
+
<View style={styles.chevronsRight}>
|
|
233
|
+
<Icon name="chevron-right" size={16} color="rgba(255,255,255,0.4)" />
|
|
234
|
+
<View style={{marginLeft: -8}}>
|
|
235
|
+
<Icon name="chevron-right" size={16} color="rgba(255,255,255,0.8)" />
|
|
236
|
+
</View>
|
|
237
|
+
</View>
|
|
324
238
|
</View>
|
|
325
|
-
<Typography variant="caption" color={theme.textPrimary} bold style={styles.quickLinkLabel}>
|
|
326
|
-
{link.label}
|
|
327
|
-
</Typography>
|
|
328
239
|
</TouchableOpacity>
|
|
329
|
-
))}
|
|
330
|
-
</ScrollView>
|
|
331
|
-
|
|
332
|
-
{/* Brain Teasers Section */}
|
|
333
|
-
{dailyMcqHeader.show && (
|
|
334
|
-
<View style={styles.sectionHeader}>
|
|
335
|
-
<Typography variant="caption" bold color={theme.textSecondary} style={styles.sectionTitle}>
|
|
336
|
-
{dailyMcqHeader.title}
|
|
337
|
-
</Typography>
|
|
338
240
|
</View>
|
|
339
|
-
)}
|
|
340
241
|
|
|
341
|
-
|
|
342
|
-
{
|
|
343
|
-
<
|
|
242
|
+
{/* Quick Links Section */}
|
|
243
|
+
{quickLinksHeader.show && (
|
|
244
|
+
<View style={styles.sectionHeader}>
|
|
245
|
+
<Typography variant="caption" color={theme.textSecondary} style={styles.sectionTitle}>
|
|
246
|
+
{quickLinksHeader.title}
|
|
247
|
+
</Typography>
|
|
248
|
+
</View>
|
|
344
249
|
)}
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
const isCorrectAnswer = idx === dailyMcqData.correctIndex;
|
|
354
|
-
const isTeaserAnswered = selectedTeaserOption !== null;
|
|
355
|
-
|
|
356
|
-
let circleBorder = theme.border;
|
|
357
|
-
let circleFill = 'transparent';
|
|
358
|
-
let rowBg = 'transparent';
|
|
359
|
-
|
|
360
|
-
if (isTeaserAnswered) {
|
|
361
|
-
if (isCorrectAnswer) {
|
|
362
|
-
circleBorder = theme.success;
|
|
363
|
-
circleFill = theme.success;
|
|
364
|
-
rowBg = 'rgba(16, 185, 129, 0.04)';
|
|
365
|
-
} else if (isSelected) {
|
|
366
|
-
circleBorder = theme.danger;
|
|
367
|
-
circleFill = theme.danger;
|
|
368
|
-
rowBg = 'rgba(239, 68, 68, 0.04)';
|
|
369
|
-
}
|
|
370
|
-
} else if (isSelected) {
|
|
371
|
-
circleBorder = theme.primary;
|
|
372
|
-
circleFill = theme.primary;
|
|
373
|
-
}
|
|
250
|
+
|
|
251
|
+
<View style={styles.quickLinksContainer}>
|
|
252
|
+
{quickLinksData.map((link) => {
|
|
253
|
+
let bgCol = '#E5E7EB';
|
|
254
|
+
if (link.id === 'bookmarks') bgCol = '#D1FAE5';
|
|
255
|
+
if (link.id === 'custom_module') bgCol = '#DBEAFE';
|
|
256
|
+
if (link.id === 'videos_saved') bgCol = '#E0E7FF';
|
|
257
|
+
if (link.id === 'qbank') bgCol = '#FCE7F3';
|
|
374
258
|
|
|
375
259
|
return (
|
|
376
260
|
<TouchableOpacity
|
|
377
|
-
key={
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
261
|
+
key={link.id}
|
|
262
|
+
style={styles.quickLinkBoxItem}
|
|
263
|
+
onPress={() => {
|
|
264
|
+
link.onPress?.();
|
|
265
|
+
onPressQuickLink?.(link.id);
|
|
266
|
+
}}
|
|
382
267
|
>
|
|
383
|
-
<View style={[styles.
|
|
384
|
-
{
|
|
385
|
-
|
|
386
|
-
|
|
268
|
+
<View style={[styles.quickLinkRect, { backgroundColor: bgCol }]}>
|
|
269
|
+
<Icon name={link.icon as IconName} size={24} color={link.color} />
|
|
270
|
+
<Typography variant="caption" color={theme.textPrimary} style={styles.quickLinkLabelTwoLines}>
|
|
271
|
+
{link.label}
|
|
272
|
+
</Typography>
|
|
387
273
|
</View>
|
|
388
|
-
<Typography variant="body" color={theme.textPrimary} style={styles.mcqOptionText}>
|
|
389
|
-
{option}
|
|
390
|
-
</Typography>
|
|
391
274
|
</TouchableOpacity>
|
|
392
|
-
)
|
|
275
|
+
)
|
|
393
276
|
})}
|
|
394
277
|
</View>
|
|
395
278
|
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
279
|
+
{/* Brain Teasers Section */}
|
|
280
|
+
{dailyMcqHeader.show && (
|
|
281
|
+
<View style={styles.sectionHeaderCentered}>
|
|
282
|
+
<Typography variant="caption" bold color={theme.textSecondary} style={styles.sectionTitle}>
|
|
283
|
+
{dailyMcqHeader.title}
|
|
284
|
+
</Typography>
|
|
285
|
+
</View>
|
|
286
|
+
)}
|
|
402
287
|
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
<Typography variant="caption" bold color={theme.textSecondary} style={styles.sectionTitle}>
|
|
407
|
-
{getStartedHeader.title}
|
|
288
|
+
<View style={styles.mcqContainer}>
|
|
289
|
+
<Typography variant="body" color={theme.textPrimary} style={styles.mcqQuestion}>
|
|
290
|
+
{dailyMcqData.question}
|
|
408
291
|
</Typography>
|
|
292
|
+
|
|
293
|
+
<View style={styles.mcqOptionsList}>
|
|
294
|
+
{dailyMcqData.options.map((option, idx) => {
|
|
295
|
+
const isSelected = selectedTeaserOption === idx;
|
|
296
|
+
|
|
297
|
+
let rowBg = '#FFFFFF';
|
|
298
|
+
let rowBorder = '#E2E8F0';
|
|
299
|
+
let textColor = theme.textSecondary;
|
|
300
|
+
|
|
301
|
+
if (isSelected) {
|
|
302
|
+
rowBg = '#ECFDF5';
|
|
303
|
+
rowBorder = '#10B981';
|
|
304
|
+
textColor = '#10B981';
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
return (
|
|
308
|
+
<TouchableOpacity
|
|
309
|
+
key={idx}
|
|
310
|
+
activeOpacity={0.8}
|
|
311
|
+
style={[styles.mcqOptionBox, { backgroundColor: rowBg, borderColor: rowBorder }]}
|
|
312
|
+
onPress={() => setSelectedTeaserOption(idx)}
|
|
313
|
+
>
|
|
314
|
+
<View style={[styles.mcqCheckCircle, { borderColor: isSelected ? '#10B981' : '#CBD5E1', backgroundColor: isSelected ? '#10B981' : 'transparent' }]}>
|
|
315
|
+
{isSelected && <Icon name="check-circle" size={12} color="#FFFFFF" />}
|
|
316
|
+
</View>
|
|
317
|
+
<Typography variant="body" color={textColor} style={styles.mcqOptionTextStr}>
|
|
318
|
+
{option}
|
|
319
|
+
</Typography>
|
|
320
|
+
</TouchableOpacity>
|
|
321
|
+
);
|
|
322
|
+
})}
|
|
323
|
+
</View>
|
|
324
|
+
|
|
325
|
+
<TouchableOpacity onPress={onPressMcqViewDetails} style={styles.mcqViewDetailsBtn}>
|
|
326
|
+
<Typography variant="body" color="#10B981" bold>
|
|
327
|
+
View Details
|
|
328
|
+
</Typography>
|
|
329
|
+
</TouchableOpacity>
|
|
409
330
|
</View>
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
<Typography variant="h3" bold color={theme.textPrimary}>
|
|
417
|
-
{getStartedData.title}
|
|
331
|
+
|
|
332
|
+
{/* Get Started Section */}
|
|
333
|
+
{getStartedHeader.show && (
|
|
334
|
+
<View style={styles.sectionHeader}>
|
|
335
|
+
<Typography variant="caption" color={theme.textSecondary} style={styles.sectionTitle}>
|
|
336
|
+
{getStartedHeader.title}
|
|
418
337
|
</Typography>
|
|
419
|
-
|
|
420
|
-
|
|
338
|
+
</View>
|
|
339
|
+
)}
|
|
340
|
+
|
|
341
|
+
<TouchableOpacity onPress={onPressGetStarted} activeOpacity={0.8}>
|
|
342
|
+
<View style={styles.getStartedCardMockup}>
|
|
343
|
+
<View style={styles.getStartedRow}>
|
|
344
|
+
<View style={styles.getStartedIconBox}>
|
|
345
|
+
<Image source={{uri: 'https://cdn-icons-png.flaticon.com/512/3004/3004116.png'}} style={styles.anatomyIcon} />
|
|
346
|
+
<View style={styles.playIconBadge}>
|
|
347
|
+
<Icon name="play" size={16} color="#F59E0B" />
|
|
348
|
+
</View>
|
|
349
|
+
</View>
|
|
350
|
+
<View style={styles.getStartedInfo}>
|
|
351
|
+
<Typography variant="h3" bold color={theme.textPrimary}>
|
|
352
|
+
{getStartedData.title}
|
|
353
|
+
</Typography>
|
|
354
|
+
<Typography variant="caption" color={theme.textSecondary}>
|
|
355
|
+
{getStartedData.subtitle}
|
|
356
|
+
</Typography>
|
|
357
|
+
</View>
|
|
358
|
+
<Icon name="chevron-right" size={20} color={theme.textSecondary} />
|
|
359
|
+
</View>
|
|
360
|
+
</View>
|
|
361
|
+
</TouchableOpacity>
|
|
362
|
+
|
|
363
|
+
{/* Continue Learning Section */}
|
|
364
|
+
{continueLearningHeader.show && (
|
|
365
|
+
<View style={styles.sectionHeader}>
|
|
366
|
+
<Typography variant="caption" color={theme.textSecondary} style={styles.sectionTitle}>
|
|
367
|
+
{continueLearningHeader.title}
|
|
421
368
|
</Typography>
|
|
422
369
|
</View>
|
|
423
|
-
|
|
424
|
-
</View>
|
|
425
|
-
</Card>
|
|
370
|
+
)}
|
|
426
371
|
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
372
|
+
<View style={styles.continueLearningList}>
|
|
373
|
+
{continueLearningData.map((item) => {
|
|
374
|
+
let iconUrl = '';
|
|
375
|
+
let iconBg = '#F3E8FF';
|
|
376
|
+
let barColor = '#A855F7';
|
|
377
|
+
|
|
378
|
+
if (item.id === 'subj_biochem') { iconUrl = 'https://cdn-icons-png.flaticon.com/512/2026/2026117.png'; iconBg = '#F3E8FF'; barColor = '#A855F7'; }
|
|
379
|
+
if (item.id === 'subj_pharmacology') { iconUrl = 'https://cdn-icons-png.flaticon.com/512/3004/3004104.png'; iconBg = '#FFEDD5'; barColor = '#10B981'; }
|
|
380
|
+
if (item.id === 'subj_physio') { iconUrl = 'https://cdn-icons-png.flaticon.com/512/3004/3004140.png'; iconBg = '#FEE2E2'; barColor = '#10B981'; }
|
|
435
381
|
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
{item.progressPercentage}%
|
|
466
|
-
</Typography>
|
|
382
|
+
return (
|
|
383
|
+
<TouchableOpacity
|
|
384
|
+
key={item.id}
|
|
385
|
+
activeOpacity={0.8}
|
|
386
|
+
onPress={() => onPressContinueLearning?.(item.id)}
|
|
387
|
+
>
|
|
388
|
+
<View style={styles.continueCardMockup}>
|
|
389
|
+
<View style={styles.continueLearningRow}>
|
|
390
|
+
<View style={[styles.continueIconBox, { backgroundColor: iconBg }]}>
|
|
391
|
+
{iconUrl ? <Image source={{uri: iconUrl}} style={{width: 28, height: 28}} /> : <Icon name={item.icon as IconName} size={24} color={theme.primary} />}
|
|
392
|
+
</View>
|
|
393
|
+
<View style={styles.continueLearningInfo}>
|
|
394
|
+
<Typography variant="h3" bold color={theme.textPrimary} style={{marginBottom: 8}}>
|
|
395
|
+
{item.title}
|
|
396
|
+
</Typography>
|
|
397
|
+
|
|
398
|
+
<View style={styles.progressBarBgMockup}>
|
|
399
|
+
<View style={[styles.progressBarFillMockup, { width: `${item.progressPercentage}%`, backgroundColor: barColor }]} />
|
|
400
|
+
</View>
|
|
401
|
+
|
|
402
|
+
<View style={styles.continueStatsRow}>
|
|
403
|
+
<Typography variant="caption" color={theme.textSecondary}>
|
|
404
|
+
{item.completedModules}/{item.totalModules} Modules
|
|
405
|
+
</Typography>
|
|
406
|
+
<Typography variant="caption" color={theme.textSecondary}>
|
|
407
|
+
{item.progressPercentage}%
|
|
408
|
+
</Typography>
|
|
409
|
+
</View>
|
|
410
|
+
</View>
|
|
467
411
|
</View>
|
|
468
412
|
</View>
|
|
469
|
-
</
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
</View>
|
|
413
|
+
</TouchableOpacity>
|
|
414
|
+
)
|
|
415
|
+
})}
|
|
416
|
+
</View>
|
|
474
417
|
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
418
|
+
{/* Referral Card Banner */}
|
|
419
|
+
<TouchableOpacity onPress={onPressShareApp} activeOpacity={0.9} style={{marginTop: 8}}>
|
|
420
|
+
<View style={styles.referralBannerMockup}>
|
|
421
|
+
<View style={styles.referralIconCircle}>
|
|
422
|
+
<Icon name="share" size={18} color="#FFFFFF" />
|
|
423
|
+
</View>
|
|
424
|
+
<View style={styles.referralTextCol}>
|
|
425
|
+
<Typography variant="body" bold color="#1E293B">
|
|
426
|
+
{referralData.text}
|
|
427
|
+
</Typography>
|
|
428
|
+
</View>
|
|
429
|
+
<View style={styles.shareAppBtnWhite}>
|
|
430
|
+
<Typography variant="caption" bold color="#1E293B">
|
|
431
|
+
{referralData.buttonText}
|
|
432
|
+
</Typography>
|
|
481
433
|
</View>
|
|
482
|
-
<Typography variant="body" bold color="#1E293B" style={styles.referralText}>
|
|
483
|
-
{referralData.text}
|
|
484
|
-
</Typography>
|
|
485
434
|
</View>
|
|
486
|
-
|
|
487
|
-
onPress={onPressShareApp}
|
|
488
|
-
style={styles.referralButton}
|
|
489
|
-
>
|
|
490
|
-
<Typography variant="caption" bold color="#1E293B">
|
|
491
|
-
{referralData.buttonText}
|
|
492
|
-
</Typography>
|
|
493
|
-
</TouchableOpacity>
|
|
494
|
-
</View>
|
|
495
|
-
</Card>
|
|
435
|
+
</TouchableOpacity>
|
|
496
436
|
|
|
437
|
+
</View>
|
|
497
438
|
</ScrollView>
|
|
498
439
|
</SafeAreaView>
|
|
499
440
|
);
|
|
@@ -504,22 +445,27 @@ const styles = StyleSheet.create({
|
|
|
504
445
|
flex: 1,
|
|
505
446
|
},
|
|
506
447
|
header: {
|
|
448
|
+
backgroundColor: '#FFFFFF',
|
|
449
|
+
borderBottomWidth: 1,
|
|
450
|
+
borderBottomColor: '#F1F5F9',
|
|
451
|
+
},
|
|
452
|
+
headerInner: {
|
|
507
453
|
flexDirection: 'row',
|
|
508
454
|
justifyContent: 'space-between',
|
|
509
455
|
alignItems: 'center',
|
|
510
456
|
paddingHorizontal: 16,
|
|
511
|
-
paddingVertical:
|
|
512
|
-
|
|
513
|
-
borderBottomWidth: 1,
|
|
457
|
+
paddingVertical: 12,
|
|
458
|
+
width: '100%',
|
|
514
459
|
},
|
|
515
460
|
headerDropdown: {
|
|
516
461
|
flexDirection: 'row',
|
|
517
462
|
alignItems: 'center',
|
|
518
463
|
},
|
|
519
464
|
appLogo: {
|
|
520
|
-
width:
|
|
521
|
-
height:
|
|
465
|
+
width: 36,
|
|
466
|
+
height: 36,
|
|
522
467
|
borderRadius: 8,
|
|
468
|
+
backgroundColor: '#0F172A',
|
|
523
469
|
justifyContent: 'center',
|
|
524
470
|
alignItems: 'center',
|
|
525
471
|
marginRight: 10,
|
|
@@ -540,35 +486,37 @@ const styles = StyleSheet.create({
|
|
|
540
486
|
flexDirection: 'row',
|
|
541
487
|
alignItems: 'center',
|
|
542
488
|
},
|
|
543
|
-
|
|
489
|
+
headerIconBtn: {
|
|
544
490
|
width: 36,
|
|
545
491
|
height: 36,
|
|
546
|
-
borderRadius: 18,
|
|
547
|
-
borderWidth: 1,
|
|
548
492
|
justifyContent: 'center',
|
|
549
493
|
alignItems: 'center',
|
|
550
494
|
position: 'relative',
|
|
551
|
-
marginRight:
|
|
495
|
+
marginRight: 6,
|
|
552
496
|
},
|
|
553
497
|
badge: {
|
|
554
498
|
position: 'absolute',
|
|
555
|
-
top:
|
|
556
|
-
right:
|
|
557
|
-
width:
|
|
558
|
-
height:
|
|
559
|
-
borderRadius:
|
|
499
|
+
top: 2,
|
|
500
|
+
right: 4,
|
|
501
|
+
width: 14,
|
|
502
|
+
height: 14,
|
|
503
|
+
borderRadius: 7,
|
|
504
|
+
backgroundColor: '#EF4444',
|
|
560
505
|
justifyContent: 'center',
|
|
561
506
|
alignItems: 'center',
|
|
507
|
+
borderWidth: 1.5,
|
|
508
|
+
borderColor: '#FFFFFF',
|
|
562
509
|
},
|
|
563
510
|
badgeText: {
|
|
564
|
-
fontSize:
|
|
565
|
-
fontWeight: '
|
|
511
|
+
fontSize: 8,
|
|
512
|
+
fontWeight: 'bold',
|
|
566
513
|
},
|
|
567
514
|
profileContainer: {
|
|
568
|
-
width:
|
|
569
|
-
height:
|
|
570
|
-
borderRadius:
|
|
515
|
+
width: 32,
|
|
516
|
+
height: 32,
|
|
517
|
+
borderRadius: 16,
|
|
571
518
|
overflow: 'hidden',
|
|
519
|
+
marginLeft: 6,
|
|
572
520
|
},
|
|
573
521
|
profileAvatar: {
|
|
574
522
|
width: '100%',
|
|
@@ -576,181 +524,196 @@ const styles = StyleSheet.create({
|
|
|
576
524
|
},
|
|
577
525
|
scrollContent: {
|
|
578
526
|
paddingHorizontal: 16,
|
|
579
|
-
|
|
527
|
+
paddingVertical: 16,
|
|
528
|
+
paddingBottom: 40,
|
|
580
529
|
},
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
borderRadius: 20,
|
|
530
|
+
progressContainer: {
|
|
531
|
+
backgroundColor: '#E8F5E9',
|
|
584
532
|
padding: 16,
|
|
585
|
-
justifyContent: 'space-between',
|
|
586
|
-
overflow: 'hidden',
|
|
587
|
-
height: 120,
|
|
588
|
-
},
|
|
589
|
-
promoTextColumn: {
|
|
590
|
-
flex: 1.2,
|
|
591
|
-
justifyContent: 'center',
|
|
592
|
-
},
|
|
593
|
-
promoTitle: {
|
|
594
|
-
fontSize: 18,
|
|
595
|
-
lineHeight: 22,
|
|
596
|
-
marginBottom: 6,
|
|
597
|
-
},
|
|
598
|
-
promoSubtitle: {
|
|
599
|
-
fontSize: 11,
|
|
600
|
-
opacity: 0.9,
|
|
601
|
-
},
|
|
602
|
-
promoBannerImage: {
|
|
603
|
-
flex: 0.8,
|
|
604
|
-
height: '100%',
|
|
605
|
-
width: '100%',
|
|
606
|
-
alignSelf: 'flex-end',
|
|
607
|
-
borderRadius: 10,
|
|
608
|
-
},
|
|
609
|
-
qbankProgressCard: {
|
|
610
|
-
padding: 16,
|
|
611
|
-
marginTop: 8,
|
|
612
|
-
marginBottom: 4,
|
|
613
533
|
borderRadius: 16,
|
|
534
|
+
marginBottom: 16,
|
|
614
535
|
},
|
|
615
|
-
|
|
536
|
+
progressRow: {
|
|
616
537
|
flexDirection: 'row',
|
|
617
538
|
justifyContent: 'space-between',
|
|
618
539
|
alignItems: 'center',
|
|
619
540
|
marginBottom: 12,
|
|
620
541
|
},
|
|
621
|
-
|
|
542
|
+
progressTextContainer: {
|
|
622
543
|
flex: 1,
|
|
623
544
|
},
|
|
624
|
-
|
|
625
|
-
fontSize:
|
|
626
|
-
lineHeight:
|
|
545
|
+
percentageTextLarge: {
|
|
546
|
+
fontSize: 36,
|
|
547
|
+
lineHeight: 42,
|
|
627
548
|
},
|
|
628
|
-
|
|
629
|
-
|
|
549
|
+
modulesCompletedText: {
|
|
550
|
+
fontSize: 10,
|
|
551
|
+
opacity: 0.8,
|
|
552
|
+
},
|
|
553
|
+
trackProgressBtn: {
|
|
554
|
+
backgroundColor: '#059669',
|
|
555
|
+
paddingHorizontal: 16,
|
|
556
|
+
paddingVertical: 10,
|
|
557
|
+
borderRadius: 8,
|
|
558
|
+
},
|
|
559
|
+
progressBarBg: {
|
|
560
|
+
height: 10,
|
|
561
|
+
backgroundColor: '#FFFFFF',
|
|
562
|
+
borderRadius: 5,
|
|
563
|
+
overflow: 'hidden',
|
|
564
|
+
width: '100%',
|
|
565
|
+
},
|
|
566
|
+
progressBarFill: {
|
|
567
|
+
height: '100%',
|
|
568
|
+
backgroundColor: '#059669',
|
|
569
|
+
borderRadius: 5,
|
|
630
570
|
},
|
|
631
571
|
actionsContainer: {
|
|
632
572
|
flexDirection: 'row',
|
|
633
573
|
justifyContent: 'space-between',
|
|
634
|
-
|
|
574
|
+
marginBottom: 20,
|
|
635
575
|
},
|
|
636
576
|
actionPill: {
|
|
637
577
|
flex: 1,
|
|
578
|
+
padding: 16,
|
|
579
|
+
borderRadius: 12,
|
|
580
|
+
},
|
|
581
|
+
actionPillContent: {
|
|
638
582
|
flexDirection: 'row',
|
|
639
583
|
alignItems: 'center',
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
borderRadius: 14,
|
|
648
|
-
backgroundColor: '#FFFFFF',
|
|
584
|
+
width: '100%',
|
|
585
|
+
},
|
|
586
|
+
actionPillIconLeft: {
|
|
587
|
+
width: 32,
|
|
588
|
+
height: 32,
|
|
589
|
+
borderRadius: 16,
|
|
590
|
+
backgroundColor: 'rgba(255,255,255,0.25)',
|
|
649
591
|
justifyContent: 'center',
|
|
650
592
|
alignItems: 'center',
|
|
651
|
-
marginRight: 10,
|
|
652
593
|
},
|
|
653
|
-
|
|
654
|
-
|
|
594
|
+
actionPillTextCentered: {
|
|
595
|
+
flex: 1,
|
|
596
|
+
textAlign: 'center',
|
|
597
|
+
fontSize: 16,
|
|
598
|
+
},
|
|
599
|
+
chevronsRight: {
|
|
600
|
+
flexDirection: 'row',
|
|
655
601
|
},
|
|
656
602
|
sectionHeader: {
|
|
657
|
-
marginTop:
|
|
658
|
-
marginBottom:
|
|
603
|
+
marginTop: 8,
|
|
604
|
+
marginBottom: 12,
|
|
605
|
+
},
|
|
606
|
+
sectionHeaderCentered: {
|
|
607
|
+
marginTop: 8,
|
|
608
|
+
marginBottom: 12,
|
|
609
|
+
alignItems: 'center',
|
|
659
610
|
},
|
|
660
611
|
sectionTitle: {
|
|
661
612
|
fontSize: 12,
|
|
662
613
|
letterSpacing: 0.8,
|
|
663
614
|
},
|
|
664
|
-
|
|
665
|
-
|
|
615
|
+
quickLinksContainer: {
|
|
616
|
+
flexDirection: 'row',
|
|
617
|
+
justifyContent: 'space-between',
|
|
618
|
+
marginBottom: 16,
|
|
666
619
|
},
|
|
667
|
-
|
|
620
|
+
quickLinkBoxItem: {
|
|
668
621
|
alignItems: 'center',
|
|
669
|
-
|
|
670
|
-
width: 72,
|
|
622
|
+
flex: 1,
|
|
671
623
|
},
|
|
672
|
-
|
|
673
|
-
width:
|
|
674
|
-
|
|
675
|
-
borderRadius:
|
|
624
|
+
quickLinkRect: {
|
|
625
|
+
width: '90%',
|
|
626
|
+
aspectRatio: 0.8,
|
|
627
|
+
borderRadius: 16,
|
|
676
628
|
justifyContent: 'center',
|
|
677
629
|
alignItems: 'center',
|
|
678
|
-
|
|
630
|
+
padding: 8,
|
|
679
631
|
},
|
|
680
|
-
|
|
632
|
+
quickLinkLabelTwoLines: {
|
|
681
633
|
textAlign: 'center',
|
|
682
634
|
fontSize: 11,
|
|
635
|
+
lineHeight: 14,
|
|
636
|
+
marginTop: 8,
|
|
683
637
|
},
|
|
684
|
-
|
|
638
|
+
mcqContainer: {
|
|
639
|
+
backgroundColor: '#FFFFFF',
|
|
685
640
|
padding: 16,
|
|
686
|
-
borderRadius: 16,
|
|
687
|
-
overflow: 'hidden',
|
|
688
|
-
marginTop: 4,
|
|
689
|
-
marginBottom: 4,
|
|
690
|
-
},
|
|
691
|
-
mcqImage: {
|
|
692
|
-
width: '100%',
|
|
693
|
-
height: 140,
|
|
694
641
|
borderRadius: 12,
|
|
695
|
-
marginBottom:
|
|
642
|
+
marginBottom: 20,
|
|
643
|
+
borderWidth: 1,
|
|
644
|
+
borderColor: '#E2E8F0',
|
|
696
645
|
},
|
|
697
646
|
mcqQuestion: {
|
|
698
647
|
fontSize: 14,
|
|
699
648
|
lineHeight: 20,
|
|
700
649
|
fontWeight: '500',
|
|
701
|
-
marginBottom:
|
|
650
|
+
marginBottom: 16,
|
|
702
651
|
},
|
|
703
652
|
mcqOptionsList: {
|
|
704
653
|
marginBottom: 8,
|
|
705
654
|
},
|
|
706
|
-
|
|
655
|
+
mcqOptionBox: {
|
|
707
656
|
flexDirection: 'row',
|
|
708
657
|
alignItems: 'center',
|
|
709
|
-
paddingVertical:
|
|
710
|
-
paddingHorizontal:
|
|
658
|
+
paddingVertical: 14,
|
|
659
|
+
paddingHorizontal: 12,
|
|
711
660
|
borderRadius: 8,
|
|
712
|
-
|
|
661
|
+
borderWidth: 1,
|
|
662
|
+
marginBottom: 10,
|
|
713
663
|
},
|
|
714
|
-
|
|
715
|
-
width:
|
|
716
|
-
height:
|
|
717
|
-
borderRadius:
|
|
718
|
-
borderWidth: 1
|
|
664
|
+
mcqCheckCircle: {
|
|
665
|
+
width: 20,
|
|
666
|
+
height: 20,
|
|
667
|
+
borderRadius: 10,
|
|
668
|
+
borderWidth: 1,
|
|
719
669
|
justifyContent: 'center',
|
|
720
670
|
alignItems: 'center',
|
|
721
|
-
marginRight:
|
|
722
|
-
},
|
|
723
|
-
mcqRadioInner: {
|
|
724
|
-
width: 10,
|
|
725
|
-
height: 10,
|
|
726
|
-
borderRadius: 5,
|
|
671
|
+
marginRight: 12,
|
|
727
672
|
},
|
|
728
|
-
|
|
729
|
-
fontSize:
|
|
673
|
+
mcqOptionTextStr: {
|
|
674
|
+
fontSize: 14,
|
|
730
675
|
flex: 1,
|
|
731
676
|
},
|
|
732
677
|
mcqViewDetailsBtn: {
|
|
733
678
|
alignItems: 'center',
|
|
734
679
|
borderTopWidth: 1,
|
|
735
680
|
borderTopColor: '#E2E8F0',
|
|
736
|
-
paddingTop:
|
|
737
|
-
marginTop: 8,
|
|
738
|
-
},
|
|
739
|
-
getStartedCard: {
|
|
740
|
-
padding: 12,
|
|
741
|
-
borderRadius: 16,
|
|
681
|
+
paddingTop: 16,
|
|
742
682
|
marginTop: 4,
|
|
743
|
-
|
|
683
|
+
},
|
|
684
|
+
getStartedCardMockup: {
|
|
685
|
+
backgroundColor: '#FFFFFF',
|
|
686
|
+
padding: 16,
|
|
687
|
+
borderRadius: 12,
|
|
688
|
+
marginBottom: 20,
|
|
689
|
+
borderWidth: 1,
|
|
690
|
+
borderColor: '#E2E8F0',
|
|
744
691
|
},
|
|
745
692
|
getStartedRow: {
|
|
746
693
|
flexDirection: 'row',
|
|
747
694
|
alignItems: 'center',
|
|
748
695
|
},
|
|
749
|
-
|
|
750
|
-
width:
|
|
751
|
-
height:
|
|
752
|
-
borderRadius:
|
|
753
|
-
|
|
696
|
+
getStartedIconBox: {
|
|
697
|
+
width: 50,
|
|
698
|
+
height: 50,
|
|
699
|
+
borderRadius: 12,
|
|
700
|
+
backgroundColor: '#FFF7ED',
|
|
701
|
+
justifyContent: 'center',
|
|
702
|
+
alignItems: 'center',
|
|
703
|
+
marginRight: 16,
|
|
704
|
+
position: 'relative',
|
|
705
|
+
},
|
|
706
|
+
anatomyIcon: {
|
|
707
|
+
width: 32,
|
|
708
|
+
height: 32,
|
|
709
|
+
},
|
|
710
|
+
playIconBadge: {
|
|
711
|
+
position: 'absolute',
|
|
712
|
+
bottom: -6,
|
|
713
|
+
right: -6,
|
|
714
|
+
backgroundColor: '#FFFFFF',
|
|
715
|
+
borderRadius: 10,
|
|
716
|
+
padding: 2,
|
|
754
717
|
},
|
|
755
718
|
getStartedInfo: {
|
|
756
719
|
flex: 1,
|
|
@@ -758,96 +721,70 @@ const styles = StyleSheet.create({
|
|
|
758
721
|
continueLearningList: {
|
|
759
722
|
marginTop: 4,
|
|
760
723
|
},
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
724
|
+
continueCardMockup: {
|
|
725
|
+
backgroundColor: '#FFFFFF',
|
|
726
|
+
padding: 16,
|
|
727
|
+
marginBottom: 12,
|
|
728
|
+
borderRadius: 12,
|
|
729
|
+
borderWidth: 1,
|
|
730
|
+
borderColor: '#E2E8F0',
|
|
765
731
|
},
|
|
766
732
|
continueLearningRow: {
|
|
767
733
|
flexDirection: 'row',
|
|
768
734
|
alignItems: 'center',
|
|
769
735
|
},
|
|
770
|
-
|
|
771
|
-
width:
|
|
772
|
-
height:
|
|
773
|
-
borderRadius:
|
|
736
|
+
continueIconBox: {
|
|
737
|
+
width: 48,
|
|
738
|
+
height: 48,
|
|
739
|
+
borderRadius: 12,
|
|
774
740
|
justifyContent: 'center',
|
|
775
741
|
alignItems: 'center',
|
|
776
|
-
marginRight:
|
|
742
|
+
marginRight: 16,
|
|
777
743
|
},
|
|
778
744
|
continueLearningInfo: {
|
|
779
745
|
flex: 1,
|
|
780
746
|
},
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
marginBottom:
|
|
747
|
+
progressBarBgMockup: {
|
|
748
|
+
height: 6,
|
|
749
|
+
backgroundColor: '#F1F5F9',
|
|
750
|
+
borderRadius: 3,
|
|
751
|
+
marginBottom: 8,
|
|
752
|
+
width: '100%',
|
|
753
|
+
overflow: 'hidden',
|
|
786
754
|
},
|
|
787
|
-
|
|
788
|
-
height:
|
|
789
|
-
|
|
755
|
+
progressBarFillMockup: {
|
|
756
|
+
height: '100%',
|
|
757
|
+
borderRadius: 3,
|
|
790
758
|
},
|
|
791
759
|
continueStatsRow: {
|
|
792
760
|
flexDirection: 'row',
|
|
793
761
|
justifyContent: 'space-between',
|
|
794
762
|
alignItems: 'center',
|
|
795
763
|
},
|
|
796
|
-
|
|
797
|
-
marginTop: 8,
|
|
798
|
-
padding: 14,
|
|
799
|
-
borderRadius: 16,
|
|
800
|
-
backgroundColor: '#FDE047', // RxDx Amber
|
|
801
|
-
},
|
|
802
|
-
referralRow: {
|
|
803
|
-
flexDirection: 'row',
|
|
804
|
-
justifyContent: 'space-between',
|
|
805
|
-
alignItems: 'center',
|
|
806
|
-
},
|
|
807
|
-
referralLeft: {
|
|
764
|
+
referralBannerMockup: {
|
|
808
765
|
flexDirection: 'row',
|
|
809
766
|
alignItems: 'center',
|
|
810
|
-
|
|
811
|
-
|
|
767
|
+
backgroundColor: '#FCD34D',
|
|
768
|
+
padding: 16,
|
|
769
|
+
borderRadius: 12,
|
|
812
770
|
},
|
|
813
|
-
|
|
814
|
-
width:
|
|
815
|
-
height:
|
|
816
|
-
borderRadius:
|
|
817
|
-
backgroundColor: '#
|
|
771
|
+
referralIconCircle: {
|
|
772
|
+
width: 40,
|
|
773
|
+
height: 40,
|
|
774
|
+
borderRadius: 20,
|
|
775
|
+
backgroundColor: '#F59E0B',
|
|
818
776
|
justifyContent: 'center',
|
|
819
777
|
alignItems: 'center',
|
|
820
|
-
marginRight:
|
|
778
|
+
marginRight: 12,
|
|
821
779
|
},
|
|
822
|
-
|
|
823
|
-
fontSize: 12,
|
|
824
|
-
lineHeight: 16,
|
|
780
|
+
referralTextCol: {
|
|
825
781
|
flex: 1,
|
|
782
|
+
paddingRight: 12,
|
|
826
783
|
},
|
|
827
|
-
|
|
784
|
+
shareAppBtnWhite: {
|
|
828
785
|
backgroundColor: '#FFFFFF',
|
|
829
786
|
paddingHorizontal: 12,
|
|
830
|
-
paddingVertical:
|
|
831
|
-
borderRadius:
|
|
832
|
-
shadowColor: '#000000',
|
|
833
|
-
shadowOffset: { width: 0, height: 1 },
|
|
834
|
-
shadowOpacity: 0.1,
|
|
835
|
-
shadowRadius: 1,
|
|
836
|
-
elevation: 1,
|
|
837
|
-
},
|
|
838
|
-
bannerCarouselContainer: {
|
|
839
|
-
marginTop: 12,
|
|
840
|
-
},
|
|
841
|
-
bannerScrollViewContent: {},
|
|
842
|
-
dotsContainer: {
|
|
843
|
-
flexDirection: 'row',
|
|
844
|
-
justifyContent: 'center',
|
|
845
|
-
alignItems: 'center',
|
|
846
|
-
marginTop: 8,
|
|
847
|
-
},
|
|
848
|
-
dot: {
|
|
849
|
-
height: 6,
|
|
850
|
-
borderRadius: 3,
|
|
851
|
-
marginHorizontal: 3,
|
|
787
|
+
paddingVertical: 8,
|
|
788
|
+
borderRadius: 8,
|
|
852
789
|
},
|
|
853
790
|
});
|