From 508ad213b7d8dc19b9e059f1fcf259005c7625bd Mon Sep 17 00:00:00 2001 From: jqiu0601 <116924547+jqiu0601@users.noreply.github.com> Date: Sat, 26 Oct 2024 23:25:33 -0400 Subject: [PATCH 1/7] Update AuthNavigator.tsx Added Digit Verification to navigator --- client/app/navigation/AuthNavigator.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/app/navigation/AuthNavigator.tsx b/client/app/navigation/AuthNavigator.tsx index f6c3b1033..57f5f11d2 100644 --- a/client/app/navigation/AuthNavigator.tsx +++ b/client/app/navigation/AuthNavigator.tsx @@ -4,6 +4,7 @@ import * as React from "react"; import LoginScreen from "../screens/auth/LoginScreen"; import SignUpScreen from "../screens/auth/SignUpScreen"; import WelcomeScreen from "../screens/auth/WelcomeScreen"; +import DigitVerificationScreen from "../screens/auth/DigitVerificationScreen"; const Stack = createStackNavigator(); @@ -16,6 +17,7 @@ const AuthNavigator = () => { + ); }; From cc248c3a33cbc22666efbd1159101e936669faf0 Mon Sep 17 00:00:00 2001 From: jqiu0601 <116924547+jqiu0601@users.noreply.github.com> Date: Sat, 26 Oct 2024 23:26:38 -0400 Subject: [PATCH 2/7] Added digit verification screen --- .../screens/auth/DigitVerificationScreen.tsx | 168 ++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 client/app/screens/auth/DigitVerificationScreen.tsx diff --git a/client/app/screens/auth/DigitVerificationScreen.tsx b/client/app/screens/auth/DigitVerificationScreen.tsx new file mode 100644 index 000000000..2398b3c9b --- /dev/null +++ b/client/app/screens/auth/DigitVerificationScreen.tsx @@ -0,0 +1,168 @@ +import React, { useState, useRef } from "react"; +import { + View, + Text, + StyleSheet, + Dimensions, + TouchableWithoutFeedback, + Keyboard, + TextInput, + TouchableOpacity, +} from "react-native"; +import SubmitButton from "../../components/auth/SubmitButton"; + +const DigitVerificationScreen = ({ navigation }: any) => { + const maxCodeLength = 6; + const [code, setCode] = useState(""); + const [errorMessage, setErrorMessage] = useState(""); + const hiddenInputRef = useRef(null); + + const handlePress = () => { + hiddenInputRef.current?.focus(); + }; + + const handleChangeText = (text: string) => { + if (text.length <= maxCodeLength) { + setCode(text); + setErrorMessage(""); + } + }; + + const handleSubmit = () => { + if (!code || code.length < maxCodeLength) { + setErrorMessage("Please enter a complete 6-digit code."); + return; + } + + const validCode = "123456"; // <<<<<< Placeholder for actual verification logic HERE + if (code !== validCode) { + setErrorMessage("The code you entered is incorrect, please try again."); + return; + } + + navigation.navigate("Sign Up"); // <<<<<< Replace with actual navigation target HERE + }; + + return ( + + + + Just one more step! + + Verify your email with the code we just sent you! + + + + + + {Array.from({ length: maxCodeLength }).map((_, index) => ( + + {code[index] || ""} + + ))} + + + + + + + + + + {errorMessage ? ( + {errorMessage} + ) : null} + + {/* REMOVE THIS AFTERWARDS */} + + Try "123456"! + + {/* REMOVE THIS AFTERWARDS */} + + + ); +}; + +const styles = StyleSheet.create({ + main_container: { + display: "flex", + height: "100%", + width: "100%", + justifyContent: "flex-start", + alignItems: "center", + paddingHorizontal: Dimensions.get("window").width * 0.11, + paddingVertical: Dimensions.get("window").height * 0.01, + backgroundColor: "white", + gap: Dimensions.get("window").height * 0.029, + }, + input_container: { + display: "flex", + width: "100%", + justifyContent: "center", + alignItems: "center", + }, + boxContainer: { + flexDirection: "row", + justifyContent: "space-between", + width: "80%", + }, + box: { + width: 40, + height: 50, + borderWidth: 1, + borderColor: "#000", + justifyContent: "center", + alignItems: "center", + borderRadius: 5, + }, + boxText: { + fontSize: 24, + fontWeight: "bold", + }, + hiddenInput: { + position: "absolute", + opacity: 0, + }, + button_container: { + display: "flex", + justifyContent: "space-around", + alignItems: "center", + width: "100%", + }, + header_container: { + display: "flex", + justifyContent: "center", + alignItems: "flex-start", + width: "100%", + marginBottom: Dimensions.get("window").height * 0.019, + marginTop: Dimensions.get("window").height * 0.17, + }, + header_text: { + fontFamily: "Quicksand-Bold", + fontSize: 37, + marginBottom: Dimensions.get("window").height * 0.01, + }, + subheader_text: { + fontFamily: "Quicksand-Medium", + fontSize: 20, + }, + errorText: { + color: "red", + marginTop: 10, + fontSize: 13, + }, +}); + +export default DigitVerificationScreen; \ No newline at end of file From 33286b9d6eb8b6cbc74fc3264b14de862b447560 Mon Sep 17 00:00:00 2001 From: jqiu0601 <116924547+jqiu0601@users.noreply.github.com> Date: Sat, 26 Oct 2024 23:29:59 -0400 Subject: [PATCH 3/7] Update SignUpScreen.tsx Made the Sign Up page's Sign Up button navigate to Digit Verification page --- client/app/screens/auth/SignUpScreen.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/app/screens/auth/SignUpScreen.tsx b/client/app/screens/auth/SignUpScreen.tsx index 82be10b66..e4aa6bb33 100644 --- a/client/app/screens/auth/SignUpScreen.tsx +++ b/client/app/screens/auth/SignUpScreen.tsx @@ -118,7 +118,7 @@ const SignUpScreen = ({ navigation }: any) => { /> - + From 11aeae2c7453be1c8bd9a5334f2f53d0f6d32650 Mon Sep 17 00:00:00 2001 From: jqiu0601 <116924547+jqiu0601@users.noreply.github.com> Date: Sat, 26 Oct 2024 23:31:31 -0400 Subject: [PATCH 4/7] Update DigitVerificationScreen.tsx Changed placeholder code from 123456 -> 111111 --- client/app/screens/auth/DigitVerificationScreen.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/client/app/screens/auth/DigitVerificationScreen.tsx b/client/app/screens/auth/DigitVerificationScreen.tsx index 2398b3c9b..c3501614c 100644 --- a/client/app/screens/auth/DigitVerificationScreen.tsx +++ b/client/app/screens/auth/DigitVerificationScreen.tsx @@ -34,7 +34,7 @@ const DigitVerificationScreen = ({ navigation }: any) => { return; } - const validCode = "123456"; // <<<<<< Placeholder for actual verification logic HERE + const validCode = "111111"; // <<<<<< Placeholder for actual verification code HERE if (code !== validCode) { setErrorMessage("The code you entered is incorrect, please try again."); return; @@ -85,11 +85,11 @@ const DigitVerificationScreen = ({ navigation }: any) => { {errorMessage} ) : null} - {/* REMOVE THIS AFTERWARDS */} + {/* REMOVE THIS AFTERWARDS vv*/} - Try "123456"! + Try "111111"! - {/* REMOVE THIS AFTERWARDS */} + {/* REMOVE THIS AFTERWARDS ^^*/} ); @@ -165,4 +165,4 @@ const styles = StyleSheet.create({ }, }); -export default DigitVerificationScreen; \ No newline at end of file +export default DigitVerificationScreen; From bbf6269eceb1d79778f07ebc3bf3b6e5e60b1ad9 Mon Sep 17 00:00:00 2001 From: jqiu0601 <116924547+jqiu0601@users.noreply.github.com> Date: Sat, 26 Oct 2024 23:33:28 -0400 Subject: [PATCH 5/7] Added submit button Submit button used in Digit Verification page --- client/app/components/auth/SubmitButton.tsx | 32 +++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 client/app/components/auth/SubmitButton.tsx diff --git a/client/app/components/auth/SubmitButton.tsx b/client/app/components/auth/SubmitButton.tsx new file mode 100644 index 000000000..2b613f2d0 --- /dev/null +++ b/client/app/components/auth/SubmitButton.tsx @@ -0,0 +1,32 @@ +import React from "react"; +import { StyleSheet, Text, TouchableOpacity, Dimensions } from "react-native"; + +import { SubmitButtonProps } from "../../types/Props"; + +const SubmitButton: React.FC = ({ onPress }) => { + return ( + + Submit + + ); +}; + +const styles = StyleSheet.create({ + button: { + backgroundColor: "#5dbea3", + width: Dimensions.get("window").width * 0.5, + height: Dimensions.get("window").height * 0.05, + display: "flex", + justifyContent: "center", + alignItems: "center", + borderRadius: 100, + }, + + button_text: { + color: "white", + fontFamily: "Quicksand-Medium", + fontSize: Dimensions.get("window").height * 0.027, + }, +}); + +export default SubmitButton; \ No newline at end of file From 836273f25aa3789c775babc9c01f99d66cb07416 Mon Sep 17 00:00:00 2001 From: Dylan Date: Sun, 27 Oct 2024 12:15:47 -0400 Subject: [PATCH 6/7] Renamed component to email verification screen for clarity and changed back sign up screen text. --- client/app/navigation/AuthNavigator.tsx | 7 +- ...Screen.tsx => EmailVerificationScreen.tsx} | 333 +++++++++--------- client/app/screens/auth/SignUpScreen.tsx | 8 +- 3 files changed, 173 insertions(+), 175 deletions(-) rename client/app/screens/auth/{DigitVerificationScreen.tsx => EmailVerificationScreen.tsx} (91%) diff --git a/client/app/navigation/AuthNavigator.tsx b/client/app/navigation/AuthNavigator.tsx index 57f5f11d2..db1a988ae 100644 --- a/client/app/navigation/AuthNavigator.tsx +++ b/client/app/navigation/AuthNavigator.tsx @@ -4,7 +4,7 @@ import * as React from "react"; import LoginScreen from "../screens/auth/LoginScreen"; import SignUpScreen from "../screens/auth/SignUpScreen"; import WelcomeScreen from "../screens/auth/WelcomeScreen"; -import DigitVerificationScreen from "../screens/auth/DigitVerificationScreen"; +import EmailVerificationScreen from "../screens/auth/EmailVerificationScreen"; const Stack = createStackNavigator(); @@ -17,7 +17,10 @@ const AuthNavigator = () => { - + ); }; diff --git a/client/app/screens/auth/DigitVerificationScreen.tsx b/client/app/screens/auth/EmailVerificationScreen.tsx similarity index 91% rename from client/app/screens/auth/DigitVerificationScreen.tsx rename to client/app/screens/auth/EmailVerificationScreen.tsx index c3501614c..bce9de31f 100644 --- a/client/app/screens/auth/DigitVerificationScreen.tsx +++ b/client/app/screens/auth/EmailVerificationScreen.tsx @@ -1,168 +1,165 @@ -import React, { useState, useRef } from "react"; -import { - View, - Text, - StyleSheet, - Dimensions, - TouchableWithoutFeedback, - Keyboard, - TextInput, - TouchableOpacity, -} from "react-native"; -import SubmitButton from "../../components/auth/SubmitButton"; - -const DigitVerificationScreen = ({ navigation }: any) => { - const maxCodeLength = 6; - const [code, setCode] = useState(""); - const [errorMessage, setErrorMessage] = useState(""); - const hiddenInputRef = useRef(null); - - const handlePress = () => { - hiddenInputRef.current?.focus(); - }; - - const handleChangeText = (text: string) => { - if (text.length <= maxCodeLength) { - setCode(text); - setErrorMessage(""); - } - }; - - const handleSubmit = () => { - if (!code || code.length < maxCodeLength) { - setErrorMessage("Please enter a complete 6-digit code."); - return; - } - - const validCode = "111111"; // <<<<<< Placeholder for actual verification code HERE - if (code !== validCode) { - setErrorMessage("The code you entered is incorrect, please try again."); - return; - } - - navigation.navigate("Sign Up"); // <<<<<< Replace with actual navigation target HERE - }; - - return ( - - - - Just one more step! - - Verify your email with the code we just sent you! - - - - - - {Array.from({ length: maxCodeLength }).map((_, index) => ( - - {code[index] || ""} - - ))} - - - - - - - - - - {errorMessage ? ( - {errorMessage} - ) : null} - - {/* REMOVE THIS AFTERWARDS vv*/} - - Try "111111"! - - {/* REMOVE THIS AFTERWARDS ^^*/} - - - ); -}; - -const styles = StyleSheet.create({ - main_container: { - display: "flex", - height: "100%", - width: "100%", - justifyContent: "flex-start", - alignItems: "center", - paddingHorizontal: Dimensions.get("window").width * 0.11, - paddingVertical: Dimensions.get("window").height * 0.01, - backgroundColor: "white", - gap: Dimensions.get("window").height * 0.029, - }, - input_container: { - display: "flex", - width: "100%", - justifyContent: "center", - alignItems: "center", - }, - boxContainer: { - flexDirection: "row", - justifyContent: "space-between", - width: "80%", - }, - box: { - width: 40, - height: 50, - borderWidth: 1, - borderColor: "#000", - justifyContent: "center", - alignItems: "center", - borderRadius: 5, - }, - boxText: { - fontSize: 24, - fontWeight: "bold", - }, - hiddenInput: { - position: "absolute", - opacity: 0, - }, - button_container: { - display: "flex", - justifyContent: "space-around", - alignItems: "center", - width: "100%", - }, - header_container: { - display: "flex", - justifyContent: "center", - alignItems: "flex-start", - width: "100%", - marginBottom: Dimensions.get("window").height * 0.019, - marginTop: Dimensions.get("window").height * 0.17, - }, - header_text: { - fontFamily: "Quicksand-Bold", - fontSize: 37, - marginBottom: Dimensions.get("window").height * 0.01, - }, - subheader_text: { - fontFamily: "Quicksand-Medium", - fontSize: 20, - }, - errorText: { - color: "red", - marginTop: 10, - fontSize: 13, - }, -}); - -export default DigitVerificationScreen; +import React, { useState, useRef } from "react"; +import { + View, + Text, + StyleSheet, + Dimensions, + TouchableWithoutFeedback, + Keyboard, + TextInput, + TouchableOpacity, +} from "react-native"; +import SubmitButton from "../../components/auth/SubmitButton"; + +const EmailVerificationScreen = ({ navigation }: any) => { + const maxCodeLength = 6; + const [code, setCode] = useState(""); + const [errorMessage, setErrorMessage] = useState(""); + const hiddenInputRef = useRef(null); + + const handlePress = () => { + hiddenInputRef.current?.focus(); + }; + + const handleChangeText = (text: string) => { + if (text.length <= maxCodeLength) { + setCode(text); + setErrorMessage(""); + } + }; + + const handleSubmit = () => { + if (!code || code.length < maxCodeLength) { + setErrorMessage("Please enter a complete 6-digit code."); + return; + } + + const validCode = "111111"; // <<<<<< Placeholder for actual verification code HERE + if (code !== validCode) { + setErrorMessage("The code you entered is incorrect, please try again."); + return; + } + + navigation.navigate("Sign Up"); // <<<<<< Replace with actual navigation target HERE + }; + + return ( + + + + Just one more step! + + Verify your email with the code we just sent you! + + + + + + {Array.from({ length: maxCodeLength }).map((_, index) => ( + + {code[index] || ""} + + ))} + + + + + + + + + + {errorMessage ? ( + {errorMessage} + ) : null} + + {/* REMOVE THIS AFTERWARDS vv*/} + Try "111111"! + {/* REMOVE THIS AFTERWARDS ^^*/} + + + ); +}; + +const styles = StyleSheet.create({ + main_container: { + display: "flex", + height: "100%", + width: "100%", + justifyContent: "flex-start", + alignItems: "center", + paddingHorizontal: Dimensions.get("window").width * 0.11, + paddingVertical: Dimensions.get("window").height * 0.01, + backgroundColor: "white", + gap: Dimensions.get("window").height * 0.029, + }, + input_container: { + display: "flex", + width: "100%", + justifyContent: "center", + alignItems: "center", + }, + boxContainer: { + flexDirection: "row", + justifyContent: "space-between", + width: "80%", + }, + box: { + width: 40, + height: 50, + borderWidth: 1, + borderColor: "#000", + justifyContent: "center", + alignItems: "center", + borderRadius: 5, + }, + boxText: { + fontSize: 24, + fontWeight: "bold", + }, + hiddenInput: { + position: "absolute", + opacity: 0, + }, + button_container: { + display: "flex", + justifyContent: "space-around", + alignItems: "center", + width: "100%", + }, + header_container: { + display: "flex", + justifyContent: "center", + alignItems: "flex-start", + width: "100%", + marginBottom: Dimensions.get("window").height * 0.019, + marginTop: Dimensions.get("window").height * 0.17, + }, + header_text: { + fontFamily: "Quicksand-Bold", + fontSize: 37, + marginBottom: Dimensions.get("window").height * 0.01, + }, + subheader_text: { + fontFamily: "Quicksand-Medium", + fontSize: 20, + }, + errorText: { + color: "red", + marginTop: 10, + fontSize: 13, + }, +}); + +export default EmailVerificationScreen; diff --git a/client/app/screens/auth/SignUpScreen.tsx b/client/app/screens/auth/SignUpScreen.tsx index e4aa6bb33..5828434f0 100644 --- a/client/app/screens/auth/SignUpScreen.tsx +++ b/client/app/screens/auth/SignUpScreen.tsx @@ -10,11 +10,9 @@ import { } from "react-native"; import { ArrowLeftCircle } from "react-native-feather"; -import LargeTextButton from "../../components/auth/LargeTextButton" +import LargeTextButton from "../../components/auth/LargeTextButton"; -import { - ExternalAuthButton, -} from "../../components/auth/AuthButtons"; +import { ExternalAuthButton } from "../../components/auth/AuthButtons"; import { AuthenticationErrorMessage, AuthenticationResponse, @@ -118,7 +116,7 @@ const SignUpScreen = ({ navigation }: any) => { /> - + From ecc4821bdf2b00e4178d9f13f53fa92af9a169b6 Mon Sep 17 00:00:00 2001 From: Dylan Date: Sun, 27 Oct 2024 12:22:07 -0400 Subject: [PATCH 7/7] Updated the pack lock file --- client/package-lock.json | 101 ++++++++++++++++++++++----------------- 1 file changed, 57 insertions(+), 44 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index 080fb7ba6..63544e0e2 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -23,6 +23,7 @@ "expo-linking": "^6.3.1", "expo-location": "^17.0.1", "expo-router": "^3.5.23", + "expo-splash-screen": "~0.27.6", "expo-status-bar": "^1.12.1", "expo-system-ui": "^3.0.7", "pullstate": "^1.25.0", @@ -33,11 +34,13 @@ "react-native-gesture-handler": "~2.16.1", "react-native-safe-area-context": "4.10.5", "react-native-screens": "3.31.1", + "react-native-svg": "^15.7.1", "socket.io-client": "^4.7.5", "typescript": "~5.3.3" }, "devDependencies": { "@types/react": "~18.2.45", + "@types/react-native": "^0.73.0", "eslint": "^8.57.0", "eslint-config-expo": "^7.0.0", "jest": "^29.2.1", @@ -7343,6 +7346,16 @@ "csstype": "^3.0.2" } }, + "node_modules/@types/react-native": { + "version": "0.73.0", + "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.73.0.tgz", + "integrity": "sha512-6ZRPQrYM72qYKGWidEttRe6M5DZBEV5F+MHMHqd4TTYx0tfkcdrUFGdef6CCxY0jXU7wldvd/zA/b0A/kTeJmA==", + "deprecated": "This is a stub types definition. react-native provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "react-native": "*" + } + }, "node_modules/@types/stack-utils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", @@ -8409,8 +8422,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/bplist-creator": { "version": "0.0.7", @@ -9214,7 +9226,6 @@ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "license": "BSD-2-Clause", - "peer": true, "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", @@ -9231,7 +9242,6 @@ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", "license": "MIT", - "peer": true, "dependencies": { "mdn-data": "2.0.14", "source-map": "^0.6.1" @@ -9245,7 +9255,6 @@ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "license": "BSD-2-Clause", - "peer": true, "engines": { "node": ">= 6" }, @@ -9641,7 +9650,6 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "license": "MIT", - "peer": true, "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", @@ -9661,8 +9669,7 @@ "url": "https://github.com/sponsors/fb55" } ], - "license": "BSD-2-Clause", - "peer": true + "license": "BSD-2-Clause" }, "node_modules/domexception": { "version": "4.0.0", @@ -9691,7 +9698,6 @@ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "license": "BSD-2-Clause", - "peer": true, "dependencies": { "domelementtype": "^2.3.0" }, @@ -9707,7 +9713,6 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "license": "BSD-2-Clause", - "peer": true, "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", @@ -11045,6 +11050,32 @@ } } }, + "node_modules/expo-router/node_modules/@expo/prebuild-config": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-7.0.6.tgz", + "integrity": "sha512-Hts+iGBaG6OQ+N8IEMMgwQElzJeSTb7iUJ26xADEHkaexsucAK+V52dM8M4ceicvbZR9q8M+ebJEGj0MCNA3dQ==", + "dependencies": { + "@expo/config": "~9.0.0-beta.0", + "@expo/config-plugins": "~8.0.0-beta.0", + "@expo/config-types": "^51.0.0-unreleased", + "@expo/image-utils": "^0.5.0", + "@expo/json-file": "^8.3.0", + "@react-native/normalize-colors": "0.74.84", + "debug": "^4.3.1", + "fs-extra": "^9.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.6.0", + "xml2js": "0.6.0" + }, + "peerDependencies": { + "expo-modules-autolinking": ">=0.8.1" + } + }, + "node_modules/expo-router/node_modules/@react-native/normalize-colors": { + "version": "0.74.84", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.74.84.tgz", + "integrity": "sha512-Y5W6x8cC5RuakUcTVUFNAIhUZ/tYpuqHZlRBoAuakrTwVuoNHXfQki8lj1KsYU7rW6e3VWgdEx33AfOQpdNp6A==" + }, "node_modules/expo-router/node_modules/@react-navigation/bottom-tabs": { "version": "6.5.20", "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-6.5.20.tgz", @@ -11062,7 +11093,7 @@ "react-native-screens": ">= 3.0.0" } }, - "node_modules/expo-splash-screen": { + "node_modules/expo-router/node_modules/expo-splash-screen": { "version": "0.27.5", "resolved": "https://registry.npmjs.org/expo-splash-screen/-/expo-splash-screen-0.27.5.tgz", "integrity": "sha512-9rdZuLkFCfgJBxrheUsOEOIW6Rp+9NVlpSE0hgXQwbTCLTncf00IHSE8/L2NbFyeDLNjof1yZBppaV7tXHRUzA==", @@ -11073,33 +11104,7 @@ "expo": "*" } }, - "node_modules/expo-splash-screen/node_modules/@expo/prebuild-config": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-7.0.6.tgz", - "integrity": "sha512-Hts+iGBaG6OQ+N8IEMMgwQElzJeSTb7iUJ26xADEHkaexsucAK+V52dM8M4ceicvbZR9q8M+ebJEGj0MCNA3dQ==", - "dependencies": { - "@expo/config": "~9.0.0-beta.0", - "@expo/config-plugins": "~8.0.0-beta.0", - "@expo/config-types": "^51.0.0-unreleased", - "@expo/image-utils": "^0.5.0", - "@expo/json-file": "^8.3.0", - "@react-native/normalize-colors": "0.74.84", - "debug": "^4.3.1", - "fs-extra": "^9.0.0", - "resolve-from": "^5.0.0", - "semver": "^7.6.0", - "xml2js": "0.6.0" - }, - "peerDependencies": { - "expo-modules-autolinking": ">=0.8.1" - } - }, - "node_modules/expo-splash-screen/node_modules/@react-native/normalize-colors": { - "version": "0.74.84", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.74.84.tgz", - "integrity": "sha512-Y5W6x8cC5RuakUcTVUFNAIhUZ/tYpuqHZlRBoAuakrTwVuoNHXfQki8lj1KsYU7rW6e3VWgdEx33AfOQpdNp6A==" - }, - "node_modules/expo-splash-screen/node_modules/fs-extra": { + "node_modules/expo-router/node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", @@ -11113,7 +11118,7 @@ "node": ">=10" } }, - "node_modules/expo-splash-screen/node_modules/semver": { + "node_modules/expo-router/node_modules/semver": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", @@ -11124,7 +11129,7 @@ "node": ">=10" } }, - "node_modules/expo-splash-screen/node_modules/universalify": { + "node_modules/expo-router/node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", @@ -11132,6 +11137,17 @@ "node": ">= 10.0.0" } }, + "node_modules/expo-splash-screen": { + "version": "0.27.6", + "resolved": "https://registry.npmjs.org/expo-splash-screen/-/expo-splash-screen-0.27.6.tgz", + "integrity": "sha512-joUwZQS48k3VMnucQ0Y8Dle1t1FyIvluQA4kjuPx2x7l2dRrfctbo34ahTnC0p1o2go5oN2iEnSTOElY4wRQHw==", + "dependencies": { + "@expo/prebuild-config": "7.0.8" + }, + "peerDependencies": { + "expo": "*" + } + }, "node_modules/expo-status-bar": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-1.12.1.tgz", @@ -15775,8 +15791,7 @@ "version": "2.0.14", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "license": "CC0-1.0", - "peer": true + "license": "CC0-1.0" }, "node_modules/memoize-one": { "version": "5.2.1", @@ -16612,7 +16627,6 @@ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "license": "BSD-2-Clause", - "peer": true, "dependencies": { "boolbase": "^1.0.0" }, @@ -17697,7 +17711,6 @@ "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.7.1.tgz", "integrity": "sha512-Xc11L4t6/DtmUwrQqHR7S45Qy3cIWpcfGlmEatVeZ9c1N8eAK79heJmGRgCOVrXESrrLEHfP/AYGf0BGyrvV6A==", "license": "MIT", - "peer": true, "dependencies": { "css-select": "^5.1.0", "css-tree": "^1.1.3",