/* global React, Eyebrow */ // Small up-trend icon circle, matches SVG in the landing. const TrendCircle = () => (
); const MARKETING_FEATURES = [ { title: '480+ Indicators', body: 'From classic RSI and MACD to Kalman filters, signal processing, and chaos theory — the deepest indicator library available.', }, { title: '48 Exchanges', body: 'Crypto, stocks, forex, and prediction markets. 28 exchanges work instantly without API keys.', }, { title: '100% Free', body: 'No subscriptions, no paywalls, no feature locks. Every indicator, every exchange, every feature — completely free.', }, { title: 'High Performance', body: 'Under 30 MB binary. GPU-accelerated at 200+ FPS. Multi-threaded computation keeps RAM under 400 MB and CPU around 10% — even with dozens of indicators running.', }, ]; // Placeholder "chart" — mimics a trading terminal screenshot. // Replace with a real screenshot by dropping it into ../../assets/. const ChartPlaceholder = () => (
{/* mock chrome */}
BTC/USDT · 1h · binance
{/* mock candle chart */} {/* grid */} {[0.2, 0.4, 0.6, 0.8].map((y, i) => ( ))} {/* candles */} {Array.from({ length: 40 }).map((_, i) => { const x = 10 + i * 9.5; const open = 120 + Math.sin(i * 0.5) * 25 + (Math.random() - 0.5) * 8; const close = open + (Math.sin(i * 0.9 + 1) * 20) + (Math.random() - 0.5) * 10; const high = Math.min(open, close) - 6 - Math.random() * 8; const low = Math.max(open, close) + 6 + Math.random() * 8; const up = close < open; const color = up ? 'rgba(120,200,140,0.85)' : 'rgba(220,100,100,0.85)'; const yTop = Math.min(open, close); const h = Math.abs(close - open) || 1; return ( ); })} {/* trend line */} `${10 + i * 9.5 + 3.5},${140 - Math.sin(i * 0.25) * 20}`).join(' ')} fill="none" stroke="var(--mlc-gold)" strokeWidth="1.2" opacity="0.9" /> {/* corner label — playful badge */}
placeholder · replace with real screenshot
); const Features = () => (
Why mylittlechart

Small but mighty.

{MARKETING_FEATURES.map((f, i) => (

{f.title}

{f.body}

))}
); window.Features = Features;