// Módulo CLIENTES — CRM + ficha completa const ClientesPage = () => { const [selected, setSelected] = React.useState(null); if (selected) return setSelected(null)}/>; return (
CRM · 1.302 clientes ativos

Clientes

Base unificada · histórico de compras · segmentação RFM · automações.

{}} tabs={[ { id: "todos", label: "Todos", count: 1302 }, { id: "champions", label: "Champions", count: 142 }, { id: "leais", label: "Leais", count: 318 }, { id: "risco", label: "Em risco", count: 204 }, { id: "novos", label: "Novos", count: 64 }, { id: "bloqueados", label: "Bloqueados" }, { id: "aniver", label: "Aniversariantes" }, ]}/>
{CLIENTES.length} resultados · página 1/162
{CLIENTES.map(c => ( setSelected(c)} style={{cursor:'pointer'}}> ))}
Cliente@InstagramCidadeNívelRFMPedidosTotal gastoCashbackÚltima compra
e.stopPropagation()}/> {c.nome} {c.instagram} {c.cidade} {c.rfm} {c.pedidos} {brl(c.totalGasto)} {c.cashback > 0 ? brl(c.cashback) : "—"} {c.ultimaCompra}
); }; const ClienteFicha = ({ cliente, onClose }) => { const [tab, setTab] = React.useState("resumo"); return (
Cliente desde {cliente.ultimaCompra.split("/").slice(1).join("/")} · {cliente.id}

{cliente.nome} {cliente.rfm}

{cliente.instagram} · {cliente.telefone} · {cliente.cidade}

{tab === "resumo" && } {tab === "dados" && } {tab === "pedidos" && } {(tab === "endereco" || tab === "financeiro" || tab === "tamanhos" || tab === "notas" || tab === "config") && ( )}
); }; const ClienteResumo = ({ cliente }) => (

Compras por canal

Últimas compras

Ver todas →
DataCanalItensValorStatus
L-284719/05LiveVestido Luna · M{brl(189.90)}
L-284019/05LiveShort Linho · 38{brl(99.90)}
S-1284719/05SiteCropped · P + Saia · P{brl(359.80)}
L-274212/05LiveMacacão Linho · M{brl(379.90)}
P-842105/05LojaBlazer Linho · M{brl(339.90)}

Progressão de nível

→ próximo: N{cliente.nivel+1}
Faltam {brl(640.00)} em compras para subir.

Tags

VIP Live Atacado Aniversária Maio

Resumo geográfico

Cidade
{cliente.cidade}
Origem
{cliente.origem}
Responsável
Letícia Borges
Aniversário
{cliente.aniversario} · em 0 dias 🎂
); const ClienteDados = ({ cliente }) => (

Dados cadastrais

); const ClientePedidos = ({ cliente }) => (
{Array.from({length: 12}).map((_, i) => { const p = PRODUTOS[i % PRODUTOS.length]; const canal = ["Live", "Site", "Loja", "Live", "Live"][i % 5]; return ( ); })}
DataCanalItensValorPagamentoStatus
L-{2847 - i*3} {19 - Math.floor(i/2)}/05 {canal} {p.nome} · {Object.keys(p.tamanhos)[1]} {brl(p.preco)} {i % 3 === 0 ? 'Pix' : i % 3 === 1 ? 'Cartão 2x' : 'Crediário 3x'}
); Object.assign(window, { ClientesPage, ClienteFicha });