/* Keiko Eyewear — section components (2/2): Kids, Gallery, Wholesale, Briventi, Contact, Footer. */
const KDS2 = window.KeikoEyewearDesignSystem_efeae4;
const { Button: KBtn, Badge: KBadge } = KDS2;
const { WaCTA: KWaCTA, Arrow: KArrow, Img: KImg } = window.KeikoSections1;
const LK = window.KEIKO_LINKS;
const MM = window.KEIKO_MEDIA;
const kimg2 = window.kimg;
const KIDS = { yellow: '#f1d457', blue: '#2BA8E0', red: '#E0463C', green: '#4CA64C' };
function IgGlyph({ s = 18 }) {
return ;
}
function LinkGlyph({ s = 18 }) {
return ;
}
/* =========================================================
KEIKO KIDS — light, playful-but-refined
========================================================= */
function Kids({ t }) {
const k = t.kids;
const dots = [KIDS.yellow, KIDS.blue, KIDS.red, KIDS.green];
return (
{k.eyebrow}
{k.title} {k.accent}
{k.p1}
{k.features.map((f, i) => (
))}
{k.cert && (
{k.cert}
{k.certNote &&
{k.certNote}
}
)}
}>{k.instagram}
);
}
/* =========================================================
GALLERY — editorial grid + lightbox
========================================================= */
function Gallery({ t, onOpen }) {
const g = t.gallery;
const LINES = window.KEIKO_LINES;
const order = ['dama', 'caballero', 'sol', 'kids'];
const f = g.filters || { all: 'All', dama: 'Dama', caballero: 'Caballero', sol: 'Sol', kids: 'Kids' };
const [active, setActive] = React.useState('dama');
const tiles = LINES[active].map((id) => ({ id, cat: active }));
const chips = order.map((c) => [c, f[c]]);
return (
{g.eyebrow}
{g.title} {g.accent}
{g.sub}
{chips.map(([key, label]) => {
const on = active === key;
return (
);
})}
{tiles.map(({ id, cat }, idx) => (
onOpen(kimg2(id, 1600))}
style={{ position: 'relative', overflow: 'hidden', cursor: 'zoom-in', background: 'var(--cream-300)', borderRadius: 4 }}>
))}
);
}
/* =========================================================
VIDEO GALLERY — autoplay muted loop, click for sound
========================================================= */
const KEIKO_VIDEOS = ['assets/video/keiko-5.webm', 'assets/video/keiko-kv2.webm'];
function VideoTile({ src }) {
const ref = React.useRef(null);
const [muted, setMuted] = React.useState(true);
// play/pause on viewport visibility to save resources
React.useEffect(() => {
const v = ref.current;
if (!v || !('IntersectionObserver' in window)) return;
const io = new IntersectionObserver(([e]) => {
if (e.isIntersecting) { v.play && v.play().catch(() => {}); }
else { v.pause && v.pause(); }
}, { threshold: 0.4 });
io.observe(v);
return () => io.disconnect();
}, []);
const toggleSound = () => {
const v = ref.current; if (!v) return;
const next = !muted; setMuted(next); v.muted = next;
if (!next) v.play && v.play().catch(() => {});
};
return (
);
}
function VideoGallery({ t }) {
const v = (t.gallery && t.gallery.video) || { eyebrow: 'Video', title: 'Keiko', accent: 'video' };
return (
{v.eyebrow}
{v.title} {v.accent}
{KEIKO_VIDEOS.map((src) => )}
);
}
/* =========================================================
RETAIL — ¿Dónde comprar? (final customers)
========================================================= */
function Retail({ t }) {
const r = t.retail;
const L = window.KEIKO_LINES;
const bubbles = [L.dama[0], L.caballero[0], L.sol[0], L.kids[0], L.dama[3]];
return (
{r.eyebrow}
{r.title} {r.accent}
{r.body}
{bubbles.map((id, i) => (
))}
}>{r.cta}
);
}
/* =========================================================
WHOLESALE — full-bleed image band, teal overlay
========================================================= */
function Wholesale({ t }) {
const w = t.wholesale;
return (
{w.eyebrow}
{w.title} {w.accent}
{w.body}
{w.points.map((p, i) => (
-
{p}
))}
);
}
/* =========================================================
BRIVENTI
========================================================= */
function Briventi({ t }) {
const b = t.briventi;
return (
{b.eyebrow}
{b.title} {b.accent}
{b.location}
{b.body}
);
}
/* =========================================================
CONTACT
========================================================= */
function Contact({ t }) {
const c = t.contact;
return (
);
}
/* =========================================================
FOOTER
========================================================= */
function Footer({ t, lang, setLang }) {
const links = [['about', '#about'], ['collections', '#collections'], ['kids', '#kids'], ['gallery', '#gallery'], ['wholesale', '#wholesale'], ['briventi', '#briventi'], ['contact', '#contact']];
const langs = [['es', 'Español'], ['en', 'English'], ['zh', '中文'], ['ar', 'العربية']];
return (
);
}
window.KeikoSections2 = { Kids, Gallery, VideoGallery, Retail, Wholesale, Briventi, Contact, Footer };