import style from '../styles/product-card.module.css' import ImageNext from 'next/image'; import clsx from 'clsx' import Link from 'next/link' import React, { useEffect, useMemo, useState } from 'react' import Image from '~/components/ui/image' import useUtmSource from '~/hooks/useUtmSource' import clsxm from '~/libs/clsxm' import formatCurrency from '~/libs/formatCurrency' import { formatToShortText } from '~/libs/formatNumber' import { createSlug } from '~/libs/slug' import { IProduct } from '~/types/product' import { useRouter } from 'next/router'; import currencyFormat from '@/core/utils/currencyFormat'; import whatsappUrl from '@/core/utils/whatsappUrl'; import { sellingProductFormat } from '@/core/utils/formatValue'; type Props = { product: IProduct layout?: 'vertical' | 'horizontal' } const ProductCard = ({ product, layout = 'vertical' }: Props) => { const utmSource = useUtmSource() const router = useRouter(); const ppnString = process.env.NEXT_PUBLIC_PPN; const ppnNumber = ppnString !== undefined ? Number(ppnString) : 0; const id = product.id.toString () const callForPriceWhatsapp = whatsappUrl('product', { name: product.name, manufacture: product.manufacture?.name, url: createSlug('/shop/product/', product.name, id, true), }); const URL = { product: createSlug('/shop/product/', product.name, product.id.toString()) + `?utm_source=${utmSource}`, manufacture: createSlug('/shop/brands/', product.manufacture.name, product.manufacture.id.toString()), } const image = useMemo(() => { if (product.image) return product.image + '?ratio=square' return '/images/noimage.jpeg' }, [product.image]) return (
{product.name}
{product.isSni && ( )}
{product.isTkdn && ( )}
{layout === 'vertical' && (
{router.pathname != '/' && product?.flash_sale.id > 0 && (
{Math.floor(product?.lowest_price.discount_percentage ? product?.lowest_price.discount_percentage : product?.lowest_price.discountPercentage)}%
{product?.flash_sale?.tag != 'false' || product?.flash_sale?.tag ? product?.flash_sale?.tag : 'FLASH SALE'}
)}
)} {product.variant_total > 1 && (
{product.variant_total} Varian
)}
{layout === 'horizontal' && (
{product.flash_sale.id > 0 && (
{' '} {product?.flash_sale?.tag != 'false' || product?.flash_sale?.tag ? product?.flash_sale?.tag : 'FLASH SALE'}
)}
)} {product.manufacture.name}
{product.name}
{product?.lowest_price.discountPercentage === undefined ? (
{product?.flash_sale?.id > 0 && product?.lowest_price.discount_percentage > 0 ? ( <>
{currencyFormat(product.lowest_price.price)}
{Math.floor(product?.lowest_price.discount_percentage)}%
{product?.lowest_price.price_discount > 0 ? ( currencyFormat(product?.lowest_price.price_discount) ) : ( Call for Inquiry )}
) : (
{product?.lowest_price.price > 0 ? ( <> {currencyFormat(product?.lowest_price.price)}
Inc. PPN:{' '} {currencyFormat( product.lowest_price.price * ppnNumber )}
) : ( Call for Inquiry )}
)}
{product?.stock_total > 0 && (
Ready Stock
)} {/*
{product?.stockTotal > 5 ? '> 5' : '< 5'}
*/} {product?.qty_sold > 0 && (
{sellingProductFormat(product?.qty_sold) + ' Terjual'}
)}
) : (
)}
) } const classPrefix = ({ layout }: Props) => { } export default ProductCard