import { FC, useState } from 'react' import cn from 'clsx' import Link from 'next/link' import type { Product } from '@commerce/types/product' import s from './ProductCard.module.css' import Image, { ImageProps } from 'next/image' import WishlistButton from '@components/wishlist/WishlistButton' import usePrice from '@framework/product/use-price' import ProductTag from '../ProductTag' import ProductCardExtended from '../ProductCardExtended/ProductCardExtended' import { Stack, Text, Heading, Box, useColorModeValue } from '@chakra-ui/react' interface Props { className?: string product: Product noNameTag?: boolean imgProps?: Omit variant?: 'default' | 'slim' | 'simple' } const placeholderImg = '/product-img-placeholder.svg' const ProductCard: FC = ({ product, imgProps, className, noNameTag = false, variant = 'default', }) => { const { price } = usePrice({ amount: product.price.value, baseAmount: product.price.retailPrice, currencyCode: product.price.currencyCode!, }) const rootClassName = cn( s.root, { [s.slim]: variant === 'slim', [s.simple]: variant === 'simple' }, className ) const [isHover, setIsHover] = useState(false) return ( setIsHover(false)} onMouseEnter={() => setIsHover(true)}> {variant === 'slim' && !isHover && ( <>
{product.name}
{product?.images && (
{product.name
)} )} {variant === 'simple' && !isHover && ( <> {process.env.COMMERCE_WISHLIST_ENABLED && ( )}
{product?.images && (
{product.name
)}
)} {variant === 'default' && !isHover && ( <> {process.env.COMMERCE_WISHLIST_ENABLED && ( )}
{product?.images && (
{product.name
)}
)} {isHover && ( <> {process.env.COMMERCE_WISHLIST_ENABLED && ( )}
{product?.images && (
{product.name
)}
{product.name} {`${price} ${product.price?.currencyCode}`}
)}
) } export default ProductCard