Merge version_2_1782057124468 into main #2

Merged
bender merged 3 commits from version_2_1782057124468 into main 2026-06-21 15:55:40 +00:00
10 changed files with 377 additions and 246 deletions

View File

@@ -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",

View File

@@ -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;

View File

@@ -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 />
</>
);
}

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 { 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>
);
}

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="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>
);
}

View 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>
);
}

View 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>
);
}

View 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>
);
}

View 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>
);
}

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 "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>
);
}