/* global React */ // Services overview page + service detail page function ServicesPage({ t, navigate, slug }) { if (slug) { const svc = t.services.items.find((s) => s.slug === slug); if (svc) return ; } return ; } function ServicesOverviewPage({ t, navigate }) { return ( {t.services.eyebrow} {t.services.title} {t.services.sub} {t.services.items.map((svc, i) => ( navigate('services', svc.slug)} /> ))} ); } function ServiceRow({ svc, index, t, onClick }) { const [hovered, setHovered] = useState(false); return ( setHovered(true)} onMouseLeave={() => setHovered(false)} style={{ display: 'grid', gridTemplateColumns: '80px 1fr 2fr 180px 60px', gap: 32, alignItems: 'center', padding: '32px 32px', borderBottom: index < 3 ? '1px solid var(--line)' : 'none', background: hovered ? 'var(--bg-1)' : 'transparent', transition: 'background var(--t-fast)', textAlign: 'left', width: '100%', cursor: 'pointer', }}> {svc.code} {svc.k} {svc.d} {svc.tag} → ); } function ServiceDetail({ svc, t, navigate }) { return ( navigate('services')} className="mono-sm" style={{ color: 'var(--fg-2)', marginBottom: 48, display: 'inline-flex', gap: 8 }}> {t.services.detailBack} {svc.code} · {svc.tag} {svc.k} {svc.d} {/* Scopes */} {t.services.detailScopes} {svc.scopes.map((sc, i) => ( 0{i + 1} {sc} + ))} {/* Outcomes */} {t.services.detailOutcomes} {svc.outcomes.map((o, i) => ( {o} ))} {/* Process strip */} {t.services.detailProcess} {t.home.methodSteps.map((step, i) => ( {step.n} {step.k} {step.t} {i < 4 && ( )} ))} ); } Object.assign(window, { ServicesPage, ServicesOverviewPage, ServiceDetail });
{t.services.sub}
{svc.d}