6 Commits

Author SHA1 Message Date
007bde6042 Merge version_2 into main
Merge version_2 into main
2026-05-23 21:29:50 +00:00
ea5089f6e5 Update src/app/page.tsx 2026-05-23 21:29:47 +00:00
641b076694 Merge version_2 into main
Merge version_2 into main
2026-05-23 21:20:36 +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 { getVisualEditScript } from "@/utils/visual-edit-script";
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({
children,
@@ -31,7 +34,7 @@ export default function RootLayout({
return (
<html lang="en" suppressHydrationWarning>
<ServiceWrapper>
<body className={`${dmSans.variable} antialiased`}>
<body className={`${poppins.variable} ${inter.variable} antialiased`}>
<Tag />
{children}
<script

View File

@@ -32,21 +32,13 @@ export default function LandingPage() {
<NavbarStyleCentered
navItems={[
{
name: "Home",
id: "hero",
},
name: "Home", id: "hero"},
{
name: "Services",
id: "services",
},
name: "Services", id: "services"},
{
name: "About",
id: "about",
},
name: "About", id: "about"},
{
name: "Contact",
id: "contact",
},
name: "Contact", id: "contact"},
]}
brandName="Action Ace Plumbing"
/>
@@ -56,101 +48,56 @@ export default function LandingPage() {
<HeroBillboardTestimonial
useInvertedBackground={false}
background={{
variant: "radial-gradient",
}}
variant: "radial-gradient"}}
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."
testimonials={[
{
name: "Sarah J.",
handle: "@local",
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: "Sarah J.", handle: "@local", 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.",
handle: "@local",
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: "Mike R.", handle: "@local", 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.",
handle: "@local",
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: "Linda K.", handle: "@local", 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.",
handle: "@local",
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: "David M.", handle: "@local", 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.",
handle: "@local",
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",
},
name: "Chris B.", handle: "@local", 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={[
{
text: "Call Now (24/7)",
href: "tel:5555555555",
},
text: "Call Now (24/7)", href: "tel:5555555555"},
{
text: "Text a Photo",
href: "sms:5555555555",
},
text: "Text a Photo", href: "sms:5555555555"},
]}
imageSrc="http://img.b2bpic.net/free-photo/man-looking-detail-sitting-floor_259150-58258.jpg"
avatars={[
{
src: "http://img.b2bpic.net/free-photo/plumbing-professional-doing-his-job_23-2150721575.jpg",
alt: "Customer 1",
},
src: "http://img.b2bpic.net/free-photo/plumbing-professional-doing-his-job_23-2150721575.jpg", alt: "Customer 1"},
{
src: "http://img.b2bpic.net/free-photo/plumbing-professional-doing-his-job_23-2150721552.jpg",
alt: "Customer 2",
},
src: "http://img.b2bpic.net/free-photo/plumbing-professional-doing-his-job_23-2150721552.jpg", alt: "Customer 2"},
{
src: "http://img.b2bpic.net/free-photo/service-maintenance-worker-repairing_23-2149176721.jpg",
alt: "Customer 3",
},
src: "http://img.b2bpic.net/free-photo/service-maintenance-worker-repairing_23-2149176721.jpg", alt: "Customer 3"},
{
src: "http://img.b2bpic.net/free-photo/male-plumber-working-fix-problems-client-s-house_23-2150990730.jpg",
alt: "Customer 4",
},
src: "http://img.b2bpic.net/free-photo/male-plumber-working-fix-problems-client-s-house_23-2150990730.jpg", alt: "Customer 4"},
{
src: "http://img.b2bpic.net/free-photo/portrait-smiling-carefree-brunette-woman-sitting-couch-living-room-online-shopping_1258-201984.jpg",
alt: "Customer 5",
},
src: "http://img.b2bpic.net/free-photo/portrait-smiling-carefree-brunette-woman-sitting-couch-living-room-online-shopping_1258-201984.jpg", alt: "Customer 5"},
]}
marqueeItems={[
{
type: "text",
text: "24/7 Emergency Support",
},
type: "text", text: "24/7 Emergency Support"},
{
type: "text",
text: "Licensed & Insured",
},
type: "text", text: "Licensed & Insured"},
{
type: "text",
text: "Edmonton Owned",
},
type: "text", text: "Edmonton Owned"},
{
type: "text",
text: "Transparent Pricing",
},
type: "text", text: "Transparent Pricing"},
{
type: "text",
text: "Same-Day Service",
},
type: "text", text: "Same-Day Service"},
]}
/>
</div>
@@ -162,64 +109,28 @@ export default function LandingPage() {
useInvertedBackground={true}
features={[
{
id: "f1",
label: "Faucets",
title: "Leaky Faucets & Pipes",
items: [
"Repair of all brands",
"Pipe leak sealing",
"Drip prevention",
],
id: "f1", label: "Faucets ", title: "Leaky Faucets & Pipes", items: [
"Repair of all brands", "Pipe leak sealing", "Drip prevention"],
},
{
id: "f2",
label: "Toilets",
title: "Toilet Repairs",
items: [
"Replacement",
"Flushing issues",
"Clog clearing",
],
id: "f2", label: "Toilets", title: "Toilet Repairs", items: [
"Replacement", "Flushing issues", "Clog clearing"],
},
{
id: "f3",
label: "Sump",
title: "Sump Pump Repair",
items: [
"Emergency flood prevention",
"Diagnostics",
"Replacement units",
],
id: "f3", label: "Sump", title: "Sump Pump Repair", items: [
"Emergency flood prevention", "Diagnostics", "Replacement units"],
},
{
id: "f4",
label: "Drain",
title: "Drain & Main Line",
items: [
"Main line clearance",
"Drain diagnostics",
"Blockage removal",
],
id: "f4", label: "Drain", title: "Drain & Main Line", items: [
"Main line clearance", "Drain diagnostics", "Blockage removal"],
},
{
id: "f5",
label: "Kitchen",
title: "Kitchen & Bath",
items: [
"Shower valves",
"Tub repairs",
"Kitchen fixtures",
],
id: "f5", label: "Kitchen", title: "Kitchen & Bath", items: [
"Shower valves", "Tub repairs", "Kitchen fixtures"],
},
{
id: "f6",
label: "Emergency",
title: "Emergency Shutoff",
items: [
"24/7 support",
"Water shutoff fixes",
"Pressure problems",
],
id: "f6", label: "Emergency", title: "Emergency Shutoff", items: [
"24/7 support", "Water shutoff fixes", "Pressure problems"],
},
]}
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."
metrics={[
{
value: "52+",
title: "5-Star Reviews",
},
value: "52+", title: "5-Star Reviews"},
{
value: "24/7",
title: "Emergency Support",
},
value: "24/7", title: "Emergency Support"},
{
value: "100%",
title: "Honest Advice",
},
value: "100%", title: "Honest Advice"},
]}
imageSrc="http://img.b2bpic.net/free-photo/electrician-is-mounting-electric-sockets-white-wall-indoors_169016-17480.jpg"
mediaAnimation="slide-up"
@@ -260,25 +165,15 @@ export default function LandingPage() {
author="Verified Customer, Edmonton"
avatars={[
{
src: "http://img.b2bpic.net/free-photo/smiling-young-woman-pouring-coffee-cup-hold-by-his-boyfriend-kitchen_23-2148120463.jpg",
alt: "Customer 1",
},
src: "http://img.b2bpic.net/free-photo/smiling-young-woman-pouring-coffee-cup-hold-by-his-boyfriend-kitchen_23-2148120463.jpg", alt: "Customer 1"},
{
src: "http://img.b2bpic.net/free-photo/woman-calling-plumber-solve-kitchen-problems_23-2150990674.jpg",
alt: "Customer 2",
},
src: "http://img.b2bpic.net/free-photo/woman-calling-plumber-solve-kitchen-problems_23-2150990674.jpg", 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",
alt: "Customer 3",
},
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"},
{
src: "http://img.b2bpic.net/free-photo/side-view-man-working-as-plumber_23-2150746308.jpg",
alt: "Customer 4",
},
src: "http://img.b2bpic.net/free-photo/side-view-man-working-as-plumber_23-2150746308.jpg", alt: "Customer 4"},
{
src: "http://img.b2bpic.net/free-photo/happy-gay-couple-having-fun-kitchen_23-2147744704.jpg",
alt: "Customer 5",
},
src: "http://img.b2bpic.net/free-photo/happy-gay-couple-having-fun-kitchen_23-2147744704.jpg", alt: "Customer 5"},
]}
ratingAnimation="blur-reveal"
avatarsAnimation="slide-up"
@@ -291,30 +186,15 @@ export default function LandingPage() {
useInvertedBackground={false}
faqs={[
{
id: "faq1",
title: "🚨 Emergency Plumbing",
content: "Fast response, phone-first troubleshooting, same-day site visits for critical failures.",
},
id: "faq1", title: "🚨 Emergency Plumbing", content: "Fast response, phone-first troubleshooting, same-day site visits for critical failures."},
{
id: "faq2",
title: "🚽 Toilet & Bathroom",
content: "Comprehensive service for leaks, replacements, flushing issues, and clogs.",
},
id: "faq2", title: "🚽 Toilet & Bathroom", content: "Comprehensive service for leaks, replacements, flushing issues, and clogs."},
{
id: "faq3",
title: "🌊 Sump Pump Services",
content: "Diagnostics, repair, and replacement to keep your basement dry.",
},
id: "faq3", title: "🌊 Sump Pump Services", content: "Diagnostics, repair, and replacement to keep your basement dry."},
{
id: "faq4",
title: "🚰 Leak Detection",
content: "We identify hidden leaks and pressure problems before they cause structural damage.",
},
id: "faq4", title: "🚰 Leak Detection", content: "We identify hidden leaks and pressure problems before they cause structural damage."},
{
id: "faq5",
title: "🧰 General Plumbing",
content: "From faucet swaps to small household fixes, we treat every job with total honesty.",
},
id: "faq5", title: "🧰 General Plumbing", content: "From faucet swaps to small household fixes, we treat every job with total honesty."},
]}
title="Service Details"
description="Clear answers to your plumbing maintenance and repair questions."
@@ -329,26 +209,12 @@ export default function LandingPage() {
useInvertedBackground={true}
metrics={[
{
id: "m1",
value: "Phone-First",
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: "m1", value: "Phone
", 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"},
{
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",
},
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"},
{
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",
},
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"},
]}
title="Why Action Ace Is Different"
description="We prioritize our customers over upsells."
@@ -360,14 +226,7 @@ export default function LandingPage() {
textboxLayout="default"
useInvertedBackground={false}
names={[
"Edmonton Central",
"St. Albert",
"Sherwood Park",
"Spruce Grove",
"Leduc",
"Fort Saskatchewan",
"Beaumont",
]}
"Edmonton Central", "St. Albert", "Sherwood Park", "Spruce Grove", "Leduc", "Fort Saskatchewan", "Beaumont"]}
title="Serving Edmonton & Area"
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."
inputs={[
{
name: "name",
type: "text",
placeholder: "Your Name",
},
name: "name", type: "text", placeholder: "Your Name"},
{
name: "phone",
type: "tel",
placeholder: "Your Phone Number",
},
name: "phone", type: "tel", placeholder: "Your Phone Number"},
]}
textarea={{
name: "message",
placeholder: "Describe your issue (Upload a photo if possible)",
}}
name: "message", 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"
buttonText="Get Help Now"
/>
@@ -403,50 +254,31 @@ export default function LandingPage() {
<FooterBase
columns={[
{
title: "Services",
items: [
title: "Services", items: [
{
label: "Emergency Plumbing",
href: "#",
},
label: "Emergency Plumbing", href: "#"},
{
label: "Drain Cleaning",
href: "#",
},
label: "Drain Cleaning", href: "#"},
{
label: "Sump Pump Repair",
href: "#",
},
label: "Sump Pump Repair", href: "#"},
],
},
{
title: "Company",
items: [
title: "Company", items: [
{
label: "About Us",
href: "#",
},
label: "About Us", href: "#"},
{
label: "Reviews",
href: "#",
},
label: "Reviews", href: "#"},
{
label: "Service Area",
href: "#",
},
label: "Service Area", href: "#"},
],
},
{
title: "Help",
items: [
title: "Help", items: [
{
label: "Privacy Policy",
href: "#",
},
label: "Privacy Policy", href: "#"},
{
label: "Contact",
href: "#contact",
},
label: "Contact", href: "#contact"},
],
},
]}
@@ -456,4 +288,4 @@ export default function LandingPage() {
</ReactLenis>
</ThemeProvider>
);
}
}

View File

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