import React, { useState } from 'react'; import { Users, Plus, Edit2, Trash2, Mail, Phone, MapPin } from 'lucide-react'; import { useCRM } from '../context/CRMContext'; import { Customer } from '../types'; const Customers: React.FC = () => { const { customers, addCustomer, updateCustomer, deleteCustomer } = useCRM(); const [isModalOpen, setIsModalOpen] = useState(false); const [editingId, setEditingId] = useState(null); const [formData, setFormData] = useState>({ name: '', email: '', phone: '', city: '', status: 'Active' }); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (editingId) { updateCustomer(editingId, formData); } else { addCustomer(formData as any); } closeModal(); }; const openModal = (customer?: Customer) => { if (customer) { setEditingId(customer.id); setFormData(customer); } else { setEditingId(null); setFormData({ name: '', email: '', phone: '', city: '', status: 'Active' }); } setIsModalOpen(true); }; const closeModal = () => { setIsModalOpen(false); setEditingId(null); }; return (
{/* HEADER */}

Carteira de Clientes

Gestão de Relacionamento (CRM)

{/* LIST */}
{customers.map(c => ( ))}
Cliente Status Contato LTV (Total Pago) Ações
{c.name.charAt(0)}

{c.name}

{c.city || 'Localização n/a'}

{c.status === 'Active' ? 'ATIVO' : c.status === 'Prospect' ? 'PROSPECT' : 'INATIVO'}
{c.email && (
{c.email}
)} {c.phone && (
{c.phone}
)}

R$ {c.totalPurchased?.toLocaleString('pt-BR') || '0,00'}

{customers.length === 0 && (
NO CUSTOMERS FOUND.
)}
{/* MODAL */} {isModalOpen && (

{editingId ? 'Editar Cliente' : 'Novo Cliente'}

setFormData({ ...formData, name: e.target.value })} className="w-full bg-black/40 border border-white/10 rounded-lg px-3 py-2 text-sm text-white focus:border-indigo-500 outline-none transition-all" />
setFormData({ ...formData, phone: e.target.value })} className="w-full bg-black/40 border border-white/10 rounded-lg px-3 py-2 text-sm text-white focus:border-indigo-500 outline-none transition-all" />
setFormData({ ...formData, email: e.target.value })} className="w-full bg-black/40 border border-white/10 rounded-lg px-3 py-2 text-sm text-white focus:border-indigo-500 outline-none transition-all" />
setFormData({ ...formData, city: e.target.value })} className="w-full bg-black/40 border border-white/10 rounded-lg px-3 py-2 text-sm text-white focus:border-indigo-500 outline-none transition-all" />
)}
); }; export default Customers;