import { formatRupiah } from '@/lib/rupiah'; import type { Product } from '@/types/homepage'; type ProductCardProps = { product: Product; onQuickView: (product: Product) => void; }; function getProductImage(product: Product): string { for (const variant of product.product_variants) { const prices = variant.product_prices; if (prices.length > 0) { return `https://images.unsplash.com/photo-1490481651871-ab68de25d43d?w=800&auto=format&fit=crop&q=80`; } } const fallbacks: Record = { 'daster': [ 'https://images.unsplash.com/photo-1595777457583-95e059d581b8?w=800&auto=format&fit=crop&q=80', 'https://images.unsplash.com/photo-1572804013309-59a88b7e92f1?w=800&auto=format&fit=crop&q=80', ], 'setelan-celana': [ 'https://images.unsplash.com/photo-1539109136881-3be0616acf4b?w=800&auto=format&fit=crop&q=80', ], 'atasan': [ 'https://images.unsplash.com/photo-1515886657613-9f3515b0c78f?w=800&auto=format&fit=crop&q=80', ], 'bawahan': [ 'https://images.unsplash.com/photo-1583496661160-fb4886b36ca7?w=800&auto=format&fit=crop&q=80', ], }; const firstCat = product.categories?.[0]?.slug || ''; const categoryUrls = fallbacks[firstCat] || [ 'https://images.unsplash.com/photo-1490481651871-ab68de25d43d?w=800&auto=format&fit=crop&q=80', 'https://images.unsplash.com/photo-1434389677669-e08b4cac3105?w=800&auto=format&fit=crop&q=80', ]; return categoryUrls[0]; } function getProductPriceRange(product: Product): string { const prices = product.product_variants.flatMap((v) => v.product_prices .filter((p) => p.type === 'retail') .map((p) => p.price), ); if (prices.length === 0) { const fallbackPrices = product.product_variants.flatMap((v) => v.product_prices.map((p) => p.price), ); if (fallbackPrices.length === 0) { return 'Rp 0'; } const min = Math.min(...fallbackPrices); const max = Math.max(...fallbackPrices); return min === max ? `Rp ${formatRupiah(min)}` : `Rp ${formatRupiah(min)} - Rp ${formatRupiah(max)}`; } const min = Math.min(...prices); const max = Math.max(...prices); return min === max ? `Rp ${formatRupiah(min)}` : `Rp ${formatRupiah(min)} - Rp ${formatRupiah(max)}`; } export default function ProductCard({ product, onQuickView }: ProductCardProps) { return (
onQuickView(product)} >
{product.name}
Lihat Detail
{product.categories.slice(0, 2).map((cat) => ( {cat.name} ))}

{product.name}

{product.description || 'Koleksi fashion berkualitas'}

{getProductPriceRange(product)}

); }