2 Commits

Author SHA1 Message Date
2ed2d6f5e2 Merge version_2_1781767381970 into main
Merge version_2_1781767381970 into main
2026-06-18 07:24:18 +00:00
kudinDmitriyUp
9245bcc619 Bob AI (stub): Add a location or map section so local customers can easily 2026-06-18 07:24:14 +00:00
9 changed files with 427 additions and 238 deletions

View File

@@ -1,249 +1,38 @@
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqSimple from '@/components/sections/faq/FaqSimple';
import FeaturesBorderGlow from '@/components/sections/features/FeaturesBorderGlow';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import HeroBillboardCarousel from '@/components/sections/hero/HeroBillboardCarousel';
import MetricsIconCards from '@/components/sections/metrics/MetricsIconCards';
import TestimonialRatingCards from '@/components/sections/testimonial/TestimonialRatingCards';
import { Clock, Coffee, Flame, Heart, Smartphone, Zap } 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 ProductsSection from './HomePage/sections/Products';
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-18T07:24:12.891Z: Add a location or map section so local customers can easily see your physical presence and find you, which increases trust for a food business. */}
import LocationSection from './HomePage/sections/Location';export default function HomePage(): React.JSX.Element {
return (
<>
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroBillboardCarousel
tag="Taste Choma's Favorite"
title="Frenzy Food—Bold Flavors, Fast & Fresh"
description="Order online, pick up quick, or have it delivered. Taste Choma's favorite comfort food today."
primaryButton={{
text: "Order Now",
href: "#contact",
}}
secondaryButton={{
text: "Our Menu",
href: "#products",
}}
items={[
{
imageSrc: "http://img.b2bpic.net/free-photo/eating-asian-food-dinner-concept_53876-23414.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/fried-chicken-isolated-white_628469-378.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/steaming-stir-fried-shrimp-vegetables_84443-85665.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/french-fries-with-sauces-nuggets_114579-19756.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/puff-pastry-boiled-vegetables_140725-2179.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/chicken-caesar-salad_140725-6549.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesBorderGlow
tag="Why Us"
title="The Frenzy Experience"
description="We bring you the boldest flavors in Choma with unmatched convenience and speed."
features={[
{
icon: Zap,
title: "Lightning Fast",
description: "Hot food ready when you are, with efficient pickup and delivery.",
},
{
icon: Flame,
title: "Bold Flavors",
description: "Authentic, high-energy comfort food made with fresh local ingredients.",
},
{
icon: Smartphone,
title: "Easy Ordering",
description: "Seamless digital platform for quick browsing and one-click checkout.",
},
]}
/>
</SectionErrorBoundary>
</div>
<FeaturesSection />
<div id="products" data-section="products">
<SectionErrorBoundary name="products">
<FeaturesRevealCardsBento
tag="Our Menu"
title="Frenzy Favorites"
description="Explore our top-rated comfort foods, from classic burgers to crispy fried snacks."
items={[
{
title: "Frenzy Burger",
description: "Classic beef patty with fresh toppings.",
href: "#contact",
imageSrc: "http://img.b2bpic.net/free-photo/vertical-shot-delicious-cheeseburger-with-fresh-ingredients-attached-with-skewers-stick_181624-41067.jpg",
},
{
title: "Crispy Wings",
description: "Spicy, savory, and perfectly golden.",
href: "#contact",
imageSrc: "http://img.b2bpic.net/free-photo/shot-white-plate-full-fried-chicken_181624-23629.jpg",
},
{
title: "Classic Pizza",
description: "Freshly baked with gooey melted cheese.",
href: "#contact",
imageSrc: "http://img.b2bpic.net/free-photo/slice-pizza-wooden-board-top-view_114579-13280.jpg",
},
{
title: "Loaded Fries",
description: "Crispy golden fries with spicy toppings.",
href: "#contact",
imageSrc: "http://img.b2bpic.net/free-photo/crispy-french-fries-with-ketchup-mayonnaise_1150-26587.jpg",
},
{
title: "Tropical Cooler",
description: "Refreshing fruity beverage for hot days.",
href: "#contact",
imageSrc: "http://img.b2bpic.net/free-photo/young-woman-with-dessert-plate-drinking-from-cup-table-cafe_23-2148071645.jpg",
},
{
title: "Choco Brownie",
description: "Rich, indulgent chocolate dessert slice.",
href: "#contact",
imageSrc: "http://img.b2bpic.net/free-photo/chocolate-cake-roll-with-raspberry-jam-butter-cream_114579-62768.jpg",
},
{
title: "Veggie Wrap",
description: "Healthy wrap with fresh crisp veggies.",
href: "#contact",
imageSrc: "http://img.b2bpic.net/free-photo/wrap-salad-roll_1339-4100.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<ProductsSection />
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsIconCards
tag="Our Impact"
title="Choma's Trusted Choice"
description="The numbers speak for themselves in our journey of serving the local community."
metrics={[
{
icon: Heart,
title: "Happy Customers",
value: "10K+",
},
{
icon: Clock,
title: "Avg. Order Time",
value: "15m",
},
{
icon: Coffee,
title: "Meals Served",
value: "50K+",
},
]}
/>
</SectionErrorBoundary>
</div>
<MetricsSection />
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialRatingCards
tag="Love from Choma"
title="What Our Fans Say"
description="Hear from our local patrons who enjoy Frenzy Food daily."
testimonials={[
{
name: "Sarah J.",
role: "Resident",
quote: "The best comfort food in town, always fresh and fast!",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-woman-eating-healthy-meal-room-watching-videos-laptop-having-lunch_1258-254302.jpg",
},
{
name: "Michael B.",
role: "Foodie",
quote: "I love the quick ordering process. The burgers are top-notch.",
rating: 5,
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: "Emily K.",
role: "Local",
quote: "Frenzy Food is my go-to for lunch breaks. Highly recommended.",
rating: 4,
imageSrc: "http://img.b2bpic.net/free-photo/playful-girl-enjoying-tasty-breakfast-holidays-stylish-modern-cafe_273443-1845.jpg",
},
{
name: "David M.",
role: "Student",
quote: "Quick, delicious, and consistent every single time.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/handsome-young-man-wearing-trendy-hat-sitting-wooden-table-coffee-shop_273609-1622.jpg",
},
{
name: "Clara T.",
role: "Professional",
quote: "Amazing flavors and the delivery is always on point.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-friends-having-cocktails_23-2150244991.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<TestimonialsSection />
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqSimple
tag="Common Questions"
title="Everything You Need to Know"
description="Find answers to our most popular inquiries about ordering and delivery."
items={[
{
question: "What are your operating hours?",
answer: "We are open Monday to Sunday, from 10:00 AM to 10:00 PM.",
},
{
question: "Do you offer delivery?",
answer: "Yes, we deliver within a 10km radius of Choma city center.",
},
{
question: "How can I order online?",
answer: "Simply browse our menu, add items to your cart, and check out using our secure mobile platform.",
},
]}
/>
</SectionErrorBoundary>
</div>
<FaqSection />
<LocationSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Get Started"
text="Ready to satisfy those cravings? Order your Frenzy feast now!"
primaryButton={{
text: "Order Online",
href: "#",
}}
secondaryButton={{
text: "Call Us",
href: "tel:+26000000000",
}}
/>
</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 "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="Get Started"
text="Ready to satisfy those cravings? Order your Frenzy feast now!"
primaryButton={{
text: "Order Online",
href: "#",
}}
secondaryButton={{
text: "Call Us",
href: "tel:+26000000000",
}}
/>
</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 FaqSimple from '@/components/sections/faq/FaqSimple';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FaqSection(): React.JSX.Element {
return (
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqSimple
tag="Common Questions"
title="Everything You Need to Know"
description="Find answers to our most popular inquiries about ordering and delivery."
items={[
{
question: "What are your operating hours?",
answer: "We are open Monday to Sunday, from 10:00 AM to 10:00 PM.",
},
{
question: "Do you offer delivery?",
answer: "Yes, we deliver within a 10km radius of Choma city center.",
},
{
question: "How can I order online?",
answer: "Simply browse our menu, add items to your cart, and check out using our secure mobile platform.",
},
]}
/>
</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 "features" section.
import React from 'react';
import FeaturesBorderGlow from '@/components/sections/features/FeaturesBorderGlow';
import { Clock, Coffee, Flame, Heart, Smartphone, Zap } from "lucide-react";
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FeaturesSection(): React.JSX.Element {
return (
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesBorderGlow
tag="Why Us"
title="The Frenzy Experience"
description="We bring you the boldest flavors in Choma with unmatched convenience and speed."
features={[
{
icon: Zap,
title: "Lightning Fast",
description: "Hot food ready when you are, with efficient pickup and delivery.",
},
{
icon: Flame,
title: "Bold Flavors",
description: "Authentic, high-energy comfort food made with fresh local ingredients.",
},
{
icon: Smartphone,
title: "Easy Ordering",
description: "Seamless digital platform for quick browsing and one-click checkout.",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,48 @@
// 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 HeroBillboardCarousel from '@/components/sections/hero/HeroBillboardCarousel';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HeroSection(): React.JSX.Element {
return (
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroBillboardCarousel
tag="Taste Choma's Favorite"
title="Frenzy Food—Bold Flavors, Fast & Fresh"
description="Order online, pick up quick, or have it delivered. Taste Choma's favorite comfort food today."
primaryButton={{
text: "Order Now",
href: "#contact",
}}
secondaryButton={{
text: "Our Menu",
href: "#products",
}}
items={[
{
imageSrc: "http://img.b2bpic.net/free-photo/eating-asian-food-dinner-concept_53876-23414.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/fried-chicken-isolated-white_628469-378.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/steaming-stir-fried-shrimp-vegetables_84443-85665.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/french-fries-with-sauces-nuggets_114579-19756.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/puff-pastry-boiled-vegetables_140725-2179.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/chicken-caesar-salad_140725-6549.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,94 @@
import TextAnimation from "@/components/ui/TextAnimation";
import ScrollReveal from "@/components/ui/ScrollReveal";
import Tag from "@/components/ui/Tag";
import { MapPin, Clock, Phone } from "lucide-react";
export default function LocationSection() {
return (
<section data-webild-section="location" id="location" className="relative w-full py-24 bg-background">
<div className="max-w-6xl mx-auto px-6">
<div className="flex flex-col items-center text-center mb-12">
<ScrollReveal variant="fade">
<Tag text="Location" className="mb-4" />
</ScrollReveal>
<TextAnimation
text="Find Us in Choma"
variant="slide-up"
tag="h2"
className="text-4xl md:text-5xl font-bold text-foreground mb-4"
gradientText={false}
/>
<ScrollReveal variant="fade" delay={0.2}>
<p className="text-lg text-muted-foreground max-w-2xl mx-auto">
Visit Frenzy Food Restaurant for the best comfort food in town. We're centrally located and ready to serve you.
</p>
</ScrollReveal>
</div>
<div className="grid grid-cols-1 lg:grid-cols-3 gap-8">
<ScrollReveal variant="fade" delay={0.3} className="lg:col-span-2">
<div className="w-full h-[400px] rounded-2xl overflow-hidden border border-border">
<iframe
src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3844.646876216447!2d26.9833333!3d-16.8166667!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x19430ab000000000%3A0x0!2sChoma%2C%20Zambia!5e0!3m2!1sen!2sus!4v1620000000000!5m2!1sen!2sus"
width="100%"
height="100%"
style={{ border: 0 }}
allowFullScreen={true}
loading="lazy"
referrerPolicy="no-referrer-when-downgrade"
title="Frenzy Food Location"
></iframe>
</div>
</ScrollReveal>
<div className="flex flex-col gap-6">
<ScrollReveal variant="fade" delay={0.4}>
<div className="p-6 rounded-2xl bg-card border border-border flex items-start gap-4">
<div className="p-3 rounded-full bg-primary-cta/10 text-primary-cta">
<MapPin className="w-6 h-6" />
</div>
<div>
<h3 className="text-xl font-semibold text-foreground mb-2">Address</h3>
<p className="text-muted-foreground">
123 Main Street<br />
Choma, Zambia
</p>
</div>
</div>
</ScrollReveal>
<ScrollReveal variant="fade" delay={0.5}>
<div className="p-6 rounded-2xl bg-card border border-border flex items-start gap-4">
<div className="p-3 rounded-full bg-primary-cta/10 text-primary-cta">
<Clock className="w-6 h-6" />
</div>
<div>
<h3 className="text-xl font-semibold text-foreground mb-2">Hours</h3>
<p className="text-muted-foreground">
Mon - Sat: 10:00 AM - 10:00 PM<br />
Sun: 11:00 AM - 9:00 PM
</p>
</div>
</div>
</ScrollReveal>
<ScrollReveal variant="fade" delay={0.6}>
<div className="p-6 rounded-2xl bg-card border border-border flex items-start gap-4">
<div className="p-3 rounded-full bg-primary-cta/10 text-primary-cta">
<Phone className="w-6 h-6" />
</div>
<div>
<h3 className="text-xl font-semibold text-foreground mb-2">Contact</h3>
<p className="text-muted-foreground">
+260 123 456 789<br />
hello@frenzyfood.com
</p>
</div>
</div>
</ScrollReveal>
</div>
</div>
</div>
</section>
);
}

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 "metrics" section.
import React from 'react';
import MetricsIconCards from '@/components/sections/metrics/MetricsIconCards';
import { Clock, Coffee, Flame, Heart, Smartphone, Zap } from "lucide-react";
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function MetricsSection(): React.JSX.Element {
return (
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsIconCards
tag="Our Impact"
title="Choma's Trusted Choice"
description="The numbers speak for themselves in our journey of serving the local community."
metrics={[
{
icon: Heart,
title: "Happy Customers",
value: "10K+",
},
{
icon: Clock,
title: "Avg. Order Time",
value: "15m",
},
{
icon: Coffee,
title: "Meals Served",
value: "50K+",
},
]}
/>
</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 "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="Our Menu"
title="Frenzy Favorites"
description="Explore our top-rated comfort foods, from classic burgers to crispy fried snacks."
items={[
{
title: "Frenzy Burger",
description: "Classic beef patty with fresh toppings.",
href: "#contact",
imageSrc: "http://img.b2bpic.net/free-photo/vertical-shot-delicious-cheeseburger-with-fresh-ingredients-attached-with-skewers-stick_181624-41067.jpg",
},
{
title: "Crispy Wings",
description: "Spicy, savory, and perfectly golden.",
href: "#contact",
imageSrc: "http://img.b2bpic.net/free-photo/shot-white-plate-full-fried-chicken_181624-23629.jpg",
},
{
title: "Classic Pizza",
description: "Freshly baked with gooey melted cheese.",
href: "#contact",
imageSrc: "http://img.b2bpic.net/free-photo/slice-pizza-wooden-board-top-view_114579-13280.jpg",
},
{
title: "Loaded Fries",
description: "Crispy golden fries with spicy toppings.",
href: "#contact",
imageSrc: "http://img.b2bpic.net/free-photo/crispy-french-fries-with-ketchup-mayonnaise_1150-26587.jpg",
},
{
title: "Tropical Cooler",
description: "Refreshing fruity beverage for hot days.",
href: "#contact",
imageSrc: "http://img.b2bpic.net/free-photo/young-woman-with-dessert-plate-drinking-from-cup-table-cafe_23-2148071645.jpg",
},
{
title: "Choco Brownie",
description: "Rich, indulgent chocolate dessert slice.",
href: "#contact",
imageSrc: "http://img.b2bpic.net/free-photo/chocolate-cake-roll-with-raspberry-jam-butter-cream_114579-62768.jpg",
},
{
title: "Veggie Wrap",
description: "Healthy wrap with fresh crisp veggies.",
href: "#contact",
imageSrc: "http://img.b2bpic.net/free-photo/wrap-salad-roll_1339-4100.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

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 "testimonials" section.
import React from 'react';
import TestimonialRatingCards from '@/components/sections/testimonial/TestimonialRatingCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function TestimonialsSection(): React.JSX.Element {
return (
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialRatingCards
tag="Love from Choma"
title="What Our Fans Say"
description="Hear from our local patrons who enjoy Frenzy Food daily."
testimonials={[
{
name: "Sarah J.",
role: "Resident",
quote: "The best comfort food in town, always fresh and fast!",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-woman-eating-healthy-meal-room-watching-videos-laptop-having-lunch_1258-254302.jpg",
},
{
name: "Michael B.",
role: "Foodie",
quote: "I love the quick ordering process. The burgers are top-notch.",
rating: 5,
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: "Emily K.",
role: "Local",
quote: "Frenzy Food is my go-to for lunch breaks. Highly recommended.",
rating: 4,
imageSrc: "http://img.b2bpic.net/free-photo/playful-girl-enjoying-tasty-breakfast-holidays-stylish-modern-cafe_273443-1845.jpg",
},
{
name: "David M.",
role: "Student",
quote: "Quick, delicious, and consistent every single time.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/handsome-young-man-wearing-trendy-hat-sitting-wooden-table-coffee-shop_273609-1622.jpg",
},
{
name: "Clara T.",
role: "Professional",
quote: "Amazing flavors and the delivery is always on point.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-friends-having-cocktails_23-2150244991.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}