diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx new file mode 100644 index 0000000..cde04cb --- /dev/null +++ b/src/app/about/page.tsx @@ -0,0 +1,182 @@ +"use client"; + +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered'; +import HeroBillboard from '@/components/sections/hero/HeroBillboard'; +import TextSplitAbout from '@/components/sections/about/TextSplitAbout'; +import FeatureCardThree from '@/components/sections/feature/featureCardThree/FeatureCardThree'; +import TeamCardFive from '@/components/sections/team/TeamCardFive'; +import ContactText from '@/components/sections/contact/ContactText'; +import FooterCard from '@/components/sections/footer/FooterCard'; +import { Info, Leaf, Target, Award, Users, Heart, Phone, MessageCircle, MapPin } from "lucide-react"; + +export default function AboutPage() { + return ( + + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + +
+ ); +} \ No newline at end of file diff --git a/src/app/admin/page.tsx b/src/app/admin/page.tsx new file mode 100644 index 0000000..2baaf1f --- /dev/null +++ b/src/app/admin/page.tsx @@ -0,0 +1,373 @@ +"use client"; + +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import { useState } from "react"; +import { LayoutDashboard, Menu, ShoppingCart, BarChart3, LogOut } from "lucide-react"; + +interface MenuItem { + id: string; + name: string; + description: string; + price: string; + category: string; + available: boolean; +} + +interface Order { + id: string; + customerName: string; + items: string; + status: string; + totalAmount: string; + timestamp: string; +} + +const initialMenuItems: MenuItem[] = [ + { + id: "1", name: "Biryani Special", description: "Fragrant rice with tender meat", price: "450", category: "Main Course", available: true + }, + { + id: "2", name: "Seekh Kebab", description: "Spiced minced meat kebab", price: "350", category: "Appetizers", available: true + }, + { + id: "3", name: "Chicken Karahi", description: "Spicy chicken with peppers and tomatoes", price: "400", category: "Main Course", available: false + } +]; + +const initialOrders: Order[] = [ + { + id: "ORD001", customerName: "Ahmed Khan", items: "Biryani x2, Seekh Kebab x3", status: "Completed", totalAmount: "1250", timestamp: "2025-01-15 14:30" + }, + { + id: "ORD002", customerName: "Fatima Hassan", items: "Chicken Karahi x1, Naan x2", status: "In Progress", totalAmount: "550", timestamp: "2025-01-15 14:45" + }, + { + id: "ORD003", customerName: "Muhammad Ali", items: "Biryani x1", status: "Pending", totalAmount: "450", timestamp: "2025-01-15 15:00" + } +]; + +export default function AdminPanel() { + const [activeTab, setActiveTab] = useState<"dashboard" | "menu" | "orders">("dashboard"); + const [menuItems, setMenuItems] = useState(initialMenuItems); + const [orders, setOrders] = useState(initialOrders); + const [selectedMenuItem, setSelectedMenuItem] = useState(null); + const [editForm, setEditForm] = useState>({}); + const [showForm, setShowForm] = useState(false); + + const toggleItemAvailability = (id: string) => { + setMenuItems(menuItems.map(item => + item.id === id ? { ...item, available: !item.available } : item + )); + }; + + const handleEditItem = (item: MenuItem) => { + setSelectedMenuItem(item); + setEditForm(item); + setShowForm(true); + }; + + const handleSaveItem = () => { + if (selectedMenuItem) { + setMenuItems(menuItems.map(item => + item.id === selectedMenuItem.id ? { ...item, ...editForm } : item + )); + } + setShowForm(false); + setSelectedMenuItem(null); + setEditForm({}); + }; + + const handleAddItem = () => { + const newItem: MenuItem = { + id: String(menuItems.length + 1), + name: editForm.name || "", description: editForm.description || "", price: editForm.price || "", category: editForm.category || "", available: true + }; + setMenuItems([...menuItems, newItem]); + setShowForm(false); + setEditForm({}); + }; + + const updateOrderStatus = (id: string, newStatus: string) => { + setOrders(orders.map(order => + order.id === id ? { ...order, status: newStatus } : order + )); + }; + + return ( + +
+ {/* Header */} +
+
+
+ +

Baidar G Restaurant Admin

+
+ +
+
+ + {/* Navigation Tabs */} +
+
+ + + +
+
+ + {/* Main Content */} +
+ {/* Dashboard Tab */} + {activeTab === "dashboard" && ( +
+

Dashboard Overview

+
+
+

Total Orders Today

+

{orders.length}

+

Active and completed

+
+
+

Menu Items

+

{menuItems.length}

+

{menuItems.filter(i => i.available).length} available

+
+
+

Total Revenue

+

PKR {orders.reduce((sum, o) => sum + parseInt(o.totalAmount), 0).toLocaleString()}

+

Today's earnings

+
+
+
+

Recent Orders

+
+ {orders.map(order => ( +
+
+

{order.customerName}

+

{order.items}

+

{order.timestamp}

+
+
+ + {order.status} + +

PKR {order.totalAmount}

+
+
+ ))} +
+
+
+ )} + + {/* Menu Management Tab */} + {activeTab === "menu" && ( +
+
+

Menu Management

+ +
+ + {/* Add/Edit Form */} + {showForm && ( +
+

{selectedMenuItem ? "Edit Item" : "Add New Item"}

+
+ setEditForm({ ...editForm, name: e.target.value })} + className="bg-background border border-accent rounded px-3 py-2 text-foreground placeholder:text-foreground/50" + /> + setEditForm({ ...editForm, price: e.target.value })} + className="bg-background border border-accent rounded px-3 py-2 text-foreground placeholder:text-foreground/50" + /> + + setEditForm({ ...editForm, description: e.target.value })} + className="bg-background border border-accent rounded px-3 py-2 text-foreground placeholder:text-foreground/50 md:col-span-2" + /> +
+
+ + +
+
+ )} + + {/* Menu Items List */} +
+ {menuItems.map(item => ( +
+
+
+

{item.name}

+

{item.category}

+
+ + {item.available ? "Available" : "Unavailable"} + +
+

{item.description}

+
+

PKR {item.price}

+
+ + +
+
+
+ ))} +
+
+ )} + + {/* Order Management Tab */} + {activeTab === "orders" && ( +
+

Order Management

+
+ {orders.map(order => ( +
+
+
+

{order.id}

+

{order.customerName}

+
+ + {order.status} + +
+

{order.items}

+
+
+

{order.timestamp}

+

PKR {order.totalAmount}

+
+ +
+
+ ))} +
+
+ )} +
+
+
+ ); +} diff --git a/src/app/contact/page.tsx b/src/app/contact/page.tsx new file mode 100644 index 0000000..694bac3 --- /dev/null +++ b/src/app/contact/page.tsx @@ -0,0 +1,90 @@ +"use client"; + +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered'; +import HeroBillboard from '@/components/sections/hero/HeroBillboard'; +import ContactSplit from '@/components/sections/contact/ContactSplit'; +import FooterCard from '@/components/sections/footer/FooterCard'; +import { Phone, MessageCircle, MapPin, Mail } from "lucide-react"; + +export default function ContactPage() { + return ( + + + +
+ +
+ +
+ console.log('Subscribed with email:', email)} + /> +
+ + +
+ ); +} diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 04e2367..b5b19d0 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,62 +1,33 @@ import type { Metadata } from "next"; -import { Manrope } from "next/font/google"; -import { DM_Sans } from "next/font/google"; -import { Halant } from "next/font/google"; -import { Inter } from "next/font/google"; +import { Geist, Geist_Mono } from "next/font/google"; import "./globals.css"; -import { ServiceWrapper } from "@/components/ServiceWrapper"; -import Tag from "@/tag/Tag"; +import { ServiceWrapper } from "@/providers/serviceWrapper/ServiceWrapper"; +import { Tag } from "@/utils/tag"; -const manrope = Manrope({ - variable: "--font-manrope", subsets: ["latin"], +const geist = Geist({ + variable: "--font-geist-sans", subsets: ["latin"], }); -const dmSans = DM_Sans({ - variable: "--font-dm-sans", subsets: ["latin"], -}); - -const halant = Halant({ - variable: "--font-halant", subsets: ["latin"], - weight: ["300", "400", "500", "600", "700"], -}); - -const inter = Inter({ - variable: "--font-inter", subsets: ["latin"], +const geistMono = Geist_Mono({ + variable: "--font-geist-mono", subsets: ["latin"], }); export const metadata: Metadata = { - title: "OBAID Nursery Farm Baloo | Premium Plants & Fruit Trees", description: "High-quality plants, persimmon trees, and fruit saplings in Nowshera. Trusted by farmers and plant lovers. ⭐4.9 rated. Call +92 313 9554161", keywords: "plant nursery Nowshera, fruit trees Pakistan, persimmon plants, nursery farm Peshawar, plants Baloo, garden plants KPK", metadataBase: new URL("https://obaidnursery.com"), - alternates: { - canonical: "https://obaidnursery.com" - }, - openGraph: { - title: "OBAID Nursery Farm Baloo | Premium Plants & Fruit Trees", description: "High-quality plants, persimmon trees, and fruit saplings in Nowshera. Trusted by farmers and plant lovers.", url: "https://obaidnursery.com", siteName: "OBAID Nursery Farm", type: "website", images: [{ - url: "http://img.b2bpic.net/free-photo/beautiful-view-field-covered-green-grass-captured-canggu-bali_181624-7666.jpg", alt: "OBAID Nursery Farm Premium Plants" - }] - }, - twitter: { - card: "summary_large_image", title: "OBAID Nursery Farm Baloo | Premium Plants & Fruit Trees", description: "High-quality plants and fruit trees. Call +92 313 9554161", images: ["http://img.b2bpic.net/free-photo/beautiful-view-field-covered-green-grass-captured-canggu-bali_181624-7666.jpg"] - }, - robots: { - index: true, - follow: true - } -}; + title: "Baidar G Restaurant Admin Panel", description: "Admin dashboard for managing restaurant menu, orders, and operations"}; export default function RootLayout({ children, -}: Readonly<{ +}: { children: React.ReactNode; -}>) { +}) { return ( - - + + {children} - + +