"use client"; import { useEffect, useState } from "react"; import { lmsApi, Course, Module, Recommendation } from "@/lib/api"; import { Sparkles, AlertTriangle, ArrowRight } from "lucide-react"; import Link from "next/link"; import { BookOpen, ChevronRight, PlayCircle, Calendar, Clock, Info } from "lucide-react"; export default function CourseOutlinePage({ params }: { params: { id: string } }) { const [courseData, setCourseData] = useState<(Course & { modules: Module[] }) | null>(null); const [loading, setLoading] = useState(true); const [recommendations, setRecommendations] = useState([]); const [loadingAI, setLoadingAI] = useState(false); useEffect(() => { lmsApi.getCourseOutline(params.id) .then(setCourseData) .catch(console.error) .finally(() => setLoading(false)); setLoadingAI(true); lmsApi.getRecommendations(params.id) .then(res => setRecommendations(res.recommendations)) .catch(console.error) .finally(() => setLoadingAI(false)); }, [params.id]); if (loading) { return (
{[1, 2, 3].map(i => (
))}
); } if (!courseData) return
Curso no encontrado.
; return (
Catálogo Detalles del Curso

{courseData.title}

{courseData.description || "Domina los principios básicos y las técnicas avanzadas en este plan de estudios estructurado. Cada módulo está diseñado para proporcionar conocimientos prácticos y experiencia práctica."}

{courseData.pacing_mode === 'instructor_led' ? : } {courseData.pacing_mode === 'instructor_led' ? 'Dirigido por un Instructor' : 'A tu Ritmo'}
{courseData.pacing_mode === 'instructor_led' && (courseData.start_date || courseData.end_date) && (
{courseData.start_date ? new Date(courseData.start_date).toLocaleDateString() : 'Por Determinar'} {courseData.end_date ? new Date(courseData.end_date).toLocaleDateString() : 'Por Determinar'}
)}
Módulos {courseData.modules.length}
Lecciones Totales {courseData.modules.reduce((acc, m) => acc + m.lessons.length, 0)}
{/* AI Recommendations Section */} {(loadingAI || recommendations.length > 0) && (

Tu Ruta de Aprendizaje IA

Sugerencias personalizadas basadas en tu rendimiento

{loadingAI ? (
) : ( recommendations.map((rec, i) => (
Prioridad {rec.priority}
{rec.priority === 'high' && }

{rec.title}

{rec.description}

¿Por qué?

{rec.reason}

{rec.lesson_id && ( )}
)) )}
)}
{courseData.modules.map((module, idx) => (
{idx + 1}

{module.title}

{module.lessons.map((lesson) => (
{lesson.content_type === 'video' ? ( ) : ( )}

{lesson.title}

{lesson.content_type === 'activity' ? 'Actividad Interactiva' : 'Lección en Video'}
{lesson.due_date && (
Vencimiento
{new Date(lesson.due_date).toLocaleDateString()}
)}
))}
))}
); }