Merge version_2 into main #1

Merged
bender merged 3 commits from version_2 into main 2026-04-27 13:37:09 +00:00
3 changed files with 60 additions and 236 deletions

View File

@@ -2,10 +2,10 @@
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import ContactCenter from '@/components/sections/contact/ContactCenter';
import ContactSplitForm from '@/components/sections/contact/ContactSplitForm';
import FaqSplitText from '@/components/sections/faq/FaqSplitText';
import FeatureBorderGlow from '@/components/sections/feature/featureBorderGlow/FeatureBorderGlow';
import FooterSimple from '@/components/sections/footer/FooterSimple';
import FooterLogoEmphasis from '@/components/sections/footer/FooterLogoEmphasis';
import HeroSplitKpi from '@/components/sections/hero/HeroSplitKpi';
import MetricCardOne from '@/components/sections/metrics/MetricCardOne';
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
@@ -18,35 +18,23 @@ export default function LandingPage() {
<ThemeProvider
defaultButtonVariant="shift-hover"
defaultTextAnimation="background-highlight"
borderRadius="soft"
contentWidth="smallMedium"
sizing="largeSmallSizeMediumTitles"
background="grid"
cardStyle="gradient-bordered"
primaryButtonStyle="double-inset"
secondaryButtonStyle="solid"
headingFontWeight="medium"
borderRadius="pill"
contentWidth="mediumLarge"
sizing="mediumLargeSizeLargeTitles"
background="aurora"
cardStyle="glass-elevated"
primaryButtonStyle="primary-glow"
secondaryButtonStyle="layered"
headingFontWeight="semibold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarLayoutFloatingOverlay
navItems={[
{
name: "Home",
id: "hero",
},
{
name: "Services",
id: "services",
},
{
name: "Testimonials",
id: "testimonials",
},
{
name: "Contact",
id: "contact",
},
{ name: "Home", id: "hero" },
{ name: "Services", id: "services" },
{ name: "Testimonials", id: "testimonials" },
{ name: "Contact", id: "contact" },
]}
brandName="J.W. Freeman Plumbing"
/>
@@ -54,72 +42,22 @@ export default function LandingPage() {
<div id="hero" data-section="hero">
<HeroSplitKpi
background={{
variant: "gradient-bars",
}}
background={{ variant: "gradient-bars" }}
title="Reliable Plumbing Services for Your Home"
description="J.W. Freeman Plumbing delivers professional, fast, and high-quality plumbing solutions in your area. Trusted by homeowners for expert repairs and installations."
kpis={[
{
value: "15+",
label: "Years Experience",
},
{
value: "24/7",
label: "Emergency Support",
},
{
value: "5000+",
label: "Homes Serviced",
},
{ value: "15+", label: "Years Experience" },
{ value: "24/7", label: "Emergency Support" },
{ value: "5000+", label: "Homes Serviced" },
]}
enableKpiAnimation={true}
imageSrc="http://img.b2bpic.net/free-photo/working-tools-things-worker-builder-electrician-top-view_169016-25063.jpg"
mediaAnimation="slide-up"
avatars={[
{
src: "http://img.b2bpic.net/free-photo/joyful-female-customers-enjoying-shopping-online_1262-18525.jpg",
alt: "Happy client 1",
},
{
src: "http://img.b2bpic.net/free-photo/happy-adult-son-his-mature-father-holding-hands-while-greeting-each-other-kitchen_637285-10296.jpg",
alt: "Happy client 2",
},
{
src: "http://img.b2bpic.net/free-photo/couple-home-enjoying-life_23-2149167741.jpg",
alt: "Happy client 3",
},
{
src: "http://img.b2bpic.net/free-photo/beautiful-young-african-american-woman-smiling-cheerful-friendly-face-laughing-confident_839833-29956.jpg",
alt: "Happy client 4",
},
{
src: "http://img.b2bpic.net/free-photo/airbnb-host-welcoming-guests_23-2149872045.jpg",
alt: "Happy client 5",
},
]}
avatarText="Trusted by 5000+ local homeowners"
marqueeItems={[
{
type: "text",
text: "Licensed & Insured",
},
{
type: "text",
text: "Certified Professionals",
},
{
type: "text",
text: "Transparent Quotes",
},
{
type: "text",
text: "Guaranteed Results",
},
{
type: "text",
text: "24/7 Available",
},
{ type: "text", text: "Licensed & Insured" },
{ type: "text", text: "Certified Professionals" },
{ type: "text", text: "Transparent Quotes" },
{ type: "text", text: "Guaranteed Results" },
]}
/>
</div>
@@ -131,18 +69,9 @@ export default function LandingPage() {
title="The Freeman Commitment"
description="At J.W. Freeman Plumbing, we treat every home with respect. We combine traditional craftsmanship with modern plumbing technology to ensure your systems are running perfectly."
bulletPoints={[
{
title: "Expert Certified Pros",
description: "Licensed and insured technicians ready to solve your issues.",
},
{
title: "Transparent Pricing",
description: "Upfront quotes with no hidden fees, period.",
},
{
title: "Quality Guaranteed",
description: "We stand by our work with solid warranties on all jobs.",
},
{ title: "Expert Certified Pros", description: "Licensed and insured technicians." },
{ title: "Transparent Pricing", description: "Upfront quotes with no hidden fees." },
{ title: "Quality Guaranteed", description: "Solid warranties on all jobs." },
]}
imageSrc="http://img.b2bpic.net/free-photo/close-up-young-male-technician-working-computer-motherboard_23-2147923492.jpg"
mediaAnimation="blur-reveal"
@@ -155,24 +84,12 @@ export default function LandingPage() {
textboxLayout="default"
useInvertedBackground={false}
features={[
{
title: "Leak Detection",
description: "Advanced detection to find hidden issues quickly.",
icon: Shield,
},
{
title: "Water Heater Service",
description: "Installation and repair for all heater types.",
icon: Zap,
},
{
title: "Drain Cleaning",
description: "Clearing stubborn blocks with ease.",
icon: CheckCircle,
},
{ title: "Leak Detection", description: "Advanced detection to find hidden issues.", icon: Shield },
{ title: "Water Heater Service", description: "Installation and repair for all types.", icon: Zap },
{ title: "Drain Cleaning", description: "Clearing stubborn blocks with ease.", icon: CheckCircle },
]}
title="Comprehensive Plumbing Services"
description="From emergency leaks to full system renovations, we have the tools and experience."
description="From emergency leaks to full renovations, we have the experience."
/>
</div>
@@ -183,30 +100,12 @@ export default function LandingPage() {
gridVariant="uniform-all-items-equal"
useInvertedBackground={true}
metrics={[
{
id: "m1",
value: "99%",
title: "Client Satisfaction",
description: "Our work consistently exceeds expectations.",
icon: Star,
},
{
id: "m2",
value: "2k+",
title: "Happy Clients",
description: "Families trusting us with their home needs.",
icon: Award,
},
{
id: "m3",
value: "30m",
title: "Arrival Time",
description: "Fast response for emergency needs.",
icon: Zap,
},
{ id: "m1", value: "99%", title: "Satisfaction", description: "Work that exceeds expectations.", icon: Star },
{ id: "m2", value: "2k+", title: "Happy Clients", description: "Trusting us with home needs.", icon: Award },
{ id: "m3", value: "30m", title: "Response", description: "Fast arrival times.", icon: Zap },
]}
title="Quality by the Numbers"
description="Our success is measured by the satisfaction of our loyal local customer base."
description="Our success is measured by the satisfaction of our local base."
/>
</div>
@@ -215,49 +114,11 @@ export default function LandingPage() {
textboxLayout="split"
useInvertedBackground={false}
testimonials={[
{
id: "t1",
title: "Great Service",
quote: "Fast response and very fair pricing. Fixed my sink leak in minutes.",
name: "Sarah Miller",
role: "Homeowner",
imageSrc: "http://img.b2bpic.net/free-photo/man-street-using-mobile-phone_657883-744.jpg",
},
{
id: "t2",
title: "Professional",
quote: "They were on time and very clean. My new water heater works perfectly.",
name: "David Clark",
role: "Property Manager",
imageSrc: "http://img.b2bpic.net/free-photo/workers-having-little-chat-while-having-cup-coffee_329181-15605.jpg",
},
{
id: "t3",
title: "Highly Recommend",
quote: "Knowledgeable and polite. Freeman Plumbing is now my go-to.",
name: "Emily Jones",
role: "Homeowner",
imageSrc: "http://img.b2bpic.net/free-photo/front-view-cute-girl-looking-away_23-2148436134.jpg",
},
{
id: "t4",
title: "Expert Work",
quote: "They fixed what three other plumbers couldn't. Simply amazing.",
name: "Kevin White",
role: "Homeowner",
imageSrc: "http://img.b2bpic.net/free-photo/full-shot-woman-receiving-groceries_23-2149722274.jpg",
},
{
id: "t5",
title: "Reliable",
quote: "Very reliable team. I always call them for maintenance.",
name: "Anna Brown",
role: "Homeowner",
imageSrc: "http://img.b2bpic.net/free-photo/middle-age-couple-standing-together-doing-ok-gesture-with-hand-smiling-eye-looking-through-fingers-with-happy-face_839833-32832.jpg",
},
{ id: "t1", title: "Great Service", quote: "Fast and fair pricing.", name: "Sarah Miller", role: "Homeowner", imageSrc: "http://img.b2bpic.net/free-photo/man-street-using-mobile-phone_657883-744.jpg" },
{ id: "t2", title: "Professional", quote: "Clean and efficient work.", name: "David Clark", role: "Property Manager", imageSrc: "http://img.b2bpic.net/free-photo/workers-having-little-chat-while-having-cup-coffee_329181-15605.jpg" },
]}
title="Trusted by Your Neighbors"
description="See why homeowners choose Freeman Plumbing for every plumbing need."
description="See why homeowners choose Freeman Plumbing."
/>
</div>
@@ -265,75 +126,38 @@ export default function LandingPage() {
<FaqSplitText
useInvertedBackground={true}
faqs={[
{
id: "f1",
title: "Do you offer emergency services?",
content: "Yes, our team is available for emergency repairs 24/7.",
},
{
id: "f2",
title: "Are your plumbers insured?",
content: "Absolutely. Our entire team is fully licensed and insured for your protection.",
},
{
id: "f3",
title: "How do I get a quote?",
content: "Contact us via the form or phone, and we will provide an estimate.",
},
{ id: "f1", title: "Do you offer emergency services?", content: "Yes, 24/7 support." },
{ id: "f2", title: "Are your plumbers insured?", content: "Yes, fully licensed and insured." },
]}
sideTitle="Common Questions"
sideDescription="Need answers fast? Here are our most requested facts."
sideDescription="Answers to our most requested facts."
faqsAnimation="blur-reveal"
/>
</div>
<div id="contact" data-section="contact">
<ContactCenter
useInvertedBackground={false}
background={{
variant: "gradient-bars",
}}
tag="Ready to Start"
<ContactSplitForm
title="Need Help Today?"
description="Send us your details and we'll be in touch to schedule your service appointment."
description="Send us your details and we'll be in touch immediately."
inputs={[
{ name: "name", type: "text", placeholder: "Your Name" },
{ name: "email", type: "email", placeholder: "Email Address" }
]}
useInvertedBackground={true}
buttonText="Get A Quote"
/>
</div>
<div id="footer" data-section="footer">
<FooterSimple
<FooterLogoEmphasis
logoText="J.W. Freeman Plumbing"
columns={[
{
title: "Navigation",
items: [
{
label: "Services",
href: "#services",
},
{
label: "About",
href: "#about",
},
],
},
{
title: "Legal",
items: [
{
label: "Privacy Policy",
href: "#",
},
{
label: "Terms of Service",
href: "#",
},
],
},
{ items: [{ label: "Home", href: "#hero" }, { label: "Services", href: "#services" }] },
{ items: [{ label: "Privacy", href: "#" }, { label: "Terms", href: "#" }] }
]}
bottomLeftText="© 2024 J.W. Freeman Plumbing"
bottomRightText="Licensed and Insured"
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}
}

View File

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

View File

@@ -10,15 +10,15 @@
--accent: #ffffff;
--background-accent: #ffffff; */
--background: #f5faff;
--card: #f1f8ff;
--foreground: #001122;
--primary-cta: #15479c;
--background: #fbfaff;
--card: #f7f5ff;
--foreground: #0f0022;
--primary-cta: #8b5cf6;
--primary-cta-text: #f5faff;
--secondary-cta: #ffffff;
--secondary-cta-text: #001122;
--accent: #a8cce8;
--background-accent: #7ba3cf;
--accent: #d8cef5;
--background-accent: #c4a8f9;
/* text sizing - set by ThemeProvider */
/* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem);