/* global React, Icon */ // ============================================ // MODULE MOCKUPS — lightweight SVG/HTML previews // ============================================ // CRM / Kanban mockup function KanbanMockup() { const cols = [ { name: 'Prospecção', color: '#64748b', items: [ { t: 'Clínica Vida Nova', v: 'R$ 12k', tag: 'Indicação' }, { t: 'Padaria São João', v: 'R$ 3.5k', tag: 'Inbound' }, ]}, { name: 'Qualificação', color: '#3b5bdb', items: [ { t: 'Tech Corp SA', v: 'R$ 48k', tag: 'Enterprise', hot: true }, ]}, { name: 'Proposta', color: '#f59e0b', items: [ { t: 'Mercado Central', v: 'R$ 18k', tag: 'SMB' }, { t: 'Studio Fit', v: 'R$ 7k', tag: 'Inbound' }, ]}, { name: 'Fechado', color: '#10b981', items: [ { t: 'Loja do Bairro', v: 'R$ 4.2k', tag: 'Recorrente' }, ]}, ]; return (
{/* header */}
Funil — Comercial 2026
12 oportunidades · R$ 92.7k em pipeline
Atualizado agora
{/* kanban */}
{cols.map((c, i) => (
{c.name} {c.items.length}
{c.items.map((it, j) => (
{it.t}
{it.v}
{it.tag} {it.hot && 🔥}
))}
))}
); } // Financeiro mockup function FinanceMockup() { const txs = [ { d: '23/04', desc: 'Cliente X — Mensalidade', cat: 'Receita', v: '+ R$ 4.280,00', pos: true }, { d: '22/04', desc: 'Fornecedor Cloud AWS', cat: 'Infraestrutura', v: '- R$ 1.842,30', pos: false }, { d: '22/04', desc: 'Cliente Y — Mensalidade', cat: 'Receita', v: '+ R$ 2.100,00', pos: true }, { d: '20/04', desc: 'Folha abril — parcial', cat: 'Pessoal', v: '- R$ 18.500,00', pos: false }, { d: '19/04', desc: 'Cliente Z — Setup', cat: 'Receita', v: '+ R$ 12.000,00', pos: true }, ]; return (
{/* top stats */}
{[ { l: 'A receber', v: 'R$ 142.8k', c: '#10b981' }, { l: 'A pagar', v: 'R$ 58.2k', c: '#ef4444' }, { l: 'Projeção mensal', v: '+ R$ 84.6k', c: '#3b5bdb' }, ].map((s, i) => (
{s.l}
{s.v}
))}
{/* mini chart */}
Fluxo de caixa · últimos 30 dias
● Entradas ● Saídas
{/* tx list */}
{txs.map((t, i) => (
{t.d}
{t.desc}
{t.cat}
{t.v}
))}
); } // ============================================ // GENERIC MODULE MOCKUP — flexible "dashboard-style" preview // Accepts a config and renders a credible UI for any module. // ============================================ function GenericMockup({ color, bg, icon, title, subtitle, rows = [], stats = [], chart = false }) { return (
{/* header */}
{title}
{subtitle &&
{subtitle}
}
Tempo real
{/* stats */} {stats.length > 0 && (
{stats.map((s, i) => (
{s.l}
{s.v}
))}
)} {/* chart */} {chart && (
{chart.label || 'Visão geral'}
)} {/* rows */}
{rows.map((r, i) => (
{r.badge &&
}
{r.t}
{r.s &&
{r.s}
}
{r.v &&
{r.v}
} {r.tag && {r.tag}}
))}
); } window.KanbanMockup = KanbanMockup; window.FinanceMockup = FinanceMockup; window.GenericMockup = GenericMockup;