const demoTabs = [ { id: 'dashboard', label: 'Dashboard', sheet: 'WEB-01', path: '/', active: ['dashboard'] }, { id: 'comercial', label: 'Clientes e propostas', sheet: 'WEB-02', path: '/clients', active: ['clients', 'proposals', 'contracts'] }, { id: 'financeiro', label: 'Financeiro', sheet: 'WEB-03', path: '/financial/cash-flow', active: ['financial'] }, { id: 'operacao', label: 'Tarefas e anexos', sheet: 'WEB-04', path: '/tasks', active: ['tasks', 'attachments'] }, { id: 'gestao', label: 'Relatórios e admin', sheet: 'WEB-05', path: '/reports', active: ['reports', 'settings', 'appearance'] }, ]; const demoSidebar = [ { id: 'dashboard', label: 'Dashboard', route: '/' }, { id: 'clients', label: 'Clientes', route: '/clients' }, { id: 'proposals', label: 'Propostas', route: '/proposals' }, { id: 'contracts', label: 'Contratos', route: '/contracts' }, { id: 'financial', label: 'Financeiro', route: '/financial/cash-flow' }, { id: 'tasks', label: 'Tarefas', route: '/tasks' }, { id: 'attachments', label: 'Anexos', route: '/attachments' }, { id: 'reports', label: 'Relatórios', route: '/reports' }, { id: 'appearance', label: 'Aparência', route: '/appearance' }, { id: 'settings', label: 'Admin', route: '/settings' }, ]; const money = (value) => `R$ ${value.toLocaleString('pt-BR')}`; const Demo = () => { const [tab, setTab] = React.useState('dashboard'); const [ref, inView] = useReveal({ threshold: 0.1 }); const current = demoTabs.find((item) => item.id === tab) || demoTabs[0]; return (
Veja o sistema por dentro.} kicker="A prévia abaixo foi montada a partir das rotas e módulos ativos: clientes, propostas, contratos, financeiro, tarefas, anexos, relatórios, aparência e administração." />
{demoTabs.map((item) => ( ))}
Sheet {current.sheet} / ROTA {current.path}
/ Simulação baseada nos módulos implementados / Sem telas fictícias de timesheet ou equipe / Rotas web reais do ArchPlan
); }; const DemoWindow = ({ tab, inView }) => { const current = demoTabs.find((item) => item.id === tab) || demoTabs[0]; return (
archplan.app{current.path}
WORKSPACE / ADMIN
{tab === 'dashboard' && } {tab === 'comercial' && } {tab === 'financeiro' && } {tab === 'operacao' && } {tab === 'gestao' && }
); }; const RouteChips = ({ routes }) => (
{routes.map((route) => ( {route} ))}
); const StatCard = ({ label, value, caption, delay = 0 }) => (
{label}
{value}
{caption}
); const ProgressLine = ({ value, delay = 0, tone = 'ink' }) => (
); const ScreenDashboard = ({ inView }) => { const months = ['JAN', 'FEV', 'MAR', 'ABR', 'MAI', 'JUN']; const entries = [42, 58, 71, 66, 88, 94]; const expenses = [32, 38, 47, 44, 53, 61]; return (
DASHBOARD / CENTRO DE COMANDO

Leitura operacional do escritório

A mesma visão consolida caixa, vencimentos, propostas, clientes ativos e tarefas pendentes.

} caption="Recebido no período" /> } caption="Pago no período" delay={80} /> } caption="Entradas menos saídas" delay={160} /> } caption="Pendentes e vencidas" delay={240} />
Entradas x saídas R$ MIL
{months.map((month, index) => (
))}
{months.map((month) => {month})}
{[ ['Despesas fixas', money(18400), '/financial/fixed-expenses'], ['Parcelas vencidas', '3', '/contracts'], ['Clientes ativos', '42', '/clients'], ['Tarefas pendentes', '18', '/tasks'], ].map(([label, value, route], index) => (
{label}
{route}
{value}
))}
); }; const ScreenComercial = ({ inView }) => { const rows = [ { client: 'Studio Almeida', route: '/clients', item: 'Histórico e contatos', value: '12 interações', status: 'ativo' }, { client: 'Loja Aurora', route: '/proposals', item: 'Proposta comercial', value: money(48200), status: 'enviada' }, { client: 'Grupo Horizonte', route: '/contracts', item: 'Contrato e parcelas', value: money(186000), status: 'assinado' }, { client: 'Residencial Norte', route: '/propostas', item: 'PDF de proposta', value: 'versão 3', status: 'revisão' }, ]; return (
COMERCIAL / CLIENTES / PROPOSTAS / CONTRATOS

Do relacionamento ao contrato

A demo mostra as telas reais de cadastro de clientes, registro de contatos, propostas com PDF e contratos com parcelas.

Cliente
Modulo
Rota
Valor
Status
{rows.map((row, index) => (
{row.client}
{row.item}
{row.route}
{row.value}
{row.status}
))}
); }; const ScreenFinanceiro = ({ inView }) => { const items = [ { name: 'Recebíveis', route: '/financial/receivables', amount: 238900, pct: 78, tone: 'ink' }, { name: 'Contas a pagar', route: '/financial/payables', amount: 86400, pct: 44, tone: 'sepia' }, { name: 'Entradas', route: '/financial/entries', amount: 186400, pct: 64, tone: 'ink' }, { name: 'Saídas', route: '/financial/expenses', amount: 72400, pct: 35, tone: 'sepia' }, { name: 'Despesas fixas', route: '/financial/fixed-expenses', amount: 18400, pct: 18, tone: 'sepia' }, ]; return (
FINANCEIRO / CAIXA / CONTAS

Financeiro separado por operação real

Recebíveis, contas a pagar, entradas, saídas, despesas fixas e fluxo de caixa usam rotas próprias no sistema.

{items.map((item, index) => (
{item.name}
{item.route}
{money(item.amount)}
))}
); }; const ScreenOperacao = ({ inView }) => { const tasks = [ { name: 'Revisar proposta comercial', owner: 'César', status: 'pendente', priority: 78 }, { name: 'Cobrar parcela vencida', owner: 'Financeiro', status: 'urgente', priority: 92 }, { name: 'Anexar contrato assinado', owner: 'Admin', status: 'em aberto', priority: 64 }, { name: 'Atualizar contato do cliente', owner: 'Comercial', status: 'hoje', priority: 48 }, ]; return (
OPERAÇÃO / TAREFAS / ANEXOS

Rotina operacional do escritório

A operação aparece como lista de tarefas, responsáveis, prioridades e anexos vinculados às entidades do sistema.

{tasks.map((task, index) => (
{task.name}
{task.owner}
80 ? 'sepia' : 'ink'} />
{task.status}
))}
Anexos por entidade

Documentos operacionais

{[ ['Contrato assinado', '/attachments/download'], ['PDF de proposta', '/proposals/{id}/pdf'], ['Comprovante financeiro', '/financial/entries'], ['Histórico de cliente', '/clients/{id}'], ].map(([label, route], index) => (
{label} {route}
))}
); }; const ScreenGestao = ({ inView }) => { const rows = [ { module: 'Relatórios', route: '/reports', action: 'Exportação CSV e PDF', state: '3 relatórios' }, { module: 'Admin', route: '/settings', action: 'Usuários, papéis e permissões', state: 'RBAC' }, { module: 'Aparência', route: '/appearance', action: 'Tema, layout e densidade', state: 'local' }, { module: 'Histórico', route: '/system-logs', action: 'Auditoria das ações do sistema', state: 'ativo' }, { module: 'Assinatura', route: '/assinatura/planos', action: 'Escolha e ativação de plano', state: 'ativo' }, ]; return (
GESTÃO / RELATÓRIOS / ADMIN

Camada administrativa e operacional

A landing também mostra gestão de relatórios, usuários, permissões, aparência, histórico e assinatura.

{rows.map((row, index) => (
{row.module}
{row.route}
{row.action}
{row.state}
))}
Permissões reais

Acesso por papel

{[ ['dashboard', 100], ['clients:read', 92], ['financial:read', 84], ['reports:read', 70], ['settings', 42], ].map(([permission, value], index) => (
{permission} {value}%
))}
); }; window.Demo = Demo;