import PlayzerIcon from '@/assets/playzer-favicon-512-transparent.png'; import { Button } from '@/components/ui/button'; import { Field, FieldError, FieldLabel } from '@/components/ui/field'; import { Input } from '@/components/ui/input'; import { apiClient, authClient } from '@/lib/api-client'; import { useAuth } from '@/lib/auth'; import { acceptStoredPendingInvite } from '@/lib/invitations'; import { zodResolver } from '@hookform/resolvers/zod'; import { Link } from '@tanstack/react-router'; import { useState } from 'react'; import { useForm } from 'react-hook-form'; import { z } from 'zod'; const loginSchema = z.object({ email: z.string().email('Ingresá un email válido.'), password: z.string().min(6, 'La contraseña debe tener al menos 6 caracteres.'), }); type LoginForm = z.infer; export function LoginPage() { const { signInWithPassword } = useAuth(); const [submitError, setSubmitError] = useState(null); const { register, handleSubmit, formState: { errors, isSubmitting, isValid }, } = useForm({ resolver: zodResolver(loginSchema), mode: 'onChange', defaultValues: { email: '', password: '', }, }); async function handlePostLogin() { await acceptStoredPendingInvite(apiClient.complexes.acceptPendingInvitations); } const onSubmit = async (values: LoginForm) => { setSubmitError(null); try { await signInWithPassword(values); await handlePostLogin(); } catch { setSubmitError('No pudimos iniciar sesión. Verificá tus credenciales.'); } }; const handleGoogleSignIn = async () => { setSubmitError(null); try { await authClient.signIn.social({ provider: 'google', callbackURL: `${window.location.origin}/auth-callback`, }); } catch { setSubmitError('No pudimos iniciar sesión con Google.'); } }; return (
Playzer
Playzer

Iniciar sesión

Ingresá con tu cuenta para acceder a Playzer.

O
Email Contraseña {submitError &&

{submitError}

}

¿Olvidaste tu contraseña? | Crear cuenta

); }