Bob AI: Added a dedicated map and hours of operation section

This commit is contained in:
kudinDmitriyUp
2026-06-15 12:33:48 +00:00
parent c991cb4da2
commit 9aaed529ac
10 changed files with 481 additions and 279 deletions

View File

@@ -1,291 +1,38 @@
import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';
import ContactCta from '@/components/sections/contact/ContactCta';
import FeaturesBentoGrid from '@/components/sections/features/FeaturesBentoGrid';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import HeroBillboardTiltedCarousel from '@/components/sections/hero/HeroBillboardTiltedCarousel';
import MetricsSimpleCards from '@/components/sections/metrics/MetricsSimpleCards';
import PricingLayeredCards from '@/components/sections/pricing/PricingLayeredCards';
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
import { Clock, Leaf, Utensils } 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 AboutSection from './HomePage/sections/About';
import FeaturesSection from './HomePage/sections/Features';
import MenuSection from './HomePage/sections/Menu';
import AboutHeritageSection from './HomePage/sections/AboutHeritage';
import ReviewsSection from './HomePage/sections/Reviews';
import MetricsSection from './HomePage/sections/Metrics';
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">
<HeroBillboardTiltedCarousel
tag="Authentic Jamaican Cuisine"
title="Authentic Jamaican Flavors, Local Kingston Pride"
description="Award-rated dishes like our signature fish and chips, served fresh daily. Experience island taste without leaving the city."
primaryButton={{
text: "Order Now",
href: "#order",
}}
secondaryButton={{
text: "View Menu",
href: "#menu",
}}
items={[
{
imageSrc: "http://img.b2bpic.net/free-photo/close-up-view-delicious-thanksgiving-meal_23-2148629558.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/side-view-seafood-appetizers-fish-squid-shrimps-with-sauces-salad_141793-5091.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/cute-elegant-calm-happy-woman-green-summer-dress-sits-with-coffee-cafe-enjoying-morning_343596-3672.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/chef-preparing-recipe_23-2148145590.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/grilled-duck-breast-with-vegetable-salad_1203-9889.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/cooked-red-crawfish-closeup_132075-14134.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutFeaturesSplit
tag="Our Story"
title="A Legacy of Island Taste"
description="Born in the heart of Kingston, our restaurant carries forward generations of family recipes, bringing the soul of Jamaica to your plate. Every ingredient is sourced with care, honoring local traditions."
items={[
{
icon: Utensils,
title: "Authentic Recipes",
description: "Generations of family cooking passed down.",
},
{
icon: Leaf,
title: "Farm Fresh",
description: "Sourcing fresh produce daily.",
},
{
icon: Clock,
title: "Open Daily",
description: "Serving you from morning to night.",
},
]}
imageSrc="http://img.b2bpic.net/free-photo/asian-people-having-dinner-party_23-2149552643.jpg"
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesBentoGrid
tag="Why Eat With Us"
title="The Ladys Experience"
description="More than just a meal, it's a taste of home in the heart of Kingston."
features={[
{
title: "Fresh Ingredients",
description: "Local produce delivered daily.",
imageSrc: "http://img.b2bpic.net/free-photo/father-s-day-composition-with-slate-decorative-items_23-2147632060.jpg",
},
{
title: "Easy Booking",
description: "Reserve tables online in seconds.",
imageSrc: "http://img.b2bpic.net/free-photo/delicious-thanksgiving-day-food-table_23-2149082314.jpg",
},
{
title: "Relaxing Ambiance",
description: "Authentic atmosphere for your dining.",
imageSrc: "http://img.b2bpic.net/free-photo/futuristic-kitchen-interior-design_23-2151821268.jpg",
},
{
title: "Award Rated",
description: "Consistent 4.8 star experience.",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-woman-having-lunch-with-salmon-with-brown-noodles-soup-berry-salad-cocktail_141793-2455.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<FeaturesSection />
<div id="menu" data-section="menu">
<SectionErrorBoundary name="menu">
<FeaturesRevealCardsBento
tag="Daily Menu"
title="Flavor Highlights"
description="Explore our curated selections of authentic Jamaican favorites."
items={[
{
title: "Jerk Chicken",
description: "Slow-smoked with secret spices.",
href: "#order",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-veal-meat-sauce-pita-bread-with-vegetable-salad_141793-4257.jpg",
},
{
title: "Curry Goat",
description: "Traditional savory tender stew.",
href: "#order",
imageSrc: "http://img.b2bpic.net/free-photo/view-tasty-goulash-tomatoes_23-2149388106.jpg",
},
{
title: "Fried Snapper",
description: "Fresh catch prepared daily.",
href: "#order",
imageSrc: "http://img.b2bpic.net/free-photo/grilled-fish_1387-896.jpg",
},
{
title: "Rich Oxtail",
description: "Rich flavor, butter-tender.",
href: "#order",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-baked-liver-onion-plate-pine-tree-branch-salt-pepper-garlic_140725-99819.jpg",
},
{
title: "Ackee & Saltfish",
description: "Our national breakfast favorite.",
href: "#order",
imageSrc: "http://img.b2bpic.net/free-photo/shrimp-caesar-salad-table_140725-453.jpg",
},
{
title: "Sweet Plantains",
description: "Perfect side for any dish.",
href: "#order",
imageSrc: "http://img.b2bpic.net/free-photo/spicy-vegan-salad-with-sticky-berry-grain-rice_1339-8177.jpg",
},
{
title: "Beef Patties",
description: "Crispy golden island pastry.",
href: "#order",
imageSrc: "http://img.b2bpic.net/free-photo/cookies-muffins-wooden-board_114579-20734.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<MenuSection />
<div id="about-heritage" data-section="about-heritage">
<SectionErrorBoundary name="about-heritage">
<PricingLayeredCards
tag="Our Commitment"
title="Quality You Can Taste"
description="Flexible dining options for every appetite."
plans={[
{
tag: "Quick",
price: "$12",
description: "Perfect lunch specials.",
primaryButton: {
text: "View Menu",
href: "#menu",
},
features: [
"Lunch size portions",
"Daily fresh sides",
"Fast service",
],
},
{
tag: "Premium",
price: "$25",
description: "Signature dinner plates.",
primaryButton: {
text: "Order Now",
href: "#order",
},
features: [
"Full portion entree",
"Authentic dessert included",
"Priority seating",
],
},
]}
/>
</SectionErrorBoundary>
</div>
<AboutHeritageSection />
<div id="reviews" data-section="reviews">
<SectionErrorBoundary name="reviews">
<TestimonialColumnMarqueeCards
tag="Testimonials"
title="What Kingston Says"
description="Join our community of satisfied diners who love the island taste."
testimonials={[
{
name: "Marcus A.",
role: "Food Blogger",
quote: "The absolute best jerk chicken I've ever had in Kingston. Truly authentic.",
imageSrc: "http://img.b2bpic.net/free-photo/lovely-couple-having-fun-while-eating-sushi-rolls-restaurant-modern-terrace_496169-1902.jpg",
},
{
name: "Sarah P.",
role: "Regular Guest",
quote: "Staff is wonderful and the atmosphere always feels like home. Must-try!",
imageSrc: "http://img.b2bpic.net/free-photo/closeup-goodlooking-tender-friendly-pretty-middleaged-30s-woman-extend-arm-hold-camera-hand-smiling-broadly-taking-selfie-photographing-record-videomessage-calling-husband_176420-51274.jpg",
},
{
name: "David K.",
role: "Local Business Owner",
quote: "Perfect for a quick, high-quality lunch. Never disappointed.",
imageSrc: "http://img.b2bpic.net/free-photo/happy-young-female-student-eating-fast-food-fast-food-cheat-meal_169016-67586.jpg",
},
{
name: "Emily R.",
role: "Tourist",
quote: "Authentic Jamaican experience. The fish and chips were incredible.",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-friends-with-drinks-tacos_23-2149073435.jpg",
},
{
name: "James B.",
role: "Culinary Student",
quote: "The recipes here are legit. Respect to the kitchen staff.",
imageSrc: "http://img.b2bpic.net/free-photo/side-view-smiley-woman-sitting-table_23-2149655602.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<ReviewsSection />
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsSimpleCards
tag="By The Numbers"
title="Serving You Excellence"
description="Our passion for island flavor speaks through our community impact."
metrics={[
{
value: "15+",
description: "Years of authentic service",
},
{
value: "4.8★",
description: "Average customer rating",
},
{
value: "20k+",
description: "Meals served with love",
},
]}
/>
</SectionErrorBoundary>
</div>
<MetricsSection />
<LocationHoursSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Visit Us Today"
text="Join us at Ladys Restaurant for an unforgettable island meal. We're open daily from 11 AM 10 PM."
primaryButton={{
text: "Reserve a Table",
href: "#reserve",
}}
secondaryButton={{
text: "Get Directions",
href: "#map",
}}
/>
</SectionErrorBoundary>
</div>
<ContactSection />
</>
);
}

View 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 { Clock, Leaf, 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="A Legacy of Island Taste"
description="Born in the heart of Kingston, our restaurant carries forward generations of family recipes, bringing the soul of Jamaica to your plate. Every ingredient is sourced with care, honoring local traditions."
items={[
{
icon: Utensils,
title: "Authentic Recipes",
description: "Generations of family cooking passed down.",
},
{
icon: Leaf,
title: "Farm Fresh",
description: "Sourcing fresh produce daily.",
},
{
icon: Clock,
title: "Open Daily",
description: "Serving you from morning to night.",
},
]}
imageSrc="http://img.b2bpic.net/free-photo/asian-people-having-dinner-party_23-2149552643.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,50 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "about-heritage" section.
import React from 'react';
import PricingLayeredCards from '@/components/sections/pricing/PricingLayeredCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function AboutHeritageSection(): React.JSX.Element {
return (
<div id="about-heritage" data-section="about-heritage">
<SectionErrorBoundary name="about-heritage">
<PricingLayeredCards
tag="Our Commitment"
title="Quality You Can Taste"
description="Flexible dining options for every appetite."
plans={[
{
tag: "Quick",
price: "$12",
description: "Perfect lunch specials.",
primaryButton: {
text: "View Menu",
href: "#menu",
},
features: [
"Lunch size portions",
"Daily fresh sides",
"Fast service",
],
},
{
tag: "Premium",
price: "$25",
description: "Signature dinner plates.",
primaryButton: {
text: "Order Now",
href: "#order",
},
features: [
"Full portion entree",
"Authentic dessert included",
"Priority seating",
],
},
]}
/>
</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="Visit Us Today"
text="Join us at Ladys Restaurant for an unforgettable island meal. We're open daily from 11 AM 10 PM."
primaryButton={{
text: "Reserve a Table",
href: "#reserve",
}}
secondaryButton={{
text: "Get Directions",
href: "#map",
}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,42 @@
// 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 FeaturesBentoGrid from '@/components/sections/features/FeaturesBentoGrid';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FeaturesSection(): React.JSX.Element {
return (
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesBentoGrid
tag="Why Eat With Us"
title="The Ladys Experience"
description="More than just a meal, it's a taste of home in the heart of Kingston."
features={[
{
title: "Fresh Ingredients",
description: "Local produce delivered daily.",
imageSrc: "http://img.b2bpic.net/free-photo/father-s-day-composition-with-slate-decorative-items_23-2147632060.jpg",
},
{
title: "Easy Booking",
description: "Reserve tables online in seconds.",
imageSrc: "http://img.b2bpic.net/free-photo/delicious-thanksgiving-day-food-table_23-2149082314.jpg",
},
{
title: "Relaxing Ambiance",
description: "Authentic atmosphere for your dining.",
imageSrc: "http://img.b2bpic.net/free-photo/futuristic-kitchen-interior-design_23-2151821268.jpg",
},
{
title: "Award Rated",
description: "Consistent 4.8 star experience.",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-woman-having-lunch-with-salmon-with-brown-noodles-soup-berry-salad-cocktail_141793-2455.jpg",
},
]}
/>
</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 HeroBillboardTiltedCarousel from '@/components/sections/hero/HeroBillboardTiltedCarousel';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HeroSection(): React.JSX.Element {
return (
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroBillboardTiltedCarousel
tag="Authentic Jamaican Cuisine"
title="Authentic Jamaican Flavors, Local Kingston Pride"
description="Award-rated dishes like our signature fish and chips, served fresh daily. Experience island taste without leaving the city."
primaryButton={{
text: "Order Now",
href: "#order",
}}
secondaryButton={{
text: "View Menu",
href: "#menu",
}}
items={[
{
imageSrc: "http://img.b2bpic.net/free-photo/close-up-view-delicious-thanksgiving-meal_23-2148629558.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/side-view-seafood-appetizers-fish-squid-shrimps-with-sauces-salad_141793-5091.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/cute-elegant-calm-happy-woman-green-summer-dress-sits-with-coffee-cafe-enjoying-morning_343596-3672.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/chef-preparing-recipe_23-2148145590.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/grilled-duck-breast-with-vegetable-salad_1203-9889.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/cooked-red-crawfish-closeup_132075-14134.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,99 @@
import { MapPin, Clock, Phone } from 'lucide-react';
import ScrollReveal from '@/components/ui/ScrollReveal';
import TextAnimation from '@/components/ui/TextAnimation';
import Card from '@/components/ui/Card';
export default function LocationHoursSection() {
return (
<section data-webild-section="location-hours" id="location-hours" className="relative w-full py-24 bg-background">
<div className="max-w-content-width mx-auto px-6">
<div className="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
<ScrollReveal variant="slide-up">
<Card className="w-full h-[400px] lg:h-[500px] overflow-hidden rounded-3xl relative">
<iframe
src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d60699.64817551415!2d-76.83758416410408!3d18.01804868352667!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x8edb3f74618e11a3%3A0x868c22252a12361b!2sKingston%2C%20Jamaica!5e0!3m2!1sen!2sus!4v1715093845000!5m2!1sen!2sus"
width="100%"
height="100%"
style={{ border: 0 }}
allowFullScreen={false}
loading="lazy"
referrerPolicy="no-referrer-when-downgrade"
className="absolute inset-0"
></iframe>
</Card>
</ScrollReveal>
<div className="flex flex-col justify-center space-y-8">
<div>
<TextAnimation
text="Location & Hours"
variant="slide-up"
tag="h2"
className="text-4xl md:text-5xl font-bold text-foreground mb-4"
gradientText={false}
/>
<p className="text-lg text-muted-foreground">
Visit us in the heart of Kingston for an authentic Jamaican dining experience.
</p>
</div>
<ScrollReveal variant="slide-up" delay={0.2}>
<Card className="p-8 space-y-6">
<div className="flex items-start space-x-4">
<div className="p-3 bg-primary-cta/10 rounded-full text-primary-cta">
<Clock className="w-6 h-6" />
</div>
<div className="w-full">
<h3 className="text-xl font-semibold text-foreground mb-3">Hours of Operation</h3>
<ul className="space-y-2 text-muted-foreground w-full">
<li className="flex justify-between">
<span>Monday</span>
<span className="font-medium">Closed</span>
</li>
<li className="flex justify-between">
<span>Tuesday - Thursday</span>
<span className="font-medium">11:00 AM - 9:00 PM</span>
</li>
<li className="flex justify-between">
<span>Friday - Saturday</span>
<span className="font-medium">11:00 AM - 10:00 PM</span>
</li>
<li className="flex justify-between">
<span>Sunday</span>
<span className="font-medium">12:00 PM - 8:00 PM</span>
</li>
</ul>
</div>
</div>
<div className="h-px w-full bg-border" />
<div className="flex items-start space-x-4">
<div className="p-3 bg-primary-cta/10 rounded-full text-primary-cta">
<MapPin className="w-6 h-6" />
</div>
<div>
<h3 className="text-xl font-semibold text-foreground mb-1">Address</h3>
<p className="text-muted-foreground">123 Kingston Ave, Kingston, Jamaica</p>
</div>
</div>
<div className="h-px w-full bg-border" />
<div className="flex items-start space-x-4">
<div className="p-3 bg-primary-cta/10 rounded-full text-primary-cta">
<Phone className="w-6 h-6" />
</div>
<div>
<h3 className="text-xl font-semibold text-foreground mb-1">Phone</h3>
<p className="text-muted-foreground">(876) 555-0198</p>
</div>
</div>
</Card>
</ScrollReveal>
</div>
</div>
</div>
</section>
);
}

View File

@@ -0,0 +1,64 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "menu" section.
import React from 'react';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function MenuSection(): React.JSX.Element {
return (
<div id="menu" data-section="menu">
<SectionErrorBoundary name="menu">
<FeaturesRevealCardsBento
tag="Daily Menu"
title="Flavor Highlights"
description="Explore our curated selections of authentic Jamaican favorites."
items={[
{
title: "Jerk Chicken",
description: "Slow-smoked with secret spices.",
href: "#order",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-veal-meat-sauce-pita-bread-with-vegetable-salad_141793-4257.jpg",
},
{
title: "Curry Goat",
description: "Traditional savory tender stew.",
href: "#order",
imageSrc: "http://img.b2bpic.net/free-photo/view-tasty-goulash-tomatoes_23-2149388106.jpg",
},
{
title: "Fried Snapper",
description: "Fresh catch prepared daily.",
href: "#order",
imageSrc: "http://img.b2bpic.net/free-photo/grilled-fish_1387-896.jpg",
},
{
title: "Rich Oxtail",
description: "Rich flavor, butter-tender.",
href: "#order",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-baked-liver-onion-plate-pine-tree-branch-salt-pepper-garlic_140725-99819.jpg",
},
{
title: "Ackee & Saltfish",
description: "Our national breakfast favorite.",
href: "#order",
imageSrc: "http://img.b2bpic.net/free-photo/shrimp-caesar-salad-table_140725-453.jpg",
},
{
title: "Sweet Plantains",
description: "Perfect side for any dish.",
href: "#order",
imageSrc: "http://img.b2bpic.net/free-photo/spicy-vegan-salad-with-sticky-berry-grain-rice_1339-8177.jpg",
},
{
title: "Beef Patties",
description: "Crispy golden island pastry.",
href: "#order",
imageSrc: "http://img.b2bpic.net/free-photo/cookies-muffins-wooden-board_114579-20734.jpg",
},
]}
/>
</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 "metrics" section.
import React from 'react';
import MetricsSimpleCards from '@/components/sections/metrics/MetricsSimpleCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function MetricsSection(): React.JSX.Element {
return (
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsSimpleCards
tag="By The Numbers"
title="Serving You Excellence"
description="Our passion for island flavor speaks through our community impact."
metrics={[
{
value: "15+",
description: "Years of authentic service",
},
{
value: "4.8★",
description: "Average customer rating",
},
{
value: "20k+",
description: "Meals served with love",
},
]}
/>
</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 "reviews" section.
import React from 'react';
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ReviewsSection(): React.JSX.Element {
return (
<div id="reviews" data-section="reviews">
<SectionErrorBoundary name="reviews">
<TestimonialColumnMarqueeCards
tag="Testimonials"
title="What Kingston Says"
description="Join our community of satisfied diners who love the island taste."
testimonials={[
{
name: "Marcus A.",
role: "Food Blogger",
quote: "The absolute best jerk chicken I've ever had in Kingston. Truly authentic.",
imageSrc: "http://img.b2bpic.net/free-photo/lovely-couple-having-fun-while-eating-sushi-rolls-restaurant-modern-terrace_496169-1902.jpg",
},
{
name: "Sarah P.",
role: "Regular Guest",
quote: "Staff is wonderful and the atmosphere always feels like home. Must-try!",
imageSrc: "http://img.b2bpic.net/free-photo/closeup-goodlooking-tender-friendly-pretty-middleaged-30s-woman-extend-arm-hold-camera-hand-smiling-broadly-taking-selfie-photographing-record-videomessage-calling-husband_176420-51274.jpg",
},
{
name: "David K.",
role: "Local Business Owner",
quote: "Perfect for a quick, high-quality lunch. Never disappointed.",
imageSrc: "http://img.b2bpic.net/free-photo/happy-young-female-student-eating-fast-food-fast-food-cheat-meal_169016-67586.jpg",
},
{
name: "Emily R.",
role: "Tourist",
quote: "Authentic Jamaican experience. The fish and chips were incredible.",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-friends-with-drinks-tacos_23-2149073435.jpg",
},
{
name: "James B.",
role: "Culinary Student",
quote: "The recipes here are legit. Respect to the kitchen staff.",
imageSrc: "http://img.b2bpic.net/free-photo/side-view-smiley-woman-sitting-table_23-2149655602.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}