diff --git a/SpashScreen/Splash.tsx b/SpashScreen/Splash.tsx
new file mode 100644
index 00000000..596a3109
--- /dev/null
+++ b/SpashScreen/Splash.tsx
@@ -0,0 +1,56 @@
+import Loading from "@/app/spinner/Loading";
+import { Image, StyleSheet, Text, View } from "react-native";
+
+
+
+export default function SplashScreen(){
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+ Medica
+
+
+
+
+
+
+
+
+
+ >
+ )
+}
+
+const styles = StyleSheet.create({
+ container:{
+flex:1,
+justifyContent:'center',
+alignItems:'center',
+backgroundColor:'#ffff'
+ },
+ splash:{
+ flex:1,
+ flexDirection:'row',
+ justifyContent:'center',
+ alignItems:'center',
+ backgroundColor:'white',
+ gap:20,
+ width:'100%'
+ },
+ text:{
+ fontSize:30
+ },
+ spin:{
+ position:'absolute',
+ bottom: 50
+
+ }
+})
\ No newline at end of file
diff --git a/app/(app)/HomeScreen.tsx b/app/(app)/HomeScreen.tsx
index bc05ccd2..3776b9b8 100644
--- a/app/(app)/HomeScreen.tsx
+++ b/app/(app)/HomeScreen.tsx
@@ -1,5 +1,62 @@
-interface Props {}
+import { Image, ScrollView, StyleSheet, Text, View } from "react-native";
+import Typography from "@/constants/Typography";
+import Colors from "@/constants/Colors";
-export default function HomeScreen({}: Props) {
- return <>>;
+
+export default function HomeScreen(){
+ return (
+ <>
+
+
+
+
+
+
+
+Welcome to Medica! 👋
+The best online doctor appointment & consultation app of the century for your health and medical needs!
+
+
+
+
+
+ >
+ )
}
+
+const styles = StyleSheet.create({
+ container:{
+flex:1,
+justifyContent:'center',
+alignItems:'center',
+backgroundColor:'#ffff',
+paddingTop:50,
+paddingBottom:70
+ },
+
+ text:{
+ fontSize:40,
+ textAlign:'center',
+ paddingLeft:30,
+paddingRight:30,
+color:'#236bfd',
+fontFamily:'Bold',
+ },
+ description:{
+textAlign:'center',
+lineHeight:25,
+paddingBottom:30,
+paddingTop:20,
+fontFamily:'Regular',
+color:Colors.light.text,
+fontSize:17
+ },
+ image:{
+ // width: '100%',
+ objectFit:'cover',
+ height:'70%'
+ },
+ imagex:{
+ height:'100%'
+ }
+})
diff --git a/app/(auth)/CreateNewPassword.tsx b/app/(auth)/CreateNewPassword.tsx
new file mode 100644
index 00000000..0a2dac08
--- /dev/null
+++ b/app/(auth)/CreateNewPassword.tsx
@@ -0,0 +1,166 @@
+import React, { useState } from 'react';
+import { Image, StyleSheet, Text, TextInput, View, TouchableOpacity, ScrollView, Alert } from 'react-native';
+import { FontAwesome } from '@expo/vector-icons'; // Import FontAwesome icons
+import Colors from '@/constants/Colors';
+
+export default function CreateNewPassword() {
+ const [password, setPassword] = useState('');
+ const [confirmPassword, setConfirmPassword] = useState('');
+ const [showPassword, setShowPassword] = useState(false);
+ const [showConfirmPassword, setShowConfirmPassword] = useState(false);
+ const [rememberMe, setRememberMe] = useState(false);
+
+ const toggleShowPassword = () => {
+ setShowPassword(!showPassword);
+ };
+
+ const toggleShowConfirmPassword = () => {
+ setShowConfirmPassword(!showConfirmPassword);
+ };
+
+ const handleCreatePassword = () => {
+ if (password !== confirmPassword) {
+ Alert.alert('Error', 'Passwords do not match.');
+ return;
+ }
+
+ // Your password creation logic here
+
+ if (rememberMe) {
+ // Save user's preference to remember password
+ }
+ };
+
+ return (
+
+
+
+
+
+
+ Create new password
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ setRememberMe(!rememberMe)} style={styles.checkbox}>
+ {rememberMe && }
+ {!rememberMe && }
+ Remember Me
+
+
+
+
+ Continue
+
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ scrollViewContent: {
+ flexGrow: 1,
+ justifyContent: 'center',
+ },
+ container: {
+ flex: 1,
+ justifyContent: 'center',
+ backgroundColor: '#fff',
+ paddingBottom: 70,
+ },
+ description: {
+ paddingLeft: 25,
+ paddingTop: 20,
+ fontFamily: 'Regular',
+ color: Colors.light.text,
+ fontSize: 17,
+ },
+ image: {
+ width: '100%',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ inputContainer: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ marginBottom: 20,
+ },
+ input: {
+ flex: 1,
+ borderRadius: 15,
+ borderWidth: 0,
+ backgroundColor: '#EEEEEE',
+ padding: 12,
+ paddingLeft: 40,
+ },
+ toggleButton: {
+ position: 'absolute',
+ right: 10,
+ padding: 10,
+ },
+ togglelock: {
+ position: 'absolute',
+ left: 10,
+ zIndex: 1,
+ padding: 10,
+ },
+ checkboxContainer: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'center',
+ marginBottom: 20,
+ },
+ checkbox: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ },
+ checkboxLabel: {
+ marginLeft: 10,
+ fontSize: 16,
+ },
+ createButton: {
+ backgroundColor: '#236bfd',
+ paddingVertical: 15,
+ paddingHorizontal: 30,
+ borderRadius: 50,
+ width: '100%',
+ alignSelf: 'center',
+ },
+ createButtonText: {
+ color: 'white',
+ fontSize: 16,
+ textAlign: 'center',
+ },
+ inputText: {
+ padding: 20,
+ },
+});
diff --git a/app/(auth)/_layout.tsx b/app/(auth)/_layout.tsx
index e259d043..275a76d0 100644
--- a/app/(auth)/_layout.tsx
+++ b/app/(auth)/_layout.tsx
@@ -13,5 +13,6 @@ export default function AuthLayout() {
}}
/>
+
);
}
diff --git a/app/Onboading/OnboardingScreen.tsx b/app/Onboading/OnboardingScreen.tsx
new file mode 100644
index 00000000..df64dcab
--- /dev/null
+++ b/app/Onboading/OnboardingScreen.tsx
@@ -0,0 +1,61 @@
+import { Image, ScrollView, StyleSheet, Text, View } from "react-native";
+import Typography from "@/constants/Typography";
+import Colors from "@/constants/Colors";
+
+
+export default function OnboardingScreen(){
+ return (
+ <>
+
+ OnboardingScreen
+
+ >
+ )
+}
+
+const styles = StyleSheet.create({
+ container:{
+flex:1,
+justifyContent:'center',
+alignItems:'center',
+backgroundColor:'#ffff',
+// paddingTop:80
+ },
+ splash:{
+ flex:1,
+
+ justifyContent:'center',
+ alignItems:'center',
+backgroundColor:'white',
+gap:20,
+width:'100%',
+resizeMode:'cover',
+
+
+ },
+ text:{
+ fontSize:40,
+ textAlign:'center',
+ paddingLeft:30,
+paddingRight:30,
+color:'#236bfd',
+fontFamily:'Bold',
+ },
+ textx:{
+textAlign:'center',
+lineHeight:25,
+paddingBottom:30,
+paddingTop:20,
+fontFamily:'Regular',
+color:Colors.light.text,
+fontSize:17
+ },
+ image:{
+ // width: '100%',
+ objectFit:'cover',
+ height:'70%'
+ },
+ imagex:{
+ height:'100%'
+ }
+})
diff --git a/app/_layout.tsx b/app/_layout.tsx
index c9f2bd5d..ae6f559d 100644
--- a/app/_layout.tsx
+++ b/app/_layout.tsx
@@ -12,16 +12,15 @@ import { ThemeType } from "@/constants/Types";
import { Text } from "@/components/Themed";
export {
- // Catch any errors thrown by the Layout component.
+
ErrorBoundary,
} from "expo-router";
export const unstable_settings = {
- // Ensure that reloading on `/modal` keeps a back button present.
+
initialRouteName: "(auth)",
};
-// Prevent the splash screen from auto-hiding before asset loading is complete.
SplashScreen.preventAutoHideAsync();
export default function RootLayout() {
@@ -84,6 +83,7 @@ function RootLayoutNav() {
<>
+
>
diff --git a/app/index.tsx b/app/index.tsx
index 7143950c..cade8ec1 100644
--- a/app/index.tsx
+++ b/app/index.tsx
@@ -1,17 +1,45 @@
-import { Text } from "@/components/Themed";
-import { router } from "expo-router";
-import { useEffect } from "react";
+import { StatusBar } from 'expo-status-bar';
+import { StyleSheet, Text, View } from 'react-native';
+import HomeScreen from './(app)/HomeScreen';
+import SplashScreen from '@/SpashScreen/Splash';
+import { useEffect, useState } from 'react';
+import OnboardingScreen from './Onboading/OnboardingScreen';
+import CreateNewPassword from './(auth)/CreateNewPassword';
+
+export default function App() {
+ const [showSplash, setShowSplash] = useState(true);
+ const [showHome, setShowHome] = useState(false);
+ const [showOnboarding, setShowOnboarding] = useState(false);
+
+ useEffect(() => {
+
+ const splashTimeout = setTimeout(() => {
+ setShowSplash(false);
+ setShowHome(true);
+ }, 3000);
+
+
+ return () => clearTimeout(splashTimeout);
+ }, []);
-export default function Index() {
useEffect(() => {
- setTimeout(() => {
- router.push("/(auth)/SignIn&SignOut/SetYourFingerPrint");
- }, 2000);
- });
+ if (showHome) {
+
+ const homeTimeout = setTimeout(() => {
+ setShowHome(false);
+ setShowOnboarding(true);
+ }, 5000);
+
+
+ return () => clearTimeout(homeTimeout);
+ }
+ }, [showHome]);
return (
<>
- Onboarding Screen
+ {showSplash && }
+ {showHome && }
+ {showOnboarding && }
>
);
}
diff --git a/app/spinner/Loading.tsx b/app/spinner/Loading.tsx
new file mode 100644
index 00000000..86d96ce3
--- /dev/null
+++ b/app/spinner/Loading.tsx
@@ -0,0 +1,40 @@
+import React from 'react';
+import { StyleSheet, View} from 'react-native';
+// import { ActivityIndicator,MD2Colors } from 'react-native-paper';
+
+import {
+ BallIndicator,
+ BarIndicator,
+ DotIndicator,
+ MaterialIndicator,
+ PacmanIndicator,
+ PulseIndicator,
+ SkypeIndicator,
+ UIActivityIndicator,
+ WaveIndicator,
+} from 'react-native-indicators';
+
+const Loading = () => (
+
+
+
+
+
+);
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ justifyContent: 'center',
+ },
+ horizontal: {
+ flexDirection: 'row',
+ justifyContent: 'space-around',
+ padding: 10,
+ },
+ spiner:{
+fontSize:30
+ }
+});
+
+export default Loading;
\ No newline at end of file
diff --git a/assets/icons/Exclude.png b/assets/icons/Exclude.png
new file mode 100644
index 00000000..28ed612f
Binary files /dev/null and b/assets/icons/Exclude.png differ
diff --git a/assets/images/Group.png b/assets/images/Group.png
new file mode 100644
index 00000000..99fb8a3a
Binary files /dev/null and b/assets/images/Group.png differ
diff --git a/assets/images/create.png b/assets/images/create.png
new file mode 100644
index 00000000..46bba8b6
Binary files /dev/null and b/assets/images/create.png differ
diff --git a/assets/images/icon.png b/assets/images/icon.png
index a0b1526f..3497038b 100644
Binary files a/assets/images/icon.png and b/assets/images/icon.png differ
diff --git a/package-lock.json b/package-lock.json
index 3b5e8e95..c2c245ba 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -23,6 +23,8 @@
"react": "18.2.0",
"react-dom": "18.2.0",
"react-native": "0.73.6",
+ "react-native-elements": "^3.4.3",
+ "react-native-indicators": "^0.17.0",
"react-native-safe-area-context": "4.8.2",
"react-native-screens": "~3.29.0",
"react-native-svg": "^15.2.0",
@@ -32,13 +34,15 @@
"@babel/core": "^7.20.0",
"@eslint/js": "^9.1.1",
"@types/react": "~18.2.45",
+ "@types/react-native-indicators": "^0.16.6",
"eslint": "^8.57.0",
"eslint-plugin-react": "^7.34.1",
"globals": "^15.1.0",
"jest": "^29.2.1",
"jest-expo": "~50.0.4",
"react-test-renderer": "18.2.0",
- "typescript": "^5.1.3"
+ "typescript": "^5.1.3",
+ "typescript-eslint": "^7.8.0"
}
},
"node_modules/@ampproject/remapping": {
@@ -7393,19 +7397,44 @@
"node_modules/@types/prop-types": {
"version": "15.7.12",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz",
- "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==",
- "dev": true
+ "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q=="
},
"node_modules/@types/react": {
"version": "18.2.79",
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.79.tgz",
"integrity": "sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w==",
- "dev": true,
"dependencies": {
"@types/prop-types": "*",
"csstype": "^3.0.2"
}
},
+ "node_modules/@types/react-native": {
+ "version": "0.70.19",
+ "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.70.19.tgz",
+ "integrity": "sha512-c6WbyCgWTBgKKMESj/8b4w+zWcZSsCforson7UdXtXMecG3MxCinYi6ihhrHVPyUrVzORsvEzK8zg32z4pK6Sg==",
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
+ "node_modules/@types/react-native-indicators": {
+ "version": "0.16.6",
+ "resolved": "https://registry.npmjs.org/@types/react-native-indicators/-/react-native-indicators-0.16.6.tgz",
+ "integrity": "sha512-m3H8cCX67zk7alEEdKdv+kYPzOHSCOiU+Brw04sXFBflw9R2HUM7IJnsM6lu96Lm7b8wyyW016ZsmzIHoQO3iQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/@types/react-native-vector-icons": {
+ "version": "6.4.18",
+ "resolved": "https://registry.npmjs.org/@types/react-native-vector-icons/-/react-native-vector-icons-6.4.18.tgz",
+ "integrity": "sha512-YGlNWb+k5laTBHd7+uZowB9DpIK3SXUneZqAiKQaj1jnJCZM0x71GDim5JCTMi4IFkhc9m8H/Gm28T5BjyivUw==",
+ "dependencies": {
+ "@types/react": "*",
+ "@types/react-native": "^0.70"
+ }
+ },
"node_modules/@types/semver": {
"version": "7.5.8",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
@@ -9672,8 +9701,7 @@
"node_modules/csstype": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
- "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
- "dev": true
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
},
"node_modules/dag-map": {
"version": "1.0.2",
@@ -11985,6 +12013,14 @@
"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/hosted-git-info": {
"version": "3.0.8",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz",
@@ -15539,6 +15575,11 @@
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
"integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
},
+ "node_modules/lodash.isequal": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+ "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="
+ },
"node_modules/lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
@@ -16920,6 +16961,14 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/opencollective-postinstall": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz",
+ "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==",
+ "bin": {
+ "opencollective-postinstall": "index.js"
+ }
+ },
"node_modules/optionator": {
"version": "0.9.4",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
@@ -17762,6 +17811,35 @@
"react": "18.2.0"
}
},
+ "node_modules/react-native-elements": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/react-native-elements/-/react-native-elements-3.4.3.tgz",
+ "integrity": "sha512-VtZc25EecPZyUBER85zFK9ZbY6kkUdcm1ZwJ9hdoGSCr1R/GFgxor4jngOcSYeMvQ+qimd5No44OVJW3rSJECA==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "@types/react-native-vector-icons": "^6.4.6",
+ "color": "^3.1.2",
+ "deepmerge": "^4.2.2",
+ "hoist-non-react-statics": "^3.3.2",
+ "lodash.isequal": "^4.5.0",
+ "opencollective-postinstall": "^2.0.3",
+ "react-native-ratings": "8.0.4",
+ "react-native-size-matters": "^0.3.1"
+ },
+ "peerDependencies": {
+ "react-native-safe-area-context": ">= 3.0.0",
+ "react-native-vector-icons": ">7.0.0"
+ }
+ },
+ "node_modules/react-native-elements/node_modules/color": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz",
+ "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==",
+ "dependencies": {
+ "color-convert": "^1.9.3",
+ "color-string": "^1.6.0"
+ }
+ },
"node_modules/react-native-helmet-async": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/react-native-helmet-async/-/react-native-helmet-async-2.0.4.tgz",
@@ -17775,6 +17853,30 @@
"react": "^16.6.0 || ^17.0.0 || ^18.0.0"
}
},
+ "node_modules/react-native-indicators": {
+ "version": "0.17.0",
+ "resolved": "https://registry.npmjs.org/react-native-indicators/-/react-native-indicators-0.17.0.tgz",
+ "integrity": "sha512-s23em477GHGxWeGczWrixScAZD6tQU4mx1fttlrwhEGKOxhBgp55Kh3RoD9Wj4yna4e5W35xQNoPqoJAT6QW5A==",
+ "dependencies": {
+ "prop-types": "^15.5.10"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/react-native-ratings": {
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/react-native-ratings/-/react-native-ratings-8.0.4.tgz",
+ "integrity": "sha512-Xczu5lskIIRD6BEdz9A0jDRpEck/SFxRqiglkXi0u67yAtI1/pcJC76P4MukCbT8K4BPVl+42w83YqXBoBRl7A==",
+ "dependencies": {
+ "lodash": "^4.17.15"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
"node_modules/react-native-safe-area-context": {
"version": "4.8.2",
"resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.8.2.tgz",
@@ -17797,6 +17899,14 @@
"react-native": "*"
}
},
+ "node_modules/react-native-size-matters": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/react-native-size-matters/-/react-native-size-matters-0.3.1.tgz",
+ "integrity": "sha512-mKOfBLIBFBcs9br1rlZDvxD5+mAl8Gfr5CounwJtxI6Z82rGrMO+Kgl9EIg3RMVf3G855a85YVqHJL2f5EDRlw==",
+ "peerDependencies": {
+ "react-native": "*"
+ }
+ },
"node_modules/react-native-svg": {
"version": "15.2.0",
"resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.2.0.tgz",
@@ -17810,6 +17920,60 @@
"react-native": "*"
}
},
+ "node_modules/react-native-vector-icons": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-10.1.0.tgz",
+ "integrity": "sha512-fdQjCHIdoXmRoTZ5gvN1FmT4sGLQ2wmQiNZHKJQUYnE2tkIwjGnxNch+6Nd4lHAACvMWO7LOzBNot2u/zlOmkw==",
+ "peer": true,
+ "dependencies": {
+ "prop-types": "^15.7.2",
+ "yargs": "^16.1.1"
+ },
+ "bin": {
+ "fa-upgrade.sh": "bin/fa-upgrade.sh",
+ "fa5-upgrade": "bin/fa5-upgrade.sh",
+ "fa6-upgrade": "bin/fa6-upgrade.sh",
+ "generate-icon": "bin/generate-icon.js"
+ }
+ },
+ "node_modules/react-native-vector-icons/node_modules/cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "peer": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "node_modules/react-native-vector-icons/node_modules/yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "peer": true,
+ "dependencies": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/react-native-vector-icons/node_modules/yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/react-native-web": {
"version": "0.19.11",
"resolved": "https://registry.npmjs.org/react-native-web/-/react-native-web-0.19.11.tgz",
diff --git a/package.json b/package.json
index 9ef05d07..5d8674e6 100644
--- a/package.json
+++ b/package.json
@@ -10,7 +10,7 @@
"test": "jest",
"test:watch": "jest --watchAll",
"test:update": "jest --updateSnapshot",
- "ci-start": "expo build:web"
+ "ci-start": "expo build:web"
},
"jest": {
"preset": "jest-expo"
@@ -20,8 +20,10 @@
"@react-navigation/native": "^6.0.2",
"expo": "~50.0.14",
"expo-font": "~11.10.3",
+ "expo-linear-gradient": "~12.7.2",
"expo-linking": "~6.2.2",
"expo-router": "~3.4.10",
+ "expo-secure-store": "~12.8.1",
"expo-splash-screen": "~0.26.5",
"expo-status-bar": "~1.11.1",
"expo-system-ui": "~2.9.3",
@@ -29,17 +31,18 @@
"react": "18.2.0",
"react-dom": "18.2.0",
"react-native": "0.73.6",
+ "react-native-elements": "^3.4.3",
+ "react-native-indicators": "^0.17.0",
"react-native-safe-area-context": "4.8.2",
"react-native-screens": "~3.29.0",
"react-native-svg": "^15.2.0",
- "react-native-web": "~0.19.6",
- "expo-linear-gradient": "~12.7.2",
- "expo-secure-store": "~12.8.1"
+ "react-native-web": "~0.19.6"
},
"devDependencies": {
"@babel/core": "^7.20.0",
"@eslint/js": "^9.1.1",
"@types/react": "~18.2.45",
+ "@types/react-native-indicators": "^0.16.6",
"eslint": "^8.57.0",
"eslint-plugin-react": "^7.34.1",
"globals": "^15.1.0",