merging
|
@ -0,0 +1,2 @@
|
||||||
|
CustomerApp/node_modules
|
||||||
|
RiderApp/node_modules
|
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 345 KiB |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 85 KiB |
|
@ -1,20 +0,0 @@
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDRTCCAi2gAwIBAgIERu0DYTANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJV
|
|
||||||
UzEJMAcGA1UECBMAMQkwBwYDVQQHEwAxCTAHBgNVBAoTADEJMAcGA1UECxMAMRgw
|
|
||||||
FgYDVQQDEw9jb20uZW5hdGVnYS5hcHAwHhcNMTkwNzI2MDg0NzEyWhcNNDYxMjEx
|
|
||||||
MDg0NzEyWjBTMQswCQYDVQQGEwJVUzEJMAcGA1UECBMAMQkwBwYDVQQHEwAxCTAH
|
|
||||||
BgNVBAoTADEJMAcGA1UECxMAMRgwFgYDVQQDEw9jb20uZW5hdGVnYS5hcHAwggEi
|
|
||||||
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQChW6yOHftMY4PZYS/1VK72o0mj
|
|
||||||
TMxVrolnwN46QrCkwX3MTC5Rf014MCOfWjRpbeCnL/ZFW5hMu1gfZhI3cU6n8kKi
|
|
||||||
3xkhIgtxoaGecC594WzOJfFNhNuHbdJTp4KlPli8k1CiWSxzddnxDaJX1zLh4vbp
|
|
||||||
Z1czC0k7HY6Muhpd7WCC1uwcp0UzCm1ej7LZqYPuUzwieW0V/ASMdS9yWri4LyIO
|
|
||||||
DA6nFbDdvCJrupL0C8RQjACCRMLwGx2l3zMlWe3nDa4ZyMRW6cdSsQA6QvlwxVeK
|
|
||||||
6I40S8fYsUf68/QZrnBwTV9yyJ78bIpF+9zF3b7kcv7tXAKkcuoQcd/70e79AgMB
|
|
||||||
AAGjITAfMB0GA1UdDgQWBBQ71L/oHvSkF0v65nI4B1iVLSFcfDANBgkqhkiG9w0B
|
|
||||||
AQsFAAOCAQEAlzMU9jy1oCtrxeucJcx5LU2+4Np/pdhfofivK3W6cLJ6yqAvKxNC
|
|
||||||
cmO+4mwG8O9s5bYtscB7+n9u1JYNOGMtyzAbjW2tzysaPU9EPatD+oAQznU1ur28
|
|
||||||
v5YCTmS1tv4wRsYkjYGI+S+XQ+qi/wuNith2te1qoUfdl4/JCIA8kw7XPU9eLkDE
|
|
||||||
r3RrsZXV7NTIo2f2nnTeJWz9QFtERevQlgpwOnCqmqvPKV3n52sH5R/8g3xjiL1W
|
|
||||||
wP1JHGErSFGVbctYH6HTsHQkAfmzPeK7UOfB+kR70dXkPKdw3u+pdv8jzaRO9gpq
|
|
||||||
H97r6aLCoyB53CJ+6w51DSl1eAKMGK7Tcg==
|
|
||||||
-----END CERTIFICATE-----
|
|
|
@ -1,46 +0,0 @@
|
||||||
/*****************************
|
|
||||||
* environment.js
|
|
||||||
* path: '/environment.js' (root of your project)
|
|
||||||
******************************/
|
|
||||||
|
|
||||||
import Constants from 'expo-constants';
|
|
||||||
|
|
||||||
const ENV = {
|
|
||||||
development: {
|
|
||||||
GRAPHQL_URL:'' ,
|
|
||||||
SERVER_URL: '', // put / at the end of server url
|
|
||||||
IOS_CLIENT_ID_GOOGLE: "",
|
|
||||||
ANDROID_CLIENT_ID_GOOGLE: "",
|
|
||||||
FACEBOOK_APP_ID: "",
|
|
||||||
AMPLITUDE_API_KEY: "",
|
|
||||||
STRIPE_PUBLIC_KEY: "",
|
|
||||||
STRIPE_IMAGE_URL: "",
|
|
||||||
STRIPE_STORE_NAME: ""
|
|
||||||
},
|
|
||||||
production: {
|
|
||||||
GRAPHQL_URL:'' ,
|
|
||||||
SERVER_URL: '', // put / at the end of server url
|
|
||||||
IOS_CLIENT_ID_GOOGLE: "",
|
|
||||||
ANDROID_CLIENT_ID_GOOGLE: "",
|
|
||||||
FACEBOOK_APP_ID: "",
|
|
||||||
AMPLITUDE_API_KEY: "",
|
|
||||||
STRIPE_PUBLIC_KEY: "",
|
|
||||||
STRIPE_IMAGE_URL: "",
|
|
||||||
STRIPE_STORE_NAME: ""
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const getEnvVars = (env = Constants.manifest.releaseChannel) => {
|
|
||||||
// What is __DEV__ ?
|
|
||||||
// This variable is set to true when react-native is running in Dev mode.
|
|
||||||
// __DEV__ is true when run locally, but false when published.
|
|
||||||
if (__DEV__) {
|
|
||||||
return ENV.development;
|
|
||||||
} else if (env === 'production') {
|
|
||||||
return ENV.production;
|
|
||||||
} else {
|
|
||||||
return ENV.development;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export default getEnvVars;
|
|
|
@ -1,47 +0,0 @@
|
||||||
{
|
|
||||||
"project_info": {
|
|
||||||
"project_number": "94983896797",
|
|
||||||
"firebase_url": "https://enatega-production.firebaseio.com",
|
|
||||||
"project_id": "enatega-production",
|
|
||||||
"storage_bucket": "enatega-production.appspot.com"
|
|
||||||
},
|
|
||||||
"client": [
|
|
||||||
{
|
|
||||||
"client_info": {
|
|
||||||
"mobilesdk_app_id": "1:94983896797:android:537c4eadfd11cf33",
|
|
||||||
"android_client_info": {
|
|
||||||
"package_name": "com.enatega.app"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"oauth_client": [
|
|
||||||
{
|
|
||||||
"client_id": "94983896797-9e36v3edasjt9t9r5q9uvkth700nn0nn.apps.googleusercontent.com",
|
|
||||||
"client_type": 3
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"api_key": [
|
|
||||||
{
|
|
||||||
"current_key": "AIzaSyBt9S6e7ig5EkNiSXw3sCyX7kgo1gzPxl4"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"services": {
|
|
||||||
"appinvite_service": {
|
|
||||||
"other_platform_oauth_client": [
|
|
||||||
{
|
|
||||||
"client_id": "94983896797-9e36v3edasjt9t9r5q9uvkth700nn0nn.apps.googleusercontent.com",
|
|
||||||
"client_type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"client_id": "94983896797-irt6u2cmq2sjcp7j1rj9m9pqptjd12ue.apps.googleusercontent.com",
|
|
||||||
"client_type": 2,
|
|
||||||
"ios_info": {
|
|
||||||
"bundle_id": "com.enatega.app"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"configuration_version": "1"
|
|
||||||
}
|
|
|
@ -1,47 +0,0 @@
|
||||||
{
|
|
||||||
"project_info": {
|
|
||||||
"project_number": "94983896797",
|
|
||||||
"firebase_url": "https://enatega-production.firebaseio.com",
|
|
||||||
"project_id": "enatega-production",
|
|
||||||
"storage_bucket": "enatega-production.appspot.com"
|
|
||||||
},
|
|
||||||
"client": [
|
|
||||||
{
|
|
||||||
"client_info": {
|
|
||||||
"mobilesdk_app_id": "1:94983896797:android:5b28fe2925a51512112534",
|
|
||||||
"android_client_info": {
|
|
||||||
"package_name": "com.enatega.vendor"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"oauth_client": [
|
|
||||||
{
|
|
||||||
"client_id": "94983896797-9e36v3edasjt9t9r5q9uvkth700nn0nn.apps.googleusercontent.com",
|
|
||||||
"client_type": 3
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"api_key": [
|
|
||||||
{
|
|
||||||
"current_key": "AIzaSyBt9S6e7ig5EkNiSXw3sCyX7kgo1gzPxl4"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"services": {
|
|
||||||
"appinvite_service": {
|
|
||||||
"other_platform_oauth_client": [
|
|
||||||
{
|
|
||||||
"client_id": "94983896797-9e36v3edasjt9t9r5q9uvkth700nn0nn.apps.googleusercontent.com",
|
|
||||||
"client_type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"client_id": "94983896797-osn1lglcn3f03a4dqpf1vl2rcogca8vp.apps.googleusercontent.com",
|
|
||||||
"client_type": 2,
|
|
||||||
"ios_info": {
|
|
||||||
"bundle_id": "com.enatega.app"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"configuration_version": "1"
|
|
||||||
}
|
|
|
@ -1,40 +0,0 @@
|
||||||
{
|
|
||||||
"project_info": {
|
|
||||||
"project_number": "346954645996",
|
|
||||||
"firebase_url": "https://enatega-4d403.firebaseio.com",
|
|
||||||
"project_id": "enatega-4d403",
|
|
||||||
"storage_bucket": "enatega-4d403.appspot.com"
|
|
||||||
},
|
|
||||||
"client": [
|
|
||||||
{
|
|
||||||
"client_info": {
|
|
||||||
"mobilesdk_app_id": "1:346954645996:android:f968efbb41d1fa7a",
|
|
||||||
"android_client_info": {
|
|
||||||
"package_name": "host.exp.exponent"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"oauth_client": [
|
|
||||||
{
|
|
||||||
"client_id": "346954645996-a2t28in6j98u33hnd4evb45m5d34lvjp.apps.googleusercontent.com",
|
|
||||||
"client_type": 3
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"api_key": [
|
|
||||||
{
|
|
||||||
"current_key": "AIzaSyCFfJ4RHfakMqvp_QsIHkfWcpeYrxtk8j0"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"services": {
|
|
||||||
"appinvite_service": {
|
|
||||||
"other_platform_oauth_client": [
|
|
||||||
{
|
|
||||||
"client_id": "346954645996-a2t28in6j98u33hnd4evb45m5d34lvjp.apps.googleusercontent.com",
|
|
||||||
"client_type": 3
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"configuration_version": "1"
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
import AsyncStorage from '@react-native-async-storage/async-storage'
|
|
||||||
import * as Localization from 'expo-localization'
|
|
||||||
import i18n from 'i18n-js'
|
|
||||||
import { Platform } from 'react-native'
|
|
||||||
import { de } from './translations/de'
|
|
||||||
import { en } from './translations/en'
|
|
||||||
import { fr } from './translations/fr'
|
|
||||||
import { km } from './translations/km'
|
|
||||||
import { zh } from './translations/zh'
|
|
||||||
|
|
||||||
i18n.initAsync = async() => {
|
|
||||||
i18n.fallbacks = true
|
|
||||||
i18n.translations = { fr, en, km, zh, de }
|
|
||||||
// i18n.locale = 'km'
|
|
||||||
if (Platform.OS === 'android') {
|
|
||||||
const lang = await AsyncStorage.getItem('enatega-language')
|
|
||||||
i18n.locale = lang || 'en'
|
|
||||||
} else {
|
|
||||||
i18n.locale = Localization.locale
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default i18n
|
|
|
@ -1,26 +0,0 @@
|
||||||
const COLORS = {
|
|
||||||
white: '#FFFFFF',
|
|
||||||
black: '#000000',
|
|
||||||
black02: 'rgba(0, 0, 0, 0.2)',
|
|
||||||
primary: '#febb2c',
|
|
||||||
darkGrey: '#333333',
|
|
||||||
offWhite: '#FAFAFA',
|
|
||||||
lineGrey: '#e7e5e4',
|
|
||||||
lightGrey: '#a5a5a5',
|
|
||||||
lightWhite: '#FCFCFC',
|
|
||||||
whitishGrey: '#7F7F7F',
|
|
||||||
lightBlack: '#292929',
|
|
||||||
redishPink: '#ff4866',
|
|
||||||
primaryBlue: '#00b9c6',
|
|
||||||
primaryBlack: '#0b0b0b',
|
|
||||||
blueShadeGrey: '#f7f7fb',
|
|
||||||
primaryLightBlue: '#0cc8d5',
|
|
||||||
lightBlueShadeGrey: '#f8f9fa',
|
|
||||||
mediumBlueShadeGrey: '#f2f4f5',
|
|
||||||
black06: 'rgba(0,0,0,0.6)',
|
|
||||||
white06: 'rgba(255,255,255,0.6)',
|
|
||||||
redishOrange: '#FA7751',
|
|
||||||
blueColor: '#00b9c6',
|
|
||||||
yellowishOrange: '#fff1d4'
|
|
||||||
}
|
|
||||||
export { COLORS }
|
|
|
@ -1,82 +0,0 @@
|
||||||
import { DarkTheme, DefaultTheme } from '@react-navigation/native'
|
|
||||||
import { COLORS } from './Colors'
|
|
||||||
const Theme = {
|
|
||||||
Light: {
|
|
||||||
...DefaultTheme,
|
|
||||||
colors: {
|
|
||||||
...DefaultTheme.colors,
|
|
||||||
black: COLORS.black,
|
|
||||||
white: COLORS.white,
|
|
||||||
curve: COLORS.primary,
|
|
||||||
selected: COLORS.primary,
|
|
||||||
fontWhite: COLORS.white,
|
|
||||||
tagColor: COLORS.primary,
|
|
||||||
iconColor: COLORS.darkGrey,
|
|
||||||
iconColorPrimary: COLORS.primary,
|
|
||||||
cardContainer: COLORS.white,
|
|
||||||
rippleColor: COLORS.black02,
|
|
||||||
background: COLORS.white,
|
|
||||||
lightBackground: COLORS.lightBlueShadeGrey,
|
|
||||||
headerbackground: COLORS.primary,
|
|
||||||
headerbackground2: COLORS.offWhite,
|
|
||||||
headerTextColor: COLORS.primaryBlack,
|
|
||||||
fontMainColor: COLORS.primaryBlack,
|
|
||||||
fontSecondColor: COLORS.lightGrey,
|
|
||||||
placeHolderColor: COLORS.lightGrey,
|
|
||||||
buttonBackground: COLORS.primary,
|
|
||||||
buttonBackgroundLight: COLORS.mediumBlueShadeGrey,
|
|
||||||
buttonBackgroundBlue: COLORS.primaryLightBlue,
|
|
||||||
active: COLORS.primaryLightBlue,
|
|
||||||
buttonText: COLORS.white,
|
|
||||||
horizontalLine: COLORS.lineGrey,
|
|
||||||
shadowColor: COLORS.black06,
|
|
||||||
drawerBackground: COLORS.primary,
|
|
||||||
spinnerColor: COLORS.primary,
|
|
||||||
errorColor: COLORS.redishOrange,
|
|
||||||
radioColor: COLORS.white,
|
|
||||||
radioOuterColor: COLORS.primary,
|
|
||||||
blueColor: COLORS.blueColor,
|
|
||||||
chatBubblePrimary: COLORS.yellowishOrange
|
|
||||||
}
|
|
||||||
},
|
|
||||||
Dark: {
|
|
||||||
...DarkTheme,
|
|
||||||
colors: {
|
|
||||||
...DarkTheme.colors,
|
|
||||||
white: COLORS.white,
|
|
||||||
black: COLORS.black,
|
|
||||||
curve: COLORS.primary,
|
|
||||||
selected: COLORS.primary,
|
|
||||||
fontWhite: COLORS.white,
|
|
||||||
tagColor: COLORS.primary,
|
|
||||||
rippleColor: COLORS.black02,
|
|
||||||
background: COLORS.lightBlack,
|
|
||||||
lightBackground: COLORS.lightBlueShadeGrey,
|
|
||||||
cardContainer: COLORS.darkGrey,
|
|
||||||
iconColor: COLORS.lightWhite,
|
|
||||||
iconColorPrimary: COLORS.primary,
|
|
||||||
headerbackground: COLORS.black,
|
|
||||||
headerbackground2: COLORS.black,
|
|
||||||
headerTextColor: COLORS.primaryBlack,
|
|
||||||
fontMainColor: COLORS.lightWhite,
|
|
||||||
fontSecondColor: COLORS.whitishGrey,
|
|
||||||
placeHolderColor: COLORS.lightGrey,
|
|
||||||
buttonBackground: COLORS.primary,
|
|
||||||
buttonBackgroundLight: COLORS.mediumBlueShadeGrey,
|
|
||||||
buttonBackgroundBlue: COLORS.primaryLightBlue,
|
|
||||||
active: COLORS.primaryLightBlue,
|
|
||||||
buttonText: COLORS.white,
|
|
||||||
horizontalLine: COLORS.lineGrey,
|
|
||||||
shadowColor: COLORS.white06,
|
|
||||||
drawerBackground: COLORS.primary,
|
|
||||||
spinnerColor: COLORS.primary,
|
|
||||||
errorColor: COLORS.redishOrange,
|
|
||||||
radioColor: COLORS.white,
|
|
||||||
radioOuterColor: COLORS.primary,
|
|
||||||
blueColor: COLORS.blueColor,
|
|
||||||
chatBubblePrimary: COLORS.yellowishOrange
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default Theme
|
|
|
@ -1,4 +0,0 @@
|
||||||
import { COLORS } from './Colors'
|
|
||||||
import THEME from './Theme'
|
|
||||||
|
|
||||||
export { COLORS, THEME }
|
|
|
@ -1,92 +0,0 @@
|
||||||
import AsyncStorage from '@react-native-async-storage/async-storage'
|
|
||||||
import { defaultDataIdFromObject, InMemoryCache } from 'apollo-cache-inmemory'
|
|
||||||
import { persistCache } from 'apollo-cache-persist'
|
|
||||||
import { ApolloClient } from 'apollo-client'
|
|
||||||
import { ApolloLink, concat, Observable, split } from 'apollo-link'
|
|
||||||
import { createHttpLink } from 'apollo-link-http'
|
|
||||||
import { WebSocketLink } from 'apollo-link-ws'
|
|
||||||
import { getMainDefinition } from 'apollo-utilities'
|
|
||||||
import getEnvVars from '../../environment'
|
|
||||||
|
|
||||||
const { GRAPHQL_URL, WS_GRAPHQL_URL } = getEnvVars()
|
|
||||||
|
|
||||||
const cache = new InMemoryCache({
|
|
||||||
dataIdFromObject: object => {
|
|
||||||
switch (object.__typename) {
|
|
||||||
case 'CartItem':
|
|
||||||
return object.key // use `key` as the primary key
|
|
||||||
default:
|
|
||||||
return defaultDataIdFromObject(object) // fall back to default handling
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
const httpLink = createHttpLink({
|
|
||||||
uri: GRAPHQL_URL
|
|
||||||
})
|
|
||||||
|
|
||||||
const wsLink = new WebSocketLink({
|
|
||||||
uri: WS_GRAPHQL_URL,
|
|
||||||
options: {
|
|
||||||
reconnect: true
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
const request = async operation => {
|
|
||||||
const token = await AsyncStorage.getItem('token')
|
|
||||||
|
|
||||||
operation.setContext({
|
|
||||||
// get the authentication token from local storage if it exists
|
|
||||||
// return the headers to the context so httpLink can read them
|
|
||||||
headers: {
|
|
||||||
authorization: token ? `Bearer ${token}` : ''
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
const requestLink = new ApolloLink(
|
|
||||||
(operation, forward) =>
|
|
||||||
new Observable(observer => {
|
|
||||||
// console.log(observer)
|
|
||||||
let handle
|
|
||||||
Promise.resolve(operation)
|
|
||||||
.then(oper => request(oper))
|
|
||||||
.then(() => {
|
|
||||||
handle = forward(operation).subscribe({
|
|
||||||
next: observer.next.bind(observer),
|
|
||||||
error: observer.error.bind(observer),
|
|
||||||
complete: observer.complete.bind(observer)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.catch(observer.error.bind(observer))
|
|
||||||
|
|
||||||
return () => {
|
|
||||||
if (handle) handle.unsubscribe()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
)
|
|
||||||
|
|
||||||
const terminatingLink = split(({ query }) => {
|
|
||||||
const { kind, operation } = getMainDefinition(query)
|
|
||||||
return kind === 'OperationDefinition' && operation === 'subscription'
|
|
||||||
}, wsLink)
|
|
||||||
|
|
||||||
const setupApollo = async() => {
|
|
||||||
await persistCache({
|
|
||||||
cache,
|
|
||||||
storage: AsyncStorage
|
|
||||||
})
|
|
||||||
const client = new ApolloClient({
|
|
||||||
link: concat(ApolloLink.from([terminatingLink, requestLink]), httpLink),
|
|
||||||
cache,
|
|
||||||
resolvers: {}
|
|
||||||
})
|
|
||||||
|
|
||||||
// set ref for global use
|
|
||||||
// eslint-disable-next-line no-undef
|
|
||||||
clientRef = client
|
|
||||||
|
|
||||||
return client
|
|
||||||
}
|
|
||||||
|
|
||||||
export default setupApollo
|
|
|
@ -1,590 +0,0 @@
|
||||||
export const login = `
|
|
||||||
mutation Login($facebookId:String,$email:String,$password:String,$type:String!,$appleId:String,$name:String,$notificationToken:String){
|
|
||||||
login(facebookId:$facebookId,email:$email,password:$password,type:$type,appleId:$appleId,name:$name,notificationToken:$notificationToken){
|
|
||||||
userId
|
|
||||||
token
|
|
||||||
tokenExpiration
|
|
||||||
name
|
|
||||||
email
|
|
||||||
phone
|
|
||||||
}
|
|
||||||
}
|
|
||||||
`
|
|
||||||
|
|
||||||
export const categories = `
|
|
||||||
{
|
|
||||||
categories{
|
|
||||||
_id
|
|
||||||
title
|
|
||||||
description
|
|
||||||
img_menu
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
export const foods = `
|
|
||||||
query FoodByCategory($category:String!,$onSale:Boolean,$inStock:Boolean,$min:Float,$max:Float,$search:String){
|
|
||||||
foodByCategory(category:$category,onSale:$onSale,inStock:$inStock,min:$min,max:$max,search:$search){
|
|
||||||
_id
|
|
||||||
title
|
|
||||||
description
|
|
||||||
variations{
|
|
||||||
_id
|
|
||||||
title
|
|
||||||
price
|
|
||||||
discounted
|
|
||||||
addons{
|
|
||||||
_id
|
|
||||||
title
|
|
||||||
description
|
|
||||||
quantity_minimum
|
|
||||||
quantity_maximum
|
|
||||||
options{
|
|
||||||
_id
|
|
||||||
title
|
|
||||||
description
|
|
||||||
price
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
category{_id}
|
|
||||||
img_url
|
|
||||||
stock
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
export const createUser = `
|
|
||||||
mutation CreateUser($facebookId:String,$phone:String,$email:String,$password:String,$name:String,$notificationToken:String,$appleId:String){
|
|
||||||
createUser(userInput:{
|
|
||||||
facebookId:$facebookId,
|
|
||||||
phone:$phone,
|
|
||||||
email:$email,
|
|
||||||
password:$password,
|
|
||||||
name:$name,
|
|
||||||
notificationToken:$notificationToken,
|
|
||||||
appleId:$appleId
|
|
||||||
}){
|
|
||||||
userId
|
|
||||||
token
|
|
||||||
tokenExpiration
|
|
||||||
name
|
|
||||||
email
|
|
||||||
phone
|
|
||||||
notificationToken
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
export const updateUser = `
|
|
||||||
mutation UpdateUser($name:String!,$phone:String!){
|
|
||||||
updateUser(updateUserInput:{name:$name,phone:$phone}){
|
|
||||||
_id
|
|
||||||
name
|
|
||||||
phone
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
export const updateNotificationStatus = `
|
|
||||||
mutation UpdateNotificationStatus($offerNotification:Boolean!,$orderNotification:Boolean!){
|
|
||||||
updateNotificationStatus(offerNotification:$offerNotification,orderNotification:$orderNotification){
|
|
||||||
_id
|
|
||||||
notificationToken
|
|
||||||
is_order_notification
|
|
||||||
is_offer_notification
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
export const profile = `
|
|
||||||
query{
|
|
||||||
profile{
|
|
||||||
_id
|
|
||||||
name
|
|
||||||
phone
|
|
||||||
email
|
|
||||||
notificationToken
|
|
||||||
is_order_notification
|
|
||||||
is_offer_notification
|
|
||||||
addresses{
|
|
||||||
_id
|
|
||||||
label
|
|
||||||
delivery_address
|
|
||||||
details
|
|
||||||
longitude
|
|
||||||
latitude
|
|
||||||
selected
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
export const order = `query Order($id:String!){
|
|
||||||
order(id:$id){
|
|
||||||
_id
|
|
||||||
delivery_address{
|
|
||||||
latitude
|
|
||||||
longitude
|
|
||||||
delivery_address
|
|
||||||
details
|
|
||||||
label
|
|
||||||
}
|
|
||||||
delivery_charges
|
|
||||||
order_id
|
|
||||||
user{
|
|
||||||
_id
|
|
||||||
phone
|
|
||||||
}
|
|
||||||
items{
|
|
||||||
_id
|
|
||||||
food{
|
|
||||||
_id
|
|
||||||
title
|
|
||||||
category{
|
|
||||||
_id
|
|
||||||
}
|
|
||||||
description
|
|
||||||
img_url
|
|
||||||
|
|
||||||
}
|
|
||||||
variation{
|
|
||||||
_id
|
|
||||||
title
|
|
||||||
price
|
|
||||||
}
|
|
||||||
addons{
|
|
||||||
_id
|
|
||||||
title
|
|
||||||
description
|
|
||||||
quantity_minimum
|
|
||||||
quantity_maximum
|
|
||||||
options{
|
|
||||||
_id
|
|
||||||
title
|
|
||||||
description
|
|
||||||
price
|
|
||||||
}
|
|
||||||
}
|
|
||||||
quantity
|
|
||||||
}
|
|
||||||
payment_status
|
|
||||||
payment_method
|
|
||||||
order_amount
|
|
||||||
paid_amount
|
|
||||||
order_status
|
|
||||||
status_queue{
|
|
||||||
pending
|
|
||||||
preparing
|
|
||||||
picked
|
|
||||||
delivered
|
|
||||||
cancelled
|
|
||||||
}
|
|
||||||
createdAt
|
|
||||||
review{
|
|
||||||
_id
|
|
||||||
rating
|
|
||||||
description
|
|
||||||
}
|
|
||||||
rider{
|
|
||||||
_id
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
`
|
|
||||||
|
|
||||||
export const myOrders = `query Orders($offset:Int){
|
|
||||||
orders(offset:$offset){
|
|
||||||
_id
|
|
||||||
delivery_address{
|
|
||||||
latitude
|
|
||||||
longitude
|
|
||||||
delivery_address
|
|
||||||
details
|
|
||||||
label
|
|
||||||
}
|
|
||||||
delivery_charges
|
|
||||||
order_id
|
|
||||||
user{
|
|
||||||
_id
|
|
||||||
phone
|
|
||||||
}
|
|
||||||
|
|
||||||
items{
|
|
||||||
_id
|
|
||||||
food{
|
|
||||||
_id
|
|
||||||
title
|
|
||||||
category{
|
|
||||||
_id
|
|
||||||
}
|
|
||||||
description
|
|
||||||
img_url
|
|
||||||
}
|
|
||||||
variation{
|
|
||||||
_id
|
|
||||||
title
|
|
||||||
price
|
|
||||||
}
|
|
||||||
addons{
|
|
||||||
_id
|
|
||||||
title
|
|
||||||
description
|
|
||||||
quantity_minimum
|
|
||||||
quantity_maximum
|
|
||||||
options{
|
|
||||||
_id
|
|
||||||
title
|
|
||||||
description
|
|
||||||
price
|
|
||||||
}
|
|
||||||
}
|
|
||||||
quantity
|
|
||||||
}
|
|
||||||
payment_status
|
|
||||||
payment_method
|
|
||||||
order_amount
|
|
||||||
paid_amount
|
|
||||||
order_status
|
|
||||||
status_queue{
|
|
||||||
pending
|
|
||||||
preparing
|
|
||||||
picked
|
|
||||||
delivered
|
|
||||||
cancelled
|
|
||||||
}
|
|
||||||
createdAt
|
|
||||||
review{
|
|
||||||
_id
|
|
||||||
rating
|
|
||||||
description
|
|
||||||
}
|
|
||||||
rider{
|
|
||||||
_id
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
`
|
|
||||||
|
|
||||||
//
|
|
||||||
// can we get userId from request instead??
|
|
||||||
// needs research
|
|
||||||
//
|
|
||||||
|
|
||||||
export const orderStatusChanged = `subscription OrderStatusChanged($userId:String!){
|
|
||||||
orderStatusChanged(userId:$userId)
|
|
||||||
{
|
|
||||||
userId
|
|
||||||
origin
|
|
||||||
order{
|
|
||||||
_id
|
|
||||||
delivery_address{
|
|
||||||
latitude
|
|
||||||
longitude
|
|
||||||
delivery_address
|
|
||||||
details
|
|
||||||
label
|
|
||||||
}
|
|
||||||
delivery_charges
|
|
||||||
order_id
|
|
||||||
user{
|
|
||||||
_id
|
|
||||||
phone
|
|
||||||
}
|
|
||||||
|
|
||||||
items{
|
|
||||||
_id
|
|
||||||
food{
|
|
||||||
_id
|
|
||||||
title
|
|
||||||
category{
|
|
||||||
_id
|
|
||||||
}
|
|
||||||
description
|
|
||||||
img_url
|
|
||||||
}
|
|
||||||
variation{
|
|
||||||
_id
|
|
||||||
title
|
|
||||||
price
|
|
||||||
}
|
|
||||||
addons{
|
|
||||||
_id
|
|
||||||
title
|
|
||||||
description
|
|
||||||
quantity_minimum
|
|
||||||
quantity_maximum
|
|
||||||
options{
|
|
||||||
_id
|
|
||||||
title
|
|
||||||
description
|
|
||||||
price
|
|
||||||
}
|
|
||||||
}
|
|
||||||
quantity
|
|
||||||
}
|
|
||||||
payment_status
|
|
||||||
payment_method
|
|
||||||
order_amount
|
|
||||||
paid_amount
|
|
||||||
order_status
|
|
||||||
status_queue{
|
|
||||||
pending
|
|
||||||
preparing
|
|
||||||
picked
|
|
||||||
delivered
|
|
||||||
cancelled
|
|
||||||
}
|
|
||||||
createdAt
|
|
||||||
review{
|
|
||||||
_id
|
|
||||||
rating
|
|
||||||
description
|
|
||||||
}
|
|
||||||
rider{
|
|
||||||
_id
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
`
|
|
||||||
|
|
||||||
//
|
|
||||||
// status queue??
|
|
||||||
// can we use address id instead of address object, then get the address on backend??
|
|
||||||
//
|
|
||||||
export const placeOrder = `
|
|
||||||
mutation PlaceOrder($orderInput:[OrderInput!]!,$paymentMethod:String!,$couponCode:String,$address:AddressInput!){
|
|
||||||
placeOrder(orderInput: $orderInput,paymentMethod:$paymentMethod,couponCode:$couponCode,address:$address) {
|
|
||||||
_id
|
|
||||||
order_id
|
|
||||||
delivery_address{
|
|
||||||
latitude
|
|
||||||
longitude
|
|
||||||
delivery_address
|
|
||||||
details
|
|
||||||
label
|
|
||||||
}
|
|
||||||
delivery_charges
|
|
||||||
items{
|
|
||||||
_id
|
|
||||||
food{
|
|
||||||
_id
|
|
||||||
title
|
|
||||||
category{
|
|
||||||
_id
|
|
||||||
}
|
|
||||||
description
|
|
||||||
img_url
|
|
||||||
}
|
|
||||||
variation{
|
|
||||||
_id
|
|
||||||
title
|
|
||||||
price
|
|
||||||
}
|
|
||||||
addons{
|
|
||||||
_id
|
|
||||||
title
|
|
||||||
description
|
|
||||||
quantity_minimum
|
|
||||||
quantity_maximum
|
|
||||||
options{
|
|
||||||
_id
|
|
||||||
title
|
|
||||||
description
|
|
||||||
price
|
|
||||||
}
|
|
||||||
}
|
|
||||||
quantity
|
|
||||||
}
|
|
||||||
user {
|
|
||||||
_id
|
|
||||||
phone
|
|
||||||
email
|
|
||||||
}
|
|
||||||
rider{
|
|
||||||
_id
|
|
||||||
}
|
|
||||||
payment_status
|
|
||||||
payment_method
|
|
||||||
paid_amount
|
|
||||||
order_amount
|
|
||||||
order_status
|
|
||||||
status_queue{
|
|
||||||
pending
|
|
||||||
preparing
|
|
||||||
picked
|
|
||||||
delivered
|
|
||||||
cancelled
|
|
||||||
}
|
|
||||||
createdAt
|
|
||||||
review{
|
|
||||||
_id
|
|
||||||
rating
|
|
||||||
description
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
export const reviewOrder = `mutation ReviewOrder(
|
|
||||||
$orderId:String!,
|
|
||||||
$rating:Int!,
|
|
||||||
$description:String
|
|
||||||
){
|
|
||||||
reviewOrder(reviewInput:{
|
|
||||||
orderId:$orderId,
|
|
||||||
rating:$rating,
|
|
||||||
description:$description
|
|
||||||
}){
|
|
||||||
_id
|
|
||||||
order_id
|
|
||||||
review{
|
|
||||||
_id
|
|
||||||
rating
|
|
||||||
description
|
|
||||||
}
|
|
||||||
createdAt
|
|
||||||
updatedAt
|
|
||||||
is_active
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
//
|
|
||||||
// use this to push token instead of login, signup mutation?
|
|
||||||
// needs research
|
|
||||||
//
|
|
||||||
export const pushToken = `mutation PushToken($token:String!){
|
|
||||||
pushToken(token:$token){
|
|
||||||
_id
|
|
||||||
notificationToken
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
export const getConfiguration = `query Configuration{
|
|
||||||
configuration{
|
|
||||||
_id
|
|
||||||
currency
|
|
||||||
currency_symbol
|
|
||||||
delivery_charges
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
export const foodByIds = `query FoodByIds($ids:[String!]!){
|
|
||||||
foodByIds(ids: $ids) {
|
|
||||||
_id
|
|
||||||
title
|
|
||||||
description
|
|
||||||
img_url
|
|
||||||
stock
|
|
||||||
category {
|
|
||||||
_id
|
|
||||||
}
|
|
||||||
variations {
|
|
||||||
_id
|
|
||||||
title
|
|
||||||
price
|
|
||||||
discounted
|
|
||||||
addons {
|
|
||||||
_id
|
|
||||||
title
|
|
||||||
description
|
|
||||||
quantity_minimum
|
|
||||||
quantity_maximum
|
|
||||||
options {
|
|
||||||
_id
|
|
||||||
title
|
|
||||||
description
|
|
||||||
price
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
export const getCoupon = `mutation Coupon($coupon:String!){
|
|
||||||
coupon(coupon:$coupon){
|
|
||||||
_id
|
|
||||||
code
|
|
||||||
discount
|
|
||||||
enabled
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
export const deleteAddress = `mutation DeleteAddress($id:ID!){
|
|
||||||
deleteAddress(id:$id){
|
|
||||||
_id
|
|
||||||
addresses{
|
|
||||||
_id
|
|
||||||
label
|
|
||||||
delivery_address
|
|
||||||
details
|
|
||||||
longitude
|
|
||||||
latitude
|
|
||||||
selected
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
export const createAddress = `mutation CreateAddress($addressInput:AddressInput!){
|
|
||||||
createAddress(addressInput:$addressInput){
|
|
||||||
_id
|
|
||||||
addresses{
|
|
||||||
_id
|
|
||||||
label
|
|
||||||
delivery_address
|
|
||||||
details
|
|
||||||
longitude
|
|
||||||
latitude
|
|
||||||
selected
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
export const editAddress = `mutation EditAddress($addressInput:AddressInput!){
|
|
||||||
editAddress(addressInput:$addressInput){
|
|
||||||
_id
|
|
||||||
label
|
|
||||||
delivery_address
|
|
||||||
details
|
|
||||||
longitude
|
|
||||||
latitude
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
export const changePassword = `mutation ChangePassword($oldPassword:String!,$newPassword:String!){
|
|
||||||
changePassword(oldPassword:$oldPassword,newPassword:$newPassword)
|
|
||||||
}`
|
|
||||||
|
|
||||||
export const forgotPassword = `mutation ForgotPassword($email:String!){
|
|
||||||
forgotPassword(email:$email){
|
|
||||||
result
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
export const selectAddress = `mutation SelectAddress($id:String!){
|
|
||||||
selectAddress(id:$id){
|
|
||||||
_id
|
|
||||||
addresses{
|
|
||||||
_id
|
|
||||||
label
|
|
||||||
delivery_address
|
|
||||||
details
|
|
||||||
longitude
|
|
||||||
latitude
|
|
||||||
selected
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
export const subscriptionRiderLocation = `subscription SubscriptionRiderLocation($riderId:String!){
|
|
||||||
subscriptionRiderLocation(riderId:$riderId) {
|
|
||||||
_id
|
|
||||||
location {
|
|
||||||
latitude
|
|
||||||
longitude
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
export const rider = `query Rider($id:String){
|
|
||||||
rider(id:$id){
|
|
||||||
_id
|
|
||||||
location {
|
|
||||||
latitude
|
|
||||||
longitude
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}`
|
|
|
@ -1,20 +0,0 @@
|
||||||
import * as React from 'react'
|
|
||||||
import Svg, { Path } from 'react-native-svg'
|
|
||||||
|
|
||||||
function LogoAlphabet(props) {
|
|
||||||
return (
|
|
||||||
<Svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width={71.456}
|
|
||||||
height={69.504}
|
|
||||||
viewBox="0 0 71.456 69.504"
|
|
||||||
{...props}>
|
|
||||||
<Path
|
|
||||||
fill="#0b0b0b"
|
|
||||||
d="M36.914 69.503a83.004 83.004 0 01-3.529-.106C15.33 68.497.674 54.169.027 36.773a35.8 35.8 0 018.081-24.387A35.35 35.35 0 0130.626.199a28.342 28.342 0 013.9-.192h.237Q42.995-.001 51.227 0h15.658a4.54 4.54 0 013.9 2.193 4.525 4.525 0 01.161 4.459l-1.9 3.675-3.007 5.793c-3.808 7.333-7.746 14.914-11.558 22.4a6.11 6.11 0 01-5.984 3.75h-.124c-4.9-.053-10.119-.077-16.925-.077q-4.46 0-8.922.009l-6.04.007a26.533 26.533 0 002.291 4.166 18.962 18.962 0 0015.822 8.18c1.459.03 3 .043 4.862.043q1.175 0 2.363-.005h.012a2.7 2.7 0 012.307 1.291 2.707 2.707 0 01.1 2.652l-4.9 9.505a2.705 2.705 0 01-2.4 1.466zM24.305 27.258c6.041 0 12.52-.009 19.069-.078a2.429 2.429 0 00.263-.382c1.73-3.181 3.417-6.466 5.05-9.641l1.141-2.219-2.237-.013c-2.088-.013-4.143-.026-6.18-.026-3.162 0-5.75.031-8.142.1a18.038 18.038 0 00-11.515 4.771 18.807 18.807 0 00-5.338 7.484z"
|
|
||||||
/>
|
|
||||||
</Svg>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default React.memo(LogoAlphabet)
|
|
|
@ -1,27 +0,0 @@
|
||||||
import * as React from 'react'
|
|
||||||
import Svg, { Text, TSpan } from 'react-native-svg'
|
|
||||||
|
|
||||||
function LogoName(props) {
|
|
||||||
return (
|
|
||||||
<Svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width={125}
|
|
||||||
height={32}
|
|
||||||
viewBox="0 0 125 32"
|
|
||||||
{...props}>
|
|
||||||
<Text
|
|
||||||
fill="#0b0b0b"
|
|
||||||
fontFamily="AmsiPro-BoldItalic"
|
|
||||||
fontSize={32}
|
|
||||||
fontStyle="italic"
|
|
||||||
fontWeight={700}
|
|
||||||
transform="translate(0 27)">
|
|
||||||
<TSpan x={0} y={0}>
|
|
||||||
{'enatega'}
|
|
||||||
</TSpan>
|
|
||||||
</Text>
|
|
||||||
</Svg>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default React.memo(LogoName)
|
|
|
@ -1,18 +0,0 @@
|
||||||
import * as React from 'react'
|
|
||||||
import Svg, { Path } from 'react-native-svg'
|
|
||||||
|
|
||||||
function CartIcon(props) {
|
|
||||||
return (
|
|
||||||
<Svg viewBox="0 0 489 489" width={512} height={512} {...props}>
|
|
||||||
<Path
|
|
||||||
d="M440.1 422.7l-28-315.3c-.6-7-6.5-12.3-13.4-12.3h-57.6C340.3 42.5 297.3 0 244.5 0s-95.8 42.5-96.6 95.1H90.3c-7 0-12.8 5.3-13.4 12.3l-28 315.3c0 .4-.1.8-.1 1.2 0 35.9 32.9 65.1 73.4 65.1h244.6c40.5 0 73.4-29.2 73.4-65.1 0-.4 0-.8-.1-1.2zM244.5 27c37.9 0 68.8 30.4 69.6 68.1H174.9c.8-37.7 31.7-68.1 69.6-68.1zm122.3 435H122.2c-25.4 0-46-16.8-46.4-37.5l26.8-302.3h45.2v41c0 7.5 6 13.5 13.5 13.5s13.5-6 13.5-13.5v-41h139.3v41c0 7.5 6 13.5 13.5 13.5s13.5-6 13.5-13.5v-41h45.2l26.9 302.3c-.4 20.7-21.1 37.5-46.4 37.5z"
|
|
||||||
data-original="#000000"
|
|
||||||
className="prefix__active-path"
|
|
||||||
data-old_color="#000000"
|
|
||||||
fill="#FFF"
|
|
||||||
/>
|
|
||||||
</Svg>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default CartIcon
|
|
|
@ -1,72 +0,0 @@
|
||||||
import * as React from 'react'
|
|
||||||
import Svg, { Defs, G, Path, Circle } from 'react-native-svg'
|
|
||||||
/* SVGR has dropped some elements not supported by react-native-svg: style */
|
|
||||||
|
|
||||||
function EmptyAddress(props) {
|
|
||||||
return (
|
|
||||||
<Svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width={103.104}
|
|
||||||
height={206.775}
|
|
||||||
viewBox="0 0 103.104 206.775"
|
|
||||||
{...props}>
|
|
||||||
<Defs></Defs>
|
|
||||||
<G id="prefix__Group_451" transform="translate(-103.265 -315.494)">
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27770"
|
|
||||||
fill="#3f3d56"
|
|
||||||
d="M188.794 49.138h-1.136V18.014A18.014 18.014 0 00169.645 0H103.7a18.014 18.014 0 00-18.009 18.014v170.748a18.014 18.014 0 0018.009 18.013h65.94a18.014 18.014 0 0018.014-18.014V71.292h1.136z"
|
|
||||||
transform="translate(17.574 315.494)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27771"
|
|
||||||
d="M195.973 29.6v170.5a13.441 13.441 0 01-13.429 13.453h-66.28a13.443 13.443 0 01-13.453-13.434V29.6a13.443 13.443 0 0113.434-13.453h8.055a6.39 6.39 0 005.918 8.8H168a6.39 6.39 0 005.918-8.8h8.607a13.441 13.441 0 0113.453 13.429z"
|
|
||||||
fill="#fff"
|
|
||||||
transform="translate(5.425 304.038)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27772"
|
|
||||||
fill="#e5e5e5"
|
|
||||||
d="M195.973 54.82v-5.807h-8.79v-32.04a13.411 13.411 0 00-4.663-.83h-1.144v32.87h-30.488V24.947h-5.808v24.066h-25.552v-32.87h-3.264a13.325 13.325 0 00-2.544.241v32.629h-10.909v5.807h10.909v13.433l-10.909 6.3v6.708l10.909-6.3v39.966h-10.909v5.807h10.909v57.784h-10.909v5.807h10.909V213.3a13.328 13.328 0 002.544.241h3.264v-29.22h25.552v29.22h5.807v-29.22h30.489v29.22h1.144a13.412 13.412 0 004.663-.83v-28.386h8.79v-5.807h-8.79v-25.262h8.711v-5.807h-8.711v-26.715h8.79v-5.807h-8.79V79.5h8.79v-5.806h-8.79V54.82zm-58.986 0L119.528 64.9V54.82zm-17.46 16.786l25.553-14.753v58.074h-25.552zm0 106.911v-57.783h25.553v57.784zm61.849 0h-30.488v-25.262h30.489zm0-31.07h-30.488v-26.713h30.489zm0-32.522h-30.488V79.5h30.489zm0-41.233h-30.488V54.82h30.489z"
|
|
||||||
transform="translate(5.425 304.038)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27773"
|
|
||||||
d="M277.166 133.105c0 18.442-33.393 59.526-33.393 59.526s-33.393-41.084-33.393-59.526a33.393 33.393 0 1166.785 0z"
|
|
||||||
fill="#febb2c"
|
|
||||||
transform="translate(-70.909 244.735)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27774"
|
|
||||||
d="M296.873 161.458a19.745 19.745 0 11-19.745-19.745 19.736 19.736 0 0119.745 19.727z"
|
|
||||||
fill="#fff"
|
|
||||||
transform="translate(-104.262 214.931)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_321"
|
|
||||||
cx={7.356}
|
|
||||||
cy={7.356}
|
|
||||||
r={7.356}
|
|
||||||
fill="#febb2c"
|
|
||||||
transform="translate(165.44 369.471)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27775"
|
|
||||||
d="M310.059 249.527a19.766 19.766 0 01-21.217 0 11.034 11.034 0 0121.217 0z"
|
|
||||||
fill="#febb2c"
|
|
||||||
transform="translate(-126.588 144.1)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_322"
|
|
||||||
cx={9.001}
|
|
||||||
cy={9.001}
|
|
||||||
r={9.001}
|
|
||||||
fill="#febb2c"
|
|
||||||
transform="translate(163.863 443.464)"
|
|
||||||
/>
|
|
||||||
</G>
|
|
||||||
</Svg>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default React.memo(EmptyAddress)
|
|
|
@ -1,116 +0,0 @@
|
||||||
import * as React from 'react'
|
|
||||||
import Svg, { Defs, G, Path, Circle } from 'react-native-svg'
|
|
||||||
/* SVGR has dropped some elements not supported by react-native-svg: style */
|
|
||||||
|
|
||||||
function EmptyCart(props) {
|
|
||||||
return (
|
|
||||||
<Svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width={188.228}
|
|
||||||
height={140.238}
|
|
||||||
viewBox="0 0 188.228 140.238"
|
|
||||||
{...props}>
|
|
||||||
<Defs></Defs>
|
|
||||||
<G id="prefix__Group_450" transform="translate(-75.631 -357.239)">
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27783"
|
|
||||||
d="M188.519 755.456c4.238 7.86 13.233 11.233 13.233 11.233s2.123-9.369-2.115-17.228-13.237-11.233-13.237-11.233-2.119 9.372 2.119 17.228z"
|
|
||||||
fill="#2f2e41"
|
|
||||||
transform="translate(-98.692 -269.439)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27784"
|
|
||||||
fill="#febb2c"
|
|
||||||
d="M169.11 774.942c7.651 4.6 10.6 13.747 10.6 13.747s-9.458 1.68-17.11-2.923-10.6-13.748-10.6-13.748 9.458-1.68 17.11 2.924z"
|
|
||||||
transform="translate(-76.369 -291.51)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Rectangle_2492"
|
|
||||||
d="M0 0h.682v6.308H0z"
|
|
||||||
fill="#f2f2f2"
|
|
||||||
transform="translate(245.871 428.106)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27785"
|
|
||||||
d="M206.016 631.778h-80.742v-.578h80.161v-28.176h-73.373L128.5 595.6l.524-.251 3.406 7.1h73.589z"
|
|
||||||
fill="#2f2e41"
|
|
||||||
transform="translate(-6.926 -149.359)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_327"
|
|
||||||
cx={6.099}
|
|
||||||
cy={6.099}
|
|
||||||
r={6.099}
|
|
||||||
fill="#3f3d56"
|
|
||||||
transform="translate(122.995 484.451)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_328"
|
|
||||||
cx={6.099}
|
|
||||||
cy={6.099}
|
|
||||||
r={6.099}
|
|
||||||
fill="#3f3d56"
|
|
||||||
transform="translate(183.116 484.451)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_329"
|
|
||||||
cx={3.776}
|
|
||||||
cy={3.776}
|
|
||||||
r={3.776}
|
|
||||||
fill="#3f3d56"
|
|
||||||
transform="translate(256.307 357.239)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27786"
|
|
||||||
d="M326.04 541.718h-90.754l-19.637-64.187h130.614l-.119.378zm-90.325-.581h89.9l19.857-63.025H216.434z"
|
|
||||||
fill="#2f2e41"
|
|
||||||
transform="translate(-118.314 -97.638)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27787"
|
|
||||||
d="M179.221 469.941H99.508L82.26 413.015h114.724l-.1.335z"
|
|
||||||
fill="#f2f2f2"
|
|
||||||
transform="translate(21.421 -29.201)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27788"
|
|
||||||
d="M450.38 356.491l-.562-.149 3.833-14.448h22.3v.581H454.1z"
|
|
||||||
fill="#2f2e41"
|
|
||||||
transform="translate(-220.803 17.668)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Rectangle_2497"
|
|
||||||
d="M0 0h117.742v.581H0z"
|
|
||||||
fill="#2f2e41"
|
|
||||||
transform="translate(103.68 399.353)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Rectangle_2498"
|
|
||||||
d="M0 0h104.452v.581H0z"
|
|
||||||
fill="#2f2e41"
|
|
||||||
transform="translate(110.228 420.753)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Rectangle_2499"
|
|
||||||
d="M0 0h.581v63.606H0z"
|
|
||||||
fill="#2f2e41"
|
|
||||||
transform="translate(162.35 380.184)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Rectangle_2500"
|
|
||||||
d="M0 0h63.741v.581H0z"
|
|
||||||
fill="#2f2e41"
|
|
||||||
transform="rotate(-86.27 329.18 123.26)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Rectangle_2501"
|
|
||||||
d="M0 0h.581v63.741H0z"
|
|
||||||
fill="#2f2e41"
|
|
||||||
transform="rotate(-3.729 5907.583 -1895.335)"
|
|
||||||
/>
|
|
||||||
</G>
|
|
||||||
</Svg>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default React.memo(EmptyCart)
|
|
|
@ -1,535 +0,0 @@
|
||||||
import * as React from 'react'
|
|
||||||
import Svg, {
|
|
||||||
Defs,
|
|
||||||
LinearGradient,
|
|
||||||
Stop,
|
|
||||||
G,
|
|
||||||
Path,
|
|
||||||
Circle,
|
|
||||||
Ellipse
|
|
||||||
} from 'react-native-svg'
|
|
||||||
/* SVGR has dropped some elements not supported by react-native-svg: style */
|
|
||||||
|
|
||||||
function EmptyFood(props) {
|
|
||||||
return (
|
|
||||||
<Svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width={75.38}
|
|
||||||
height={240.015}
|
|
||||||
viewBox="0 0 75.38 240.015"
|
|
||||||
{...props}>
|
|
||||||
<Defs>
|
|
||||||
<LinearGradient
|
|
||||||
id="prefix__linear-gradient"
|
|
||||||
x1={0.5}
|
|
||||||
x2={0.5}
|
|
||||||
y1={1}
|
|
||||||
gradientUnits="objectBoundingBox">
|
|
||||||
<Stop offset={0} stopColor="gray" stopOpacity={0.251} />
|
|
||||||
<Stop offset={0.535} stopColor="gray" stopOpacity={0.122} />
|
|
||||||
<Stop offset={1} stopColor="gray" stopOpacity={0.102} />
|
|
||||||
</LinearGradient>
|
|
||||||
</Defs>
|
|
||||||
<G id="prefix__Group_452" transform="translate(-14823.746 -14042.397)">
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27691"
|
|
||||||
fill="url(#prefix__linear-gradient)"
|
|
||||||
d="M483.2 234.077c-.533-1.031-3.349-7.44-3.349-7.44l-4.719-12.229s-3.349-5.157-3.349-6.114-6.09-4.788-6.09-4.788-4.948-1.473-5.328-1.621-6.242-2.086-6.242-2.086-2.308-3.035-2.637-2.242l-.036-.058a7.836 7.836 0 01-.88-2.838c-.013-.088-.023-.181-.035-.273a11.3 11.3 0 004.958-9.3 11.14 11.14 0 00-.1-1.446 1.012 1.012 0 01.131-.069c.095-.041.071-.075 0-.109.024-.012.048-.026.072-.036.126-.055.042-.1-.08-.145h.007c.172-.075-.045-.124-.22-.2l-.028-.153a1.029 1.029 0 00.07-.3l.046.023a1.289 1.289 0 000-.576 1.013 1.013 0 01-.04.113.962.962 0 00-.443-.872l-.027-.024.323-3.3c4.76-.225 5.6-8.323 4.509-8.773s0-1.425 0-3.374-3.591-4.124-3.591-4.124-1.5.75-3.841-3-10.94-4.349-11.524-3.374-4.426 2.25-9.436 3.674-4.092 7.348-3.257 8.623a7.276 7.276 0 011.169 3.524 20.635 20.635 0 001.587 3.9c-.5 1.091.773 7.07 1.15 8.769-.006.052-.012.1-.017.157l-.01.015a.8.8 0 00-.049.085.977.977 0 00-.077.564 1.177 1.177 0 00.085.616 11.238 11.238 0 003.985 8.384l.017.31c.07 1.388.11 3.029.037 4.6 0 .08-.01.159-.014.239a1.8 1.8 0 00-1.274 1c-.472.908-3.212 2.307-3.212 2.307s-4.8.221-5.252 1.105-7.384 3.831-7.384 3.831-3.654 2.136-3.121 4.567c.278 1.27-.5 3.244-1.313 4.839a22.985 22.985 0 00-5.255-1.31l3.884 3.703-.129.2-2.207 7.809s-.761 2.726-1.522 3.389.685 6.7.685 6.7-.837 4.273-1.522 5.378 1.066 3.831 1.066 3.831l3.5 7.956 9.287 2.357 1.619.345q-.047.285-.1.568c-.448 2.534-1.035 4.865-1.751 5.5-1.751 1.547-1.675 8.472-1.675 8.472l.076 9.8s.609 12.081.3 12.523c-.192.279.193.734 1.211 1.143q-.044.273-.085.554c-.286 2-.414 4.29.244 5.3a4.028 4.028 0 01.457 1.768c0 .958 1.446 2.947 1.446 2.947s-1.142 8.177.761 10.976 3.5 7.882 2.588 9.061c0 0-1.6 3.462-.837 5.009a1.806 1.806 0 01-.99 2.8c-.99.368-.9 3.389-.9 3.389l1.818 14.365s.99 2.947.152 3.978-.837 6.188.457 7.956-1.827 5.009-1.827 5.009-1.9 2.726 1.142 3.61c0 0 .609.147-.533 1.326s-1.37 2.652-.609 3.168a3.482 3.482 0 00.494.245c-.028.175-.059.355-.095.547-.292 1.538-.843 3.542-1.845 4.511a32.16 32.16 0 00-4.984 6.642c-1.044 1.98-1.5 3.834-.344 4.7 2.74 2.063 6.242 2.726 8.3 1.915a23.362 23.362 0 004.948-3.315l.685-2.873s-.457-1.768 1.827-2.431a11.732 11.732 0 004.415-3.02v-3.819a16.184 16.184 0 001.6-1.043s1.066-3.757 0-5.009-1.446-1.694-.076-2.5 1.556-2.578.551-4.125-2.606-3.831-1.236-7.072 1.873-13.186 1.873-13.186-.639-6.777 0-8.324-.731-4.641-.731-4.641a24.8 24.8 0 011.294-5.6c.837-1.768 1.522-11.124 1.522-11.124a24 24 0 001.522-6.556c0-2.578-2.36-8.766 1.142-10.387 0 0 1.522 1.326.913 6.63 0 0 1.751 6.188 1.751 8.1s1.294 8.84 1.294 8.84a9.01 9.01 0 00.685 3.02c.533.81 0 3.02 0 3.02s1.979 1.842 1.446 3.02.091 3.837.091 3.837l-.472 16.5s-1.37 7.072 1.827 11.345c0 0-1.142 6.262-1.827 6.7s2.512 4.273 2.512 4.273-.886 2.482.913 2.6v4.1a8.762 8.762 0 002.512 2.8c1.675 1.179.99 5.23.99 5.23a6.958 6.958 0 007.764 4.052c5.633-1.1 6.394-1.621 6.09-3.462a41.468 41.468 0 00-.7-3.233c-.606-2.366-1.535-5.222-2.646-6.63-1.751-2.219-3.2-6.86-3.2-6.86s-.685-1.547 0-2.063a1.41 1.41 0 00.381-1.473 4.836 4.836 0 00.067-3.094c-.6-1.179 1.151-3.61 1.151-3.61l-.533-11.345.533-16.5s-2.36-2.726-1.37-4.346-1.142-3.9-1.142-3.9-.228-.074.381-1.915a4.59 4.59 0 00-.152-3.315s-1.294-4.567.99-8.03c0 0 .99-4.567 1.294-6.925.21-1.638 1.525-7.759 2.308-11.339l.127-.581c1.127.062 1.98.133 1.98.133s-1.751-12.155 0-14.66-1.37-21.658-1.37-21.658-.746-3.347-1.206-6.763c-.026-.195-.05-.389-.074-.583a36.9 36.9 0 014.249-.094c3.654.221 7.231-1.179 7.307-2.578s2.055-6.925 2.36-8.177.528-5.53-.008-6.562z"
|
|
||||||
transform="translate(14415.603 13887.477)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27692"
|
|
||||||
d="M456.179 738.67v6.821a11.324 11.324 0 01-4.254 3.007c-2.2.66-1.76 2.42-1.76 2.42l-.66 2.861a22.5 22.5 0 01-4.768 3.3c-1.98.807-5.354.147-7.995-1.907-1.115-.865-.675-2.711.332-4.682a31.934 31.934 0 014.8-6.613c.965-.965 1.5-2.96 1.778-4.492.208-1.147.276-2.036.276-2.036z"
|
|
||||||
className="#4c495a"
|
|
||||||
transform="translate(14398.211 13524.996)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27693"
|
|
||||||
d="M456.179 754.325v1.731a11.325 11.325 0 01-4.254 3.007c-2.2.66-1.76 2.42-1.76 2.42l-.66 2.86a22.5 22.5 0 01-4.768 3.3c-1.98.807-5.354.147-7.995-1.907-1.115-.866-.675-2.711.332-4.682-.047 2.071.566 4.4 3.556 4.316a15.146 15.146 0 008.875-3.227s-.073-4.841 3.3-5.941a10.277 10.277 0 003.374-1.877z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14398.211 13514.433)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27694"
|
|
||||||
d="M542.486 748.39c-5.428 1.1-7.481-4.034-7.481-4.034s.66-4.034-.954-5.208a8.655 8.655 0 01-2.42-2.787v-6.748l6.6-4.694 3.573 3.163.241.211s1.394 4.621 3.08 6.83c1.071 1.4 1.966 4.245 2.549 6.6.338 1.355.572 2.549.678 3.218.295 1.836-.438 2.349-5.866 3.449z"
|
|
||||||
className="#4c495a"
|
|
||||||
transform="translate(14338.748 13532.731)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27695"
|
|
||||||
d="M542.486 762.939c-5.428 1.1-7.481-4.034-7.481-4.034s.66-4.034-.954-5.208a8.656 8.656 0 01-2.42-2.787v-2.61a27.553 27.553 0 013.447 4.154c.587 1.247.66 5.794 3.374 6.6s7.995 1.54 8.435-.513a11.445 11.445 0 01.789-2.265c.338 1.355.572 2.549.678 3.218.293 1.831-.44 2.345-5.868 3.445z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14338.748 13518.184)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27696"
|
|
||||||
d="M456.4 737.35l12.249 1.32v3.606c-1.382.819-3.362 1.687-4.474.8-1.643-1.314-6.528-2.984-8.05-3.685.209-1.152.275-2.041.275-2.041z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14385.739 13524.996)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27697"
|
|
||||||
d="M542.046 728.88c-1.687-.587-4.694 1.98-8.655 3.594a4.122 4.122 0 01-1.76.393v-3.254l6.6-4.694 3.573 3.163a4.474 4.474 0 00.242.798z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14338.748 13532.731)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27698"
|
|
||||||
fill="#5f5d7e"
|
|
||||||
d="M493.035 519.636s-.232 1.08-.563 2.646c-.754 3.565-2.021 9.658-2.224 11.289-.293 2.347-1.247 6.895-1.247 6.895-2.2 3.447-.953 7.995-.953 7.995a4.708 4.708 0 01.147 3.3c-.587 1.834-.367 1.907-.367 1.907s2.054 2.274 1.1 3.887 1.32 4.327 1.32 4.327l-.513 16.43.513 11.3s-1.687 2.42-1.109 3.594a4.966 4.966 0 01-.065 3.081 1.438 1.438 0 01-.367 1.467c-.66.513 0 2.054 0 2.054-1.687-.587-4.694 1.98-8.655 3.594s-2.641-2.2-2.641-2.2-3.081-3.814-2.42-4.254 1.76-6.674 1.76-6.674c-3.081-4.254-1.76-11.3-1.76-11.3l.455-16.424s-.6-2.646-.088-3.82-1.394-3.007-1.394-3.007.513-2.2 0-3.007a9.226 9.226 0 01-.66-3.007s-1.247-6.895-1.247-8.8-1.687-8.068-1.687-8.068c.587-5.281-.88-6.6-.88-6.6-3.374 1.614-1.1 7.775-1.1 10.342a24.544 24.544 0 01-1.467 6.528s-.66 9.315-1.467 11.075a25.4 25.4 0 00-1.247 5.574s1.32 3.081.7 4.621 0 8.288 0 8.288-.484 9.9-1.8 13.129.22 5.5 1.191 7.041.789 3.3-.531 4.107-.953 1.247.073 2.494 0 4.988 0 4.988-4.181 3.3-6.014 1.834-7.7-3.374-8.435-3.887-.513-1.98.587-3.154.513-1.32.513-1.32c-2.934-.88-1.1-3.594-1.1-3.594s3.007-3.227 1.76-4.988-1.247-6.894-.44-7.921-.147-3.961-.147-3.961l-1.751-14.3s-.082-3.007.871-3.374a1.816 1.816 0 00.954-2.787c-.733-1.54.807-4.987.807-4.987.88-1.174-.66-6.234-2.494-9.022s-.733-10.928-.733-10.928-1.394-1.98-1.394-2.934a4.11 4.11 0 00-.44-1.76c-.634-1.006-.511-3.283-.235-5.278.267-1.93.675-3.6.675-3.6z"
|
|
||||||
transform="translate(14392.087 13661.223)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27699"
|
|
||||||
d="M499.5 264.207l-14.449 3.374s-7.115-6.014-5.354-9.242a12.818 12.818 0 00.962-5c.07-1.564.032-3.2-.035-4.58-.1-2-.267-3.474-.267-3.474s14.816-8.361 14.3 0a21.36 21.36 0 00.1 4.178 7.988 7.988 0 00.848 2.825c.792 1.411 1.769 1.432 1.769 1.432z"
|
|
||||||
fill="#fdc2cc"
|
|
||||||
transform="translate(14371.242 13833.552)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27700"
|
|
||||||
d="M496.31 249.461a11.364 11.364 0 01-14.132-.7c-.1-2-.267-3.474-.267-3.474s14.816-8.361 14.3 0a21.353 21.353 0 00.099 4.174z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14369.692 13833.552)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_301"
|
|
||||||
cx={11.369}
|
|
||||||
cy={11.369}
|
|
||||||
r={11.369}
|
|
||||||
fill="#fdc2cc"
|
|
||||||
transform="translate(14848.009 14062.112)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27701"
|
|
||||||
d="M499.5 281.872l-14.449 3.374s-7.115-6.014-5.354-9.242a12.818 12.818 0 00.962-5 7.372 7.372 0 002.632 4.415c3.3 2.2 2.787 4.914 2.787 4.914l5.941-.22c-.367-2.42 1.834-3.741 2.567-4.034s.367-1.614.367-1.614l.651-4.512c.792 1.411 1.769 1.432 1.769 1.432z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14371.242 13815.886)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27702"
|
|
||||||
d="M493.406 519.636s-.232 1.08-.563 2.646a23.092 23.092 0 00-4.644.067 80.838 80.838 0 01-8.068.513l-15.989.566v-.493a47.174 47.174 0 00-5.5.367 39.084 39.084 0 01-9.682-.587 10.419 10.419 0 01-2.435-.657c.267-1.93.675-3.6.675-3.6z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14391.716 13661.223)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27703"
|
|
||||||
d="M478.041 318.274a23.345 23.345 0 00.232 5.882c.443 3.4 1.162 6.733 1.162 6.733s3.007 19.07 1.32 21.564 0 14.6 0 14.6-5.061-.44-6.674-.073a80.814 80.814 0 01-8.068.513l-15.989.566v-.493a47.134 47.134 0 00-5.5.367 39.09 39.09 0 01-9.682-.587c-2.714-.44-3.814-1.32-3.521-1.76s-.293-12.469-.293-12.469l-.073-9.755s-.073-6.894 1.614-8.435c.689-.628 1.256-2.949 1.687-5.472.619-3.653.954-7.731.954-7.731l-11.149-29.852-.22-.587s3.227-4.988 2.714-7.408 3.007-4.547 3.007-4.547 6.674-2.934 7.115-3.814 5.061-1.1 5.061-1.1 2.64-1.394 3.1-2.3a1.735 1.735 0 011.229-1 7.387 7.387 0 002.643 4.471c3.3 2.2 2.787 4.914 2.787 4.914l5.941-.22c-.367-2.42 1.834-3.741 2.567-4.034s.367-1.614.367-1.614l.687-4.75c.317-.789 2.541 2.233 2.541 2.233s5.648 1.931 6.014 2.077 5.134 1.614 5.134 1.614 5.868 3.814 5.868 4.767 3.227 6.088 3.227 6.088l-.109.581c-.752 4.042-5.156 27.877-5.693 31.031z"
|
|
||||||
fill="#febb2c"
|
|
||||||
transform="translate(14405.834 13816.011)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27704"
|
|
||||||
d="M475.639 359.737s-12.689-3.374-13.936-4.181-8.581 3.887.367 10.268c0 0 10.942 2.274 13.869 0s-.3-6.087-.3-6.087z"
|
|
||||||
fill="#fdc2cc"
|
|
||||||
transform="translate(14384.765 13762.666)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27705"
|
|
||||||
d="M530.065 313.559l1.54.073 4.547 12.175s2.714 6.381 3.227 7.408.293 5.281 0 6.528-2.2 6.748-2.274 8.141-3.521 2.787-7.041 2.567-11.735.88-11.735.88-8.773-.917-14.156 1.834c0 0-3.447-7.115-3.081-20.39 0 0 6.088-.367 7.628.22s9.022 2.274 9.975 1.393 5.282 1.612 5.282 1.612a3.718 3.718 0 000-3.081c-.733-1.76-1.98-7.261-.367-9.022s6.455-10.338 6.455-10.338z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14357.771 13788.747)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27706"
|
|
||||||
d="M526.82 352.87c-3.641.246-7.713.792-7.713.792s-8.772-.918-14.156 1.834c0 0-3.447-7.115-3.081-20.39 0 0 6.088-.367 7.628.22s9.021 2.274 9.975 1.394 5.281 1.614 5.281 1.614a3.717 3.717 0 000-3.08c-.734-1.76-1.98-7.261-.367-9.022s6.455-10.342 6.455-10.342l1.432.067c-.745 4.043-5.149 27.877-5.686 31.031a23.342 23.342 0 00.232 5.882z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14357.287 13787.296)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27707"
|
|
||||||
d="M530.842 314.336l1.54.073 4.547 12.175s2.714 6.381 3.227 7.408.293 5.281 0 6.528-2.2 6.748-2.274 8.141-3.521 2.787-7.041 2.567-11.735.88-11.735.88-8.773-.917-14.156 1.834c0 0-3.447-7.115-3.081-20.39 0 0 6.088-.367 7.628.22s9.022 2.274 9.975 1.394 5.281 1.614 5.281 1.614a3.717 3.717 0 000-3.08c-.733-1.76-1.98-7.261-.367-9.022s6.456-10.342 6.456-10.342z"
|
|
||||||
fill="#febb2c"
|
|
||||||
transform="translate(14357.287 13788.264)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Rectangle_2473"
|
|
||||||
d="M0 0h2.153v19.373H0z"
|
|
||||||
fill="#dfe6f5"
|
|
||||||
transform="rotate(-148.235 9447.513 4949.24)"
|
|
||||||
/>
|
|
||||||
<Ellipse
|
|
||||||
id="prefix__Ellipse_302"
|
|
||||||
cx={6.199}
|
|
||||||
cy={4.348}
|
|
||||||
fill="#dfe6f5"
|
|
||||||
rx={6.199}
|
|
||||||
ry={4.348}
|
|
||||||
transform="rotate(-58.235 20108.237 -6300.42)"
|
|
||||||
/>
|
|
||||||
<Ellipse
|
|
||||||
id="prefix__Ellipse_303"
|
|
||||||
cx={4.45}
|
|
||||||
cy={3.121}
|
|
||||||
opacity={0.1}
|
|
||||||
rx={4.45}
|
|
||||||
ry={3.121}
|
|
||||||
transform="rotate(-58.235 20108.463 -6302.603)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Rectangle_2474"
|
|
||||||
d="M0 0h2.153v12.054H0z"
|
|
||||||
fill="#53526b"
|
|
||||||
transform="rotate(-148.235 9446.105 4954.192)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27708"
|
|
||||||
d="M489.872 390.68l4.474-1.247s22.077.587 14.669-8.508c0 0-3.887-3.741-12.029-.733s-10.415 3.374-10.415 3.374z"
|
|
||||||
fill="#fdc2cc"
|
|
||||||
transform="translate(14366.792 13748.006)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_304"
|
|
||||||
cx={0.88}
|
|
||||||
cy={0.88}
|
|
||||||
r={0.88}
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14852.482 14098.564)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_305"
|
|
||||||
cx={0.88}
|
|
||||||
cy={0.88}
|
|
||||||
r={0.88}
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14867.592 14098.051)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_306"
|
|
||||||
cx={0.88}
|
|
||||||
cy={0.88}
|
|
||||||
r={0.88}
|
|
||||||
fill="#FFF"
|
|
||||||
transform="translate(14852.482 14098.271)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_307"
|
|
||||||
cx={0.88}
|
|
||||||
cy={0.88}
|
|
||||||
r={0.88}
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14853.729 14110.74)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_308"
|
|
||||||
cx={0.88}
|
|
||||||
cy={0.88}
|
|
||||||
r={0.88}
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14868.033 14109.859)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_309"
|
|
||||||
cx={0.88}
|
|
||||||
cy={0.88}
|
|
||||||
r={0.88}
|
|
||||||
fill="#FFF"
|
|
||||||
transform="translate(14853.729 14110.446)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_310"
|
|
||||||
cx={0.88}
|
|
||||||
cy={0.88}
|
|
||||||
r={0.88}
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14867.666 14152.333)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_311"
|
|
||||||
cx={0.88}
|
|
||||||
cy={0.88}
|
|
||||||
r={0.88}
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14856.082 14152.333)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_312"
|
|
||||||
cx={0.88}
|
|
||||||
cy={0.88}
|
|
||||||
r={0.88}
|
|
||||||
fill="#FFF"
|
|
||||||
transform="translate(14867.666 14152.039)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_313"
|
|
||||||
cx={0.88}
|
|
||||||
cy={0.88}
|
|
||||||
r={0.88}
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14856.962 14167.07)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_314"
|
|
||||||
cx={0.88}
|
|
||||||
cy={0.88}
|
|
||||||
r={0.88}
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14868.033 14166.19)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_315"
|
|
||||||
cx={0.88}
|
|
||||||
cy={0.88}
|
|
||||||
r={0.88}
|
|
||||||
fill="#FFF"
|
|
||||||
transform="translate(14856.962 14166.776)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_316"
|
|
||||||
cx={0.88}
|
|
||||||
cy={0.88}
|
|
||||||
r={0.88}
|
|
||||||
fill="#FFF"
|
|
||||||
transform="translate(14856.082 14152.039)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_317"
|
|
||||||
cx={0.88}
|
|
||||||
cy={0.88}
|
|
||||||
r={0.88}
|
|
||||||
fill="#FFF"
|
|
||||||
transform="translate(14868.033 14165.896)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_318"
|
|
||||||
cx={0.88}
|
|
||||||
cy={0.88}
|
|
||||||
r={0.88}
|
|
||||||
fill="#FFF"
|
|
||||||
transform="translate(14867.592 14097.758)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_319"
|
|
||||||
cx={0.88}
|
|
||||||
cy={0.88}
|
|
||||||
r={0.88}
|
|
||||||
fill="#FFF"
|
|
||||||
transform="translate(14868.033 14109.566)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27709"
|
|
||||||
d="M531.243 416.884s.147 20.1.587 23.691c0 0 .159-22.743-.587-23.691z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14338.99 13724.441)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27710"
|
|
||||||
d="M541.131 441.551c-.3 0 6.014 23.544 6.308 25.231s-4.548-25.231-6.308-25.231z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14332.843 13709.09)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27711"
|
|
||||||
d="M554.355 431.451c0 .22 3.521 12.762 5.281 13.422s-5.281-13.422-5.281-13.422z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14324.606 13715.376)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27712"
|
|
||||||
d="M578.364 366.775s-7.481.333-7.7 1.414 7.7-1.414 7.7-1.414z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14314.46 13755.626)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27713"
|
|
||||||
d="M548.472 620.04s-5.354 2.274-4.547 2.42 4.547-2.42 4.547-2.42z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14331.149 13598.005)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27714"
|
|
||||||
d="M526.762 611.005c-.209-.469 3.594 1.907 3.594 2.2s-3.301-1.54-3.594-2.2z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14341.784 13603.666)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27715"
|
|
||||||
d="M539.983 631.484s4.181-.211 4.474 1.4-4.474-1.4-4.474-1.4z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14333.551 13590.888)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27716"
|
|
||||||
d="M460.352 630.824s4.547-.889 4.914 0-4.914 0-4.914 0z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14383.11 13591.54)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27717"
|
|
||||||
d="M462.928 704.721s.3 3.741-.8 4.621.8-4.621.8-4.621z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14382.221 13545.303)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27718"
|
|
||||||
d="M463.348 724.888c1.436.147 8.99-1.174 8.917 0s-8.917 0-8.917 0z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14381.244 13533.058)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27719"
|
|
||||||
d="M551.758 713.591s-2.577-.4-1.948 1.342z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14327.497 13539.807)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27720"
|
|
||||||
d="M418.5 323.57h-1.39l-2.127 7.775s-.733 2.714-1.467 3.374.66 6.674.66 6.674-.807 4.254-1.467 5.354 1.027 3.814 1.027 3.814l3.374 7.921 8.948 2.347s15.769 3.447 16.5 3.961 1.394-.22 1.907-4.987 1.907-14.009 3.007-14.449c0 0-8.8.953-9.535.807a37.29 37.29 0 00-4.254.073s-4.621-.293-5.354.147.953-2.13.953-2.13a7.073 7.073 0 000-3.591c-.51-1.98-.803-24.424-10.782-17.09z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14412.856 13783.429)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27721"
|
|
||||||
d="M454.566 347.685c-1.1.44-2.494 9.682-3.007 14.449s-1.174 5.5-1.907 4.988c-.6-.417-11.107-2.77-15.036-3.638.619-3.653.953-7.731.953-7.731L424.421 325.9h1.174c9.975-7.335 10.268 15.109 10.782 17.09a7.075 7.075 0 010 3.591s-1.687 2.57-.953 2.13 5.354-.147 5.354-.147a37.275 37.275 0 014.254-.073c.733.147 9.534-.806 9.534-.806z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14405.472 13781.979)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27722"
|
|
||||||
d="M417.727 324.347h-1.394l-2.127 7.775s-.733 2.714-1.467 3.374.66 6.674.66 6.674-.807 4.254-1.467 5.354 1.027 3.814 1.027 3.814l3.374 7.921 8.948 2.347s15.769 3.447 16.5 3.961 1.394-.22 1.907-4.987 1.907-14.009 3.007-14.449c0 0-8.8.954-9.535.807a37.277 37.277 0 00-4.254.073s-4.621-.293-5.354.147.953-2.13.953-2.13a7.073 7.073 0 000-3.591c-.505-1.98-.805-24.424-10.778-17.09z"
|
|
||||||
fill="#febb2c"
|
|
||||||
transform="translate(14413.34 13782.945)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27723"
|
|
||||||
d="M432.185 397.074s-4.034 7.628-4.767 6.748 4.767-6.748 4.767-6.748z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14403.649 13736.771)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27724"
|
|
||||||
d="M425.042 385.572s-3.741 3.1-1.98 3.9 1.98-3.9 1.98-3.9z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14406.61 13743.93)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27725"
|
|
||||||
d="M438.4 375.515c.293.073 5.428 1.093 5.5 1.537s-5.5-1.537-5.5-1.537z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14396.769 13750.188)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27726"
|
|
||||||
d="M495.034 214.749a.756.756 0 00-.5.786c-.3.264-.719-.047-.962-.384s-.525-.748-.9-.7a3.216 3.216 0 00-.513.214c-.587.188-1.083-.5-1.411-1.106l-1.716-3.174c-1.147.666-2.5-.032-3.641-.722s-2.494-1.391-3.644-.725c-1.687.974-1.749 4.222-3.5 5.023-.563.258-1.218.2-1.74.557a3.316 3.316 0 00-1.027 1.678 1.778 1.778 0 01-.575.948 1.263 1.263 0 01-.593.144 2.543 2.543 0 01-1.526-.214 1.289 1.289 0 01-.528-1.526.793.793 0 01.047-.085 5.347 5.347 0 00.5-.725c.176-.466-.076-1.009-.021-1.514.091-.863 1-1.317 1.159-2.165.065-.332 0-.687.059-1.021a.923.923 0 01.035-.129l-.537.37a12.864 12.864 0 001.344-2.526 7.779 7.779 0 014.747-3.864 11.331 11.331 0 015.865.067 19.313 19.313 0 015.219 2.15 5.179 5.179 0 011.52 1.235 9.514 9.514 0 01.9 1.663c.569 1.179 2.124 2.271.886 2.435-1.03.138-.091.86.449 1.347a1.4 1.4 0 01.311.34 1.218 1.218 0 01-.065 1.176c-.199.265.646.318.358.447z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14375.744 13857.224)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27727"
|
|
||||||
fill="#865a61"
|
|
||||||
d="M495.034 213.972a.756.756 0 00-.5.786c-.3.264-.719-.047-.962-.384s-.525-.748-.9-.7a3.216 3.216 0 00-.513.214c-.587.188-1.083-.5-1.411-1.106l-1.716-3.174c-1.147.666-2.5-.032-3.641-.722s-2.494-1.391-3.644-.725c-1.687.974-1.749 4.222-3.5 5.023-.563.258-1.218.2-1.74.557a3.316 3.316 0 00-1.027 1.678 1.778 1.778 0 01-.575.948 1.263 1.263 0 01-.593.144 2.542 2.542 0 01-1.526-.214 1.289 1.289 0 01-.528-1.526.8.8 0 01.047-.085 5.343 5.343 0 00.5-.725c.176-.466-.076-1.009-.02-1.514.091-.863 1-1.317 1.159-2.165.065-.332 0-.687.059-1.021a.922.922 0 01.035-.129l-.537.37a12.864 12.864 0 001.344-2.526 7.779 7.779 0 014.747-3.864 11.331 11.331 0 015.865.067 19.313 19.313 0 015.219 2.15 5.179 5.179 0 011.52 1.235 9.51 9.51 0 01.9 1.663c.569 1.179 2.124 2.271.886 2.435-1.03.138-.091.86.449 1.347a1.4 1.4 0 01.311.34 1.218 1.218 0 01-.065 1.177c-.2.264.645.317.357.446z"
|
|
||||||
transform="translate(14375.744 13857.707)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27728"
|
|
||||||
d="M494.64 212.01l-.117 1.235s-12.31-15.6-21.886 2.016l-.126-.575a5.339 5.339 0 00.5-.725c.176-.466-.076-1.009-.021-1.514.091-.863 1-1.317 1.159-2.165.065-.332 0-.687.059-1.021a.926.926 0 01.035-.129l-.537.37a12.864 12.864 0 001.344-2.526 7.779 7.779 0 014.747-3.864 11.331 11.331 0 015.865.067 19.313 19.313 0 015.219 2.15 5.179 5.179 0 011.52 1.235 9.517 9.517 0 01.9 1.663c.569 1.179 2.124 2.271.886 2.435-1.025.138-.087.861.453 1.348z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14375.543 13857.707)"
|
|
||||||
/>
|
|
||||||
<G
|
|
||||||
id="prefix__Group_447"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14848.001 14065.161)">
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27729"
|
|
||||||
d="M494.858 221.557a.6.6 0 00-.14.508c-.3.264-.719-.047-.962-.384s-.525-.748-.9-.7a3.22 3.22 0 00-.513.214c-.587.188-1.083-.5-1.411-1.106l-1.716-3.174c-1.147.666-2.5-.032-3.641-.722s-2.494-1.391-3.644-.725c-1.687.974-1.749 4.222-3.5 5.023-.563.258-1.218.2-1.74.557a3.316 3.316 0 00-1.027 1.678 1.777 1.777 0 01-.575.948 1.263 1.263 0 01-.593.144 2.542 2.542 0 01-1.526-.214 1.372 1.372 0 01-.572-.807 1.319 1.319 0 00.572 1.393 2.543 2.543 0 001.526.214 1.263 1.263 0 00.593-.144 1.778 1.778 0 00.575-.948 3.315 3.315 0 011.027-1.678c.522-.355 1.176-.3 1.74-.557 1.749-.8 1.81-4.049 3.5-5.023 1.15-.666 2.505.035 3.644.725s2.494 1.388 3.641.722q.858 1.584 1.716 3.174c.329.6.824 1.294 1.411 1.106a3.22 3.22 0 01.513-.214c.373-.047.651.367.9.7s.663.648.962.384a.756.756 0 01.5-.786c.231-.102-.255-.157-.36-.308z"
|
|
||||||
transform="translate(-472.373 -215.199)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27730"
|
|
||||||
d="M529.071 223.028a1.061 1.061 0 01.277-.07c.546-.072.548-.325.332-.686a.859.859 0 01-.332.1c-.589.079-.533.349-.277.656z"
|
|
||||||
transform="translate(-507.545 -219.601)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27731"
|
|
||||||
d="M532.046 229.837a1.325 1.325 0 000-.574.847.847 0 01-.149.323c-.097.114.018.192.149.251z"
|
|
||||||
transform="translate(-509.396 -223.952)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27732"
|
|
||||||
d="M473.989 228.544c-.006.034-.013.067-.017.1a3.367 3.367 0 00.057.789 2.775 2.775 0 00-.04-.89z"
|
|
||||||
transform="translate(-473.366 -223.504)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27733"
|
|
||||||
d="M476.366 219.066a4.254 4.254 0 01-.492.735l.474-.326a3.269 3.269 0 01.018-.409z"
|
|
||||||
transform="translate(-474.552 -217.605)"
|
|
||||||
/>
|
|
||||||
</G>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27734"
|
|
||||||
d="M465.432 186.921s-1.77-7.914-1.207-9.183a20.935 20.935 0 01-1.529-3.882 7.413 7.413 0 00-1.127-3.509c-.8-1.269-1.69-7.167 3.138-8.586s8.529-2.688 9.093-3.658 8.851-.373 11.1 3.36 3.7 2.986 3.7 2.986 3.46 2.165 3.46 4.106-1.046 2.912 0 3.36.241 8.511-4.345 8.735l-.4 4.255s-12.308-15.605-21.883 2.016z"
|
|
||||||
fill="#febb2c"
|
|
||||||
transform="translate(14382.747 13885.753)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27735"
|
|
||||||
d="M473.76 172.554s-1.064 6.234.88 8.325z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14374.945 13876.503)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27736"
|
|
||||||
d="M483.891 168.767s-2.714 6.674-2.054 7.958z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14369.803 13878.858)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27737"
|
|
||||||
d="M491.7 163.134s-1.834 8.692-.953 9.388z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14364.345 13882.365)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27738"
|
|
||||||
d="M499.417 169.349s-2.274 5.574-1.357 6.344z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14359.776 13878.497)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27739"
|
|
||||||
d="M509.746 171.1s-2.677 4.547-2.127 5.354z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14353.738 13877.409)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27740"
|
|
||||||
d="M524.063 182.848s-2.86.77-2.274 1.687z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14344.923 13870.097)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27741"
|
|
||||||
d="M531.585 195.375s-2.567 1.247-2.09 1.907z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14340.114 13862.3)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27742"
|
|
||||||
d="M469.646 207.061s16.4-6.66 23.5 2.912c-.003-.001-8.621-7.328-23.5-2.912z"
|
|
||||||
opacity={0.1}
|
|
||||||
transform="translate(14377.325 13856.431)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27743"
|
|
||||||
d="M298.991 248.243l2.285-2.311 6.46 6.385-2.285 2.312-5.941-5.872z"
|
|
||||||
fill="#53526b"
|
|
||||||
transform="translate(14542.056 13869.972)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27744"
|
|
||||||
d="M414.267 316.454s10 .851 19.307 11.326l-3.879 3.924z"
|
|
||||||
fill="#dfe6f5"
|
|
||||||
transform="translate(14411.791 13786.944)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27745"
|
|
||||||
d="M471.286 358.743s-9.611-3.5-10.556-4.341-6.5 4.037.278 10.663c0 0 8.288 2.361 10.505 0s-.227-6.322-.227-6.322z"
|
|
||||||
fill="#fdc2cc"
|
|
||||||
transform="translate(14384.765 13763.385)"
|
|
||||||
/>
|
|
||||||
</G>
|
|
||||||
</Svg>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default React.memo(EmptyFood)
|
|
|
@ -1,88 +0,0 @@
|
||||||
import * as React from 'react'
|
|
||||||
import Svg, { Defs, G, Path, Circle } from 'react-native-svg'
|
|
||||||
/* SVGR has dropped some elements not supported by react-native-svg: style */
|
|
||||||
|
|
||||||
function EmptyOrder(props) {
|
|
||||||
return (
|
|
||||||
<Svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width={165.999}
|
|
||||||
height={162.035}
|
|
||||||
viewBox="0 0 165.999 162.035"
|
|
||||||
{...props}>
|
|
||||||
<Defs></Defs>
|
|
||||||
<G id="prefix__undraw_No_data_re_kwbl" transform="translate(-.001 -.004)">
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27777"
|
|
||||||
fill="#f2f2f2"
|
|
||||||
d="M410.677 191.327h-44.73a3.849 3.849 0 00-3.845 3.845v99.412l-.513.156-10.973 3.36a2.052 2.052 0 01-2.561-1.361l-32.638-106.614a2.051 2.051 0 011.361-2.561l16.909-5.178 49.02-15 16.909-5.178a2.048 2.048 0 012.561 1.358l8.343 27.252z"
|
|
||||||
transform="translate(-305.292 -154.883)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27778"
|
|
||||||
d="M391.327 169.845L381.271 137a4.356 4.356 0 00-5.442-2.891l-23.773 7.277-49.018 15.007-23.773 7.279a4.361 4.361 0 00-2.891 5.442l34.367 112.248a4.364 4.364 0 004.168 3.084 4.305 4.305 0 001.274-.192l16.3-4.988.513-.159v-.536l-.513.156-16.448 5.037a3.849 3.849 0 01-4.8-2.55l-34.369-112.251a3.839 3.839 0 012.55-4.8l23.773-7.279 49.018-15 23.773-7.279a3.841 3.841 0 014.8 2.55l10.009 32.7.159.513h.533z"
|
|
||||||
fill="#3f3d56"
|
|
||||||
transform="translate(-276.182 -133.913)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27779"
|
|
||||||
d="M382.585 177a2.311 2.311 0 01-2.207-1.632l-3.3-10.784a2.306 2.306 0 011.531-2.881L423.7 147.9a2.309 2.309 0 012.881 1.53l3.3 10.784a2.309 2.309 0 01-1.53 2.881l-45.1 13.806a2.3 2.3 0 01-.666.099z"
|
|
||||||
fill="#febb2c"
|
|
||||||
transform="translate(-351.139 -144.235)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_323"
|
|
||||||
cx={5.126}
|
|
||||||
cy={5.126}
|
|
||||||
r={5.126}
|
|
||||||
fill="#febb2c"
|
|
||||||
transform="translate(43.614 1.273)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_324"
|
|
||||||
cx={3.246}
|
|
||||||
cy={3.246}
|
|
||||||
r={3.246}
|
|
||||||
fill="#FFF"
|
|
||||||
transform="translate(45.494 3.153)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27780"
|
|
||||||
fill="#e6e6e6"
|
|
||||||
d="M621.132 402.252H534.5a2.181 2.181 0 01-2.179-2.179V296.266a2.181 2.181 0 012.179-2.179h86.635a2.181 2.181 0 012.179 2.179v103.808a2.181 2.181 0 01-2.182 2.178z"
|
|
||||||
transform="translate(-466.665 -253.029)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27781"
|
|
||||||
d="M554.13 274.087h-53.954a4.364 4.364 0 00-4.357 4.357V382.97l.513-.156v-104.37a3.849 3.849 0 013.845-3.845h54.113zm47.034 0H500.176a4.364 4.364 0 00-4.357 4.357v117.393a4.364 4.364 0 004.357 4.357h100.988a4.363 4.363 0 004.357-4.357V278.444a4.363 4.363 0 00-4.357-4.357zm3.845 121.75a3.849 3.849 0 01-3.845 3.845H500.176a3.849 3.849 0 01-3.845-3.845V278.444a3.849 3.849 0 013.845-3.845h100.988a3.849 3.849 0 013.845 3.845z"
|
|
||||||
fill="#3f3d56"
|
|
||||||
transform="translate(-439.521 -238.155)"
|
|
||||||
/>
|
|
||||||
<Path
|
|
||||||
id="prefix__Path_27782"
|
|
||||||
d="M658.287 271.979h-47.162a2.309 2.309 0 01-2.307-2.307v-11.278a2.31 2.31 0 012.307-2.307h47.162a2.31 2.31 0 012.307 2.307v11.278a2.309 2.309 0 01-2.307 2.307z"
|
|
||||||
fill="#febb2c"
|
|
||||||
transform="translate(-523.557 -224.769)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_325"
|
|
||||||
cx={5.126}
|
|
||||||
cy={5.126}
|
|
||||||
r={5.126}
|
|
||||||
fill="#febb2c"
|
|
||||||
transform="translate(106.023 21.834)"
|
|
||||||
/>
|
|
||||||
<Circle
|
|
||||||
id="prefix__Ellipse_326"
|
|
||||||
cx={3.122}
|
|
||||||
cy={3.122}
|
|
||||||
r={3.122}
|
|
||||||
fill="#FFF"
|
|
||||||
transform="translate(108.026 23.838)"
|
|
||||||
/>
|
|
||||||
</G>
|
|
||||||
</Svg>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default React.memo(EmptyOrder)
|
|
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 61 KiB |
Before Width: | Height: | Size: 277 B |
Before Width: | Height: | Size: 522 B |
Before Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 696 B |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 124 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 1.3 KiB |
|
@ -1,88 +0,0 @@
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
import PropTypes from 'prop-types'
|
|
||||||
import React, { useContext } from 'react'
|
|
||||||
import { TouchableOpacity, View } from 'react-native'
|
|
||||||
import ConfigurationContext from '../../context/Configuration'
|
|
||||||
import { alignment } from '../../utils/alignment'
|
|
||||||
import { ICONS_NAME } from '../../utils/constant'
|
|
||||||
import { scale } from '../../utils/scaling'
|
|
||||||
import { CustomIcon } from '../CustomIcon'
|
|
||||||
import EnategaImage from '../EnategaImage/EnategaImage'
|
|
||||||
import TextDefault from '../Text/TextDefault/TextDefault'
|
|
||||||
import useStyle from './styles'
|
|
||||||
|
|
||||||
const cartItem = props => {
|
|
||||||
const styles = useStyle()
|
|
||||||
const { colors } = useTheme()
|
|
||||||
const configuration = useContext(ConfigurationContext)
|
|
||||||
|
|
||||||
return (
|
|
||||||
<View style={styles.itemContainer}>
|
|
||||||
<View style={{ width: '25%' }}>
|
|
||||||
<EnategaImage
|
|
||||||
imgStyle={styles.imgResponsive}
|
|
||||||
imgSource={{ uri: props.image }}
|
|
||||||
spinnerProps={{ style: styles.loadingView }}
|
|
||||||
/>
|
|
||||||
</View>
|
|
||||||
<View style={styles.textContainer}>
|
|
||||||
<TextDefault numberOfLines={2} style={alignment.MBxSmall} medium H5>
|
|
||||||
{props.dealName}
|
|
||||||
</TextDefault>
|
|
||||||
<View
|
|
||||||
style={{
|
|
||||||
flexDirection: 'row',
|
|
||||||
alignItems: 'center',
|
|
||||||
justifyContent: 'space-between'
|
|
||||||
}}>
|
|
||||||
<View style={{ flexGrow: 1 }}>
|
|
||||||
<TextDefault
|
|
||||||
textColor={colors.tagColor}
|
|
||||||
H4
|
|
||||||
bolder
|
|
||||||
style={alignment.MRxSmall}>
|
|
||||||
{configuration.currency_symbol}
|
|
||||||
{parseFloat(props.dealPrice).toFixed(2)}
|
|
||||||
</TextDefault>
|
|
||||||
</View>
|
|
||||||
<View style={styles.actionContainer}>
|
|
||||||
<TouchableOpacity
|
|
||||||
activeOpacity={0.7}
|
|
||||||
style={styles.actionContainerBtns}
|
|
||||||
onPress={props.removeQuantity}>
|
|
||||||
<CustomIcon
|
|
||||||
name={ICONS_NAME.Minus}
|
|
||||||
size={scale(14)}
|
|
||||||
color={colors.placeHolderColor}
|
|
||||||
/>
|
|
||||||
</TouchableOpacity>
|
|
||||||
<View style={styles.actionContainerView}>
|
|
||||||
<TextDefault style={[alignment.PLsmall, alignment.PRsmall]}>
|
|
||||||
{props.quantity}
|
|
||||||
</TextDefault>
|
|
||||||
</View>
|
|
||||||
<TouchableOpacity
|
|
||||||
activeOpacity={0.7}
|
|
||||||
style={[styles.actionContainerBtns, styles.tagbtn]}
|
|
||||||
onPress={props.addQuantity}>
|
|
||||||
<CustomIcon
|
|
||||||
name={ICONS_NAME.Plus}
|
|
||||||
size={scale(14)}
|
|
||||||
color={colors.white}
|
|
||||||
/>
|
|
||||||
</TouchableOpacity>
|
|
||||||
</View>
|
|
||||||
</View>
|
|
||||||
</View>
|
|
||||||
</View>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
cartItem.propTypes = {
|
|
||||||
removeQuantity: PropTypes.func,
|
|
||||||
quantity: PropTypes.number,
|
|
||||||
addQuantity: PropTypes.func,
|
|
||||||
dealName: PropTypes.string,
|
|
||||||
dealPrice: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
|
||||||
image: PropTypes.string
|
|
||||||
}
|
|
||||||
export default cartItem
|
|
|
@ -1,78 +0,0 @@
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
import { Dimensions, StyleSheet } from 'react-native'
|
|
||||||
import { alignment } from '../../utils/alignment'
|
|
||||||
import { moderateScale, scale, verticalScale } from '../../utils/scaling'
|
|
||||||
const { width } = Dimensions.get('window')
|
|
||||||
|
|
||||||
const useStyle = () => {
|
|
||||||
const { colors } = useTheme()
|
|
||||||
|
|
||||||
return StyleSheet.create({
|
|
||||||
itemContainer: {
|
|
||||||
flexDirection: 'row',
|
|
||||||
alignItems: 'center',
|
|
||||||
justifyContent: 'space-between',
|
|
||||||
width: '100%',
|
|
||||||
...alignment.MBmedium,
|
|
||||||
backgroundColor: colors.cardContainer,
|
|
||||||
elevation: 5,
|
|
||||||
padding: 10,
|
|
||||||
shadowColor: colors.placeHolderColor,
|
|
||||||
shadowOffset: {
|
|
||||||
width: verticalScale(2),
|
|
||||||
height: verticalScale(1)
|
|
||||||
},
|
|
||||||
borderRadius: 20,
|
|
||||||
height: width * 0.28,
|
|
||||||
shadowOpacity: 0.3,
|
|
||||||
shadowRadius: verticalScale(10),
|
|
||||||
...alignment.PLsmall,
|
|
||||||
...alignment.PRsmall
|
|
||||||
},
|
|
||||||
imgResponsive: {
|
|
||||||
width: moderateScale(75),
|
|
||||||
height: moderateScale(75),
|
|
||||||
borderRadius: moderateScale(20)
|
|
||||||
},
|
|
||||||
loadingView: {
|
|
||||||
backgroundColor: colors.background,
|
|
||||||
width: '100%',
|
|
||||||
height: '100%'
|
|
||||||
},
|
|
||||||
textContainer: {
|
|
||||||
flex: 1,
|
|
||||||
height: '100%',
|
|
||||||
justifyContent: 'space-evenly',
|
|
||||||
...alignment.MLsmall
|
|
||||||
},
|
|
||||||
actionContainer: {
|
|
||||||
flexDirection: 'row',
|
|
||||||
justifyContent: 'flex-end',
|
|
||||||
alignItems: 'center'
|
|
||||||
},
|
|
||||||
actionContainerBtns: {
|
|
||||||
width: scale(24),
|
|
||||||
aspectRatio: 1,
|
|
||||||
backgroundColor: colors.lightBackground,
|
|
||||||
alignItems: 'center',
|
|
||||||
justifyContent: 'center',
|
|
||||||
borderRadius: scale(8),
|
|
||||||
elevation: 3,
|
|
||||||
shadowColor: colors.shadowColor,
|
|
||||||
shadowOffset: {
|
|
||||||
width: 0,
|
|
||||||
height: verticalScale(1)
|
|
||||||
},
|
|
||||||
shadowOpacity: 0.5,
|
|
||||||
shadowRadius: verticalScale(1)
|
|
||||||
},
|
|
||||||
tagbtn: {
|
|
||||||
backgroundColor: colors.iconColorPrimary
|
|
||||||
},
|
|
||||||
actionContainerView: {
|
|
||||||
justifyContent: 'center',
|
|
||||||
alignItems: 'center'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
export default useStyle
|
|
|
@ -1,8 +0,0 @@
|
||||||
import { createIconSetFromIcoMoon } from '@expo/vector-icons'
|
|
||||||
import icoMoonConfig from './selection.json'
|
|
||||||
|
|
||||||
export const CustomIcon = createIconSetFromIcoMoon(
|
|
||||||
icoMoonConfig,
|
|
||||||
'icomoon',
|
|
||||||
'icomoon.ttf'
|
|
||||||
)
|
|
|
@ -1,81 +0,0 @@
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
import PropTypes from 'prop-types'
|
|
||||||
import React, { useState } from 'react'
|
|
||||||
import { TouchableOpacity, View } from 'react-native'
|
|
||||||
import { ICONS_NAME } from '../../../utils/constant'
|
|
||||||
import { scale } from '../../../utils/scaling'
|
|
||||||
import { CustomIcon } from '../../CustomIcon'
|
|
||||||
import { FlashMessage } from '../../FlashMessage/FlashMessage'
|
|
||||||
import TextDefault from '../../Text/TextDefault/TextDefault'
|
|
||||||
import useStyle from './styles'
|
|
||||||
|
|
||||||
function CartComponent(props) {
|
|
||||||
const { colors } = useTheme()
|
|
||||||
const styles = useStyle()
|
|
||||||
const [quantity, setQuantity] = useState(1)
|
|
||||||
|
|
||||||
function onAdd() {
|
|
||||||
if (props.stock > quantity) setQuantity(quantity + 1)
|
|
||||||
else {
|
|
||||||
FlashMessage({
|
|
||||||
message: 'No more items in stock'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function onRemove() {
|
|
||||||
if (quantity === 1) return
|
|
||||||
setQuantity(quantity - 1)
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<View style={styles.mainContainer}>
|
|
||||||
<View style={styles.subContainer}>
|
|
||||||
<TouchableOpacity
|
|
||||||
activeOpacity={0.7}
|
|
||||||
onPress={onRemove}
|
|
||||||
style={styles.icon}>
|
|
||||||
<CustomIcon
|
|
||||||
name={ICONS_NAME.Minus}
|
|
||||||
size={scale(18)}
|
|
||||||
color={colors.placeHolderColor}
|
|
||||||
/>
|
|
||||||
</TouchableOpacity>
|
|
||||||
<TextDefault H5 bold center>
|
|
||||||
{quantity}
|
|
||||||
</TextDefault>
|
|
||||||
<TouchableOpacity
|
|
||||||
activeOpacity={0.7}
|
|
||||||
onPress={onAdd}
|
|
||||||
style={styles.icon}>
|
|
||||||
<CustomIcon
|
|
||||||
name={ICONS_NAME.Plus}
|
|
||||||
size={scale(18)}
|
|
||||||
color={colors.placeHolderColor}
|
|
||||||
/>
|
|
||||||
</TouchableOpacity>
|
|
||||||
<TouchableOpacity
|
|
||||||
activeOpacity={0.7}
|
|
||||||
onPress={props.onPress.bind(this, quantity)}
|
|
||||||
style={
|
|
||||||
!props.disabled
|
|
||||||
? styles.btnContainer
|
|
||||||
: {
|
|
||||||
...styles.btnContainer,
|
|
||||||
backgroundColor: colors.buttonBackgroundBlue
|
|
||||||
}
|
|
||||||
}>
|
|
||||||
<TextDefault textColor={colors.buttonText} H5 bold center>
|
|
||||||
Add To Cart
|
|
||||||
</TextDefault>
|
|
||||||
</TouchableOpacity>
|
|
||||||
</View>
|
|
||||||
</View>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
CartComponent.propTypes = {
|
|
||||||
stock: PropTypes.number.isRequired,
|
|
||||||
onPress: PropTypes.func,
|
|
||||||
disabled: PropTypes.bool
|
|
||||||
}
|
|
||||||
|
|
||||||
export default CartComponent
|
|
|
@ -1,55 +0,0 @@
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
import { Dimensions, StyleSheet } from 'react-native'
|
|
||||||
import { alignment } from '../../../utils/alignment'
|
|
||||||
import { moderateScale, scale, verticalScale } from '../../../utils/scaling'
|
|
||||||
const { height } = Dimensions.get('window')
|
|
||||||
|
|
||||||
const useStyle = () => {
|
|
||||||
const { colors } = useTheme()
|
|
||||||
|
|
||||||
return StyleSheet.create({
|
|
||||||
flex: {
|
|
||||||
flex: 1
|
|
||||||
},
|
|
||||||
mainContainer: {
|
|
||||||
width: '100%',
|
|
||||||
height: height * 0.08,
|
|
||||||
backgroundColor: 'transparent',
|
|
||||||
justifyContent: 'center',
|
|
||||||
alignItems: 'center',
|
|
||||||
...alignment.MBlarge
|
|
||||||
},
|
|
||||||
subContainer: {
|
|
||||||
width: '90%',
|
|
||||||
height: '70%',
|
|
||||||
alignItems: 'center',
|
|
||||||
justifyContent: 'space-around',
|
|
||||||
flexDirection: 'row'
|
|
||||||
},
|
|
||||||
icon: {
|
|
||||||
width: '10%',
|
|
||||||
height: '90%',
|
|
||||||
justifyContent: 'center',
|
|
||||||
alignItems: 'center',
|
|
||||||
backgroundColor: colors.white,
|
|
||||||
borderRadius: scale(12),
|
|
||||||
elevation: 3,
|
|
||||||
shadowColor: colors.shadowColor,
|
|
||||||
shadowOffset: {
|
|
||||||
width: 0,
|
|
||||||
height: verticalScale(1)
|
|
||||||
},
|
|
||||||
shadowOpacity: 0.5,
|
|
||||||
shadowRadius: verticalScale(1)
|
|
||||||
},
|
|
||||||
btnContainer: {
|
|
||||||
width: '50%',
|
|
||||||
height: '100%',
|
|
||||||
borderRadius: moderateScale(12),
|
|
||||||
backgroundColor: colors.horizontalLine,
|
|
||||||
justifyContent: 'center',
|
|
||||||
alignItems: 'center'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
export default useStyle
|
|
|
@ -1,67 +0,0 @@
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
import PropTypes from 'prop-types'
|
|
||||||
import React, { useContext, useState } from 'react'
|
|
||||||
import { TouchableOpacity, View } from 'react-native'
|
|
||||||
import ConfigurationContext from '../../../context/Configuration'
|
|
||||||
import { alignment } from '../../../utils/alignment'
|
|
||||||
import CheckboxBtn from '../../FdCheckbox/CheckboxBtn'
|
|
||||||
import TextDefault from '../../Text/TextDefault/TextDefault'
|
|
||||||
import useStyle from './styles'
|
|
||||||
|
|
||||||
function CheckComponent(props) {
|
|
||||||
const styles = useStyle()
|
|
||||||
const { colors } = useTheme()
|
|
||||||
const [options, setOptions] = useState(
|
|
||||||
props.options.map(option => ({ ...option, checked: false }))
|
|
||||||
)
|
|
||||||
const configuration = useContext(ConfigurationContext)
|
|
||||||
|
|
||||||
function onPress(option) {
|
|
||||||
const tempOptions = options
|
|
||||||
const index = tempOptions.findIndex(opt => opt._id === option._id)
|
|
||||||
tempOptions[index].checked = !tempOptions[index].checked
|
|
||||||
setOptions(tempOptions)
|
|
||||||
props.onPress(option)
|
|
||||||
}
|
|
||||||
return (
|
|
||||||
<View>
|
|
||||||
{options.map(option => (
|
|
||||||
<TouchableOpacity
|
|
||||||
activeOpacity={0.7}
|
|
||||||
onPress={onPress.bind(this, option)}
|
|
||||||
key={option._id}
|
|
||||||
style={styles.mainContainer}>
|
|
||||||
<View style={styles.leftContainer}>
|
|
||||||
<CheckboxBtn
|
|
||||||
onPress={onPress.bind(this, option)}
|
|
||||||
checked={option.checked}
|
|
||||||
/>
|
|
||||||
<TextDefault
|
|
||||||
numberOfLines={1}
|
|
||||||
textColor={
|
|
||||||
option.checked ? colors.fontMainColor : colors.fontSecondColor
|
|
||||||
}
|
|
||||||
style={[alignment.MLsmall, alignment.PRsmall, alignment.MRlarge]}
|
|
||||||
H5>
|
|
||||||
{option.title}
|
|
||||||
</TextDefault>
|
|
||||||
</View>
|
|
||||||
<View style={styles.rightContainer}>
|
|
||||||
<TextDefault
|
|
||||||
textColor={
|
|
||||||
option.checked ? colors.fontMainColor : colors.fontSecondColor
|
|
||||||
}
|
|
||||||
H5
|
|
||||||
medium>{`${configuration.currency_symbol} ${option.price}`}</TextDefault>
|
|
||||||
</View>
|
|
||||||
</TouchableOpacity>
|
|
||||||
))}
|
|
||||||
</View>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
CheckComponent.propTypes = {
|
|
||||||
options: PropTypes.arrayOf(PropTypes.object),
|
|
||||||
onPress: PropTypes.func
|
|
||||||
}
|
|
||||||
|
|
||||||
export default CheckComponent
|
|
|
@ -1,29 +0,0 @@
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
import { StyleSheet } from 'react-native'
|
|
||||||
import { alignment } from '../../../utils/alignment'
|
|
||||||
|
|
||||||
const useStyle = () => {
|
|
||||||
const { colors } = useTheme()
|
|
||||||
return StyleSheet.create({
|
|
||||||
flex: {
|
|
||||||
flex: 1
|
|
||||||
},
|
|
||||||
mainContainer: {
|
|
||||||
width: '100%',
|
|
||||||
flexDirection: 'row',
|
|
||||||
borderBottomWidth: StyleSheet.hairlineWidth,
|
|
||||||
borderBottomColor: colors.horizontalLine,
|
|
||||||
...alignment.PBsmall,
|
|
||||||
...alignment.MBsmall
|
|
||||||
},
|
|
||||||
leftContainer: {
|
|
||||||
flex: 1,
|
|
||||||
flexDirection: 'row',
|
|
||||||
alignItems: 'center'
|
|
||||||
},
|
|
||||||
rightContainer: {
|
|
||||||
justifyContent: 'center'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
export default useStyle
|
|
|
@ -1,46 +0,0 @@
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
import PropTypes from 'prop-types'
|
|
||||||
import React, { useContext } from 'react'
|
|
||||||
import { View } from 'react-native'
|
|
||||||
import ConfigurationContext from '../../../context/Configuration'
|
|
||||||
import TextDefault from '../../Text/TextDefault/TextDefault'
|
|
||||||
import styles from './styles'
|
|
||||||
|
|
||||||
function HeadingComponent(props) {
|
|
||||||
const configuration = useContext(ConfigurationContext)
|
|
||||||
const { colors } = useTheme()
|
|
||||||
|
|
||||||
return (
|
|
||||||
<>
|
|
||||||
<View style={styles.topContainer}>
|
|
||||||
<View style={styles.titleContainer}>
|
|
||||||
<TextDefault numberOfLines={1} H4 bold>
|
|
||||||
{props.title}
|
|
||||||
</TextDefault>
|
|
||||||
</View>
|
|
||||||
<View style={styles.priceContainer}>
|
|
||||||
<TextDefault
|
|
||||||
textColor={colors.tagColor}
|
|
||||||
H4
|
|
||||||
bolder>{`${configuration.currency_symbol} ${props.price}`}</TextDefault>
|
|
||||||
</View>
|
|
||||||
</View>
|
|
||||||
<View style={styles.descContainer}>
|
|
||||||
<TextDefault
|
|
||||||
numberOfLines={3}
|
|
||||||
textColor={colors.fontSecondColor}
|
|
||||||
H5
|
|
||||||
medium>
|
|
||||||
{props.desc}
|
|
||||||
</TextDefault>
|
|
||||||
</View>
|
|
||||||
</>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
HeadingComponent.propTypes = {
|
|
||||||
title: PropTypes.string,
|
|
||||||
price: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
|
||||||
desc: PropTypes.string
|
|
||||||
}
|
|
||||||
export default HeadingComponent
|
|
|
@ -1,25 +0,0 @@
|
||||||
import { StyleSheet } from 'react-native'
|
|
||||||
import { alignment } from '../../../utils/alignment'
|
|
||||||
const styles = StyleSheet.create({
|
|
||||||
topContainer: {
|
|
||||||
width: '100%',
|
|
||||||
flexDirection: 'row',
|
|
||||||
...alignment.PTsmall,
|
|
||||||
...alignment.PBxSmall
|
|
||||||
},
|
|
||||||
titleContainer: {
|
|
||||||
width: '70%',
|
|
||||||
...alignment.PRxSmall,
|
|
||||||
justifyContent: 'center'
|
|
||||||
},
|
|
||||||
priceContainer: {
|
|
||||||
width: '30%',
|
|
||||||
justifyContent: 'center',
|
|
||||||
alignItems: 'flex-end'
|
|
||||||
},
|
|
||||||
descContainer: {
|
|
||||||
width: '100%',
|
|
||||||
...alignment.MBsmall
|
|
||||||
}
|
|
||||||
})
|
|
||||||
export default styles
|
|
|
@ -1,18 +0,0 @@
|
||||||
import PropTypes from 'prop-types'
|
|
||||||
import React from 'react'
|
|
||||||
import { Image } from 'react-native'
|
|
||||||
import { styles } from './styles'
|
|
||||||
|
|
||||||
function ImageHeader(props) {
|
|
||||||
return (
|
|
||||||
<Image
|
|
||||||
style={styles.backgroundImage}
|
|
||||||
resizeMode="cover"
|
|
||||||
source={{ uri: props.image }}
|
|
||||||
defaultSource={require('../../../assets/images/food_placeholder.png')}></Image>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
ImageHeader.propTypes = {
|
|
||||||
image: PropTypes.string
|
|
||||||
}
|
|
||||||
export default ImageHeader
|
|
|
@ -1,14 +0,0 @@
|
||||||
import { Dimensions, StyleSheet } from 'react-native'
|
|
||||||
import { moderateScale } from '../../../utils/scaling'
|
|
||||||
const { height } = Dimensions.get('window')
|
|
||||||
|
|
||||||
export const styles = StyleSheet.create({
|
|
||||||
backgroundImage: {
|
|
||||||
width: '100%',
|
|
||||||
borderTopLeftRadius: moderateScale(30),
|
|
||||||
borderTopRightRadius: moderateScale(30),
|
|
||||||
// borderTopEndRadius:moderateScale(20),
|
|
||||||
// borderTopStartRadius:moderateScale(20),
|
|
||||||
height: height * 0.22
|
|
||||||
}
|
|
||||||
})
|
|
|
@ -1,70 +0,0 @@
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
import PropTypes from 'prop-types'
|
|
||||||
import React, { useContext, useState } from 'react'
|
|
||||||
import { TouchableOpacity, View } from 'react-native'
|
|
||||||
import ConfigurationContext from '../../../context/Configuration'
|
|
||||||
import { alignment } from '../../../utils/alignment'
|
|
||||||
import RadioButton from '../../FdRadioBtn/RadioBtn'
|
|
||||||
import TextDefault from '../../Text/TextDefault/TextDefault'
|
|
||||||
import useStyle from './styles'
|
|
||||||
|
|
||||||
function RadioComponent(props) {
|
|
||||||
const styles = useStyle()
|
|
||||||
const { colors } = useTheme()
|
|
||||||
const [options] = useState(props.options)
|
|
||||||
const [selected, setSelected] = useState(props.selected || null)
|
|
||||||
const configuration = useContext(ConfigurationContext)
|
|
||||||
|
|
||||||
function onPress(option) {
|
|
||||||
setSelected(option)
|
|
||||||
props.onPress(option)
|
|
||||||
}
|
|
||||||
return (
|
|
||||||
<>
|
|
||||||
{options.map(option => {
|
|
||||||
const isChecked = selected._id === option._id
|
|
||||||
return (
|
|
||||||
<TouchableOpacity
|
|
||||||
activeOpacity={0.7}
|
|
||||||
onPress={onPress.bind(this, option)}
|
|
||||||
key={option._id}
|
|
||||||
style={styles.mainContainer}>
|
|
||||||
<View style={styles.leftContainer}>
|
|
||||||
<RadioButton
|
|
||||||
size={13}
|
|
||||||
outerColor={colors.radioOuterColor}
|
|
||||||
innerColor={colors.radioColor}
|
|
||||||
animation={'bounceIn'}
|
|
||||||
isSelected={isChecked}
|
|
||||||
onPress={onPress.bind(this, option)}
|
|
||||||
/>
|
|
||||||
<TextDefault
|
|
||||||
textColor={
|
|
||||||
isChecked ? colors.fontMainColor : colors.fontSecondColor
|
|
||||||
}
|
|
||||||
style={alignment.MLsmall}
|
|
||||||
H5>
|
|
||||||
{option.title}
|
|
||||||
</TextDefault>
|
|
||||||
</View>
|
|
||||||
<View style={styles.rightContainer}>
|
|
||||||
<TextDefault
|
|
||||||
textColor={
|
|
||||||
isChecked ? colors.fontMainColor : colors.fontSecondColor
|
|
||||||
}
|
|
||||||
H5
|
|
||||||
medium>{`${configuration.currency_symbol} ${option.price}`}</TextDefault>
|
|
||||||
</View>
|
|
||||||
</TouchableOpacity>
|
|
||||||
)
|
|
||||||
})}
|
|
||||||
</>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
RadioComponent.propTypes = {
|
|
||||||
selected: PropTypes.any,
|
|
||||||
options: PropTypes.arrayOf(PropTypes.object),
|
|
||||||
onPress: PropTypes.func
|
|
||||||
}
|
|
||||||
export default RadioComponent
|
|
|
@ -1,27 +0,0 @@
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
import { StyleSheet } from 'react-native'
|
|
||||||
import { alignment } from '../../../utils/alignment'
|
|
||||||
|
|
||||||
const useStyle = () => {
|
|
||||||
const { colors } = useTheme()
|
|
||||||
return StyleSheet.create({
|
|
||||||
mainContainer: {
|
|
||||||
width: '100%',
|
|
||||||
flexDirection: 'row',
|
|
||||||
alignItems: 'center',
|
|
||||||
borderBottomWidth: StyleSheet.hairlineWidth,
|
|
||||||
borderBottomColor: colors.horizontalLine,
|
|
||||||
...alignment.PBsmall,
|
|
||||||
...alignment.MBsmall
|
|
||||||
},
|
|
||||||
leftContainer: {
|
|
||||||
flex: 1,
|
|
||||||
flexDirection: 'row',
|
|
||||||
alignItems: 'center'
|
|
||||||
},
|
|
||||||
rightContainer: {
|
|
||||||
justifyContent: 'center'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
export default useStyle
|
|
|
@ -1,46 +0,0 @@
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
import PropTypes from 'prop-types'
|
|
||||||
import React from 'react'
|
|
||||||
import { View } from 'react-native'
|
|
||||||
import { alignment } from '../../../utils/alignment'
|
|
||||||
import TextDefault from '../../Text/TextDefault/TextDefault'
|
|
||||||
import styles from './styles'
|
|
||||||
|
|
||||||
function TitleComponent(props) {
|
|
||||||
const { colors } = useTheme()
|
|
||||||
|
|
||||||
return (
|
|
||||||
<View style={styles.mainContainer}>
|
|
||||||
<View style={styles.leftContainer}>
|
|
||||||
<TextDefault numberOfLines={1} H5 bold>
|
|
||||||
{props.title}
|
|
||||||
</TextDefault>
|
|
||||||
<TextDefault
|
|
||||||
numberOfLines={1}
|
|
||||||
textColor={colors.fontSecondColor}
|
|
||||||
H5
|
|
||||||
bold>
|
|
||||||
{props.subTitle}
|
|
||||||
</TextDefault>
|
|
||||||
</View>
|
|
||||||
<TextDefault
|
|
||||||
style={[alignment.PLxSmall, alignment.PRxSmall]}
|
|
||||||
textColor={
|
|
||||||
props.error === true ? colors.errorColor : colors.placeHolderColor
|
|
||||||
}
|
|
||||||
H5
|
|
||||||
medium
|
|
||||||
center>
|
|
||||||
({props.status})
|
|
||||||
</TextDefault>
|
|
||||||
</View>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
TitleComponent.propTypes = {
|
|
||||||
title: PropTypes.string.isRequired,
|
|
||||||
subTitle: PropTypes.string,
|
|
||||||
error: PropTypes.bool,
|
|
||||||
status: PropTypes.string
|
|
||||||
}
|
|
||||||
|
|
||||||
export default TitleComponent
|
|
|
@ -1,19 +0,0 @@
|
||||||
import { StyleSheet } from 'react-native'
|
|
||||||
import { alignment } from '../../../utils/alignment'
|
|
||||||
|
|
||||||
const styles = StyleSheet.create({
|
|
||||||
mainContainer: {
|
|
||||||
width: '100%',
|
|
||||||
flexDirection: 'row',
|
|
||||||
justifyContent: 'flex-start',
|
|
||||||
...alignment.MBmedium,
|
|
||||||
...alignment.MTsmall
|
|
||||||
},
|
|
||||||
leftContainer: {
|
|
||||||
// width: '70%'
|
|
||||||
},
|
|
||||||
rightContainer: {
|
|
||||||
width: '30%'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
export default styles
|
|
|
@ -1,15 +0,0 @@
|
||||||
import CartComponent from './CartComponent/CartComponent'
|
|
||||||
import CheckComponent from './CheckComponent/CheckComponent'
|
|
||||||
import HeadingComponent from './HeadingComponent/HeadingComponent'
|
|
||||||
import ImageHeader from './ImageHeader/ImageHeader'
|
|
||||||
import RadioComponent from './RadioComponent/RadioComponent'
|
|
||||||
import TitleComponent from './TitleComponent/TitleComponent'
|
|
||||||
|
|
||||||
export {
|
|
||||||
CartComponent,
|
|
||||||
CheckComponent,
|
|
||||||
HeadingComponent,
|
|
||||||
ImageHeader,
|
|
||||||
RadioComponent,
|
|
||||||
TitleComponent
|
|
||||||
}
|
|
|
@ -1,58 +0,0 @@
|
||||||
import { useNavigation } from '@react-navigation/native'
|
|
||||||
import React, { useContext } from 'react'
|
|
||||||
import { TouchableOpacity, View } from 'react-native'
|
|
||||||
import UserContext from '../../../context/User'
|
|
||||||
import { alignment } from '../../../utils/alignment'
|
|
||||||
import { NAVIGATION_SCREEN } from '../../../utils/constant'
|
|
||||||
import { TextDefault } from '../../Text'
|
|
||||||
import useStyle from './styles'
|
|
||||||
|
|
||||||
function DrawerProfile() {
|
|
||||||
const styles = useStyle()
|
|
||||||
const navigation = useNavigation()
|
|
||||||
const { isLoggedIn, loadingProfile, profile } = useContext(UserContext)
|
|
||||||
|
|
||||||
if (loadingProfile) return <TextDefault>Loading...</TextDefault>
|
|
||||||
return (
|
|
||||||
<View style={styles.mainContainer}>
|
|
||||||
{!isLoggedIn && (
|
|
||||||
<View style={styles.logInContainer}>
|
|
||||||
<TouchableOpacity
|
|
||||||
onPress={() => {
|
|
||||||
navigation.navigate(NAVIGATION_SCREEN.CreateAccount)
|
|
||||||
}}>
|
|
||||||
<TextDefault textColor={styles.whiteFont.color} bold H4>
|
|
||||||
Login/Create Account
|
|
||||||
</TextDefault>
|
|
||||||
</TouchableOpacity>
|
|
||||||
</View>
|
|
||||||
)}
|
|
||||||
<View style={styles.loggedInContainer}>
|
|
||||||
{isLoggedIn && profile && (
|
|
||||||
<>
|
|
||||||
<View style={styles.imgContainer}>
|
|
||||||
<TextDefault bolder H1>
|
|
||||||
{profile.name.substr(0, 1).toUpperCase()}
|
|
||||||
</TextDefault>
|
|
||||||
</View>
|
|
||||||
<TextDefault
|
|
||||||
textColor={styles.whiteFont.color}
|
|
||||||
medium
|
|
||||||
H5
|
|
||||||
style={alignment.PLxSmall}>
|
|
||||||
Welcome
|
|
||||||
</TextDefault>
|
|
||||||
<TextDefault
|
|
||||||
textColor={styles.whiteFont.color}
|
|
||||||
bold
|
|
||||||
H4
|
|
||||||
style={alignment.PLxSmall}>
|
|
||||||
{profile.name}
|
|
||||||
</TextDefault>
|
|
||||||
</>
|
|
||||||
)}
|
|
||||||
</View>
|
|
||||||
</View>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
export default DrawerProfile
|
|
|
@ -1,55 +0,0 @@
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
import { StyleSheet } from 'react-native'
|
|
||||||
import { alignment } from '../../../utils/alignment'
|
|
||||||
import { scale } from '../../../utils/scaling'
|
|
||||||
|
|
||||||
const useStyle = () => {
|
|
||||||
const { colors } = useTheme()
|
|
||||||
|
|
||||||
return StyleSheet.create({
|
|
||||||
mainContainer: {
|
|
||||||
flex: 1,
|
|
||||||
backgroundColor: colors.headerBackground
|
|
||||||
},
|
|
||||||
logInContainer: {
|
|
||||||
width: '100%',
|
|
||||||
height: '100%',
|
|
||||||
justifyContent: 'flex-end',
|
|
||||||
...alignment.PBlarge,
|
|
||||||
...alignment.PLmedium
|
|
||||||
},
|
|
||||||
whiteFont: {
|
|
||||||
color: colors.fontWhite
|
|
||||||
},
|
|
||||||
loggedInContainer: {
|
|
||||||
flex: 1,
|
|
||||||
justifyContent: 'center',
|
|
||||||
...alignment.Plarge
|
|
||||||
},
|
|
||||||
imgContainer: {
|
|
||||||
width: scale(70),
|
|
||||||
height: scale(70),
|
|
||||||
borderRadius: scale(15),
|
|
||||||
borderStyle: 'dashed',
|
|
||||||
borderColor: colors.cardContainer,
|
|
||||||
borderWidth: 2,
|
|
||||||
justifyContent: 'center',
|
|
||||||
alignItems: 'center',
|
|
||||||
overflow: 'hidden',
|
|
||||||
backgroundColor: 'transparent',
|
|
||||||
padding: 2,
|
|
||||||
...alignment.MBsmall
|
|
||||||
},
|
|
||||||
imgResponsive: {
|
|
||||||
width: '100%',
|
|
||||||
height: '100%',
|
|
||||||
borderRadius: scale(15)
|
|
||||||
},
|
|
||||||
loadingView: {
|
|
||||||
backgroundColor: 'transparent',
|
|
||||||
width: '100%',
|
|
||||||
height: '100%'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
export default useStyle
|
|
|
@ -1,3 +0,0 @@
|
||||||
import DrawerProfile from './Profile/DrawerProfile'
|
|
||||||
|
|
||||||
export { DrawerProfile }
|
|
|
@ -1,59 +0,0 @@
|
||||||
/* eslint-disable react/prop-types */
|
|
||||||
import React, { useState } from 'react'
|
|
||||||
import { Image, Platform, View } from 'react-native'
|
|
||||||
import { isObject } from 'validate.js'
|
|
||||||
import Spinner from '../Spinner/Spinner'
|
|
||||||
import useStyle from './styles'
|
|
||||||
|
|
||||||
const iosPlacholder = require('../../assets/images/food_placeholder.png')
|
|
||||||
const PLACEHOLDER = require('../../assets/images/imagePlaceholder.png')
|
|
||||||
|
|
||||||
function EnategaImage({
|
|
||||||
imgSource,
|
|
||||||
imgStyle = null,
|
|
||||||
resizeMode = 'cover',
|
|
||||||
spinnerProps
|
|
||||||
}) {
|
|
||||||
const styles = useStyle()
|
|
||||||
const [startImgLoading, setStartImgLoading] = useState(false)
|
|
||||||
|
|
||||||
const imageUrl = isObject(imgSource)
|
|
||||||
? { ...imgSource, cache: 'force-cache' }
|
|
||||||
: imgSource || PLACEHOLDER
|
|
||||||
const style = imgStyle || styles.imgContainer
|
|
||||||
|
|
||||||
const androidImage = (
|
|
||||||
<Image
|
|
||||||
source={imageUrl}
|
|
||||||
style={[styles.imgResponsive, style]}
|
|
||||||
onLoadStart={() => setStartImgLoading(true)}
|
|
||||||
onLoadEnd={() => setStartImgLoading(false)}
|
|
||||||
resizeMode={imgSource ? resizeMode : 'contain'}
|
|
||||||
/>
|
|
||||||
)
|
|
||||||
|
|
||||||
const iosImage = (
|
|
||||||
<Image
|
|
||||||
source={imageUrl}
|
|
||||||
defaultSource={iosPlacholder}
|
|
||||||
style={[styles.imgResponsive, style]}
|
|
||||||
resizeMode={imgSource ? resizeMode : 'contain'}
|
|
||||||
/>
|
|
||||||
)
|
|
||||||
|
|
||||||
return (
|
|
||||||
<View style={style}>
|
|
||||||
{startImgLoading && (
|
|
||||||
<Spinner
|
|
||||||
animating={startImgLoading}
|
|
||||||
size="small"
|
|
||||||
style={style}
|
|
||||||
{...spinnerProps}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
{Platform.OS === 'ios' ? iosImage : androidImage}
|
|
||||||
</View>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default React.memo(EnategaImage)
|
|
|
@ -1,20 +0,0 @@
|
||||||
import { StyleSheet } from 'react-native'
|
|
||||||
|
|
||||||
const useStyle = () => {
|
|
||||||
return StyleSheet.create({
|
|
||||||
imgContainer: {
|
|
||||||
width: 50,
|
|
||||||
height: 50,
|
|
||||||
borderRadius: 8,
|
|
||||||
overflow: 'hidden'
|
|
||||||
},
|
|
||||||
imgResponsive: {
|
|
||||||
flex: 1,
|
|
||||||
backgroundColor: 'white',
|
|
||||||
height: undefined,
|
|
||||||
width: undefined
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export default useStyle
|
|
|
@ -1,31 +0,0 @@
|
||||||
import { AntDesign } from '@expo/vector-icons'
|
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
import PropTypes from 'prop-types'
|
|
||||||
import React from 'react'
|
|
||||||
import { TouchableOpacity } from 'react-native'
|
|
||||||
import { scale } from '../../utils/scaling'
|
|
||||||
import useStyle from './styles'
|
|
||||||
|
|
||||||
function CheckboxBtn(props) {
|
|
||||||
const styles = useStyle()
|
|
||||||
const { colors } = useTheme()
|
|
||||||
return (
|
|
||||||
<TouchableOpacity
|
|
||||||
onPress={props.onPress}
|
|
||||||
style={[
|
|
||||||
styles.mainContainer,
|
|
||||||
props.checked
|
|
||||||
? { backgroundColor: colors.selected }
|
|
||||||
: { backgroundColor: colors.white }
|
|
||||||
]}>
|
|
||||||
{props.checked ? (
|
|
||||||
<AntDesign name="check" size={scale(15)} color={colors.fontWhite} />
|
|
||||||
) : null}
|
|
||||||
</TouchableOpacity>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
CheckboxBtn.propTypes = {
|
|
||||||
onPress: PropTypes.func,
|
|
||||||
checked: PropTypes.bool
|
|
||||||
}
|
|
||||||
export default CheckboxBtn
|
|
|
@ -1,19 +0,0 @@
|
||||||
import { scale } from '../../utils/scaling'
|
|
||||||
import { StyleSheet } from 'react-native'
|
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
|
|
||||||
const useStyle = () => {
|
|
||||||
const { colors } = useTheme()
|
|
||||||
|
|
||||||
return StyleSheet.create({
|
|
||||||
mainContainer: {
|
|
||||||
borderColor: colors.horizontalLine,
|
|
||||||
borderWidth: StyleSheet.hairlineWidth,
|
|
||||||
width: scale(20),
|
|
||||||
height: scale(20),
|
|
||||||
justifyContent: 'center',
|
|
||||||
alignItems: 'center'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
export default useStyle
|
|
|
@ -1,50 +0,0 @@
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
import PropTypes from 'prop-types'
|
|
||||||
import React from 'react'
|
|
||||||
import { TouchableOpacity, View } from 'react-native'
|
|
||||||
import styles from './styles'
|
|
||||||
|
|
||||||
const DEFAULT_SIZE_MULTIPLIER = 0.7
|
|
||||||
|
|
||||||
function RadioButton(props) {
|
|
||||||
const { colors } = useTheme()
|
|
||||||
|
|
||||||
const {
|
|
||||||
size = 16,
|
|
||||||
innerColor = colors.radioColor,
|
|
||||||
outerColor = colors.radioOuterColor,
|
|
||||||
isSelected = false,
|
|
||||||
onPress = () => null
|
|
||||||
} = props
|
|
||||||
|
|
||||||
const outerStyle = {
|
|
||||||
borderColor: isSelected ? outerColor : colors.fontSecondColor,
|
|
||||||
width: size + size * DEFAULT_SIZE_MULTIPLIER,
|
|
||||||
height: size + size * DEFAULT_SIZE_MULTIPLIER,
|
|
||||||
borderRadius: (size + size * DEFAULT_SIZE_MULTIPLIER) / 2,
|
|
||||||
borderWidth: isSelected ? size / 2 : 1
|
|
||||||
}
|
|
||||||
|
|
||||||
const innerStyle = {
|
|
||||||
width: size / 2,
|
|
||||||
height: size / 2,
|
|
||||||
borderRadius: size / 2,
|
|
||||||
backgroundColor: innerColor
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TouchableOpacity style={[styles.radio, outerStyle]} onPress={onPress}>
|
|
||||||
{isSelected ? <View style={innerStyle} {...props} /> : null}
|
|
||||||
</TouchableOpacity>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
RadioButton.propTypes = {
|
|
||||||
size: PropTypes.number,
|
|
||||||
innerColor: PropTypes.string,
|
|
||||||
outerColor: PropTypes.string,
|
|
||||||
isSelected: PropTypes.bool,
|
|
||||||
onPress: PropTypes.func
|
|
||||||
}
|
|
||||||
|
|
||||||
export default RadioButton
|
|
|
@ -1,7 +0,0 @@
|
||||||
export default {
|
|
||||||
radio: {
|
|
||||||
justifyContent: 'center',
|
|
||||||
alignItems: 'center',
|
|
||||||
alignSelf: 'center'
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,44 +0,0 @@
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
import PropTypes from 'prop-types'
|
|
||||||
import React from 'react'
|
|
||||||
import { TouchableOpacity } from 'react-native'
|
|
||||||
import Spinner from '../../../components/Spinner/Spinner'
|
|
||||||
import TextDefault from '../../../components/Text/TextDefault/TextDefault'
|
|
||||||
import { COLORS } from '../../../Theme'
|
|
||||||
import { alignment } from '../../../utils/alignment'
|
|
||||||
import { ICONS_NAME } from '../../../utils/constant'
|
|
||||||
import { scale } from '../../../utils/scaling'
|
|
||||||
import { CustomIcon } from '../../CustomIcon'
|
|
||||||
import useStyle from './styles'
|
|
||||||
|
|
||||||
const FdEmailBtn = props => {
|
|
||||||
const styles = useStyle()
|
|
||||||
const { colors } = useTheme()
|
|
||||||
return (
|
|
||||||
<TouchableOpacity
|
|
||||||
activeOpacity={0.7}
|
|
||||||
style={styles.mainContainer}
|
|
||||||
onPress={props.onPress}>
|
|
||||||
{props.loadingIcon ? (
|
|
||||||
<Spinner backColor="rgba(0,0,0,0.1)" spinnerColor={colors.tagColor} />
|
|
||||||
) : (
|
|
||||||
<>
|
|
||||||
<CustomIcon
|
|
||||||
style={styles.marginLeft5}
|
|
||||||
name={ICONS_NAME.Logo}
|
|
||||||
color={COLORS.primary}
|
|
||||||
size={scale(19)}
|
|
||||||
/>
|
|
||||||
<TextDefault style={alignment.MLxSmall} bold>
|
|
||||||
Signup using Email
|
|
||||||
</TextDefault>
|
|
||||||
</>
|
|
||||||
)}
|
|
||||||
</TouchableOpacity>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
FdEmailBtn.propTypes = {
|
|
||||||
onPress: PropTypes.func,
|
|
||||||
loadingIcon: PropTypes.bool
|
|
||||||
}
|
|
||||||
export default FdEmailBtn
|
|
|
@ -1,26 +0,0 @@
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
import { Dimensions, StyleSheet } from 'react-native'
|
|
||||||
import { alignment } from '../../../utils/alignment'
|
|
||||||
import { moderateScale } from '../../../utils/scaling'
|
|
||||||
const { height } = Dimensions.get('window')
|
|
||||||
|
|
||||||
const useStyle = () => {
|
|
||||||
const { colors } = useTheme()
|
|
||||||
return StyleSheet.create({
|
|
||||||
mainContainer: {
|
|
||||||
width: '100%',
|
|
||||||
height: height * 0.07,
|
|
||||||
backgroundColor: colors.buttonBackgroundLight,
|
|
||||||
flexDirection: 'row',
|
|
||||||
alignItems: 'center',
|
|
||||||
borderRadius: moderateScale(20)
|
|
||||||
},
|
|
||||||
marginLeft5: {
|
|
||||||
...alignment.Pmedium
|
|
||||||
},
|
|
||||||
marginLeft10: {
|
|
||||||
...alignment.MLmedium
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
export default useStyle
|
|
|
@ -1,50 +0,0 @@
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
import PropTypes from 'prop-types'
|
|
||||||
import React from 'react'
|
|
||||||
import { Image, TouchableOpacity } from 'react-native'
|
|
||||||
import Spinner from '../../../components/Spinner/Spinner'
|
|
||||||
import TextDefault from '../../../components/Text/TextDefault/TextDefault'
|
|
||||||
import { alignment } from '../../../utils/alignment'
|
|
||||||
import { moderateScale } from '../../../utils/scaling'
|
|
||||||
import useStyle from './styles'
|
|
||||||
|
|
||||||
const FdGoogleBtn = props => {
|
|
||||||
const styles = useStyle()
|
|
||||||
const { colors } = useTheme()
|
|
||||||
return (
|
|
||||||
<TouchableOpacity
|
|
||||||
activeOpacity={0.7}
|
|
||||||
style={styles.mainContainer}
|
|
||||||
onPressIn={props.onPressIn}
|
|
||||||
onPress={props.onPress}>
|
|
||||||
{props.loadingIcon ? (
|
|
||||||
<Spinner backColor="rgba(0,0,0,0.1)" spinnerColor={colors.tagColor} />
|
|
||||||
) : (
|
|
||||||
<>
|
|
||||||
<Image
|
|
||||||
source={{
|
|
||||||
uri: 'https://pngimg.com/uploads/google/google_PNG19635.png'
|
|
||||||
}}
|
|
||||||
style={[
|
|
||||||
{
|
|
||||||
width: 25,
|
|
||||||
height: 25,
|
|
||||||
marginLeft: moderateScale(10)
|
|
||||||
}
|
|
||||||
]}
|
|
||||||
/>
|
|
||||||
<TextDefault style={alignment.MLlarge} bold>
|
|
||||||
Signup with Google
|
|
||||||
</TextDefault>
|
|
||||||
</>
|
|
||||||
)}
|
|
||||||
</TouchableOpacity>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
FdGoogleBtn.propTypes = {
|
|
||||||
onPress: PropTypes.func,
|
|
||||||
loadingIcon: PropTypes.bool,
|
|
||||||
onPressIn: PropTypes.func
|
|
||||||
}
|
|
||||||
export default FdGoogleBtn
|
|
|
@ -1,27 +0,0 @@
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
import { Dimensions, StyleSheet } from 'react-native'
|
|
||||||
import { alignment } from '../../../utils/alignment'
|
|
||||||
import { moderateScale } from '../../../utils/scaling'
|
|
||||||
const { height } = Dimensions.get('window')
|
|
||||||
|
|
||||||
const useStyle = () => {
|
|
||||||
const { colors } = useTheme()
|
|
||||||
return StyleSheet.create({
|
|
||||||
mainContainer: {
|
|
||||||
width: '100%',
|
|
||||||
height: height * 0.07,
|
|
||||||
backgroundColor: colors.buttonBackgroundLight,
|
|
||||||
flexDirection: 'row',
|
|
||||||
alignItems: 'center',
|
|
||||||
borderRadius: moderateScale(20)
|
|
||||||
},
|
|
||||||
marginLeft5: {
|
|
||||||
...alignment.Pmedium
|
|
||||||
},
|
|
||||||
marginLeft10: {
|
|
||||||
...alignment.MLmedium
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export default useStyle
|
|
|
@ -1,38 +0,0 @@
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
import PropTypes from 'prop-types'
|
|
||||||
import React from 'react'
|
|
||||||
import { Switch, TouchableOpacity } from 'react-native'
|
|
||||||
import useStyle from './styles'
|
|
||||||
|
|
||||||
function SwitchBtn(props) {
|
|
||||||
const styles = useStyle()
|
|
||||||
const { colors } = useTheme()
|
|
||||||
return (
|
|
||||||
<TouchableOpacity
|
|
||||||
activeOpacity={1}
|
|
||||||
onPress={props.onPress}
|
|
||||||
style={[
|
|
||||||
styles.mainContainer,
|
|
||||||
props.checked
|
|
||||||
? { backgroundColor: colors.selected }
|
|
||||||
: { backgroundColor: colors.fontWhite }
|
|
||||||
]}>
|
|
||||||
<Switch
|
|
||||||
trackColor={{
|
|
||||||
false: colors.iconColor,
|
|
||||||
true: colors.selected
|
|
||||||
}}
|
|
||||||
thumbColor={colors.fontWhite}
|
|
||||||
ios_backgroundColor="#3e3e3e"
|
|
||||||
onValueChange={props.onPress}
|
|
||||||
value={props.isEnabled}
|
|
||||||
/>
|
|
||||||
</TouchableOpacity>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
SwitchBtn.propTypes = {
|
|
||||||
onPress: PropTypes.func,
|
|
||||||
checked: PropTypes.bool,
|
|
||||||
isEnabled: PropTypes.bool
|
|
||||||
}
|
|
||||||
export default SwitchBtn
|
|
|
@ -1,14 +0,0 @@
|
||||||
import { StyleSheet } from 'react-native'
|
|
||||||
import { scale } from '../../utils/scaling'
|
|
||||||
|
|
||||||
const useStyle = () => {
|
|
||||||
return StyleSheet.create({
|
|
||||||
mainContainer: {
|
|
||||||
width: scale(20),
|
|
||||||
height: scale(20),
|
|
||||||
justifyContent: 'center',
|
|
||||||
alignItems: 'center'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
export default useStyle
|
|
|
@ -1,20 +0,0 @@
|
||||||
import PropTypes from 'prop-types'
|
|
||||||
import { showMessage } from 'react-native-flash-message'
|
|
||||||
import { scale } from '../../utils/scaling'
|
|
||||||
import { textStyles } from '../../utils/textStyles'
|
|
||||||
|
|
||||||
export const FlashMessage = props => {
|
|
||||||
showMessage({
|
|
||||||
backgroundColor: '#323232',
|
|
||||||
message: props.message,
|
|
||||||
type: 'info',
|
|
||||||
position: 'bottom',
|
|
||||||
titleStyle: {
|
|
||||||
fontSize: scale(12),
|
|
||||||
...textStyles.Medium
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
FlashMessage.propTypes = {
|
|
||||||
message: PropTypes.string.isRequired
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
import { textStyles } from '../../utils/textStyles'
|
|
||||||
import { alignment } from '../../utils/alignment'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
text: {
|
|
||||||
...textStyles.Bold,
|
|
||||||
...textStyles.H5,
|
|
||||||
...alignment.PTxSmall
|
|
||||||
},
|
|
||||||
container: {
|
|
||||||
borderRadius: 50
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,210 +0,0 @@
|
||||||
import {
|
|
||||||
CommonActions,
|
|
||||||
useNavigation,
|
|
||||||
useTheme
|
|
||||||
} from '@react-navigation/native'
|
|
||||||
import PropTypes from 'prop-types'
|
|
||||||
import React, { useCallback, useContext } from 'react'
|
|
||||||
import { Pressable, View } from 'react-native'
|
|
||||||
import UserContext from '../../../context/User'
|
|
||||||
import { ICONS_NAME, NAVIGATION_SCREEN } from '../../../utils/constant'
|
|
||||||
import { scale } from '../../../utils/scaling'
|
|
||||||
import { CustomIcon } from '../../CustomIcon'
|
|
||||||
import { FlashMessage } from '../../FlashMessage/FlashMessage'
|
|
||||||
import TextDefault from '../../Text/TextDefault/TextDefault'
|
|
||||||
import useStyles from './styles'
|
|
||||||
|
|
||||||
function HeaderIcon({ icon, iconColor, iconSize = scale(20) }) {
|
|
||||||
const { colors } = useTheme()
|
|
||||||
return (
|
|
||||||
<CustomIcon
|
|
||||||
name={icon}
|
|
||||||
size={iconSize}
|
|
||||||
color={iconColor || colors.iconColor}
|
|
||||||
/>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function LeftButton(props) {
|
|
||||||
const { icon, outerView, iconColor } = props
|
|
||||||
const styles = useStyles()
|
|
||||||
const navigation = useNavigation()
|
|
||||||
const { colors } = useTheme()
|
|
||||||
|
|
||||||
switch (icon) {
|
|
||||||
case ICONS_NAME.Menu:
|
|
||||||
return (
|
|
||||||
<View style={[styles.btnContainer, outerView]}>
|
|
||||||
<Pressable
|
|
||||||
hitSlop={50}
|
|
||||||
pressRetentionOffset={50}
|
|
||||||
android_ripple={{
|
|
||||||
borderless: true,
|
|
||||||
color: colors.rippleColor,
|
|
||||||
radius: 23
|
|
||||||
}}
|
|
||||||
style={({ pressed }) => [
|
|
||||||
{
|
|
||||||
opacity: pressed ? 0.7 : 1
|
|
||||||
}
|
|
||||||
]}
|
|
||||||
onPress={() => navigation.toggleDrawer()}>
|
|
||||||
<HeaderIcon iconColor={iconColor} icon={icon} />
|
|
||||||
</Pressable>
|
|
||||||
</View>
|
|
||||||
)
|
|
||||||
case ICONS_NAME.Back:
|
|
||||||
return (
|
|
||||||
<View style={[styles.btnContainer, outerView]}>
|
|
||||||
<Pressable
|
|
||||||
hitSlop={50}
|
|
||||||
pressRetentionOffset={50}
|
|
||||||
android_ripple={{
|
|
||||||
borderless: true,
|
|
||||||
color: colors.rippleColor,
|
|
||||||
radius: 23
|
|
||||||
}}
|
|
||||||
style={({ pressed }) => [
|
|
||||||
{
|
|
||||||
opacity: pressed ? 0.7 : 1
|
|
||||||
}
|
|
||||||
]}
|
|
||||||
onPress={() => navigation.goBack()}>
|
|
||||||
<HeaderIcon iconColor={iconColor} icon={icon} />
|
|
||||||
</Pressable>
|
|
||||||
</View>
|
|
||||||
)
|
|
||||||
case ICONS_NAME.Cross:
|
|
||||||
return (
|
|
||||||
<View style={[styles.btnContainer, outerView]}>
|
|
||||||
<Pressable
|
|
||||||
hitSlop={50}
|
|
||||||
pressRetentionOffset={50}
|
|
||||||
android_ripple={{
|
|
||||||
borderless: true,
|
|
||||||
color: colors.rippleColor,
|
|
||||||
radius: 23
|
|
||||||
}}
|
|
||||||
style={({ pressed }) => [
|
|
||||||
{
|
|
||||||
opacity: pressed ? 0.7 : 1
|
|
||||||
}
|
|
||||||
]}
|
|
||||||
onPress={() =>
|
|
||||||
navigation.dispatch(state => {
|
|
||||||
const routes = state.routes.filter(r => r.name === 'Menu')
|
|
||||||
return CommonActions.reset({
|
|
||||||
...state,
|
|
||||||
routes,
|
|
||||||
index: 0
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}>
|
|
||||||
<HeaderIcon iconColor={iconColor} icon={icon} />
|
|
||||||
</Pressable>
|
|
||||||
</View>
|
|
||||||
)
|
|
||||||
default:
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function RightButton(props) {
|
|
||||||
const { colors } = useTheme()
|
|
||||||
const navigation = useNavigation()
|
|
||||||
const {
|
|
||||||
outerView,
|
|
||||||
onPress = () => null,
|
|
||||||
icon = null,
|
|
||||||
iconColor = colors.iconColor,
|
|
||||||
iconSize = scale(20)
|
|
||||||
} = props
|
|
||||||
const styles = useStyles()
|
|
||||||
const { cartCount } = useContext(UserContext)
|
|
||||||
|
|
||||||
const navigateCart = useCallback(() => {
|
|
||||||
if (cartCount > 0) {
|
|
||||||
navigation.navigate(NAVIGATION_SCREEN.Cart)
|
|
||||||
} else {
|
|
||||||
FlashMessage({
|
|
||||||
message: 'Cart is empty.'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}, [cartCount])
|
|
||||||
|
|
||||||
switch (icon) {
|
|
||||||
case ICONS_NAME.Cart:
|
|
||||||
return (
|
|
||||||
<View style={[styles.btnContainer, outerView]}>
|
|
||||||
<Pressable
|
|
||||||
hitSlop={50}
|
|
||||||
pressRetentionOffset={50}
|
|
||||||
android_ripple={{
|
|
||||||
borderless: true,
|
|
||||||
color: colors.rippleColor,
|
|
||||||
radius: 23
|
|
||||||
}}
|
|
||||||
style={({ pressed }) => [
|
|
||||||
{
|
|
||||||
opacity: pressed ? 0.7 : 1
|
|
||||||
}
|
|
||||||
]}
|
|
||||||
onPress={() => navigateCart()}>
|
|
||||||
<HeaderIcon iconColor={iconColor} icon={icon} />
|
|
||||||
<View style={styles.cartCount}>
|
|
||||||
<TextDefault small bold textColor={colors.white}>
|
|
||||||
{cartCount}
|
|
||||||
</TextDefault>
|
|
||||||
</View>
|
|
||||||
</Pressable>
|
|
||||||
</View>
|
|
||||||
)
|
|
||||||
case ICONS_NAME.Filter:
|
|
||||||
case ICONS_NAME.Pencil:
|
|
||||||
case ICONS_NAME.Cross:
|
|
||||||
case ICONS_NAME.Plus:
|
|
||||||
return (
|
|
||||||
<View style={[styles.btnContainer, outerView]}>
|
|
||||||
<Pressable
|
|
||||||
hitSlop={50}
|
|
||||||
pressRetentionOffset={50}
|
|
||||||
android_ripple={{
|
|
||||||
borderless: true,
|
|
||||||
color: colors.rippleColor,
|
|
||||||
radius: 23
|
|
||||||
}}
|
|
||||||
style={({ pressed }) => [
|
|
||||||
{
|
|
||||||
opacity: pressed ? 0.7 : 1
|
|
||||||
}
|
|
||||||
]}
|
|
||||||
onPress={onPress}>
|
|
||||||
<HeaderIcon iconColor={iconColor} icon={icon} iconSize={iconSize} />
|
|
||||||
</Pressable>
|
|
||||||
</View>
|
|
||||||
)
|
|
||||||
default:
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
HeaderIcon.propTypes = {
|
|
||||||
outerView: PropTypes.object,
|
|
||||||
icon: PropTypes.string,
|
|
||||||
iconColor: PropTypes.string,
|
|
||||||
iconSize: PropTypes.number
|
|
||||||
}
|
|
||||||
LeftButton.propTypes = {
|
|
||||||
outerView: PropTypes.object,
|
|
||||||
icon: PropTypes.string,
|
|
||||||
iconColor: PropTypes.string
|
|
||||||
}
|
|
||||||
RightButton.propTypes = {
|
|
||||||
outerView: PropTypes.object,
|
|
||||||
icon: PropTypes.string,
|
|
||||||
iconColor: PropTypes.string,
|
|
||||||
iconSize: PropTypes.number,
|
|
||||||
onPress: PropTypes.func
|
|
||||||
}
|
|
||||||
|
|
||||||
export { HeaderIcon, LeftButton, RightButton }
|
|
|
@ -1,74 +0,0 @@
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
import { StyleSheet } from 'react-native'
|
|
||||||
import { alignment } from '../../../utils/alignment'
|
|
||||||
import { scale, verticalScale } from '../../../utils/scaling'
|
|
||||||
|
|
||||||
const useStyle = () => {
|
|
||||||
const { colors } = useTheme()
|
|
||||||
|
|
||||||
return StyleSheet.create({
|
|
||||||
leftIconPadding: {
|
|
||||||
...alignment.PLsmall,
|
|
||||||
...alignment.PRlarge
|
|
||||||
},
|
|
||||||
rightContainer: {
|
|
||||||
position: 'relative',
|
|
||||||
height: '100%',
|
|
||||||
justifyContent: 'center',
|
|
||||||
alignItems: 'center',
|
|
||||||
backgroundColor: 'transparent',
|
|
||||||
...alignment.PLsmall,
|
|
||||||
...alignment.PRsmall
|
|
||||||
},
|
|
||||||
imgContainer: {
|
|
||||||
width: verticalScale(20),
|
|
||||||
height: verticalScale(20)
|
|
||||||
},
|
|
||||||
absoluteContainer: {
|
|
||||||
width: verticalScale(10),
|
|
||||||
height: verticalScale(10),
|
|
||||||
backgroundColor: colors.cardContainer,
|
|
||||||
justifyContent: 'center',
|
|
||||||
alignItems: 'center',
|
|
||||||
borderRadius: verticalScale(5),
|
|
||||||
position: 'absolute',
|
|
||||||
right: scale(8),
|
|
||||||
top: scale(8)
|
|
||||||
},
|
|
||||||
touchAreaPassword: {
|
|
||||||
width: '40%',
|
|
||||||
height: '70%',
|
|
||||||
justifyContent: 'center',
|
|
||||||
alignItems: 'flex-end'
|
|
||||||
},
|
|
||||||
titlePasswordText: {
|
|
||||||
backgroundColor: colors.cardContainer,
|
|
||||||
height: '75%',
|
|
||||||
justifyContent: 'center',
|
|
||||||
alignItems: 'center',
|
|
||||||
borderRadius: scale(7),
|
|
||||||
...alignment.PLxSmall,
|
|
||||||
...alignment.PRxSmall
|
|
||||||
},
|
|
||||||
btnContainer: {
|
|
||||||
backgroundColor: 'rgba(255, 255, 255,0.01)',
|
|
||||||
height: '100%',
|
|
||||||
justifyContent: 'center',
|
|
||||||
alignItems: 'center',
|
|
||||||
width: 80
|
|
||||||
},
|
|
||||||
cartCount: {
|
|
||||||
backgroundColor: colors.blueColor,
|
|
||||||
top: scale(11),
|
|
||||||
right: scale(-5),
|
|
||||||
width: scale(15),
|
|
||||||
height: scale(15),
|
|
||||||
justifyContent: 'center',
|
|
||||||
alignItems: 'center',
|
|
||||||
borderRadius: 10,
|
|
||||||
position: 'absolute'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export default useStyle
|
|
|
@ -1,44 +0,0 @@
|
||||||
import { useNavigation, useTheme } from '@react-navigation/native'
|
|
||||||
import React from 'react'
|
|
||||||
import { View, TouchableOpacity } from 'react-native'
|
|
||||||
import { CustomIcon } from '../../CustomIcon'
|
|
||||||
import PropTypes from 'prop-types'
|
|
||||||
import { TextDefault } from '../../Text'
|
|
||||||
import useStyle from './styles'
|
|
||||||
import { scale } from '../../../utils/scaling'
|
|
||||||
import { ICONS_NAME } from '../../../utils/constant'
|
|
||||||
|
|
||||||
function RegistrationHeader({ title, back = false }) {
|
|
||||||
const styles = useStyle()
|
|
||||||
const navigation = useNavigation()
|
|
||||||
const { colors } = useTheme()
|
|
||||||
|
|
||||||
return (
|
|
||||||
<View style={styles.headerContainer}>
|
|
||||||
{back ? (
|
|
||||||
<TouchableOpacity
|
|
||||||
onPress={() => navigation.goBack()}
|
|
||||||
style={[styles.backBtnWidth, styles.backBtn]}>
|
|
||||||
<CustomIcon
|
|
||||||
name={ICONS_NAME.Back}
|
|
||||||
size={scale(20)}
|
|
||||||
color={colors.iconColor}
|
|
||||||
/>
|
|
||||||
</TouchableOpacity>
|
|
||||||
) : (
|
|
||||||
<View style={styles.backBtnWidth} />
|
|
||||||
)}
|
|
||||||
<TextDefault center H4 bold>
|
|
||||||
{title || ''}
|
|
||||||
</TextDefault>
|
|
||||||
<View style={styles.backBtnWidth} />
|
|
||||||
</View>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
RegistrationHeader.propTypes = {
|
|
||||||
title: PropTypes.string.isRequired,
|
|
||||||
back: PropTypes.bool
|
|
||||||
}
|
|
||||||
|
|
||||||
export default React.memo(RegistrationHeader)
|
|
|
@ -1,28 +0,0 @@
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
import { StyleSheet } from 'react-native'
|
|
||||||
import { moderateScale, scale } from '../../../utils/scaling'
|
|
||||||
|
|
||||||
const useStyle = () => {
|
|
||||||
const { colors } = useTheme()
|
|
||||||
return StyleSheet.create({
|
|
||||||
headerContainer: {
|
|
||||||
paddingHorizontal: moderateScale(20),
|
|
||||||
flexDirection: 'row',
|
|
||||||
width: '100%',
|
|
||||||
alignItems: 'center',
|
|
||||||
justifyContent: 'space-between'
|
|
||||||
},
|
|
||||||
backBtnWidth: {
|
|
||||||
width: scale(40),
|
|
||||||
aspectRatio: 1
|
|
||||||
},
|
|
||||||
backBtn: {
|
|
||||||
backgroundColor: colors.white,
|
|
||||||
borderRadius: scale(13),
|
|
||||||
justifyContent: 'center',
|
|
||||||
alignItems: 'center'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export default useStyle
|
|
|
@ -1,4 +0,0 @@
|
||||||
import { BackButton, LeftButton, RightButton } from './HeaderIcons/HeaderIcons'
|
|
||||||
import RegistrationHeader from './RegistrationHeader/RegistrationHeader'
|
|
||||||
|
|
||||||
export { BackButton, LeftButton, RightButton, RegistrationHeader }
|
|
|
@ -1,46 +0,0 @@
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
import PropTypes from 'prop-types'
|
|
||||||
import React from 'react'
|
|
||||||
import { TouchableOpacity, View } from 'react-native'
|
|
||||||
import { alignment } from '../../../utils/alignment'
|
|
||||||
import EnategaImage from '../../EnategaImage/EnategaImage'
|
|
||||||
import { TextDefault } from '../../Text'
|
|
||||||
import useStyle from './styles'
|
|
||||||
function MenuCard(props) {
|
|
||||||
const { colors } = useTheme()
|
|
||||||
const styles = useStyle()
|
|
||||||
return (
|
|
||||||
<TouchableOpacity
|
|
||||||
activeOpacity={1}
|
|
||||||
style={styles.flex}
|
|
||||||
onPress={props.onPress}>
|
|
||||||
<View style={styles.container}>
|
|
||||||
<EnategaImage
|
|
||||||
imgStyle={styles.imgResponsive}
|
|
||||||
imgSource={props.image ? { uri: props.image } : undefined}
|
|
||||||
spinnerProps={{ style: styles.loadingView }}
|
|
||||||
/>
|
|
||||||
<View style={styles.textContainer}>
|
|
||||||
<TextDefault
|
|
||||||
numberOfLines={1}
|
|
||||||
textColor={colors.fontWhite}
|
|
||||||
H4
|
|
||||||
bolder
|
|
||||||
style={alignment.MBxSmall}>
|
|
||||||
{props.title}
|
|
||||||
</TextDefault>
|
|
||||||
<TextDefault numberOfLines={1} textColor={colors.fontWhite} medium>
|
|
||||||
{props.description}
|
|
||||||
</TextDefault>
|
|
||||||
</View>
|
|
||||||
</View>
|
|
||||||
</TouchableOpacity>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
MenuCard.propTypes = {
|
|
||||||
onPress: PropTypes.func,
|
|
||||||
image: PropTypes.string,
|
|
||||||
title: PropTypes.string.isRequired,
|
|
||||||
description: PropTypes.string
|
|
||||||
}
|
|
||||||
export default MenuCard
|
|
|
@ -1,62 +0,0 @@
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
import { StyleSheet } from 'react-native'
|
|
||||||
import { moderateScale } from '../../../utils/scaling'
|
|
||||||
|
|
||||||
const useStyle = () => {
|
|
||||||
const { colors } = useTheme()
|
|
||||||
|
|
||||||
return StyleSheet.create({
|
|
||||||
flex: {
|
|
||||||
flex: 1,
|
|
||||||
justifyContent: 'center',
|
|
||||||
alignItems: 'center',
|
|
||||||
borderRadius: 20
|
|
||||||
},
|
|
||||||
container: {
|
|
||||||
width: '100%',
|
|
||||||
height: '100%',
|
|
||||||
justifyContent: 'center',
|
|
||||||
borderRadius: 20,
|
|
||||||
overflow: 'hidden'
|
|
||||||
},
|
|
||||||
imgResponsive: {
|
|
||||||
flex: 1,
|
|
||||||
width: undefined,
|
|
||||||
height: undefined
|
|
||||||
},
|
|
||||||
loadingView: {
|
|
||||||
backgroundColor: colors.background,
|
|
||||||
width: '100%',
|
|
||||||
height: '100%'
|
|
||||||
},
|
|
||||||
imgCard: {
|
|
||||||
position: 'relative',
|
|
||||||
flex: 1,
|
|
||||||
borderRadius: 20,
|
|
||||||
width: undefined,
|
|
||||||
height: undefined
|
|
||||||
},
|
|
||||||
blackOverlay: {
|
|
||||||
width: '100%',
|
|
||||||
height: '100%',
|
|
||||||
backgroundColor: colors.black,
|
|
||||||
opacity: 0.4,
|
|
||||||
borderRadius: 20,
|
|
||||||
position: 'absolute'
|
|
||||||
},
|
|
||||||
textContainer: {
|
|
||||||
width: '100%',
|
|
||||||
padding: moderateScale(10, 0.2),
|
|
||||||
paddingLeft: moderateScale(20),
|
|
||||||
alignSelf: 'flex-end',
|
|
||||||
bottom: 0,
|
|
||||||
position: 'absolute',
|
|
||||||
backgroundColor: 'rgba(52, 52, 52, 0.8)',
|
|
||||||
justifyContent: 'center',
|
|
||||||
borderBottomEndRadius: 20,
|
|
||||||
borderBottomStartRadius: 20
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export default useStyle
|
|
|
@ -1,49 +0,0 @@
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
import { StyleSheet } from 'react-native'
|
|
||||||
import { alignment } from '../../../utils/alignment'
|
|
||||||
import { moderateScale, scale } from '../../../utils/scaling'
|
|
||||||
|
|
||||||
const useStyle = () => {
|
|
||||||
const { colors } = useTheme()
|
|
||||||
return StyleSheet.create({
|
|
||||||
mainContainer: {
|
|
||||||
flexGrow: 1,
|
|
||||||
marginLeft: scale(5),
|
|
||||||
...alignment.PBmedium
|
|
||||||
},
|
|
||||||
lightText: {
|
|
||||||
color: colors.fontSecondColor
|
|
||||||
},
|
|
||||||
statusContainer: {
|
|
||||||
marginTop: 20,
|
|
||||||
width: scale(275),
|
|
||||||
padding: moderateScale(15),
|
|
||||||
backgroundColor: '#f7f7fb',
|
|
||||||
borderRadius: 10,
|
|
||||||
borderStyle: 'dashed',
|
|
||||||
borderColor: '#a5a5a5',
|
|
||||||
borderWidth: 2
|
|
||||||
// shadowOpacity: 1,
|
|
||||||
// shadowRadius: verticalScale(4),
|
|
||||||
// borderWidth: 1,
|
|
||||||
// borderColor: '#FFF',
|
|
||||||
// ...alignment.PBmedium,
|
|
||||||
// ...alignment.MBsmall,
|
|
||||||
// ...alignment.MTxSmall,
|
|
||||||
// ...alignment.MLmedium
|
|
||||||
},
|
|
||||||
textContainer: {},
|
|
||||||
statusCircleContainer: {
|
|
||||||
flexDirection: 'row',
|
|
||||||
justifyContent: 'flex-start',
|
|
||||||
...alignment.MTsmall,
|
|
||||||
...alignment.MBsmall
|
|
||||||
},
|
|
||||||
statusCircle: {
|
|
||||||
...alignment.MTxSmall,
|
|
||||||
...alignment.MBxSmall,
|
|
||||||
...alignment.MRxSmall
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
export default useStyle
|
|
|
@ -1,4 +0,0 @@
|
||||||
import MenuCard from './MenuCard/MenuCard'
|
|
||||||
import StatusCard from './StatusCard/StatusCard'
|
|
||||||
|
|
||||||
export { MenuCard, StatusCard }
|
|
|
@ -1,243 +0,0 @@
|
||||||
import { MaterialIcons } from '@expo/vector-icons'
|
|
||||||
import MultiSlider from '@ptomasroos/react-native-multi-slider'
|
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
import { get, keys } from 'lodash'
|
|
||||||
import PropTypes from 'prop-types'
|
|
||||||
import React, { useCallback, useContext, useEffect, useState } from 'react'
|
|
||||||
import { Switch, TouchableOpacity, View } from 'react-native'
|
|
||||||
import ConfigurationContext from '../../../context/Configuration'
|
|
||||||
import { alignment } from '../../../utils/alignment'
|
|
||||||
import { SORT_DATA } from '../../../utils/constant'
|
|
||||||
import { moderateScale } from '../../../utils/scaling'
|
|
||||||
import RadioBtn from '../../FdRadioBtn/RadioBtn'
|
|
||||||
import TextDefault from '../../Text/TextDefault/TextDefault'
|
|
||||||
import useStyle from './styles'
|
|
||||||
|
|
||||||
const FilterModal = props => {
|
|
||||||
const styles = useStyle()
|
|
||||||
const { colors } = useTheme()
|
|
||||||
const configuration = useContext(ConfigurationContext)
|
|
||||||
const [filters, setFilters] = useState({})
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
setFilters({
|
|
||||||
onSale: false,
|
|
||||||
inStock: false,
|
|
||||||
min: 0,
|
|
||||||
max: 1000,
|
|
||||||
sort: keys(SORT_DATA)[0],
|
|
||||||
...props.filterObj
|
|
||||||
})
|
|
||||||
}, [props.filterObj])
|
|
||||||
|
|
||||||
const setSortValue = useCallback(sortKey => {
|
|
||||||
setFilters(previousState => ({
|
|
||||||
...previousState,
|
|
||||||
sort: sortKey
|
|
||||||
}))
|
|
||||||
}, [])
|
|
||||||
|
|
||||||
const toggleSaleSwitch = useCallback(() => {
|
|
||||||
setFilters(previousState => ({
|
|
||||||
...previousState,
|
|
||||||
onSale: !previousState.onSale
|
|
||||||
}))
|
|
||||||
}, [])
|
|
||||||
|
|
||||||
const toggleStockSwitch = useCallback(() => {
|
|
||||||
setFilters(previousState => ({
|
|
||||||
...previousState,
|
|
||||||
inStock: !previousState.inStock
|
|
||||||
}))
|
|
||||||
}, [])
|
|
||||||
|
|
||||||
const clearItems = useCallback(() => {
|
|
||||||
setFilters({
|
|
||||||
onSale: false,
|
|
||||||
inStock: false,
|
|
||||||
min: 0,
|
|
||||||
max: 1000,
|
|
||||||
sort: keys(SORT_DATA)[0]
|
|
||||||
})
|
|
||||||
}, [])
|
|
||||||
|
|
||||||
const priceSliderChange = useCallback(values => {
|
|
||||||
setFilters(previousState => ({
|
|
||||||
...previousState,
|
|
||||||
min: values[0],
|
|
||||||
max: values[1]
|
|
||||||
}))
|
|
||||||
}, [])
|
|
||||||
|
|
||||||
function applyFilters() {
|
|
||||||
props.setFilters({ ...filters })
|
|
||||||
props.closeFilterModal()
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<View style={{ flex: 1, padding: moderateScale(15) }}>
|
|
||||||
<View
|
|
||||||
style={[
|
|
||||||
{ flexDirection: 'row', justifyContent: 'space-between' },
|
|
||||||
alignment.PTsmall
|
|
||||||
]}>
|
|
||||||
<TextDefault H5 bold>
|
|
||||||
Filters
|
|
||||||
</TextDefault>
|
|
||||||
<TouchableOpacity
|
|
||||||
onPress={clearItems}
|
|
||||||
style={{
|
|
||||||
flexDirection: 'row',
|
|
||||||
alignItems: 'center'
|
|
||||||
}}>
|
|
||||||
<TextDefault H5 bold textColor={colors.buttonBackgroundBlue}>
|
|
||||||
Reset
|
|
||||||
</TextDefault>
|
|
||||||
<MaterialIcons
|
|
||||||
name="refresh"
|
|
||||||
size={22}
|
|
||||||
color={colors.buttonBackgroundBlue}
|
|
||||||
/>
|
|
||||||
</TouchableOpacity>
|
|
||||||
</View>
|
|
||||||
<View style={styles.line} />
|
|
||||||
<View style={[alignment.PLlarge, alignment.PRlarge]}>
|
|
||||||
<View
|
|
||||||
style={{
|
|
||||||
flexDirection: 'row',
|
|
||||||
alignItems: 'center',
|
|
||||||
justifyContent: 'space-between'
|
|
||||||
}}>
|
|
||||||
<TextDefault H5 bold textColor={colors.placeHolderColor}>
|
|
||||||
Show sale items only
|
|
||||||
</TextDefault>
|
|
||||||
<Switch
|
|
||||||
trackColor={{ false: '#767577', true: colors.tagColor }}
|
|
||||||
thumbColor={get(filters, 'onSale') ? 'f4f3f4' : '#f4f3f4'}
|
|
||||||
ios_backgroundColor="#3e3e3e"
|
|
||||||
onValueChange={toggleSaleSwitch}
|
|
||||||
value={get(filters, 'onSale')}
|
|
||||||
/>
|
|
||||||
</View>
|
|
||||||
<View style={styles.line} />
|
|
||||||
<View
|
|
||||||
style={{
|
|
||||||
flexDirection: 'row',
|
|
||||||
alignItems: 'center',
|
|
||||||
justifyContent: 'space-between'
|
|
||||||
}}>
|
|
||||||
<TextDefault H5 bold textColor={colors.placeHolderColor}>
|
|
||||||
Show stock items only
|
|
||||||
</TextDefault>
|
|
||||||
<Switch
|
|
||||||
trackColor={{ false: '#767577', true: colors.tagColor }}
|
|
||||||
thumbColor={get(filters, 'inStock') ? 'f4f3f4' : '#f4f3f4'}
|
|
||||||
ios_backgroundColor="#3e3e3e"
|
|
||||||
onValueChange={toggleStockSwitch}
|
|
||||||
value={get(filters, 'inStock')}
|
|
||||||
/>
|
|
||||||
</View>
|
|
||||||
<View style={styles.line} />
|
|
||||||
</View>
|
|
||||||
|
|
||||||
<View style={styles.priceRangeRow}>
|
|
||||||
<TextDefault bold H5>
|
|
||||||
Price Range
|
|
||||||
</TextDefault>
|
|
||||||
<View>
|
|
||||||
<TextDefault bold H5 center>
|
|
||||||
{configuration.currency_symbol} {get(filters, 'min')} -{' '}
|
|
||||||
{configuration.currency_symbol} {get(filters, 'max')}
|
|
||||||
</TextDefault>
|
|
||||||
</View>
|
|
||||||
</View>
|
|
||||||
<View
|
|
||||||
style={[
|
|
||||||
{ alignItems: 'center' },
|
|
||||||
alignment.MTlarge,
|
|
||||||
alignment.PLlarge,
|
|
||||||
alignment.PRlarge
|
|
||||||
]}>
|
|
||||||
<MultiSlider
|
|
||||||
sliderLength={310}
|
|
||||||
trackStyle={styles.trackStyle}
|
|
||||||
selectedStyle={{ backgroundColor: colors.tagColor }}
|
|
||||||
markerStyle={styles.markerStyle}
|
|
||||||
pressedMarkerStyle={styles.selectedMarker}
|
|
||||||
values={[get(filters, 'min'), get(filters, 'max')]}
|
|
||||||
onValuesChange={priceSliderChange}
|
|
||||||
min={0}
|
|
||||||
max={1000}
|
|
||||||
step={10}
|
|
||||||
allowOverlap
|
|
||||||
snapped
|
|
||||||
/>
|
|
||||||
<View
|
|
||||||
style={{
|
|
||||||
width: '100%',
|
|
||||||
flexDirection: 'row',
|
|
||||||
justifyContent: 'space-between'
|
|
||||||
}}>
|
|
||||||
<TextDefault textColor={colors.fontSecondColor} H5 center>
|
|
||||||
{configuration.currency_symbol} 0
|
|
||||||
</TextDefault>
|
|
||||||
<TextDefault textColor={colors.fontSecondColor} H5 center>
|
|
||||||
{configuration.currency_symbol} 1000
|
|
||||||
</TextDefault>
|
|
||||||
</View>
|
|
||||||
</View>
|
|
||||||
<TextDefault bold H5 style={alignment.MTlarge}>
|
|
||||||
Sorting
|
|
||||||
</TextDefault>
|
|
||||||
<View style={[alignment.PLlarge, alignment.PRlarge, alignment.MTmedium]}>
|
|
||||||
{keys(SORT_DATA).map(item => {
|
|
||||||
const isSelected = get(filters, 'sort') === item
|
|
||||||
return (
|
|
||||||
<TouchableOpacity
|
|
||||||
key={`SORT_${item}`}
|
|
||||||
style={styles.sotRow}
|
|
||||||
onPress={() => setSortValue(item)}>
|
|
||||||
<TextDefault
|
|
||||||
H5
|
|
||||||
bold
|
|
||||||
textColor={
|
|
||||||
isSelected
|
|
||||||
? colors.fonfontMainColort
|
|
||||||
: colors.placeHolderColor
|
|
||||||
}>
|
|
||||||
{get(SORT_DATA, item)}
|
|
||||||
</TextDefault>
|
|
||||||
<RadioBtn
|
|
||||||
size={10}
|
|
||||||
animation={'bounceIn'}
|
|
||||||
isSelected={isSelected}
|
|
||||||
innerColor={colors.radioColor}
|
|
||||||
outerColor={colors.radioOuterColor}
|
|
||||||
onPress={() => setSortValue(item)}
|
|
||||||
/>
|
|
||||||
</TouchableOpacity>
|
|
||||||
)
|
|
||||||
})}
|
|
||||||
</View>
|
|
||||||
<View style={[alignment.PLlarge, alignment.PRlarge]}>
|
|
||||||
<TouchableOpacity style={styles.applyBtn} onPress={applyFilters}>
|
|
||||||
<TextDefault H5 bold textColor={colors.lightBackground}>
|
|
||||||
Apply Filter
|
|
||||||
</TextDefault>
|
|
||||||
</TouchableOpacity>
|
|
||||||
<TouchableOpacity
|
|
||||||
onPress={() => props.closeFilterModal()}
|
|
||||||
style={[styles.width100, alignment.PBlarge, alignment.PTlarge]}>
|
|
||||||
<TextDefault center>Close</TextDefault>
|
|
||||||
</TouchableOpacity>
|
|
||||||
</View>
|
|
||||||
</View>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
FilterModal.propTypes = {
|
|
||||||
filterObj: PropTypes.object,
|
|
||||||
closeFilterModal: PropTypes.func,
|
|
||||||
setFilters: PropTypes.func
|
|
||||||
}
|
|
||||||
|
|
||||||
export default FilterModal
|
|
|
@ -1,77 +0,0 @@
|
||||||
import { useTheme } from '@react-navigation/native'
|
|
||||||
import { StyleSheet } from 'react-native'
|
|
||||||
import { alignment } from '../../../utils/alignment'
|
|
||||||
import { moderateScale, scale, verticalScale } from '../../../utils/scaling'
|
|
||||||
|
|
||||||
const useStyle = () => {
|
|
||||||
const { colors } = useTheme()
|
|
||||||
return StyleSheet.create({
|
|
||||||
width100: {
|
|
||||||
width: '100%'
|
|
||||||
},
|
|
||||||
line: {
|
|
||||||
width: '100%',
|
|
||||||
alignSelf: 'center',
|
|
||||||
borderBottomColor: colors.horizontalLine,
|
|
||||||
borderBottomWidth: StyleSheet.hairlineWidth,
|
|
||||||
...alignment.MTmedium,
|
|
||||||
...alignment.MBmedium
|
|
||||||
},
|
|
||||||
sotRow: {
|
|
||||||
flexDirection: 'row',
|
|
||||||
alignItems: 'center',
|
|
||||||
width: '100%',
|
|
||||||
alignSelf: 'center',
|
|
||||||
justifyContent: 'space-between',
|
|
||||||
borderBottomColor: colors.horizontalLine,
|
|
||||||
borderBottomWidth: StyleSheet.hairlineWidth,
|
|
||||||
...alignment.PTmedium,
|
|
||||||
...alignment.PBmedium
|
|
||||||
},
|
|
||||||
priceRangeRow: {
|
|
||||||
flexDirection: 'row',
|
|
||||||
alignItems: 'center',
|
|
||||||
justifyContent: 'space-between',
|
|
||||||
paddingTop: verticalScale(10),
|
|
||||||
paddingBottom: verticalScale(10),
|
|
||||||
...alignment.PRlarge
|
|
||||||
},
|
|
||||||
trackStyle: {
|
|
||||||
height: 10,
|
|
||||||
borderRadius: 10,
|
|
||||||
backgroundColor: colors.horizontalLine,
|
|
||||||
borderStyle: 'solid',
|
|
||||||
borderWidth: 0,
|
|
||||||
borderColor: 'lightgray'
|
|
||||||
},
|
|
||||||
selectedMarker: {
|
|
||||||
width: scale(15),
|
|
||||||
height: scale(30)
|
|
||||||
},
|
|
||||||
markerStyle: {
|
|
||||||
width: scale(12),
|
|
||||||
height: scale(25),
|
|
||||||
backgroundColor: colors.tagColor,
|
|
||||||
shadowColor: 'rgba(0, 0, 0, 0.15)',
|
|
||||||
shadowOffset: {
|
|
||||||
width: 0,
|
|
||||||
height: 0
|
|
||||||
},
|
|
||||||
shadowRadius: 9,
|
|
||||||
shadowOpacity: 1,
|
|
||||||
elevation: 3,
|
|
||||||
marginTop: 8
|
|
||||||
},
|
|
||||||
applyBtn: {
|
|
||||||
width: '100%',
|
|
||||||
maxHeight: scale(50),
|
|
||||||
backgroundColor: colors.buttonBackgroundBlue,
|
|
||||||
alignSelf: 'center',
|
|
||||||
alignItems: 'center',
|
|
||||||
padding: moderateScale(14),
|
|
||||||
borderRadius: 20,
|
|
||||||
...alignment.MTmedium
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
export default useStyle
|
|