'use client'; import { useState } from 'react'; import Link from 'next/link'; import { useRouter } from 'next/navigation'; import { useAuth } from '@/lib/stores'; import { Button, Input, Card, CardContent, CardHeader, CardTitle } from '@/components'; export default function SignupPage() { const router = useRouter(); const { signup, isLoading, error } = useAuth(); const [formData, setFormData] = useState({ email: '', password: '', confirmPassword: '', }); const [validationErrors, setValidationErrors] = useState<{ email: string; password: string; confirmPassword: string; }>({ email: '', password: '', confirmPassword: '', }); const handleChange = (e: React.ChangeEvent) => { const { name, value } = e.target; setFormData((prev) => ({ ...prev, [name]: value })); setValidationErrors((prev) => ({ ...prev, [name]: '' })); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setValidationErrors({ email: '', password: '', confirmPassword: '' }); // Validação const errors: typeof validationErrors = { email: '', password: '', confirmPassword: '' }; if (!formData.email) { errors.email = 'Email é obrigatório'; } else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(formData.email)) { errors.email = 'Email inválido'; } if (!formData.password) { errors.password = 'Senha é obrigatória'; } else if (formData.password.length < 6) { errors.password = 'Senha deve ter no mínimo 6 caracteres'; } if (!formData.confirmPassword) { errors.confirmPassword = 'Confirmação de senha é obrigatória'; } else if (formData.password !== formData.confirmPassword) { errors.confirmPassword = 'Senhas não correspondem'; } if (Object.values(errors).some((e) => e)) { setValidationErrors(errors); return; } try { await signup({ email: formData.email, password: formData.password, }); router.push('/dashboard/tasks'); } catch (err) { console.error('Signup error:', err); } }; return (
📋 Task Manager

Crie sua conta para começar

{error && (
{error}
)}

Já tem conta?{' '} Faça login

); }