// Serviços · Como funciona · Personalização · Segmentos
// ─────────────────────────────────────────────────────────────
// Serviços — 8 cards
// ─────────────────────────────────────────────────────────────
function Servicos({ copy, accent }) {
const c = copy.serv;
return (
{c.items.map((item, i) =>
e.currentTarget.style.background = T.night2}
onMouseLeave={(e) => e.currentTarget.style.background = T.night}>
{item.n}
{item.name}
{item.desc}
)}
);
}
// ─────────────────────────────────────────────────────────────
// Como funciona — 4 passos horizontais
// ─────────────────────────────────────────────────────────────
function ComoFunciona({ copy, accent }) {
const c = copy.how;
return (
{/* Pipeline horizontal */}
{/* base line */}
{c.steps.map((s, i) =>
{/* node */}
{i === 0 &&
}
{s.n} / 04
{s.name}
{s.desc}
)}
);
}
// ─────────────────────────────────────────────────────────────
// Personalização — configurador inline
// ─────────────────────────────────────────────────────────────
function Personalizacao({ copy, accent, waLink }) {
const c = copy.perso;
const [idx, setIdx] = React.useState(0);
const screenContents = ['logo', 'video', 'neutral'];
const bgVariants = ['wood', 'concrete', 'black', 'purple'];
const shelfVariants = ['books', 'plants', 'vinyl', 'catalog'];
// Slides pré-configurados — combos curados que rotam automaticamente
const slides = React.useMemo(() => [
{ light: c.lights[0], bg: 0, shelf: 0, screen: 0, photo: 'assets/photos/main-room.jpg' },
{ light: c.lights[3], bg: 3, shelf: 2, screen: 1, photo: 'assets/photos/lounge.jpg' },
{ light: c.lights[2], bg: 1, shelf: 1, screen: 2, photo: 'assets/photos/in-action.jpg' },
{ light: c.lights[1], bg: 0, shelf: 3, screen: 0, photo: 'assets/photos/main-room.jpg' },
{ light: c.lights[5], bg: 2, shelf: 2, screen: 1, photo: 'assets/photos/lounge.jpg' }],
[c.lights]);
// Auto-cycle every 3.2s
React.useEffect(() => {
const t = setInterval(() => setIdx((i) => (i + 1) % slides.length), 3200);
return () => clearInterval(t);
}, [slides.length]);
const s = slides[idx];
return (
{/* Slideshow — preview cycling */}
SLIDE {String(idx + 1).padStart(2, '0')} / {String(slides.length).padStart(2, '0')} · STAGE A
● AUTO
{/* progress dots */}
{slides.map((_, i) =>
{/* CTA */}
);
}
function ConfigRow({ label, options, value, onChange, accent }) {
return (
{label}
{options.map((opt, i) =>
)}
);
}
// ─────────────────────────────────────────────────────────────
// Segmentos — 4 cards link
// ─────────────────────────────────────────────────────────────
function Segmentos({ copy, accent }) {
const c = copy.segs;
return (
);
}
Object.assign(window, { Servicos, ComoFunciona, Personalizacao, Segmentos, ConfigRow });