'use client'; import { useState } from 'react'; import Link from 'next/link'; import { PawPrint, Eye, EyeOff, Mail, Lock, User, Calendar, MapPin } from 'lucide-react'; import { DISTRITOS } from '@/lib/validations/auth'; export default function RegisterPage() { const [showPass, setShowPass] = useState(false); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [success, setSuccess] = useState(false); const [form, setForm] = useState({ name: '', email: '', password: '', confirmPassword: '', birthdate: '', district: '', terms: false, }); const set = (k: keyof typeof form) => ( e: React.ChangeEvent ) => setForm((f) => ({ ...f, [k]: e.target.type === 'checkbox' ? (e.target as HTMLInputElement).checked : e.target.value })); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(null); setLoading(true); try { const res = await fetch('/api/auth/register', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(form), }); const data = await res.json(); if (!res.ok) { setError(data.error ?? 'Erro ao criar conta. Tenta de novo.'); } else { setSuccess(true); } } catch { setError('Erro de rede. Verifica a tua ligação.'); } finally { setLoading(false); } }; const inputStyle: React.CSSProperties = { width: '100%', padding: '12px 16px 12px 40px', background: 'var(--cream)', border: '1.5px solid var(--parchment)', borderRadius: '10px', fontFamily: 'var(--font-body)', fontSize: '15px', color: 'var(--soil)', outline: 'none', transition: 'border-color 180ms ease', minHeight: '48px', }; const labelStyle: React.CSSProperties = { fontFamily: 'var(--font-accent)', fontSize: '11px', fontWeight: 400, letterSpacing: '0.08em', textTransform: 'uppercase' as const, color: 'var(--soil-faint)', }; if (success) { return (
🐾

Conta criada!

Bem-vindo/a à PawLink. Já podes explorar animais e fazer adopções.

Entrar na conta
); } return (
{/* Marca */}
PawLink

Criar conta.

Já tens conta?{' '} Entrar

{error && (
{error}
)}
{/* Nome */}
(e.target.style.borderColor = 'var(--terra)')} onBlur={e => (e.target.style.borderColor = 'var(--parchment)')} />
{/* Email */}
(e.target.style.borderColor = 'var(--terra)')} onBlur={e => (e.target.style.borderColor = 'var(--parchment)')} />
{/* Password */}
(e.target.style.borderColor = 'var(--terra)')} onBlur={e => (e.target.style.borderColor = 'var(--parchment)')} />
{/* Confirmar password */}
(e.target.style.borderColor = 'var(--terra)')} onBlur={e => (e.target.style.borderColor = 'var(--parchment)')} />
{/* Data de nascimento */}
(e.target.style.borderColor = 'var(--terra)')} onBlur={e => (e.target.style.borderColor = 'var(--parchment)')} />
{/* Distrito */}
{/* Termos */}
); }