react-native-salespanda 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/module/index.js +9 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/navigation/AppNavigator.js +11 -0
- package/lib/module/navigation/AppNavigator.js.map +1 -0
- package/lib/module/navigation/BottomTabNavigator.js +88 -0
- package/lib/module/navigation/BottomTabNavigator.js.map +1 -0
- package/lib/module/navigation/DrawerNavigator.js +217 -0
- package/lib/module/navigation/DrawerNavigator.js.map +1 -0
- package/lib/module/screens/HomeScreen.js +0 -43
- package/lib/module/screens/HomeScreen.js.map +1 -1
- package/lib/module/screens/NotificationsScreen.js +127 -0
- package/lib/module/screens/NotificationsScreen.js.map +1 -0
- package/lib/module/screens/PremiumScreen.js +222 -0
- package/lib/module/screens/PremiumScreen.js.map +1 -0
- package/lib/module/screens/ProfileScreen.js +147 -0
- package/lib/module/screens/ProfileScreen.js.map +1 -0
- package/lib/module/screens/ReportsScreen.js +217 -0
- package/lib/module/screens/ReportsScreen.js.map +1 -0
- package/lib/typescript/src/index.d.ts +7 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/navigation/AppNavigator.d.ts +2 -0
- package/lib/typescript/src/navigation/AppNavigator.d.ts.map +1 -0
- package/lib/typescript/src/navigation/BottomTabNavigator.d.ts +2 -0
- package/lib/typescript/src/navigation/BottomTabNavigator.d.ts.map +1 -0
- package/lib/typescript/src/navigation/DrawerNavigator.d.ts +2 -0
- package/lib/typescript/src/navigation/DrawerNavigator.d.ts.map +1 -0
- package/lib/typescript/src/screens/HomeScreen.d.ts.map +1 -1
- package/lib/typescript/src/screens/NotificationsScreen.d.ts +2 -0
- package/lib/typescript/src/screens/NotificationsScreen.d.ts.map +1 -0
- package/lib/typescript/src/screens/PremiumScreen.d.ts +2 -0
- package/lib/typescript/src/screens/PremiumScreen.d.ts.map +1 -0
- package/lib/typescript/src/screens/ProfileScreen.d.ts +2 -0
- package/lib/typescript/src/screens/ProfileScreen.d.ts.map +1 -0
- package/lib/typescript/src/screens/ReportsScreen.d.ts +2 -0
- package/lib/typescript/src/screens/ReportsScreen.d.ts.map +1 -0
- package/package.json +10 -1
- package/src/index.tsx +9 -0
- package/src/navigation/AppNavigator.tsx +10 -0
- package/src/navigation/BottomTabNavigator.tsx +64 -0
- package/src/navigation/DrawerNavigator.tsx +238 -0
- package/src/screens/HomeScreen.tsx +0 -32
- package/src/screens/NotificationsScreen.tsx +135 -0
- package/src/screens/PremiumScreen.tsx +250 -0
- package/src/screens/ProfileScreen.tsx +121 -0
- package/src/screens/ReportsScreen.tsx +191 -0
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
View,
|
|
4
|
+
Text,
|
|
5
|
+
StyleSheet,
|
|
6
|
+
SafeAreaView,
|
|
7
|
+
ScrollView,
|
|
8
|
+
TouchableOpacity,
|
|
9
|
+
} from 'react-native';
|
|
10
|
+
|
|
11
|
+
interface PlanCardProps {
|
|
12
|
+
name: string;
|
|
13
|
+
price: string;
|
|
14
|
+
features: string[];
|
|
15
|
+
highlighted?: boolean;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const PlanCard: React.FC<PlanCardProps> = ({
|
|
19
|
+
name,
|
|
20
|
+
price,
|
|
21
|
+
features,
|
|
22
|
+
highlighted = false,
|
|
23
|
+
}) => {
|
|
24
|
+
return (
|
|
25
|
+
<View style={[styles.planCard, highlighted && styles.highlightedPlan]}>
|
|
26
|
+
{highlighted && (
|
|
27
|
+
<View style={styles.popularBadge}>
|
|
28
|
+
<Text style={styles.popularText}>MOST POPULAR</Text>
|
|
29
|
+
</View>
|
|
30
|
+
)}
|
|
31
|
+
<Text style={styles.planName}>{name}</Text>
|
|
32
|
+
<Text style={styles.planPrice}>{price}</Text>
|
|
33
|
+
<Text style={styles.planPeriod}>per month</Text>
|
|
34
|
+
|
|
35
|
+
<View style={styles.features}>
|
|
36
|
+
{features.map((feature, index) => (
|
|
37
|
+
<View key={index} style={styles.featureItem}>
|
|
38
|
+
<Text style={styles.featureIcon}>✓</Text>
|
|
39
|
+
<Text style={styles.featureText}>{feature}</Text>
|
|
40
|
+
</View>
|
|
41
|
+
))}
|
|
42
|
+
</View>
|
|
43
|
+
|
|
44
|
+
<TouchableOpacity
|
|
45
|
+
style={[
|
|
46
|
+
styles.subscribeButton,
|
|
47
|
+
highlighted && styles.highlightedButton,
|
|
48
|
+
]}
|
|
49
|
+
>
|
|
50
|
+
<Text
|
|
51
|
+
style={[
|
|
52
|
+
styles.subscribeButtonText,
|
|
53
|
+
highlighted && styles.highlightedButtonText,
|
|
54
|
+
]}
|
|
55
|
+
>
|
|
56
|
+
Subscribe
|
|
57
|
+
</Text>
|
|
58
|
+
</TouchableOpacity>
|
|
59
|
+
</View>
|
|
60
|
+
);
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export default function PremiumScreen() {
|
|
64
|
+
return (
|
|
65
|
+
<SafeAreaView style={styles.container}>
|
|
66
|
+
<View style={styles.header}>
|
|
67
|
+
<Text style={styles.headerTitle}>Premium Plans</Text>
|
|
68
|
+
</View>
|
|
69
|
+
<ScrollView style={styles.scrollView}>
|
|
70
|
+
<View style={styles.heroSection}>
|
|
71
|
+
<Text style={styles.heroIcon}>💎</Text>
|
|
72
|
+
<Text style={styles.heroTitle}>Unlock Premium Features</Text>
|
|
73
|
+
<Text style={styles.heroDescription}>
|
|
74
|
+
Get access to exclusive features and tools to grow your business
|
|
75
|
+
</Text>
|
|
76
|
+
</View>
|
|
77
|
+
|
|
78
|
+
<View style={styles.plansContainer}>
|
|
79
|
+
<PlanCard
|
|
80
|
+
name="Basic"
|
|
81
|
+
price="$9.99"
|
|
82
|
+
features={[
|
|
83
|
+
'Up to 100 contacts',
|
|
84
|
+
'5 campaigns per month',
|
|
85
|
+
'Basic analytics',
|
|
86
|
+
'Email support',
|
|
87
|
+
]}
|
|
88
|
+
/>
|
|
89
|
+
|
|
90
|
+
<PlanCard
|
|
91
|
+
name="Professional"
|
|
92
|
+
price="$29.99"
|
|
93
|
+
features={[
|
|
94
|
+
'Up to 1,000 contacts',
|
|
95
|
+
'Unlimited campaigns',
|
|
96
|
+
'Advanced analytics',
|
|
97
|
+
'Priority support',
|
|
98
|
+
'Custom branding',
|
|
99
|
+
'API access',
|
|
100
|
+
]}
|
|
101
|
+
highlighted={true}
|
|
102
|
+
/>
|
|
103
|
+
|
|
104
|
+
<PlanCard
|
|
105
|
+
name="Enterprise"
|
|
106
|
+
price="$99.99"
|
|
107
|
+
features={[
|
|
108
|
+
'Unlimited contacts',
|
|
109
|
+
'Unlimited campaigns',
|
|
110
|
+
'Advanced analytics',
|
|
111
|
+
'24/7 dedicated support',
|
|
112
|
+
'Custom branding',
|
|
113
|
+
'API access',
|
|
114
|
+
'Custom integrations',
|
|
115
|
+
'White-label solution',
|
|
116
|
+
]}
|
|
117
|
+
/>
|
|
118
|
+
</View>
|
|
119
|
+
</ScrollView>
|
|
120
|
+
</SafeAreaView>
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
const styles = StyleSheet.create({
|
|
125
|
+
container: {
|
|
126
|
+
flex: 1,
|
|
127
|
+
backgroundColor: '#f5f5f5',
|
|
128
|
+
},
|
|
129
|
+
header: {
|
|
130
|
+
backgroundColor: '#fff',
|
|
131
|
+
padding: 16,
|
|
132
|
+
borderBottomWidth: 1,
|
|
133
|
+
borderBottomColor: '#e0e0e0',
|
|
134
|
+
},
|
|
135
|
+
headerTitle: {
|
|
136
|
+
fontSize: 20,
|
|
137
|
+
fontWeight: '600',
|
|
138
|
+
color: '#333',
|
|
139
|
+
textAlign: 'center',
|
|
140
|
+
},
|
|
141
|
+
scrollView: {
|
|
142
|
+
flex: 1,
|
|
143
|
+
},
|
|
144
|
+
heroSection: {
|
|
145
|
+
backgroundColor: '#4a148c',
|
|
146
|
+
padding: 32,
|
|
147
|
+
alignItems: 'center',
|
|
148
|
+
},
|
|
149
|
+
heroIcon: {
|
|
150
|
+
fontSize: 48,
|
|
151
|
+
marginBottom: 16,
|
|
152
|
+
},
|
|
153
|
+
heroTitle: {
|
|
154
|
+
fontSize: 24,
|
|
155
|
+
fontWeight: '700',
|
|
156
|
+
color: '#fff',
|
|
157
|
+
marginBottom: 8,
|
|
158
|
+
textAlign: 'center',
|
|
159
|
+
},
|
|
160
|
+
heroDescription: {
|
|
161
|
+
fontSize: 14,
|
|
162
|
+
color: '#fff',
|
|
163
|
+
textAlign: 'center',
|
|
164
|
+
opacity: 0.9,
|
|
165
|
+
},
|
|
166
|
+
plansContainer: {
|
|
167
|
+
padding: 16,
|
|
168
|
+
},
|
|
169
|
+
planCard: {
|
|
170
|
+
backgroundColor: '#fff',
|
|
171
|
+
borderRadius: 16,
|
|
172
|
+
padding: 24,
|
|
173
|
+
marginBottom: 16,
|
|
174
|
+
borderWidth: 2,
|
|
175
|
+
borderColor: '#e0e0e0',
|
|
176
|
+
},
|
|
177
|
+
highlightedPlan: {
|
|
178
|
+
borderColor: '#4a148c',
|
|
179
|
+
transform: [{ scale: 1.02 }],
|
|
180
|
+
},
|
|
181
|
+
popularBadge: {
|
|
182
|
+
backgroundColor: '#4a148c',
|
|
183
|
+
paddingHorizontal: 12,
|
|
184
|
+
paddingVertical: 6,
|
|
185
|
+
borderRadius: 12,
|
|
186
|
+
alignSelf: 'center',
|
|
187
|
+
marginBottom: 16,
|
|
188
|
+
},
|
|
189
|
+
popularText: {
|
|
190
|
+
color: '#fff',
|
|
191
|
+
fontSize: 10,
|
|
192
|
+
fontWeight: '700',
|
|
193
|
+
},
|
|
194
|
+
planName: {
|
|
195
|
+
fontSize: 24,
|
|
196
|
+
fontWeight: '700',
|
|
197
|
+
color: '#333',
|
|
198
|
+
textAlign: 'center',
|
|
199
|
+
marginBottom: 8,
|
|
200
|
+
},
|
|
201
|
+
planPrice: {
|
|
202
|
+
fontSize: 36,
|
|
203
|
+
fontWeight: '700',
|
|
204
|
+
color: '#4a148c',
|
|
205
|
+
textAlign: 'center',
|
|
206
|
+
},
|
|
207
|
+
planPeriod: {
|
|
208
|
+
fontSize: 14,
|
|
209
|
+
color: '#666',
|
|
210
|
+
textAlign: 'center',
|
|
211
|
+
marginBottom: 24,
|
|
212
|
+
},
|
|
213
|
+
features: {
|
|
214
|
+
marginBottom: 24,
|
|
215
|
+
},
|
|
216
|
+
featureItem: {
|
|
217
|
+
flexDirection: 'row',
|
|
218
|
+
alignItems: 'center',
|
|
219
|
+
marginBottom: 12,
|
|
220
|
+
},
|
|
221
|
+
featureIcon: {
|
|
222
|
+
fontSize: 16,
|
|
223
|
+
color: '#4a148c',
|
|
224
|
+
marginRight: 12,
|
|
225
|
+
fontWeight: '700',
|
|
226
|
+
},
|
|
227
|
+
featureText: {
|
|
228
|
+
fontSize: 14,
|
|
229
|
+
color: '#333',
|
|
230
|
+
},
|
|
231
|
+
subscribeButton: {
|
|
232
|
+
backgroundColor: '#fff',
|
|
233
|
+
borderWidth: 2,
|
|
234
|
+
borderColor: '#4a148c',
|
|
235
|
+
borderRadius: 8,
|
|
236
|
+
padding: 16,
|
|
237
|
+
alignItems: 'center',
|
|
238
|
+
},
|
|
239
|
+
highlightedButton: {
|
|
240
|
+
backgroundColor: '#4a148c',
|
|
241
|
+
},
|
|
242
|
+
subscribeButtonText: {
|
|
243
|
+
fontSize: 16,
|
|
244
|
+
fontWeight: '600',
|
|
245
|
+
color: '#4a148c',
|
|
246
|
+
},
|
|
247
|
+
highlightedButtonText: {
|
|
248
|
+
color: '#fff',
|
|
249
|
+
},
|
|
250
|
+
});
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import {
|
|
2
|
+
View,
|
|
3
|
+
Text,
|
|
4
|
+
StyleSheet,
|
|
5
|
+
SafeAreaView,
|
|
6
|
+
TouchableOpacity,
|
|
7
|
+
Image,
|
|
8
|
+
} from 'react-native';
|
|
9
|
+
|
|
10
|
+
export default function ProfileScreen() {
|
|
11
|
+
return (
|
|
12
|
+
<SafeAreaView style={styles.container}>
|
|
13
|
+
<View style={styles.header}>
|
|
14
|
+
<Text style={styles.headerTitle}>Profile</Text>
|
|
15
|
+
</View>
|
|
16
|
+
<View style={styles.content}>
|
|
17
|
+
<View style={styles.profileSection}>
|
|
18
|
+
<Image
|
|
19
|
+
source={{ uri: 'https://via.placeholder.com/100x100' }}
|
|
20
|
+
style={styles.avatar}
|
|
21
|
+
/>
|
|
22
|
+
<Text style={styles.name}>John Doe</Text>
|
|
23
|
+
<Text style={styles.email}>john.doe@example.com</Text>
|
|
24
|
+
</View>
|
|
25
|
+
|
|
26
|
+
<View style={styles.section}>
|
|
27
|
+
<TouchableOpacity style={styles.menuItem}>
|
|
28
|
+
<Text style={styles.menuItemIcon}>👤</Text>
|
|
29
|
+
<Text style={styles.menuItemText}>Edit Profile</Text>
|
|
30
|
+
</TouchableOpacity>
|
|
31
|
+
|
|
32
|
+
<TouchableOpacity style={styles.menuItem}>
|
|
33
|
+
<Text style={styles.menuItemIcon}>⚙️</Text>
|
|
34
|
+
<Text style={styles.menuItemText}>Settings</Text>
|
|
35
|
+
</TouchableOpacity>
|
|
36
|
+
|
|
37
|
+
<TouchableOpacity style={styles.menuItem}>
|
|
38
|
+
<Text style={styles.menuItemIcon}>🔔</Text>
|
|
39
|
+
<Text style={styles.menuItemText}>Notifications</Text>
|
|
40
|
+
</TouchableOpacity>
|
|
41
|
+
|
|
42
|
+
<TouchableOpacity style={styles.menuItem}>
|
|
43
|
+
<Text style={styles.menuItemIcon}>❓</Text>
|
|
44
|
+
<Text style={styles.menuItemText}>Help & Support</Text>
|
|
45
|
+
</TouchableOpacity>
|
|
46
|
+
|
|
47
|
+
<TouchableOpacity style={styles.menuItem}>
|
|
48
|
+
<Text style={styles.menuItemIcon}>🚪</Text>
|
|
49
|
+
<Text style={styles.menuItemText}>Logout</Text>
|
|
50
|
+
</TouchableOpacity>
|
|
51
|
+
</View>
|
|
52
|
+
</View>
|
|
53
|
+
</SafeAreaView>
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const styles = StyleSheet.create({
|
|
58
|
+
container: {
|
|
59
|
+
flex: 1,
|
|
60
|
+
backgroundColor: '#f5f5f5',
|
|
61
|
+
},
|
|
62
|
+
header: {
|
|
63
|
+
backgroundColor: '#fff',
|
|
64
|
+
padding: 16,
|
|
65
|
+
borderBottomWidth: 1,
|
|
66
|
+
borderBottomColor: '#e0e0e0',
|
|
67
|
+
},
|
|
68
|
+
headerTitle: {
|
|
69
|
+
fontSize: 20,
|
|
70
|
+
fontWeight: '600',
|
|
71
|
+
color: '#333',
|
|
72
|
+
textAlign: 'center',
|
|
73
|
+
},
|
|
74
|
+
content: {
|
|
75
|
+
flex: 1,
|
|
76
|
+
padding: 16,
|
|
77
|
+
},
|
|
78
|
+
profileSection: {
|
|
79
|
+
backgroundColor: '#fff',
|
|
80
|
+
borderRadius: 12,
|
|
81
|
+
padding: 24,
|
|
82
|
+
alignItems: 'center',
|
|
83
|
+
marginBottom: 16,
|
|
84
|
+
},
|
|
85
|
+
avatar: {
|
|
86
|
+
width: 100,
|
|
87
|
+
height: 100,
|
|
88
|
+
borderRadius: 50,
|
|
89
|
+
marginBottom: 16,
|
|
90
|
+
},
|
|
91
|
+
name: {
|
|
92
|
+
fontSize: 20,
|
|
93
|
+
fontWeight: '600',
|
|
94
|
+
color: '#333',
|
|
95
|
+
marginBottom: 4,
|
|
96
|
+
},
|
|
97
|
+
email: {
|
|
98
|
+
fontSize: 14,
|
|
99
|
+
color: '#666',
|
|
100
|
+
},
|
|
101
|
+
section: {
|
|
102
|
+
backgroundColor: '#fff',
|
|
103
|
+
borderRadius: 12,
|
|
104
|
+
overflow: 'hidden',
|
|
105
|
+
},
|
|
106
|
+
menuItem: {
|
|
107
|
+
flexDirection: 'row',
|
|
108
|
+
alignItems: 'center',
|
|
109
|
+
padding: 16,
|
|
110
|
+
borderBottomWidth: 1,
|
|
111
|
+
borderBottomColor: '#f0f0f0',
|
|
112
|
+
},
|
|
113
|
+
menuItemIcon: {
|
|
114
|
+
fontSize: 24,
|
|
115
|
+
marginRight: 16,
|
|
116
|
+
},
|
|
117
|
+
menuItemText: {
|
|
118
|
+
fontSize: 16,
|
|
119
|
+
color: '#333',
|
|
120
|
+
},
|
|
121
|
+
});
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
View,
|
|
4
|
+
Text,
|
|
5
|
+
StyleSheet,
|
|
6
|
+
SafeAreaView,
|
|
7
|
+
ScrollView,
|
|
8
|
+
TouchableOpacity,
|
|
9
|
+
} from 'react-native';
|
|
10
|
+
|
|
11
|
+
interface StatCardProps {
|
|
12
|
+
title: string;
|
|
13
|
+
value: string;
|
|
14
|
+
icon: string;
|
|
15
|
+
color: string;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const StatCard: React.FC<StatCardProps> = ({ title, value, icon, color }) => {
|
|
19
|
+
return (
|
|
20
|
+
<View style={[styles.statCard, { backgroundColor: color }]}>
|
|
21
|
+
<Text style={styles.statIcon}>{icon}</Text>
|
|
22
|
+
<Text style={styles.statValue}>{value}</Text>
|
|
23
|
+
<Text style={styles.statTitle}>{title}</Text>
|
|
24
|
+
</View>
|
|
25
|
+
);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export default function ReportsScreen() {
|
|
29
|
+
return (
|
|
30
|
+
<SafeAreaView style={styles.container}>
|
|
31
|
+
<View style={styles.header}>
|
|
32
|
+
<Text style={styles.headerTitle}>Reports</Text>
|
|
33
|
+
</View>
|
|
34
|
+
<ScrollView style={styles.scrollView}>
|
|
35
|
+
<View style={styles.statsGrid}>
|
|
36
|
+
<StatCard
|
|
37
|
+
title="Total Campaigns"
|
|
38
|
+
value="24"
|
|
39
|
+
icon="📧"
|
|
40
|
+
color="#e3f2fd"
|
|
41
|
+
/>
|
|
42
|
+
<StatCard
|
|
43
|
+
title="Active Contacts"
|
|
44
|
+
value="1,234"
|
|
45
|
+
icon="👥"
|
|
46
|
+
color="#f3e5f5"
|
|
47
|
+
/>
|
|
48
|
+
<StatCard
|
|
49
|
+
title="Total Views"
|
|
50
|
+
value="5,678"
|
|
51
|
+
icon="👁️"
|
|
52
|
+
color="#e8f5e9"
|
|
53
|
+
/>
|
|
54
|
+
<StatCard title="Conversions" value="89" icon="✅" color="#fff3e0" />
|
|
55
|
+
</View>
|
|
56
|
+
|
|
57
|
+
<View style={styles.section}>
|
|
58
|
+
<Text style={styles.sectionTitle}>Recent Activity</Text>
|
|
59
|
+
|
|
60
|
+
<TouchableOpacity style={styles.activityItem}>
|
|
61
|
+
<View style={styles.activityIcon}>
|
|
62
|
+
<Text style={styles.activityIconText}>📊</Text>
|
|
63
|
+
</View>
|
|
64
|
+
<View style={styles.activityContent}>
|
|
65
|
+
<Text style={styles.activityTitle}>Campaign Analytics</Text>
|
|
66
|
+
<Text style={styles.activityDescription}>
|
|
67
|
+
View detailed analytics for your campaigns
|
|
68
|
+
</Text>
|
|
69
|
+
</View>
|
|
70
|
+
</TouchableOpacity>
|
|
71
|
+
|
|
72
|
+
<TouchableOpacity style={styles.activityItem}>
|
|
73
|
+
<View style={styles.activityIcon}>
|
|
74
|
+
<Text style={styles.activityIconText}>📈</Text>
|
|
75
|
+
</View>
|
|
76
|
+
<View style={styles.activityContent}>
|
|
77
|
+
<Text style={styles.activityTitle}>Performance Report</Text>
|
|
78
|
+
<Text style={styles.activityDescription}>
|
|
79
|
+
Monthly performance summary
|
|
80
|
+
</Text>
|
|
81
|
+
</View>
|
|
82
|
+
</TouchableOpacity>
|
|
83
|
+
|
|
84
|
+
<TouchableOpacity style={styles.activityItem}>
|
|
85
|
+
<View style={styles.activityIcon}>
|
|
86
|
+
<Text style={styles.activityIconText}>💰</Text>
|
|
87
|
+
</View>
|
|
88
|
+
<View style={styles.activityContent}>
|
|
89
|
+
<Text style={styles.activityTitle}>Revenue Report</Text>
|
|
90
|
+
<Text style={styles.activityDescription}>
|
|
91
|
+
Track your earnings and revenue
|
|
92
|
+
</Text>
|
|
93
|
+
</View>
|
|
94
|
+
</TouchableOpacity>
|
|
95
|
+
</View>
|
|
96
|
+
</ScrollView>
|
|
97
|
+
</SafeAreaView>
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const styles = StyleSheet.create({
|
|
102
|
+
container: {
|
|
103
|
+
flex: 1,
|
|
104
|
+
backgroundColor: '#f5f5f5',
|
|
105
|
+
},
|
|
106
|
+
header: {
|
|
107
|
+
backgroundColor: '#fff',
|
|
108
|
+
padding: 16,
|
|
109
|
+
borderBottomWidth: 1,
|
|
110
|
+
borderBottomColor: '#e0e0e0',
|
|
111
|
+
},
|
|
112
|
+
headerTitle: {
|
|
113
|
+
fontSize: 20,
|
|
114
|
+
fontWeight: '600',
|
|
115
|
+
color: '#333',
|
|
116
|
+
textAlign: 'center',
|
|
117
|
+
},
|
|
118
|
+
scrollView: {
|
|
119
|
+
flex: 1,
|
|
120
|
+
},
|
|
121
|
+
statsGrid: {
|
|
122
|
+
flexDirection: 'row',
|
|
123
|
+
flexWrap: 'wrap',
|
|
124
|
+
padding: 8,
|
|
125
|
+
justifyContent: 'space-between',
|
|
126
|
+
},
|
|
127
|
+
statCard: {
|
|
128
|
+
width: '48%',
|
|
129
|
+
padding: 20,
|
|
130
|
+
borderRadius: 12,
|
|
131
|
+
alignItems: 'center',
|
|
132
|
+
marginBottom: 16,
|
|
133
|
+
},
|
|
134
|
+
statIcon: {
|
|
135
|
+
fontSize: 32,
|
|
136
|
+
marginBottom: 8,
|
|
137
|
+
},
|
|
138
|
+
statValue: {
|
|
139
|
+
fontSize: 24,
|
|
140
|
+
fontWeight: '700',
|
|
141
|
+
color: '#333',
|
|
142
|
+
marginBottom: 4,
|
|
143
|
+
},
|
|
144
|
+
statTitle: {
|
|
145
|
+
fontSize: 12,
|
|
146
|
+
color: '#666',
|
|
147
|
+
textAlign: 'center',
|
|
148
|
+
},
|
|
149
|
+
section: {
|
|
150
|
+
padding: 16,
|
|
151
|
+
},
|
|
152
|
+
sectionTitle: {
|
|
153
|
+
fontSize: 18,
|
|
154
|
+
fontWeight: '600',
|
|
155
|
+
color: '#333',
|
|
156
|
+
marginBottom: 16,
|
|
157
|
+
},
|
|
158
|
+
activityItem: {
|
|
159
|
+
backgroundColor: '#fff',
|
|
160
|
+
flexDirection: 'row',
|
|
161
|
+
padding: 16,
|
|
162
|
+
borderRadius: 12,
|
|
163
|
+
marginBottom: 12,
|
|
164
|
+
alignItems: 'center',
|
|
165
|
+
},
|
|
166
|
+
activityIcon: {
|
|
167
|
+
width: 48,
|
|
168
|
+
height: 48,
|
|
169
|
+
borderRadius: 24,
|
|
170
|
+
backgroundColor: '#f5f5f5',
|
|
171
|
+
justifyContent: 'center',
|
|
172
|
+
alignItems: 'center',
|
|
173
|
+
marginRight: 16,
|
|
174
|
+
},
|
|
175
|
+
activityIconText: {
|
|
176
|
+
fontSize: 24,
|
|
177
|
+
},
|
|
178
|
+
activityContent: {
|
|
179
|
+
flex: 1,
|
|
180
|
+
},
|
|
181
|
+
activityTitle: {
|
|
182
|
+
fontSize: 16,
|
|
183
|
+
fontWeight: '600',
|
|
184
|
+
color: '#333',
|
|
185
|
+
marginBottom: 4,
|
|
186
|
+
},
|
|
187
|
+
activityDescription: {
|
|
188
|
+
fontSize: 14,
|
|
189
|
+
color: '#666',
|
|
190
|
+
},
|
|
191
|
+
});
|