Merge version_2_1782040692234 into main
Merge version_2_1782040692234 into main
This commit was merged in pull request #2.
This commit is contained in:
@@ -1,250 +1,36 @@
|
||||
import AboutTestimonial from '@/components/sections/about/AboutTestimonial';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqTwoColumn from '@/components/sections/faq/FaqTwoColumn';
|
||||
import FeaturesBentoGrid from '@/components/sections/features/FeaturesBentoGrid';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import HeroBillboardCarousel from '@/components/sections/hero/HeroBillboardCarousel';
|
||||
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
|
||||
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
|
||||
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 FeaturesSection from './HomePage/sections/Features';
|
||||
import MenuSection from './HomePage/sections/Menu';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import SocialProofSection from './HomePage/sections/SocialProof';
|
||||
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="Authentic Flavor"
|
||||
title="Real Mexican Tacos"
|
||||
description="Experience the true taste of Mexico right in your neighborhood."
|
||||
primaryButton={{
|
||||
text: "View Menu",
|
||||
href: "#menu",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Learn About Us",
|
||||
href: "#about",
|
||||
}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/flat-lay-vegetarian-tacos-arrangement_23-2148750456.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/gardening-decoration-with-slate_23-2147687364.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-delicious-brazilian-food-composition-with-copy-space_23-2148739222.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/vertical-shot-male-chef-wearing-face-mask-preparing-delicious-meal_181624-32255.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/mexican-food_23-2148024813.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-person-with-burger-outdoors_23-2148289440.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutTestimonial
|
||||
tag="Our Story"
|
||||
quote="We started with a simple vision: to bring the authentic flavors of our grandmother's kitchen to you using only the freshest, high-quality ingredients."
|
||||
author="Elena Rodriguez"
|
||||
role="Founder & Head Chef"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/top-view-prepare-bunch-parsley-garlic-together-with-bowl-black-pepper-turmeric-ground-pepper-chopped-red-cabbage-salad-wooden-table_140725-138805.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesBentoGrid
|
||||
tag="Our Promise"
|
||||
title="Why Choose Us"
|
||||
description="We are dedicated to excellence in every bite."
|
||||
features={[
|
||||
{
|
||||
title: "Fresh Ingredients",
|
||||
description: "Locally sourced produce and high-quality meats.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/healthy-ingredients-included-salad_23-2148173925.jpg",
|
||||
},
|
||||
{
|
||||
title: "Homemade Tortillas",
|
||||
description: "Made fresh in-house every single day.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/bakery_23-2148011775.jpg",
|
||||
},
|
||||
{
|
||||
title: "Authentic Recipes",
|
||||
description: "Passed down through generations.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/mexican-nacho-chips-salsa-dip-bowl-wooden_2829-11088.jpg",
|
||||
},
|
||||
{
|
||||
title: "Great Service",
|
||||
description: "Warm, welcoming, and fast service.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/people-working-call-center_23-2149288167.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FeaturesSection />
|
||||
|
||||
<div id="menu" data-section="menu">
|
||||
<SectionErrorBoundary name="menu">
|
||||
<FeaturesImageBento
|
||||
tag="Our Menu"
|
||||
title="Signature Tacos"
|
||||
description="Explore our delicious variety of handcrafted tacos."
|
||||
items={[
|
||||
{
|
||||
title: "Al Pastor",
|
||||
description: "Marinated pork with pineapple",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-tacos-lemon_23-2148764335.jpg",
|
||||
},
|
||||
{
|
||||
title: "Carne Asada",
|
||||
description: "Grilled marinated steak",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-delicious-tacos-with-meat_23-2148750428.jpg",
|
||||
},
|
||||
{
|
||||
title: "Veggie Delight",
|
||||
description: "Black beans and avocado",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/vegan-mexican-taco-with-beans_123827-36158.jpg",
|
||||
},
|
||||
{
|
||||
title: "Shrimp Taco",
|
||||
description: "Fresh grilled shrimp",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/tacos_23-2148159752.jpg",
|
||||
},
|
||||
{
|
||||
title: "Carnitas",
|
||||
description: "Slow cooked tender pork",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/flat-lay-tacos-with-meat-basket_23-2148629348.jpg",
|
||||
},
|
||||
{
|
||||
title: "Chorizo",
|
||||
description: "Spicy authentic sausage",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/traditional-mexican-taco-plate_23-2148181582.jpg",
|
||||
},
|
||||
{
|
||||
title: "Baja Fish",
|
||||
description: "Crispy battered fish",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/sweet-potatoes-wooden-board_23-2148619070.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MenuSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialColumnMarqueeCards
|
||||
tag="Reviews"
|
||||
title="What Our Guests Say"
|
||||
description="We are proud to serve our community."
|
||||
testimonials={[
|
||||
{
|
||||
name: "John Doe",
|
||||
role: "Food Critic",
|
||||
quote: "The most authentic tacos I've had outside Mexico!",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-fat-tourist-traveling_23-2151711727.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sarah Smith",
|
||||
role: "Local Resident",
|
||||
quote: "Always fresh, always fast, always delicious.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-woman-with-delicious-tacos_23-2150878339.jpg",
|
||||
},
|
||||
{
|
||||
name: "Mark Wilson",
|
||||
role: "Student",
|
||||
quote: "Best spot for a quick and tasty lunch.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-friends-eating-funny-way_23-2150269618.jpg",
|
||||
},
|
||||
{
|
||||
name: "Anna Lee",
|
||||
role: "Blogger",
|
||||
quote: "A must-visit for any taco lover.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/view-delicious-shawarma-dish_23-2151805539.jpg",
|
||||
},
|
||||
{
|
||||
name: "David Kim",
|
||||
role: "Chef",
|
||||
quote: "You can really taste the quality in the ingredients.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/closeup-shot-man-s-hand-holding-spoonful-salad-with-corn-paper-bowl_181624-61057.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="social-proof" data-section="social-proof">
|
||||
<SectionErrorBoundary name="social-proof">
|
||||
<SocialProofMarquee
|
||||
tag="Featured In"
|
||||
title="Recognized for Quality"
|
||||
description="We are proud to be featured by the following publications."
|
||||
names={[
|
||||
"Foodie Weekly",
|
||||
"City Culinary Hub",
|
||||
"Tech Food Startup",
|
||||
"Global Dining",
|
||||
"Green Farm Alliance",
|
||||
"City Events Expo",
|
||||
"Chef Innovations",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<SocialProofSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqTwoColumn
|
||||
tag="Help"
|
||||
title="Common Questions"
|
||||
description="Find answers to our most popular questions."
|
||||
items={[
|
||||
{
|
||||
question: "Are you open on weekends?",
|
||||
answer: "Yes, we are open Friday through Sunday until 10 PM.",
|
||||
},
|
||||
{
|
||||
question: "Do you offer delivery?",
|
||||
answer: "Yes, we partner with major delivery platforms.",
|
||||
},
|
||||
{
|
||||
question: "Are vegetarian options available?",
|
||||
answer: "Absolutely! Try our signature black bean avocado taco.",
|
||||
},
|
||||
{
|
||||
question: "Do you cater events?",
|
||||
answer: "Yes, we offer catering services for private events.",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Visit Us"
|
||||
text="Ready for some delicious tacos? Stop by or place an order for pickup today!"
|
||||
primaryButton={{
|
||||
text: "Order Online",
|
||||
href: "#menu",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Contact Us",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</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="We started with a simple vision: to bring the authentic flavors of our grandmother's kitchen to you using only the freshest, high-quality ingredients."
|
||||
author="Elena Rodriguez"
|
||||
role="Founder & Head Chef"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/top-view-prepare-bunch-parsley-garlic-together-with-bowl-black-pepper-turmeric-ground-pepper-chopped-red-cabbage-salad-wooden-table_140725-138805.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 delicious tacos? Stop by or place an order for pickup today!"
|
||||
primaryButton={{
|
||||
text: "Order Online",
|
||||
href: "#menu",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Contact Us",
|
||||
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="Help"
|
||||
title="Common Questions"
|
||||
description="Find answers to our most popular questions."
|
||||
items={[
|
||||
{
|
||||
question: "Are you open on weekends?",
|
||||
answer: "Yes, we are open Friday through Sunday until 10 PM.",
|
||||
},
|
||||
{
|
||||
question: "Do you offer delivery?",
|
||||
answer: "Yes, we partner with major delivery platforms.",
|
||||
},
|
||||
{
|
||||
question: "Are vegetarian options available?",
|
||||
answer: "Absolutely! Try our signature black bean avocado taco.",
|
||||
},
|
||||
{
|
||||
question: "Do you cater events?",
|
||||
answer: "Yes, we offer catering services for private events.",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
42
src/pages/HomePage/sections/Features.tsx
Normal file
42
src/pages/HomePage/sections/Features.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 "features" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesBentoGrid from '@/components/sections/features/FeaturesBentoGrid';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FeaturesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesBentoGrid
|
||||
tag="Our Promise"
|
||||
title="Why Choose Us"
|
||||
description="We are dedicated to excellence in every bite."
|
||||
features={[
|
||||
{
|
||||
title: "Fresh Ingredients",
|
||||
description: "Locally sourced produce and high-quality meats.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/healthy-ingredients-included-salad_23-2148173925.jpg",
|
||||
},
|
||||
{
|
||||
title: "Homemade Tortillas",
|
||||
description: "Made fresh in-house every single day.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/bakery_23-2148011775.jpg",
|
||||
},
|
||||
{
|
||||
title: "Authentic Recipes",
|
||||
description: "Passed down through generations.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/mexican-nacho-chips-salsa-dip-bowl-wooden_2829-11088.jpg",
|
||||
},
|
||||
{
|
||||
title: "Great Service",
|
||||
description: "Warm, welcoming, and fast service.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/people-working-call-center_23-2149288167.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
48
src/pages/HomePage/sections/Hero.tsx
Normal file
48
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,48 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "hero" section.
|
||||
|
||||
import React from 'react';
|
||||
import HeroBillboardCarousel from '@/components/sections/hero/HeroBillboardCarousel';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboardCarousel
|
||||
tag="Authentic Flavor"
|
||||
title="Real Mexican Tacos"
|
||||
description="Experience the true taste of Mexico right in your neighborhood."
|
||||
primaryButton={{
|
||||
text: "View Menu",
|
||||
href: "#menu",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Learn About Us",
|
||||
href: "#about",
|
||||
}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/flat-lay-vegetarian-tacos-arrangement_23-2148750456.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/gardening-decoration-with-slate_23-2147687364.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-delicious-brazilian-food-composition-with-copy-space_23-2148739222.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/vertical-shot-male-chef-wearing-face-mask-preparing-delicious-meal_181624-32255.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/mexican-food_23-2148024813.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-person-with-burger-outdoors_23-2148289440.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
158
src/pages/HomePage/sections/Menu.tsx
Normal file
158
src/pages/HomePage/sections/Menu.tsx
Normal file
@@ -0,0 +1,158 @@
|
||||
/* 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 TextAnimation from "@/components/ui/TextAnimation";
|
||||
import ImageOrVideo from "@/components/ui/ImageOrVideo";
|
||||
import ScrollReveal from "@/components/ui/ScrollReveal";
|
||||
import { cls } from "@/lib/utils";
|
||||
|
||||
const items = [
|
||||
{
|
||||
title: "Birria Taco",
|
||||
description: "$7.99 - Slow cooked beef or chicken birria in a crispy taco, served with consommé & lime",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-tacos-lemon_23-2148764335.jpg"
|
||||
},
|
||||
{
|
||||
title: "Birria Taco Trio",
|
||||
description: "$19.99 - Three crispy tacos filled with slow cooked beef or chicken birria, served with consommé & lime",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-delicious-tacos-with-meat_23-2148750428.jpg"
|
||||
},
|
||||
{
|
||||
title: "Birria Loaded Duo",
|
||||
description: "$19.99 - Two crispy tacos filled with slow cooked beef or chicken birria stuffed with fries and special sauce, served with consommé & lime",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/vegan-mexican-taco-with-beans_123827-36158.jpg"
|
||||
},
|
||||
{
|
||||
title: "Birria Ramen",
|
||||
description: "$19.99 - Ramen noodles in rich birria broth, topped with tender meat, mexican cheese and fresh garnishes",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/tacos_23-2148159752.jpg"
|
||||
},
|
||||
{
|
||||
title: "Birria Loaded Fries",
|
||||
description: "$19.99 - Crispy fries loaded with birria beef, melted cheese and toppings",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/flat-lay-tacos-with-meat-basket_23-2148629348.jpg"
|
||||
},
|
||||
{
|
||||
title: "Birria Grilled Cheese",
|
||||
description: "$24.99 - Crispy, golden sourdough bread loaded with juicy Birria beef, American melted cheese, and our signature special sauce, side of fries",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/traditional-mexican-taco-plate_23-2148181582.jpg"
|
||||
},
|
||||
{
|
||||
title: "Birria Brioche Burger",
|
||||
description: "$24.99 - Slow-cooked birria beef piled onto a soft, buttery brioche bun, melted American cheese, fresh garnishes, and our signature special sauce & with a side fries",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/sweet-potatoes-wooden-board_23-2148619070.jpg"
|
||||
}
|
||||
];
|
||||
|
||||
type FeatureItem = {
|
||||
title: string;
|
||||
description: string;
|
||||
href?: string;
|
||||
} & ({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never });
|
||||
|
||||
interface FeaturesImageBentoProps {
|
||||
tag: string;
|
||||
title: string;
|
||||
description: string;
|
||||
primaryButton?: { text: string; href: string };
|
||||
secondaryButton?: { text: string; href: string };
|
||||
items: [FeatureItem, FeatureItem, FeatureItem, FeatureItem, FeatureItem, FeatureItem, FeatureItem];
|
||||
}
|
||||
|
||||
const MenuInline = () => {
|
||||
const gridClasses = [
|
||||
"md:col-span-2",
|
||||
"md:col-span-4",
|
||||
"md:col-span-3",
|
||||
"md:col-span-3",
|
||||
"md:col-span-2",
|
||||
"md:col-span-2",
|
||||
"md:col-span-2",
|
||||
];
|
||||
|
||||
const staggerDelays = [
|
||||
0,
|
||||
0.1,
|
||||
0,
|
||||
0.1,
|
||||
0,
|
||||
0.1,
|
||||
0.2,
|
||||
];
|
||||
|
||||
return (
|
||||
<section aria-label="Features image bento section" className="py-20">
|
||||
<div className="flex flex-col gap-8 md:gap-10">
|
||||
<div className="flex flex-col items-center w-content-width mx-auto gap-2">
|
||||
<div className="px-3 py-1 mb-1 text-sm card rounded w-fit">
|
||||
<p>{"Our Menu"}</p>
|
||||
</div>
|
||||
|
||||
<TextAnimation
|
||||
text={"Signature Tacos"}
|
||||
variant="fade-blur"
|
||||
gradientText={true}
|
||||
tag="h2"
|
||||
className="md:max-w-8/10 text-6xl 2xl:text-7xl leading-[1.15] font-semibold text-center text-balance"
|
||||
/>
|
||||
|
||||
<TextAnimation
|
||||
text={"Explore our delicious variety of handcrafted tacos."}
|
||||
variant="fade-blur"
|
||||
gradientText={false}
|
||||
tag="p"
|
||||
className="md:max-w-7/10 text-lg md:text-xl leading-snug text-center text-balance"
|
||||
/>
|
||||
|
||||
{(undefined || undefined) && (
|
||||
<div className="flex flex-wrap justify-center gap-3 mt-2 md:mt-3">
|
||||
{undefined && <Button text={undefined.text} href={undefined.href} variant="primary"/>}
|
||||
{undefined && <Button text={undefined.text} href={undefined.href} variant="secondary" animationDelay={0.1} />}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
<div className="w-content-width mx-auto grid grid-cols-1 md:grid-cols-6 gap-3">
|
||||
{items.map((item, index) => {
|
||||
const content = (
|
||||
<div className="relative h-80 xl:h-100 2xl:h-120 overflow-hidden">
|
||||
<ImageOrVideo
|
||||
imageSrc={item.imageSrc}
|
||||
videoSrc={item.videoSrc}
|
||||
className="rounded group-hover:scale-105 transition-transform duration-500"
|
||||
/>
|
||||
|
||||
<div className="absolute inset-x-5 bottom-5 xl:inset-x-6 xl:bottom-6 2xl:inset-x-7 2xl:bottom-7 flex flex-col text-background">
|
||||
<span className="text-2xl font-semibold leading-snug truncate">{item.title}</span>
|
||||
<span className="text-base leading-snug truncate">{item.description}</span>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
return (
|
||||
<ScrollReveal key={index} variant="slide-up" delay={staggerDelays[index]} className={cls("col-span-1 group", gridClasses[index])}>
|
||||
{item.href ? (
|
||||
<a href={item.href} className="block overflow-hidden rounded">
|
||||
{content}
|
||||
</a>
|
||||
) : (
|
||||
<div className="overflow-hidden rounded">
|
||||
{content}
|
||||
</div>
|
||||
)}
|
||||
</ScrollReveal>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export default function MenuSection() {
|
||||
return (
|
||||
<div data-webild-section="menu" id="menu">
|
||||
<MenuInline />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
29
src/pages/HomePage/sections/SocialProof.tsx
Normal file
29
src/pages/HomePage/sections/SocialProof.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 "social-proof" section.
|
||||
|
||||
import React from 'react';
|
||||
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function SocialProofSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="social-proof" data-section="social-proof">
|
||||
<SectionErrorBoundary name="social-proof">
|
||||
<SocialProofMarquee
|
||||
tag="Featured In"
|
||||
title="Recognized for Quality"
|
||||
description="We are proud to be featured by the following publications."
|
||||
names={[
|
||||
"Foodie Weekly",
|
||||
"City Culinary Hub",
|
||||
"Tech Food Startup",
|
||||
"Global Dining",
|
||||
"Green Farm Alliance",
|
||||
"City Events Expo",
|
||||
"Chef Innovations",
|
||||
]}
|
||||
/>
|
||||
</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="Reviews"
|
||||
title="What Our Guests Say"
|
||||
description="We are proud to serve our community."
|
||||
testimonials={[
|
||||
{
|
||||
name: "John Doe",
|
||||
role: "Food Critic",
|
||||
quote: "The most authentic tacos I've had outside Mexico!",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-fat-tourist-traveling_23-2151711727.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sarah Smith",
|
||||
role: "Local Resident",
|
||||
quote: "Always fresh, always fast, always delicious.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-woman-with-delicious-tacos_23-2150878339.jpg",
|
||||
},
|
||||
{
|
||||
name: "Mark Wilson",
|
||||
role: "Student",
|
||||
quote: "Best spot for a quick and tasty lunch.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-friends-eating-funny-way_23-2150269618.jpg",
|
||||
},
|
||||
{
|
||||
name: "Anna Lee",
|
||||
role: "Blogger",
|
||||
quote: "A must-visit for any taco lover.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/view-delicious-shawarma-dish_23-2151805539.jpg",
|
||||
},
|
||||
{
|
||||
name: "David Kim",
|
||||
role: "Chef",
|
||||
quote: "You can really taste the quality in the ingredients.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/closeup-shot-man-s-hand-holding-spoonful-salad-with-corn-paper-bowl_181624-61057.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user