import cn from 'clsx' import Image from 'next/image' import s from './ProductView.module.css' import { FC, useState } from 'react' import type { Product } from '@commerce/types/product' import usePrice from '@framework/product/use-price' import { WishlistButton } from '@components/wishlist' import { ProductSlider, ProductCard } from '@components/product' import { Container, Text } from '@components/ui' import { SEO } from '@components/common' import ProductSidebar from '../ProductSidebar' import ProductTag from '../ProductTag' import ProductModel from '../ProductModel/ProductModel' import Lightbox from 'yet-another-react-lightbox' import 'yet-another-react-lightbox/styles.css' import { useRouter } from 'next/router' interface ProductViewProps { product: Product relatedProducts: Product[] } const ProductView: FC = ({ product, relatedProducts }) => { const { price } = usePrice({ amount: product.price.value, baseAmount: product.price.retailPrice, currencyCode: product.price.currencyCode!, }) const model3dPath = product.media .map((media) => { return media.sources .filter((source) => source.format == 'glb') .map((source) => source.url) .slice(0) }) .pop() ?.pop() const [isLightboxOpen, setLightboxOpen] = useState(false) const { locale = 'it' } = useRouter() return ( <>
{product.images.map((image, i) => (
{image.alt setLightboxOpen(true)} />
))} {model3dPath != undefined ? (
) : ( <> )}
setLightboxOpen(false)} slides={product.images.map((image) => { return { src: image.url, } })} />
{process.env.COMMERCE_WISHLIST_ENABLED && ( )}

{locale === 'en' ? 'Related Products' : 'Prodotti Correlati'}
{relatedProducts.map((p) => (
))}
) } export default ProductView