import { useState } from 'react' import toast from 'react-hot-toast' import X from 'lucide-react/dist/esm/icons/x' import Spinner from '../shared/Spinner' import { EMPTY_QUESTION, OPTION_LETTERS } from './questionUtils' export default function QuestionForm({ onAdd, onClose }) { const [question, setQuestion] = useState({ ...EMPTY_QUESTION, options: ['', '', '', ''] }) const [loading, setLoading] = useState(false) const isNAT = question.question_type === 'nat' const isMSQ = question.question_type === 'msq' const setOption = (idx, value) => { setQuestion(prev => ({ ...prev, options: prev.options.map((option, optionIdx) => (optionIdx === idx ? value : option)), })) } const submit = async () => { if (!question.question_text.trim()) { toast.error('Question text required'); return } if (!isNAT && question.options.some(option => !option.trim())) { toast.error('Fill all 4 options'); return } if (!question.correct_answer.trim()) { toast.error('Correct answer required'); return } setLoading(true) try { const payload = { ...question, options: isNAT ? [] : question.options, negative_marks: (isMSQ || isNAT) ? 0 : question.negative_marks, } await onAdd(payload) setQuestion({ ...EMPTY_QUESTION, options: ['', '', '', ''] }) toast.success('Question added') } catch (err) { toast.error(err.response?.data?.detail || 'Failed') } finally { setLoading(false) } } return (

Add Question Manually

setQuestion(prev => ({ ...prev, marks: +event.target.value }))} />
setQuestion(prev => ({ ...prev, negative_marks: +event.target.value }))} />