71 lines
1.9 KiB
TypeScript
71 lines
1.9 KiB
TypeScript
import type { ReactNode } from "react";
|
||
|
||
import KatexRenderer from "@/components/math/KatexRenderer";
|
||
|
||
interface AnswerResultLineProps {
|
||
expressionLatex: string;
|
||
userAnswerLatex: string;
|
||
correctAnswerLatex: string;
|
||
correct: boolean;
|
||
prefix?: ReactNode;
|
||
userAnswerContent?: ReactNode;
|
||
correctAnswerContent?: ReactNode;
|
||
}
|
||
|
||
export default function AnswerResultLine({
|
||
expressionLatex,
|
||
userAnswerLatex,
|
||
correctAnswerLatex,
|
||
correct,
|
||
prefix,
|
||
userAnswerContent,
|
||
correctAnswerContent,
|
||
}: AnswerResultLineProps) {
|
||
return (
|
||
<li
|
||
className={`flex flex-wrap items-center gap-x-2 gap-y-1 rounded-md px-4 py-3 text-lg font-semibold ring-1 ring-inset ${
|
||
correct
|
||
? "bg-emerald-100 text-emerald-950 ring-emerald-200"
|
||
: "bg-red-100 text-red-950 ring-red-200"
|
||
}`}
|
||
>
|
||
{prefix}
|
||
<KatexRenderer latex={expressionLatex} output="mathml" />
|
||
<span aria-hidden="true">=</span>
|
||
{userAnswerContent ?? (
|
||
<span className={correct ? undefined : "text-red-700"}>
|
||
<KatexRenderer latex={userAnswerLatex} output="mathml" />
|
||
</span>
|
||
)}
|
||
{correct ? (
|
||
<span
|
||
aria-label="정답"
|
||
role="img"
|
||
className="inline-flex h-7 items-center text-2xl leading-none text-emerald-700"
|
||
>
|
||
○
|
||
</span>
|
||
) : (
|
||
<>
|
||
<span
|
||
aria-label="오답"
|
||
role="img"
|
||
className="mr-2 inline-flex h-7 items-center text-2xl leading-none text-red-700"
|
||
>
|
||
×
|
||
</span>
|
||
<span className="text-slate-700">
|
||
(
|
||
{correctAnswerContent ?? (
|
||
<span className="font-bold">
|
||
<KatexRenderer latex={correctAnswerLatex} output="mathml" />
|
||
</span>
|
||
)}
|
||
)
|
||
</span>
|
||
</>
|
||
)}
|
||
</li>
|
||
);
|
||
}
|