// app/detail/[id]/page.jsx
import { Button } from "@/components/ui/button";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { getListingById } from "@/service/ListingService";
import { Anchor, Cog, Compass, DoorOpen, Hash, Layers, Layout, Package, Palette, Ruler, Scale, Search, Settings2, Wrench, Zap } from "lucide-react";
import { Separator } from "@/components/ui/separator";
import Link from "next/link";
import {
Calendar,
Gauge,
Settings,
Fuel,
MapPin,
Phone,
Mail,
User
} from "lucide-react";
import ListingMediaViewer from "@/components/listing/listingMediaViewer";
export default async function ListingDetailPage({ params }) {
const { id } = await params;
let listing;
try {
listing = await getListingById(id);
} catch (error) {
//error UI
return (
Truck Not Found
The truck you're looking for doesn't exist or has been removed.
);
}
const formatMileage = (mileage) => {
return new Intl.NumberFormat('en-US').format(mileage);
};
const formatPrice = (price) => {
return new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 0,
maximumFractionDigits: 0,
}).format(price);
};
return (
{/* Left Column - Images and Details */}
{/* Main Image */}
{/* Vehicle Details */}
{listing.title}
{/* Common Fields */}
Year
{listing.year || "N/A"}
Location
{[listing.address, listing.city, listing.state, listing.country]
.filter(Boolean)
.join(", ") || "N/A"}
{/* TRUCK FIELDS */}
{listing.type === "TRUCK" && (
<>
Mileage
{formatMileage(listing.truckMileage) || "N/A"}
VIN
{listing.truckVinNumber || "N/A"}
Horse Power
{listing.truckHorsePower || "N/A"}
Stock Number
{listing.truckStockNumber || "N/A"}
Engine Manufacturer
{listing.truckEngineManufacturer || "N/A"}
Engine
{listing.engine || "N/A"}
Transmission - Speed
{`${listing.transmission} - ${listing.transmissionSpeed}` || "N/A"}
Driver Side
{listing.truckDriverSide || "N/A"}
Class
{listing.truckClassName || "N/A"}
GVWR
{listing.truckClassGvwr || "N/A"}
Fuel Type
{listing.truckFuelType || "N/A"}
>
)}
{/* TRAILER FIELDS */}
{listing.type === "TRAILER" && (
<>
Trailer Type
{listing.trailerType || "N/A"}
VIN
{listing.trailerVinNumber || "N/A"}
Stock Number
{listing.trailerStockNumber || "N/A"}
Length
{listing.trailerLength || "N/A"}
Width
{listing.trailerWidth || "N/A"}
Color
{listing.trailerColor || "N/A"}
Height
{listing.trailerHeight || "N/A"}
Composition
{listing.trailerComposition || "N/A"}
Number of Axles
{listing.trailerNumberOfAxles || "N/A"}
Axle Configuration
{listing.trailerAxleConfiguration || "N/A"}
Hitch
{listing.trailerHitch || "N/A"}
Floor Type
{listing.trailerFloorType || "N/A"}
Number of Side Doors
{listing.trailerNumberOfSideDoors || "N/A"}
Rear Opening
{listing.trailerRearOpening || "N/A"}
Trailer Weight (lbs)
{listing.trailerWeightLbs || "N/A"}
Capacity (lbs)
{listing.trailerCapacityLbs || "N/A"}
>
)}
{/* Description */}
Description
{listing.description}
{/* Right Column - Pricing and Contact */}
{/* Price and CTA */}
{formatPrice(listing.price)}
{/* Seller Information */}
Seller Information
{listing.plan.planName !== "Basic" && (
{[listing.seller.countryCode, listing.seller.phone].filter(Boolean).join("-") || "N/A"}
)}
{listing.seller.email}
{[listing.seller.address, listing.seller.city, listing.seller.state, listing.seller.country]
.filter(Boolean)
.join(", ") || "N/A"}
{/* Quick Facts */}
Quick Facts
Category
{listing.categoryName}
Maker
{listing.makerName}
Model
{listing.modelName}
Trim
{listing.trimName}
Year
{listing.year}
);
}