import { useState } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import { Card } from '../../ui/Card'; import { Button } from '../../ui/Button'; import { CheckCircle, XCircle, Trophy, RotateCcw, ArrowRight, Mountain, Users, Factory, Lightbulb } from 'lucide-react'; interface FactoresProduccionQuizProps { ejercicioId: string; onComplete?: (puntuacion: number) => void; } interface Pregunta { id: number; pregunta: string; tipo: 'tierra' | 'trabajo' | 'capital' | 'emprendimiento'; opciones: string[]; respuestaCorrecta: number; explicacion: string; } const PREGUNTAS: Pregunta[] = [ { id: 1, pregunta: '¿Cuál de los siguientes es un ejemplo de TIERRA como factor de producción?', tipo: 'tierra', opciones: [ 'El trabajo de un obrero', 'Un terreno agrícola', 'Una máquina industrial', 'La habilidad de un gerente' ], respuestaCorrecta: 1, explicacion: 'La tierra incluye todos los recursos naturales: terrenos, minerales, agua, petróleo, etc. Es todo lo que nos proporciona la naturaleza sin transformar.' }, { id: 2, pregunta: 'El TRABAJO como factor de producción se refiere a:', tipo: 'trabajo', opciones: [ 'Solo el esfuerzo físico', 'Solo el esfuerzo mental', 'El esfuerzo físico y mental que aportan las personas', 'Las máquinas que reemplazan a los humanos' ], respuestaCorrecta: 2, explicacion: 'El trabajo incluye tanto el esfuerzo físico (como el de un albañil) como el mental (como el de un ingeniero). Es el factor humano en la producción.' }, { id: 3, pregunta: '¿Qué se considera CAPITAL como factor de producción?', tipo: 'capital', opciones: [ 'Dinero en una cuenta bancaria', 'Acciones de una empresa', 'Maquinaria, herramientas y equipos utilizados para producir', 'Terrenos y edificios' ], respuestaCorrecta: 2, explicacion: 'En economía, el capital físico (o capital real) son los bienes manufacturados utilizados para producir otros bienes: máquinas, herramientas, fábricas, etc. No es dinero.' }, { id: 4, pregunta: '¿Cuál es la recompensa que reciben los propietarios del factor TIERRA?', tipo: 'tierra', opciones: [ 'Salarios', 'Rentas o alquileres', 'Intereses', 'Beneficios' ], respuestaCorrecta: 1, explicacion: 'Los propietarios de tierra reciben RENTAS (o alquileres) como pago por el uso de sus recursos naturales.' }, { id: 5, pregunta: 'Los trabajadores reciben _____ como recompensa por su factor de producción.', tipo: 'trabajo', opciones: [ 'Intereses', 'Rentas', 'Salarios', 'Dividendos' ], respuestaCorrecta: 2, explicacion: 'El trabajo recibe SALARIOS (o sueldos) como compensación por el esfuerzo físico y mental aportado a la producción.' }, { id: 6, pregunta: '¿Qué reciben los propietarios de CAPITAL como recompensa?', tipo: 'capital', opciones: [ 'Salarios', 'Rentas', 'Intereses', 'Bonificaciones' ], respuestaCorrecta: 2, explicacion: 'El capital recibe INTERESES como recompensa. Si prestas tu capital (maquinaria o dinero para comprarla), recibes intereses a cambio.' }, { id: 7, pregunta: 'El EMPRENDIMIENTO (o empresa) es el factor que:', tipo: 'emprendimiento', opciones: [ 'Solo invierte dinero', 'Combina los otros factores de producción asumiendo riesgos', 'Trabaja en la fábrica', 'Solo vende los productos' ], respuestaCorrecta: 1, explicacion: 'El emprendimiento es el factor que organiza y combina tierra, trabajo y capital para producir bienes y servicios, asumiendo el riesgo del negocio.' }, { id: 8, pregunta: '¿Cuál es la recompensa del EMPRENDIMIENTO?', tipo: 'emprendimiento', opciones: [ 'Salario fijo', 'Intereses garantizados', 'Beneficios (o pérdidas)', 'Renta del terreno' ], respuestaCorrecta: 2, explicacion: 'El emprendimiento recibe BENEFICIOS cuando la empresa tiene éxito, pero también puede sufrir PÉRDIDAS. Es el factor con mayor riesgo y potencial de ganancia.' } ]; export function FactoresProduccionQuiz({ ejercicioId: _ejercicioId, onComplete }: FactoresProduccionQuizProps) { const [preguntaActual, setPreguntaActual] = useState(0); const [respuestaSeleccionada, setRespuestaSeleccionada] = useState(null); const [mostrarResultado, setMostrarResultado] = useState(false); const [puntuacion, setPuntuacion] = useState(0); const [completado, setCompletado] = useState(false); const [respuestasCorrectas, setRespuestasCorrectas] = useState(0); const pregunta = PREGUNTAS[preguntaActual]; const getTipoIcon = (tipo: string) => { switch (tipo) { case 'tierra': return ; case 'trabajo': return ; case 'capital': return ; case 'emprendimiento': return ; default: return null; } }; const getTipoLabel = (tipo: string) => { switch (tipo) { case 'tierra': return 'Tierra'; case 'trabajo': return 'Trabajo'; case 'capital': return 'Capital'; case 'emprendimiento': return 'Emprendimiento'; default: return ''; } }; const getTipoColor = (tipo: string) => { switch (tipo) { case 'tierra': return 'bg-green-100 text-green-700 border-green-200'; case 'trabajo': return 'bg-blue-100 text-blue-700 border-blue-200'; case 'capital': return 'bg-amber-100 text-amber-700 border-amber-200'; case 'emprendimiento': return 'bg-purple-100 text-purple-700 border-purple-200'; default: return 'bg-gray-100 text-gray-700 border-gray-200'; } }; const handleSeleccionar = (index: number) => { if (mostrarResultado) return; setRespuestaSeleccionada(index); }; const handleVerificar = () => { if (respuestaSeleccionada === null) return; const esCorrecta = respuestaSeleccionada === pregunta.respuestaCorrecta; setMostrarResultado(true); if (esCorrecta) { setPuntuacion(prev => prev + Math.round(100 / PREGUNTAS.length)); setRespuestasCorrectas(prev => prev + 1); } if (preguntaActual === PREGUNTAS.length - 1) { setTimeout(() => { setCompletado(true); const puntuacionFinal = puntuacion + (esCorrecta ? Math.round(100 / PREGUNTAS.length) : 0); if (onComplete) { onComplete(puntuacionFinal); } }, 2000); } }; const handleSiguiente = () => { setPreguntaActual(prev => prev + 1); setRespuestaSeleccionada(null); setMostrarResultado(false); }; const handleReiniciar = () => { setPreguntaActual(0); setRespuestaSeleccionada(null); setMostrarResultado(false); setPuntuacion(0); setCompletado(false); setRespuestasCorrectas(0); }; if (completado) { return (

¡Quiz Completado!

Has respondido {respuestasCorrectas} de {PREGUNTAS.length} preguntas correctamente

Tierra

Rentas

Trabajo

Salarios

Capital

Intereses

Emprendimiento

Beneficios

Puntuación Total

{puntuacion}

puntos

); } return (

Factores de Producción

Pregunta {preguntaActual + 1} de {PREGUNTAS.length}

Puntos

{puntuacion}

{getTipoIcon(pregunta.tipo)} {getTipoLabel(pregunta.tipo)}

{pregunta.pregunta}

{pregunta.opciones.map((opcion, index) => { const estaSeleccionada = respuestaSeleccionada === index; const esCorrecta = index === pregunta.respuestaCorrecta; const mostrarCorrecta = mostrarResultado && esCorrecta; const mostrarIncorrecta = mostrarResultado && estaSeleccionada && !esCorrecta; return ( handleSeleccionar(index)} disabled={mostrarResultado} whileHover={!mostrarResultado ? { scale: 1.01 } : {}} whileTap={!mostrarResultado ? { scale: 0.99 } : {}} className={`w-full p-4 rounded-xl border-2 text-left transition-all ${ mostrarCorrecta ? 'border-green-500 bg-green-50' : mostrarIncorrecta ? 'border-red-500 bg-red-50' : estaSeleccionada ? 'border-blue-500 bg-blue-50' : 'border-gray-200 bg-white hover:border-blue-300' }`} >
{mostrarCorrecta && } {mostrarIncorrecta && } {!mostrarResultado && estaSeleccionada && (
)}
{opcion}
); })}
{mostrarResultado && (

{respuestaSeleccionada === pregunta.respuestaCorrecta ? '¡Correcto!' : 'Incorrecto'}

{pregunta.explicacion}

)}
{!mostrarResultado ? ( ) : preguntaActual < PREGUNTAS.length - 1 ? ( ) : null}
); } export default FactoresProduccionQuiz;