import * as React from "react" import { TrendingDown, TrendingUp, Users } from "lucide-react" import { CountingNumber } from "@/components/animate-ui/primitives/texts/counting-number" import { useUser } from "@/contexts/user-context" /** * 安全转换数字,避免 NaN */ function safeNumber(value: number): number { return typeof value === 'number' && !isNaN(value) ? value : 0 } /** * 所有活动组件 * 显示用户的所有活动统计数据 */ export function AllActivity() { const { user, loading } = useUser() /* 统计数据 */ const stats = React.useMemo(() => ({ totalReceive: parseFloat(user?.total_receive || '0'), totalPayment: parseFloat(user?.total_payment || '0'), totalCommunity: parseFloat(user?.total_community || '0') }), [user]) /* 功能卡片配置 */ const statCards = React.useMemo(() => [ { title: "总收益", value: stats.totalReceive, icon: TrendingUp, color: "text-green-600", bgColor: "bg-green-100 dark:bg-green-900/20" }, { title: "总消耗", value: stats.totalPayment, icon: TrendingDown, color: "text-red-600", bgColor: "bg-red-100 dark:bg-red-900/20" }, { title: "总划转", value: stats.totalCommunity, icon: Users, color: "text-purple-600", bgColor: "bg-purple-100 dark:bg-purple-900/20" } ], [stats]) return (

数据概览

{statCards.map((card) => { const IconComponent = card.icon return (
{card.title}
{loading ? '-' : ( )}
) })}
) }