3 Commits

Author SHA1 Message Date
kudinDmitriyUp
a8bcc2baf5 Bob AI: Added a location section with a map 2026-06-14 15:28:34 +00:00
5ed67c94aa Merge version_2_1781450787917 into main
Merge version_2_1781450787917 into main
2026-06-14 15:26:57 +00:00
kudinDmitriyUp
dfca7f33ff Bob AI: Change the text of the 'Reserve Now' button to 'Reserve a Table Online'. 2026-06-14 15:26:51 +00:00
8 changed files with 308 additions and 197 deletions

View File

@@ -1,207 +1,32 @@
import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
import ContactCta from '@/components/sections/contact/ContactCta';
import FeaturesArrowCards from '@/components/sections/features/FeaturesArrowCards';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import HeroOverlayMarquee from '@/components/sections/hero/HeroOverlayMarquee';
import TestimonialMarqueeCards from '@/components/sections/testimonial/TestimonialMarqueeCards';
import { Award, Coffee, Users } 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 FeaturesSection from './HomePage/sections/Features';
import MenuSection from './HomePage/sections/Menu';
import TestimonialsSection from './HomePage/sections/Testimonials';
import AboutSection from './HomePage/sections/About';
import ContactSection from './HomePage/sections/Contact';
import LocationSection from './HomePage/sections/Location';export default function HomePage(): React.JSX.Element {
return (
<>
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroOverlayMarquee
tag="Luxury Dining"
title="Where mornings become moments."
description="Discover Tashkents modern café experience — from elegant breakfasts to late-night conversations in a space designed for connection."
primaryButton={{
text: "Reserve a Table",
href: "#contact",
}}
secondaryButton={{
text: "View Menu",
href: "#menu",
}}
items={[
{
text: "Signature Breakfasts",
icon: Coffee,
},
{
text: "Social Atmosphere",
icon: Users,
},
{
text: "Premium Service",
icon: Award,
},
]}
imageSrc="http://img.b2bpic.net/free-photo/girl-with-dreadlocks-walking-night-street-city_627829-9558.jpg"
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesArrowCards
tag="Why Socials"
title="Experience Elevated Culture"
description="We blend premium service with a relaxed atmosphere to create the perfect setting for your day."
items={[
{
title: "Exceptional Breakfasts",
tags: [
"Morning",
"Quality",
],
imageSrc: "http://img.b2bpic.net/free-photo/seafood-salad-with-crabsters-cherry-tomatoes_114579-1718.jpg",
},
{
title: "Elegant Atmosphere",
tags: [
"Vibe",
"Design",
],
imageSrc: "http://img.b2bpic.net/free-photo/cozy-cafe_1098-13854.jpg",
},
{
title: "Warm Hospitality",
tags: [
"Service",
"Care",
],
imageSrc: "http://img.b2bpic.net/free-photo/young-adult-having-fun-white-party_23-2149575112.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<FeaturesSection />
<div id="menu" data-section="menu">
<SectionErrorBoundary name="menu">
<FeaturesRevealCardsBento
tag="Menu Highlights"
title="Signature Flavors"
description="Refined dishes crafted for the modern palate."
items={[
{
title: "Signature Breakfast Set",
description: "Artisan bread, seasonal greens, specialty coffee.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/flat-lay-waffles-with-figs-nuts_23-2148352368.jpg",
},
{
title: "Gourmet Lentil Soup",
description: "Rich, comforting, and perfect for a cozy lunch.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-festive-christmas-meal-composition_23-2148718540.jpg",
},
{
title: "Specialty Latte Art",
description: "Expertly crafted with freshly brewed beans.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/diligent-pensive-man-glasses-his-pottery-workshop-is-workig-new-project_613910-20858.jpg",
},
{
title: "Avocado Toast",
description: "Sourdough toast with seasonal fresh toppings.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/front-view-yummy-cake-slices-with-strawberries-candies-light-surface-cake-pies-sweet_140725-82030.jpg",
},
{
title: "Artisan Pastry",
description: "Buttery, delicate, freshly baked daily.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-delicious-creamy-cake-with-chocolate-raisins-light-dark-floor_140725-136347.jpg",
},
{
title: "Golden Croissant",
description: "A classic brunch favorite done perfectly.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/delicious-french-breakfast-top-view_23-2150408535.jpg",
},
{
title: "Custom Brunch",
description: "Tailored dishes for your personal taste.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/poached-eggs-with-salmon-rocket-salad_74190-365.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<MenuSection />
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialMarqueeCards
tag="Reviews"
title="What Guests Are Saying"
description="Join our community of happy diners."
testimonials={[
{
name: "Sarah Johnson",
role: "Food Blogger",
quote: "Excellent place for breakfast, pleasant service, and great cuisine.",
imageSrc: "http://img.b2bpic.net/free-photo/stylish-young-woman-sitting-caf-using-mobile-phone_23-2147974653.jpg",
},
{
name: "Michael Chen",
role: "Creative Director",
quote: "Ive loved Socials since it opened. The atmosphere is truly amazing.",
imageSrc: "http://img.b2bpic.net/free-photo/very-good-smiling-brunette-woman-shows-ok-okay-hand-sign-looking-satisfied-recommend-great-deal-pleased-with-quality-standing-white-background_176420-46695.jpg",
},
{
name: "Emily Rodriguez",
role: "Local Resident",
quote: "The price is excellent considering the location and quality of service.",
imageSrc: "http://img.b2bpic.net/free-photo/good-day-only-with-good-coffee_329181-2927.jpg",
},
{
name: "David Kim",
role: "Frequent Guest",
quote: "Consistently great breakfast culture and the best coffee in the city.",
imageSrc: "http://img.b2bpic.net/free-photo/adult-enjoying-cocktail_52683-107593.jpg",
},
{
name: "Anna Petrova",
role: "Influencer",
quote: "The most instagrammable spot in town. Truly a beautiful experience.",
imageSrc: "http://img.b2bpic.net/free-photo/smiling-beautiful-woman-dressed-elegant-blue-suit-sitting-cafe-sunny-autumn-day_285396-7922.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<TestimonialsSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutMediaOverlay
tag="The Space"
title="Designed for Connection"
description="Whether meeting friends, working, or celebrating a moment, find your perfect corner with us."
imageSrc="http://img.b2bpic.net/free-photo/modern-restaurant_1127-2154.jpg"
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<LocationSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Join Us"
text="Book your table and experience breakfast at its finest."
primaryButton={{
text: "Reserve Now",
href: "#",
}}
secondaryButton={{
text: "Call Us",
href: "tel:+998000000000",
}}
/>
</SectionErrorBoundary>
</div>
<ContactSection />
</>
);
}

View File

@@ -0,0 +1,21 @@
// 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 AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function AboutSection(): React.JSX.Element {
return (
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutMediaOverlay
tag="The Space"
title="Designed for Connection"
description="Whether meeting friends, working, or celebrating a moment, find your perfect corner with us."
imageSrc="http://img.b2bpic.net/free-photo/modern-restaurant_1127-2154.jpg"
/>
</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="Join Us"
text="Book your table and experience breakfast at its finest."
primaryButton={{
text: "Reserve Now",
href: "#",
}}
secondaryButton={{
text: "Call Us",
href: "tel:+998000000000",
}}
/>
</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 "features" section.
import React from 'react';
import FeaturesArrowCards from '@/components/sections/features/FeaturesArrowCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FeaturesSection(): React.JSX.Element {
return (
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesArrowCards
tag="Why Socials"
title="Experience Elevated Culture"
description="We blend premium service with a relaxed atmosphere to create the perfect setting for your day."
items={[
{
title: "Exceptional Breakfasts",
tags: [
"Morning",
"Quality",
],
imageSrc: "http://img.b2bpic.net/free-photo/seafood-salad-with-crabsters-cherry-tomatoes_114579-1718.jpg",
},
{
title: "Elegant Atmosphere",
tags: [
"Vibe",
"Design",
],
imageSrc: "http://img.b2bpic.net/free-photo/cozy-cafe_1098-13854.jpg",
},
{
title: "Warm Hospitality",
tags: [
"Service",
"Care",
],
imageSrc: "http://img.b2bpic.net/free-photo/young-adult-having-fun-white-party_23-2149575112.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,44 @@
// 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 { Award, Coffee, Users } 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="Luxury Dining"
title="Where mornings become moments."
description="Discover Tashkents modern café experience — from elegant breakfasts to late-night conversations in a space designed for connection."
primaryButton={{
text: "Reserve a Table Online",
href: "#contact",
}}
secondaryButton={{
text: "View Menu",
href: "#menu",
}}
items={[
{
text: "Signature Breakfasts",
icon: Coffee,
},
{
text: "Social Atmosphere",
icon: Users,
},
{
text: "Premium Service",
icon: Award,
},
]}
imageSrc="http://img.b2bpic.net/free-photo/girl-with-dreadlocks-walking-night-street-city_627829-9558.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,32 @@
import React from 'react';
import ScrollReveal from '@/components/ui/ScrollReveal';
export default function LocationSection() {
return (
<div data-webild-section="location" id="location">
<section className="relative w-full py-24 bg-background">
<div className="max-w-content-width mx-auto px-4 md:px-8">
<ScrollReveal variant="fade">
<div className="text-center mb-12">
<h2 className="text-4xl md:text-5xl font-bold text-foreground mb-4">Find Us</h2>
<p className="text-lg text-muted-foreground">Located in the heart of Tashkent on Shevchenko Street.</p>
</div>
</ScrollReveal>
<ScrollReveal variant="fade" delay={0.2}>
<div className="w-full h-[400px] md:h-[500px] rounded-3xl overflow-hidden border border-border bg-card">
<iframe
src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2997.050302324056!2d69.2774993154238!3d41.30773997927164!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x38ae8b2931f41f23%3A0x81095e06b65418ea!2sShevchenko%20Street%2C%20Tashkent%2C%20Uzbekistan!5e0!3m2!1sen!2s!4v1697012345678!5m2!1sen!2s"
width="100%"
height="100%"
style={{ border: 0 }}
allowFullScreen={true}
loading="lazy"
referrerPolicy="no-referrer-when-downgrade"
></iframe>
</div>
</ScrollReveal>
</div>
</section>
</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 "menu" section.
import React from 'react';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function MenuSection(): React.JSX.Element {
return (
<div id="menu" data-section="menu">
<SectionErrorBoundary name="menu">
<FeaturesRevealCardsBento
tag="Menu Highlights"
title="Signature Flavors"
description="Refined dishes crafted for the modern palate."
items={[
{
title: "Signature Breakfast Set",
description: "Artisan bread, seasonal greens, specialty coffee.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/flat-lay-waffles-with-figs-nuts_23-2148352368.jpg",
},
{
title: "Gourmet Lentil Soup",
description: "Rich, comforting, and perfect for a cozy lunch.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-festive-christmas-meal-composition_23-2148718540.jpg",
},
{
title: "Specialty Latte Art",
description: "Expertly crafted with freshly brewed beans.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/diligent-pensive-man-glasses-his-pottery-workshop-is-workig-new-project_613910-20858.jpg",
},
{
title: "Avocado Toast",
description: "Sourdough toast with seasonal fresh toppings.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/front-view-yummy-cake-slices-with-strawberries-candies-light-surface-cake-pies-sweet_140725-82030.jpg",
},
{
title: "Artisan Pastry",
description: "Buttery, delicate, freshly baked daily.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-delicious-creamy-cake-with-chocolate-raisins-light-dark-floor_140725-136347.jpg",
},
{
title: "Golden Croissant",
description: "A classic brunch favorite done perfectly.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/delicious-french-breakfast-top-view_23-2150408535.jpg",
},
{
title: "Custom Brunch",
description: "Tailored dishes for your personal taste.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/poached-eggs-with-salmon-rocket-salad_74190-365.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="Reviews"
title="What Guests Are Saying"
description="Join our community of happy diners."
testimonials={[
{
name: "Sarah Johnson",
role: "Food Blogger",
quote: "Excellent place for breakfast, pleasant service, and great cuisine.",
imageSrc: "http://img.b2bpic.net/free-photo/stylish-young-woman-sitting-caf-using-mobile-phone_23-2147974653.jpg",
},
{
name: "Michael Chen",
role: "Creative Director",
quote: "Ive loved Socials since it opened. The atmosphere is truly amazing.",
imageSrc: "http://img.b2bpic.net/free-photo/very-good-smiling-brunette-woman-shows-ok-okay-hand-sign-looking-satisfied-recommend-great-deal-pleased-with-quality-standing-white-background_176420-46695.jpg",
},
{
name: "Emily Rodriguez",
role: "Local Resident",
quote: "The price is excellent considering the location and quality of service.",
imageSrc: "http://img.b2bpic.net/free-photo/good-day-only-with-good-coffee_329181-2927.jpg",
},
{
name: "David Kim",
role: "Frequent Guest",
quote: "Consistently great breakfast culture and the best coffee in the city.",
imageSrc: "http://img.b2bpic.net/free-photo/adult-enjoying-cocktail_52683-107593.jpg",
},
{
name: "Anna Petrova",
role: "Influencer",
quote: "The most instagrammable spot in town. Truly a beautiful experience.",
imageSrc: "http://img.b2bpic.net/free-photo/smiling-beautiful-woman-dressed-elegant-blue-suit-sitting-cafe-sunny-autumn-day_285396-7922.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}