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 SignUp() { const { signUp } = useAuth(); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [confirmPassword, setConfirmPassword] = useState(""); const [loading, setLoading] = useState(false); const [error, setError] = useState(""); const [emailError, setEmailError] = useState(""); const [passwordError, setPasswordError] = useState(""); const [confirmPasswordError, setConfirmPasswordError] = useState(""); const validateForm = () => { let valid = true; setEmailError(""); setPasswordError(""); setConfirmPasswordError(""); const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (!emailRegex.test(email)) { setEmailError(t("invalidEmail")); valid = false; } if (!password) { setPasswordError(t("passwordRequired")); valid = false; } else if (password.length < 8) { setPasswordError(t("passwordTooShort")); valid = false; } if (password !== confirmPassword) { setConfirmPasswordError(t("passwordsDoNotMatch")); valid = false; } return valid; }; const handleSignUp = async () => { if (!validateForm()) return; setLoading(true); setError(""); try { const result = await signUp(email, password); if (!result.success) { setError(result.reason || t("signUpError")); } } catch (e) { setError(t("signUpError")); } finally { setLoading(false); } }; return ( router.back()} >

{t("createAccount")}

{error ? {error} : null}