Merge version_2_1781443300171 into main #2

Merged
bender merged 1 commits from version_2_1781443300171 into main 2026-06-14 13:24:32 +00:00
9 changed files with 334 additions and 185 deletions

View File

@@ -1,196 +1,35 @@
import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
import FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';
import HeroSplit from '@/components/sections/hero/HeroSplit';
import MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
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 GallerySection from './HomePage/sections/Gallery';
import TestimonialsSection from './HomePage/sections/Testimonials';
import MetricsSection from './HomePage/sections/Metrics';
import FaqSection from './HomePage/sections/Faq';
import ContactSection from './HomePage/sections/Contact';
import MenuSection from './HomePage/sections/Menu';export default function HomePage(): React.JSX.Element {
return (
<>
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroSplit
tag="Since 1950"
title="The Icon of Valencia's Nightlife"
description="Experience the authentic birthplace of the Agua de Valencia in a setting of timeless elegance and historic charm."
primaryButton={{
text: "Reserve Now",
href: "#contact",
}}
secondaryButton={{
text: "View Menu",
href: "#about",
}}
imageSrc="http://img.b2bpic.net/free-photo/bowl-popcorn-table-neon-illuminated-home-theater-apartment_482257-120270.jpg"
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutMediaOverlay
tag="Our History"
title="A Legacy of Cocktails"
description="Nestled in the historic heart of Valencia, Café Madrid is more than a bar; it's a testament to the city's vibrant spirit and the origin of our legendary cocktail."
imageSrc="http://img.b2bpic.net/free-photo/view-golden-skull-with-citrus-cocktail_23-2150835853.jpg"
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<MenuSection />
<div id="gallery" data-section="gallery">
<SectionErrorBoundary name="gallery">
<FeaturesMediaCarousel
tag="Experience"
title="Signature Flavors"
description="Explore the selection of classic and contemporary cocktails that define our identity."
items={[
{
title: "Agua de Valencia",
description: "The legend that started it all.",
buttonIcon: "Martini",
imageSrc: "http://img.b2bpic.net/free-photo/refreshing-alcoholic-drink-with-strawberry_23-2148617627.jpg",
},
{
title: "Artisanal Prep",
description: "Expertly crafted by our master bartenders.",
buttonIcon: "Zap",
imageSrc: "http://img.b2bpic.net/free-photo/hookah-sparksfrom-grapefruit-hookah-bowl_141793-3261.jpg",
},
{
title: "Refined Decor",
description: "An atmosphere steeped in elegance.",
buttonIcon: "Star",
imageSrc: "http://img.b2bpic.net/free-photo/glass-with-champagne-close-up_23-2148339612.jpg",
},
{
title: "Gourmet Tapas",
description: "Pair your drink with local delicacies.",
buttonIcon: "ChefHat",
imageSrc: "http://img.b2bpic.net/free-photo/assortment-spanish-pintxos-wooden-table-typical-spanish-food_123827-21697.jpg",
},
{
title: "Romantic Nights",
description: "The perfect backdrop for every occasion.",
buttonIcon: "Heart",
imageSrc: "http://img.b2bpic.net/free-photo/assorted-fruit-cheese-plate-close-up-delicious-food-plate_132075-5744.jpg",
},
{
title: "Iconic Toasts",
description: "Celebrating every milestone with you.",
buttonIcon: "GlassWater",
imageSrc: "http://img.b2bpic.net/free-photo/champagne-glass-clock-woman-man-feet_23-2147988119.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<GallerySection />
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialTrustCard
quote="One does not simply walk into Café Madrid, one returns time and again for the magic found in a single glass."
rating={5}
author="José Cosme, Local Guide"
avatars={[
{
name: "Sarah J.",
imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-female-dentist-dentistry-concept-dental-treatment_169016-66975.jpg",
},
{
name: "Michael R.",
imageSrc: "http://img.b2bpic.net/free-photo/handsome-tattooed-man-summer-terrace-city-cafe-is-drinking-wine-street-cafe_1321-20.jpg",
},
{
name: "Emily C.",
imageSrc: "http://img.b2bpic.net/free-photo/front-view-rich-woman-posing-indoors_23-2149722604.jpg",
},
{
name: "David K.",
imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-woman-black-sweater-standing-posing_114579-81859.jpg",
},
{
name: "Ana M.",
imageSrc: "http://img.b2bpic.net/free-photo/male-ballroom-performer-posing-stage_23-2149454023.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<TestimonialsSection />
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsMediaCards
tag="Our Stats"
title="The Numbers Behind the Legend"
description="Trusted by thousands for unforgettable nights in the heart of the city."
metrics={[
{
value: "2000+",
title: "Reviews",
description: "Voices from around the world.",
imageSrc: "http://img.b2bpic.net/free-photo/cut-orange-fruit-juice-with-umbrella_23-2148145311.jpg",
},
{
value: "4.5",
title: "Rating",
description: "Consistently recognized excellence.",
imageSrc: "http://img.b2bpic.net/free-photo/drinking-bar-liquor-pub-vodka_1376-7.jpg",
},
{
value: "1950",
title: "Founded",
description: "A historic sanctuary in Valencia.",
imageSrc: "http://img.b2bpic.net/free-photo/new-year-party-arrangement-with-copy-space_23-2149181131.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<MetricsSection />
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqSplitMedia
tag="Common Questions"
title="Plan Your Visit"
description="Find answers to help you prepare for a perfect evening with us."
items={[
{
question: "Where are you located?",
answer: "We are located at C. de l'Abadia de Sant Martí, 10, inside the MYR Marqués House Hotel.",
},
{
question: "Do you need reservations?",
answer: "We recommend reservations to secure your spot, especially during weekends.",
},
{
question: "Are you open for events?",
answer: "Yes, we host private events and special celebrations by request.",
},
]}
imageSrc="http://img.b2bpic.net/free-photo/group-people-enjoying-disco-party-dancing-club-music-social-gathering-young-men-women-showing-dance-moves-dance-floor-partying-with-stage-lights-handheld-shot_482257-69939.jpg"
/>
</SectionErrorBoundary>
</div>
<FaqSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Connect With Us"
text="Join the legend and reserve your table tonight."
primaryButton={{
text: "Call Us: 960 66 05 07",
href: "tel:960660507",
}}
secondaryButton={{
text: "Visit Site",
href: "http://myrhotels.com",
}}
/>
</SectionErrorBoundary>
</div>
<ContactSection />
</>
);
}

View File

@@ -0,0 +1,21 @@
// 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 AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function AboutSection(): React.JSX.Element {
return (
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutMediaOverlay
tag="Nuestra historia"
title="Un legado de cócteles"
description="Ubicado en el corazón histórico de Valencia, Café Madrid es más que un bar; es un testimonio del espíritu vibrante de la ciudad y el origen de nuestro legendario cóctel."
imageSrc="http://img.b2bpic.net/free-photo/view-golden-skull-with-citrus-cocktail_23-2150835853.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,21 @@
// 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="Conecta con nosotros"
text="Únete a la leyenda y reserva tu mesa esta noche."
primaryButton={{"text":"Llámanos: 960 66 05 07","href":"tel:960660507"}}
secondaryButton={{"text":"Visitar sitio web","href":"http://myrhotels.com"}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,22 @@
// 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="Preguntas frecuentes"
title="Planifica tu visita"
description="Encuentra respuestas para ayudarte a preparar una velada perfecta con nosotros."
items={[{"question":"¿Dónde están ubicados?","answer":"Estamos ubicados en C. de l'Abadia de Sant Martí, 10, dentro del Hotel MYR Marqués House."},{"answer":"Recomendamos reservar para asegurar tu lugar, especialmente durante los fines de semana.","question":"¿Necesito reserva?"},{"answer":"Sí, organizamos eventos privados y celebraciones especiales bajo petición.","question":"¿Están abiertos para eventos?"}]}
imageSrc="http://img.b2bpic.net/free-photo/group-people-enjoying-disco-party-dancing-club-music-social-gathering-young-men-women-showing-dance-moves-dance-floor-partying-with-stage-lights-handheld-shot_482257-69939.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,21 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "gallery" section.
import React from 'react';
import FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function GallerySection(): React.JSX.Element {
return (
<div id="gallery" data-section="gallery">
<SectionErrorBoundary name="gallery">
<FeaturesMediaCarousel
tag="Experiencia"
title="Sabores de autor"
description="Explora la selección de cócteles clásicos y contemporáneos que definen nuestra identidad."
items={[{"imageSrc":"http://img.b2bpic.net/free-photo/refreshing-alcoholic-drink-with-strawberry_23-2148617627.jpg","description":"La leyenda que lo empezó todo.","title":"Agua de Valencia","buttonIcon":"Martini"},{"buttonIcon":"Zap","description":"Preparado por nuestros expertos cocteleros.","title":"Preparación artesanal","imageSrc":"http://img.b2bpic.net/free-photo/hookah-sparksfrom-grapefruit-hookah-bowl_141793-3261.jpg"},{"imageSrc":"http://img.b2bpic.net/free-photo/glass-with-champagne-close-up_23-2148339612.jpg","description":"Un ambiente lleno de elegancia.","title":"Decoración refinada","buttonIcon":"Star"},{"imageSrc":"http://img.b2bpic.net/free-photo/assortment-spanish-pintxos-wooden-table-typical-spanish-food_123827-21697.jpg","title":"Tapas gourmet","description":"Acompaña tu bebida con delicias locales.","buttonIcon":"ChefHat"},{"imageSrc":"http://img.b2bpic.net/free-photo/assorted-fruit-cheese-plate-close-up-delicious-food-plate_132075-5744.jpg","description":"El escenario perfecto para cada ocasión.","title":"Noches románticas","buttonIcon":"Heart"},{"buttonIcon":"GlassWater","title":"Brindis icónicos","description":"Celebrando cada hito contigo.","imageSrc":"http://img.b2bpic.net/free-photo/champagne-glass-clock-woman-man-feet_23-2147988119.jpg"}]}
/>
</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 "hero" section.
import React from 'react';
import HeroSplit from '@/components/sections/hero/HeroSplit';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HeroSection(): React.JSX.Element {
return (
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroSplit
tag="Desde 1950"
title="El icono de la vida nocturna de Valencia"
description="Descubre el auténtico lugar de nacimiento del Agua de Valencia en un entorno de elegancia atemporal y encanto histórico."
primaryButton={{"text":"Reservar ahora","href":"#contact"}}
secondaryButton={{"href":"#menu","text":"Ver menú"}}
imageSrc="http://img.b2bpic.net/free-photo/bowl-popcorn-table-neon-illuminated-home-theater-apartment_482257-120270.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,139 @@
import { motion } from "motion/react"
import ScrollReveal from "@/components/ui/ScrollReveal"
import TextAnimation from "@/components/ui/TextAnimation"
import Tag from "@/components/ui/Tag"
import Card from "@/components/ui/Card"
import ImageOrVideo from "@/components/ui/ImageOrVideo"
export default function MenuSection() {
const products = [
{
name: "Agua de Valencia",
price: "Popular",
imageSrc: "http://img.b2bpic.net/free-photo/refreshing-alcoholic-drink-with-strawberry_23-2148617627.jpg",
},
{
name: "Agua de Valencia Cocktail",
price: "Popular",
imageSrc: "http://img.b2bpic.net/free-photo/view-golden-skull-with-citrus-cocktail_23-2150835853.jpg",
},
{
name: "Drinks",
price: "Popular",
imageSrc: "http://img.b2bpic.net/free-photo/glass-with-champagne-close-up_23-2148339612.jpg",
},
{
name: "Espresso Martini",
price: "Popular",
imageSrc: "http://img.b2bpic.net/free-photo/drinking-bar-liquor-pub-vodka_1376-7.jpg",
},
{
name: "Magret D'anec",
price: "Destacado",
imageSrc: "http://img.b2bpic.net/free-photo/assortment-spanish-pintxos-wooden-table-typical-spanish-food_123827-21697.jpg",
},
{
name: "Cerveza Paulaner",
price: "Destacado",
imageSrc: "http://img.b2bpic.net/free-photo/champagne-glass-clock-woman-man-feet_23-2147988119.jpg",
},
{
name: "May Day And Aqua de Valencia",
price: "Destacado",
imageSrc: "http://img.b2bpic.net/free-photo/cut-orange-fruit-juice-with-umbrella_23-2148145311.jpg",
},
{
name: "Nuclear Daiquiri",
price: "Destacado",
imageSrc: "http://img.b2bpic.net/free-photo/hookah-sparksfrom-grapefruit-hookah-bowl_141793-3261.jpg",
},
{
name: "Piña Colada",
price: "Destacado",
imageSrc: "http://img.b2bpic.net/free-photo/assorted-fruit-cheese-plate-close-up-delicious-food-plate_132075-5744.jpg",
},
{
name: "Tartar de Atún",
price: "Destacado",
imageSrc: "http://img.b2bpic.net/free-photo/assortment-spanish-pintxos-wooden-table-typical-spanish-food_123827-21697.jpg",
},
{
name: "Café Cremaet",
price: "Destacado",
imageSrc: "http://img.b2bpic.net/free-photo/view-golden-skull-with-citrus-cocktail_23-2150835853.jpg",
},
{
name: "Life Is a Peach",
price: "Destacado",
imageSrc: "http://img.b2bpic.net/free-photo/refreshing-alcoholic-drink-with-strawberry_23-2148617627.jpg",
},
{
name: "Pumpkin Spicy",
price: "Destacado",
imageSrc: "http://img.b2bpic.net/free-photo/cut-orange-fruit-juice-with-umbrella_23-2148145311.jpg",
},
{
name: "Wine",
price: "Destacado",
imageSrc: "http://img.b2bpic.net/free-photo/glass-with-champagne-close-up_23-2148339612.jpg",
},
{
name: "Whisky Sour",
price: "Destacado",
imageSrc: "http://img.b2bpic.net/free-photo/drinking-bar-liquor-pub-vodka_1376-7.jpg",
},
];
return (
<section data-webild-section="menu" id="menu" className="relative w-full py-24 bg-background overflow-hidden">
<div className="w-content-width mx-auto px-6">
<div className="flex flex-col items-center text-center mb-16">
<ScrollReveal variant="fade">
<Tag text="Carta" className="mb-6" />
</ScrollReveal>
<TextAnimation
text="Nuestra Carta Destacada"
variant="fade-blur"
tag="h2"
gradientText={false}
className="text-4xl md:text-5xl font-bold text-foreground mb-6"
/>
<ScrollReveal variant="fade" delay={0.2}>
<p className="text-lg text-muted-foreground max-w-2xl mx-auto">
Descubre nuestra selección de bebidas y platos destacados.
</p>
</ScrollReveal>
</div>
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-8">
{products.map((product, index) => (
<ScrollReveal variant="fade"
key={index}
delay={0.1 * (index % 3)}
className="h-full"
>
<Card className="h-full flex flex-col overflow-hidden group">
<div className="relative aspect-[4/3] overflow-hidden">
<ImageOrVideo
imageSrc={product.imageSrc}
className="w-full h-full object-cover transition-transform duration-500 group-hover:scale-105"
/>
</div>
<div className="p-6 flex flex-col flex-grow">
<div className="flex justify-between items-start mb-4">
<h3 className="text-xl font-bold text-foreground">
{product.name}
</h3>
<span className="text-sm font-medium px-3 py-1 rounded-full bg-primary-cta text-primary-cta-text">
{product.price}
</span>
</div>
</div>
</Card>
</ScrollReveal>
))}
</div>
</div>
</section>
);
}

View File

@@ -0,0 +1,21 @@
// 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="Nuestras estadísticas"
title="Los números detrás de la leyenda"
description="Con la confianza de miles de personas para noches inolvidables en el corazón de la ciudad."
metrics={[{"value":"2000+","imageSrc":"http://img.b2bpic.net/free-photo/cut-orange-fruit-juice-with-umbrella_23-2148145311.jpg","description":"Voces de todo el mundo.","title":"Reseñas"},{"imageSrc":"http://img.b2bpic.net/free-photo/drinking-bar-liquor-pub-vodka_1376-7.jpg","title":"Valoración","description":"Excelencia reconocida consistentemente.","value":"4.5"},{"value":"1950","imageSrc":"http://img.b2bpic.net/free-photo/new-year-party-arrangement-with-copy-space_23-2149181131.jpg","title":"Fundado","description":"Un santuario histórico en Valencia."}]}
/>
</SectionErrorBoundary>
</div>
);
}

View 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="Uno no simplemente entra a Café Madrid, uno regresa una y otra vez por la magia que se encuentra en una sola copa."
rating={5}
author="José Cosme, Guía Local"
avatars={[
{
name: "Sarah J.",
imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-female-dentist-dentistry-concept-dental-treatment_169016-66975.jpg",
},
{
name: "Michael R.",
imageSrc: "http://img.b2bpic.net/free-photo/handsome-tattooed-man-summer-terrace-city-cafe-is-drinking-wine-street-cafe_1321-20.jpg",
},
{
name: "Emily C.",
imageSrc: "http://img.b2bpic.net/free-photo/front-view-rich-woman-posing-indoors_23-2149722604.jpg",
},
{
name: "David K.",
imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-woman-black-sweater-standing-posing_114579-81859.jpg",
},
{
name: "Ana M.",
imageSrc: "http://img.b2bpic.net/free-photo/male-ballroom-performer-posing-stage_23-2149454023.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}