import React, { useState } from "react"; import { useAuth } from "../contexts/AuthContext"; import { Button } from "../components/Button"; import { Input } from "../components/Input"; import { UserRole } from "../types"; interface LoginProps { onNavigate?: (page: string) => void; } export const Login: React.FC = ({ onNavigate }) => { const { login, availableUsers } = useAuth(); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [showPassword, setShowPassword] = useState(false); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(""); const handleLogin = async (e: React.FormEvent) => { e.preventDefault(); setIsLoading(true); setError(""); try { const success = await login(email, password); // If mock login returns true (it doesn't throw), we are good. // If real login throws, we catch it below. if (!success) { // Fallback for mock if it returns false without throwing setError( "Credenciais inválidas, tente novamente ou tente um dos e-mails de demonstração." ); } } catch (err: any) { setError(err.message || "Erro ao realizar login"); } setIsLoading(false); }; const fillCredentials = (userEmail: string) => { setEmail(userEmail); setPassword("123456"); // Dummy password to pass HTML5 validation }; const getRoleLabel = (role: UserRole) => { switch (role) { case UserRole.SUPERADMIN: return "Superadmin"; case UserRole.BUSINESS_OWNER: return "Empresa"; case UserRole.PHOTOGRAPHER: return "Fotógrafo"; case UserRole.EVENT_OWNER: return "Cliente"; default: return role; } }; return (
{/* Logo dentro do card */}
Photum Formaturas
Bem-vindo de volta

Acesse sua conta

Não tem uma conta?{" "}

setEmail(e.target.value)} className="w-full px-2.5 sm:px-3 md:px-4 py-2 sm:py-2.5 md:py-3 text-xs sm:text-sm md:text-base border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:border-transparent transition-all" style={{ focusRing: "2px solid #B9CF33" }} onFocus={(e) => (e.target.style.borderColor = "#B9CF33")} onBlur={(e) => (e.target.style.borderColor = "#d1d5db")} /> {error && ( {error} )}
setPassword(e.target.value)} className="w-full px-2.5 sm:px-3 md:px-4 py-2 sm:py-2.5 md:py-3 text-xs sm:text-sm md:text-base border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:border-transparent transition-all" style={{ focusRing: "2px solid #5A4B81" }} onFocus={(e) => (e.target.style.borderColor = "#5A4B81")} onBlur={(e) => (e.target.style.borderColor = "#d1d5db")} />
{/* Demo Users Quick Select */}

Usuários de Demonstração (Clique para preencher)

{[ { id: "1", name: "Dev Admin", email: "admin@photum.com", role: UserRole.SUPERADMIN }, { id: "2", name: "PHOTUM CEO", email: "empresa@photum.com", role: UserRole.BUSINESS_OWNER }, { id: "3", name: "COLABORADOR PHOTUM", email: "foto@photum.com", role: UserRole.PHOTOGRAPHER }, ].map((user) => ( ))}
); };