8 Commits

Author SHA1 Message Date
46d248b354 Update src/app/book-appointment/page.tsx 2026-04-28 01:59:02 +00:00
ef71150c09 Add src/app/book-appointment/page.tsx 2026-04-28 01:58:31 +00:00
ed9424958d Update src/app/admin/page.tsx 2026-04-28 01:58:31 +00:00
d3f6e58d1d Merge version_3 into main
Merge version_3 into main
2026-04-28 01:56:59 +00:00
5a1973550d Update src/app/page.tsx 2026-04-28 01:56:55 +00:00
71c91f6391 Add src/app/admin/page.tsx 2026-04-28 01:56:55 +00:00
5231631713 Merge version_2 into main
Merge version_2 into main
2026-04-28 01:55:43 +00:00
f2a584ca61 Merge version_2 into main
Merge version_2 into main
2026-04-28 01:55:16 +00:00
3 changed files with 145 additions and 2 deletions

71
src/app/admin/page.tsx Normal file
View File

@@ -0,0 +1,71 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import FooterBase from '@/components/sections/footer/FooterBase';
import { useState } from 'react';
export default function AdminDashboardPage() {
const [appointments, setAppointments] = useState([
{ id: "1", client: "John Doe", service: "Precision Fade", time: "10:00 AM", status: "Confirmed" },
{ id: "2", client: "Mike Smith", service: "Hot Towel Shave", time: "11:30 AM", status: "Confirmed" },
]);
const handleCancel = (id: string) => {
setAppointments(appointments.filter(app => app.id !== id));
};
return (
<ThemeProvider
defaultButtonVariant="hover-magnetic"
defaultTextAnimation="background-highlight"
borderRadius="rounded"
contentWidth="medium"
sizing="medium"
background="floatingGradient"
cardStyle="gradient-bordered"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="solid"
headingFontWeight="normal"
>
<ReactLenis root>
<NavbarStyleFullscreen
navItems={[{ name: "Home", id: "/" }, { name: "Admin", id: "/admin" }]}
brandName="Elite Grooming"
/>
<main className="pt-32 pb-20 px-6 max-w-5xl mx-auto min-h-screen">
<h1 className="text-4xl font-bold mb-8">Appointment Management</h1>
<div className="bg-card p-6 rounded-lg border shadow-sm">
<table className="w-full text-left">
<thead>
<tr className="border-b">
<th className="pb-4">Client</th>
<th className="pb-4">Service</th>
<th className="pb-4">Time</th>
<th className="pb-4">Actions</th>
</tr>
</thead>
<tbody>
{appointments.map((app) => (
<tr key={app.id} className="border-b last:border-0">
<td className="py-4">{app.client}</td>
<td className="py-4">{app.service}</td>
<td className="py-4">{app.time}</td>
<td className="py-4">
<button onClick={() => handleCancel(app.id)} className="text-red-500 hover:underline">Cancel</button>
</td>
</tr>
))}
</tbody>
</table>
</div>
</main>
<FooterBase
logoText="Elite Grooming"
columns={[{ title: "Navigation", items: [{ label: "Home", href: "/" }] }]}
/>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -0,0 +1,71 @@
"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 FooterBase from '@/components/sections/footer/FooterBase';
export default function BookAppointmentPage() {
return (
<ThemeProvider
defaultButtonVariant="hover-magnetic"
defaultTextAnimation="background-highlight"
borderRadius="rounded"
contentWidth="smallMedium"
sizing="large"
background="floatingGradient"
cardStyle="gradient-bordered"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="solid"
headingFontWeight="normal"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarStyleFullscreen
navItems={[
{ name: "Home", id: "/" },
{ name: "Services", id: "/" },
{ name: "Gallery", id: "/" },
{ name: "Contact", id: "/" },
{ name: "Book", id: "/book-appointment" },
{ name: "Admin", id: "/admin" }
]}
brandName="Elite Grooming"
/>
</div>
<div id="booking" data-section="booking" className="py-24">
<ContactSplitForm
title="Schedule Your Appointment"
description="Select your preferred service and time. Our team will confirm your booking shortly."
inputs={[
{ name: "fullName", type: "text", placeholder: "Full Name", required: true },
{ name: "email", type: "email", placeholder: "Email Address", required: true },
{ name: "date", type: "date", placeholder: "Appointment Date", required: true }
]}
multiSelect={{
name: "service",
label: "Choose Service",
options: ["Precision Fade", "Beard Sculpt", "Hot Towel Shave"]
}}
textarea={{ name: "notes", placeholder: "Any special instructions or requests?" }}
buttonText="Confirm Booking"
onSubmit={(data) => console.log("Booking submitted:", data)}
useInvertedBackground={false}
/>
</div>
<div id="footer" data-section="footer">
<FooterBase
logoText="Elite Grooming"
columns={[
{ title: "Navigation", items: [{ label: "Home", href: "/" }, { label: "Services", href: "/" }] },
{ title: "Support", items: [{ label: "FAQ", href: "/" }, { label: "Book", href: "/book-appointment" }] }
]}
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -34,7 +34,8 @@ export default function LandingPage() {
{ name: "Home", id: "hero" },
{ name: "Services", id: "services" },
{ name: "Gallery", id: "gallery" },
{ name: "Contact", id: "contact" }
{ name: "Contact", id: "contact" },
{ name: "Admin", id: "/admin" }
]}
brandName="Elite Grooming"
/>
@@ -155,4 +156,4 @@ export default function LandingPage() {
</ReactLenis>
</ThemeProvider>
);
}
}