Compare commits
6 Commits
version_1_
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 613abbc600 | |||
|
|
38f6c3dd40 | ||
|
|
c97f511075 | ||
|
|
50d878b46e | ||
|
|
ec3352366a | ||
|
|
6b4583b71f |
@@ -38,70 +38,55 @@ export default function Layout() {
|
||||
];
|
||||
|
||||
return (
|
||||
<StyleProvider buttonVariant="default" siteBackground="floatingGradient" heroBackground="cornerGlow">
|
||||
<StyleProvider buttonVariant="default" siteBackground="none" heroBackground="none">
|
||||
<SiteBackgroundSlot />
|
||||
<SectionErrorBoundary name="navbar">
|
||||
<NavbarFloating
|
||||
logo="Bird Shack"
|
||||
logo="BirdShack"
|
||||
ctaButton={{
|
||||
text: "Order Online",
|
||||
text: "ORDER NOW",
|
||||
href: "#contact",
|
||||
}}
|
||||
navItems={navItems} />
|
||||
navItems={[
|
||||
{ name: "HOME", href: "#hero" },
|
||||
{ name: "MENU", href: "#menu" },
|
||||
{ name: "FIND A SHACK", href: "#" },
|
||||
{ name: "REWARDS", href: "#" },
|
||||
{ name: "WHO WE ARE", href: "#about" },
|
||||
{ name: "CONTACT US", href: "#contact" }
|
||||
]} />
|
||||
</SectionErrorBoundary>
|
||||
<main className="flex-grow">
|
||||
<Outlet />
|
||||
</main>
|
||||
<SectionErrorBoundary name="footer">
|
||||
<FooterSimpleCard
|
||||
brand="Bird Shack Jamaica"
|
||||
brand="BirdShack Fried Chicken"
|
||||
columns={[
|
||||
{
|
||||
title: "Visit Us",
|
||||
title: "Links",
|
||||
items: [
|
||||
{
|
||||
label: "123 Island Rd, Kingston",
|
||||
href: "#",
|
||||
},
|
||||
{ label: "Menu", href: "#menu" },
|
||||
{ label: "Find A Shack", href: "#" },
|
||||
{ label: "Rewards", href: "#" },
|
||||
{ label: "Who We Are", href: "#about" },
|
||||
{ label: "Contact Us", href: "#contact" },
|
||||
{ label: "Terms & Conditions", href: "#" }
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Our Menu",
|
||||
title: "Contact",
|
||||
items: [
|
||||
{
|
||||
label: "Full Menu",
|
||||
href: "#menu",
|
||||
},
|
||||
{
|
||||
label: "Catering Services",
|
||||
href: "#",
|
||||
},
|
||||
{ label: "info@birdshackja.com", href: "mailto:info@birdshackja.com" },
|
||||
{ label: "(876) 677-6683", href: "tel:8766776683" }
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Company",
|
||||
items: [
|
||||
{
|
||||
label: "About Us",
|
||||
href: "#about",
|
||||
},
|
||||
{
|
||||
label: "Privacy Policy",
|
||||
href: "#",
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
]}
|
||||
copyright="© 2024 Bird Shack Jamaica. All rights reserved."
|
||||
copyright="© 2025 Bird Shack Jamaica. All rights reserved."
|
||||
links={[
|
||||
{
|
||||
label: "Instagram",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
label: "Facebook",
|
||||
href: "#",
|
||||
},
|
||||
{ label: "Facebook", href: "#" },
|
||||
{ label: "Instagram", href: "#" },
|
||||
{ label: "TikTok", href: "#" }
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
|
||||
@@ -5,15 +5,15 @@
|
||||
|
||||
:root {
|
||||
/* @colorThemes/lightTheme/grayNavyBlue */
|
||||
--background: #f6f0e9;
|
||||
--card: #efe7dd;
|
||||
--foreground: #2b180a;
|
||||
--primary-cta: #2b180a;
|
||||
--primary-cta-text: #f6f0e9;
|
||||
--secondary-cta: #efe7dd;
|
||||
--secondary-cta-text: #2b180a;
|
||||
--accent: #94877c;
|
||||
--background-accent: #afa094;
|
||||
--background: #ffffff;
|
||||
--card: #ffffff;
|
||||
--foreground: #000000;
|
||||
--primary-cta: #f3d822;
|
||||
--primary-cta-text: #000000;
|
||||
--secondary-cta: #58a5c0;
|
||||
--secondary-cta-text: #ffffff;
|
||||
--accent: #e65430;
|
||||
--background-accent: #f3d822;
|
||||
|
||||
/* @layout/border-radius/rounded */
|
||||
--radius: 0.5rem;
|
||||
|
||||
@@ -1,209 +1,33 @@
|
||||
import AboutTestimonial from '@/components/sections/about/AboutTestimonial';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import HeroCenteredLogos from '@/components/sections/hero/HeroCenteredLogos';
|
||||
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
|
||||
import TestimonialTrustCard from '@/components/sections/testimonial/TestimonialTrustCard';
|
||||
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 TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import ProofSection from './HomePage/sections/Proof';
|
||||
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">
|
||||
<HeroCenteredLogos
|
||||
avatarsSrc={[
|
||||
"http://img.b2bpic.net/free-photo/medium-shot-smiley-woman-holding-coffee-cup_23-2149455885.jpg",
|
||||
"http://img.b2bpic.net/free-photo/friends-eating-conversating-restaurant_23-2148006709.jpg",
|
||||
"http://img.b2bpic.net/free-photo/attractive-young-woman-hands-holds-two-burgers-blurred-background_169016-43765.jpg",
|
||||
"http://img.b2bpic.net/free-photo/young-bearded-man-cafe-street-with-glass-wine-romantic-guy-white-shirt-cap-suspenders-city-peaky-blinders-old-fassion-retro_1321-2003.jpg",
|
||||
]}
|
||||
avatarText="Loved by local foodies"
|
||||
title="Authentic Jamaican Grilled Flavors"
|
||||
description="Experience the vibrant, smoky, and soul-warming taste of Bird Shack Jamaica. Freshly grilled, homemade, and full of authentic island spice."
|
||||
primaryButton={{
|
||||
text: "See Our Menu",
|
||||
href: "#menu",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Visit Us",
|
||||
href: "#contact",
|
||||
}}
|
||||
names={[
|
||||
"Customer A",
|
||||
"Customer B",
|
||||
"Customer C",
|
||||
"Customer D",
|
||||
]}
|
||||
hideMedia={false}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/front-view-chicken-wooden-board-with-ingredients_23-2148440984.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutTestimonial
|
||||
tag="Our Story"
|
||||
quote="Bird Shack started in a small home kitchen with a dream to bring the genuine, smokey flavor of authentic Jamaican grilling to our local community."
|
||||
author="The Bird Shack Family"
|
||||
role="Founders"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/side-view-cook-making-dessert_23-2149707923.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="menu" data-section="menu">
|
||||
<SectionErrorBoundary name="menu">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Our Specialties"
|
||||
title="The Shack Menu"
|
||||
description="Discover our signature dishes, cooked to perfection using traditional island techniques."
|
||||
items={[
|
||||
{
|
||||
title: "Signature Jerk Chicken",
|
||||
description: "Tender chicken marinated for 24 hours in our secret spice blend and grilled over pimento wood.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/chef-presents-lula-kebab-served-with-basil_140725-8121.jpg",
|
||||
},
|
||||
{
|
||||
title: "Spicy BBQ Wings",
|
||||
description: "Crispy, juicy wings glazed with our sweet and fiery house-made sauce.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/pilaf-with-meet-dried-fruits-chestnut-rice-rosemary-leaves-wooden-plate_176474-2978.jpg",
|
||||
},
|
||||
{
|
||||
title: "Festival & Saltfish",
|
||||
description: "A classic Jamaican staple, crispy fried golden and served with seasoned saltfish.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-view-rice-dish_23-2147680627.jpg",
|
||||
},
|
||||
{
|
||||
title: "Grilled Red Snapper",
|
||||
description: "Freshly caught snapper seasoned with island herbs and grilled until flaky.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/side-view-fried-chicken-with-boiled-rice-pan-vegetable-salad-with-sauce_141793-4903.jpg",
|
||||
},
|
||||
{
|
||||
title: "Rice & Peas",
|
||||
description: "Perfectly fluffy basmati rice cooked with coconut milk and kidney beans.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-tasty-meat-soup-with-potatoes-greens-dark-floor_140725-76936.jpg",
|
||||
},
|
||||
{
|
||||
title: "Fresh Tropical Salad",
|
||||
description: "Crunchy seasonal vegetables with a zesty citrus vinaigrette dressing.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-woman-with-delicious-dish-poutine_23-2149486062.jpg",
|
||||
},
|
||||
{
|
||||
title: "Homemade Lemonade",
|
||||
description: "Freshly squeezed lemons with a hint of ginger and mint for ultimate refreshment.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/crop-man-eating-dessert-cafe_23-2147775848.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MenuSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialTrustCard
|
||||
quote="The most authentic taste of Jamaica I've had in years! The chicken is always so smoky and tender."
|
||||
rating={5}
|
||||
author="Marcus Thompson"
|
||||
avatars={[
|
||||
{
|
||||
name: "Marcus",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/person-indian-origin-having-fun_23-2150285278.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sophia",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-attractive-redhead-female-student-sits-armchair-leaning-arms-smiling_197531-22962.jpg",
|
||||
},
|
||||
{
|
||||
name: "David",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-talking-her-long-distance-lover_23-2149289491.jpg",
|
||||
},
|
||||
{
|
||||
name: "Elena",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/ecstatic-caucasian-girl-sitting-cafe-eating-salad-blithesome-woman-enjoying-fresh-vegetables_197531-17191.jpg",
|
||||
},
|
||||
{
|
||||
name: "James",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiley-couple-sharing-fast-food_329181-20757.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="proof" data-section="proof">
|
||||
<SectionErrorBoundary name="proof">
|
||||
<SocialProofMarquee
|
||||
tag="Featured In"
|
||||
title="Local Recognition"
|
||||
description="Bird Shack is honored to be recognized by our local culinary community."
|
||||
names={[
|
||||
"Island Flavors Magazine",
|
||||
"Jamaica Food Review",
|
||||
"The Daily Local Press",
|
||||
"Culinary Excellence Awards",
|
||||
"Travel & Taste Guide",
|
||||
"Community Business Journal",
|
||||
"Food Critics Choice",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ProofSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSplitMedia
|
||||
tag="Info"
|
||||
title="Common Questions"
|
||||
description="Have questions about our menu or catering services? We've got you covered."
|
||||
items={[
|
||||
{
|
||||
question: "Do you offer catering?",
|
||||
answer: "Yes! We specialize in catering for events of all sizes, from family gatherings to office parties.",
|
||||
},
|
||||
{
|
||||
question: "Are your ingredients fresh?",
|
||||
answer: "Absolutely. We source fresh, local ingredients daily to ensure the highest quality in every meal.",
|
||||
},
|
||||
{
|
||||
question: "Do you offer vegetarian options?",
|
||||
answer: "Yes, we have a selection of fresh salads and side dishes that cater to vegetarian dietary preferences.",
|
||||
},
|
||||
{
|
||||
question: "How can I order online?",
|
||||
answer: "You can visit our contact page or give us a call to place your order directly.",
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/abstract-blur-restaurant_1203-8540.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Visit Us"
|
||||
text="Ready for some authentic flavor? Come visit us or order your meal today!"
|
||||
primaryButton={{
|
||||
text: "Get Directions",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Call Now",
|
||||
href: "tel:8765551234",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
22
src/pages/HomePage/sections/About.tsx
Normal file
22
src/pages/HomePage/sections/About.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 "about" section.
|
||||
|
||||
import React from 'react';
|
||||
import AboutTestimonial from '@/components/sections/about/AboutTestimonial';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function AboutSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutTestimonial
|
||||
tag="Our Story"
|
||||
quote="Bird Shack started in a small home kitchen with a dream to bring the genuine, smokey flavor of authentic Jamaican grilling to our local community."
|
||||
author="The Bird Shack Family"
|
||||
role="Founders"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/side-view-cook-making-dessert_23-2149707923.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="Visit Us"
|
||||
text="Ready for some authentic flavor? Come visit us or order your meal today!"
|
||||
primaryButton={{
|
||||
text: "Get Directions",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Call Now",
|
||||
href: "tel:8765551234",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
39
src/pages/HomePage/sections/Faq.tsx
Normal file
39
src/pages/HomePage/sections/Faq.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 "faq" section.
|
||||
|
||||
import React from 'react';
|
||||
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FaqSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSplitMedia
|
||||
tag="Info"
|
||||
title="Common Questions"
|
||||
description="Have questions about our menu or catering services? We've got you covered."
|
||||
items={[
|
||||
{
|
||||
question: "Do you offer catering?",
|
||||
answer: "Yes! We specialize in catering for events of all sizes, from family gatherings to office parties.",
|
||||
},
|
||||
{
|
||||
question: "Are your ingredients fresh?",
|
||||
answer: "Absolutely. We source fresh, local ingredients daily to ensure the highest quality in every meal.",
|
||||
},
|
||||
{
|
||||
question: "Do you offer vegetarian options?",
|
||||
answer: "Yes, we have a selection of fresh salads and side dishes that cater to vegetarian dietary preferences.",
|
||||
},
|
||||
{
|
||||
question: "How can I order online?",
|
||||
answer: "You can visit our contact page or give us a call to place your order directly.",
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/abstract-blur-restaurant_1203-8540.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
91
src/pages/HomePage/sections/Hero.tsx
Normal file
91
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,91 @@
|
||||
/* 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 avatarsSrc = [];
|
||||
const primaryButton = {
|
||||
text: "ORDER ONLINE",
|
||||
href: "#menu"
|
||||
};
|
||||
const secondaryButton = {
|
||||
text: "Visit Us",
|
||||
href: "#contact"
|
||||
};
|
||||
const names = [
|
||||
"ORIGINAL CRISPY",
|
||||
"CAJUN SPICY",
|
||||
"BARBEQUE"
|
||||
];
|
||||
|
||||
type HeroCenteredLogosProps = {
|
||||
avatarsSrc: string[];
|
||||
avatarText: string;
|
||||
title: string;
|
||||
description: string;
|
||||
primaryButton: { text: string; href: string };
|
||||
secondaryButton: { text: string; href: string };
|
||||
names: string[];
|
||||
hideMedia?: boolean;
|
||||
} & ({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never });
|
||||
|
||||
const HeroInline = () => {
|
||||
return (
|
||||
<section aria-label="Hero section" className="relative h-svh flex flex-col mb-20">
|
||||
<HeroBackgroundSlot />
|
||||
{!false && (
|
||||
<div className="absolute inset-0 z-0">
|
||||
<ImageOrVideo imageSrc={"https://storage.googleapis.com/webild/users/user_3FWHaCApdMsPkrjRayRKhrZvcTp/uploaded-1782184302347-y72utape.png"} className="size-full object-cover" />
|
||||
<div className="absolute inset-0 bg-background/80" />
|
||||
</div>
|
||||
)}
|
||||
|
||||
<div className="relative z-10 flex-1 flex items-center justify-center">
|
||||
<div className="flex flex-col items-center gap-3 pt-8 w-content-width mx-auto text-center">
|
||||
<AvatarGroup avatarsSrc={avatarsSrc} label={"Loved by local foodies"} size="lg" />
|
||||
|
||||
<TextAnimation
|
||||
text={"SAVA DI FLAVA!"}
|
||||
variant="fade"
|
||||
gradientText={true}
|
||||
tag="h1"
|
||||
className="md:max-w-8/10 text-7xl 2xl:text-8xl leading-[1.15] font-black uppercase text-center text-balance"
|
||||
/>
|
||||
|
||||
<TextAnimation
|
||||
text={"HOT. CRISPY. IRRESISTIBLE."}
|
||||
variant="fade"
|
||||
gradientText={false}
|
||||
tag="p"
|
||||
className="md:max-w-7/10 text-2xl md:text-3xl font-bold uppercase leading-snug text-balance"
|
||||
/>
|
||||
|
||||
<div className="flex flex-wrap justify-center gap-3 mt-2 md:mt-3">
|
||||
<Button text={primaryButton.text} href={primaryButton.href} variant="primary" className="rounded-full px-8 py-4 text-xl font-bold" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="relative z-10 w-content-width mx-auto pb-8 overflow-hidden mask-fade-x">
|
||||
<div className="flex w-max animate-marquee-horizontal" style={{ animationDuration: "30s" }}>
|
||||
{[...names, ...names, ...names, ...names].map((name, index) => (
|
||||
<div key={index} className="shrink-0 mx-3 px-4 py-2 card rounded">
|
||||
<span className="text-xl font-semibold whitespace-nowrap text-foreground/75">{name}</span>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export default function HeroSection() {
|
||||
return (
|
||||
<div data-webild-section="hero" id="hero">
|
||||
<HeroInline />
|
||||
</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="SOME TOP PICKS JUST FOR YOU!"
|
||||
title=" "
|
||||
description="SHOP BY CATEGORY"
|
||||
items={[
|
||||
{
|
||||
"title": "STARTA BOX",
|
||||
"imageSrc": "https://storage.googleapis.com/webild/users/user_3FWHaCApdMsPkrjRayRKhrZvcTp/uploaded-1782184302347-y72utape.png",
|
||||
"href": "#",
|
||||
"description": "1 PIECE COMBO\n1 PIECE OF CHICKEN\nFRIES OR 3 WEDGES\nCORNBREAD\n16 oz SODA"
|
||||
},
|
||||
{
|
||||
"href": "#",
|
||||
"description": "1 CHICKEN SANDWICH\n1 PIECE OF CHICKEN OR 3 WINGS\nFRIES OR 3 WEDGES\n1 COLESLAW\n16 oz SODA",
|
||||
"title": "FLEX BOX COMBO",
|
||||
"imageSrc": "https://storage.googleapis.com/webild/users/user_3FWHaCApdMsPkrjRayRKhrZvcTp/uploaded-1782184302347-y72utape.png"
|
||||
},
|
||||
{
|
||||
"title": "HATRIK",
|
||||
"imageSrc": "https://storage.googleapis.com/webild/users/user_3FWHaCApdMsPkrjRayRKhrZvcTp/uploaded-1782184302347-y72utape.png",
|
||||
"href": "#",
|
||||
"description": "3 PIECES OF CHICKEN\nFRIES OR 3 WEDGES\nCORNBREAD\n16 oz SODA"
|
||||
},
|
||||
{
|
||||
"href": "#",
|
||||
"description": "1 CHICKEN SANDWICH\nFRIES OR 3 WEDGES\n16 oz SODA",
|
||||
"title": "CHICKEN SANDWICH COMBO",
|
||||
"imageSrc": "https://storage.googleapis.com/webild/users/user_3FWHaCApdMsPkrjRayRKhrZvcTp/uploaded-1782184302347-y72utape.png"
|
||||
},
|
||||
{
|
||||
"title": "WINGS COMBO",
|
||||
"imageSrc": "https://storage.googleapis.com/webild/users/user_3FWHaCApdMsPkrjRayRKhrZvcTp/uploaded-1782184302347-y72utape.png",
|
||||
"href": "#",
|
||||
"description": "6 PIECES WINGS\nFRIES OR 3 WEDGES\n16 oz SODA"
|
||||
},
|
||||
{
|
||||
"title": "FAMILY MEAL",
|
||||
"imageSrc": "https://storage.googleapis.com/webild/users/user_3FWHaCApdMsPkrjRayRKhrZvcTp/uploaded-1782184302347-y72utape.png",
|
||||
"href": "#",
|
||||
"description": "8 PIECES OF CHICKEN\nLARGE FRIES\n2 COLESLAW\n4 CORNBREAD"
|
||||
},
|
||||
{
|
||||
"title": "KIDS MEAL",
|
||||
"imageSrc": "https://storage.googleapis.com/webild/users/user_3FWHaCApdMsPkrjRayRKhrZvcTp/uploaded-1782184302347-y72utape.png",
|
||||
"href": "#",
|
||||
"description": "1 PIECE OF CHICKEN\nSMALL FRIES\nAPPLE JUICE"
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
29
src/pages/HomePage/sections/Proof.tsx
Normal file
29
src/pages/HomePage/sections/Proof.tsx
Normal file
@@ -0,0 +1,29 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "proof" section.
|
||||
|
||||
import React from 'react';
|
||||
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ProofSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="proof" data-section="proof">
|
||||
<SectionErrorBoundary name="proof">
|
||||
<SocialProofMarquee
|
||||
tag="Featured In"
|
||||
title="Local Recognition"
|
||||
description="Bird Shack is honored to be recognized by our local culinary community."
|
||||
names={[
|
||||
"Island Flavors Magazine",
|
||||
"Jamaica Food Review",
|
||||
"The Daily Local Press",
|
||||
"Culinary Excellence Awards",
|
||||
"Travel & Taste Guide",
|
||||
"Community Business Journal",
|
||||
"Food Critics Choice",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
42
src/pages/HomePage/sections/Testimonials.tsx
Normal file
42
src/pages/HomePage/sections/Testimonials.tsx
Normal file
@@ -0,0 +1,42 @@
|
||||
// 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 TestimonialTrustCard from '@/components/sections/testimonial/TestimonialTrustCard';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialTrustCard
|
||||
quote="The most authentic taste of Jamaica I've had in years! The chicken is always so smoky and tender."
|
||||
rating={5}
|
||||
author="Marcus Thompson"
|
||||
avatars={[
|
||||
{
|
||||
name: "Marcus",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/person-indian-origin-having-fun_23-2150285278.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sophia",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-attractive-redhead-female-student-sits-armchair-leaning-arms-smiling_197531-22962.jpg",
|
||||
},
|
||||
{
|
||||
name: "David",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-talking-her-long-distance-lover_23-2149289491.jpg",
|
||||
},
|
||||
{
|
||||
name: "Elena",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/ecstatic-caucasian-girl-sitting-cafe-eating-salad-blithesome-woman-enjoying-fresh-vegetables_197531-17191.jpg",
|
||||
},
|
||||
{
|
||||
name: "James",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiley-couple-sharing-fast-food_329181-20757.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user