/* ============================================
PRODUZ SITE — Page Sections (part 1)
Hero, Pain, Solution
============================================ */
const { useState, useEffect, useRef } = React;
/* ===== Reveal helper (IntersectionObserver) ===== */
const Reveal = ({ children, delay = 0, className = "" }) => {
const ref = useRef(null);
const [shown, setShown] = useState(false);
useEffect(() => {
const el = ref.current;
if (!el) return;
const io = new IntersectionObserver(
([e]) => {
if (e.isIntersecting) {
setTimeout(() => setShown(true), delay);
io.disconnect();
}
},
{ threshold: 0.12 }
);
io.observe(el);
return () => io.disconnect();
}, [delay]);
return (
{children}
);
};
/* ===== HERO Phone Card (single phone in marquee column) ===== */
const PhoneCard = ({ image }) => {
return (
);
};
/* ===== Marquee Column (vertical infinite scroll) ===== */
const MarqueeColumn = ({ images, direction = "up", duration = 40, tilt = 0 }) => {
// Duplicate images twice for seamless loop
const loopedImages = [...images, ...images];
return (
{loopedImages.map((img, i) => (
))}
);
};
/* ===== HERO ===== */
const Hero = ({ tweaks }) => {
const columnLeft = [
"produzsite/assets/hortensiasnews.png",
"produzsite/assets/redemei-do-brasil.png",
"produzsite/assets/organija.png",
"produzsite/assets/orcamento-blindado-metodo-drywall.png",
"produzsite/assets/priston-vendas.png",
];
const columnRight = [
"produzsite/assets/priston-vendas.png",
"produzsite/assets/orcamento-blindado-metodo-drywall.png",
"produzsite/assets/organija.png",
"produzsite/assets/hortensiasnews.png",
"produzsite/assets/redemei-do-brasil.png",
];
return (
{/* LEFT — copy */}
{tweaks.showPromo && (
Oferta por tempo limitado • Setup grátis
)}
Seja encontrado.
Conquiste clientes.
Faça seu negócio crescer.
Tenha um site profissional trabalhando 24h por você — atraindo clientes
enquanto você cuida do que faz de melhor. No ar em até 7 dias, por{" "}
R$ 99,90/mês.
+15 anos de experiência
Sem fidelidade
Garantia de satisfação
{/* RIGHT — marquee phones */}
);
};
/* ===== PAIN ===== */
const Pain = () => {
const cards = [
{
icon: "ghost",
kicker: '"Eu sei que preciso, mas..."',
title: "Nunca tive site",
body:
"Você sabe que perde cliente todo dia para o concorrente que aparece no Google. Mas criar site parece caro, complicado e demorado. Aí você adia. E adia. E adia. Enquanto isso, seu concorrente fatura.",
},
{
icon: "money",
kicker: '"Paguei R$ 3.000 e o site ficou parado"',
title: "Já paguei caro e me arrependi",
body:
"Você investiu pesado, recebeu o site, e depois? Ninguém mais atendeu. Para mudar uma foto, cobram extra. Para atualizar um texto, somem. O site virou um boleto sem retorno.",
},
{
icon: "wrench",
kicker: '"Meu site existe, mas é como se não existisse"',
title: "Tenho site, mas tá largado",
body:
"Está desatualizado, lento, fora do Google e você nem lembra a senha do painel. Está mais para fantasma do que para vendedor. Hora de aposentar esse zumbi.",
},
];
return (
A Dor
Se você se reconhecer aqui,
a gente precisa conversar.
Ter presença digital deixou de ser luxo lá pelos anos 2010. Mas a maioria dos
negócios ainda trava em uma dessas três armadilhas:
{cards.map((c, i) => (
{c.title}
{c.kicker}
{c.body}
))}
Em qualquer um desses cenários, o resultado é o mesmo:
cliente que não te encontra é venda que não acontece.
);
};
/* ===== SOLUTION + COMPARE ===== */
const Solution = () => {
const bad = [
"Investimento alto de uma vez (R$ 2.000 a R$ 10.000)",
"Site entregue e... boa sorte",
"Cobrança extra para qualquer ajuste",
"Hospedagem e domínio por sua conta",
"Sem suporte, sem manutenção",
"Em 1 ano, o site já está obsoleto",
];
const good = [
<>R$ 99,90/mês. Só isso.>,
<>Site no ar em até 7 dias>,
<>10 atualizações de conteúdo todo mês>,
<>Tudo incluso na mensalidade>,
<>Suporte por WhatsApp e e-mail>,
<>Site sempre atualizado e no ar>,
];
return (
A Solução
A gente virou o jogo:
site agora é assinatura.
Esquece projeto fechado. Esquece orçamento gigante. Esquece ficar refém de
freelancer que some no meio do caminho. No Produz Site você paga uma mensalidade
simples e tem tudo que sua presença digital precisa para funcionar de verdade —
todo mês, todo ano.
O modelo antigo
{bad.map((t, i) => (
-
{t}
))}
O jeito Produz Site
{good.map((t, i) => (
-
{t}
))}
);
};
window.Hero = Hero;
window.Pain = Pain;
window.Solution = Solution;
window.Reveal = Reveal;