Browse Source

en folders

Dayan 1 year ago
parent
commit
af7e557573
16 changed files with 47009 additions and 5435 deletions
  1. 81
    14
      App.js
  2. 2
    2
      app.json
  3. BIN
      assets/logo.png
  4. 5
    0
      babel.config.js
  5. 36133
    0
      package-lock.json
  6. 21
    2
      package.json
  7. 16
    0
      routes/drawer.js
  8. 37
    0
      routes/homeStack.js
  9. 69
    0
      screens/about.js
  10. 18
    0
      screens/account.js
  11. 17
    0
      screens/calendar.js
  12. 17
    0
      screens/donar.js
  13. 17
    0
      screens/gallery.js
  14. 17
    0
      screens/solicitar.js
  15. 44
    0
      shared/header.js
  16. 10515
    5417
      yarn.lock

+ 81
- 14
App.js View File

@@ -1,20 +1,87 @@
1
-import { StatusBar } from 'expo-status-bar';
2
-import { StyleSheet, Text, View } from 'react-native';
1
+import * as React from 'react';
2
+import { Button, View, Image} from 'react-native';
3
+import { createDrawerNavigator } from '@react-navigation/drawer';
4
+import { NavigationContainer } from '@react-navigation/native';
5
+import About from './screens/about';
6
+import Gallery from './screens/gallery';
7
+import Calendario from './screens/calendar';
8
+import Donate from './screens/donar';
9
+import Solicitar from './screens/solicitar';
10
+import Account from './screens/account';
11
+import Header from './shared/header';
3 12
 
4
-export default function App() {
13
+const screens = {
14
+  About: {
15
+      screen: About,
16
+      navigationOptions: ({navigation}) => {
17
+          return {
18
+              headerTitle: () => <Header navigation={navigation}/>,
19
+          }
20
+      }
21
+  },
22
+}
23
+
24
+function HomeScreen({ navigation }) {
5 25
   return (
6
-    <View style={styles.container}>
7
-      <Text>Open up App.js to start working on your app!</Text>
8
-      <StatusBar style="auto" />
26
+    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
27
+      <Button
28
+        onPress={() => navigation.navigate('Notifications')}
29
+        title="Go to notifications"
30
+      />
9 31
     </View>
10 32
   );
11 33
 }
12 34
 
13
-const styles = StyleSheet.create({
14
-  container: {
15
-    flex: 1,
16
-    backgroundColor: '#fff',
17
-    alignItems: 'center',
18
-    justifyContent: 'center',
19
-  },
20
-});
35
+function NotificationsScreen({ navigation }) {
36
+  return (
37
+    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
38
+      <Button onPress={() => navigation.goBack()} title="Go back home" />
39
+    </View>
40
+  );
41
+}
42
+
43
+
44
+
45
+const Drawer = createDrawerNavigator();
46
+
47
+export default function App() {
48
+  return (
49
+    <NavigationContainer >
50
+      <Drawer.Navigator initialRouteName="Home">
51
+        <Drawer.Screen name="Sobre nosotros" component={About} options={({navigation}) => {
52
+          return {
53
+              headerTitle: () => <Header navigation={navigation}/>,
54
+          }
55
+        }}/>
56
+        <Drawer.Screen name="Calendario" component={Calendario} options={({navigation}) => {
57
+          return {
58
+              headerTitle: () => <Header navigation={navigation}/>,
59
+          }
60
+        }}/>
61
+        <Drawer.Screen name="Galeria" component={Gallery} options={({navigation}) => {
62
+          return {
63
+              headerTitle: () => <Header navigation={navigation}/>,
64
+          }
65
+        }}/>
66
+        <Drawer.Screen name="Donar" component={Donate} options={({navigation}) => {
67
+          return {
68
+              headerTitle: () => <Header navigation={navigation}/>,
69
+          }
70
+        }}/>
71
+        <Drawer.Screen name="Solicitar ayuda" component={Solicitar} 
72
+        options={({navigation}) => {
73
+          return {
74
+              headerTitle: () => <Header navigation={navigation}/>,
75
+          }
76
+        }}/>
77
+
78
+        <Drawer.Screen name="Mi cuenta" component={Account} 
79
+        options={({navigation}) => {
80
+          return {
81
+              headerTitle: () => <Header navigation={navigation}/>,
82
+          }
83
+        }}/>    
84
+      </Drawer.Navigator>
85
+    </NavigationContainer>
86
+  );
87
+}

+ 2
- 2
app.json View File

@@ -1,7 +1,7 @@
1 1
 {
2 2
   "expo": {
3
-    "name": "TPMGnav",
4
-    "slug": "TPMGnav",
3
+    "name": "TPMG",
4
+    "slug": "TPMG",
5 5
     "version": "1.0.0",
6 6
     "orientation": "portrait",
7 7
     "icon": "./assets/icon.png",

BIN
assets/logo.png View File


+ 5
- 0
babel.config.js View File

@@ -4,3 +4,8 @@ module.exports = function(api) {
4 4
     presets: ['babel-preset-expo'],
5 5
   };
6 6
 };
7
+
8
+module.exports = {
9
+  presets: ['module:metro-react-native-babel-preset'],
10
+  plugins: ['react-native-reanimated/plugin'],
11
+};

+ 36133
- 0
package-lock.json
File diff suppressed because it is too large
View File


+ 21
- 2
package.json View File

@@ -1,5 +1,5 @@
1 1
 {
2
-  "name": "tpmgnav",
2
+  "name": "tpmg",
3 3
   "version": "1.0.0",
4 4
   "main": "node_modules/expo/AppEntry.js",
5 5
   "scripts": {
@@ -9,10 +9,29 @@
9 9
     "web": "expo start --web"
10 10
   },
11 11
   "dependencies": {
12
+    "@emotion/react": "^11.10.5",
13
+    "@emotion/styled": "^11.10.5",
14
+    "@expo/webpack-config": "^0.17.2",
15
+    "@mui/material": "^5.10.15",
16
+    "@react-native-google-signin/google-signin": "^8.2.1",
17
+    "@react-navigation/drawer": "^6.5.1",
18
+    "@react-navigation/native": "^6.0.14",
19
+    "@react-navigation/native-stack": "^6.9.2",
12 20
     "expo": "~47.0.7",
21
+    "expo-dev-client": "~2.0.1",
13 22
     "expo-status-bar": "~1.4.2",
23
+    "expo-web-browser": "^12.0.0",
14 24
     "react": "18.1.0",
15
-    "react-native": "0.70.5"
25
+    "react-dom": "18.1.0",
26
+    "react-native": "0.70.5",
27
+    "react-native-gesture-handler": "^2.8.0",
28
+    "react-native-reanimated": "~2.12.0",
29
+    "react-native-safe-area-context": "4.4.1",
30
+    "react-native-screens": "~3.18.0",
31
+    "react-native-web": "~0.18.9",
32
+    "react-navigation": "^4.4.4",
33
+    "react-navigation-stack": "^2.10.4",
34
+    "yarn": "^1.22.19"
16 35
   },
17 36
   "devDependencies": {
18 37
     "@babel/core": "^7.12.9"

+ 16
- 0
routes/drawer.js View File

@@ -0,0 +1,16 @@
1
+import { createDrawerNavigator } from "react-navigation-drawer";
2
+import { createAppContainer } from "react-navigation";
3
+
4
+import HomeStack from './homeStack';
5
+import About from './screens/about';
6
+
7
+const RootDrawerNavigator = createDrawerNavigator ({
8
+    Home: {
9
+        screen: HomeStack,
10
+    },
11
+    About: {
12
+        screen: About,
13
+    }
14
+})
15
+
16
+export default createAppContainer(RootDrawerNavigator);

+ 37
- 0
routes/homeStack.js View File

@@ -0,0 +1,37 @@
1
+import * as React from 'react';
2
+import { createStackNavigator } from "react-navigation-stack";
3
+import { createAppContainer } from "react-navigation";
4
+import About from '../screens/about'
5
+import Gallery from '../screens/gallery'
6
+import Header from '../shared/header';
7
+
8
+const screens = {
9
+    About: {
10
+        screen: About,
11
+        navigationOptions: ({navigation}) => {
12
+            return {
13
+                headerTitle: () => <Header navigation={navigation}/>,
14
+            }
15
+        }
16
+    },
17
+    Gallery: {
18
+        screen: Gallery,
19
+        navigationOptions: ({navigation}) => {
20
+            return {
21
+                headerTitle: () => <Header navigation={navigation}/>,
22
+            }
23
+        }
24
+    },
25
+    Calendar: {
26
+        screen: Calendar,
27
+        navigationOptions: ({navigation}) => {
28
+            return {
29
+                headerTitle: () => <Header navigation={navigation}/>,
30
+            }
31
+        }
32
+    },
33
+}
34
+
35
+const HomeStack = createStackNavigator(screens);
36
+
37
+export default createAppContainer(HomeStack);

+ 69
- 0
screens/about.js View File

@@ -0,0 +1,69 @@
1
+import * as React from 'react';
2
+import { StyleSheet, ScrollView, Text } from 'react-native';
3
+
4
+export default function About() {
5
+    return (
6
+        <ScrollView style={styles.container}>
7
+         <Text style={styles.title}>HISTORIA</Text>
8
+         <Text style={styles.paragraph}>Techos Pa' Mi Gente surgio en el año 2017, luego del huracan Maria. 
9
+         Fue una busqueda por inspirar y apoyar a las comunidades. Que despues de varios meses instalando 
10
+         toldos casi a diario, nuestros voluntarios llegaron a la conclusión de que había que realizar demasiado 
11
+         trabajo de carpintería para instalar un toldo correctamente, pues el daño era muy extenso. Por lo que, 
12
+         se tomó la decisión de comenzar a reparar techos de manera permanente. Para esto, se está siguiendo la: 
13
+         Guía de construcción para casas resistentes a huracanes, creada por el CIAPR Y FEMA luego del huracán Hugo, 
14
+         con actualizaciones en términos de nuevas tecnologías y materiales. Hasta el dia de hoy Techos Pa' Mi Gente 
15
+         se ha converitdo en una organizacion motivada a actuar una base solida de apoyo y compromiso con  las familias 
16
+         afectadas  por desastres naturales.</Text>
17
+         <Text style={styles.title}>MISIÓN, VISIÓN Y VALORES</Text>
18
+         <Text style={styles.subtitle}>Misión</Text>
19
+         <Text style={styles.subtitle}>Techos Pa' Mi Gente</Text>
20
+         <Text style={styles.paragraph}>(TPMG Corp.) es una organización sin fines de lucro dedicada a la construcción 
21
+         de techos dignos y rehabilitación de viviendas en comunidades afectadas por desastres naturales. Contribuye a mejorar 
22
+         la calidad de vida de los individuos que componen estas comunidades. Promueve la autogestión y brinda capacitación en 
23
+         destrezas básicas de construcción para fomentar la resiliencia. </Text>
24
+         <Text style={styles.subtitle}>Visión</Text>
25
+         <Text style={styles.paragraph}>  (TPMG Corp.) como organización del tercer sector aspira a ejercer liderazgo en la 
26
+         construcción de techo dignos, rehabilitación de viviendas y ser promotores de la autogestión, caracterizados por la 
27
+         excelencia en los servicios y la autosuficiencia fiscal.  Se propone a ser uno de los principales  proveedores de 
28
+         recursos para la capacitación y adiestramientos del capital humano que está comprometido con la recuperación a largo 
29
+         plazo ante desastres naturales.</Text>
30
+         <Text style={styles.subtitle}>Valores</Text>
31
+         <Text style={styles.paragraph}>-La solidaridad es nuestro eje. Las necesidades de nuestros compueblanos también son nuestras. </Text>
32
+         <Text style={styles.subtitle}>Empatía</Text>
33
+         <Text style={styles.paragraph}>-Somos sensibles con el prójimo. Fomentamos una cultura de identificamos con el dolor de los 
34
+         más necesitados.</Text>
35
+         <Text style={styles.subtitle}>Transparencia</Text>
36
+         <Text style={styles.paragraph}>-Honradez en nuestros  deberes. Trato honesto y veraz en nuestras operaciones.</Text>
37
+         <Text style={styles.subtitle}>Cuidado al voluntario</Text>
38
+         <Text style={styles.paragraph}>-Los voluntarios son nuestras principales herramientas. Un buen cuidado de nuestros voluntarios 
39
+         significa un trabajo eficiente y eficaz en pro de nuestros beneficiarios.</Text>
40
+         <Text style={styles.subtitle}>Diversidad</Text>
41
+         <Text style={styles.paragraph}>- Somos una entidad abierta sin discrimen de ninguna manera por razón de edad, raza, color, sexo, 
42
+         nacimiento, condición  de veteranos, ideología  politica o religiosa, origen o condición social, orientación sexual o identidad 
43
+         de género, diversidad funcional; ni por ser víctima de violencia doméstica o agresión sexual. En la diversidad está  la inclusión 
44
+         y TPMG es una organización inclusiva.</Text>
45
+        </ScrollView>
46
+    )
47
+}
48
+
49
+const styles = StyleSheet.create({
50
+    container: {
51
+        padding: 24
52
+    },
53
+    title: {
54
+        fontWeight: 'bold',
55
+        fontFamily: "AvenirNext-Bold",
56
+        fontSize: 50
57
+    },
58
+    subtitle: {
59
+        fontWeight: 'bold',
60
+        fontFamily: "Avenir-Black",
61
+        fontSize: 15 
62
+    },
63
+    paragraph: {
64
+        fontWeight: 'normal',
65
+        fontFamily: "Avenir-Black",
66
+        fontSize: 15,
67
+        textAlign: 'justify'
68
+    }
69
+});

+ 18
- 0
screens/account.js View File

@@ -0,0 +1,18 @@
1
+import * as React from 'react';
2
+import {useState} from "react";
3
+import { StyleSheet, View, Text } from 'react-native';
4
+import Header from '../shared/header';
5
+
6
+export default function Account({navigation}) {
7
+    return (
8
+        <View style={styles.container}>
9
+         <Text>Account Screen</Text>
10
+        </View>
11
+    )
12
+}
13
+
14
+const styles = StyleSheet.create({
15
+    container: {
16
+        padding: 24
17
+    }
18
+});

+ 17
- 0
screens/calendar.js View File

@@ -0,0 +1,17 @@
1
+import * as React from 'react';
2
+import { StyleSheet, View, Text } from 'react-native';
3
+import Header from '../shared/header';
4
+
5
+export default function Calendario({navigation}) {
6
+    return (
7
+        <View style={styles.container}>
8
+         <Text>Calendario Screen</Text>
9
+        </View>
10
+    )
11
+}
12
+
13
+const styles = StyleSheet.create({
14
+    container: {
15
+        padding: 24
16
+    }
17
+});

+ 17
- 0
screens/donar.js View File

@@ -0,0 +1,17 @@
1
+import * as React from 'react';
2
+import { StyleSheet, View, Text } from 'react-native';
3
+import Header from '../shared/header';
4
+
5
+export default function Donate({navigation}) {
6
+    return (
7
+        <View style={styles.container}>
8
+         <Text>Donate Screen</Text>
9
+        </View>
10
+    )
11
+}
12
+
13
+const styles = StyleSheet.create({
14
+    container: {
15
+        padding: 24
16
+    }
17
+});

+ 17
- 0
screens/gallery.js View File

@@ -0,0 +1,17 @@
1
+import * as React from 'react';
2
+import { StyleSheet, View, Text } from 'react-native';
3
+import Header from '../shared/header';
4
+
5
+export default function Gallery() {
6
+    return (
7
+        <View style={styles.container}>
8
+         <Text>Gallery Screen</Text>
9
+        </View>
10
+    )
11
+}
12
+
13
+const styles = StyleSheet.create({
14
+    container: {
15
+        padding: 24
16
+    }
17
+});

+ 17
- 0
screens/solicitar.js View File

@@ -0,0 +1,17 @@
1
+import * as React from 'react';
2
+import { StyleSheet, View, Text } from 'react-native';
3
+import Header from '../shared/header';
4
+
5
+export default function Solicitar({navigation}) {
6
+    return (
7
+        <View style={styles.container}>
8
+         <Text>Solicitar Screen</Text>
9
+        </View>
10
+    )
11
+}
12
+
13
+const styles = StyleSheet.create({
14
+    container: {
15
+        padding: 24
16
+    },
17
+});

+ 44
- 0
shared/header.js View File

@@ -0,0 +1,44 @@
1
+import React from 'react';
2
+import {StyleSheet, Text, View, Image} from 'react-native';
3
+import { DrawerActions } from 'react-navigation';
4
+import {MaterialIcons} from '@expo/vector-icons';
5
+
6
+export default function Header({navigation}) {
7
+    const openMenu = () => {
8
+        navigation.openDrawer()
9
+    }
10
+    return (
11
+        <View style={styles.header}>
12
+            
13
+            <View>
14
+                <Image 
15
+                style={styles.tinyLogo}
16
+                source={require('../assets/logo.png')} />
17
+            </View>
18
+        </View>
19
+    );
20
+}
21
+
22
+const styles = StyleSheet.create({
23
+    header: {
24
+        width: '100%',
25
+        height: '100%',
26
+        flexDirection: 'row',
27
+        alignItems: 'center',
28
+        justifyContent: 'center',
29
+    },
30
+    headerText: {
31
+        fontweight: 'bold',
32
+        fontSize: 20,
33
+        color: '#333',
34
+        letterSpacing: 1,
35
+    },
36
+    icon: {
37
+        position: 'absolute',
38
+        left: -75
39
+    },
40
+    tinyLogo: {
41
+        width:120,
42
+        height:35,
43
+    },
44
+})

+ 10515
- 5417
yarn.lock
File diff suppressed because it is too large
View File