Merge version_2_1782059639783 into main #2

Merged
bender merged 1 commits from version_2_1782059639783 into main 2026-06-21 16:35:40 +00:00
9 changed files with 344 additions and 190 deletions

View File

@@ -1,201 +1,35 @@
import AboutText from '@/components/sections/about/AboutText';
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqTwoColumn from '@/components/sections/faq/FaqTwoColumn';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import FeaturesMediaCards from '@/components/sections/features/FeaturesMediaCards';
import HeroBillboard from '@/components/sections/hero/HeroBillboard';
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 ProductsSection from './HomePage/sections/Products';
import FeaturesSection from './HomePage/sections/Features';
import TestimonialsSection from './HomePage/sections/Testimonials';
import FaqSection from './HomePage/sections/Faq';
import ContactSection from './HomePage/sections/Contact';
import LocationHoursSection from './HomePage/sections/LocationHours';export default function HomePage(): React.JSX.Element {
return (
<>
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroBillboard
title="Fresh Shaurma - Simply Delicious"
description="The finest ingredients, authentic recipes, and a taste that keeps you coming back for more. Discover the freshest shaurma in town."
primaryButton={{
text: "See Menu",
href: "#products",
}}
secondaryButton={{
text: "Contact Us",
href: "#contact",
}}
imageSrc="http://img.b2bpic.net/free-photo/top-view-chicken-kebab-with-herbs-red-onion-lavash-wooden-board-served-with-fresh-vegetables-spicies-table_141793-3049.jpg"
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutText
title="Our Passion for Quality"
primaryButton={{
text: "Read Our Story",
href: "#about",
}}
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<div id="products" data-section="products">
<SectionErrorBoundary name="products">
<FeaturesImageBento
tag="Our Menu"
title="Fresh & Delicious"
description="Choose from our wide variety of premium shaurma options."
items={[
{
title: "Classic Chicken",
description: "Tender chicken with fresh veggies.",
imageSrc: "http://img.b2bpic.net/free-photo/caesar-salad_1203-8975.jpg",
},
{
title: "Beef Delight",
description: "Juicy beef, perfectly spiced.",
imageSrc: "http://img.b2bpic.net/free-photo/meat-wrap-served-with-pepper_140725-1172.jpg",
},
{
title: "Vegan Falafel",
description: "Fresh falafel with tahini sauce.",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-vegan-goodies-wooden-board_23-2148305801.jpg",
},
{
title: "Mixed Platter",
description: "A bit of everything for everyone.",
imageSrc: "http://img.b2bpic.net/free-photo/food-board-with-traditional-kebab-grilled-foods-vegetables_114579-4302.jpg",
},
{
title: "Golden Fries",
description: "Crispy and light side snack.",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-french-fries-with-sandwich_23-2148262943.jpg",
},
{
title: "Fresh Lemonade",
description: "Refreshing home-made lemonade.",
imageSrc: "http://img.b2bpic.net/free-photo/wine-tasting-products-table_23-2148261683.jpg",
},
{
title: "Special Wrap",
description: "Chef's secret shaurma blend.",
imageSrc: "http://img.b2bpic.net/free-photo/cesar-salad-with-fried-chicken_1339-4919.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<ProductsSection />
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesMediaCards
tag="Why Us"
title="Commitment to Freshness"
description="Quality starts with the best ingredients."
items={[
{
title: "Fresh Ingredients",
description: "Sourced daily from local farmers.",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-bowls-with-spices-cut-bell-pepper-cauliflower-cut-red-cabbage-cut-green-tomatoes-white-table_140725-63053.jpg",
},
{
title: "Authentic Cooking",
description: "Slow-roasted to perfection.",
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-hands-cooking-japanese-street-food_23-2149410195.jpg",
},
{
title: "Fast Delivery",
description: "Hot and fresh at your door.",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-arabic-kebab-with-ketchup_23-2148651157.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<FeaturesSection />
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialMarqueeCards
tag="Reviews"
title="What Our Customers Say"
description="Authentic feedback from our community."
testimonials={[
{
name: "Anna S.",
role: "Foodie",
quote: "Best shaurma in the city!",
imageSrc: "http://img.b2bpic.net/free-photo/fashionable-hipster-guy-dressed-denim-shirt-wearing-stylish-glasses_273609-6819.jpg",
},
{
name: "Mike B.",
role: "Regular",
quote: "Consistently fresh and hot.",
imageSrc: "http://img.b2bpic.net/free-photo/woman-retro-vintage-50-s-cafe-sitting-table-drinking-milk-shake-cocktail-black-leather-jacket-wearing-pink-sunglasses_285396-10322.jpg",
},
{
name: "Sarah L.",
role: "Fan",
quote: "Love the falafel wrap!",
imageSrc: "http://img.b2bpic.net/free-photo/girl-sitting-table-holding-mobile-phone-indoors_171337-17096.jpg",
},
{
name: "Tom K.",
role: "Visitor",
quote: "Great service and great food.",
imageSrc: "http://img.b2bpic.net/free-photo/fashionable-male-with-beard-appeasing-hunger-while-dining-alone-modern-restaurant-sunny-day-eating-meal-with-knife-fork_273609-1966.jpg",
},
{
name: "Julia M.",
role: "Customer",
quote: "Super fast delivery always.",
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-woman-approving-vegetables_23-2147700720.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<TestimonialsSection />
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqTwoColumn
tag="Help"
title="Frequently Asked Questions"
description="Got questions? We have answers."
items={[
{
question: "Are you open on Sundays?",
answer: "Yes, we are open daily.",
},
{
question: "Do you offer delivery?",
answer: "Yes, we deliver within 5km.",
},
{
question: "Can I customize orders?",
answer: "Absolutely! Ask our friendly staff.",
},
]}
/>
</SectionErrorBoundary>
</div>
<FaqSection />
<LocationHoursSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Order Now"
text="Satisfy your cravings with Fresh Shaurma."
primaryButton={{
text: "Call to Order",
href: "tel:5550123",
}}
secondaryButton={{
text: "Get Directions",
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 AboutText from '@/components/sections/about/AboutText';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function AboutSection(): React.JSX.Element {
return (
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutText
title="Our Passion for Quality"
primaryButton={{
text: "Read Our Story",
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="Order Now"
text="Satisfy your cravings with Fresh Shaurma."
primaryButton={{
text: "Call to Order",
href: "tel:5550123",
}}
secondaryButton={{
text: "Get Directions",
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 "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="Help"
title="Frequently Asked Questions"
description="Got questions? We have answers."
items={[
{
question: "Are you open on Sundays?",
answer: "Yes, we are open daily.",
},
{
question: "Do you offer delivery?",
answer: "Yes, we deliver within 5km.",
},
{
question: "Can I customize orders?",
answer: "Absolutely! Ask our friendly staff.",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,37 @@
// 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 FeaturesMediaCards from '@/components/sections/features/FeaturesMediaCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FeaturesSection(): React.JSX.Element {
return (
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesMediaCards
tag="Why Us"
title="Commitment to Freshness"
description="Quality starts with the best ingredients."
items={[
{
title: "Fresh Ingredients",
description: "Sourced daily from local farmers.",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-bowls-with-spices-cut-bell-pepper-cauliflower-cut-red-cabbage-cut-green-tomatoes-white-table_140725-63053.jpg",
},
{
title: "Authentic Cooking",
description: "Slow-roasted to perfection.",
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-hands-cooking-japanese-street-food_23-2149410195.jpg",
},
{
title: "Fast Delivery",
description: "Hot and fresh at your door.",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-arabic-kebab-with-ketchup_23-2148651157.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 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
title="Fresh Shaurma - Simply Delicious"
description="The finest ingredients, authentic recipes, and a taste that keeps you coming back for more. Discover the freshest shaurma in town."
primaryButton={{
text: "See Menu",
href: "#products",
}}
secondaryButton={{
text: "Contact Us",
href: "#contact",
}}
imageSrc="http://img.b2bpic.net/free-photo/top-view-chicken-kebab-with-herbs-red-onion-lavash-wooden-board-served-with-fresh-vegetables-spicies-table_141793-3049.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,63 @@
import { MapPin, Clock, Phone } from "lucide-react";
import ScrollReveal from "@/components/ui/ScrollReveal";
import TextAnimation from "@/components/ui/TextAnimation";
export default function LocationHours() {
const features = [
{
icon: MapPin,
title: "Location",
description: "123 Main Street, City Center. Right next to the central park.",
},
{
icon: Clock,
title: "Opening Hours",
description: "Mon-Thu: 10:00 AM - 11:00 PM | Fri-Sun: 10:00 AM - 2:00 AM",
},
{
icon: Phone,
title: "Contact",
description: "Call us for pickup orders: +1 (555) 123-4567",
},
];
return (
<section data-webild-section="location-hours" id="location-hours" className="relative w-full py-24 bg-background">
<div className="w-content-width mx-auto">
<div className="text-center mb-16">
<ScrollReveal variant="fade">
<span className="inline-block py-1 px-3 rounded-full bg-primary-cta/10 text-primary-cta text-sm font-medium mb-4">
Visit Us
</span>
</ScrollReveal>
<TextAnimation
variant="fade-blur"
text="Store Hours & Location"
tag="h2"
gradientText={false}
className="text-4xl md:text-5xl font-bold text-foreground mb-6"
/>
<ScrollReveal variant="fade" delay={0.1}>
<p className="text-lg text-accent max-w-2xl mx-auto">
Drop by for the freshest shaurma in town. We're conveniently located and open late to satisfy your cravings.
</p>
</ScrollReveal>
</div>
<div className="grid grid-cols-1 md:grid-cols-3 gap-8">
{features.map((feature, index) => (
<ScrollReveal variant="fade" key={index} delay={0.2 + index * 0.1}>
<div className="card p-8 h-full flex flex-col items-center text-center">
<div className="w-16 h-16 rounded-full bg-primary-cta/10 flex items-center justify-center mb-6 text-primary-cta">
<feature.icon className="w-8 h-8" />
</div>
<h3 className="text-xl font-semibold text-foreground mb-4">{feature.title}</h3>
<p className="text-accent">{feature.description}</p>
</div>
</ScrollReveal>
))}
</div>
</div>
</section>
);
}

View File

@@ -0,0 +1,57 @@
// 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 FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ProductsSection(): React.JSX.Element {
return (
<div id="products" data-section="products">
<SectionErrorBoundary name="products">
<FeaturesImageBento
tag="Our Menu"
title="Fresh & Delicious"
description="Choose from our wide variety of premium shaurma options."
items={[
{
title: "Classic Chicken",
description: "Tender chicken with fresh veggies.",
imageSrc: "http://img.b2bpic.net/free-photo/caesar-salad_1203-8975.jpg",
},
{
title: "Beef Delight",
description: "Juicy beef, perfectly spiced.",
imageSrc: "http://img.b2bpic.net/free-photo/meat-wrap-served-with-pepper_140725-1172.jpg",
},
{
title: "Vegan Falafel",
description: "Fresh falafel with tahini sauce.",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-vegan-goodies-wooden-board_23-2148305801.jpg",
},
{
title: "Mixed Platter",
description: "A bit of everything for everyone.",
imageSrc: "http://img.b2bpic.net/free-photo/food-board-with-traditional-kebab-grilled-foods-vegetables_114579-4302.jpg",
},
{
title: "Golden Fries",
description: "Crispy and light side snack.",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-french-fries-with-sandwich_23-2148262943.jpg",
},
{
title: "Fresh Lemonade",
description: "Refreshing home-made lemonade.",
imageSrc: "http://img.b2bpic.net/free-photo/wine-tasting-products-table_23-2148261683.jpg",
},
{
title: "Special Wrap",
description: "Chef's secret shaurma blend.",
imageSrc: "http://img.b2bpic.net/free-photo/cesar-salad-with-fried-chicken_1339-4919.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 Our Customers Say"
description="Authentic feedback from our community."
testimonials={[
{
name: "Anna S.",
role: "Foodie",
quote: "Best shaurma in the city!",
imageSrc: "http://img.b2bpic.net/free-photo/fashionable-hipster-guy-dressed-denim-shirt-wearing-stylish-glasses_273609-6819.jpg",
},
{
name: "Mike B.",
role: "Regular",
quote: "Consistently fresh and hot.",
imageSrc: "http://img.b2bpic.net/free-photo/woman-retro-vintage-50-s-cafe-sitting-table-drinking-milk-shake-cocktail-black-leather-jacket-wearing-pink-sunglasses_285396-10322.jpg",
},
{
name: "Sarah L.",
role: "Fan",
quote: "Love the falafel wrap!",
imageSrc: "http://img.b2bpic.net/free-photo/girl-sitting-table-holding-mobile-phone-indoors_171337-17096.jpg",
},
{
name: "Tom K.",
role: "Visitor",
quote: "Great service and great food.",
imageSrc: "http://img.b2bpic.net/free-photo/fashionable-male-with-beard-appeasing-hunger-while-dining-alone-modern-restaurant-sunny-day-eating-meal-with-knife-fork_273609-1966.jpg",
},
{
name: "Julia M.",
role: "Customer",
quote: "Super fast delivery always.",
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-woman-approving-vegetables_23-2147700720.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}