Merge version_2_1781565204625 into main #5

Merged
bender merged 1 commits from version_2_1781565204625 into main 2026-06-15 23:15:00 +00:00
10 changed files with 391 additions and 247 deletions

View File

@@ -1,259 +1,38 @@
import AboutTextSplit from '@/components/sections/about/AboutTextSplit';
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
import FeaturesDetailedSteps from '@/components/sections/features/FeaturesDetailedSteps';
import HeroBrand from '@/components/sections/hero/HeroBrand';
import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
import PricingCenteredCards from '@/components/sections/pricing/PricingCenteredCards';
import TestimonialRatingCards from '@/components/sections/testimonial/TestimonialRatingCards';
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 FeaturesSection from './HomePage/sections/Features';
import PricingSection from './HomePage/sections/Pricing';
import MetricsSection from './HomePage/sections/Metrics';
import TestimonialSection from './HomePage/sections/Testimonial';
import FaqSection from './HomePage/sections/Faq';
import ContactSection from './HomePage/sections/Contact';
import SocialProofSection from './HomePage/sections/SocialProof';export default function HomePage(): React.JSX.Element {
return (
<>
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroBrand
brand="Danica Fan Hub"
description="Join the ultimate community for Danica Patrick fans. Access exclusive meet-up opportunities, limited edition fan cards, and racing insights."
primaryButton={{
text: "See Pricing",
href: "#pricing",
}}
secondaryButton={{
text: "Learn More",
href: "#about",
}}
imageSrc="http://img.b2bpic.net/free-photo/effect-city-lights-night_23-2149338569.jpg"
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<SocialProofSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutTextSplit
title="Community Gatherings"
descriptions={[
"We host regular meet-ups for Danica Patrick enthusiasts across the country. Whether it's a race day watch party or an exclusive fan Q&A, our community creates memories that last a lifetime.",
"Our events are designed to be accessible, engaging, and deeply focused on celebrating the legacy of one of the world's most iconic drivers.",
]}
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesDetailedSteps
tag="How to get involved"
title="Your Journey as a Fan"
description="Follow these simple steps to join our exclusive membership program."
steps={[
{
tag: "Step 01",
title: "Browse Cards",
subtitle: "View Collection",
description: "Select your favorite limited edition Danica Patrick fan card from our gallery.",
imageSrc: "http://img.b2bpic.net/free-photo/young-african-man-sitting-modern-motorbike-holding-moto-helmet-outdoors_171337-12595.jpg",
},
{
tag: "Step 02",
title: "Choose Meet-up",
subtitle: "Event Schedule",
description: "Register for an upcoming meet-up happening in a city near you.",
imageSrc: "http://img.b2bpic.net/free-photo/3d-glasses-movies-tickets_23-2149558753.jpg",
},
{
tag: "Step 03",
title: "Join the Club",
subtitle: "Member Benefits",
description: "Get exclusive perks, discounts on events, and priority shipping on all cards.",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-motorcycle-helmet_23-2151574469.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<FeaturesSection />
<div id="pricing" data-section="pricing">
<SectionErrorBoundary name="pricing">
<PricingCenteredCards
tag="Fan Card Prices"
title="Collector Membership"
description="Premium access for dedicated racing enthusiasts."
plans={[
{
tag: "Starter",
price: "$29",
description: "For casual supporters.",
features: [
"1 Fan Card",
"Digital Newsletter",
"Event Access",
],
primaryButton: {
text: "Select",
href: "#contact",
},
},
{
tag: "Elite",
price: "$89",
description: "For serious collectors.",
features: [
"3 Fan Cards",
"Signed Digital Access",
"Priority Meet-up Entry",
"Exclusive Gear",
],
primaryButton: {
text: "Select",
href: "#contact",
},
},
{
tag: "VIP",
price: "$199",
description: "For the ultimate fan.",
features: [
"5 Fan Cards",
"Lifetime Meet-up Pass",
"Meet & Greet Priority",
"Personalized Welcome Card",
],
primaryButton: {
text: "Select",
href: "#contact",
},
},
]}
/>
</SectionErrorBoundary>
</div>
<PricingSection />
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsFeatureCards
tag="Our Growth"
title="Impact by the Numbers"
description="Join thousands of members already in the loop."
metrics={[
{
value: "5,000+",
title: "Active Members",
features: [
"Across 20 states",
"Year-round updates",
],
},
{
value: "150+",
title: "Events Held",
features: [
"Meet-ups every month",
"Virtual fan Q&A",
],
},
{
value: "12,000+",
title: "Cards Shipped",
features: [
"Collectors item grade",
"Premium finish",
],
},
]}
/>
</SectionErrorBoundary>
</div>
<MetricsSection />
<div id="testimonial" data-section="testimonial">
<SectionErrorBoundary name="testimonial">
<TestimonialRatingCards
tag="Fan Stories"
title="Hear From Our Community"
description="What our members have to say about the experience."
testimonials={[
{
name: "Alice M.",
role: "Collector",
quote: "The cards are incredibly high quality, and the meet-ups are so much fun!",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/blonde-mature-woman-black-t-shirt-black-cap_176474-93443.jpg",
},
{
name: "Ben T.",
role: "VIP Member",
quote: "Worth every cent. I've met so many great friends at the regional events.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/joyful-young-sporty-man-wearing-wristband-showing-strong-gesture-isolated-orange-background_141793-63221.jpg",
},
{
name: "Carla S.",
role: "Fan",
quote: "I love the exclusive updates. Never missed a beat in Danica's career now.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/horizontal-portrait-positive-young-european-athletic-female-with-dyed-hair-wearing-white-tank-top_343059-577.jpg",
},
{
name: "David L.",
role: "Collector",
quote: "Solid community support and amazing fan cards. Highly recommend to everyone.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/portrait-victorious-male-racing-car-pilot_23-2150923099.jpg",
},
{
name: "Eve W.",
role: "Supporter",
quote: "The VIP pass changed the game. So many great perks included.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/portrait-soccer-game-fan-enjoying-match_23-2150860651.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<TestimonialSection />
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqSplitMedia
tag="Common Questions"
title="Everything You Need to Know"
description="Answers to commonly asked questions about our club."
items={[
{
question: "Where are the meet-ups held?",
answer: "We rotate venues throughout major racing hubs across the country.",
},
{
question: "Are the cards physical?",
answer: "Yes, we ship high-quality physical cards to your registered address.",
},
{
question: "How do I upgrade my membership?",
answer: "Simply contact our support team or head to your profile settings.",
},
]}
imageSrc="http://img.b2bpic.net/free-photo/stylish-elegant-woman-car-salon_1157-32016.jpg"
/>
</SectionErrorBoundary>
</div>
<FaqSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Ready to join?"
text="Sign up today to start your journey as a true Danica Patrick fan. Don't miss out on the next big event."
primaryButton={{
text: "Sign Up Now",
href: "#pricing",
}}
secondaryButton={{
text: "Contact Support",
href: "#",
}}
/>
</SectionErrorBoundary>
</div>
<ContactSection />
</>
);
}

View 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 AboutTextSplit from '@/components/sections/about/AboutTextSplit';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function AboutSection(): React.JSX.Element {
return (
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutTextSplit
title="Community Gatherings"
descriptions={[
"We host regular meet-ups for Danica Patrick enthusiasts across the country. Whether it's a race day watch party or an exclusive fan Q&A, our community creates memories that last a lifetime.",
"Our events are designed to be accessible, engaging, and deeply focused on celebrating the legacy of one of the world's most iconic drivers.",
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,27 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "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="Ready to join?"
text="Sign up today to start your journey as a true Danica Patrick fan. Don't miss out on the next big event."
primaryButton={{
text: "Sign Up Now",
href: "#pricing",
}}
secondaryButton={{
text: "Contact Support",
href: "#",
}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,35 @@
// 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="Common Questions"
title="Everything You Need to Know"
description="Answers to commonly asked questions about our club."
items={[
{
question: "Where are the meet-ups held?",
answer: "We rotate venues throughout major racing hubs across the country.",
},
{
question: "Are the cards physical?",
answer: "Yes, we ship high-quality physical cards to your registered address.",
},
{
question: "How do I upgrade my membership?",
answer: "Simply contact our support team or head to your profile settings.",
},
]}
imageSrc="http://img.b2bpic.net/free-photo/stylish-elegant-woman-car-salon_1157-32016.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,43 @@
// 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 FeaturesDetailedSteps from '@/components/sections/features/FeaturesDetailedSteps';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FeaturesSection(): React.JSX.Element {
return (
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesDetailedSteps
tag="How to get involved"
title="Your Journey as a Fan"
description="Follow these simple steps to join our exclusive membership program."
steps={[
{
tag: "Step 01",
title: "Browse Cards",
subtitle: "View Collection",
description: "Select your favorite limited edition Danica Patrick fan card from our gallery.",
imageSrc: "http://img.b2bpic.net/free-photo/young-african-man-sitting-modern-motorbike-holding-moto-helmet-outdoors_171337-12595.jpg",
},
{
tag: "Step 02",
title: "Choose Meet-up",
subtitle: "Event Schedule",
description: "Register for an upcoming meet-up happening in a city near you.",
imageSrc: "http://img.b2bpic.net/free-photo/3d-glasses-movies-tickets_23-2149558753.jpg",
},
{
tag: "Step 03",
title: "Join the Club",
subtitle: "Member Benefits",
description: "Get exclusive perks, discounts on events, and priority shipping on all cards.",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-motorcycle-helmet_23-2151574469.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,28 @@
// 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 HeroBrand from '@/components/sections/hero/HeroBrand';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HeroSection(): React.JSX.Element {
return (
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroBrand
brand="Danica Fan Hub"
description="Join the ultimate community for Danica Patrick fans. Access exclusive meet-up opportunities, limited edition fan cards, and racing insights."
primaryButton={{
text: "See Pricing",
href: "#pricing",
}}
secondaryButton={{
text: "Learn More",
href: "#about",
}}
imageSrc="http://img.b2bpic.net/free-photo/effect-city-lights-night_23-2149338569.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,46 @@
// 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="Our Growth"
title="Impact by the Numbers"
description="Join thousands of members already in the loop."
metrics={[
{
value: "5,000+",
title: "Active Members",
features: [
"Across 20 states",
"Year-round updates",
],
},
{
value: "150+",
title: "Events Held",
features: [
"Meet-ups every month",
"Virtual fan Q&A",
],
},
{
value: "12,000+",
title: "Cards Shipped",
features: [
"Collectors item grade",
"Premium finish",
],
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,66 @@
// 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 PricingCenteredCards from '@/components/sections/pricing/PricingCenteredCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function PricingSection(): React.JSX.Element {
return (
<div id="pricing" data-section="pricing">
<SectionErrorBoundary name="pricing">
<PricingCenteredCards
tag="Fan Card Prices"
title="Collector Membership"
description="Premium access for dedicated racing enthusiasts."
plans={[
{
tag: "Starter",
price: "$29",
description: "For casual supporters.",
features: [
"1 Fan Card",
"Digital Newsletter",
"Event Access",
],
primaryButton: {
text: "Select",
href: "#contact",
},
},
{
tag: "Elite",
price: "$89",
description: "For serious collectors.",
features: [
"3 Fan Cards",
"Signed Digital Access",
"Priority Meet-up Entry",
"Exclusive Gear",
],
primaryButton: {
text: "Select",
href: "#contact",
},
},
{
tag: "VIP",
price: "$199",
description: "For the ultimate fan.",
features: [
"5 Fan Cards",
"Lifetime Meet-up Pass",
"Meet & Greet Priority",
"Personalized Welcome Card",
],
primaryButton: {
text: "Select",
href: "#contact",
},
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,41 @@
import ScrollReveal from "@/components/ui/ScrollReveal";
import LoopCarousel from "@/components/ui/LoopCarousel";
export default function SocialProofSection() {
const publications = [
"ESPN",
"Fox Sports",
"Sports Illustrated",
"Motor Trend",
"NASCAR.com",
"The Athletic",
"USA Today",
"Yahoo Sports"
];
return (
<section data-webild-section="social-proof" id="social-proof" className="relative w-full py-16 bg-background border-b border-border/10 overflow-hidden">
<div className="w-content-width mx-auto px-4 md:px-6 mb-8 text-center">
<ScrollReveal variant="fade">
<p className="text-sm font-semibold text-muted-foreground uppercase tracking-widest">
As Seen On
</p>
</ScrollReveal>
</div>
<div className="w-full">
<LoopCarousel>
<div className="flex items-center gap-16 md:gap-32 px-8">
{publications.map((pub, i) => (
<div key={i} className="flex items-center justify-center whitespace-nowrap">
<span className="text-2xl md:text-3xl font-bold text-foreground/30">
{pub}
</span>
</div>
))}
</div>
</LoopCarousel>
</div>
</section>
);
}

View File

@@ -0,0 +1,57 @@
// 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 TestimonialRatingCards from '@/components/sections/testimonial/TestimonialRatingCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function TestimonialSection(): React.JSX.Element {
return (
<div id="testimonial" data-section="testimonial">
<SectionErrorBoundary name="testimonial">
<TestimonialRatingCards
tag="Fan Stories"
title="Hear From Our Community"
description="What our members have to say about the experience."
testimonials={[
{
name: "Alice M.",
role: "Collector",
quote: "The cards are incredibly high quality, and the meet-ups are so much fun!",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/blonde-mature-woman-black-t-shirt-black-cap_176474-93443.jpg",
},
{
name: "Ben T.",
role: "VIP Member",
quote: "Worth every cent. I've met so many great friends at the regional events.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/joyful-young-sporty-man-wearing-wristband-showing-strong-gesture-isolated-orange-background_141793-63221.jpg",
},
{
name: "Carla S.",
role: "Fan",
quote: "I love the exclusive updates. Never missed a beat in Danica's career now.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/horizontal-portrait-positive-young-european-athletic-female-with-dyed-hair-wearing-white-tank-top_343059-577.jpg",
},
{
name: "David L.",
role: "Collector",
quote: "Solid community support and amazing fan cards. Highly recommend to everyone.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/portrait-victorious-male-racing-car-pilot_23-2150923099.jpg",
},
{
name: "Eve W.",
role: "Supporter",
quote: "The VIP pass changed the game. So many great perks included.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/portrait-soccer-game-fan-enjoying-match_23-2150860651.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}