import React, { useState } from 'react';
import { TrendingUp, Zap, BookOpen, GitMerge, Twitter, DollarSign, Box, Globe, Layers, Percent, ArrowDownUp, Building, ArrowRightLeft } from 'lucide-react';
// --- Mock Data ---
// 您可以将这些模拟数据替换为真实的API调用结果
// 新的数据概览部分
const overviewData = {
totalSupply: '120.1M ETH',
stakedEth: '36.2M ETH',
stakedRatio: '30.1%',
stakingApr: '3.5%',
};
const etfOverviewData = {
totalHoldings: '2.5M ETH',
holdingRatio: '2.08%',
inflow24h: '+$50.2M',
};
const coreMetricsData = [
{ label: 'ETH 价格', value: '$3,450.67', change: '+2.5%', icon: },
{ label: '市值', value: '$414.5B', change: '', icon: },
{ label: '24小时交易量', value: '$15.2B', change: '', icon: },
{ label: 'Gas 费用 (Gwei)', value: '15', change: 'low', icon: },
{ label: '上市企业持仓 / 占比', value: '2.9M ETH', change: '2.41%', icon: },
{ label: '企业24h净流入', value: '-$12.3M', change: '', icon: },
];
// 新闻快讯
const newsFlashes = [
{ source: 'CoinTelegraph', text: 'ETH价格在机构兴趣增加的预期中突破3500美元。', time: '5分钟前' },
{ source: 'CoinDesk', text: '以太坊现货ETF可能在第三季度获得批准,分析师表示。', time: '30分钟前' },
{ source: 'The Block', text: 'Vitalik Buterin 提出了一个新的EIP草案,旨在降低L2的Gas费用。', time: '1小时前' },
{ source: 'Decrypt', text: '以太坊开发者会议讨论Pectra升级的最终范围。', time: '3小时前' },
];
// 深度文章
const deepArticles = [
{ title: '以太坊的模块化之路:它如何与Celestia和Avail竞争?', author: 'a16z Crypto', category: '投研分析' },
{ title: '再质押 (Restaking) 的崛起:EigenLayer如何改变ETH的经济模型', author: 'Paradigm', category: '技术深度' },
{ title: 'ETH作为一种通缩资产:合并后的经济学分析', author: 'Bankless', category: '财经观察' },
];
// 技术路线图
const roadmapItems = [
{ name: 'The Merge', status: '完成', description: '从工作量证明 (PoW) 过渡到权益证明 (PoS)。' },
{ name: 'The Surge', status: '进行中', description: '通过EIP-4844 (Proto-Danksharding) 提升L2的可扩展性。' },
{ name: 'The Scourge', status: '计划中', description: '解决MEV中心化风险,确保网络中立性。' },
{ name: 'The Verge', status: '计划中', description: '通过Verkle树简化区块验证,实现无状态客户端。' },
{ name: 'The Purge', status: '计划中', description: '减少历史数据存储,简化协议,降低节点硬件要求。' },
{ name: 'The Splurge', status: '计划中', description: '其他所有重要升级和改进。' },
];
// 名人推文
const tweets = [
{ name: 'Vitalik Buterin', handle: '@VitalikButerin', text: 'The latest EIP drafts for the Pectra upgrade are looking promising. Verkle trees will be a game changer for stateless clients and node scalability on Ethereum.' },
{ name: 'Arthur Hayes', handle: '@CryptoHayes', text: 'The macro environment is aligning for a massive ETH rally. The ETF narrative is just the beginning. The real fuel is the deflationary supply and the yield.' },
{ name: 'Raoul Pal', handle: '@RaoulGMI', text: 'Ethereum is the internet bond. It\'s the base layer for a new financial system. The combination of staking yield and transaction fee burn makes it a triple-point asset.' },
];
// --- Components ---
const Card = ({ children, className = '' }) => (
} title="数据概览" />
{/* Top Row: Main Overview and ETF */}
);
const NewsSection = () => (
} title="实时快讯" />
);
const ArticlesSection = () => (
} title="深度文章" />
);
const RoadmapSection = () => (
} title="技术路线图" />
);
const TweetsSection = () => (
} title="名人推特动态" />
);
// --- Main App Component ---
export default function App() {
const [activeTab, setActiveTab] = useState('data');
const tabs = [
{ id: 'data', label: '数据', icon: },
{ id: 'news', label: '快讯', icon: },
{ id: 'articles', label: '深度文章', icon: },
{ id: 'roadmap', label: '路线图', icon: },
{ id: 'tweets', label: '推特', icon: },
];
const renderContent = () => {
switch (activeTab) {
case 'data': return ;
case 'news': return ;
case 'articles': return ;
case 'roadmap': return ;
case 'tweets': return ;
default: return ;
}
};
return (
{renderContent()}
);
}
{children}
);
const SectionTitle = ({ icon, title }) => (
{icon} {title}
); const DataSection = () => (
{/* Main Overview Card */}
{/* ETF Overview Card */}
{/* Bottom Row: Core Metrics */}
ETH 总量
{overviewData.totalSupply}
ETH 质押量 / 占比
{overviewData.stakedEth}
{overviewData.stakedRatio}
质押年化 (APR)
{overviewData.stakingApr}
ETF 持有总量 / 占比
{etfOverviewData.totalHoldings}
{etfOverviewData.holdingRatio}
24小时流入
{etfOverviewData.inflow24h}
{coreMetricsData.map(item => (
))}
{item.icon}
{item.label}
{item.value}
{item.change &&{item.change}
}
{newsFlashes.map((flash, index) => (
))}
{flash.source}
{flash.time}
{flash.text}
{deepArticles.map((article, index) => (
))}
{article.category}
{article.title}
来源: {article.author}
{roadmapItems.map((item, index) => (
))}
{item.name}
{item.status}
{item.description}
{tweets.map((tweet, index) => (
))}
{tweet.name}
{tweet.handle}
{tweet.text}