Compare commits
5 Commits
version_1_
...
version_3_
| Author | SHA1 | Date | |
|---|---|---|---|
| 30095d07fa | |||
|
|
7f319c8dd9 | ||
| a1bdccd85b | |||
| 234d6ccd8c | |||
| ffe47b8e97 |
@@ -12,10 +12,6 @@ export default function Layout() {
|
||||
"name": "Services",
|
||||
"href": "#services"
|
||||
},
|
||||
{
|
||||
"name": "Process",
|
||||
"href": "#process"
|
||||
},
|
||||
{
|
||||
"name": "Reviews",
|
||||
"href": "#testimonials"
|
||||
|
||||
@@ -1,173 +1,37 @@
|
||||
import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
|
||||
import FeaturesBento from '@/components/sections/features/FeaturesBento';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import HeroSplitVerticalMarqueeTall from '@/components/sections/hero/HeroSplitVerticalMarqueeTall';
|
||||
import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
|
||||
import TestimonialMarqueeOverlayCards from '@/components/sections/testimonial/TestimonialMarqueeOverlayCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
// AUTO-GENERATED shell by per-section-migrate.
|
||||
// Section bodies live in the sibling sections/ folder (one file per section).
|
||||
// Edit those section files directly. Non-block content (wrappers,
|
||||
// non-inlinable sections) is preserved inline; extracted section blocks
|
||||
// become component refs.
|
||||
|
||||
export default function HomePage() {
|
||||
import React from 'react';
|
||||
import HeroSection from './HomePage/sections/Hero';
|
||||
import AboutSection from './HomePage/sections/About';
|
||||
import FeaturesSection from './HomePage/sections/Features';
|
||||
import ServicesSection from './HomePage/sections/Services';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import MetricsSection from './HomePage/sections/Metrics';
|
||||
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">
|
||||
<HeroSplitVerticalMarqueeTall
|
||||
tag="Mansfield's Premier Pool Experts"
|
||||
title="Your Pool. Crystal Clear. Professionally Maintained."
|
||||
description="Reliable pool cleaning, maintenance, green pool recovery, and expert care for homeowners across Mansfield."
|
||||
primaryButton={{
|
||||
text: "Get Free Consultation", href: "#contact"}}
|
||||
secondaryButton={{
|
||||
text: "Call Now", href: "tel:5550123"}}
|
||||
leftItems={[
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-asian-woman-relax-smile-happy-around-outdoor-swimming-pool-hotel-resort-with-sea-ocean-view_74190-9082.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/crop-skateboarder-man-ramp_23-2147678250.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/man-sunglasses-hat-drinking-cocktail-sitting-near-pool_176420-3986.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/skater-board-riding-ramp_23-2147678281.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/water-home-landscaping-outdoor-hot_1232-4040.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/crystalline-background-water-with-icicles_23-2148231645.jpg" },
|
||||
]}
|
||||
rightItems={[
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/portrait-beautiful-young-woman-relax-smile-leisure-vacation-around-swimming-pool-resort-hotel_74190-14521.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/skaters-walking-ramp_23-2147678244.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/umbrella-chair-around-beautiful-luxury-swimming-pool_74190-2028.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/terrace-exterior-building_1203-3258.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/men-preparing-ride-skateboards_23-2147678227.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/outdoor-swimming-pool_1203-3050.jpg" },
|
||||
]}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutMediaOverlay
|
||||
tag="About Lion Pool Care"
|
||||
title="Trusted Service You Can Rely On"
|
||||
description="We are a family-oriented company serving Mansfield with professional, honest, and reliable pool care. Your satisfaction is our top priority."
|
||||
imageSrc="http://img.b2bpic.net/free-photo/young-man-holding-cup-drink-t-shirt-jacket-looking-merry-front-view_176474-57822.jpg"
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesBento
|
||||
tag="Why Homeowners Choose Us"
|
||||
title="Expert Care, Exceptional Results"
|
||||
description="We treat every pool as if it were our own, ensuring consistent clarity and reliable performance."
|
||||
features={[
|
||||
{
|
||||
title: "Fast Response", description: "Emergency and priority scheduling available when you need it most.", bentoComponent: "orbiting-icons", centerIcon: "Zap", orbitIcons: ["Clock", "AlertTriangle", "Calendar"],
|
||||
},
|
||||
{
|
||||
title: "Honest Service", description: "Transparent recommendations with absolutely no unnecessary upsells.", bentoComponent: "checklist-timeline", heading: "Our Promise", subheading: "Quality Service Every Time", checklistItems: [
|
||||
{ label: "Transparent pricing", detail: "No hidden fees" },
|
||||
{ label: "Professional staff", detail: "Certified technicians" },
|
||||
{ label: "Proven results", detail: "Customer guaranteed" },
|
||||
],
|
||||
completedLabel: "Service Done"},
|
||||
{
|
||||
title: "Local Expertise", description: "Proudly serving Mansfield and surrounding communities with care.", bentoComponent: "info-card-marquee", infoCards: [
|
||||
{ icon: "MapPin", label: "Service Area", value: "Mansfield+" },
|
||||
{ icon: "Star", label: "Ratings", value: "5.0/5" },
|
||||
{ icon: "Users", label: "Satisfied", value: "100+" },
|
||||
],
|
||||
},
|
||||
]}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FeaturesSection />
|
||||
|
||||
<div id="services" data-section="services">
|
||||
<SectionErrorBoundary name="services">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Our Pool Services"
|
||||
title="Complete Pool Solutions"
|
||||
description="From weekly cleaning to emergency restoration, we handle it all with precision."
|
||||
items={[
|
||||
{ title: "Weekly Cleaning", description: "Comprehensive maintenance including skimming, vacuuming, and chemical checks.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/couple-having-fun-pour-each-other-with-garden-hose_158595-2248.jpg" },
|
||||
{ title: "Green Recovery", description: "Transforming cloudy or green water back to crystal clear perfection.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/portrait-beautiful-young-asian-woman-relaxing-around-outdoor-swimming-pool-hotel-resort_74190-13554.jpg" },
|
||||
{ title: "Maintenance", description: "Professional equipment inspections and filter care for peak efficiency.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/variety-african-red-japanese-tea_1203-4304.jpg" },
|
||||
{ title: "Emergency Help", description: "Fast scheduling for urgent pool issues or restoration needs.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/couple-ready-jump-pool_23-2147664412.jpg" },
|
||||
{ title: "Chemical Balancing", description: "Precise treatment to ensure healthy, sparkling, and safe pool water.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/chair-background-hotel-summer-sky_1203-4449.jpg" },
|
||||
{ title: "Filter Service", description: "Deep cleaning and maintenance for your pool's filtration systems.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/outdoor-swimming-pool-with-umbrella-chair-lounge-around-there-leisure-travel_74190-7879.jpg" },
|
||||
{ title: "Equipment Check", description: "Regular inspections of pumps, filters, and all pool systems.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/front-view-female-scientist-with-potions_23-2148571336.jpg" },
|
||||
]}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ServicesSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialMarqueeOverlayCards
|
||||
tag="Customer Reviews"
|
||||
title="What Homeowners Are Saying"
|
||||
description="Join our satisfied clients across Mansfield who trust us for their pool care."
|
||||
testimonials={[
|
||||
{ name: "Sarah Johnson", role: "Homeowner", company: "Mansfield", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/young-people-having-fun-enjoying-swimming-pool_259150-59138.jpg" },
|
||||
{ name: "Michael Chen", role: "Homeowner", company: "Mansfield", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/blond-businessman-surprised-expression_1194-3809.jpg" },
|
||||
{ name: "Emily Rodriguez", role: "Homeowner", company: "Mansfield", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/young-man-preparing-skateboarding_23-2147678203.jpg" },
|
||||
{ name: "David Kim", role: "Homeowner", company: "Mansfield", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/smiling-woman-with-olives-beer_23-2147680964.jpg" },
|
||||
{ name: "Amanda Smith", role: "Homeowner", company: "Mansfield", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/middle-aged-best-friends-spending-time-together-outside_23-2148979086.jpg" },
|
||||
]}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsFeatureCards
|
||||
tag="Proven Results"
|
||||
title="Our Impact in Numbers"
|
||||
description="Delivering clean pools and satisfied customers day in and day out."
|
||||
metrics={[
|
||||
{ value: "500+", title: "Pools Serviced", features: ["Regular cleaning", "Restoration projects", "One-time repairs"] },
|
||||
{ value: "13+", title: "Five-Star Reviews", features: ["Google verified", "Local homeowners", "High satisfaction"] },
|
||||
{ value: "100%", title: "Service Guaranteed", features: ["Crystal clear", "On-time arrival", "Transparent work"] },
|
||||
]}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MetricsSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSplitMedia
|
||||
tag="Frequently Asked"
|
||||
title="Need More Information?"
|
||||
description="Answers to common questions about our services."
|
||||
items={[
|
||||
{ question: "How often should my pool be serviced?", answer: "For optimal clarity and balance, weekly maintenance is highly recommended." },
|
||||
{ question: "Do you treat green pools?", answer: "Yes, we specialize in comprehensive green-to-clean recovery services." },
|
||||
{ question: "Do you provide emergency service?", answer: "We offer priority scheduling for urgent pool issues in Mansfield." },
|
||||
{ question: "How quickly can you start?", answer: "Contact us today, and we can typically schedule a consultation within 24-48 hours." },
|
||||
{ question: "Do I need weekly maintenance?", answer: "Weekly maintenance helps prevent costly issues and ensures your pool stays safe and clean all season." },
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/man-having-online-meeting-work_23-2148940749.jpg"
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Get Started"
|
||||
text="Ready to enjoy your pool without the stress? Book your free consultation today."
|
||||
primaryButton={{ text: "Get Free Consultation", href: "#contact" }}
|
||||
secondaryButton={{ text: "Call Now", href: "tel:5550123" }}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
22
src/pages/HomePage/sections/About.tsx
Normal file
22
src/pages/HomePage/sections/About.tsx
Normal file
@@ -0,0 +1,22 @@
|
||||
// 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 AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function AboutSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutMediaOverlay
|
||||
tag="About Lion Pool Care"
|
||||
title="Trusted Service You Can Rely On"
|
||||
description="We are a family-oriented company serving Mansfield with professional, honest, and reliable pool care. Your satisfaction is our top priority."
|
||||
imageSrc="http://img.b2bpic.net/free-photo/young-man-holding-cup-drink-t-shirt-jacket-looking-merry-front-view_176474-57822.jpg"
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
22
src/pages/HomePage/sections/Contact.tsx
Normal file
22
src/pages/HomePage/sections/Contact.tsx
Normal file
@@ -0,0 +1,22 @@
|
||||
// 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="Get Started"
|
||||
text="Ready to enjoy your pool without the stress? Book your free consultation today."
|
||||
primaryButton={{ text: "Get Free Consultation", href: "#contact" }}
|
||||
secondaryButton={{ text: "Call Now", href: "tel:5550123" }}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
29
src/pages/HomePage/sections/Faq.tsx
Normal file
29
src/pages/HomePage/sections/Faq.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 "faq" section.
|
||||
|
||||
import React from 'react';
|
||||
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FaqSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSplitMedia
|
||||
tag="Frequently Asked"
|
||||
title="Need More Information?"
|
||||
description="Answers to common questions about our services."
|
||||
items={[
|
||||
{ question: "How often should my pool be serviced?", answer: "For optimal clarity and balance, weekly maintenance is highly recommended." },
|
||||
{ question: "Do you treat green pools?", answer: "Yes, we specialize in comprehensive green-to-clean recovery services." },
|
||||
{ question: "Do you provide emergency service?", answer: "We offer priority scheduling for urgent pool issues in Mansfield." },
|
||||
{ question: "How quickly can you start?", answer: "Contact us today, and we can typically schedule a consultation within 24-48 hours." },
|
||||
{ question: "Do I need weekly maintenance?", answer: "Weekly maintenance helps prevent costly issues and ensures your pool stays safe and clean all season." },
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/man-having-online-meeting-work_23-2148940749.jpg"
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
40
src/pages/HomePage/sections/Features.tsx
Normal file
40
src/pages/HomePage/sections/Features.tsx
Normal file
@@ -0,0 +1,40 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "features" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesBento from '@/components/sections/features/FeaturesBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FeaturesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesBento
|
||||
tag="Why Homeowners Choose Us"
|
||||
title="Expert Care, Exceptional Results"
|
||||
description="We treat every pool as if it were our own, ensuring consistent clarity and reliable performance."
|
||||
features={[
|
||||
{
|
||||
title: "Fast Response", description: "Emergency and priority scheduling available when you need it most.", bentoComponent: "orbiting-icons", centerIcon: "Zap", orbitIcons: ["Clock", "AlertTriangle", "Calendar"],
|
||||
},
|
||||
{
|
||||
title: "Honest Service", description: "Transparent recommendations with absolutely no unnecessary upsells.", bentoComponent: "checklist-timeline", heading: "Our Promise", subheading: "Quality Service Every Time", checklistItems: [
|
||||
{ label: "Transparent pricing", detail: "No hidden fees" },
|
||||
{ label: "Professional staff", detail: "Certified technicians" },
|
||||
{ label: "Proven results", detail: "Customer guaranteed" },
|
||||
],
|
||||
completedLabel: "Service Done"},
|
||||
{
|
||||
title: "Local Expertise", description: "Proudly serving Mansfield and surrounding communities with care.", bentoComponent: "info-card-marquee", infoCards: [
|
||||
{ icon: "MapPin", label: "Service Area", value: "Mansfield+" },
|
||||
{ icon: "Star", label: "Ratings", value: "5.0/5" },
|
||||
{ icon: "Users", label: "Satisfied", value: "100+" },
|
||||
],
|
||||
},
|
||||
]}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
41
src/pages/HomePage/sections/Hero.tsx
Normal file
41
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,41 @@
|
||||
// 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 HeroSplitVerticalMarqueeTall from '@/components/sections/hero/HeroSplitVerticalMarqueeTall';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroSplitVerticalMarqueeTall
|
||||
tag="Mansfield's Premier Pool Experts"
|
||||
title="Your Pool. Crystal Clear. Professionally Maintained."
|
||||
description="Reliable pool cleaning, maintenance, green pool recovery, and expert care for homeowners across Mansfield."
|
||||
primaryButton={{
|
||||
text: "Get Free Consultation", href: "#contact"}}
|
||||
secondaryButton={{
|
||||
text: "Call Now", href: "tel:5550123"}}
|
||||
leftItems={[
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-asian-woman-relax-smile-happy-around-outdoor-swimming-pool-hotel-resort-with-sea-ocean-view_74190-9082.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/crop-skateboarder-man-ramp_23-2147678250.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/man-sunglasses-hat-drinking-cocktail-sitting-near-pool_176420-3986.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/skater-board-riding-ramp_23-2147678281.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/water-home-landscaping-outdoor-hot_1232-4040.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/crystalline-background-water-with-icicles_23-2148231645.jpg" },
|
||||
]}
|
||||
rightItems={[
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/portrait-beautiful-young-woman-relax-smile-leisure-vacation-around-swimming-pool-resort-hotel_74190-14521.jpg" },
|
||||
{ imageSrc: "https://storage.googleapis.com/webild/users/user_3FMuvjoF3LtrfnjLatUSKH5GyT3/tmp/pristine-pool-1782922995064-182499d2.png" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/umbrella-chair-around-beautiful-luxury-swimming-pool_74190-2028.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/terrace-exterior-building_1203-3258.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/men-preparing-ride-skateboards_23-2147678227.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/outdoor-swimming-pool_1203-3050.jpg" },
|
||||
]}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
26
src/pages/HomePage/sections/Metrics.tsx
Normal file
26
src/pages/HomePage/sections/Metrics.tsx
Normal file
@@ -0,0 +1,26 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "metrics" section.
|
||||
|
||||
import React from 'react';
|
||||
import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function MetricsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsFeatureCards
|
||||
tag="Proven Results"
|
||||
title="Our Impact in Numbers"
|
||||
description="Delivering clean pools and satisfied customers day in and day out."
|
||||
metrics={[
|
||||
{ value: "500+", title: "Pools Serviced", features: ["Regular cleaning", "Restoration projects", "One-time repairs"] },
|
||||
{ value: "13+", title: "Five-Star Reviews", features: ["Google verified", "Local homeowners", "High satisfaction"] },
|
||||
{ value: "100%", title: "Service Guaranteed", features: ["Crystal clear", "On-time arrival", "Transparent work"] },
|
||||
]}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
30
src/pages/HomePage/sections/Services.tsx
Normal file
30
src/pages/HomePage/sections/Services.tsx
Normal file
@@ -0,0 +1,30 @@
|
||||
// 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 FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ServicesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="services" data-section="services">
|
||||
<SectionErrorBoundary name="services">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Our Pool Services"
|
||||
title="Complete Pool Solutions"
|
||||
description="From weekly cleaning to emergency restoration, we handle it all with precision."
|
||||
items={[
|
||||
{ title: "Weekly Cleaning", description: "Comprehensive maintenance including skimming, vacuuming, and chemical checks.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/couple-having-fun-pour-each-other-with-garden-hose_158595-2248.jpg" },
|
||||
{ title: "Green Recovery", description: "Transforming cloudy or green water back to crystal clear perfection.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/portrait-beautiful-young-asian-woman-relaxing-around-outdoor-swimming-pool-hotel-resort_74190-13554.jpg" },
|
||||
{ title: "Maintenance", description: "Professional equipment inspections and filter care for peak efficiency.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/variety-african-red-japanese-tea_1203-4304.jpg" },
|
||||
{ title: "Emergency Help", description: "Fast scheduling for urgent pool issues or restoration needs.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/couple-ready-jump-pool_23-2147664412.jpg" },
|
||||
{ title: "Chemical Balancing", description: "Precise treatment to ensure healthy, sparkling, and safe pool water.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/chair-background-hotel-summer-sky_1203-4449.jpg" },
|
||||
{ title: "Filter Service", description: "Deep cleaning and maintenance for your pool's filtration systems.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/outdoor-swimming-pool-with-umbrella-chair-lounge-around-there-leisure-travel_74190-7879.jpg" },
|
||||
{ title: "Equipment Check", description: "Regular inspections of pumps, filters, and all pool systems.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/front-view-female-scientist-with-potions_23-2148571336.jpg" },
|
||||
]}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
28
src/pages/HomePage/sections/Testimonials.tsx
Normal file
28
src/pages/HomePage/sections/Testimonials.tsx
Normal file
@@ -0,0 +1,28 @@
|
||||
// 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 TestimonialMarqueeOverlayCards from '@/components/sections/testimonial/TestimonialMarqueeOverlayCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialMarqueeOverlayCards
|
||||
tag="Customer Reviews"
|
||||
title="What Homeowners Are Saying"
|
||||
description="Join our satisfied clients across Mansfield who trust us for their pool care."
|
||||
testimonials={[
|
||||
{ name: "Sarah Johnson", role: "Homeowner", company: "Mansfield", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/young-people-having-fun-enjoying-swimming-pool_259150-59138.jpg" },
|
||||
{ name: "Michael Chen", role: "Homeowner", company: "Mansfield", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/blond-businessman-surprised-expression_1194-3809.jpg" },
|
||||
{ name: "Emily Rodriguez", role: "Homeowner", company: "Mansfield", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/young-man-preparing-skateboarding_23-2147678203.jpg" },
|
||||
{ name: "David Kim", role: "Homeowner", company: "Mansfield", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/smiling-woman-with-olives-beer_23-2147680964.jpg" },
|
||||
{ name: "Amanda Smith", role: "Homeowner", company: "Mansfield", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/middle-aged-best-friends-spending-time-together-outside_23-2148979086.jpg" },
|
||||
]}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user