import { Ionicons } from "@expo/vector-icons"; import { router } from "expo-router"; import { useState } from "react"; import { KeyboardAvoidingView, Platform, ScrollView, StyleSheet, Text, TouchableOpacity, View, } from "react-native"; import { SafeAreaView } from "react-native-safe-area-context"; import { useAuth } from "../../lib/auth"; import { t } from "../../lib/locales"; import { colors } from "../../lib/theme"; import { Button, H1, Muted, TextInput } from "../../lib/ui"; export default function SignIn() { const { signIn } = useAuth(); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [loading, setLoading] = useState(false); const [error, setError] = useState(""); const [emailError, setEmailError] = useState(""); const [passwordError, setPasswordError] = useState(""); const validateForm = () => { let valid = true; setEmailError(""); setPasswordError(""); const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (!emailRegex.test(email)) { setEmailError(t("invalidEmail")); valid = false; } if (!password) { setPasswordError(t("passwordRequired")); valid = false; } return valid; }; const handleSignIn = async () => { if (!validateForm()) return; setLoading(true); setError(""); try { const result = await signIn(email, password); if (!result.success) { setError(result.reason || t("signInError")); } } catch (e) { setError(t("signInError")); } finally { setLoading(false); } }; return ( router.back()} >

{t("signIn")}

{error ? {error} : null}