Merge version_2_1781999026883 into main #1
@@ -4,6 +4,7 @@ import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
import SiteBackgroundSlot from "@/components/ui/SiteBackgroundSlot";
|
||||
import { Outlet } from 'react-router-dom';
|
||||
import { StyleProvider } from "@/components/ui/StyleProvider";
|
||||
import { Phone, MessageCircle } from "lucide-react";
|
||||
|
||||
export default function Layout() {
|
||||
const navItems = [
|
||||
@@ -52,10 +53,48 @@ export default function Layout() {
|
||||
<main className="flex-grow">
|
||||
<Outlet />
|
||||
</main>
|
||||
|
||||
{/* Floating Action Buttons */}
|
||||
<div className="fixed bottom-6 right-6 z-[9999] flex flex-col gap-3">
|
||||
<a
|
||||
href="https://wa.me/96265530019"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="flex items-center justify-center w-14 h-14 rounded-full bg-[#25D366] text-white shadow-lg hover:scale-110 transition-transform"
|
||||
aria-label="WhatsApp Now"
|
||||
>
|
||||
<MessageCircle size={28} />
|
||||
</a>
|
||||
<a
|
||||
href="tel:065530019"
|
||||
className="flex items-center justify-center w-14 h-14 rounded-full bg-primary-cta text-primary-cta-text shadow-lg hover:scale-110 transition-transform"
|
||||
aria-label="Call Now"
|
||||
>
|
||||
<Phone size={28} />
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<SectionErrorBoundary name="footer">
|
||||
<FooterSimple
|
||||
brand="Zhoor Al Shafa"
|
||||
columns={[
|
||||
{
|
||||
title: "Contact Us",
|
||||
items: [
|
||||
{
|
||||
label: "Phone: 06 553 0019",
|
||||
href: "tel:065530019",
|
||||
},
|
||||
{
|
||||
label: "WhatsApp: 06 553 0019",
|
||||
href: "https://wa.me/96265530019",
|
||||
},
|
||||
{
|
||||
label: "Support Hotline",
|
||||
href: "tel:065530019",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Branches",
|
||||
items: [
|
||||
@@ -87,19 +126,6 @@ export default function Layout() {
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Legal",
|
||||
items: [
|
||||
{
|
||||
label: "Privacy Policy",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
label: "Terms & Conditions",
|
||||
href: "#",
|
||||
},
|
||||
],
|
||||
},
|
||||
]}
|
||||
copyright="© 2024 Zhoor Al Shafa Restaurant. All Rights Reserved."
|
||||
links={[
|
||||
|
||||
@@ -19,7 +19,13 @@ const NavbarInline = ({ logo, navItems, ctaButton }: NavbarInlineProps) => {
|
||||
return (
|
||||
<nav data-section="navbar" className="fixed z-1000 top-5 left-1/2 -translate-x-1/2 w-content-width">
|
||||
<div className="flex items-center justify-between p-2 xl:p-3 2xl:p-4 rounded backdrop-blur-sm card">
|
||||
<a href="/" className="pl-2 text-xl font-medium text-foreground">{logo}</a>
|
||||
<div className="flex items-center gap-4">
|
||||
<a href="/" className="pl-2 text-xl font-medium text-foreground">{logo}</a>
|
||||
<a href="tel:065530019" className="hidden md:flex items-center gap-2 text-sm text-accent hover:text-foreground transition-colors">
|
||||
<span className="w-2 h-2 rounded-full bg-green-500 animate-pulse"></span>
|
||||
06 553 0019
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div className="hidden md:flex absolute left-1/2 -translate-x-1/2 items-center gap-6">
|
||||
{navItems.map((item) => (
|
||||
|
||||
@@ -1,284 +1,36 @@
|
||||
import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqSimple from '@/components/sections/faq/FaqSimple';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import HeroBrand from '@/components/sections/hero/HeroBrand';
|
||||
import MetricsSimpleCards from '@/components/sections/metrics/MetricsSimpleCards';
|
||||
import PricingHighlightedCards from '@/components/sections/pricing/PricingHighlightedCards';
|
||||
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
|
||||
import { Award, MapPin, Users } 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 MenuSection from './HomePage/sections/Menu';
|
||||
import PricingSection from './HomePage/sections/Pricing';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import MetricsSection from './HomePage/sections/Metrics';
|
||||
import FaqSection from './HomePage/sections/Faq';
|
||||
import ContactSection from './HomePage/sections/Contact';
|
||||
|
||||
export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBrand
|
||||
brand="Zhoor Al Shafa"
|
||||
description="Authentic Jordanian Cuisine, elevated to an art form. Experience the richness of tradition and the precision of modern fine dining in every bite."
|
||||
primaryButton={{
|
||||
text: "Reserve Now",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "View Menu",
|
||||
href: "#menu",
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/gold-cutlery-set-marble_1220-4756.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutFeaturesSplit
|
||||
tag="Our Heritage"
|
||||
title="A Legacy of Jordanian Culinary Excellence"
|
||||
description="With branches in Amman and Manama, Zhoor Al Shafa combines century-old recipes with contemporary luxury, serving the finest lamb, grill, and traditional Mansaf to connoisseurs."
|
||||
items={[
|
||||
{
|
||||
icon: Award,
|
||||
title: "Traditional Mastery",
|
||||
description: "Generations-old recipes perfected.",
|
||||
},
|
||||
{
|
||||
icon: MapPin,
|
||||
title: "Prime Locations",
|
||||
description: "Elegant spaces in Amman & Manama.",
|
||||
},
|
||||
{
|
||||
icon: Users,
|
||||
title: "Elite Catering",
|
||||
description: "Services for weddings & corporate events.",
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/concept-table-setting-christmas-holidays-beautiful-stylish-decorated-table-is-waiting-guests-holiday_132075-14171.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="menu" data-section="menu">
|
||||
<SectionErrorBoundary name="menu">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Signature Dishes"
|
||||
title="Explore Our Culinary Delights"
|
||||
description="From our open-fire grills to traditional slow-cooked masterpieces, discover the signature flavours of our house."
|
||||
items={[
|
||||
{
|
||||
title: "Mixed Grill Platter",
|
||||
description: "1000g of premium quality char-grilled meats.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/closeup-thai-street-food_53876-18298.jpg",
|
||||
},
|
||||
{
|
||||
title: "Stuffed Grape Leaves",
|
||||
description: "Hand-rolled with our signature aromatic blend.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-cup-tea-with-lemon-white-desk_140725-79721.jpg",
|
||||
},
|
||||
{
|
||||
title: "Lamb Mansaf",
|
||||
description: "The national pride of Jordan, slow-cooked to perfection.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-view-rice-dish_23-2147680627.jpg",
|
||||
},
|
||||
{
|
||||
title: "Fresh Fruit Juices",
|
||||
description: "Pure, pressed citrus perfection, freshly squeezed.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-fresh-natural-orange-with-lemon-juice_23-2148293802.jpg",
|
||||
},
|
||||
{
|
||||
title: "Traditional Kibbeh",
|
||||
description: "Crispy shells stuffed with spiced meat.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/fried-bread-filled-with-minced-meat-tomato_140725-126.jpg",
|
||||
},
|
||||
{
|
||||
title: "Signature Salads",
|
||||
description: "Fresh, crisp ingredients with our secret dressings.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/duck-breast_1203-3018.jpg",
|
||||
},
|
||||
{
|
||||
title: "Whole Grilled Chicken",
|
||||
description: "Turkish style, moist and flavorful skin.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/fried-tasty-meat-fry-pan-with-onion-wooden-table_23-2148206953.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MenuSection />
|
||||
|
||||
<div id="pricing" data-section="pricing">
|
||||
<SectionErrorBoundary name="pricing">
|
||||
<PricingHighlightedCards
|
||||
tag="Catering Packages"
|
||||
title="Exceptional Events Catering"
|
||||
description="Host your celebrations with our legendary traditional dishes. Customized catering solutions for every occasion."
|
||||
plans={[
|
||||
{
|
||||
tag: "Basic",
|
||||
price: "8 JOD",
|
||||
description: "For intimate family dinners.",
|
||||
features: [
|
||||
"Traditional Sides",
|
||||
"Fresh Salad",
|
||||
"Warm Bread",
|
||||
],
|
||||
primaryButton: {
|
||||
text: "Inquire",
|
||||
href: "#contact",
|
||||
},
|
||||
},
|
||||
{
|
||||
tag: "Event",
|
||||
price: "12 JOD",
|
||||
description: "Ideal for larger gatherings.",
|
||||
features: [
|
||||
"Mansaf Meal",
|
||||
"Appetizers",
|
||||
"Soft Drinks",
|
||||
"Fast Service",
|
||||
],
|
||||
highlight: "Most Popular",
|
||||
primaryButton: {
|
||||
text: "Reserve",
|
||||
href: "#contact",
|
||||
},
|
||||
},
|
||||
{
|
||||
tag: "VIP",
|
||||
price: "22 JOD",
|
||||
description: "Premium catering experience.",
|
||||
features: [
|
||||
"Full Mansaf Tray",
|
||||
"Selection of Grills",
|
||||
"VIP Service",
|
||||
"Custom Menu",
|
||||
],
|
||||
primaryButton: {
|
||||
text: "Contact Us",
|
||||
href: "#contact",
|
||||
},
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<PricingSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialColumnMarqueeCards
|
||||
tag="Our Guests"
|
||||
title="Memories at Our Table"
|
||||
description="Stories from our valued guests who have made us part of their special moments."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Ahmed Al-Farsi",
|
||||
role: "Food Critic",
|
||||
quote: "The Mansaf is simply the best in the region. Authentic taste in a luxury setting.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-happy-cute-africanamerican-girl-smiling-pleased-showing-thumbsup-approval-lik_1258-149049.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sarah Mansour",
|
||||
role: "Local Resident",
|
||||
quote: "Zhoor Al Shafa has become our go-to for all family gatherings. The service is impeccable.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-couple-having-lunch-luxury-restaurant_23-2150598413.jpg",
|
||||
},
|
||||
{
|
||||
name: "Khalid Mahmoud",
|
||||
role: "Regular Guest",
|
||||
quote: "I have visited many places, but the quality of the grills here is unmatched.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/handsome-groom-feeding-his-bride-with-croissant-cafe_176420-2272.jpg",
|
||||
},
|
||||
{
|
||||
name: "Layla Omar",
|
||||
role: "Event Planner",
|
||||
quote: "Collaborating with them for our weddings is always seamless. Highly professional catering.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/people-cheering-with-wine-glasses-luxurious-restaurant_23-2150517447.jpg",
|
||||
},
|
||||
{
|
||||
name: "Omar Al-Hussein",
|
||||
role: "Frequent Diner",
|
||||
quote: "A truly premium fine-dining experience that respects traditional Jordanian roots.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/group-young-people-gathering-dinner_23-2148454163.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsSimpleCards
|
||||
tag="Our Growth"
|
||||
title="Experience the Numbers"
|
||||
description="Our journey as a leading restaurant brand in Amman and Manama."
|
||||
metrics={[
|
||||
{
|
||||
value: "3",
|
||||
description: "International Branches",
|
||||
},
|
||||
{
|
||||
value: "20+",
|
||||
description: "Years of Heritage",
|
||||
},
|
||||
{
|
||||
value: "100k+",
|
||||
description: "Satisfied Guests Served",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MetricsSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSimple
|
||||
tag="Help Center"
|
||||
title="Frequently Asked Questions"
|
||||
description="Answers to common questions about our catering, reservations, and menus."
|
||||
items={[
|
||||
{
|
||||
question: "Do you offer catering for large events?",
|
||||
answer: "Yes, we specialize in event catering including weddings, corporate parties, and large family gatherings.",
|
||||
},
|
||||
{
|
||||
question: "Can I track my online order?",
|
||||
answer: "Yes, our app features real-time order tracking for all deliveries.",
|
||||
},
|
||||
{
|
||||
question: "Do you have options for large grill orders?",
|
||||
answer: "Yes, we offer grill orders by weight (kilograms) perfect for family gatherings.",
|
||||
},
|
||||
{
|
||||
question: "Where are your branches located?",
|
||||
answer: "We have branches in Tlaa Al Ali (Amman), Marj Al Hammam (Amman), and Al Avenues (Manama).",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Contact Us"
|
||||
text="Ready to book your table or catering service? Contact us now via WhatsApp or visit us at one of our locations."
|
||||
primaryButton={{
|
||||
text: "WhatsApp Us",
|
||||
href: "https://wa.me/message/yourid",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Reserve Table",
|
||||
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, MapPin, Users } 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 Heritage"
|
||||
title="A Legacy of Jordanian Culinary Excellence"
|
||||
description="With branches in Amman and Manama, Zhoor Al Shafa combines century-old recipes with contemporary luxury, serving the finest lamb, grill, and traditional Mansaf to connoisseurs."
|
||||
items={[
|
||||
{
|
||||
icon: Award,
|
||||
title: "Traditional Mastery",
|
||||
description: "Generations-old recipes perfected.",
|
||||
},
|
||||
{
|
||||
icon: MapPin,
|
||||
title: "Prime Locations",
|
||||
description: "Elegant spaces in Amman & Manama.",
|
||||
},
|
||||
{
|
||||
icon: Users,
|
||||
title: "Elite Catering",
|
||||
description: "Services for weddings & corporate events.",
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/concept-table-setting-christmas-holidays-beautiful-stylish-decorated-table-is-waiting-guests-holiday_132075-14171.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="Contact Us"
|
||||
text="Ready to book your table or catering service? Contact us now via WhatsApp or visit us at one of our locations."
|
||||
primaryButton={{
|
||||
text: "WhatsApp Us",
|
||||
href: "https://wa.me/message/yourid",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Reserve Table",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
38
src/pages/HomePage/sections/Faq.tsx
Normal file
38
src/pages/HomePage/sections/Faq.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 "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="Help Center"
|
||||
title="Frequently Asked Questions"
|
||||
description="Answers to common questions about our catering, reservations, and menus."
|
||||
items={[
|
||||
{
|
||||
question: "Do you offer catering for large events?",
|
||||
answer: "Yes, we specialize in event catering including weddings, corporate parties, and large family gatherings.",
|
||||
},
|
||||
{
|
||||
question: "Can I track my online order?",
|
||||
answer: "Yes, our app features real-time order tracking for all deliveries.",
|
||||
},
|
||||
{
|
||||
question: "Do you have options for large grill orders?",
|
||||
answer: "Yes, we offer grill orders by weight (kilograms) perfect for family gatherings.",
|
||||
},
|
||||
{
|
||||
question: "Where are your branches located?",
|
||||
answer: "We have branches in Tlaa Al Ali (Amman), Marj Al Hammam (Amman), and Al Avenues (Manama).",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
22
src/pages/HomePage/sections/Hero.tsx
Normal file
22
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,22 @@
|
||||
// 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 HeroBrand from '@/components/sections/hero/HeroBrand';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBrand
|
||||
brand="Zhoor Al Shafa"
|
||||
description="Authentic Jordanian Cuisine, elevated to an art form. Experience the richness of tradition and the precision of modern fine dining in every bite."
|
||||
primaryButton={{"text":"Call 06 553 0019","href":"tel:065530019"}}
|
||||
secondaryButton={{"text":"View Menu","href":"#menu"}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/gold-cutlery-set-marble_1220-4756.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
64
src/pages/HomePage/sections/Menu.tsx
Normal file
64
src/pages/HomePage/sections/Menu.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 "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="Signature Dishes"
|
||||
title="Explore Our Culinary Delights"
|
||||
description="From our open-fire grills to traditional slow-cooked masterpieces, discover the signature flavours of our house."
|
||||
items={[
|
||||
{
|
||||
title: "Mixed Grill Platter",
|
||||
description: "1000g of premium quality char-grilled meats.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/closeup-thai-street-food_53876-18298.jpg",
|
||||
},
|
||||
{
|
||||
title: "Stuffed Grape Leaves",
|
||||
description: "Hand-rolled with our signature aromatic blend.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-cup-tea-with-lemon-white-desk_140725-79721.jpg",
|
||||
},
|
||||
{
|
||||
title: "Lamb Mansaf",
|
||||
description: "The national pride of Jordan, slow-cooked to perfection.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-view-rice-dish_23-2147680627.jpg",
|
||||
},
|
||||
{
|
||||
title: "Fresh Fruit Juices",
|
||||
description: "Pure, pressed citrus perfection, freshly squeezed.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-fresh-natural-orange-with-lemon-juice_23-2148293802.jpg",
|
||||
},
|
||||
{
|
||||
title: "Traditional Kibbeh",
|
||||
description: "Crispy shells stuffed with spiced meat.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/fried-bread-filled-with-minced-meat-tomato_140725-126.jpg",
|
||||
},
|
||||
{
|
||||
title: "Signature Salads",
|
||||
description: "Fresh, crisp ingredients with our secret dressings.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/duck-breast_1203-3018.jpg",
|
||||
},
|
||||
{
|
||||
title: "Whole Grilled Chicken",
|
||||
description: "Turkish style, moist and flavorful skin.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/fried-tasty-meat-fry-pan-with-onion-wooden-table_23-2148206953.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
34
src/pages/HomePage/sections/Metrics.tsx
Normal file
34
src/pages/HomePage/sections/Metrics.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 "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="Our Growth"
|
||||
title="Experience the Numbers"
|
||||
description="Our journey as a leading restaurant brand in Amman and Manama."
|
||||
metrics={[
|
||||
{
|
||||
value: "3",
|
||||
description: "International Branches",
|
||||
},
|
||||
{
|
||||
value: "20+",
|
||||
description: "Years of Heritage",
|
||||
},
|
||||
{
|
||||
value: "100k+",
|
||||
description: "Satisfied Guests Served",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
67
src/pages/HomePage/sections/Pricing.tsx
Normal file
67
src/pages/HomePage/sections/Pricing.tsx
Normal file
@@ -0,0 +1,67 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "pricing" section.
|
||||
|
||||
import React from 'react';
|
||||
import PricingHighlightedCards from '@/components/sections/pricing/PricingHighlightedCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function PricingSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="pricing" data-section="pricing">
|
||||
<SectionErrorBoundary name="pricing">
|
||||
<PricingHighlightedCards
|
||||
tag="Catering Packages"
|
||||
title="Exceptional Events Catering"
|
||||
description="Host your celebrations with our legendary traditional dishes. Customized catering solutions for every occasion."
|
||||
plans={[
|
||||
{
|
||||
tag: "Basic",
|
||||
price: "8 JOD",
|
||||
description: "For intimate family dinners.",
|
||||
features: [
|
||||
"Traditional Sides",
|
||||
"Fresh Salad",
|
||||
"Warm Bread",
|
||||
],
|
||||
primaryButton: {
|
||||
text: "Inquire",
|
||||
href: "#contact",
|
||||
},
|
||||
},
|
||||
{
|
||||
tag: "Event",
|
||||
price: "12 JOD",
|
||||
description: "Ideal for larger gatherings.",
|
||||
features: [
|
||||
"Mansaf Meal",
|
||||
"Appetizers",
|
||||
"Soft Drinks",
|
||||
"Fast Service",
|
||||
],
|
||||
highlight: "Most Popular",
|
||||
primaryButton: {
|
||||
text: "Reserve",
|
||||
href: "#contact",
|
||||
},
|
||||
},
|
||||
{
|
||||
tag: "VIP",
|
||||
price: "22 JOD",
|
||||
description: "Premium catering experience.",
|
||||
features: [
|
||||
"Full Mansaf Tray",
|
||||
"Selection of Grills",
|
||||
"VIP Service",
|
||||
"Custom Menu",
|
||||
],
|
||||
primaryButton: {
|
||||
text: "Contact Us",
|
||||
href: "#contact",
|
||||
},
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</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="Our Guests"
|
||||
title="Memories at Our Table"
|
||||
description="Stories from our valued guests who have made us part of their special moments."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Ahmed Al-Farsi",
|
||||
role: "Food Critic",
|
||||
quote: "The Mansaf is simply the best in the region. Authentic taste in a luxury setting.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-happy-cute-africanamerican-girl-smiling-pleased-showing-thumbsup-approval-lik_1258-149049.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sarah Mansour",
|
||||
role: "Local Resident",
|
||||
quote: "Zhoor Al Shafa has become our go-to for all family gatherings. The service is impeccable.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-couple-having-lunch-luxury-restaurant_23-2150598413.jpg",
|
||||
},
|
||||
{
|
||||
name: "Khalid Mahmoud",
|
||||
role: "Regular Guest",
|
||||
quote: "I have visited many places, but the quality of the grills here is unmatched.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/handsome-groom-feeding-his-bride-with-croissant-cafe_176420-2272.jpg",
|
||||
},
|
||||
{
|
||||
name: "Layla Omar",
|
||||
role: "Event Planner",
|
||||
quote: "Collaborating with them for our weddings is always seamless. Highly professional catering.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/people-cheering-with-wine-glasses-luxurious-restaurant_23-2150517447.jpg",
|
||||
},
|
||||
{
|
||||
name: "Omar Al-Hussein",
|
||||
role: "Frequent Diner",
|
||||
quote: "A truly premium fine-dining experience that respects traditional Jordanian roots.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/group-young-people-gathering-dinner_23-2148454163.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user