"use client"; import React from "react"; import { Question, Answer } from "@/types/exam"; import { Bookmark } from "lucide-react"; interface QuestionItemProps { question: Question; index: number; selectedAnswer: Answer; onSelect: (answer: Answer) => void; userAnswer?: Answer; // new correctAnswer?: Answer; // new showResults?: boolean; // control whether to highlight or not } const letters = ["A", "B", "C", "D"]; // extend if needed const QuestionItem: React.FC = ({ question, index, selectedAnswer, onSelect, userAnswer, correctAnswer, showResults = false, }) => { return (

{index + 1}. {question.question}

{!showResults && (
)}
{question.options.map((opt, optIdx) => { const isSelected = question.type === "Single" ? selectedAnswer === optIdx : Array.isArray(selectedAnswer) && selectedAnswer.includes(optIdx); // ✅ logic for coloring after results let btnClasses = "bg-gray-100 text-gray-900 border-gray-400"; if (isSelected) { btnClasses = "bg-blue-600 text-white border-blue-600"; } if (showResults && correctAnswer !== undefined) { if (question.type === "Single") { if (userAnswer === optIdx && userAnswer !== correctAnswer) { btnClasses = "bg-red-500 text-white border-red-600"; // wrong } if (correctAnswer === optIdx) { btnClasses = "bg-green-500 text-white border-green-600"; // correct } } else { // Multi-select case const userSelected = Array.isArray(userAnswer) && userAnswer.includes(optIdx); const isCorrect = Array.isArray(correctAnswer) && correctAnswer.includes(optIdx); if (userSelected && !isCorrect) { btnClasses = "bg-red-500 text-white border-red-600"; } if (isCorrect) { btnClasses = "bg-green-500 text-white border-green-600"; } } } return (
{opt}
); })}
); }; export default QuestionItem;