/* Sections — BOTTOM Team · Gallery · Testimonials · Blog · Newsletter · Contact · Footer */ // ───────── TEAM ───────── function Team() { const t = useT(); const { lang } = useLang(); const owner = GH_DATA.team.find((m) => m.owner); const rest = GH_DATA.team.filter((m) => !m.owner); return ( {t('team_eyebrow')} {t('team_title')} {t('team_title_em')} {/* Owner highlight */} {owner[`role_${lang}`]} {owner.name} {owner[`bio_${lang}`]} {/* Team grid */} {rest.map((m, i) => ( {m.name} {m[`role_${lang}`]} ))} ); } // ───────── GALLERY ───────── function Gallery() { const t = useT(); const { lang } = useLang(); // 6 photos — masonry pattern const spans = [ { col: 2, row: 2 }, // salon big { col: 1, row: 1 }, { col: 1, row: 2 }, // facial room tall { col: 1, row: 1 }, { col: 1, row: 1 }, { col: 2, row: 1 }, // soraya wide ]; return ( {t('gal_eyebrow')} {t('gal_title')} {t('gal_title_em')} {GH_DATA.gallery.map((g, i) => ( {g[`label_${lang}`]} ))} ); } // ───────── TESTIMONIALS ───────── function Testimonials() { const t = useT(); const { lang } = useLang(); const [idx, setIdx] = React.useState(0); const items = GH_DATA.testimonials; React.useEffect(() => { const id = setInterval(() => setIdx((i) => (i + 1) % items.length), 7000); return () => clearInterval(id); }, [items.length]); const current = items[idx]; return ( {t('test_eyebrow')} {t('test_title')} {t('test_title_em')} " {'★'.repeat(current.stars)} {current[lang]} — {current.name} {current.staff && ( {current[`service_${lang}`]} · con {current.staff} )} {items.map((_, i) => ( setIdx(i)} aria-label={`Testimonial ${i+1}`} /> ))} {t('test_more')} ); } // ───────── BLOG ───────── function Blog() { const t = useT(); const { lang } = useLang(); return ( {t('blog_eyebrow')} {t('blog_title')} {t('blog_title_em')} {t('blog_all')} {GH_DATA.blog.map((b, i) => ( ✦ {b[`cat_${lang}`]} {b[`cat_${lang}`]} · {b.date} {b[`title_${lang}`]} {b[`excerpt_${lang}`]} {t('blog_more')} ))} ); } // ───────── NEWSLETTER ───────── function Newsletter() { const t = useT(); const [sent, setSent] = React.useState(false); return ( {t('news_eyebrow')} {t('news_title')} {t('news_title_em')} {t('news_sub')} {sent ? ( {t('news_ok')} ) : ( { e.preventDefault(); const email = e.target.querySelector('input[type=email]').value; fetch('https://formsubmit.co/ajax/goldenhallformaciones@gmail.com', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }, body: JSON.stringify({ email: email, _subject: 'Nueva suscripción newsletter Golden Hall', _template: 'table', _captcha: 'false', origen: 'Newsletter Golden Hall' }) }).finally(() => setSent(true)); }}> {t('news_btn')} )} ); } // ───────── CONTACT ───────── function Contact() { const t = useT(); const { lang } = useLang(); const [sent, setSent] = React.useState(false); return ( {t('cont_eyebrow')} {t('cont_title')} {/* Info */} {t('cont_address')} {GH_DATA.contact.address} {t('cont_phone_l')} {GH_DATA.contact.phone} {t('cont_email_l')} {GH_DATA.contact.email} {t('cont_hours')} {GH_DATA.contact.schedule[lang]} {t('cont_social')} Instagram TikTok WhatsApp {/* Google Maps embed */} {/* Form */} {t('cont_form_t')} {sent ? ( {t('cont_ok')} ) : ( { e.preventDefault(); const fd = new FormData(e.target); const data = Object.fromEntries(fd.entries()); data._subject = 'Mensaje desde la web Golden Hall · ' + (data.asunto || ''); data._template = 'table'; data._captcha = 'false'; fetch('https://formsubmit.co/ajax/goldenhallformaciones@gmail.com', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }, body: JSON.stringify(data) }).finally(() => setSent(true)); }}> {t('cont_name')} {t('cont_email')} {t('cont_phone')} {t('cont_topic')} {lang === 'es' ? 'Reserva cita' : 'Book appointment'} {lang === 'es' ? 'Información cursos' : 'Course info'} {lang === 'es' ? 'Consulta general' : 'General inquiry'} {t('cont_msg')} {t('cont_send')} )} ); } // ───────── SOCIAL ICONS ───────── function SocialIcon({ kind }) { if (kind === 'ig') return ( ); if (kind === 'tt') return ( ); if (kind === 'wa') return ( ); return null; } // ───────── FOOTER ───────── function Footer() { const t = useT(); const { lang } = useLang(); return ( ); } window.Team = Team; window.Gallery = Gallery; window.Testimonials = Testimonials; window.Blog = Blog; window.Newsletter = Newsletter; window.Contact = Contact; window.Footer = Footer; window.SocialIcon = SocialIcon;
{owner[`bio_${lang}`]}
{current[lang]}
{b[`excerpt_${lang}`]}
{t('news_sub')}