const WC_BLUE = '#3B6BFF', WC_VIOLET = '#B45CF7', WC_TEAL = '#2FD5DA'; /* Same vertical map as Tag.jsx / CaseArt.jsx. */ const WC_VERT = { igaming:'#7C7CFF', forex:'#2FD5DA', crypto:'#3B6BFF', ecommerce:'#B45CF7', nutra:'#8BB4FF' }; function wcPath(vals, w, h, pad) { const max = Math.max(...vals), min = Math.min(...vals); const span = max - min || 1; const step = (w - pad * 2) / (vals.length - 1); return vals.map((v, i) => { const x = pad + i * step, y = pad + (h - pad * 2) * (1 - (v - min) / span); return (i ? 'L' : 'M') + x.toFixed(1) + ' ' + y.toFixed(1); }).join(' '); } function WCLegend({ items }) { return (
{items.map(([c, l, dash]) => (
{l}
))}
); } function WCHead({ icon, title, sub }) { return (
{title}
{sub}
); } function WCTrajectory() { const W = 1000, H = 260, P = 16; const spend = [22,31,39,48,55,61,68,74,79,86,92,97]; const conv = [12,17,21,29,36,47,55,66,74,83,90,98]; const cpa = [88,84,80,77,71,66,62,57,54,50,47,44]; const months = ['JAN','MAR','MAI','JUL','SET','NOV']; return ( {[0,1,2,3].map(i => ( ))}
{months.map(m => ( {m} ))}
); } function WCRanking() { const rows = [ [L('iGaming · Brazil','iGaming · Brasil'), '9.4', 94, WC_VERT.igaming], [L('Forex · LATAM & Europe','Forex · LATAM e Europa'), '8.7', 87, WC_VERT.forex], [L('Crypto · Global','Cripto · Global'), '8.1', 81, WC_VERT.crypto], [L('Ecommerce · LATAM · USA','Ecommerce · LATAM · EUA'), '7.6', 76, WC_VERT.ecommerce], [L('Nutra · USA','Nutra · EUA'), '6.8', 68, WC_VERT.nutra], ]; return (
{rows.map(([name, val, pct, c]) => (
{name} {val}x
))}
); } function WCDonut() { const slices = [ [L('iGaming','iGaming'), 42, WC_VERT.igaming], [L('Forex','Forex'), 26, WC_VERT.forex], [L('Crypto','Cripto'), 19, WC_VERT.crypto], [L('Ecommerce','Ecommerce'), 13, WC_VERT.ecommerce], ]; const R = 62, C = 2 * Math.PI * R; let acc = 0; return (
{slices.map(([n, p, c]) => { const dash = ; acc += p; return dash; })}
$6M
/ {L('MONTH','MÊS')}
{slices.map(([n, p, c]) => (
{n} {p}%
))}
); } function WorkCharts() { return (
); } Object.assign(window, { WorkCharts });