import { useEffect, useState } from 'react'; import { Image, Text, TouchableOpacity, View } from 'react-native'; import Animated, { Easing, useAnimatedStyle, useSharedValue, withDelay, withTiming, } from 'react-native-reanimated'; import { useRouter } from 'expo-router'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; import { useTranslation } from 'react-i18next'; import { useAuthStore } from '../stores/auth'; import { BrandSplash } from '../components/BrandSplash'; const EASE_OUT = Easing.out(Easing.cubic); export default function LandingScreen() { const router = useRouter(); const insets = useSafeAreaInsets(); const { t } = useTranslation(); const session = useAuthStore((s) => s.session); const loading = useAuthStore((s) => s.loading); const [splashDone, setSplashDone] = useState(false); const ctaOpacity = useSharedValue(0); const ctaTranslateY = useSharedValue(14); useEffect(() => { if (!loading && session) { router.replace('/(app)'); } }, [loading, session, router]); function handleSplashDone() { setSplashDone(true); ctaOpacity.value = withTiming(1, { duration: 380, easing: EASE_OUT }); ctaTranslateY.value = withTiming(0, { duration: 380, easing: EASE_OUT }); } const ctaStyle = useAnimatedStyle(() => ({ opacity: ctaOpacity.value, transform: [{ translateY: ctaTranslateY.value }], })); if (loading || session) return null; if (!splashDone) { return ; } return ( {t('appHeader.appName')} router.push('/signin')} activeOpacity={0.85} style={{ backgroundColor: '#6366f1', borderRadius: 16, paddingVertical: 16, alignItems: 'center', }} > {t('auth.signin')} router.push('/signup')} activeOpacity={0.85} style={{ borderWidth: 1.5, borderColor: 'rgba(255,255,255,0.25)', borderRadius: 16, paddingVertical: 16, alignItems: 'center', }} > {t('landing.start')} {t('splash.madeInGermany')} ); }