import type { ClientView } from "@/lib/client-view"; type Phase = ClientView["phases"][number]; const statusWord: Record<"upcoming" | "active" | "done", string> = { done: "Completata", active: "In corso", upcoming: "Da iniziare", }; const statusWordClass: Record<"upcoming" | "active" | "done", string> = { done: "text-emerald-600 dark:text-emerald-400", active: "text-amber-600 dark:text-amber-400", upcoming: "text-muted-foreground", }; /** * Horizontal milestone stepper — replica del "STEP PROGRESS TIMELINE" del mock. * Un nodo per fase reale (non 5 fissi); la linea di fondo si riempie in base a * global_progress_pct. */ export function MilestoneStepper({ phases, globalProgress, }: { phases: Phase[]; globalProgress: number; }) { if (phases.length === 0) return null; return (
{/* Linea di connessione + riempimento dinamico */}
{/* Nodi milestone */}
{phases.map((phase, i) => { const s = phase.status; return (
{s === "done" ? "✓" : i + 1}
Step {i + 1} {phase.title} {statusWord[s]}
); })}
); }