"use client"; import { useState, useEffect } from "react"; import Link from "next/link"; import { HERO_CONFIG, CURRICULUM_CONFIG } from "../../config/course"; import { isPaid } from "../../lib/payment"; import { triggerPay } from "@/app/lib/triggerPay"; import { getLastWatched, getProgress } from "../../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} 节
)}
); }