/* ============================================================ CHAINUS — Value, Features (broken bento), Anywhere ============================================================ */ function SignalMap({ t }) { const nodes = t.dir === 'zh' ? [ ['社区', '讨论 / 关注'], ['资产', '上链 / 所有权'], ['行情', '价格 / 情绪'], ['学习', '术语 / 引导'], ['信任', '钱包 / 合约'], ] : [ ['Community', 'Posts / follows'], ['Assets', 'Mint / ownership'], ['Market', 'Price / mood'], ['Learning', 'Terms / guidance'], ['Trust', 'Wallet / contracts'], ]; return (
ChainUs {t.dir === 'zh' ? '把散乱数据合成信号' : 'Turns scattered data into signal'}
{nodes.map((n, i) => (
{n[0]} {n[1]}
))}
); } function SignalConstellation({ t }) { const nodes = t.dir === 'zh' ? [ ['Ray 上链插画', 'Post'], ['0.12 ETH', 'Asset'], ['RWA 热度上升', 'Topic'], ['BTC +2.4%', 'Market'], ['情绪 68', 'Mood'], ['新手解释', 'Learn'], ] : [ ['Ray minted art', 'Post'], ['0.12 ETH', 'Asset'], ['RWA rising', 'Topic'], ['BTC +2.4%', 'Market'], ['Mood 68', 'Mood'], ['Plain explain', 'Learn'], ]; return ( ); } function ValueProp({ t }) { const v = t.value; return (
{v.eyebrow} {v.title[0]} {v.title[1]}
{v.body}
{v.stats.map((s, i) => (
{s.k}
{s.v}
))}
); } /* native mini feed rows used in the feed feature */ function FeedPreview({ t }) { return (
{t.hero.cardFeedUser}{t.dir === 'zh' ? '上链了一组插画' : 'minted an illustration set'}
♥ 248↗ 31
); } function Features({ t }) { const items = t.features.items; const feed = items[0], tok = items[1], learn = items[2]; return (
{/* Feature 1 — feed, full split story */}
{feed.tag}

{feed.title}

{feed.body}

{/* Features 2 + 3 — asymmetric pair */}
{tok.tag}

{tok.title}

{tok.body}

{t.dir === 'zh' ? '选择对象' : 'Choose item'} {t.dir === 'zh' ? '确认信息' : 'Confirm details'} {t.dir === 'zh' ? '发布上链' : 'Publish on-chain'}
{learn.tag}

{learn.title}

{learn.body}

Gas{t.dir === 'zh' ? '= 网络手续费' : '= network fee'}
Mint{t.dir === 'zh' ? '= 把东西上链' : '= put it on-chain'}
RWA{t.dir === 'zh' ? '= 现实世界资产' : '= real-world asset'}
); } /* ---- Mobile / Web / Tablet ---- */ function Anywhere({ t }) { const a = t.anywhere; const [view, setView] = useState('web'); const views = [ { id: 'mobile', label: t.dir === 'zh' ? '手机 App' : 'Mobile' }, { id: 'web', label: t.dir === 'zh' ? '网页版' : 'Web' }, { id: 'tablet', label: t.dir === 'zh' ? '平板' : 'Tablet' }, ]; return (
{a.title[0]} {a.title[1]} {a.body} {a.tags.map((tag, i) => {tag.t})} {views.map((vw) => ( ))}
{view === 'web' &&
} {view === 'mobile' &&
} {view === 'tablet' &&
}
); } Object.assign(window, { ValueProp, Features, Anywhere, FeedPreview });