react-native-elearn-ui 0.1.12 → 0.1.14
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 +665 -650
- 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 +461 -522
- 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" color={theme.textPrimary} style={{ fontSize: 20, fontWeight: '800' }}>
|
|
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={18} color="#FFFFFF" />
|
|
207
|
+
</View>
|
|
208
|
+
<Typography variant="body" 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={18} color="#FFFFFF" />
|
|
228
|
+
</View>
|
|
229
|
+
<Typography variant="body" 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={14} color="#F59E0B" />
|
|
348
|
+
</View>
|
|
349
|
+
</View>
|
|
350
|
+
<View style={styles.getStartedInfo}>
|
|
351
|
+
<Typography variant="body" 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: 24, height: 24}} /> : <Icon name={item.icon as IconName} size={20} color={theme.primary} />}
|
|
392
|
+
</View>
|
|
393
|
+
<View style={styles.continueLearningInfo}>
|
|
394
|
+
<Typography variant="body" bold color={theme.textPrimary} style={{marginBottom: 6}}>
|
|
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,25 +445,30 @@ 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: 8,
|
|
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
|
-
marginRight:
|
|
471
|
+
marginRight: 8,
|
|
526
472
|
},
|
|
527
473
|
appNameRow: {
|
|
528
474
|
flexDirection: 'row',
|
|
@@ -540,35 +486,39 @@ 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
|
-
|
|
499
|
+
top: -2,
|
|
500
|
+
right: 2,
|
|
501
|
+
minWidth: 16,
|
|
558
502
|
height: 16,
|
|
559
503
|
borderRadius: 8,
|
|
504
|
+
backgroundColor: '#EF4444',
|
|
560
505
|
justifyContent: 'center',
|
|
561
506
|
alignItems: 'center',
|
|
507
|
+
borderWidth: 1.5,
|
|
508
|
+
borderColor: '#FFFFFF',
|
|
509
|
+
paddingHorizontal: 2,
|
|
562
510
|
},
|
|
563
511
|
badgeText: {
|
|
564
512
|
fontSize: 9,
|
|
565
|
-
fontWeight: '
|
|
513
|
+
fontWeight: 'bold',
|
|
514
|
+
lineHeight: 11,
|
|
566
515
|
},
|
|
567
516
|
profileContainer: {
|
|
568
|
-
width:
|
|
569
|
-
height:
|
|
570
|
-
borderRadius:
|
|
517
|
+
width: 32,
|
|
518
|
+
height: 32,
|
|
519
|
+
borderRadius: 16,
|
|
571
520
|
overflow: 'hidden',
|
|
521
|
+
marginLeft: 6,
|
|
572
522
|
},
|
|
573
523
|
profileAvatar: {
|
|
574
524
|
width: '100%',
|
|
@@ -576,157 +526,154 @@ const styles = StyleSheet.create({
|
|
|
576
526
|
},
|
|
577
527
|
scrollContent: {
|
|
578
528
|
paddingHorizontal: 16,
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
promoBanner: {
|
|
582
|
-
flexDirection: 'row',
|
|
583
|
-
borderRadius: 20,
|
|
584
|
-
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,
|
|
529
|
+
paddingVertical: 12,
|
|
530
|
+
paddingBottom: 40,
|
|
608
531
|
},
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
532
|
+
progressContainer: {
|
|
533
|
+
backgroundColor: '#E8F5E9',
|
|
534
|
+
padding: 12,
|
|
535
|
+
borderRadius: 12,
|
|
536
|
+
marginBottom: 16,
|
|
614
537
|
},
|
|
615
|
-
|
|
538
|
+
progressRow: {
|
|
616
539
|
flexDirection: 'row',
|
|
617
540
|
justifyContent: 'space-between',
|
|
618
541
|
alignItems: 'center',
|
|
619
542
|
marginBottom: 12,
|
|
620
543
|
},
|
|
621
|
-
|
|
544
|
+
progressTextContainer: {
|
|
622
545
|
flex: 1,
|
|
623
546
|
},
|
|
624
|
-
|
|
625
|
-
fontSize:
|
|
626
|
-
lineHeight:
|
|
547
|
+
percentageTextLarge: {
|
|
548
|
+
fontSize: 32,
|
|
549
|
+
lineHeight: 38,
|
|
627
550
|
},
|
|
628
|
-
|
|
629
|
-
|
|
551
|
+
modulesCompletedText: {
|
|
552
|
+
fontSize: 10,
|
|
553
|
+
opacity: 0.8,
|
|
554
|
+
},
|
|
555
|
+
trackProgressBtn: {
|
|
556
|
+
backgroundColor: '#059669',
|
|
557
|
+
paddingHorizontal: 12,
|
|
558
|
+
paddingVertical: 8,
|
|
559
|
+
borderRadius: 8,
|
|
560
|
+
},
|
|
561
|
+
progressBarBg: {
|
|
562
|
+
height: 10,
|
|
563
|
+
backgroundColor: '#FFFFFF',
|
|
564
|
+
borderRadius: 5,
|
|
565
|
+
overflow: 'hidden',
|
|
566
|
+
width: '100%',
|
|
567
|
+
},
|
|
568
|
+
progressBarFill: {
|
|
569
|
+
height: '100%',
|
|
570
|
+
backgroundColor: '#059669',
|
|
571
|
+
borderRadius: 5,
|
|
630
572
|
},
|
|
631
573
|
actionsContainer: {
|
|
632
574
|
flexDirection: 'row',
|
|
633
575
|
justifyContent: 'space-between',
|
|
634
|
-
|
|
576
|
+
marginBottom: 16,
|
|
635
577
|
},
|
|
636
578
|
actionPill: {
|
|
637
579
|
flex: 1,
|
|
580
|
+
padding: 12,
|
|
581
|
+
borderRadius: 12,
|
|
582
|
+
},
|
|
583
|
+
actionPillContent: {
|
|
638
584
|
flexDirection: 'row',
|
|
639
585
|
alignItems: 'center',
|
|
640
|
-
|
|
641
|
-
borderRadius: 14,
|
|
642
|
-
marginHorizontal: 4,
|
|
586
|
+
width: '100%',
|
|
643
587
|
},
|
|
644
|
-
|
|
588
|
+
actionPillIconLeft: {
|
|
645
589
|
width: 28,
|
|
646
590
|
height: 28,
|
|
647
591
|
borderRadius: 14,
|
|
648
|
-
backgroundColor: '
|
|
592
|
+
backgroundColor: 'rgba(255,255,255,0.25)',
|
|
649
593
|
justifyContent: 'center',
|
|
650
594
|
alignItems: 'center',
|
|
651
|
-
marginRight: 10,
|
|
652
595
|
},
|
|
653
|
-
|
|
654
|
-
|
|
596
|
+
actionPillTextCentered: {
|
|
597
|
+
flex: 1,
|
|
598
|
+
textAlign: 'center',
|
|
599
|
+
fontSize: 16,
|
|
600
|
+
},
|
|
601
|
+
chevronsRight: {
|
|
602
|
+
flexDirection: 'row',
|
|
655
603
|
},
|
|
656
604
|
sectionHeader: {
|
|
657
|
-
marginTop:
|
|
658
|
-
marginBottom:
|
|
605
|
+
marginTop: 8,
|
|
606
|
+
marginBottom: 12,
|
|
607
|
+
},
|
|
608
|
+
sectionHeaderCentered: {
|
|
609
|
+
marginTop: 8,
|
|
610
|
+
marginBottom: 12,
|
|
611
|
+
alignItems: 'center',
|
|
659
612
|
},
|
|
660
613
|
sectionTitle: {
|
|
661
614
|
fontSize: 12,
|
|
662
615
|
letterSpacing: 0.8,
|
|
663
616
|
},
|
|
664
|
-
|
|
665
|
-
|
|
617
|
+
quickLinksContainer: {
|
|
618
|
+
flexDirection: 'row',
|
|
619
|
+
justifyContent: 'space-between',
|
|
620
|
+
marginBottom: 16,
|
|
666
621
|
},
|
|
667
|
-
|
|
622
|
+
quickLinkBoxItem: {
|
|
668
623
|
alignItems: 'center',
|
|
669
|
-
|
|
670
|
-
width: 72,
|
|
624
|
+
flex: 1,
|
|
671
625
|
},
|
|
672
|
-
|
|
673
|
-
width:
|
|
674
|
-
|
|
675
|
-
borderRadius:
|
|
626
|
+
quickLinkRect: {
|
|
627
|
+
width: '90%',
|
|
628
|
+
aspectRatio: 0.8,
|
|
629
|
+
borderRadius: 16,
|
|
676
630
|
justifyContent: 'center',
|
|
677
631
|
alignItems: 'center',
|
|
678
|
-
|
|
632
|
+
padding: 8,
|
|
679
633
|
},
|
|
680
|
-
|
|
634
|
+
quickLinkLabelTwoLines: {
|
|
681
635
|
textAlign: 'center',
|
|
682
636
|
fontSize: 11,
|
|
637
|
+
lineHeight: 14,
|
|
638
|
+
marginTop: 8,
|
|
683
639
|
},
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
overflow: 'hidden',
|
|
688
|
-
marginTop: 4,
|
|
689
|
-
marginBottom: 4,
|
|
690
|
-
},
|
|
691
|
-
mcqImage: {
|
|
692
|
-
width: '100%',
|
|
693
|
-
height: 140,
|
|
640
|
+
mcqContainer: {
|
|
641
|
+
backgroundColor: '#FFFFFF',
|
|
642
|
+
padding: 12,
|
|
694
643
|
borderRadius: 12,
|
|
695
|
-
marginBottom:
|
|
644
|
+
marginBottom: 16,
|
|
645
|
+
borderWidth: 1,
|
|
646
|
+
borderColor: '#E2E8F0',
|
|
696
647
|
},
|
|
697
648
|
mcqQuestion: {
|
|
698
|
-
fontSize:
|
|
699
|
-
lineHeight:
|
|
649
|
+
fontSize: 13,
|
|
650
|
+
lineHeight: 18,
|
|
700
651
|
fontWeight: '500',
|
|
701
652
|
marginBottom: 12,
|
|
702
653
|
},
|
|
703
654
|
mcqOptionsList: {
|
|
704
655
|
marginBottom: 8,
|
|
705
656
|
},
|
|
706
|
-
|
|
657
|
+
mcqOptionBox: {
|
|
707
658
|
flexDirection: 'row',
|
|
708
659
|
alignItems: 'center',
|
|
709
660
|
paddingVertical: 10,
|
|
710
|
-
paddingHorizontal:
|
|
661
|
+
paddingHorizontal: 10,
|
|
711
662
|
borderRadius: 8,
|
|
712
|
-
|
|
663
|
+
borderWidth: 1,
|
|
664
|
+
marginBottom: 8,
|
|
713
665
|
},
|
|
714
|
-
|
|
715
|
-
width:
|
|
716
|
-
height:
|
|
717
|
-
borderRadius:
|
|
718
|
-
borderWidth: 1
|
|
666
|
+
mcqCheckCircle: {
|
|
667
|
+
width: 20,
|
|
668
|
+
height: 20,
|
|
669
|
+
borderRadius: 10,
|
|
670
|
+
borderWidth: 1,
|
|
719
671
|
justifyContent: 'center',
|
|
720
672
|
alignItems: 'center',
|
|
721
|
-
marginRight:
|
|
722
|
-
},
|
|
723
|
-
mcqRadioInner: {
|
|
724
|
-
width: 10,
|
|
725
|
-
height: 10,
|
|
726
|
-
borderRadius: 5,
|
|
673
|
+
marginRight: 12,
|
|
727
674
|
},
|
|
728
|
-
|
|
729
|
-
fontSize:
|
|
675
|
+
mcqOptionTextStr: {
|
|
676
|
+
fontSize: 14,
|
|
730
677
|
flex: 1,
|
|
731
678
|
},
|
|
732
679
|
mcqViewDetailsBtn: {
|
|
@@ -734,23 +681,41 @@ const styles = StyleSheet.create({
|
|
|
734
681
|
borderTopWidth: 1,
|
|
735
682
|
borderTopColor: '#E2E8F0',
|
|
736
683
|
paddingTop: 12,
|
|
737
|
-
marginTop:
|
|
684
|
+
marginTop: 4,
|
|
738
685
|
},
|
|
739
|
-
|
|
686
|
+
getStartedCardMockup: {
|
|
687
|
+
backgroundColor: '#FFFFFF',
|
|
740
688
|
padding: 12,
|
|
741
|
-
borderRadius:
|
|
742
|
-
|
|
743
|
-
|
|
689
|
+
borderRadius: 12,
|
|
690
|
+
marginBottom: 16,
|
|
691
|
+
borderWidth: 1,
|
|
692
|
+
borderColor: '#E2E8F0',
|
|
744
693
|
},
|
|
745
694
|
getStartedRow: {
|
|
746
695
|
flexDirection: 'row',
|
|
747
696
|
alignItems: 'center',
|
|
748
697
|
},
|
|
749
|
-
|
|
750
|
-
width:
|
|
751
|
-
height:
|
|
752
|
-
borderRadius:
|
|
698
|
+
getStartedIconBox: {
|
|
699
|
+
width: 42,
|
|
700
|
+
height: 42,
|
|
701
|
+
borderRadius: 10,
|
|
702
|
+
backgroundColor: '#FFF7ED',
|
|
703
|
+
justifyContent: 'center',
|
|
704
|
+
alignItems: 'center',
|
|
753
705
|
marginRight: 12,
|
|
706
|
+
position: 'relative',
|
|
707
|
+
},
|
|
708
|
+
anatomyIcon: {
|
|
709
|
+
width: 24,
|
|
710
|
+
height: 24,
|
|
711
|
+
},
|
|
712
|
+
playIconBadge: {
|
|
713
|
+
position: 'absolute',
|
|
714
|
+
bottom: -6,
|
|
715
|
+
right: -6,
|
|
716
|
+
backgroundColor: '#FFFFFF',
|
|
717
|
+
borderRadius: 10,
|
|
718
|
+
padding: 2,
|
|
754
719
|
},
|
|
755
720
|
getStartedInfo: {
|
|
756
721
|
flex: 1,
|
|
@@ -758,16 +723,19 @@ const styles = StyleSheet.create({
|
|
|
758
723
|
continueLearningList: {
|
|
759
724
|
marginTop: 4,
|
|
760
725
|
},
|
|
761
|
-
|
|
726
|
+
continueCardMockup: {
|
|
727
|
+
backgroundColor: '#FFFFFF',
|
|
762
728
|
padding: 12,
|
|
763
|
-
marginBottom:
|
|
764
|
-
borderRadius:
|
|
729
|
+
marginBottom: 10,
|
|
730
|
+
borderRadius: 12,
|
|
731
|
+
borderWidth: 1,
|
|
732
|
+
borderColor: '#E2E8F0',
|
|
765
733
|
},
|
|
766
734
|
continueLearningRow: {
|
|
767
735
|
flexDirection: 'row',
|
|
768
736
|
alignItems: 'center',
|
|
769
737
|
},
|
|
770
|
-
|
|
738
|
+
continueIconBox: {
|
|
771
739
|
width: 40,
|
|
772
740
|
height: 40,
|
|
773
741
|
borderRadius: 10,
|
|
@@ -778,76 +746,47 @@ const styles = StyleSheet.create({
|
|
|
778
746
|
continueLearningInfo: {
|
|
779
747
|
flex: 1,
|
|
780
748
|
},
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
marginBottom:
|
|
749
|
+
progressBarBgMockup: {
|
|
750
|
+
height: 6,
|
|
751
|
+
backgroundColor: '#F1F5F9',
|
|
752
|
+
borderRadius: 3,
|
|
753
|
+
marginBottom: 8,
|
|
754
|
+
width: '100%',
|
|
755
|
+
overflow: 'hidden',
|
|
786
756
|
},
|
|
787
|
-
|
|
788
|
-
height:
|
|
789
|
-
|
|
757
|
+
progressBarFillMockup: {
|
|
758
|
+
height: '100%',
|
|
759
|
+
borderRadius: 3,
|
|
790
760
|
},
|
|
791
761
|
continueStatsRow: {
|
|
792
762
|
flexDirection: 'row',
|
|
793
763
|
justifyContent: 'space-between',
|
|
794
764
|
alignItems: 'center',
|
|
795
765
|
},
|
|
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: {
|
|
766
|
+
referralBannerMockup: {
|
|
808
767
|
flexDirection: 'row',
|
|
809
768
|
alignItems: 'center',
|
|
810
|
-
|
|
811
|
-
|
|
769
|
+
backgroundColor: '#FCD34D',
|
|
770
|
+
padding: 12,
|
|
771
|
+
borderRadius: 12,
|
|
812
772
|
},
|
|
813
|
-
|
|
814
|
-
width:
|
|
815
|
-
height:
|
|
816
|
-
borderRadius:
|
|
817
|
-
backgroundColor: '#
|
|
773
|
+
referralIconCircle: {
|
|
774
|
+
width: 32,
|
|
775
|
+
height: 32,
|
|
776
|
+
borderRadius: 16,
|
|
777
|
+
backgroundColor: '#F59E0B',
|
|
818
778
|
justifyContent: 'center',
|
|
819
779
|
alignItems: 'center',
|
|
820
780
|
marginRight: 10,
|
|
821
781
|
},
|
|
822
|
-
|
|
823
|
-
fontSize: 12,
|
|
824
|
-
lineHeight: 16,
|
|
782
|
+
referralTextCol: {
|
|
825
783
|
flex: 1,
|
|
784
|
+
paddingRight: 12,
|
|
826
785
|
},
|
|
827
|
-
|
|
786
|
+
shareAppBtnWhite: {
|
|
828
787
|
backgroundColor: '#FFFFFF',
|
|
829
788
|
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,
|
|
789
|
+
paddingVertical: 8,
|
|
790
|
+
borderRadius: 8,
|
|
852
791
|
},
|
|
853
792
|
});
|