react-native-elearn-ui 0.1.9 → 0.1.11

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 (52) 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 +2 -1
  4. package/lib/module/screens/HomeScreen.js.map +1 -1
  5. package/lib/module/screens/PearlChaptersScreen.js +359 -0
  6. package/lib/module/screens/PearlChaptersScreen.js.map +1 -0
  7. package/lib/module/screens/PearlReaderScreen.js +313 -0
  8. package/lib/module/screens/PearlReaderScreen.js.map +1 -0
  9. package/lib/module/screens/PearlsScreen.js +43 -631
  10. package/lib/module/screens/PearlsScreen.js.map +1 -1
  11. package/lib/module/screens/QbankScreen.js +2 -1
  12. package/lib/module/screens/QbankScreen.js.map +1 -1
  13. package/lib/module/screens/QuestionScreen.js +2 -1
  14. package/lib/module/screens/QuestionScreen.js.map +1 -1
  15. package/lib/module/screens/QuizStartScreen.js +2 -1
  16. package/lib/module/screens/QuizStartScreen.js.map +1 -1
  17. package/lib/module/screens/ResultScreen.js +2 -1
  18. package/lib/module/screens/ResultScreen.js.map +1 -1
  19. package/lib/module/screens/TopicListScreen.js +2 -1
  20. package/lib/module/screens/TopicListScreen.js.map +1 -1
  21. package/lib/module/screens/index.js +2 -0
  22. package/lib/module/screens/index.js.map +1 -1
  23. package/lib/module/screens/pearlsMockData.js +77 -0
  24. package/lib/module/screens/pearlsMockData.js.map +1 -0
  25. package/lib/typescript/src/index.d.ts +1 -1
  26. package/lib/typescript/src/index.d.ts.map +1 -1
  27. package/lib/typescript/src/screens/PearlChaptersScreen.d.ts +13 -0
  28. package/lib/typescript/src/screens/PearlChaptersScreen.d.ts.map +1 -0
  29. package/lib/typescript/src/screens/PearlReaderScreen.d.ts +14 -0
  30. package/lib/typescript/src/screens/PearlReaderScreen.d.ts.map +1 -0
  31. package/lib/typescript/src/screens/PearlsScreen.d.ts +3 -0
  32. package/lib/typescript/src/screens/PearlsScreen.d.ts.map +1 -1
  33. package/lib/typescript/src/screens/index.d.ts +2 -0
  34. package/lib/typescript/src/screens/index.d.ts.map +1 -1
  35. package/lib/typescript/src/screens/pearlsMockData.d.ts +3 -0
  36. package/lib/typescript/src/screens/pearlsMockData.d.ts.map +1 -0
  37. package/lib/typescript/src/types/index.d.ts +15 -0
  38. package/lib/typescript/src/types/index.d.ts.map +1 -1
  39. package/package.json +3 -1
  40. package/src/index.tsx +2 -0
  41. package/src/screens/HomeScreen.tsx +1 -1
  42. package/src/screens/PearlChaptersScreen.tsx +330 -0
  43. package/src/screens/PearlReaderScreen.tsx +306 -0
  44. package/src/screens/PearlsScreen.tsx +30 -603
  45. package/src/screens/QbankScreen.tsx +1 -1
  46. package/src/screens/QuestionScreen.tsx +1 -1
  47. package/src/screens/QuizStartScreen.tsx +1 -1
  48. package/src/screens/ResultScreen.tsx +1 -1
  49. package/src/screens/TopicListScreen.tsx +1 -1
  50. package/src/screens/index.ts +2 -0
  51. package/src/screens/pearlsMockData.ts +70 -0
  52. package/src/types/index.ts +17 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PearlChaptersScreen.d.ts","sourceRoot":"","sources":["../../../../src/screens/PearlChaptersScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAcxC,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAU,CAAC;AAIzD,UAAU,wBAAwB;IAChC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAmLlE,CAAC"}
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import type { PearlTopic, PearlChapter } from '../types/index.js';
3
+ interface PearlReaderScreenProps {
4
+ topic?: PearlTopic;
5
+ topicId?: string;
6
+ chapter?: PearlChapter;
7
+ chapterId?: string;
8
+ onBack: () => void;
9
+ hideHeader?: boolean;
10
+ title?: string;
11
+ }
12
+ export declare const PearlReaderScreen: React.FC<PearlReaderScreenProps>;
13
+ export {};
14
+ //# sourceMappingURL=PearlReaderScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PearlReaderScreen.d.ts","sourceRoot":"","sources":["../../../../src/screens/PearlReaderScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAYxC,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAU,CAAC;AAEzD,UAAU,sBAAsB;IAC9B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CA8K9D,CAAC"}
@@ -1,7 +1,10 @@
1
1
  import React from 'react';
2
+ import type { PearlTopic } from '../types/index.js';
2
3
  interface PearlsScreenProps {
3
4
  onBack?: () => void;
4
5
  hideHeader?: boolean;
6
+ onSelectTopic?: (topic: PearlTopic) => void;
7
+ title?: string;
5
8
  }
6
9
  export declare const PearlsScreen: React.FC<PearlsScreenProps>;
7
10
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"PearlsScreen.d.ts","sourceRoot":"","sources":["../../../../src/screens/PearlsScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAiBxC,UAAU,iBAAiB;IACzB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AA0FD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA+WpD,CAAC"}
1
+ {"version":3,"file":"PearlsScreen.d.ts","sourceRoot":"","sources":["../../../../src/screens/PearlsScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAU,CAAC;AAE3C,UAAU,iBAAiB;IACzB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAqEpD,CAAC"}
@@ -5,4 +5,6 @@ export { QuizStartScreen } from './QuizStartScreen.js';
5
5
  export { QuestionScreen } from './QuestionScreen.js';
6
6
  export { ResultScreen } from './ResultScreen.js';
7
7
  export { PearlsScreen } from './PearlsScreen.js';
8
+ export { PearlChaptersScreen } from './PearlChaptersScreen.js';
9
+ export { PearlReaderScreen } from './PearlReaderScreen.js';
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/screens/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/screens/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAgB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAqB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PearlTopic } from '../types/index.js';
2
+ export declare const MOCK_PEARLS_TOPICS: PearlTopic[];
3
+ //# sourceMappingURL=pearlsMockData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pearlsMockData.d.ts","sourceRoot":"","sources":["../../../../src/screens/pearlsMockData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAU,CAAC;AAE3C,eAAO,MAAM,kBAAkB,EAAE,UAAU,EAmE1C,CAAC"}
@@ -183,4 +183,19 @@ export interface HomeScreenParams {
183
183
  };
184
184
  };
185
185
  }
186
+ export interface PearlChapter {
187
+ id: string;
188
+ number: number;
189
+ title: string;
190
+ isFree?: boolean;
191
+ isLocked?: boolean;
192
+ bullets: string[];
193
+ }
194
+ export interface PearlTopic {
195
+ id: string;
196
+ title: string;
197
+ sections?: {
198
+ [sectionName: string]: PearlChapter[];
199
+ };
200
+ }
186
201
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-elearn-ui",
3
- "version": "0.1.9",
3
+ "version": "0.1.11",
4
4
  "description": "Enterprise E-Learning UI library for React Native",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -72,6 +72,7 @@
72
72
  "react": "19.2.0",
73
73
  "react-native": "0.83.6",
74
74
  "react-native-builder-bob": "^0.43.0",
75
+ "react-native-safe-area-context": "^4.14.1",
75
76
  "react-native-svg": "*",
76
77
  "turbo": "^2.9.16",
77
78
  "typescript": "^6.0.3"
@@ -79,6 +80,7 @@
79
80
  "peerDependencies": {
80
81
  "react": "*",
81
82
  "react-native": "*",
83
+ "react-native-safe-area-context": "^4.12.0",
82
84
  "react-native-svg": "*"
83
85
  },
84
86
  "workspaces": [
package/src/index.tsx CHANGED
@@ -31,4 +31,6 @@ export {
31
31
  QuestionScreen,
32
32
  ResultScreen,
33
33
  PearlsScreen,
34
+ PearlChaptersScreen,
35
+ PearlReaderScreen,
34
36
  } from './screens';
@@ -4,11 +4,11 @@ import {
4
4
  ScrollView,
5
5
  StyleSheet,
6
6
  TouchableOpacity,
7
- SafeAreaView,
8
7
  StatusBar,
9
8
  Image,
10
9
  Dimensions,
11
10
  } from 'react-native';
11
+ import { SafeAreaView } from 'react-native-safe-area-context';
12
12
  import { useTheme } from '../context/ThemeContext';
13
13
  import { Typography, Card, ProgressBar, Icon } from '../components';
14
14
  import type { IconName } from '../components';
@@ -0,0 +1,330 @@
1
+ import React, { useState } from 'react';
2
+ import {
3
+ View,
4
+ ScrollView,
5
+ StyleSheet,
6
+ TouchableOpacity,
7
+ StatusBar,
8
+ Modal,
9
+ Dimensions,
10
+ } from 'react-native';
11
+ import { SafeAreaView } from 'react-native-safe-area-context';
12
+ import { useTheme } from '../context/ThemeContext';
13
+ import { Typography, Card, Icon } from '../components';
14
+ import { MOCK_PEARLS_TOPICS } from './pearlsMockData';
15
+ import type { PearlTopic, PearlChapter } from '../types';
16
+
17
+ const { height: SCREEN_HEIGHT } = Dimensions.get('window');
18
+
19
+ interface PearlChaptersScreenProps {
20
+ topic?: PearlTopic;
21
+ topicId?: string;
22
+ onBack: () => void;
23
+ hideHeader?: boolean;
24
+ onSelectChapter?: (topic: PearlTopic, chapter: PearlChapter) => void;
25
+ title?: string;
26
+ }
27
+
28
+ export const PearlChaptersScreen: React.FC<PearlChaptersScreenProps> = ({
29
+ topic,
30
+ topicId,
31
+ onBack,
32
+ hideHeader = false,
33
+ onSelectChapter,
34
+ title = 'Pearls',
35
+ }) => {
36
+ const theme = useTheme();
37
+ const [bottomSheetVisible, setBottomSheetVisible] = useState(false);
38
+
39
+ const activeTopic = topic || MOCK_PEARLS_TOPICS.find((t) => t.id === topicId);
40
+
41
+ if (!activeTopic) {
42
+ return (
43
+ <SafeAreaView style={[styles.safeArea, { backgroundColor: theme.background }]}>
44
+ <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center', padding: 20 }}>
45
+ <Typography variant="h2" bold style={{ marginBottom: 12 }}>Topic not found</Typography>
46
+ <TouchableOpacity
47
+ onPress={onBack}
48
+ style={{
49
+ paddingHorizontal: 20,
50
+ paddingVertical: 10,
51
+ borderRadius: 8,
52
+ backgroundColor: theme.primary,
53
+ }}
54
+ >
55
+ <Typography variant="body" bold color="#FFFFFF">Go Back</Typography>
56
+ </TouchableOpacity>
57
+ </View>
58
+ </SafeAreaView>
59
+ );
60
+ }
61
+
62
+ const sections = Object.keys(activeTopic.sections || {});
63
+
64
+ // --- Render bottom sheet overlay for topics filter ---
65
+ const renderBottomSheet = () => {
66
+ const list = [
67
+ { name: 'Vertebral Curves', count: 25 },
68
+ { name: 'Introduction', count: 15 },
69
+ { name: 'Definition and scope', count: 15 },
70
+ { name: 'Branches of anatomy', count: 5 },
71
+ { name: 'Anatomical terminology', count: 23 },
72
+ { name: 'Anatomical positions', count: 25 },
73
+ { name: 'CSF', count: 15 },
74
+ { name: 'Levels of structural organization', count: 15 },
75
+ { name: 'Systems of the human body overview', count: 5 },
76
+ { name: 'Tissue types', count: 23 },
77
+ ];
78
+
79
+ return (
80
+ <Modal
81
+ visible={bottomSheetVisible}
82
+ transparent
83
+ animationType="slide"
84
+ onRequestClose={() => setBottomSheetVisible(false)}
85
+ >
86
+ <View style={styles.sheetOverlay}>
87
+ {/* Backdrop click closer */}
88
+ <TouchableOpacity
89
+ activeOpacity={1}
90
+ style={styles.sheetBackdrop}
91
+ onPress={() => setBottomSheetVisible(false)}
92
+ />
93
+
94
+ <View style={styles.sheetContent}>
95
+ {/* Grabber indicator bar */}
96
+ <View style={styles.sheetGrabber} />
97
+
98
+ <View style={styles.sheetHeader}>
99
+ <Typography variant="h2" bold color={theme.textPrimary}>
100
+ {activeTopic.title}
101
+ </Typography>
102
+ </View>
103
+
104
+ <ScrollView contentContainerStyle={styles.sheetScroll}>
105
+ {list.map((item, idx) => (
106
+ <TouchableOpacity
107
+ key={idx}
108
+ style={styles.sheetItemRow}
109
+ onPress={() => {
110
+ setBottomSheetVisible(false);
111
+ }}
112
+ >
113
+ <Typography variant="body" color={theme.textPrimary}>
114
+ {item.name}
115
+ </Typography>
116
+ <Typography variant="caption" color={theme.textSecondary}>
117
+ {item.count} Modules
118
+ </Typography>
119
+ </TouchableOpacity>
120
+ ))}
121
+ </ScrollView>
122
+ </View>
123
+ </View>
124
+ </Modal>
125
+ );
126
+ };
127
+
128
+ return (
129
+ <SafeAreaView style={[styles.safeArea, { backgroundColor: theme.background }]}>
130
+ <StatusBar barStyle="dark-content" />
131
+
132
+ {/* Header */}
133
+ {!hideHeader && (
134
+ <View style={styles.header}>
135
+ <TouchableOpacity onPress={onBack} style={styles.backButton}>
136
+ <Icon name="arrow-left" size={20} color={theme.textPrimary} />
137
+ </TouchableOpacity>
138
+
139
+ <Typography variant="h2" bold style={styles.headerTitle}>
140
+ {title}
141
+ </Typography>
142
+
143
+ <TouchableOpacity onPress={() => setBottomSheetVisible(true)} style={styles.headerRightBtn}>
144
+ <Icon name="list" size={20} color={theme.textPrimary} />
145
+ </TouchableOpacity>
146
+ </View>
147
+ )}
148
+
149
+ {/* Chapters list view */}
150
+ <ScrollView contentContainerStyle={styles.scrollContent} showsVerticalScrollIndicator={false}>
151
+ {sections.map((sectionName) => {
152
+ const list = activeTopic.sections?.[sectionName] || [];
153
+ return (
154
+ <View key={sectionName} style={styles.sectionBlock}>
155
+ <Typography variant="h2" bold color={theme.textPrimary} style={styles.sectionHeading}>
156
+ {sectionName}
157
+ </Typography>
158
+
159
+ <View style={styles.chaptersList}>
160
+ {list.map((chapter) => (
161
+ <TouchableOpacity
162
+ key={chapter.id}
163
+ activeOpacity={0.8}
164
+ onPress={() => onSelectChapter?.(activeTopic, chapter)}
165
+ disabled={chapter.isLocked}
166
+ >
167
+ <Card bordered style={styles.chapterCard}>
168
+ <View style={styles.chapterRow}>
169
+ {/* Left sequential index */}
170
+ <Typography variant="body" bold color={theme.textSecondary} style={styles.chapterNumber}>
171
+ {chapter.number}
172
+ </Typography>
173
+
174
+ {/* Middle Text */}
175
+ <Typography variant="body" color={theme.textPrimary} style={styles.chapterTitle}>
176
+ {chapter.title}
177
+ </Typography>
178
+
179
+ {/* Right locks/free badges */}
180
+ <View style={styles.chapterBadgeCol}>
181
+ {chapter.isFree ? (
182
+ <View style={[styles.freeBadge, { borderColor: theme.primary }]}>
183
+ <Typography variant="caption" bold color={theme.primary} style={styles.freeText}>
184
+ FREE
185
+ </Typography>
186
+ </View>
187
+ ) : chapter.isLocked ? (
188
+ <View style={styles.lockCircle}>
189
+ <Icon name="lock" size={12} color={theme.textSecondary} />
190
+ </View>
191
+ ) : null}
192
+ </View>
193
+ </View>
194
+ </Card>
195
+ </TouchableOpacity>
196
+ ))}
197
+ </View>
198
+ </View>
199
+ );
200
+ })}
201
+ </ScrollView>
202
+
203
+ {/* Bottom Filter Sheet */}
204
+ {renderBottomSheet()}
205
+ </SafeAreaView>
206
+ );
207
+ };
208
+
209
+ const styles = StyleSheet.create({
210
+ safeArea: {
211
+ flex: 1,
212
+ },
213
+ header: {
214
+ flexDirection: 'row',
215
+ justifyContent: 'space-between',
216
+ alignItems: 'center',
217
+ paddingHorizontal: 16,
218
+ paddingVertical: 12,
219
+ },
220
+ backButton: {
221
+ padding: 6,
222
+ },
223
+ headerTitle: {
224
+ fontSize: 18,
225
+ fontWeight: '700',
226
+ },
227
+ headerRightBtn: {
228
+ padding: 6,
229
+ },
230
+ scrollContent: {
231
+ paddingHorizontal: 16,
232
+ paddingTop: 8,
233
+ paddingBottom: 24,
234
+ },
235
+ sectionBlock: {
236
+ marginBottom: 20,
237
+ },
238
+ sectionHeading: {
239
+ fontSize: 16,
240
+ marginBottom: 12,
241
+ },
242
+ chaptersList: {
243
+ marginTop: 2,
244
+ },
245
+ chapterCard: {
246
+ padding: 12,
247
+ marginBottom: 10,
248
+ borderRadius: 12,
249
+ },
250
+ chapterRow: {
251
+ flexDirection: 'row',
252
+ alignItems: 'center',
253
+ },
254
+ chapterNumber: {
255
+ fontSize: 14,
256
+ width: 24,
257
+ textAlign: 'center',
258
+ marginRight: 8,
259
+ },
260
+ chapterTitle: {
261
+ flex: 1,
262
+ fontSize: 14,
263
+ lineHeight: 18,
264
+ },
265
+ chapterBadgeCol: {
266
+ justifyContent: 'center',
267
+ alignItems: 'flex-end',
268
+ marginLeft: 8,
269
+ },
270
+ freeBadge: {
271
+ borderWidth: 1.5,
272
+ borderRadius: 6,
273
+ paddingHorizontal: 8,
274
+ paddingVertical: 3,
275
+ },
276
+ freeText: {
277
+ fontSize: 9,
278
+ },
279
+ lockCircle: {
280
+ width: 20,
281
+ height: 20,
282
+ borderRadius: 10,
283
+ backgroundColor: '#F1F5F9',
284
+ justifyContent: 'center',
285
+ alignItems: 'center',
286
+ },
287
+ // Bottom Sheet styling
288
+ sheetOverlay: {
289
+ flex: 1,
290
+ backgroundColor: 'rgba(0, 0, 0, 0.4)',
291
+ justifyContent: 'flex-end',
292
+ },
293
+ sheetBackdrop: {
294
+ ...StyleSheet.absoluteFillObject,
295
+ },
296
+ sheetContent: {
297
+ backgroundColor: '#FFFFFF',
298
+ borderTopLeftRadius: 20,
299
+ borderTopRightRadius: 20,
300
+ maxHeight: SCREEN_HEIGHT * 0.7,
301
+ paddingBottom: 20,
302
+ },
303
+ sheetGrabber: {
304
+ width: 40,
305
+ height: 4,
306
+ backgroundColor: '#E2E8F0',
307
+ borderRadius: 2,
308
+ alignSelf: 'center',
309
+ marginTop: 8,
310
+ marginBottom: 16,
311
+ },
312
+ sheetHeader: {
313
+ paddingHorizontal: 20,
314
+ paddingBottom: 12,
315
+ borderBottomWidth: 1,
316
+ borderBottomColor: '#F1F5F9',
317
+ },
318
+ sheetScroll: {
319
+ paddingHorizontal: 20,
320
+ paddingVertical: 8,
321
+ },
322
+ sheetItemRow: {
323
+ flexDirection: 'row',
324
+ justifyContent: 'space-between',
325
+ alignItems: 'center',
326
+ paddingVertical: 14,
327
+ borderBottomWidth: 1,
328
+ borderBottomColor: '#F8FAFC',
329
+ },
330
+ });