in 6-structured_outputs/structured-outputs-math-tutor-final/components/step.tsx [16:65]
export function StepComponent({
step,
index,
currentIndex,
userAnswer,
status,
onSubmit,
setInput
}: StepComponentProps) {
const isCurrent = currentIndex === index
const isPast = currentIndex > index
const isFuture = currentIndex < index
if (isFuture) {
return null
}
return (
<div
className={`bg-white rounded-xl px-5 py-6 mb-3 ${isCurrent ? 'shadow-lg' : ''}`}
>
<div className="flex items-center justify-between">
<div className="text-xs font-bold text-neutral-700">
Step {index + 1}
</div>
{isPast && status && <Badge status={status} className="mr-2" />}
</div>
<div className="text-neutral-500 mt-3 text-sm leading-5">
{step.explanation}
</div>
{isPast && (
<div className="mt-4 text-neutral-500 border border-neutral-200 px-2.5 py-1.5 font-mono text-sm rounded-full">
{step.output}
</div>
)}
{isCurrent && (
<div className="mt-4">
<PromptForm
input={userAnswer}
placeholder="Enter result..."
setInput={setInput}
onSubmit={onSubmit}
mode="step"
/>
</div>
)}
</div>
)
}