diff --git a/src/app/cart/page.tsx b/src/app/cart/page.tsx new file mode 100644 index 0000000..aa242ac --- /dev/null +++ b/src/app/cart/page.tsx @@ -0,0 +1,67 @@ +"use client"; + +import { useState } from "react"; +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import { Minus, Plus, Trash2 } from "lucide-react"; +import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay'; + +export default function CartPage() { + const [cartItems, setCartItems] = useState([ + { id: "p1", name: "Classic Margherita Pizza", price: 12.99, quantity: 1 }, + { id: "p2", name: "Gourmet Beef Burger", price: 14.99, quantity: 2 }, + ]); + + const updateQuantity = (id: string, delta: number) => { + setCartItems(prev => prev.map(item => + item.id === id ? { ...item, quantity: Math.max(1, item.quantity + delta) } : item + )); + }; + + const removeItem = (id: string) => { + setCartItems(prev => prev.filter(item => item.id !== id)); + }; + + const subtotal = cartItems.reduce((acc, item) => acc + item.price * item.quantity, 0); + + return ( + + +
+

Your Cart

+
+
+ {cartItems.map(item => ( +
+
+

{item.name}

+

${item.price.toFixed(2)}

+
+
+ + {item.quantity} + + +
+
+ ))} +
+
+

Order Summary

+
+ Subtotal + ${subtotal.toFixed(2)} +
+ +
+
+
+
+ ); +} \ No newline at end of file diff --git a/src/app/checkout/page.tsx b/src/app/checkout/page.tsx new file mode 100644 index 0000000..3cc86f3 --- /dev/null +++ b/src/app/checkout/page.tsx @@ -0,0 +1,61 @@ +"use client"; + +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import ReactLenis from "lenis/react"; +import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay'; +import ContactSplitForm from '@/components/sections/contact/ContactSplitForm'; +import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal'; + +export default function CheckoutPage() { + return ( + + + + +
+ +
+ + +
+
+ ); +} diff --git a/src/app/orders/page.tsx b/src/app/orders/page.tsx new file mode 100644 index 0000000..9716f37 --- /dev/null +++ b/src/app/orders/page.tsx @@ -0,0 +1,27 @@ +"use client"; + +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import ReactLenis from "lenis/react"; +import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay'; + +export default function OrdersPage() { + return ( + + + +
+

Your Orders

+
+

Order history is currently empty.

+
+
+
+
+ ); +} \ No newline at end of file diff --git a/src/app/page.tsx b/src/app/page.tsx index 054364d..9702e5a 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -12,7 +12,7 @@ import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatin import ProductCardOne from '@/components/sections/product/ProductCardOne'; import SplitAbout from '@/components/sections/about/SplitAbout'; import TestimonialCardTwelve from '@/components/sections/testimonial/TestimonialCardTwelve'; -import { Clock, Leaf, Star } from "lucide-react"; +import { Clock, Leaf, Star, ShoppingCart } from "lucide-react"; export default function LandingPage() { return ( @@ -36,6 +36,8 @@ export default function LandingPage() { { name: "About", id: "#about" }, { name: "FAQ", id: "#faq" }, { name: "Contact", id: "#contact" }, + { name: "Orders", id: "/orders" }, + { name: "Cart (0)", id: "#" }, ]} brandName="FreshEats" />