7 Commits

Author SHA1 Message Date
a4aa101084 Merge version_3 into main
Merge version_3 into main
2026-05-12 09:09:37 +00:00
52b2f26507 Update theme fonts 2026-05-12 09:09:34 +00:00
504acffe39 Update theme fonts 2026-05-12 09:09:34 +00:00
ce1027ba51 Merge version_3 into main
Merge version_3 into main
2026-05-12 08:50:18 +00:00
2a715d7bce Update src/app/page.tsx 2026-05-12 08:50:12 +00:00
eb28a5ed72 Merge version_2 into main
Merge version_2 into main
2026-05-12 08:41:21 +00:00
2f0d4191b1 Update src/app/page.tsx 2026-05-12 08:41:15 +00:00
3 changed files with 62 additions and 188 deletions

View File

@@ -7,6 +7,7 @@ import { ServiceWrapper } from "@/components/ServiceWrapper";
import Tag from "@/tag/Tag"; import Tag from "@/tag/Tag";
import { getVisualEditScript } from "@/utils/visual-edit-script"; import { getVisualEditScript } from "@/utils/visual-edit-script";
import { Mulish } from "next/font/google"; import { Mulish } from "next/font/google";
import { DM_Sans } from "next/font/google";
@@ -21,8 +22,13 @@ export const metadata: Metadata = {
}, },
}; };
const mulish = Mulish({
variable: "--font-mulish", const dmSans = DM_Sans({
variable: "--font-dm-sans",
subsets: ["latin"],
});
const inter = Inter({
variable: "--font-inter",
subsets: ["latin"], subsets: ["latin"],
}); });
@@ -34,7 +40,7 @@ export default function RootLayout({
return ( return (
<html lang="en" suppressHydrationWarning> <html lang="en" suppressHydrationWarning>
<ServiceWrapper> <ServiceWrapper>
<body className={`${mulish.variable} antialiased`}> <body className={`${dmSans.variable} ${inter.variable} antialiased`}>
<Tag /> <Tag />
{children} {children}
<script <script

View File

@@ -31,27 +31,17 @@ export default function LandingPage() {
<NavbarLayoutFloatingInline <NavbarLayoutFloatingInline
navItems={[ navItems={[
{ {
name: "Home", name: "Home", id: "hero"},
id: "hero",
},
{ {
name: "Services", name: "Services", id: "services"},
id: "services",
},
{ {
name: "Testimonials", name: "Testimonials", id: "testimonials"},
id: "testimonials",
},
{ {
name: "Contact", name: "Contact", id: "contact"},
id: "contact",
},
]} ]}
brandName="Premier Barber Studio" brandName="Premier Barber Studio"
button={{ button={{
text: "Book Now", text: "Book Now", href: "#booking"}}
href: "#booking",
}}
/> />
</div> </div>
@@ -61,39 +51,23 @@ export default function LandingPage() {
description="Clevelands Premier Barber Experience. Expert fades, classic grooming, and a welcoming atmosphere in the heart of Ohio City." description="Clevelands Premier Barber Experience. Expert fades, classic grooming, and a welcoming atmosphere in the heart of Ohio City."
buttons={[ buttons={[
{ {
text: "Book Appointment", text: "Book Appointment", href: "#booking"},
href: "#booking",
},
{ {
text: "Call Now", text: "Call Now", onClick: () => alert("+12163311477")},
href: "tel:+12163311477",
},
]} ]}
slides={[ slides={[
{ {
imageSrc: "http://img.b2bpic.net/free-photo/close-up-washbasin_107420-94763.jpg", imageSrc: "http://img.b2bpic.net/free-photo/close-up-washbasin_107420-94763.jpg", imageAlt: "Modern premium barber studio"},
imageAlt: "Modern premium barber studio",
},
{ {
imageSrc: "http://img.b2bpic.net/free-photo/man-barbershop-beard-is-shaving_1321-494.jpg", imageSrc: "http://img.b2bpic.net/free-photo/man-barbershop-beard-is-shaving_1321-494.jpg", imageAlt: "Barber shop experience"},
imageAlt: "Barber shop experience",
},
{ {
imageSrc: "http://img.b2bpic.net/free-photo/handsome-businessman-barbershop_1157-21635.jpg", imageSrc: "http://img.b2bpic.net/free-photo/handsome-businessman-barbershop_1157-21635.jpg", imageAlt: "Clean grooming interior"},
imageAlt: "Clean grooming interior",
},
{ {
imageSrc: "http://img.b2bpic.net/free-photo/bearded-male-sitting-armchair-barber-shop-while-hairdresser-modeling-beard-with-scissors-comb-barbershop_613910-18515.jpg", imageSrc: "http://img.b2bpic.net/free-photo/bearded-male-sitting-armchair-barber-shop-while-hairdresser-modeling-beard-with-scissors-comb-barbershop_613910-18515.jpg", imageAlt: "Expert barber service"},
imageAlt: "Expert barber service",
},
{ {
imageSrc: "http://img.b2bpic.net/free-photo/low-angle-client-having-his-beard-groomed_23-2148353415.jpg", imageSrc: "http://img.b2bpic.net/free-photo/low-angle-client-having-his-beard-groomed_23-2148353415.jpg", imageAlt: "Ohio City grooming"},
imageAlt: "Ohio City grooming",
},
{ {
imageSrc: "http://img.b2bpic.net/free-photo/mid-section-barber-wiping-clients-face-with-hot-towel_107420-94798.jpg", imageSrc: "http://img.b2bpic.net/free-photo/mid-section-barber-wiping-clients-face-with-hot-towel_107420-94798.jpg", imageAlt: "Professional style"},
imageAlt: "Professional style",
},
]} ]}
/> />
</div> </div>
@@ -106,17 +80,11 @@ export default function LandingPage() {
description="Premier Barber Studio is more than just a cut. We are a women-owned, inclusive space dedicated to consistency, professionalism, and the classic art of the barber. Our expert stylists combine modern trends with timeless techniques." description="Premier Barber Studio is more than just a cut. We are a women-owned, inclusive space dedicated to consistency, professionalism, and the classic art of the barber. Our expert stylists combine modern trends with timeless techniques."
bulletPoints={[ bulletPoints={[
{ {
title: "Expert Styling", title: "Expert Styling", description: "Precision cuts and fades."},
description: "Precision cuts and fades.",
},
{ {
title: "Welcoming Vibe", title: "Welcoming Vibe", description: "Inclusive and professional space."},
description: "Inclusive and professional space.",
},
{ {
title: "Consistently Fresh", title: "Consistently Fresh", description: "Your look, handled perfectly."},
description: "Your look, handled perfectly.",
},
]} ]}
imageSrc="http://img.b2bpic.net/free-photo/front-view-barber-shop-concept_23-2148506366.jpg" imageSrc="http://img.b2bpic.net/free-photo/front-view-barber-shop-concept_23-2148506366.jpg"
imageAlt="About Premier Barber Studio" imageAlt="About Premier Barber Studio"
@@ -130,41 +98,17 @@ export default function LandingPage() {
useInvertedBackground={false} useInvertedBackground={false}
features={[ features={[
{ {
title: "Haircuts", title: "Haircuts", description: "Classic and contemporary styles.", imageSrc: "http://img.b2bpic.net/free-photo/close-up-hands-shaving-neck_23-2147778912.jpg", imageAlt: "Haircuts"},
description: "Classic and contemporary styles.",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-hands-shaving-neck_23-2147778912.jpg",
imageAlt: "Haircuts",
},
{ {
title: "Skin Fades", title: "Skin Fades", description: "Crisp and seamless transitions.", imageSrc: "http://img.b2bpic.net/free-photo/handsome-man-posing-camera_23-2148242765.jpg", imageAlt: "Skin Fades"},
description: "Crisp and seamless transitions.",
imageSrc: "http://img.b2bpic.net/free-photo/handsome-man-posing-camera_23-2148242765.jpg",
imageAlt: "Skin Fades",
},
{ {
title: "Beard Trims", title: "Beard Trims", description: "Shape, line, and groom.", imageSrc: "http://img.b2bpic.net/free-photo/close-up-man-with-beard-smiling_23-2148618892.jpg", imageAlt: "Beard Trims"},
description: "Shape, line, and groom.",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-man-with-beard-smiling_23-2148618892.jpg",
imageAlt: "Beard Trims",
},
{ {
title: "Line-Ups", title: "Line-Ups", description: "Sharp edges and clean lines.", imageSrc: "http://img.b2bpic.net/free-photo/woman-trimming-customer-hair_23-2148257012.jpg", imageAlt: "Line-Ups"},
description: "Sharp edges and clean lines.",
imageSrc: "http://img.b2bpic.net/free-photo/woman-trimming-customer-hair_23-2148257012.jpg",
imageAlt: "Line-Ups",
},
{ {
title: "Kids Cuts", title: "Kids Cuts", description: "Friendly service for all ages.", imageSrc: "http://img.b2bpic.net/free-photo/handsome-young-male-barber-giving-his-client-haircut-using-clipper-working-his-barbershop_7502-5639.jpg", imageAlt: "Kids Cuts"},
description: "Friendly service for all ages.",
imageSrc: "http://img.b2bpic.net/free-photo/handsome-young-male-barber-giving-his-client-haircut-using-clipper-working-his-barbershop_7502-5639.jpg",
imageAlt: "Kids Cuts",
},
{ {
title: "Grooming Packages", title: "Grooming Packages", description: "Full service treatment.", imageSrc: "http://img.b2bpic.net/free-photo/close-up-view-man-shaving-his-beard_23-2148506246.jpg", imageAlt: "Grooming"},
description: "Full service treatment.",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-view-man-shaving-his-beard_23-2148506246.jpg",
imageAlt: "Grooming",
},
]} ]}
title="Professional Grooming Services" title="Professional Grooming Services"
description="Our studio provides top-tier grooming services tailored to your individual style." description="Our studio provides top-tier grooming services tailored to your individual style."
@@ -178,59 +122,28 @@ export default function LandingPage() {
useInvertedBackground={false} useInvertedBackground={false}
testimonials={[ testimonials={[
{ {
id: "1", id: "1", name: "Alex R.", role: "Local Resident", company: "Ohio City", rating: 5,
name: "Alex R.", imageSrc: "http://img.b2bpic.net/free-photo/front-view-barber-shop-concept_23-2148506342.jpg"},
role: "Local Resident",
company: "Ohio City",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/front-view-barber-shop-concept_23-2148506342.jpg",
},
{ {
id: "2", id: "2", name: "Jordan S.", role: "Professional", company: "Cleveland", rating: 5,
name: "Jordan S.", imageSrc: "http://img.b2bpic.net/free-photo/handsome-tattoed-male-with-stylish-haircut-beard-gray-t-shirt-standing-leaning-against-brick-wall-room-with-loft-interior_613910-3912.jpg"},
role: "Professional",
company: "Cleveland",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/handsome-tattoed-male-with-stylish-haircut-beard-gray-t-shirt-standing-leaning-against-brick-wall-room-with-loft-interior_613910-3912.jpg",
},
{ {
id: "3", id: "3", name: "Sam M.", role: "Visitor", company: "Cleveland", rating: 5,
name: "Sam M.", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-smiley-man-sitting-chair_23-2149220526.jpg"},
role: "Visitor",
company: "Cleveland",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-smiley-man-sitting-chair_23-2149220526.jpg",
},
{ {
id: "4", id: "4", name: "Taylor P.", role: "Regular", company: "Ohio City", rating: 5,
name: "Taylor P.", imageSrc: "http://img.b2bpic.net/free-photo/best-friends-smiling-each-other_23-2148238236.jpg"},
role: "Regular",
company: "Ohio City",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/best-friends-smiling-each-other_23-2148238236.jpg",
},
{ {
id: "5", id: "5", name: "Chris B.", role: "Client", company: "Cleveland", rating: 5,
name: "Chris B.", imageSrc: "http://img.b2bpic.net/free-photo/young-black-people-taking-care-afro-hair_23-2149575478.jpg"},
role: "Client",
company: "Cleveland",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/young-black-people-taking-care-afro-hair_23-2149575478.jpg",
},
]} ]}
kpiItems={[ kpiItems={[
{ {
value: "4.7", value: "4.7", label: "Google Rating"},
label: "Google Rating",
},
{ {
value: "95+", value: "95+", label: "Client Reviews"},
label: "Client Reviews",
},
{ {
value: "100%", value: "100%", label: "Client Satisfaction"},
label: "Client Satisfaction",
},
]} ]}
title="Trusted by Cleveland" title="Trusted by Cleveland"
description="Rated 4.7 stars by our community." description="Rated 4.7 stars by our community."
@@ -245,41 +158,17 @@ export default function LandingPage() {
useInvertedBackground={false} useInvertedBackground={false}
products={[ products={[
{ {
id: "g1", id: "g1", name: "Skin Fade", price: "Featured", imageSrc: "http://img.b2bpic.net/free-photo/hair-stylist-making-styling-beard-client-salon_23-2148181978.jpg"},
name: "Skin Fade",
price: "Featured",
imageSrc: "http://img.b2bpic.net/free-photo/hair-stylist-making-styling-beard-client-salon_23-2148181978.jpg",
},
{ {
id: "g2", id: "g2", name: "Beard Style", price: "Featured", imageSrc: "http://img.b2bpic.net/free-photo/close-up-man-shaving-with-black-trimmer_23-2148213367.jpg"},
name: "Beard Style",
price: "Featured",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-man-shaving-with-black-trimmer_23-2148213367.jpg",
},
{ {
id: "g3", id: "g3", name: "Interior", price: "Featured", imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-blond-bearded-male-dressed-black-leather-jacket_613910-11902.jpg"},
name: "Interior",
price: "Featured",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-blond-bearded-male-dressed-black-leather-jacket_613910-11902.jpg",
},
{ {
id: "g4", id: "g4", name: "Line Up", price: "Featured", imageSrc: "http://img.b2bpic.net/free-photo/alpine-hotel-hosting-winter-sports_482257-102253.jpg"},
name: "Line Up",
price: "Featured",
imageSrc: "http://img.b2bpic.net/free-photo/alpine-hotel-hosting-winter-sports_482257-102253.jpg",
},
{ {
id: "g5", id: "g5", name: "Styling", price: "Featured", imageSrc: "http://img.b2bpic.net/free-photo/view-beautifully-decorated-round-table-with-natural-fir-branch-candle-two-flutes-plates-against-classic-sofa-modern-apartment_132075-11394.jpg"},
name: "Styling",
price: "Featured",
imageSrc: "http://img.b2bpic.net/free-photo/view-beautifully-decorated-round-table-with-natural-fir-branch-candle-two-flutes-plates-against-classic-sofa-modern-apartment_132075-11394.jpg",
},
{ {
id: "g6", id: "g6", name: "Details", price: "Featured", imageSrc: "http://img.b2bpic.net/free-photo/two-businessmen-talking-phone-city_1153-8203.jpg"},
name: "Details",
price: "Featured",
imageSrc: "http://img.b2bpic.net/free-photo/two-businessmen-talking-phone-city_1153-8203.jpg",
},
]} ]}
title="Studio Gallery" title="Studio Gallery"
description="See our latest work and the shop atmosphere." description="See our latest work and the shop atmosphere."
@@ -292,25 +181,13 @@ export default function LandingPage() {
useInvertedBackground={false} useInvertedBackground={false}
faqs={[ faqs={[
{ {
id: "q1", id: "q1", title: "Experienced Barbers", content: "Our team brings years of experience."},
title: "Experienced Barbers",
content: "Our team brings years of experience.",
},
{ {
id: "q2", id: "q2", title: "Inclusive Space", content: "We are proud to be LGBTQ+ friendly."},
title: "Inclusive Space",
content: "We are proud to be LGBTQ+ friendly.",
},
{ {
id: "q3", id: "q3", title: "Convenient Booking", content: "Book your appointment online easily."},
title: "Convenient Booking",
content: "Book your appointment online easily.",
},
{ {
id: "q4", id: "q4", title: "Local Reputation", content: "Trusted by our local Cleveland community."},
title: "Local Reputation",
content: "Trusted by our local Cleveland community.",
},
]} ]}
title="Why Choose Premier?" title="Why Choose Premier?"
description="Consistently high quality in Ohio City." description="Consistently high quality in Ohio City."
@@ -322,20 +199,15 @@ export default function LandingPage() {
<ContactCTA <ContactCTA
useInvertedBackground={false} useInvertedBackground={false}
background={{ background={{
variant: "plain", variant: "plain"}}
}}
tag="Ready for Your Fresh Cut?" tag="Ready for Your Fresh Cut?"
title="Visit Premier Barber Studio Today" title="Visit Premier Barber Studio Today"
description="Book your appointment online or call us for a walk-in. We are located at 2821 Detroit Ave, Cleveland." description="Book your appointment online or call us for a walk-in. We are located at 2821 Detroit Ave, Cleveland."
buttons={[ buttons={[
{ {
text: "Book Appointment", text: "Book Appointment", href: "#"},
href: "#",
},
{ {
text: "Call Now", text: "Call Now", onClick: () => alert("+12163311477")},
href: "tel:+12163311477",
},
]} ]}
/> />
</div> </div>
@@ -344,16 +216,12 @@ export default function LandingPage() {
<FooterLogoReveal <FooterLogoReveal
logoText="Premier Barber Studio" logoText="Premier Barber Studio"
leftLink={{ leftLink={{
text: "2821 Detroit Ave, Cleveland", text: "2821 Detroit Ave, Cleveland", href: "#"}}
href: "#",
}}
rightLink={{ rightLink={{
text: "Call: 216-331-1477", text: "Call: 216-331-1477", href: "tel:+12163311477"}}
href: "tel:+12163311477",
}}
/> />
</div> </div>
</ReactLenis> </ReactLenis>
</ThemeProvider> </ThemeProvider>
); );
} }

View File

@@ -11,7 +11,7 @@ html {
body { body {
background-color: var(--background); background-color: var(--background);
color: var(--foreground); color: var(--foreground);
font-family: var(--font-mulish), sans-serif; font-family: var(--font-inter), sans-serif;
position: relative; position: relative;
min-height: 100vh; min-height: 100vh;
overscroll-behavior: none; overscroll-behavior: none;
@@ -24,5 +24,5 @@ h3,
h4, h4,
h5, h5,
h6 { h6 {
font-family: var(--font-mulish), sans-serif; font-family: var(--font-dm-sans), sans-serif;
} }