// Demo pages — each page renders inside the InteractiveDemo shell. // Visually faithful to the BinGest screenshots; data is mocked. // ----- Reusable bits ------------------------------------------------------ function PageHead({ title, sub, right }) { return (

{title}

{sub &&
{sub}
}
{right &&
{right}
}
); } function Filter({ label, icon = true }) { return ( ); } function DateField() { return ( dd / mm / aaaa 📅 ); } // =========================================================================== // 1. DASHBOARD (uses existing DashboardMock-style content) // =========================================================================== function PageDashboard() { return (
{/* Hello + export */}

Olá, BinGest

Pimba Construções · quarta-feira, 13 de maio
{/* Tabs */}
{["Consolidado", "Somente Obras", "Somente Assistência Técnica", "Por Cliente"].map((t, i) => )}
{/* KPIs */}
Obras Ativas
1
Funcionários Ativos
2
Receita Bruta Total
R$ 19.500,00
maio de 2026
Resultado Operacional
R$ 11.290,00
57,9%
{/* Soft cards */}
Obras
R$ 19.500,00
Margem bruta 57,9%
Assistência Técnica
R$ 0,00
Margem bruta 0,0%
{/* DRE + chart */}
DRE Consolidado % Rec. Valor
{[ { l: "Receita Bruta Total", v: "R$ 19.500,00", strong: true }, { l: "Obras", v: "R$ 19.500,00", indent: true }, { l: "(−) Custos Diretos Totais", v: "−R$ 8.210,00", pct: "−42,1%", strong: true, neg: true }, { l: "Equipe Obras", v: "−R$ 8.210,00", indent: true, neg: true }, { l: "= Lucro Bruto", v: "R$ 11.290,00", pct: "57,9%", strong: true, pos: true }, { l: "= Resultado Operacional", v: "R$ 11.290,00", pct: "57,9%", strong: true, pos: true }]. map((r, i) =>
{r.l} {r.pct || ""} {r.v}
)}
Evolução — últimos 6 meses
Custo Dir. Rec. AT Rec. Obras Resultado
); } // =========================================================================== // 2. CLIENTES // =========================================================================== function PageClientes({ onAction }) { return (
onAction("Novo cliente — disponível no app real")}> Novo Cliente } />
NomeTipoDocumentoTelefoneE-mailObras ativasStatus
CO Construtora FGR PJ 71.304.389/0001-07 22 2222-2222 — 1 Ativo
); } // =========================================================================== // 3. FOLHA DE PONTO (Presenças) // =========================================================================== const FOLHA_ROWS = [ { date: "07/05/2026", name: "Filipe Freitas", role: "Pedreiro", origem: "Obra", cliente: "—", local: "—", unidade: "—", d: 1, he: 0, alm: "—", tr: "—", muted: true }, { date: "07/05/2026", name: "Filipe Freitas", role: "Pedreiro", origem: "Obra", cliente: "Construtora FGR", local: "Condomínio das Acácias", unidade: "2001 - T2", d: 1, he: 0, alm: "—", tr: "—" }, { date: "06/05/2026", name: "Fernando Jose", role: "Encarregado", origem: "Obra", cliente: "Construtora FGR", local: "Condomínio das Acácias", unidade: "2001 - T2", d: 1, he: 1, alm: "Sim", tr: "Sim" }, { date: "06/05/2026", name: "Filipe Freitas", role: "Pedreiro", origem: "Obra", cliente: "Construtora FGR", local: "Condomínio das Acácias", unidade: "2001 - T2", d: 1, he: 0, alm: "—", tr: "—" }, { date: "28/04/2026", name: "Filipe Freitas", role: "Pedreiro", origem: "Obra", cliente: "Construtora FGR", local: "Condomínio das Acácias", unidade: "2001 - T2", d: 1, he: 0, alm: "Sim", tr: "—" }]; function PageFolha({ onAction }) { const cols = "90px 1.2fr 70px 1.2fr 1.3fr 90px 70px 70px 70px 70px"; return (
} />
5 lançamentos
DataFuncionárioOrigemCliente Local/ObraUnidade Diárias H. extra Almoço Transp.
{FOLHA_ROWS.map((r, i) =>
{r.date}
{r.name}
{r.role}
{r.origem} {r.cliente} {r.local} {r.unidade} {r.d} {r.he} {r.alm} {r.tr}
)}
Totais (confirmados): 4 1
); } // =========================================================================== // 4. OBRAS // =========================================================================== function PageObras({ onAction }) { return (
onAction("Nova obra — disponível no app real")}> Nova Obra } />
onAction("Abrindo Condomínio das Acácias…")}>
Condomínio das Acácias Ativa
Entrega de Apto. 1 unidade
Início: 02/01/2025 R$ 19.500,00 este mês
); } // =========================================================================== // 5. SERVIÇOS // =========================================================================== const SERV_ROWS = [ { unit: "2001 - T2 — 3Q", type: "1ª Vistoria — Unidade 2001 - T2", team: "—", status: "Concluído", ini: "07/05/2026", fim: "07/05/2026", val: "R$ 8.000,00" }, { unit: "2001 - T2 — 3Q", type: "Pintura — Unidade 2001 - T2", team: "—", status: "Concluído", ini: "06/05/2026", fim: "07/05/2026", val: "R$ 3.500,00" }, { unit: "2001 - T2 — 3Q", type: "1ª Vistoria — Unidade 2001 - T2", team: "—", status: "Concluído", ini: "06/05/2026", fim: "06/05/2026", val: "R$ 8.000,00" }, { unit: "2001 - T2 — 3Q", type: "Pintura — Unidade 2001 - T2", team: "Filipe, Fernando", status: "Concluído", ini: "28/04/2026", fim: "28/04/2026", val: "R$ 3.500,00" }, { unit: "2001 - T2 — 3Q", type: "1ª Vistoria — Unidade 2001 - T2", team: "Filipe", status: "Concluído", ini: "20/04/2026", fim: "28/04/2026", val: "R$ 8.000,00" }]; function PageServicos({ onAction }) { const cols = "100px 130px 1.6fr 1fr 110px 95px 95px 110px"; return (
onAction("Novo serviço — disponível no app real")}> Novo Serviço } />
🔎 Pesquisar por unidade, obra, tipo de serviço…
5 serviços
OrigemUnidadeTipo de serviçoEquipe StatusInícioConclusão Receita
{SERV_ROWS.map((r, i) =>
Obra
Condomínio das Acácias
{r.unit} {r.type} {r.team} {r.status} {r.ini} {r.fim} {r.val}
)}
); } // =========================================================================== // 6. EQUIPE // =========================================================================== function PageEquipe({ onAction }) { const cols = "1.4fr 1fr 100px 90px 90px 90px 100px 110px 80px"; return (
onAction("Adicionar funcionário — disponível no app real")}> Adicionar Funcionário } />
Mostrar inativos e desligados
2 funcionários
NomeFunção Diária/Salário Hora extra Almoço Transp. TelefoneStatus
Fernando Jose Encarregado R$ 0,00 R$ 10,00 R$ 0,00 R$ 0,00 — Ativo Mensalista
Filipe Freitas Pedreiro R$ 250,00 R$ 10,00 R$ 0,00 R$ 0,00 — Ativo Diarista
); } Object.assign(window, { PageHead, Filter, DateField, PageDashboard, PageClientes, PageFolha, PageObras, PageServicos, PageEquipe });