/* ============================================================ CHAINUS — Market Intelligence (native data-viz) + Marketplace ============================================================ */ function MarketOrbit({ t, pair }) { const labels = t.dir === 'zh' ? ['价格', '情绪', '流动性', '新闻', '预测', '社区热度'] : ['Price', 'Mood', 'Liquidity', 'News', 'Forecast', 'Community heat']; return (
{pair.sym} {pair.px} = 0 ? 'pos' : 'neg'}>{pair.c >= 0 ? '+' : ''}{pair.c}%
{labels.map((l, i) => {l})}
); } function MarketIntel({ t }) { const m = t.market; const [tab, setTab] = useState(0); const [range, setRange] = useState(1); const seed = (tab + 1) * 13 + (range + 1) * 7; const pair = m.pairs[tab]; const news = m.news.concat(m.news); return (
{m.title[0]} {m.title[1]}
{m.sub}
{/* top stat strip */} {m.stats.map((s, i) => (
{s.k} {s.v} = 0 ? 'pos' : 'neg'}`}>{s.c >= 0 ? '+' : ''}{s.c}%
))}
{/* main chart */}
{pair.sym}
{pair.name} {pair.px} = 0 ? 'pos' : 'neg'}`}>{pair.c >= 0 ? '+' : ''}{pair.c}%
{m.pairs.map((p, i) => )}
{m.ranges.map((r, i) => )}
{m.modules.liquidity}
{/* side modules */}
{m.modules.sentiment}

{m.sentiment.note}

{m.modules.alloc}
    {m.alloc.segments.map((s, i) => (
  • {s.n}{s.v}%
  • ))}
{/* lower row: rates + RWA/NFT + events */}
{m.modules.rates}
    {m.rates.map((r, i) => (
  • {r.n} = 0 ? 'var(--up)' : 'var(--down)'} w={70} h={22} fill={false} strokeW={1.8} id={'rs' + i} /> {r.v} = 0 ? 'pos' : 'neg'}`}>{r.c >= 0 ? '+' : ''}{r.c}%
  • ))}
{m.modules.news}
{news.map((n, i) => (
{n.tag} {n.text}
))}
); } /* ---- Marketplace ---- */ function marketKindFor(item) { const slot = (item.slot || '').toLowerCase(); if (slot.includes('rwa')) return 'rwa'; if (slot.includes('member')) return 'member'; return 'nft'; } function marketShotFor(item) { const kind = marketKindFor(item); if (kind === 'rwa') return 'assets/v3/metals-page-desktop.png'; return ''; } function MarketArt({ item, index }) { const kind = marketKindFor(item); const shot = marketShotFor(item); const positions = ['46% 74%', '50% 48%', '48% 38%', '50% 42%', '44% 70%']; const pos = positions[index % positions.length]; return ( ); } function Marketplace({ t }) { const mp = t.marketplace; const main = mp.items[0]; const supporting = mp.items.slice(1, 4); return (
{mp.eyebrow} {mp.title[0]} {mp.title[1]} {mp.sub} {mp.cta} {mp.steps.map((step, i) => (
  • {String(i + 1).padStart(2, '0')} {step}
  • ))}
    {main.price} {mp.stepLabel}
    {main.name}
    {mp.steps.map((step, i) => (
    {String(i + 1).padStart(2, '0')} {step}
    ))}
    {mp.cta}
    {supporting.map((it) => (
    {it.price} {it.name} {mp.stepLabel}
    ))}
    ); } Object.assign(window, { MarketIntel, MarketOrbit, MarketArt, marketKindFor, marketShotFor, Marketplace });