Merge version_3_1781705989896 into main

Merge version_3_1781705989896 into main
This commit was merged in pull request #4.
This commit is contained in:
2026-06-17 14:23:08 +00:00
9 changed files with 245 additions and 130 deletions

View File

@@ -1,140 +1,35 @@
import AboutText from '@/components/sections/about/AboutText';
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import HeroSplitMediaGrid from '@/components/sections/hero/HeroSplitMediaGrid';
import MetricsIconCards from '@/components/sections/metrics/MetricsIconCards';
import TestimonialMarqueeCards from '@/components/sections/testimonial/TestimonialMarqueeCards';
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';
import LocationSection from './HomePage/sections/Location';export default function HomePage(): React.JSX.Element {
return (
<>
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroSplitMediaGrid
tag="Traditional Portuguese Taste"
title="Bifana: The Ultimate Pork Sandwich"
description="Experience authentic flavors crafted with passion. Join us for a culinary journey in the heart of the city."
primaryButton={{
text: "Reserve Now", href: "#contact"}}
secondaryButton={{
text: "View Menu", href: "#menu"}}
items={[
{
imageSrc: "http://img.b2bpic.net/free-photo/close-up-club-sandwich-potato-cheeps-plate-with-sauce_176474-2565.jpg"},
{
imageSrc: "http://img.b2bpic.net/free-photo/bagel-bread-with-smoked-salmon-meat-vegetable_74190-7666.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutText
title="Our story begins with the perfect pork recipe, handed down through generations and perfected for your enjoyment."
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<div id="menu" data-section="menu">
<SectionErrorBoundary name="menu">
<FeaturesImageBento
tag="Menu Highlights"
title="Authentic Digital Menu"
description="Browse our curated selection of traditional bifanas and artisanal sides."
items={[
{
title: "Original Bifana", description: "The classic, marinated pork steak sandwich.", imageSrc: "http://img.b2bpic.net/free-photo/azerbaijani-dish-three-sisters-dolma-stuffed-vegetables-with-minced-meat_140725-4848.jpg"},
{
title: "Garlic Fries", description: "Hand-cut fries tossed with fresh garlic.", imageSrc: "http://img.b2bpic.net/free-photo/arrangement-potato-fries-wooden-table_23-2148501555.jpg"},
{
title: "Craft Beer", description: "Local brews to pair with your meal.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-tattooed-bearded-hipster-male-manufacturer-presenting-beer-microbrewery_613910-8073.jpg"},
{
title: "Spicy Bifana", description: "With homemade chili oil blend.", imageSrc: "http://img.b2bpic.net/free-photo/traditional-cuban-sandwich-wooden-table_123827-35229.jpg"},
{
title: "Sweet Tart", description: "Traditional custard dessert tart.", imageSrc: "http://img.b2bpic.net/free-photo/front-view-delicious-little-cake-with-red-icing-inside-plate-dark-background-tea-sweet-biscuit-pie-cookies-sugar_140725-115642.jpg"},
{
title: "House Salad", description: "Fresh seasonal greens and vinaigrette.", imageSrc: "http://img.b2bpic.net/free-photo/high-angle-healthy-salad-white-bowl_23-2148747473.jpg"},
{
title: "Bifana Combo", description: "Sandwich, fries, and beverage.", imageSrc: "http://img.b2bpic.net/free-photo/close-up-spicy-mini-tacos-served-with-chili-paste_140725-4995.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
<MenuSection />
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsIconCards
tag="By the numbers"
title="Crafted with quality"
description="Quality and tradition define our culinary legacy."
metrics={[
{
icon: "Award", title: "Years of Tradition", value: "25+"},
{
icon: "Users", title: "Happy Diners", value: "100k+"},
{
icon: "Utensils", title: "Bifanas Served", value: "500k+"},
]}
/>
</SectionErrorBoundary>
</div>
<MetricsSection />
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialMarqueeCards
tag="Reviews"
title="What our guests say"
description="Join the community of food lovers who enjoy our traditional bifanas."
testimonials={[
{
name: "Maria", role: "Local Foodie", quote: "Best bifana I've ever had, truly authentic.", imageSrc: "http://img.b2bpic.net/free-photo/woman-using-digital-tablet-cafe_1170-736.jpg"},
{
name: "Carlos", role: "Regular Guest", quote: "The atmosphere and flavors are unbeatable.", imageSrc: "http://img.b2bpic.net/free-photo/food-blogger-cute-fitness-cook-recording-video-social-media-making-salad_140725-166656.jpg"},
{
name: "Sofia", role: "Visitor", quote: "A must-visit spot in the city center.", imageSrc: "http://img.b2bpic.net/free-photo/friends-eating-conversating-restaurant_23-2148006709.jpg"},
{
name: "Joao", role: "Food Critic", quote: "Excellence in every bite.", imageSrc: "http://img.b2bpic.net/free-photo/pleased-female-entrepreneur-trendy-sunglasses-denim-jacke_197531-31011.jpg"},
{
name: "Ana", role: "Happy Diner", quote: "Perfect service and delicious food.", imageSrc: "http://img.b2bpic.net/free-photo/people-cheering-with-wine-glasses-luxurious-restaurant_23-2150517422.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
<TestimonialsSection />
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqSplitMedia
tag="Help"
title="Common Questions"
description="Need assistance? We're here to help you have the best experience."
items={[
{
question: "Do you accept reservations?", answer: "Yes, we highly recommend booking ahead for groups."},
{
question: "Are vegetarian options available?", answer: "We offer several salad and side options."},
{
question: "Is the menu online?", answer: "Yes, you can browse our full digital menu above."},
]}
imageSrc="https://images.pexels.com/photos/9001223/pexels-photo-9001223.jpeg?auto=compress&cs=tinysrgb&h=650&w=940&id=9001223"
/>
</SectionErrorBoundary>
</div>
<FaqSection />
<LocationSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Booking"
text="Reserve your table today and taste the best Bifana in town."
primaryButton={{
text: "Book via Phone", href: "tel:+123456789"}}
secondaryButton={{
text: "Contact Us", href: "mailto:info@bifana.com"}}
/>
</SectionErrorBoundary>
</div>
<ContactSection />
</>
);
}
}

View File

@@ -0,0 +1,18 @@
// 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 AboutText from '@/components/sections/about/AboutText';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function AboutSection(): React.JSX.Element {
return (
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutText
title="Our story begins with the perfect pork recipe, handed down through generations and perfected for your enjoyment."
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,23 @@
// 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="Booking"
text="Reserve your table today and taste the best Bifana in town."
primaryButton={{
text: "Book via Phone", href: "tel:+123456789"}}
secondaryButton={{
text: "Contact Us", href: "mailto:info@bifana.com"}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,29 @@
// 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="Help"
title="Common Questions"
description="Need assistance? We're here to help you have the best experience."
items={[
{
question: "Do you accept reservations?", answer: "Yes, we highly recommend booking ahead for groups."},
{
question: "Are vegetarian options available?", answer: "We offer several salad and side options."},
{
question: "Is the menu online?", answer: "Yes, you can browse our full digital menu above."},
]}
imageSrc="https://images.pexels.com/photos/9001223/pexels-photo-9001223.jpeg?auto=compress&cs=tinysrgb&h=650&w=940&id=9001223"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,19 @@
// Created by add_section_from_catalog (HeroBillboardCarousel).
import React from 'react';
import HeroBillboardCarousel from '@/components/sections/hero/HeroBillboardCarousel';
export default function HeroSection(): React.JSX.Element {
return (
<div data-webild-section="hero" id="hero">
<HeroBillboardCarousel
title="Bifana: The Ultimate Pork Sandwich"
tag="Traditional Portuguese Taste"
items={[{"imageSrc":"http://img.b2bpic.net/free-photo/close-up-club-sandwich-potato-cheeps-plate-with-sauce_176474-2565.jpg"},{"imageSrc":"http://img.b2bpic.net/free-photo/bagel-bread-with-smoked-salmon-meat-vegetable_74190-7666.jpg"}]}
primaryButton={{"text":"Reserve Now","href":"#contact"}}
description="Experience authentic flavors crafted with passion. Join us for a culinary journey in the heart of the city."
secondaryButton={{"text":"View Menu","href":"#menu"}}
/>
</div>
);
}

View File

@@ -0,0 +1,35 @@
import React from 'react';
import { motion } from "motion/react";
import ScrollReveal from "@/components/ui/ScrollReveal";
import { motion } from "motion/react"
import ScrollReveal from "@/components/ui/ScrollReveal"
export default function LocationSection() {
return (
<div data-webild-section="location" id="location">
<section className="relative w-full py-24 bg-background">
<div className="max-w-content-width mx-auto px-6">
<ScrollReveal variant="fade">
<div className="flex flex-col items-center text-center mb-12">
<h2 className="text-4xl font-bold text-foreground mb-4">Find Us</h2>
<p className="text-lg text-muted-foreground max-w-2xl">
Visit us in the heart of the city for an unforgettable culinary experience.
</p>
</div>
<div className="w-full h-[400px] rounded-xl overflow-hidden border border-border">
<iframe
src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3113.136456015975!2d-9.1393366!3d38.7123919!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0xd19347a6433e103%3A0x8b1e4a0737a400c3!2sLisbon%2C%20Portugal!5e0!3m2!1sen!2sus!4v1650000000000!5m2!1sen!2sus"
width="100%"
height="100%"
style={{ border: 0 }}
allowFullScreen={true}
loading="lazy"
referrerPolicy="no-referrer-when-downgrade"
></iframe>
</div>
</ScrollReveal>
</div>
</section>
</div>
);
}

View File

@@ -0,0 +1,36 @@
// 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="Menu Highlights"
title="Authentic Digital Menu"
description="Browse our curated selection of traditional bifanas and artisanal sides."
items={[
{
title: "Original Bifana", description: "The classic, marinated pork steak sandwich.", imageSrc: "http://img.b2bpic.net/free-photo/azerbaijani-dish-three-sisters-dolma-stuffed-vegetables-with-minced-meat_140725-4848.jpg"},
{
title: "Garlic Fries", description: "Hand-cut fries tossed with fresh garlic.", imageSrc: "http://img.b2bpic.net/free-photo/arrangement-potato-fries-wooden-table_23-2148501555.jpg"},
{
title: "Craft Beer", description: "Local brews to pair with your meal.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-tattooed-bearded-hipster-male-manufacturer-presenting-beer-microbrewery_613910-8073.jpg"},
{
title: "Spicy Bifana", description: "With homemade chili oil blend.", imageSrc: "http://img.b2bpic.net/free-photo/traditional-cuban-sandwich-wooden-table_123827-35229.jpg"},
{
title: "Sweet Tart", description: "Traditional custard dessert tart.", imageSrc: "http://img.b2bpic.net/free-photo/front-view-delicious-little-cake-with-red-icing-inside-plate-dark-background-tea-sweet-biscuit-pie-cookies-sugar_140725-115642.jpg"},
{
title: "House Salad", description: "Fresh seasonal greens and vinaigrette.", imageSrc: "http://img.b2bpic.net/free-photo/high-angle-healthy-salad-white-bowl_23-2148747473.jpg"},
{
title: "Bifana Combo", description: "Sandwich, fries, and beverage.", imageSrc: "http://img.b2bpic.net/free-photo/close-up-spicy-mini-tacos-served-with-chili-paste_140725-4995.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,28 @@
// 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 MetricsIconCards from '@/components/sections/metrics/MetricsIconCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function MetricsSection(): React.JSX.Element {
return (
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsIconCards
tag="By the numbers"
title="Crafted with quality"
description="Quality and tradition define our culinary legacy."
metrics={[
{
icon: "Award", title: "Years of Tradition", value: "25+"},
{
icon: "Users", title: "Happy Diners", value: "100k+"},
{
icon: "Utensils", title: "Bifanas Served", value: "500k+"},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,32 @@
// 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 TestimonialMarqueeCards from '@/components/sections/testimonial/TestimonialMarqueeCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function TestimonialsSection(): React.JSX.Element {
return (
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialMarqueeCards
tag="Reviews"
title="What our guests say"
description="Join the community of food lovers who enjoy our traditional bifanas."
testimonials={[
{
name: "Maria", role: "Local Foodie", quote: "Best bifana I've ever had, truly authentic.", imageSrc: "http://img.b2bpic.net/free-photo/woman-using-digital-tablet-cafe_1170-736.jpg"},
{
name: "Carlos", role: "Regular Guest", quote: "The atmosphere and flavors are unbeatable.", imageSrc: "http://img.b2bpic.net/free-photo/food-blogger-cute-fitness-cook-recording-video-social-media-making-salad_140725-166656.jpg"},
{
name: "Sofia", role: "Visitor", quote: "A must-visit spot in the city center.", imageSrc: "http://img.b2bpic.net/free-photo/friends-eating-conversating-restaurant_23-2148006709.jpg"},
{
name: "Joao", role: "Food Critic", quote: "Excellence in every bite.", imageSrc: "http://img.b2bpic.net/free-photo/pleased-female-entrepreneur-trendy-sunglasses-denim-jacke_197531-31011.jpg"},
{
name: "Ana", role: "Happy Diner", quote: "Perfect service and delicious food.", imageSrc: "http://img.b2bpic.net/free-photo/people-cheering-with-wine-glasses-luxurious-restaurant_23-2150517422.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
);
}