react-native-elearn-ui 0.1.11 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/lib/module/index.js +1 -1
  2. package/lib/module/index.js.map +1 -1
  3. package/lib/module/screens/HomeScreen.js +672 -662
  4. package/lib/module/screens/HomeScreen.js.map +1 -1
  5. package/lib/module/screens/index.js +0 -8
  6. package/lib/module/screens/index.js.map +1 -1
  7. package/lib/typescript/src/index.d.ts +1 -1
  8. package/lib/typescript/src/index.d.ts.map +1 -1
  9. package/lib/typescript/src/screens/HomeScreen.d.ts.map +1 -1
  10. package/lib/typescript/src/screens/index.d.ts +0 -8
  11. package/lib/typescript/src/screens/index.d.ts.map +1 -1
  12. package/package.json +1 -1
  13. package/src/index.tsx +0 -8
  14. package/src/screens/HomeScreen.tsx +471 -534
  15. package/src/screens/index.ts +0 -8
  16. package/lib/module/screens/PearlChaptersScreen.js +0 -359
  17. package/lib/module/screens/PearlChaptersScreen.js.map +0 -1
  18. package/lib/module/screens/PearlReaderScreen.js +0 -313
  19. package/lib/module/screens/PearlReaderScreen.js.map +0 -1
  20. package/lib/module/screens/PearlsScreen.js +0 -153
  21. package/lib/module/screens/PearlsScreen.js.map +0 -1
  22. package/lib/module/screens/QbankScreen.js +0 -370
  23. package/lib/module/screens/QbankScreen.js.map +0 -1
  24. package/lib/module/screens/QuestionScreen.js +0 -437
  25. package/lib/module/screens/QuestionScreen.js.map +0 -1
  26. package/lib/module/screens/QuizStartScreen.js +0 -283
  27. package/lib/module/screens/QuizStartScreen.js.map +0 -1
  28. package/lib/module/screens/ResultScreen.js +0 -646
  29. package/lib/module/screens/ResultScreen.js.map +0 -1
  30. package/lib/module/screens/TopicListScreen.js +0 -420
  31. package/lib/module/screens/TopicListScreen.js.map +0 -1
  32. package/lib/module/screens/pearlsMockData.js +0 -77
  33. package/lib/module/screens/pearlsMockData.js.map +0 -1
  34. package/lib/typescript/src/screens/PearlChaptersScreen.d.ts +0 -13
  35. package/lib/typescript/src/screens/PearlChaptersScreen.d.ts.map +0 -1
  36. package/lib/typescript/src/screens/PearlReaderScreen.d.ts +0 -14
  37. package/lib/typescript/src/screens/PearlReaderScreen.d.ts.map +0 -1
  38. package/lib/typescript/src/screens/PearlsScreen.d.ts +0 -11
  39. package/lib/typescript/src/screens/PearlsScreen.d.ts.map +0 -1
  40. package/lib/typescript/src/screens/QbankScreen.d.ts +0 -10
  41. package/lib/typescript/src/screens/QbankScreen.d.ts.map +0 -1
  42. package/lib/typescript/src/screens/QuestionScreen.d.ts +0 -14
  43. package/lib/typescript/src/screens/QuestionScreen.d.ts.map +0 -1
  44. package/lib/typescript/src/screens/QuizStartScreen.d.ts +0 -14
  45. package/lib/typescript/src/screens/QuizStartScreen.d.ts.map +0 -1
  46. package/lib/typescript/src/screens/ResultScreen.d.ts +0 -13
  47. package/lib/typescript/src/screens/ResultScreen.d.ts.map +0 -1
  48. package/lib/typescript/src/screens/TopicListScreen.d.ts +0 -12
  49. package/lib/typescript/src/screens/TopicListScreen.d.ts.map +0 -1
  50. package/lib/typescript/src/screens/pearlsMockData.d.ts +0 -3
  51. package/lib/typescript/src/screens/pearlsMockData.d.ts.map +0 -1
  52. package/src/screens/PearlChaptersScreen.tsx +0 -330
  53. package/src/screens/PearlReaderScreen.tsx +0 -306
  54. package/src/screens/PearlsScreen.tsx +0 -147
  55. package/src/screens/QbankScreen.tsx +0 -327
  56. package/src/screens/QuestionScreen.tsx +0 -423
  57. package/src/screens/QuizStartScreen.tsx +0 -260
  58. package/src/screens/ResultScreen.tsx +0 -618
  59. package/src/screens/TopicListScreen.tsx +0 -388
  60. package/src/screens/pearlsMockData.ts +0 -70
@@ -6,11 +6,11 @@ import {
6
6
  TouchableOpacity,
7
7
  StatusBar,
8
8
  Image,
9
- Dimensions,
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, Card, ProgressBar, Icon } from '../components';
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>(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', 'BRAIN TEASERS OF THE DAY');
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: 25,
94
- text: 'Modules Completed of 829',
95
- totalModules: 829,
96
- buttonText: 'Track Qbank',
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: 'Bookmarks', icon: 'bookmark', color: '#3B82F6' },
106
- { id: 'custom_module', label: 'Custom Module', icon: 'file-text', color: '#10B981' },
107
- { id: 'videos_saved', label: 'Videos Saved', icon: 'download', color: '#EF4444' },
108
- { id: 'qbank', label: 'QBank', icon: 'book-open', color: '#8B5CF6' },
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
- imageUrl: 'https://images.unsplash.com/photo-1576086213369-97a306d36557?q=80&w=500&auto=format&fit=crop',
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 for Hepatitis B',
117
- 'B. Used for chickenpox prophylaxis',
118
- 'C. Obtained from random donors',
119
- 'D. They are hyperimmune human immunoglobulins',
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: 'subj_anatomy', title: 'Anatomy', progressPercentage: 20, completedModules: 2, totalModules: 63, icon: 'atom' },
132
- { id: 'subj_biochem', title: 'Biochemistry', progressPercentage: 60, completedModules: 45, totalModules: 53, icon: 'dna' },
133
- { id: 'subj_physio', title: 'Physiology', progressPercentage: 88, completedModules: 59, totalModules: 63, icon: 'flask' },
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 RXDX, learn together, grow together.',
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: theme.background }]}>
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={[styles.header, { borderBottomColor: theme.border }]}>
148
- <TouchableOpacity style={styles.headerDropdown}>
149
- <View style={[styles.appLogo, { backgroundColor: theme.primary }]}>
150
- <Typography variant="label" bold color="#FFFFFF">R</Typography>
151
- </View>
152
- <View>
153
- <View style={styles.appNameRow}>
154
- <Typography variant="h2" bold color={theme.textPrimary}>
155
- {headerData.appName}
156
- </Typography>
157
- <View style={styles.chevronWrap}>
158
- <Icon name="chevron-left" size={12} color={theme.textSecondary} />
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
- <Typography variant="caption" color={theme.textSecondary} style={styles.appSubName}>
162
- {headerData.subName}
163
- </Typography>
164
- </View>
165
- </TouchableOpacity>
148
+ </TouchableOpacity>
166
149
 
167
- <View style={styles.headerRight}>
168
- <TouchableOpacity onPress={onPressNotification} style={[styles.iconBtn, { borderColor: theme.border }]}>
169
- <Icon name="bell" size={20} color={theme.textPrimary} />
170
- {headerData.notificationCount && headerData.notificationCount > 0 ? (
171
- <View style={[styles.badge, { backgroundColor: theme.danger }]}>
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
- ) : null}
177
- </TouchableOpacity>
162
+ </TouchableOpacity>
178
163
 
179
- <TouchableOpacity onPress={onPressAvatar} style={styles.profileContainer}>
180
- <Image source={{ uri: headerData.avatarUrl }} style={styles.profileAvatar} />
181
- </TouchableOpacity>
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={styles.scrollContent} showsVerticalScrollIndicator={false}>
187
-
188
- {/* Banner Section */}
189
- <View style={styles.bannerCarouselContainer}>
190
- <ScrollView
191
- horizontal
192
- pagingEnabled
193
- showsHorizontalScrollIndicator={false}
194
- onScroll={handleBannerScroll}
195
- scrollEventThrottle={16}
196
- contentContainerStyle={styles.bannerScrollViewContent}
197
- >
198
- {bannersData.map((banner, index) => {
199
- const colors = banner.gradientColors || ['#15803D', '#166534'];
200
- const bannerBg = colors[0] || '#15803D';
201
-
202
- return (
203
- <TouchableOpacity
204
- key={index}
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
- </View>
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
- {/* Quick Links Section */}
304
- {quickLinksHeader.show && (
305
- <View style={styles.sectionHeader}>
306
- <Typography variant="caption" bold color={theme.textSecondary} style={styles.sectionTitle}>
307
- {quickLinksHeader.title}
308
- </Typography>
309
- </View>
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
- key={link.id}
316
- style={styles.quickLinkItem}
317
- onPress={() => {
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={[styles.quickLinkCircle, { backgroundColor: `${link.color}15` }]}>
323
- <Icon name={link.icon as IconName} size={20} color={link.color} />
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
- <Card bordered style={styles.mcqCard}>
342
- {dailyMcqData.imageUrl && (
343
- <Image source={{ uri: dailyMcqData.imageUrl }} style={styles.mcqImage} />
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
- <Typography variant="body" color={theme.textPrimary} style={styles.mcqQuestion}>
346
- {dailyMcqData.question}
347
- </Typography>
348
-
349
- {/* Interactive Radio Options */}
350
- <View style={styles.mcqOptionsList}>
351
- {dailyMcqData.options.map((option, idx) => {
352
- const isSelected = selectedTeaserOption === idx;
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={idx}
378
- activeOpacity={0.8}
379
- disabled={isTeaserAnswered}
380
- style={[styles.mcqOptionRow, { backgroundColor: rowBg }]}
381
- onPress={() => setSelectedTeaserOption(idx)}
261
+ key={link.id}
262
+ style={styles.quickLinkBoxItem}
263
+ onPress={() => {
264
+ link.onPress?.();
265
+ onPressQuickLink?.(link.id);
266
+ }}
382
267
  >
383
- <View style={[styles.mcqRadioOuter, { borderColor: circleBorder }]}>
384
- {isSelected || (isTeaserAnswered && isCorrectAnswer) ? (
385
- <View style={[styles.mcqRadioInner, { backgroundColor: circleFill }]} />
386
- ) : null}
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
- <TouchableOpacity onPress={onPressMcqViewDetails} style={styles.mcqViewDetailsBtn}>
397
- <Typography variant="h3" color={theme.primary} bold>
398
- View Details
399
- </Typography>
400
- </TouchableOpacity>
401
- </Card>
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
- {/* Get Started Section */}
404
- {getStartedHeader.show && (
405
- <View style={styles.sectionHeader}>
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
- <Card bordered onPress={onPressGetStarted} style={styles.getStartedCard}>
413
- <View style={styles.getStartedRow}>
414
- <Image source={{ uri: getStartedData.avatarUrl }} style={styles.doctorAvatar} />
415
- <View style={styles.getStartedInfo}>
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
- <Typography variant="caption" color={theme.textSecondary}>
420
- {getStartedData.subtitle}
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
- <Icon name="chevron-right" size={16} color={theme.textSecondary} />
424
- </View>
425
- </Card>
370
+ )}
426
371
 
427
- {/* Continue Learning Section */}
428
- {continueLearningHeader.show && (
429
- <View style={styles.sectionHeader}>
430
- <Typography variant="caption" bold color={theme.textSecondary} style={styles.sectionTitle}>
431
- {continueLearningHeader.title}
432
- </Typography>
433
- </View>
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
- <View style={styles.continueLearningList}>
437
- {continueLearningData.map((item) => (
438
- <TouchableOpacity
439
- key={item.id}
440
- activeOpacity={0.8}
441
- onPress={() => onPressContinueLearning?.(item.id)}
442
- >
443
- <Card bordered style={styles.continueLearningCard}>
444
- <View style={styles.continueLearningRow}>
445
- <View style={[styles.subjectIconBox, { backgroundColor: theme.secondary }]}>
446
- <Icon name={item.icon as IconName} size={20} color={theme.primary} />
447
- </View>
448
- <View style={styles.continueLearningInfo}>
449
- <View style={styles.continueLearningTextRow}>
450
- <Typography variant="h3" bold color={theme.textPrimary}>
451
- {item.title}
452
- </Typography>
453
- </View>
454
- <ProgressBar
455
- progress={item.progressPercentage / 100}
456
- color="#0891B2"
457
- height={6}
458
- style={styles.continueProgressBar}
459
- />
460
- <View style={styles.continueStatsRow}>
461
- <Typography variant="caption" color={theme.textSecondary}>
462
- {item.completedModules} / {item.totalModules} Modules
463
- </Typography>
464
- <Typography variant="caption" bold color={theme.textPrimary}>
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
- </View>
470
- </Card>
471
- </TouchableOpacity>
472
- ))}
473
- </View>
413
+ </TouchableOpacity>
414
+ )
415
+ })}
416
+ </View>
474
417
 
475
- {/* Referral Card Banner */}
476
- <Card style={styles.referralCard}>
477
- <View style={styles.referralRow}>
478
- <View style={styles.referralLeft}>
479
- <View style={styles.referralIconContainer}>
480
- <Icon name="share" size={16} color="#FFFFFF" />
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
- <TouchableOpacity
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: 10,
512
- backgroundColor: '#FFFFFF',
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: 32,
521
- height: 32,
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
- iconBtn: {
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: 10,
495
+ marginRight: 6,
552
496
  },
553
497
  badge: {
554
498
  position: 'absolute',
555
- top: -4,
556
- right: -4,
557
- width: 16,
558
- height: 16,
559
- borderRadius: 8,
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: 9,
565
- fontWeight: '700',
511
+ fontSize: 8,
512
+ fontWeight: 'bold',
566
513
  },
567
514
  profileContainer: {
568
- width: 36,
569
- height: 36,
570
- borderRadius: 18,
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
- paddingBottom: 32,
527
+ paddingVertical: 16,
528
+ paddingBottom: 40,
580
529
  },
581
- promoBanner: {
582
- flexDirection: 'row',
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
- qbankProgressRow: {
536
+ progressRow: {
616
537
  flexDirection: 'row',
617
538
  justifyContent: 'space-between',
618
539
  alignItems: 'center',
619
540
  marginBottom: 12,
620
541
  },
621
- qbankProgressTextContainer: {
542
+ progressTextContainer: {
622
543
  flex: 1,
623
544
  },
624
- percentageText: {
625
- fontSize: 24,
626
- lineHeight: 28,
545
+ percentageTextLarge: {
546
+ fontSize: 36,
547
+ lineHeight: 42,
627
548
  },
628
- qbankProgressBar: {
629
- marginTop: 4,
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
- marginTop: 8,
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
- padding: 14,
641
- borderRadius: 14,
642
- marginHorizontal: 4,
643
- },
644
- actionPillIconContainer: {
645
- width: 28,
646
- height: 28,
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
- actionPillText: {
654
- fontSize: 15,
594
+ actionPillTextCentered: {
595
+ flex: 1,
596
+ textAlign: 'center',
597
+ fontSize: 16,
598
+ },
599
+ chevronsRight: {
600
+ flexDirection: 'row',
655
601
  },
656
602
  sectionHeader: {
657
- marginTop: 12,
658
- marginBottom: 4,
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
- quickLinksScroll: {
665
- paddingVertical: 4,
615
+ quickLinksContainer: {
616
+ flexDirection: 'row',
617
+ justifyContent: 'space-between',
618
+ marginBottom: 16,
666
619
  },
667
- quickLinkItem: {
620
+ quickLinkBoxItem: {
668
621
  alignItems: 'center',
669
- marginRight: 20,
670
- width: 72,
622
+ flex: 1,
671
623
  },
672
- quickLinkCircle: {
673
- width: 48,
674
- height: 48,
675
- borderRadius: 24,
624
+ quickLinkRect: {
625
+ width: '90%',
626
+ aspectRatio: 0.8,
627
+ borderRadius: 16,
676
628
  justifyContent: 'center',
677
629
  alignItems: 'center',
678
- marginBottom: 6,
630
+ padding: 8,
679
631
  },
680
- quickLinkLabel: {
632
+ quickLinkLabelTwoLines: {
681
633
  textAlign: 'center',
682
634
  fontSize: 11,
635
+ lineHeight: 14,
636
+ marginTop: 8,
683
637
  },
684
- mcqCard: {
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: 12,
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: 12,
650
+ marginBottom: 16,
702
651
  },
703
652
  mcqOptionsList: {
704
653
  marginBottom: 8,
705
654
  },
706
- mcqOptionRow: {
655
+ mcqOptionBox: {
707
656
  flexDirection: 'row',
708
657
  alignItems: 'center',
709
- paddingVertical: 10,
710
- paddingHorizontal: 8,
658
+ paddingVertical: 14,
659
+ paddingHorizontal: 12,
711
660
  borderRadius: 8,
712
- marginBottom: 6,
661
+ borderWidth: 1,
662
+ marginBottom: 10,
713
663
  },
714
- mcqRadioOuter: {
715
- width: 18,
716
- height: 18,
717
- borderRadius: 9,
718
- borderWidth: 1.5,
664
+ mcqCheckCircle: {
665
+ width: 20,
666
+ height: 20,
667
+ borderRadius: 10,
668
+ borderWidth: 1,
719
669
  justifyContent: 'center',
720
670
  alignItems: 'center',
721
- marginRight: 10,
722
- },
723
- mcqRadioInner: {
724
- width: 10,
725
- height: 10,
726
- borderRadius: 5,
671
+ marginRight: 12,
727
672
  },
728
- mcqOptionText: {
729
- fontSize: 13,
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: 12,
737
- marginTop: 8,
738
- },
739
- getStartedCard: {
740
- padding: 12,
741
- borderRadius: 16,
681
+ paddingTop: 16,
742
682
  marginTop: 4,
743
- marginBottom: 4,
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
- doctorAvatar: {
750
- width: 44,
751
- height: 44,
752
- borderRadius: 22,
753
- marginRight: 12,
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
- continueLearningCard: {
762
- padding: 12,
763
- marginBottom: 6,
764
- borderRadius: 16,
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
- subjectIconBox: {
771
- width: 40,
772
- height: 40,
773
- borderRadius: 10,
736
+ continueIconBox: {
737
+ width: 48,
738
+ height: 48,
739
+ borderRadius: 12,
774
740
  justifyContent: 'center',
775
741
  alignItems: 'center',
776
- marginRight: 12,
742
+ marginRight: 16,
777
743
  },
778
744
  continueLearningInfo: {
779
745
  flex: 1,
780
746
  },
781
- continueLearningTextRow: {
782
- flexDirection: 'row',
783
- justifyContent: 'space-between',
784
- alignItems: 'center',
785
- marginBottom: 6,
747
+ progressBarBgMockup: {
748
+ height: 6,
749
+ backgroundColor: '#F1F5F9',
750
+ borderRadius: 3,
751
+ marginBottom: 8,
752
+ width: '100%',
753
+ overflow: 'hidden',
786
754
  },
787
- continueProgressBar: {
788
- height: 4,
789
- marginBottom: 6,
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
- referralCard: {
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
- flex: 1,
811
- paddingRight: 12,
767
+ backgroundColor: '#FCD34D',
768
+ padding: 16,
769
+ borderRadius: 12,
812
770
  },
813
- referralIconContainer: {
814
- width: 28,
815
- height: 28,
816
- borderRadius: 14,
817
- backgroundColor: '#EA580C', // Orange sharing accent
771
+ referralIconCircle: {
772
+ width: 40,
773
+ height: 40,
774
+ borderRadius: 20,
775
+ backgroundColor: '#F59E0B',
818
776
  justifyContent: 'center',
819
777
  alignItems: 'center',
820
- marginRight: 10,
778
+ marginRight: 12,
821
779
  },
822
- referralText: {
823
- fontSize: 12,
824
- lineHeight: 16,
780
+ referralTextCol: {
825
781
  flex: 1,
782
+ paddingRight: 12,
826
783
  },
827
- referralButton: {
784
+ shareAppBtnWhite: {
828
785
  backgroundColor: '#FFFFFF',
829
786
  paddingHorizontal: 12,
830
- paddingVertical: 6,
831
- borderRadius: 12,
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
  });