"use client"; import { useState } from "react"; interface QuizQuestion { id: string; question: string; options: string[]; correct: number[]; type?: 'multiple-choice' | 'true-false' | 'multiple-select'; } interface QuizPlayerProps { id: string; title?: string; quizData: { questions: QuizQuestion[]; }; } export default function QuizPlayer({ id, title, quizData }: QuizPlayerProps) { const [userAnswers, setUserAnswers] = useState>({}); const [submitted, setSubmitted] = useState(false); const questions = quizData?.questions || []; const handleAnswer = (qId: string, optionIndex: number, isMulti: boolean) => { if (submitted) return; setUserAnswers(prev => { const current = prev[qId] || []; if (isMulti) { const next = current.includes(optionIndex) ? current.filter(i => i !== optionIndex) : [...current, optionIndex].sort((a, b) => a - b); return { ...prev, [qId]: next }; } else { return { ...prev, [qId]: [optionIndex] }; } }); }; return (

{title || "Knowledge Check"}

{questions.map((q) => (

{q.question}

{q.options.map((opt, oIdx) => { const isSelected = userAnswers[q.id]?.includes(oIdx); const isCorrect = q.correct?.includes(oIdx); const isActuallyCorrect = isCorrect && isSelected; const isWrongSelection = !isCorrect && isSelected; const missedCorrect = isCorrect && !isSelected; let style = "glass border-white/10 hover:bg-white/5"; if (submitted) { if (isActuallyCorrect) style = "bg-green-500/20 border-green-500 text-green-400"; else if (isWrongSelection) style = "bg-red-500/20 border-red-500 text-red-100"; else if (missedCorrect) style = "border-orange-500/50 text-orange-400 animate-pulse"; else style = "opacity-50 grayscale border-white/5"; } else if (isSelected) { style = "bg-blue-500/20 border-blue-500 text-white shadow-[0_0_20px_rgba(59,130,246,0.2)]"; } return ( ); })}
))} {!submitted && questions.length > 0 && ( )} {submitted && ( )}
); }