diff --git a/src/components/CartDrawer.tsx b/src/components/CartDrawer.tsx
new file mode 100644
index 0000000..e4150be
--- /dev/null
+++ b/src/components/CartDrawer.tsx
@@ -0,0 +1,149 @@
+import { useState, useEffect } from "react";
+import { ShoppingCart, Trash2, ExternalLink, Loader2 } from "lucide-react";
+import { Button } from "@/components/ui/button";
+import { Badge } from "@/components/ui/badge";
+import {
+ Sheet,
+ SheetContent,
+ SheetDescription,
+ SheetHeader,
+ SheetTitle,
+ SheetTrigger,
+} from "@/components/ui/sheet";
+import { useCartStore } from "@/stores/cartStore";
+
+export const CartDrawer = () => {
+ const [isOpen, setIsOpen] = useState(false);
+ const { items, isLoading, isSyncing, removeItem, clearCart, getCheckoutUrl, syncCart } = useCartStore();
+
+ const totalItems = items.reduce((sum, item) => sum + item.quantity, 0);
+ const totalPrice = items.reduce((sum, item) => sum + (parseFloat(item.price.amount) * item.quantity), 0);
+
+ // Sync cart with Shopify when drawer opens
+ useEffect(() => {
+ if (isOpen) syncCart();
+ }, [isOpen, syncCart]);
+
+ const handleCheckout = () => {
+ const checkoutUrl = getCheckoutUrl();
+ if (checkoutUrl) {
+ window.open(checkoutUrl, '_blank');
+ setIsOpen(false);
+ }
+ };
+
+ const handleRemoveItem = async (variantId: string) => {
+ await removeItem(variantId);
+ };
+
+ if (totalItems === 0) {
+ return null;
+ }
+
+ return (
+ Din varukorg är tom
+ Antal: {item.quantity}
+
+ {parseFloat(item.price.amount).toLocaleString('sv-SE')} {item.price.currencyCode}
+
+ {item.product.node.title}
+
+