From 5a6c4ca430fc3f4d65e708187ee6213803175353 Mon Sep 17 00:00:00 2001 From: bender Date: Wed, 11 Mar 2026 20:24:15 +0000 Subject: [PATCH] Add src/app/auth/login/page.tsx --- src/app/auth/login/page.tsx | 168 ++++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 src/app/auth/login/page.tsx diff --git a/src/app/auth/login/page.tsx b/src/app/auth/login/page.tsx new file mode 100644 index 0000000..c9dc7ed --- /dev/null +++ b/src/app/auth/login/page.tsx @@ -0,0 +1,168 @@ +"use client"; + +import { useState } from "react"; +import { useRouter } from "next/navigation"; +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered'; +import FooterBase from '@/components/sections/footer/FooterBase'; +import Input from '@/components/form/Input'; +import ButtonDirectionalHover from '@/components/button/ButtonDirectionalHover/ButtonDirectionalHover'; +import { Mail, Lock, LogIn } from 'lucide-react'; + +export default function LoginPage() { + const router = useRouter(); + const [email, setEmail] = useState(""); + const [password, setPassword] = useState(""); + const [error, setError] = useState(""); + const [isLoading, setIsLoading] = useState(false); + + const handleLogin = async (e: React.FormEvent) => { + e.preventDefault(); + setError(""); + setIsLoading(true); + + try { + const response = await fetch("/api/auth/login", { + method: "POST", headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ email, password }), + }); + + if (!response.ok) { + const data = await response.json(); + throw new Error(data.message || "Login failed"); + } + + router.push("/dashboard"); + } catch (err: any) { + setError(err.message); + } finally { + setIsLoading(false); + } + }; + + return ( + + + +
+
+
+
+
+ +

Login

+
+

Acesse sua conta FitFlow Pro

+
+ +
+
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + {error && ( +
+

{error}

+
+ )} + +
+ +
+
+ +
+

+ Não tem conta?{" "} + + Registre-se + +

+
+
+
+
+ + +
+ ); +}