2 Commits

Author SHA1 Message Date
9250a236e9 Merge version_2_1781777644520 into main
Merge version_2_1781777644520 into main
2026-06-18 10:15:09 +00:00
kudinDmitriyUp
e193856b74 Bob AI (stub): Add a 'Featured In' logo carousel featuring credible press o 2026-06-18 10:15:06 +00:00
10 changed files with 401 additions and 257 deletions

View File

@@ -1,269 +1,41 @@
import AboutTextSplit from '@/components/sections/about/AboutTextSplit';
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqTwoColumn from '@/components/sections/faq/FaqTwoColumn';
import FeaturesComparison from '@/components/sections/features/FeaturesComparison';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import HeroTiltedCards from '@/components/sections/hero/HeroTiltedCards';
import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
import TestimonialMarqueeCards from '@/components/sections/testimonial/TestimonialMarqueeCards';
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 ProductSection from './HomePage/sections/Product';
import MetricsSection from './HomePage/sections/Metrics';
import TestimonialsSection from './HomePage/sections/Testimonials';
import FaqSection from './HomePage/sections/Faq';
import ContactSection from './HomePage/sections/Contact';
{/* webild-stub @2026-06-18T10:15:04.018Z: Add a 'Featured In' logo carousel featuring credible press outlets like NYT, Rolling Stone, or Time Out to immediately boost the venue's legendary status. */}
import FeaturedInSection from './HomePage/sections/FeaturedIn';export default function HomePage(): React.JSX.Element {
return (
<>
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroTiltedCards
tag="Since 1961"
title="New York's Legendary Stage"
description="Experience the history of Greenwich Village at Cafe Wha?, where music legends were born and nights are unforgettable."
primaryButton={{
text: "Book Now",
href: "#contact",
}}
secondaryButton={{
text: "View History",
href: "#about",
}}
items={[
{
imageSrc: "http://img.b2bpic.net/free-photo/retro-theatre-scene-celebrate-world-theatre-day_23-2151211460.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-teenage-girl-with-glasses_23-2149239046.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-male-performer-sitting-his-electric-guitar_23-2148680329.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/3d-neon-lights-background_23-2150710754.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/drums-conceptual-image_1204-202.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<FeaturedInSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutTextSplit
title="A Legacy of Sound"
descriptions={[
"Cafe Wha? has been the cornerstone of the Greenwich Village music scene for decades. Hosting legends from Bob Dylan to Jimi Hendrix, our stage is steeped in history.",
"Today, we continue to bring the best live performances to New York City. From high-energy house bands to special guest appearances, the spirit of music never sleeps here.",
"Join us for a drink, a bite, and the best live music experience in the heart of the village. Come make your own memories on our iconic stage.",
]}
primaryButton={{
text: "About Us",
href: "#about",
}}
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesComparison
tag="The Wha? Experience"
title="Unmatched Entertainment"
description="Compare your typical bar experience to the energy of Cafe Wha?."
negativeItems={[
"Generic music playlists",
"Lackluster atmospheres",
"Standard drink menus",
"Quiet & forgettable nights",
]}
positiveItems={[
"Raw live stage energy",
"Legendary Greenwich history",
"Craft cocktails & bites",
"Unforgettable performance nights",
]}
/>
</SectionErrorBoundary>
</div>
<FeaturesSection />
<div id="product" data-section="product">
<SectionErrorBoundary name="product">
<FeaturesRevealCardsBento
tag="Highlights"
title="Our Iconic Features"
description="What makes Cafe Wha? the legendary destination it is today."
items={[
{
title: "Live Performances",
description: "High-octane house bands playing nightly hits.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/full-shot-man-playing-saxophone_23-2149247141.jpg",
},
{
title: "Craft Cocktails",
description: "Expertly mixed drinks in a vintage setting.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/bartender-making-drink-couple_23-2147680618.jpg",
},
{
title: "Vibrant Atmosphere",
description: "Experience the energy of a historic venue.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/rear-view-large-group-music-fans-front-stage-music-concert-by-night-copy-space_637285-623.jpg",
},
{
title: "Delicious Bites",
description: "Fresh, locally sourced snacks and dishes.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/photorealistic-burger-meal_23-2151293075.jpg",
},
{
title: "Private Events",
description: "Rent our iconic venue for your celebration.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/group-friends-cheering-with-wine-glasses-restaurant_23-2150520115.jpg",
},
{
title: "Jazz Nights",
description: "Smooth tunes from world-class musicians.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/hands-shoe-master-which-is-working-shoe-sole-using-special-machine-tool_613910-12954.jpg",
},
{
title: "Historic Facade",
description: "Visit the Greenwich Village landmark.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/american-diner-aesthetics_23-2151854445.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<ProductSection />
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsFeatureCards
tag="By The Numbers"
title="A Lifetime of Performance"
description="Six decades of bringing rhythm to New York City."
metrics={[
{
value: "60+",
title: "Years of History",
features: [
"Founded in 1961",
"Legendary performers",
"Cultural landmark",
],
},
{
value: "10k+",
title: "Nights of Music",
features: [
"Live bands daily",
"Guest star appearances",
"Uninterrupted tradition",
],
},
{
value: "1M+",
title: "Patrons Served",
features: [
"NYC locals",
"International travelers",
"Music aficionados",
],
},
]}
/>
</SectionErrorBoundary>
</div>
<MetricsSection />
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialMarqueeCards
tag="Voices of Cafe Wha?"
title="Legendary Stories"
description="Don't just take our word for it—listen to our patrons."
testimonials={[
{
name: "David W.",
role: "Jazz Fan",
quote: "The energy here is just incredible. You feel the history in the walls.",
imageSrc: "http://img.b2bpic.net/free-photo/front-view-smiley-dj-outdoors_52683-98086.jpg",
},
{
name: "Sarah K.",
role: "NYC Local",
quote: "My go-to spot for an unforgettable night out. Best band in town!",
imageSrc: "http://img.b2bpic.net/free-photo/smiling-ethnic-male-with-curly-hair-evening_23-2148203737.jpg",
},
{
name: "James B.",
role: "Traveler",
quote: "Saw it in a documentary, had to see it for myself. Worth every second.",
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-woman-holding-cup_23-2149005426.jpg",
},
{
name: "Elena R.",
role: "Music Enthusiast",
quote: "The house band is absolutely world-class. Electric performance!",
imageSrc: "http://img.b2bpic.net/free-photo/people-looking-football-game-sunny-day_23-2149015483.jpg",
},
{
name: "Mark S.",
role: "Regular Patron",
quote: "Nothing compares to the vibes at Cafe Wha?. Simply iconic.",
imageSrc: "http://img.b2bpic.net/free-photo/going-out-concept-with-girl-night_23-2148140753.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<TestimonialsSection />
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqTwoColumn
tag="Frequently Asked"
title="Common Questions"
description="Quick answers to help you plan your visit."
items={[
{
question: "Are reservations required?",
answer: "Highly recommended, especially on weekends when we fill up fast.",
},
{
question: "Do you serve food?",
answer: "Yes, we offer a menu of light bites and snacks designed to accompany drinks.",
},
{
question: "Can I book a private event?",
answer: "Yes, please reach out via our contact page to discuss venue buyouts.",
},
{
question: "How old do I need to be?",
answer: "Cafe Wha? is an all-ages venue, but ID is required for alcohol service.",
},
]}
/>
</SectionErrorBoundary>
</div>
<FaqSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Ready to Experience?"
text="Join us tonight and become part of our history."
primaryButton={{
text: "Reserve Now",
href: "#",
}}
secondaryButton={{
text: "Contact Us",
href: "#",
}}
/>
</SectionErrorBoundary>
</div>
<ContactSection />
</>
);
}

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 "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="A Legacy of Sound"
descriptions={[
"Cafe Wha? has been the cornerstone of the Greenwich Village music scene for decades. Hosting legends from Bob Dylan to Jimi Hendrix, our stage is steeped in history.",
"Today, we continue to bring the best live performances to New York City. From high-energy house bands to special guest appearances, the spirit of music never sleeps here.",
"Join us for a drink, a bite, and the best live music experience in the heart of the village. Come make your own memories on our iconic stage.",
]}
primaryButton={{
text: "About Us",
href: "#about",
}}
/>
</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 Experience?"
text="Join us tonight and become part of our history."
primaryButton={{
text: "Reserve Now",
href: "#",
}}
secondaryButton={{
text: "Contact Us",
href: "#",
}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,38 @@
// 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="Frequently Asked"
title="Common Questions"
description="Quick answers to help you plan your visit."
items={[
{
question: "Are reservations required?",
answer: "Highly recommended, especially on weekends when we fill up fast.",
},
{
question: "Do you serve food?",
answer: "Yes, we offer a menu of light bites and snacks designed to accompany drinks.",
},
{
question: "Can I book a private event?",
answer: "Yes, please reach out via our contact page to discuss venue buyouts.",
},
{
question: "How old do I need to be?",
answer: "Cafe Wha? is an all-ages venue, but ID is required for alcohol service.",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,38 @@
import LoopCarousel from '@/components/ui/LoopCarousel';
import ScrollReveal from '@/components/ui/ScrollReveal';
import TextAnimation from '@/components/ui/TextAnimation';
export default function FeaturedInSection() {
return (
<section data-webild-section="featured-in" id="featured-in" className="relative w-full py-16 bg-background border-y border-border/10 overflow-hidden">
<div className="w-content-width mx-auto px-6 mb-8 text-center">
<ScrollReveal variant="fade">
<p className="text-sm font-medium text-muted-foreground uppercase tracking-widest mb-2">
Featured In
</p>
<TextAnimation
text="Legendary Status"
variant="fade-blur"
tag="h2"
className="text-2xl md:text-3xl font-bold text-foreground"
gradientText={false}
/>
</ScrollReveal>
</div>
<div className="w-full">
<LoopCarousel>
<div className="flex items-center gap-16 px-8">
{["The New York Times", "Rolling Stone", "Time Out", "The Guardian", "NME", "Pitchfork"].map((outlet, index) => (
<div key={index} className="flex-shrink-0">
<span className="text-2xl md:text-4xl font-bold text-muted-foreground/50 whitespace-nowrap">
{outlet}
</span>
</div>
))}
</div>
</LoopCarousel>
</div>
</section>
);
}

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 "features" section.
import React from 'react';
import FeaturesComparison from '@/components/sections/features/FeaturesComparison';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FeaturesSection(): React.JSX.Element {
return (
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesComparison
tag="The Wha? Experience"
title="Unmatched Entertainment"
description="Compare your typical bar experience to the energy of Cafe Wha?."
negativeItems={[
"Generic music playlists",
"Lackluster atmospheres",
"Standard drink menus",
"Quiet & forgettable nights",
]}
positiveItems={[
"Raw live stage energy",
"Legendary Greenwich history",
"Craft cocktails & bites",
"Unforgettable performance nights",
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,45 @@
// 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 HeroTiltedCards from '@/components/sections/hero/HeroTiltedCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HeroSection(): React.JSX.Element {
return (
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroTiltedCards
tag="Since 1961"
title="New York's Legendary Stage"
description="Experience the history of Greenwich Village at Cafe Wha?, where music legends were born and nights are unforgettable."
primaryButton={{
text: "Book Now",
href: "#contact",
}}
secondaryButton={{
text: "View History",
href: "#about",
}}
items={[
{
imageSrc: "http://img.b2bpic.net/free-photo/retro-theatre-scene-celebrate-world-theatre-day_23-2151211460.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-teenage-girl-with-glasses_23-2149239046.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-male-performer-sitting-his-electric-guitar_23-2148680329.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/3d-neon-lights-background_23-2150710754.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/drums-conceptual-image_1204-202.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,49 @@
// 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="By The Numbers"
title="A Lifetime of Performance"
description="Six decades of bringing rhythm to New York City."
metrics={[
{
value: "60+",
title: "Years of History",
features: [
"Founded in 1961",
"Legendary performers",
"Cultural landmark",
],
},
{
value: "10k+",
title: "Nights of Music",
features: [
"Live bands daily",
"Guest star appearances",
"Uninterrupted tradition",
],
},
{
value: "1M+",
title: "Patrons Served",
features: [
"NYC locals",
"International travelers",
"Music aficionados",
],
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,64 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "product" section.
import React from 'react';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ProductSection(): React.JSX.Element {
return (
<div id="product" data-section="product">
<SectionErrorBoundary name="product">
<FeaturesRevealCardsBento
tag="Highlights"
title="Our Iconic Features"
description="What makes Cafe Wha? the legendary destination it is today."
items={[
{
title: "Live Performances",
description: "High-octane house bands playing nightly hits.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/full-shot-man-playing-saxophone_23-2149247141.jpg",
},
{
title: "Craft Cocktails",
description: "Expertly mixed drinks in a vintage setting.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/bartender-making-drink-couple_23-2147680618.jpg",
},
{
title: "Vibrant Atmosphere",
description: "Experience the energy of a historic venue.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/rear-view-large-group-music-fans-front-stage-music-concert-by-night-copy-space_637285-623.jpg",
},
{
title: "Delicious Bites",
description: "Fresh, locally sourced snacks and dishes.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/photorealistic-burger-meal_23-2151293075.jpg",
},
{
title: "Private Events",
description: "Rent our iconic venue for your celebration.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/group-friends-cheering-with-wine-glasses-restaurant_23-2150520115.jpg",
},
{
title: "Jazz Nights",
description: "Smooth tunes from world-class musicians.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/hands-shoe-master-which-is-working-shoe-sole-using-special-machine-tool_613910-12954.jpg",
},
{
title: "Historic Facade",
description: "Visit the Greenwich Village landmark.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/american-diner-aesthetics_23-2151854445.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,52 @@
// 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="Voices of Cafe Wha?"
title="Legendary Stories"
description="Don't just take our word for it—listen to our patrons."
testimonials={[
{
name: "David W.",
role: "Jazz Fan",
quote: "The energy here is just incredible. You feel the history in the walls.",
imageSrc: "http://img.b2bpic.net/free-photo/front-view-smiley-dj-outdoors_52683-98086.jpg",
},
{
name: "Sarah K.",
role: "NYC Local",
quote: "My go-to spot for an unforgettable night out. Best band in town!",
imageSrc: "http://img.b2bpic.net/free-photo/smiling-ethnic-male-with-curly-hair-evening_23-2148203737.jpg",
},
{
name: "James B.",
role: "Traveler",
quote: "Saw it in a documentary, had to see it for myself. Worth every second.",
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-woman-holding-cup_23-2149005426.jpg",
},
{
name: "Elena R.",
role: "Music Enthusiast",
quote: "The house band is absolutely world-class. Electric performance!",
imageSrc: "http://img.b2bpic.net/free-photo/people-looking-football-game-sunny-day_23-2149015483.jpg",
},
{
name: "Mark S.",
role: "Regular Patron",
quote: "Nothing compares to the vibes at Cafe Wha?. Simply iconic.",
imageSrc: "http://img.b2bpic.net/free-photo/going-out-concept-with-girl-night_23-2148140753.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}