Merge version_2_1781459757965 into main #3
@@ -1,195 +1,36 @@
|
||||
import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqTabbedAccordion from '@/components/sections/faq/FaqTabbedAccordion';
|
||||
import FeaturesBentoGrid from '@/components/sections/features/FeaturesBentoGrid';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import HeroBillboardCarousel from '@/components/sections/hero/HeroBillboardCarousel';
|
||||
import PricingLayeredCards from '@/components/sections/pricing/PricingLayeredCards';
|
||||
import TestimonialMarqueeCards from '@/components/sections/testimonial/TestimonialMarqueeCards';
|
||||
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 AboutSection from './HomePage/sections/About';
|
||||
import ServicesSection from './HomePage/sections/Services';
|
||||
import GallerySection from './HomePage/sections/Gallery';
|
||||
import PricingSection from './HomePage/sections/Pricing';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
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">
|
||||
<HeroBillboardCarousel
|
||||
tag="Trusted Quality"
|
||||
title="USA Car Wash & Valeting Services"
|
||||
description="Premium mobile-friendly care for your vehicle. We treat every car as if it were our own."
|
||||
primaryButton={{
|
||||
text: "Book Now", href: "#contact"}}
|
||||
secondaryButton={{
|
||||
text: "View Services", href: "#services"}}
|
||||
items={[
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/man-s-hand-is-cleaning-waxing-car_1150-6113.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/car-being-taking-care-workshop_23-2149580532.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/car-wash-detailing-station_1303-22315.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/bubbling-blue-water_23-2147798200.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/view-3d-film-roll_23-2150865957.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/young-cleaning-man-wearing-casual-clothes-cap-rubber-gloves-holding-bottle-with-cleaning-supplies-sponge-looking-with-serious-face-standing-green-wall_141793-60704.jpg" },
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutFeaturesSplit
|
||||
tag="About Us"
|
||||
title="Quality Care, Expert Hands"
|
||||
description="At USA Car Wash & Valeting, we provide high-end car maintenance. Our mission is to restore your vehicle to its showroom condition."
|
||||
items={[
|
||||
{
|
||||
icon: "Sparkles", title: "Showroom Shine", description: "Expert detailing for a lasting brilliance."},
|
||||
{
|
||||
icon: "Shield", title: "Certified Protection", description: "Premium wax and sealants to protect your paint."},
|
||||
{
|
||||
icon: "Award", title: "100% Satisfaction", description: "Commitment to excellence in every wash."},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/professional-cleaning-car-wash-car-showroom_146671-18368.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="services" data-section="services">
|
||||
<SectionErrorBoundary name="services">
|
||||
<FeaturesBentoGrid
|
||||
tag="Our Services"
|
||||
title="Professional Car Care"
|
||||
description="Comprehensive cleaning packages designed for every vehicle."
|
||||
features={[
|
||||
{
|
||||
title: "Exterior Wash", description: "Hand wash with premium soaps for a streak-free clean.", imageSrc: "http://img.b2bpic.net/free-photo/close-up-car-care-process_23-2149193142.jpg"},
|
||||
{
|
||||
title: "Interior Cleaning", description: "Deep vacuum and interior surface cleaning.", imageSrc: "http://img.b2bpic.net/free-photo/close-up-car-care-dusting_23-2149172885.jpg"},
|
||||
{
|
||||
title: "Wax & Polish", description: "Restore paint luster with high-grade polish.", imageSrc: "http://img.b2bpic.net/free-photo/car-wash-detailing-station_1303-22308.jpg"},
|
||||
{
|
||||
title: "Wheel Detailing", description: "Cleaning and conditioning of wheels and rims.", imageSrc: "http://img.b2bpic.net/free-photo/outdoors-cobblestone-texture-with-car-wheel_23-2149432974.jpg"},
|
||||
]}
|
||||
primaryButton={{
|
||||
text: "Schedule Today", href: "#contact"}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ServicesSection />
|
||||
|
||||
<div id="gallery" data-section="gallery">
|
||||
<SectionErrorBoundary name="gallery">
|
||||
<FeaturesImageBento
|
||||
tag="Transformations"
|
||||
title="Before & After Gallery"
|
||||
description="See the results of our professional detailing services."
|
||||
items={[
|
||||
{
|
||||
title: "Paint Restoration", description: "Paint correction results.", imageSrc: "http://img.b2bpic.net/free-photo/mechanic-worker-repairman-sanding-polishing-car-body-preparing-automobile-painting-workshop-garage_342744-318.jpg"},
|
||||
{
|
||||
title: "Exterior Refresh", description: "Full wash results.", imageSrc: "http://img.b2bpic.net/free-photo/close-up-image-dirty-car-after-trip-around-countryside_613910-6323.jpg"},
|
||||
{
|
||||
title: "Deep Interior", description: "Interior sanitation.", imageSrc: "http://img.b2bpic.net/free-photo/still-life-cleaning-tools_23-2150552299.jpg"},
|
||||
{
|
||||
title: "Wheel Polish", description: "Deep cleaning detail.", imageSrc: "http://img.b2bpic.net/free-photo/car-wash-detailing-station_1303-22304.jpg"},
|
||||
{
|
||||
title: "Our Facility", description: "Modern studio space.", imageSrc: "http://img.b2bpic.net/free-photo/serious-blond-woman-auto-mechanic-her-young-colleague-are-posing-photographer_613910-17068.jpg"},
|
||||
{
|
||||
title: "Team at Work", description: "Expert technique.", imageSrc: "http://img.b2bpic.net/free-photo/mid-adult-mechanic-cleaning-repaired-car-tire-with-cloth-workshop_637285-7624.jpg"},
|
||||
{
|
||||
title: "Quality Tools", description: "Professional equipment.", imageSrc: "http://img.b2bpic.net/free-photo/still-life-with-gardening-concept_23-2148127837.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<GallerySection />
|
||||
|
||||
<div id="pricing" data-section="pricing">
|
||||
<SectionErrorBoundary name="pricing">
|
||||
<PricingLayeredCards
|
||||
tag="Packages"
|
||||
title="Pricing Options"
|
||||
description="Choose the perfect package for your needs."
|
||||
plans={[
|
||||
{
|
||||
tag: "Essential", price: "$45", description: "Basic exterior wash and vacuum.", primaryButton: {
|
||||
text: "Book Now", href: "#contact"},
|
||||
features: [
|
||||
"Exterior Wash", "Tire Shine", "Interior Vacuum", "Dashboard Wipe"],
|
||||
},
|
||||
{
|
||||
tag: "Premium", price: "$89", description: "Full detailing service package.", primaryButton: {
|
||||
text: "Book Now", href: "#contact"},
|
||||
features: [
|
||||
"Everything in Essential", "Wax & Polish", "Full Interior Deep Clean", "Glass Treatment"],
|
||||
},
|
||||
{
|
||||
tag: "Luxury", price: "$149", description: "The ultimate showroom finish.", primaryButton: {
|
||||
text: "Book Now", href: "#contact"},
|
||||
features: [
|
||||
"Everything in Premium", "Ceramic Coating", "Engine Bay Detail", "Upholstery Conditioning"],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<PricingSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialMarqueeCards
|
||||
tag="Reviews"
|
||||
title="What Our Customers Say"
|
||||
description="Trusted by hundreds of local car owners."
|
||||
testimonials={[
|
||||
{
|
||||
name: "John Smith", role: "Client", quote: "My car looks brand new again! The attention to detail is fantastic.", imageSrc: "http://img.b2bpic.net/free-photo/very-good-smiling-brunette-woman-shows-ok-okay-hand-sign-looking-satisfied-recommend-great-deal-pleased-with-quality-standing-white-background_176420-46695.jpg"},
|
||||
{
|
||||
name: "Sarah Miller", role: "Client", quote: "Professional, fast, and very thorough. Highly recommended.", imageSrc: "http://img.b2bpic.net/free-photo/handsome-young-man-recommending-good-product-showing-okay-gestures-smiling-agree-approve-some_1258-159677.jpg"},
|
||||
{
|
||||
name: "David Brown", role: "Client", quote: "Best car wash I have found in the area. Great service.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-smiling-woman-looking-photographer_23-2148339179.jpg"},
|
||||
{
|
||||
name: "Emily Davis", role: "Client", quote: "They made my dirty interior look spotless again. Great value.", imageSrc: "http://img.b2bpic.net/free-photo/happy-couple-holding-each-other-s-hand_23-2147891266.jpg"},
|
||||
{
|
||||
name: "Michael Wilson", role: "Client", quote: "Excellent results and very polite staff. Very satisfied.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-smiley-business-man_23-2148514859.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqTabbedAccordion
|
||||
tag="FAQ"
|
||||
title="Frequently Asked Questions"
|
||||
description="Get answers to your common questions."
|
||||
categories={[
|
||||
{
|
||||
name: "General", items: [
|
||||
{
|
||||
question: "How long does a service take?", answer: "Standard washes take 30-45 minutes; full detailing takes 2-4 hours."},
|
||||
{
|
||||
question: "Do I need an appointment?", answer: "Appointments are highly recommended for full detailing."},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "Payment", items: [
|
||||
{
|
||||
question: "What payment methods do you accept?", answer: "We accept cash, cards, and mobile payments."},
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Contact Us"
|
||||
text="Ready for a showroom shine? Book your appointment now."
|
||||
primaryButton={{
|
||||
text: "Call Us", href: "tel:+1234567890"}}
|
||||
secondaryButton={{
|
||||
text: "Book Online", href: "#contact-form"}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
29
src/pages/HomePage/sections/About.tsx
Normal file
29
src/pages/HomePage/sections/About.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 "about" section.
|
||||
|
||||
import React from 'react';
|
||||
import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function AboutSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutFeaturesSplit
|
||||
tag="About Us"
|
||||
title="Quality Care, Expert Hands"
|
||||
description="At USA Car Wash & Valeting, we provide high-end car maintenance. Our mission is to restore your vehicle to its showroom condition."
|
||||
items={[
|
||||
{
|
||||
icon: "Sparkles", title: "Showroom Shine", description: "Expert detailing for a lasting brilliance."},
|
||||
{
|
||||
icon: "Shield", title: "Certified Protection", description: "Premium wax and sealants to protect your paint."},
|
||||
{
|
||||
icon: "Award", title: "100% Satisfaction", description: "Commitment to excellence in every wash."},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/professional-cleaning-car-wash-car-showroom_146671-18368.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
23
src/pages/HomePage/sections/Contact.tsx
Normal file
23
src/pages/HomePage/sections/Contact.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 "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 Us"
|
||||
text="Ready for a showroom shine? Book your appointment now."
|
||||
primaryButton={{
|
||||
text: "Call Us", href: "tel:+1234567890"}}
|
||||
secondaryButton={{
|
||||
text: "Book Online", href: "#contact-form"}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
36
src/pages/HomePage/sections/Faq.tsx
Normal file
36
src/pages/HomePage/sections/Faq.tsx
Normal file
@@ -0,0 +1,36 @@
|
||||
// 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="Frequently Asked Questions"
|
||||
description="Get answers to your common questions."
|
||||
categories={[
|
||||
{
|
||||
name: "General", items: [
|
||||
{
|
||||
question: "How long does a service take?", answer: "Standard washes take 30-45 minutes; full detailing takes 2-4 hours."},
|
||||
{
|
||||
question: "Do I need an appointment?", answer: "Appointments are highly recommended for full detailing."},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "Payment", items: [
|
||||
{
|
||||
question: "What payment methods do you accept?", answer: "We accept cash, cards, and mobile payments."},
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
36
src/pages/HomePage/sections/Gallery.tsx
Normal file
36
src/pages/HomePage/sections/Gallery.tsx
Normal file
@@ -0,0 +1,36 @@
|
||||
// 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="Transformations"
|
||||
title="Before & After Gallery"
|
||||
description="See the results of our professional detailing services."
|
||||
items={[
|
||||
{
|
||||
title: "Paint Restoration", description: "Paint correction results.", imageSrc: "http://img.b2bpic.net/free-photo/mechanic-worker-repairman-sanding-polishing-car-body-preparing-automobile-painting-workshop-garage_342744-318.jpg"},
|
||||
{
|
||||
title: "Exterior Refresh", description: "Full wash results.", imageSrc: "http://img.b2bpic.net/free-photo/close-up-image-dirty-car-after-trip-around-countryside_613910-6323.jpg"},
|
||||
{
|
||||
title: "Deep Interior", description: "Interior sanitation.", imageSrc: "http://img.b2bpic.net/free-photo/still-life-cleaning-tools_23-2150552299.jpg"},
|
||||
{
|
||||
title: "Wheel Polish", description: "Deep cleaning detail.", imageSrc: "http://img.b2bpic.net/free-photo/car-wash-detailing-station_1303-22304.jpg"},
|
||||
{
|
||||
title: "Our Facility", description: "Modern studio space.", imageSrc: "http://img.b2bpic.net/free-photo/serious-blond-woman-auto-mechanic-her-young-colleague-are-posing-photographer_613910-17068.jpg"},
|
||||
{
|
||||
title: "Team at Work", description: "Expert technique.", imageSrc: "http://img.b2bpic.net/free-photo/mid-adult-mechanic-cleaning-repaired-car-tire-with-cloth-workshop_637285-7624.jpg"},
|
||||
{
|
||||
title: "Quality Tools", description: "Professional equipment.", imageSrc: "http://img.b2bpic.net/free-photo/still-life-with-gardening-concept_23-2148127837.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
25
src/pages/HomePage/sections/Hero.tsx
Normal file
25
src/pages/HomePage/sections/Hero.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 "hero" section.
|
||||
|
||||
import React from 'react';
|
||||
import HeroBillboardCarousel from '@/components/sections/hero/HeroBillboardCarousel';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboardCarousel
|
||||
tag="Trusted Quality"
|
||||
title="USA Car Wash & Valeting Services"
|
||||
description="Premium mobile-friendly care for your vehicle. We treat every car as if it were our own."
|
||||
primaryButton={{
|
||||
text: "Book Now", href: "#contact"}}
|
||||
secondaryButton={{
|
||||
text: "View Services", href: "#services"}}
|
||||
items={[{"imageSrc":"http://img.b2bpic.net/free-photo/man-s-hand-is-cleaning-waxing-car_1150-6113.jpg"},{"imageSrc":"http://img.b2bpic.net/free-photo/car-being-taking-care-workshop_23-2149580532.jpg"},{"imageSrc":"http://img.b2bpic.net/free-photo/car-wash-detailing-station_1303-22315.jpg"},{"imageSrc":"http://img.b2bpic.net/free-photo/bubbling-blue-water_23-2147798200.jpg"},{"imageSrc":"http://img.b2bpic.net/free-photo/view-3d-film-roll_23-2150865957.jpg"}]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
40
src/pages/HomePage/sections/Pricing.tsx
Normal file
40
src/pages/HomePage/sections/Pricing.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 "pricing" section.
|
||||
|
||||
import React from 'react';
|
||||
import PricingLayeredCards from '@/components/sections/pricing/PricingLayeredCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function PricingSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="pricing" data-section="pricing">
|
||||
<SectionErrorBoundary name="pricing">
|
||||
<PricingLayeredCards
|
||||
tag="Packages"
|
||||
title="Pricing Options"
|
||||
description="Choose the perfect package for your needs."
|
||||
plans={[
|
||||
{
|
||||
tag: "Essential", price: "$45", description: "Basic exterior wash and vacuum.", primaryButton: {
|
||||
text: "Book Now", href: "#contact"},
|
||||
features: [
|
||||
"Exterior Wash", "Tire Shine", "Interior Vacuum", "Dashboard Wipe"],
|
||||
},
|
||||
{
|
||||
tag: "Premium", price: "$89", description: "Full detailing service package.", primaryButton: {
|
||||
text: "Book Now", href: "#contact"},
|
||||
features: [
|
||||
"Everything in Essential", "Wax & Polish", "Full Interior Deep Clean", "Glass Treatment"],
|
||||
},
|
||||
{
|
||||
tag: "Luxury", price: "$149", description: "The ultimate showroom finish.", primaryButton: {
|
||||
text: "Book Now", href: "#contact"},
|
||||
features: [
|
||||
"Everything in Premium", "Ceramic Coating", "Engine Bay Detail", "Upholstery Conditioning"],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
32
src/pages/HomePage/sections/Services.tsx
Normal file
32
src/pages/HomePage/sections/Services.tsx
Normal file
@@ -0,0 +1,32 @@
|
||||
// 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 FeaturesBentoGrid from '@/components/sections/features/FeaturesBentoGrid';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ServicesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="services" data-section="services">
|
||||
<SectionErrorBoundary name="services">
|
||||
<FeaturesBentoGrid
|
||||
tag="Our Services"
|
||||
title="Professional Car Care"
|
||||
description="Comprehensive cleaning packages designed for every vehicle."
|
||||
features={[
|
||||
{
|
||||
title: "Exterior Wash", description: "Hand wash with premium soaps for a streak-free clean.", imageSrc: "http://img.b2bpic.net/free-photo/close-up-car-care-process_23-2149193142.jpg"},
|
||||
{
|
||||
title: "Interior Cleaning", description: "Deep vacuum and interior surface cleaning.", imageSrc: "http://img.b2bpic.net/free-photo/close-up-car-care-dusting_23-2149172885.jpg"},
|
||||
{
|
||||
title: "Wax & Polish", description: "Restore paint luster with high-grade polish.", imageSrc: "http://img.b2bpic.net/free-photo/car-wash-detailing-station_1303-22308.jpg"},
|
||||
{
|
||||
title: "Wheel Detailing", description: "Cleaning and conditioning of wheels and rims.", imageSrc: "http://img.b2bpic.net/free-photo/outdoors-cobblestone-texture-with-car-wheel_23-2149432974.jpg"},
|
||||
]}
|
||||
primaryButton={{
|
||||
text: "Schedule Today", href: "#contact"}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
32
src/pages/HomePage/sections/Testimonials.tsx
Normal file
32
src/pages/HomePage/sections/Testimonials.tsx
Normal file
@@ -0,0 +1,32 @@
|
||||
// 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 TestimonialMarqueeCards from '@/components/sections/testimonial/TestimonialMarqueeCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialMarqueeCards
|
||||
tag="Reviews"
|
||||
title="What Our Customers Say"
|
||||
description="Trusted by hundreds of local car owners."
|
||||
testimonials={[
|
||||
{
|
||||
name: "John Smith", role: "Client", quote: "My car looks brand new again! The attention to detail is fantastic.", imageSrc: "http://img.b2bpic.net/free-photo/very-good-smiling-brunette-woman-shows-ok-okay-hand-sign-looking-satisfied-recommend-great-deal-pleased-with-quality-standing-white-background_176420-46695.jpg"},
|
||||
{
|
||||
name: "Sarah Miller", role: "Client", quote: "Professional, fast, and very thorough. Highly recommended.", imageSrc: "http://img.b2bpic.net/free-photo/handsome-young-man-recommending-good-product-showing-okay-gestures-smiling-agree-approve-some_1258-159677.jpg"},
|
||||
{
|
||||
name: "David Brown", role: "Client", quote: "Best car wash I have found in the area. Great service.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-smiling-woman-looking-photographer_23-2148339179.jpg"},
|
||||
{
|
||||
name: "Emily Davis", role: "Client", quote: "They made my dirty interior look spotless again. Great value.", imageSrc: "http://img.b2bpic.net/free-photo/happy-couple-holding-each-other-s-hand_23-2147891266.jpg"},
|
||||
{
|
||||
name: "Michael Wilson", role: "Client", quote: "Excellent results and very polite staff. Very satisfied.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-smiley-business-man_23-2148514859.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user