From e7e1c1c8d54ec9608205442779c215988fdfd5c7 Mon Sep 17 00:00:00 2001 From: Arik Chakma Date: Thu, 3 Jul 2025 02:14:29 +0600 Subject: [PATCH] wip --- src/components/AIQuiz/AIQuizResults.tsx | 34 +++-------- src/components/AIQuiz/AIQuizStripe.tsx | 78 ++++++++++++++++--------- 2 files changed, 58 insertions(+), 54 deletions(-) diff --git a/src/components/AIQuiz/AIQuizResults.tsx b/src/components/AIQuiz/AIQuizResults.tsx index d16e3c474..34ba3e42d 100644 --- a/src/components/AIQuiz/AIQuizResults.tsx +++ b/src/components/AIQuiz/AIQuizResults.tsx @@ -1,21 +1,15 @@ import { - CheckCircle, PartyPopper, - RefreshCcw, RotateCcw, XCircle, SkipForward, CheckCircle2Icon, PlusIcon, - CheckCircleIcon, - XCircleIcon, - SkipForwardIcon, - CheckIcon, - XIcon, } from 'lucide-react'; import type { QuestionState } from './AIQuizContent'; import { getPercentage } from '../../lib/number'; import { cn } from '../../lib/classname'; +import { QuizStateButton } from './AIQuizStripe'; type AIQuizResultsProps = { questionStates: Record; @@ -61,27 +55,15 @@ export function AIQuizResults(props: AIQuizResultsProps) {
{states.map((state, quizIndex) => { - const { status } = state; - - const isCorrect = status === 'correct'; - const isIncorrect = status === 'incorrect'; - const isSkipped = status === 'skipped'; - return ( - + state={state} + quizIndex={quizIndex} + isActive={true} + onReview={onReview} + className="p-2" + /> ); })}
diff --git a/src/components/AIQuiz/AIQuizStripe.tsx b/src/components/AIQuiz/AIQuizStripe.tsx index b40c422dc..6494f6c2f 100644 --- a/src/components/AIQuiz/AIQuizStripe.tsx +++ b/src/components/AIQuiz/AIQuizStripe.tsx @@ -2,6 +2,7 @@ import { cn } from '../../lib/classname'; import { ArrowRightIcon, CheckIcon, + CircleAlertIcon, SkipForwardIcon, XIcon, } from 'lucide-react'; @@ -14,48 +15,69 @@ type AIQuizStripeProps = { onComplete?: () => void; }; +type QuizStateButtonProps = { + state: QuestionState; + quizIndex: number; + isActive: boolean; + onReview?: (questionIndex: number) => void; + className?: string; +}; + +export function QuizStateButton(props: QuizStateButtonProps) { + const { state, quizIndex, isActive, onReview, className } = props; + const { status } = state; + + const isCorrect = status === 'correct'; + const isIncorrect = status === 'incorrect'; + const isSkipped = status === 'skipped'; + const isCanBeImproved = status === 'can_be_improved'; + + return ( + + ); +} + export function AIQuizStripe(props: AIQuizStripeProps) { const { activeQuestionIndex, questionStates, onReview, onComplete } = props; - const states = Object.values(questionStates); return (
- {states.map((state, quizIndex) => { - const { status } = state; - - const isActive = quizIndex === activeQuestionIndex; - const isCorrect = status === 'correct'; - const isIncorrect = status === 'incorrect'; - const isSkipped = status === 'skipped'; - - return ( - - ); - })} + {states.map((state, quizIndex) => ( + + ))}