/* CoinPage — public-facing coin page on the marketing site. Click a coin in the ticker / featured coins → arrive here. Layout: breadcrumb + hero (price + chart), then News/Videos tabs. */ const CoinPage = ({ symbol, onBack }) => { const c = COINS.find(x => x.symbol === symbol) || COINS[0]; const [tf, setTf] = useState("1D"); const data = useMemo( () => genSpark(c.seed * 7, !c.down).concat(genSpark(c.seed * 11, !c.down)), [c.symbol] ); const min = Math.min(...data), max = Math.max(...data); const range = max - min || 1; const w = 1100, h = 320; const pts = data.map((d, i) => [(i / (data.length - 1)) * w, h - ((d - min) / range) * (h - 40) - 20]); const path = "M" + pts.map(p => p.join(" ")).join(" L "); const up = !c.down; const stroke = up ? "var(--up)" : "var(--down)"; const id = `mkt-chart-${c.symbol}`; React.useEffect(() => { window.scrollTo(0, 0); }, [c.symbol]); return (
); }; window.CoinPage = CoinPage;