"use client"; import { useState, useEffect } from "react"; import { Link } from "@/i18n/navigation"; import { HERO_CONFIG, CURRICULUM_CONFIG } from "@/config/course"; import { useAuthAndVip } from "@/app/lib/useAuthAndVip"; 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 { user, vip } = useAuthAndVip(); const [last, setLast] = useState>(null); const [progress, setProgress] = useState({ completed: 0, percent: 0 }); useEffect(() => { setLast(getLastWatched()); setProgress(getProgress(TOTAL_LESSONS)); const onProgress = () => { setLast(getLastWatched()); setProgress(getProgress(TOTAL_LESSONS)); }; window.addEventListener("learning:progress", onProgress); return () => window.removeEventListener("learning:progress", onProgress); }, []); const paid = !!user && vip; 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} 节
)}
); }