/* services.jsx — Capabilities + Tech stack + Process (dark) */
function ServicesPage({ onNavigate }) {
const { t, lang } = useLang();
const { SERVICES, STACK, PROCESS } = window.JMC_DATA;
return (
{/* Hero strip */}
{t.services.hero.eyebrow}
{t.services.hero.title}
{t.services.hero.sub}
onNavigate('contact')}>{t.services.hero.primary}
onNavigate('portfolio')}>{t.services.hero.secondary}
{/* Capabilities — alternating rows w/ images */}
{SERVICES.map((s, i) => (
))}
{/* Tech stack */}
{STACK.map(s => (
{s.category[lang]}
{s.items.map(item => (
-
{item}
))}
))}
{/* Process */}
{PROCESS.map((p, i) => (
{p.n}
{p[lang].label}
{p[lang].body}
))}
onNavigate('contact')}
onSecondary={() => onNavigate('portfolio')}
image="assets/portfolio/bess-investors.png"
/>
);
}
function ServiceRow({ service, index, reverse, onNavigate }) {
const { lang } = useLang();
return (
{service.title[lang]}
{service.body[lang]}
{service.bullets[lang].map(b => (
-
{b}
))}
onNavigate('contact')}>
{lang === 'es' ? 'Conversar este entregable' : 'Discuss this deliverable'}
);
}
window.ServicesPage = ServicesPage;