diff --git a/COMMIT_EDITMSG b/COMMIT_EDITMSG new file mode 100644 index 00000000..81fec706 --- /dev/null +++ b/COMMIT_EDITMSG @@ -0,0 +1,36 @@ +ft (HomeScreen): Add Home Screen component + +# Please enter the commit message for your changes. Lines starting +# with '#' will be ignored, and an empty message aborts the commit. +# +# On branch ft-home-screen +# Changes to be committed: +# new file: app/(app)/ActionMenu/HomeScreen.tsx +# modified: app/(app)/_layout.tsx +# modified: app/index.tsx +# new file: assets/icons/AppointmentSvg.ts +# new file: assets/icons/ArticleSvg.ts +# new file: assets/icons/HistorySvg.ts +# new file: assets/icons/HomeSvg.ts +# new file: assets/icons/ProfileSvg.ts +# new file: assets/images/BlueHeart.png +# new file: assets/images/Dentist.png +# new file: assets/images/Ellipse.png +# new file: assets/images/Frame.png +# new file: assets/images/GeneralDoctor.png +# new file: assets/images/HalfStar.png +# new file: assets/images/Heart.png +# new file: assets/images/More.png +# new file: assets/images/Neurologist.png +# new file: assets/images/Notification.png +# new file: assets/images/Nutritionist.png +# new file: assets/images/Optician.png +# new file: assets/images/Pediatric.png +# new file: assets/images/Radiologist.png +# new file: assets/images/Randy.png +# new file: assets/images/filter.png +# new file: assets/images/search.png +# new file: components/Line.tsx +# modified: package-lock.json +# modified: package.json +# diff --git a/app/(app)/ActionMenu/HomeScreen.tsx b/app/(app)/ActionMenu/HomeScreen.tsx new file mode 100644 index 00000000..8f9e8808 --- /dev/null +++ b/app/(app)/ActionMenu/HomeScreen.tsx @@ -0,0 +1,473 @@ +import { View, Text } from "@/components/Themed"; +import { Image,StyleSheet,TouchableOpacity, TextInput,ImageBackground,ScrollView , } from "react-native"; +import React , { useState } from "react"; +import { useFonts as useFontsExpo } from 'expo-font'; +import { useNavigation } from "@react-navigation/native"; +import { SvgXml } from "react-native-svg"; +import {HomeIcon} from "../../../assets/icons/HomeSvg"; +import {HistoryIcon} from "../../../assets/icons/HistorySvg"; +import {AppointmentIcon} from "../../../assets/icons/AppointmentSvg"; +import {ArticleIcon} from "../../../assets/icons/ArticleSvg"; +import {ProfileIcon} from "../../../assets/icons/ProfileSvg"; +import Line from "@/components/Line"; +//import { HomeIcon, HistoryIcon, AppointmentIcon, ArticleIcon, ProfileIcon } from '../../../assets/icons'; + + +export default function HomeScreen() { + //const {user, isLoading}=useUser(); + const [activeIcon, setActiveIcon] = useState('Home'); + const handleIconPress = (iconName: string) => { + setActiveIcon(iconName); // Update active icon state when an icon is pressed + }; + const isIconActive = (iconName: string) => { + return activeIcon === iconName; + }; + const navigation = useNavigation(); + const [text, setText] = useState(''); + const [fontsLoaded] = useFontsExpo({ + 'Urbanist-regular': require('../../../assets/fonts/Urbanist-Regular.ttf'), + 'Urbanist-bold': require('../../../assets/fonts/Urbanist-Bold.ttf'), + 'Urbanist-Semibold': require('../../../assets/fonts/Urbanist-SemiBold.ttf'), + 'Urbanist-Medium': require('../../../assets/fonts/Urbanist-Medium.ttf'), + }); + if (!fontsLoaded) { + return null; + } + + return ( + + + + + + + Good Morning👋 + Andrew Ainsley + + + + + + + + + + setText(newText)} + style={styles.searchinput} + placeholderTextColor='rgba(45,45,45,0.4)' + + /> + + + + + + + + + Medical Checks! + Check your health condition regularly to minimize the incidence of disease in the future. + navigation.navigate('' as never)}> + Check Now + + + + + + + Doctor Speciality + See All + + + + + + + + + General.. + Dentist + Ophthal.. + Nutrition.. + + + + + + + + + Neurolo.. + Pediatric + Radiolo.. + More + + + Top Doctors + See All + + + + + + All + + + General + + + Dentist + + + Nutritionist + + + Neurologist + + + + + + + + + + Dr. Randy Wigham + + + + + Cardiologist | The Valley Hospital + + + 4.8 (3,379 reviews) + + + + + + + + + + handleIconPress('Home')}> + + Home + + + handleIconPress('Appointment')}> + + Appointments + + + handleIconPress('History')}> + + History + + + handleIconPress('Article')}> + + Articles + + + handleIconPress('Profile')}> + + Profile + + + + ) +} + +const styles = StyleSheet.create({ + container:{ + backgroundColor: '#FFFFFF', + padding:2, + paddingTop:40, + }, + containerDark:{ + backgroundColor: '#181A20', + padding:2, + paddingTop:40, + + }, + header:{ + flexDirection: 'row' , + alignItems: 'center', + justifyContent: 'flex-start', + backgroundColor: '#FFFFFF', + marginLeft: '3%', + marginTop:'5%' + }, + userImage:{ + width: 45, + height: 45, + + }, + heading:{ + backgroundColor: '#FFFFFF', + marginLeft: '2%' + }, + greetings: { + color: '#757575', + fontFamily: 'Urbanist-regular' + }, + Icons:{ + backgroundColor: '#FFFFFF', + flexDirection: 'row', + paddingLeft:'27%', + }, + + + + filter:{ + marginLeft: '3%', + + }, + heart:{ + marginLeft: '36%', + }, + userName:{ + color: '#000000', + fontSize: 20, + fontWeight: 'bold', + fontFamily:'Urbanist-bold' + }, + + searchinput:{ + color:'#757575', + fontFamily:'Urbanist-regular', + fontSize:18, + flex: 1, +}, +search:{ + backgroundColor:'#F5F5F5', + width:'90%', + flexDirection:'row', + gap:18, + color:'#757575', + alignItems:'center', + justifyContent:'flex-start', + marginTop:'7%', + marginLeft:'5%', + marginRight:30, + padding:15, + borderRadius:12, + position: 'relative', + }, + frame:{ + backgroundColor: 'transparent', + marginRight:'0%', + padding:0, + width:'100%', + height: 200, + marginLeft: '0%', + alignItems: 'center', + + }, + FrameImage:{ + width: '101%', + padding: 0, + height: '100%', + marginTop: '5%', + marginLeft: '3%', + shadowColor: '#A7C4FE', + shadowOpacity:5, + flexDirection:'row', + + }, + FrameText:{ + backgroundColor:'transparent', + + }, + button2:{ + backgroundColor:'#ffffff', + alignItems:'center', + justifyContent:'center', + borderRadius:20, + width:100, + height:30, + marginTop:'5%', + marginLeft: '13%' + }, + buttontext2:{ + color:'#246BFD', + fontFamily:'Urbanist-Semibold', + fontSize:13 +}, + + h1:{ + marginTop: '10%', + marginLeft: '13%', + backgroundColor: 'transparent', + color:'#FFFFFF', + fontFamily:'Urbanist-bold', + fontSize: 25, + width: 185, + }, + body:{ + fontFamily:'Urbanist-regular' , + fontSize: 12, + backgroundColor: 'transparent', + color:'#FFFFFF', + width: 194, + marginTop: '5%', + marginLeft: '13%' + }, + TxtContainer:{ + flexDirection: 'row', + gap:180, + backgroundColor: 'transparent', + marginTop: '6%', + + }, + specialityTxt:{ + color: '#000000', + fontFamily: 'Urbanist-bold', + fontSize:19, + marginLeft: '4%', + + }, + seeTxt:{ + color: '#246BFD', + fontFamily: 'Urbanist-bold', + fontSize:15 + }, + specialityContainer1:{ + backgroundColor: 'transparent', + marginTop:'5%', + marginLeft:'5%', + marginRight:'5%', + flexDirection:'row', + gap:40, + }, + NameTxt:{ + backgroundColor: 'transparent', + marginLeft:'5%', + marginTop:'2%', + flexDirection:'row', + gap:40, + }, + DocSpeciality:{ + color: '#000000', + fontSize: 14, + marginLeft:'2%', + fontFamily: 'Urbanist-bold', + }, + TopDocs:{ + flexDirection: 'row', + gap:220, + backgroundColor: 'transparent', + marginTop: '8%', + marginBottom: '4%', + + }, + Footer:{ + backgroundColor:'#FFFFFF', + height:90, + width:'101%', + marginTop:'0%', + marginLeft:'0%', + alignItems: 'flex-start', + justifyContent: 'space-around', + marginBottom:'0%', + flexDirection:'row', + gap:28, + //position:'absolute' + position: 'absolute', + bottom: 0, + left: 0, + right: 0, + padding:20, + borderTopLeftRadius:20, + borderTopRightRadius:20, + }, + icon:{ + marginLeft:'0%' + }, + iconText:{ + color:'#000000', + fontSize:12, + marginLeft:'0%', + + }, + activeIcon: { + color: '#246BFD', // Example: change color for active icon +}, +activeText: { + color: '#246BFD', // Example: change color for active text + fontWeight: 'bold', // Example: apply font weight for active text +}, +cardContainer:{ + backgroundColor:'#EEEEEE', + width:'100%', + height:'40%', + padding:5, + +}, +card:{ + width:'95%', + height:'40%', + marginTop:'2%', + marginLeft:'2%', + borderRadius:20, + backgroundColor:'#FFFFFF', + padding:10, + flexDirection:'row' + +}, +cardImage:{ + height:'93%', + width:'30%', + borderRadius:20, + //backgroundColor:'black' + +}, +DocName:{ + fontFamily:'Urbanist-bold', + //backgroundColor:'', + color:'#000000', + marginLeft:'3%', + marginRight:'18%', + marginTop:'1%', + fontSize:20, + padding:0, + +}, +DocDescription:{ + flexDirection:'column', + backgroundColor:'transparent' +}, +DocHeart:{ + marginTop:'3%' +}, +CardHeader:{ + flexDirection:'row', + backgroundColor:'transparent' +}, +DocProfession:{ + backgroundColor:'transparent', + color:'#424242', + fontFamily:'Urbanist-regular', + fontSize:15, + marginLeft:'5%', + marginTop:'5%' +}, +DocRating:{ + backgroundColor:'transparent', + flexDirection:'row', + marginLeft:'5%', + marginTop:'6%' + + +}, +Ratings:{ + color:'#000000', + backgroundColor:'transparent', + fontSize:15, + marginLeft:'5%' +} + +}); \ No newline at end of file diff --git a/app/(app)/Appointments/ScheduledAppointments/AppointmentCancelledScreen.tsx b/app/(app)/Appointments/ScheduledAppointments/AppointmentCancelledScreen.tsx new file mode 100644 index 00000000..8d4078d1 --- /dev/null +++ b/app/(app)/Appointments/ScheduledAppointments/AppointmentCancelledScreen.tsx @@ -0,0 +1,426 @@ +import React, { useState, useEffect } from 'react'; +import { View, Text, StyleSheet, TouchableOpacity,Image , Dimensions, ImageBackground ,ScrollView} from 'react-native'; +import { useFonts as useFontsExpo } from 'expo-font'; +import { SvgXml } from "react-native-svg"; +import { SearchIcon } from '@/assets/icons/SearchSvg'; +import { MoreIcon } from '@/assets/icons/MoreCircleSvg'; +import { HomeIcon } from '@/assets/icons/HomeSvg'; +import { HistoryIcon } from '@/assets/icons/HistorySvg'; +import { ProfileIcon } from '@/assets/icons/ProfileSvg'; +import { ArticleIcon } from '@/assets/icons/ArticleSvg'; +import { AppointmentIcon } from '@/assets/icons/AppointmentSvg'; +import Line from '@/components/Line'; +import { useNavigation } from '@react-navigation/native'; + + +export default function CancelledAppointment() { + const [activeTab, setActiveTab] = useState('Cancelled'); + const [headerWidth, setHeaderWidth] = useState(0); + const [activeIcon, setActiveIcon] = useState('Appointment'); + const [text, setText] = useState(''); + const navigation = useNavigation(); + + useEffect(() => { + const updateHeaderWidth = () => { + const screenWidth = Dimensions.get('window').width; + const headerPadding = 20 * 2; + const headerAvailableWidth = screenWidth - headerPadding; + setHeaderWidth(headerAvailableWidth); + }; + + updateHeaderWidth(); + }, []); + + const handleTabPress = (screen: 'Upcoming' | 'Completed' | 'Cancelled') => { + setActiveTab(screen); + + if (screen === 'Upcoming') { + navigation.navigate('AppointmentUpcoming' as never) ; + } else if (screen === 'Completed') { + navigation.navigate('AppointmentCompleted'as never); + } else if (screen === 'Cancelled') { + navigation.navigate('AppointmentCancelled' as never); + } + }; + + const isIconActive = (iconName: string) => { + return activeIcon === iconName; + }; + + const handleIconPress = (iconName: string) => { + setActiveIcon(iconName); + }; + + const activeTabLinePosition = { + width: headerWidth / 3, + left: activeTab === 'Upcoming' + ? 0 + : activeTab === 'Completed' + ? headerWidth / 3 + : (headerWidth * 2) / 3, + }; + + const renderTab = (screen: 'Upcoming' | 'Completed' | 'Cancelled', label: string) => { + const isActive = activeTab === screen; + return ( + handleTabPress(screen)} + > + {label} + + ); + }; + + return ( + + + + + My Appointment + + + + + + + + + + {renderTab('Upcoming', 'Upcoming')} + {renderTab('Completed', 'Completed')} + {renderTab('Cancelled', 'Cancelled')} + + + + + + + + {/* 1st Card*/} + + + + + + Dr. Raul Zirkind + + + Video Call - + + Cancelled + + + + Dec 12, 2022 | 16:00 PM + + + + + + + {/* 2nd Card*/} + + + + + + Dr. Keegan Dach + + + Messaging - + + Cancelled + + + + Nov 20, 2022 | 10:00 AM + + + + + + + {/* 3rd Card*/} + + + + + + Dr. Drake Boeson + + + Video Call - + + Cancelled + + + + Nov 08, 2022 | 13:00 PM + + + + + + + {/* 4th Card*/} + + + + + + Dr. Quinn Slatter + + + Voice Call - + + Cancelled + + + + Oct 16, 2022 | 09:00 AM + + + + + + + + + handleIconPress('Home')} style={[styles.iconsBox]}> + + Home + + + handleIconPress('Appointment')} style={[styles.iconsBox]}> + + Appointme.. + + + handleIconPress('History')} style={[styles.iconsBox]}> + + History + + + handleIconPress('Article')} style={[styles.iconsBox]}> + + Articles + + + handleIconPress('Profile')} style={[styles.iconsBox]}> + + Profile + + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + backgroundColor: '#F7F7F7', + padding: 0, + height:'100%', + }, + header:{ + padding:20 + }, + + heading:{ + backgroundColor:'transparent', + flexDirection:'row', + width:'100%', + marginBottom:'0%', + marginTop:'5%', + padding:10 + }, + + headerLogo:{ + backgroundColor:'transparent', + + }, + headerTitle:{ + fontFamily:'Urbanist-bold', + fontSize:22, + marginLeft:'3%', + }, + SearchIcon:{ + marginLeft: 75 + + }, + MoreIcon:{ + marginLeft:25 + }, + + headerNav: { + flexDirection: 'row', + justifyContent: 'space-around', + alignItems: 'center', + borderBottomWidth: 2, + borderBottomColor: '#D3D3D3', + paddingBottom: 10, + position: 'relative', + }, + tab: { + paddingVertical: 8, + }, + tabText: { + fontSize: 16, + fontFamily: 'Urbanist-regular', + marginTop: '4%', + color: '#9E9E9E', + }, + activeTab: { + // Define styles for active tab if needed + }, + activeTabText: { + color: '#246BFD', + fontWeight: 'bold', + }, + activeTabLine: { + position: 'absolute', + bottom: 0, + height: 3, + backgroundColor: '#246BFD', + zIndex: 1, + }, + + Body:{ + height:'100%', + width:'100%', + backgroundColor:'#F5F5F5' + + }, + + Footer:{ + backgroundColor:'#FFFFFF', + height:90, + width:'100%', + marginTop:'0%', + marginLeft:'0%', + alignItems: 'flex-start', + justifyContent: 'space-around', + marginBottom:'0%', + flexDirection:'row', + gap:45, + //position:'absolute' + position: 'absolute', + bottom: 0, + left: 0, + right: 0, + padding:20, + borderTopLeftRadius:20, + borderTopRightRadius:20, + }, + icon:{ + marginLeft:'0%' + + }, + iconText:{ + color:'#000000', + fontSize:12, + marginLeft:'0%', + + }, + activeIcon: { + color: '#246BFD', // Example: change color for active icon + }, + activeText: { + color: '#246BFD', // Example: change color for active text + fontWeight: 'bold', // Example: apply font weight for active text + }, + iconsBox:{ + backgroundColor:'transparent', + justifyContent:'center', + alignItems:'center' + }, + + cardContainer:{ + backgroundColor:'#F5F5F5', + width:'100%', + height:'100%', + padding:5, + + }, + card:{ + width:'95%', + height:150, + marginTop:20, + marginLeft:'2%', + borderRadius:20, + backgroundColor:'#FFFFFF', + padding:15, + flexDirection:'column' + + }, + cardImage:{ + height:110, + width:'30%', + borderRadius:20, + //backgroundColor:'black' + + }, + + upperSection:{ + flexDirection:'row' + }, + + CardButtons:{ + flexDirection:'row', + gap:20, + marginLeft:'1%', + marginTop:'4%' + + }, + + DocName:{ + fontFamily:'Urbanist-bold', + //backgroundColor:'', + color:'#000000', + marginLeft:'3%', + marginRight:'18%', + marginTop:'1%', + fontSize:20, + padding:0, + + }, + DocDescription:{ + flexDirection:'column', + backgroundColor:'transparent' + }, + DocHeart:{ + marginTop:'3%' + }, + CardHeader:{ + flexDirection:'row', + backgroundColor:'transparent' + }, + Date:{ + backgroundColor:'transparent', + color:'#424242', + fontFamily:'Urbanist-regular', + fontSize:12, + marginLeft:'5%', + marginTop:'0%' + }, + DocStatus:{ + backgroundColor:'transparent', + flexDirection:'row', + marginLeft:'5%', + marginTop:'0%', + justifyContent:'center', + alignItems:'center' + + + }, + + +}); + + diff --git a/app/(app)/Appointments/ScheduledAppointments/AppointmentCompletedScreen.tsx b/app/(app)/Appointments/ScheduledAppointments/AppointmentCompletedScreen.tsx new file mode 100644 index 00000000..a38bf6ee --- /dev/null +++ b/app/(app)/Appointments/ScheduledAppointments/AppointmentCompletedScreen.tsx @@ -0,0 +1,460 @@ +import React, { useState, useEffect } from 'react'; +import { View, Text, StyleSheet, TouchableOpacity,Image , Dimensions, ImageBackground ,ScrollView} from 'react-native'; +import { useFonts as useFontsExpo } from 'expo-font'; +import { SvgXml } from "react-native-svg"; +import { SearchIcon } from '@/assets/icons/SearchSvg'; +import { MoreIcon } from '@/assets/icons/MoreCircleSvg'; +import { HomeIcon } from '@/assets/icons/HomeSvg'; +import { HistoryIcon } from '@/assets/icons/HistorySvg'; +import { ProfileIcon } from '@/assets/icons/ProfileSvg'; +import { ArticleIcon } from '@/assets/icons/ArticleSvg'; +import { AppointmentIcon } from '@/assets/icons/AppointmentSvg'; +import Line from '@/components/Line'; +import { useNavigation } from '@react-navigation/native'; + + +export default function CompletedAppointment() { + const [activeTab, setActiveTab] = useState('Completed'); + const [headerWidth, setHeaderWidth] = useState(0); + const [activeIcon, setActiveIcon] = useState('Appointment'); + const [text, setText] = useState(''); + const navigation = useNavigation(); + + useEffect(() => { + const updateHeaderWidth = () => { + const screenWidth = Dimensions.get('window').width; + const headerPadding = 20 * 2; + const headerAvailableWidth = screenWidth - headerPadding; + setHeaderWidth(headerAvailableWidth); + }; + + updateHeaderWidth(); + }, []); + + const handleTabPress = (screen: 'Upcoming' | 'Completed' | 'Cancelled') => { + setActiveTab(screen); + + if (screen === 'Upcoming') { + navigation.navigate('AppointmentUpcoming' as never) ; + } else if (screen === 'Completed') { + navigation.navigate('AppointmentCompleted'as never); + } else if (screen === 'Cancelled') { + navigation.navigate('AppointmentCancelled' as never); + } + }; + + const isIconActive = (iconName: string) => { + return activeIcon === iconName; + }; + + const handleIconPress = (iconName: string) => { + setActiveIcon(iconName); + }; + + const activeTabLinePosition = { + width: headerWidth / 3, + left: activeTab === 'Upcoming' + ? 0 + : activeTab === 'Completed' + ? headerWidth / 3 + : (headerWidth * 2) / 3, + }; + + const renderTab = (screen: 'Upcoming' | 'Completed' | 'Cancelled', label: string) => { + const isActive = activeTab === screen; + return ( + handleTabPress(screen)} + > + {label} + + ); + }; + + + return ( + + + + + My Appointment + + + + + + + + + + {renderTab('Upcoming', 'Upcoming')} + {renderTab('Completed', 'Completed')} + {renderTab('Cancelled', 'Cancelled')} + + + + + + + + {/* 1st Card*/} + + + + + + Dr. Aidan Allende + + + Video Call - + + Completed + + + + Dec 14, 2022 | 15:00 PM + + + + + + Book Again + + + Leave a Review + + + + + + {/* 2nd Card*/} + + + + + + Dr. Iker Holl + + + Messaging - + + Completed + + + + Nov 22, 2022 | 09:00 AM + + + + + + Book Again + + + Leave a Review + + + + + + {/* 3rd Card*/} + + + + + + Dr. Jadar Srnsky + + + Voice Call - + + Completed + + + + Nov 06, 2022 | 18:00 PM + + + + + + Book Again + + + Leave a Review + + + + + + {/* 4th Card*/} + + + + + + Dr. Aidan Allende + + + Video Call - + + Completed + + + + Dec 14, 2022 | 15:00 PM + + + + + + Book Again + + + Leave a Review + + + + + + + + + handleIconPress('Home')} style={[styles.iconsBox]}> + + Home + + + handleIconPress('Appointment')} style={[styles.iconsBox]}> + + Appointme.. + + + handleIconPress('History')} style={[styles.iconsBox]}> + + History + + + handleIconPress('Article')} style={[styles.iconsBox]}> + + Articles + + + handleIconPress('Profile')} style={[styles.iconsBox]}> + + Profile + + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + backgroundColor: '#F7F7F7', + padding: 0, + height:'100%', + }, + header:{ + padding:20 + }, + + heading:{ + backgroundColor:'transparent', + flexDirection:'row', + width:'100%', + marginBottom:'0%', + marginTop:'5%', + padding:10 + }, + + headerLogo:{ + backgroundColor:'transparent', + + }, + headerTitle:{ + fontFamily:'Urbanist-bold', + fontSize:22, + marginLeft:'3%', + }, + SearchIcon:{ + marginLeft: 75 + + }, + MoreIcon:{ + marginLeft:25 + }, + + headerNav: { + flexDirection: 'row', + justifyContent: 'space-around', + alignItems: 'center', + borderBottomWidth: 2, + borderBottomColor: '#D3D3D3', + paddingBottom: 10, + position: 'relative', + }, + tab: { + paddingVertical: 8, + }, + tabText: { + fontSize: 16, + fontFamily: 'Urbanist-regular', + marginTop: '4%', + color: '#9E9E9E', + }, + activeTab: { + // Define styles for active tab if needed + }, + activeTabText: { + color: '#246BFD', + fontWeight: 'bold', + }, + activeTabLine: { + position: 'absolute', + bottom: 0, + height: 3, + backgroundColor: '#246BFD', + zIndex: 1, + }, + + Body:{ + height:'100%', + width:'100%', + backgroundColor:'#F5F5F5' + + }, + + Footer:{ + backgroundColor:'#FFFFFF', + height:90, + width:'100%', + marginTop:'0%', + marginLeft:'0%', + alignItems: 'flex-start', + justifyContent: 'space-around', + marginBottom:'0%', + flexDirection:'row', + gap:45, + //position:'absolute' + position: 'absolute', + bottom: 0, + left: 0, + right: 0, + padding:20, + borderTopLeftRadius:20, + borderTopRightRadius:20, + }, + icon:{ + marginLeft:'0%' + + }, + iconText:{ + color:'#000000', + fontSize:12, + marginLeft:'0%', + + }, + activeIcon: { + color: '#246BFD', // Example: change color for active icon + }, + activeText: { + color: '#246BFD', // Example: change color for active text + fontWeight: 'bold', // Example: apply font weight for active text + }, + iconsBox:{ + backgroundColor:'transparent', + justifyContent:'center', + alignItems:'center' + }, + + cardContainer:{ + backgroundColor:'#F5F5F5', + width:'100%', + height:'100%', + padding:5, + + }, + card:{ + width:'95%', + height:210, + marginTop:20, + marginLeft:'2%', + borderRadius:20, + backgroundColor:'#FFFFFF', + padding:15, + flexDirection:'column' + + }, + cardImage:{ + height:110, + width:'30%', + borderRadius:20, + //backgroundColor:'black' + + }, + + upperSection:{ + flexDirection:'row' + }, + + CardButtons:{ + flexDirection:'row', + gap:20, + marginLeft:'1%', + marginTop:'4%' + + }, + + DocName:{ + fontFamily:'Urbanist-bold', + //backgroundColor:'', + color:'#000000', + marginLeft:'3%', + marginRight:'18%', + marginTop:'1%', + fontSize:20, + padding:0, + + }, + DocDescription:{ + flexDirection:'column', + backgroundColor:'transparent' + }, + DocHeart:{ + marginTop:'3%' + }, + CardHeader:{ + flexDirection:'row', + backgroundColor:'transparent' + }, + Date:{ + backgroundColor:'transparent', + color:'#424242', + fontFamily:'Urbanist-regular', + fontSize:12, + marginLeft:'5%', + marginTop:'0%' + }, + DocStatus:{ + backgroundColor:'transparent', + flexDirection:'row', + marginLeft:'5%', + marginTop:'0%', + justifyContent:'center', + alignItems:'center' + + + }, + + +}); + + diff --git a/app/(app)/Appointments/ScheduledAppointments/AppointmentEmptyScreen.tsx b/app/(app)/Appointments/ScheduledAppointments/AppointmentEmptyScreen.tsx new file mode 100644 index 00000000..9e09acf4 --- /dev/null +++ b/app/(app)/Appointments/ScheduledAppointments/AppointmentEmptyScreen.tsx @@ -0,0 +1,278 @@ +import React, { useState, useEffect } from 'react'; +import { View, Text, StyleSheet, TouchableOpacity,Image , Dimensions, ImageBackground } from 'react-native'; +import { useFonts as useFontsExpo } from 'expo-font'; +import { SvgXml } from "react-native-svg"; +import { SearchIcon } from '@/assets/icons/SearchSvg'; +import { MoreIcon } from '@/assets/icons/MoreCircleSvg'; +import { HomeIcon } from '@/assets/icons/HomeSvg'; +import { HistoryIcon } from '@/assets/icons/HistorySvg'; +import { ProfileIcon } from '@/assets/icons/ProfileSvg'; +import { ArticleIcon } from '@/assets/icons/ArticleSvg'; +import { AppointmentIcon } from '@/assets/icons/AppointmentSvg'; +import { useNavigation } from '@react-navigation/native'; + + +export default function EmptyAppointment() { + const [activeTab, setActiveTab] = useState('Upcoming'); + const [headerWidth, setHeaderWidth] = useState(0); + const [activeIcon, setActiveIcon] = useState('Appointment'); + const [text, setText] = useState(''); + const navigation = useNavigation(); + + useEffect(() => { + const updateHeaderWidth = () => { + const screenWidth = Dimensions.get('window').width; + const headerPadding = 20 * 2; + const headerAvailableWidth = screenWidth - headerPadding; + setHeaderWidth(headerAvailableWidth); + }; + + updateHeaderWidth(); + }, []); + + const handleTabPress = (screen: 'Upcoming' | 'Completed' | 'Cancelled') => { + setActiveTab(screen); + + if (screen === 'Upcoming') { + navigation.navigate('AppointmentUpcoming' as never) ; + } else if (screen === 'Completed') { + navigation.navigate('AppointmentCompleted'as never); + } else if (screen === 'Cancelled') { + navigation.navigate('AppointmentCancelled' as never); + } + }; + + const isIconActive = (iconName: string) => { + return activeIcon === iconName; + }; + + const handleIconPress = (iconName: string) => { + setActiveIcon(iconName); + }; + + const activeTabLinePosition = { + width: headerWidth / 3, + left: activeTab === 'Upcoming' + ? 0 + : activeTab === 'Completed' + ? headerWidth / 3 + : (headerWidth * 2) / 3, + }; + + const renderTab = (screen: 'Upcoming' | 'Completed' | 'Cancelled', label: string) => { + const isActive = activeTab === screen; + return ( + handleTabPress(screen)} + > + {label} + + ); + }; + + + return ( + + + + + My Appointment + + + + + + + + + + {renderTab('Upcoming', 'Upcoming')} + {renderTab('Completed', 'Completed')} + {renderTab('Cancelled', 'Cancelled')} + + + + + + + You don't have an appointment yet + You don't have a doctor's appointment scheduled at the moment. + + + + handleIconPress('Home')} style={[styles.iconsBox]}> + + Home + + + handleIconPress('Appointment')} style={[styles.iconsBox]}> + + Appointme.. + + + handleIconPress('History')} style={[styles.iconsBox]}> + + History + + + handleIconPress('Article')} style={[styles.iconsBox]}> + + Articles + + + handleIconPress('Profile')} style={[styles.iconsBox]}> + + Profile + + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + backgroundColor: '#FFFFFF', + padding: 0, + height:'100%', + }, + header:{ + padding:20 + }, + + heading:{ + backgroundColor:'transparent', + flexDirection:'row', + width:'100%', + marginBottom:'3%', + marginTop:'5%', + padding:10 + }, + + headerLogo:{ + backgroundColor:'transparent', + + }, + headerTitle:{ + fontFamily:'Urbanist-bold', + fontSize:22, + marginLeft:'3%', + }, + SearchIcon:{ + marginLeft: 75 + + }, + MoreIcon:{ + marginLeft:25 + }, + + headerNav: { + flexDirection: 'row', + justifyContent: 'space-around', + alignItems: 'center', + borderBottomWidth: 2, + borderBottomColor: '#D3D3D3', + paddingBottom: 10, + position: 'relative', + }, + tab: { + paddingVertical: 8, + }, + tabText: { + fontSize: 16, + fontFamily: 'Urbanist-regular', + marginTop: '4%', + color: '#9E9E9E', + }, + activeTab: { + // Define styles for active tab if needed + }, + activeTabText: { + color: '#246BFD', + fontWeight: 'bold', + }, + activeTabLine: { + position: 'absolute', + bottom: 0, + height: 3, + backgroundColor: '#246BFD', + zIndex: 1, + }, + + Body:{ + height:'100%', + width:'100%', + backgroundColor:'#FFFFFF', + //justifyContent:'center', + alignItems:'center' + + }, + + Img:{ + marginTop:'20%' + }, + + BodyHeading:{ + fontFamily:'Urbanist-Semibold', + fontSize:17, + marginTop:'10%' + }, + + BodyText:{ + textAlign:'center', + fontFamily:'Urbanist-regular', + width:'80%', + marginTop:'3%' + }, + + Footer:{ + backgroundColor:'#FFFFFF', + height:90, + width:'100%', + marginTop:'0%', + marginLeft:'0%', + alignItems: 'flex-start', + justifyContent: 'space-around', + marginBottom:'0%', + flexDirection:'row', + gap:35, + //position:'absolute' + position: 'absolute', + bottom: 0, + left: 0, + right: 0, + padding:20, + borderTopLeftRadius:20, + borderTopRightRadius:20, + }, + icon:{ + marginLeft:'0%' + + }, + iconText:{ + color:'#000000', + fontSize:12, + marginLeft:'0%', + + }, + activeIcon: { + color: '#246BFD', // Example: change color for active icon + }, + activeText: { + color: '#246BFD', // Example: change color for active text + fontWeight: 'bold', // Example: apply font weight for active text + }, + iconsBox:{ + backgroundColor:'transparent', + justifyContent:'center', + alignItems:'center' + } + +}); + diff --git a/app/(app)/Appointments/ScheduledAppointments/AppointmentUpcomingScreen.tsx b/app/(app)/Appointments/ScheduledAppointments/AppointmentUpcomingScreen.tsx new file mode 100644 index 00000000..432847b4 --- /dev/null +++ b/app/(app)/Appointments/ScheduledAppointments/AppointmentUpcomingScreen.tsx @@ -0,0 +1,468 @@ +import React, { useState, useEffect } from 'react'; +import { useNavigation } from '@react-navigation/native'; +import { View, Text, StyleSheet, TouchableOpacity,Image , Dimensions, ImageBackground ,ScrollView} from 'react-native'; +import { useFonts as useFontsExpo } from 'expo-font'; +import { SvgXml } from "react-native-svg"; +import { SearchIcon } from '@/assets/icons/SearchSvg'; +import { MoreIcon } from '@/assets/icons/MoreCircleSvg'; +import { HomeIcon } from '@/assets/icons/HomeSvg'; +import { HistoryIcon } from '@/assets/icons/HistorySvg'; +import { ProfileIcon } from '@/assets/icons/ProfileSvg'; +import { ArticleIcon } from '@/assets/icons/ArticleSvg'; +import { AppointmentIcon } from '@/assets/icons/AppointmentSvg'; +import Line from '@/components/Line'; +import EmptyAppointment from './AppointmentEmptyScreen'; +import CancelledAppointment from './AppointmentCancelledScreen'; +import CompletedAppointment from './AppointmentCompletedScreen'; + +export default function UpcomingAppointment() { + const [activeTab, setActiveTab] = useState('Upcoming'); + const [headerWidth, setHeaderWidth] = useState(0); + const [activeIcon, setActiveIcon] = useState('Appointment'); + const [text, setText] = useState(''); + const navigation = useNavigation(); + + useEffect(() => { + const updateHeaderWidth = () => { + const screenWidth = Dimensions.get('window').width; + const headerPadding = 20 * 2; + const headerAvailableWidth = screenWidth - headerPadding; + setHeaderWidth(headerAvailableWidth); + }; + + updateHeaderWidth(); + }, []); + + const handleTabPress = (screen: 'Upcoming' | 'Completed' | 'Cancelled') => { + setActiveTab(screen); + + if (screen === 'Upcoming') { + navigation.navigate('AppointmentUpcoming' as never) ; + } else if (screen === 'Completed') { + navigation.navigate('AppointmentCompleted'as never); + } else if (screen === 'Cancelled') { + navigation.navigate('AppointmentCancelled' as never); + } + }; + + const isIconActive = (iconName: string) => { + return activeIcon === iconName; + }; + + const handleIconPress = (iconName: string) => { + setActiveIcon(iconName); + }; + + const activeTabLinePosition = { + width: headerWidth / 3, + left: activeTab === 'Upcoming' + ? 0 + : activeTab === 'Completed' + ? headerWidth / 3 + : (headerWidth * 2) / 3, + }; + + const renderTab = (screen: 'Upcoming' | 'Completed' | 'Cancelled', label: string) => { + const isActive = activeTab === screen; + return ( + handleTabPress(screen)} + > + {label} + + ); + }; + + + return ( + + + + + My Appointment + + + + + + + + + + handleTabPress('Upcoming')}> + {renderTab('Upcoming', 'Upcoming')} + + handleTabPress('Completed')}> + {renderTab('Completed', 'Completed')} + + handleTabPress('Cancelled')}> + {renderTab('Cancelled', 'Cancelled')} + + + + + + + + + {/* 1st Card*/} + + + + + + Dr. Drake Boeson + + + Messaging - + + Upcoming + + + + Today | 16:00 PM + + + + + + Cancel Appointment + + + Reschedule + + + + + + {/* 2nd Card*/} + + + + + + Dr. Jenny Watson + + + Voice call - + + Upcoming + + + + Today | 14:00 PM + + + + + + Cancel Appointment + + + Reschedule + + + + + + {/* 3rd Card*/} + + + + + + Dr. Maria Foose + + + Messaging - + + Upcoming + + + + Today | 10:00 AM + + + + + + Cancel Appointment + + + Reschedule + + + + + + {/* 4th Card*/} + + + + + + Dr. Drake Boeson + + + Messaging - + + Upcoming + + + + Today | 16:00 PM + + + + + + Cancel Appointment + + + Reschedule + + + + + + + + + handleIconPress('Home')} style={[styles.iconsBox]}> + + Home + + + handleIconPress('Appointment')} style={[styles.iconsBox]}> + + Appointme.. + + + handleIconPress('History')} style={[styles.iconsBox]}> + + History + + + handleIconPress('Article')} style={[styles.iconsBox]}> + + Articles + + + handleIconPress('Profile')} style={[styles.iconsBox]}> + + Profile + + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + backgroundColor: '#F7F7F7', + padding: 0, + height:'100%', + }, + header:{ + padding:20 + }, + + heading:{ + backgroundColor:'transparent', + flexDirection:'row', + width:'100%', + marginBottom:'0%', + marginTop:'5%', + padding:10 + }, + + headerLogo:{ + backgroundColor:'transparent', + + }, + headerTitle:{ + fontFamily:'Urbanist-bold', + fontSize:22, + marginLeft:'3%', + }, + SearchIcon:{ + marginLeft: 75 + + }, + MoreIcon:{ + marginLeft:25 + }, + + headerNav: { + flexDirection: 'row', + justifyContent: 'space-around', + alignItems: 'center', + borderBottomWidth: 2, + borderBottomColor: '#D3D3D3', + paddingBottom: 10, + position: 'relative', + }, + tab: { + paddingVertical: 8, + }, + tabText: { + fontSize: 16, + fontFamily: 'Urbanist-regular', + marginTop: '4%', + color: '#9E9E9E', + }, + activeTab: { + // Define styles for active tab if needed + }, + activeTabText: { + color: '#246BFD', + fontWeight: 'bold', + }, + activeTabLine: { + position: 'absolute', + bottom: 0, + height: 3, + backgroundColor: '#246BFD', + zIndex: 1, + }, + + Body:{ + height:'100%', + width:'100%', + backgroundColor:'#F5F5F5' + + }, + + Footer:{ + backgroundColor:'#FFFFFF', + height:90, + width:'100%', + marginTop:'0%', + marginLeft:'0%', + alignItems: 'flex-start', + justifyContent: 'space-around', + marginBottom:'0%', + flexDirection:'row', + gap:45, + //position:'absolute' + position: 'absolute', + bottom: 0, + left: 0, + right: 0, + padding:20, + borderTopLeftRadius:20, + borderTopRightRadius:20, + }, + icon:{ + marginLeft:'0%' + + }, + iconText:{ + color:'#000000', + fontSize:12, + marginLeft:'0%', + + }, + activeIcon: { + color: '#246BFD', // Example: change color for active icon + }, + activeText: { + color: '#246BFD', // Example: change color for active text + fontWeight: 'bold', // Example: apply font weight for active text + }, + iconsBox:{ + backgroundColor:'transparent', + justifyContent:'center', + alignItems:'center' + }, + + cardContainer:{ + backgroundColor:'#F5F5F5', + width:'100%', + height:'100%', + padding:5, + + }, + card:{ + width:'95%', + height:210, + marginTop:20, + marginLeft:'2%', + borderRadius:20, + backgroundColor:'#FFFFFF', + padding:15, + flexDirection:'column' + + }, + cardImage:{ + height:110, + width:'30%', + borderRadius:20, + //backgroundColor:'black' + + }, + + upperSection:{ + flexDirection:'row' + }, + + CardButtons:{ + flexDirection:'row', + gap:20, + marginLeft:'1%', + marginTop:'4%' + + }, + + DocName:{ + fontFamily:'Urbanist-bold', + //backgroundColor:'', + color:'#000000', + marginLeft:'3%', + marginRight:'18%', + marginTop:'1%', + fontSize:20, + padding:0, + + }, + DocDescription:{ + flexDirection:'column', + backgroundColor:'transparent' + }, + DocHeart:{ + marginTop:'3%' + }, + CardHeader:{ + flexDirection:'row', + backgroundColor:'transparent' + }, + Date:{ + backgroundColor:'transparent', + color:'#424242', + fontFamily:'Urbanist-regular', + fontSize:12, + marginLeft:'5%', + marginTop:'0%' + }, + DocStatus:{ + backgroundColor:'transparent', + flexDirection:'row', + marginLeft:'5%', + marginTop:'0%', + justifyContent:'center', + alignItems:'center' + + + }, + + +}); + + diff --git a/app/(app)/Appointments/ScheduledAppointments/Navigator.tsx b/app/(app)/Appointments/ScheduledAppointments/Navigator.tsx new file mode 100644 index 00000000..e61ffd31 --- /dev/null +++ b/app/(app)/Appointments/ScheduledAppointments/Navigator.tsx @@ -0,0 +1,50 @@ +import React from 'react'; +import { createStackNavigator } from '@react-navigation/stack'; +import EmptyAppointment from './AppointmentEmptyScreen'; +import CompletedAppointment from './AppointmentCompletedScreen'; +import CancelledAppointment from './AppointmentCancelledScreen'; +import UpcomingAppointment from './AppointmentUpcomingScreen'; + +const Stack = createStackNavigator(); + +export function UpcomingAppointmentScreen(){ + return +} + +export function CompletedAppointmentScreen(){ + return +} + +export function CancelledAppointmentScreen(){ + return +} + +export function EmptyAppointmentScreen(){ + return +} + +{/* +import * as React from 'react'; +import { NavigationContainer } from '@react-navigation/native'; +import { createStackNavigator } from '@react-navigation/stack'; +import EmptyAppointment from './AppointmentEmptyScreen'; +import CompletedAppointment from './AppointmentCompletedScreen'; +import CancelledAppointment from './AppointmentCancelledScreen'; +import UpcomingAppointment from './AppointmentUpcomingScreen'; + +const Stack = createStackNavigator(); + + export default function Navigator() { + return ( + + + + + + + + + ); +} + +*/} diff --git a/app/(app)/_layout.tsx b/app/(app)/_layout.tsx index f1938741..38bcb1dd 100644 --- a/app/(app)/_layout.tsx +++ b/app/(app)/_layout.tsx @@ -11,7 +11,14 @@ import Typography from "@/constants/Typography"; import { Stack, Tabs } from "expo-router"; import { Pressable, Text, TouchableOpacity, View } from "react-native"; import { SvgXml } from "react-native-svg"; +import { createStackNavigator } from '@react-navigation/stack'; +import { UpcomingAppointmentScreen } from "./Appointments/ScheduledAppointments/Navigator"; +import { CancelledAppointmentScreen } from "./Appointments/ScheduledAppointments/Navigator"; +import { CompletedAppointmentScreen } from "./Appointments/ScheduledAppointments/Navigator"; +import { EmptyAppointmentScreen } from "./Appointments/ScheduledAppointments/Navigator"; + +const Stack = createStackNavigator(); export default function Layout() { return ( <> @@ -178,6 +185,16 @@ export default function Layout() { }} /> + + + + + + + + + + ); } diff --git a/app/index.tsx b/app/index.tsx index 944358ac..b94c2eb1 100644 --- a/app/index.tsx +++ b/app/index.tsx @@ -6,7 +6,7 @@ import { Image, StyleSheet, Text, View } from "react-native"; export default function SplashScreen() { useEffect(() => { setTimeout(() => { - router.push("/(app)"); + router.push("/(app)/Appointments/ScheduledAppointments/AppointmentCompletedScreen"); }, 2000); }, []); diff --git a/assets/icons/MoreCircleSvg.ts b/assets/icons/MoreCircleSvg.ts new file mode 100644 index 00000000..aadc124c --- /dev/null +++ b/assets/icons/MoreCircleSvg.ts @@ -0,0 +1,12 @@ +export const MoreIcon =` + + + + + + + + + + +` \ No newline at end of file diff --git a/assets/icons/SearchSvg.ts b/assets/icons/SearchSvg.ts new file mode 100644 index 00000000..30aae051 --- /dev/null +++ b/assets/icons/SearchSvg.ts @@ -0,0 +1,24 @@ +export const SearchIcon = ` + + + + + + + + + + + + + + + + + + + + + + +` \ No newline at end of file diff --git a/assets/images/DefaultLogo.png b/assets/images/DefaultLogo.png new file mode 100644 index 00000000..d96df922 Binary files /dev/null and b/assets/images/DefaultLogo.png differ diff --git a/assets/images/Dr Aidan.png b/assets/images/Dr Aidan.png new file mode 100644 index 00000000..9347399e Binary files /dev/null and b/assets/images/Dr Aidan.png differ diff --git a/assets/images/Dr Drake.png b/assets/images/Dr Drake.png new file mode 100644 index 00000000..a4f4b32b Binary files /dev/null and b/assets/images/Dr Drake.png differ diff --git a/assets/images/Dr Iker.png b/assets/images/Dr Iker.png new file mode 100644 index 00000000..5565ddae Binary files /dev/null and b/assets/images/Dr Iker.png differ diff --git a/assets/images/Dr Keegan.png b/assets/images/Dr Keegan.png new file mode 100644 index 00000000..55215faf Binary files /dev/null and b/assets/images/Dr Keegan.png differ diff --git a/assets/images/Dr Quinn.png b/assets/images/Dr Quinn.png new file mode 100644 index 00000000..eac3af57 Binary files /dev/null and b/assets/images/Dr Quinn.png differ diff --git a/assets/images/Dr Raul.png b/assets/images/Dr Raul.png new file mode 100644 index 00000000..19a13e2d Binary files /dev/null and b/assets/images/Dr Raul.png differ diff --git a/assets/images/Dr jada.png b/assets/images/Dr jada.png new file mode 100644 index 00000000..14cfef33 Binary files /dev/null and b/assets/images/Dr jada.png differ diff --git a/assets/images/Dr jenny.png b/assets/images/Dr jenny.png new file mode 100644 index 00000000..8c0961f0 Binary files /dev/null and b/assets/images/Dr jenny.png differ diff --git a/assets/images/Dr maria.png b/assets/images/Dr maria.png new file mode 100644 index 00000000..234d458d Binary files /dev/null and b/assets/images/Dr maria.png differ diff --git a/assets/images/Empty.png b/assets/images/Empty.png new file mode 100644 index 00000000..a278f366 Binary files /dev/null and b/assets/images/Empty.png differ diff --git a/assets/images/Messaging.png b/assets/images/Messaging.png new file mode 100644 index 00000000..eab3d8e0 Binary files /dev/null and b/assets/images/Messaging.png differ diff --git a/data/doctor.ts b/data/doctor.ts new file mode 100644 index 00000000..0b9432b2 --- /dev/null +++ b/data/doctor.ts @@ -0,0 +1,45 @@ +interface ReviewData{ + + id:string, + names: string, + comment: string, + likes: string + +} + +interface DoctorData{ +id: string +name: string, +specialization: string, +hospital: string, +reviews: ReviewData[] +about: string, +appointmentStatus: "upcoming" | "cancelled" | "completed" +bookingMethod: "Messaging" | "Voice call" | "Video call" +} + + +const doctor: DoctorData[] = [ +{ + id: "1", + name: "Dr. Raul Zirkind", + specialization: "Immunologist", + hospital: "king faisal", + reviews: [ + { id: "1", + names: " Darron Kulikowski", + comment: " The doctor is very beautiful and the service is excellent! I like it and want to consult again 🤣🤣", + likes: "33", + }, + { id: "2", + names: " Darron Kulikowski", + comment: " The doctor is very beautiful and the service is excellent! I like it and want to consult again 🤣🤣", + likes: "33", + } + ], + about: "Dr. Jenny Watson is the top most Immunologists specialist in Christ Hospital at London. She achived several awards for her wonderful contribution in medical field. She is available for private consultation. view more", + appointmentStatus: "cancelled", + bookingMethod:"Messaging" + +} +] \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 46e78a5a..256de3f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,25 +14,26 @@ "@react-navigation/native": "^6.0.2", "eas-cli": "^8.0.0", "expo": "^51.0.2", - "expo-checkbox": "~3.0.0", - "expo-font": "~12.0.4", - "expo-linear-gradient": "~13.0.2", - "expo-linking": "~6.3.1", - "expo-local-authentication": "~14.0.1", - "expo-navigation-bar": "~3.0.4", - "expo-router": "~3.5.11", - "expo-secure-store": "~13.0.1", - "expo-splash-screen": "~0.27.4", - "expo-status-bar": "~1.12.1", - "expo-system-ui": "~3.0.4", - "expo-updates": "~0.25.11", - "expo-web-browser": "~13.0.3", + "expo-checkbox": "^3.0.0", + "expo-font": "^12.0.5", + "expo-linear-gradient": "^13.0.2", + "expo-linking": "^6.3.1", + "expo-local-authentication": "^14.0.1", + "expo-navigation-bar": "^3.0.4", + "expo-router": "^3.5.11", + "expo-secure-store": "^13.0.1", + "expo-splash-screen": "~0.26.5", + "expo-status-bar": "~1.11.1", + "expo-system-ui": "~2.9.3", + "expo-updates": "~0.24.12", + "expo-web-browser": "~12.8.2", "nstall": "^0.2.0", "react": "18.2.0", "react-dom": "18.2.0", "react-native": "0.74.1", "react-native-calendars": "^1.1304.1", "react-native-elements": "^3.4.3", + "react-native-gesture-handler": "^2.16.2", "react-native-indicators": "^0.17.0", "react-native-modern-datepicker": "^1.0.0-beta.91", "react-native-otp-entry": "^1.6.1", @@ -286,18 +287,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", - "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", - "peer": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-compilation-targets": { "version": "7.23.6", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", @@ -612,70 +601,6 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz", - "integrity": "sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==", - "peer": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", - "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", - "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.24.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz", - "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==", - "peer": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, "node_modules/@babel/plugin-proposal-async-generator-functions": { "version": "7.20.7", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", @@ -741,22 +666,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", - "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead.", - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", @@ -841,18 +750,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "peer": true, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", @@ -880,6 +777,7 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -887,21 +785,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-decorators": { "version": "7.24.1", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.1.tgz", @@ -966,40 +849,11 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", - "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", - "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1011,6 +865,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1036,6 +891,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1116,6 +972,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1140,22 +997,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "peer": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, "node_modules/@babel/plugin-transform-arrow-functions": { "version": "7.24.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", @@ -1170,24 +1011,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.24.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz", - "integrity": "sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==", - "peer": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-remap-async-to-generator": "^7.22.20", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-transform-async-to-generator": { "version": "7.24.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz", @@ -1204,21 +1027,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", - "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-transform-block-scoping": { "version": "7.24.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz", @@ -1233,39 +1041,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz", - "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==", - "peer": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz", - "integrity": "sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==", - "peer": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.4", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, "node_modules/@babel/plugin-transform-classes": { "version": "7.24.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz", @@ -1324,69 +1099,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", - "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", - "peer": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", - "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", - "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", - "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", - "peer": true, - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-transform-export-namespace-from": { "version": "7.24.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", @@ -1417,22 +1129,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", - "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-transform-function-name": { "version": "7.24.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", @@ -1449,22 +1145,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", - "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-transform-literals": { "version": "7.24.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", @@ -1479,53 +1159,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", - "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", - "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", - "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", - "peer": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-transform-modules-commonjs": { "version": "7.24.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", @@ -1542,40 +1175,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz", - "integrity": "sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==", - "peer": true, - "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", - "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", - "peer": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", @@ -1591,21 +1190,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", - "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { "version": "7.24.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", @@ -1621,22 +1205,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", - "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-transform-object-rest-spread": { "version": "7.24.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz", @@ -1654,38 +1222,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", - "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-replace-supers": "^7.24.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", - "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-transform-optional-chaining": { "version": "7.24.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz", @@ -1748,21 +1284,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", - "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-transform-react-display-name": { "version": "7.24.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz", @@ -1825,41 +1346,10 @@ }, "node_modules/@babel/plugin-transform-react-jsx-source": { "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.1.tgz", - "integrity": "sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz", - "integrity": "sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", - "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", - "peer": true, + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.1.tgz", + "integrity": "sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "regenerator-transform": "^0.15.2" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1868,12 +1358,12 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-reserved-words": { + "node_modules/@babel/plugin-transform-react-pure-annotations": { "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", - "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", - "peer": true, + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz", + "integrity": "sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==", "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { @@ -1959,21 +1449,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz", - "integrity": "sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-transform-typescript": { "version": "7.24.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.5.tgz", @@ -1991,37 +1466,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", - "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", - "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", - "peer": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-transform-unicode-regex": { "version": "7.24.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", @@ -2037,117 +1481,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", - "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", - "peer": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.5.tgz", - "integrity": "sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==", - "peer": true, - "dependencies": { - "@babel/compat-data": "^7.24.4", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.5", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.24.1", - "@babel/plugin-syntax-import-attributes": "^7.24.1", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.24.1", - "@babel/plugin-transform-async-generator-functions": "^7.24.3", - "@babel/plugin-transform-async-to-generator": "^7.24.1", - "@babel/plugin-transform-block-scoped-functions": "^7.24.1", - "@babel/plugin-transform-block-scoping": "^7.24.5", - "@babel/plugin-transform-class-properties": "^7.24.1", - "@babel/plugin-transform-class-static-block": "^7.24.4", - "@babel/plugin-transform-classes": "^7.24.5", - "@babel/plugin-transform-computed-properties": "^7.24.1", - "@babel/plugin-transform-destructuring": "^7.24.5", - "@babel/plugin-transform-dotall-regex": "^7.24.1", - "@babel/plugin-transform-duplicate-keys": "^7.24.1", - "@babel/plugin-transform-dynamic-import": "^7.24.1", - "@babel/plugin-transform-exponentiation-operator": "^7.24.1", - "@babel/plugin-transform-export-namespace-from": "^7.24.1", - "@babel/plugin-transform-for-of": "^7.24.1", - "@babel/plugin-transform-function-name": "^7.24.1", - "@babel/plugin-transform-json-strings": "^7.24.1", - "@babel/plugin-transform-literals": "^7.24.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.1", - "@babel/plugin-transform-member-expression-literals": "^7.24.1", - "@babel/plugin-transform-modules-amd": "^7.24.1", - "@babel/plugin-transform-modules-commonjs": "^7.24.1", - "@babel/plugin-transform-modules-systemjs": "^7.24.1", - "@babel/plugin-transform-modules-umd": "^7.24.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.24.1", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", - "@babel/plugin-transform-numeric-separator": "^7.24.1", - "@babel/plugin-transform-object-rest-spread": "^7.24.5", - "@babel/plugin-transform-object-super": "^7.24.1", - "@babel/plugin-transform-optional-catch-binding": "^7.24.1", - "@babel/plugin-transform-optional-chaining": "^7.24.5", - "@babel/plugin-transform-parameters": "^7.24.5", - "@babel/plugin-transform-private-methods": "^7.24.1", - "@babel/plugin-transform-private-property-in-object": "^7.24.5", - "@babel/plugin-transform-property-literals": "^7.24.1", - "@babel/plugin-transform-regenerator": "^7.24.1", - "@babel/plugin-transform-reserved-words": "^7.24.1", - "@babel/plugin-transform-shorthand-properties": "^7.24.1", - "@babel/plugin-transform-spread": "^7.24.1", - "@babel/plugin-transform-sticky-regex": "^7.24.1", - "@babel/plugin-transform-template-literals": "^7.24.1", - "@babel/plugin-transform-typeof-symbol": "^7.24.5", - "@babel/plugin-transform-unicode-escapes": "^7.24.1", - "@babel/plugin-transform-unicode-property-regex": "^7.24.1", - "@babel/plugin-transform-unicode-regex": "^7.24.1", - "@babel/plugin-transform-unicode-sets-regex": "^7.24.1", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.4", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.31.0", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/preset-flow": { "version": "7.24.1", "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.1.tgz", @@ -2164,20 +1497,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" - } - }, "node_modules/@babel/preset-react": { "version": "7.24.1", "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.1.tgz", @@ -2349,6 +1668,17 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "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/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -7789,7 +7119,6 @@ "@babel/plugin-proposal-async-generator-functions": "^7.0.0", "@babel/plugin-proposal-class-properties": "^7.18.0", "@babel/plugin-proposal-export-default-from": "^7.0.0", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.0", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", "@babel/plugin-proposal-numeric-separator": "^7.0.0", "@babel/plugin-proposal-object-rest-spread": "^7.20.0", @@ -7842,8 +7171,8 @@ "integrity": "sha512-GgvgHS3Aa2J8/mp1uC/zU8HuTh8ZT5jz7a4mVMWPw7+rGyv70Ba8uOVBq6UH2Q08o617IATYc+0HfyzAfm4n0w==", "dependencies": { "@babel/parser": "^7.20.0", + "flow-parser": "^0.206.0", "glob": "^7.1.1", - "hermes-parser": "0.19.1", "invariant": "^2.2.4", "jscodeshift": "^0.14.0", "mkdirp": "^0.5.1", @@ -7856,6 +7185,14 @@ "@babel/preset-env": "^7.1.6" } }, + "node_modules/@react-native/codegen/node_modules/flow-parser": { + "version": "0.206.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.206.0.tgz", + "integrity": "sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/@react-native/community-cli-plugin": { "version": "0.74.83", "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.74.83.tgz", @@ -8201,12 +7538,30 @@ "nanoid": "^3.1.23" } }, + "node_modules/@react-navigation/stack": { + "version": "6.3.29", + "resolved": "https://registry.npmjs.org/@react-navigation/stack/-/stack-6.3.29.tgz", + "integrity": "sha512-tzlGkoRgB6P7vgw7rHuWo3TL7Gzu6xh5LMf+zSdCuEiKp/qASzxYfnTEr9tOLbVs/gf+qeukEDheCSAJKVpBXw==", + "dependencies": { + "@react-navigation/elements": "^1.3.30", + "color": "^4.2.3", + "warn-once": "^0.1.0" + }, + "peerDependencies": { + "@react-navigation/native": "^6.0.0", + "react": "*", + "react-native": "*", + "react-native-gesture-handler": ">= 1.0.0", + "react-native-safe-area-context": ">= 3.0.0", + "react-native-screens": ">= 3.0.0" + } + }, "node_modules/@remix-run/node": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-2.9.1.tgz", - "integrity": "sha512-shicVsSmXepj4zotWHR2kLmyYCxQ25mHmfBL11ODIcIs7iSmQO+W7CNbmX1jcRvhHki/v+S/n4fMm0iKNeJ92w==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-2.9.2.tgz", + "integrity": "sha512-2Mt2107pfelz4T+ziDBef3P4A7kgPqCDshnEYCVGxInivJ3HHwAKUcb7MhGa8uMMMA6LMWxbAPYNHPzC3iKv2A==", "dependencies": { - "@remix-run/server-runtime": "2.9.1", + "@remix-run/server-runtime": "2.9.2", "@remix-run/web-fetch": "^4.4.2", "@web3-storage/multipart-parser": "^1.0.0", "cookie-signature": "^1.1.0", @@ -8227,19 +7582,19 @@ } }, "node_modules/@remix-run/router": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.16.0.tgz", - "integrity": "sha512-Quz1KOffeEf/zwkCBM3kBtH4ZoZ+pT3xIXBG4PPW/XFtDP7EGhtTiC2+gpL9GnR7+Qdet5Oa6cYSvwKYg6kN9Q==", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.16.1.tgz", + "integrity": "sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig==", "engines": { "node": ">=14.0.0" } }, "node_modules/@remix-run/server-runtime": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-2.9.1.tgz", - "integrity": "sha512-6rRPiR+eMdTPkDojlYiZohVzXkD3+3X55ZvD78axMVocwGcDFFllpmgH9NSR2RKHW9eZDZUfKvNCwd/i9W6Xog==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-2.9.2.tgz", + "integrity": "sha512-dX37FEeMVVg7KUbpRhX4hD0nUY0Sscz/qAjU4lYCdd6IzwJGariTmz+bQTXKCjploZuXj09OQZHSOS/ydkUVDA==", "dependencies": { - "@remix-run/router": "1.16.0", + "@remix-run/router": "1.16.1", "@types/cookie": "^0.6.0", "@web3-storage/multipart-parser": "^1.0.0", "cookie": "^0.6.0", @@ -8515,6 +7870,11 @@ "@types/node": "*" } }, + "node_modules/@types/hammerjs": { + "version": "2.0.45", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.45.tgz", + "integrity": "sha512-qkcUlZmX6c4J8q45taBKTL3p+LbITgyx7qhlPYOdOHZB7B31K0mXbP5YA7i7SgDeEGuI9MnumiKPEMrxg8j3KQ==" + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", @@ -10363,6 +9723,17 @@ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" }, + "node_modules/compare-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-urls/-/compare-urls-2.0.0.tgz", + "integrity": "sha512-eCJcWn2OYFEIqbm70ta7LQowJOOZZqq1a2YbbFCFI1uwSvj+TWMwXVn7vPR1ceFNcAIt5RSTDbwdlX82gYLTkA==", + "dependencies": { + "normalize-url": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/component-type": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/component-type/-/component-type-1.2.2.tgz", @@ -12222,6 +11593,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -12562,9 +11934,9 @@ } }, "node_modules/expo-eas-client": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/expo-eas-client/-/expo-eas-client-0.12.0.tgz", - "integrity": "sha512-Jkww9Cwpv0z7DdLYiRX0r4fqBEcI9cKqTn7cHx63S09JaZ2rcwEE4zYHgrXwjahO+tU2VW8zqH+AJl6RhhW4zA==" + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/expo-eas-client/-/expo-eas-client-0.11.2.tgz", + "integrity": "sha512-SY7rVFxb4ut/OMTgR7A39Jg+8+hXwQNRpZd+RBpB+B5XV2STj/pWXHnGFhBayEF4umI4SxrOvisY90rlPWVO9Q==" }, "node_modules/expo-file-system": { "version": "17.0.1", @@ -12575,9 +11947,9 @@ } }, "node_modules/expo-font": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-12.0.4.tgz", - "integrity": "sha512-VtOQB7MEeFMVwo46/9/ntqzrgraTE7gAsnfi2NukFcCpDmyAU3G1R7m287LUXltE46SmGkMgAvM6+fflXFjaJA==", + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-12.0.5.tgz", + "integrity": "sha512-h/VkN4jlHYDJ6T6pPgOYTVoDEfBY0CTKQe4pxnPDGQiE6H+DFdDgk+qWVABGpRMH0+zXoHB+AEi3OoQjXIynFA==", "dependencies": { "fontfaceobserver": "^2.1.0" }, @@ -12586,9 +11958,9 @@ } }, "node_modules/expo-json-utils": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/expo-json-utils/-/expo-json-utils-0.13.1.tgz", - "integrity": "sha512-mlfaSArGVb+oJmUcR22jEONlgPp0wj4iNIHfQ2je9Q8WTOqMc0Ws9tUciz3JdJnhffdHqo/k8fpvf0IRmN5HPA==" + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/expo-json-utils/-/expo-json-utils-0.12.3.tgz", + "integrity": "sha512-4pypQdinpNc6XY9wsZk56njvzDh+B/9mISr7FPP3CVk1QGB1nSLh883/BCDSgnsephATZkC5HG+cdE60kCAR6A==" }, "node_modules/expo-keep-awake": { "version": "13.0.1", @@ -12627,12 +11999,12 @@ } }, "node_modules/expo-manifests": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/expo-manifests/-/expo-manifests-0.14.2.tgz", - "integrity": "sha512-hFrwIGr76/zGVhZ+vcjDZpOePd7uYNB6yCaiJcm7/bcrt2ne7cHyKQ8l+3n26/v1OuXfBfjxNH+PHIpkClszoQ==", + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/expo-manifests/-/expo-manifests-0.13.2.tgz", + "integrity": "sha512-l0Sia1WmLULx8V41K8RzGLsFoTe4qqthPRGpHjItsYn8ZB6lRrdTBM9OYp2McIflgqN1HAimUCQMFIwJyH+UmA==", "dependencies": { - "@expo/config": "~9.0.0-beta.0", - "expo-json-utils": "~0.13.0" + "@expo/config": "~8.5.0", + "expo-json-utils": "~0.12.0" }, "peerDependencies": { "expo": "*" @@ -12936,15 +12308,7 @@ } } }, - "node_modules/expo-secure-store": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/expo-secure-store/-/expo-secure-store-13.0.1.tgz", - "integrity": "sha512-5DTKjbv98X7yPbm+1jER/sOEIlt2Ih7qwabTvkWDXry5bPcQGoulxH5zIX9+JvVH7of8GI4t7NSEbpAO3P7FZA==", - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/expo-splash-screen": { + "node_modules/expo-router/node_modules/expo-splash-screen": { "version": "0.27.4", "resolved": "https://registry.npmjs.org/expo-splash-screen/-/expo-splash-screen-0.27.4.tgz", "integrity": "sha512-JwepK1FjbwiOK2nwIFanfzj9s7UXYnpTwLX8A9v7Ec3K4V28yu8HooSc9X60cftBw9UZrs8Gwj4PgTpQabBS9A==", @@ -13189,21 +12553,21 @@ } }, "node_modules/expo-status-bar": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-1.12.1.tgz", - "integrity": "sha512-/t3xdbS8KB0prj5KG5w7z+wZPFlPtkgs95BsmrP/E7Q0xHXTcDcQ6Cu2FkFuRM+PKTb17cJDnLkawyS5vDLxMA==" + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-1.11.1.tgz", + "integrity": "sha512-ddQEtCOgYHTLlFUe/yH67dDBIoct5VIULthyT3LRJbEwdpzAgueKsX2FYK02ldh440V87PWKCamh7R9evk1rrg==" }, "node_modules/expo-structured-headers": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/expo-structured-headers/-/expo-structured-headers-3.8.0.tgz", - "integrity": "sha512-R+gFGn0x5CWl4OVlk2j1bJTJIz4KO8mPoCHpRHmfqMjmrMvrOM0qQSY3V5NHXwp1yT/L2v8aUmFQsBRIdvi1XA==" + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/expo-structured-headers/-/expo-structured-headers-3.7.2.tgz", + "integrity": "sha512-/nGOyeWUXSUy4aIYKJTwQOznRNs0yKqKPAyEE6jtwvOl9qvfDWx9xskNtShioggBhFAssFkV6RBbPn+xZMQtvw==" }, "node_modules/expo-system-ui": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/expo-system-ui/-/expo-system-ui-3.0.4.tgz", - "integrity": "sha512-v1n6hBO30k9qw6RE8/au4yNoovs71ExGuXizJUlR5KSo4Ruogpb+0/2q3uRZMDIYWWCANvms8L0UOh6fQJ5TXg==", + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/expo-system-ui/-/expo-system-ui-2.9.4.tgz", + "integrity": "sha512-ExJ8AzEZjb/zbg6nRLrN/mqxWr6e4fAcT0LBN/YvPZljbMo23HU+/lPy0/YctF1tRRvQ3Z95ABSNjnx9ajQBjg==", "dependencies": { - "@react-native/normalize-colors": "~0.74.83", + "@react-native/normalize-color": "^2.0.0", "debug": "^4.3.2" }, "peerDependencies": { @@ -13211,24 +12575,20 @@ } }, "node_modules/expo-updates": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/expo-updates/-/expo-updates-0.25.11.tgz", - "integrity": "sha512-ZO+e6bLsEBMz+JdEOlJXGf+3w606si7zKKEEzkwDQWJWP20W0WQAG+MDYgTEgxQboc+jTC+T0MvvOvkVb8cFIQ==", + "version": "0.24.12", + "resolved": "https://registry.npmjs.org/expo-updates/-/expo-updates-0.24.12.tgz", + "integrity": "sha512-35ZpAMSqHIyVGT5mEptaZJBxytu0mv4PIG28i3BQe+GG4ifQtY94aCOCrUwZe8Myzaf4dNVGEUXWTPo+JPCgcw==", "dependencies": { "@expo/code-signing-certificates": "0.0.5", - "@expo/config": "~9.0.0-beta.0", - "@expo/config-plugins": "~8.0.0-beta.0", - "@expo/fingerprint": "^0.7.0", - "@expo/spawn-async": "^1.7.2", + "@expo/config": "~8.5.0", + "@expo/config-plugins": "~7.8.0", "arg": "4.1.0", "chalk": "^4.1.2", - "expo-eas-client": "~0.12.0", - "expo-manifests": "~0.14.0", - "expo-structured-headers": "~3.8.0", - "expo-updates-interface": "~0.16.2", - "fast-glob": "^3.3.2", + "expo-eas-client": "~0.11.0", + "expo-manifests": "~0.13.0", + "expo-structured-headers": "~3.7.0", + "expo-updates-interface": "~0.15.1", "fbemitter": "^3.0.0", - "ignore": "^5.3.1", "resolve-from": "^5.0.0" }, "bin": { @@ -13239,9 +12599,9 @@ } }, "node_modules/expo-updates-interface": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-0.16.2.tgz", - "integrity": "sha512-929XBU70q5ELxkKADj1xL0UIm3HvhYhNAOZv5DSk7rrKvLo7QDdPyl+JVnwZm9LrkNbH4wuE2rLoKu1KMgZ+9A==", + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-0.15.3.tgz", + "integrity": "sha512-uLvsbaCmUsXgJqeen8rYH/jPr874ZUCXEvWpKHxrCv5/XATPlYEaDuecbNSGQ+cu78i6MdtB4BHOwZmoH2d47A==", "peerDependencies": { "expo": "*" } @@ -13304,17 +12664,7 @@ "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.7.1.tgz", "integrity": "sha512-lbTwFiIk0lOm9zzPRvnC45GfPqXqPB3w4hDDKVma+8FDAbPCWhNN42ltLhx/ekwcHFQxURmg0fHm59k0Vy+jtw==", "dependencies": { - "@expo/spawn-async": "^1.7.2", - "chalk": "^4.1.2", - "debug": "^4.3.4", - "find-up": "^5.0.0", - "minimatch": "^3.0.4", - "p-limit": "^3.1.0", - "resolve-from": "^5.0.0", - "semver": "^7.6.0" - }, - "bin": { - "fingerprint": "bin/cli.js" + "@babel/highlight": "^7.10.4" } }, "node_modules/expo-updates/node_modules/@expo/json-file": { @@ -13342,10 +12692,43 @@ "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.2.tgz", "integrity": "sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==", "dependencies": { - "cross-spawn": "^7.0.3" - }, - "engines": { - "node": ">=12" + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~7.9.0", + "@expo/config-types": "^50.0.0", + "@expo/json-file": "^8.2.37", + "getenv": "^1.0.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "7.5.3", + "slugify": "^1.3.4", + "sucrase": "3.34.0" + } + }, + + + "node_modules/expo-updates/node_modules/@expo/config/node_modules/@expo/config-plugins": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.9.2.tgz", + "integrity": "sha512-sRU/OAp7kJxrCUiCTUZqvPMKPdiN1oTmNfnbkG4oPdfWQTpid3jyCH7ZxJEN5SI6jrY/ZsK5B/JPgjDUhuWLBQ==", + "dependencies": { + "@expo/config-types": "^50.0.0-alpha.1", + "@expo/fingerprint": "^0.6.0", + "@expo/json-file": "~8.3.0", + "@expo/plist": "^0.1.0", + "@expo/sdk-runtime-versions": "^1.0.0", + "@react-native/normalize-color": "^2.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.1", + "find-up": "~5.0.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "resolve-from": "^5.0.0", + "semver": "^7.5.3", + "slash": "^3.0.0", + "slugify": "^1.6.6", + "xcode": "^3.0.1", + "xml2js": "0.6.0" } }, "node_modules/expo-updates/node_modules/ansi-styles": { @@ -13457,9 +12840,13 @@ } }, "node_modules/expo-web-browser": { - "version": "13.0.3", - "resolved": "https://registry.npmjs.org/expo-web-browser/-/expo-web-browser-13.0.3.tgz", - "integrity": "sha512-HXb7y82ApVJtqk8tManyudtTrCtx8xcUnVzmJECeHCB0SsWSQ+penVLZxJkcyATWoJOsFMnfVSVdrTcpKKGszQ==", + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/expo-web-browser/-/expo-web-browser-12.8.2.tgz", + "integrity": "sha512-Mw8WoFMSADecNjtC4PZVsVj1/lYdxIAH1jOVV+F8v8SEWYxORWofoShfXg7oUxRLu0iUG8JETfO5y4m8+fOgdg==", + "dependencies": { + "compare-urls": "^2.0.0", + "url": "^0.11.0" + }, "peerDependencies": { "expo": "*" } @@ -15153,6 +14540,14 @@ "node": ">=8" } }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -19640,6 +19035,40 @@ "node": ">=0.10.0" } }, + "node_modules/normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dependencies": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/normalize-url/node_modules/query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dependencies": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url/node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/npm-package-arg": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz", @@ -20398,6 +19827,14 @@ "node": ">= 0.8.0" } }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "engines": { + "node": ">=4" + } + }, "node_modules/pretty-bytes": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", @@ -20550,6 +19987,20 @@ "qrcode-terminal": "bin/qrcode-terminal.js" } }, + "node_modules/qs": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", + "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/query-string": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", @@ -20817,6 +20268,22 @@ "color-string": "^1.6.0" } }, + "node_modules/react-native-gesture-handler": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.16.2.tgz", + "integrity": "sha512-vGFlrDKlmyI+BT+FemqVxmvO7nqxU33cgXVsn6IKAFishvlG3oV2Ds67D5nPkHMea8T+s1IcuMm0bF8ntZtAyg==", + "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-helmet-async": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/react-native-helmet-async/-/react-native-helmet-async-2.0.4.tgz", @@ -21307,15 +20774,6 @@ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, "node_modules/regexp.prototype.flags": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", @@ -23371,6 +22829,15 @@ "punycode": "^2.1.0" } }, + "node_modules/url": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", + "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.11.2" + } + }, "node_modules/url-join": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", @@ -23386,6 +22853,11 @@ "requires-port": "^1.0.0" } }, + "node_modules/url/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + }, "node_modules/use-latest-callback": { "version": "0.1.9", "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.1.9.tgz", diff --git a/package.json b/package.json index 9b1e6403..43a81ba8 100644 --- a/package.json +++ b/package.json @@ -19,28 +19,30 @@ "dependencies": { "@expo/vector-icons": "^14.0.0", "@oclif/screen": "^3.0.8", - "@react-navigation/native": "^6.0.2", + "@react-navigation/native": "^6.1.17", + "@react-navigation/stack": "^6.3.29", "eas-cli": "^8.0.0", "expo": "^51.0.2", - "expo-checkbox": "~3.0.0", - "expo-font": "~12.0.4", - "expo-linear-gradient": "~13.0.2", - "expo-linking": "~6.3.1", - "expo-local-authentication": "~14.0.1", - "expo-navigation-bar": "~3.0.4", - "expo-router": "~3.5.11", - "expo-secure-store": "~13.0.1", - "expo-splash-screen": "~0.27.4", - "expo-status-bar": "~1.12.1", - "expo-system-ui": "~3.0.4", - "expo-updates": "~0.25.11", - "expo-web-browser": "~13.0.3", + "expo-checkbox": "^3.0.0", + "expo-font": "^12.0.5", + "expo-linear-gradient": "^13.0.2", + "expo-linking": "^6.3.1", + "expo-local-authentication": "^14.0.1", + "expo-navigation-bar": "^3.0.4", + "expo-router": "^3.5.11", + "expo-secure-store": "^13.0.1", + "expo-splash-screen": "~0.26.5", + "expo-status-bar": "~1.11.1", + "expo-system-ui": "~2.9.3", + "expo-updates": "~0.24.12", + "expo-web-browser": "~12.8.2", "nstall": "^0.2.0", "react": "18.2.0", "react-dom": "18.2.0", "react-native": "0.74.1", "react-native-calendars": "^1.1304.1", "react-native-elements": "^3.4.3", + "react-native-gesture-handler": "^2.16.2", "react-native-indicators": "^0.17.0", "react-native-modern-datepicker": "^1.0.0-beta.91", "react-native-otp-entry": "^1.6.1",