diff --git a/src/app/chat/page.tsx b/src/app/chat/page.tsx new file mode 100644 index 0000000..7f8552c --- /dev/null +++ b/src/app/chat/page.tsx @@ -0,0 +1,91 @@ +"use client"; + +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import ReactLenis from "lenis/react"; +import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen'; +import FooterBaseCard from '@/components/sections/footer/FooterBaseCard'; +import { useState } from "react"; +import { Send, User, MessageSquare, Phone } from "lucide-react"; + +export default function ChatPage() { + const [message, setMessage] = useState(""); + + return ( + + + + + + + + + + + + + + Customer Support + Active now + + + + + + + Hello! How can I help you with your order today? + + + + + Hi, I wanted to ask if I can add extra garlic to my pasta order? + + + + + + setMessage(e.target.value)} + placeholder="Type a message..." + className="flex-1 bg-background border rounded-full px-6 py-3 outline-none focus:ring-2 focus:ring-accent/20" + /> + + + + + + + + + + + ); +} \ No newline at end of file diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx new file mode 100644 index 0000000..42c9d48 --- /dev/null +++ b/src/app/login/page.tsx @@ -0,0 +1,31 @@ +"use client"; + +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen'; +import ContactSplitForm from '@/components/sections/contact/ContactSplitForm'; + +export default function LoginPage() { + return ( + + + + + + + ); +} \ No newline at end of file diff --git a/src/app/manage-menu/page.tsx b/src/app/manage-menu/page.tsx new file mode 100644 index 0000000..ecf0384 --- /dev/null +++ b/src/app/manage-menu/page.tsx @@ -0,0 +1,73 @@ +"use client"; + +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import { useState } from "react"; +import { Plus, Trash2, Edit2, Check } from "lucide-react"; +import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen'; + +export default function ManageMenuPage() { + const [menuItems, setMenuItems] = useState([ + { id: "1", name: "Margherita Pizza", price: "15.00" }, + { id: "2", name: "Classic Burger", price: "12.00" }, + ]); + const [editingId, setEditingId] = useState(null); + const [editName, setEditName] = useState(""); + const [editPrice, setEditPrice] = useState(""); + + const addItem = () => { + const newItem = { id: Date.now().toString(), name: "New Item", price: "0.00" }; + setMenuItems([...menuItems, newItem]); + }; + + const deleteItem = (id: string) => { + setMenuItems(menuItems.filter(item => item.id !== id)); + }; + + const startEdit = (item: { id: string, name: string, price: string }) => { + setEditingId(item.id); + setEditName(item.name); + setEditPrice(item.price); + }; + + const saveEdit = (id: string) => { + setMenuItems(menuItems.map(item => item.id === id ? { ...item, name: editName, price: editPrice } : item)); + setEditingId(null); + }; + + return ( + + + + + Menu Management + + Add Item + + + + {menuItems.map(item => ( + + {editingId === item.id ? ( + <> + setEditName(e.target.value)} className="flex-1 p-2 border rounded" /> + setEditPrice(e.target.value)} className="w-24 p-2 border rounded" /> + saveEdit(item.id)} className="p-2 text-green-500"> + > + ) : ( + <> + {item.name} + ${item.price} + startEdit(item)} className="p-2 text-blue-500"> + deleteItem(item.id)} className="p-2 text-red-500"> + > + )} + + ))} + + + + ); +} \ No newline at end of file diff --git a/src/app/page.tsx b/src/app/page.tsx index e646142..5279c57 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -37,6 +37,7 @@ export default function LandingPage() { { name: "Home", id: "hero" }, { name: "Restaurants", id: "restaurants" }, { name: "Process", id: "features" }, + { name: "Chat", id: "/chat" }, { name: "Contact", id: "contact" }, ]} brandName="FoodMarket" @@ -191,11 +192,11 @@ export default function LandingPage() { logoText="FoodMarket" columns={[ { title: "Marketplace", items: [{ label: "Restaurants", href: "#restaurants" }, { label: "About Us", href: "#" }, { label: "Careers", href: "#" }] }, - { title: "Support", items: [{ label: "Help Center", href: "#" }, { label: "Contact", href: "#contact" }, { label: "Privacy Policy", href: "#" }] }, + { title: "Support", items: [{ label: "Help Center", href: "#" }, { label: "Contact", href: "#contact" }, { label: "Chat", href: "/chat" }, { label: "Privacy Policy", href: "#" }] }, ]} /> ); -} +} \ No newline at end of file diff --git a/src/app/register/page.tsx b/src/app/register/page.tsx new file mode 100644 index 0000000..5f0f1b1 --- /dev/null +++ b/src/app/register/page.tsx @@ -0,0 +1,32 @@ +"use client"; + +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen'; +import ContactSplitForm from '@/components/sections/contact/ContactSplitForm'; + +export default function RegisterPage() { + return ( + + + + + + + ); +} \ No newline at end of file diff --git a/src/app/vendor-orders/page.tsx b/src/app/vendor-orders/page.tsx new file mode 100644 index 0000000..7f83350 --- /dev/null +++ b/src/app/vendor-orders/page.tsx @@ -0,0 +1,79 @@ +"use client"; + +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import ReactLenis from "lenis/react"; +import { useState } from "react"; +import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen'; +import FooterBaseCard from '@/components/sections/footer/FooterBaseCard'; +import { Check, X, Clock } from "lucide-react"; + +export default function VendorOrdersPage() { + const [orders, setOrders] = useState([ + { id: "1", customer: "Sarah J.", items: "Gourmet Pizza x1", status: "Pending" }, + { id: "2", customer: "Michael R.", items: "Burger Barn Combo x2", status: "Pending" }, + ]); + + const handleAction = (id: string, action: "Accepted" | "Rejected") => { + setOrders(prev => prev.filter(o => o.id !== id)); + }; + + return ( + + + + + + + + Incoming Orders + + {orders.length === 0 ? ( + No pending orders. + ) : ( + orders.map(order => ( + + + {order.customer} + {order.items} + + + handleAction(order.id, "Accepted")} className="p-2 rounded-full bg-green-500/10 text-green-500"> + + + handleAction(order.id, "Rejected")} className="p-2 rounded-full bg-red-500/10 text-red-500"> + + + + + )) + )} + + + + + + + ); +} \ No newline at end of file
Active now
No pending orders.
{order.items}