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 { Box, Stack, Text as ChakraText } from '@chakra-ui/react' import { Metafield } from '@commerce/types/common' import productDetailsMetafields from '../../../static_data/productDetailsMetafields.json' 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({}) 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[0].names.map((meta: any) => ( {meta.name}:{' '} {product.metafields!.custom[meta.key as keyof Metafield].value} ))}
{process.env.COMMERCE_CART_ENABLED && ( )}
) } export default ProductSidebar