10 Commits

Author SHA1 Message Date
b81536e9bc Update src/app/menu/page.tsx 2026-04-23 09:14:04 +00:00
7bc1c1d006 Update src/app/contact/page.tsx 2026-04-23 09:14:04 +00:00
19169a50ef Update src/app/menu/page.tsx 2026-04-23 09:13:35 +00:00
589c7be53a Update src/app/contact/page.tsx 2026-04-23 09:13:34 +00:00
20801f7046 Update src/app/styles/variables.css 2026-04-23 09:13:02 +00:00
3ef2337d93 Update src/app/page.tsx 2026-04-23 09:13:01 +00:00
1e7ebdc58d Add src/app/menu/page.tsx 2026-04-23 09:13:01 +00:00
bfe0cf85b5 Add src/app/contact/page.tsx 2026-04-23 09:13:00 +00:00
1df66407dc Merge version_2 into main
Merge version_2 into main
2026-04-20 08:56:06 +00:00
fa18becba9 Update src/app/page.tsx 2026-04-20 08:56:02 +00:00
4 changed files with 196 additions and 178 deletions

76
src/app/contact/page.tsx Normal file
View File

@@ -0,0 +1,76 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import ContactSplit from '@/components/sections/contact/ContactSplit';
import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered';
import FooterMedia from '@/components/sections/footer/FooterMedia';
export default function ContactPage() {
return (
<ThemeProvider
defaultButtonVariant="hover-bubble"
defaultTextAnimation="entrance-slide"
borderRadius="rounded"
contentWidth="medium"
sizing="largeSmallSizeLargeTitles"
background="none"
cardStyle="glass-depth"
primaryButtonStyle="diagonal-gradient"
secondaryButtonStyle="glass"
headingFontWeight="normal"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarStyleCentered
navItems={[
{ name: "Home", id: "/" },
{ name: "Services", id: "/#services" },
{ name: "Experience", id: "/#experience" },
{ name: "Contact", id: "/contact" },
]}
brandName="Jeff & Company"
/>
</div>
<div id="contact" data-section="contact">
<ContactSplit
tag="Contact Us"
title="Book Your Appointment"
description="Ready to treat your pet? Reach out to us today and schedule a grooming session in our calm, professional salon."
background={{ variant: "plain" }}
useInvertedBackground={false}
imageSrc="http://img.b2bpic.net/free-photo/lifestyle-portrait-handsome-smiling-man-sitting-pet-friendly-cafe-with-his-beautiful-dog-petting-golden-retriever-waiting-order_1258-314442.jpg"
onSubmit={(email) => console.log("New Lead:", email)}
/>
</div>
<div id="footer" data-section="footer">
<FooterMedia
imageSrc="http://img.b2bpic.net/free-photo/high-angle-woman-washing-dog_23-2149872954.jpg?_wi=2"
logoText="Jeff & Company Grooming"
columns={[
{
title: "Contact", items: [
{ label: "Greystoke Dr, Ruislip", href: "#" },
{ label: "07598 206450", href: "tel:07598206450" },
],
},
{
title: "Opening Hours", items: [
{ label: "Mon-Fri: 9am-5pm", href: "#" },
{ label: "Sat: 9am-5pm", href: "#" },
],
},
{
title: "Follow", items: [
{ label: "Instagram", href: "#" },
],
},
]}
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

73
src/app/menu/page.tsx Normal file
View File

@@ -0,0 +1,73 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import PricingCardEight from '@/components/sections/pricing/PricingCardEight';
import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered';
import FooterMedia from '@/components/sections/footer/FooterMedia';
export default function MenuPage() {
return (
<ThemeProvider
defaultButtonVariant="hover-bubble"
defaultTextAnimation="entrance-slide"
borderRadius="rounded"
contentWidth="medium"
sizing="largeSmallSizeLargeTitles"
background="none"
cardStyle="glass-depth"
primaryButtonStyle="diagonal-gradient"
secondaryButtonStyle="glass"
headingFontWeight="normal"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarStyleCentered
navItems={[
{ name: "Home", id: "/" },
{ name: "Menu", id: "#menu" },
{ name: "Contact", id: "/#contact" },
]}
brandName="Jeff & Company"
/>
</div>
<div id="menu" data-section="menu">
<PricingCardEight
animationType="slide-up"
title="Our Menu & Pricing"
description="Explore our grooming packages tailored to your pet's needs."
textboxLayout="default"
useInvertedBackground={false}
plans={[
{
id: "1", badge: "Basic", price: "£35", subtitle: "Bath & Brush", features: ["Deep clean bath", "Gentle brush out", "Nail trim", "Ear cleaning"],
buttons: [{ text: "Book Now", href: "/#contact" }]
},
{
id: "2", badge: "Popular", price: "£55", subtitle: "Full Groom", features: ["Full bath & dry", "Breed specific haircut", "Nail trim", "Ear cleaning", "Sanitary trim"],
buttons: [{ text: "Book Now", href: "/#contact" }]
},
{
id: "3", badge: "Premium", price: "£65", subtitle: "The Works", features: ["Full groom package", "Dematting treatment", "Teeth brushing", "Paw balm", "Luxury fragrance"],
buttons: [{ text: "Book Now", href: "/#contact" }]
}
]}
/>
</div>
<div id="footer" data-section="footer">
<FooterMedia
imageSrc="http://img.b2bpic.net/free-photo/high-angle-woman-washing-dog_23-2149872954.jpg?_wi=1"
logoText="Jeff & Company Grooming"
columns={[
{ title: "Contact", items: [{ label: "Greystoke Dr, Ruislip", href: "#" }, { label: "07598 206450", href: "tel:07598206450" }] },
{ title: "Opening Hours", items: [{ label: "Mon-Fri: 9am-5pm", href: "#" }, { label: "Sat: 9am-5pm", href: "#" }] },
{ title: "Follow", items: [{ label: "Instagram", href: "#" }] }
]}
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -32,21 +32,13 @@ export default function LandingPage() {
<NavbarStyleCentered <NavbarStyleCentered
navItems={[ navItems={[
{ {
name: "Home", name: "Home", id: "hero"},
id: "hero",
},
{ {
name: "Services", name: "Services", id: "services"},
id: "services",
},
{ {
name: "Experience", name: "Experience", id: "experience"},
id: "experience",
},
{ {
name: "Contact", name: "Contact", id: "contact"},
id: "contact",
},
]} ]}
brandName="Jeff & Company" brandName="Jeff & Company"
/> />
@@ -55,20 +47,15 @@ export default function LandingPage() {
<div id="hero" data-section="hero"> <div id="hero" data-section="hero">
<HeroBillboardScroll <HeroBillboardScroll
background={{ background={{
variant: "plain", variant: "plain"}}
}}
title="Jeff & Company Grooming" title="Jeff & Company Grooming"
description="Calm, Gentle Grooming Your Pet Will Love. A trusted, 5-star grooming experience designed to keep your pet relaxed, comfortable, and looking their best." description="Calm, Gentle Grooming Your Pet Will Love. A trusted, 5-star grooming experience designed to keep your pet relaxed, comfortable, and looking their best."
tag="⭐ 5.0 Rated Grooming Service" tag="⭐ 5.0 Rated Grooming Service"
buttons={[ buttons={[
{ {
text: "Book Appointment", text: "Book Now", href: "/contact"},
href: "#contact",
},
{ {
text: "Call Now (07598 206450)", text: "Call Now (07598 206450)", href: "tel:07598206450"},
href: "tel:07598206450",
},
]} ]}
imageSrc="http://img.b2bpic.net/free-photo/adorable-pet-enjoying-spa-day-illustration_23-2151841570.jpg" imageSrc="http://img.b2bpic.net/free-photo/adorable-pet-enjoying-spa-day-illustration_23-2151841570.jpg"
imageAlt="Professional pet groomer smiling with a happy groomed dog" imageAlt="Professional pet groomer smiling with a happy groomed dog"
@@ -83,40 +70,15 @@ export default function LandingPage() {
useInvertedBackground={false} useInvertedBackground={false}
testimonials={[ testimonials={[
{ {
id: "1", id: "1", name: "Sarah J.", role: "Puppy Owner", testimonial: "A paw-fect experience for my puppys first groom.", imageSrc: "http://img.b2bpic.net/free-photo/lovely-pet-portrait-isolated_23-2149192309.jpg"},
name: "Sarah J.",
role: "Puppy Owner",
testimonial: "A paw-fect experience for my puppys first groom.",
imageSrc: "http://img.b2bpic.net/free-photo/lovely-pet-portrait-isolated_23-2149192309.jpg",
},
{ {
id: "2", id: "2", name: "Mark D.", role: "Client", testimonial: "So patient, caring, and professional.", imageSrc: "http://img.b2bpic.net/free-photo/sideways-portrait-chinese-crested-puppy-with-copy-space-background_23-2148326286.jpg"},
name: "Mark D.",
role: "Client",
testimonial: "So patient, caring, and professional.",
imageSrc: "http://img.b2bpic.net/free-photo/sideways-portrait-chinese-crested-puppy-with-copy-space-background_23-2148326286.jpg",
},
{ {
id: "3", id: "3", name: "Emily P.", role: "Pet Owner", testimonial: "Jeff is wonderful with my anxious dog, highly recommend!", imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-yorkshire-dog_23-2151779155.jpg"},
name: "Emily P.",
role: "Pet Owner",
testimonial: "Jeff is wonderful with my anxious dog, highly recommend!",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-yorkshire-dog_23-2151779155.jpg",
},
{ {
id: "4", id: "4", name: "Laura K.", role: "Regular Client", testimonial: "Excellent service every time, very happy.", imageSrc: "http://img.b2bpic.net/free-photo/lovely-pet-portrait-isolated_23-2149192304.jpg"},
name: "Laura K.",
role: "Regular Client",
testimonial: "Excellent service every time, very happy.",
imageSrc: "http://img.b2bpic.net/free-photo/lovely-pet-portrait-isolated_23-2149192304.jpg",
},
{ {
id: "5", id: "5", name: "David W.", role: "Client", testimonial: "Truly the best local grooming experience.", imageSrc: "http://img.b2bpic.net/free-photo/man-playing-with-his-toy-poodle_23-2147840145.jpg"},
name: "David W.",
role: "Client",
testimonial: "Truly the best local grooming experience.",
imageSrc: "http://img.b2bpic.net/free-photo/man-playing-with-his-toy-poodle_23-2147840145.jpg",
},
]} ]}
title="Trusted by Pet Owners" title="Trusted by Pet Owners"
description="Trusted by pet owners across Ruislip for safe, stress-free grooming." description="Trusted by pet owners across Ruislip for safe, stress-free grooming."
@@ -131,29 +93,13 @@ export default function LandingPage() {
useInvertedBackground={false} useInvertedBackground={false}
features={[ features={[
{ {
title: "Full Groom", title: "Full Groom", description: "A complete service including wash, cut, blow-dry, and styling.", imageSrc: "http://img.b2bpic.net/free-vector/several-flat-pet-store-elements_23-2147569069.jpg", imageAlt: "pet grooming dog clean"},
description: "A complete service including wash, cut, blow-dry, and styling.",
imageSrc: "http://img.b2bpic.net/free-vector/several-flat-pet-store-elements_23-2147569069.jpg",
imageAlt: "pet grooming dog clean",
},
{ {
title: "Puppy Pamper", title: "Puppy Pamper", description: "A gentle introduction to grooming for first-time visits.", imageSrc: "http://img.b2bpic.net/free-photo/woman-holding-cute-dog-close-up_23-2148949388.jpg", imageAlt: "puppy bath time gentle"},
description: "A gentle introduction to grooming for first-time visits.",
imageSrc: "http://img.b2bpic.net/free-photo/woman-holding-cute-dog-close-up_23-2148949388.jpg",
imageAlt: "puppy bath time gentle",
},
{ {
title: "Maintenance Groom", title: "Maintenance Groom", description: "Keep your pet clean and comfortable between full grooms.", imageSrc: "http://img.b2bpic.net/free-photo/yorkshire-terrier-getting-procedure-groomer-salon-young-woman-white-tshirt-combing-little-dog-yorkshire-terrier-puppy-blue-table_1157-51439.jpg", imageAlt: "dog grooming maintenance"},
description: "Keep your pet clean and comfortable between full grooms.",
imageSrc: "http://img.b2bpic.net/free-photo/yorkshire-terrier-getting-procedure-groomer-salon-young-woman-white-tshirt-combing-little-dog-yorkshire-terrier-puppy-blue-table_1157-51439.jpg",
imageAlt: "dog grooming maintenance",
},
{ {
title: "Bath & Brush", title: "Bath & Brush", description: "A quick refresh to keep coats clean and healthy.", imageSrc: "http://img.b2bpic.net/free-photo/haircuting-process-small-dog-sits-table-dog-with-professional_1157-48819.jpg", imageAlt: "pet grooming dog clean"},
description: "A quick refresh to keep coats clean and healthy.",
imageSrc: "http://img.b2bpic.net/free-photo/haircuting-process-small-dog-sits-table-dog-with-professional_1157-48819.jpg",
imageAlt: "pet grooming dog clean",
},
]} ]}
title="Our Services" title="Our Services"
description="Comprehensive grooming solutions for every pet's needs." description="Comprehensive grooming solutions for every pet's needs."
@@ -166,18 +112,9 @@ export default function LandingPage() {
title="A Calmer Approach" title="A Calmer Approach"
description="We focus on a calm, patient, one-to-one approach ensuring every pet feels safe and cared for. Our salon provides a quiet environment, ideal for nervous or first-time pets." description="We focus on a calm, patient, one-to-one approach ensuring every pet feels safe and cared for. Our salon provides a quiet environment, ideal for nervous or first-time pets."
metrics={[ metrics={[
{ { value: "1-to-1", title: "Appointments" },
value: "1-to-1", { value: "Calm", title: "Environment" },
title: "Appointments", { value: "Expert", title: "Personalized" },
},
{
value: "Calm",
title: "Environment",
},
{
value: "Expert",
title: "Personalized",
},
]} ]}
imageSrc="http://img.b2bpic.net/free-photo/empty-wintertime-luxury-ski-resort_482257-102290.jpg" imageSrc="http://img.b2bpic.net/free-photo/empty-wintertime-luxury-ski-resort_482257-102290.jpg"
imageAlt="pet groomer calm atmosphere" imageAlt="pet groomer calm atmosphere"
@@ -194,41 +131,17 @@ export default function LandingPage() {
useInvertedBackground={false} useInvertedBackground={false}
products={[ products={[
{ {
id: "1", id: "1", name: "Before & After", price: "Groomed", imageSrc: "http://img.b2bpic.net/free-photo/young-handsome-bearded-brutal-tattooed-happy-man-holds-pomeranian-spitz-playing-with-lovely-pet_343596-1531.jpg"},
name: "Before & After",
price: "Groomed",
imageSrc: "http://img.b2bpic.net/free-photo/young-handsome-bearded-brutal-tattooed-happy-man-holds-pomeranian-spitz-playing-with-lovely-pet_343596-1531.jpg",
},
{ {
id: "2", id: "2", name: "Styling", price: "Groomed", imageSrc: "http://img.b2bpic.net/free-photo/close-up-woman-with-cute-dog_23-2148949395.jpg"},
name: "Styling",
price: "Groomed",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-woman-with-cute-dog_23-2148949395.jpg",
},
{ {
id: "3", id: "3", name: "Puppy Cut", price: "Groomed", imageSrc: "http://img.b2bpic.net/free-photo/close-up-outdoor-portrait-smiling-girl-with-dark-brown-hair-holding-beagle-dog_197531-4837.jpg"},
name: "Puppy Cut",
price: "Groomed",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-outdoor-portrait-smiling-girl-with-dark-brown-hair-holding-beagle-dog_197531-4837.jpg",
},
{ {
id: "4", id: "4", name: "Coat Trim", price: "Groomed", imageSrc: "http://img.b2bpic.net/free-photo/woman-s-hand-holding-hat-prop-pug-dog-s-head_23-2147841035.jpg"},
name: "Coat Trim",
price: "Groomed",
imageSrc: "http://img.b2bpic.net/free-photo/woman-s-hand-holding-hat-prop-pug-dog-s-head_23-2147841035.jpg",
},
{ {
id: "5", id: "5", name: "Full Refresh", price: "Groomed", imageSrc: "http://img.b2bpic.net/free-photo/stylish-pin-up-girl-with-little-dog_1157-18893.jpg"},
name: "Full Refresh",
price: "Groomed",
imageSrc: "http://img.b2bpic.net/free-photo/stylish-pin-up-girl-with-little-dog_1157-18893.jpg",
},
{ {
id: "6", id: "6", name: "Healthy Coat", price: "Groomed", imageSrc: "http://img.b2bpic.net/free-photo/vertical-portrait-adorable-mixed-breed-dog-blue-wall_181624-35866.jpg"},
name: "Healthy Coat",
price: "Groomed",
imageSrc: "http://img.b2bpic.net/free-photo/vertical-portrait-adorable-mixed-breed-dog-blue-wall_181624-35866.jpg",
},
]} ]}
title="Happy Pets, Beautiful Results" title="Happy Pets, Beautiful Results"
description="Take a look at some of our recent grooms and see the care and attention we provide." description="Take a look at some of our recent grooms and see the care and attention we provide."
@@ -242,43 +155,17 @@ export default function LandingPage() {
useInvertedBackground={false} useInvertedBackground={false}
metrics={[ metrics={[
{ {
id: "1", id: "1", value: "5.0", title: "Rating", description: "Highly Rated", imageSrc: "http://img.b2bpic.net/free-photo/lovely-pet-portrait-isolated_23-2149192305.jpg"},
value: "5.0",
title: "Rating",
description: "Highly Rated",
imageSrc: "http://img.b2bpic.net/free-photo/lovely-pet-portrait-isolated_23-2149192305.jpg",
},
{ {
id: "2", id: "2", value: "Mon-Fri", title: "Hours", description: "9am-5pm", imageSrc: "http://img.b2bpic.net/free-photo/rough-collie-looking-side_181624-45167.jpg"},
value: "Mon-Fri",
title: "Hours",
description: "9am-5pm",
imageSrc: "http://img.b2bpic.net/free-photo/rough-collie-looking-side_181624-45167.jpg",
},
{ {
id: "3", id: "3", value: "Local", title: "Business", description: "Ruislip Based", imageSrc: "http://img.b2bpic.net/free-photo/closeup-shot-cute-shih-tzu-dog-red-background_181624-25315.jpg"},
value: "Local",
title: "Business",
description: "Ruislip Based",
imageSrc: "http://img.b2bpic.net/free-photo/closeup-shot-cute-shih-tzu-dog-red-background_181624-25315.jpg",
},
]} ]}
title="Give Your Pet the Care They Deserve" title="Give Your Pet the Care They Deserve"
description="Book today and experience a professional grooming service trusted by local owners." description="Book today and experience a professional grooming service trusted by local owners."
/> buttons={[
</div> { text: "Book Now", href: "/contact" }
]}
<div id="contact" data-section="contact">
<ContactSplit
useInvertedBackground={false}
background={{
variant: "plain",
}}
tag="Visit Us"
title="Book Your Appointment"
description="Greystoke Dr, Ruislip HA4 7YN. Open daily until 5pm. Call us to book."
imageSrc="http://img.b2bpic.net/free-photo/lifestyle-portrait-handsome-smiling-man-sitting-pet-friendly-cafe-with-his-beautiful-dog-petting-golden-retriever-waiting-order_1258-314442.jpg"
mediaAnimation="slide-up"
/> />
</div> </div>
@@ -288,38 +175,20 @@ export default function LandingPage() {
logoText="Jeff & Company Grooming" logoText="Jeff & Company Grooming"
columns={[ columns={[
{ {
title: "Contact", title: "Contact", items: [
items: [ { label: "Greystoke Dr, Ruislip", href: "#" },
{ { label: "07598 206450", href: "tel:07598206450" },
label: "Greystoke Dr, Ruislip",
href: "#",
},
{
label: "07598 206450",
href: "tel:07598206450",
},
], ],
}, },
{ {
title: "Opening Hours", title: "Opening Hours", items: [
items: [ { label: "Mon-Fri: 9am-5pm", href: "#" },
{ { label: "Sat: 9am-5pm", href: "#" },
label: "Mon-Fri: 9am-5pm",
href: "#",
},
{
label: "Sat: 9am-5pm",
href: "#",
},
], ],
}, },
{ {
title: "Follow", title: "Follow", items: [
items: [ { label: "Instagram", href: "#" },
{
label: "Instagram",
href: "#",
},
], ],
}, },
]} ]}

View File

@@ -10,15 +10,15 @@
--accent: #ffffff; --accent: #ffffff;
--background-accent: #ffffff; */ --background-accent: #ffffff; */
--background: #fcf6ec; --background: #fdfbf7;
--card: #f3ede2; --card: #f4efe9;
--foreground: #2e2521; --foreground: #3d3227;
--primary-cta: #2b180a; --primary-cta: #8b5e3c;
--primary-cta-text: #fcf6ec; --primary-cta-text: #fcf6ec;
--secondary-cta: #efe7dd; --secondary-cta: #e4d9ce;
--secondary-cta-text: #2e2521; --secondary-cta-text: #2e2521;
--accent: #b2a28b; --accent: #d4c5b9;
--background-accent: #b2a28b; --background-accent: #f4efe9;
/* text sizing - set by ThemeProvider */ /* text sizing - set by ThemeProvider */
/* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem); /* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem);