// Brisas do Lago — Área do cliente logado // Dashboard pessoal: contrato, boletos, obra const { useState, useEffect } = React; function ClientApp({onLogout}) { const [tab, setTab] = useState('home'); const cliente = window.BL.CLIENTES.find(c => c.id === window.BL.CLIENTE_LOGADO_ID); const lote = window.BL.LOTE_BY_NUM[cliente.lote]; return (
{/* Header pessoal */}
◇ Bem-vinda de volta

{cliente.nome}

◐ Cliente desde 2024 · Lote {cliente.lote} · Quadra {lote.quadra}
Contrato
{fmtBRL(cliente.valorContrato)}
{cliente.parcelasPagas} de {cliente.parcelasTotal} parcelas pagas
{/* Tabs */}
{[ ['home', 'Visão geral', 'home'], ['boletos', 'Boletos & pagamentos', 'invoice'], ['contrato', 'Contrato', 'file'], ['obra', 'Andamento da obra', 'construction'], ['mapa', 'Meu lote', 'pin'], ].map(([k, lbl, icon]) => ( ))}
{tab === 'home' && } {tab === 'boletos' && } {tab === 'contrato' && } {tab === 'obra' && } {tab === 'mapa' && }
); } function ClientHome({cliente, lote, onTab}) { const proximaParcela = cliente.valorContrato * 0.8 / 48; return (
{/* Próximo boleto */}
◐ Próximo vencimento
{fmtBRL(proximaParcela)}
Parcela {cliente.parcelasPagas + 1}/48 · vence em {cliente.proxBoleto}/2026
{/* Próximas parcelas */}
◇ Próximos boletos
{[0,1,2,3].map(i => { const num = cliente.parcelasPagas + 1 + i; const month = ['Jun','Jul','Ago','Set','Out','Nov','Dez'][i]; return (
{month}
{cliente.dia}
Parcela {num}/48
vencimento {cliente.dia}/{['06','07','08','09'][i]}/2026
{fmtBRL(proximaParcela)}
); })}
{/* Obra resumo */}
◇ Andamento do empreendimento
52%
concluído · entrega prevista Set/2026
Concluído Em andamento Pendente
{/* Lote em destaque */}
◇ Seu lote
Quadra {lote.quadra} · Lote {lote.numero}
{lote.area.toFixed(0)} m² · {lote.frente.toFixed(1)}m de frente {lote.vistaLago && '· vista para o lago'}
{/* Documentos */}
◇ Documentos
{[ ['Contrato assinado', '2.1 MB'], ['Convenção do condomínio', '480 KB'], ['Memorial descritivo', '1.3 MB'], ['Planta do lote', '210 KB'], ].map(([d, s]) => ( ))}
{/* Atendimento */}
◇ Atendimento
Tem dúvidas sobre seu contrato, obra ou pagamentos? Nossa equipe responde em até 2h em horário comercial.
); } function ClientBoletos({cliente}) { const proximaParcela = cliente.valorContrato * 0.8 / 48; const meses = ['Jan','Fev','Mar','Abr','Mai','Jun','Jul','Ago','Set','Out','Nov','Dez']; // Construir lista de 48 parcelas const parcelas = []; for (let i = 1; i <= 48; i++) { const status = i <= cliente.parcelasPagas ? 'pago' : i === cliente.parcelasPagas + 1 ? 'aberto' : 'futuro'; const mes = meses[(i + 1) % 12]; const ano = 2024 + Math.floor((i + 1) / 12); parcelas.push({num:i, mes, ano, valor: proximaParcela, status, dia: cliente.dia}); } return (
◇ Histórico completo · {parcelas.length} parcelas
{parcelas.map(p => (
#{String(p.num).padStart(2,'0')}
Parcela {p.num}/48
{p.dia}/{p.mes}/{p.ano}
{fmtBRL(p.valor)}
{p.status === 'pago' && Pago} {p.status === 'aberto' && Em aberto} {p.status === 'futuro' && Futuro}
{p.status === 'pago' ? `pago em ${p.dia - 2}/${p.mes}` : p.status === 'aberto' ? 'PIX disponível' : '—'}
{p.status === 'aberto' && } {p.status === 'pago' && }
))}
); } function StatusBadge({type, children}) { const colors = { success: {bg:'var(--green-soft)', fg:'var(--green-deep)'}, warn: {bg:'var(--terra-soft)', fg:'var(--terra-deep)'}, danger: {bg:'#F4CFC9', fg:'#8B2A1F'}, muted: {bg:'var(--bg-elev)', fg:'var(--ink-faint)'}, }; const c = colors[type] || colors.muted; return ( {children} ); } function ClientContrato({cliente, lote}) { return (
Contrato Brisas do Lago · Lote {lote.numero}
assinado em 14/03/2024 · 11 páginas
CONTRATO PARTICULAR DE COMPROMISSO DE COMPRA E VENDA
LOTEAMENTO BRISAS DO LAGO – Primeira Cruz/MA

Por este instrumento particular, entre as partes abaixo qualificadas, fica certa e convencionada a celebração deste contrato.

I – DAS PARTES

VENDEDORA – LOTEAMENTO BRISAS DO LAGO CASSÓ SPE LTDA, CNPJ 53.205.736/0001-62, com sede à Avenida Fátima Costa, S/Nº, Lagoa do Cassó, Primeira Cruz/MA.

COMPRADOR(A) – {cliente.nome}, brasileira, residente em São Luís/MA.

II – DO IMÓVEL

Condomínio Brisas do Lago, situado no Povoado Cassó, Primeira Cruz/MA, matrícula nº 518, livro 2D.

III – DO COMPROMISSO

Lote nº {lote.numero}, Quadra {lote.quadra}, área total de {lote.area.toFixed(2)} m².

IV – DO PREÇO E CONDIÇÕES

Preço total: {fmtBRL(cliente.valorContrato)}, pago em 10% no ato, 10% na entrega da chave e 48 parcelas de {fmtBRL(cliente.valorContrato * 0.8 / 48)}.

V – DA INFRAESTRUTURA

A VENDEDORA se obriga a executar, às suas exclusivas expensas, sem ônus para o COMPRADOR: terraplanagem, drenagem, pavimentação, rede de água com poço artesiano, rede elétrica individual, portaria 24h, píer privativo, quadra poliesportiva, urbanização das ruas e paisagismo, conforme cronograma anexo.

Documento assinado digitalmente (D4Sign · ID 3f8e2a)
Página 1 de 11 · use as setas para navegar
◇ Resumo do contrato
◇ Anexos
{['Convenção condomínio', 'Memorial descritivo', 'Planta do lote', 'Cronograma de obra'].map(d => ( ))}
); } function Row({k, v, bold}) { return (
{k} {v}
); } function ClientObra() { const fases = window.BL.OBRA; const total = fases.reduce((s, f) => s + f.pct, 0) / fases.length; return (
◇ Progresso geral
{total.toFixed(0)}%
Conclusão prevista: Setembro de 2026
◇ Fases da obra
{fases.map((f, i) => (
{f.status === 'concluido' ? : {i+1}}
{f.fase}
0 ? 'var(--green-deep)' : 'var(--ink-faint)'}}>{f.pct}% {f.prev}
))}
); } function ClientMeuLote({cliente, lote}) { const [hover, setHover] = useState(null); return (
{}}/>
◇ Especificações
); } window.ClientApp = ClientApp;