diff --git a/RestroHub-FrontEnd/src/components/customer/CartDrawer.jsx b/RestroHub-FrontEnd/src/components/customer/CartDrawer.jsx
new file mode 100644
index 00000000..7f1d8188
--- /dev/null
+++ b/RestroHub-FrontEnd/src/components/customer/CartDrawer.jsx
@@ -0,0 +1,197 @@
+import { useCart } from '@context/CartContext';
+
+const formatPrice = (price) => {
+ const num = parseFloat(price);
+ return isNaN(num) ? '0.00' : num.toFixed(2);
+};
+
+const CartDrawer = ({ isOpen, onClose }) => {
+ const { items, removeItem, updateQuantity, clearCart, itemCount, totalAmount } = useCart();
+
+ if (!isOpen) return null;
+
+ return (
+ <>
+
+
+
+
+
+
+
+ Your Cart ({itemCount})
+
+
+
+
+ {items.length === 0 ? (
+
+
🛒
+
+ Your cart is empty
+
+
+ Add items from the menu to get started
+
+
+ ) : (
+ <>
+
+ {items.map((item) => (
+
+
+
+
+ ₹{formatPrice(item.price)}
+
+
+
+
+
+
+
+ {item.quantity}
+
+
+
+
+
+
+ ))}
+
+
+
+
+
+ Total
+
+
+ ₹{formatPrice(totalAmount)}
+
+
+
+
+
+
+
+ >
+ )}
+
+ >
+ );
+};
+
+export default CartDrawer;
diff --git a/RestroHub-FrontEnd/src/components/customer/MenuSection.jsx b/RestroHub-FrontEnd/src/components/customer/MenuSection.jsx
index bb061153..7971e1a9 100644
--- a/RestroHub-FrontEnd/src/components/customer/MenuSection.jsx
+++ b/RestroHub-FrontEnd/src/components/customer/MenuSection.jsx
@@ -1,5 +1,6 @@
import React, { useState } from 'react';
import { useSiteData } from '@context/SiteContext.jsx';
+import { useCart } from '@context/CartContext';
// ============================================
// MENU SECTION COMPONENT
@@ -8,6 +9,7 @@ import { useSiteData } from '@context/SiteContext.jsx';
const MenuSection = () => {
const { siteData } = useSiteData();
+ const { addItem } = useCart();
const [activeCategory, setActiveCategory] = useState('starters');
if (!siteData) return null;
@@ -54,6 +56,18 @@ const MenuSection = () => {
))}
)}
+
{item.price === 'varies' ? item.price : `$${item.price}`}
@@ -204,6 +218,24 @@ const MenuSection = () => {
color: var(--color-primary);
white-space: nowrap;
}
+ .menu-add-btn {
+ margin-top: var(--spacing-sm, 8px);
+ padding: 6px 16px;
+ font-size: var(--text-xs, 12px);
+ font-weight: 600;
+ letter-spacing: 0.05em;
+ text-transform: uppercase;
+ border: 1px solid var(--color-primary, #f59e0b);
+ background: transparent;
+ color: var(--color-primary, #f59e0b);
+ border-radius: var(--radius-sm, 4px);
+ cursor: pointer;
+ transition: all var(--transition-normal, 0.3s);
+ }
+ .menu-add-btn:hover {
+ background: var(--color-primary, #f59e0b);
+ color: #fff;
+ }
@media (min-width: 768px) {
.menu-item-price {
diff --git a/RestroHub-FrontEnd/src/components/customer/Navigation.jsx b/RestroHub-FrontEnd/src/components/customer/Navigation.jsx
index 99680745..f4024208 100644
--- a/RestroHub-FrontEnd/src/components/customer/Navigation.jsx
+++ b/RestroHub-FrontEnd/src/components/customer/Navigation.jsx
@@ -1,9 +1,11 @@
import React, { useState, useEffect } from 'react';
import { Link, useNavigate } from 'react-router-dom';
import { useSiteData } from '@context/SiteContext.jsx';
+import { useCart } from '@context/CartContext';
-const Navigation = () => {
+const Navigation = ({ onCartClick }) => {
const { siteData } = useSiteData();
+ const { itemCount } = useCart();
const navigate = useNavigate();
const [scrolled, setScrolled] = useState(false);
const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
@@ -45,6 +47,23 @@ const Navigation = () => {
))}
+
+