/* Cases — painéis interativos que expandem (estilo "interactive selector"). Preenchem a largura toda; o painel ativo expande e mostra nome + categoria. Clicar no painel ativo abre a página do case; clicar em outro o ativa. */ const CASE_DOT3 = { yellow: "var(--cheer-yellow)", lilac: "var(--cheer-lilac)", blue: "var(--cheer-blue)", cyan: "var(--cheer-cyan)" }; function Cases() { const CASES = window.CASES; const [active, setActive] = React.useState(0); const [shown, setShown] = React.useState([]); React.useEffect(() => { const reduced = window.Motion && window.Motion.REDUCED; if (reduced) { setShown(CASES.map((_, i) => i)); return; } const timers = CASES.map((_, i) => setTimeout(() => setShown((p) => [...p, i]), 140 * i)); return () => timers.forEach(clearTimeout); }, []); const onPanel = (i) => () => { if (i !== active) { setActive(i); return; } window.location.href = "case.html?c=" + CASES[i].slug; }; return (
Trabalhos

cases recentes

Clique para abrir cada painel. Clique de novo para ver o case completo.

{CASES.map((c, i) => { const isActive = i === active; const cover = c.cover || c.img; return (
{ if (e.key === "Enter" || e.key === " ") { e.preventDefault(); onPanel(i)(); } }}>
{c.name.charAt(0)}
{c.name}
{c.sector}
ver case
); })}
); } window.Cases = Cases;