"use client"; import { useMemo, useState } from "react"; import Link from "next/link"; import { CheckCircle2, Clock, Flag, Send } from "lucide-react"; import { buildWeekendPyqTest, evaluatePyqAnswers, updatePhase3Activity, type WeekendPyqResult } from "@/lib/phase3-learning"; import { cn } from "@/lib/utils"; import { getDefaultTuitionSupportInput } from "./tuitionSupportData"; export function WeekendPyqTestPage() { const input = useMemo(() => getDefaultTuitionSupportInput(), []); const test = useMemo(() => buildWeekendPyqTest(input), [input]); const [activeQuestionId, setActiveQuestionId] = useState(test.questions[0]?.id ?? ""); const [answers, setAnswers] = useState>({}); const [marked, setMarked] = useState>(() => new Set()); const [result, setResult] = useState(null); const activeQuestion = test.questions.find((question) => question.id === activeQuestionId) ?? test.questions[0]; function updateAnswer(questionId: string, answer: string) { setAnswers((current) => ({ ...current, [questionId]: answer })); } function toggleMarked(questionId: string) { setMarked((current) => { const next = new Set(current); if (next.has(questionId)) next.delete(questionId); else next.add(questionId); return next; }); } function submitTest() { const nextResult = evaluatePyqAnswers(test, answers); setResult(nextResult); updatePhase3Activity({ pyqSubmittedAt: new Date().toISOString(), pyqScore: nextResult.score, pyqMaxScore: nextResult.maxScore, weakTopicsAdded: nextResult.weakAreas, }); } return (

{test.weekLabel}

Previous Questions Practice

Sample exam practice for {test.subject} - {test.chapter}. More previous-question practice is coming as the beta improves.

{test.estimatedMinutes} min

{test.safePatternNote}

{activeQuestion.label}

{activeQuestion.question}

{activeQuestion.marks} marks