import Link from 'next/link'; interface Listing { id: string; title: string; description: string; price: number; currency: string; quantity: number; category: string; sellerName?: string; location?: { city?: string; region?: string }; tags: string[]; viewCount: number; } const categoryLabels: Record = { seeds: 'Seeds', seedlings: 'Seedlings', mature_plants: 'Mature Plants', cuttings: 'Cuttings', produce: 'Produce', supplies: 'Supplies', }; const categoryIcons: Record = { seeds: '🌰', seedlings: '🌱', mature_plants: '🪴', cuttings: '✂️', produce: '🥬', supplies: '🧰', }; interface ListingCardProps { listing: Listing; variant?: 'default' | 'compact' | 'featured'; } export function ListingCard({ listing, variant = 'default' }: ListingCardProps) { if (variant === 'compact') { return (
{categoryIcons[listing.category] || '🌿'}

{listing.title}

{categoryLabels[listing.category]}

${listing.price.toFixed(2)}
{listing.quantity} avail.
); } if (variant === 'featured') { return (
{categoryIcons[listing.category] || '🌿'}
Featured

{listing.title}

${listing.price.toFixed(2)}

{listing.description}

{categoryLabels[listing.category]} {listing.quantity} available
{listing.viewCount} views
); } // Default variant return (
{categoryIcons[listing.category] || '🌿'}

{listing.title}

${listing.price.toFixed(2)}

{listing.description}

{categoryLabels[listing.category]} {listing.quantity} available
{listing.sellerName && (
by {listing.sellerName}
)} {listing.tags.length > 0 && (
{listing.tags.slice(0, 3).map((tag) => ( {tag} ))}
)}
); } export default ListingCard;