import React, { useState } from 'react'; import { useParams, useNavigate } from 'react-router'; import type { Course } from '../types/course'; import { FiStar, FiClock, FiBook, FiGlobe, FiCheck, FiShoppingCart, FiPlay, FiChevronDown, FiChevronUp, FiAward, FiShield, FiArrowLeft } from 'react-icons/fi'; interface CourseDetailViewProps { courses: Course[]; cartCourseIds: string[]; onAddToCart: (course: Course) => void; onBuyNow: (course: Course) => void; } export const CourseDetailView: React.FC = ({ courses, cartCourseIds, onAddToCart, onBuyNow, }) => { const { courseId } = useParams<{ courseId: string }>(); const navigate = useNavigate(); const course = courses.find((c) => c.id === courseId) || courses[0]; const isInCart = cartCourseIds.includes(course.id); const [activeTab, setActiveTab] = useState<'overview' | 'curriculum' | 'instructor' | 'reviews'>('overview'); const [expandedModules, setExpandedModules] = useState([course.modules[0]?.id || 'm-1']); const toggleModule = (id: string) => { if (expandedModules.includes(id)) { setExpandedModules(expandedModules.filter((mId) => mId !== id)); } else { setExpandedModules([...expandedModules, id]); } }; return (
{/* Top Breadcrumb & Back Navigation */}
{/* Main Course Hero & Details */}
{/* Left Info Column */}
{course.category} Nivel: {course.level} {course.badge && ( 🔥 {course.badge} )}

{course.title}

{course.subtitle}

{/* Rating & Instructor summary */}
{course.rating.toFixed(1)}
{[...Array(5)].map((_, i) => ( ))}
({course.reviewsCount} reseñas)
• {course.studentsCount.toLocaleString()} alumnos inscritos
{course.instructor.name} Creado por {course.instructor.name}
{course.language}
Última actualización: {course.updatedAt}
{/* Right Sticky Purchase Card */}
{/* Thumbnail Preview */}
{course.title}
{/* Price section */}
${course.price.toFixed(2)} ${course.originalPrice.toFixed(2)}

¡Ahorra un {Math.round(((course.originalPrice - course.price) / course.originalPrice) * 100)}%!

{/* Buttons */}
{/* Benefits checklist */}

Este curso incluye:

{course.duration} de video bajo demanda
{course.lessonsCount} lecciones descargables
Certificado de finalización
Garantía de reembolso de 30 días
{/* Main Content Tabs & Curriculum */}
{/* Navigation Tabs */}
{/* Tab 1: What you will learn */} {activeTab === 'overview' && (

Lo que aprenderás

{course.whatYouWillLearn.map((item, idx) => (
{item}
))}

Requisitos previas

    {course.requirements.map((req, idx) => (
  • {req}
  • ))}
)} {/* Tab 2: Curriculum Accordion */} {activeTab === 'curriculum' && (

Contenido del Programa

{course.modules.map((mod) => (
{expandedModules.includes(mod.id) && (
{mod.lessons.map((les) => (
{les.title}
{les.duration}
))}
)}
))}
)} {/* Tab 3: Instructor */} {activeTab === 'instructor' && (
{course.instructor.name}

{course.instructor.name}

{course.instructor.role}

{course.instructor.bio}

)}
); };