import { Link, router } from 'expo-router'; import { useState } from 'react'; import { KeyboardAvoidingView, Platform, ScrollView, StyleSheet, Text, View } from 'react-native'; import { useTranslation } from 'react-i18next'; import { Button } from '@/src/components/Button'; import { Input } from '@/src/components/Input'; import { Screen } from '@/src/components/Screen'; import { useAuth } from '@/src/context/AuthContext'; import { useAppearance } from '@/src/context/AppearanceContext'; import { extractApiError } from '@/src/utils/apiError'; export default function LoginScreen() { const { t } = useTranslation(); const { login } = useAuth(); const { colors } = useAppearance(); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [error, setError] = useState(null); const [loading, setLoading] = useState(false); async function handleSubmit() { setError(null); if (!email.trim()) { setError(t('validation.emailRequired')); return; } if (!password) { setError(t('validation.passwordRequired')); return; } setLoading(true); try { await login({ email: email.trim(), password }); router.replace('/(main)/(tabs)'); } catch (err) { setError(extractApiError(err, t('errors.signInFailed'))); } finally { setLoading(false); } } return ( {t('app.name')} {t('auth.signInSubtitle')} {error ? {error} : null}