// service-visuals.jsx — animated SVG visuals per service. // Each visual is keyed by the service id in data.js → serviceGroups[*].items[*].id. const SV_DEFS = ( ); // ─── Individual visuals — each gets a 320×220 canvas ────────────────────── function VLeadGen() { return ( {SV_DEFS} {/* Funnel */} {/* Magnet beams */} {[0,1,2,3,4,5].map(i => ( ))} ); } function VVoice() { return ( {SV_DEFS} {/* Mic */} {/* Waveform bars */} {Array.from({length: 24}).map((_, i) => { const x = 50 + i * 9; return ( ); })} ); } function VContent() { return ( {SV_DEFS} {/* Document */} {/* Lines drawing in */} {[0,1,2,3,4].map(i => ( ))} {/* Cursor */} CONTENT.AI ); } function V360() { return ( {SV_DEFS} {/* Compass rings */} {/* Orbiting dots */} {[0, 90, 180, 270].map((deg, i) => ( ))} 360° ); } function VChat() { return ( {SV_DEFS} {/* Bubble L */} {/* Bubble R */} YES — BOOK IT ); } function VLoop() { return ( {SV_DEFS} AUTO · ON ); } function VFlow() { return ( {SV_DEFS} {/* 4 pipeline stages */} {[0,1,2,3].map(i => ( S{i+1} ))} {/* Traveling lead */} {[0,1,2].map(i => ( ))} ); } function VNode() { return ( {SV_DEFS} {/* Node graph */} {[[60,60],[260,60],[160,110],[60,170],[260,170]].map(([x,y], i) => ( ))} {/* Connecting lines */} {/* Pulses */} {[0,1].map(i => ( ))} ); } function VFunnel() { return ( {SV_DEFS} {Array.from({length: 5}).map((_, i) => ( ))} ); } function VStack() { return ( {SV_DEFS} {[0,1,2].map(i => ( ))} ); } function VMeta() { return ( {SV_DEFS} ); } function VGoogle() { return ( {SV_DEFS} {[0,1,2,3].map(i => ( ))} G ); } function VPin() { return ( {SV_DEFS} {/* Pin */} {/* Ripples */} {[0,1].map(i => ( ))} ); } function VChart() { const bars = [40, 60, 50, 85, 70, 110, 95, 130]; return ( {SV_DEFS} {bars.map((h, i) => ( ))} ); } function VSearch() { return ( {SV_DEFS} {/* Sparkles inside */} {[[125,80],[155,75],[140,100],[150,95]].map(([x,y], i) => ( ))} GEO · AEO · EEAT ); } function VShare() { return ( {SV_DEFS} ); } function VShape() { return ( {SV_DEFS} ); } function VPlay() { return ( {SV_DEFS} {/* Timeline */} ); } // Map by service id (from data.js) const SERVICE_VISUALS = { "lead-gen": VLeadGen, "voice": VVoice, "content": VContent, "360": V360, "whatsapp-bot": VChat, "whatsapp-auto": VLoop, "crm": VFlow, "workflows": VNode, "ghl": VFunnel, "hubspot": VStack, "meta": VMeta, "google": VGoogle, "pinterest": VPin, "perf": VChart, "ai-seo": VSearch, "social": VShare, "design": VShape, "video": VPlay, }; function ServiceVisual({ id }) { const V = SERVICE_VISUALS[id] || V360; return
; } Object.assign(window, { ServiceVisual });