react-native-salespanda 0.1.0 → 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.
Files changed (45) hide show
  1. package/lib/module/index.js +9 -0
  2. package/lib/module/index.js.map +1 -1
  3. package/lib/module/navigation/AppNavigator.js +11 -0
  4. package/lib/module/navigation/AppNavigator.js.map +1 -0
  5. package/lib/module/navigation/BottomTabNavigator.js +88 -0
  6. package/lib/module/navigation/BottomTabNavigator.js.map +1 -0
  7. package/lib/module/navigation/DrawerNavigator.js +217 -0
  8. package/lib/module/navigation/DrawerNavigator.js.map +1 -0
  9. package/lib/module/screens/HomeScreen.js +0 -52
  10. package/lib/module/screens/HomeScreen.js.map +1 -1
  11. package/lib/module/screens/NotificationsScreen.js +127 -0
  12. package/lib/module/screens/NotificationsScreen.js.map +1 -0
  13. package/lib/module/screens/PremiumScreen.js +222 -0
  14. package/lib/module/screens/PremiumScreen.js.map +1 -0
  15. package/lib/module/screens/ProfileScreen.js +147 -0
  16. package/lib/module/screens/ProfileScreen.js.map +1 -0
  17. package/lib/module/screens/ReportsScreen.js +217 -0
  18. package/lib/module/screens/ReportsScreen.js.map +1 -0
  19. package/lib/typescript/src/index.d.ts +7 -0
  20. package/lib/typescript/src/index.d.ts.map +1 -1
  21. package/lib/typescript/src/navigation/AppNavigator.d.ts +2 -0
  22. package/lib/typescript/src/navigation/AppNavigator.d.ts.map +1 -0
  23. package/lib/typescript/src/navigation/BottomTabNavigator.d.ts +2 -0
  24. package/lib/typescript/src/navigation/BottomTabNavigator.d.ts.map +1 -0
  25. package/lib/typescript/src/navigation/DrawerNavigator.d.ts +2 -0
  26. package/lib/typescript/src/navigation/DrawerNavigator.d.ts.map +1 -0
  27. package/lib/typescript/src/screens/HomeScreen.d.ts.map +1 -1
  28. package/lib/typescript/src/screens/NotificationsScreen.d.ts +2 -0
  29. package/lib/typescript/src/screens/NotificationsScreen.d.ts.map +1 -0
  30. package/lib/typescript/src/screens/PremiumScreen.d.ts +2 -0
  31. package/lib/typescript/src/screens/PremiumScreen.d.ts.map +1 -0
  32. package/lib/typescript/src/screens/ProfileScreen.d.ts +2 -0
  33. package/lib/typescript/src/screens/ProfileScreen.d.ts.map +1 -0
  34. package/lib/typescript/src/screens/ReportsScreen.d.ts +2 -0
  35. package/lib/typescript/src/screens/ReportsScreen.d.ts.map +1 -0
  36. package/package.json +10 -1
  37. package/src/index.tsx +9 -0
  38. package/src/navigation/AppNavigator.tsx +10 -0
  39. package/src/navigation/BottomTabNavigator.tsx +64 -0
  40. package/src/navigation/DrawerNavigator.tsx +238 -0
  41. package/src/screens/HomeScreen.tsx +4 -36
  42. package/src/screens/NotificationsScreen.tsx +135 -0
  43. package/src/screens/PremiumScreen.tsx +250 -0
  44. package/src/screens/ProfileScreen.tsx +121 -0
  45. package/src/screens/ReportsScreen.tsx +191 -0
@@ -0,0 +1,2 @@
1
+ export default function PremiumScreen(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=PremiumScreen.d.ts.map
@@ -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,2 @@
1
+ export default function ProfileScreen(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=ProfileScreen.d.ts.map
@@ -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,2 @@
1
+ export default function ReportsScreen(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=ReportsScreen.d.ts.map
@@ -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.1.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,10 @@
1
+ import { NavigationContainer } from '@react-navigation/native';
2
+ import DrawerNavigator from './DrawerNavigator';
3
+
4
+ export default function AppNavigator() {
5
+ return (
6
+ <NavigationContainer>
7
+ <DrawerNavigator />
8
+ </NavigationContainer>
9
+ );
10
+ }
@@ -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
+ });
@@ -71,39 +71,23 @@ export default function HomeScreen() {
71
71
 
72
72
  {/* Menu Grid */}
73
73
  <View style={styles.menuGrid}>
74
- <MenuItem title="Content Library" icon="📚" />
74
+ {/* <MenuItem title="Content Library" icon="📚" />
75
75
  <MenuItem title="Buy Now" icon="🛒" />
76
76
  <MenuItem title="Quiz & Calculator" icon="🧮" />
77
-
77
+ */}
78
78
  <MenuItem title="Social Setup" icon="📢" />
79
79
  <MenuItem title="Microsite Setup" icon="⚙️" />
80
80
  <MenuItem title="Proposal" icon="📋" />
81
-
81
+
82
82
  <MenuItem title="Email Campaign" icon="📧" />
83
83
  <MenuItem title="View Microsite" icon="🎵" />
84
84
  <MenuItem title="Import Contact" icon="📄" />
85
-
85
+
86
86
  <MenuItem title="Poster Of The Week" icon="🖼️" />
87
87
  <MenuItem title="DigiCard" icon="👤" />
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
+ });