├── .env
├── .expo-shared
└── assets.json
├── .gitignore
├── App.js
├── app.json
├── assets
├── Splash.json
├── back.jpg
├── back.png
├── blankProfilePic.jpg
├── carMarker.png
├── card.jpg
├── card.png
├── cashIcon.png
├── driver.png
├── food.png
├── icon.png
├── location.png
├── package.png
├── reserve.png
├── ride.png
├── splash.png
├── transit.png
├── uberAssist.png
├── uberBlack.png
├── uberCar.png
├── uberConnect.png
├── uberGo.png
├── uberIcon.png
├── uberRequest.png
├── uberSplash.jpg
├── uberTime.png
├── uberVan.png
├── uberX.png
└── visaIcon.png
├── babel.config.js
├── package.json
├── src
├── components
│ └── MapComponent.js
├── contexts
│ └── contexts.js
├── global
│ ├── data.js
│ ├── mapStyle.js
│ └── styles.js
├── navigations
│ ├── DrawerNavigator.js
│ ├── RootNavigator.js
│ └── StackNavigators.js
├── reducers
│ └── reducers.js
└── screens
│ ├── DestinationScreen.js
│ ├── HomeScreen.js
│ └── RequestScreen.js
└── yarn.lock
/.env:
--------------------------------------------------------------------------------
1 | GOOGLE_MAPS_APIKEY = 'AIzaSyBQivdVNxU7quHhW_ARw2VuXKmHVwXhNMk'
--------------------------------------------------------------------------------
/.expo-shared/assets.json:
--------------------------------------------------------------------------------
1 | {
2 | "12bb71342c6255bbf50437ec8f4441c083f47cdb74bd89160c15e4f43e52a1cb": true,
3 | "40b842e832070c58deac6aa9e08fa459302ee3f9da492c7e77d93d2fbf4a56fd": true
4 | }
5 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | .expo/
3 | dist/
4 | npm-debug.*
5 | *.jks
6 | *.p8
7 | *.p12
8 | *.key
9 | *.mobileprovision
10 | *.orig.*
11 | web-build/
12 |
13 | # macOS
14 | .DS_Store
15 |
--------------------------------------------------------------------------------
/App.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { StyleSheet, Text, View,Dimensions } from 'react-native'
3 | import { OriginContextProvider,DestinationContextProvider } from './src/contexts/contexts'
4 | import RoootNavigator from './src/navigations/RootNavigator'
5 |
6 |
7 | const App = () => {
8 | return (
9 |
10 |
11 |
12 |
13 |
14 |
15 | )
16 | }
17 |
18 | export default App
19 |
20 | const styles = StyleSheet.create({
21 |
22 | container:{
23 | flex:1
24 | }
25 |
26 |
27 | })
28 |
--------------------------------------------------------------------------------
/app.json:
--------------------------------------------------------------------------------
1 | {
2 | "expo": {
3 | "name": "uberClone",
4 | "slug": "uberClone",
5 | "version": "1.0.0",
6 | "orientation": "portrait",
7 | "icon": "./assets/icon.png",
8 | "splash": {
9 | "image": "./assets/splash.png",
10 | "resizeMode": "contain",
11 | "backgroundColor": "#ffffff"
12 | },
13 | "updates": {
14 | "fallbackToCacheTimeout": 0
15 | },
16 | "assetBundlePatterns": [
17 | "**/*"
18 | ],
19 | "ios": {
20 | "supportsTablet": true,
21 | "bundleIdentifier":"com.uberclone",
22 | "config":{
23 | "googleMapsApiKey" :"AIzaSyBQivdVNxU7quHhW_ARw2VuXKmHVwXhNMk"
24 | }
25 | },
26 | "android": {
27 | "adaptiveIcon": {
28 | "foregroundImage": "./assets/icon.png",
29 | "backgroundColor": "#FFFFFF"
30 | },
31 |
32 | "package":"com.uberclone",
33 | "config" :{
34 | "googleMaps":{
35 | "apiKey":"KEY"
36 | },
37 | "permissions":["ACCESS_COARSE_LOCATION","ACCESS_FINE_LOCATION","FOREGROUND_SERVICE"]
38 | }
39 |
40 | },
41 | "web": {
42 | "favicon": "./assets/favicon.png"
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/assets/back.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/back.jpg
--------------------------------------------------------------------------------
/assets/back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/back.png
--------------------------------------------------------------------------------
/assets/blankProfilePic.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/blankProfilePic.jpg
--------------------------------------------------------------------------------
/assets/carMarker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/carMarker.png
--------------------------------------------------------------------------------
/assets/card.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/card.jpg
--------------------------------------------------------------------------------
/assets/card.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/card.png
--------------------------------------------------------------------------------
/assets/cashIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/cashIcon.png
--------------------------------------------------------------------------------
/assets/driver.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/driver.png
--------------------------------------------------------------------------------
/assets/food.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/food.png
--------------------------------------------------------------------------------
/assets/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/icon.png
--------------------------------------------------------------------------------
/assets/location.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/location.png
--------------------------------------------------------------------------------
/assets/package.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/package.png
--------------------------------------------------------------------------------
/assets/reserve.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/reserve.png
--------------------------------------------------------------------------------
/assets/ride.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/ride.png
--------------------------------------------------------------------------------
/assets/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/splash.png
--------------------------------------------------------------------------------
/assets/transit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/transit.png
--------------------------------------------------------------------------------
/assets/uberAssist.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/uberAssist.png
--------------------------------------------------------------------------------
/assets/uberBlack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/uberBlack.png
--------------------------------------------------------------------------------
/assets/uberCar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/uberCar.png
--------------------------------------------------------------------------------
/assets/uberConnect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/uberConnect.png
--------------------------------------------------------------------------------
/assets/uberGo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/uberGo.png
--------------------------------------------------------------------------------
/assets/uberIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/uberIcon.png
--------------------------------------------------------------------------------
/assets/uberRequest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/uberRequest.png
--------------------------------------------------------------------------------
/assets/uberSplash.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/uberSplash.jpg
--------------------------------------------------------------------------------
/assets/uberTime.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/uberTime.png
--------------------------------------------------------------------------------
/assets/uberVan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/uberVan.png
--------------------------------------------------------------------------------
/assets/uberX.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/uberX.png
--------------------------------------------------------------------------------
/assets/visaIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EfficientProgramming01/uberClone/6b8b9d48543bb673588342af2cc46d61d5f044f2/assets/visaIcon.png
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = function(api) {
2 | api.cache(true);
3 | return {
4 | presets: ['babel-preset-expo'],
5 | plugins:[["module:react-native-dotenv",
6 |
7 | {
8 | moduleName:"@env",
9 | path:".env",
10 | }
11 | ], ['react-native-reanimated/plugin',],
12 |
13 | ]
14 | };
15 | };
16 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "main": "node_modules/expo/AppEntry.js",
3 | "scripts": {
4 | "start": "expo start",
5 | "android": "expo start --android",
6 | "ios": "expo start --ios",
7 | "web": "expo start --web",
8 | "eject": "expo eject"
9 | },
10 | "dependencies": {
11 | "@gorhom/bottom-sheet": "^4",
12 | "@react-navigation/drawer": "^6.1.8",
13 | "@react-navigation/native": "^6.0.6",
14 | "@react-navigation/native-stack": "^6.2.5",
15 | "expo": "41.0.0",
16 | "expo-location": "~13.0.4",
17 | "expo-status-bar": "~1.1.0",
18 | "react": "17.0.1",
19 | "react-dom": "17.0.1",
20 | "react-native": "https://github.com/expo/react-native/archive/sdk-42.0.0.tar.gz",
21 | "react-native-dotenv": "^3.3.0",
22 | "react-native-elements": "^3.4.2",
23 | "react-native-gesture-handler": "~1.10.2",
24 | "react-native-google-places-autocomplete": "^2.4.1",
25 | "react-native-maps": "0.28.0",
26 | "react-native-maps-directions": "^1.8.0",
27 | "react-native-reanimated": "~2.2.0",
28 | "react-native-safe-area-context": "3.2.0",
29 | "react-native-screens": "~3.8.0",
30 | "react-native-status-bar-height": "^2.6.0",
31 | "react-native-vector-icons": "^9.0.0",
32 | "react-native-web": "0.17.1"
33 | },
34 | "devDependencies": {
35 | "@babel/core": "^7.12.9"
36 | },
37 | "private": true
38 | }
39 |
--------------------------------------------------------------------------------
/src/components/MapComponent.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react'
2 | import { Text, StyleSheet, View,Image } from 'react-native'
3 | import { mapStyle} from "../global/mapStyle"
4 | import MapView, { PROVIDER_GOOGLE,} from 'react-native-maps';
5 | import { colors,parameters } from '../global/styles';
6 | import MapViewDirections from 'react-native-maps-directions';
7 | import {GOOGLE_MAPS_APIKEY} from "@env";
8 |
9 | export default class MapComponent extends Component {
10 |
11 | constructor(){
12 | super()
13 | this.state ={
14 |
15 | }
16 |
17 | this._map = React.createRef(35)
18 | }
19 |
20 | componentDidUpdate(){
21 | setTimeout(()=>{
22 | if(this.props.userDestination.latitude !== null){
23 | this._map.current.fitToCoordinates(
24 | [this.props.userOrigin,this.props.userDestination],{
25 | edgePadding:{top:450,right:50,left:50,bottom:350},
26 | animated:true
27 | }
28 | )
29 | }
30 | },500)
31 | }
32 |
33 | render() {
34 | return (
35 |
36 |
42 | { this.props.userOrigin.latitude != null &&
43 |
44 |
49 |
50 | }
51 | { this.props.userDestination.latitude != null &&
52 |
53 |
58 |
59 | }
60 | {this.props.userDestination.latitude !== null &&
61 |
68 | }
69 |
70 |
71 | )
72 | }
73 | }
74 |
75 | const styles = StyleSheet.create({
76 | map: {
77 | height:"100%",
78 | width:"100%"
79 | },
80 |
81 |
82 | markerWrapOrigin: {
83 | // alignItems: "center",
84 | // justifyContent: "center",
85 | width:40,
86 | height:20,
87 | // marginTop:0
88 | },
89 | markerOrigin: {
90 | width: 16,
91 | height: 16,
92 | borderRadius:8
93 | },
94 |
95 | destination: {
96 | width:20,
97 | height:20,
98 | backgroundColor:colors.black,
99 | alignItems:"center",
100 | justifyContent:"center"
101 | },
102 |
103 | view1: {
104 | width:7,
105 | height:7,
106 | backgroundColor:colors.white
107 | },
108 | markerDestination: {
109 | width: 16,
110 | height: 16,
111 |
112 | },
113 |
114 | markerOrigin2: {
115 | width: 20,
116 | height:20,
117 | borderRadius:10
118 | },
119 |
120 | car:{
121 | paddingTop:0,
122 | width: 40,
123 | height: 20,
124 | },
125 |
126 | view2:{
127 | position:"absolute",
128 | top:10,
129 | right:12,
130 | backgroundColor:colors.white,
131 | height:40,
132 | width:180,
133 | borderRadius:20,
134 | justifyContent:"center",
135 | alignItems:"center",
136 | marginTop:2,
137 | zIndex: 8
138 |
139 | },
140 |
141 | view3:{ flexDirection:"row",
142 | alignItems:"center",
143 | //marginRight:15,
144 | //backgroundColor:"white",
145 | //paddingHorizontal:2,
146 | paddingVertical:2,
147 | //borderRadius:20
148 | },
149 |
150 | view4:{
151 | position:"absolute",
152 | top:50,
153 | left:12,
154 | backgroundColor:colors.white,
155 | height:40,
156 | width:140,
157 | borderRadius:20,
158 | justifyContent:"center",
159 | alignItems:"center",
160 | marginTop:2,
161 | zIndex: 8
162 |
163 | },
164 |
165 | location: {
166 | width: 20,
167 | height: 20,
168 | borderRadius:9,
169 | backgroundColor:colors.black,
170 | alignItems:"center",
171 | justifyContent:"center"
172 |
173 | },
174 |
175 | view9:{width:6,
176 | height:6,
177 | borderRadius:4,
178 | backgroundColor:"white"
179 | }
180 | })
181 |
--------------------------------------------------------------------------------
/src/contexts/contexts.js:
--------------------------------------------------------------------------------
1 | import React,{createContext,useReducer} from 'react';
2 | import {OriginReducer,DestinationReducer} from '../reducers/reducers'
3 |
4 | export const OriginContext = createContext()
5 | export const DestinationContext = createContext()
6 |
7 |
8 | export const OriginContextProvider = (props)=>{
9 | const[origin,dispatchOrigin] =useReducer(OriginReducer,{
10 | latitude:null,
11 | longitude:null,
12 | address:"",
13 | name:""
14 | })
15 | return(
16 |
19 | {props.children}
20 |
21 | )
22 | }
23 |
24 |
25 | export const DestinationContextProvider = (props)=>{
26 | const[destination,dispatchDestination] =useReducer(DestinationReducer,{
27 | latitude:null,
28 | longitude:null,
29 | address:"",
30 | name:""
31 | })
32 | return(
33 |
36 | {props.children}
37 |
38 | )
39 | }
--------------------------------------------------------------------------------
/src/global/data.js:
--------------------------------------------------------------------------------
1 | export const filterData = [ {name:"Ride",image: require('../../assets/ride.png'), id:"0"},
2 | {name:"Food",image:require("../../assets/food.png"),id:"1"},
3 | {name:"Package",image:require("../../assets/package.png"),id:"2"},
4 | {name:"Reserve",image:require("../../assets/reserve.png"),id:"3"}
5 |
6 | ];
7 |
8 |
9 | export const rideData =[
10 | {street:"32 Olivia Rd",area:"Klipfontein 83-Ir,Boksburg",id:"0"},
11 | {street:"Hughes Industrial Park",area:"Hughes,Boksburg",id:"1"},
12 | {street:"32 Olivia Road",area:" East Rand,Ekurhuleni,Gauteng,1459",id:"2"},
13 | {street:"Total Boksburg",area:"35 Atlas Rd,Anderbolt,Boksburg",id:"3"},
14 | {street:"179 8th Ave",area:"Bezuidenhout Valley,Johannesburg",id:"4"},
15 | ];
16 |
17 | export const carTypeData =[
18 | {title:"Popular",
19 | data:[
20 | {name:"Uber Go",group :2, price:7,image: require('../../assets/uberGo.png'),note:"Affordable.compact rides",promotion:5 ,time:"20:19",id:"0"},
21 | {name:"UberX",group :3, price:5.5,image: require('../../assets/uberX.png'),note:"Affordable everyday trips",promotion:0,time:"20:20", id:"1"},
22 | {name:"Connect", group:0, price:12.6,image: require('../../assets/uberConnect.png'),note:"Send and receive packages",promotion:10,time:"20:33", id:"2"}
23 | ]
24 | },
25 |
26 | {title:"Premium",
27 | data:[
28 | {name:"Black",group :3, price:17.4,image: require('../../assets/uberBlack.png'),note:"Premium trips in luxury cars",promotion:0,time:"20:31",id:"3"},
29 | {name:"Van", group:6, price:22.3,image: require('../../assets/uberVan.png'),note:"Rides for groups up to 6",promotion:12,time:"20:31", id:"4"},
30 | ]
31 | },
32 |
33 | {title:"More",
34 | data:[
35 | {name:"Assist",group :3, price:35.3,image: require('../../assets/uberAssist.png'),note:"Special assistance from certified drivers",promotion:26,time:"20:25",id:"5"},
36 | ]
37 | },
38 |
39 | ];
40 |
41 | export const requestData = [{
42 | name:"For Me",id:0
43 | },
44 | {
45 | name:"For Someone",id:1
46 | }
47 |
48 | ]
49 |
50 | export const rideOptions = [{name:"Personal",icon:"account", id:"0"},
51 | {name:"Business",icon:"briefcase", id:"1"},
52 |
53 | ];
54 |
55 | export const paymentOptions = [{image:require('../../assets/visaIcon.png'),text:"Visa ...0476"},
56 | {image:require('../../assets/cashIcon.png'),text:"Cash"}]
57 |
58 | export const availableServices = ["Uber Go","UberX","Uber connect","Uber Black","Uber Van","Uber Assist"]
59 |
60 | export const carsAround = [{latitude:-26.207487,longitude:28.236226},
61 | {latitude:-26.202616,longitude:28.227718},
62 | {latitude:-26.202424,longitude:28.236612},
63 | {latitude:-26.208565,longitude:28.237191},
64 | {latitude:-26.203598,longitude:28.239509},
65 | ]
66 |
--------------------------------------------------------------------------------
/src/global/mapStyle.js:
--------------------------------------------------------------------------------
1 | export const mapStyle = [
2 | {
3 | "featureType": "administrative",
4 | "elementType": "geometry.fill",
5 | "stylers": [
6 | {
7 | "color": "#d6e2e6"
8 | }
9 | ]
10 | },
11 | {
12 | "featureType": "administrative",
13 | "elementType": "geometry.stroke",
14 | "stylers": [
15 | {
16 | "color": "#cfd4d5"
17 | }
18 | ]
19 | },
20 | {
21 | "featureType": "administrative",
22 | "elementType": "labels.text.fill",
23 | "stylers": [
24 | {
25 | "color": "#7492a8"
26 | }
27 | ]
28 | },
29 | {
30 | "featureType": "administrative.neighborhood",
31 | "elementType": "labels.text.fill",
32 | "stylers": [
33 | {
34 | "lightness": 25
35 | }
36 | ]
37 | },
38 | {
39 | "featureType": "landscape.man_made",
40 | "elementType": "geometry.fill",
41 | "stylers": [
42 | {
43 | "color": "#dde2e3"
44 | }
45 | ]
46 | },
47 | {
48 | "featureType": "landscape.man_made",
49 | "elementType": "geometry.stroke",
50 | "stylers": [
51 | {
52 | "color": "#cfd4d5"
53 | }
54 | ]
55 | },
56 | {
57 | "featureType": "landscape.natural",
58 | "elementType": "geometry.fill",
59 | "stylers": [
60 | {
61 | "color": "#dde2e3"
62 | }
63 | ]
64 | },
65 | {
66 | "featureType": "landscape.natural",
67 | "elementType": "labels.text.fill",
68 | "stylers": [
69 | {
70 | "color": "#7492a8"
71 | }
72 | ]
73 | },
74 | {
75 | "featureType": "landscape.natural.terrain",
76 | "elementType": "all",
77 | "stylers": [
78 | {
79 | "visibility": "off"
80 | }
81 | ]
82 | },
83 | {
84 | "featureType": "poi",
85 | "elementType": "geometry.fill",
86 | "stylers": [
87 | {
88 | "color": "#dde2e3"
89 | }
90 | ]
91 | },
92 | {
93 | "featureType": "poi",
94 | "elementType": "labels.text.fill",
95 | "stylers": [
96 | {
97 | "color": "#588ca4"
98 | }
99 | ]
100 | },
101 | {
102 | "featureType": "poi",
103 | "elementType": "labels.icon",
104 | "stylers": [
105 | {
106 | "saturation": -100
107 | }
108 | ]
109 | },
110 | {
111 | "featureType": "poi.park",
112 | "elementType": "geometry.fill",
113 | "stylers": [
114 | {
115 | "color": "#a9de83"
116 | }
117 | ]
118 | },
119 | {
120 | "featureType": "poi.park",
121 | "elementType": "geometry.stroke",
122 | "stylers": [
123 | {
124 | "color": "#bae6a1"
125 | }
126 | ]
127 | },
128 | {
129 | "featureType": "poi.sports_complex",
130 | "elementType": "geometry.fill",
131 | "stylers": [
132 | {
133 | "color": "#c6e8b3"
134 | }
135 | ]
136 | },
137 | {
138 | "featureType": "poi.sports_complex",
139 | "elementType": "geometry.stroke",
140 | "stylers": [
141 | {
142 | "color": "#bae6a1"
143 | }
144 | ]
145 | },
146 | {
147 | "featureType": "road",
148 | "elementType": "labels.text.fill",
149 | "stylers": [
150 | {
151 | "color": "#41626b"
152 | }
153 | ]
154 | },
155 | {
156 | "featureType": "road",
157 | "elementType": "labels.icon",
158 | "stylers": [
159 | {
160 | "saturation": -45
161 | },
162 | {
163 | "lightness": 10
164 | },
165 | {
166 | "visibility": "on"
167 | }
168 | ]
169 | },
170 | {
171 | "featureType": "road.highway",
172 | "elementType": "geometry.fill",
173 | "stylers": [
174 | {
175 | "color": "#c1d1d6"
176 | }
177 | ]
178 | },
179 | {
180 | "featureType": "road.highway",
181 | "elementType": "geometry.stroke",
182 | "stylers": [
183 | {
184 | "color": "#a6b5bb"
185 | }
186 | ]
187 | },
188 | {
189 | "featureType": "road.highway",
190 | "elementType": "labels.icon",
191 | "stylers": [
192 | {
193 | "visibility": "on"
194 | }
195 | ]
196 | },
197 | {
198 | "featureType": "road.highway.controlled_access",
199 | "elementType": "geometry.fill",
200 | "stylers": [
201 | {
202 | "color": "#9fb6bd"
203 | }
204 | ]
205 | },
206 | {
207 | "featureType": "road.arterial",
208 | "elementType": "geometry.fill",
209 | "stylers": [
210 | {
211 | "color": "#ffffff"
212 | }
213 | ]
214 | },
215 | {
216 | "featureType": "road.local",
217 | "elementType": "geometry.fill",
218 | "stylers": [
219 | {
220 | "color": "#ffffff"
221 | }
222 | ]
223 | },
224 | {
225 | "featureType": "transit",
226 | "elementType": "labels.icon",
227 | "stylers": [
228 | {
229 | "saturation": -70
230 | }
231 | ]
232 | },
233 | {
234 | "featureType": "transit.line",
235 | "elementType": "geometry.fill",
236 | "stylers": [
237 | {
238 | "color": "#b4cbd4"
239 | }
240 | ]
241 | },
242 | {
243 | "featureType": "transit.line",
244 | "elementType": "labels.text.fill",
245 | "stylers": [
246 | {
247 | "color": "#588ca4"
248 | }
249 | ]
250 | },
251 | {
252 | "featureType": "transit.station",
253 | "elementType": "all",
254 | "stylers": [
255 | {
256 | "visibility": "off"
257 | }
258 | ]
259 | },
260 | {
261 | "featureType": "transit.station",
262 | "elementType": "labels.text.fill",
263 | "stylers": [
264 | {
265 | "color": "#008cb5"
266 | },
267 | {
268 | "visibility": "on"
269 | }
270 | ]
271 | },
272 | {
273 | "featureType": "transit.station.airport",
274 | "elementType": "geometry.fill",
275 | "stylers": [
276 | {
277 | "saturation": -100
278 | },
279 | {
280 | "lightness": -5
281 | }
282 | ]
283 | },
284 | {
285 | "featureType": "water",
286 | "elementType": "geometry.fill",
287 | "stylers": [
288 | {
289 | "color": "#a6cbe3"
290 | }
291 | ]
292 | }
293 | ]
--------------------------------------------------------------------------------
/src/global/styles.js:
--------------------------------------------------------------------------------
1 | import { getStatusBarHeight } from 'react-native-status-bar-height';
2 |
3 | // 44 - on iPhoneX
4 | // 20 - on iOS device
5 | // X - on Android platfrom (runtime value)
6 | // 0 - on all other platforms (default)
7 | //console.log(getStatusBarHeight());
8 |
9 | // will be 0 on Android, because You pass true to skipAndroid
10 | //console.log(getStatusBarHeight(true));
11 |
12 |
13 |
14 | export const colors = {
15 | buttons:"#ff8c52",
16 | grey: "#bebebe",
17 | grey1: '#43484d',
18 | grey2: '#5e6977',
19 | grey3: '#86939e',
20 | grey4: '#bdc6cf',
21 | grey5: '#e1e8ee',
22 | grey6: "#eeeeee",
23 | grey7: "#F2f9f9",
24 | grey10: "#d6d6d6",
25 | CardComment : '#86939e',
26 | cardbackground:"white",
27 | statusbar:"#ff8c52",
28 | heaherText:"white",
29 | lightgreen: '#66DF48',
30 | blue:'#286ef0',
31 | black: "#000000",
32 | white: "#ffffff",
33 | darkBlue:"#2d328a",
34 | pagebackground:"white"
35 |
36 |
37 |
38 | }
39 |
40 |
41 | export const parameters ={
42 | statusBarHeight :getStatusBarHeight(),
43 | headerHeight:70,
44 |
45 | styledButton:{
46 | backgroundColor:"#ff8c52",
47 | alignContent:"center",
48 | justifyContent:"center",
49 | borderRadius:12,
50 | borderWidth:1,
51 | borderColor:"#ff8c52",
52 | height:50,
53 | paddingHorizontal:20,
54 | width:'100%'
55 | },
56 |
57 | buttonTitle:{
58 | color:"white",
59 | fontSize:20,
60 | fontWeight:"bold" ,
61 | alignItems:"center",
62 | justifyContent:"center" ,
63 | marginTop:-3
64 | }
65 | }
66 |
67 | export const title ={
68 | color:"#ff8c52",
69 | fontSize :20,
70 | fontWeight:"bold"
71 | }
--------------------------------------------------------------------------------
/src/navigations/DrawerNavigator.js:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import { createDrawerNavigator } from '@react-navigation/drawer';
3 | import { HomeStack } from './StackNavigators';
4 | import {Icon} from 'react-native-elements';
5 | import {colors} from "../global/styles";
6 |
7 | const Drawer = createDrawerNavigator()
8 |
9 | export default function DrawerNavigator(){
10 | return(
11 |
12 | ,
22 |
23 | headerShown : false
24 | }}
25 |
26 |
27 | />
28 |
29 | )
30 | }
--------------------------------------------------------------------------------
/src/navigations/RootNavigator.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { NavigationContainer } from '@react-navigation/native';
3 | import DrawerNavigator from './DrawerNavigator';
4 |
5 | export default function RoootNavigator(){
6 | return(
7 |
8 |
9 |
10 | )
11 | }
--------------------------------------------------------------------------------
/src/navigations/StackNavigators.js:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import { createNativeStackNavigator } from '@react-navigation/native-stack';
3 | import HomeScreen from '../screens/HomeScreen'
4 | import RequestScreen from '../screens/RequestScreen';
5 | import DestinationScreen from '../screens/DestinationScreen';
6 |
7 |
8 | const Home = createNativeStackNavigator();
9 |
10 | export function HomeStack(){
11 | return(
12 |
13 |
18 |
23 |
28 |
29 | )
30 | }
--------------------------------------------------------------------------------
/src/reducers/reducers.js:
--------------------------------------------------------------------------------
1 |
2 | export const OriginReducer = (state,action)=>{
3 | switch(action.type){
4 | case 'ADD_ORIGIN':
5 | return{
6 | latitude:action.payload.latitude,
7 | longitude:action.payload.longitude,
8 | address:action.payload.address,
9 | name:action.payload.name
10 | }
11 | default:
12 | return state
13 | }
14 | }
15 |
16 |
17 | export const DestinationReducer = (state,action)=>{
18 | switch(action.type){
19 | case 'ADD_DESTINATION':
20 | return{
21 | latitude:action.payload.latitude,
22 | longitude:action.payload.longitude,
23 | address:action.payload.address,
24 | name:action.payload.name
25 | }
26 | default:
27 | return state
28 | }
29 | }
--------------------------------------------------------------------------------
/src/screens/DestinationScreen.js:
--------------------------------------------------------------------------------
1 | import React,{useRef,useContext,useState} from 'react'
2 | import { StyleSheet, Text, View,Dimensions,TouchableOpacity,} from 'react-native';
3 | import { GooglePlacesAutocomplete } from 'react-native-google-places-autocomplete';
4 | import { Avatar,Icon} from 'react-native-elements';
5 | import { colors,parameters } from '../global/styles'
6 | import {GOOGLE_MAPS_APIKEY} from "@env";
7 | import { OriginContext,DestinationContext } from '../contexts/contexts';
8 |
9 | const SCREEN_HEIGHT = Dimensions.get('window').height;
10 | const SCREEN_WIDTH = Dimensions.get('window').width;
11 |
12 | const DestinationScreen = ({navigation}) => {
13 |
14 | const {dispatchOrigin} = useContext(OriginContext)
15 | const {dispatchDestination} = useContext(DestinationContext)
16 |
17 | const textInput1 = useRef(4);
18 | const textInput2 = useRef(5);
19 |
20 | const[destination,setDestination] = useState(false)
21 |
22 | return (
23 | <>
24 |
25 |
26 | navigation.goBack()}
32 | />
33 |
34 |
35 |
36 |
37 |
43 | For Someone
44 |
50 |
51 |
52 |
53 |
54 | {destination === false &&
55 | {
73 | dispatchOrigin({type:"ADD_ORIGIN",payload:{
74 | latitude:details.geometry.location.lat,
75 | longitude:details.geometry.location.lng,
76 | address:details.formatted_address,
77 | name:details.name
78 | }})
79 |
80 | setDestination(true)
81 | }}
82 |
83 | />
84 | }
85 | {destination === true &&
86 | {
104 | dispatchDestination({type:"ADD_DESTINATION",payload:{
105 | latitude:details.geometry.location.lat,
106 | longitude:details.geometry.location.lng,
107 | address:details.formatted_address,
108 | name:details.name
109 | }})
110 |
111 | navigation.navigate("RequestScreen",{state:0})
112 | }}
113 |
114 | />
115 | }
116 | >
117 | )
118 | }
119 |
120 | export default DestinationScreen
121 |
122 | const styles = StyleSheet.create({
123 | container: {
124 | flex: 1,
125 | backgroundColor: '#fff',
126 | alignItems: 'center',
127 | justifyContent: 'center',
128 | paddingTop:parameters.statusBarHeight
129 | },
130 |
131 | view1:{
132 | position:"absolute",
133 | top:25,
134 | left:12,
135 | backgroundColor:colors.white,
136 | height:40,
137 | width:40,
138 | borderRadius:20,
139 | justifyContent:"center",
140 | alignItems:"center",
141 | marginTop:2,
142 | zIndex: 10
143 |
144 | },
145 |
146 | view3:{
147 | flexDirection:"row",
148 | alignItems:"center",
149 | marginTop:2,
150 | marginBottom:10,
151 | backgroundColor: colors.white,
152 | height:30,
153 | zIndex: 10
154 | },
155 |
156 | view2:{backgroundColor:colors.white,
157 | zIndex:4,
158 | paddingBottom:10,
159 |
160 | },
161 |
162 | view24:{
163 | flexDirection:"row",
164 | justifyContent:"space-between",
165 | marginVertical:15,
166 | paddingHorizontal:20
167 | },
168 |
169 | view25:{
170 | flexDirection:'row',
171 | alignItems:"baseline"
172 | },
173 |
174 | flatlist:{
175 | marginTop:20,
176 | zIndex:17,
177 | elevation:8
178 | },
179 |
180 | });
181 |
182 |
183 | const autoComplete = {
184 |
185 | textInput:{
186 | backgroundColor: colors.grey6,
187 | height: 50,
188 | borderRadius: 5,
189 | paddingVertical: 5,
190 | paddingHorizontal: 10,
191 | fontSize: 15,
192 | flex: 1,
193 | borderWidth:1,
194 | marginHorizontal:15,
195 | },
196 | container: {
197 | paddingTop:20,
198 | flex: 1,
199 | backgroundColor:colors.white
200 | },
201 |
202 | textInputContainer: {
203 | flexDirection: 'row',
204 | },
205 |
206 | }
207 |
--------------------------------------------------------------------------------
/src/screens/HomeScreen.js:
--------------------------------------------------------------------------------
1 | import { StatusBar } from 'expo-status-bar'
2 | import React,{useState,useRef,useEffect} from 'react'
3 | import { StyleSheet, Text, View,Dimensions ,ScrollView,Image,FlatList,TouchableOpacity} from 'react-native'
4 | import { Icon} from 'react-native-elements'
5 | import MapView, { PROVIDER_GOOGLE,} from 'react-native-maps';
6 | import * as Location from 'expo-location';
7 |
8 | const SCREEN_WIDTH = Dimensions.get('window').width
9 | import { colors,parameters } from '../global/styles'
10 | import { filterData,carsAround } from '../global/data'
11 | import { mapStyle} from "../global/mapStyle"
12 |
13 | const HomeScreen = ({navigation}) => {
14 |
15 |
16 | const [latlng,setLatLng] = useState({})
17 |
18 | const checkPermission =async()=>{
19 | const hasPermission = await Location.requestForegroundPermissionsAsync();
20 | if(hasPermission.status === 'granted') {
21 | const permission = await askPermission();
22 | return permission
23 | }
24 | return true
25 | };
26 |
27 |
28 | const askPermission = async()=>{
29 | const permission = await Location.requestForegroundPermissionsAsync()
30 | return permission.status === 'granted';
31 | };
32 |
33 |
34 | const getLocation = async()=>{
35 | try{
36 | const {granted} =await Location.requestForegroundPermissionsAsync();
37 | if(!granted)return;
38 | const {
39 | coords:{latitude,longitude},
40 | } = await Location.getCurrentPositionAsync();
41 | setLatLng({latitude:latitude,longitude:longitude})
42 | }catch(err){
43 |
44 | }
45 | }
46 |
47 | const _map = useRef(1);
48 |
49 |
50 | useEffect(()=>{
51 | checkPermission();
52 | getLocation()
53 | // console.log(latlng)
54 | ,[]})
55 |
56 |
57 | return (
58 |
59 |
60 |
61 |
66 |
67 |
68 |
69 |
70 | Destress your commute
71 |
72 |
73 | Read a book.Take a nap. Stare out the window
74 | {navigation.navigate("RequestScreen",{state:0})}}>
75 |
76 | Ride with Uber
77 |
78 |
79 |
80 |
81 |
85 |
86 |
87 |
88 |
89 |
90 | item.id}
96 | renderItem = { ({item})=>(
97 |
98 |
99 |
100 |
101 |
102 | {item.name}
103 |
104 |
105 | )}
106 | />
107 |
108 |
109 | Where to ?
110 |
111 |
116 | Now
117 |
122 |
123 |
124 |
125 |
126 |
127 |
132 |
133 |
134 | 32 Olivia Rd
135 | Klipfontein 83-Ir, Boksburg
136 |
137 |
138 |
139 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
155 |
156 |
157 | 32 Olivia Rd
158 | Klipfontein 83-Ir, Boksburg
159 |
160 |
161 |
162 |
167 |
168 |
169 |
170 | Around you
171 |
172 |
173 |
183 | {carsAround.map((item,index)=>
184 |
185 |
190 |
191 |
192 | )
193 |
194 | }
195 |
196 |
197 |
198 |
199 |
200 |
201 | )
202 | }
203 |
204 | export default HomeScreen
205 |
206 | const styles = StyleSheet.create({
207 | container:{
208 | flex:1,
209 | backgroundColor:colors.white,
210 | paddingBottom:30,
211 | paddingTop:parameters.statusBarHeight
212 | },
213 | header:{
214 | backgroundColor:colors.blue,
215 | height:parameters.headerHeight,
216 | alignItems:"flex-start"
217 |
218 | },
219 |
220 | image1:{
221 |
222 | height:100,
223 | width:100,
224 |
225 | },
226 |
227 | image2:{height:60,width:60,
228 | borderRadius:30,
229 | },
230 |
231 | home:{
232 | backgroundColor:colors.blue,
233 | paddingLeft:20,
234 |
235 | },
236 |
237 | text1:{
238 | color:colors.white,
239 | fontSize:21,
240 | paddingBottom:20,
241 | paddingTop:20
242 | },
243 |
244 | text2:{
245 | color:colors.white,
246 | fontSize:16
247 | },
248 |
249 | view1:{
250 | flexDirection:"row",
251 | flex:1,
252 | paddingTop:30
253 | },
254 |
255 | button1:{
256 | height:40,
257 | width:150,
258 | backgroundColor:colors.black,
259 | borderRadius:20,
260 | alignItems:"center",
261 | justifyContent:"center",
262 | marginTop:20
263 | },
264 |
265 | button1Text:{
266 | color:colors.white,
267 | fontSize:17,
268 | marginTop:-2
269 |
270 | },
271 | card:{
272 | alignItems:"center",
273 | margin:SCREEN_WIDTH/22
274 |
275 | },
276 |
277 | view2:{marginBottom:5,
278 | borderRadius:15,
279 | backgroundColor:colors.grey6
280 | },
281 |
282 | title:{
283 | color:colors.black,
284 | fontSize:16
285 | },
286 | view3:{flexDirection:"row",
287 | marginTop :5,
288 | height:50,
289 | backgroundColor:colors.grey6,
290 | alignItems:"center",
291 | justifyContent:"space-between",
292 | marginHorizontal:15
293 |
294 | },
295 | text3:{marginLeft:15,
296 | fontSize:20,
297 | color:colors.black
298 | },
299 |
300 | view4:{ flexDirection:"row",
301 | alignItems:"center",
302 | marginRight:15,
303 | backgroundColor:"white",
304 | paddingHorizontal:10,
305 | paddingVertical:2,
306 | borderRadius:20
307 | },
308 |
309 | view5:{ flexDirection:"row",
310 | alignItems:"center",
311 | backgroundColor:"white",
312 | paddingVertical:25,
313 | justifyContent:"space-between",
314 | marginHorizontal:15,
315 | borderBottomColor:colors.grey4,
316 | borderBottomWidth:1,
317 | flex:1
318 | },
319 |
320 | view6:{
321 |
322 |
323 | alignItems:"center",
324 | flex:5,
325 | flexDirection:"row"
326 | },
327 | view7:{
328 | backgroundColor:colors.grey6,
329 | height:40,
330 | width:40,
331 | borderRadius:20,
332 | alignItems:"center",
333 | justifyContent:"center",
334 | marginRight:20
335 |
336 | },
337 |
338 | map:{
339 |
340 | height: 150,
341 | marginVertical: 0,
342 | width:SCREEN_WIDTH*0.92
343 | },
344 |
345 | text4:{ fontSize:20,
346 | color:colors.black,
347 | marginLeft:20,
348 | marginBottom:20
349 | },
350 |
351 | icon1: {marginLeft:10,
352 | marginTop:5
353 | },
354 |
355 | view8: {flex:4,
356 | marginTop:-25
357 | } ,
358 | carsAround: {
359 | width: 28,
360 | height: 14,
361 |
362 | },
363 |
364 | location: {
365 | width: 16,
366 | height: 16,
367 | borderRadius:8,
368 | backgroundColor:colors.blue,
369 | alignItems:"center",
370 | justifyContent:"center"
371 |
372 | },
373 |
374 | view9:{width:4,
375 | height:4,
376 | borderRadius:2,
377 | backgroundColor:"white"
378 | }
379 |
380 |
381 | })
382 |
--------------------------------------------------------------------------------
/src/screens/RequestScreen.js:
--------------------------------------------------------------------------------
1 | import React,{useState,useContext,useEffect,useRef,useMemo,useCallback} from 'react'
2 | import { StyleSheet, Image,View,Text,Dimensions,TouchableOpacity} from 'react-native'
3 | import BottomSheet, { BottomSheetFlatList,BottomSheetSectionList } from '@gorhom/bottom-sheet';
4 | import { Avatar,Icon} from 'react-native-elements';
5 | import MapComponent from '../components/MapComponent'
6 | import { colors,parameters } from '../global/styles'
7 | import { rideData } from '../global/data';
8 | import { OriginContext,DestinationContext } from '../contexts/contexts';
9 |
10 | const SCREEN_HEIGHT = Dimensions.get('window').height;
11 | const SCREEN_WIDTH = Dimensions.get('window').width;
12 |
13 |
14 | export default function RequestScreen({navigation,route}) {
15 | const {origin,dispatchOrigin} = useContext(OriginContext)
16 | const [userOrigin,setUserOrigin] = useState({latitude:origin.latitude,
17 | longitude:origin.longitude})
18 | const {destination,dispatchDestination} = useContext(DestinationContext)
19 | const [userDestination,setUserDestination] = useState({latitude:destination.latitude,
20 | longitude:destination.longitude})
21 |
22 | const bottomsheet1 =useRef(1) ;
23 |
24 | const snapPoints1 = useMemo(()=>['70%'],[])
25 | const handleSheetChange1 = useCallback((index)=>{},[])
26 |
27 | useEffect(()=>{
28 | setUserOrigin({latitude:origin.latitude,
29 | longitude:origin.longitude});
30 | setUserDestination({latitude:destination.latitude,
31 | longitude:destination.longitude})
32 | },[origin,destination])
33 |
34 |
35 | const renderFlatListItems = useCallback(({item})=>(
36 |
37 |
38 |
39 |
45 |
46 |
47 | {item.street}
48 | {item.area}
49 |
50 |
51 |
52 | ),[])
53 |
54 |
55 | return (
56 |
57 |
58 |
64 |
65 |
66 |
67 |
68 |
74 | For Someone
75 |
81 |
82 |
83 |
84 |
85 |
89 |
90 |
91 | navigation.navigate("DestinationScreen")}>
92 |
93 | From where
94 |
95 |
96 |
97 |
98 |
99 | ...
100 |
101 |
102 |
103 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
123 | item.id}
127 | renderItem={renderFlatListItems}
128 | contentContainerStyle ={styles.contentContainer}
129 | ListHeaderComponent={
130 |
131 |
137 |
138 |
139 | Saved Places
140 |
141 | }
142 | ListFooterComponent={
143 |
144 |
145 |
146 |
152 |
153 |
154 | Set location on map
155 |
156 |
157 |
158 |
159 |
165 |
166 |
167 | Enter destination later
168 |
169 |
170 |
171 | }
172 | />
173 |
174 |
175 | )
176 | }
177 |
178 |
179 |
180 |
181 |
182 |
183 | const styles = StyleSheet.create({
184 | container1:{flex:1,
185 | paddingTop:parameters.statusBarHeight,
186 |
187 | },
188 |
189 | container: {
190 | flex: 1,
191 | paddingTop:parameters.statusBarHeight
192 |
193 | },
194 | contentContainer: {
195 | flex: 1,
196 | alignItems: 'center',
197 |
198 | },
199 |
200 | view1:{
201 | position:"absolute",
202 | top:25,
203 | left:12,
204 | backgroundColor:colors.white,
205 | height:40,
206 | width:40,
207 | borderRadius:20,
208 | justifyContent:"center",
209 | alignItems:"center",
210 | marginTop:2,
211 | zIndex: 8
212 |
213 | },
214 |
215 | view2:{
216 | height:SCREEN_HEIGHT*0.21,
217 | alignItems:"center",
218 | zIndex: 5,
219 | backgroundColor:colors.white
220 | },
221 |
222 | view3:{
223 | flexDirection:"row",
224 | alignItems:"center",
225 | marginTop:2,
226 | marginBottom:10,
227 | backgroundColor: colors.white,
228 | //height:30,
229 | zIndex:10,
230 |
231 |
232 | },
233 | view4:{
234 | flexDirection:"row",
235 | alignItems:"center",
236 |
237 | },
238 | view5:{
239 | backgroundColor:colors.grey7,
240 | width:SCREEN_WIDTH*0.70,
241 | height:40,
242 | justifyContent:"center",
243 | marginTop:10,
244 |
245 | },
246 | view6:{
247 | backgroundColor:colors.grey6,
248 | width:SCREEN_WIDTH*0.70,
249 | height:40,
250 | justifyContent:"center",
251 | marginTop:10,
252 | paddingLeft:0
253 | },
254 | text1:{
255 | marginLeft:10,
256 | fontSize:16,
257 | color:colors.grey1
258 | },
259 |
260 | image1:{ height:70,
261 | width:30,
262 | marginRight:10,
263 | marginTop:10
264 | },
265 | view7:{
266 | flexDirection:"row",
267 | alignItems:"center"
268 | },
269 | view8:{
270 | marginLeft:10
271 | },
272 | view10:{
273 | alignItems:"center",
274 | flex:5,
275 | flexDirection:"row",
276 | paddingVertical:10,
277 | borderBottomColor:colors.grey5,
278 | borderBottomWidth:1,
279 | paddingHorizontal:15
280 | },
281 | view11:{
282 | backgroundColor:colors.grey,
283 | height:30,
284 | width:30,
285 | borderRadius:15,
286 | alignItems:"center",
287 | justifyContent:"center",
288 | marginRight:15,
289 | marginTop:15,
290 | },
291 |
292 | contentContainer: {
293 | backgroundColor: 'white',
294 | },
295 |
296 | view12:{
297 | alignItems:"center",
298 | paddingVertical:10,
299 | borderBottomWidth:1,
300 | borderBottomColor:colors.grey4
301 | },
302 |
303 | text2:{
304 | fontSize:18,
305 | color:colors.grey1
306 | },
307 | text3:{
308 | fontSize:16,
309 | color:colors.black,
310 | fontWeight:"bold",
311 | marginRight:5,
312 |
313 | },
314 |
315 | text4:{color:colors.grey2,
316 | marginTop:4
317 | },
318 |
319 | view13:{
320 | flexDirection:"row",
321 | alignItems:"flex-start",
322 | justifyContent:"space-between",
323 | paddingHorizontal:15,
324 | paddingVertical:5
325 | },
326 |
327 | button1:{
328 | height:40,
329 | width:100,
330 | backgroundColor:colors.grey6,
331 | borderRadius:20,
332 | alignItems:"center",
333 | justifyContent:"center",
334 | marginTop:20
335 | },
336 |
337 | button2:{
338 | height:50,
339 | backgroundColor:colors.grey10,
340 | alignItems:"center",
341 | justifyContent:"center",
342 | marginTop:20,
343 | marginHorizontal:30
344 | },
345 |
346 |
347 |
348 | button1Text:{
349 |
350 | fontSize:17,
351 | marginTop:-2,
352 | color:colors.black
353 |
354 | },
355 |
356 | button2Text:{
357 | color:colors.white,
358 | fontSize:23,
359 | marginTop:-2,
360 |
361 |
362 | },
363 |
364 |
365 | view14:{
366 |
367 |
368 | alignItems:"center",
369 | flex:5,
370 | flexDirection:"row"
371 | },
372 | view15:{
373 | backgroundColor:colors.grey6,
374 | height:40,
375 | width:40,
376 | borderRadius:20,
377 | alignItems:"center",
378 | justifyContent:"center",
379 | marginRight:20
380 |
381 | },
382 |
383 | view16:{
384 | flexDirection:"row",
385 | alignItems:"baseline"
386 | },
387 |
388 | text5:{
389 | fontSize:12,
390 | color:colors.black,
391 | marginLeft:3,
392 | fontWeight:"bold",
393 | paddingBottom:1
394 |
395 | },
396 |
397 | view17:{
398 |
399 | },
400 |
401 | view18:{
402 |
403 |
404 |
405 | },
406 |
407 | view19:{flex:1.7,
408 | alignItems:"flex-end",
409 |
410 | },
411 |
412 | icon:{paddingBottom:2},
413 |
414 | image2:{height:60,width:60 },
415 |
416 | view20:{marginRight:10 },
417 |
418 | text6:{
419 | fontSize:15,
420 | color:colors.black,
421 | fontWeight:"bold",
422 | },
423 |
424 | view21:{
425 | flexDirection:"row",
426 | alignItems:"center",
427 | justifyContent:"space-between",
428 | marginHorizontal:30,
429 | marginTop:15
430 | },
431 |
432 | view22:{
433 | alignItems:"center",
434 | marginBottom:-20
435 | },
436 |
437 | sectionHeaderContainer: {
438 | backgroundColor: "white",
439 | marginTop:30,
440 | paddingLeft:15
441 | },
442 |
443 | text7 : {
444 | fontSize:28,
445 | color:colors.black,
446 | marginRight:5,
447 |
448 | },
449 |
450 | text8:{
451 | fontSize:15,
452 | color:colors.grey2,
453 | textDecorationLine:"line-through"
454 |
455 |
456 | },
457 |
458 | button3:{
459 |
460 | height:60,
461 | backgroundColor:colors.black,
462 | alignItems:"center",
463 | justifyContent:"center",
464 | width:SCREEN_WIDTH-110,
465 | marginBottom:10
466 | },
467 |
468 | view23:{
469 | flexDirection:"row",
470 | backgroundColor:colors.cardbackground,
471 | // elevation:10,
472 | justifyContent:"space-between",
473 | alignItems:"flex-end",
474 | paddingHorizontal:20,
475 | height:80,
476 |
477 | },
478 |
479 | button2Image:{
480 | height:55,
481 | width:55,
482 | alignItems:"center",
483 | justifyContent:"center",
484 | backgroundColor:colors.grey6,
485 | marginBottom:10,
486 |
487 | }
488 | ,
489 | text9:{fontSize:15,
490 | color:colors.grey1
491 | },
492 |
493 |
494 | map:{
495 | marginVertical: 0,
496 | width:SCREEN_WIDTH,
497 | zIndex: -1
498 | },
499 |
500 | centeredView: {
501 | zIndex:14
502 | },
503 | modalView: {
504 | marginHorizontal: 20,
505 | marginVertical:60,
506 | backgroundColor: "white",
507 | borderRadius: 20,
508 | paddingHorizontal: 20,
509 | paddingVertical:20,
510 | shadowColor: "#000",
511 | shadowOffset: {
512 | width: 0,
513 | height: 2
514 | },
515 | shadowOpacity: 0.25,
516 | shadowRadius: 4,
517 | elevation: 5,
518 | zIndex:16
519 | },
520 |
521 | view24:{
522 | flexDirection:"row",
523 | justifyContent:"space-between",
524 | marginVertical:15,
525 | paddingHorizontal:20
526 | },
527 |
528 | view25:{
529 | flexDirection:'row',
530 | alignItems:"baseline"
531 | },
532 |
533 | flatlist:{
534 | marginTop:20
535 | },
536 |
537 | text10:{color:colors.grey2,
538 | paddingLeft:10
539 | }
540 |
541 | })
542 |
543 |
544 |
545 |
546 |
--------------------------------------------------------------------------------