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.
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 +665 -650
  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 +461 -522
  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" 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
- <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={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
- 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={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
- <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={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
- <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: 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
- </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,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: 10,
512
- backgroundColor: '#FFFFFF',
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: 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
- marginRight: 10,
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
- 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,
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: '700',
513
+ fontWeight: 'bold',
514
+ lineHeight: 11,
566
515
  },
567
516
  profileContainer: {
568
- width: 36,
569
- height: 36,
570
- borderRadius: 18,
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
- paddingBottom: 32,
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
- qbankProgressCard: {
610
- padding: 16,
611
- marginTop: 8,
612
- marginBottom: 4,
613
- borderRadius: 16,
532
+ progressContainer: {
533
+ backgroundColor: '#E8F5E9',
534
+ padding: 12,
535
+ borderRadius: 12,
536
+ marginBottom: 16,
614
537
  },
615
- qbankProgressRow: {
538
+ progressRow: {
616
539
  flexDirection: 'row',
617
540
  justifyContent: 'space-between',
618
541
  alignItems: 'center',
619
542
  marginBottom: 12,
620
543
  },
621
- qbankProgressTextContainer: {
544
+ progressTextContainer: {
622
545
  flex: 1,
623
546
  },
624
- percentageText: {
625
- fontSize: 24,
626
- lineHeight: 28,
547
+ percentageTextLarge: {
548
+ fontSize: 32,
549
+ lineHeight: 38,
627
550
  },
628
- qbankProgressBar: {
629
- marginTop: 4,
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
- marginTop: 8,
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
- padding: 14,
641
- borderRadius: 14,
642
- marginHorizontal: 4,
586
+ width: '100%',
643
587
  },
644
- actionPillIconContainer: {
588
+ actionPillIconLeft: {
645
589
  width: 28,
646
590
  height: 28,
647
591
  borderRadius: 14,
648
- backgroundColor: '#FFFFFF',
592
+ backgroundColor: 'rgba(255,255,255,0.25)',
649
593
  justifyContent: 'center',
650
594
  alignItems: 'center',
651
- marginRight: 10,
652
595
  },
653
- actionPillText: {
654
- fontSize: 15,
596
+ actionPillTextCentered: {
597
+ flex: 1,
598
+ textAlign: 'center',
599
+ fontSize: 16,
600
+ },
601
+ chevronsRight: {
602
+ flexDirection: 'row',
655
603
  },
656
604
  sectionHeader: {
657
- marginTop: 12,
658
- marginBottom: 4,
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
- quickLinksScroll: {
665
- paddingVertical: 4,
617
+ quickLinksContainer: {
618
+ flexDirection: 'row',
619
+ justifyContent: 'space-between',
620
+ marginBottom: 16,
666
621
  },
667
- quickLinkItem: {
622
+ quickLinkBoxItem: {
668
623
  alignItems: 'center',
669
- marginRight: 20,
670
- width: 72,
624
+ flex: 1,
671
625
  },
672
- quickLinkCircle: {
673
- width: 48,
674
- height: 48,
675
- borderRadius: 24,
626
+ quickLinkRect: {
627
+ width: '90%',
628
+ aspectRatio: 0.8,
629
+ borderRadius: 16,
676
630
  justifyContent: 'center',
677
631
  alignItems: 'center',
678
- marginBottom: 6,
632
+ padding: 8,
679
633
  },
680
- quickLinkLabel: {
634
+ quickLinkLabelTwoLines: {
681
635
  textAlign: 'center',
682
636
  fontSize: 11,
637
+ lineHeight: 14,
638
+ marginTop: 8,
683
639
  },
684
- mcqCard: {
685
- padding: 16,
686
- borderRadius: 16,
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: 12,
644
+ marginBottom: 16,
645
+ borderWidth: 1,
646
+ borderColor: '#E2E8F0',
696
647
  },
697
648
  mcqQuestion: {
698
- fontSize: 14,
699
- lineHeight: 20,
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
- mcqOptionRow: {
657
+ mcqOptionBox: {
707
658
  flexDirection: 'row',
708
659
  alignItems: 'center',
709
660
  paddingVertical: 10,
710
- paddingHorizontal: 8,
661
+ paddingHorizontal: 10,
711
662
  borderRadius: 8,
712
- marginBottom: 6,
663
+ borderWidth: 1,
664
+ marginBottom: 8,
713
665
  },
714
- mcqRadioOuter: {
715
- width: 18,
716
- height: 18,
717
- borderRadius: 9,
718
- borderWidth: 1.5,
666
+ mcqCheckCircle: {
667
+ width: 20,
668
+ height: 20,
669
+ borderRadius: 10,
670
+ borderWidth: 1,
719
671
  justifyContent: 'center',
720
672
  alignItems: 'center',
721
- marginRight: 10,
722
- },
723
- mcqRadioInner: {
724
- width: 10,
725
- height: 10,
726
- borderRadius: 5,
673
+ marginRight: 12,
727
674
  },
728
- mcqOptionText: {
729
- fontSize: 13,
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: 8,
684
+ marginTop: 4,
738
685
  },
739
- getStartedCard: {
686
+ getStartedCardMockup: {
687
+ backgroundColor: '#FFFFFF',
740
688
  padding: 12,
741
- borderRadius: 16,
742
- marginTop: 4,
743
- marginBottom: 4,
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
- doctorAvatar: {
750
- width: 44,
751
- height: 44,
752
- borderRadius: 22,
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
- continueLearningCard: {
726
+ continueCardMockup: {
727
+ backgroundColor: '#FFFFFF',
762
728
  padding: 12,
763
- marginBottom: 6,
764
- borderRadius: 16,
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
- subjectIconBox: {
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
- continueLearningTextRow: {
782
- flexDirection: 'row',
783
- justifyContent: 'space-between',
784
- alignItems: 'center',
785
- marginBottom: 6,
749
+ progressBarBgMockup: {
750
+ height: 6,
751
+ backgroundColor: '#F1F5F9',
752
+ borderRadius: 3,
753
+ marginBottom: 8,
754
+ width: '100%',
755
+ overflow: 'hidden',
786
756
  },
787
- continueProgressBar: {
788
- height: 4,
789
- marginBottom: 6,
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
- 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: {
766
+ referralBannerMockup: {
808
767
  flexDirection: 'row',
809
768
  alignItems: 'center',
810
- flex: 1,
811
- paddingRight: 12,
769
+ backgroundColor: '#FCD34D',
770
+ padding: 12,
771
+ borderRadius: 12,
812
772
  },
813
- referralIconContainer: {
814
- width: 28,
815
- height: 28,
816
- borderRadius: 14,
817
- backgroundColor: '#EA580C', // Orange sharing accent
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
- referralText: {
823
- fontSize: 12,
824
- lineHeight: 16,
782
+ referralTextCol: {
825
783
  flex: 1,
784
+ paddingRight: 12,
826
785
  },
827
- referralButton: {
786
+ shareAppBtnWhite: {
828
787
  backgroundColor: '#FFFFFF',
829
788
  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,
789
+ paddingVertical: 8,
790
+ borderRadius: 8,
852
791
  },
853
792
  });