'use client'; import { useState } from 'react'; import Link from 'next/link'; import { useRouter } from 'next/navigation'; import { signIn } from 'next-auth/react'; import { PawPrint, Eye, EyeOff, Mail, Lock, AlertCircle } from 'lucide-react'; export default function LoginPage() { const router = useRouter(); const [showPass, setShowPass] = useState(false); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [loading, setLoading] = useState(false); const [error, setError] = useState(''); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(''); setLoading(true); try { const result = await signIn('credentials', { email, password, redirect: false, }); if (result?.error) { setError('Email ou palavra-passe incorrectos. Tenta de novo.'); } else { router.push('/'); router.refresh(); } } catch { setError('Erro de rede. Verifica a tua ligação e tenta de novo.'); } finally { setLoading(false); } }; const inputStyle: React.CSSProperties = { width: '100%', padding: '12px 16px 12px 40px', background: 'var(--color-bg, var(--cream))', border: '1.5px solid var(--color-border, var(--parchment))', borderRadius: '10px', fontFamily: 'var(--font-body)', fontSize: '15px', color: 'var(--color-text, var(--soil))', outline: 'none', transition: 'border-color 180ms ease', minHeight: '48px', boxSizing: 'border-box', }; const labelStyle: React.CSSProperties = { fontFamily: 'var(--font-accent, monospace)', fontSize: '11px', fontWeight: 400, letterSpacing: '0.08em', textTransform: 'uppercase', color: 'var(--color-muted, var(--soil-faint))', }; return (
{/* Marca */}
PetLink

Iniciar sessão.

Ainda não tens conta?{' '} Registar

{/* Erro */} {error && (
{error}
)}
{/* Email */}
setEmail(e.target.value)} placeholder="o.teu@email.pt" required autoComplete="email" style={inputStyle} onFocus={e => (e.target.style.borderColor = 'var(--color-terra, var(--terra))')} onBlur={e => (e.target.style.borderColor = 'var(--color-border, var(--parchment))')} />
{/* Password */}
Esqueceste-a?
setPassword(e.target.value)} placeholder="A tua palavra-passe" required autoComplete="current-password" style={{ ...inputStyle, paddingRight: '44px' }} onFocus={e => (e.target.style.borderColor = 'var(--color-terra, var(--terra))')} onBlur={e => (e.target.style.borderColor = 'var(--color-border, var(--parchment))')} />
{/* Submit */} {/* Registar */}

Não tens conta?{' '} Criar conta grátis

); }