From bf94d68a3d102d326689f6eb25b853c536ed8a18 Mon Sep 17 00:00:00 2001
From: "ALMAZROUEI Shamma (2021) WKIS203"
 <shamma.almazrouei.2021@live.rhul.ac.uk>
Date: Thu, 13 Mar 2025 00:36:09 +0530
Subject: [PATCH] Bug fixes and minor improvements

---
 golden-crust-bakery/package-lock.json         |  11 +
 golden-crust-bakery/package.json              |   1 +
 golden-crust-bakery/src/main.jsx              |   5 +
 golden-crust-bakery/src/pages/About.jsx       |  14 +-
 golden-crust-bakery/src/pages/Cart.jsx        |  14 +-
 golden-crust-bakery/src/pages/Checkout.jsx    |  14 +-
 .../src/pages/Confirmation.jsx                | 193 ++++++++++++++++++
 golden-crust-bakery/src/pages/Landing.jsx     |  31 +--
 golden-crust-bakery/src/pages/Login.jsx       |   4 +-
 golden-crust-bakery/src/pages/Menu.jsx        |  19 +-
 golden-crust-bakery/src/pages/MenuItem.jsx    |  30 ++-
 golden-crust-bakery/src/pages/Orders.jsx      |  23 ++-
 golden-crust-bakery/src/pages/Register.jsx    |   4 +-
 13 files changed, 306 insertions(+), 57 deletions(-)
 create mode 100644 golden-crust-bakery/src/pages/Confirmation.jsx

diff --git a/golden-crust-bakery/package-lock.json b/golden-crust-bakery/package-lock.json
index 9f0b7ca..4130bbf 100644
--- a/golden-crust-bakery/package-lock.json
+++ b/golden-crust-bakery/package-lock.json
@@ -17,6 +17,7 @@
         "@radix-ui/react-radio-group": "^1.2.3",
         "@radix-ui/react-select": "^2.1.6",
         "@radix-ui/react-slot": "^1.1.2",
+        "canvas-confetti": "^1.9.3",
         "class-variance-authority": "^0.7.1",
         "clsx": "^2.1.1",
         "lucide-react": "^0.479.0",
@@ -2600,6 +2601,16 @@
       ],
       "license": "CC-BY-4.0"
     },
+    "node_modules/canvas-confetti": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/canvas-confetti/-/canvas-confetti-1.9.3.tgz",
+      "integrity": "sha512-rFfTURMvmVEX1gyXFgn5QMn81bYk70qa0HLzcIOSVEyl57n6o9ItHeBtUSWdvKAPY0xlvBHno4/v3QPrT83q9g==",
+      "license": "ISC",
+      "funding": {
+        "type": "donate",
+        "url": "https://www.paypal.me/kirilvatev"
+      }
+    },
     "node_modules/chalk": {
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
diff --git a/golden-crust-bakery/package.json b/golden-crust-bakery/package.json
index f043ed5..f016c50 100644
--- a/golden-crust-bakery/package.json
+++ b/golden-crust-bakery/package.json
@@ -19,6 +19,7 @@
     "@radix-ui/react-radio-group": "^1.2.3",
     "@radix-ui/react-select": "^2.1.6",
     "@radix-ui/react-slot": "^1.1.2",
+    "canvas-confetti": "^1.9.3",
     "class-variance-authority": "^0.7.1",
     "clsx": "^2.1.1",
     "lucide-react": "^0.479.0",
diff --git a/golden-crust-bakery/src/main.jsx b/golden-crust-bakery/src/main.jsx
index d681e03..84ec698 100644
--- a/golden-crust-bakery/src/main.jsx
+++ b/golden-crust-bakery/src/main.jsx
@@ -19,6 +19,7 @@ import ErrorPage from './pages/Error';
 import Cart from './pages/Cart';
 import Orders from './pages/Orders';
 import Checkout from './pages/Checkout';
+import Confirmation from './pages/Confirmation';
 
 const router = createBrowserRouter([
   {
@@ -58,6 +59,10 @@ const router = createBrowserRouter([
         path: '/checkout',
         element: <Checkout />,
       },
+      {
+        path: '/confirmation',
+        element: <Confirmation />,
+      },
       {
         path: '/menu',
         element: <Menu />,
diff --git a/golden-crust-bakery/src/pages/About.jsx b/golden-crust-bakery/src/pages/About.jsx
index 8e69a83..06c6c1b 100644
--- a/golden-crust-bakery/src/pages/About.jsx
+++ b/golden-crust-bakery/src/pages/About.jsx
@@ -1,11 +1,9 @@
-import { Link, useNavigate } from 'react-router-dom';
+import { Link } from 'react-router-dom';
 import { ArrowRight, Award, Clock, Heart, Users } from 'lucide-react';
 
 import { Button } from '@/components/ui/button';
 
 export default function About() {
-  const navigate = useNavigate();
-
   const reviews = [
     {
       name: 'Sophia Patel',
@@ -254,17 +252,19 @@ export default function About() {
           </p>
           <div className='flex flex-col sm:flex-row gap-4 justify-center'>
             <Button
-              onClick={() => navigate('/menu')}
+              asChild
               className='bg-pink-500 hover:bg-pink-600 text-white rounded-full'
             >
-              Browse Our Menu <ArrowRight className='ml-2 h-4 w-4' />
+              <Link to='/menu'>
+                Browse Our Menu <ArrowRight className='ml-2 h-4 w-4' />
+              </Link>
             </Button>
             <Button
               variant='outline'
-              onClick={() => navigate('/contact')}
+              asChild
               className='border-pink-300 text-pink-600 hover:bg-pink-50 rounded-full'
             >
-              Contact Us
+              <Link to='/contact'>Contact Us</Link>
             </Button>
           </div>
         </div>
diff --git a/golden-crust-bakery/src/pages/Cart.jsx b/golden-crust-bakery/src/pages/Cart.jsx
index f289032..a648f28 100644
--- a/golden-crust-bakery/src/pages/Cart.jsx
+++ b/golden-crust-bakery/src/pages/Cart.jsx
@@ -1,5 +1,5 @@
 import { useEffect } from 'react';
-import { useNavigate } from 'react-router-dom';
+import { Link, useNavigate } from 'react-router-dom';
 import { toast } from 'sonner';
 import { Minus, Plus, ShoppingCart, Trash2 } from 'lucide-react';
 
@@ -36,7 +36,7 @@ export default function Cart() {
     (total, item) => total + item.price * item.quantity,
     0
   );
-  const tax = subtotal * 0.08; // 8% tax
+  const tax = subtotal * 0.12; // 12% tax
   const total = subtotal + tax;
 
   const handleQuantityChange = (id, newQuantity) => {
@@ -170,7 +170,7 @@ export default function Cart() {
                       </dd>
                     </div>
                     <div className='flex justify-between py-2'>
-                      <dt className='text-sm text-gray-600'>Tax (8%)</dt>
+                      <dt className='text-sm text-gray-600'>Tax (12%)</dt>
                       <dd className='text-sm font-medium text-gray-900'>
                         ${tax.toFixed(2)}
                       </dd>
@@ -194,10 +194,10 @@ export default function Cart() {
                   </Button>
                   <Button
                     variant='outline'
-                    onClick={() => navigate('/menu')}
+                    asChild
                     className='w-full mt-4 border-pink-300 text-pink-600 hover:bg-pink-50 rounded-full'
                   >
-                    Continue Shopping
+                    <Link to='/menu'>Continue Shopping</Link>
                   </Button>
                   {cart.length > 0 && (
                     <Button
@@ -231,10 +231,10 @@ export default function Cart() {
             Looks like you haven't added any cakes to your cart yet.
           </p>
           <Button
-            onClick={() => navigate('/menu')}
+            asChild
             className='bg-pink-500 hover:bg-pink-600 text-white rounded-full px-8 py-6 text-lg'
           >
-            Browse Our Menu
+            <Link to='/menu'>Browse Our Menu</Link>
           </Button>
         </div>
       )}
diff --git a/golden-crust-bakery/src/pages/Checkout.jsx b/golden-crust-bakery/src/pages/Checkout.jsx
index db53d4d..5bb093a 100644
--- a/golden-crust-bakery/src/pages/Checkout.jsx
+++ b/golden-crust-bakery/src/pages/Checkout.jsx
@@ -1,6 +1,6 @@
 import { useEffect, useState } from 'react';
 import { toast } from 'sonner';
-import { useNavigate } from 'react-router-dom';
+import { useNavigate, Link } from 'react-router-dom';
 import { ArrowLeft, CreditCard, HandCoins, Truck } from 'lucide-react';
 
 import { useCartStore } from '@/lib/store';
@@ -143,10 +143,11 @@ export default function Checkout() {
       };
 
       addOrder(order);
-      clearCart();
 
       setIsSubmitting(false);
       navigate(`/confirmation?orderId=${orderId}`);
+
+      clearCart();
     }, 1500);
   };
 
@@ -288,8 +289,7 @@ export default function Checkout() {
                   <div className='flex items-center space-x-2'>
                     <RadioGroupItem value='cash' id='cash' />
                     <Label htmlFor='cash' className='flex items-center'>
-                      <HandCoins className='mr-2 h-4 w-4' /> Credit Card (Pay at
-                      Delivery)
+                      <HandCoins className='mr-2 h-4 w-4' /> Cash on Delivery
                     </Label>
                   </div>
                 </RadioGroup>
@@ -313,10 +313,12 @@ export default function Checkout() {
                 <Button
                   type='button'
                   variant='outline'
-                  onClick={() => navigate('/cart')}
+                  asChild
                   className='border-pink-300 text-pink-600 hover:bg-pink-50 rounded-full'
                 >
-                  <ArrowLeft className='mr-2 h-4 w-4' /> Back to Cart
+                  <Link to='/cart'>
+                    <ArrowLeft className='mr-2 h-4 w-4' /> Back to Cart
+                  </Link>
                 </Button>
                 <Button
                   type='submit'
diff --git a/golden-crust-bakery/src/pages/Confirmation.jsx b/golden-crust-bakery/src/pages/Confirmation.jsx
new file mode 100644
index 0000000..c901a83
--- /dev/null
+++ b/golden-crust-bakery/src/pages/Confirmation.jsx
@@ -0,0 +1,193 @@
+import { useEffect, useState } from 'react';
+import { CheckCircle, Home, ShoppingBag } from 'lucide-react';
+import confetti from 'canvas-confetti';
+import { useNavigate, useSearchParams, Link } from 'react-router-dom';
+
+import { useOrderStore } from '@/lib/orderStore';
+
+import { Button } from '@/components/ui/button';
+
+export default function Confirmation() {
+  const navigate = useNavigate();
+  const [searchParams, _] = useSearchParams();
+  const { orders } = useOrderStore();
+  const [order, setOrder] = useState(null);
+
+  useEffect(() => {
+    const orderId = searchParams.get('orderId');
+    if (!orderId) {
+      navigate('/');
+      return;
+    }
+
+    const foundOrder = orders.find((o) => o.id === orderId);
+    if (foundOrder) {
+      setOrder(foundOrder);
+
+      // Trigger confetti animation
+      confetti({
+        particleCount: 100,
+        spread: 70,
+        origin: { y: 0.6 },
+      });
+    } else {
+      navigate('/');
+    }
+  }, [orders, navigate, searchParams]);
+
+  if (!order) {
+    return (
+      <div className='container mx-auto px-4 py-16 text-center'>
+        <p>Loading order details...</p>
+      </div>
+    );
+  }
+
+  return (
+    <div className='container mx-auto px-4 py-8 md:py-12'>
+      <div className='max-w-3xl mx-auto bg-white rounded-xl shadow-sm border overflow-hidden'>
+        <div className='p-8'>
+          <div className='text-center mb-8'>
+            <div className='mx-auto w-16 h-16 bg-green-100 rounded-full flex items-center justify-center mb-4'>
+              <CheckCircle className='h-10 w-10 text-green-500' />
+            </div>
+            <h1 className='text-3xl font-bold text-gray-800 mb-2'>
+              Order Confirmed!
+            </h1>
+            <p className='text-gray-600'>
+              Thank you for your order. We've received your order and will begin
+              processing it right away.
+            </p>
+          </div>
+
+          <div className='border-t border-b border-gray-200 py-6 mb-6'>
+            <div className='flex justify-between mb-2'>
+              <h2 className='text-lg font-semibold text-gray-800'>
+                Order Details
+              </h2>
+              <p className='text-pink-600 font-medium'>
+                Order #{order.id.split('-')[1]}
+              </p>
+            </div>
+            <p className='text-gray-600 text-sm mb-4'>
+              Placed on {new Date(order.date).toLocaleDateString()} at{' '}
+              {new Date(order.date).toLocaleTimeString()}
+            </p>
+
+            <div className='space-y-4'>
+              <div>
+                <h3 className='text-sm font-medium text-gray-800 mb-2'>
+                  Items Ordered:
+                </h3>
+                <ul className='divide-y divide-gray-200'>
+                  {order.items.map((item) => (
+                    <li key={item.id} className='py-3 flex justify-between'>
+                      <div>
+                        <p className='text-sm font-medium text-gray-900'>
+                          {item.name}
+                        </p>
+                        <p className='text-sm text-gray-500'>
+                          Qty: {item.quantity}
+                        </p>
+                      </div>
+                      <p className='text-sm font-medium text-gray-900'>
+                        ${(item.price * item.quantity).toFixed(2)}
+                      </p>
+                    </li>
+                  ))}
+                </ul>
+              </div>
+
+              <div className='pt-4'>
+                <div className='flex justify-between py-1'>
+                  <dt className='text-sm text-gray-600'>Subtotal</dt>
+                  <dd className='text-sm font-medium text-gray-900'>
+                    ${order.subtotal.toFixed(2)}
+                  </dd>
+                </div>
+                <div className='flex justify-between py-1'>
+                  <dt className='text-sm text-gray-600'>Tax</dt>
+                  <dd className='text-sm font-medium text-gray-900'>
+                    ${order.tax.toFixed(2)}
+                  </dd>
+                </div>
+                <div className='flex justify-between py-1'>
+                  <dt className='text-sm text-gray-600'>Delivery Fee</dt>
+                  <dd className='text-sm font-medium text-gray-900'>
+                    ${order.deliveryFee.toFixed(2)}
+                  </dd>
+                </div>
+                <div className='flex justify-between py-1 border-t border-gray-200 mt-2 pt-2'>
+                  <dt className='text-base font-medium text-gray-900'>Total</dt>
+                  <dd className='text-base font-medium text-pink-600'>
+                    ${order.total.toFixed(2)}
+                  </dd>
+                </div>
+              </div>
+            </div>
+          </div>
+
+          <div className='grid grid-cols-1 md:grid-cols-2 gap-6 mb-8'>
+            <div>
+              <h3 className='text-sm font-medium text-gray-800 mb-2'>
+                Delivery Information:
+              </h3>
+              <p className='text-sm text-gray-600'>{order.customer.name}</p>
+              <p className='text-sm text-gray-600'>{order.customer.address}</p>
+              <p className='text-sm text-gray-600'>
+                {order.customer.city}, {order.customer.zipCode}
+              </p>
+              <p className='text-sm text-gray-600'>{order.customer.phone}</p>
+              <p className='text-sm text-gray-600'>{order.customer.email}</p>
+            </div>
+
+            <div>
+              <h3 className='text-sm font-medium text-gray-800 mb-2'>
+                Payment Method:
+              </h3>
+              <p className='text-sm text-gray-600 capitalize'>
+                {order.paymentMethod === 'credit-card'
+                  ? 'Credit Card (Pay at Delivery)'
+                  : 'Cash on Delivery'}
+              </p>
+
+              <h3 className='text-sm font-medium text-gray-800 mt-4 mb-2'>
+                Delivery Status:
+              </h3>
+              <div className='inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-yellow-100 text-yellow-800'>
+                Processing
+              </div>
+            </div>
+          </div>
+
+          <div className='bg-blue-50 p-4 rounded-lg mb-8'>
+            <p className='text-sm text-blue-800'>
+              You will receive an email confirmation shortly at{' '}
+              {order.customer.email} with your order details.
+            </p>
+          </div>
+
+          <div className='flex flex-col sm:flex-row gap-4 justify-center'>
+            <Button
+              asChild
+              className='bg-pink-500 hover:bg-pink-600 text-white rounded-full'
+            >
+              <Link to='/orders'>
+                <ShoppingBag className='mr-2 h-4 w-4' /> View My Orders
+              </Link>
+            </Button>
+            <Button
+              variant='outline'
+              asChild
+              className='border-pink-300 text-pink-600 hover:bg-pink-50 rounded-full'
+            >
+              <Link to='/'>
+                <Home className='mr-2 h-4 w-4' /> Return to Home
+              </Link>
+            </Button>
+          </div>
+        </div>
+      </div>
+    </div>
+  );
+}
diff --git a/golden-crust-bakery/src/pages/Landing.jsx b/golden-crust-bakery/src/pages/Landing.jsx
index 14e248c..02f52a8 100644
--- a/golden-crust-bakery/src/pages/Landing.jsx
+++ b/golden-crust-bakery/src/pages/Landing.jsx
@@ -1,13 +1,12 @@
 import { useEffect } from 'react';
 import { ArrowRight, Cake, ShoppingBag, Star } from 'lucide-react';
-import { useNavigate } from 'react-router-dom';
+import { Link } from 'react-router-dom';
 
 import { useCartStore } from '@/lib/store';
 
 import { Button } from '@/components/ui/button';
 
 export default function Landing() {
-  const navigate = useNavigate();
   const { initializeCart } = useCartStore();
 
   useEffect(() => {
@@ -81,17 +80,19 @@ export default function Landing() {
                 </p>
                 <div className='flex flex-col sm:flex-row gap-4'>
                   <Button
-                    onClick={() => navigate('/menu')}
+                    asChild
                     className='bg-pink-500 hover:bg-pink-600 text-white rounded-full px-8 py-6 text-lg'
                   >
-                    Order Now <ArrowRight className='ml-2 h-5 w-5' />
+                    <Link to='/menu'>
+                      Order Now <ArrowRight className='ml-2 h-5 w-5' />
+                    </Link>
                   </Button>
                   <Button
                     variant='outline'
-                    onClick={() => navigate('/about')}
+                    asChild
                     className='border-pink-300 text-pink-600 hover:bg-pink-50 rounded-full px-8 py-6 text-lg'
                   >
-                    Our Story
+                    <Link to='/about'>Our Story</Link>
                   </Button>
                 </div>
               </div>
@@ -140,12 +141,10 @@ export default function Landing() {
                     </div>
                     <p className='text-gray-600 mb-4'>{cake.description}</p>
                     <Button
-                      onClick={() => {
-                        navigate('/menu');
-                      }}
+                      asChild
                       className='w-full bg-yellow-100 hover:bg-yellow-200 text-yellow-800 rounded-full'
                     >
-                      View Details
+                      <Link to={`/menu/${cake.id}`}>View Details</Link>
                     </Button>
                   </div>
                 </div>
@@ -153,11 +152,13 @@ export default function Landing() {
             </div>
             <div className='text-center mt-10'>
               <Button
-                onClick={() => navigate('/menu')}
+                asChild
                 variant='outline'
                 className='border-pink-300 text-pink-600 hover:bg-pink-50 rounded-full px-8 py-6 text-lg'
               >
-                View All Cakes <ArrowRight className='ml-2 h-5 w-5' />
+                <Link to='/menu'>
+                  View All Cakes <ArrowRight className='ml-2 h-5 w-5' />
+                </Link>
               </Button>
             </div>
           </div>
@@ -270,10 +271,12 @@ export default function Landing() {
               occasion even more memorable with a cake from Golden Crust Bakery.
             </p>
             <Button
-              onClick={() => navigate('/menu')}
+              asChild
               className='bg-pink-500 hover:bg-pink-600 text-white rounded-full px-8 py-6 text-lg'
             >
-              Order Now <ArrowRight className='ml-2 h-5 w-5' />
+              <Link to='/menu'>
+                Order Now <ArrowRight className='ml-2 h-5 w-5' />
+              </Link>
             </Button>
           </div>
         </section>
diff --git a/golden-crust-bakery/src/pages/Login.jsx b/golden-crust-bakery/src/pages/Login.jsx
index 3bb0e17..7643b7d 100644
--- a/golden-crust-bakery/src/pages/Login.jsx
+++ b/golden-crust-bakery/src/pages/Login.jsx
@@ -192,10 +192,10 @@ export default function Login() {
         <div className='mt-8 text-center'>
           <Button
             variant='ghost'
-            onClick={() => navigate('/')}
+            asChild
             className='text-gray-600 hover:text-gray-800'
           >
-            Return to Home
+            <Link to='/'>Return to Home</Link>
           </Button>
         </div>
       </div>
diff --git a/golden-crust-bakery/src/pages/Menu.jsx b/golden-crust-bakery/src/pages/Menu.jsx
index aeadc56..f128bfc 100644
--- a/golden-crust-bakery/src/pages/Menu.jsx
+++ b/golden-crust-bakery/src/pages/Menu.jsx
@@ -3,20 +3,28 @@ import { toast } from 'sonner';
 import { Search, ShoppingCart } from 'lucide-react';
 
 import { useCartStore } from '@/lib/store';
+import { useAuthStore } from '@/lib/authStore';
 import { cakeData } from '@/lib/data';
 
 import { Button } from '@/components/ui/button';
 import { Input } from '@/components/ui/input';
-import { Link } from 'react-router-dom';
+import { Link, useSearchParams } from 'react-router-dom';
 
 export default function Menu() {
+  const { isAuthenticated } = useAuthStore();
+
   const { addToCart, initializeCart } = useCartStore();
   const [searchTerm, setSearchTerm] = useState('');
   const [categoryFilter, setCategoryFilter] = useState('All');
+  const [searchParams, _] = useSearchParams();
 
   useEffect(() => {
+    if (searchParams.get('category')) {
+      setCategoryFilter(searchParams.get('category'));
+    }
+
     initializeCart();
-  }, [initializeCart]);
+  }, [initializeCart, searchParams]);
 
   const categories = [
     'All',
@@ -36,6 +44,13 @@ export default function Menu() {
   });
 
   const handleAddToCart = (cake) => {
+    if (!isAuthenticated) {
+      toast.error('Authentication required!', {
+        description: 'Please sign in to add to your cart.',
+      });
+      return;
+    }
+
     addToCart({
       ...cake,
       quantity: 1,
diff --git a/golden-crust-bakery/src/pages/MenuItem.jsx b/golden-crust-bakery/src/pages/MenuItem.jsx
index 84d2e84..f16fe76 100644
--- a/golden-crust-bakery/src/pages/MenuItem.jsx
+++ b/golden-crust-bakery/src/pages/MenuItem.jsx
@@ -1,5 +1,5 @@
 import { useEffect, useState } from 'react';
-import { useLocation, useNavigate } from 'react-router-dom';
+import { Link, useLocation, useNavigate } from 'react-router-dom';
 import { toast } from 'sonner';
 import {
   ArrowLeft,
@@ -11,17 +11,20 @@ import {
 } from 'lucide-react';
 
 import { useCartStore } from '@/lib/store';
+import { useAuthStore } from '@/lib/authStore';
 import { cakeData } from '@/lib/data';
 
 import { Button } from '@/components/ui/button';
 import { Card, CardContent } from '@/components/ui/card';
 
 export default function MenuItem() {
+  const { isAuthenticated } = useAuthStore();
   const navigate = useNavigate();
   const { addToCart, initializeCart } = useCartStore();
   const [cake, setCake] = useState(null);
   const [quantity, setQuantity] = useState(1);
   const [isLoading, setIsLoading] = useState(true);
+  const [isFavorite, setIsFavorite] = useState(false);
 
   const cakeId = useLocation().pathname.split('/')[2];
 
@@ -50,6 +53,13 @@ export default function MenuItem() {
   };
 
   const handleAddToCart = () => {
+    if (!isAuthenticated) {
+      toast.error('Authentication required!', {
+        description: 'Please sign in to add to your cart.',
+      });
+      return;
+    }
+
     if (cake) {
       addToCart({
         ...cake,
@@ -85,10 +95,12 @@ export default function MenuItem() {
     <div className='container mx-auto px-4 py-8 md:py-12'>
       <Button
         variant='ghost'
-        onClick={() => navigate('/menu')}
+        asChild
         className='mb-6 text-gray-600 hover:text-gray-800'
       >
-        <ArrowLeft className='mr-2 h-4 w-4' /> Back to Menu
+        <Link to='/menu'>
+          <ArrowLeft className='mr-2 h-4 w-4' /> Back to Menu
+        </Link>
       </Button>
 
       <div className='grid grid-cols-1 md:grid-cols-2 gap-8 md:gap-16 mb-12'>
@@ -157,10 +169,16 @@ export default function MenuItem() {
                 <ShoppingCart className='mr-2 h-5 w-5' /> Add to Cart
               </Button>
               <Button
+                onClick={() => setIsFavorite(!isFavorite)}
                 variant='outline'
                 className='border-pink-300 text-pink-600 hover:bg-pink-50 rounded-full py-6'
               >
-                <Heart className='mr-2 h-5 w-5' /> Add to Wishlist
+                <Heart
+                  className={`mr-2 h-5 w-5 ${
+                    isFavorite ? 'fill-pink-600' : ''
+                  }`}
+                />{' '}
+                {isFavorite ? 'Remove from Wishlist' : 'Add to Wishlist'}
               </Button>
             </div>
           </div>
@@ -223,10 +241,10 @@ export default function MenuItem() {
                     {relatedCake.description}
                   </p>
                   <Button
-                    onClick={() => navigate(`/menu/${relatedCake.id}`)}
+                    asChild
                     className='w-full bg-yellow-100 hover:bg-yellow-200 text-yellow-800 rounded-full'
                   >
-                    View Details
+                    <Link to={`/menu/${relatedCake.id}`}>View Details</Link>
                   </Button>
                 </CardContent>
               </Card>
diff --git a/golden-crust-bakery/src/pages/Orders.jsx b/golden-crust-bakery/src/pages/Orders.jsx
index 17d5886..c146403 100644
--- a/golden-crust-bakery/src/pages/Orders.jsx
+++ b/golden-crust-bakery/src/pages/Orders.jsx
@@ -1,5 +1,5 @@
 import { useEffect } from 'react';
-import { useNavigate } from 'react-router-dom';
+import { Link, useNavigate } from 'react-router-dom';
 import { toast } from 'sonner';
 import { Home, Package, ShoppingBag, X } from 'lucide-react';
 
@@ -35,10 +35,8 @@ export default function Orders() {
 
     // Redirect to login if not authenticated
     if (!isAuthenticated) {
-      toast({
-        title: 'Authentication Required',
+      toast.error('Authentication Required', {
         description: 'Please sign in to view your orders.',
-        variant: 'destructive',
       });
       navigate('/login');
     }
@@ -51,8 +49,7 @@ export default function Orders() {
 
   const handleCancelOrder = (orderId) => {
     cancelOrder(orderId);
-    toast({
-      title: 'Order Cancelled',
+    toast.success('Order Cancelled', {
       description: 'Your order has been cancelled successfully.',
     });
   };
@@ -90,7 +87,7 @@ export default function Orders() {
               <AccordionItem
                 key={order.id}
                 value={order.id}
-                className='bg-white rounded-xl shadow-md overflow-hidden border-none'
+                className='bg-white rounded-xl shadow-sm border overflow-hidden'
               >
                 <AccordionTrigger className='px-6 py-4 hover:no-underline hover:bg-gray-50'>
                   <div className='flex flex-col md:flex-row w-full items-start md:items-center justify-between text-left'>
@@ -254,10 +251,12 @@ export default function Orders() {
             You haven't placed any orders with us yet.
           </p>
           <Button
-            onClick={() => navigate('/menu')}
+            asChild
             className='bg-pink-500 hover:bg-pink-600 text-white rounded-full px-8 py-6 text-lg'
           >
-            <ShoppingBag className='mr-2 h-5 w-5' /> Start Shopping
+            <Link to='/menu'>
+              <ShoppingBag className='mr-2 h-5 w-5' /> Start Shopping
+            </Link>
           </Button>
         </div>
       )}
@@ -265,10 +264,12 @@ export default function Orders() {
       <div className='text-center mt-8'>
         <Button
           variant='outline'
-          onClick={() => navigate('/')}
+          asChild
           className='border-pink-300 text-pink-600 hover:bg-pink-50 rounded-full'
         >
-          <Home className='mr-2 h-4 w-4' /> Return to Home
+          <Link to='/'>
+            <Home className='mr-2 h-4 w-4' /> Return to Home
+          </Link>
         </Button>
       </div>
     </div>
diff --git a/golden-crust-bakery/src/pages/Register.jsx b/golden-crust-bakery/src/pages/Register.jsx
index e108c1d..20fc152 100644
--- a/golden-crust-bakery/src/pages/Register.jsx
+++ b/golden-crust-bakery/src/pages/Register.jsx
@@ -288,10 +288,10 @@ export default function Register() {
         <div className='mt-8 text-center'>
           <Button
             variant='ghost'
-            onClick={() => navigate('/')}
+            asChild
             className='text-gray-600 hover:text-gray-800'
           >
-            Return to Home
+            <Link to='/'>Return to Home</Link>
           </Button>
         </div>
       </div>
-- 
GitLab