// components.jsx — shared UI building blocks // ── Brand mark — small sun symbol (used as accent only) ──── function BrandMark({ size = 28, className = '' }) { return ( ); } // ── Full logo (img with filter to recolor white→ink/light) ─ function HumanareLogo({ width = 168 }) { const h = (width / 264) * 54; return ( Humanāre por Adriana Schneider ); } // Compatibility alias (legacy callers) function HumanareLockup({ size = 'md', tagline = true }) { const w = size === 'lg' ? 280 : size === 'sm' ? 140 : 200; return ; } // ── Nav ──────────────────────────────────────────────────── function Nav({ route, setRoute }) { const [scrolled, setScrolled] = React.useState(false); React.useEffect(() => { const onScroll = () => setScrolled(window.scrollY > 30); window.addEventListener('scroll', onScroll, { passive: true }); onScroll(); return () => window.removeEventListener('scroll', onScroll); }, []); const go = (e, r) => { e.preventDefault(); setRoute(r); window.scrollTo({ top: 0, behavior: 'instant' }); }; const items = [ ['home', 'Início'], ['sobre', 'Sobre'], ['palestras', 'Palestras'], ['conteudo', 'Conteúdo'], ['contato', 'Contato'], ]; return ( ); } // ── Marquee — empresas ───────────────────────────────────── function EmpresasMarquee() { const items = [...EMPRESAS, ...EMPRESAS]; // duplicate for seamless loop return (
{items.map((e, i) => ( {e} ))}
); } // ── Section header ───────────────────────────────────────── function SecHead({ eyebrow, titleA, titleEm, titleB, sub, action }) { return (
{eyebrow &&
{eyebrow}
}

{titleA}{titleEm}{titleB}

{sub &&

{sub}

} {action &&
{action}
}
); } // ── Intermission marquee — bold horizontal scroll ────────── function Intermission({ text = "Se não nós, quem? · Se não agora, quando?", variant = 'dark', }) { // duplicate enough copies for seamless loop const copies = Array.from({ length: 4 }, (_, i) => i); return (
{copies.map(i => {text})}
); } // ── Manifesto strip ──────────────────────────────────────── function ManifestoStrip() { return (
Manifesto
Acredito que empresas boas para o mundo são, também, os melhores negócios do nosso tempo.
Adriana Schneider
); } // ── Palestras grid ───────────────────────────────────────── function PalestrasGrid({ list = PALESTRAS, columns = 2 }) { return (
{list.map((p) => (
{p.n} / {String(list.length).padStart(2, '0')}

{p.titulo.plain}{p.titulo.em}{p.titulo.plain2 || ''}

{p.desc}

{p.tag}
))}
); } // ── Livro slice (legacy — mantido para compatibilidade) ── function LivroSlice() { return (
Editora Lacre · 2025
O Caminho do
Protagonista
Adriana Schneider
O Livro

Janela, bússola e vento.

Uma jornada de autotransformação que integra psicologia positiva, neurociência e mindfulness. Para líderes, profissionais e qualquer pessoa que se recuse a deixar a própria vida acontecer no piloto automático.

"Abrir a janela é escolher ver com mais nitidez. O resto é coragem de seguir o que a clareza pede."
Páginas 248
Edição Lacre · 2025
Lançado em RJ · SP · Lisboa

✦ 100% dos lucros revertidos a programas de aceleração de carreira feminina.

); } // ── Caminho do Protagonista — book + 3 pillars (signature section) ── function CaminhoSlice() { return (
Metodologia · Livro

O Caminho do Protagonista.

Uma jornada em três movimentos, sustentada pela autocompaixão. É o método que conduz palestras, mentorias e o livro lançado em 2025 por Rio, São Paulo e Lisboa.

Janela · Bússola · Vento
Editora Lacre · 2025
O Caminho do
Protagonista janela, bússola e vento
Adriana Schneider
{PILARES.map(p => (
{p.n}
{p.nome}
{p.sub}

{p.desc}

))}
✦ Lucros do livro vão para programas de aceleração de carreira feminina. Comprar o livro
); } // ── Humanāre · soluções para empresas ─────────────────────── function HumanareSolucoes({ setRoute }) { return (
{ e.preventDefault(); if (setRoute) setRoute('contato'); window.scrollTo({top:0,behavior:'instant'}); }} className="link-arrow"> Falar com a Humanāre → } />
{HUMANARE_SOLUCOES.map(s => (
Solução {s.n}

{s.titulo.plain}{s.titulo.em}

{s.desc}

{s.tag}
))}
); } // ── Impacto · números reais publicados pela Humanāre ───── function ImpactoStrip() { return (
Quase uma década inspirando pessoas e empresas boas para o mundo.
{IMPACTO.map((i, k) => (
{i.v} {i.k} {i.d}
))}
); } // ── Curadorias (Rio Innovation Week + outros) ────────────── function CuradoriasGrid() { return (
{CURADORIAS.map((c, i) => (
{c.sigla}
{c.nome}
{c.loc}
{c.desc}
desde {c.desde}
))}
); } // ── Depoimentos ──────────────────────────────────────────── function Depoimentos() { return (
Depoimentos

O que dizem sobre os encontros.

Líderes que viveram uma palestra, uma mentoria ou uma curadoria, e levaram algo para o trabalho da segunda-feira.

{DEPOIMENTOS.map((d, i) => (

"{d.q}"

{d.autor.split(' ').map(n => n[0]).slice(0, 2).join('')}
{d.autor} {d.cargo}
))}
); } // ── Eventos / agenda ─────────────────────────────────────── function Eventos({ limit }) { const list = limit ? EVENTOS.slice(0, limit) : EVENTOS; return (
Ver agenda completa →} />
{list.map((e, i) => (
{e.dia}{e.mes} {e.ano}

{e.titulo.plain}{e.titulo.em}

{e.loc}
))}
); } // ── RIW slice ────────────────────────────────────────────── function RIWSlice() { return (
Curadoria

Rio Innovation Week. Onde a inovação encontra o humano.

Curadora desde 2019 do maior festival de inovação da América Latina. Mais de 60 mil pessoas, 300 palcos e uma convicção: tecnologia sem propósito é só barulho.

+0pessoas
0+palcos curados
0edições
); } // ── Newsletter ───────────────────────────────────────────── function Newsletter() { return (
Newsletter Semanal

Domingos com Adriana.

Toda semana, uma carta curta sobre liderança, cultura e a coragem de fazer escolhas em tempos confusos. Sem listinhas, sem hacks.

{ e.preventDefault(); alert('Quase lá ✦ verifique seu email.'); }}>
+0 mil inscritos
0 anos semanais
0 spam garantido
); } // ── Footer ───────────────────────────────────────────────── function Footer({ setRoute }) { const go = (e, r) => { e.preventDefault(); setRoute(r); window.scrollTo({top:0,behavior:'instant'}); }; return ( ); } // ── Reveal-on-scroll ─────────────────────────────────────── function useReveal() { React.useEffect(() => { const els = document.querySelectorAll('.reveal'); if (!els.length) return; const io = new IntersectionObserver((entries) => { entries.forEach(e => { if (e.isIntersecting) e.target.classList.add('in'); }); }, { threshold: 0.1 }); els.forEach(el => io.observe(el)); return () => io.disconnect(); }); } Object.assign(window, { BrandMark, HumanareLockup, HumanareLogo, Nav, EmpresasMarquee, SecHead, Intermission, ManifestoStrip, PalestrasGrid, LivroSlice, CaminhoSlice, HumanareSolucoes, ImpactoStrip, CuradoriasGrid, Depoimentos, Eventos, RIWSlice, Newsletter, Footer, useReveal, });