'use client'; import { motion } from 'framer-motion'; import { Card, CardBody, Avatar, AvatarGroup } from '@heroui/react'; import { useLanguage } from '@/contexts/LanguageContext'; import { useTheme } from '@/contexts/ThemeContext'; import { useCountUp } from '@/hooks/useCountUp'; // 格式化数字 - 确保始终显示正确的单位 function formatNumber(num: number, prefix: string = '', suffix: string = '', forceUnit: 'M' | 'K' | '' = '') { if (forceUnit === 'M') { return `${prefix}${Math.floor(num)}${suffix}`; } else if (forceUnit === 'K') { return `${prefix}${Math.floor(num)}${suffix}`; } else if (num >= 1000000) { return `${prefix}${Math.floor(num / 1000000)}M${suffix}`; } else if (num >= 1000) { return `${prefix}${Math.floor(num / 1000)}K${suffix}`; } return `${prefix}${num.toLocaleString()}${suffix}`; } export default function StatsSection() { const { t } = useLanguage(); const { theme } = useTheme(); const tvl = useCountUp(485, 1500, 0.80); const apy = useCountUp(515, 1500, 0.85); const yield_ = useCountUp(45, 1500, 0.75); const users = useCountUp(23928, 1800, 0.80); const isDark = theme === 'dark'; return (
{/* TVL */}

{t('stats.tvl')}

{formatNumber(tvl.count, '$', 'M+', 'M')}
{/* APY */}

{t('stats.apy')}

{(apy.count / 100).toFixed(2)}%
{/* Yield */}

{t('stats.yield')}

{formatNumber(yield_.count, '$', 'M', 'M')}
{/* Users */}

{t('stats.users')}

{users.count.toLocaleString()}+
); }