diff --git a/frontend/src/components/MilestoneTimeline.tsx b/frontend/src/components/MilestoneTimeline.tsx index 2c3e9a2..dd5d633 100644 --- a/frontend/src/components/MilestoneTimeline.tsx +++ b/frontend/src/components/MilestoneTimeline.tsx @@ -1,18 +1,15 @@ "use client"; -import { Activity, Check, Lock } from "lucide-react"; +import { Check, Clock, Lock, AlertTriangle } from "lucide-react"; -export type MilestoneStatus = "completed" | "active" | "locked"; +export type MilestoneStatus = "completed" | "active" | "pending" | "disputed"; export type Milestone = { id: string; title: string; + date: string; description: string; - amount: string; - due: string; status: MilestoneStatus; - progress: number; - releaseDetails: string; }; const statusMeta: Record< @@ -20,34 +17,56 @@ const statusMeta: Record< { label: string; iconBg: string; - text: string; iconColor: string; + borderColor: string; + badgeBg: string; + badgeText: string; + isLocked: boolean; } > = { completed: { - label: "Released", - iconBg: "bg-emerald-500/15 text-emerald-300 border-emerald-300/60", - text: "Funds disbursed", - iconColor: "text-emerald-300", + label: "Completed", + iconBg: "bg-emerald-500", + iconColor: "text-white", + borderColor: "border-emerald-500", + badgeBg: "bg-emerald-500/20", + badgeText: "text-emerald-300", + isLocked: false, }, active: { - label: "Active", - iconBg: "bg-amber-500/15 text-amber-300 border-amber-300/60 animate-pulse", - text: "Pending verification", - iconColor: "text-amber-400", + label: "In Progress", + iconBg: "bg-amber-500", + iconColor: "text-white", + borderColor: "border-amber-400", + badgeBg: "bg-amber-500/20", + badgeText: "text-amber-300", + isLocked: false, }, - locked: { - label: "Locked", - iconBg: "bg-slate-700/60 text-slate-200 border-slate-500/40", - text: "Awaiting prior milestones", - iconColor: "text-slate-200", + pending: { + label: "Pending", + iconBg: "bg-transparent", + iconColor: "text-slate-400", + borderColor: "border-slate-500", + badgeBg: "bg-slate-500/20", + badgeText: "text-slate-400", + isLocked: true, + }, + disputed: { + label: "Disputed", + iconBg: "bg-rose-500", + iconColor: "text-white", + borderColor: "border-rose-500", + badgeBg: "bg-rose-500/20", + badgeText: "text-rose-300", + isLocked: false, }, }; const iconMap: Record = { completed: Check, - active: Activity, - locked: Lock, + active: Clock, + pending: Lock, + disputed: AlertTriangle, }; type MilestoneTimelineProps = { @@ -55,55 +74,81 @@ type MilestoneTimelineProps = { }; export default function MilestoneTimeline({ milestones }: MilestoneTimelineProps) { + const today = new Date(); + return ( -
+