Merge version_2_1782096494299 into main #1
@@ -38,7 +38,7 @@ export default function Layout() {
|
||||
];
|
||||
|
||||
return (
|
||||
<StyleProvider buttonVariant="shift" siteBackground="floatingGradient" heroBackground="cornerGlow">
|
||||
<StyleProvider buttonVariant="magnetic" siteBackground="noiseGradient" heroBackground="cornerGlow">
|
||||
<SiteBackgroundSlot />
|
||||
<SectionErrorBoundary name="navbar">
|
||||
<NavbarDropdown
|
||||
|
||||
@@ -5,15 +5,15 @@
|
||||
|
||||
:root {
|
||||
/* @colorThemes/lightTheme/grayNavyBlue */
|
||||
--background: #0a0a0a;
|
||||
--card: #1a1a1a;
|
||||
--foreground: #ffffffe6;
|
||||
--primary-cta: #e6e6e6;
|
||||
--primary-cta-text: #0a0a0a;
|
||||
--background: #050505;
|
||||
--card: #111111;
|
||||
--foreground: #ffffff;
|
||||
--primary-cta: #d4af37;
|
||||
--primary-cta-text: #000000;
|
||||
--secondary-cta: #1a1a1a;
|
||||
--secondary-cta-text: #ffffffe6;
|
||||
--accent: #737373;
|
||||
--background-accent: #737373;
|
||||
--secondary-cta-text: #d4af37;
|
||||
--accent: #888888;
|
||||
--background-accent: #111111;
|
||||
|
||||
/* @layout/border-radius/rounded */
|
||||
--radius: 1rem;
|
||||
|
||||
@@ -1,290 +1,36 @@
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import HeroSplitVerticalMarquee from '@/components/sections/hero/HeroSplitVerticalMarquee';
|
||||
import MetricsIconCards from '@/components/sections/metrics/MetricsIconCards';
|
||||
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
|
||||
import TeamOverlayCards from '@/components/sections/team/TeamOverlayCards';
|
||||
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
|
||||
import { Award, Star, Zap } from "lucide-react";
|
||||
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 FeaturesSection from './HomePage/sections/Features';
|
||||
import PerformanceSection from './HomePage/sections/Performance';
|
||||
import TeamSection from './HomePage/sections/Team';
|
||||
import TestimonialSection from './HomePage/sections/Testimonial';
|
||||
import PartnersSection from './HomePage/sections/Partners';
|
||||
import ContactSection from './HomePage/sections/Contact';
|
||||
|
||||
export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroSplitVerticalMarquee
|
||||
tag="PREMIUM LUXURY DETAILING"
|
||||
title="Mastering the Art of Automotive Perfection"
|
||||
description="Experience our elite detailing services designed for the most discerning car enthusiasts. We bring showroom condition back to your vehicle."
|
||||
primaryButton={{
|
||||
text: "Book Your Detail",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "View Our Services",
|
||||
href: "#services",
|
||||
}}
|
||||
leftItems={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-car-interior-clean-up-service_23-2149212260.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/leather-texture-background_1385-1141.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-female-photographing-camera_23-2148149927.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/textile-background_93675-132434.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-car-care-process_23-2149193557.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/black-patterned-texture_1194-7015.jpg",
|
||||
},
|
||||
]}
|
||||
rightItems={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-seat-car-with-seat-belt_181624-26340.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-car-care-process_23-2149193588.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/black-rough-leather-textured-background_53876-100061.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-beautiful-blonde-sexy-fashion-woman-model-cap-all-black-blue-corset-with-bright-makeup-near-red-city-car_627829-1117.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/black-fabric-texture_1122-949.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/man-polish-salon-car-garage_1157-36596.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="services" data-section="services">
|
||||
<SectionErrorBoundary name="services">
|
||||
<FeaturesMediaCarousel
|
||||
tag="OUR SERVICES"
|
||||
title="Unmatched Detailing Excellence"
|
||||
description="Explore our comprehensive suite of professional car care services, tailored for ultimate protection and aesthetic perfection."
|
||||
items={[
|
||||
{
|
||||
title: "Ceramic Coating",
|
||||
description: "High-durability nano-ceramic protection layer.",
|
||||
buttonIcon: "Zap",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-taking-care-her-modern-car_23-2148510637.jpg",
|
||||
},
|
||||
{
|
||||
title: "Interior Deep Clean",
|
||||
description: "Full steam and shampoo restoration.",
|
||||
buttonIcon: "SprayCan",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/man-looking-car-car-showroom_1303-14574.jpg",
|
||||
},
|
||||
{
|
||||
title: "Precision Hand Wash",
|
||||
description: "Gentle, scratch-free hand cleaning process.",
|
||||
buttonIcon: "Droplets",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/car-wash-detailing-station_1303-22304.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ServicesSection />
|
||||
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="WHY CHOOSE US"
|
||||
title="The Detailer Advantage"
|
||||
description="We treat every vehicle as a unique masterpiece, using only the industry's most advanced tools and premium materials."
|
||||
items={[
|
||||
{
|
||||
title: "Premium Tools",
|
||||
description: "Industry leading precision equipment.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/man-polish-car-garage_1157-26059.jpg",
|
||||
},
|
||||
{
|
||||
title: "Mirror Finish",
|
||||
description: "Flawless paint correction guaranteed.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/old-red-car-with-ribbon_181624-38.jpg",
|
||||
},
|
||||
{
|
||||
title: "Expert Care",
|
||||
description: "Professional artisan level craftsmanship.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/repairing-tools_1417-1789.jpg",
|
||||
},
|
||||
{
|
||||
title: "Fast Turnaround",
|
||||
description: "Efficient and reliable scheduling.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/expert-shows-client-car-checkup-steps_482257-75509.jpg",
|
||||
},
|
||||
{
|
||||
title: "Eco Friendly",
|
||||
description: "Sustainable and safe products.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/headlight-lamp-car_1339-3043.jpg",
|
||||
},
|
||||
{
|
||||
title: "Mobile Options",
|
||||
description: "We come to your convenience.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-car-care-process_23-2149193630.jpg",
|
||||
},
|
||||
{
|
||||
title: "Value Pricing",
|
||||
description: "Top quality within reach.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-male-self-care-setting-still-life_23-2150326534.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FeaturesSection />
|
||||
|
||||
<div id="performance" data-section="performance">
|
||||
<SectionErrorBoundary name="performance">
|
||||
<MetricsIconCards
|
||||
tag="OUR TRACK RECORD"
|
||||
title="Numbers That Reflect Our Quality"
|
||||
description="We pride ourselves on the consistency and precision of every single detail."
|
||||
metrics={[
|
||||
{
|
||||
icon: Award,
|
||||
title: "Vehicles Serviced",
|
||||
value: "1,500+",
|
||||
},
|
||||
{
|
||||
icon: Star,
|
||||
title: "Client Satisfaction",
|
||||
value: "99%",
|
||||
},
|
||||
{
|
||||
icon: Zap,
|
||||
title: "Hours Polished",
|
||||
value: "5,000+",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<PerformanceSection />
|
||||
|
||||
<div id="team" data-section="team">
|
||||
<SectionErrorBoundary name="team">
|
||||
<TeamOverlayCards
|
||||
tag="THE TEAM"
|
||||
title="Craftsmanship at Every Level"
|
||||
description="Our team of professionals is dedicated to achieving automotive perfection."
|
||||
members={[
|
||||
{
|
||||
name: "Mark Stevens",
|
||||
role: "Head Detailer",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/happy-mature-businessman-showing-thumb-up_1262-3024.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sarah Miller",
|
||||
role: "Paint Specialist",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/image-corporate-woman-working-office-sitting-front-laptop-preparing-business_1258-194628.jpg",
|
||||
},
|
||||
{
|
||||
name: "Alex Reed",
|
||||
role: "Interior Expert",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-wearing-trucker-hat_23-2149410235.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TeamSection />
|
||||
|
||||
<div id="testimonial" data-section="testimonial">
|
||||
<SectionErrorBoundary name="testimonial">
|
||||
<TestimonialColumnMarqueeCards
|
||||
tag="WHAT OUR CLIENTS SAY"
|
||||
title="Luxury Clients Agree"
|
||||
description="Read experiences from car owners who trust us with their automotive treasures."
|
||||
testimonials={[
|
||||
{
|
||||
name: "John Doe",
|
||||
role: "Collector",
|
||||
quote: "The best detailing I have ever experienced.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/studio-portrait-redhead-bearded-male-dressed-suit-posing-grey-background_613910-11505.jpg",
|
||||
},
|
||||
{
|
||||
name: "Jane Smith",
|
||||
role: "Business Owner",
|
||||
quote: "Remarkable attention to detail, my car looks new.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/confident-beautiful-young-businesswoman-looking-camera-head-shot-portrait_1163-4928.jpg",
|
||||
},
|
||||
{
|
||||
name: "Mike Ross",
|
||||
role: "Sports Enthusiast",
|
||||
quote: "They turned my old car back into a sports machine.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-guy-with-blue-eyes-brown-hair_23-2148311257.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sarah Lee",
|
||||
role: "Luxury Owner",
|
||||
quote: "Professional, efficient, and truly meticulous.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/happy-businesswoman-smiling-looking-camera-successful-confident-grey-haired-manager-sitting-office-room-workplace-business-management-concept_74855-7343.jpg",
|
||||
},
|
||||
{
|
||||
name: "David King",
|
||||
role: "Executive",
|
||||
quote: "Exceptional service for my daily drive.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/people-having-dinner-luxurious-restaurants_23-2151081913.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialSection />
|
||||
|
||||
<div id="partners" data-section="partners">
|
||||
<SectionErrorBoundary name="partners">
|
||||
<SocialProofMarquee
|
||||
tag="PREMIUM PARTNERS"
|
||||
title="We Only Use The Best Brands"
|
||||
description="Trusted products for the best results."
|
||||
names={[
|
||||
"AutoGleam",
|
||||
"NanoTech",
|
||||
"PaintShield",
|
||||
"TireExpert",
|
||||
"EnginePros",
|
||||
"CarbonTech",
|
||||
"LuxeDetail",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<PartnersSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="BOOKING"
|
||||
text="Ready to restore your vehicle's glory? Book your appointment today."
|
||||
primaryButton={{
|
||||
text: "Schedule Detail",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Contact Us",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
27
src/pages/HomePage/sections/Contact.tsx
Normal file
27
src/pages/HomePage/sections/Contact.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 "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="BOOKING"
|
||||
text="Ready to restore your vehicle's glory? Book your appointment today."
|
||||
primaryButton={{
|
||||
text: "Schedule Detail",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Contact Us",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
21
src/pages/HomePage/sections/Features.tsx
Normal file
21
src/pages/HomePage/sections/Features.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 "features" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FeaturesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="WHY CHOOSE US"
|
||||
title="The Detailer Advantage"
|
||||
description="We treat every vehicle as a unique masterpiece, using only the industry's most advanced tools and premium materials."
|
||||
items={[{"description":"Industry leading precision equipment.","imageSrc":"https://images.unsplash.com/photo-1549317661-bd32c8ce0db2?auto=format&fit=crop&q=80&w=800","title":"Premium Tools","href":"#"},{"imageSrc":"https://images.unsplash.com/photo-1583121274602-3e2820c69888?auto=format&fit=crop&q=80&w=800","description":"Flawless paint correction guaranteed.","title":"Mirror Finish","href":"#"},{"href":"#","title":"Expert Care","imageSrc":"https://images.unsplash.com/photo-1600705722908-bab1e61c0b4d?auto=format&fit=crop&q=80&w=800","description":"Professional artisan level craftsmanship."},{"href":"#","title":"Fast Turnaround","imageSrc":"https://images.unsplash.com/photo-1503376712341-ea1c9891f2a3?auto=format&fit=crop&q=80&w=800","description":"Efficient and reliable scheduling."},{"imageSrc":"https://images.unsplash.com/photo-1552519507-da3b142c6e3d?auto=format&fit=crop&q=80&w=800","description":"Sustainable and safe products.","title":"Eco Friendly","href":"#"},{"title":"Mobile Options","imageSrc":"https://images.unsplash.com/photo-1603584173870-7f23fdae1b7a?auto=format&fit=crop&q=80&w=800","description":"We come to your convenience.","href":"#"},{"href":"#","description":"Top quality within reach.","imageSrc":"https://images.unsplash.com/photo-1502877338535-766e1452684a?auto=format&fit=crop&q=80&w=800","title":"Value Pricing"}]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
24
src/pages/HomePage/sections/Hero.tsx
Normal file
24
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,24 @@
|
||||
// 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 HeroSplitVerticalMarquee from '@/components/sections/hero/HeroSplitVerticalMarquee';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroSplitVerticalMarquee
|
||||
tag="PREMIUM LUXURY DETAILING"
|
||||
title="Redefining Luxury Digital Experience"
|
||||
description="Experience our elite detailing services designed for the most discerning car enthusiasts. We bring showroom condition back to your vehicle."
|
||||
primaryButton={{"href":"#contact","text":"Book Your Detail"}}
|
||||
secondaryButton={{"href":"#services","text":"View Our Services"}}
|
||||
leftItems={[{"imageSrc":"https://images.unsplash.com/photo-1601362840469-51e4d8d58785?auto=format&fit=crop&q=80&w=800"},{"imageSrc":"https://images.unsplash.com/photo-1550355291-bbee04a92027?auto=format&fit=crop&q=80&w=800"},{"imageSrc":"https://images.unsplash.com/photo-1618843479313-40f8afb4b4d8?auto=format&fit=crop&q=80&w=800"},{"imageSrc":"https://images.unsplash.com/photo-1549317661-bd32c8ce0db2?auto=format&fit=crop&q=80&w=800"},{"imageSrc":"https://images.unsplash.com/photo-1583121274602-3e2820c69888?auto=format&fit=crop&q=80&w=800"},{"imageSrc":"https://images.unsplash.com/photo-1600705722908-bab1e61c0b4d?auto=format&fit=crop&q=80&w=800"}]}
|
||||
rightItems={[{"imageSrc":"https://images.unsplash.com/photo-1503376712341-ea1c9891f2a3?auto=format&fit=crop&q=80&w=800"},{"imageSrc":"https://images.unsplash.com/photo-1552519507-da3b142c6e3d?auto=format&fit=crop&q=80&w=800"},{"imageSrc":"https://images.unsplash.com/photo-1603584173870-7f23fdae1b7a?auto=format&fit=crop&q=80&w=800"},{"imageSrc":"https://images.unsplash.com/photo-1502877338535-766e1452684a?auto=format&fit=crop&q=80&w=800"},{"imageSrc":"https://images.unsplash.com/photo-1542362567-b07e54358753?auto=format&fit=crop&q=80&w=800"},{"imageSrc":"https://images.unsplash.com/photo-1511919884226-fd3cad34687c?auto=format&fit=crop&q=80&w=800"}]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
29
src/pages/HomePage/sections/Partners.tsx
Normal file
29
src/pages/HomePage/sections/Partners.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 "partners" section.
|
||||
|
||||
import React from 'react';
|
||||
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function PartnersSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="partners" data-section="partners">
|
||||
<SectionErrorBoundary name="partners">
|
||||
<SocialProofMarquee
|
||||
tag="PREMIUM PARTNERS"
|
||||
title="We Only Use The Best Brands"
|
||||
description="Trusted products for the best results."
|
||||
names={[
|
||||
"AutoGleam",
|
||||
"NanoTech",
|
||||
"PaintShield",
|
||||
"TireExpert",
|
||||
"EnginePros",
|
||||
"CarbonTech",
|
||||
"LuxeDetail",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
38
src/pages/HomePage/sections/Performance.tsx
Normal file
38
src/pages/HomePage/sections/Performance.tsx
Normal file
@@ -0,0 +1,38 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "performance" section.
|
||||
|
||||
import React from 'react';
|
||||
import MetricsIconCards from '@/components/sections/metrics/MetricsIconCards';
|
||||
import { Award, Star, Zap } from "lucide-react";
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function PerformanceSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="performance" data-section="performance">
|
||||
<SectionErrorBoundary name="performance">
|
||||
<MetricsIconCards
|
||||
tag="OUR TRACK RECORD"
|
||||
title="Numbers That Reflect Our Quality"
|
||||
description="We pride ourselves on the consistency and precision of every single detail."
|
||||
metrics={[
|
||||
{
|
||||
icon: Award,
|
||||
title: "Vehicles Serviced",
|
||||
value: "1,500+",
|
||||
},
|
||||
{
|
||||
icon: Star,
|
||||
title: "Client Satisfaction",
|
||||
value: "99%",
|
||||
},
|
||||
{
|
||||
icon: Zap,
|
||||
title: "Hours Polished",
|
||||
value: "5,000+",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
21
src/pages/HomePage/sections/Services.tsx
Normal file
21
src/pages/HomePage/sections/Services.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 "services" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ServicesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="services" data-section="services">
|
||||
<SectionErrorBoundary name="services">
|
||||
<FeaturesMediaCarousel
|
||||
tag="OUR SERVICES"
|
||||
title="Unmatched Detailing Excellence"
|
||||
description="Explore our comprehensive suite of professional car care services, tailored for ultimate protection and aesthetic perfection."
|
||||
items={[{"buttonIcon":"Zap","title":"Ceramic Coating","imageSrc":"https://images.unsplash.com/photo-1601362840469-51e4d8d58785?auto=format&fit=crop&q=80&w=800","description":"High-durability nano-ceramic protection layer."},{"description":"Full steam and shampoo restoration.","imageSrc":"https://images.unsplash.com/photo-1550355291-bbee04a92027?auto=format&fit=crop&q=80&w=800","title":"Interior Deep Clean","buttonIcon":"SprayCan"},{"buttonIcon":"Droplets","title":"Precision Hand Wash","description":"Gentle, scratch-free hand cleaning process.","imageSrc":"https://images.unsplash.com/photo-1618843479313-40f8afb4b4d8?auto=format&fit=crop&q=80&w=800"}]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
21
src/pages/HomePage/sections/Team.tsx
Normal file
21
src/pages/HomePage/sections/Team.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 "team" section.
|
||||
|
||||
import React from 'react';
|
||||
import TeamOverlayCards from '@/components/sections/team/TeamOverlayCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TeamSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="team" data-section="team">
|
||||
<SectionErrorBoundary name="team">
|
||||
<TeamOverlayCards
|
||||
tag="THE TEAM"
|
||||
title="Craftsmanship at Every Level"
|
||||
description="Our team of professionals is dedicated to achieving automotive perfection."
|
||||
members={[{"imageSrc":"https://images.unsplash.com/photo-1560250097-0b93528c311a?auto=format&fit=crop&q=80&w=800","role":"Head Detailer","name":"Mark Stevens"},{"name":"Sarah Miller","imageSrc":"https://images.unsplash.com/photo-1573496359142-b8d87734a5a2?auto=format&fit=crop&q=80&w=800","role":"Paint Specialist"},{"name":"Alex Reed","imageSrc":"https://images.unsplash.com/photo-1519085360753-af0119f7cbe7?auto=format&fit=crop&q=80&w=800","role":"Interior Expert"}]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
21
src/pages/HomePage/sections/Testimonial.tsx
Normal file
21
src/pages/HomePage/sections/Testimonial.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 "testimonial" section.
|
||||
|
||||
import React from 'react';
|
||||
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonial" data-section="testimonial">
|
||||
<SectionErrorBoundary name="testimonial">
|
||||
<TestimonialColumnMarqueeCards
|
||||
tag="WHAT OUR CLIENTS SAY"
|
||||
title="Luxury Clients Agree"
|
||||
description="Read experiences from car owners who trust us with their automotive treasures."
|
||||
testimonials={[{"role":"Collector","imageSrc":"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?auto=format&fit=crop&q=80&w=800","name":"John Doe","quote":"The best detailing I have ever experienced."},{"role":"Business Owner","imageSrc":"https://images.unsplash.com/photo-1494790108377-be9c29b29330?auto=format&fit=crop&q=80&w=800","name":"Jane Smith","quote":"Remarkable attention to detail, my car looks new."},{"imageSrc":"https://images.unsplash.com/photo-1500648767791-00dcc994a43e?auto=format&fit=crop&q=80&w=800","role":"Sports Enthusiast","quote":"They turned my old car back into a sports machine.","name":"Mike Ross"},{"role":"Luxury Owner","imageSrc":"https://images.unsplash.com/photo-1534528741775-53994a69daeb?auto=format&fit=crop&q=80&w=800","name":"Sarah Lee","quote":"Professional, efficient, and truly meticulous."},{"quote":"Exceptional service for my daily drive.","name":"David King","imageSrc":"https://images.unsplash.com/photo-1506794778202-cad84cf45f1d?auto=format&fit=crop&q=80&w=800","role":"Executive"}]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user