"use client"; import { useState, useEffect } from "react"; import Image from "next/image"; import VipCard from "./VipCard"; import { useApp } from "@/contexts/AppContext"; import { fetchDashboard, type DashboardData } from "@/lib/api/points"; export default function PointsDashboard() { const { t } = useApp(); const [dashboard, setDashboard] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { async function loadDashboard() { setLoading(true); const data = await fetchDashboard(); setDashboard(data); setLoading(false); } loadDashboard(); }, []); if (loading) { return (
); } if (!dashboard) { return (

{t("points.failedToLoadDashboard")}

); } return (
{/* Header Row */}
{dashboard.season.seasonName}
{dashboard.season.isLive && (
{t("points.live")}
)}
{t("points.xPoints")}
{/* ── 移动端布局 ── */}
{/* Title */}

{t("points.pointsDashboard")}

{t("points.unlockUpTo")} {t("points.xPoints")} {t("points.withEcosystemMultipliers")}

{/* Stats Row - 3 items in one line */}
{t("points.yourTotalPoints")} {dashboard.totalPoints.toLocaleString()}
{t("points.globalRank")} #{dashboard.globalRank.toLocaleString()} Top {dashboard.topPercentage}
{t("points.endsIn")} {dashboard.season.daysRemaining}d {dashboard.season.hoursRemaining}h {new Date(dashboard.season.endTime).toLocaleDateString('en-US', { month: 'short', day: 'numeric' })}
{/* VipCard - full width, own row */}
{/* ── 桌面端布局 ── */}
{/* Left Section - Points Info */}
{/* Title */}

{t("points.pointsDashboard")}

{t("points.unlockUpTo")} {t("points.xPoints")} {t("points.withEcosystemMultipliers")}

{/* Stats Grid */}
{t("points.yourTotalPoints")} {dashboard.totalPoints.toLocaleString()}
{t("points.globalRank")} #{dashboard.globalRank.toLocaleString()} Top {dashboard.topPercentage}
{t("points.endsIn")} {dashboard.season.daysRemaining}d {dashboard.season.hoursRemaining}h {new Date(dashboard.season.endTime).toLocaleDateString('en-US', { month: 'short', day: 'numeric' })}
{/* Right Section - VIP Card */}
); }