Merge version_2_1781767381970 into main #1
@@ -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 />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
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="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>
|
||||
);
|
||||
}
|
||||
34
src/pages/HomePage/sections/Faq.tsx
Normal file
34
src/pages/HomePage/sections/Faq.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
38
src/pages/HomePage/sections/Features.tsx
Normal file
38
src/pages/HomePage/sections/Features.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
48
src/pages/HomePage/sections/Hero.tsx
Normal file
48
src/pages/HomePage/sections/Hero.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
94
src/pages/HomePage/sections/Location.tsx
Normal file
94
src/pages/HomePage/sections/Location.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
38
src/pages/HomePage/sections/Metrics.tsx
Normal file
38
src/pages/HomePage/sections/Metrics.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
64
src/pages/HomePage/sections/Products.tsx
Normal file
64
src/pages/HomePage/sections/Products.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 "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>
|
||||
);
|
||||
}
|
||||
57
src/pages/HomePage/sections/Testimonials.tsx
Normal file
57
src/pages/HomePage/sections/Testimonials.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user