Merge version_2_1782178926956 into main #2
@@ -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 */
|
||||
|
||||
@@ -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 />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
25
src/pages/HomePage/sections/About.tsx
Normal file
25
src/pages/HomePage/sections/About.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
21
src/pages/HomePage/sections/Contact.tsx
Normal file
21
src/pages/HomePage/sections/Contact.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
25
src/pages/HomePage/sections/Faq.tsx
Normal file
25
src/pages/HomePage/sections/Faq.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
29
src/pages/HomePage/sections/Gallery.tsx
Normal file
29
src/pages/HomePage/sections/Gallery.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
23
src/pages/HomePage/sections/Hero.tsx
Normal file
23
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,23 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "hero" section.
|
||||
|
||||
import React from 'react';
|
||||
import HeroSplit from '@/components/sections/hero/HeroSplit';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): 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>
|
||||
);
|
||||
}
|
||||
25
src/pages/HomePage/sections/Pricing.tsx
Normal file
25
src/pages/HomePage/sections/Pricing.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
29
src/pages/HomePage/sections/Services.tsx
Normal file
29
src/pages/HomePage/sections/Services.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
27
src/pages/HomePage/sections/Testimonials.tsx
Normal file
27
src/pages/HomePage/sections/Testimonials.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
25
src/pages/HomePage/sections/WhyUs.tsx
Normal file
25
src/pages/HomePage/sections/WhyUs.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user