import React, { useState } from 'react'; import { KeyRound, Loader2, X } from 'lucide-react'; import { HybridBackend } from '../services/backend.ts'; import { useToast } from '../contexts/ToastContext.tsx'; interface Props { forced?: boolean; // troca obrigatória (1º login com senha temporária) — não pede senha atual nem deixa cancelar onClose?: () => void; onDone: () => void; } const inp = 'w-full border border-gray-200 rounded-xl px-3 py-2.5 text-sm font-medium text-gray-800 outline-none focus:border-teal-500 focus:ring-2 focus:ring-teal-100 transition-all'; export const ChangePasswordModal: React.FC = ({ forced, onClose, onDone }) => { const toast = useToast(); const [atual, setAtual] = useState(''); const [nova, setNova] = useState(''); const [conf, setConf] = useState(''); const [saving, setSaving] = useState(false); const submit = async () => { if (nova.length < 6) { toast.error('A NOVA SENHA DEVE TER NO MÍNIMO 6 CARACTERES.'); return; } if (nova !== conf) { toast.error('AS SENHAS NÃO COINCIDEM.'); return; } setSaving(true); try { const r = await HybridBackend.changeMyPassword(forced ? undefined : atual, nova); if (!r.success) { toast.error(r.message || 'ERRO AO TROCAR SENHA.'); return; } toast.success('SENHA ALTERADA COM SUCESSO!'); onDone(); } catch { toast.error('ERRO AO TROCAR SENHA.'); } finally { setSaving(false); } }; return (

{forced ? 'Defina uma nova senha' : 'Trocar senha'}

{!forced && onClose && }
{forced && (

Sua senha é temporária. Defina uma nova para continuar usando o sistema.

)} {!forced && setAtual(e.target.value)} className={inp} autoComplete="current-password" />} setNova(e.target.value)} className={inp} autoComplete="new-password" /> setConf(e.target.value)} className={inp} autoComplete="new-password" />
{!forced && onClose && }
); };