import 'react-native-gesture-handler'; import '../global.css'; import FontAwesome from '@expo/vector-icons/FontAwesome'; import { DarkTheme, DefaultTheme, ThemeProvider } from '@react-navigation/native'; import { QueryClientProvider } from '@tanstack/react-query'; import { useFonts } from 'expo-font'; import { Stack } from 'expo-router'; import * as SplashScreen from 'expo-splash-screen'; import { useEffect } from 'react'; import { GestureHandlerRootView } from 'react-native-gesture-handler'; import { MD3DarkTheme, MD3LightTheme, PaperProvider } from 'react-native-paper'; import 'react-native-reanimated'; import { useColorScheme } from '@/components/useColorScheme'; import { AuthProvider } from '@/context/AuthContext'; import { queryClient } from '@/lib/query-client'; export { ErrorBoundary } from 'expo-router'; SplashScreen.preventAutoHideAsync(); export default function RootLayout() { const [loaded, error] = useFonts({ SpaceMono: require('../assets/fonts/SpaceMono-Regular.ttf'), ...FontAwesome.font, }); useEffect(() => { if (error) throw error; }, [error]); useEffect(() => { if (loaded) { void SplashScreen.hideAsync(); } }, [loaded]); if (!loaded) { return null; } return ; } function RootLayoutNav() { const colorScheme = useColorScheme(); const navigationTheme = colorScheme === 'dark' ? DarkTheme : DefaultTheme; const paperTheme = colorScheme === 'dark' ? { ...MD3DarkTheme, colors: { ...MD3DarkTheme.colors, primary: '#3B82F6', primaryContainer: '#1E3A8A', }, } : { ...MD3LightTheme, colors: { ...MD3LightTheme.colors, primary: '#1D4ED8', primaryContainer: '#DBEAFE', }, }; return ( ); }