From 40e6746f8484c27eb97ad0efd7a91801af3a3e34 Mon Sep 17 00:00:00 2001 From: m1guelmcf Date: Thu, 13 Nov 2025 10:48:23 -0300 Subject: [PATCH] Identidade visual --- app/login/page.tsx | 149 +++++++++++++++++---------------- components/Sidebar.tsx | 183 ++++++++++++++++++++++++++--------------- 2 files changed, 196 insertions(+), 136 deletions(-) diff --git a/app/login/page.tsx b/app/login/page.tsx index b29ed90..4be0708 100644 --- a/app/login/page.tsx +++ b/app/login/page.tsx @@ -1,10 +1,8 @@ // Caminho: app/login/page.tsx - "use client"; - -import {usersService} from "@/services/usersApi.mjs"; +import { usersService } from "@/services/usersApi.mjs"; import { LoginForm } from "@/components/LoginForm"; import Link from "next/link"; import Image from "next/image"; @@ -14,70 +12,67 @@ import { ArrowLeft, X } from "lucide-react"; import { useState } from "react"; import RenderFromTemplateContext from "next/dist/client/components/render-from-template-context"; - export default function LoginPage() { const [isModalOpen, setIsModalOpen] = useState(false); const [email, setEmail] = useState(""); const [isLoading, setIsLoading] = useState(false); - const [message, setMessage] = useState<{ type: "success" | "error"; text: string } | null>(null); - + const [message, setMessage] = useState<{ + type: "success" | "error"; + text: string; + } | null>(null); const handleOpenModal = () => { // Tenta pegar o email do input do formulário de login - const emailInput = document.querySelector('input[type="email"]') as HTMLInputElement; + const emailInput = document.querySelector( + 'input[type="email"]' + ) as HTMLInputElement; if (emailInput?.value) { setEmail(emailInput.value); } setIsModalOpen(true); }; - const handleResetPassword = async () => { - if (!email.trim()) { - setMessage({ type: "error", text: "Por favor, insira um e-mail válido." }); - return; - } + if (!email.trim()) { + setMessage({ + type: "error", + text: "Por favor, insira um e-mail válido.", + }); + return; + } + setIsLoading(true); + setMessage(null); - setIsLoading(true); - setMessage(null); - - - try { - // Chama o método que já faz o fetch corretamente - const data = await usersService.resetPassword(email); - - - console.log("Resposta resetPassword:", data); - - - setMessage({ - type: "success", - text: "E-mail de recuperação enviado! Verifique sua caixa de entrada.", - }); - - - setTimeout(() => { - setIsModalOpen(false); - setMessage(null); - setEmail(""); - }, 2000); - } catch (error) { - console.error("Erro no reset de senha:", error); - setMessage({ - type: "error", - text: - error instanceof Error - ? error.message - : "Erro ao enviar e-mail. Tente novamente.", - }); - } finally { - setIsLoading(false); - } -}; + try { + // Chama o método que já faz o fetch corretamente + const data = await usersService.resetPassword(email); + console.log("Resposta resetPassword:", data); + setMessage({ + type: "success", + text: "E-mail de recuperação enviado! Verifique sua caixa de entrada.", + }); + setTimeout(() => { + setIsModalOpen(false); + setMessage(null); + setEmail(""); + }, 2000); + } catch (error) { + console.error("Erro no reset de senha:", error); + setMessage({ + type: "error", + text: + error instanceof Error + ? error.message + : "Erro ao enviar e-mail. Tente novamente.", + }); + } finally { + setIsLoading(false); + } + }; const closeModal = () => { setIsModalOpen(false); @@ -85,30 +80,46 @@ export default function LoginPage() { setEmail(""); }; - return ( <>
- {/* PAINEL ESQUERDO: O Formulário */}
- {/* Link para Voltar */}
- + Voltar à página inicial
- {/* O contêiner principal que agora terá a sombra e o estilo de card */}
-
-

Acesse sua conta

-

Bem-vindo(a) de volta ao MedConnect!

+ {/* NOVO: Bloco da Logo e Nome (Painel Esquerdo) */} +
+ Logo MediConnect + + MedConnect +
+ {/* FIM: Bloco da Logo e Nome */} +
+ {/* Título de boas-vindas movido para baixo da logo */} +

+ Acesse sua conta +

+

+ Bem-vindo(a) de volta ao MedConnect! +

+
{/* Children para o LoginForm */} @@ -122,9 +133,10 @@ export default function LoginPage() {
-
- Não tem uma conta de paciente? + + Não tem uma conta de paciente?{" "} + Crie uma agora @@ -141,7 +153,7 @@ export default function LoginPage() { src="https://images.unsplash.com/photo-1576091160550-2173dba999ef?q=80&w=2070" alt="Médica utilizando um tablet na clínica MedConnect" fill - style={{ objectFit: 'cover' }} + style={{ objectFit: "cover" }} priority /> {/* Camada de sobreposição para escurecer a imagem e destacar o texto */} @@ -156,15 +168,13 @@ export default function LoginPage() { Tecnologia e Cuidado a Serviço da Sua Saúde.

- Acesse seu portal para uma experiência de saúde integrada, segura e eficiente. + Acesse seu portal para uma experiência de saúde integrada, segura + e eficiente.

- -
- {/* Modal de Recuperação de Senha */} {isModalOpen && (
@@ -177,20 +187,23 @@ export default function LoginPage() { - {/* Cabeçalho */}
-

Recuperar Senha

+

+ Recuperar Senha +

Insira seu e-mail e enviaremos um link para redefinir sua senha.

- {/* Input de e-mail */}
-
- {/* Mensagem de feedback */} {message && (
)} - {/* Botões */}