From a48de5fed2260bd868575d01a516e7976acc39ae Mon Sep 17 00:00:00 2001 From: bender Date: Wed, 11 Mar 2026 19:54:53 +0000 Subject: [PATCH] Update src/app/login/page.tsx --- src/app/login/page.tsx | 289 +++++++++++++++++++++++++++-------------- 1 file changed, 194 insertions(+), 95 deletions(-) diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 7a1bd0a..a63a45b 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -2,46 +2,69 @@ import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered'; -import { useState } from "react"; -import { Eye, EyeOff, Mail, Lock } from 'lucide-react'; -import Input from '@/components/form/Input'; +import ContactCTA from '@/components/sections/contact/ContactCTA'; +import FooterLogoEmphasis from '@/components/sections/footer/FooterLogoEmphasis'; +import { Mail, Lock, ArrowRight, AlertCircle } from 'lucide-react'; +import { useState } from 'react'; export default function LoginPage() { - const [email, setEmail] = useState(""); - const [password, setPassword] = useState(""); - const [showPassword, setShowPassword] = useState(false); - const [errors, setErrors] = useState<{ email?: string; password?: string }>({}); - const [isSubmitted, setIsSubmitted] = useState(false); + const [formData, setFormData] = useState({ + email: '', + password: '' + }); + const [errors, setErrors] = useState<{ [key: string]: string }>({}); + const [isSubmitting, setIsSubmitting] = useState(false); const validateForm = () => { - const newErrors: { email?: string; password?: string } = {}; + const newErrors: { [key: string]: string } = {}; - if (!email) { - newErrors.email = "Email é obrigatório"; - } else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) { - newErrors.email = "Email inválido"; + if (!formData.email) { + newErrors.email = 'Email é obrigatório'; + } else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(formData.email)) { + newErrors.email = 'Email inválido'; } - if (!password) { - newErrors.password = "Senha é obrigatória"; - } else if (password.length < 6) { - newErrors.password = "Senha deve ter no mínimo 6 caracteres"; + if (!formData.password) { + newErrors.password = 'Senha é obrigatória'; + } else if (formData.password.length < 6) { + newErrors.password = 'Senha deve ter pelo menos 6 caracteres'; } - return newErrors; + setErrors(newErrors); + return Object.keys(newErrors).length === 0; }; - const handleSubmit = (e: React.FormEvent) => { + const handleChange = (e: React.ChangeEvent) => { + const { name, value } = e.target; + setFormData(prev => ({ + ...prev, + [name]: value + })); + if (errors[name]) { + setErrors(prev => ({ + ...prev, + [name]: '' + })); + } + }; + + const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); - const newErrors = validateForm(); - setErrors(newErrors); - if (Object.keys(newErrors).length === 0) { - setIsSubmitted(true); - console.log("Login attempt:", { email, password }); - setTimeout(() => { - setIsSubmitted(false); - }, 2000); + if (!validateForm()) { + return; + } + + setIsSubmitting(true); + try { + await new Promise(resolve => setTimeout(resolve, 1000)); + console.log('Login attempt:', formData); + alert('Login bem-sucedido!'); + setFormData({ email: '', password: '' }); + } catch (error) { + setErrors({ submit: 'Erro ao fazer login. Tente novamente.' }); + } finally { + setIsSubmitting(false); } }; @@ -62,99 +85,175 @@ export default function LoginPage() { -
-
-
-
-

Bem-vindo de Volta

-

Faça login para acessar seu progresso

-
+
+
+
+

Bem-vindo de volta

+

Faça login na sua conta FitFlow Pro

+
+
-
- - - {errors.email && ( -

{errors.email}

- )} -
- -
-
+ + ); -} +} \ No newline at end of file