import s from './ProductSidebar.module.css' import { useAddItem } from '@framework/cart' import { FC, useEffect, useState } from 'react' import { ProductOptions } from '@components/product' import type { Product } from '@commerce/types/product' import { Button, Rating, Collapse, Text, useUI } from '@components/ui' import { getProductVariant, selectDefaultOptionFromProduct, SelectedOptions, } from '../helpers' import { Alert, AlertIcon, Box, CloseButton, Stack, Text as ChakraText, useDisclosure, } from '@chakra-ui/react' import { Metafield } from '@commerce/types/common' import productDetailsMetafields from '../../../static_data/productDetailsMetafields.json' import { useRouter } from 'next/router' interface ProductSidebarProps { product: Product className?: string } const ProductSidebar: FC = ({ product, className }) => { const addItem = useAddItem() const { openSidebar } = useUI() const [loading, setLoading] = useState(false) const [selectedOptions, setSelectedOptions] = useState({}) const { locale = 'it' } = useRouter() const { isOpen: isAlertVisible, onClose, onOpen, } = useDisclosure({ defaultIsOpen: true }) useEffect(() => { selectDefaultOptionFromProduct(product, setSelectedOptions) }, [product]) const variant = getProductVariant(product, selectedOptions) const addToCart = async () => { setLoading(true) try { await addItem({ productId: String(product.id), variantId: String(variant ? variant.id : product.variants[0]?.id), }) openSidebar() setLoading(false) } catch (err) { setLoading(false) } } return (
{/* Product Description With Metafields */} {productDetailsMetafields.metafields[ locale as keyof typeof productDetailsMetafields.metafields ].map((meta: any) => ( {meta.name}:{' '} {product.metafields!.custom[meta.key as keyof Metafield].value} ))} {isAlertVisible ? ( {locale === 'it' ? "Il modello 3D potrebbe non rappresentare fedelmente l'aspetto del prodotto" : 'The 3D model may not accurately represent the appearance of the product'} ) : ( <> )}
{process.env.COMMERCE_CART_ENABLED && ( )}
) } export default ProductSidebar