import type { ProposalContent } from "@/lib/proposal/schema";
type Props = { timeline: ProposalContent["timeline"] };
const COLOR_MAP = {
cyan: { bg: "bg-cyan-400", text: "text-cyan-900" },
purple: { bg: "bg-violet-400", text: "text-violet-900" },
green: { bg: "bg-emerald-400",text: "text-emerald-900" },
};
export function TimelineSection({ timeline }: Props) {
const weeks = Array.from({ length: timeline.totalWeeks }, (_, i) => i + 1);
return (
Timeline
{timeline.totalWeeks} settimane di progressione.
{/* Header settimane */}
{weeks.map((w) => (
W{w}
))}
{/* Righe fase */}
{timeline.phases.map((phase, i) => {
const colors = COLOR_MAP[phase.color];
return (
{i === 0 ? "OPZIONE A" : i === 1 ? "OPZIONE B" : "OPZIONE C"}
{phase.endWeek - phase.startWeek + 1} settimane
{weeks.map((w) => {
const active = w >= phase.startWeek && w <= phase.endWeek;
const isFirst = w === phase.startWeek;
const isLast = w === phase.endWeek;
return (
{isFirst && (
{phase.label}
)}
);
})}
);
})}
{/* Legenda */}
{timeline.phases.map((phase, i) => {
const colors = COLOR_MAP[phase.color];
return (
);
})}
› {timeline.disclaimer}
);
}