Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3180a7f7b2 | |||
| 4245be4bd6 | |||
| 08317ac088 | |||
| add05dee75 | |||
| bf74674534 | |||
| c111f0a9c3 | |||
| 2fd036cbd2 | |||
| 9b63427693 |
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>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -30,10 +30,11 @@ export default function LandingPage() {
|
|||||||
<div id="nav" data-section="nav">
|
<div id="nav" data-section="nav">
|
||||||
<NavbarStyleFullscreen
|
<NavbarStyleFullscreen
|
||||||
navItems={[
|
navItems={[
|
||||||
{ name: "Home", id: "#hero" },
|
{ name: "Home", id: "/" },
|
||||||
{ name: "Services", id: "#services" },
|
{ name: "Services", id: "#services" },
|
||||||
{ name: "Team", id: "#team" },
|
{ name: "Team", id: "#team" },
|
||||||
{ name: "Location", id: "#contact" },
|
{ name: "Location", id: "#contact" },
|
||||||
|
{ name: "Booking", id: "/booking" },
|
||||||
]}
|
]}
|
||||||
brandName="Cut Creation Barbers"
|
brandName="Cut Creation Barbers"
|
||||||
/>
|
/>
|
||||||
@@ -46,7 +47,7 @@ export default function LandingPage() {
|
|||||||
description="Precision Cuts. Every Time. Trusted by loyal clients in New Lynn. No rushed cuts. No guesswork."
|
description="Precision Cuts. Every Time. Trusted by loyal clients in New Lynn. No rushed cuts. No guesswork."
|
||||||
tag="PREMIUM BARBERSHOP"
|
tag="PREMIUM BARBERSHOP"
|
||||||
buttons={[
|
buttons={[
|
||||||
{ text: "Book Appointment", href: "#contact" },
|
{ text: "Book Appointment", href: "/booking" },
|
||||||
{ text: "Walk In Today", href: "#contact" },
|
{ text: "Walk In Today", href: "#contact" },
|
||||||
]}
|
]}
|
||||||
mediaItems={[
|
mediaItems={[
|
||||||
@@ -67,11 +68,11 @@ export default function LandingPage() {
|
|||||||
useInvertedBackground={true}
|
useInvertedBackground={true}
|
||||||
features={[
|
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"
|
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."
|
description="Unmatched consistency, attention to detail, and a relaxed environment where we actually listen to your style needs."
|
||||||
@@ -141,8 +142,8 @@ export default function LandingPage() {
|
|||||||
title="Ready for a proper haircut?"
|
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."
|
description="3083 Great North Road, New Lynn. Visit us today or book ahead to ensure a spot with your preferred barber."
|
||||||
buttons={[
|
buttons={[
|
||||||
{ text: "Book Appointment", href: "#" },
|
{ text: "Book Appointment", href: "/booking" },
|
||||||
{ text: "Walk In Today", href: "#" },
|
{ text: "Walk In Today", href: "/booking" },
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user