Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4bd1b323bf | |||
| 3180a7f7b2 | |||
| 4245be4bd6 | |||
| 08317ac088 | |||
| add05dee75 | |||
| bf74674534 | |||
| c111f0a9c3 | |||
| 2fd036cbd2 | |||
| 9b63427693 | |||
| 1488d2e69d | |||
| e3f0a639f4 | |||
| 88fef01945 | |||
| 3713759654 |
68
src/app/booking/page.tsx
Normal file
68
src/app/booking/page.tsx
Normal file
@@ -0,0 +1,68 @@
|
||||
"use client";
|
||||
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import ReactLenis from "lenis/react";
|
||||
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
|
||||
import ContactText from '@/components/sections/contact/ContactText';
|
||||
import FooterCard from '@/components/sections/footer/FooterCard';
|
||||
import { useState } from "react";
|
||||
|
||||
export default function BookingPage() {
|
||||
const [selectedDate, setSelectedDate] = useState<Date>(new Date());
|
||||
|
||||
const getSlots = (date: Date) => {
|
||||
const day = date.getDay(); // 0 is Sunday
|
||||
const endHour = day === 0 ? 18 : 19;
|
||||
const slots = [];
|
||||
for (let hour = 8; hour < endHour; hour++) {
|
||||
slots.push(`${hour}:00`);
|
||||
}
|
||||
return slots;
|
||||
};
|
||||
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="bounce-effect"
|
||||
defaultTextAnimation="entrance-slide"
|
||||
borderRadius="rounded"
|
||||
contentWidth="smallMedium"
|
||||
sizing="mediumLargeSizeMediumTitles"
|
||||
background="noise"
|
||||
cardStyle="glass-elevated"
|
||||
primaryButtonStyle="gradient"
|
||||
secondaryButtonStyle="glass"
|
||||
headingFontWeight="extrabold"
|
||||
>
|
||||
<ReactLenis root>
|
||||
<div id="nav">
|
||||
<NavbarStyleFullscreen
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Services", id: "/#services" },
|
||||
{ name: "Team", id: "/#team" },
|
||||
{ name: "Location", id: "/#contact" },
|
||||
{ name: "Booking", id: "/booking" },
|
||||
]}
|
||||
brandName="Cut Creation Barbers"
|
||||
/>
|
||||
</div>
|
||||
<div style={{ minHeight: "60vh", padding: "8rem 2rem", textAlign: "center" }}>
|
||||
<h2 style={{ marginBottom: "2rem" }}>Select a Time Slot</h2>
|
||||
<div style={{ display: "grid", gridTemplateColumns: "repeat(auto-fill, minmax(100px, 1fr))", gap: "1rem", maxWidth: "600px", margin: "0 auto" }}>
|
||||
{getSlots(selectedDate).map((slot) => (
|
||||
<button key={slot} style={{ padding: "1rem", border: "1px solid #ccc", borderRadius: "8px", cursor: "pointer" }}>
|
||||
{slot}
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
<div id="footer">
|
||||
<FooterCard
|
||||
logoText="CUT CREATION BARBERS"
|
||||
copyrightText="© 2025 Cut Creation Barbers | New Lynn"
|
||||
/>
|
||||
</div>
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
@@ -7,7 +7,6 @@ import FeatureCardTwentyNine from '@/components/sections/feature/featureCardTwen
|
||||
import FooterCard from '@/components/sections/footer/FooterCard';
|
||||
import HeroSplitDualMedia from '@/components/sections/hero/HeroSplitDualMedia';
|
||||
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
|
||||
import PricingCardThree from '@/components/sections/pricing/PricingCardThree';
|
||||
import ProductCardFour from '@/components/sections/product/ProductCardFour';
|
||||
import SocialProofOne from '@/components/sections/socialProof/SocialProofOne';
|
||||
import TeamCardFive from '@/components/sections/team/TeamCardFive';
|
||||
@@ -31,11 +30,11 @@ export default function LandingPage() {
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarStyleFullscreen
|
||||
navItems={[
|
||||
{ name: "Home", id: "#hero" },
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Services", id: "#services" },
|
||||
{ name: "Team", id: "#team" },
|
||||
{ name: "Pricing", id: "#pricing" },
|
||||
{ name: "Location", id: "#contact" },
|
||||
{ name: "Booking", id: "/booking" },
|
||||
]}
|
||||
brandName="Cut Creation Barbers"
|
||||
/>
|
||||
@@ -48,7 +47,7 @@ export default function LandingPage() {
|
||||
description="Precision Cuts. Every Time. Trusted by loyal clients in New Lynn. No rushed cuts. No guesswork."
|
||||
tag="PREMIUM BARBERSHOP"
|
||||
buttons={[
|
||||
{ text: "Book Appointment", href: "#contact" },
|
||||
{ text: "Book Appointment", href: "/booking" },
|
||||
{ text: "Walk In Today", href: "#contact" },
|
||||
]}
|
||||
mediaItems={[
|
||||
@@ -69,11 +68,11 @@ export default function LandingPage() {
|
||||
useInvertedBackground={true}
|
||||
features={[
|
||||
{
|
||||
title: "Total Consistency", description: "We ensure the same level of quality every single visit.", imageSrc: "http://img.b2bpic.net/free-photo/tools-from-barbershop-wooden-background_1303-10377.jpg", titleImageSrc: "http://img.b2bpic.net/free-photo/close-up-hairdresser-holding-hair-dryer_23-2149220573.jpg", buttonText: "Book Now"},
|
||||
title: "Total Consistency", description: "We ensure the same level of quality every single visit.", imageSrc: "http://img.b2bpic.net/free-photo/tools-from-barbershop-wooden-background_1303-10377.jpg", titleImageSrc: "http://img.b2bpic.net/free-photo/close-up-hairdresser-holding-hair-dryer_23-2149220573.jpg", buttonText: "Book Now", buttonHref: "/booking"},
|
||||
{
|
||||
title: "Precision Detail", description: "Attention to detail that separates us from the rest.", imageSrc: "http://img.b2bpic.net/free-photo/close-up-man-getting-his-beard-trimmed_23-2148256868.jpg", titleImageSrc: "http://img.b2bpic.net/free-photo/bearded-hipster-male-purple-suit-isolated-grey-vignette-background_613910-1970.jpg", buttonText: "Book Now"},
|
||||
title: "Precision Detail", description: "Attention to detail that separates us from the rest.", imageSrc: "http://img.b2bpic.net/free-photo/close-up-man-getting-his-beard-trimmed_23-2148256868.jpg", titleImageSrc: "http://img.b2bpic.net/free-photo/bearded-hipster-male-purple-suit-isolated-grey-vignette-background_613910-1970.jpg", buttonText: "Book Now", buttonHref: "/booking"},
|
||||
{
|
||||
title: "We Actually Listen", description: "Consultation-first approach to ensure you get exactly what you want.", imageSrc: "http://img.b2bpic.net/free-photo/bearded-redhead-male-dressed-blue-suit-sunglasses-dark-grey-background_613910-12043.jpg", titleImageSrc: "http://img.b2bpic.net/free-photo/side-view-artists-getting-ready-show_23-2149434526.jpg", buttonText: "Book Now"},
|
||||
title: "We Actually Listen", description: "Consultation-first approach to ensure you get exactly what you want.", imageSrc: "http://img.b2bpic.net/free-photo/bearded-redhead-male-dressed-blue-suit-sunglasses-dark-grey-background_613910-12043.jpg", titleImageSrc: "http://img.b2bpic.net/free-photo/side-view-artists-getting-ready-show_23-2149434526.jpg", buttonText: "Book Now", buttonHref: "/booking"},
|
||||
]}
|
||||
title="Why Clients Don't Go Anywhere Else"
|
||||
description="Unmatched consistency, attention to detail, and a relaxed environment where we actually listen to your style needs."
|
||||
@@ -135,20 +134,6 @@ export default function LandingPage() {
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="pricing" data-section="pricing">
|
||||
<PricingCardThree
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={false}
|
||||
plans={[
|
||||
{ id: "std", name: "Standard Cut", price: "$30", features: ["Classic cut", "Detail work"], buttons: [{ text: "Book Now", href: "#contact" }] },
|
||||
{ id: "fade", name: "Skin Fade", price: "$35", features: ["Precision blend", "Detail work"], buttons: [{ text: "Book Now", href: "#contact" }] },
|
||||
]}
|
||||
title="Quality Cuts at Fair Prices"
|
||||
description="Simple, honest pricing for the best quality experience."
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<ContactCTA
|
||||
useInvertedBackground={true}
|
||||
@@ -157,8 +142,8 @@ export default function LandingPage() {
|
||||
title="Ready for a proper haircut?"
|
||||
description="3083 Great North Road, New Lynn. Visit us today or book ahead to ensure a spot with your preferred barber."
|
||||
buttons={[
|
||||
{ text: "Book Appointment", href: "#" },
|
||||
{ text: "Walk In Today", href: "#" },
|
||||
{ text: "Book Appointment", href: "/booking" },
|
||||
{ text: "Walk In Today", href: "/booking" },
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user