diff --git a/.expo/README.md b/.expo/README.md
new file mode 100644
index 0000000..fd146b4
--- /dev/null
+++ b/.expo/README.md
@@ -0,0 +1,15 @@
+> Why do I have a folder named ".expo" in my project?
+
+The ".expo" folder is created when an Expo project is started using "expo start" command.
+
+> What do the files contain?
+
+- "devices.json": contains information about devices that have recently opened this project. This is used to populate the "Development sessions" list in your development builds.
+- "packager-info.json": contains port numbers and process PIDs that are used to serve the application to the mobile device/simulator.
+- "settings.json": contains the server configuration that is used to serve the application manifest.
+
+> Should I commit the ".expo" folder?
+
+No, you should not share the ".expo" folder. It does not contain any information that is relevant for other developers working on the project, it is specific to your machine.
+
+Upon project creation, the ".expo" folder is already added to your ".gitignore" file.
diff --git a/.expo/packager-info.json b/.expo/packager-info.json
new file mode 100644
index 0000000..f76bd55
--- /dev/null
+++ b/.expo/packager-info.json
@@ -0,0 +1,9 @@
+{
+ "expoServerPort": 19000,
+ "packagerPort": 19000,
+ "packagerPid": null,
+ "expoServerNgrokUrl": null,
+ "packagerNgrokUrl": null,
+ "ngrokPid": null,
+ "webpackServerPort": null
+}
diff --git a/.expo/settings.json b/.expo/settings.json
new file mode 100644
index 0000000..470dc63
--- /dev/null
+++ b/.expo/settings.json
@@ -0,0 +1,10 @@
+{
+ "hostType": "lan",
+ "lanType": "ip",
+ "dev": true,
+ "minify": false,
+ "urlRandomness": null,
+ "https": false,
+ "scheme": null,
+ "devClient": false
+}
diff --git a/App.js b/App.js
index 09f879b..791c3ab 100644
--- a/App.js
+++ b/App.js
@@ -1,20 +1,30 @@
-import { StatusBar } from 'expo-status-bar';
-import { StyleSheet, Text, View } from 'react-native';
-
+import * as React from 'react';
+//Third Party Packages
+import { NavigationContainer } from '@react-navigation/native';
+import { createNativeStackNavigator } from '@react-navigation/native-stack';
+import { Provider } from 'react-redux';
+import {createStore, combineReducers, applyMiddleware} from "redux";
+import thunk from "redux-thunk";
+//redux State
+import InitialState from "./src/redux/reducer";
+//Screen Imports
+import Dashboard from "./src/screens/dashboard/dashboard";
+import ContactScreen from "./src/screens/contact/contactScreen";
+import CatalogScreen from './src/screens/catalog/catalogList';
+import CatalogDetails from './src/screens/catalog/catalogDetails';
+const Stack = createNativeStackNavigator();
+const reducer = createStore(combineReducers({data:InitialState}), applyMiddleware(thunk));
export default function App() {
return (
-
- Open up App.js to start working on your app!
-
-
+
+
+
+
+
+
+
+
+
+
);
-}
-
-const styles = StyleSheet.create({
- container: {
- flex: 1,
- backgroundColor: '#fff',
- alignItems: 'center',
- justifyContent: 'center',
- },
-});
+}
\ No newline at end of file
diff --git a/my-info.json b/my-info.json
new file mode 100644
index 0000000..c071845
--- /dev/null
+++ b/my-info.json
@@ -0,0 +1,7 @@
+{
+ "favorite_colors": ["blue","green","red"],
+ "country": "United Arab Emirates",
+ "population": 3400000,
+ "visit_within_5years": true,
+ "favorite_foods": ["Biryani", "Mutton Curry With Rice", "Butter Chicken"]
+}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index bdc79b3..d2fc699 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,12 +8,23 @@
"name": "pokedex",
"version": "1.0.0",
"dependencies": {
+ "@react-navigation/native": "^6.1.2",
+ "@react-navigation/native-stack": "^6.9.8",
+ "axios": "^1.2.2",
"expo": "~45.0.0",
"expo-status-bar": "~1.3.0",
+ "moment": "^2.29.4",
"react": "17.0.2",
"react-dom": "17.0.2",
"react-native": "0.68.2",
- "react-native-web": "0.17.7"
+ "react-native-calendar-picker": "^7.1.3",
+ "react-native-gesture-handler": "^2.8.0",
+ "react-native-safe-area-context": "4.2.4",
+ "react-native-screens": "~3.11.1",
+ "react-native-web": "0.17.7",
+ "react-redux": "^8.0.5",
+ "redux": "^4.2.0",
+ "redux-thunk": "^2.4.2"
},
"devDependencies": {
"@babel/core": "^7.12.9"
@@ -1780,6 +1791,17 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@egjs/hammerjs": {
+ "version": "2.0.17",
+ "resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz",
+ "integrity": "sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==",
+ "dependencies": {
+ "@types/hammerjs": "^2.0.36"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
"node_modules/@expo/bunyan": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@expo/bunyan/-/bunyan-4.0.0.tgz",
@@ -4152,6 +4174,99 @@
"resolved": "https://registry.npmjs.org/@react-native/polyfills/-/polyfills-2.0.0.tgz",
"integrity": "sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ=="
},
+ "node_modules/@react-navigation/core": {
+ "version": "6.4.6",
+ "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-6.4.6.tgz",
+ "integrity": "sha512-6zaAgUT5k4vhJlddUk2l52RZyMkMelHdrRv1cL57ALi2RZzERdgmbiMKhJerxFLn9S8E3PUe8vwxHzjHOZKG4w==",
+ "dependencies": {
+ "@react-navigation/routers": "^6.1.6",
+ "escape-string-regexp": "^4.0.0",
+ "nanoid": "^3.1.23",
+ "query-string": "^7.1.3",
+ "react-is": "^16.13.0",
+ "use-latest-callback": "^0.1.5"
+ },
+ "peerDependencies": {
+ "react": "*"
+ }
+ },
+ "node_modules/@react-navigation/core/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-navigation/core/node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+ },
+ "node_modules/@react-navigation/elements": {
+ "version": "1.3.13",
+ "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-1.3.13.tgz",
+ "integrity": "sha512-LqqK5s2ZfYHn2cQ376jC5V9dQztLH5ixkkJj9WR7JY2g4SghDd39WJhL3Jillw1Mu3F3b9sZwvAK+QkXhnDeAA==",
+ "peerDependencies": {
+ "@react-navigation/native": "^6.0.0",
+ "react": "*",
+ "react-native": "*",
+ "react-native-safe-area-context": ">= 3.0.0"
+ }
+ },
+ "node_modules/@react-navigation/native": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-6.1.2.tgz",
+ "integrity": "sha512-qLUe0asHofr5EhxKjvUBJ9DrPPmR4535IEwmW3oU4DRb3cLbNysjajJKHL8kcYtqPvn9Bx9QZG2x0PMb2vN23A==",
+ "dependencies": {
+ "@react-navigation/core": "^6.4.6",
+ "escape-string-regexp": "^4.0.0",
+ "fast-deep-equal": "^3.1.3",
+ "nanoid": "^3.1.23"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/@react-navigation/native-stack": {
+ "version": "6.9.8",
+ "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-6.9.8.tgz",
+ "integrity": "sha512-74dje939lflsTXJQwCAdznbJ4B6V8sA5CSzuHwbiogL8B6EVXNa/qliXtB7DBAvzeyWDWT3u+gM2vOYJOeXYhA==",
+ "dependencies": {
+ "@react-navigation/elements": "^1.3.13",
+ "warn-once": "^0.1.0"
+ },
+ "peerDependencies": {
+ "@react-navigation/native": "^6.0.0",
+ "react": "*",
+ "react-native": "*",
+ "react-native-safe-area-context": ">= 3.0.0",
+ "react-native-screens": ">= 3.0.0"
+ }
+ },
+ "node_modules/@react-navigation/native/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-navigation/routers": {
+ "version": "6.1.6",
+ "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-6.1.6.tgz",
+ "integrity": "sha512-Z5DeCW3pUvMafbU9Cjy1qJYC2Bvl8iy3+PfsB0DsAwQ6zZ3WAXW5FTMX4Gb9H+Jg6qHWGbMFFwlYpS3UJ3tlVQ==",
+ "dependencies": {
+ "nanoid": "^3.1.23"
+ }
+ },
"node_modules/@segment/loosely-validate-event": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz",
@@ -4187,6 +4302,20 @@
"@types/node": "*"
}
},
+ "node_modules/@types/hammerjs": {
+ "version": "2.0.41",
+ "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.41.tgz",
+ "integrity": "sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA=="
+ },
+ "node_modules/@types/hoist-non-react-statics": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
+ "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==",
+ "dependencies": {
+ "@types/react": "*",
+ "hoist-non-react-statics": "^3.3.0"
+ }
+ },
"node_modules/@types/istanbul-lib-coverage": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
@@ -4213,6 +4342,31 @@
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.36.tgz",
"integrity": "sha512-V3orv+ggDsWVHP99K3JlwtH20R7J4IhI1Kksgc+64q5VxgfRkQG8Ws3MFm/FZOKDYGy9feGFlZ70/HpCNe9QaA=="
},
+ "node_modules/@types/prop-types": {
+ "version": "15.7.5",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
+ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
+ },
+ "node_modules/@types/react": {
+ "version": "18.0.26",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz",
+ "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==",
+ "dependencies": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@types/scheduler": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
+ },
+ "node_modules/@types/use-sync-external-store": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz",
+ "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA=="
+ },
"node_modules/@types/yargs": {
"version": "15.0.14",
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz",
@@ -4517,6 +4671,29 @@
"node": ">= 4.5.0"
}
},
+ "node_modules/axios": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.2.tgz",
+ "integrity": "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==",
+ "dependencies": {
+ "follow-redirects": "^1.15.0",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
+ "node_modules/axios/node_modules/form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/babel-core": {
"version": "7.0.0-bridge.0",
"resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz",
@@ -5477,6 +5654,12 @@
"node": ">=0.10.0"
}
},
+ "node_modules/core-js": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
+ "integrity": "sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==",
+ "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js."
+ },
"node_modules/core-js-compat": {
"version": "3.22.7",
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.7.tgz",
@@ -5582,6 +5765,11 @@
"isobject": "^3.0.1"
}
},
+ "node_modules/csstype": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
+ "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
+ },
"node_modules/dag-map": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/dag-map/-/dag-map-1.0.2.tgz",
@@ -5617,9 +5805,9 @@
}
},
"node_modules/decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==",
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
"engines": {
"node": ">=0.10"
}
@@ -5812,6 +6000,25 @@
"node": ">= 0.8"
}
},
+ "node_modules/encoding": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
+ "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
+ "dependencies": {
+ "iconv-lite": "^0.6.2"
+ }
+ },
+ "node_modules/encoding/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/end-of-stream": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
@@ -6367,6 +6574,11 @@
"node": ">=0.10.0"
}
},
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+ },
"node_modules/fast-glob": {
"version": "3.2.11",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
@@ -6441,6 +6653,14 @@
"node": ">=8"
}
},
+ "node_modules/filter-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz",
+ "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/finalhandler": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
@@ -6543,6 +6763,25 @@
"node": ">=0.4.0"
}
},
+ "node_modules/follow-redirects": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
+ "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
"node_modules/fontfaceobserver": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz",
@@ -6924,6 +7163,19 @@
"node": ">=8"
}
},
+ "node_modules/hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "dependencies": {
+ "react-is": "^16.7.0"
+ }
+ },
+ "node_modules/hoist-non-react-statics/node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+ },
"node_modules/hosted-git-info": {
"version": "3.0.8",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz",
@@ -7382,6 +7634,24 @@
"node": ">=0.10.0"
}
},
+ "node_modules/isomorphic-fetch": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
+ "integrity": "sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==",
+ "dependencies": {
+ "node-fetch": "^1.0.1",
+ "whatwg-fetch": ">=0.10.0"
+ }
+ },
+ "node_modules/isomorphic-fetch/node_modules/node-fetch": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
+ "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
+ "dependencies": {
+ "encoding": "^0.1.11",
+ "is-stream": "^1.0.1"
+ }
+ },
"node_modules/jest-get-type": {
"version": "26.3.0",
"resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz",
@@ -8966,6 +9236,14 @@
"mkdirp": "bin/cmd.js"
}
},
+ "node_modules/moment": {
+ "version": "2.29.4",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
+ "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -9023,6 +9301,17 @@
"thenify-all": "^1.0.0"
}
},
+ "node_modules/nanoid": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
+ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
"node_modules/nanomatch": {
"version": "1.2.13",
"resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
@@ -9122,6 +9411,17 @@
"node": ">= 6.13.0"
}
},
+ "node_modules/node-git-hooks": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/node-git-hooks/-/node-git-hooks-1.0.7.tgz",
+ "integrity": "sha512-IgIbLXsONu4sfHVaaTxQvVbNfo36ZxqCbzmataI/4hbwqmX2Eth4Vdxw9NvAAeroVuxzzmHqjVlV9TeHb3U2yw==",
+ "bin": {
+ "node-git-hooks": "bin/install.js"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
"node_modules/node-int64": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
@@ -9867,6 +10167,11 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ },
"node_modules/pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
@@ -9892,6 +10197,23 @@
"node": ">=0.6"
}
},
+ "node_modules/query-string": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz",
+ "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==",
+ "dependencies": {
+ "decode-uri-component": "^0.2.2",
+ "filter-obj": "^1.1.0",
+ "split-on-first": "^1.0.0",
+ "strict-uri-encode": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/querystringify": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
@@ -10006,6 +10328,17 @@
"react": "17.0.2"
}
},
+ "node_modules/react-freeze": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.3.tgz",
+ "integrity": "sha512-ZnXwLQnGzrDpHBHiC56TXFXvmolPeMjTn1UOm610M4EXGzbEDR7oOIyS2ZiItgbs6eZc4oU/a0hpk8PrcKvv5g==",
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "react": ">=17.0.0"
+ }
+ },
"node_modules/react-is": {
"version": "17.0.2",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
@@ -10059,6 +10392,25 @@
"react": "17.0.2"
}
},
+ "node_modules/react-native-calendar-picker": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/react-native-calendar-picker/-/react-native-calendar-picker-7.1.3.tgz",
+ "integrity": "sha512-hy+dIfkYCJFSZ4g//wZmba4VCgghmTzPDqWqDsr0OrTokeaoftuOsBCw7yTYy9CSY3VuLKiBhnuaf0nZP7znYA==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "node-git-hooks": "^1.0.1",
+ "prop-types": "^15.6.0",
+ "recyclerlistview": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ },
+ "peerDependencies": {
+ "moment": ">=2.0.0",
+ "react": "*",
+ "react-native": "*"
+ }
+ },
"node_modules/react-native-codegen": {
"version": "0.0.17",
"resolved": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.0.17.tgz",
@@ -10070,11 +10422,49 @@
"nullthrows": "^1.1.1"
}
},
+ "node_modules/react-native-gesture-handler": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.8.0.tgz",
+ "integrity": "sha512-poOSfz/w0IyD6Qwq7aaIRRfEaVTl1ecQFoyiIbpOpfNTjm2B1niY2FLrdVQIOtIOe+K9nH55Qal04nr4jGkHdQ==",
+ "dependencies": {
+ "@egjs/hammerjs": "^2.0.17",
+ "hoist-non-react-statics": "^3.3.0",
+ "invariant": "^2.2.4",
+ "lodash": "^4.17.21",
+ "prop-types": "^15.7.2"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
"node_modules/react-native-gradle-plugin": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.0.6.tgz",
"integrity": "sha512-eIlgtsmDp1jLC24dRn43hB3kEcZVqx6DUQbR0N1ABXGnMEafm9I3V3dUUeD1vh+Dy5WqijSoEwLNUPLgu5zDMg=="
},
+ "node_modules/react-native-safe-area-context": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.2.4.tgz",
+ "integrity": "sha512-OOX+W2G4YYufvryonn6Kw6YnyT8ZThkxPHZBD04NLHaZmicUaaDVII/PZ3M5fD1o5N62+T+8K4bCS5Un2ggvkA==",
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/react-native-screens": {
+ "version": "3.11.1",
+ "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.11.1.tgz",
+ "integrity": "sha512-ziQqVm97tNtovacyHwNmDwJPb8n9CqwsfttXx2p5Hk7wUWemDcPAX0ZJ/nNnGMSq2p2QPhPjjUpr3qKXuES0sQ==",
+ "dependencies": {
+ "react-freeze": "^1.0.0",
+ "warn-once": "^0.1.0"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
"node_modules/react-native-web": {
"version": "0.17.7",
"resolved": "https://registry.npmjs.org/react-native-web/-/react-native-web-0.17.7.tgz",
@@ -10101,6 +10491,49 @@
"asap": "~2.0.6"
}
},
+ "node_modules/react-redux": {
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.5.tgz",
+ "integrity": "sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==",
+ "dependencies": {
+ "@babel/runtime": "^7.12.1",
+ "@types/hoist-non-react-statics": "^3.3.1",
+ "@types/use-sync-external-store": "^0.0.3",
+ "hoist-non-react-statics": "^3.3.2",
+ "react-is": "^18.0.0",
+ "use-sync-external-store": "^1.0.0"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8 || ^17.0 || ^18.0",
+ "@types/react-dom": "^16.8 || ^17.0 || ^18.0",
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0",
+ "react-native": ">=0.59",
+ "redux": "^4"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ },
+ "react-native": {
+ "optional": true
+ },
+ "redux": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/react-redux/node_modules/react-is": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
+ },
"node_modules/react-refresh": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz",
@@ -10167,6 +10600,58 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
"integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
},
+ "node_modules/recyclerlistview": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/recyclerlistview/-/recyclerlistview-3.0.5.tgz",
+ "integrity": "sha512-JVHz13u520faEsbVqFrJOMuJjc4mJlOXODe5QdqAJHdl5/IpyYeo83uiHrpzxyLb8QtJ0889JMlDik+Z1Ed0QQ==",
+ "dependencies": {
+ "lodash.debounce": "4.0.8",
+ "prop-types": "15.5.8",
+ "ts-object-utils": "0.0.5"
+ },
+ "peerDependencies": {
+ "react": ">= 15.2.1",
+ "react-native": ">= 0.30.0"
+ }
+ },
+ "node_modules/recyclerlistview/node_modules/fbjs": {
+ "version": "0.8.18",
+ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.18.tgz",
+ "integrity": "sha512-EQaWFK+fEPSoibjNy8IxUtaFOMXcWsY0JaVrQoZR9zC8N2Ygf9iDITPWjUTVIax95b6I742JFLqASHfsag/vKA==",
+ "dependencies": {
+ "core-js": "^1.0.0",
+ "isomorphic-fetch": "^2.1.1",
+ "loose-envify": "^1.0.0",
+ "object-assign": "^4.1.0",
+ "promise": "^7.1.1",
+ "setimmediate": "^1.0.5",
+ "ua-parser-js": "^0.7.30"
+ }
+ },
+ "node_modules/recyclerlistview/node_modules/prop-types": {
+ "version": "15.5.8",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.5.8.tgz",
+ "integrity": "sha512-QiDx7s0lWoAVxmEmOYnn3rIZGduup2PZgj3rta5O5y0NfPKu3ApWi+GdMfTto7PmO/5+p4yamSLMZkj0jaTL4A==",
+ "dependencies": {
+ "fbjs": "^0.8.9"
+ }
+ },
+ "node_modules/redux": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.0.tgz",
+ "integrity": "sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==",
+ "dependencies": {
+ "@babel/runtime": "^7.9.2"
+ }
+ },
+ "node_modules/redux-thunk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz",
+ "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==",
+ "peerDependencies": {
+ "redux": "^4"
+ }
+ },
"node_modules/regenerate": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
@@ -10978,6 +11463,14 @@
"node": "*"
}
},
+ "node_modules/split-on-first": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz",
+ "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/split-string": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
@@ -11133,6 +11626,14 @@
"node": ">= 0.10.0"
}
},
+ "node_modules/strict-uri-encode": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz",
+ "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@@ -11571,6 +12072,11 @@
"resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
"integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="
},
+ "node_modules/ts-object-utils": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/ts-object-utils/-/ts-object-utils-0.0.5.tgz",
+ "integrity": "sha512-iV0GvHqOmilbIKJsfyfJY9/dNHCs969z3so90dQWsO1eMMozvTpnB1MEaUbb3FYtZTGjv5sIy/xmslEz0Rg2TA=="
+ },
"node_modules/tslib": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
@@ -11819,6 +12325,11 @@
"node": ">=0.10.0"
}
},
+ "node_modules/use-latest-callback": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.1.5.tgz",
+ "integrity": "sha512-HtHatS2U4/h32NlkhupDsPlrbiD27gSH5swBdtXbCAlc6pfOFzaj0FehW/FO12rx8j2Vy4/lJScCiJyM01E+bQ=="
+ },
"node_modules/use-subscription": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.5.1.tgz",
@@ -11830,6 +12341,14 @@
"react": "^16.8.0 || ^17.0.0"
}
},
+ "node_modules/use-sync-external-store": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
+ "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -11886,6 +12405,11 @@
"makeerror": "1.0.12"
}
},
+ "node_modules/warn-once": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/warn-once/-/warn-once-0.1.1.tgz",
+ "integrity": "sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q=="
+ },
"node_modules/wcwidth": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
@@ -13369,6 +13893,14 @@
"to-fast-properties": "^2.0.0"
}
},
+ "@egjs/hammerjs": {
+ "version": "2.0.17",
+ "resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz",
+ "integrity": "sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==",
+ "requires": {
+ "@types/hammerjs": "^2.0.36"
+ }
+ },
"@expo/bunyan": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@expo/bunyan/-/bunyan-4.0.0.tgz",
@@ -15196,6 +15728,72 @@
"resolved": "https://registry.npmjs.org/@react-native/polyfills/-/polyfills-2.0.0.tgz",
"integrity": "sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ=="
},
+ "@react-navigation/core": {
+ "version": "6.4.6",
+ "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-6.4.6.tgz",
+ "integrity": "sha512-6zaAgUT5k4vhJlddUk2l52RZyMkMelHdrRv1cL57ALi2RZzERdgmbiMKhJerxFLn9S8E3PUe8vwxHzjHOZKG4w==",
+ "requires": {
+ "@react-navigation/routers": "^6.1.6",
+ "escape-string-regexp": "^4.0.0",
+ "nanoid": "^3.1.23",
+ "query-string": "^7.1.3",
+ "react-is": "^16.13.0",
+ "use-latest-callback": "^0.1.5"
+ },
+ "dependencies": {
+ "escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
+ },
+ "react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+ }
+ }
+ },
+ "@react-navigation/elements": {
+ "version": "1.3.13",
+ "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-1.3.13.tgz",
+ "integrity": "sha512-LqqK5s2ZfYHn2cQ376jC5V9dQztLH5ixkkJj9WR7JY2g4SghDd39WJhL3Jillw1Mu3F3b9sZwvAK+QkXhnDeAA==",
+ "requires": {}
+ },
+ "@react-navigation/native": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-6.1.2.tgz",
+ "integrity": "sha512-qLUe0asHofr5EhxKjvUBJ9DrPPmR4535IEwmW3oU4DRb3cLbNysjajJKHL8kcYtqPvn9Bx9QZG2x0PMb2vN23A==",
+ "requires": {
+ "@react-navigation/core": "^6.4.6",
+ "escape-string-regexp": "^4.0.0",
+ "fast-deep-equal": "^3.1.3",
+ "nanoid": "^3.1.23"
+ },
+ "dependencies": {
+ "escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
+ }
+ }
+ },
+ "@react-navigation/native-stack": {
+ "version": "6.9.8",
+ "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-6.9.8.tgz",
+ "integrity": "sha512-74dje939lflsTXJQwCAdznbJ4B6V8sA5CSzuHwbiogL8B6EVXNa/qliXtB7DBAvzeyWDWT3u+gM2vOYJOeXYhA==",
+ "requires": {
+ "@react-navigation/elements": "^1.3.13",
+ "warn-once": "^0.1.0"
+ }
+ },
+ "@react-navigation/routers": {
+ "version": "6.1.6",
+ "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-6.1.6.tgz",
+ "integrity": "sha512-Z5DeCW3pUvMafbU9Cjy1qJYC2Bvl8iy3+PfsB0DsAwQ6zZ3WAXW5FTMX4Gb9H+Jg6qHWGbMFFwlYpS3UJ3tlVQ==",
+ "requires": {
+ "nanoid": "^3.1.23"
+ }
+ },
"@segment/loosely-validate-event": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz",
@@ -15231,6 +15829,20 @@
"@types/node": "*"
}
},
+ "@types/hammerjs": {
+ "version": "2.0.41",
+ "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.41.tgz",
+ "integrity": "sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA=="
+ },
+ "@types/hoist-non-react-statics": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
+ "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==",
+ "requires": {
+ "@types/react": "*",
+ "hoist-non-react-statics": "^3.3.0"
+ }
+ },
"@types/istanbul-lib-coverage": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
@@ -15257,6 +15869,31 @@
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.36.tgz",
"integrity": "sha512-V3orv+ggDsWVHP99K3JlwtH20R7J4IhI1Kksgc+64q5VxgfRkQG8Ws3MFm/FZOKDYGy9feGFlZ70/HpCNe9QaA=="
},
+ "@types/prop-types": {
+ "version": "15.7.5",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
+ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
+ },
+ "@types/react": {
+ "version": "18.0.26",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz",
+ "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==",
+ "requires": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "@types/scheduler": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
+ },
+ "@types/use-sync-external-store": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz",
+ "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA=="
+ },
"@types/yargs": {
"version": "15.0.14",
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz",
@@ -15497,6 +16134,28 @@
"resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
},
+ "axios": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.2.tgz",
+ "integrity": "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==",
+ "requires": {
+ "follow-redirects": "^1.15.0",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ },
+ "dependencies": {
+ "form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ }
+ }
+ }
+ },
"babel-core": {
"version": "7.0.0-bridge.0",
"resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz",
@@ -16247,6 +16906,11 @@
"resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
"integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw=="
},
+ "core-js": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
+ "integrity": "sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA=="
+ },
"core-js-compat": {
"version": "3.22.7",
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.7.tgz",
@@ -16334,6 +16998,11 @@
"isobject": "^3.0.1"
}
},
+ "csstype": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
+ "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
+ },
"dag-map": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/dag-map/-/dag-map-1.0.2.tgz",
@@ -16358,9 +17027,9 @@
"integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="
},
"decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og=="
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ=="
},
"deep-extend": {
"version": "0.6.0",
@@ -16502,6 +17171,24 @@
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
},
+ "encoding": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
+ "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
+ "requires": {
+ "iconv-lite": "^0.6.2"
+ },
+ "dependencies": {
+ "iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ }
+ }
+ }
+ },
"end-of-stream": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
@@ -16933,6 +17620,11 @@
}
}
},
+ "fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+ },
"fast-glob": {
"version": "3.2.11",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
@@ -17001,6 +17693,11 @@
"to-regex-range": "^5.0.1"
}
},
+ "filter-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz",
+ "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ=="
+ },
"finalhandler": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
@@ -17085,6 +17782,11 @@
"resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.121.0.tgz",
"integrity": "sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg=="
},
+ "follow-redirects": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
+ "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
+ },
"fontfaceobserver": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz",
@@ -17363,6 +18065,21 @@
"source-map": "^0.7.3"
}
},
+ "hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "requires": {
+ "react-is": "^16.7.0"
+ },
+ "dependencies": {
+ "react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+ }
+ }
+ },
"hosted-git-info": {
"version": "3.0.8",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz",
@@ -17690,6 +18407,26 @@
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
"integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg=="
},
+ "isomorphic-fetch": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
+ "integrity": "sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==",
+ "requires": {
+ "node-fetch": "^1.0.1",
+ "whatwg-fetch": ">=0.10.0"
+ },
+ "dependencies": {
+ "node-fetch": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
+ "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
+ "requires": {
+ "encoding": "^0.1.11",
+ "is-stream": "^1.0.1"
+ }
+ }
+ }
+ },
"jest-get-type": {
"version": "26.3.0",
"resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz",
@@ -18936,6 +19673,11 @@
"minimist": "^1.2.6"
}
},
+ "moment": {
+ "version": "2.29.4",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
+ "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
+ },
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -18986,6 +19728,11 @@
"thenify-all": "^1.0.0"
}
},
+ "nanoid": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
+ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw=="
+ },
"nanomatch": {
"version": "1.2.13",
"resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
@@ -19056,6 +19803,11 @@
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
"integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA=="
},
+ "node-git-hooks": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/node-git-hooks/-/node-git-hooks-1.0.7.tgz",
+ "integrity": "sha512-IgIbLXsONu4sfHVaaTxQvVbNfo36ZxqCbzmataI/4hbwqmX2Eth4Vdxw9NvAAeroVuxzzmHqjVlV9TeHb3U2yw=="
+ },
"node-int64": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
@@ -19606,6 +20358,11 @@
}
}
},
+ "proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ },
"pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
@@ -19625,6 +20382,17 @@
"resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
"integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
},
+ "query-string": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz",
+ "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==",
+ "requires": {
+ "decode-uri-component": "^0.2.2",
+ "filter-obj": "^1.1.0",
+ "split-on-first": "^1.0.0",
+ "strict-uri-encode": "^2.0.0"
+ }
+ },
"querystringify": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
@@ -19698,6 +20466,12 @@
"scheduler": "^0.20.2"
}
},
+ "react-freeze": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.3.tgz",
+ "integrity": "sha512-ZnXwLQnGzrDpHBHiC56TXFXvmolPeMjTn1UOm610M4EXGzbEDR7oOIyS2ZiItgbs6eZc4oU/a0hpk8PrcKvv5g==",
+ "requires": {}
+ },
"react-is": {
"version": "17.0.2",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
@@ -19752,6 +20526,16 @@
}
}
},
+ "react-native-calendar-picker": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/react-native-calendar-picker/-/react-native-calendar-picker-7.1.3.tgz",
+ "integrity": "sha512-hy+dIfkYCJFSZ4g//wZmba4VCgghmTzPDqWqDsr0OrTokeaoftuOsBCw7yTYy9CSY3VuLKiBhnuaf0nZP7znYA==",
+ "requires": {
+ "node-git-hooks": "^1.0.1",
+ "prop-types": "^15.6.0",
+ "recyclerlistview": "^3.0.0"
+ }
+ },
"react-native-codegen": {
"version": "0.0.17",
"resolved": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.0.17.tgz",
@@ -19763,11 +20547,38 @@
"nullthrows": "^1.1.1"
}
},
+ "react-native-gesture-handler": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.8.0.tgz",
+ "integrity": "sha512-poOSfz/w0IyD6Qwq7aaIRRfEaVTl1ecQFoyiIbpOpfNTjm2B1niY2FLrdVQIOtIOe+K9nH55Qal04nr4jGkHdQ==",
+ "requires": {
+ "@egjs/hammerjs": "^2.0.17",
+ "hoist-non-react-statics": "^3.3.0",
+ "invariant": "^2.2.4",
+ "lodash": "^4.17.21",
+ "prop-types": "^15.7.2"
+ }
+ },
"react-native-gradle-plugin": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.0.6.tgz",
"integrity": "sha512-eIlgtsmDp1jLC24dRn43hB3kEcZVqx6DUQbR0N1ABXGnMEafm9I3V3dUUeD1vh+Dy5WqijSoEwLNUPLgu5zDMg=="
},
+ "react-native-safe-area-context": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.2.4.tgz",
+ "integrity": "sha512-OOX+W2G4YYufvryonn6Kw6YnyT8ZThkxPHZBD04NLHaZmicUaaDVII/PZ3M5fD1o5N62+T+8K4bCS5Un2ggvkA==",
+ "requires": {}
+ },
+ "react-native-screens": {
+ "version": "3.11.1",
+ "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.11.1.tgz",
+ "integrity": "sha512-ziQqVm97tNtovacyHwNmDwJPb8n9CqwsfttXx2p5Hk7wUWemDcPAX0ZJ/nNnGMSq2p2QPhPjjUpr3qKXuES0sQ==",
+ "requires": {
+ "react-freeze": "^1.0.0",
+ "warn-once": "^0.1.0"
+ }
+ },
"react-native-web": {
"version": "0.17.7",
"resolved": "https://registry.npmjs.org/react-native-web/-/react-native-web-0.17.7.tgz",
@@ -19782,6 +20593,26 @@
"prop-types": "^15.6.0"
}
},
+ "react-redux": {
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.5.tgz",
+ "integrity": "sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==",
+ "requires": {
+ "@babel/runtime": "^7.12.1",
+ "@types/hoist-non-react-statics": "^3.3.1",
+ "@types/use-sync-external-store": "^0.0.3",
+ "hoist-non-react-statics": "^3.3.2",
+ "react-is": "^18.0.0",
+ "use-sync-external-store": "^1.0.0"
+ },
+ "dependencies": {
+ "react-is": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
+ }
+ }
+ },
"react-refresh": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz",
@@ -19838,6 +20669,54 @@
}
}
},
+ "recyclerlistview": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/recyclerlistview/-/recyclerlistview-3.0.5.tgz",
+ "integrity": "sha512-JVHz13u520faEsbVqFrJOMuJjc4mJlOXODe5QdqAJHdl5/IpyYeo83uiHrpzxyLb8QtJ0889JMlDik+Z1Ed0QQ==",
+ "requires": {
+ "lodash.debounce": "4.0.8",
+ "prop-types": "15.5.8",
+ "ts-object-utils": "0.0.5"
+ },
+ "dependencies": {
+ "fbjs": {
+ "version": "0.8.18",
+ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.18.tgz",
+ "integrity": "sha512-EQaWFK+fEPSoibjNy8IxUtaFOMXcWsY0JaVrQoZR9zC8N2Ygf9iDITPWjUTVIax95b6I742JFLqASHfsag/vKA==",
+ "requires": {
+ "core-js": "^1.0.0",
+ "isomorphic-fetch": "^2.1.1",
+ "loose-envify": "^1.0.0",
+ "object-assign": "^4.1.0",
+ "promise": "^7.1.1",
+ "setimmediate": "^1.0.5",
+ "ua-parser-js": "^0.7.30"
+ }
+ },
+ "prop-types": {
+ "version": "15.5.8",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.5.8.tgz",
+ "integrity": "sha512-QiDx7s0lWoAVxmEmOYnn3rIZGduup2PZgj3rta5O5y0NfPKu3ApWi+GdMfTto7PmO/5+p4yamSLMZkj0jaTL4A==",
+ "requires": {
+ "fbjs": "^0.8.9"
+ }
+ }
+ }
+ },
+ "redux": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.0.tgz",
+ "integrity": "sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==",
+ "requires": {
+ "@babel/runtime": "^7.9.2"
+ }
+ },
+ "redux-thunk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz",
+ "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==",
+ "requires": {}
+ },
"regenerate": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
@@ -20484,6 +21363,11 @@
"through": "2"
}
},
+ "split-on-first": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz",
+ "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw=="
+ },
"split-string": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
@@ -20605,6 +21489,11 @@
"resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz",
"integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ="
},
+ "strict-uri-encode": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz",
+ "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ=="
+ },
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@@ -20934,6 +21823,11 @@
"resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
"integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="
},
+ "ts-object-utils": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/ts-object-utils/-/ts-object-utils-0.0.5.tgz",
+ "integrity": "sha512-iV0GvHqOmilbIKJsfyfJY9/dNHCs969z3so90dQWsO1eMMozvTpnB1MEaUbb3FYtZTGjv5sIy/xmslEz0Rg2TA=="
+ },
"tslib": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
@@ -21115,6 +22009,11 @@
"resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
"integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ=="
},
+ "use-latest-callback": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.1.5.tgz",
+ "integrity": "sha512-HtHatS2U4/h32NlkhupDsPlrbiD27gSH5swBdtXbCAlc6pfOFzaj0FehW/FO12rx8j2Vy4/lJScCiJyM01E+bQ=="
+ },
"use-subscription": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.5.1.tgz",
@@ -21123,6 +22022,12 @@
"object-assign": "^4.1.1"
}
},
+ "use-sync-external-store": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
+ "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==",
+ "requires": {}
+ },
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -21169,6 +22074,11 @@
"makeerror": "1.0.12"
}
},
+ "warn-once": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/warn-once/-/warn-once-0.1.1.tgz",
+ "integrity": "sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q=="
+ },
"wcwidth": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
diff --git a/package.json b/package.json
index 5cf440f..b1cfd98 100644
--- a/package.json
+++ b/package.json
@@ -10,12 +10,23 @@
"eject": "expo eject"
},
"dependencies": {
+ "@react-navigation/native": "^6.1.2",
+ "@react-navigation/native-stack": "^6.9.8",
+ "axios": "^1.2.2",
"expo": "~45.0.0",
"expo-status-bar": "~1.3.0",
+ "moment": "^2.29.4",
"react": "17.0.2",
"react-dom": "17.0.2",
"react-native": "0.68.2",
- "react-native-web": "0.17.7"
+ "react-native-calendar-picker": "^7.1.3",
+ "react-native-gesture-handler": "^2.8.0",
+ "react-native-safe-area-context": "4.2.4",
+ "react-native-screens": "~3.11.1",
+ "react-native-web": "0.17.7",
+ "react-redux": "^8.0.5",
+ "redux": "^4.2.0",
+ "redux-thunk": "^2.4.2"
},
"devDependencies": {
"@babel/core": "^7.12.9"
diff --git a/src/components/button.js b/src/components/button.js
new file mode 100644
index 0000000..3636ed0
--- /dev/null
+++ b/src/components/button.js
@@ -0,0 +1,26 @@
+import React from "react";
+import { TouchableOpacity, Text, StyleSheet } from "react-native";
+import * as COLOR from "../utils/colors";
+
+export function Button(props) {
+ return (
+
+ {props.children}
+
+ )
+}
+
+const styles = StyleSheet.create({
+ container: {
+ width: "100%",
+ height: 45,
+ borderRadius: 10,
+ alignItems:"center",
+ justifyContent: "center",
+ backgroundColor: COLOR.PRIMARY,
+ marginVertical: 10
+ }
+})
\ No newline at end of file
diff --git a/src/components/calendar.js b/src/components/calendar.js
new file mode 100644
index 0000000..a024ce1
--- /dev/null
+++ b/src/components/calendar.js
@@ -0,0 +1,23 @@
+import React from "react";
+import { View, StyleSheet } from "react-native";
+import CalendarPicker from 'react-native-calendar-picker';
+import * as STRINGS from "../utils/strings";
+
+export function CalendarSelector(props) {
+ return
+ {
+ props.onDateChange(day);
+ }}
+ />
+
+}
+
+const styles = StyleSheet.create({
+ container: {
+ marginVertical: 10
+ }
+})
\ No newline at end of file
diff --git a/src/components/index.js b/src/components/index.js
new file mode 100644
index 0000000..f7959e1
--- /dev/null
+++ b/src/components/index.js
@@ -0,0 +1,9 @@
+import { Button } from "./button";
+import { Input } from "./input";
+import { CalendarSelector } from "./calendar";
+
+export {
+ Button,
+ Input,
+ CalendarSelector
+}
\ No newline at end of file
diff --git a/src/components/input.js b/src/components/input.js
new file mode 100644
index 0000000..b17b677
--- /dev/null
+++ b/src/components/input.js
@@ -0,0 +1,34 @@
+import React from "react";
+import { TextInput, StyleSheet, View, Text } from "react-native";
+import * as COLOR from "../utils/colors";
+
+export function Input(props) {
+ return (
+
+ {props.title}
+ props.onChangeText(data)}
+ value={props.value}
+ style={[styles.inputContainer, props.style]} />
+
+ )
+}
+
+const styles = StyleSheet.create({
+ container: {
+ width: "100%",
+ marginVertical: 5
+ },
+ inputContainer: {
+ width: "100%",
+ height: 45,
+ borderRadius: 10,
+ borderWidth: 1,
+ paddingHorizontal: 10
+ },
+ inputTitle: {
+ fontSize: 12
+ }
+})
\ No newline at end of file
diff --git a/src/redux/actions.js b/src/redux/actions.js
new file mode 100644
index 0000000..99d940f
--- /dev/null
+++ b/src/redux/actions.js
@@ -0,0 +1,36 @@
+import { ToastAndroid } from "react-native";
+import { UPDATE_POKEMON_LIST, UPDATE_POKEMON_DATA } from "./types";
+import { getService } from "../services/services";
+import * as STRINGS from "../utils/strings";
+
+export const updatePokemonList = (url) => (dispatch) => {
+ return new Promise((resolve, reject) => {
+ getService(url)
+ .then(response => {
+ dispatch({
+ type: UPDATE_POKEMON_LIST,
+ payload: response
+ })
+ return resolve(response);
+ }).catch(error => {
+ ToastAndroid.show(STRINGS.LIST_FETCH_ERROR, ToastAndroid.BOTTOM, ToastAndroid.CENTER);
+ return reject(error)
+ })
+ })
+}
+
+export const updatePokemonData = (url) => (dispatch) => {
+ return new Promise((resolve, reject) => {
+ getService(url)
+ .then(response => {
+ dispatch({
+ type: UPDATE_POKEMON_DATA,
+ payload: response
+ })
+ return resolve(response);
+ }).catch(error => {
+ ToastAndroid.show(STRINGS.LIST_FETCH_ERROR, ToastAndroid.BOTTOM, ToastAndroid.CENTER);
+ return reject(error)
+ })
+ })
+}
\ No newline at end of file
diff --git a/src/redux/reducer.js b/src/redux/reducer.js
new file mode 100644
index 0000000..9696372
--- /dev/null
+++ b/src/redux/reducer.js
@@ -0,0 +1,17 @@
+import { UPDATE_POKEMON_LIST, UPDATE_POKEMON_DATA } from "./types";
+
+const initialState = {
+ pokemon_list: [],
+ pokemon_details: ""
+}
+
+export default function (state = initialState, action) {
+ switch (action.type) {
+ case UPDATE_POKEMON_LIST:
+ return { ...state, pokemon_list: action.payload };
+ case UPDATE_POKEMON_DATA:
+ return { ...state, pokemon_details: action.payload };
+ default:
+ return state;
+ }
+}
\ No newline at end of file
diff --git a/src/redux/types.js b/src/redux/types.js
new file mode 100644
index 0000000..3e4373b
--- /dev/null
+++ b/src/redux/types.js
@@ -0,0 +1,2 @@
+export const UPDATE_POKEMON_LIST = "UPDATE_POKEMON_LIST";
+export const UPDATE_POKEMON_DATA = "UPDATE_POKEMON_DATA";
\ No newline at end of file
diff --git a/src/screens/catalog/catalogDetails.js b/src/screens/catalog/catalogDetails.js
new file mode 100644
index 0000000..db8f88c
--- /dev/null
+++ b/src/screens/catalog/catalogDetails.js
@@ -0,0 +1,127 @@
+import React, { useEffect, useState } from "react";
+import { View, Text, StyleSheet, FlatList, ActivityIndicator, Dimensions, Image } from "react-native";
+import { Button } from "../../components";
+import * as COLOR from "../../utils/colors";
+import * as STRINGS from "../../utils/strings";
+import { updatePokemonData } from "../../redux/actions";
+import { getPokeImageUrl } from "../../utils/util";
+import { useDispatch, useSelector } from "react-redux";
+const { width } = Dimensions.get("screen");
+
+export default function CatalogDetails(props) {
+ const [loader, setLoader] = useState(true);
+ const [showError, setShowError] = useState(false);
+ const pokeUrl = props.route.params.data;
+ const dispatch = useDispatch();
+ const pokeData = useSelector(state => state.data.pokemon_details);
+ useEffect(() => {
+ serviceInitializer(`${pokeUrl.url}`);
+ }, [])
+ function serviceInitializer(url) {
+ setLoader(true);
+ dispatch(updatePokemonData(url)).then(response => {
+ setLoader(false);
+ }).catch(error => {
+ setLoader(false);
+ setShowError(true);
+ })
+ }
+
+ if (loader) {
+ return
+
+
+ }
+ if (showError) {
+ return
+ {STRINGS.LIST_FETCH_ERROR}
+
+ }
+ return (
+
+
+ {pokeData.name}
+
+
+
+ {pokeData.weight} {STRINGS.KG}
+ {STRINGS.WEIGHT}
+
+
+ {pokeData?.types.map((item, index) => {
+ return {Number(index) + 1 === pokeData?.types.length ? item.type.name : `${item.type.name}/`}
+ })}
+
+
+ {pokeData.height} {STRINGS.M}
+ {STRINGS.HEIGHT}
+
+
+
+
+
+
+
+
+
+
+ )
+}
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ padding: 10,
+ alignItems: "center",
+ justifyContent: "center"
+ },
+ loader_container: {
+ flex: 1,
+ alignItems: "center",
+ justifyContent: "center"
+ },
+ error_text: {
+ textAlign: "center",
+ padding: 10
+ },
+ poke_name: {
+ fontSize: 22,
+ fontWeight: "bold",
+ padding: 10
+ },
+ poke_image: {
+ width: width / 1.5,
+ height: width / 1.5
+ },
+ view_button: {
+ width: "60%",
+ height: 30
+ },
+ button_text: {
+ color: COLOR.WHITE,
+ fontSize: 12
+ },
+ about_info: {
+ width: "100%",
+ backgroundColor: COLOR.WHITE,
+ borderRadius: 10
+ },
+ wh_container: {
+ width: "100%",
+ flexDirection: "row",
+ alignItems: "center",
+ justifyContent: "space-between"
+ },
+ wh_text: {
+ fontSize: 24,
+ padding: 10,
+ color: COLOR.PRIMARY
+ },
+ content_container: {
+ alignItems: "center"
+ },
+ poke_image_small: {
+ width: width / 5,
+ height: width / 5
+ }
+})
\ No newline at end of file
diff --git a/src/screens/catalog/catalogList.js b/src/screens/catalog/catalogList.js
new file mode 100644
index 0000000..97104bc
--- /dev/null
+++ b/src/screens/catalog/catalogList.js
@@ -0,0 +1,123 @@
+import React, { useEffect, useState } from "react";
+import { View, Text, StyleSheet, FlatList, ActivityIndicator, Dimensions, Image } from "react-native";
+import { Button } from "../../components";
+import * as COLOR from "../../utils/colors";
+import * as STRINGS from "../../utils/strings";
+import { updatePokemonList } from "../../redux/actions";
+import { getPokeImageUrl } from "../../utils/util";
+import { useDispatch, useSelector } from "react-redux";
+const { width } = Dimensions.get("screen");
+
+export default function CatalogScreen(props) {
+ const [loader, setLoader] = useState(true);
+ const [showError, setShowError] = useState(false);
+ const dispatch = useDispatch();
+ const pokeList = useSelector(state => state.data.pokemon_list);
+ useEffect(() => {
+ serviceInitializer(`${STRINGS.API}?limit=10`);
+ }, [])
+ function serviceInitializer(url) {
+ setLoader(true);
+ dispatch(updatePokemonList(url)).then(response => {
+ setLoader(false);
+ }).catch(error => {
+ setLoader(false);
+ setShowError(true);
+ })
+ }
+ function renderPokeCard(item) {
+ let url = getPokeImageUrl(item.url);
+ return
+
+ {item.name}
+
+
+ }
+ function renderPagination() {
+ return
+{pokeList.previous != null ? : null}
+ {pokeList.next != null ? : null}
+
+ }
+ if (loader) {
+ return
+
+
+ }
+ if (showError) {
+ return
+ {STRINGS.LIST_FETCH_ERROR}
+
+ }
+ return (
+
+ index}
+ renderItem={({ item }) => renderPokeCard(item)}
+ showsVerticalScrollIndicator={false}
+ ListFooterComponent={() => renderPagination()}
+ numColumns={2} />
+
+ )
+}
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ padding: 10,
+ alignItems: "center",
+ justifyContent: "center"
+ },
+ loader_container: {
+ flex: 1,
+ alignItems: "center",
+ justifyContent: "center"
+ },
+ error_text: {
+ textAlign: "center",
+ padding: 10
+ },
+ poke_card: {
+ width: width / 2.5,
+ backgroundColor: COLOR.WHITE,
+ margin: 5,
+ borderRadius: 10,
+ alignItems: "center",
+ justifyContent: "center"
+ },
+ poke_name: {
+ fontSize: 16,
+ padding: 10
+ },
+ poke_image: {
+ width: 100,
+ height: 100
+ },
+ view_button: {
+ width: "60%",
+ height: 30
+ },
+ button_text: {
+ color: COLOR.WHITE,
+ fontSize: 12
+ },
+ pagination_container: {
+ height: 50,
+ flexDirection: "row",
+ alignItems: "center",
+ justifyContent: "center"
+ },
+ page_button: {
+ width: width / 3.5,
+ height: 35,
+ marginHorizontal: 5,
+ backgroundColor: COLOR.BLUE
+ }
+})
\ No newline at end of file
diff --git a/src/screens/contact/contactScreen.js b/src/screens/contact/contactScreen.js
new file mode 100644
index 0000000..20af882
--- /dev/null
+++ b/src/screens/contact/contactScreen.js
@@ -0,0 +1,161 @@
+import React, { useState } from "react";
+import { View, Text, StyleSheet, ToastAndroid, Modal } from "react-native";
+import moment from "moment";
+import { Input, Button, CalendarSelector } from "../../components";
+import * as STRINGS from "../../utils/strings";
+import * as COLOR from "../../utils/colors";
+import { IsEmpty } from "../../utils/util";
+
+export default function ContactScreen() {
+ const [userName, setUserName] = useState("");
+ const [email, setEmail] = useState("");
+ const [dob, setDob] = useState("");
+ const [showPopup, setShowPopup] = useState(false);
+ const [isCalendarPopup, setIsCalanderPopup] = useState(false);
+
+ function submitForm() {
+ if (IsEmpty(userName) || IsEmpty(email) || IsEmpty(dob)) {
+ return ToastAndroid.show(STRINGS.FIELD_ERROR, ToastAndroid.BOTTOM, ToastAndroid.CENTER);
+ } else if (!STRINGS.EMAIL_VALIDATION.test(email)) {
+ return ToastAndroid.show(STRINGS.EMAIL_ERROR, ToastAndroid.BOTTOM, ToastAndroid.CENTER);
+ } else {
+ setIsCalanderPopup(false);
+ setShowPopup(true)
+ }
+ }
+ function renderCalendarPopup() {
+ return (
+
+ {STRINGS.DOB_TITLE}
+ {
+ setDob(date);
+ setShowPopup(false);
+ }} />
+
+
+ )
+ }
+ function renderFormPopup() {
+ return (
+
+
+ {STRINGS.USER_TITLE}
+
+ {userName}
+ {email}
+ {moment(dob).format("DD-MM-YYYY")}
+
+
+
+
+ )
+ }
+ return (
+
+
+ {
+ if (STRINGS.ALPHABET_ONLY.test(data) && data.length <= 50 || data === "") {
+ setUserName(data)
+ }
+ }}
+ value={userName}
+ />
+ setEmail(data)}
+ value={email}
+ />
+
+ {STRINGS.DOB}
+
+
+
+
+
+ {isCalendarPopup ? renderCalendarPopup() : renderFormPopup()}
+
+
+ )
+}
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ alignItems: "center",
+ justifyContent: "center"
+ },
+ formContainer: {
+ width: "90%"
+ },
+ button_text: {
+ color: COLOR.WHITE,
+ fontSize: 16
+ },
+ calendar_container: {
+ flex: 1,
+ alignItems: "center",
+ justifyContent: "center"
+ },
+ dob_title: {
+ fontSize: 18,
+ textAlign: "center",
+ color: COLOR.PRIMARY
+ },
+ cancel_button: {
+ width: "50%",
+ backgroundColor: COLOR.RED
+ },
+ dob_picker: {
+ backgroundColor: COLOR.TRANSPARENT,
+ borderWidth: 1,
+ alignItems: "flex-start",
+ paddingHorizontal: 10,
+ marginTop: 0
+ },
+ input_title: {
+ fontSize: 12
+ },
+ date_pick_container: {
+ marginVertical: 5
+ },
+ user_details: {
+ width: "80%",
+ alignItems: "center",
+ justifyContent: "center",
+ backgroundColor: COLOR.WHITE,
+ borderRadius: 20
+ },
+ user_text: {
+ fontSize: 16,
+ padding: 5
+ },
+ form_container: {
+ flex: 1,
+ alignItems: "center",
+ justifyContent: "center",
+ backgroundColor: COLOR.TRANSPARENT_BG
+ },
+ form_pop: {
+ width: "80%",
+ backgroundColor: COLOR.WHITE,
+ alignItems: "center",
+ justifyContent: "center",
+ paddingVertical: 20,
+ borderRadius: 20
+ }
+})
\ No newline at end of file
diff --git a/src/screens/dashboard/dashboard.js b/src/screens/dashboard/dashboard.js
new file mode 100644
index 0000000..2a57bdf
--- /dev/null
+++ b/src/screens/dashboard/dashboard.js
@@ -0,0 +1,31 @@
+import React from "react";
+import { View, Text, StyleSheet } from "react-native";
+import { Button } from "../../components";
+import * as COLOR from "../../utils/colors";
+import * as STRINGS from "../../utils/strings";
+
+export default function ContactScreen(props) {
+ return (
+
+
+
+
+ )
+}
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ padding: 10,
+ alignItems:"center",
+ justifyContent:"center"
+ },
+ button_text: {
+ color: COLOR.WHITE,
+ fontSize: 16
+ }
+})
\ No newline at end of file
diff --git a/src/services/services.js b/src/services/services.js
new file mode 100644
index 0000000..b9c7b25
--- /dev/null
+++ b/src/services/services.js
@@ -0,0 +1,17 @@
+import axios from "axios";
+
+export async function getService(url) {
+ return await new Promise((resolve, reject) => {
+ var config = {
+ method: 'get',
+ url: `${url}`
+ };
+ axios(config)
+ .then(function (response) {
+ return resolve(response.data);
+ })
+ .catch(function (error) {
+ return reject(error)
+ });
+ })
+}
\ No newline at end of file
diff --git a/src/utils/colors.js b/src/utils/colors.js
new file mode 100644
index 0000000..87f5f8a
--- /dev/null
+++ b/src/utils/colors.js
@@ -0,0 +1,8 @@
+export const PRIMARY = "#27ae60";
+export const WHITE = "#FFFFFF";
+export const RED = "#e74c3c";
+export const TRANSPARENT = "transparent";
+export const PLACEHOLDER = "#95a5a6";
+export const BLACK = "#000000";
+export const TRANSPARENT_BG = "rgba(44, 62, 80,0.5)";
+export const BLUE = "rgba(41, 128, 185,1.0)";
\ No newline at end of file
diff --git a/src/utils/strings.js b/src/utils/strings.js
new file mode 100644
index 0000000..7cac6b7
--- /dev/null
+++ b/src/utils/strings.js
@@ -0,0 +1,36 @@
+import moment from "moment";
+
+export const CONTACT_US = "Contact Us";
+export const FULL_NAME = "Full Name";
+export const EMAIL = "Email";
+export const DOB = "Date Of Birth";
+export const SUBMIT = "Submit";
+export const FIELD_ERROR = "Fill all fields";
+export const EMAIL_ERROR = "Enter valid email address";
+export const NAME_EXAMPLE = "eg. John";
+export const EMAIL_EXAMPLE = "example@gamil.com";
+export const MIN_DATE = "1960-01-01";
+export const MAX_DATE = moment().format("YYYY-MM-DD");
+export const DOB_TITLE = "Select your Date of birth";
+export const CANCEL = "Cancel";
+export const DOB_EXAMPLE = "00-00-0000";
+export const CLOSE = "Close";
+export const USER_TITLE = "User Details";
+export const VIEW_CATALOG = "View Catalog";
+export const VIEW = "View";
+export const NEXT = "Next";
+export const PREVIOUS = "Previous";
+export const LIST_FETCH_ERROR = "Something went wrong, while fetching Pokemon list. Please try again later.";
+export const LARGE = "large";
+export const WEIGHT = "WEIGHT";
+export const HEIGHT = "HEIGHT";
+export const KG = "KG";
+export const M = "M";
+
+//Validations
+export const ALPHABET_ONLY = /^[a-zA-Z]+$/
+export const EMAIL_VALIDATION = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/
+
+//API Details
+export const API = "https://pokeapi.co/api/v2/pokemon/";
+export const IMG_API = "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/other/home/shiny/";
\ No newline at end of file
diff --git a/src/utils/util.js b/src/utils/util.js
new file mode 100644
index 0000000..5ab0474
--- /dev/null
+++ b/src/utils/util.js
@@ -0,0 +1,11 @@
+import * as STRINGS from "./strings";
+
+export function IsEmpty (value) {
+ return value === undefined || value === null || (typeof value === "object" && Object.keys(value).length === 0 ) || (typeof value === "string" && value.trim().length === 0)
+}
+
+export function getPokeImageUrl(value) {
+ let split_1 = value.split("https://pokeapi.co/api/v2/pokemon/");
+ let split_2 = split_1[1].split("/");
+ return `${STRINGS.IMG_API}${split_2[0]}.png`;
+}
\ No newline at end of file