react-native-salespanda 0.4.2 → 0.4.3

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 (171) hide show
  1. package/lib/module/SalespandaApp.js +11 -37
  2. package/lib/module/SalespandaApp.js.map +1 -1
  3. package/lib/module/components/BottomSheet.js +141 -0
  4. package/lib/module/components/BottomSheet.js.map +1 -0
  5. package/lib/module/components/ContactViaModal.js +68 -0
  6. package/lib/module/components/ContactViaModal.js.map +1 -0
  7. package/lib/module/components/ScreenHeader.js +63 -0
  8. package/lib/module/components/ScreenHeader.js.map +1 -0
  9. package/lib/module/components/SearchBar.js +57 -0
  10. package/lib/module/components/SearchBar.js.map +1 -0
  11. package/lib/module/components/TabsHeader.js +80 -0
  12. package/lib/module/components/TabsHeader.js.map +1 -0
  13. package/lib/module/components/index.js +8 -0
  14. package/lib/module/components/index.js.map +1 -0
  15. package/lib/module/constants/Colors.js +3 -2
  16. package/lib/module/constants/Colors.js.map +1 -1
  17. package/lib/module/index.js +6 -4
  18. package/lib/module/index.js.map +1 -1
  19. package/lib/module/navigation/AppNavigator.js +5 -4
  20. package/lib/module/navigation/AppNavigator.js.map +1 -1
  21. package/lib/module/navigation/BottomTabNavigator.js +42 -23
  22. package/lib/module/navigation/BottomTabNavigator.js.map +1 -1
  23. package/lib/module/navigation/DrawerNavigator.js +36 -34
  24. package/lib/module/navigation/DrawerNavigator.js.map +1 -1
  25. package/lib/module/navigation/StackNavigator.js +23 -0
  26. package/lib/module/navigation/StackNavigator.js.map +1 -0
  27. package/lib/module/screens/CRM/AddContactModal.js +49 -0
  28. package/lib/module/screens/CRM/AddContactModal.js.map +1 -0
  29. package/lib/module/screens/CRM/CategoryTabs.js +70 -0
  30. package/lib/module/screens/CRM/CategoryTabs.js.map +1 -0
  31. package/lib/module/screens/CRM/ContactItem.js +168 -0
  32. package/lib/module/screens/CRM/ContactItem.js.map +1 -0
  33. package/lib/module/screens/CRM/FilterDropdown.js +39 -0
  34. package/lib/module/screens/CRM/FilterDropdown.js.map +1 -0
  35. package/lib/module/screens/CRM/FunnelChart.js +105 -0
  36. package/lib/module/screens/CRM/FunnelChart.js.map +1 -0
  37. package/lib/module/screens/CRM/InfoCard.js +56 -0
  38. package/lib/module/screens/CRM/InfoCard.js.map +1 -0
  39. package/lib/module/screens/CRM/LeadCard.js +76 -0
  40. package/lib/module/screens/CRM/LeadCard.js.map +1 -0
  41. package/lib/module/screens/CRM/LogCallScreen.js +271 -0
  42. package/lib/module/screens/CRM/LogCallScreen.js.map +1 -0
  43. package/lib/module/screens/CRM/TopTabs.js +63 -0
  44. package/lib/module/screens/CRM/TopTabs.js.map +1 -0
  45. package/lib/module/screens/CRM/index.js +13 -0
  46. package/lib/module/screens/CRM/index.js.map +1 -0
  47. package/lib/module/screens/ReportsScreen.js +6 -4
  48. package/lib/module/screens/ReportsScreen.js.map +1 -1
  49. package/lib/module/screens/Tabs/ActivityAnalytics.js +29 -0
  50. package/lib/module/screens/Tabs/ActivityAnalytics.js.map +1 -0
  51. package/lib/module/screens/Tabs/CRMScreen.js +316 -0
  52. package/lib/module/screens/Tabs/CRMScreen.js.map +1 -0
  53. package/lib/module/screens/Tabs/DigitalDiary.js +39 -0
  54. package/lib/module/screens/Tabs/DigitalDiary.js.map +1 -0
  55. package/lib/module/screens/Tabs/HomeScreen.js +240 -0
  56. package/lib/module/screens/Tabs/HomeScreen.js.map +1 -0
  57. package/lib/module/screens/Tabs/NotificationsScreen.js +29 -0
  58. package/lib/module/screens/Tabs/NotificationsScreen.js.map +1 -0
  59. package/lib/module/screens/contentliberary/contentliberary.js +283 -0
  60. package/lib/module/screens/contentliberary/contentliberary.js.map +1 -0
  61. package/lib/typescript/src/SalespandaApp.d.ts +2 -2
  62. package/lib/typescript/src/SalespandaApp.d.ts.map +1 -1
  63. package/lib/typescript/src/components/BottomSheet.d.ts +16 -0
  64. package/lib/typescript/src/components/BottomSheet.d.ts.map +1 -0
  65. package/lib/typescript/src/components/ContactViaModal.d.ts +13 -0
  66. package/lib/typescript/src/components/ContactViaModal.d.ts.map +1 -0
  67. package/lib/typescript/src/components/ScreenHeader.d.ts +8 -0
  68. package/lib/typescript/src/components/ScreenHeader.d.ts.map +1 -0
  69. package/lib/typescript/src/components/SearchBar.d.ts +8 -0
  70. package/lib/typescript/src/components/SearchBar.d.ts.map +1 -0
  71. package/lib/typescript/src/components/TabsHeader.d.ts +8 -0
  72. package/lib/typescript/src/components/TabsHeader.d.ts.map +1 -0
  73. package/lib/typescript/src/components/index.d.ts +5 -0
  74. package/lib/typescript/src/components/index.d.ts.map +1 -0
  75. package/lib/typescript/src/constants/Colors.d.ts +2 -1
  76. package/lib/typescript/src/constants/Colors.d.ts.map +1 -1
  77. package/lib/typescript/src/index.d.ts +4 -4
  78. package/lib/typescript/src/index.d.ts.map +1 -1
  79. package/lib/typescript/src/navigation/AppNavigator.d.ts +2 -1
  80. package/lib/typescript/src/navigation/AppNavigator.d.ts.map +1 -1
  81. package/lib/typescript/src/navigation/BottomTabNavigator.d.ts +9 -1
  82. package/lib/typescript/src/navigation/BottomTabNavigator.d.ts.map +1 -1
  83. package/lib/typescript/src/navigation/DrawerNavigator.d.ts +3 -1
  84. package/lib/typescript/src/navigation/DrawerNavigator.d.ts.map +1 -1
  85. package/lib/typescript/src/navigation/StackNavigator.d.ts +13 -0
  86. package/lib/typescript/src/navigation/StackNavigator.d.ts.map +1 -0
  87. package/lib/typescript/src/screens/CRM/AddContactModal.d.ts +11 -0
  88. package/lib/typescript/src/screens/CRM/AddContactModal.d.ts.map +1 -0
  89. package/lib/typescript/src/screens/CRM/CategoryTabs.d.ts +7 -0
  90. package/lib/typescript/src/screens/CRM/CategoryTabs.d.ts.map +1 -0
  91. package/lib/typescript/src/screens/CRM/ContactItem.d.ts +19 -0
  92. package/lib/typescript/src/screens/CRM/ContactItem.d.ts.map +1 -0
  93. package/lib/typescript/src/screens/CRM/FilterDropdown.d.ts +6 -0
  94. package/lib/typescript/src/screens/CRM/FilterDropdown.d.ts.map +1 -0
  95. package/lib/typescript/src/screens/CRM/FunnelChart.d.ts +17 -0
  96. package/lib/typescript/src/screens/CRM/FunnelChart.d.ts.map +1 -0
  97. package/lib/typescript/src/screens/CRM/InfoCard.d.ts +7 -0
  98. package/lib/typescript/src/screens/CRM/InfoCard.d.ts.map +1 -0
  99. package/lib/typescript/src/screens/CRM/LeadCard.d.ts +9 -0
  100. package/lib/typescript/src/screens/CRM/LeadCard.d.ts.map +1 -0
  101. package/lib/typescript/src/screens/CRM/LogCallScreen.d.ts +12 -0
  102. package/lib/typescript/src/screens/CRM/LogCallScreen.d.ts.map +1 -0
  103. package/lib/typescript/src/screens/CRM/TopTabs.d.ts +12 -0
  104. package/lib/typescript/src/screens/CRM/TopTabs.d.ts.map +1 -0
  105. package/lib/typescript/src/screens/CRM/index.d.ts +10 -0
  106. package/lib/typescript/src/screens/CRM/index.d.ts.map +1 -0
  107. package/lib/typescript/src/screens/ReportsScreen.d.ts +2 -1
  108. package/lib/typescript/src/screens/ReportsScreen.d.ts.map +1 -1
  109. package/lib/typescript/src/screens/Tabs/ActivityAnalytics.d.ts +3 -0
  110. package/lib/typescript/src/screens/Tabs/ActivityAnalytics.d.ts.map +1 -0
  111. package/lib/typescript/src/screens/Tabs/CRMScreen.d.ts +3 -0
  112. package/lib/typescript/src/screens/Tabs/CRMScreen.d.ts.map +1 -0
  113. package/lib/typescript/src/screens/Tabs/DigitalDiary.d.ts +3 -0
  114. package/lib/typescript/src/screens/Tabs/DigitalDiary.d.ts.map +1 -0
  115. package/lib/typescript/src/screens/Tabs/HomeScreen.d.ts +4 -0
  116. package/lib/typescript/src/screens/Tabs/HomeScreen.d.ts.map +1 -0
  117. package/lib/typescript/src/screens/Tabs/NotificationsScreen.d.ts +3 -0
  118. package/lib/typescript/src/screens/Tabs/NotificationsScreen.d.ts.map +1 -0
  119. package/lib/typescript/src/screens/contentliberary/contentliberary.d.ts +2 -0
  120. package/lib/typescript/src/screens/contentliberary/contentliberary.d.ts.map +1 -0
  121. package/package.json +5 -1
  122. package/src/SalespandaApp.tsx +12 -36
  123. package/src/components/BottomSheet.tsx +146 -0
  124. package/src/components/ContactViaModal.tsx +80 -0
  125. package/src/components/ScreenHeader.tsx +57 -0
  126. package/src/components/SearchBar.tsx +59 -0
  127. package/src/components/TabsHeader.tsx +72 -0
  128. package/src/components/index.ts +5 -0
  129. package/src/constants/Colors.ts +2 -1
  130. package/src/index.tsx +6 -4
  131. package/src/navigation/AppNavigator.tsx +6 -4
  132. package/src/navigation/BottomTabNavigator.tsx +51 -22
  133. package/src/navigation/DrawerNavigator.tsx +38 -33
  134. package/src/navigation/StackNavigator.tsx +32 -0
  135. package/src/screens/CRM/AddContactModal.tsx +57 -0
  136. package/src/screens/CRM/CategoryTabs.tsx +109 -0
  137. package/src/screens/CRM/ContactItem.tsx +168 -0
  138. package/src/screens/CRM/FilterDropdown.tsx +34 -0
  139. package/src/screens/CRM/FunnelChart.tsx +103 -0
  140. package/src/screens/CRM/InfoCard.tsx +51 -0
  141. package/src/screens/CRM/LeadCard.tsx +69 -0
  142. package/src/screens/CRM/LogCallScreen.tsx +318 -0
  143. package/src/screens/CRM/TopTabs.tsx +95 -0
  144. package/src/screens/CRM/index.ts +10 -0
  145. package/src/screens/ReportsScreen.tsx +7 -4
  146. package/src/screens/Tabs/ActivityAnalytics.tsx +25 -0
  147. package/src/screens/Tabs/CRMScreen.tsx +381 -0
  148. package/src/screens/Tabs/DigitalDiary.tsx +35 -0
  149. package/src/screens/Tabs/HomeScreen.tsx +223 -0
  150. package/src/screens/Tabs/NotificationsScreen.tsx +25 -0
  151. package/src/screens/contentliberary/contentliberary.tsx +268 -0
  152. package/lib/module/screens/CRMScreen.js +0 -41
  153. package/lib/module/screens/CRMScreen.js.map +0 -1
  154. package/lib/module/screens/HomeScreen.js +0 -211
  155. package/lib/module/screens/HomeScreen.js.map +0 -1
  156. package/lib/module/screens/NotificationsScreen.js +0 -41
  157. package/lib/module/screens/NotificationsScreen.js.map +0 -1
  158. package/lib/module/screens/ProfileScreen.js +0 -41
  159. package/lib/module/screens/ProfileScreen.js.map +0 -1
  160. package/lib/typescript/src/screens/CRMScreen.d.ts +0 -2
  161. package/lib/typescript/src/screens/CRMScreen.d.ts.map +0 -1
  162. package/lib/typescript/src/screens/HomeScreen.d.ts +0 -2
  163. package/lib/typescript/src/screens/HomeScreen.d.ts.map +0 -1
  164. package/lib/typescript/src/screens/NotificationsScreen.d.ts +0 -2
  165. package/lib/typescript/src/screens/NotificationsScreen.d.ts.map +0 -1
  166. package/lib/typescript/src/screens/ProfileScreen.d.ts +0 -2
  167. package/lib/typescript/src/screens/ProfileScreen.d.ts.map +0 -1
  168. package/src/screens/CRMScreen.tsx +0 -34
  169. package/src/screens/HomeScreen.tsx +0 -201
  170. package/src/screens/NotificationsScreen.tsx +0 -34
  171. package/src/screens/ProfileScreen.tsx +0 -34
@@ -0,0 +1,318 @@
1
+ import { useState } from 'react';
2
+ import {
3
+ View,
4
+ Text,
5
+ StyleSheet,
6
+ TouchableOpacity,
7
+ ScrollView,
8
+ } from 'react-native';
9
+ import { scale, verticalScale, moderateScale } from 'react-native-size-matters';
10
+ import { SafeAreaView } from 'react-native-safe-area-context';
11
+ import { Colors } from '../../constants/Colors';
12
+ import { ScreenHeader } from '../../components/ScreenHeader';
13
+ import { useNavigation, useRoute } from '@react-navigation/native';
14
+ import type { RouteProp } from '@react-navigation/native';
15
+ import type { RootStackParamList } from '../../navigation/StackNavigator';
16
+
17
+ type LogCallScreenRouteProp = RouteProp<RootStackParamList, 'LogCall'>;
18
+
19
+ interface LogCallScreenProps {
20
+ visible?: boolean;
21
+ onClose?: () => void;
22
+ contactName?: string;
23
+ contactAvatar?: string;
24
+ contactAvatarColor?: string;
25
+ onSave?: (outcome: string, leadStage: string, followUpDays: string) => void;
26
+ showCrossOnLeft?: boolean;
27
+ }
28
+
29
+ const callOutcomes = [
30
+ 'Interested',
31
+ 'Drop',
32
+ 'Hold',
33
+ 'Call back later',
34
+ 'Busy',
35
+ 'Other',
36
+ ];
37
+
38
+ const leadStages = [
39
+ 'All',
40
+ 'Follow Up',
41
+ 'New',
42
+ 'Engaged',
43
+ 'Deal',
44
+ 'Quote sent',
45
+ 'Won',
46
+ 'Dropped',
47
+ ];
48
+
49
+ const LogCallScreen: React.FC<LogCallScreenProps> = ({
50
+ visible,
51
+ onClose,
52
+ contactName: propContactName,
53
+ contactAvatar: propContactAvatar,
54
+ contactAvatarColor: propContactAvatarColor,
55
+ onSave,
56
+ showCrossOnLeft = false,
57
+ } = {}) => {
58
+ const navigation = useNavigation();
59
+ const route = useRoute<LogCallScreenRouteProp>();
60
+
61
+ const contact = route.params?.contact;
62
+ const contactName = propContactName || contact?.name || 'Contact';
63
+ const contactAvatar = propContactAvatar || contact?.avatarInitial || 'H';
64
+ const contactAvatarColor =
65
+ propContactAvatarColor || contact?.avatarColor || '#C84B9E';
66
+
67
+ const [selectedOutcome, setSelectedOutcome] = useState('Interested');
68
+ const [selectedStage, setSelectedStage] = useState('All');
69
+ const [selectedFollowUp] = useState('1 day');
70
+
71
+ const handleSave = () => {
72
+ onSave?.(selectedOutcome, selectedStage, selectedFollowUp);
73
+ if (onClose) {
74
+ onClose();
75
+ } else {
76
+ navigation.goBack();
77
+ }
78
+ };
79
+
80
+ const handleBack = () => {
81
+ if (onClose) {
82
+ onClose();
83
+ } else {
84
+ navigation.goBack();
85
+ }
86
+ };
87
+
88
+ if (visible === false) return null;
89
+
90
+ return (
91
+ <SafeAreaView style={styles.container} edges={['top']}>
92
+ {/* Header */}
93
+ <ScreenHeader
94
+ title="Log Call"
95
+ onBackPress={handleBack}
96
+ showCrossOnLeft={showCrossOnLeft}
97
+ />
98
+
99
+ <ScrollView style={styles.content}>
100
+ {/* Contact Info */}
101
+ <View style={styles.contactSection}>
102
+ <View
103
+ style={[styles.avatar, { backgroundColor: contactAvatarColor }]}
104
+ >
105
+ <Text style={styles.avatarText}>{contactAvatar}</Text>
106
+ </View>
107
+ <Text style={styles.contactName}>{contactName}</Text>
108
+ </View>
109
+
110
+ {/* Follow up task */}
111
+ <View style={styles.followUpSection}>
112
+ <View style={styles.followUpRow}>
113
+ <View style={styles.iconWrapper}>
114
+ <Text style={styles.calendarIcon}>📅</Text>
115
+ </View>
116
+ <Text style={styles.followUpText}>Follow up task</Text>
117
+ <TouchableOpacity style={styles.dropdown}>
118
+ <Text style={styles.dropdownText}>{selectedFollowUp}</Text>
119
+ <Text style={styles.dropdownArrow}>▼</Text>
120
+ </TouchableOpacity>
121
+ </View>
122
+ </View>
123
+
124
+ {/* Call outcome */}
125
+ <View style={styles.section}>
126
+ <Text style={styles.sectionTitle}>Call outcome</Text>
127
+ <View style={styles.optionsGrid}>
128
+ {callOutcomes.map((outcome) => (
129
+ <TouchableOpacity
130
+ key={outcome}
131
+ style={[
132
+ styles.optionButton,
133
+ selectedOutcome === outcome && styles.optionButtonSelected,
134
+ ]}
135
+ onPress={() => setSelectedOutcome(outcome)}
136
+ >
137
+ <Text
138
+ style={[
139
+ styles.optionText,
140
+ selectedOutcome === outcome && styles.optionTextSelected,
141
+ ]}
142
+ >
143
+ {outcome}
144
+ </Text>
145
+ </TouchableOpacity>
146
+ ))}
147
+ </View>
148
+ </View>
149
+
150
+ {/* Lead stage */}
151
+ <View style={styles.section}>
152
+ <Text style={styles.sectionTitle}>Lead stage</Text>
153
+ <Text style={styles.sectionSubtitle}>
154
+ Stage is same as lead stage
155
+ </Text>
156
+ <View style={styles.optionsGrid}>
157
+ {leadStages.map((stage) => (
158
+ <TouchableOpacity
159
+ key={stage}
160
+ style={[
161
+ styles.optionButton,
162
+ selectedStage === stage && styles.optionButtonSelected,
163
+ ]}
164
+ onPress={() => setSelectedStage(stage)}
165
+ >
166
+ <Text
167
+ style={[
168
+ styles.optionText,
169
+ selectedStage === stage && styles.optionTextSelected,
170
+ ]}
171
+ >
172
+ {stage}
173
+ </Text>
174
+ </TouchableOpacity>
175
+ ))}
176
+ </View>
177
+ </View>
178
+ </ScrollView>
179
+
180
+ {/* Save Button */}
181
+ <View style={styles.footer}>
182
+ <TouchableOpacity style={styles.saveButton} onPress={handleSave}>
183
+ <Text style={styles.saveButtonText}>Save</Text>
184
+ </TouchableOpacity>
185
+ </View>
186
+ </SafeAreaView>
187
+ );
188
+ };
189
+
190
+ export default LogCallScreen;
191
+
192
+ const styles = StyleSheet.create({
193
+ container: {
194
+ flex: 1,
195
+ backgroundColor: Colors.white,
196
+ },
197
+ content: {
198
+ flex: 1,
199
+ },
200
+ contactSection: {
201
+ alignItems: 'center',
202
+ paddingVertical: verticalScale(24),
203
+ },
204
+ avatar: {
205
+ width: scale(80),
206
+ height: scale(80),
207
+ borderRadius: moderateScale(40),
208
+ justifyContent: 'center',
209
+ alignItems: 'center',
210
+ marginBottom: verticalScale(12),
211
+ },
212
+ avatarText: {
213
+ fontSize: moderateScale(36),
214
+ fontWeight: '700',
215
+ color: Colors.white,
216
+ },
217
+ contactName: {
218
+ fontSize: moderateScale(24),
219
+ fontWeight: '700',
220
+ color: Colors.black,
221
+ },
222
+ followUpSection: {
223
+ paddingHorizontal: scale(16),
224
+ marginBottom: verticalScale(24),
225
+ },
226
+ followUpRow: {
227
+ flexDirection: 'row',
228
+ alignItems: 'center',
229
+ backgroundColor: '#F5F5F5',
230
+ borderRadius: moderateScale(12),
231
+ padding: scale(16),
232
+ borderWidth: 1,
233
+ borderColor: '#E0E0E0',
234
+ },
235
+ iconWrapper: {
236
+ marginRight: scale(12),
237
+ },
238
+ calendarIcon: {
239
+ fontSize: moderateScale(24),
240
+ },
241
+ followUpText: {
242
+ flex: 1,
243
+ fontSize: moderateScale(16),
244
+ fontWeight: '600',
245
+ color: Colors.black,
246
+ },
247
+ dropdown: {
248
+ flexDirection: 'row',
249
+ alignItems: 'center',
250
+ paddingHorizontal: scale(12),
251
+ paddingVertical: verticalScale(6),
252
+ },
253
+ dropdownText: {
254
+ fontSize: moderateScale(16),
255
+ color: Colors.black,
256
+ marginRight: scale(4),
257
+ },
258
+ dropdownArrow: {
259
+ fontSize: moderateScale(12),
260
+ color: Colors.black,
261
+ },
262
+ section: {
263
+ paddingHorizontal: scale(16),
264
+ marginBottom: verticalScale(32),
265
+ },
266
+ sectionTitle: {
267
+ fontSize: moderateScale(20),
268
+ fontWeight: '700',
269
+ color: Colors.black,
270
+ marginBottom: verticalScale(8),
271
+ },
272
+ sectionSubtitle: {
273
+ fontSize: moderateScale(14),
274
+ color: '#666',
275
+ marginBottom: verticalScale(16),
276
+ },
277
+ optionsGrid: {
278
+ flexDirection: 'row',
279
+ flexWrap: 'wrap',
280
+ gap: scale(12),
281
+ },
282
+ optionButton: {
283
+ paddingHorizontal: scale(20),
284
+ paddingVertical: verticalScale(12),
285
+ borderRadius: moderateScale(24),
286
+ borderWidth: 1,
287
+ borderColor: '#E0E0E0',
288
+ backgroundColor: Colors.white,
289
+ },
290
+ optionButtonSelected: {
291
+ borderColor: '#FF9800',
292
+ borderWidth: 2,
293
+ },
294
+ optionText: {
295
+ fontSize: moderateScale(15),
296
+ fontWeight: '500',
297
+ color: Colors.black,
298
+ },
299
+ optionTextSelected: {
300
+ color: '#FF9800',
301
+ fontWeight: '600',
302
+ },
303
+ footer: {
304
+ padding: scale(16),
305
+ paddingBottom: verticalScale(32),
306
+ },
307
+ saveButton: {
308
+ backgroundColor: '#46bdd3',
309
+ paddingVertical: verticalScale(16),
310
+ borderRadius: moderateScale(12),
311
+ alignItems: 'center',
312
+ },
313
+ saveButtonText: {
314
+ fontSize: moderateScale(18),
315
+ fontWeight: '700',
316
+ color: Colors.white,
317
+ },
318
+ });
@@ -0,0 +1,95 @@
1
+ import { View, Text, StyleSheet, TouchableOpacity } from 'react-native';
2
+ import { scale, verticalScale, moderateScale } from 'react-native-size-matters';
3
+ import { Colors } from '../../constants/Colors';
4
+
5
+ interface TopTabsProps {
6
+ selectedTab: 'leads' | 'prospects' | 'contacts';
7
+ onSelectTab: (tab: 'leads' | 'prospects' | 'contacts') => void;
8
+ counts: {
9
+ leads: number;
10
+ prospects: number;
11
+ contacts: number;
12
+ };
13
+ }
14
+
15
+ export const TopTabs: React.FC<TopTabsProps> = ({
16
+ selectedTab,
17
+ onSelectTab,
18
+ counts,
19
+ }) => {
20
+ return (
21
+ <View style={styles.topTabsContainer}>
22
+ <TouchableOpacity
23
+ style={[styles.topTab, selectedTab === 'leads' && styles.topTabActive]}
24
+ onPress={() => onSelectTab('leads')}
25
+ >
26
+ <Text
27
+ style={[
28
+ styles.topTabText,
29
+ selectedTab === 'leads' && styles.topTabTextActive,
30
+ ]}
31
+ >
32
+ Leads({counts.leads})
33
+ </Text>
34
+ </TouchableOpacity>
35
+ <TouchableOpacity
36
+ style={[
37
+ styles.topTab,
38
+ selectedTab === 'prospects' && styles.topTabActive,
39
+ ]}
40
+ onPress={() => onSelectTab('prospects')}
41
+ >
42
+ <Text
43
+ style={[
44
+ styles.topTabText,
45
+ selectedTab === 'prospects' && styles.topTabTextActive,
46
+ ]}
47
+ >
48
+ Prospects({counts.prospects})
49
+ </Text>
50
+ </TouchableOpacity>
51
+ <TouchableOpacity
52
+ style={[
53
+ styles.topTab,
54
+ selectedTab === 'contacts' && styles.topTabActive,
55
+ ]}
56
+ onPress={() => onSelectTab('contacts')}
57
+ >
58
+ <Text
59
+ style={[
60
+ styles.topTabText,
61
+ selectedTab === 'contacts' && styles.topTabTextActive,
62
+ ]}
63
+ >
64
+ Contacts({counts.contacts})
65
+ </Text>
66
+ </TouchableOpacity>
67
+ </View>
68
+ );
69
+ };
70
+
71
+ const styles = StyleSheet.create({
72
+ topTabsContainer: {
73
+ flexDirection: 'row',
74
+ backgroundColor: Colors.white,
75
+ paddingHorizontal: scale(8),
76
+ },
77
+ topTab: {
78
+ flex: 1,
79
+ paddingVertical: verticalScale(16),
80
+ alignItems: 'center',
81
+ borderBottomWidth: 3,
82
+ borderBottomColor: 'transparent',
83
+ },
84
+ topTabActive: {
85
+ borderBottomColor: '#FF9800',
86
+ },
87
+ topTabText: {
88
+ fontSize: moderateScale(16),
89
+ fontWeight: '600',
90
+ color: Colors.black,
91
+ },
92
+ topTabTextActive: {
93
+ color: '#FF9800',
94
+ },
95
+ });
@@ -0,0 +1,10 @@
1
+ // CRM Screen Components
2
+ export { FilterDropdown } from './FilterDropdown';
3
+ export { TopTabs } from './TopTabs';
4
+ export { InfoCard } from './InfoCard';
5
+ export { CategoryTabs } from './CategoryTabs';
6
+ export { ContactItem } from './ContactItem';
7
+ export { LeadCard } from './LeadCard';
8
+ export { FunnelChart } from './FunnelChart';
9
+ export { AddContactModal } from './AddContactModal';
10
+ export { default as LogCallScreen } from './LogCallScreen';
@@ -1,8 +1,9 @@
1
1
  import { View, Text, StyleSheet, ScrollView } from 'react-native';
2
+ import { scale, moderateScale } from 'react-native-size-matters';
2
3
  import { SafeAreaView } from 'react-native-safe-area-context';
3
4
  import { Colors } from '../constants/Colors';
4
5
 
5
- export default function NotificationsScreen() {
6
+ const ReportsScreen: React.FC = () => {
6
7
  return (
7
8
  <SafeAreaView style={styles.container} edges={['bottom']}>
8
9
  <View style={styles.header}>
@@ -11,7 +12,9 @@ export default function NotificationsScreen() {
11
12
  <ScrollView style={styles.scrollView} />
12
13
  </SafeAreaView>
13
14
  );
14
- }
15
+ };
16
+
17
+ export default ReportsScreen;
15
18
 
16
19
  const styles = StyleSheet.create({
17
20
  container: {
@@ -20,10 +23,10 @@ const styles = StyleSheet.create({
20
23
  },
21
24
  header: {
22
25
  backgroundColor: Colors.white,
23
- padding: 16,
26
+ padding: scale(16),
24
27
  },
25
28
  headerTitle: {
26
- fontSize: 20,
29
+ fontSize: moderateScale(20),
27
30
  fontWeight: '600',
28
31
  color: Colors.black,
29
32
  textAlign: 'center',
@@ -0,0 +1,25 @@
1
+ import { StyleSheet, ScrollView } from 'react-native';
2
+ import { SafeAreaView } from 'react-native-safe-area-context';
3
+ import { Colors } from '../../constants/Colors';
4
+ import TabsHeader from '../../components/TabsHeader';
5
+
6
+ const ActivityAnalytics: React.FC = () => {
7
+ return (
8
+ <SafeAreaView style={styles.container} edges={['top', 'bottom']}>
9
+ <TabsHeader title="Analytics" />
10
+ <ScrollView style={styles.scrollView} />
11
+ </SafeAreaView>
12
+ );
13
+ };
14
+
15
+ export default ActivityAnalytics;
16
+
17
+ const styles = StyleSheet.create({
18
+ container: {
19
+ flex: 1,
20
+ backgroundColor: Colors.background,
21
+ },
22
+ scrollView: {
23
+ flex: 1,
24
+ },
25
+ });