'use client'; import { useState } from 'react'; import { useRouter } from 'next/navigation'; import Link from 'next/link'; import { useAuthStore } from '@/stores/authStore'; export default function LoginPage() { const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [error, setError] = useState(''); const [loading, setLoading] = useState(false); const router = useRouter(); const { setAuth } = useAuthStore(); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); setError(''); try { const API = process.env.NEXT_PUBLIC_API_URL || ''; const res = await fetch(`${API}/api/auth/login`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email, password }), }); const data = await res.json(); if (!res.ok) throw new Error(data.detail || 'Credenciais inválidas'); setAuth(data.access_token, data.user); router.push('/scan'); } catch (err: any) { setError(err.message || 'Credenciais inválidas'); } finally { setLoading(false); } }; return (
{/* Orbs */}
{/* Logo */}

ALETHEIA

A verdade sobre o que você come

Entrar

setEmail(e.target.value)} required className="w-full px-4 py-3.5 rounded-xl bg-dark border border-dark-border text-white placeholder-gray-600 focus:border-primary focus:outline-none focus:ring-1 focus:ring-primary/30 transition" placeholder="seu@email.com" />
setPassword(e.target.value)} required className="w-full px-4 py-3.5 rounded-xl bg-dark border border-dark-border text-white placeholder-gray-600 focus:border-primary focus:outline-none focus:ring-1 focus:ring-primary/30 transition" placeholder="••••••••" />
{error &&

{error}

}

Não tem conta? Criar conta grátis

); }