"use client"; import { useState, useEffect } from "react"; import Link from "next/link"; import { HERO_CONFIG, CURRICULUM_CONFIG } from "@/config/course"; import { isPaid } from "@/app/lib/payment"; import { getLastWatched, getProgress } from "@/app/lib/learning"; import { ParticleBackground } from "./ParticleBackground"; const TOTAL_LESSONS = CURRICULUM_CONFIG.modules.reduce((s, m) => s + m.lessons.length, 0); export function Hero() { const [paid, setPaid] = useState(false); const [last, setLast] = useState>(null); const [progress, setProgress] = useState({ completed: 0, percent: 0 }); useEffect(() => { setPaid(isPaid()); setLast(getLastWatched()); setProgress(getProgress(TOTAL_LESSONS)); const onPay = () => setPaid(isPaid()); const onProgress = () => { setLast(getLastWatched()); setProgress(getProgress(TOTAL_LESSONS)); }; window.addEventListener("pay:updated", onPay); window.addEventListener("learning:progress", onProgress); return () => { window.removeEventListener("pay:updated", onPay); window.removeEventListener("learning:progress", onProgress); }; }, []); return (

{HERO_CONFIG.title}

{HERO_CONFIG.subtitle}

{HERO_CONFIG.stats.map((s) => (
{s.value}
{s.label}
))}
{paid && last ? ( 继续学习 → ) : ( {paid ? "进入课程 →" : "立即报名 →"} )}
{paid && progress.completed > 0 && (
学习进度 {progress.completed}/{TOTAL_LESSONS} 节
{progress.percent >= 100 && ( 查看证书 → )}
)}
); }