diff --git a/src/pages/Timeline.tsx b/src/pages/Timeline.tsx new file mode 100644 index 0000000..cff179c --- /dev/null +++ b/src/pages/Timeline.tsx @@ -0,0 +1,181 @@ +import { Card, CardContent, CardHeader, CardTitle, CardDescription } from "@/components/ui/card"; +import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; +import { Separator } from "@/components/ui/separator"; +import { + CalendarDays, ChevronLeft, ChevronRight, Diamond +} from "lucide-react"; +import Sidebar from "@/components/Sidebar"; +import Header from "@/components/Header"; + +const months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug"]; + +const timelineProjects = [ + { + name: "Website Redesign", + startMonth: 0, + duration: 3, + color: "bg-violet-500", + lightColor: "bg-violet-100", + phase: "Complete", + milestones: [{ month: 2, label: "v1.0 Launch" }], + }, + { + name: "Mobile App", + startMonth: 1, + duration: 5, + color: "bg-indigo-500", + lightColor: "bg-indigo-100", + phase: "In Progress", + milestones: [{ month: 3, label: "Beta Release" }, { month: 5, label: "GA Launch" }], + }, + { + name: "Security Audit", + startMonth: 3, + duration: 3, + color: "bg-amber-500", + lightColor: "bg-amber-100", + phase: "In Progress", + milestones: [{ month: 5, label: "Audit Complete" }], + }, + { + name: "Design System", + startMonth: 4, + duration: 4, + color: "bg-emerald-500", + lightColor: "bg-emerald-100", + phase: "Planning", + milestones: [{ month: 6, label: "Alpha Build" }], + }, +]; + +const phaseColors: Record = { + "Planning": "bg-blue-100 text-blue-700", + "In Progress": "bg-violet-100 text-violet-700", + "Review": "bg-amber-100 text-amber-700", + "Complete": "bg-emerald-100 text-emerald-700", +}; + +export default function TimelinePage() { + const totalMonths = months.length; + + return ( +
+ +
+
+
+ {/* ── Header ── */} +
+
+

Timeline

+

Project roadmap and milestone overview

+
+
+ + 2026 + +
+
+ + {/* ── Legend ── */} +
+ {Object.entries(phaseColors).map(([phase, color]) => ( +
+
+ {phase} +
+ ))} +
+ + Milestone +
+
+ + {/* ── Gantt Chart ── */} + + +
+
+ {/* Month Headers */} +
+
Project
+
+ {months.map((month, i) => ( +
+ {month} 2026 +
+ ))} +
+
+ + {/* Project Rows */} + {timelineProjects.map((project, idx) => ( +
+
+

{project.name}

+ {project.phase} +
+
+ {/* Background grid */} + {months.map((_, i) => ( +
+ ))} + {/* Bar */} +
+ {project.name} +
+ {/* Milestones */} + {project.milestones.map((ms, mi) => ( +
+
+ +
+
{ms.label}
+
+
+
+ ))} +
+
+ ))} +
+
+ + + + {/* ── Upcoming Milestones ── */} + + + Upcoming Milestones + Key dates and deliverables across all projects + + + {timelineProjects.flatMap(p => p.milestones.map(ms => ({ project: p.name, ...ms, color: p.color }))).sort((a, b) => a.month - b.month).map((ms, i) => ( +
+
+ +
+
+

{ms.label}

+

{ms.project}

+
+ + + {months[ms.month]} 2026 + +
+ ))} +
+
+
+
+
+ ); +}