Compare commits
1 Commits
version_1_
...
version_2_
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
17839b350f |
@@ -12,7 +12,7 @@
|
||||
--primary-cta-text: #1A1208;
|
||||
--secondary-cta: #8B1A1A;
|
||||
--secondary-cta-text: #F5F0E8;
|
||||
--accent: #C8933A;
|
||||
--accent: #F5F0E8;
|
||||
--background-accent: #2D2010;
|
||||
|
||||
/* @layout/border-radius/rounded */
|
||||
|
||||
@@ -1,238 +1,33 @@
|
||||
import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import FeaturesMediaCards from '@/components/sections/features/FeaturesMediaCards';
|
||||
import HeroBillboardCarousel from '@/components/sections/hero/HeroBillboardCarousel';
|
||||
import MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
|
||||
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
|
||||
import { Award, Book, Star } 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 ExperienceSection from './HomePage/sections/Experience';
|
||||
import AboutSection from './HomePage/sections/About';
|
||||
import MenuSection from './HomePage/sections/Menu';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import PrivateDiningSection from './HomePage/sections/PrivateDining';
|
||||
import ContactSection from './HomePage/sections/Contact';
|
||||
|
||||
export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboardCarousel
|
||||
tag="Westminster's Finest"
|
||||
title="A Legacy of Culinary Distinction"
|
||||
description="Located in the heart of Westminster, The Cinnamon Club offers an unparalleled fine dining experience in a historic Victorian library setting."
|
||||
primaryButton={{
|
||||
text: "Book a Table",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Private Dining",
|
||||
href: "#private-dining",
|
||||
}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/wine-glass-table-setting_74190-4678.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-book-line_23-2147978259.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/vegetable-salad-plate_140725-2460.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/vertical-image-luxurious-dining-room-with-ornate-chairs-as-seen-through-open-door_181624-24717.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-cooked-squashes-designed-meal-inside-plate-grey-surface_140725-89990.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/restaurant-hall-with-round-square-tables-some-chairs-plants_140725-8031.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="experience" data-section="experience">
|
||||
<SectionErrorBoundary name="experience">
|
||||
<MetricsMediaCards
|
||||
tag="Our Heritage"
|
||||
title="Experience Unrivalled Excellence"
|
||||
description="Over two decades of defining modern Indian cuisine within the sanctuary of a former Victorian library."
|
||||
metrics={[
|
||||
{
|
||||
value: "20+",
|
||||
title: "Years of Heritage",
|
||||
description: "Defining excellence in Westminster since 2001.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/interior-design-beautiful-castle_23-2151010426.jpg",
|
||||
},
|
||||
{
|
||||
value: "Michelin",
|
||||
title: "Standard",
|
||||
description: "Unwavering commitment to culinary perfection.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/tomato-soup-with-spicy-ingredient-top_114579-2430.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ExperienceSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutFeaturesSplit
|
||||
tag="The Sanctuary"
|
||||
title="Where History Meets Spices"
|
||||
description="Our restaurant is housed in the Grade II-listed Old Westminster Library, where rows of books and rich wood interiors create an atmosphere of scholarly grace."
|
||||
items={[
|
||||
{
|
||||
icon: Book,
|
||||
title: "Victorian Library Setting",
|
||||
description: "Dine surrounded by thousands of original books.",
|
||||
},
|
||||
{
|
||||
icon: Award,
|
||||
title: "Modern Indian Cuisine",
|
||||
description: "Authentic recipes with a modern, sophisticated twist.",
|
||||
},
|
||||
{
|
||||
icon: Star,
|
||||
title: "Award-Winning Service",
|
||||
description: "Impeccable standards that define fine dining.",
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/royal-dining-room-with-wooden-furniture-chandeliers_114579-2222.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="menu" data-section="menu">
|
||||
<SectionErrorBoundary name="menu">
|
||||
<FeaturesImageBento
|
||||
tag="Culinary Art"
|
||||
title="Signature Flavours"
|
||||
description="Explore our seasonal menu highlighting the richness of Indian spices crafted for the discerning palate."
|
||||
items={[
|
||||
{
|
||||
title: "Tandoori Lamb",
|
||||
description: "Hand-selected tender lamb cuts.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/tasty-rice-dish_23-2147680629.jpg",
|
||||
},
|
||||
{
|
||||
title: "Saffron Risotto",
|
||||
description: "A fusion of East and West.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/creative-assortment-delicious-food_23-2148949025.jpg",
|
||||
},
|
||||
{
|
||||
title: "Seared Scallops",
|
||||
description: "Delicate, fresh, and perfectly spiced.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/white-plate-with-originally-served-salad-stands-dark-wooden-t_1304-4651.jpg",
|
||||
},
|
||||
{
|
||||
title: "Wild Mushroom Curry",
|
||||
description: "Earthy, rich forest flavours.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-hands-preparing-delicious-meal_23-2149661346.jpg",
|
||||
},
|
||||
{
|
||||
title: "Spiced Duck",
|
||||
description: "Succulent roast served with seasonal accompaniments.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-cooked-mushrooms-with-dough-pasta-dark-grey-table-fry-food-dinner-meal_140725-79166.jpg",
|
||||
},
|
||||
{
|
||||
title: "Artisanal Breads",
|
||||
description: "Freshly baked in our traditional tandoor.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/seared-scallops-with-pea-puree_23-2151942414.jpg",
|
||||
},
|
||||
{
|
||||
title: "Chef’s Selection",
|
||||
description: "Experience our curated tasting menu.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/closeup-side-dish-with-vegetables-caviar-top-with-blurred-background_181624-2204.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MenuSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialColumnMarqueeCards
|
||||
tag="Guest Reviews"
|
||||
title="A Taste of Perfection"
|
||||
description="Don't just take our word for it."
|
||||
testimonials={[
|
||||
{
|
||||
name: "James L.",
|
||||
role: "Food Critic",
|
||||
quote: "The most atmospheric dining room in London.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/man-holding-hand-blond-woman-table_23-2148024532.jpg",
|
||||
},
|
||||
{
|
||||
name: "Elena M.",
|
||||
role: "Diner",
|
||||
quote: "A truly magical evening. The library setting is stunning.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/couple-having-date-together-luxurious-restaurant_23-2150517403.jpg",
|
||||
},
|
||||
{
|
||||
name: "Thomas H.",
|
||||
role: "Regular",
|
||||
quote: "Impeccable service, world-class flavours.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/couple-having-date-together-luxurious-restaurant_23-2150517424.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sarah P.",
|
||||
role: "Private Guest",
|
||||
quote: "Perfect for our celebration, the private rooms are exceptional.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/celebration-party-holidays-concept-portrait-lovely-charismatic-hispaic-guy-bday-glasses-ce_1258-109378.jpg",
|
||||
},
|
||||
{
|
||||
name: "David K.",
|
||||
role: "Foodie",
|
||||
quote: "The lamb is unmatched in the city. A Westminster landmark.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-couple-having-lunch-luxury-restaurant_23-2150598413.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="private-dining" data-section="private-dining">
|
||||
<SectionErrorBoundary name="private-dining">
|
||||
<FeaturesMediaCards
|
||||
tag="Exclusive Events"
|
||||
title="Private Dining in Elegance"
|
||||
description="Our beautifully appointed library rooms are available for exclusive private events, intimate dinners, and corporate gatherings."
|
||||
items={[
|
||||
{
|
||||
title: "Intimate Library Rooms",
|
||||
description: "Seating for 8-20 guests in complete privacy.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/autumn-warm-aesthetic-editorial_23-2151853268.jpg",
|
||||
},
|
||||
{
|
||||
title: "Custom Event Menus",
|
||||
description: "Personalized menus curated by our Executive Chef.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/white-plate-with-baked-vegetables-stands-barrel_1304-4658.jpg",
|
||||
},
|
||||
{
|
||||
title: "Corporate Hosting",
|
||||
description: "Professional setup for your prestigious gatherings.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cinematic-film-location-decor_23-2151918999.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<PrivateDiningSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Reservations"
|
||||
text="Call us at +44 20 7222 5555 or use our reservation system to secure your table in Westminster."
|
||||
primaryButton={{
|
||||
text: "Book Now (OpenTable)",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Enquire Private Dining",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</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 { Award, Book, Star } 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="The Sanctuary"
|
||||
title="Where History Meets Spices"
|
||||
description="Our restaurant is housed in the Grade II-listed Old Westminster Library, where rows of books and rich wood interiors create an atmosphere of scholarly grace."
|
||||
items={[
|
||||
{
|
||||
icon: Book,
|
||||
title: "Victorian Library Setting",
|
||||
description: "Dine surrounded by thousands of original books.",
|
||||
},
|
||||
{
|
||||
icon: Award,
|
||||
title: "Modern Indian Cuisine",
|
||||
description: "Authentic recipes with a modern, sophisticated twist.",
|
||||
},
|
||||
{
|
||||
icon: Star,
|
||||
title: "Award-Winning Service",
|
||||
description: "Impeccable standards that define fine dining.",
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/royal-dining-room-with-wooden-furniture-chandeliers_114579-2222.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="Reservations"
|
||||
text="Call us at +44 20 7222 5555 or use our reservation system to secure your table in Westminster."
|
||||
primaryButton={{
|
||||
text: "Book Now (OpenTable)",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Enquire Private Dining",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
34
src/pages/HomePage/sections/Experience.tsx
Normal file
34
src/pages/HomePage/sections/Experience.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 "experience" section.
|
||||
|
||||
import React from 'react';
|
||||
import MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ExperienceSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="experience" data-section="experience">
|
||||
<SectionErrorBoundary name="experience">
|
||||
<MetricsMediaCards
|
||||
tag="Our Heritage"
|
||||
title="Experience Unrivalled Excellence"
|
||||
description="Over two decades of defining modern Indian cuisine within the sanctuary of a former Victorian library."
|
||||
metrics={[
|
||||
{
|
||||
value: "20+",
|
||||
title: "Years of Heritage",
|
||||
description: "Defining excellence in Westminster since 2001.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/interior-design-beautiful-castle_23-2151010426.jpg",
|
||||
},
|
||||
{
|
||||
value: "Michelin",
|
||||
title: "Standard",
|
||||
description: "Unwavering commitment to culinary perfection.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/tomato-soup-with-spicy-ingredient-top_114579-2430.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</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="Westminster's Finest"
|
||||
title="A Legacy of Culinary Distinction"
|
||||
description="Located in the heart of Westminster, The Cinnamon Club offers an unparalleled fine dining experience in a historic Victorian library setting."
|
||||
primaryButton={{
|
||||
text: "Book a Table",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Private Dining",
|
||||
href: "#private-dining",
|
||||
}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/wine-glass-table-setting_74190-4678.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-book-line_23-2147978259.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/vegetable-salad-plate_140725-2460.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/vertical-image-luxurious-dining-room-with-ornate-chairs-as-seen-through-open-door_181624-24717.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-cooked-squashes-designed-meal-inside-plate-grey-surface_140725-89990.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/restaurant-hall-with-round-square-tables-some-chairs-plants_140725-8031.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
57
src/pages/HomePage/sections/Menu.tsx
Normal file
57
src/pages/HomePage/sections/Menu.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 "menu" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function MenuSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="menu" data-section="menu">
|
||||
<SectionErrorBoundary name="menu">
|
||||
<FeaturesImageBento
|
||||
tag="Culinary Art"
|
||||
title="Signature Flavours"
|
||||
description="Explore our seasonal menu highlighting the richness of Indian spices crafted for the discerning palate."
|
||||
items={[
|
||||
{
|
||||
title: "Tandoori Lamb",
|
||||
description: "Hand-selected tender lamb cuts.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/tasty-rice-dish_23-2147680629.jpg",
|
||||
},
|
||||
{
|
||||
title: "Saffron Risotto",
|
||||
description: "A fusion of East and West.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/creative-assortment-delicious-food_23-2148949025.jpg",
|
||||
},
|
||||
{
|
||||
title: "Seared Scallops",
|
||||
description: "Delicate, fresh, and perfectly spiced.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/white-plate-with-originally-served-salad-stands-dark-wooden-t_1304-4651.jpg",
|
||||
},
|
||||
{
|
||||
title: "Wild Mushroom Curry",
|
||||
description: "Earthy, rich forest flavours.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-hands-preparing-delicious-meal_23-2149661346.jpg",
|
||||
},
|
||||
{
|
||||
title: "Spiced Duck",
|
||||
description: "Succulent roast served with seasonal accompaniments.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-cooked-mushrooms-with-dough-pasta-dark-grey-table-fry-food-dinner-meal_140725-79166.jpg",
|
||||
},
|
||||
{
|
||||
title: "Artisanal Breads",
|
||||
description: "Freshly baked in our traditional tandoor.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/seared-scallops-with-pea-puree_23-2151942414.jpg",
|
||||
},
|
||||
{
|
||||
title: "Chef’s Selection",
|
||||
description: "Experience our curated tasting menu.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/closeup-side-dish-with-vegetables-caviar-top-with-blurred-background_181624-2204.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
37
src/pages/HomePage/sections/PrivateDining.tsx
Normal file
37
src/pages/HomePage/sections/PrivateDining.tsx
Normal file
@@ -0,0 +1,37 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "private-dining" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesMediaCards from '@/components/sections/features/FeaturesMediaCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function PrivateDiningSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="private-dining" data-section="private-dining">
|
||||
<SectionErrorBoundary name="private-dining">
|
||||
<FeaturesMediaCards
|
||||
tag="Exclusive Events"
|
||||
title="Private Dining in Elegance"
|
||||
description="Our beautifully appointed library rooms are available for exclusive private events, intimate dinners, and corporate gatherings."
|
||||
items={[
|
||||
{
|
||||
title: "Intimate Library Rooms",
|
||||
description: "Seating for 8-20 guests in complete privacy.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/autumn-warm-aesthetic-editorial_23-2151853268.jpg",
|
||||
},
|
||||
{
|
||||
title: "Custom Event Menus",
|
||||
description: "Personalized menus curated by our Executive Chef.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/white-plate-with-baked-vegetables-stands-barrel_1304-4658.jpg",
|
||||
},
|
||||
{
|
||||
title: "Corporate Hosting",
|
||||
description: "Professional setup for your prestigious gatherings.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cinematic-film-location-decor_23-2151918999.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 TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialColumnMarqueeCards
|
||||
tag="Guest Reviews"
|
||||
title="A Taste of Perfection"
|
||||
description="Don't just take our word for it."
|
||||
testimonials={[
|
||||
{
|
||||
name: "James L.",
|
||||
role: "Food Critic",
|
||||
quote: "The most atmospheric dining room in London.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/man-holding-hand-blond-woman-table_23-2148024532.jpg",
|
||||
},
|
||||
{
|
||||
name: "Elena M.",
|
||||
role: "Diner",
|
||||
quote: "A truly magical evening. The library setting is stunning.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/couple-having-date-together-luxurious-restaurant_23-2150517403.jpg",
|
||||
},
|
||||
{
|
||||
name: "Thomas H.",
|
||||
role: "Regular",
|
||||
quote: "Impeccable service, world-class flavours.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/couple-having-date-together-luxurious-restaurant_23-2150517424.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sarah P.",
|
||||
role: "Private Guest",
|
||||
quote: "Perfect for our celebration, the private rooms are exceptional.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/celebration-party-holidays-concept-portrait-lovely-charismatic-hispaic-guy-bday-glasses-ce_1258-109378.jpg",
|
||||
},
|
||||
{
|
||||
name: "David K.",
|
||||
role: "Foodie",
|
||||
quote: "The lamb is unmatched in the city. A Westminster landmark.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-couple-having-lunch-luxury-restaurant_23-2150598413.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user