import React, { useState } from 'react'; import { useNavigate, Link } from 'react-router-dom'; import { Hexagon, Lock, Mail, ArrowRight, Loader2, Eye, EyeOff, AlertCircle } from 'lucide-react'; import { login, logout } from '../services/dataService'; export const Login: React.FC = () => { const navigate = useNavigate(); const [isLoading, setIsLoading] = useState(false); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [showPassword, setShowPassword] = useState(false); const [error, setError] = useState(''); const [emailError, setEmailError] = useState(''); const validateEmail = (val: string) => { setEmail(val); if (!val) { setEmailError('E-mail é obrigatório'); } else if (!/\S+@\S+\.\S+/.test(val)) { setEmailError('E-mail inválido'); } else { setEmailError(''); } }; const handleLogin = async (e: React.FormEvent) => { e.preventDefault(); if (emailError) return; setIsLoading(true); setError(''); logout(); try { const data = await login({ email, password }); setIsLoading(false); if (data.user.role === 'super_admin') { navigate('/super-admin'); } else { navigate('/'); } } catch (err: any) { setIsLoading(false); setError(err.message || 'Erro ao fazer login. Verifique suas credenciais.'); } }; return (
Fasto.

Acesse sua conta

Ou{' '} registre sua nova organização

{error && (
{error}
)}
validateEmail(e.target.value)} className={`block w-full pl-10 pr-3 py-2 border ${emailError ? 'border-red-300 focus:ring-red-100 focus:border-red-500' : 'border-zinc-300 dark:border-dark-border focus:ring-brand-yellow/20 focus:border-brand-yellow'} rounded-lg bg-white dark:bg-dark-input text-zinc-900 dark:text-zinc-100 placeholder-zinc-400 dark:placeholder-zinc-600 sm:text-sm transition-all`} placeholder="seu@email.com" />
{emailError &&

{emailError}

}
Esqueceu a senha?
setPassword(e.target.value)} className="block w-full pl-10 pr-10 py-2 border border-zinc-300 dark:border-dark-border rounded-lg bg-white dark:bg-dark-input text-zinc-900 dark:text-zinc-100 placeholder-zinc-400 dark:placeholder-zinc-600 sm:text-sm focus:ring-brand-yellow/20 focus:border-brand-yellow transition-all" placeholder="••••••••" />
Powered by Blyzer
); };