import config from "@payload-config"; import { getPayload } from "payload"; import type { GameVehicle, Vehicle } from "@/payload-types"; import { TruckIcon } from "lucide-react"; import Link from "next/link"; import { Item, ItemContent, ItemDescription, ItemHeader, ItemMedia, ItemTitle, } from "@/components/ui/item"; export const metadata = { title: "Vehicles: Polaris Task Force", }; export default async function GameVehiclesPage() { const payload = await getPayload({ config }); const vehiclesRes = await payload.find({ collection: "game-vehicles", limit: 500, depth: 2, }); const vehicles = vehiclesRes.docs as unknown as (GameVehicle & { type: Vehicle; })[]; const statusColors: Record = { idle: "bg-emerald-500/20 text-emerald-400", assigned: "bg-blue-500/20 text-blue-400", in_transit: "bg-amber-500/20 text-amber-400", damaged: "bg-red-500/20 text-red-400", destroyed: "bg-red-500/20 text-red-400", }; return (

Vehicles

{vehicles.length} vehicle{vehicles.length !== 1 ? "s" : ""} deployed.

{vehicles.length > 0 ? (
{vehicles.map((vehicle) => { const vehicleType = typeof vehicle.type === "object" ? vehicle.type : null; const fuelPercent = vehicleType?.fuel?.fuelCapacity ? (vehicle.currentFuel / vehicleType.fuel.fuelCapacity) * 100 : 0; return (
{vehicle.name} {vehicleType?.name ?? "Unknown type"}
{vehicle.status === "in_transit" ? "In Transit" : vehicle.status.charAt(0).toUpperCase() + vehicle.status.slice(1)}
20 ? "bg-green-500" : "bg-red-500" }`} style={{ width: `${Math.min(100, fuelPercent)}%`, }} />
{vehicle.currentFuel?.toFixed(0)} /{" "} {vehicleType?.fuel?.fuelCapacity ?? "?"} fuel
HP: {vehicle.currentHealth} {vehicleType?.fuel?.fuelType && typeof vehicleType.fuel.fuelType === "object" && ( {vehicleType.fuel.fuelType.name} )}
{vehicleType?.name ?? "Unknown type"} ); })}
) : (

No vehicles deployed.

)}
); }