import style from '../styles/image.module.css'; import ImageNext from 'next/image'; import React, { useEffect, useMemo, useState } from 'react' import { InfoIcon } from 'lucide-react' import { Tooltip } from '@chakra-ui/react' import { IProductDetail } from '~/types/product' import ImageUI from '~/components/ui/image' import moment from 'moment'; type Props = { product: IProductDetail } const Image = ({ product }: Props) => { const flashSale = product.flash_sale const [count, setCount] = useState(flashSale?.remaining_time || 0); useEffect(() => { let interval: NodeJS.Timeout; if (flashSale?.remaining_time && flashSale.remaining_time > 0) { setCount(flashSale.remaining_time); interval = setInterval(() => { setCount((prevCount) => prevCount - 1); }, 1000); } return () => { clearInterval(interval); }; }, [flashSale?.remaining_time]); const duration = moment.duration(count, 'seconds') const image = useMemo(() => { if (product.image) return product.image + '?ratio=square' return '/images/noimage.jpeg' }, [product.image]) return (
{/*
*/}
{product.isSni && ( )}
{product.isTkdn && ( )}
{/*
*/}
{flashSale.remaining_time > 0 && (
{Math.floor(product.lowest_price.discount_percentage)}%
{product.flash_sale.tag}
{duration.hours().toString().padStart(2, '0')} {duration.minutes().toString().padStart(2, '0')} {duration.seconds().toString().padStart(2, '0')}
)}
) } export default Image