Merge version_4 into main #8
55
src/app/admin/page.tsx
Normal file
55
src/app/admin/page.tsx
Normal file
@@ -0,0 +1,55 @@
|
||||
"use client";
|
||||
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
|
||||
import { LayoutDashboard, Utensils, ShoppingCart, BarChart3, Settings } from "lucide-react";
|
||||
|
||||
export default function AdminDashboardPage() {
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="text-stagger"
|
||||
defaultTextAnimation="reveal-blur"
|
||||
borderRadius="rounded"
|
||||
contentWidth="smallMedium"
|
||||
sizing="mediumLargeSizeMediumTitles"
|
||||
background="grid"
|
||||
cardStyle="glass-elevated"
|
||||
primaryButtonStyle="shadow"
|
||||
secondaryButtonStyle="solid"
|
||||
headingFontWeight="bold"
|
||||
>
|
||||
<div className="min-h-screen">
|
||||
<NavbarStyleFullscreen
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Admin Dashboard", id: "/admin" },
|
||||
{ name: "Menu", id: "/menu" },
|
||||
{ name: "About", id: "/about" },
|
||||
{ name: "Gallery", id: "/gallery" },
|
||||
{ name: "Contact", id: "/contact" },
|
||||
{ name: "Order Online", id: "/order" },
|
||||
]}
|
||||
brandName="Admin Portal"
|
||||
/>
|
||||
|
||||
<main className="pt-32 pb-20 px-6 max-w-7xl mx-auto">
|
||||
<h1 className="text-4xl font-bold mb-8">Service Management Dashboard</h1>
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
|
||||
{[
|
||||
{ title: "Menu Management", icon: Utensils, desc: "Edit, add, or delete menu items." },
|
||||
{ title: "Services", icon: Settings, desc: "Manage operational services." },
|
||||
{ title: "Orders", icon: ShoppingCart, desc: "View and process customer orders." },
|
||||
{ title: "Analytics", icon: BarChart3, desc: "View site performance metrics." },
|
||||
].map((item, idx) => (
|
||||
<div key={idx} className="p-6 rounded-xl border border-white/10 bg-white/5 hover:bg-white/10 transition">
|
||||
<item.icon className="w-10 h-10 mb-4 text-primary" />
|
||||
<h2 className="text-xl font-semibold mb-2">{item.title}</h2>
|
||||
<p className="text-sm opacity-70">{item.desc}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
@@ -4,58 +4,29 @@ import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import ReactLenis from "lenis/react";
|
||||
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
|
||||
import FooterSimple from '@/components/sections/footer/FooterSimple';
|
||||
import ProductCardTwo from '@/components/sections/product/ProductCardTwo';
|
||||
import SplitAbout from '@/components/sections/about/SplitAbout';
|
||||
|
||||
export default function GalleryPage() {
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="text-stagger"
|
||||
defaultTextAnimation="entrance-slide"
|
||||
background="circleGradient"
|
||||
cardStyle="glass-elevated"
|
||||
primaryButtonStyle="gradient"
|
||||
secondaryButtonStyle="glass"
|
||||
headingFontWeight="normal"
|
||||
borderRadius="rounded"
|
||||
contentWidth="smallMedium"
|
||||
sizing="mediumLargeSizeMediumTitles"
|
||||
>
|
||||
<ThemeProvider>
|
||||
<ReactLenis root>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarStyleFullscreen
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "About", id: "/about" },
|
||||
{ name: "Gallery", id: "/gallery" },
|
||||
{ name: "Contact", id: "/contact" },
|
||||
]}
|
||||
brandName="Lolly’s Food Joint"
|
||||
/>
|
||||
</div>
|
||||
<ProductCardTwo
|
||||
title="Our Gallery"
|
||||
description="A collection of our favorite dishes and moments at the restaurant."
|
||||
gridVariant="four-items-2x2-equal-grid"
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={false}
|
||||
products={[
|
||||
{ id: "g1", brand: "Food", name: "Signature Burger", price: "", rating: 5, reviewCount: "", imageSrc: "http://img.b2bpic.net/free-photo/home-made-tasty-burgers_628469-332.jpg?_wi=1" },
|
||||
{ id: "g2", brand: "Drinks", name: "Fresh Shakes", price: "", rating: 5, reviewCount: "", imageSrc: "http://img.b2bpic.net/free-photo/cacao-milkshake-topped-with-colourful-sprinkles-ice-cream-oreo_140725-8264.jpg?_wi=1" },
|
||||
{ id: "g3", brand: "Food", name: "Fresh Wraps", price: "", rating: 5, reviewCount: "", imageSrc: "http://img.b2bpic.net/free-photo/fast-fashion-concept-with-materials-textiles-disguised-as-sushi-rolls_23-2150771195.jpg?_wi=1" },
|
||||
{ id: "g4", brand: "Food", name: "Side Bites", price: "", rating: 5, reviewCount: "", imageSrc: "http://img.b2bpic.net/free-photo/delicious-creamy-melted-cheese_23-2149332823.jpg?_wi=1" },
|
||||
]}
|
||||
<NavbarStyleFullscreen
|
||||
navItems={[{ name: "Home", id: "/" }, { name: "Menu", id: "/menu" }, { name: "Gallery", id: "/gallery" }, { name: "Testimonials", id: "/testimonials" }, { name: "Reservations", id: "/reservations" }, { name: "Contact", id: "/contact" }]}
|
||||
brandName="Lolly’s Food Joint"
|
||||
/>
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterSimple
|
||||
columns={[
|
||||
{ title: "Company", items: [{ label: "About Us", href: "/about" }, { label: "Gallery", href: "/gallery" }] },
|
||||
{ title: "Order", items: [{ label: "Contact Us", href: "/contact" }] },
|
||||
]}
|
||||
bottomLeftText="© 2024 Lolly's Food Joint"
|
||||
bottomRightText="All rights reserved."
|
||||
/>
|
||||
<div className="pt-32 pb-20">
|
||||
<SplitAbout
|
||||
title="Our Food Gallery"
|
||||
description="A visual journey through our kitchen's best creations."
|
||||
imageSrc="http://img.b2bpic.net/free-photo/man-preparing-salad-with-fresh-vegetables-wooden-table-cooking-tasty-healthy-food-black-background-vegetarian-food-healthy-cooking-concept_639032-421.jpg"
|
||||
mediaAnimation="slide-up"
|
||||
textboxLayout="split"
|
||||
/>
|
||||
</div>
|
||||
<FooterSimple
|
||||
columns={[{ title: "Links", items: [{ label: "Home", href: "/" }] }]}
|
||||
bottomLeftText="© 2024 Lolly's Food Joint"
|
||||
/>
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
|
||||
@@ -3,85 +3,34 @@
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import ReactLenis from "lenis/react";
|
||||
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
|
||||
import ProductCardTwo from '@/components/sections/product/ProductCardTwo';
|
||||
import FooterSimple from '@/components/sections/footer/FooterSimple';
|
||||
import { useState } from "react";
|
||||
|
||||
const categories = [
|
||||
{ id: "burgers", name: "Burgers" },
|
||||
{ id: "street-food", name: "Street Food" },
|
||||
{ id: "wraps", name: "Wraps" },
|
||||
{ id: "fries", name: "Fries & Sides" },
|
||||
{ id: "drinks", name: "Drinks" },
|
||||
{ id: "milkshakes", name: "Milkshakes" },
|
||||
];
|
||||
|
||||
export default function MenuPage() {
|
||||
const [activeCategory, setActiveCategory] = useState("burgers");
|
||||
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="text-stagger"
|
||||
defaultTextAnimation="entrance-slide"
|
||||
background="circleGradient"
|
||||
cardStyle="glass-elevated"
|
||||
primaryButtonStyle="gradient"
|
||||
secondaryButtonStyle="glass"
|
||||
headingFontWeight="normal"
|
||||
borderRadius="rounded"
|
||||
contentWidth="smallMedium"
|
||||
sizing="mediumLargeSizeMediumTitles"
|
||||
>
|
||||
<ThemeProvider>
|
||||
<ReactLenis root>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarStyleFullscreen
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Menu", id: "/menu" },
|
||||
{ name: "About", id: "/about" },
|
||||
{ name: "Gallery", id: "/gallery" },
|
||||
{ name: "Contact", id: "/contact" },
|
||||
{ name: "Order Online", id: "/order" },
|
||||
]}
|
||||
brandName="Lolly’s Food Joint"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<main className="pt-32 pb-20 px-6 max-w-4xl mx-auto">
|
||||
<h1 className="text-4xl md:text-5xl font-bold mb-10 text-center">Our Menu</h1>
|
||||
|
||||
<div className="flex flex-wrap gap-2 justify-center mb-12">
|
||||
{categories.map((cat) => (
|
||||
<button
|
||||
key={cat.id}
|
||||
onClick={() => setActiveCategory(cat.id)}
|
||||
className={`px-6 py-2 rounded-full transition ${activeCategory === cat.id ? "bg-primary text-white" : "bg-card hover:bg-muted"}`}
|
||||
>
|
||||
{cat.name}
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
|
||||
<div className="grid gap-6 md:grid-cols-2">
|
||||
{[1, 2, 3, 4, 5, 6].map((item) => (
|
||||
<div key={item} className="p-6 rounded-xl border border-border bg-card shadow-sm">
|
||||
<h3 className="text-xl font-bold">Signature Item {item}</h3>
|
||||
<p className="text-muted-foreground mt-2">Delicious description of our amazing {categories.find(c => c.id === activeCategory)?.name || "dish"}.</p>
|
||||
<p className="font-bold mt-4">$9.99</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterSimple
|
||||
columns={[
|
||||
{ title: "Company", items: [{ label: "About Us", href: "/about" }, { label: "Menu", href: "/menu" }] },
|
||||
{ title: "Order", items: [{ label: "Order Online", href: "/order" }, { label: "Contact Us", href: "/contact" }] },
|
||||
]}
|
||||
bottomLeftText="© 2024 Lolly's Food Joint"
|
||||
bottomRightText="All rights reserved."
|
||||
/>
|
||||
<NavbarStyleFullscreen
|
||||
navItems={[{ name: "Home", id: "/" }, { name: "Menu", id: "/menu" }, { name: "Gallery", id: "/gallery" }, { name: "Testimonials", id: "/testimonials" }, { name: "Reservations", id: "/reservations" }, { name: "Contact", id: "/contact" }]}
|
||||
brandName="Lolly’s Food Joint"
|
||||
/>
|
||||
<div className="pt-32 pb-20">
|
||||
<ProductCardTwo
|
||||
title="Full Menu"
|
||||
description="Explore our complete selection of fresh, signature dishes."
|
||||
gridVariant="four-items-2x2-equal-grid"
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
products={[
|
||||
{ id: "m1", brand: "Burgers", name: "Signature Burger", price: "$12.99", imageSrc: "http://img.b2bpic.net/free-photo/home-made-tasty-burgers_628469-332.jpg" },
|
||||
{ id: "m2", brand: "Sides", name: "Hand-cut Fries", price: "$5.99", imageSrc: "http://img.b2bpic.net/free-photo/delicious-creamy-melted-cheese_23-2149332823.jpg" }
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
<FooterSimple
|
||||
columns={[{ title: "Links", items: [{ label: "Home", href: "/" }] }]}
|
||||
bottomLeftText="© 2024 Lolly's Food Joint"
|
||||
/>
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
|
||||
@@ -95,10 +95,10 @@ export default function LandingPage() {
|
||||
gridVariant="four-items-2x2-equal-grid"
|
||||
useInvertedBackground={true}
|
||||
products={[
|
||||
{ id: "p1", brand: "Burgers", name: "Lolly's Classic Burger", price: "$12.99", rating: 5, reviewCount: "120", imageSrc: "http://img.b2bpic.net/free-photo/home-made-tasty-burgers_628469-332.jpg", onProductClick: () => window.location.href = '/order' },
|
||||
{ id: "p2", brand: "Street Food", name: "Crispy Fries & Sauce", price: "$5.99", rating: 4, reviewCount: "85", imageSrc: "http://img.b2bpic.net/free-photo/delicious-creamy-melted-cheese_23-2149332823.jpg", onProductClick: () => window.location.href = '/order' },
|
||||
{ id: "p3", brand: "Wraps", name: "Signature Spicy Wrap", price: "$9.49", rating: 5, reviewCount: "95", imageSrc: "http://img.b2bpic.net/free-photo/fast-fashion-concept-with-materials-textiles-disguised-as-sushi-rolls_23-2150771195.jpg", onProductClick: () => window.location.href = '/order' },
|
||||
{ id: "p4", brand: "Drinks", name: "Creamy Milkshake", price: "$6.99", rating: 5, reviewCount: "210", imageSrc: "http://img.b2bpic.net/free-photo/cacao-milkshake-topped-with-colourful-sprinkles-ice-cream-oreo_140725-8264.jpg", onProductClick: () => window.location.href = '/order' },
|
||||
{ id: "p1", brand: "Burgers", name: "Lolly's Classic Burger", price: "R 129.99", rating: 5, reviewCount: "120", imageSrc: "http://img.b2bpic.net/free-photo/home-made-tasty-burgers_628469-332.jpg", onProductClick: () => window.location.href = '/order' },
|
||||
{ id: "p2", brand: "Street Food", name: "Crispy Fries & Sauce", price: "R 59.99", rating: 4, reviewCount: "85", imageSrc: "http://img.b2bpic.net/free-photo/delicious-creamy-melted-cheese_23-2149332823.jpg", onProductClick: () => window.location.href = '/order' },
|
||||
{ id: "p3", brand: "Wraps", name: "Signature Spicy Wrap", price: "R 94.99", rating: 5, reviewCount: "95", imageSrc: "http://img.b2bpic.net/free-photo/fast-fashion-concept-with-materials-textiles-disguised-as-sushi-rolls_23-2150771195.jpg", onProductClick: () => window.location.href = '/order' },
|
||||
{ id: "p4", brand: "Drinks", name: "Creamy Milkshake", price: "R 69.99", rating: 5, reviewCount: "210", imageSrc: "http://img.b2bpic.net/free-photo/cacao-milkshake-topped-with-colourful-sprinkles-ice-cream-oreo_140725-8264.jpg", onProductClick: () => window.location.href = '/order' },
|
||||
]}
|
||||
title="Featured Favourites"
|
||||
description="Our signature dishes you must try today."
|
||||
|
||||
32
src/app/reservations/page.tsx
Normal file
32
src/app/reservations/page.tsx
Normal file
@@ -0,0 +1,32 @@
|
||||
"use client";
|
||||
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import ReactLenis from "lenis/react";
|
||||
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
|
||||
import ContactSplitForm from '@/components/sections/contact/ContactSplitForm';
|
||||
import FooterSimple from '@/components/sections/footer/FooterSimple';
|
||||
|
||||
export default function ReservationsPage() {
|
||||
return (
|
||||
<ThemeProvider>
|
||||
<ReactLenis root>
|
||||
<NavbarStyleFullscreen
|
||||
navItems={[{ name: "Home", id: "/" }, { name: "Menu", id: "/menu" }, { name: "Gallery", id: "/gallery" }, { name: "Testimonials", id: "/testimonials" }, { name: "Reservations", id: "/reservations" }, { name: "Contact", id: "/contact" }]}
|
||||
brandName="Lolly’s Food Joint"
|
||||
/>
|
||||
<div className="pt-32 pb-20">
|
||||
<ContactSplitForm
|
||||
title="Book a Table"
|
||||
description="Secure your reservation today for a premium dining experience."
|
||||
inputs={[{ name: "name", type: "text", placeholder: "Full Name" }, { name: "date", type: "date", placeholder: "Date" }]}
|
||||
useInvertedBackground={false}
|
||||
/>
|
||||
</div>
|
||||
<FooterSimple
|
||||
columns={[{ title: "Links", items: [{ label: "Home", href: "/" }] }]}
|
||||
bottomLeftText="© 2024 Lolly's Food Joint"
|
||||
/>
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
@@ -11,7 +11,7 @@ html {
|
||||
body {
|
||||
background-color: var(--background);
|
||||
color: var(--foreground);
|
||||
font-family: var(--font-raleway), sans-serif;
|
||||
font-family: var(--font-montserrat), sans-serif;
|
||||
position: relative;
|
||||
min-height: 100vh;
|
||||
overscroll-behavior: none;
|
||||
@@ -24,5 +24,5 @@ h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-family: var(--font-raleway), sans-serif;
|
||||
font-family: var(--font-montserrat), sans-serif;
|
||||
}
|
||||
|
||||
@@ -10,15 +10,15 @@
|
||||
--accent: #ffffff;
|
||||
--background-accent: #ffffff; */
|
||||
|
||||
--background: #FFF8E1;
|
||||
--card: #FFFFFF;
|
||||
--foreground: #1A1A1A;
|
||||
--background: #0a0a0a;
|
||||
--card: #1a1a1a;
|
||||
--foreground: #f5f5f5;
|
||||
--primary-cta: #B71C1C;
|
||||
--primary-cta-text: #FFFFFF;
|
||||
--secondary-cta: #FFD700;
|
||||
--secondary-cta-text: #1C1C1C;
|
||||
--accent: #B71C1C;
|
||||
--background-accent: #FFF8E1;
|
||||
--background-accent: #2a2928;
|
||||
|
||||
/* text sizing - set by ThemeProvider */
|
||||
/* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem);
|
||||
|
||||
34
src/app/testimonials/page.tsx
Normal file
34
src/app/testimonials/page.tsx
Normal file
@@ -0,0 +1,34 @@
|
||||
"use client";
|
||||
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import ReactLenis from "lenis/react";
|
||||
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
|
||||
import TestimonialCardFive from '@/components/sections/testimonial/TestimonialCardFive';
|
||||
import FooterSimple from '@/components/sections/footer/FooterSimple';
|
||||
|
||||
export default function TestimonialsPage() {
|
||||
return (
|
||||
<ThemeProvider>
|
||||
<ReactLenis root>
|
||||
<NavbarStyleFullscreen
|
||||
navItems={[{ name: "Home", id: "/" }, { name: "Menu", id: "/menu" }, { name: "Gallery", id: "/gallery" }, { name: "Testimonials", id: "/testimonials" }, { name: "Reservations", id: "/reservations" }, { name: "Contact", id: "/contact" }]}
|
||||
brandName="Lolly’s Food Joint"
|
||||
/>
|
||||
<div className="pt-32 pb-20">
|
||||
<TestimonialCardFive
|
||||
title="Customer Stories"
|
||||
description="See what our happy customers are saying about us."
|
||||
textboxLayout="default"
|
||||
testimonials={[
|
||||
{ id: "t1", name: "John Doe", date: "2024-01-01", title: "Excellent!", quote: "Best food in town!", tag: "Foodie", avatarSrc: "" }
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
<FooterSimple
|
||||
columns={[{ title: "Links", items: [{ label: "Home", href: "/" }] }]}
|
||||
bottomLeftText="© 2024 Lolly's Food Joint"
|
||||
/>
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user