"use client" import { useState } from 'react' import Image from 'next/image' import Link from './LocalizedLink' import { ShoppingBag } from 'lucide-react' import type { Product } from '@homaroma/types' import { getCategoryImage, formatPrice } from '@homaroma/types' import { resolveCategoryName, resolveLocalized } from '../lib/localization' import { useLang } from '../hooks/useLang' import { useCartStore } from '../store/cartStore' import WishlistButton from './WishlistButton' interface ProductCardProps { product: Product } export default function ProductCard({ product }: ProductCardProps) { const lang = useLang() const { addToCart } = useCartStore() const [selectedVariant, setSelectedVariant] = useState(product.variants?.[0] || null) const categoryName = resolveCategoryName(product.category, lang) const productName = resolveLocalized(product.name, lang) || product.brand.name const imageUrl = product.images?.[0]?.url || product.category.imageUrl || getCategoryImage(categoryName) const displayPrice = selectedVariant?.price ?? product.variants[0]?.price ?? product.price const addToCartLabels: Record = { th: 'เพิ่มลงตะกร้า', en: 'Add to Cart', ja: 'カートに追加', zh: '加入购物车', vi: 'Thêm vào giỏ', ko: '장바구니에 담기' } const addToCartText = addToCartLabels[lang] || addToCartLabels.en return (
{productName} {categoryName && ( {categoryName} )}

{productName}

{categoryName && (

{categoryName}

)}
{product.variants.length > 0 && (
{product.variants.map((variant) => { const isSelected = selectedVariant?.id === variant.id return ( ) })}
)}
{formatPrice(displayPrice)}
{selectedVariant && ( )}
) }