import Image from '@/core/components/elements/Image/Image'
import Link from '@/core/components/elements/Link/Link'
import DesktopView from '@/core/components/views/DesktopView'
import currencyFormat from '@/core/utils/currencyFormat'
import { HeartIcon } from '@heroicons/react/24/outline'
import { useRef, useState } from 'react'
import LazyLoad from 'react-lazy-load'
import ProductSimilar from '../ProductSimilar'
import { toast } from 'react-hot-toast'
import { updateItemCart } from '@/core/utils/cart'
const ProductDesktop = ({ product, wishlist, toggleWishlist }) => {
const [informationTab, setInformationTab] = useState(informationTabOptions[0].value)
const variantQuantityRefs = useRef([])
const setVariantQuantityRef = (variantId) => (element) => {
variantQuantityRefs.current[variantId] = element
}
const validQuantity = (quantity) => {
let isValid = true
if (!quantity || quantity < 1 || isNaN(parseInt(quantity))) {
toast.error('Jumlah barang minimal 1')
isValid = false
}
return isValid
}
const handleAddToCart = (variantId) => {
const quantity = variantQuantityRefs.current[variantId].value
if (!validQuantity(quantity)) return
updateItemCart({
productId: variantId,
quantity
})
toast.success('Berhasil menambahkan ke keranjang')
}
const variantSectionRef = useRef(null)
const goToVariantSection = () => {
if (variantSectionRef.current) {
const position = variantSectionRef.current.getBoundingClientRect()
window.scrollTo({
top: position.top - 120 + window.pageYOffset,
behavior: 'smooth'
})
}
}
const productSimilarQuery = [
product?.name.replace(/[()/"&]/g, ''),
`fq=-product_id:${product.id}`,
`fq=-manufacture_id:${product.manufacture?.id || 0}`
].join('&')
return (
{product?.name}
{product?.lowestPrice.priceDiscount > 0 ? (
currencyFormat(product?.lowestPrice.priceDiscount)
) : (
Hubungi kami untuk dapatkan harga terbaik,
klik disini
)}
{product.variants.map((variant) => (
Part Number
Varian
Harga
Jumlah
Action
))}
{variant.code}
{variant.attributes.join(', ')}
{variant.price.discountPercentage > 0 && (
<>
{currencyFormat(variant.price.price)}
{' '}
>
)}
{currencyFormat(variant.price.priceDiscount)}