import React, { useState } from 'react'; import { useNavigate } from 'react-router'; import type { Course } from '../types/course'; import { FiArrowLeft, FiPlus, FiTrash2, FiUploadCloud } from 'react-icons/fi'; interface CreateCourseViewProps { onCreateCourse: (course: Course) => void; onShowToast: (msg: string) => void; } export const CreateCourseView: React.FC = ({ onCreateCourse, onShowToast, }) => { const navigate = useNavigate(); const [title, setTitle] = useState(''); const [subtitle, setSubtitle] = useState(''); const [category, setCategory] = useState('Desarrollo Web'); const [level, setLevel] = useState<'Principiante' | 'Intermedio' | 'Avanzado' | 'Todos los niveles'>('Principiante'); const [price, setPrice] = useState(29.99); const [originalPrice, setOriginalPrice] = useState(89.99); const [thumbnail, setThumbnail] = useState('https://images.unsplash.com/photo-1517694712202-14dd9538aa97?w=800&auto=format&fit=crop&q=80'); const [modules, setModules] = useState<{ title: string; lessonsCount: number }[]>([ { title: 'Módulo 1: Introducción y Fundamentos', lessonsCount: 4 }, { title: 'Módulo 2: Proyecto Práctico Principal', lessonsCount: 6 }, ]); const [newModuleTitle, setNewModuleTitle] = useState(''); const handleAddModule = () => { if (newModuleTitle.trim()) { setModules([...modules, { title: newModuleTitle, lessonsCount: 3 }]); setNewModuleTitle(''); } }; const handleRemoveModule = (idx: number) => { setModules(modules.filter((_, i) => i !== idx)); }; const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (!title.trim()) return; const newCourse: Course = { id: `course-${Date.now()}`, title, subtitle: subtitle || 'Aprende paso a paso con proyectos prácticos.', category, level, price: Number(price), originalPrice: Number(originalPrice), rating: 5.0, reviewsCount: 1, studentsCount: 1, thumbnail, duration: '12h 30m', lessonsCount: modules.reduce((sum, m) => sum + m.lessonsCount, 0), badge: 'Nuevo', instructor: { id: 'inst-1', name: 'Tu Nombre (Instructor)', role: 'Instructor Experto', avatar: 'https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=100&auto=format&fit=crop&q=80', rating: 5.0, totalStudents: 1, totalCourses: 1, bio: 'Creador de contenido y profesional en tecnología.', }, updatedAt: 'Reciente', language: 'Español', whatYouWillLearn: [ 'Dominio completo de la tecnología aprendida.', 'Construcción de proyectos prácticos listos para producción.', 'Código fuente completo e instructivos.', ], requirements: ['Computadora con conexión a internet.'], modules: modules.map((m, idx) => ({ id: `mod-${idx}`, title: m.title, lessons: [ { id: `l-${idx}-1`, title: 'Lección 1: Conceptos Clave', duration: '15:00', isFreePreview: true }, { id: `l-${idx}-2`, title: 'Lección 2: Implementación', duration: '22:30' }, ], })), reviews: [], isPublished: true, salesCount: 0, totalRevenue: 0, }; onCreateCourse(newCourse); onShowToast('¡Tu curso ha sido publicado exitosamente en el Marketplace!'); navigate('/seller'); }; return (
{/* Header */}

Publicar Nuevo Curso

Completa los detalles de tu curso para lanzarlo a la comunidad de estudiantes

{/* Form Container */}
{/* Card 1: Informacion Basica */}

1. Información Básica

setTitle(e.target.value)} placeholder="Ej: Master en React 19 y Next.js 15 desde Cero" className="w-full px-4 py-3 bg-slate-950 border border-slate-700/80 rounded-xl text-xs text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-cyan-500" />
setSubtitle(e.target.value)} placeholder="Aprende a construir aplicaciones fullstack de alto rendimiento..." className="w-full px-4 py-3 bg-slate-950 border border-slate-700/80 rounded-xl text-xs text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-cyan-500" />
{/* Card 2: Precio e Imagen */}

2. Precio e Imagen de Portada

setPrice(Number(e.target.value))} className="w-full px-4 py-3 bg-slate-950 border border-slate-700/80 rounded-xl text-xs text-white font-mono focus:outline-none focus:ring-2 focus:ring-cyan-500" />
setOriginalPrice(Number(e.target.value))} className="w-full px-4 py-3 bg-slate-950 border border-slate-700/80 rounded-xl text-xs text-white font-mono focus:outline-none focus:ring-2 focus:ring-cyan-500" />
setThumbnail(e.target.value)} className="flex-1 px-4 py-3 bg-slate-950 border border-slate-700/80 rounded-xl text-xs text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-cyan-500" />
Vista previa
{/* Card 3: Estructura del Temario */}

3. Módulos y Temario

{modules.map((m, idx) => (
{m.title}
))}
setNewModuleTitle(e.target.value)} placeholder="Agregar nuevo título de módulo..." className="flex-1 px-4 py-2.5 bg-slate-950 border border-slate-700/80 rounded-xl text-xs text-white focus:outline-none focus:ring-2 focus:ring-cyan-500" />
{/* Submit Actions */}
); };