react-native-salespanda 0.1.1 → 0.3.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/SalespandaApp.js +56 -0
- package/lib/module/SalespandaApp.js.map +1 -0
- package/lib/module/config/SalespandaConfig.js +68 -0
- package/lib/module/config/SalespandaConfig.js.map +1 -0
- package/lib/module/index.js +35 -5
- package/lib/module/index.js.map +1 -1
- package/lib/module/navigation/AppNavigator.js +18 -0
- package/lib/module/navigation/AppNavigator.js.map +1 -0
- package/lib/module/navigation/BottomTabNavigator.js +97 -0
- package/lib/module/navigation/BottomTabNavigator.js.map +1 -0
- package/lib/module/navigation/DrawerNavigator.js +223 -0
- package/lib/module/navigation/DrawerNavigator.js.map +1 -0
- package/lib/module/screens/HomeScreen.js +68 -152
- 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/SalespandaApp.d.ts +39 -0
- package/lib/typescript/src/SalespandaApp.d.ts.map +1 -0
- package/lib/typescript/src/config/SalespandaConfig.d.ts +52 -0
- package/lib/typescript/src/config/SalespandaConfig.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +24 -1
- 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 +18 -2
- package/src/SalespandaApp.tsx +92 -0
- package/src/config/SalespandaConfig.ts +105 -0
- package/src/index.tsx +42 -5
- package/src/navigation/AppNavigator.tsx +13 -0
- package/src/navigation/BottomTabNavigator.tsx +68 -0
- package/src/navigation/DrawerNavigator.tsx +242 -0
- package/src/screens/HomeScreen.tsx +39 -117
- 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
|
@@ -5,8 +5,6 @@ import {
|
|
|
5
5
|
StyleSheet,
|
|
6
6
|
TouchableOpacity,
|
|
7
7
|
ScrollView,
|
|
8
|
-
Image,
|
|
9
|
-
SafeAreaView,
|
|
10
8
|
} from 'react-native';
|
|
11
9
|
|
|
12
10
|
interface MenuItemProps {
|
|
@@ -28,117 +26,57 @@ const MenuItem: React.FC<MenuItemProps> = ({ title, icon, onPress }) => {
|
|
|
28
26
|
|
|
29
27
|
export default function HomeScreen() {
|
|
30
28
|
return (
|
|
31
|
-
<
|
|
32
|
-
{/*
|
|
33
|
-
<View style={styles.
|
|
34
|
-
<
|
|
35
|
-
<Text style={styles.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
{
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
<Text style={styles.bannerText}>
|
|
49
|
-
Build strong relationships,{'\n'}
|
|
50
|
-
improve relations & productivity{'\n'}
|
|
51
|
-
by having conversations on{'\n'}
|
|
52
|
-
WhatsAppppppppp.
|
|
53
|
-
</Text>
|
|
54
|
-
<TouchableOpacity style={styles.startButton}>
|
|
55
|
-
<Text style={styles.startButtonText}>Start Sharing →</Text>
|
|
56
|
-
</TouchableOpacity>
|
|
57
|
-
</View>
|
|
58
|
-
<View style={styles.whatsappIconContainer}>
|
|
59
|
-
<View style={styles.whatsappIcon}>
|
|
60
|
-
<Text style={styles.whatsappText}>📱</Text>
|
|
61
|
-
</View>
|
|
29
|
+
<ScrollView style={styles.scrollView}>
|
|
30
|
+
{/* WhatsApp Banner */}
|
|
31
|
+
<View style={styles.banner}>
|
|
32
|
+
<View style={styles.bannerContent}>
|
|
33
|
+
<Text style={styles.bannerText}>
|
|
34
|
+
Build strong relationships,{'\n'}
|
|
35
|
+
improve relations & productivity{'\n'}
|
|
36
|
+
by having conversations on{'\n'}
|
|
37
|
+
WhatsAppppppppp.
|
|
38
|
+
</Text>
|
|
39
|
+
<TouchableOpacity style={styles.startButton}>
|
|
40
|
+
<Text style={styles.startButtonText}>Start Sharing →</Text>
|
|
41
|
+
</TouchableOpacity>
|
|
42
|
+
</View>
|
|
43
|
+
<View style={styles.whatsappIconContainer}>
|
|
44
|
+
<View style={styles.whatsappIcon}>
|
|
45
|
+
<Text style={styles.whatsappText}>📱</Text>
|
|
62
46
|
</View>
|
|
63
47
|
</View>
|
|
48
|
+
</View>
|
|
64
49
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
50
|
+
{/* Carousel Indicators */}
|
|
51
|
+
<View style={styles.carouselIndicators}>
|
|
52
|
+
<View style={[styles.indicator, styles.activeIndicator]} />
|
|
53
|
+
<View style={styles.indicator} />
|
|
54
|
+
<View style={styles.indicator} />
|
|
55
|
+
</View>
|
|
71
56
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
*/}
|
|
78
|
-
<MenuItem title="Social Setup" icon="📢" />
|
|
79
|
-
<MenuItem title="Microsite Setup" icon="⚙️" />
|
|
80
|
-
<MenuItem title="Proposal" icon="📋" />
|
|
57
|
+
{/* Menu Grid */}
|
|
58
|
+
<View style={styles.menuGrid}>
|
|
59
|
+
<MenuItem title="Content Library" icon="📚" />
|
|
60
|
+
<MenuItem title="Buy Now" icon="🛒" />
|
|
61
|
+
<MenuItem title="Quiz & Calculator" icon="🧮" />
|
|
81
62
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
63
|
+
<MenuItem title="Social Setup" icon="📢" />
|
|
64
|
+
<MenuItem title="Microsite Setup" icon="⚙️" />
|
|
65
|
+
<MenuItem title="Proposal" icon="📋" />
|
|
85
66
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
</View>
|
|
90
|
-
</ScrollView>
|
|
67
|
+
<MenuItem title="Email Campaign" icon="📧" />
|
|
68
|
+
<MenuItem title="View Microsite" icon="🎵" />
|
|
69
|
+
<MenuItem title="Import Contact" icon="📄" />
|
|
91
70
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
<
|
|
95
|
-
<Text style={styles.navIcon}>🏠</Text>
|
|
96
|
-
</TouchableOpacity>
|
|
97
|
-
<TouchableOpacity style={styles.navItem}>
|
|
98
|
-
<Text style={styles.navIcon}>💎</Text>
|
|
99
|
-
</TouchableOpacity>
|
|
100
|
-
<TouchableOpacity style={styles.navItem}>
|
|
101
|
-
<Text style={styles.navIcon}>🔔</Text>
|
|
102
|
-
</TouchableOpacity>
|
|
103
|
-
<TouchableOpacity style={styles.navItem}>
|
|
104
|
-
<Text style={styles.navIcon}>📊</Text>
|
|
105
|
-
</TouchableOpacity>
|
|
71
|
+
<MenuItem title="Poster Of The Week" icon="🖼️" />
|
|
72
|
+
<MenuItem title="DigiCard" icon="👤" />
|
|
73
|
+
<MenuItem title="Help Videos" icon="❓" />
|
|
106
74
|
</View>
|
|
107
|
-
</
|
|
75
|
+
</ScrollView>
|
|
108
76
|
);
|
|
109
77
|
}
|
|
110
78
|
|
|
111
79
|
const styles = StyleSheet.create({
|
|
112
|
-
container: {
|
|
113
|
-
flex: 1,
|
|
114
|
-
backgroundColor: '#fff',
|
|
115
|
-
},
|
|
116
|
-
header: {
|
|
117
|
-
flexDirection: 'row',
|
|
118
|
-
alignItems: 'center',
|
|
119
|
-
justifyContent: 'space-between',
|
|
120
|
-
padding: 16,
|
|
121
|
-
backgroundColor: '#fff',
|
|
122
|
-
borderBottomWidth: 1,
|
|
123
|
-
borderBottomColor: '#e0e0e0',
|
|
124
|
-
},
|
|
125
|
-
menuButton: {
|
|
126
|
-
padding: 4,
|
|
127
|
-
},
|
|
128
|
-
menuIcon: {
|
|
129
|
-
fontSize: 24,
|
|
130
|
-
color: '#333',
|
|
131
|
-
},
|
|
132
|
-
headerTitle: {
|
|
133
|
-
fontSize: 18,
|
|
134
|
-
fontWeight: '600',
|
|
135
|
-
color: '#333',
|
|
136
|
-
},
|
|
137
|
-
logo: {
|
|
138
|
-
width: 40,
|
|
139
|
-
height: 40,
|
|
140
|
-
borderRadius: 20,
|
|
141
|
-
},
|
|
142
80
|
scrollView: {
|
|
143
81
|
flex: 1,
|
|
144
82
|
},
|
|
@@ -247,20 +185,4 @@ const styles = StyleSheet.create({
|
|
|
247
185
|
color: '#333',
|
|
248
186
|
fontWeight: '500',
|
|
249
187
|
},
|
|
250
|
-
bottomNav: {
|
|
251
|
-
flexDirection: 'row',
|
|
252
|
-
backgroundColor: '#fff',
|
|
253
|
-
borderTopWidth: 1,
|
|
254
|
-
borderTopColor: '#e0e0e0',
|
|
255
|
-
paddingVertical: 8,
|
|
256
|
-
justifyContent: 'space-around',
|
|
257
|
-
},
|
|
258
|
-
navItem: {
|
|
259
|
-
flex: 1,
|
|
260
|
-
alignItems: 'center',
|
|
261
|
-
paddingVertical: 8,
|
|
262
|
-
},
|
|
263
|
-
navIcon: {
|
|
264
|
-
fontSize: 24,
|
|
265
|
-
},
|
|
266
188
|
});
|
|
@@ -0,0 +1,135 @@
|
|
|
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 NotificationItemProps {
|
|
12
|
+
title: string;
|
|
13
|
+
message: string;
|
|
14
|
+
time: string;
|
|
15
|
+
unread?: boolean;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const NotificationItem: React.FC<NotificationItemProps> = ({
|
|
19
|
+
title,
|
|
20
|
+
message,
|
|
21
|
+
time,
|
|
22
|
+
unread = false,
|
|
23
|
+
}) => {
|
|
24
|
+
return (
|
|
25
|
+
<TouchableOpacity
|
|
26
|
+
style={[styles.notificationItem, unread && styles.unreadItem]}
|
|
27
|
+
>
|
|
28
|
+
<View style={styles.notificationContent}>
|
|
29
|
+
<Text style={styles.notificationTitle}>{title}</Text>
|
|
30
|
+
<Text style={styles.notificationMessage}>{message}</Text>
|
|
31
|
+
<Text style={styles.notificationTime}>{time}</Text>
|
|
32
|
+
</View>
|
|
33
|
+
{unread && <View style={styles.unreadDot} />}
|
|
34
|
+
</TouchableOpacity>
|
|
35
|
+
);
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export default function NotificationsScreen() {
|
|
39
|
+
return (
|
|
40
|
+
<SafeAreaView style={styles.container}>
|
|
41
|
+
<View style={styles.header}>
|
|
42
|
+
<Text style={styles.headerTitle}>Notifications</Text>
|
|
43
|
+
</View>
|
|
44
|
+
<ScrollView style={styles.scrollView}>
|
|
45
|
+
<NotificationItem
|
|
46
|
+
title="New Message"
|
|
47
|
+
message="You have a new message from support team"
|
|
48
|
+
time="2 minutes ago"
|
|
49
|
+
unread={true}
|
|
50
|
+
/>
|
|
51
|
+
<NotificationItem
|
|
52
|
+
title="Update Available"
|
|
53
|
+
message="A new version of the app is available"
|
|
54
|
+
time="1 hour ago"
|
|
55
|
+
unread={true}
|
|
56
|
+
/>
|
|
57
|
+
<NotificationItem
|
|
58
|
+
title="Campaign Success"
|
|
59
|
+
message="Your email campaign has been sent successfully"
|
|
60
|
+
time="3 hours ago"
|
|
61
|
+
/>
|
|
62
|
+
<NotificationItem
|
|
63
|
+
title="Reminder"
|
|
64
|
+
message="Don't forget to check your proposals"
|
|
65
|
+
time="Yesterday"
|
|
66
|
+
/>
|
|
67
|
+
<NotificationItem
|
|
68
|
+
title="Welcome"
|
|
69
|
+
message="Welcome to Salespanda! Get started with your first campaign"
|
|
70
|
+
time="2 days ago"
|
|
71
|
+
/>
|
|
72
|
+
</ScrollView>
|
|
73
|
+
</SafeAreaView>
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const styles = StyleSheet.create({
|
|
78
|
+
container: {
|
|
79
|
+
flex: 1,
|
|
80
|
+
backgroundColor: '#f5f5f5',
|
|
81
|
+
},
|
|
82
|
+
header: {
|
|
83
|
+
backgroundColor: '#fff',
|
|
84
|
+
padding: 16,
|
|
85
|
+
borderBottomWidth: 1,
|
|
86
|
+
borderBottomColor: '#e0e0e0',
|
|
87
|
+
},
|
|
88
|
+
headerTitle: {
|
|
89
|
+
fontSize: 20,
|
|
90
|
+
fontWeight: '600',
|
|
91
|
+
color: '#333',
|
|
92
|
+
textAlign: 'center',
|
|
93
|
+
},
|
|
94
|
+
scrollView: {
|
|
95
|
+
flex: 1,
|
|
96
|
+
},
|
|
97
|
+
notificationItem: {
|
|
98
|
+
backgroundColor: '#fff',
|
|
99
|
+
padding: 16,
|
|
100
|
+
marginHorizontal: 16,
|
|
101
|
+
marginTop: 16,
|
|
102
|
+
borderRadius: 12,
|
|
103
|
+
flexDirection: 'row',
|
|
104
|
+
justifyContent: 'space-between',
|
|
105
|
+
alignItems: 'center',
|
|
106
|
+
},
|
|
107
|
+
unreadItem: {
|
|
108
|
+
backgroundColor: '#f0f4ff',
|
|
109
|
+
},
|
|
110
|
+
notificationContent: {
|
|
111
|
+
flex: 1,
|
|
112
|
+
},
|
|
113
|
+
notificationTitle: {
|
|
114
|
+
fontSize: 16,
|
|
115
|
+
fontWeight: '600',
|
|
116
|
+
color: '#333',
|
|
117
|
+
marginBottom: 4,
|
|
118
|
+
},
|
|
119
|
+
notificationMessage: {
|
|
120
|
+
fontSize: 14,
|
|
121
|
+
color: '#666',
|
|
122
|
+
marginBottom: 8,
|
|
123
|
+
},
|
|
124
|
+
notificationTime: {
|
|
125
|
+
fontSize: 12,
|
|
126
|
+
color: '#999',
|
|
127
|
+
},
|
|
128
|
+
unreadDot: {
|
|
129
|
+
width: 10,
|
|
130
|
+
height: 10,
|
|
131
|
+
borderRadius: 5,
|
|
132
|
+
backgroundColor: '#4a148c',
|
|
133
|
+
marginLeft: 12,
|
|
134
|
+
},
|
|
135
|
+
});
|
|
@@ -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
|
+
});
|