// Depoimentos · Planos · FAQ · Localização · CTA Final · Footer
// ─────────────────────────────────────────────────────────────
// Depoimentos
// ─────────────────────────────────────────────────────────────
function Depoimentos({ copy, accent }) {
const c = copy.stories;
return (
{c.quotes.map((qt, i) =>
e.currentTarget.style.background = T.night2}
onMouseLeave={(e) => e.currentTarget.style.background = T.night}>
{/* Stars + tag */}
{[0, 1, 2, 3, 4].map((s) =>
)}
{qt.tag}
"{qt.q}"
)}
);
}
// ─────────────────────────────────────────────────────────────
// Planos — 4 cards
// ─────────────────────────────────────────────────────────────
function Planos({ copy, accent, onOpenModal }) {
const c = copy.plans;
return (
{c.items.map((p, i) =>
{p.popular &&
}
{p.tag}
{p.popular &&
{p.badge}
}
{p.name}
{p.desc}
{p.included.map((line, j) =>
-
{line}
)}
{p.opt &&
{p.optLabel}
{p.opt}
}
)}
{/* Recurrence band */}
{c.recurring}
);
}
// ─────────────────────────────────────────────────────────────
// FAQ — accordion agrupado
// ─────────────────────────────────────────────────────────────
function FAQ({ copy, accent }) {
const c = copy.faq;
const [openKey, setOpenKey] = React.useState('0-0');
return (
{/* Index column */}
{/* FAQ list */}
{c.groups.map((g, gi) =>
{g.name}
0{gi + 1}
{g.items.map((it, ii) => {
const key = `${gi}-${ii}`;
const open = openKey === key;
return (
{open &&
}
);
})}
)}
);
}
// ─────────────────────────────────────────────────────────────
// Localização
// ─────────────────────────────────────────────────────────────
function Localizacao({ copy, accent }) {
const c = copy.loc;
return (
{/* Linha única: Mapa Google embed + Info panel */}
{/* Google Maps embed */}
{/* Overlay: badge */}
● {c.mapLabel}
{/* Overlay: endereço bar */}
{c.addr1}
SP · BR
{/* Info panel */}
ENDEREÇO
{c.addr1}
{c.addr2}
{c.hours}
BÔNUS
{c.perks.map((p, i) =>
-
·
{p}
)}
);
}
// SVG mapa mockup — abstrato com pin (mantido como fallback, hoje não usado)
function MapMock({ accent }) {
return (
);
}
// ─────────────────────────────────────────────────────────────
// CTA Final
// ─────────────────────────────────────────────────────────────
function CTAFinal({ copy, accent, onOpenModal, waLink }) {
const c = copy.cta;
return (
{c.kicker}
{c.title1}{c.title1Hi}{c.title1Punct}
{c.lede}
);
}
// ─────────────────────────────────────────────────────────────
// Footer
// ─────────────────────────────────────────────────────────────
function Footer({ copy, accent, waLink }) {
const c = copy.footer;
const navLinks = [
['#engenharia', copy.nav.eng],
['#cenario', copy.nav.cenario],
['#servicos', copy.nav.serv],
['#planos', copy.nav.plans],
['#duvidas', copy.nav.faq]];
const segLinks = copy.segs.cards.map((c) => [c.link, c.name]);
const socials = [
['https://instagram.com/', 'Instagram'],
['https://youtube.com/', 'YouTube'],
['https://linkedin.com/', 'LinkedIn']];
return (
);
}
function FooterCol({ title, items, accent, external }) {
return (
);
}
Object.assign(window, { Depoimentos, Planos, FAQ, Localizacao, CTAFinal, Footer, MapMock, FooterCol });