'use client'; import React, {ChangeEvent, useState} from 'react'; import Link from 'next/link'; import {useRouter, useSearchParams} from 'next/navigation'; import {Alert, Box, Button, Paper, Stack, TextField, Typography} from '@mui/material'; import GoogleIcon from '@mui/icons-material/Google'; import AppleIcon from '@mui/icons-material/Apple'; import {ApiError} from '@/lib/api/client'; import {useAuth} from "@/src/auth/AuthProvider"; import {GuestGuard} from "@/src/auth/GuestGuard"; type LoginValues = { email: string; password: string; }; const Page: React.FC = () => { const router = useRouter(); const searchParams = useSearchParams(); const next = searchParams.get('next') || '/'; const {login} = useAuth() const [values, setValues] = useState({ email: '', password: '', }); const [isSubmitting, setIsSubmitting] = useState(false); const [serverError, setServerError] = useState(''); const handleChange = (field: keyof LoginValues) => (event: ChangeEvent) => { setValues((current) => ({ ...current, [field]: event.target.value, })); }; const handleSubmit = async (event: React.SubmitEvent) => { event.preventDefault(); setServerError(''); setIsSubmitting(true); try { await login(values) router.replace(next); router.refresh() } catch (error: unknown) { if (error instanceof ApiError) { setServerError(error.message); } else { setServerError('No fue posible iniciar sesión') } } finally { setIsSubmitting(false) } }; const handleGoogleLogin = () => { // TODO: wire up Google auth here console.log('Continuar con Google'); }; const handleAppleLogin = () => { // TODO: wire up Apple auth here console.log('Continuar con Apple'); }; return ( Bienvenido Regístrate o inicia sesión con tu cuenta preferida {serverError ? {serverError} : null} ¿No tienes cuenta?{' '} Regístrate ---------- o ----------- ); }; export default Page;