/* Brand icons — real platform marks (inline SVG) ===================== Recognizable logos used purely as integration/source identifiers. Each returns a ; pass size. Main glyphs that must invert in dark mode (TikTok, X) use fill="currentColor" + a tone class on the wrapper. =================================================================== */ function BrandIcon({ name, size=18, className='' }){ const s = size; const base = { width:s, height:s, viewBox:'0 0 24 24', className }; /* Unique per-instance gradient ids — fixed ids collide when the icon renders multiple times (or inside hidden nodes), which blanked the Instagram / Meta / Pipeboard marks. (Hook must run before any return.) */ const uid = React.useMemo(()=>Math.random().toString(36).slice(2,8), []); /* Official platform logo PNGs (report_assets/platforms/, user-supplied) take precedence everywhere; the inline SVGs below remain the fallback for providers without a PNG (pipeboard, mysql, relay, ga, …). */ const png = (window.R_PLATFORM_LOGOS || {})[name]; if (png) return {name}; switch(name){ case 'facebook': return ( ); case 'instagram': return ( ); case 'meta': return ( ); case 'google': return ( ); case 'ga': /* Google Analytics */ return ( ); case 'tiktok': return ( ); case 'snapchat': return ( ); case 'x': return ( ); case 'linkedin': return ( ); case 'pipeboard': return ( ); case 'zernio': return ( ); case 'claude': return ( {Array.from({length:12}).map((_,i)=>{ const a = (i*Math.PI*2)/12; const r0 = 2.2, r1 = 6.6; return ; })} ); case 'mysql': return ( ); case 'custom': return ( ); case 'analytics_alt': case 'relay': default: return ; } } /* platform id / provider → brand icon name */ const PLATFORM_ICON = { overview:'relay', meta:'meta', facebook:'facebook', instagram:'instagram', google:'google', google_analytics:'ga', tiktok:'tiktok', snapchat:'snapchat', x:'x', twitter:'x', linkedin:'linkedin', }; const PROVIDER_ICON = { pipeboard:'pipeboard', zernio:'zernio', meta:'meta', google:'google', ga:'ga', tiktok:'tiktok', snapchat:'snapchat', x:'x', linkedin:'linkedin', mysql:'mysql', custom:'custom', claude:'claude', facebook:'facebook', instagram:'instagram', }; function platformIcon(id){ return PLATFORM_ICON[id] || 'relay'; } Object.assign(window, { BrandIcon, PLATFORM_ICON, PROVIDER_ICON, platformIcon });