'use client'; import type { LearningViewProps } from '@contractspec/example.learning-journey-ui-shared'; import { TipCard } from '../components/TipCard'; export function Steps({ track, progress, onStepComplete }: LearningViewProps) { const completedSteps = progress.completedStepIds.length; const totalSteps = track.steps.length; // Sort: pending first, then completed const sortedSteps = [...track.steps].sort((a, b) => { const aCompleted = progress.completedStepIds.includes(a.id); const bCompleted = progress.completedStepIds.includes(b.id); if (aCompleted === bCompleted) return 0; return aCompleted ? 1 : -1; }); const currentStepId = track.steps.find( (s) => !progress.completedStepIds.includes(s.id) )?.id; return (
{/* Header */}

Coaching Tips

Review and take action on personalized tips

{completedSteps} of {totalSteps} tips actioned

{/* Tips Stack */}
{sortedSteps.map((step) => { const isCompleted = progress.completedStepIds.includes(step.id); const isCurrent = step.id === currentStepId; return ( onStepComplete?.(step.id)} onDismiss={() => onStepComplete?.(step.id)} // Dismiss also completes /> ); })}
{/* All done */} {completedSteps === totalSteps && (

All tips have been addressed!

)}
); }