// ServiceApp.jsx — boots a service detail page using window.SVC_SLUG const ServiceApp = () => { const slug = window.SVC_SLUG; const data = (window.SERVICES_DATA || {})[slug]; if (!data) { return (
); } const MockupCmp = (window.SERVICE_MOCKUPS || {})[data.mockupKind] || window.WebMockup; const mockupEl = ; return (
); }; const SectionEdge = () => (
); // Related services — cards linking to the other five service pages const RelatedServices = ({ currentSlug }) => { const all = window.SERVICES_DATA || {}; const cur = all[currentSlug]; const others = Object.keys(all).filter(s => s !== currentSlug); others.sort((a, b) => { const sa = all[a].tag === cur.tag ? 0 : 1; const sb = all[b].tag === cur.tag ? 0 : 1; return sa - sb; }); const picks = others.slice(0, 3); return (

Also explore

Related services

{picks.map(s => )}
); }; const RelatedCard = ({ slug, data }) => { const [hover, setHover] = React.useState(false); return ( setHover(true)} onMouseLeave={() => setHover(false)} style={{ display: 'block', textDecoration: 'none', background: hover ? '#141516' : '#0f1011', border: `1px solid ${hover ? '#34343a' : '#23252a'}`, borderRadius: 12, padding: 22, position: 'relative', overflow: 'hidden', transition: 'all 220ms', transform: hover ? 'translateY(-2px)' : 'translateY(0)', }}>
{data.tag}

{data.title.replace(/\.$/, '')}

{data.lead}

Explore the service
); }; Object.assign(window, { ServiceApp, SectionEdge, RelatedServices, RelatedCard });