Merge version_2_1781705126328 into main #1

Merged
bender merged 1 commits from version_2_1781705126328 into main 2026-06-17 14:10:23 +00:00
10 changed files with 244 additions and 246 deletions

View File

@@ -16,7 +16,7 @@ export default function Layout() {
"href": "#historia"
},
{
"name": "Carta",
"name": "Servicios",
"href": "#carta"
},
{
@@ -32,7 +32,7 @@ export default function Layout() {
"href": "#testimonios"
},
{
"name": "Ambiente",
"name": "Compromiso",
"href": "#ambiente"
}
];
@@ -42,7 +42,7 @@ export default function Layout() {
<SiteBackgroundSlot />
<SectionErrorBoundary name="navbar">
<NavbarCentered
logo="Alierta 19"
logo="Talleres Constancia Motor"
ctaButton={{
text: "Reservar",
href: "#contacto",
@@ -54,13 +54,13 @@ export default function Layout() {
</main>
<SectionErrorBoundary name="footer">
<FooterSimple
brand="Alierta 19"
brand="Talleres Constancia Motor"
columns={[
{
title: "Menú",
items: [
{
label: "Carta",
label: "Servicios",
href: "#carta",
},
{
@@ -83,7 +83,7 @@ export default function Layout() {
],
},
]}
copyright="© 2026 Alierta 19. El sabor de quedarse un rato más."
copyright="© 2026 Talleres Constancia Motor S.L. Todos los derechos reservados."
links={[
{
label: "Contacto",

View File

@@ -1,19 +1,19 @@
@import url('https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@400;500;600;700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap');
@import "tailwindcss";
@import "./styles/masks.css";
@import "./styles/animations.css";
:root {
/* @colorThemes/lightTheme/grayNavyBlue */
--background: #f5faff;
--background: #f0f0f0;
--card: #ffffff;
--foreground: #001122;
--primary-cta: #15479c;
--primary-cta-text: #f5faff;
--secondary-cta: #ffffff;
--secondary-cta-text: #001122;
--accent: #a8cce8;
--background-accent: #7ba3cf;
--foreground: #212121;
--primary-cta: #D9531E;
--primary-cta-text: #ffffff;
--secondary-cta: #4a4a4a;
--secondary-cta-text: #ffffff;
--accent: #D9531E;
--background-accent: #e0e0e0;
/* @layout/border-radius/rounded */
--radius: 1rem;
@@ -88,7 +88,7 @@
--color-background-accent: var(--background-accent);
/* Fonts */
--font-sans: 'Nunito Sans', sans-serif;
--font-sans: 'Montserrat', sans-serif;
--font-tight: "Inter Tight", sans-serif;
--font-mono: monospace;

View File

@@ -1,241 +1,33 @@
import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
import ContactCta from '@/components/sections/contact/ContactCta';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import FeaturesMediaCards from '@/components/sections/features/FeaturesMediaCards';
import HeroSplitVerticalMarquee from '@/components/sections/hero/HeroSplitVerticalMarquee';
import TestimonialRatingCards from '@/components/sections/testimonial/TestimonialRatingCards';
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 HistoriaSection from './HomePage/sections/Historia';
import FeaturesSection from './HomePage/sections/Features';
import CartaSection from './HomePage/sections/Carta';
import TestimoniosSection from './HomePage/sections/Testimonios';
import AmbienteSection from './HomePage/sections/Ambiente';
import ContactoSection from './HomePage/sections/Contacto';
export default function HomePage(): React.JSX.Element {
return (
<>
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroSplitVerticalMarquee
tag="Alierta 19"
title="Donde Zaragoza desayuna, almuerza y se queda a vivir un rato más."
description="Café de verdad, tostadas que saben a casa y un trato que no se aprende, se siente. Bienvenido a Alierta 19."
primaryButton={{
text: "Ver la carta",
href: "#carta",
}}
secondaryButton={{
text: "Reservar tu mesa",
href: "#contacto",
}}
leftItems={[
{
imageSrc: "http://img.b2bpic.net/free-photo/girl-power-neon-sign-authentic-cafe_53876-111107.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/city-background-panoramic-view_23-2148892901.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/full-shot-small-business-owner-standing-outdoors_23-2149434499.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-girl-pajama-moving-balcony-city-sunny-morning-her-long-hair-flying-wind-she-smiling_197531-2307.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/full-shot-smiley-man-door_23-2149434485.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/front-view-cute-japanese-girl-drinking-lemonade_23-2148665351.jpg",
},
]}
rightItems={[
{
imageSrc: "http://img.b2bpic.net/free-photo/side-view-couple-date_23-2148422373.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/full-shot-business-owner-standing-outdoors_23-2149434497.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-restaurant-is-decorated-with-greens_8353-9675.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/vintage-light-lamp_1203-3090.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/full-shot-woman-wearing-total-denim-outfit_23-2150105186.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/pineapples-ready-sale_23-2151526658.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="historia" data-section="historia">
<SectionErrorBoundary name="historia">
<AboutMediaOverlay
tag="Nuestra esencia"
title="No somos un restaurante más. Somos tu bar de confianza."
description="Alierta 19 nació para ser ese sitio al que vuelves sin pensarlo. Desayuno, comida, cena o simplemente una caña con un pincho — siempre con el mismo cariño."
imageSrc="http://img.b2bpic.net/free-photo/side-view-business-owner-making-coffee_23-2149434545.jpg"
/>
</SectionErrorBoundary>
</div>
<HistoriaSection />
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesMediaCards
tag="Por qué el barrio nos elige"
title="Lo que dice el barrio de nosotros"
description="Cada detalle, desde el café hasta la bienvenida, está pensado para ti."
items={[
{
title: "Desayunos que enamoran",
description: "Croissants de jamón y queso, tostadas variadas y un cortado como debe ser.",
imageSrc: "http://img.b2bpic.net/free-photo/tasty-arrangement-with-pastries_23-2148289387.jpg",
},
{
title: "Trato de familia",
description: "Cercanía real, sin guion ni distancia. Como nos gusta que nos traten a nosotros.",
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-smiley-friends-taking-selfie_23-2149366431.jpg",
},
{
title: "Pet-friendly",
description: "Uno de los pocos sitios donde tu mascota entra contigo. ¡Bienvenidos!",
imageSrc: "http://img.b2bpic.net/free-photo/elegant-women-with-little-dog-city_1157-26767.jpg",
},
{
title: "Calidad accesible",
description: "Lujo de comer bien sin pagar de más. Entre 10 y 20€ por persona.",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-yummy-creamy-cake-with-cup-tea-light-dark-background_140725-80168.jpg",
},
{
title: "Espacio abierto",
description: "Ambiente inclusivo y amigable donde todos encuentran su sitio.",
imageSrc: "http://img.b2bpic.net/free-photo/friends-spending-time-outdoors-medium-shot_23-2149009397.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<FeaturesSection />
<div id="carta" data-section="carta">
<SectionErrorBoundary name="carta">
<FeaturesImageBento
tag="Nuestros imprescindibles"
title="Lo que pide el barrio"
description="Nuestros platos más icónicos, hechos siempre con cariño."
items={[
{
title: "Croissant a la plancha",
description: "Mantequilla dorada, crujiente por fuera.",
imageSrc: "http://img.b2bpic.net/free-photo/freshly-baked-croissant-wooden-table-french-breakfast-idea-sunny-bright-day-top-view-flat-lay-with-copy-space-text_166373-3514.jpg",
},
{
title: "Huevos rotos",
description: "Con jamón, el clásico hecho como debe ser.",
imageSrc: "http://img.b2bpic.net/free-photo/fried-egg-with-sausages-pan-bread-bun-aside_114579-71158.jpg",
},
{
title: "Patatas bravas",
description: "Las de toda la vida, con su punto picante.",
imageSrc: "http://img.b2bpic.net/free-photo/finely-roasted-potato-sticks-served-with-lemon-slices_114579-1750.jpg",
},
{
title: "Bocadillo de carrillera",
description: "Carne que se deshace, pan artesano.",
imageSrc: "http://img.b2bpic.net/free-photo/meat-sandwich-with-potato-balls-side-view_141793-2395.jpg",
},
{
title: "Tarta de queso casera",
description: "La que ha hecho fama propia.",
imageSrc: "http://img.b2bpic.net/free-photo/slice-cheesecake_1232-2725.jpg",
},
{
title: "Tiramisú",
description: "Delicado, cremoso, el cierre perfecto.",
imageSrc: "http://img.b2bpic.net/free-photo/tiramisu-decoration-concept_23-2148531567.jpg",
},
{
title: "Nachos",
description: "Generosos, para compartir o no.",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-yummy-pancakes-with-sliced-fruits-chocolate-dark-grey-background-sweet-color-breakfast-sugar-fruit-cake-dessert_140725-109038.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<CartaSection />
<div id="testimonios" data-section="testimonios">
<SectionErrorBoundary name="testimonios">
<TestimonialRatingCards
tag="Reseñas reales"
title="775 razones para venir"
description="Valoración de 4.5★ en Google por nuestra comunidad."
testimonials={[
{
name: "Ana García",
role: "Cliente habitual",
quote: "Bocadillos muy ricos, ensalada césar y nachos deliciosos.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-smiley-business-owner_23-2149434511.jpg",
},
{
name: "Carlos Ruiz",
role: "Vecino del barrio",
quote: "Las patatas con mojo buenísimas, camareros atentos.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/young-woman-cafe-dines-traditional-shakshuka-ayran_169016-16512.jpg",
},
{
name: "Marta López",
role: "Amante del café",
quote: "Un buen lugar para echar una jarra de cerveza y un pincho.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/young-pretty-woman-eating-pizza-pizza-bar_1303-20328.jpg",
},
{
name: "Sofía Pérez",
role: "Desayunadora",
quote: "El mejor bar para desayunar en Zaragoza. Espectacular.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-girl-eating-vegetarian-lunch_1398-4123.jpg",
},
{
name: "Jorge Gómez",
role: "Cliente diario",
quote: "Muy buena comida, lo mejor es la familiaridad del equipo.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/handsome-young-man-wearing-trendy-hat-sitting-wooden-table-coffee-shop_273609-1622.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<TestimoniosSection />
<div id="ambiente" data-section="ambiente">
<SectionErrorBoundary name="ambiente">
<AboutMediaOverlay
tag="Tu rincón"
title="Tu rincón en Cesáreo Alierta"
description="Terraza para los días de sol, mesas cálidas para los de cuchara, y una barra donde siempre hay sitio para una caña rápida."
imageSrc="http://img.b2bpic.net/free-photo/group-four-south-asian-men-s-posed-business-meeting-cafe-indians-work-together-using-various-gadgets-having-conversation_627829-5231.jpg"
/>
</SectionErrorBoundary>
</div>
<AmbienteSection />
<div id="contacto" data-section="contacto">
<SectionErrorBoundary name="contacto">
<ContactCta
tag="Te esperamos"
text="Av. de Cesáreo Alierta, 23 · 876 43 12 26 · Martes a domingo"
primaryButton={{
text: "Reservar mesa",
href: "#",
}}
secondaryButton={{
text: "Ver ubicación",
href: "#",
}}
/>
</SectionErrorBoundary>
</div>
<ContactoSection />
</>
);
}

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 "ambiente" section.
import React from 'react';
import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function AmbienteSection(): React.JSX.Element {
return (
<div id="ambiente" data-section="ambiente">
<SectionErrorBoundary name="ambiente">
<AboutMediaOverlay
tag="Por qué confiar en nosotros"
title="Más que un taller, un compromiso"
description="Sabemos que dejar tu coche en manos de alguien es un acto de confianza. Por eso en Constancia Motor cuidamos cada detalle: te explicamos el problema en un lenguaje claro, te damos un presupuesto cerrado antes de empezar, y trabajamos con la misma exigencia que pondríamos en nuestro propio coche. Casi 30 años después, seguimos siendo el taller donde el barrio —y quienes ya no viven en él— traen lo que más les importa."
imageSrc="http://img.b2bpic.net/free-photo/mechanic-hands-checking-up-car-engine-with-tools_1150-7231.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 "carta" section.
import React from 'react';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function CartaSection(): React.JSX.Element {
return (
<div id="carta" data-section="carta">
<SectionErrorBoundary name="carta">
<FeaturesImageBento
tag="Servicios"
title="Todo lo que tu coche necesita, en un solo sitio"
description="Mecánica multimarca para que no tengas que buscar en otro lado."
items={[{"imageSrc":"http://img.b2bpic.net/free-photo/mechanic-hands-checking-up-car-engine-with-tools_1150-7231.jpg","title":"Diagnóstico de averías","description":"Detectamos el problema real, no el que parece"},{"description":"Cambios de aceite, filtros y puesta a punto general","title":"Mantenimiento y revisiones","imageSrc":"http://img.b2bpic.net/free-photo/mechanic-repairing-car-engine_1303-26532.jpg"},{"description":"Seguridad antes que nada, revisada a fondo","imageSrc":"http://img.b2bpic.net/free-photo/car-mechanic-changing-wheels-auto-repair-shop_146671-19717.jpg","title":"Frenos y suspensión"},{"description":"Las piezas críticas, tratadas con la precisión que merecen","title":"Distribución y embrague","imageSrc":"http://img.b2bpic.net/free-photo/auto-mechanic-working-garage_1150-5828.jpg"},{"imageSrc":"http://img.b2bpic.net/free-photo/mechanic-examining-car-engine_1150-7232.jpg","title":"Sistema de refrigeración","description":"Evitamos que tu motor sufra de más"},{"title":"Electricidad del automóvil","imageSrc":"http://img.b2bpic.net/free-photo/mechanic-holding-clipboard-auto-repair-shop_1150-7233.jpg","description":"Desde luces de avería hasta fallos eléctricos complejos"},{"description":"Cambio, equilibrado y alineación","imageSrc":"http://img.b2bpic.net/free-photo/car-mechanic-changing-wheels-auto-repair-shop_146671-19717.jpg","title":"Neumáticos"},{"title":"Pre-ITV","imageSrc":"http://img.b2bpic.net/free-photo/car-repair-maintenance-theme-mechanic-uniform-working-auto-service_627829-3918.jpg","description":"Revisamos antes de que lo haga la inspección"}]}
/>
</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 "contacto" section.
import React from 'react';
import ContactCta from '@/components/sections/contact/ContactCta';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ContactoSection(): React.JSX.Element {
return (
<div id="contacto" data-section="contacto">
<SectionErrorBoundary name="contacto">
<ContactCta
tag="Te esperamos en el taller"
text="C. de la Constancia, 40, Chamartín, 28002 Madrid · 914 15 96 56 · Abierto de lunes a viernes"
primaryButton={{"text":"Pedir cita","href":"#"}}
secondaryButton={{"href":"tel:914159656","text":"Llamar ahora"}}
/>
</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 "features" section.
import React from 'react';
import FeaturesMediaCards from '@/components/sections/features/FeaturesMediaCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FeaturesSection(): React.JSX.Element {
return (
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesMediaCards
tag="Por qué nos eligen"
title="Lo que dicen quienes ya confían en nosotros"
description="Basado en reseñas reales de nuestros clientes."
items={[{"imageSrc":"http://img.b2bpic.net/free-photo/mechanic-holding-clipboard-auto-repair-shop_1150-7233.jpg","title":"Diagnóstico honesto, sin sorpresas","description":"Te explicamos qué tiene tu coche y cuánto cuesta arreglarlo antes de tocar nada. Sin letra pequeña ni añadidos de última hora."},{"title":"Rápidos cuando lo necesitas de verdad","imageSrc":"http://img.b2bpic.net/free-photo/car-mechanic-changing-wheels-auto-repair-shop_146671-19717.jpg","description":"Sabemos que sin coche la vida se complica. Por eso resolvemos con la rapidez que el problema permite, sin atajos en la calidad."},{"description":"Mario, Antonio y el resto del equipo no son números. Son los mecánicos que recordarán tu coche la próxima vez que vuelvas.","imageSrc":"http://img.b2bpic.net/free-photo/handsome-mechanic-working-auto-repair-shop_1303-26534.jpg","title":"Un equipo con nombre y cara"},{"description":"Profesionales, limpios y económicos. Un taller donde el presupuesto que te dan es el que pagas.","imageSrc":"http://img.b2bpic.net/free-photo/mechanic-examining-car-engine_1150-7232.jpg","title":"Precios justos, sin tonterías"},{"imageSrc":"http://img.b2bpic.net/free-photo/car-repair-maintenance-theme-mechanic-uniform-working-auto-service_627829-3918.jpg","title":"Casi 30 años de experiencia real","description":"Desde 1997 reparando coches en Chamartín. La experiencia se nota en cada diagnóstico."}]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,26 @@
// 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 HeroSplitVerticalMarquee from '@/components/sections/hero/HeroSplitVerticalMarquee';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HeroSection(): React.JSX.Element {
return (
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroSplitVerticalMarquee
tag="Talleres Constancia Motor"
title="Casi 30 años cuidando coches en Chamartín. Y diciéndote siempre la verdad."
description="Diagnóstico honesto, reparación bien hecha y un equipo que conoce tu coche por su nombre. Así trabajamos en Talleres Constancia Motor.
C. de la Constancia, 40, Chamartín, 28002 Madrid · Abierto de lunes a viernes"
primaryButton={{"href":"#contacto","text":"Pedir cita"}}
secondaryButton={{"text":"Llamar ahora","href":"tel:914159656"}}
leftItems={[{"imageSrc":"http://img.b2bpic.net/free-photo/car-mechanic-changing-wheels-auto-repair-shop_146671-19717.jpg"},{"imageSrc":"http://img.b2bpic.net/free-photo/mechanic-repairing-car-engine_1303-26532.jpg"},{"imageSrc":"http://img.b2bpic.net/free-photo/auto-mechanic-working-garage_1150-5828.jpg"},{"imageSrc":"http://img.b2bpic.net/free-photo/handsome-mechanic-working-auto-repair-shop_1303-26534.jpg"},{"imageSrc":"http://img.b2bpic.net/free-photo/car-repair-maintenance-theme-mechanic-uniform-working-auto-service_627829-3918.jpg"},{"imageSrc":"http://img.b2bpic.net/free-photo/mechanic-hands-checking-up-car-engine-with-tools_1150-7231.jpg"}]}
rightItems={[{"imageSrc":"http://img.b2bpic.net/free-photo/mechanic-examining-car-engine_1150-7232.jpg"},{"imageSrc":"http://img.b2bpic.net/free-photo/mechanic-holding-clipboard-auto-repair-shop_1150-7233.jpg"},{"imageSrc":"http://img.b2bpic.net/free-photo/mechanic-repairing-car-engine_1303-26532.jpg"},{"imageSrc":"http://img.b2bpic.net/free-photo/car-mechanic-changing-wheels-auto-repair-shop_146671-19717.jpg"},{"imageSrc":"http://img.b2bpic.net/free-photo/auto-mechanic-working-garage_1150-5828.jpg"},{"imageSrc":"http://img.b2bpic.net/free-photo/handsome-mechanic-working-auto-repair-shop_1303-26534.jpg"}]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,75 @@
/* eslint-disable */
// @ts-nocheck — generated by catalog-eject; runtime-correct but TS strict-mode false-positives on inlined catalog body
import { motion } from "motion/react";
import Button from "@/components/ui/Button";
import TextAnimation from "@/components/ui/TextAnimation";
import ImageOrVideo from "@/components/ui/ImageOrVideo";
type AboutMediaOverlayProps = {
tag: string;
title: string;
description: string;
primaryButton?: { text: string; href: string };
secondaryButton?: { text: string; href: string };
} & ({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never });
const HistoriaInline = () => {
return (
<section aria-label="About section" className="py-20 bg-background">
<div className="mx-auto w-content-width">
<div className="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
<div>
<motion.span
initial={{ opacity: 0, y: 10 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true, margin: "-15%" }}
transition={{ duration: 0.4, ease: "easeOut" }}
className="mb-6 inline-block px-3 py-1 text-sm bg-primary-cta text-primary-cta-text rounded"
>
{"Desde 1997"}
</motion.span>
<TextAnimation
text={"Desde 1997, el taller al que la gente vuelve aunque viva lejos."}
variant="fade"
gradientText={false}
tag="h2"
className="text-4xl md:text-5xl leading-[1.15] font-bold text-balance text-foreground mb-6"
/>
<TextAnimation
text={"Constancia Motor nació en el barrio de Prosperidad y lleva casi tres décadas reparando coches con la misma filosofía: hacerlo bien a la primera y tratar a cada cliente como si fuera el único. No somos una cadena ni un taller de paso. Somos el sitio donde Mario, Antonio y todo el equipo conocen tu coche, te explican qué le pasa sin enredarte, y te cobran lo justo. Por eso hay clientes que, aunque ya no vivan cerca, siguen trayendo su coche aquí."}
variant="fade"
gradientText={false}
tag="p"
className="text-lg leading-snug text-balance text-secondary-cta-text mb-6"
/>
<blockquote className="border-l-4 border-primary-cta pl-4 italic text-foreground text-lg">
"A pesar de residir lejos, acudo a ellos para cualquier reparación. Constancia Motor es sin duda un lugar de confianza al cien por cien."
</blockquote>
{(undefined || undefined) && (
<div className="flex flex-wrap gap-3 mt-6">
{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="relative rounded overflow-hidden">
<ImageOrVideo imageSrc={"http://img.b2bpic.net/free-photo/auto-mechanic-working-garage_1150-5828.jpg"} className="w-full h-auto object-cover aspect-[4/3]" />
</div>
</div>
</div>
</section>
);
};
export default function HistoriaSection() {
return (
<div data-webild-section="historia" id="historia">
<HistoriaInline />
</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 "testimonios" section.
import React from 'react';
import TestimonialRatingCards from '@/components/sections/testimonial/TestimonialRatingCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function TestimoniosSection(): React.JSX.Element {
return (
<div id="testimonios" data-section="testimonios">
<SectionErrorBoundary name="testimonios">
<TestimonialRatingCards
tag="Testimonios reales"
title="57 reseñas, una misma palabra: confianza"
description="4,5★ en Google · +57 reseñas"
testimonials={[{"quote":"Rápidos y eficaces, además de simpatía y amabilidad.","role":"Reseña de Google","name":"Cliente Satisfecho","imageSrc":"http://img.b2bpic.net/free-photo/handsome-mechanic-working-auto-repair-shop_1303-26534.jpg","rating":5},{"rating":5,"imageSrc":"http://img.b2bpic.net/free-photo/mechanic-holding-clipboard-auto-repair-shop_1150-7233.jpg","quote":"Profesionales, limpios y económicos, un sitio donde fiarse.","role":"Reseña de Google","name":"Cliente Satisfecho"},{"imageSrc":"http://img.b2bpic.net/free-photo/mechanic-examining-car-engine_1150-7232.jpg","name":"Cliente Satisfecho","quote":"Buena atención, buen servicio.","role":"Reseña de Google","rating":5},{"name":"Cliente Satisfecho","quote":"Gran taller y grandes profesionales. Nos atendió Mario y todo fue fenomenal, la luz de avería de mi coche no se ha vuelto a encender. Sin duda volveré.","role":"Reseña de Google","imageSrc":"http://img.b2bpic.net/free-photo/auto-mechanic-working-garage_1150-5828.jpg","rating":5},{"name":"Cliente Satisfecho","quote":"Adolfo es un mecánico de los que quedan pocos. Serio, profesional y mirando siempre lo mejor para el cliente.","role":"Reseña de Google","imageSrc":"http://img.b2bpic.net/free-photo/car-repair-maintenance-theme-mechanic-uniform-working-auto-service_627829-3918.jpg","rating":5}]}
/>
</SectionErrorBoundary>
</div>
);
}