import { useState } from 'react'; interface CostoOportunidadCotidianoProps { ejercicioId: string; onComplete?: (puntuacion: number) => void; } interface Situacion { id: number; titulo: string; descripcion: string; decision: string; opciones: string[]; costoOportunidadCorrecto: string; explicacion: string; } const situaciones: Situacion[] = [ { id: 1, titulo: "Tiempo libre", descripcion: "Tienes 3 horas libres un sábado por la tarde.", decision: "Decides estudiar para un examen importante.", opciones: [ "El tiempo que podrías haber pasado con amigos", "Las calificaciones del examen", "El dinero ahorrado", "La comida que no comiste" ], costoOportunidadCorrecto: "El tiempo que podrías haber pasado con amigos", explicacion: "El costo de oportunidad es lo que sacrificas: el tiempo con amigos que elegiste no hacer." }, { id: 2, titulo: "Compra de tecnología", descripcion: "Tienes $1,000 ahorrados.", decision: "Compras una laptop nueva para trabajar.", opciones: [ "El dinero que gastaste", "El dinero que podrías haber invertido", "La laptop misma", "Las especificaciones técnicas" ], costoOportunidadCorrecto: "El dinero que podrías haber invertido", explicacion: "Al gastar en la laptop, sacrificas la oportunidad de invertir ese dinero y obtener rendimientos." }, { id: 3, titulo: "Carrera profesional", descripcion: "Terminas la universidad con dos ofertas de trabajo.", decision: "Aceptas el trabajo en una startup con menor salario inicial.", opciones: [ "El salario más alto de la otra oferta", "La experiencia en la startup", "Tu título universitario", "El tiempo de búsqueda" ], costoOportunidadCorrecto: "El salario más alto de la otra oferta", explicacion: "Al elegir la startup, renuncias al salario más alto que ofrecía la otra empresa." }, { id: 4, titulo: "Vacaciones", descripcion: "Tienes dos semanas de vacaciones este verano.", decision: "Viajas a Europa en lugar de quedarte trabajando.", opciones: [ "Las fotos que tomarás", "El dinero que gastarás en el viaje", "El dinero que podrías haber ganado trabajando", "La experiencia cultural" ], costoOportunidadCorrecto: "El dinero que podrías haber ganado trabajando", explicacion: "El costo de oportunidad incluye los ingresos que sacrificas al no trabajar esas semanas." } ]; export function CostoOportunidadCotidiano({ ejercicioId: _ejercicioId, onComplete }: CostoOportunidadCotidianoProps) { const [respuestas, setRespuestas] = useState<{[key: number]: string}>({}); const [mostrarExplicacion, setMostrarExplicacion] = useState<{[key: number]: boolean}>({}); const [completado, setCompletado] = useState(false); const handleSeleccion = (situacionId: number, opcion: string) => { setRespuestas(prev => ({ ...prev, [situacionId]: opcion })); }; const handleValidar = () => { const nuevasExplicaciones: {[key: number]: boolean} = {}; let correctas = 0; situaciones.forEach(situacion => { nuevasExplicaciones[situacion.id] = true; if (respuestas[situacion.id] === situacion.costoOportunidadCorrecto) { correctas++; } }); setMostrarExplicacion(nuevasExplicaciones); if (correctas === situaciones.length && !completado) { setCompletado(true); if (onComplete) { onComplete(100); } } }; const handleReset = () => { setRespuestas({}); setMostrarExplicacion({}); setCompletado(false); }; const correctas = situaciones.filter(s => respuestas[s.id] === s.costoOportunidadCorrecto).length; return (

Costo de Oportunidad en Decisiones Cotidianas

Identifica el costo de oportunidad en cada situación de la vida real.

Recuerda: El costo de oportunidad es el valor de la mejor alternativa a la que renuncias al tomar una decisión. No es lo que gastas, sino lo que sacrificas.

{situaciones.map((situacion, index) => (
{index + 1}

{situacion.titulo}

{situacion.descripcion}

Decisión: {situacion.decision}

¿Cuál es el costo de oportunidad?

{situacion.opciones.map((opcion) => { const isSelected = respuestas[situacion.id] === opcion; const isCorrect = opcion === situacion.costoOportunidadCorrecto; const showResult = mostrarExplicacion[situacion.id]; let buttonClass = 'border border-gray-300 bg-white text-gray-700 hover:bg-gray-50'; if (showResult) { if (isCorrect) { buttonClass = 'border-green-500 bg-green-50 text-green-800'; } else if (isSelected && !isCorrect) { buttonClass = 'border-red-500 bg-red-50 text-red-800'; } else { buttonClass = 'border-gray-200 bg-gray-50 text-gray-400'; } } else if (isSelected) { buttonClass = 'border-blue-500 bg-blue-50 text-blue-800'; } return ( ); })}
{mostrarExplicacion[situacion.id] && (

{respuestas[situacion.id] === situacion.costoOportunidadCorrecto ? '¡Correcto!' : 'Respuesta correcta:'}

{situacion.explicacion}

)}
))}
{completado && (

¡Excelente comprensión!

100 puntos

Has identificado correctamente todos los costos de oportunidad.

)}
); } export default CostoOportunidadCotidiano;