import {Box, Button, Heading, Page, Text, TextField, useToast} from "@terreno/ui"; import type React from "react"; import {useCallback, useState} from "react"; import {useEmailLoginMutation, useEmailSignUpMutation} from "@/store/sdk"; const LoginScreen: React.FC = () => { const [name, setName] = useState(""); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [isSignUp, setIsSignUp] = useState(false); const toast = useToast(); const [emailLogin, {isLoading: isLoginLoading, error: loginError}] = useEmailLoginMutation(); const [emailSignUp, {isLoading: isSignUpLoading, error: signUpError}] = useEmailSignUpMutation(); const handleSubmit = useCallback(async (): Promise => { if (!email || !password) { toast.warn("Email and password are required"); return; } if (isSignUp && !name) { toast.warn("Signup requires name"); return; } try { if (isSignUp) { await emailSignUp({email, name, password}).unwrap(); } else { await emailLogin({email, password}).unwrap(); } } catch (err) { console.error("Authentication error:", err); } }, [email, password, name, isSignUp, emailLogin, emailSignUp, toast]); const toggleMode = useCallback((): void => { setIsSignUp(!isSignUp); }, [isSignUp]); const isLoading = isLoginLoading || isSignUpLoading; const error = loginError || signUpError; const isSubmitDisabled = !email || !password || (isSignUp && !name) || isLoading; return ( {isSignUp ? "Create Account" : "Welcome Back"} {isSignUp && ( )} {Boolean(error) && ( {(error as {data?: {message?: string}})?.data?.message || "An error occurred"} )}