From 969b0733278697102abbd4d86ff94dec80e2839c Mon Sep 17 00:00:00 2001 From: Vula Builder Date: Fri, 31 Jul 2026 18:44:28 +0000 Subject: [PATCH] Deploy --- src/components/shop/CartDrawer.tsx | 134 +++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 src/components/shop/CartDrawer.tsx diff --git a/src/components/shop/CartDrawer.tsx b/src/components/shop/CartDrawer.tsx new file mode 100644 index 0000000..6407b56 --- /dev/null +++ b/src/components/shop/CartDrawer.tsx @@ -0,0 +1,134 @@ +'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' +import { useCustomerAuth } from '@/hooks/useCustomerAuth' + +const fmt = (n: number) => `R${(n / 100).toFixed(2)}` + +export default function CartDrawer() { + const [isOpen, setIsOpen] = useState(false) + const { items, subtotal, itemCount, updateQty, removeFromCart } = useVulaCart() + const { customer, isAuthenticated } = useCustomerAuth() + + 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 && ( +