// Home page sections for Silverio Estaleiro const { useState, useEffect, useRef } = React; // ---------- HERO PROJECT CAROUSEL (Toyota-style) ---------- const HERO_PROJECTS_PT = [ { code: "SE/CAT-44", name: "Catamarã 44", type: "One-off · Compósito", spec: ["LOA 13.4 m", "Casco infusão epóxi", "Em construção · 2026"], cta: "Acompanhar obra", img: "assets/img-catamara-mar.jpg" }, { code: "SE/HS-38", name: "HS 38", type: "Cruiser one-off · Compósito", spec: ["LOA 11.6 m", "Mobiliário 100% compósito", "Entregue · 2025"], cta: "Ver projeto", img: "assets/img-galpao-cat.jpg" }, { code: "SE/KING-33", name: "Kingfish 33", type: "Lancha sport · Refit técnico", spec: ["LOA 10.0 m", "Refit completo · 11 meses", "Entregue · 2024"], cta: "Ver refit", img: "assets/img-bow-vinho.jpg" }, { code: "SE/CAT-52", name: "Catamarã 52", type: "Charter · Refit & transformação", spec: ["LOA 15.8 m", "Reconfiguração ergonômica", "Em fase final · 2026"], cta: "Acompanhar", img: "assets/img-lancamento-drone.jpg" }]; const HERO_PROJECTS_EN = [ { code: "SE/CAT-44", name: "Catamaran 44", type: "One-off · Composite", spec: ["LOA 13.4 m", "Epoxy infusion hull", "In build · 2026"], cta: "Follow the build", img: "assets/img-catamara-mar.jpg" }, { code: "SE/HS-38", name: "HS 38", type: "One-off cruiser · Composite", spec: ["LOA 11.6 m", "100% composite furniture", "Delivered · 2025"], cta: "View project", img: "assets/img-galpao-cat.jpg" }, { code: "SE/KING-33", name: "Kingfish 33", type: "Sport boat · Technical refit", spec: ["LOA 10.0 m", "Full refit · 11 months", "Delivered · 2024"], cta: "View refit", img: "assets/img-bow-vinho.jpg" }, { code: "SE/CAT-52", name: "Catamaran 52", type: "Charter · Refit & transformation", spec: ["LOA 15.8 m", "Ergonomic reconfiguration", "Final phase · 2026"], cta: "Follow", img: "assets/img-lancamento-drone.jpg" }]; function HeroCarousel({ layout, onContact }) { const { t, lang } = useI18n(); const projects = lang === 'pt' ? HERO_PROJECTS_PT : HERO_PROJECTS_EN; const [i, setI] = useState(0); const [auto, setAuto] = useState(true); useEffect(() => { if (!auto) return; const id = setInterval(() => setI((x) => (x + 1) % projects.length), 6500); return () => clearInterval(id); }, [auto, projects.length]); const p = projects[i]; if (layout === 'split') { return (
{t.hero.eyebrow}

{t.hero.title}

{t.hero.sub}

{t.hero.cta}
{projects.map((pj, idx) => )}
); } // full-bleed video carousel return (
{t.hero.eyebrow}

{t.hero.title}

{t.hero.sub}

{t.hero.cta}
); } // ---------- PILLARS ---------- function Pillars() { const { t } = useI18n(); return (
{t.pillars.items.map((it, i) => { const imgs = [ { src: "assets/img-projeto1.png", meta: "PROJETO\u00a0\u00b7\u00a0ENGENHARIA" }, { src: "assets/img-reuniao.png", meta: "GEST\u00c3O\u00a0\u00b7\u00a0OBRA" }, { src: "assets/img-interior-cozinha.jpg", meta: "ACABAMENTO\u00a0\u00b7\u00a0INTERIOR" }]; const img = imgs[i] || imgs[0]; return (
{it.idx} / 03

{it.label}

{it.body}

); })}
); } // ---------- SERVICES ---------- function Services() { const { t } = useI18n(); return (
{t.services.list.map((s, i) => { const href = ["construcao.html", "refit.html", "design.html", "b2b.html"][i] || "#"; return (
{s.code}

{s.name}

{s.body}

{s.link} →
); })}
); } // ---------- DIFFERENTIATORS ---------- function Diff() { const { t } = useI18n(); return (
{t.diff.list.map((d, i) =>
{d.n}

{d.t}

{d.b}

)}
); } // ---------- PROJECTS GRID ---------- const PROJECT_LIST_PT = [ { code: "P/01", name: "Lady Alice", type: "Restauro e transforma\u00e7\u00e3o", year: "2026", tag: "EM OBRA", ratio: "4/5", img: "assets/img-lady1.jpeg" }, { code: "P/02", name: "Morenita", type: "Constru\u00e7\u00e3o one-off", year: "2025", tag: "ENTREGUE", ratio: "16/10", img: "assets/img-morenita5.jpeg" }, { code: "P/03", name: "Minotauro", type: "Refit", year: "2024", tag: "ENTREGUE", ratio: "4/5", img: "assets/img-minotauro1.jpeg" }, { code: "P/04", name: "Raku D'Fiesta", type: "Constru\u00e7\u00e3o one-off", year: "2026", tag: "EM OBRA", ratio: "16/10", img: "assets/img-lancamento-drone.jpg" }, { code: "P/05", name: "Entusiasmo", type: "Constru\u00e7\u00e3o one-off", year: "2025", tag: "ENTREGUE", ratio: "4/5", img: "assets/img-entusiasmo.jpeg" }, { code: "P/06", name: "San Valentin", type: "Refit", year: "2024", tag: "ENTREGUE", ratio: "16/10", img: "assets/img-sanval.jpeg" }]; const PROJECT_LIST_EN = [ { code: "P/01", name: "Catamaran 44", type: "One-off construction", year: "2026", tag: "IN BUILD", ratio: "4/5", img: "assets/img-lady1.jpeg" }, { code: "P/02", name: "HS 38", type: "Construction \u00b7 delivered", year: "2025", tag: "DELIVERED", ratio: "16/10", img: "assets/img-morenita5.jpeg" }, { code: "P/03", name: "Classic Wine", type: "Technical refit", year: "2024", tag: "DELIVERED", ratio: "4/5", img: "assets/img-minotauro1.jpeg" }, { code: "P/04", name: "Catamaran 52", type: "Refit & transformation", year: "2026", tag: "IN BUILD", ratio: "16/10", img: "assets/img-lancamento-drone.jpg" }, { code: "P/05", name: "Day Cruiser", type: "Finish & detailing", year: "2025", tag: "DELIVERED", ratio: "4/5", img: "assets/img-entusiasmo.jpeg" }, { code: "P/06", name: "San Valentin", type: "Complete refit", year: "2024", tag: "DELIVERED", ratio: "16/10", img: "assets/img-sanval.jpeg" }]; // ---------- PROJECT GALLERIES (lightbox) ---------- const GALLERIES = { "P/01": [ "assets/img-lady0.jpeg", "assets/img-lady01.jpeg", "assets/img-lady1.jpeg", "assets/img-lady2.jpeg", "assets/img-lady3.jpeg", "assets/img-lady5.jpeg", "assets/img-lady6.jpeg", "assets/img-lady7.jpeg", "assets/img-lady8.jpeg", "assets/img-lady9.jpeg", "assets/img-lady91.jpeg", "assets/img-lady92.jpeg", "assets/img-lady93.jpeg", ], "P/02": [ "assets/img-morenita-topo.png", "assets/img-morenita0.jpeg", "assets/img-morenita1.jpeg", "assets/img-morenita2.jpeg", "assets/img-morenita3.jpeg", "assets/img-morenita4.jpeg", "assets/img-morenita5.jpeg", "assets/img-morenita6.jpeg", "assets/img-morenita7.jpeg", "assets/img-morenita8.jpeg", "assets/img-morenita9.jpeg", "assets/img-morenita91.jpeg", ], "P/03": [ "assets/img-minotauro.jpeg", "assets/img-minotauro1.jpeg", "assets/img-minotauro2.jpeg", "assets/img-minotauro3.jpeg", "assets/img-minotauro4.jpeg", "assets/img-minotauro5.jpeg", ], "P/04": [ "assets/img-raku-render.jpeg", "assets/img-raku-sol.jpeg", "assets/img-raku-int.jpeg", "assets/img-raku-galpao.jpeg", "assets/img-raku.jpg", "assets/img-raku1.jpg", "assets/img-raku2.jpg", "assets/img-raku3.jpeg", "assets/img-raku4.jpeg", "assets/img-raku5.jpeg", "assets/img-raku6.jpeg", "assets/img-raku7.jpeg", "assets/img-raku8.jpeg", "assets/img-raku9.jpeg", "assets/img-raku91.jpeg", "assets/img-raku92.jpeg", "assets/img-raku93.jpeg", ], "P/05": [ "assets/img-entusiasmo.jpeg", "assets/img-entusiasmo1.jpeg", "assets/img-entusiasmo2.jpeg", "assets/img-entusiasmo3.jpeg", "assets/img-entusiasmo4.jpeg", "assets/img-entusiasmo5.jpeg", "assets/img-entusiasmo6.jpeg", "assets/img-entusiasmo7.jpeg", ], "P/06": [ "assets/img-sanval.jpeg", "assets/img-sanval1.jpeg", "assets/img-sanval2.jpeg", "assets/img-sanval3.jpeg", "assets/img-sanval4.jpeg", "assets/img-sanval5.jpeg", ], }; function Lightbox({ project, onClose }) { const [i, setI] = useState(0); const imgs = project ? (GALLERIES[project.code] || [project.img]) : []; const open = !!project; useEffect(() => { setI(0); }, [project && project.code]); useEffect(() => { if (!open) return; const onKey = (e) => { if (e.key === 'Escape') onClose(); else if (e.key === 'ArrowRight') setI((x) => (x + 1) % imgs.length); else if (e.key === 'ArrowLeft') setI((x) => (x - 1 + imgs.length) % imgs.length); }; window.addEventListener('keydown', onKey); document.body.style.overflow = 'hidden'; return () => { window.removeEventListener('keydown', onKey); document.body.style.overflow = ''; }; }, [open, imgs.length]); if (!project) return null; return (
e.stopPropagation()}>
{project.code} · {project.year}

{project.name}

{String(i + 1).padStart(2, '0')} / {String(imgs.length).padStart(2, '0')}
e.stopPropagation()}> {project.name {imgs.length > 1 && ( <> )}
{imgs.length > 1 && (
e.stopPropagation()}> {imgs.map((src, idx) => ( ))}
)}
); } function Projects() { const { t, lang } = useI18n(); const list = lang === 'pt' ? PROJECT_LIST_PT : PROJECT_LIST_EN; const [open, setOpen] = useState(null); return ( <>
{list.map((p, i) => { e.preventDefault(); setOpen(p); }}>
{p.code}

{p.name}

{p.type}
{t.projects.view} →
)}
setOpen(null)} /> ); } // ---------- B2B ---------- function B2B() { const { t } = useI18n(); return (
{t.b2b.eyebrow}

{t.b2b.title}

{t.b2b.sub}
{t.b2b.list.map((b, i) =>
{b.code}

{b.t}

{b.b}

)}
); } // ---------- ABOUT ---------- function About() { const { t } = useI18n(); return (
{t.about.eyebrow}

{t.about.title}

{t.about.body}

{t.about.cta} →
); } // ---------- CTA ---------- function FinalCTA({ onContact, onVisit }) { const { t } = useI18n(); return (
{t.cta.eyebrow}

{t.cta.title}

{t.cta.sub}

RESPOSTA / ATÉ 48H
WHATSAPP · +55 47 99120 8818
silvana.silverio@silverioestaleiro.com.br
); } Object.assign(window, { HeroCarousel, Pillars, Services, Diff, Projects, B2B, About, FinalCTA });