Merge version_7_1783151587761 into main
Merge version_7_1783151587761 into main
This commit was merged in pull request #6.
This commit is contained in:
@@ -1,4 +1,8 @@
|
||||
import Button from "@/components/ui/Button";
|
||||
import Modal from "@/components/ui/Modal";
|
||||
import Input from "@/components/ui/Input";
|
||||
import Label from "@/components/ui/Label";
|
||||
import { useState } from "react";
|
||||
|
||||
interface NavbarInlineProps {
|
||||
logo: string;
|
||||
@@ -15,6 +19,47 @@ const handleNavClick = (e: React.MouseEvent<HTMLAnchorElement>, href: string, on
|
||||
onClose?.();
|
||||
};
|
||||
|
||||
const BookingForm = () => {
|
||||
const [isSubmitted, setIsSubmitted] = useState(false);
|
||||
|
||||
const handleSubmit = (e: React.FormEvent) => {
|
||||
e.preventDefault();
|
||||
setIsSubmitted(true);
|
||||
setTimeout(() => setIsSubmitted(false), 3000);
|
||||
};
|
||||
|
||||
if (isSubmitted) {
|
||||
return (
|
||||
<div className="py-8 text-center">
|
||||
<p className="text-lg text-foreground font-medium mb-2">Reservation Request Sent!</p>
|
||||
<p className="text-accent">We will contact you shortly to confirm your booking.</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<form className="flex flex-col gap-4 mt-4 text-left" onSubmit={handleSubmit}>
|
||||
<div>
|
||||
<Label htmlFor="nav-name">Name</Label>
|
||||
<Input id="nav-name" type="text" placeholder="Your Name" required />
|
||||
</div>
|
||||
<div>
|
||||
<Label htmlFor="nav-email">Email</Label>
|
||||
<Input id="nav-email" type="email" placeholder="your@email.com" required />
|
||||
</div>
|
||||
<div>
|
||||
<Label htmlFor="nav-date">Date & Time</Label>
|
||||
<Input id="nav-date" type="datetime-local" required />
|
||||
</div>
|
||||
<div>
|
||||
<Label htmlFor="nav-guests">Number of Guests</Label>
|
||||
<Input id="nav-guests" type="number" min="1" max="20" placeholder="2" required />
|
||||
</div>
|
||||
<Button text="Confirm Reservation" variant="primary" className="w-full mt-4" />
|
||||
</form>
|
||||
);
|
||||
};
|
||||
|
||||
const NavbarInline = ({ logo, navItems, ctaButton }: NavbarInlineProps) => {
|
||||
return (
|
||||
<nav className="fixed z-1000 top-5 left-1/2 -translate-x-1/2 w-content-width">
|
||||
@@ -34,7 +79,17 @@ const NavbarInline = ({ logo, navItems, ctaButton }: NavbarInlineProps) => {
|
||||
))}
|
||||
</div>
|
||||
|
||||
<Button text={ctaButton.text} href={ctaButton.href} variant="primary" animate={false} />
|
||||
{ctaButton.text.includes("Book") ? (
|
||||
<Modal
|
||||
trigger={<Button text={ctaButton.text} variant="primary" animate={false} />}
|
||||
title="Book a Table"
|
||||
description="Fill out the form below to request a reservation."
|
||||
>
|
||||
<BookingForm />
|
||||
</Modal>
|
||||
) : (
|
||||
<Button text={ctaButton.text} href={ctaButton.href} variant="primary" animate={false} />
|
||||
)}
|
||||
</div>
|
||||
</nav>
|
||||
);
|
||||
|
||||
@@ -1,262 +1,34 @@
|
||||
import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import HeroBillboard from '@/components/sections/hero/HeroBillboard';
|
||||
import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
|
||||
import TestimonialMarqueeCards from '@/components/sections/testimonial/TestimonialMarqueeCards';
|
||||
import { MapPin, Users, Utensils } from "lucide-react";
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
// AUTO-GENERATED shell by per-section-migrate.
|
||||
// Section bodies live in the sibling sections/ folder (one file per section).
|
||||
// Edit those section files directly. Non-block content (wrappers,
|
||||
// non-inlinable sections) is preserved inline; extracted section blocks
|
||||
// become component refs.
|
||||
|
||||
export default function HomePage() {
|
||||
import React from 'react';
|
||||
import HeroSection from './HomePage/sections/Hero';
|
||||
import AboutSection from './HomePage/sections/About';
|
||||
import MenuSection from './HomePage/sections/Menu';
|
||||
import PopularDishesSection from './HomePage/sections/PopularDishes';
|
||||
import MetricsSection from './HomePage/sections/Metrics';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import ContactSection from './HomePage/sections/Contact';
|
||||
|
||||
export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboard
|
||||
tag="Since 2005"
|
||||
title="Taste the Heart of Varna at Snack bar Galata"
|
||||
description="Experience authentic Bulgarian hospitality with our traditional recipes and warm atmosphere in the beautiful Asparuhovo district."
|
||||
primaryButton={{
|
||||
text: "See Menu",
|
||||
href: "#menu",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Contact Us",
|
||||
href: "#contact",
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/room-decor-with-potted-plants-candles-wooden-table_23-2149427996.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutFeaturesSplit
|
||||
tag="Our Story"
|
||||
title="Traditional Recipes, Modern Hospitality"
|
||||
description="Snack bar Galata has been serving the Varna community for years with traditional Bulgarian soul food. Our commitment is to fresh ingredients, generous portions, and a cozy environment that feels just like home."
|
||||
items={[
|
||||
{
|
||||
icon: Utensils,
|
||||
title: "Traditional Flavors",
|
||||
description: "Authentic recipes passed down through generations.",
|
||||
},
|
||||
{
|
||||
icon: Users,
|
||||
title: "Family Friendly",
|
||||
description: "A welcoming environment for all occasions.",
|
||||
},
|
||||
{
|
||||
icon: MapPin,
|
||||
title: "Central Asparuhovo",
|
||||
description: "Located conveniently at ul. Georgi Kupov 60.",
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/top-view-food-frame-with-copy-space_23-2148234224.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="menu" data-section="menu">
|
||||
<SectionErrorBoundary name="menu">
|
||||
<FeaturesMediaCarousel
|
||||
tag="Menu Highlights"
|
||||
title="Signature Dishes"
|
||||
description="Explore our favorite traditional dishes that our guests keep coming back for."
|
||||
items={[
|
||||
{
|
||||
title: "Chicken Liver",
|
||||
description: "Tender chicken livers with mushrooms and melted cheese.",
|
||||
buttonIcon: "ArrowRight",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/homemade-baked-stuffed-champignon-mushrooms-with-fresh-dill-cheese_114579-8219.jpg",
|
||||
},
|
||||
{
|
||||
title: "Fried Caca",
|
||||
description: "Classic Bulgarian small fish, perfectly fried and crispy.",
|
||||
buttonIcon: "ArrowRight",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/heart-shaped-salty-crackers-orange-bowl_114579-63281.jpg",
|
||||
},
|
||||
{
|
||||
title: "Craft Radler",
|
||||
description: "Crisp white wine mixed with refreshing local lager.",
|
||||
buttonIcon: "ArrowRight",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/arrangement-with-beer-mugs-bottle_23-2148726895.jpg",
|
||||
},
|
||||
{
|
||||
title: "Grilled Platter",
|
||||
description: "Assorted grilled meats, fresh and savory.",
|
||||
buttonIcon: "ArrowRight",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/green-salad-sauce-with-crutones_140725-9822.jpg",
|
||||
},
|
||||
{
|
||||
title: "Shopska Salad",
|
||||
description: "Traditional salad with fresh vegetables and feta.",
|
||||
buttonIcon: "ArrowRight",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-tasty-vegetable-salad-with-sliced-cheese-tomatoes-seasonings-gray-background-color-food-meal-diet-lunch-health_140725-156444.jpg",
|
||||
},
|
||||
{
|
||||
title: "Daily Soup",
|
||||
description: "Hearty, traditional homemade daily soup selection.",
|
||||
buttonIcon: "ArrowRight",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-whole-cut-black-bread-spikes-brown-towel-meter-potteries-dark-colors-surface_179666-24628.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MenuSection />
|
||||
|
||||
<div id="popular-dishes" data-section="popular-dishes">
|
||||
<SectionErrorBoundary name="popular-dishes">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Popular Items"
|
||||
title="Flavor Highlights"
|
||||
description="Hover to discover the secret behind our most beloved dishes."
|
||||
items={[
|
||||
{
|
||||
title: "Chicken Liver",
|
||||
description: "Prepared with fresh mushrooms and high-quality local cheese.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/govurma-meat-with-chestnuts-seeds_114579-4516.jpg",
|
||||
},
|
||||
{
|
||||
title: "Fried Fish (Caca)",
|
||||
description: "Our signature seaside snack, lightly seasoned.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-shrimps-batter-with-sauce-fresh-vegetable-salad-shells-tray_176474-3446.jpg",
|
||||
},
|
||||
{
|
||||
title: "Refreshing Radler",
|
||||
description: "The perfect balance of crisp beer and wine.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/glass-beer-wood-background_93675-130800.jpg",
|
||||
},
|
||||
{
|
||||
title: "Mixed Grill",
|
||||
description: "A meat lover's paradise with authentic spices.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/delicious-cake-with-copy-space_23-2148395158.jpg",
|
||||
},
|
||||
{
|
||||
title: "Traditional Salad",
|
||||
description: "The quintessential Bulgarian dish.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-caesar-salad-with-chicken-tomatoes_140725-11382.jpg",
|
||||
},
|
||||
{
|
||||
title: "House Soup",
|
||||
description: "Slowly simmered with local farm-fresh ingredients.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/lentil-soup-glass-compote-slices-bread_140725-2980.jpg",
|
||||
},
|
||||
{
|
||||
title: "Sweet Ending",
|
||||
description: "Traditional Bulgarian yogurt with honey and nuts.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/glazed-mini-cake-board-blue-background-high-quality-photo_114579-75373.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<PopularDishesSection />
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsFeatureCards
|
||||
tag="Our Impact"
|
||||
title="Quality You Can Taste"
|
||||
description="Numbers behind our commitment to great Bulgarian cuisine."
|
||||
metrics={[
|
||||
{
|
||||
value: "4.6",
|
||||
title: "Average Rating",
|
||||
features: [
|
||||
"76+ reviews",
|
||||
"Verified diners",
|
||||
"High customer satisfaction",
|
||||
],
|
||||
},
|
||||
{
|
||||
value: "10-20",
|
||||
title: "Average Price (BGN)",
|
||||
features: [
|
||||
"Affordable dining",
|
||||
"Excellent value",
|
||||
"Generous portions",
|
||||
],
|
||||
},
|
||||
{
|
||||
value: "15+",
|
||||
title: "Years of Tradition",
|
||||
features: [
|
||||
"Proven recipes",
|
||||
"Established quality",
|
||||
"Local favorite",
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MetricsSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialMarqueeCards
|
||||
tag="Guest Stories"
|
||||
title="What Our Guests Say"
|
||||
description="Join our community of happy diners who enjoy authentic flavors."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Ivan D.",
|
||||
role: "Local Regular",
|
||||
quote: "The best chicken liver in Asparuhovo, truly authentic!",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/senior-man-pointing-his-empty-glass-restaurant_23-2149316805.jpg",
|
||||
},
|
||||
{
|
||||
name: "Elena V.",
|
||||
role: "Food Enthusiast",
|
||||
quote: "Authentic, simple, and delicious. Highly recommend.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cheerful-young-caucasian-woman-with-curly-hair-smiling-camera-home_1098-18613.jpg",
|
||||
},
|
||||
{
|
||||
name: "Petar M.",
|
||||
role: "Visitor",
|
||||
quote: "Classic Bulgarian snack bar experience. Very welcoming.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cheerful-redhead-woman-eating-cake-with-her-friends-cafe_637285-7894.jpg",
|
||||
},
|
||||
{
|
||||
name: "Maria K.",
|
||||
role: "Neighborhood Resident",
|
||||
quote: "Great portions and friendly atmosphere. Best place around.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-smiley-woman-holding-plate_23-2148681855.jpg",
|
||||
},
|
||||
{
|
||||
name: "Stefan G.",
|
||||
role: "Happy Diner",
|
||||
quote: "An absolute gem of a local restaurant. Traditional and tasty.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-tender-parisian-girl-stylish-outfit-sends-air-kiss-portrait-young-woman-with-expressive-look_197531-12004.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Visit Us"
|
||||
text="Ready to experience traditional Bulgarian flavors at Snack bar Galata?"
|
||||
primaryButton={{
|
||||
text: "Call +359 89 455 4281",
|
||||
href: "tel:+359894554281",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Book a Table",
|
||||
href: "mailto:reservations@galata.bg",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
39
src/pages/HomePage/sections/About.tsx
Normal file
39
src/pages/HomePage/sections/About.tsx
Normal file
@@ -0,0 +1,39 @@
|
||||
// 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 AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';
|
||||
import { MapPin, Users, Utensils } from "lucide-react";
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function AboutSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutFeaturesSplit
|
||||
tag="Our Story"
|
||||
title="Traditional Recipes, Modern Hospitality"
|
||||
description="Snack bar Galata has been serving the Varna community for years with traditional Bulgarian soul food. Our commitment is to fresh ingredients, generous portions, and a cozy environment that feels just like home."
|
||||
items={[
|
||||
{
|
||||
icon: Utensils,
|
||||
title: "Traditional Flavors",
|
||||
description: "Authentic recipes passed down through generations.",
|
||||
},
|
||||
{
|
||||
icon: Users,
|
||||
title: "Family Friendly",
|
||||
description: "A welcoming environment for all occasions.",
|
||||
},
|
||||
{
|
||||
icon: MapPin,
|
||||
title: "Central Asparuhovo",
|
||||
description: "Located conveniently at ul. Georgi Kupov 60.",
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/top-view-food-frame-with-copy-space_23-2148234224.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
27
src/pages/HomePage/sections/Contact.tsx
Normal file
27
src/pages/HomePage/sections/Contact.tsx
Normal 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="Visit Us"
|
||||
text="Ready to experience traditional Bulgarian flavors at Snack bar Galata?"
|
||||
primaryButton={{
|
||||
text: "Call +359 89 455 4281",
|
||||
href: "tel:+359894554281",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Book a Table",
|
||||
href: "mailto:reservations@galata.bg",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
29
src/pages/HomePage/sections/Hero.tsx
Normal file
29
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,29 @@
|
||||
// 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 HeroBillboard from '@/components/sections/hero/HeroBillboard';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboard
|
||||
tag="Since 2005"
|
||||
title="Taste the Heart of Varna at Snack bar Galata"
|
||||
description="Experience authentic Bulgarian hospitality with our traditional recipes and warm atmosphere in the beautiful Asparuhovo district."
|
||||
primaryButton={{
|
||||
text: "See Menu",
|
||||
href: "#menu",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Contact Us",
|
||||
href: "#contact",
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/room-decor-with-potted-plants-candles-wooden-table_23-2149427996.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
58
src/pages/HomePage/sections/Menu.tsx
Normal file
58
src/pages/HomePage/sections/Menu.tsx
Normal file
@@ -0,0 +1,58 @@
|
||||
// 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 FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function MenuSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="menu" data-section="menu">
|
||||
<SectionErrorBoundary name="menu">
|
||||
<FeaturesMediaCarousel
|
||||
tag="Menu Highlights"
|
||||
title="Signature Dishes"
|
||||
description="Explore our favorite traditional dishes that our guests keep coming back for."
|
||||
items={[
|
||||
{
|
||||
title: "Chicken Liver",
|
||||
description: "Tender chicken livers with mushrooms and melted cheese.",
|
||||
buttonIcon: "ArrowRight",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/homemade-baked-stuffed-champignon-mushrooms-with-fresh-dill-cheese_114579-8219.jpg",
|
||||
},
|
||||
{
|
||||
title: "Fried Caca",
|
||||
description: "Classic Bulgarian small fish, perfectly fried and crispy.",
|
||||
buttonIcon: "ArrowRight",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/heart-shaped-salty-crackers-orange-bowl_114579-63281.jpg",
|
||||
},
|
||||
{
|
||||
title: "Craft Radler",
|
||||
description: "Crisp white wine mixed with refreshing local lager.",
|
||||
buttonIcon: "ArrowRight",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/arrangement-with-beer-mugs-bottle_23-2148726895.jpg",
|
||||
},
|
||||
{
|
||||
title: "Grilled Platter",
|
||||
description: "Assorted grilled meats, fresh and savory.",
|
||||
buttonIcon: "ArrowRight",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/green-salad-sauce-with-crutones_140725-9822.jpg",
|
||||
},
|
||||
{
|
||||
title: "Shopska Salad",
|
||||
description: "Traditional salad with fresh vegetables and feta.",
|
||||
buttonIcon: "ArrowRight",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-tasty-vegetable-salad-with-sliced-cheese-tomatoes-seasonings-gray-background-color-food-meal-diet-lunch-health_140725-156444.jpg",
|
||||
},
|
||||
{
|
||||
title: "Daily Soup",
|
||||
description: "Hearty, traditional homemade daily soup selection.",
|
||||
buttonIcon: "ArrowRight",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-whole-cut-black-bread-spikes-brown-towel-meter-potteries-dark-colors-surface_179666-24628.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
49
src/pages/HomePage/sections/Metrics.tsx
Normal file
49
src/pages/HomePage/sections/Metrics.tsx
Normal 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="Our Impact"
|
||||
title="Quality You Can Taste"
|
||||
description="Numbers behind our commitment to great Bulgarian cuisine."
|
||||
metrics={[
|
||||
{
|
||||
value: "4.6",
|
||||
title: "Average Rating",
|
||||
features: [
|
||||
"76+ reviews",
|
||||
"Verified diners",
|
||||
"High customer satisfaction",
|
||||
],
|
||||
},
|
||||
{
|
||||
value: "10-20",
|
||||
title: "Average Price (BGN)",
|
||||
features: [
|
||||
"Affordable dining",
|
||||
"Excellent value",
|
||||
"Generous portions",
|
||||
],
|
||||
},
|
||||
{
|
||||
value: "15+",
|
||||
title: "Years of Tradition",
|
||||
features: [
|
||||
"Proven recipes",
|
||||
"Established quality",
|
||||
"Local favorite",
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
64
src/pages/HomePage/sections/PopularDishes.tsx
Normal file
64
src/pages/HomePage/sections/PopularDishes.tsx
Normal file
@@ -0,0 +1,64 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "popular-dishes" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function PopularDishesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="popular-dishes" data-section="popular-dishes">
|
||||
<SectionErrorBoundary name="popular-dishes">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Popular Items"
|
||||
title="Flavor Highlights"
|
||||
description="Hover to discover the secret behind our most beloved dishes."
|
||||
items={[
|
||||
{
|
||||
title: "Chicken Liver",
|
||||
description: "Prepared with fresh mushrooms and high-quality local cheese.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/govurma-meat-with-chestnuts-seeds_114579-4516.jpg",
|
||||
},
|
||||
{
|
||||
title: "Fried Fish (Caca)",
|
||||
description: "Our signature seaside snack, lightly seasoned.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-shrimps-batter-with-sauce-fresh-vegetable-salad-shells-tray_176474-3446.jpg",
|
||||
},
|
||||
{
|
||||
title: "Refreshing Radler",
|
||||
description: "The perfect balance of crisp beer and wine.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/glass-beer-wood-background_93675-130800.jpg",
|
||||
},
|
||||
{
|
||||
title: "Mixed Grill",
|
||||
description: "A meat lover's paradise with authentic spices.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/delicious-cake-with-copy-space_23-2148395158.jpg",
|
||||
},
|
||||
{
|
||||
title: "Traditional Salad",
|
||||
description: "The quintessential Bulgarian dish.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-caesar-salad-with-chicken-tomatoes_140725-11382.jpg",
|
||||
},
|
||||
{
|
||||
title: "House Soup",
|
||||
description: "Slowly simmered with local farm-fresh ingredients.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/lentil-soup-glass-compote-slices-bread_140725-2980.jpg",
|
||||
},
|
||||
{
|
||||
title: "Sweet Ending",
|
||||
description: "Traditional Bulgarian yogurt with honey and nuts.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/glazed-mini-cake-board-blue-background-high-quality-photo_114579-75373.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
52
src/pages/HomePage/sections/Testimonials.tsx
Normal file
52
src/pages/HomePage/sections/Testimonials.tsx
Normal 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="Guest Stories"
|
||||
title="What Our Guests Say"
|
||||
description="Join our community of happy diners who enjoy authentic flavors."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Ivan D.",
|
||||
role: "Local Regular",
|
||||
quote: "The best chicken liver in Asparuhovo, truly authentic!",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/senior-man-pointing-his-empty-glass-restaurant_23-2149316805.jpg",
|
||||
},
|
||||
{
|
||||
name: "Elena V.",
|
||||
role: "Food Enthusiast",
|
||||
quote: "Authentic, simple, and delicious. Highly recommend.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cheerful-young-caucasian-woman-with-curly-hair-smiling-camera-home_1098-18613.jpg",
|
||||
},
|
||||
{
|
||||
name: "Petar M.",
|
||||
role: "Visitor",
|
||||
quote: "Classic Bulgarian snack bar experience. Very welcoming.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cheerful-redhead-woman-eating-cake-with-her-friends-cafe_637285-7894.jpg",
|
||||
},
|
||||
{
|
||||
name: "Maria K.",
|
||||
role: "Neighborhood Resident",
|
||||
quote: "Great portions and friendly atmosphere. Best place around.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-smiley-woman-holding-plate_23-2148681855.jpg",
|
||||
},
|
||||
{
|
||||
name: "Stefan G.",
|
||||
role: "Happy Diner",
|
||||
quote: "An absolute gem of a local restaurant. Traditional and tasty.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-tender-parisian-girl-stylish-outfit-sends-air-kiss-portrait-young-woman-with-expressive-look_197531-12004.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user