// Login Screen — Promoup 360°
function Login({ onLogin }) {
const [email, setEmail] = React.useState('');
const [password, setPassword] = React.useState('');
const [showPass, setShowPass] = React.useState(false);
const [loading, setLoading] = React.useState(false);
const [error, setError] = React.useState('');
const OG = '#EA6B00';
const NAVY = '#12085C';
const handleLogin = async () => {
if (!email.trim() || !password.trim()) { setError('Preencha todos os campos.'); return; }
setLoading(true);
setError('');
const { data, error: err } = await sb.auth.signInWithPassword({ email, password });
setLoading(false);
if (err) {
setError('E-mail ou senha inválidos. Verifique seus dados.');
} else {
onLogin(data.session);
}
};
const onKey = (e) => { if (e.key === 'Enter') handleLogin(); };
const features = [
{ icon: 'calendar', label: 'Agenda integrada com gestão de clientes' },
{ icon: 'budget', label: 'Orçamentos profissionais em minutos' },
{ icon: 'users', label: 'Rede completa de freelancers parceiros' },
{ icon: 'reports', label: 'Relatórios e análises em tempo real' },
];
const inputStyle = {
width: '100%', boxSizing: 'border-box',
padding: '11px 14px', fontSize: 14,
border: '1.5px solid #E2E8F0', borderRadius: 10,
outline: 'none', fontFamily: 'Inter, sans-serif',
color: '#0F172A', background: '#F8FAFC',
transition: 'border-color 0.15s, box-shadow 0.15s',
};
return (
{/* ── Left panel ── */}
{/* Decorative glows — laranja e roxo da marca */}
{/* Grid sutil */}
{/* Logo Promoup — versao com texto branco para fundo escuro */}
{/* Headline */}
Gestão de eventos
inteligente.
Experiências que conectam. Centralize agenda, orçamentos, freelancers e clientes numa plataforma premium.
{/* Features */}
{/* ── Right panel — form ── */}
{/* Header */}
Bem-vindo de volta
Entre na sua conta Promoup para continuar
{/* Fields */}
setEmail(e.target.value)} onKeyDown={onKey} placeholder="seu@email.com" style={inputStyle}
onFocus={e => { e.target.style.borderColor = OG; e.target.style.boxShadow = 'rgba(234,107,0,0.15) 0 0 0 3px'; }}
onBlur={e => { e.target.style.borderColor = '#E2E8F0'; e.target.style.boxShadow = 'none'; }} />
setPassword(e.target.value)} onKeyDown={onKey} placeholder="••••••••" style={{ ...inputStyle, paddingRight: 44 }}
onFocus={e => { e.target.style.borderColor = OG; e.target.style.boxShadow = 'rgba(234,107,0,0.15) 0 0 0 3px'; }}
onBlur={e => { e.target.style.borderColor = '#E2E8F0'; e.target.style.boxShadow = 'none'; }} />
{error && (
{error}
)}
{/* Footer */}
· Gestão de Eventos
Desenvolvido por{' '}
JuFlow Digital
{' '}· © 2026
);
}
Object.assign(window, { Login });