Compare commits
3 Commits
version_1_
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 87d03ae14f | |||
|
|
4fff5595c1 | ||
| b658764c41 |
@@ -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 />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
21
src/pages/HomePage/sections/About.tsx
Normal file
21
src/pages/HomePage/sections/About.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
21
src/pages/HomePage/sections/Contact.tsx
Normal file
21
src/pages/HomePage/sections/Contact.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
22
src/pages/HomePage/sections/Faq.tsx
Normal file
22
src/pages/HomePage/sections/Faq.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 "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>
|
||||
);
|
||||
}
|
||||
21
src/pages/HomePage/sections/Gallery.tsx
Normal file
21
src/pages/HomePage/sections/Gallery.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
23
src/pages/HomePage/sections/Hero.tsx
Normal file
23
src/pages/HomePage/sections/Hero.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
139
src/pages/HomePage/sections/Menu.tsx
Normal file
139
src/pages/HomePage/sections/Menu.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
21
src/pages/HomePage/sections/Metrics.tsx
Normal file
21
src/pages/HomePage/sections/Metrics.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
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="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>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user