import Link from "next/link"; import type { Campaign, Map } from "@/payload-types"; import { Item, ItemContent, ItemDescription, ItemHeader, ItemTitle, } from "@/components/ui/item"; import { CalendarDaysIcon, ChevronRightIcon, CrosshairIcon } from "lucide-react"; interface MissionEntry { id: number; name: string; codeName: string; classification: { startDateTime: string; map: number | Map; campaign: number | Campaign; }; ownershipAndStatus: { status: string; }; } interface UpcomingMissionsProps { missions: MissionEntry[]; } export function UpcomingMissions({ missions }: UpcomingMissionsProps) { if (missions.length === 0) { return (
Upcoming Missions

No missions scheduled.

); } return (
Upcoming Missions
View all
{missions.map((mission) => { const startDate = new Date(mission.classification.startDateTime); const dateStr = startDate.toLocaleDateString("en-US", { month: "short", day: "numeric", }); const timeStr = startDate.toLocaleTimeString("en-US", { hour: "2-digit", minute: "2-digit", }); const campaign = typeof mission.classification.campaign === "object" ? (mission.classification.campaign as Campaign) : null; return (
{startDate.toLocaleDateString("en-US", { weekday: "short" })} {dateStr.split(" ")[1]} {timeStr}
{mission.codeName} {mission.name} {campaign && ( {campaign.name} )}
); })}
); }