"use client";
type RetailerOffer = {
id?: string | number;
retailer: string;
price: number;
originalPrice?: number;
url: string;
affiliateUrl?: string;
inStock: boolean;
};
interface RetailersListProps {
retailers: RetailerOffer[];
}
export function RetailersList({ retailers }: RetailersListProps) {
if (retailers.length === 0) {
return (
No retailer offers available.
);
}
const lowestPrice = Math.min(...retailers.map((r) => r.price));
return (
Available Retailers
{retailers.length} retailer{retailers.length !== 1 ? "s" : ""} found
{retailers.map((retailer) => {
const isLowestPrice = retailer.price === lowestPrice;
const isOnSale = retailer.originalPrice !== undefined;
return (
{retailer.retailer}
{isLowestPrice && retailer.inStock && (
Best Price
)}
{!retailer.inStock && (
Out of Stock
)}
${retailer.price.toFixed(2)}
{isOnSale && retailer.originalPrice && (
${retailer.originalPrice.toFixed(2)}
)}
);
})}
);
}