import { DefaultTheme, ThemeProvider } from '@react-navigation/native'; import { useFonts } from 'expo-font'; import { Stack, useRouter, useSegments } from 'expo-router'; import { StatusBar } from 'expo-status-bar'; import * as SplashScreen from 'expo-splash-screen'; import { Manrope_400Regular, Manrope_500Medium, Manrope_600SemiBold, Manrope_700Bold, Manrope_800ExtraBold, } from '@expo-google-fonts/manrope'; import { useEffect } from 'react'; import 'react-native-reanimated'; import { colors } from '@/components/ui'; import { collegeApi } from '@/lib/api'; void SplashScreen.preventAutoHideAsync(); const navigationTheme = { ...DefaultTheme, colors: { ...DefaultTheme.colors, primary: colors.brand.cobalt, background: colors.neutral.canvas, card: colors.neutral.surface, text: colors.neutral.textPrimary, border: colors.neutral.divider, notification: colors.brand.coral, }, }; export const unstable_settings = { anchor: '(tabs)', }; export default function RootLayout() { const router = useRouter(); const segments = useSegments(); const [fontsLoaded, fontError] = useFonts({ Manrope_400Regular, Manrope_500Medium, Manrope_600SemiBold, Manrope_700Bold, Manrope_800ExtraBold, }); useEffect(() => { if (fontsLoaded || fontError) void SplashScreen.hideAsync(); }, [fontError, fontsLoaded]); useEffect(() => { collegeApi.profile().then((profile) => { if ((!profile.name || !profile.college) && String(segments[0]) !== 'onboarding') router.replace('/onboarding' as never); }).catch(() => undefined); }, [router, segments]); if (!fontsLoaded && !fontError) return null; return ( ); }