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')}
);
}