"use client"; import { useState, useEffect } from "react"; import { Link } from "@/i18n/navigation"; import { HERO_CONFIG, CURRICULUM_CONFIG } from "@/config/course"; import { isPaid } from "@/app/lib/course-payment"; import { getLastWatched, getProgress } from "@/app/lib/learning"; const TOTAL_LESSONS = CURRICULUM_CONFIG.modules.reduce((s, m) => s + m.lessons.length, 0); export function CourseHero() { 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} 节
)}
); }