4 Commits

Author SHA1 Message Date
ea5089f6e5 Update src/app/page.tsx 2026-05-23 21:29:47 +00:00
8b5cf3e3f8 Update src/app/styles/base.css 2026-05-23 21:20:33 +00:00
c343b46126 Update src/app/page.tsx 2026-05-23 21:20:33 +00:00
129d58cc34 Update src/app/layout.tsx 2026-05-23 21:20:32 +00:00
3 changed files with 79 additions and 244 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 { DM_Sans } from "next/font/google"; import { DM_Sans } from "next/font/google";
import { Poppins } from "next/font/google";
@@ -21,7 +22,9 @@ export const metadata: Metadata = {
}, },
}; };
const dmSans = DM_Sans({ variable: "--font-dm-sans", subsets: ["latin"] });
const poppins = Poppins({ variable: "--font-poppins", subsets: ["latin"], weight: ["100", "200", "300", "400", "500", "600", "700", "800", "900"] });
const inter = Inter({ variable: "--font-inter", subsets: ["latin"] });
export default function RootLayout({ export default function RootLayout({
children, children,
@@ -31,7 +34,7 @@ export default function RootLayout({
return ( return (
<html lang="en" suppressHydrationWarning> <html lang="en" suppressHydrationWarning>
<ServiceWrapper> <ServiceWrapper>
<body className={`${dmSans.variable} antialiased`}> <body className={`${poppins.variable} ${inter.variable} antialiased`}>
<Tag /> <Tag />
{children} {children}
<script <script

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: "About", name: "About", id: "about"},
id: "about",
},
{ {
name: "Contact", name: "Contact", id: "contact"},
id: "contact",
},
]} ]}
brandName="Action Ace Plumbing" brandName="Action Ace Plumbing"
/> />
@@ -56,101 +48,56 @@ export default function LandingPage() {
<HeroBillboardTestimonial <HeroBillboardTestimonial
useInvertedBackground={false} useInvertedBackground={false}
background={{ background={{
variant: "radial-gradient", variant: "radial-gradient"}}
}}
title="Emergency Plumbing in Edmonton — Honest, Fast, No Upselling" title="Emergency Plumbing in Edmonton — Honest, Fast, No Upselling"
description="From leaks to sump pumps, we fix it right the first time — and often help you solve it over the phone before we even arrive." description="From leaks to sump pumps, we fix it right the first time — and often help you solve it over the phone before we even arrive."
testimonials={[ testimonials={[
{ {
name: "Sarah J.", name: "Sarah J.", handle: "@local", testimonial: "He easily could have charged me for a visit, but walked me through fixing it myself.", rating: 5,
handle: "@local", imageSrc: "http://img.b2bpic.net/free-photo/side-view-man-working-as-plumber_23-2150746294.jpg"},
testimonial: "He easily could have charged me for a visit, but walked me through fixing it myself.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/side-view-man-working-as-plumber_23-2150746294.jpg",
},
{ {
name: "Mike R.", name: "Mike R.", handle: "@local", testimonial: "Other plumbers couldnt figure it out — Greg solved it fast.", rating: 5,
handle: "@local", imageSrc: "http://img.b2bpic.net/free-photo/portrait-confident-man-home-office_329181-20664.jpg"},
testimonial: "Other plumbers couldnt figure it out — Greg solved it fast.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/portrait-confident-man-home-office_329181-20664.jpg",
},
{ {
name: "Linda K.", name: "Linda K.", handle: "@local", testimonial: "On time, clean, and super fair pricing.", rating: 5,
handle: "@local", imageSrc: "http://img.b2bpic.net/free-photo/female-plumber-working-fix-problems-client-s-house_23-2150990738.jpg"},
testimonial: "On time, clean, and super fair pricing.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/female-plumber-working-fix-problems-client-s-house_23-2150990738.jpg",
},
{ {
name: "David M.", name: "David M.", handle: "@local", testimonial: "Absolute lifesaver for our sump pump emergency.", rating: 5,
handle: "@local", imageSrc: "http://img.b2bpic.net/free-photo/male-plumber-working-with-client-fix-kitchen-problems_23-2150990692.jpg"},
testimonial: "Absolute lifesaver for our sump pump emergency.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/male-plumber-working-with-client-fix-kitchen-problems_23-2150990692.jpg",
},
{ {
name: "Chris B.", name: "Chris B.", handle: "@local", testimonial: "Honest as they come. Highly recommend.", rating: 5,
handle: "@local", imageSrc: "http://img.b2bpic.net/free-photo/side-view-man-working-as-plumber_23-2150746289.jpg"},
testimonial: "Honest as they come. Highly recommend.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/side-view-man-working-as-plumber_23-2150746289.jpg",
},
]} ]}
buttons={[ buttons={[
{ {
text: "Call Now (24/7)", text: "Call Now (24/7)", href: "tel:5555555555"},
href: "tel:5555555555",
},
{ {
text: "Text a Photo", text: "Text a Photo", href: "sms:5555555555"},
href: "sms:5555555555",
},
]} ]}
imageSrc="http://img.b2bpic.net/free-photo/man-looking-detail-sitting-floor_259150-58258.jpg" imageSrc="http://img.b2bpic.net/free-photo/man-looking-detail-sitting-floor_259150-58258.jpg"
avatars={[ avatars={[
{ {
src: "http://img.b2bpic.net/free-photo/plumbing-professional-doing-his-job_23-2150721575.jpg", src: "http://img.b2bpic.net/free-photo/plumbing-professional-doing-his-job_23-2150721575.jpg", alt: "Customer 1"},
alt: "Customer 1",
},
{ {
src: "http://img.b2bpic.net/free-photo/plumbing-professional-doing-his-job_23-2150721552.jpg", src: "http://img.b2bpic.net/free-photo/plumbing-professional-doing-his-job_23-2150721552.jpg", alt: "Customer 2"},
alt: "Customer 2",
},
{ {
src: "http://img.b2bpic.net/free-photo/service-maintenance-worker-repairing_23-2149176721.jpg", src: "http://img.b2bpic.net/free-photo/service-maintenance-worker-repairing_23-2149176721.jpg", alt: "Customer 3"},
alt: "Customer 3",
},
{ {
src: "http://img.b2bpic.net/free-photo/male-plumber-working-fix-problems-client-s-house_23-2150990730.jpg", src: "http://img.b2bpic.net/free-photo/male-plumber-working-fix-problems-client-s-house_23-2150990730.jpg", alt: "Customer 4"},
alt: "Customer 4",
},
{ {
src: "http://img.b2bpic.net/free-photo/portrait-smiling-carefree-brunette-woman-sitting-couch-living-room-online-shopping_1258-201984.jpg", src: "http://img.b2bpic.net/free-photo/portrait-smiling-carefree-brunette-woman-sitting-couch-living-room-online-shopping_1258-201984.jpg", alt: "Customer 5"},
alt: "Customer 5",
},
]} ]}
marqueeItems={[ marqueeItems={[
{ {
type: "text", type: "text", text: "24/7 Emergency Support"},
text: "24/7 Emergency Support",
},
{ {
type: "text", type: "text", text: "Licensed & Insured"},
text: "Licensed & Insured",
},
{ {
type: "text", type: "text", text: "Edmonton Owned"},
text: "Edmonton Owned",
},
{ {
type: "text", type: "text", text: "Transparent Pricing"},
text: "Transparent Pricing",
},
{ {
type: "text", type: "text", text: "Same-Day Service"},
text: "Same-Day Service",
},
]} ]}
/> />
</div> </div>
@@ -162,64 +109,28 @@ export default function LandingPage() {
useInvertedBackground={true} useInvertedBackground={true}
features={[ features={[
{ {
id: "f1", id: "f1", label: "Faucets ", title: "Leaky Faucets & Pipes", items: [
label: "Faucets", "Repair of all brands", "Pipe leak sealing", "Drip prevention"],
title: "Leaky Faucets & Pipes",
items: [
"Repair of all brands",
"Pipe leak sealing",
"Drip prevention",
],
}, },
{ {
id: "f2", id: "f2", label: "Toilets", title: "Toilet Repairs", items: [
label: "Toilets", "Replacement", "Flushing issues", "Clog clearing"],
title: "Toilet Repairs",
items: [
"Replacement",
"Flushing issues",
"Clog clearing",
],
}, },
{ {
id: "f3", id: "f3", label: "Sump", title: "Sump Pump Repair", items: [
label: "Sump", "Emergency flood prevention", "Diagnostics", "Replacement units"],
title: "Sump Pump Repair",
items: [
"Emergency flood prevention",
"Diagnostics",
"Replacement units",
],
}, },
{ {
id: "f4", id: "f4", label: "Drain", title: "Drain & Main Line", items: [
label: "Drain", "Main line clearance", "Drain diagnostics", "Blockage removal"],
title: "Drain & Main Line",
items: [
"Main line clearance",
"Drain diagnostics",
"Blockage removal",
],
}, },
{ {
id: "f5", id: "f5", label: "Kitchen", title: "Kitchen & Bath", items: [
label: "Kitchen", "Shower valves", "Tub repairs", "Kitchen fixtures"],
title: "Kitchen & Bath",
items: [
"Shower valves",
"Tub repairs",
"Kitchen fixtures",
],
}, },
{ {
id: "f6", id: "f6", label: "Emergency", title: "Emergency Shutoff", items: [
label: "Emergency", "24/7 support", "Water shutoff fixes", "Pressure problems"],
title: "Emergency Shutoff",
items: [
"24/7 support",
"Water shutoff fixes",
"Pressure problems",
],
}, },
]} ]}
title="What We Fix" title="What We Fix"
@@ -234,17 +145,11 @@ export default function LandingPage() {
description="Action Ace Plumbing is built on one principle: Do whats right for the homeowner. We prioritize helping you solve issues over the phone before we ever arrive." description="Action Ace Plumbing is built on one principle: Do whats right for the homeowner. We prioritize helping you solve issues over the phone before we ever arrive."
metrics={[ metrics={[
{ {
value: "52+", value: "52+", title: "5-Star Reviews"},
title: "5-Star Reviews",
},
{ {
value: "24/7", value: "24/7", title: "Emergency Support"},
title: "Emergency Support",
},
{ {
value: "100%", value: "100%", title: "Honest Advice"},
title: "Honest Advice",
},
]} ]}
imageSrc="http://img.b2bpic.net/free-photo/electrician-is-mounting-electric-sockets-white-wall-indoors_169016-17480.jpg" imageSrc="http://img.b2bpic.net/free-photo/electrician-is-mounting-electric-sockets-white-wall-indoors_169016-17480.jpg"
mediaAnimation="slide-up" mediaAnimation="slide-up"
@@ -260,25 +165,15 @@ export default function LandingPage() {
author="Verified Customer, Edmonton" author="Verified Customer, Edmonton"
avatars={[ avatars={[
{ {
src: "http://img.b2bpic.net/free-photo/smiling-young-woman-pouring-coffee-cup-hold-by-his-boyfriend-kitchen_23-2148120463.jpg", src: "http://img.b2bpic.net/free-photo/smiling-young-woman-pouring-coffee-cup-hold-by-his-boyfriend-kitchen_23-2148120463.jpg", alt: "Customer 1"},
alt: "Customer 1",
},
{ {
src: "http://img.b2bpic.net/free-photo/woman-calling-plumber-solve-kitchen-problems_23-2150990674.jpg", src: "http://img.b2bpic.net/free-photo/woman-calling-plumber-solve-kitchen-problems_23-2150990674.jpg", alt: "Customer 2"},
alt: "Customer 2",
},
{ {
src: "http://img.b2bpic.net/free-photo/pleased-young-male-builder-wearing-uniform-safety-helmet-showing-handshakes-gesture-purple_141793-74804.jpg", src: "http://img.b2bpic.net/free-photo/pleased-young-male-builder-wearing-uniform-safety-helmet-showing-handshakes-gesture-purple_141793-74804.jpg", alt: "Customer 3"},
alt: "Customer 3",
},
{ {
src: "http://img.b2bpic.net/free-photo/side-view-man-working-as-plumber_23-2150746308.jpg", src: "http://img.b2bpic.net/free-photo/side-view-man-working-as-plumber_23-2150746308.jpg", alt: "Customer 4"},
alt: "Customer 4",
},
{ {
src: "http://img.b2bpic.net/free-photo/happy-gay-couple-having-fun-kitchen_23-2147744704.jpg", src: "http://img.b2bpic.net/free-photo/happy-gay-couple-having-fun-kitchen_23-2147744704.jpg", alt: "Customer 5"},
alt: "Customer 5",
},
]} ]}
ratingAnimation="blur-reveal" ratingAnimation="blur-reveal"
avatarsAnimation="slide-up" avatarsAnimation="slide-up"
@@ -291,30 +186,15 @@ export default function LandingPage() {
useInvertedBackground={false} useInvertedBackground={false}
faqs={[ faqs={[
{ {
id: "faq1", id: "faq1", title: "🚨 Emergency Plumbing", content: "Fast response, phone-first troubleshooting, same-day site visits for critical failures."},
title: "🚨 Emergency Plumbing",
content: "Fast response, phone-first troubleshooting, same-day site visits for critical failures.",
},
{ {
id: "faq2", id: "faq2", title: "🚽 Toilet & Bathroom", content: "Comprehensive service for leaks, replacements, flushing issues, and clogs."},
title: "🚽 Toilet & Bathroom",
content: "Comprehensive service for leaks, replacements, flushing issues, and clogs.",
},
{ {
id: "faq3", id: "faq3", title: "🌊 Sump Pump Services", content: "Diagnostics, repair, and replacement to keep your basement dry."},
title: "🌊 Sump Pump Services",
content: "Diagnostics, repair, and replacement to keep your basement dry.",
},
{ {
id: "faq4", id: "faq4", title: "🚰 Leak Detection", content: "We identify hidden leaks and pressure problems before they cause structural damage."},
title: "🚰 Leak Detection",
content: "We identify hidden leaks and pressure problems before they cause structural damage.",
},
{ {
id: "faq5", id: "faq5", title: "🧰 General Plumbing", content: "From faucet swaps to small household fixes, we treat every job with total honesty."},
title: "🧰 General Plumbing",
content: "From faucet swaps to small household fixes, we treat every job with total honesty.",
},
]} ]}
title="Service Details" title="Service Details"
description="Clear answers to your plumbing maintenance and repair questions." description="Clear answers to your plumbing maintenance and repair questions."
@@ -329,26 +209,12 @@ export default function LandingPage() {
useInvertedBackground={true} useInvertedBackground={true}
metrics={[ metrics={[
{ {
id: "m1", id: "m1", value: "Phone
value: "Phone-First", ", title: "Phone", description: "We often help you fix it BEFORE charging you.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-beautiful-young-shows-paper-with-stay-home-phrase-sofa_74190-10319.jpg"},
title: "Phone-First Help",
description: "We often help you fix it BEFORE charging you.",
imageSrc: "http://img.b2bpic.net/free-photo/portrait-beautiful-young-shows-paper-with-stay-home-phrase-sofa_74190-10319.jpg",
},
{ {
id: "m2", id: "m2", value: "Transparent", title: "Clear Explanation", description: "We explain everything clearly so you're never in the dark.", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-smiley-woman-construction_23-2149366626.jpg"},
value: "Transparent",
title: "Clear Explanation",
description: "We explain everything clearly so you're never in the dark.",
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-smiley-woman-construction_23-2149366626.jpg",
},
{ {
id: "m3", id: "m3", value: "Honest", title: "No Pressure", description: "We don't push unnecessary repairs. Ever.", imageSrc: "http://img.b2bpic.net/free-photo/female-plumber-working-fix-problems-client-s-house_23-2150990731.jpg"},
value: "Honest",
title: "No Pressure",
description: "We don't push unnecessary repairs. Ever.",
imageSrc: "http://img.b2bpic.net/free-photo/female-plumber-working-fix-problems-client-s-house_23-2150990731.jpg",
},
]} ]}
title="Why Action Ace Is Different" title="Why Action Ace Is Different"
description="We prioritize our customers over upsells." description="We prioritize our customers over upsells."
@@ -360,14 +226,7 @@ export default function LandingPage() {
textboxLayout="default" textboxLayout="default"
useInvertedBackground={false} useInvertedBackground={false}
names={[ names={[
"Edmonton Central", "Edmonton Central", "St. Albert", "Sherwood Park", "Spruce Grove", "Leduc", "Fort Saskatchewan", "Beaumont"]}
"St. Albert",
"Sherwood Park",
"Spruce Grove",
"Leduc",
"Fort Saskatchewan",
"Beaumont",
]}
title="Serving Edmonton & Area" title="Serving Edmonton & Area"
description="Reliable plumbing care across the Edmonton metro region." description="Reliable plumbing care across the Edmonton metro region."
/> />
@@ -380,20 +239,12 @@ export default function LandingPage() {
description="Call us before it gets worse. Many issues can be diagnosed instantly over the phone." description="Call us before it gets worse. Many issues can be diagnosed instantly over the phone."
inputs={[ inputs={[
{ {
name: "name", name: "name", type: "text", placeholder: "Your Name"},
type: "text",
placeholder: "Your Name",
},
{ {
name: "phone", name: "phone", type: "tel", placeholder: "Your Phone Number"},
type: "tel",
placeholder: "Your Phone Number",
},
]} ]}
textarea={{ textarea={{
name: "message", name: "message", placeholder: "Describe your issue (Upload a photo if possible)"}}
placeholder: "Describe your issue (Upload a photo if possible)",
}}
imageSrc="http://img.b2bpic.net/free-photo/digital-tablet-with-layout-worker-clothes-top-view_169016-24423.jpg" imageSrc="http://img.b2bpic.net/free-photo/digital-tablet-with-layout-worker-clothes-top-view_169016-24423.jpg"
buttonText="Get Help Now" buttonText="Get Help Now"
/> />
@@ -403,50 +254,31 @@ export default function LandingPage() {
<FooterBase <FooterBase
columns={[ columns={[
{ {
title: "Services", title: "Services", items: [
items: [
{ {
label: "Emergency Plumbing", label: "Emergency Plumbing", href: "#"},
href: "#",
},
{ {
label: "Drain Cleaning", label: "Drain Cleaning", href: "#"},
href: "#",
},
{ {
label: "Sump Pump Repair", label: "Sump Pump Repair", href: "#"},
href: "#",
},
], ],
}, },
{ {
title: "Company", title: "Company", items: [
items: [
{ {
label: "About Us", label: "About Us", href: "#"},
href: "#",
},
{ {
label: "Reviews", label: "Reviews", href: "#"},
href: "#",
},
{ {
label: "Service Area", label: "Service Area", href: "#"},
href: "#",
},
], ],
}, },
{ {
title: "Help", title: "Help", items: [
items: [
{ {
label: "Privacy Policy", label: "Privacy Policy", href: "#"},
href: "#",
},
{ {
label: "Contact", label: "Contact", href: "#contact"},
href: "#contact",
},
], ],
}, },
]} ]}
@@ -456,4 +288,4 @@ export default function LandingPage() {
</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-dm-sans), 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-dm-sans), sans-serif; font-family: var(--font-poppins), sans-serif;
} }