Merge version_2_1782057124468 into main #2
@@ -42,7 +42,7 @@ export default function Layout() {
|
||||
<SiteBackgroundSlot />
|
||||
<SectionErrorBoundary name="navbar">
|
||||
<NavbarInline
|
||||
logo="Yōkoso"
|
||||
logo="Wok Dynasty"
|
||||
ctaButton={{
|
||||
text: "Order Online",
|
||||
href: "#menu",
|
||||
@@ -54,7 +54,7 @@ export default function Layout() {
|
||||
</main>
|
||||
<SectionErrorBoundary name="footer">
|
||||
<FooterSimpleMedia
|
||||
brand="Yōkoso"
|
||||
brand="Wok Dynasty"
|
||||
columns={[
|
||||
{
|
||||
title: "Explore",
|
||||
@@ -96,7 +96,7 @@ export default function Layout() {
|
||||
],
|
||||
},
|
||||
]}
|
||||
copyright="© 2024 Yōkoso Restaurant. All rights reserved."
|
||||
copyright="© 2024 Wok Dynasty Restaurant. All rights reserved."
|
||||
links={[
|
||||
{
|
||||
label: "Privacy Policy",
|
||||
|
||||
@@ -5,15 +5,15 @@
|
||||
|
||||
:root {
|
||||
/* @colorThemes/lightTheme/grayNavyBlue */
|
||||
--background: #f5faff;
|
||||
--card: #ffffff;
|
||||
--foreground: #001122;
|
||||
--primary-cta: #15479c;
|
||||
--primary-cta-text: #f5faff;
|
||||
--secondary-cta: #ffffff;
|
||||
--secondary-cta-text: #001122;
|
||||
--accent: #a8cce8;
|
||||
--background-accent: #7ba3cf;
|
||||
--background: #121212;
|
||||
--card: #1a1a1a;
|
||||
--foreground: #f5f5f5;
|
||||
--primary-cta: #d4af37;
|
||||
--primary-cta-text: #121212;
|
||||
--secondary-cta: #2a2a2a;
|
||||
--secondary-cta-text: #f5f5f5;
|
||||
--accent: #8c8c8c;
|
||||
--background-accent: #2a2a2a;
|
||||
|
||||
/* @layout/border-radius/rounded */
|
||||
--radius: 1rem;
|
||||
|
||||
@@ -1,245 +1,33 @@
|
||||
import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqTwoColumn from '@/components/sections/faq/FaqTwoColumn';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import HeroBillboardCarousel from '@/components/sections/hero/HeroBillboardCarousel';
|
||||
import MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
|
||||
import TestimonialQuoteCards from '@/components/sections/testimonial/TestimonialQuoteCards';
|
||||
import { Flame, Sparkles, 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 MenuSection from './HomePage/sections/Menu';
|
||||
import MetricsSection from './HomePage/sections/Metrics';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
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">
|
||||
<HeroBillboardCarousel
|
||||
tag="Sylhet's Finest Pan-Asian Dining"
|
||||
title="Welcome to Yōkoso"
|
||||
description="Where culinary artistry meets serene luxury. Experience authentic Asian flavors re-imagined."
|
||||
primaryButton={{
|
||||
text: "Reserve Now",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "View Menu",
|
||||
href: "#menu",
|
||||
}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-bowl-with-food-table_23-2148847384.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/steaming-bowl-pork-ramen-with-chopsticks-generative-ai_188544-40730.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-arrangement-spanish-food_23-2149157434.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/man-ignoring-woman-while-talking-phone_107420-65720.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-red-cabbage-table_23-2148678893.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-delicious-asian-food_23-2149091586.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutFeaturesSplit
|
||||
tag="Our Philosophy"
|
||||
title="Crafting Excellence"
|
||||
description="We blend traditional techniques with contemporary flair to create unforgettable dining experiences."
|
||||
items={[
|
||||
{
|
||||
icon: Utensils,
|
||||
title: "Expert Chefs",
|
||||
description: "Masters of Asian gastronomy.",
|
||||
},
|
||||
{
|
||||
icon: Flame,
|
||||
title: "Farm-Fresh",
|
||||
description: "Sourced locally for purity.",
|
||||
},
|
||||
{
|
||||
icon: Sparkles,
|
||||
title: "Bespoke Service",
|
||||
description: "Tailored to your pleasure.",
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/man-preparing-sushi-order-takeaway_23-2149050373.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="menu" data-section="menu">
|
||||
<SectionErrorBoundary name="menu">
|
||||
<FeaturesImageBento
|
||||
tag="Signature Dishes"
|
||||
title="The Yōkoso Collection"
|
||||
description="A curated gallery of our most celebrated dishes."
|
||||
items={[
|
||||
{
|
||||
title: "Salmon Sushi",
|
||||
description: "Premium fresh cuts, ৳650",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/sushi-salmon-tuna_1339-2819.jpg",
|
||||
},
|
||||
{
|
||||
title: "Volcano Roll",
|
||||
description: "Spicy, savory, and bold, ৳850",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/sushi-rolls-sesame-seeds_140725-4223.jpg",
|
||||
},
|
||||
{
|
||||
title: "Chicken Ramen",
|
||||
description: "Slow-cooked broth goodness, ৳550",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/delicious-ramen-noodle-soup-with-mushrooms-bok-choy-dark-stone-background_84443-85797.jpg",
|
||||
},
|
||||
{
|
||||
title: "Pad Thai",
|
||||
description: "Traditional wok-fired flavors, ৳650",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-shrimp-noodle-soup-with-egg_84443-85798.jpg",
|
||||
},
|
||||
{
|
||||
title: "Singapore Chili Crab",
|
||||
description: "Our signature masterpiece, ৳1350",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-tasty-sushi-rolls-with-copy-space_23-2148517939.jpg",
|
||||
},
|
||||
{
|
||||
title: "Chicken Nanban",
|
||||
description: "Crispy and juicy delight, ৳680",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-delicious-ramen-bowl_23-2148678742.jpg",
|
||||
},
|
||||
{
|
||||
title: "Signature Bento",
|
||||
description: "The ultimate curated experience, ৳1190",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-salmon-sashimi-with-sliced-cucumbers-ginger-wasabi-sauce-ice-cubes-bowl-wood-table_141793-11668.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MenuSection />
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsMediaCards
|
||||
tag="Our Impact"
|
||||
title="Dining by the Numbers"
|
||||
description="Experience excellence through every metric."
|
||||
metrics={[
|
||||
{
|
||||
value: "10k+",
|
||||
title: "Happy Guests",
|
||||
description: "Sylhet's favorite destination.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/internationals-people-standing-cafe-drinking-cocktails_1157-32440.jpg",
|
||||
},
|
||||
{
|
||||
value: "50+",
|
||||
title: "Signature Dishes",
|
||||
description: "Crafted with passion.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-composition-noodles-bowl_23-2148803815.jpg?_wi=1",
|
||||
},
|
||||
{
|
||||
value: "5",
|
||||
title: "Star Rating",
|
||||
description: "Consistently praised.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/sushi-roll_74190-2834.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MetricsSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialQuoteCards
|
||||
tag="Guest Voices"
|
||||
title="The Yōkoso Promise"
|
||||
description="Hear what our esteemed guests have to say."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Sarah A.",
|
||||
role: "Food Critic",
|
||||
quote: "Simply the best Asian cuisine in Bangladesh.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/seductive-lady-pink-silk-robe-holds-champagne-flute_8353-90.jpg",
|
||||
},
|
||||
{
|
||||
name: "Ahmed K.",
|
||||
role: "Entrepreneur",
|
||||
quote: "An unparalleled premium experience.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/couple-restaurant_23-2148006698.jpg",
|
||||
},
|
||||
{
|
||||
name: "Lina R.",
|
||||
role: "Travel Blogger",
|
||||
quote: "Exquisite details and bold flavors.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-woman-cutting-food_23-2150124822.jpg",
|
||||
},
|
||||
{
|
||||
name: "David L.",
|
||||
role: "Local Gourmet",
|
||||
quote: "The sushi is beyond Michelin quality.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/happy-couple-enjoying-cafe-while-talking-waiter_637285-579.jpg",
|
||||
},
|
||||
{
|
||||
name: "Nadia S.",
|
||||
role: "Influencer",
|
||||
quote: "Perfect setting for any celebration.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/new-year-spend-with-friends-celebrating_23-2149196973.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqTwoColumn
|
||||
tag="Common Queries"
|
||||
title="Everything You Need to Know"
|
||||
description="Quick answers to help you plan your visit."
|
||||
items={[
|
||||
{
|
||||
question: "Do I need a reservation?",
|
||||
answer: "Highly recommended, especially on weekends.",
|
||||
},
|
||||
{
|
||||
question: "Are private events available?",
|
||||
answer: "We offer bespoke private dining packages.",
|
||||
},
|
||||
{
|
||||
question: "Is home delivery available?",
|
||||
answer: "Yes, through our premium delivery partners.",
|
||||
},
|
||||
{
|
||||
question: "Do you offer vegan options?",
|
||||
answer: "We have a dedicated plant-based menu.",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Reserve Your Table"
|
||||
text="Experience perfection. Book your table at Yōkoso today."
|
||||
primaryButton={{
|
||||
text: "Book Table",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Get Directions",
|
||||
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 { Flame, Sparkles, 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 Philosophy"
|
||||
title="Crafting Excellence"
|
||||
description="We blend traditional techniques with contemporary flair to create unforgettable dining experiences."
|
||||
items={[
|
||||
{
|
||||
icon: Utensils,
|
||||
title: "Expert Chefs",
|
||||
description: "Masters of Asian gastronomy.",
|
||||
},
|
||||
{
|
||||
icon: Flame,
|
||||
title: "Farm-Fresh",
|
||||
description: "Sourced locally for purity.",
|
||||
},
|
||||
{
|
||||
icon: Sparkles,
|
||||
title: "Bespoke Service",
|
||||
description: "Tailored to your pleasure.",
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/man-preparing-sushi-order-takeaway_23-2149050373.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="Reserve Your Table"
|
||||
text="Experience perfection. Book your table at Yōkoso today."
|
||||
primaryButton={{
|
||||
text: "Book Table",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Get Directions",
|
||||
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 FaqTwoColumn from '@/components/sections/faq/FaqTwoColumn';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FaqSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqTwoColumn
|
||||
tag="Common Queries"
|
||||
title="Everything You Need to Know"
|
||||
description="Quick answers to help you plan your visit."
|
||||
items={[
|
||||
{
|
||||
question: "Do I need a reservation?",
|
||||
answer: "Highly recommended, especially on weekends.",
|
||||
},
|
||||
{
|
||||
question: "Are private events available?",
|
||||
answer: "We offer bespoke private dining packages.",
|
||||
},
|
||||
{
|
||||
question: "Is home delivery available?",
|
||||
answer: "Yes, through our premium delivery partners.",
|
||||
},
|
||||
{
|
||||
question: "Do you offer vegan options?",
|
||||
answer: "We have a dedicated plant-based menu.",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
90
src/pages/HomePage/sections/Hero.tsx
Normal file
90
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,90 @@
|
||||
/* eslint-disable */
|
||||
// @ts-nocheck — generated by catalog-eject; runtime-correct but TS strict-mode false-positives on inlined catalog body
|
||||
import Button from "@/components/ui/Button";
|
||||
import HeroBackgroundSlot from "@/components/ui/HeroBackgroundSlot";
|
||||
import TextAnimation from "@/components/ui/TextAnimation";
|
||||
import ImageOrVideo from "@/components/ui/ImageOrVideo";
|
||||
import AvatarGroup from "@/components/ui/AvatarGroup";
|
||||
|
||||
const primaryButton = {
|
||||
href: "#menu",
|
||||
text: "View Menu"
|
||||
};
|
||||
const secondaryButton = {
|
||||
text: "Reserve Table",
|
||||
href: "#contact"
|
||||
};
|
||||
|
||||
type HeroOverlayProps = {
|
||||
tag: string;
|
||||
title: string;
|
||||
description: string;
|
||||
primaryButton: { text: string; href: string };
|
||||
secondaryButton: { text: string; href: string };
|
||||
avatarsSrc?: string[];
|
||||
avatarsLabel?: string;
|
||||
} & ({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never });
|
||||
|
||||
const HeroInline = () => {
|
||||
return (
|
||||
<section
|
||||
aria-label="Hero section"
|
||||
className="relative w-full h-svh overflow-hidden flex flex-col justify-end mb-20"
|
||||
>
|
||||
<HeroBackgroundSlot />
|
||||
<ImageOrVideo
|
||||
imageSrc={"http://img.b2bpic.net/free-photo/high-angle-bowl-with-food-table_23-2148847384.jpg"}
|
||||
className="absolute inset-0 w-full h-full object-cover rounded-none"
|
||||
/>
|
||||
|
||||
<div
|
||||
className="absolute z-10 w-[150vw] h-[150vw] left-0 bottom-0 -translate-x-1/2 translate-y-1/2 backdrop-blur mask-[radial-gradient(circle,black_20%,transparent_70%)]"
|
||||
aria-hidden="true"
|
||||
/>
|
||||
|
||||
<div className="relative z-10 w-content-width mx-auto pb-10 md:pb-25">
|
||||
<div className="flex flex-col gap-3 w-full md:w-6/10 lg:w-1/2 xl:w-45/100 2xl:w-4/10">
|
||||
<div className="w-fit px-3 py-1 mb-1 text-sm card rounded">
|
||||
<p>{"Taste of Modern Asia"}</p>
|
||||
</div>
|
||||
|
||||
<TextAnimation
|
||||
text={"Wok Dynasty"}
|
||||
variant="fade-blur"
|
||||
gradientText={true}
|
||||
tag="h1"
|
||||
className="text-7xl 2xl:text-8xl leading-[1.15] font-semibold text-white text-balance"
|
||||
/>
|
||||
|
||||
<TextAnimation
|
||||
text={"premium dining experience"}
|
||||
variant="fade-blur"
|
||||
gradientText={false}
|
||||
tag="p"
|
||||
className="text-lg md:text-xl text-white leading-snug text-balance"
|
||||
/>
|
||||
|
||||
<div className="flex flex-wrap gap-3 mt-2 md:mt-3">
|
||||
<Button text="View Menu" href="#menu" variant="primary"/>
|
||||
<Button text="Order Online" href="#menu" variant="secondary" animationDelay={0.1} />
|
||||
<Button text="Reserve Table" href="#contact" variant="secondary" animationDelay={0.2} />
|
||||
</div>
|
||||
|
||||
{undefined && undefined.length > 0 && (
|
||||
<div className="mt-3 md:mt-4">
|
||||
<AvatarGroup size="lg" labelClassName="text-primary-cta-text" />
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export default function HeroSection() {
|
||||
return (
|
||||
<div data-webild-section="hero" id="hero">
|
||||
<HeroInline />
|
||||
</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="Signature Dishes"
|
||||
title="The Yōkoso Collection"
|
||||
description="A curated gallery of our most celebrated dishes."
|
||||
items={[
|
||||
{
|
||||
title: "Salmon Sushi",
|
||||
description: "Premium fresh cuts, ৳650",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/sushi-salmon-tuna_1339-2819.jpg",
|
||||
},
|
||||
{
|
||||
title: "Volcano Roll",
|
||||
description: "Spicy, savory, and bold, ৳850",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/sushi-rolls-sesame-seeds_140725-4223.jpg",
|
||||
},
|
||||
{
|
||||
title: "Chicken Ramen",
|
||||
description: "Slow-cooked broth goodness, ৳550",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/delicious-ramen-noodle-soup-with-mushrooms-bok-choy-dark-stone-background_84443-85797.jpg",
|
||||
},
|
||||
{
|
||||
title: "Pad Thai",
|
||||
description: "Traditional wok-fired flavors, ৳650",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-shrimp-noodle-soup-with-egg_84443-85798.jpg",
|
||||
},
|
||||
{
|
||||
title: "Singapore Chili Crab",
|
||||
description: "Our signature masterpiece, ৳1350",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-tasty-sushi-rolls-with-copy-space_23-2148517939.jpg",
|
||||
},
|
||||
{
|
||||
title: "Chicken Nanban",
|
||||
description: "Crispy and juicy delight, ৳680",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-delicious-ramen-bowl_23-2148678742.jpg",
|
||||
},
|
||||
{
|
||||
title: "Signature Bento",
|
||||
description: "The ultimate curated experience, ৳1190",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-salmon-sashimi-with-sliced-cucumbers-ginger-wasabi-sauce-ice-cubes-bowl-wood-table_141793-11668.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
40
src/pages/HomePage/sections/Metrics.tsx
Normal file
40
src/pages/HomePage/sections/Metrics.tsx
Normal file
@@ -0,0 +1,40 @@
|
||||
// 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 MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function MetricsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsMediaCards
|
||||
tag="Our Impact"
|
||||
title="Dining by the Numbers"
|
||||
description="Experience excellence through every metric."
|
||||
metrics={[
|
||||
{
|
||||
value: "10k+",
|
||||
title: "Happy Guests",
|
||||
description: "Sylhet's favorite destination.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/internationals-people-standing-cafe-drinking-cocktails_1157-32440.jpg",
|
||||
},
|
||||
{
|
||||
value: "50+",
|
||||
title: "Signature Dishes",
|
||||
description: "Crafted with passion.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-composition-noodles-bowl_23-2148803815.jpg?_wi=1",
|
||||
},
|
||||
{
|
||||
value: "5",
|
||||
title: "Star Rating",
|
||||
description: "Consistently praised.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/sushi-roll_74190-2834.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 TestimonialQuoteCards from '@/components/sections/testimonial/TestimonialQuoteCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialQuoteCards
|
||||
tag="Guest Voices"
|
||||
title="The Yōkoso Promise"
|
||||
description="Hear what our esteemed guests have to say."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Sarah A.",
|
||||
role: "Food Critic",
|
||||
quote: "Simply the best Asian cuisine in Bangladesh.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/seductive-lady-pink-silk-robe-holds-champagne-flute_8353-90.jpg",
|
||||
},
|
||||
{
|
||||
name: "Ahmed K.",
|
||||
role: "Entrepreneur",
|
||||
quote: "An unparalleled premium experience.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/couple-restaurant_23-2148006698.jpg",
|
||||
},
|
||||
{
|
||||
name: "Lina R.",
|
||||
role: "Travel Blogger",
|
||||
quote: "Exquisite details and bold flavors.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-woman-cutting-food_23-2150124822.jpg",
|
||||
},
|
||||
{
|
||||
name: "David L.",
|
||||
role: "Local Gourmet",
|
||||
quote: "The sushi is beyond Michelin quality.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/happy-couple-enjoying-cafe-while-talking-waiter_637285-579.jpg",
|
||||
},
|
||||
{
|
||||
name: "Nadia S.",
|
||||
role: "Influencer",
|
||||
quote: "Perfect setting for any celebration.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/new-year-spend-with-friends-celebrating_23-2149196973.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user