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)} + + + updateQuantity(item.id, -1)} className="p-2 hover:bg-black/5 rounded"> + {item.quantity} + updateQuantity(item.id, 1)} className="p-2 hover:bg-black/5 rounded"> + removeItem(item.id)} className="p-2 text-red-500 hover:bg-red-50 rounded"> + + + ))} + + + Order Summary + + Subtotal + ${subtotal.toFixed(2)} + + Checkout + + + + + ); +} \ 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" />
${item.price.toFixed(2)}
Order history is currently empty.