Merge version_2_1781623274357 into main #2
@@ -1,153 +1,35 @@
|
||||
import AboutTestimonial from '@/components/sections/about/AboutTestimonial';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import FeaturesTaggedCards from '@/components/sections/features/FeaturesTaggedCards';
|
||||
import HeroCenteredLogos from '@/components/sections/hero/HeroCenteredLogos';
|
||||
import TeamOverlayCards from '@/components/sections/team/TeamOverlayCards';
|
||||
import TestimonialQuoteCards from '@/components/sections/testimonial/TestimonialQuoteCards';
|
||||
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 SneakersSection from './HomePage/sections/Sneakers';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import AboutSection from './HomePage/sections/About';
|
||||
import ContactSection from './HomePage/sections/Contact';
|
||||
|
||||
|
||||
import TrustBarSection from './HomePage/sections/TrustBar';export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroCenteredLogos
|
||||
title="Born Empty. Stay Haunted."
|
||||
description="Premium streetwear built for the shadows. Redefining modern urban aesthetics with an unapologetic, haunted spirit."
|
||||
primaryButton={{
|
||||
text: "Shop Now", href: "#products"}}
|
||||
secondaryButton={{
|
||||
text: "View Lookbook", href: "#about"}}
|
||||
names={[
|
||||
"GHOST", "TOWN", "STREET", "HAUNTED", "URBAN", "BORN", "EMPTY"]}
|
||||
avatarsSrc={[]}
|
||||
avatarText=""
|
||||
imageSrc="http://img.b2bpic.net/free-photo/vertical-grayscale-shot-old-stone-historical-building-with-arch-shaped-door_181624-61797.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
<TrustBarSection />
|
||||
|
||||
<div id="products" data-section="products">
|
||||
<SectionErrorBoundary name="products">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Collections"
|
||||
title="The Ghost Inventory"
|
||||
description="Curated essentials designed for the void."
|
||||
items={[
|
||||
{
|
||||
title: "Hoodies", description: "Oversized fit with premium heavy-weight cotton.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/pisces-portrait-beautiful-woman_23-2149275095.jpg"},
|
||||
{
|
||||
title: "Bomber Jackets", description: "Structured layers for the cold.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/side-view-woman-wearing-heels_23-2149741919.jpg"},
|
||||
{
|
||||
title: "Sneakers", description: "Engineered for urban exploration.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/black-leather-sports-shoe-with-elegant-shoelace-generated-by-ai_188544-19647.jpg"},
|
||||
{
|
||||
title: "Track Pants", description: "Technical cut, ultimate mobility.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/side-view-man-posing-with-flowers_23-2149486770.jpg"},
|
||||
{
|
||||
title: "Caps", description: "Structured embroidery, classic silhouette.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/portrait-stylish-young-african-man-standing-against-city-skyline_23-2148151906.jpg"},
|
||||
{
|
||||
title: "Socks", description: "Ghost Town branded comfort.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/stylish-hipster-arab-man-guy-posed-outdoor-street-style-rap-singer_627829-2788.jpg"},
|
||||
{
|
||||
title: "T-Shirts", description: "Essential graphic layering pieces.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-asian-woman-autumn-clothes_23-2149071331.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ProductsSection />
|
||||
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesTaggedCards
|
||||
tag="Ghost Standard"
|
||||
title="Quality in the Void"
|
||||
description="We don't compromise. Every stitch, print, and material choice reflects our commitment to premium streetwear."
|
||||
items={[
|
||||
{
|
||||
tag: "Fabric", title: "Premium Weight Cotton", description: "Heavyweight French terry for lasting wear and structured comfort.", primaryButton: {
|
||||
text: "Shop Hoodies", href: "#"},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/man-wearing-blank-shirt_23-2149347545.jpg"},
|
||||
{
|
||||
tag: "Design", title: "Haunted Details", description: "Signature aesthetic elements integrated with high-end manufacturing.", primaryButton: {
|
||||
text: "See Collection", href: "#"},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/pop-punk-aesthetic-portrait-woman-posing-metal-structure_23-2149371472.jpg"},
|
||||
{
|
||||
tag: "Tech", title: "Sustainable Tech", description: "Durable finishes that withstand urban daily use without sacrificing comfort.", primaryButton: {
|
||||
text: "Read Story", href: "#"},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/urban-portrait-young-man-with-long-hair_23-2149122924.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FeaturesSection />
|
||||
|
||||
<div id="sneakers" data-section="sneakers">
|
||||
<SectionErrorBoundary name="sneakers">
|
||||
<TeamOverlayCards
|
||||
tag="Footwear"
|
||||
title="Sneaker Collection"
|
||||
description="Engineered for movement. Designed to haunt."
|
||||
members={[
|
||||
{
|
||||
name: "Wraith Bone", role: "Premium Leather", imageSrc: "http://img.b2bpic.net/free-photo/pair-athletic-running-shoes-line-art-color-vector_1308-186837.jpg"},
|
||||
{
|
||||
name: "Nightfall Black", role: "Stealth Finish", imageSrc: "http://img.b2bpic.net/free-photo/close-up-futuristic-sneakers_23-2151005726.jpg"},
|
||||
{
|
||||
name: "Bloodline Red", role: "Bold Highlight", imageSrc: "http://img.b2bpic.net/free-photo/close-up-futuristic-sneakers_23-2151005673.jpg"},
|
||||
{
|
||||
name: "Specter Ice", role: "Cooling Tech", imageSrc: "http://img.b2bpic.net/free-photo/close-up-futuristic-sneakers_23-2151005724.jpg"},
|
||||
{
|
||||
name: "Toxic Green", role: "Bold Contrast", imageSrc: "http://img.b2bpic.net/free-photo/skater-girl-urban-sitting-stairs-side-view_23-2148787219.jpg"},
|
||||
{
|
||||
name: "Void Grey", role: "Minimalist Craft", imageSrc: "http://img.b2bpic.net/free-photo/woman-s-white-canvas-sneaker-white_53876-96608.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<SneakersSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialQuoteCards
|
||||
tag="Community"
|
||||
title="Voices from the Town"
|
||||
description="How our community haunts the streets."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Alex R.", role: "Streetwear Critic", quote: "The most atmospheric brand I've worn all year. The quality is unmatched.", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-woman-wearing-gloves_23-2149267483.jpg"},
|
||||
{
|
||||
name: "Sarah K.", role: "Designer", quote: "Ghost Town captures that dark streetwear vibe perfectly. Clean, sharp, and haunting.", imageSrc: "http://img.b2bpic.net/free-photo/man-with-mustache-wearing-hoodie_250224-83.jpg"},
|
||||
{
|
||||
name: "Marcus L.", role: "Urban Traveler", quote: "The sneakers are incredibly comfortable and turn heads everywhere.", imageSrc: "http://img.b2bpic.net/free-photo/handsome-man-looking-camera_197531-33408.jpg"},
|
||||
{
|
||||
name: "Jordan P.", role: "Musician", quote: "Fits my stage presence. Dark, minimal, and bold.", imageSrc: "http://img.b2bpic.net/free-photo/pop-punk-aesthetic-portrait-woman-posing-inside-building_23-2149371487.jpg"},
|
||||
{
|
||||
name: "Elena W.", role: "Stylist", quote: "A masterclass in modern dark fashion. Love the toxic green details.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-beautiful-woman-posing-with-avantgarde-head-piece_23-2149020819.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutTestimonial
|
||||
tag="Origin"
|
||||
quote="We started as an empty space, filling the void with design and substance. Ghost Town is more than apparel; it’s an identity for those who walk between the lines."
|
||||
author="The Founders"
|
||||
role="Ghost Town Collective"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/low-angle-shot-arched-type-ceiling-with-rope-hanging-down-black-white_181624-3388.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Join the haunt"
|
||||
text="Sign up for early access to drops, behind-the-scenes content, and exclusive sneaker configurator updates."
|
||||
primaryButton={{
|
||||
text: "Sign Up", href: "#"}}
|
||||
secondaryButton={{
|
||||
text: "Login", href: "#"}}
|
||||
/>
|
||||
</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 AboutTestimonial from '@/components/sections/about/AboutTestimonial';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function AboutSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutTestimonial
|
||||
tag="Origin"
|
||||
quote="We started as an empty space, filling the void with design and substance. Ghost Town is more than apparel; it’s an identity for those who walk between the lines."
|
||||
author="The Founders"
|
||||
role="Ghost Town Collective"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/low-angle-shot-arched-type-ceiling-with-rope-hanging-down-black-white_181624-3388.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="Join the haunt"
|
||||
text="Sign up for early access to drops, behind-the-scenes content, and exclusive sneaker configurator updates."
|
||||
primaryButton={{
|
||||
text: "Sign Up", href: "#"}}
|
||||
secondaryButton={{
|
||||
text: "Login", href: "#"}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
34
src/pages/HomePage/sections/Features.tsx
Normal file
34
src/pages/HomePage/sections/Features.tsx
Normal file
@@ -0,0 +1,34 @@
|
||||
// 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 FeaturesTaggedCards from '@/components/sections/features/FeaturesTaggedCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FeaturesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesTaggedCards
|
||||
tag="Ghost Standard"
|
||||
title="Quality in the Void"
|
||||
description="We don't compromise. Every stitch, print, and material choice reflects our commitment to premium streetwear."
|
||||
items={[
|
||||
{
|
||||
tag: "Fabric", title: "Premium Weight Cotton", description: "Heavyweight French terry for lasting wear and structured comfort.", primaryButton: {
|
||||
text: "Shop Hoodies", href: "#"},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/man-wearing-blank-shirt_23-2149347545.jpg"},
|
||||
{
|
||||
tag: "Design", title: "Haunted Details", description: "Signature aesthetic elements integrated with high-end manufacturing.", primaryButton: {
|
||||
text: "See Collection", href: "#"},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/pop-punk-aesthetic-portrait-woman-posing-metal-structure_23-2149371472.jpg"},
|
||||
{
|
||||
tag: "Tech", title: "Sustainable Tech", description: "Durable finishes that withstand urban daily use without sacrificing comfort.", primaryButton: {
|
||||
text: "Read Story", href: "#"},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/urban-portrait-young-man-with-long-hair_23-2149122924.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
28
src/pages/HomePage/sections/Hero.tsx
Normal file
28
src/pages/HomePage/sections/Hero.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 "hero" section.
|
||||
|
||||
import React from 'react';
|
||||
import HeroCenteredLogos from '@/components/sections/hero/HeroCenteredLogos';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroCenteredLogos
|
||||
title="Born Empty. Stay Haunted."
|
||||
description="Premium streetwear built for the shadows. Redefining modern urban aesthetics with an unapologetic, haunted spirit."
|
||||
primaryButton={{
|
||||
text: "Shop Now", href: "#products"}}
|
||||
secondaryButton={{
|
||||
text: "View Lookbook", href: "#about"}}
|
||||
names={[
|
||||
"GHOST", "TOWN", "STREET", "HAUNTED", "URBAN", "BORN", "EMPTY"]}
|
||||
avatarsSrc={[]}
|
||||
avatarText=""
|
||||
imageSrc="http://img.b2bpic.net/free-photo/vertical-grayscale-shot-old-stone-historical-building-with-arch-shaped-door_181624-61797.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
36
src/pages/HomePage/sections/Products.tsx
Normal file
36
src/pages/HomePage/sections/Products.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 "products" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ProductsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="products" data-section="products">
|
||||
<SectionErrorBoundary name="products">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Collections"
|
||||
title="The Ghost Inventory"
|
||||
description="Curated essentials designed for the void."
|
||||
items={[
|
||||
{
|
||||
title: "Hoodies", description: "Oversized fit with premium heavy-weight cotton.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/pisces-portrait-beautiful-woman_23-2149275095.jpg"},
|
||||
{
|
||||
title: "Bomber Jackets", description: "Structured layers for the cold.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/side-view-woman-wearing-heels_23-2149741919.jpg"},
|
||||
{
|
||||
title: "Sneakers", description: "Engineered for urban exploration.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/black-leather-sports-shoe-with-elegant-shoelace-generated-by-ai_188544-19647.jpg"},
|
||||
{
|
||||
title: "Track Pants", description: "Technical cut, ultimate mobility.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/side-view-man-posing-with-flowers_23-2149486770.jpg"},
|
||||
{
|
||||
title: "Caps", description: "Structured embroidery, classic silhouette.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/portrait-stylish-young-african-man-standing-against-city-skyline_23-2148151906.jpg"},
|
||||
{
|
||||
title: "Socks", description: "Ghost Town branded comfort.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/stylish-hipster-arab-man-guy-posed-outdoor-street-style-rap-singer_627829-2788.jpg"},
|
||||
{
|
||||
title: "T-Shirts", description: "Essential graphic layering pieces.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-asian-woman-autumn-clothes_23-2149071331.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
34
src/pages/HomePage/sections/Sneakers.tsx
Normal file
34
src/pages/HomePage/sections/Sneakers.tsx
Normal file
@@ -0,0 +1,34 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "sneakers" section.
|
||||
|
||||
import React from 'react';
|
||||
import TeamOverlayCards from '@/components/sections/team/TeamOverlayCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function SneakersSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="sneakers" data-section="sneakers">
|
||||
<SectionErrorBoundary name="sneakers">
|
||||
<TeamOverlayCards
|
||||
tag="Footwear"
|
||||
title="Sneaker Collection"
|
||||
description="Engineered for movement. Designed to haunt."
|
||||
members={[
|
||||
{
|
||||
name: "Wraith Bone", role: "Premium Leather", imageSrc: "http://img.b2bpic.net/free-photo/pair-athletic-running-shoes-line-art-color-vector_1308-186837.jpg"},
|
||||
{
|
||||
name: "Nightfall Black", role: "Stealth Finish", imageSrc: "http://img.b2bpic.net/free-photo/close-up-futuristic-sneakers_23-2151005726.jpg"},
|
||||
{
|
||||
name: "Bloodline Red", role: "Bold Highlight", imageSrc: "http://img.b2bpic.net/free-photo/close-up-futuristic-sneakers_23-2151005673.jpg"},
|
||||
{
|
||||
name: "Specter Ice", role: "Cooling Tech", imageSrc: "http://img.b2bpic.net/free-photo/close-up-futuristic-sneakers_23-2151005724.jpg"},
|
||||
{
|
||||
name: "Toxic Green", role: "Bold Contrast", imageSrc: "http://img.b2bpic.net/free-photo/skater-girl-urban-sitting-stairs-side-view_23-2148787219.jpg"},
|
||||
{
|
||||
name: "Void Grey", role: "Minimalist Craft", imageSrc: "http://img.b2bpic.net/free-photo/woman-s-white-canvas-sneaker-white_53876-96608.jpg"},
|
||||
]}
|
||||
/>
|
||||
</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 TestimonialQuoteCards from '@/components/sections/testimonial/TestimonialQuoteCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialQuoteCards
|
||||
tag="Community"
|
||||
title="Voices from the Town"
|
||||
description="How our community haunts the streets."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Alex R.", role: "Streetwear Critic", quote: "The most atmospheric brand I've worn all year. The quality is unmatched.", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-woman-wearing-gloves_23-2149267483.jpg"},
|
||||
{
|
||||
name: "Sarah K.", role: "Designer", quote: "Ghost Town captures that dark streetwear vibe perfectly. Clean, sharp, and haunting.", imageSrc: "http://img.b2bpic.net/free-photo/man-with-mustache-wearing-hoodie_250224-83.jpg"},
|
||||
{
|
||||
name: "Marcus L.", role: "Urban Traveler", quote: "The sneakers are incredibly comfortable and turn heads everywhere.", imageSrc: "http://img.b2bpic.net/free-photo/handsome-man-looking-camera_197531-33408.jpg"},
|
||||
{
|
||||
name: "Jordan P.", role: "Musician", quote: "Fits my stage presence. Dark, minimal, and bold.", imageSrc: "http://img.b2bpic.net/free-photo/pop-punk-aesthetic-portrait-woman-posing-inside-building_23-2149371487.jpg"},
|
||||
{
|
||||
name: "Elena W.", role: "Stylist", quote: "A masterclass in modern dark fashion. Love the toxic green details.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-beautiful-woman-posing-with-avantgarde-head-piece_23-2149020819.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
42
src/pages/HomePage/sections/TrustBar.tsx
Normal file
42
src/pages/HomePage/sections/TrustBar.tsx
Normal file
@@ -0,0 +1,42 @@
|
||||
import { RefreshCw, Truck, ShieldCheck } from "lucide-react";
|
||||
import ScrollReveal from "@/components/ui/ScrollReveal";
|
||||
|
||||
export default function TrustBar() {
|
||||
const features = [
|
||||
{
|
||||
icon: RefreshCw,
|
||||
title: "Easy Sizing Exchanges",
|
||||
description: "Wrong size? No problem. We offer hassle-free exchanges within 30 days.",
|
||||
},
|
||||
{
|
||||
icon: Truck,
|
||||
title: "Fast Shipping",
|
||||
description: "Get your gear quickly with our expedited worldwide shipping options.",
|
||||
},
|
||||
{
|
||||
icon: ShieldCheck,
|
||||
title: "Secure Shopping",
|
||||
description: "Your payment information is processed securely with industry-standard encryption.",
|
||||
},
|
||||
];
|
||||
|
||||
return (
|
||||
<section data-webild-section="trust-bar" id="trust-bar" className="w-full py-16 bg-card">
|
||||
<div className="w-content-width mx-auto px-4 md:px-6">
|
||||
<ScrollReveal variant="fade">
|
||||
<div className="grid grid-cols-1 md:grid-cols-3 gap-8 md:gap-12">
|
||||
{features.map((feature, index) => (
|
||||
<div key={index} className="flex flex-col items-center text-center space-y-4">
|
||||
<div className="p-4 rounded-full bg-background text-accent">
|
||||
<feature.icon className="w-8 h-8" />
|
||||
</div>
|
||||
<h3 className="text-xl font-bold text-foreground">{feature.title}</h3>
|
||||
<p className="text-muted-foreground">{feature.description}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</ScrollReveal>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user