import Badge from "@/core/components/elements/Badge/Badge" import Divider from "@/core/components/elements/Divider/Divider" import Image from "@/core/components/elements/Image/Image" import Link from "@/core/components/elements/Link/Link" import currencyFormat from "@/core/utils/currencyFormat" import { useEffect, useState } from "react" import Select from "react-select" import ProductSimilar from "./ProductSimilar" import LazyLoad from "react-lazy-load" import { toast } from "react-hot-toast" import { updateItemCart } from "@/core/utils/cart" const informationTabOptions = [ { value: 'specification', label: 'Spesifikasi' }, { value: 'description', label: 'Deskripsi' }, { value: 'important', label: 'Info Penting' }, ] const Product = ({ product }) => { const [ quantity, setQuantity ] = useState('1') const [ selectedVariant, setSelectedVariant ] = useState(null) const [ informationTab, setInformationTab ] = useState(null) const [ activeVariant, setActiveVariant ] = useState({ id: product.id, code: product.code, name: product.name, price: product.lowestPrice, stock: product.stockTotal, weight: product.weight, }) const variantOptions = product.variants?.map((variant) => ({ value: variant.id, label: (variant.code ? `[${variant.code}] ` : '') + (variant.attributes.length > 0 ? variant.attributes.join(', ') : product.name) })) useEffect(() => { if (!selectedVariant && variantOptions.length == 1) { setSelectedVariant(variantOptions[0]) } }, [selectedVariant, variantOptions]) useEffect(() => { if (selectedVariant) { const variant = product.variants.find(variant => variant.id == selectedVariant.value) const variantAttributes = variant.attributes.length > 0 ? ' - ' + variant.attributes.join(', ') : '' setActiveVariant({ id: variant.id, code: variant.code, name: variant.parent.name + variantAttributes, price: variant.price, stock: variant.stock, weight: variant.weight }) } }, [selectedVariant, product]) useEffect(() => { if (!informationTab) { setInformationTab(informationTabOptions[0].value) } }, [informationTab]) const handleClickCart = () => { if (!selectedVariant) { toast.error('Pilih varian terlebih dahulu') return } if (!quantity || quantity < 1 || isNaN(parseInt(quantity))) { toast.error('Jumlah barang minimal 1') return } updateItemCart({ productId: activeVariant.id, quantity }) toast.success('Berhasil menambahkan ke keranjang') } return ( <> {product.name}
{ product.manufacture?.name }

{activeVariant?.name}

{ activeVariant?.price?.discountPercentage > 0 && (
{currencyFormat(activeVariant?.price?.price)}
{activeVariant?.price?.discountPercentage}%
) }

{ activeVariant?.price?.priceDiscount > 0 ? currencyFormat(activeVariant?.price?.priceDiscount) : ( Hubungi kami untuk dapatkan harga terbaik,  klik disini ) }

setQuantity(e.target.value)} />

Informasi Produk

{ informationTabOptions.map((option) => ( setInformationTab(option.value)} > {option.label} )) }
{product?.variantTotal} Varian SKU-{product?.id} {activeVariant?.code || '-'} { activeVariant?.stock > 0 && (
Ready Stock
{ activeVariant?.stock > 5 ? '> 5' : '< 5' }
) } { activeVariant?.stock == 0 && ( Tanya Stok ) }
{ activeVariant?.weight > 0 && ( { activeVariant?.weight } KG ) } { activeVariant?.weight == 0 && ( Tanya Berat ) }

Kamu Mungkin Juga Suka

) } const TabButton = ({ children, active, ...props }) => { const activeClassName = active ? 'text-red_r-11 underline underline-offset-4' : 'text-gray_r-11' return ( ) } const TabContent = ({ children, active, className, ...props }) => (
{ children }
) const SpecificationContent = ({ children, label }) => (
{ label } { children }
) export default Product