Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 77de012da4 | |||
| b009d065ef | |||
| 2cd9751ae6 | |||
| 2493b14285 | |||
| 3e2ca8d941 | |||
| 06c242f1f2 | |||
| 3c21df77a2 | |||
| fab43aa248 | |||
| 822de6a54d | |||
| db4e6e7da3 |
@@ -7,6 +7,10 @@ import { ServiceWrapper } from "@/components/ServiceWrapper";
|
||||
import Tag from "@/tag/Tag";
|
||||
import { getVisualEditScript } from "@/utils/visual-edit-script";
|
||||
import { Source_Sans_3 } from "next/font/google";
|
||||
import { Montserrat } from "next/font/google";
|
||||
import { Open_Sans } from "next/font/google";
|
||||
import { Libre_Baskerville } from "next/font/google";
|
||||
import { Inter_Tight } from "next/font/google";
|
||||
|
||||
|
||||
|
||||
@@ -21,9 +25,14 @@ export const metadata: Metadata = {
|
||||
},
|
||||
};
|
||||
|
||||
const sourceSans3 = Source_Sans_3({
|
||||
variable: "--font-source-sans-3",
|
||||
|
||||
|
||||
|
||||
|
||||
const interTight = Inter_Tight({
|
||||
variable: "--font-inter-tight",
|
||||
subsets: ["latin"],
|
||||
weight: ["100", "200", "300", "400", "500", "600", "700", "800", "900"],
|
||||
});
|
||||
|
||||
export default function RootLayout({
|
||||
@@ -34,7 +43,7 @@ export default function RootLayout({
|
||||
return (
|
||||
<html lang="en" suppressHydrationWarning>
|
||||
<ServiceWrapper>
|
||||
<body className={`${sourceSans3.variable} antialiased`}>
|
||||
<body className={`${interTight.variable} antialiased`}>
|
||||
<Tag />
|
||||
{children}
|
||||
<script
|
||||
|
||||
129
src/app/page.tsx
129
src/app/page.tsx
@@ -32,17 +32,11 @@ export default function LandingPage() {
|
||||
<NavbarLayoutFloatingOverlay
|
||||
navItems={[
|
||||
{
|
||||
name: "Home",
|
||||
id: "hero",
|
||||
},
|
||||
name: "Home", id: "hero"},
|
||||
{
|
||||
name: "Services",
|
||||
id: "features",
|
||||
},
|
||||
name: "Services", id: "features"},
|
||||
{
|
||||
name: "Contact",
|
||||
id: "contact",
|
||||
},
|
||||
name: "Contact", id: "contact"},
|
||||
]}
|
||||
brandName="JR's Plumbing & Heating"
|
||||
/>
|
||||
@@ -51,22 +45,17 @@ export default function LandingPage() {
|
||||
<div id="hero" data-section="hero">
|
||||
<HeroBillboardScroll
|
||||
background={{
|
||||
variant: "plain",
|
||||
}}
|
||||
variant: "plain"}}
|
||||
title="JR's Plumbing & Heating"
|
||||
description="Your trusted local partner for all plumbing and heating needs. Fast, reliable, and professional service for your home or business."
|
||||
tag="Expert Service"
|
||||
buttons={[
|
||||
{
|
||||
text: "Contact Us",
|
||||
href: "#contact",
|
||||
},
|
||||
text: "Contact Us", href: "#contact"},
|
||||
{
|
||||
text: "Our Services",
|
||||
href: "#features",
|
||||
},
|
||||
text: "Our Services", href: "#features"},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/man-working-as-truck-driver_23-2151489843.jpg"
|
||||
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BpEUhbvBxHg7VoZG5X1CZ8tTgv/uploaded-1777591572544-8unnzdrk.jpg"
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -87,19 +76,13 @@ export default function LandingPage() {
|
||||
features={[
|
||||
{
|
||||
icon: Wrench,
|
||||
title: "Pipe Repairs",
|
||||
description: "Quick fixes for leaks and burst pipes.",
|
||||
},
|
||||
title: "Pipe Repairs", description: "Quick fixes for leaks and burst pipes."},
|
||||
{
|
||||
icon: Flame,
|
||||
title: "Heating Systems",
|
||||
description: "Full boiler and heating unit maintenance.",
|
||||
},
|
||||
title: "Heating Systems", description: "Full boiler and heating unit maintenance."},
|
||||
{
|
||||
icon: Droplets,
|
||||
title: "Drain Cleaning",
|
||||
description: "Professional unclogging and system checks.",
|
||||
},
|
||||
title: "Drain Cleaning", description: "Professional unclogging and system checks."},
|
||||
]}
|
||||
title="Our Professional Services"
|
||||
description="Comprehensive plumbing and heating solutions handled by qualified local professionals."
|
||||
@@ -113,20 +96,11 @@ export default function LandingPage() {
|
||||
tag="Reliability"
|
||||
metrics={[
|
||||
{
|
||||
id: "m1",
|
||||
value: "100%",
|
||||
description: "Customer Satisfaction",
|
||||
},
|
||||
id: "m1", value: "100%", description: "Customer Satisfaction"},
|
||||
{
|
||||
id: "m2",
|
||||
value: "24/7",
|
||||
description: "Expert Availability",
|
||||
},
|
||||
id: "m2", value: "24/7", description: "Expert Availability"},
|
||||
{
|
||||
id: "m3",
|
||||
value: "10+",
|
||||
description: "Years of Excellence",
|
||||
},
|
||||
id: "m3", value: "10+", description: "Years of Excellence"},
|
||||
]}
|
||||
metricsAnimation="slide-up"
|
||||
/>
|
||||
@@ -137,33 +111,14 @@ export default function LandingPage() {
|
||||
useInvertedBackground={false}
|
||||
testimonials={[
|
||||
{
|
||||
id: "t1",
|
||||
name: "Sarah P.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-beautiful-joyful-african-student-woman-with-dark-wavy-hair-green-cardigan-sitting-cafe-drinking-cup-coffee-smiling-camera-woman-waiting-her-boyfriend-after-university_176420-12329.jpg",
|
||||
},
|
||||
id: "t1", name: "Sarah P. (Satisfied Local Customer)", imageSrc: ""},
|
||||
{
|
||||
id: "t2",
|
||||
name: "Mark D.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-affectionate-elderly-husband-wife-dressed-casual-clothes-look-confidently-front_273609-43905.jpg",
|
||||
},
|
||||
id: "t2", name: "Mark D. (Long-time Client)", imageSrc: ""},
|
||||
{
|
||||
id: "t3",
|
||||
name: "Jessica L.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-cute-girl-looking-away_23-2148436134.jpg",
|
||||
},
|
||||
{
|
||||
id: "t4",
|
||||
name: "Brian K.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/expressive-senior-female-posing-indoor_344912-354.jpg",
|
||||
},
|
||||
{
|
||||
id: "t5",
|
||||
name: "Emily V.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-young-businesswoman_23-2149153828.jpg",
|
||||
},
|
||||
id: "t3", name: "Jessica L. (Heating Repair Client)", imageSrc: ""},
|
||||
]}
|
||||
cardTitle="What Our Neighbors Say"
|
||||
cardTag="Social Proof"
|
||||
cardTitle="Trusted by Our Neighbors"
|
||||
cardTag="Authentic Feedback"
|
||||
cardAnimation="blur-reveal"
|
||||
/>
|
||||
</div>
|
||||
@@ -174,26 +129,17 @@ export default function LandingPage() {
|
||||
useInvertedBackground={true}
|
||||
faqs={[
|
||||
{
|
||||
id: "f1",
|
||||
title: "Do you offer emergency service?",
|
||||
content: "Yes, we are available for emergency repairs to restore comfort quickly.",
|
||||
},
|
||||
id: "f1", title: "Are your technicians fully certified?", content: "Yes, all our staff are licensed, bonded, and local plumbing experts who prioritize safety and long-term solutions."},
|
||||
{
|
||||
id: "f2",
|
||||
title: "What areas do you serve?",
|
||||
content: "We proudly serve the immediate community and surrounding areas.",
|
||||
},
|
||||
id: "f2", title: "How quickly can you respond to heating issues?", content: "We make it a priority to respond to residential heating failures within a few hours to keep our neighbors warm and safe."},
|
||||
{
|
||||
id: "f3",
|
||||
title: "How can I book an appointment?",
|
||||
content: "Simply fill out our contact form or give us a call.",
|
||||
},
|
||||
id: "f3", title: "Do you provide transparent quotes?", content: "Honesty is our policy. We assess your plumbing issue first and provide a clear, fair estimate before any repair work starts."},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/young-builder-woman-construction-uniform-safety-helmet-holding-wrench-looking-it-puzzled_141793-127794.jpg"
|
||||
mediaAnimation="slide-up"
|
||||
title="Common Questions"
|
||||
description="Have questions about our service coverage or pricing?"
|
||||
title="Local Service Questions"
|
||||
description="Transparency matters. Here is how we handle common questions about our local plumbing and heating process."
|
||||
faqsAnimation="blur-reveal"
|
||||
imageSrc=""
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -201,20 +147,13 @@ export default function LandingPage() {
|
||||
<ContactCTA
|
||||
useInvertedBackground={false}
|
||||
background={{
|
||||
variant: "plain",
|
||||
}}
|
||||
tag="Get in Touch"
|
||||
title="Ready for a Service Visit?"
|
||||
description="We are ready to handle your plumbing and heating needs. Book an appointment today."
|
||||
variant: "plain"}}
|
||||
tag="Speak with a Local Pro"
|
||||
title="Ready to Fix Your Home?"
|
||||
description="Skip the big corporate hassle. Get honest, reliable, and expert local help today."
|
||||
buttons={[
|
||||
{
|
||||
text: "Call Now",
|
||||
href: "tel:+15550199",
|
||||
},
|
||||
{
|
||||
text: "Book Online",
|
||||
href: "#",
|
||||
},
|
||||
text: "Call Direct: 555-0199", href: "tel:+15550199"},
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
@@ -223,16 +162,12 @@ export default function LandingPage() {
|
||||
<FooterLogoReveal
|
||||
logoText="JR's Plumbing & Heating"
|
||||
leftLink={{
|
||||
text: "Privacy Policy",
|
||||
href: "#",
|
||||
}}
|
||||
text: "Privacy Policy", href: "#"}}
|
||||
rightLink={{
|
||||
text: "Terms of Service",
|
||||
href: "#",
|
||||
}}
|
||||
text: "Terms of Service", href: "#"}}
|
||||
/>
|
||||
</div>
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,7 @@ html {
|
||||
body {
|
||||
background-color: var(--background);
|
||||
color: var(--foreground);
|
||||
font-family: var(--font-source-sans-3), sans-serif;
|
||||
font-family: var(--font-inter-tight), sans-serif;
|
||||
position: relative;
|
||||
min-height: 100vh;
|
||||
overscroll-behavior: none;
|
||||
@@ -24,5 +24,5 @@ h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-family: var(--font-source-sans-3), sans-serif;
|
||||
font-family: var(--font-inter-tight), sans-serif;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user