5 Commits

Author SHA1 Message Date
6016e0b14f Merge version_3_1782179172075 into main
Merge version_3_1782179172075 into main
2026-06-23 01:49:00 +00:00
kudinDmitriyUp
5bff2a73ce Bob AI: Add quote modal with WhatsApp submission to hero section 2026-06-23 01:48:16 +00:00
e8617246ba Merge version_2_1782178926956 into main
Merge version_2_1782178926956 into main
2026-06-23 01:43:48 +00:00
kudinDmitriyUp
012952a923 Bob AI: Update the design to use an even more premium color palette, 2026-06-23 01:43:11 +00:00
94aed304ef Merge version_1_1782178609070 into main
Merge version_1_1782178609070 into main
2026-06-23 01:38:07 +00:00
11 changed files with 320 additions and 145 deletions

View File

@@ -5,14 +5,14 @@
:root {
/* @colorThemes/lightTheme/grayNavyBlue */
--background: #020617;
--card: #0f172a;
--background: #0B101E;
--card: #131B2F;
--foreground: #f8fafc;
--primary-cta: #fbbf24;
--primary-cta: #D4AF37;
--primary-cta-text: #0f172a;
--secondary-cta: #1e293b;
--secondary-cta-text: #f8fafc;
--accent: #fbbf24;
--accent: #D4AF37;
--background-accent: #1e293b;
/* @layout/border-radius/rounded */

View File

@@ -1,146 +1,31 @@
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqTabbedAccordion from '@/components/sections/faq/FaqTabbedAccordion';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import FeaturesRevealCards from '@/components/sections/features/FeaturesRevealCards';
import HeroSplit from '@/components/sections/hero/HeroSplit';
import PricingHighlightedCards from '@/components/sections/pricing/PricingHighlightedCards';
import TeamStackedCards from '@/components/sections/team/TeamStackedCards';
import TestimonialQuoteCards from '@/components/sections/testimonial/TestimonialQuoteCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
// AUTO-GENERATED shell by per-section-migrate.
// Section bodies live in ./<PageBase>/sections/<X>.tsx. Edit the section
// files directly. Non-block content (wrappers, non-inlinable sections) is
// preserved inline; extracted section blocks become <XSection/> refs.
export default function HomePage() {
import React from 'react';
import HeroSection from './HomePage/sections/Hero';
import ServicesSection from './HomePage/sections/Services';
import WhyUsSection from './HomePage/sections/WhyUs';
import GallerySection from './HomePage/sections/Gallery';
import TestimonialsSection from './HomePage/sections/Testimonials';
import PricingSection from './HomePage/sections/Pricing';
import AboutSection from './HomePage/sections/About';
import FaqSection from './HomePage/sections/Faq';
import ContactSection from './HomePage/sections/Contact';
export default function HomePage(): React.JSX.Element {
return (
<>
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroSplit
tag="AquaFlow Plumbing Services"
title="Elite Plumbing Excellence in Your Home"
description="Experience professional plumbing care with 24/7 emergency support. We provide luxury service and rapid response for all your residential and commercial needs."
primaryButton={{ text: "Get Free Quote", href: "#contact" }}
secondaryButton={{ text: "Call Now", href: "tel:+15551234567" }}
imageSrc="http://img.b2bpic.net/free-photo/plumbing-professional-doing-his-job_23-2150721552.jpg"
/>
</SectionErrorBoundary>
</div>
<div id="services" data-section="services">
<SectionErrorBoundary name="services">
<FeaturesImageBento
tag="Our Expertise"
title="Comprehensive Plumbing Solutions"
description="Providing end-to-end solutions for your home and business plumbing systems."
items={[
{ title: "Emergency Services", description: "24/7 immediate response", imageSrc: "http://img.b2bpic.net/free-photo/bathtub_1203-3380.jpg" },
{ title: "Leak Detection", description: "High-tech precise detection", imageSrc: "http://img.b2bpic.net/free-photo/pro-kitchen-sprayer-sleek-sink-stone-backsplash_169016-69285.jpg" },
{ title: "Drain Cleaning", description: "Advanced clearing solutions", imageSrc: "http://img.b2bpic.net/free-photo/view-exposed-plumbing-pipes_23-2150990678.jpg" },
{ title: "Pipe Repair", description: "Reliable and fast repair", imageSrc: "http://img.b2bpic.net/free-photo/new-surface-builtin-kitchen-technics-electrical-stove-with-clock-indicator-handing-textile-tovel-photo-with-shallow-depth-field_628469-37.jpg" },
{ title: "Heater Installation", description: "Expert water heater setup", imageSrc: "http://img.b2bpic.net/free-photo/modern-autonomous-heating-system-boiler-room_169016-53691.jpg" },
{ title: "Bathroom Plumbing", description: "Luxury fixture fitting", imageSrc: "http://img.b2bpic.net/free-photo/front-view-elegant-candlestick-dark-surface_179666-37730.jpg" },
{ title: "Kitchen Systems", description: "Premium kitchen solutions", imageSrc: "http://img.b2bpic.net/free-photo/robotic-wireless-vacuum-cleaner-control-by-smartphone-app_23-2150783857.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
<div id="why-us" data-section="why-us">
<SectionErrorBoundary name="why-us">
<FeaturesRevealCards
tag="Why Us"
title="The AquaFlow Standard"
description="Why homeowners trust us with their plumbing systems."
items={[
{ title: "Certified Experts", description: "Professional training for all technicians.", imageSrc: "http://img.b2bpic.net/free-photo/tools-materials-sanitary-works_93675-132627.jpg" },
{ title: "Reliable Results", description: "Guaranteed service performance every time.", imageSrc: "http://img.b2bpic.net/free-photo/man-installs-heating-system-house-checks-pipes-with-wrench_169016-55837.jpg" },
{ title: "24/7 Availability", description: "Round the clock for your safety.", imageSrc: "http://img.b2bpic.net/free-photo/kitchen-faucet-water-aerator-metal-texture_169016-68888.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
<div id="gallery" data-section="gallery">
<SectionErrorBoundary name="gallery">
<FeaturesImageBento
tag="Projects"
title="Before & After Our Work"
description="Visual proof of the AquaFlow professional difference."
items={[
{ title: "Bathroom", description: "Renovation plumbing", imageSrc: "http://img.b2bpic.net/free-photo/person-white-bathrobe-filling-bath-with-water_259150-59743.jpg" },
{ title: "Kitchen", description: "Fixture installation", imageSrc: "http://img.b2bpic.net/free-photo/black-faucet-with-steel-sink-stylish-modern-kitchen_169016-19744.jpg" },
{ title: "Pipes", description: "Luxury home layout", imageSrc: "http://img.b2bpic.net/free-photo/3d-geometric-abstract-twist-background_1048-18271.jpg" },
{ title: "Laundry", description: "Sleek utility setup", imageSrc: "http://img.b2bpic.net/free-photo/drinking-water_1150-18023.jpg" },
{ title: "Water Heater", description: "Modern basement system", imageSrc: "http://img.b2bpic.net/free-photo/spring-faucet-led-strip-blue-kitchen_169016-69053.jpg" },
{ title: "Shower", description: "Gold luxury fitting", imageSrc: "http://img.b2bpic.net/free-photo/retro-shower-house-classical-antique_1203-5010.jpg" },
{ title: "Leak Sensor", description: "Advanced protection", imageSrc: "http://img.b2bpic.net/free-photo/red-fire-extinguisher-white-wall_250224-73.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialQuoteCards
tag="Feedback"
title="Our Clients Trust Us"
description="Hear why AquaFlow is the top choice for plumbing excellence."
testimonials={[
{ name: "Sarah Johnson", role: "Homeowner", quote: "Professional, fast, and incredibly tidy. AquaFlow saved our kitchen!", imageSrc: "http://img.b2bpic.net/free-photo/employee-working-with-trendy-clothes_482257-78860.jpg" },
{ name: "Michael Chen", role: "Property Manager", quote: "Reliable 24/7 response. I trust them with all my rental properties.", imageSrc: "http://img.b2bpic.net/free-photo/happy-successful-businessman-posing-outside_74855-2003.jpg" },
{ name: "Emily Rodriguez", role: "Renovator", quote: "The precision in their pipe layouts is unmatched. Top-notch work.", imageSrc: "http://img.b2bpic.net/free-photo/diy-activity-online-content-craft-creation_23-2151515819.jpg" },
{ name: "David Kim", role: "Homeowner", quote: "Expert technicians, fair pricing, and they truly care about quality.", imageSrc: "http://img.b2bpic.net/free-photo/young-beautiful-brunette-woman-wearing-casual-sweater-standing-red-background-pointing-fingers-camera-with-happy-funny-face-good-energy-vibes_839833-6469.jpg" },
{ name: "Lisa Wang", role: "Interior Designer", quote: "Always my first call for luxury bathroom project plumbing.", imageSrc: "http://img.b2bpic.net/free-photo/excited-multiethnic-couple-stand-surrounded-by-moving-boxes-taking-break-capture-selfie-with_482257-134995.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
<div id="pricing" data-section="pricing">
<SectionErrorBoundary name="pricing">
<PricingHighlightedCards
tag="Pricing"
title="Transparent Service Packages"
description="Choose the plumbing solution that fits your needs."
plans={[
{ tag: "Quick Fix", price: "$99", description: "Minor repairs and quick tasks.", features: ["Drain inspection", "Quick leak patch", "1hr service"], primaryButton: { text: "Select", href: "#contact" } },
{ tag: "Pro Maintenance", price: "$299", description: "Best for household systems.", features: ["Full system check", "Heater flush", "Preventative care"], highlight: "Most Popular", primaryButton: { text: "Select", href: "#contact" } },
{ tag: "Full Installation", price: "Custom", description: "For renovations and new setups.", features: ["Custom pipe layout", "Luxury fixture fitting", "Warranty included"], primaryButton: { text: "Request", href: "#contact" } }
]}
/>
</SectionErrorBoundary>
</div>
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<TeamStackedCards
tag="Our Team"
title="Meet the AquaFlow Specialists"
description="Highly trained, vetted, and professional master plumbers."
members={[
{ name: "Marcus V.", role: "Master Plumber", imageSrc: "http://img.b2bpic.net/free-photo/modern-automobile-mechanic-composition_23-2147881158.jpg" },
{ name: "Elena R.", role: "Installation Expert", imageSrc: "http://img.b2bpic.net/free-photo/cheerful-workman-white-wall_23-2147772246.jpg" },
{ name: "James K.", role: "Drain Specialist", imageSrc: "http://img.b2bpic.net/free-photo/performing-housework-gentle-dreamy-atmosphere_23-2151469427.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqTabbedAccordion
tag="FAQ"
title="Common Plumbing Questions"
description="Clear answers to help you maintain your plumbing system."
categories={[
{ name: "General", items: [{ question: "What is the emergency fee?", answer: "It varies by location, but we provide transparent pricing upfront." }, { question: "Are you licensed?", answer: "Yes, all our plumbers are fully certified and insured." }] },
{ name: "Services", items: [{ question: "Do you install heaters?", answer: "Yes, we specialize in high-efficiency water heater installations." }, { question: "Do you work on weekends?", answer: "We are open 24/7 including weekends and holidays." }] }
]}
cta={{ name: "John Doe", role: "Customer Support", buttonText: "Contact Support", buttonHref: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/portrait-male-car-mechanic-car-repair-shop_23-2150367579.jpg" }}
/>
</SectionErrorBoundary>
</div>
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Contact"
text="Ready to get started? Contact AquaFlow today for a professional plumbing solution."
primaryButton={{ text: "Free Quote", href: "#" }}
secondaryButton={{ text: "Call Now", href: "tel:+15551234567" }}
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<ServicesSection />
<WhyUsSection />
<GallerySection />
<TestimonialsSection />
<PricingSection />
<AboutSection />
<FaqSection />
<ContactSection />
</>
);
}

View File

@@ -0,0 +1,25 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "about" section.
import React from 'react';
import TeamStackedCards from '@/components/sections/team/TeamStackedCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function AboutSection(): React.JSX.Element {
return (
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<TeamStackedCards
tag="Our Team"
title="Meet the AquaFlow Specialists"
description="Highly trained, vetted, and professional master plumbers."
members={[
{ name: "Marcus V.", role: "Master Plumber", imageSrc: "http://img.b2bpic.net/free-photo/modern-automobile-mechanic-composition_23-2147881158.jpg" },
{ name: "Elena R.", role: "Installation Expert", imageSrc: "http://img.b2bpic.net/free-photo/cheerful-workman-white-wall_23-2147772246.jpg" },
{ name: "James K.", role: "Drain Specialist", imageSrc: "http://img.b2bpic.net/free-photo/performing-housework-gentle-dreamy-atmosphere_23-2151469427.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,21 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "contact" section.
import React from 'react';
import ContactCta from '@/components/sections/contact/ContactCta';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ContactSection(): React.JSX.Element {
return (
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Contact"
text="Ready to get started? Contact AquaFlow today for a professional plumbing solution."
primaryButton={{ text: "Free Quote", href: "#" }}
secondaryButton={{ text: "Call Now", href: "tel:+15551234567" }}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,25 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "faq" section.
import React from 'react';
import FaqTabbedAccordion from '@/components/sections/faq/FaqTabbedAccordion';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FaqSection(): React.JSX.Element {
return (
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqTabbedAccordion
tag="FAQ"
title="Common Plumbing Questions"
description="Clear answers to help you maintain your plumbing system."
categories={[
{ name: "General", items: [{ question: "What is the emergency fee?", answer: "It varies by location, but we provide transparent pricing upfront." }, { question: "Are you licensed?", answer: "Yes, all our plumbers are fully certified and insured." }] },
{ name: "Services", items: [{ question: "Do you install heaters?", answer: "Yes, we specialize in high-efficiency water heater installations." }, { question: "Do you work on weekends?", answer: "We are open 24/7 including weekends and holidays." }] }
]}
cta={{ name: "John Doe", role: "Customer Support", buttonText: "Contact Support", buttonHref: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/portrait-male-car-mechanic-car-repair-shop_23-2150367579.jpg" }}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,29 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "gallery" section.
import React from 'react';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function GallerySection(): React.JSX.Element {
return (
<div id="gallery" data-section="gallery">
<SectionErrorBoundary name="gallery">
<FeaturesImageBento
tag="Projects"
title="Before & After Our Work"
description="Visual proof of the AquaFlow professional difference."
items={[
{ title: "Bathroom", description: "Renovation plumbing", imageSrc: "http://img.b2bpic.net/free-photo/person-white-bathrobe-filling-bath-with-water_259150-59743.jpg" },
{ title: "Kitchen", description: "Fixture installation", imageSrc: "http://img.b2bpic.net/free-photo/black-faucet-with-steel-sink-stylish-modern-kitchen_169016-19744.jpg" },
{ title: "Pipes", description: "Luxury home layout", imageSrc: "http://img.b2bpic.net/free-photo/3d-geometric-abstract-twist-background_1048-18271.jpg" },
{ title: "Laundry", description: "Sleek utility setup", imageSrc: "http://img.b2bpic.net/free-photo/drinking-water_1150-18023.jpg" },
{ title: "Water Heater", description: "Modern basement system", imageSrc: "http://img.b2bpic.net/free-photo/spring-faucet-led-strip-blue-kitchen_169016-69053.jpg" },
{ title: "Shower", description: "Gold luxury fitting", imageSrc: "http://img.b2bpic.net/free-photo/retro-shower-house-classical-antique_1203-5010.jpg" },
{ title: "Leak Sensor", description: "Advanced protection", imageSrc: "http://img.b2bpic.net/free-photo/red-fire-extinguisher-white-wall_250224-73.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,84 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "hero" section.
import React, { useState, useEffect } from 'react';
import HeroSplit from '@/components/sections/hero/HeroSplit';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
import Input from "@/components/ui/Input";
import Textarea from "@/components/ui/Textarea";
export default function HeroSection(): React.JSX.Element {
const [isModalOpen, setIsModalOpen] = useState(false);
useEffect(() => {
const handleClick = (e: MouseEvent) => {
const target = e.target as HTMLElement;
const link = target.closest('a');
if (link && link.getAttribute('href') === '#quote') {
e.preventDefault();
setIsModalOpen(true);
}
};
document.addEventListener('click', handleClick);
return () => document.removeEventListener('click', handleClick);
}, []);
const handleSubmit = (e: React.FormEvent) => {
e.preventDefault();
const formData = new FormData(e.target as HTMLFormElement);
const name = formData.get('name');
const phone = formData.get('phone');
const details = formData.get('details');
const message = `New Quote Request:%0A- Name: ${name}%0A- Phone: ${phone}%0A- Details: ${details}`;
window.open(`https://wa.me/15551234567?text=${message}`, '_blank');
setIsModalOpen(false);
};
return (
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroSplit
tag="AquaFlow Plumbing Services"
title="Elite Plumbing Excellence in Your Home"
description="Experience professional plumbing care with 24/7 emergency support. We provide luxury service and rapid response for all your residential and commercial needs."
primaryButton={{ text: "Get Free Quote", href: "#quote" }}
secondaryButton={{ text: "Call Now", href: "tel:+15551234567" }}
imageSrc="http://img.b2bpic.net/free-photo/plumbing-professional-doing-his-job_23-2150721552.jpg"
/>
{isModalOpen && (
<div className="fixed inset-0 z-[100] flex items-center justify-center bg-black/60 p-4 backdrop-blur-sm">
<div className="bg-card w-full max-w-md p-6 rounded-lg relative shadow-xl border border-white/10">
<button
onClick={() => setIsModalOpen(false)}
className="absolute top-4 right-4 text-accent hover:text-foreground transition-colors"
aria-label="Close"
>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
</button>
<h3 className="text-2xl font-bold text-foreground mb-2">Get a Free Quote</h3>
<p className="text-accent mb-6">Fill out the details below and we'll get back to you via WhatsApp.</p>
<form onSubmit={handleSubmit} className="flex flex-col gap-4">
<div>
<label className="block text-sm font-medium text-foreground mb-1">Name</label>
<Input name="name" placeholder="Your Name" required className="w-full" />
</div>
<div>
<label className="block text-sm font-medium text-foreground mb-1">Phone Number</label>
<Input name="phone" type="tel" placeholder="Your Phone Number" required className="w-full" />
</div>
<div>
<label className="block text-sm font-medium text-foreground mb-1">Issue Details</label>
<Textarea name="details" placeholder="Describe your plumbing issue..." required className="w-full min-h-[100px]" />
</div>
<button type="submit" className="primary-button w-full mt-2 py-3 rounded font-medium">
Send via WhatsApp
</button>
</form>
</div>
</div>
)}
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,25 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "pricing" section.
import React from 'react';
import PricingHighlightedCards from '@/components/sections/pricing/PricingHighlightedCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function PricingSection(): React.JSX.Element {
return (
<div id="pricing" data-section="pricing">
<SectionErrorBoundary name="pricing">
<PricingHighlightedCards
tag="Pricing"
title="Transparent Service Packages"
description="Choose the plumbing solution that fits your needs."
plans={[
{ tag: "Quick Fix", price: "$99", description: "Minor repairs and quick tasks.", features: ["Drain inspection", "Quick leak patch", "1hr service"], primaryButton: { text: "Select", href: "#contact" } },
{ tag: "Pro Maintenance", price: "$299", description: "Best for household systems.", features: ["Full system check", "Heater flush", "Preventative care"], highlight: "Most Popular", primaryButton: { text: "Select", href: "#contact" } },
{ tag: "Full Installation", price: "Custom", description: "For renovations and new setups.", features: ["Custom pipe layout", "Luxury fixture fitting", "Warranty included"], primaryButton: { text: "Request", href: "#contact" } }
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,29 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "services" section.
import React from 'react';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ServicesSection(): React.JSX.Element {
return (
<div id="services" data-section="services">
<SectionErrorBoundary name="services">
<FeaturesImageBento
tag="Our Expertise"
title="Comprehensive Plumbing Solutions"
description="Providing end-to-end solutions for your home and business plumbing systems."
items={[
{ title: "Emergency Services", description: "24/7 immediate response", imageSrc: "http://img.b2bpic.net/free-photo/bathtub_1203-3380.jpg" },
{ title: "Leak Detection", description: "High-tech precise detection", imageSrc: "http://img.b2bpic.net/free-photo/pro-kitchen-sprayer-sleek-sink-stone-backsplash_169016-69285.jpg" },
{ title: "Drain Cleaning", description: "Advanced clearing solutions", imageSrc: "http://img.b2bpic.net/free-photo/view-exposed-plumbing-pipes_23-2150990678.jpg" },
{ title: "Pipe Repair", description: "Reliable and fast repair", imageSrc: "http://img.b2bpic.net/free-photo/new-surface-builtin-kitchen-technics-electrical-stove-with-clock-indicator-handing-textile-tovel-photo-with-shallow-depth-field_628469-37.jpg" },
{ title: "Heater Installation", description: "Expert water heater setup", imageSrc: "http://img.b2bpic.net/free-photo/modern-autonomous-heating-system-boiler-room_169016-53691.jpg" },
{ title: "Bathroom Plumbing", description: "Luxury fixture fitting", imageSrc: "http://img.b2bpic.net/free-photo/front-view-elegant-candlestick-dark-surface_179666-37730.jpg" },
{ title: "Kitchen Systems", description: "Premium kitchen solutions", imageSrc: "http://img.b2bpic.net/free-photo/robotic-wireless-vacuum-cleaner-control-by-smartphone-app_23-2150783857.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,27 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "testimonials" section.
import React from 'react';
import TestimonialQuoteCards from '@/components/sections/testimonial/TestimonialQuoteCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function TestimonialsSection(): React.JSX.Element {
return (
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialQuoteCards
tag="Feedback"
title="Our Clients Trust Us"
description="Hear why AquaFlow is the top choice for plumbing excellence."
testimonials={[
{ name: "Sarah Johnson", role: "Homeowner", quote: "Professional, fast, and incredibly tidy. AquaFlow saved our kitchen!", imageSrc: "http://img.b2bpic.net/free-photo/employee-working-with-trendy-clothes_482257-78860.jpg" },
{ name: "Michael Chen", role: "Property Manager", quote: "Reliable 24/7 response. I trust them with all my rental properties.", imageSrc: "http://img.b2bpic.net/free-photo/happy-successful-businessman-posing-outside_74855-2003.jpg" },
{ name: "Emily Rodriguez", role: "Renovator", quote: "The precision in their pipe layouts is unmatched. Top-notch work.", imageSrc: "http://img.b2bpic.net/free-photo/diy-activity-online-content-craft-creation_23-2151515819.jpg" },
{ name: "David Kim", role: "Homeowner", quote: "Expert technicians, fair pricing, and they truly care about quality.", imageSrc: "http://img.b2bpic.net/free-photo/young-beautiful-brunette-woman-wearing-casual-sweater-standing-red-background-pointing-fingers-camera-with-happy-funny-face-good-energy-vibes_839833-6469.jpg" },
{ name: "Lisa Wang", role: "Interior Designer", quote: "Always my first call for luxury bathroom project plumbing.", imageSrc: "http://img.b2bpic.net/free-photo/excited-multiethnic-couple-stand-surrounded-by-moving-boxes-taking-break-capture-selfie-with_482257-134995.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,25 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "why-us" section.
import React from 'react';
import FeaturesRevealCards from '@/components/sections/features/FeaturesRevealCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function WhyUsSection(): React.JSX.Element {
return (
<div id="why-us" data-section="why-us">
<SectionErrorBoundary name="why-us">
<FeaturesRevealCards
tag="Why Us"
title="The AquaFlow Standard"
description="Why homeowners trust us with their plumbing systems."
items={[
{ title: "Certified Experts", description: "Professional training for all technicians.", imageSrc: "http://img.b2bpic.net/free-photo/tools-materials-sanitary-works_93675-132627.jpg" },
{ title: "Reliable Results", description: "Guaranteed service performance every time.", imageSrc: "http://img.b2bpic.net/free-photo/man-installs-heating-system-house-checks-pipes-with-wrench_169016-55837.jpg" },
{ title: "24/7 Availability", description: "Round the clock for your safety.", imageSrc: "http://img.b2bpic.net/free-photo/kitchen-faucet-water-aerator-metal-texture_169016-68888.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
);
}