import ChevronLeft from 'lucide-react/dist/esm/icons/chevron-left' import ChevronRight from 'lucide-react/dist/esm/icons/chevron-right' import Flag from 'lucide-react/dist/esm/icons/flag' import clsx from 'clsx' import MathText from '../shared/MathText' export default function QuestionView({ answers, clearResponse, commitNAT, current, markAndNext, natInput, question, questions, saveAndNext, setCurrent, setMCQ, setNatInput, toggleMSQ, }) { return (
Question Type:{' '} {question.question_type === 'mcq' ? 'MCQ Single' : question.question_type === 'msq' ? 'MSQ Multiple' : 'NAT Numerical'} Marks: +{question.marks} {question.negative_marks > 0 && / -{question.negative_marks}}

Question No. {current + 1}

{question.question_text}
{question.question_image_url && ( question window.open(question.question_image_url, '_blank')} /> )}
{question.question_type === 'mcq' && (
{question.options.map((option, i) => { const letter = 'ABCD'[i] const selected = answers[question.id] === letter return (
setMCQ(letter)} role="button" tabIndex={0} onKeyDown={(event) => { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault() setMCQ(letter) } }} className={clsx('q-option cursor-pointer', selected && 'selected', 'focus-visible:ring-2 focus-visible:ring-sky-500 focus-visible:outline-none')} >
{selected &&
}
{letter}.
{option}
{question.option_images?.[letter] && ( {`option { event.stopPropagation() window.open(question.option_images[letter], '_blank') }} /> )}
) })}
)} {question.question_type === 'msq' && (

One or more correct answers. No negative marking.

{question.options.map((option, i) => { const letter = 'ABCD'[i] const selected = (answers[question.id] || '').split(',').includes(letter) return (
toggleMSQ(letter)} role="button" tabIndex={0} onKeyDown={(event) => { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault() toggleMSQ(letter) } }} className={clsx('q-option cursor-pointer', selected && 'selected-msq', 'focus-visible:ring-2 focus-visible:ring-sky-500 focus-visible:outline-none')} >
{selected && }
{letter}.
{option}
{question.option_images?.[letter] && ( {`option { event.stopPropagation() window.open(question.option_images[letter], '_blank') }} /> )}
) })}
)} {question.question_type === 'nat' && (

Enter numerical answer. No negative marking.

setNatInput(event.target.value)} onBlur={commitNAT} placeholder="Enter answer..." aria-label="Numerical Answer" />
{answers[question.id] && (

✓ Saved: {answers[question.id]}

)}
)}
) }