const Pricing = () => { const [period, setPeriod] = React.useState('anual'); const factor = period === 'anual' ? 0.8 : 1; const plans = [ { name: 'Starter', slug: 'starter', sub: 'Para autônomos e escritórios iniciando a operação digital', price: 79, users: 'até 3 usuários', proposals: '20 propostas/mês', support: 'Suporte por e-mail', modules: [ { label: 'Dashboard financeiro', included: true }, { label: 'Clientes', included: true }, { label: 'Propostas em PDF', included: true }, { label: 'Contratos e parcelas', included: false }, { label: 'Contas a receber e pagar', included: true }, { label: 'Tarefas da equipe', included: false }, { label: 'Relatórios', included: false }, { label: 'Usuários e permissões', included: false }, ], highlights: [ 'Teste grátis de 7 dias', 'Cadastro de clientes e histórico', 'Fluxo de caixa básico', 'Anexos por cliente e proposta', ], }, { name: 'Professional', slug: 'professional', sub: 'Para escritórios que já gerem propostas, contratos e financeiro', price: 179, users: 'até 10 usuários', proposals: '100 propostas/mês', support: 'Suporte prioritário', featured: true, modules: [ { label: 'Dashboard financeiro', included: true }, { label: 'Clientes', included: true }, { label: 'Propostas Automáticas', included: true }, { label: 'Contratos e parcelas', included: true }, { label: 'Contas a receber e pagar', included: true }, { label: 'Tarefas da equipe', included: true }, { label: 'Relatórios', included: true }, { label: 'Usuários e permissões', included: true }, ], highlights: [ 'Módulo de relatórios liberado', 'Controle de contratos e vencimentos', 'Controle de pendências financeiras', 'Administração de usuários', ], }, { name: 'Enterprise', slug: 'enterprise', sub: 'Para operações maiores com governança, volume e acompanhamento', price: 349, users: 'até 30 usuários', proposals: 'propostas ilimitadas', support: 'Suporte dedicado', modules: [ { label: 'Dashboard financeiro', included: true }, { label: 'Clientes', included: true }, { label: 'Propostas em PDF', included: true }, { label: 'Contratos e parcelas', included: true }, { label: 'Contas a receber e pagar', included: true }, { label: 'Tarefas da equipe', included: true }, { label: 'Relatórios', included: true }, { label: 'Usuários e permissões', included: true }, ], highlights: [ 'Maior limite de usuários', 'Propostas sem limite mensal', 'Histórico e auditoria operacional', 'Acompanhamento de implantação', ], }, ]; return (
Planos por módulo e volume.} kicker="Escolha o limite de propostas, usuários e módulos que fazem sentido para a fase atual do escritório." />
{['mensal', 'anual'].map((p) => ( ))}
{plans.map((p, i) => ( ))}
{[ ['Teste grátis', '7 dias sem cartão, com CPF/CNPJ obrigatório.'], ['Cadastro seguro', 'Validação de documento, usuário admin e workspace da empresa.'], ['Ativação simples', 'Escolha o plano, cadastre a empresa, pague e acesse a plataforma.'], ].map(([title, copy]) => (
/ {title}

{copy}

))}
); }; const PricingCard = ({ name, slug, sub, price, users, proposals, support, modules, highlights, featured, factor, period, index }) => { const [ref, inView] = useReveal({ threshold: 0.2 }); const finalPrice = Math.round(price * factor); const mutedColor = featured ? 'var(--mist)' : 'var(--ash)'; return (
{featured && (
MAIS ESCOLHIDO
)}
/ {String(index + 1).padStart(2, '0')} {users}

{name}

{sub}

R$ {finalPrice} /mês
{period === 'anual' && (
Cobrado anualmente · R$ {(finalPrice * 12).toLocaleString('pt-BR')}/ano
)}
{[ ['Usuários', users], ['Propostas', proposals], ['Suporte', support], ['Relatórios', modules.find((m) => m.label === 'Relatórios')?.included ? 'incluído' : 'não incluído'], ].map(([label, value]) => (
{label}
{value}
))}
/ Módulos incluídos
/ Destaques
Cadastrar →
); }; window.Pricing = Pricing;