// Tela: Contatos — lista + detalhe const { useState: useContatoState } = React; /* ─── Modal criar / editar ──────────────────────────────────── */ function ContatoModal({ onClose, onSave, initialData }) { const isEdit = !!initialData; const [nome, setNome] = useContatoState(initialData?.nome || ''); const [cargo, setCargo] = useContatoState(initialData?.cargo || ''); const [empresa, setEmpresa] = useContatoState(initialData?.empresa || ''); const [email, setEmail] = useContatoState(initialData?.email || ''); const [fone, setFone] = useContatoState(initialData?.fone || ''); const [cidade, setCidade] = useContatoState(initialData?.cidade || ''); const [tag, setTag] = useContatoState(initialData?.tag || 'Recorrente'); const [avatar, setAvatar] = useContatoState(initialData?.avatar || null); const [avatarDrag, setAvatarDrag] = useContatoState(false); const avatarRef = React.useRef(null); const toast = useToast(); const TAGS = ['VIP', 'Quente', 'Recorrente', 'Frio']; const TAG_CLS = { VIP: 'pill-dark', Quente: 'pill-pink', Recorrente: 'pill-mint', Frio: '' }; const valid = nome.trim().length > 0; const handleAvatarFile = (file) => { if (!file || !file.type.startsWith('image/')) return; const url = URL.createObjectURL(file); setAvatar(url); }; const submit = () => { if (!valid) return; const dados = { id: initialData?.id || Date.now(), avatar: avatar || `https://i.pravatar.cc/120?img=${Math.floor(Math.random()*70)+1}`, nome: nome.trim(), cargo: cargo.trim() || 'Contato', empresa: empresa.trim() || '—', email: email.trim() || '—', fone: fone.trim() || '—', cidade: cidade.trim() || '—', tag, }; if (onSave) onSave(dados); toast(isEdit ? `Contato "${nome.trim().split(' ')[0]}" atualizado ✓` : `Contato "${nome.trim().split(' ')[0]}" adicionado ✓` ); onClose(); }; return (