14 Commits

Author SHA1 Message Date
704f308cac Update src/app/admin/page.tsx 2026-04-28 01:59:49 +00:00
1f70f9c349 Merge version_4 into main
Merge version_4 into main
2026-04-28 01:59:05 +00:00
46d248b354 Update src/app/book-appointment/page.tsx 2026-04-28 01:59:02 +00:00
7c685efcb0 Merge version_4 into main
Merge version_4 into main
2026-04-28 01:58:34 +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
4fe3d8494b Update src/app/page.tsx 2026-04-28 01:55:40 +00:00
f2a584ca61 Merge version_2 into main
Merge version_2 into main
2026-04-28 01:55:16 +00:00
9811e4d812 Update src/app/page.tsx 2026-04-28 01:55:10 +00:00
964be13bba Merge version_1 into main
Merge version_1 into main
2026-04-28 01:51:01 +00:00
3 changed files with 160 additions and 45 deletions

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

@@ -0,0 +1,59 @@
"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 [activeTab, setActiveTab] = useState('appointments');
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: "Appointments", id: "appointments" },
{ name: "Schedule", id: "schedule" },
{ name: "Services", id: "services" },
{ name: "Customers", id: "customers" }
]}
brandName="Admin Panel"
/>
</div>
<main className="pt-32 pb-20 px-6 min-h-screen container mx-auto">
<h1 className="text-4xl font-bold mb-8">Dashboard: {activeTab.charAt(0).toUpperCase() + activeTab.slice(1)}</h1>
<div className="grid gap-8">
<div className="p-8 bg-card rounded-xl border border-border shadow-sm">
<p className="text-muted-foreground">Admin management tools for {activeTab} will be implemented here.</p>
</div>
</div>
</main>
<div id="footer" data-section="footer">
<FooterBase
logoText="Elite Grooming"
columns={[
{ title: "Navigation", items: [{ label: "Home", href: "/" }, { label: "Dashboard", href: "/admin" }] }
]}
/>
</div>
</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

@@ -3,14 +3,14 @@
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import ContactCenter from '@/components/sections/contact/ContactCenter';
import FaqDouble from '@/components/sections/faq/FaqDouble';
import FaqSplitText from '@/components/sections/faq/FaqSplitText';
import FeatureCardSixteen from '@/components/sections/feature/FeatureCardSixteen';
import FooterBaseCard from '@/components/sections/footer/FooterBaseCard';
import FooterBase from '@/components/sections/footer/FooterBase';
import HeroSplitDualMedia from '@/components/sections/hero/HeroSplitDualMedia';
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import PricingCardThree from '@/components/sections/pricing/PricingCardThree';
import TeamCardOne from '@/components/sections/team/TeamCardOne';
import TestimonialCardTwo from '@/components/sections/testimonial/TestimonialCardTwo';
import TeamCardTwo from '@/components/sections/team/TeamCardTwo';
import TestimonialCardTen from '@/components/sections/testimonial/TestimonialCardTen';
import TextAbout from '@/components/sections/about/TextAbout';
export default function LandingPage() {
@@ -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"
/>
@@ -71,18 +72,9 @@ export default function LandingPage() {
textboxLayout="split"
useInvertedBackground={false}
plans={[
{
id: "fade", price: "$35", name: "Precision Fade", features: ["Consultation", "Skin fade", "Hot towel finish"],
buttons: [{ text: "Book Now", href: "#contact" }]
},
{
id: "beard", price: "$25", name: "Beard Sculpt", features: ["Beard trim", "Lineup", "Conditioning balm"],
buttons: [{ text: "Book Now", href: "#contact" }]
},
{
id: "shave", price: "$45", name: "Hot Towel Shave", features: ["Steam treatment", "Straight razor shave", "Aftershave balm"],
buttons: [{ text: "Book Now", href: "#contact" }]
}
{ id: "fade", price: "$35", name: "Precision Fade", features: ["Consultation", "Skin fade", "Hot towel finish"], buttons: [{ text: "Book Now", href: "#contact" }] },
{ id: "beard", price: "$25", name: "Beard Sculpt", features: ["Beard trim", "Lineup", "Conditioning balm"], buttons: [{ text: "Book Now", href: "#contact" }] },
{ id: "shave", price: "$45", name: "Hot Towel Shave", features: ["Steam treatment", "Straight razor shave", "Aftershave balm"], buttons: [{ text: "Book Now", href: "#contact" }] }
]}
title="Our Professional Services"
description="Expert grooming to keep you sharp."
@@ -102,50 +94,43 @@ export default function LandingPage() {
</div>
<div id="testimonials" data-section="testimonials">
<TestimonialCardTwo
animationType="slide-up"
textboxLayout="split"
useInvertedBackground={false}
<TestimonialCardTen
title="Client Stories"
description="Read what our happy clients say about our grooming services."
textboxLayout="split"
useInvertedBackground={false}
testimonials={[
{ id: "1", name: "John Doe", role: "Regular Client", testimonial: "Best fade I've ever had, hands down.", imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-young-stately-ginger-fellow-stylish-navy-t-shirt-smiling-showing-ok-sign-looking-camera-while-posing-blue-studio-background-human-facial-expressions-sincer_639032-2122.jpg" },
{ id: "2", name: "Mike Smith", role: "Beard Enthusiast", testimonial: "Exceptional service and great conversation.", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-hair-salon_23-2150665422.jpg" },
{ id: "3", name: "David W.", role: "Business Professional", testimonial: "Clean shave was incredibly relaxing.", imageSrc: "http://img.b2bpic.net/free-photo/confident-handsome-young-man-without-shirt_1262-4882.jpg" },
{ id: "4", name: "Alex R.", role: "Frequent Visitor", testimonial: "I never go anywhere else.", imageSrc: "http://img.b2bpic.net/free-photo/side-view-man-covering-his-mouth_23-2149438540.jpg" },
{ id: "5", name: "Chris B.", role: "New Client", testimonial: "High level of skill and attention.", imageSrc: "http://img.b2bpic.net/free-photo/positive-blond-bearded-male-dressed-plaid-shirt-denim-jacket-posing-grey-vignette-background_613910-11758.jpg" }
{ id: "1", title: "Excellent Service", quote: "Best fade I've ever had, hands down.", name: "John Doe", role: "Regular Client", imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-young-stately-ginger-fellow-stylish-navy-t-shirt-smiling-showing-ok-sign-looking-camera-while-posing-blue-studio-background-human-facial-expressions-sincer_639032-2122.jpg" },
{ id: "2", title: "Great Atmosphere", quote: "Exceptional service and great conversation.", name: "Mike Smith", role: "Beard Enthusiast", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-hair-salon_23-2150665422.jpg" }
]}
/>
</div>
<div id="team" data-section="team">
<TeamCardOne
<TeamCardTwo
animationType="slide-up"
textboxLayout="default"
gridVariant="three-columns-all-equal-width"
textboxLayout="split"
gridVariant="uniform-all-items-equal"
title="Master Barber"
description="Our dedicated master barber ensures excellence in every service."
useInvertedBackground={false}
title="Meet Your Barbers"
description="Meet the professionals behind the magic."
members={[
{ id: "t1", name: "Marcus", role: "Head Barber", imageSrc: "http://img.b2bpic.net/free-photo/portrait-stylish-male-who-himself-shaving-while-sitting-barber-chair-hairdressing-salon_613910-18649.jpg" },
{ id: "t2", name: "Jason", role: "Master Stylist", imageSrc: "http://img.b2bpic.net/free-photo/beautiful-girl-with-colorful-hair-black-apron-white-t-shirt-holding-handmade-little-bowl-dreamily-looking-camera-pottery-studio-isolated_574295-1028.jpg" },
{ id: "t3", name: "Leo", role: "Junior Barber", imageSrc: "http://img.b2bpic.net/free-photo/latino-hair-salon-owner-preparing-clients_23-2150286080.jpg" }
{ id: "t1", name: "Marcus", role: "Head Barber", description: "With over 10 years of experience, Marcus specializes in classic shaves and modern precision cuts.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-stylish-male-who-himself-shaving-while-sitting-barber-chair-hairdressing-salon_613910-18649.jpg" }
]}
/>
</div>
<div id="faq" data-section="faq">
<FaqDouble
textboxLayout="default"
useInvertedBackground={false}
<FaqSplitText
sideTitle="Common Questions"
sideDescription="Answers to your most frequent inquiries."
faqs={[
{ id: "f1", title: "Do you accept walk-ins?", content: "We are appointment-based to ensure quality service for every client." },
{ id: "f2", title: "What payment methods are accepted?", content: "We accept cash and all major credit cards." },
{ id: "f3", title: "How long are appointments?", content: "Standard haircuts are 45 minutes; shaves are 30 minutes." }
{ id: "f2", title: "What is your pricing policy?", content: "Pricing is transparent and based on the complexity of the requested style." },
{ id: "f3", title: "How early should I arrive?", content: "Please arrive 5 minutes before your scheduled slot." }
]}
title="Common Questions"
faqsAnimation="slide-up"
description="Answers to your most frequent inquiries."
useInvertedBackground={false}
/>
</div>
@@ -160,15 +145,15 @@ export default function LandingPage() {
</div>
<div id="footer" data-section="footer">
<FooterBaseCard
<FooterBase
logoText="Elite Grooming"
columns={[
{ title: "Menu", items: [{ label: "Services", href: "#services" }, { label: "Gallery", href: "#gallery" }] },
{ title: "Company", items: [{ label: "About", href: "#about" }, { label: "Contact", href: "#contact" }] }
{ title: "Navigation", items: [{ label: "Home", href: "#hero" }, { label: "Services", href: "#services" }] },
{ title: "Support", items: [{ label: "FAQ", href: "#faq" }, { label: "Contact", href: "#contact" }] }
]}
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}
}