9 Commits

Author SHA1 Message Date
4bd1b323bf Merge version_4 into main
Merge version_4 into main
2026-04-19 07:00:28 +00:00
3180a7f7b2 Update src/app/page.tsx 2026-04-19 07:00:25 +00:00
4245be4bd6 Update src/app/booking/page.tsx 2026-04-19 07:00:25 +00:00
08317ac088 Merge version_3 into main
Merge version_3 into main
2026-04-19 06:57:39 +00:00
add05dee75 Update src/app/booking/page.tsx 2026-04-19 06:57:33 +00:00
bf74674534 Merge version_3 into main
Merge version_3 into main
2026-04-19 06:57:12 +00:00
c111f0a9c3 Update src/app/page.tsx 2026-04-19 06:57:09 +00:00
2fd036cbd2 Add src/app/booking/page.tsx 2026-04-19 06:57:09 +00:00
9b63427693 Merge version_2 into main
Merge version_2 into main
2026-04-19 06:55:27 +00:00
2 changed files with 76 additions and 7 deletions

68
src/app/booking/page.tsx Normal file
View 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>
);
}

View File

@@ -30,10 +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: "Location", id: "#contact" },
{ name: "Booking", id: "/booking" },
]}
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."
tag="PREMIUM BARBERSHOP"
buttons={[
{ text: "Book Appointment", href: "#contact" },
{ text: "Book Appointment", href: "/booking" },
{ text: "Walk In Today", href: "#contact" },
]}
mediaItems={[
@@ -67,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."
@@ -141,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>