Merge version_2_1781730291109 into main
Merge version_2_1781730291109 into main
This commit was merged in pull request #2.
This commit is contained in:
@@ -1,160 +1,33 @@
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqTwoColumn from '@/components/sections/faq/FaqTwoColumn';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';
|
||||
import HeroOverlayMarquee from '@/components/sections/hero/HeroOverlayMarquee';
|
||||
import MetricsSimpleCards from '@/components/sections/metrics/MetricsSimpleCards';
|
||||
import TestimonialMarqueeCards from '@/components/sections/testimonial/TestimonialMarqueeCards';
|
||||
import { CheckCircle, Shield, 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 ProductsSection from './HomePage/sections/Products';
|
||||
import FeaturesSection from './HomePage/sections/Features';
|
||||
import MetricsSection from './HomePage/sections/Metrics';
|
||||
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">
|
||||
<HeroOverlayMarquee
|
||||
tag="PREMIUM SOCCER KITS"
|
||||
title="Own the Pitch."
|
||||
description="Authentic professional soccer jerseys delivered to your door. High-performance fabric, iconic designs."
|
||||
primaryButton={{
|
||||
text: "Browse Jerseys", href: "#products"}}
|
||||
secondaryButton={{
|
||||
text: "Contact Support", href: "#contact"}}
|
||||
items={[
|
||||
{
|
||||
text: "Authentic Quality", icon: CheckCircle,
|
||||
},
|
||||
{
|
||||
text: "Fast Worldwide Shipping", icon: Zap,
|
||||
},
|
||||
{
|
||||
text: "Secure Checkout", icon: Shield,
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/football-composition-with-slate_23-2147827656.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="products" data-section="products">
|
||||
<SectionErrorBoundary name="products">
|
||||
<FeaturesImageBento
|
||||
tag="NEW ARRIVALS"
|
||||
title="Shop Professional Jerseys"
|
||||
description="Explore our curated selection of top-tier kits."
|
||||
items={[
|
||||
{
|
||||
title: "Home Pro Kit", description: "$89.99", imageSrc: "http://img.b2bpic.net/free-photo/football-composition-with-jersey_23-2147827778.jpg"},
|
||||
{
|
||||
title: "Away Pro Kit", description: "$89.99", imageSrc: "http://img.b2bpic.net/free-photo/crop-ethnic-sportsman-with-soccer-ball-arm_23-2148203525.jpg"},
|
||||
{
|
||||
title: "Retro Heritage", description: "$75.00", imageSrc: "http://img.b2bpic.net/free-photo/football-composition-with-whiteboard_23-2147827753.jpg"},
|
||||
{
|
||||
title: "Third Edition", description: "$95.00", imageSrc: "http://img.b2bpic.net/free-photo/neon-style-american-football-player_23-2151827377.jpg"},
|
||||
{
|
||||
title: "Limited Collection", description: "$120.00", imageSrc: "https://storage.googleapis.com/webild/default/no-image.jpg?id=208oif"},
|
||||
{
|
||||
title: "Keeper Series", description: "$99.00", imageSrc: "http://img.b2bpic.net/free-photo/portrait-professional-soccer-player_93675-134364.jpg"},
|
||||
{
|
||||
title: "Custom Name Kit", description: "$110.00", imageSrc: "http://img.b2bpic.net/free-photo/view-american-football-ball_23-2150784018.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ProductsSection />
|
||||
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesMediaCarousel
|
||||
tag="PERFORMANCE GEAR"
|
||||
title="Why ProKits?"
|
||||
description="Engineered for elite performance and everyday comfort."
|
||||
items={[
|
||||
{
|
||||
title: "Advanced Fabric", description: "Moisture-wicking tech keeps you dry under pressure.", buttonIcon: "Zap", imageSrc: "http://img.b2bpic.net/free-photo/abstract-green-metal-background-iron-dots-texture-outdoor-metal-wall_158595-7210.jpg"},
|
||||
{
|
||||
title: "Pro Printing", description: "High-durable name and number customization.", buttonIcon: "PenTool", imageSrc: "http://img.b2bpic.net/free-photo/t-shirt-painting-indoors-still-life_23-2150572742.jpg"},
|
||||
{
|
||||
title: "Fan Tested", description: "Loved by thousands of soccer enthusiasts globally.", buttonIcon: "Award", imageSrc: "http://img.b2bpic.net/free-photo/front-view-male-doctor-emotionally-rejoicing-yellow-wall_179666-12572.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FeaturesSection />
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsSimpleCards
|
||||
tag="BY THE NUMBERS"
|
||||
title="Proven Excellence"
|
||||
description="We deliver the best gear for fans worldwide."
|
||||
metrics={[
|
||||
{
|
||||
value: "15k+", description: "Jerseys Sold"},
|
||||
{
|
||||
value: "4.9/5", description: "Customer Rating"},
|
||||
{
|
||||
value: "50+", description: "League Designs"},
|
||||
{
|
||||
value: "24h", description: "Dispatch Time"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MetricsSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialMarqueeCards
|
||||
tag="FANS SPEAK"
|
||||
title="Trusted by Pro Fans"
|
||||
description="Read what our community has to say."
|
||||
testimonials={[
|
||||
{
|
||||
name: "John Doe", role: "Fan", quote: "Incredible quality, feels just like the real kits on the field.", imageSrc: "http://img.b2bpic.net/free-photo/handsome-man-supporter-fan-morocco-national-team-painted-flag-face-get-happy-victory-screaming-into-camera-fans-emotions_231208-7086.jpg"},
|
||||
{
|
||||
name: "Sarah Miller", role: "Collector", quote: "The print quality is amazing and has lasted for years.", imageSrc: "http://img.b2bpic.net/free-photo/confused-young-sporty-man-wearing-wristband-holding-ball-isolated-orange-background-with-copy-space_141793-63341.jpg"},
|
||||
{
|
||||
name: "Mike Ross", role: "Coach", quote: "Best gear for our entire academy team. Highly recommended.", imageSrc: "http://img.b2bpic.net/free-photo/happy-satisfied-customer-making-ok-gesture_74855-2298.jpg"},
|
||||
{
|
||||
name: "Leo Messi Fan", role: "Supporter", quote: "Fast shipping and perfect sizing every single time.", imageSrc: "http://img.b2bpic.net/free-photo/young-crazy-sports-man-happy-expression_1194-5248.jpg"},
|
||||
{
|
||||
name: "Ana Silva", role: "Player", quote: "Comfortable, breathable and looks absolutely iconic.", imageSrc: "http://img.b2bpic.net/free-photo/woman-stretching-leg-field_23-2148930211.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqTwoColumn
|
||||
tag="HELP"
|
||||
title="Frequently Asked"
|
||||
description="Common questions about our products and services."
|
||||
items={[
|
||||
{
|
||||
question: "Are these jerseys authentic?", answer: "Yes, we sell high-quality, authentic-style jerseys."},
|
||||
{
|
||||
question: "What is the return policy?", answer: "We offer free returns within 30 days of purchase."},
|
||||
{
|
||||
question: "How long is shipping?", answer: "Usually 3-5 business days for standard shipping."},
|
||||
{
|
||||
question: "Do you offer international shipping?", answer: "Yes, we ship to over 100 countries worldwide."},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="GET IN TOUCH"
|
||||
text="Have questions about a specific kit or need help with sizing? Our expert team is ready to assist."
|
||||
primaryButton={{
|
||||
text: "Email Support", href: "mailto:hello@prokits.com"}}
|
||||
secondaryButton={{
|
||||
text: "FAQ Center", href: "#faq"}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
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="GET IN TOUCH"
|
||||
text="Have questions about a specific kit or need help with sizing? Our expert team is ready to assist."
|
||||
primaryButton={{
|
||||
text: "Email Support", href: "mailto:hello@prokits.com"}}
|
||||
secondaryButton={{
|
||||
text: "FAQ Center", href: "#faq"}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
30
src/pages/HomePage/sections/Faq.tsx
Normal file
30
src/pages/HomePage/sections/Faq.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 "faq" section.
|
||||
|
||||
import React from 'react';
|
||||
import FaqTwoColumn from '@/components/sections/faq/FaqTwoColumn';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FaqSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqTwoColumn
|
||||
tag="HELP"
|
||||
title="Frequently Asked"
|
||||
description="Common questions about our products and services."
|
||||
items={[
|
||||
{
|
||||
question: "Are these jerseys authentic?", answer: "Yes, we sell high-quality, authentic-style jerseys."},
|
||||
{
|
||||
question: "What is the return policy?", answer: "We offer free returns within 30 days of purchase."},
|
||||
{
|
||||
question: "How long is shipping?", answer: "Usually 3-5 business days for standard shipping."},
|
||||
{
|
||||
question: "Do you offer international shipping?", answer: "Yes, we ship to over 100 countries worldwide."},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
28
src/pages/HomePage/sections/Features.tsx
Normal file
28
src/pages/HomePage/sections/Features.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 "features" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FeaturesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesMediaCarousel
|
||||
tag="PERFORMANCE GEAR"
|
||||
title="Why ProKits?"
|
||||
description="Engineered for elite performance and everyday comfort."
|
||||
items={[
|
||||
{
|
||||
title: "Advanced Fabric", description: "Moisture-wicking tech keeps you dry under pressure.", buttonIcon: "Zap", imageSrc: "http://img.b2bpic.net/free-photo/abstract-green-metal-background-iron-dots-texture-outdoor-metal-wall_158595-7210.jpg"},
|
||||
{
|
||||
title: "Pro Printing", description: "High-durable name and number customization.", buttonIcon: "PenTool", imageSrc: "http://img.b2bpic.net/free-photo/t-shirt-painting-indoors-still-life_23-2150572742.jpg"},
|
||||
{
|
||||
title: "Fan Tested", description: "Loved by thousands of soccer enthusiasts globally.", buttonIcon: "Award", imageSrc: "http://img.b2bpic.net/free-photo/front-view-male-doctor-emotionally-rejoicing-yellow-wall_179666-12572.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
37
src/pages/HomePage/sections/Hero.tsx
Normal file
37
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,37 @@
|
||||
// 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 HeroOverlayMarquee from '@/components/sections/hero/HeroOverlayMarquee';
|
||||
import { CheckCircle, Shield, Zap } from "lucide-react";
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroOverlayMarquee
|
||||
tag="PREMIUM SOCCER KITS"
|
||||
title="Own the Pitch."
|
||||
description="Authentic professional soccer jerseys delivered to your door. High-performance fabric, iconic designs."
|
||||
primaryButton={{
|
||||
text: "Browse Jerseys", href: "#products"}}
|
||||
secondaryButton={{
|
||||
text: "Contact Support", href: "#contact"}}
|
||||
items={[
|
||||
{
|
||||
text: "Authentic Quality", icon: CheckCircle,
|
||||
},
|
||||
{
|
||||
text: "Fast Worldwide Shipping", icon: Zap,
|
||||
},
|
||||
{
|
||||
text: "Secure Checkout", icon: Shield,
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/football-composition-with-slate_23-2147827656.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
30
src/pages/HomePage/sections/Metrics.tsx
Normal file
30
src/pages/HomePage/sections/Metrics.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 "metrics" section.
|
||||
|
||||
import React from 'react';
|
||||
import MetricsSimpleCards from '@/components/sections/metrics/MetricsSimpleCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function MetricsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsSimpleCards
|
||||
tag="BY THE NUMBERS"
|
||||
title="Proven Excellence"
|
||||
description="We deliver the best gear for fans worldwide."
|
||||
metrics={[
|
||||
{
|
||||
value: "15k+", description: "Jerseys Sold"},
|
||||
{
|
||||
value: "4.9/5", description: "Customer Rating"},
|
||||
{
|
||||
value: "50+", description: "League Designs"},
|
||||
{
|
||||
value: "24h", description: "Dispatch Time"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
21
src/pages/HomePage/sections/Products.tsx
Normal file
21
src/pages/HomePage/sections/Products.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 "products" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ProductsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="products" data-section="products">
|
||||
<SectionErrorBoundary name="products">
|
||||
<FeaturesImageBento
|
||||
tag="NEW ARRIVALS"
|
||||
title="Shop Professional Replica Jerseys"
|
||||
description="Explore our curated selection of top-tier replica kits."
|
||||
items={[{"imageSrc":"http://img.b2bpic.net/free-photo/football-composition-with-jersey_23-2147827778.jpg","title":"Ronaldo Replica Kit","description":"$89.99"},{"imageSrc":"http://img.b2bpic.net/free-photo/crop-ethnic-sportsman-with-soccer-ball-arm_23-2148203525.jpg","title":"Messi Replica Kit","description":"$89.99"},{"description":"$75.00","imageSrc":"http://img.b2bpic.net/free-photo/football-composition-with-whiteboard_23-2147827753.jpg","title":"Neymar Replica Kit"},{"description":"$95.00","imageSrc":"http://img.b2bpic.net/free-photo/neon-style-american-football-player_23-2151827377.jpg","title":"Mbappe Replica Kit"},{"imageSrc":"https://storage.googleapis.com/webild/default/no-image.jpg?id=208oif","title":"Haaland Replica Kit","description":"$120.00"},{"imageSrc":"http://img.b2bpic.net/free-photo/portrait-professional-soccer-player_93675-134364.jpg","title":"Vinicius Replica Kit","description":"$99.00"},{"description":"$110.00","imageSrc":"http://img.b2bpic.net/free-photo/view-american-football-ball_23-2150784018.jpg","title":"Custom Name Replica Kit"}]}
|
||||
/>
|
||||
</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="FANS SPEAK"
|
||||
title="Trusted by Pro Fans"
|
||||
description="Read what our community has to say."
|
||||
testimonials={[
|
||||
{
|
||||
name: "John Doe", role: "Fan", quote: "Incredible quality, feels just like the real kits on the field.", imageSrc: "http://img.b2bpic.net/free-photo/handsome-man-supporter-fan-morocco-national-team-painted-flag-face-get-happy-victory-screaming-into-camera-fans-emotions_231208-7086.jpg"},
|
||||
{
|
||||
name: "Sarah Miller", role: "Collector", quote: "The print quality is amazing and has lasted for years.", imageSrc: "http://img.b2bpic.net/free-photo/confused-young-sporty-man-wearing-wristband-holding-ball-isolated-orange-background-with-copy-space_141793-63341.jpg"},
|
||||
{
|
||||
name: "Mike Ross", role: "Coach", quote: "Best gear for our entire academy team. Highly recommended.", imageSrc: "http://img.b2bpic.net/free-photo/happy-satisfied-customer-making-ok-gesture_74855-2298.jpg"},
|
||||
{
|
||||
name: "Leo Messi Fan", role: "Supporter", quote: "Fast shipping and perfect sizing every single time.", imageSrc: "http://img.b2bpic.net/free-photo/young-crazy-sports-man-happy-expression_1194-5248.jpg"},
|
||||
{
|
||||
name: "Ana Silva", role: "Player", quote: "Comfortable, breathable and looks absolutely iconic.", imageSrc: "http://img.b2bpic.net/free-photo/woman-stretching-leg-field_23-2148930211.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user