Merge version_2_1781623274357 into main #2

Merged
bender merged 1 commits from version_2_1781623274357 into main 2026-06-16 15:23:41 +00:00
9 changed files with 275 additions and 142 deletions

View File

@@ -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; its 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 />
</>
);
}

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 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; its 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>
);
}

View 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>
);
}

View 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>
);
}

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 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>
);
}

View 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>
);
}

View 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>
);
}

View 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>
);
}

View 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>
);
}