/* Sections — SERVICES + ACADEMY */ // ───────── SERVICES (tabs + list) ───────── function Services() { const t = useT(); const { lang } = useLang(); const cats = Object.keys(GH_DATA.services); const [active, setActive] = React.useState(cats[0]); const cat = GH_DATA.services[active]; return ( {t('serv_eyebrow')} {t('serv_title')} {t('serv_title_em')} {t('serv_intro')} {/* Tabs */} {cats.map((c) => ( setActive(c)} > {GH_DATA.services[c][lang]} ))} {/* Lista */} {cat.items.map((s, i) => ( ✦ {s[lang]} {s.time} {s.price} ))} {t('serv_all')} ); } // ───────── ACADEMY — sección estrella ───────── function Academy() { const t = useT(); const { lang } = useLang(); const [filter, setFilter] = React.useState('all'); const filtered = GH_DATA.courses.filter((c) => filter === 'all' ? true : c.mode === filter ); return ( {/* Ghost word behind */} ACADEMY {t('acad_badge')} {t('acad_eyebrow')} {t('acad_title')}{t('acad_title_em')} {t('acad_sub')} {/* Two modes */} {[ { key: 'in', t: t('acad_in_t'), s: t('acad_in_sub'), b: GH_T.acad_in_b[lang] }, { key: 'on', t: t('acad_on_t'), s: t('acad_on_sub'), b: GH_T.acad_on_b[lang] }, ].map((m, i) => ( {m.key === 'in' ? 'A' : 'B'} {m.t} {m.s} {m.b.map((bullet, j) => ( ✦ {bullet} ))} ))} {/* Course catalog */} {lang === 'es' ? 'Catálogo de cursos' : 'Course catalog'} {[ ['all', lang === 'es' ? 'Todos' : 'All'], ['presencial', t('mode_in')], ['online', t('mode_on')], ].map(([k, l]) => ( setFilter(k)} >{l} ))} {filtered.map((c, i) => ( {c.featured && ( {t('featured')} )} {c.img ? ( ) : ( ✺ {c[lang]} )} {c.mode === 'online' ? t('mode_on') : t('mode_in')} {c[`duration_${lang}`] || `${c.hours || ''} ${t('hours')}`} {c[lang]} {c[`desc_${lang}`] && ( {c[`desc_${lang}`]} )} {c[`includes_${lang}`] && ( {c[`includes_${lang}`].slice(0, 3).map((it, ix) => ( ✦ {it} ))} {c[`includes_${lang}`].length > 3 && ( + {c[`includes_${lang}`].length - 3} {lang === 'es' ? 'más' : 'more'} )} )} {c.price ? `${c.price}€` : (lang === 'es' ? 'Ver oferta' : 'See offer')} {c.buyUrl ? ( {t('buy')} ) : ( {lang === 'es' ? 'Info por WhatsApp' : 'Info via WhatsApp'} )} ))} {t('acad_all')} ); } window.Services = Services; window.Academy = Academy;
{t('serv_intro')}
{t('acad_sub')}
{c[`desc_${lang}`]}