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 @@
|
|
|
1
|
+
{"version":3,"file":"PremiumScreen.d.ts","sourceRoot":"","sources":["../../../../src/screens/PremiumScreen.tsx"],"names":[],"mappings":"AA8DA,MAAM,CAAC,OAAO,UAAU,aAAa,4CA2DpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProfileScreen.d.ts","sourceRoot":"","sources":["../../../../src/screens/ProfileScreen.tsx"],"names":[],"mappings":"AASA,MAAM,CAAC,OAAO,UAAU,aAAa,4CA6CpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportsScreen.d.ts","sourceRoot":"","sources":["../../../../src/screens/ReportsScreen.tsx"],"names":[],"mappings":"AA2BA,MAAM,CAAC,OAAO,UAAU,aAAa,4CAuEpC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-salespanda",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "sdk",
|
|
5
5
|
"main": "./lib/module/index.js",
|
|
6
6
|
"types": "./lib/typescript/src/index.d.ts",
|
|
@@ -160,5 +160,14 @@
|
|
|
160
160
|
"languages": "kotlin-objc",
|
|
161
161
|
"type": "turbo-module",
|
|
162
162
|
"version": "0.54.8"
|
|
163
|
+
},
|
|
164
|
+
"dependencies": {
|
|
165
|
+
"@react-navigation/bottom-tabs": "^7.8.2",
|
|
166
|
+
"@react-navigation/drawer": "^7.7.2",
|
|
167
|
+
"@react-navigation/native": "^7.1.19",
|
|
168
|
+
"react-native-gesture-handler": "^2.29.1",
|
|
169
|
+
"react-native-reanimated": "^4.1.3",
|
|
170
|
+
"react-native-safe-area-context": "^5.6.2",
|
|
171
|
+
"react-native-screens": "^4.18.0"
|
|
163
172
|
}
|
|
164
173
|
}
|
package/src/index.tsx
CHANGED
|
@@ -4,5 +4,14 @@ export function multiply(a: number, b: number): number {
|
|
|
4
4
|
return Salespanda.multiply(a, b);
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
+
// Export navigation
|
|
8
|
+
export { default as AppNavigator } from './navigation/AppNavigator';
|
|
9
|
+
export { default as DrawerNavigator } from './navigation/DrawerNavigator';
|
|
10
|
+
export { default as BottomTabNavigator } from './navigation/BottomTabNavigator';
|
|
11
|
+
|
|
7
12
|
// Export screens
|
|
8
13
|
export { default as HomeScreen } from './screens/HomeScreen';
|
|
14
|
+
export { default as ProfileScreen } from './screens/ProfileScreen';
|
|
15
|
+
export { default as NotificationsScreen } from './screens/NotificationsScreen';
|
|
16
|
+
export { default as ReportsScreen } from './screens/ReportsScreen';
|
|
17
|
+
export { default as PremiumScreen } from './screens/PremiumScreen';
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
|
|
2
|
+
import { Text } from 'react-native';
|
|
3
|
+
import HomeScreen from '../screens/HomeScreen';
|
|
4
|
+
import PremiumScreen from '../screens/PremiumScreen';
|
|
5
|
+
import NotificationsScreen from '../screens/NotificationsScreen';
|
|
6
|
+
import ReportsScreen from '../screens/ReportsScreen';
|
|
7
|
+
|
|
8
|
+
const Tab = createBottomTabNavigator();
|
|
9
|
+
|
|
10
|
+
export default function BottomTabNavigator() {
|
|
11
|
+
return (
|
|
12
|
+
<Tab.Navigator
|
|
13
|
+
screenOptions={{
|
|
14
|
+
headerShown: false,
|
|
15
|
+
tabBarActiveTintColor: '#4a148c',
|
|
16
|
+
tabBarInactiveTintColor: '#999',
|
|
17
|
+
tabBarStyle: {
|
|
18
|
+
borderTopWidth: 1,
|
|
19
|
+
borderTopColor: '#e0e0e0',
|
|
20
|
+
paddingBottom: 8,
|
|
21
|
+
paddingTop: 8,
|
|
22
|
+
height: 60,
|
|
23
|
+
},
|
|
24
|
+
}}
|
|
25
|
+
>
|
|
26
|
+
<Tab.Screen
|
|
27
|
+
name="Home"
|
|
28
|
+
component={HomeScreen}
|
|
29
|
+
options={{
|
|
30
|
+
tabBarIcon: ({ color, size }) => (
|
|
31
|
+
<Text style={{ fontSize: size, color }}>🏠</Text>
|
|
32
|
+
),
|
|
33
|
+
}}
|
|
34
|
+
/>
|
|
35
|
+
<Tab.Screen
|
|
36
|
+
name="Premium"
|
|
37
|
+
component={PremiumScreen}
|
|
38
|
+
options={{
|
|
39
|
+
tabBarIcon: ({ color, size }) => (
|
|
40
|
+
<Text style={{ fontSize: size, color }}>💎</Text>
|
|
41
|
+
),
|
|
42
|
+
}}
|
|
43
|
+
/>
|
|
44
|
+
<Tab.Screen
|
|
45
|
+
name="Notifications"
|
|
46
|
+
component={NotificationsScreen}
|
|
47
|
+
options={{
|
|
48
|
+
tabBarIcon: ({ color, size }) => (
|
|
49
|
+
<Text style={{ fontSize: size, color }}>🔔</Text>
|
|
50
|
+
),
|
|
51
|
+
}}
|
|
52
|
+
/>
|
|
53
|
+
<Tab.Screen
|
|
54
|
+
name="Reports"
|
|
55
|
+
component={ReportsScreen}
|
|
56
|
+
options={{
|
|
57
|
+
tabBarIcon: ({ color, size }) => (
|
|
58
|
+
<Text style={{ fontSize: size, color }}>📊</Text>
|
|
59
|
+
),
|
|
60
|
+
}}
|
|
61
|
+
/>
|
|
62
|
+
</Tab.Navigator>
|
|
63
|
+
);
|
|
64
|
+
}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { createDrawerNavigator } from '@react-navigation/drawer';
|
|
3
|
+
import {
|
|
4
|
+
View,
|
|
5
|
+
Text,
|
|
6
|
+
StyleSheet,
|
|
7
|
+
TouchableOpacity,
|
|
8
|
+
Image,
|
|
9
|
+
ScrollView,
|
|
10
|
+
} from 'react-native';
|
|
11
|
+
import BottomTabNavigator from './BottomTabNavigator';
|
|
12
|
+
import ProfileScreen from '../screens/ProfileScreen';
|
|
13
|
+
|
|
14
|
+
const Drawer = createDrawerNavigator();
|
|
15
|
+
|
|
16
|
+
interface DrawerItemProps {
|
|
17
|
+
label: string;
|
|
18
|
+
icon: string;
|
|
19
|
+
onPress: () => void;
|
|
20
|
+
active?: boolean;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const DrawerItem: React.FC<DrawerItemProps> = ({
|
|
24
|
+
label,
|
|
25
|
+
icon,
|
|
26
|
+
onPress,
|
|
27
|
+
active = false,
|
|
28
|
+
}) => {
|
|
29
|
+
return (
|
|
30
|
+
<TouchableOpacity
|
|
31
|
+
style={[styles.drawerItem, active && styles.activeDrawerItem]}
|
|
32
|
+
onPress={onPress}
|
|
33
|
+
>
|
|
34
|
+
<Text style={styles.drawerIcon}>{icon}</Text>
|
|
35
|
+
<Text style={[styles.drawerLabel, active && styles.activeDrawerLabel]}>
|
|
36
|
+
{label}
|
|
37
|
+
</Text>
|
|
38
|
+
</TouchableOpacity>
|
|
39
|
+
);
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
function CustomDrawerContent(props: any) {
|
|
43
|
+
const { navigation, state } = props;
|
|
44
|
+
const currentRoute = state.routes[state.index].name;
|
|
45
|
+
|
|
46
|
+
return (
|
|
47
|
+
<View style={styles.drawerContainer}>
|
|
48
|
+
<View style={styles.drawerHeader}>
|
|
49
|
+
<Image
|
|
50
|
+
source={{ uri: 'https://via.placeholder.com/80x80' }}
|
|
51
|
+
style={styles.drawerAvatar}
|
|
52
|
+
/>
|
|
53
|
+
<Text style={styles.drawerName}>John Doe</Text>
|
|
54
|
+
<Text style={styles.drawerEmail}>john.doe@example.com</Text>
|
|
55
|
+
</View>
|
|
56
|
+
|
|
57
|
+
<ScrollView style={styles.drawerContent}>
|
|
58
|
+
<DrawerItem
|
|
59
|
+
label="Home"
|
|
60
|
+
icon="🏠"
|
|
61
|
+
active={currentRoute === 'HomeTabs'}
|
|
62
|
+
onPress={() => navigation.navigate('HomeTabs')}
|
|
63
|
+
/>
|
|
64
|
+
<DrawerItem
|
|
65
|
+
label="Profile"
|
|
66
|
+
icon="👤"
|
|
67
|
+
active={currentRoute === 'Profile'}
|
|
68
|
+
onPress={() => navigation.navigate('Profile')}
|
|
69
|
+
/>
|
|
70
|
+
<DrawerItem
|
|
71
|
+
label="Social Setup"
|
|
72
|
+
icon="📢"
|
|
73
|
+
onPress={() => {
|
|
74
|
+
/* Add navigation */
|
|
75
|
+
}}
|
|
76
|
+
/>
|
|
77
|
+
<DrawerItem
|
|
78
|
+
label="Microsite Setup"
|
|
79
|
+
icon="⚙️"
|
|
80
|
+
onPress={() => {
|
|
81
|
+
/* Add navigation */
|
|
82
|
+
}}
|
|
83
|
+
/>
|
|
84
|
+
<DrawerItem
|
|
85
|
+
label="Proposal"
|
|
86
|
+
icon="📋"
|
|
87
|
+
onPress={() => {
|
|
88
|
+
/* Add navigation */
|
|
89
|
+
}}
|
|
90
|
+
/>
|
|
91
|
+
<DrawerItem
|
|
92
|
+
label="Email Campaign"
|
|
93
|
+
icon="📧"
|
|
94
|
+
onPress={() => {
|
|
95
|
+
/* Add navigation */
|
|
96
|
+
}}
|
|
97
|
+
/>
|
|
98
|
+
<DrawerItem
|
|
99
|
+
label="View Microsite"
|
|
100
|
+
icon="🎵"
|
|
101
|
+
onPress={() => {
|
|
102
|
+
/* Add navigation */
|
|
103
|
+
}}
|
|
104
|
+
/>
|
|
105
|
+
<DrawerItem
|
|
106
|
+
label="Import Contact"
|
|
107
|
+
icon="📄"
|
|
108
|
+
onPress={() => {
|
|
109
|
+
/* Add navigation */
|
|
110
|
+
}}
|
|
111
|
+
/>
|
|
112
|
+
|
|
113
|
+
<View style={styles.drawerDivider} />
|
|
114
|
+
|
|
115
|
+
<DrawerItem
|
|
116
|
+
label="Settings"
|
|
117
|
+
icon="⚙️"
|
|
118
|
+
onPress={() => {
|
|
119
|
+
/* Add navigation */
|
|
120
|
+
}}
|
|
121
|
+
/>
|
|
122
|
+
<DrawerItem
|
|
123
|
+
label="Help & Support"
|
|
124
|
+
icon="❓"
|
|
125
|
+
onPress={() => {
|
|
126
|
+
/* Add navigation */
|
|
127
|
+
}}
|
|
128
|
+
/>
|
|
129
|
+
<DrawerItem
|
|
130
|
+
label="Logout"
|
|
131
|
+
icon="🚪"
|
|
132
|
+
onPress={() => {
|
|
133
|
+
/* Add logout logic */
|
|
134
|
+
}}
|
|
135
|
+
/>
|
|
136
|
+
</ScrollView>
|
|
137
|
+
</View>
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export default function DrawerNavigator() {
|
|
142
|
+
return (
|
|
143
|
+
<Drawer.Navigator
|
|
144
|
+
drawerContent={(props) => <CustomDrawerContent {...props} />}
|
|
145
|
+
screenOptions={{
|
|
146
|
+
headerShown: true,
|
|
147
|
+
drawerType: 'front',
|
|
148
|
+
headerStyle: {
|
|
149
|
+
backgroundColor: '#4a148c',
|
|
150
|
+
},
|
|
151
|
+
headerTintColor: '#fff',
|
|
152
|
+
headerTitleStyle: {
|
|
153
|
+
fontWeight: '600',
|
|
154
|
+
},
|
|
155
|
+
}}
|
|
156
|
+
>
|
|
157
|
+
<Drawer.Screen
|
|
158
|
+
name="HomeTabs"
|
|
159
|
+
component={BottomTabNavigator}
|
|
160
|
+
options={{
|
|
161
|
+
title: 'Salespanda',
|
|
162
|
+
}}
|
|
163
|
+
/>
|
|
164
|
+
<Drawer.Screen
|
|
165
|
+
name="Profile"
|
|
166
|
+
component={ProfileScreen}
|
|
167
|
+
options={{
|
|
168
|
+
title: 'Profile',
|
|
169
|
+
}}
|
|
170
|
+
/>
|
|
171
|
+
</Drawer.Navigator>
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
const styles = StyleSheet.create({
|
|
176
|
+
drawerContainer: {
|
|
177
|
+
flex: 1,
|
|
178
|
+
backgroundColor: '#fff',
|
|
179
|
+
},
|
|
180
|
+
drawerHeader: {
|
|
181
|
+
backgroundColor: '#4a148c',
|
|
182
|
+
padding: 20,
|
|
183
|
+
paddingTop: 50,
|
|
184
|
+
alignItems: 'center',
|
|
185
|
+
},
|
|
186
|
+
drawerAvatar: {
|
|
187
|
+
width: 80,
|
|
188
|
+
height: 80,
|
|
189
|
+
borderRadius: 40,
|
|
190
|
+
marginBottom: 12,
|
|
191
|
+
borderWidth: 3,
|
|
192
|
+
borderColor: '#fff',
|
|
193
|
+
},
|
|
194
|
+
drawerName: {
|
|
195
|
+
fontSize: 18,
|
|
196
|
+
fontWeight: '600',
|
|
197
|
+
color: '#fff',
|
|
198
|
+
marginBottom: 4,
|
|
199
|
+
},
|
|
200
|
+
drawerEmail: {
|
|
201
|
+
fontSize: 14,
|
|
202
|
+
color: '#fff',
|
|
203
|
+
opacity: 0.8,
|
|
204
|
+
},
|
|
205
|
+
drawerContent: {
|
|
206
|
+
flex: 1,
|
|
207
|
+
paddingTop: 8,
|
|
208
|
+
},
|
|
209
|
+
drawerItem: {
|
|
210
|
+
flexDirection: 'row',
|
|
211
|
+
alignItems: 'center',
|
|
212
|
+
padding: 16,
|
|
213
|
+
paddingHorizontal: 20,
|
|
214
|
+
},
|
|
215
|
+
activeDrawerItem: {
|
|
216
|
+
backgroundColor: '#f5f5f5',
|
|
217
|
+
borderLeftWidth: 4,
|
|
218
|
+
borderLeftColor: '#4a148c',
|
|
219
|
+
},
|
|
220
|
+
drawerIcon: {
|
|
221
|
+
fontSize: 20,
|
|
222
|
+
marginRight: 16,
|
|
223
|
+
width: 24,
|
|
224
|
+
},
|
|
225
|
+
drawerLabel: {
|
|
226
|
+
fontSize: 16,
|
|
227
|
+
color: '#333',
|
|
228
|
+
},
|
|
229
|
+
activeDrawerLabel: {
|
|
230
|
+
fontWeight: '600',
|
|
231
|
+
color: '#4a148c',
|
|
232
|
+
},
|
|
233
|
+
drawerDivider: {
|
|
234
|
+
height: 1,
|
|
235
|
+
backgroundColor: '#e0e0e0',
|
|
236
|
+
marginVertical: 8,
|
|
237
|
+
},
|
|
238
|
+
});
|
|
@@ -88,22 +88,6 @@ export default function HomeScreen() {
|
|
|
88
88
|
<MenuItem title="Help Videos" icon="❓" />
|
|
89
89
|
</View>
|
|
90
90
|
</ScrollView>
|
|
91
|
-
|
|
92
|
-
{/* Bottom Navigation */}
|
|
93
|
-
<View style={styles.bottomNav}>
|
|
94
|
-
<TouchableOpacity style={styles.navItem}>
|
|
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>
|
|
106
|
-
</View>
|
|
107
91
|
</SafeAreaView>
|
|
108
92
|
);
|
|
109
93
|
}
|
|
@@ -247,20 +231,4 @@ const styles = StyleSheet.create({
|
|
|
247
231
|
color: '#333',
|
|
248
232
|
fontWeight: '500',
|
|
249
233
|
},
|
|
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
234
|
});
|
|
@@ -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
|
+
});
|