diff --git a/src/components/shop/CartDrawer.tsx b/src/components/shop/CartDrawer.tsx new file mode 100644 index 0000000..4bbd833 --- /dev/null +++ b/src/components/shop/CartDrawer.tsx @@ -0,0 +1,113 @@ +'use client' +import { useState, useEffect } from 'react' +import Link from 'next/link' +import { ArrowRight, Minus, Package, Plus, ShoppingCart, Trash2, X } from 'lucide-react' +import { useVulaCart } from '@/hooks/useVulaCart' + +const fmt = (n: number) => `R${n.toFixed(2)}` + +export default function CartDrawer() { + const [isOpen, setIsOpen] = useState(false) + const { items, subtotal, itemCount, updateQty, removeFromCart } = useVulaCart() + + useEffect(() => { + const open = () => setIsOpen(true) + window.addEventListener('cart-drawer-open', open) + return () => window.removeEventListener('cart-drawer-open', open) + }, []) + + useEffect(() => { + document.body.style.overflow = isOpen ? 'hidden' : '' + return () => { document.body.style.overflow = '' } + }, [isOpen]) + + const close = () => setIsOpen(false) + + return ( + <> + {isOpen && ( +
+ )} +Your cart is empty.
+ +{item.title}
+ {item.variant_title && item.variant_title !== 'Default' && ( +{item.variant_title}
+ )} +{fmt(item.unit_price)}
+Shipping calculated at checkout
+ + Checkout