From 4caa4597842a7175432b9cc9ba91829046b41045 Mon Sep 17 00:00:00 2001 From: kudinDmitriyUp Date: Mon, 15 Jun 2026 19:12:54 +0000 Subject: [PATCH 1/3] Bob AI: Applied industrial premium dark theme colors. --- src/index.css | 18 +- src/pages/HomePage.tsx | 315 ++----------------- src/pages/HomePage/sections/About.tsx | 22 ++ src/pages/HomePage/sections/Contact.tsx | 27 ++ src/pages/HomePage/sections/Faq.tsx | 35 +++ src/pages/HomePage/sections/Hero.tsx | 68 ++++ src/pages/HomePage/sections/Metrics.tsx | 46 +++ src/pages/HomePage/sections/Services.tsx | 49 +++ src/pages/HomePage/sections/Showcase.tsx | 64 ++++ src/pages/HomePage/sections/Testimonials.tsx | 57 ++++ 10 files changed, 401 insertions(+), 300 deletions(-) create mode 100644 src/pages/HomePage/sections/About.tsx create mode 100644 src/pages/HomePage/sections/Contact.tsx create mode 100644 src/pages/HomePage/sections/Faq.tsx create mode 100644 src/pages/HomePage/sections/Hero.tsx create mode 100644 src/pages/HomePage/sections/Metrics.tsx create mode 100644 src/pages/HomePage/sections/Services.tsx create mode 100644 src/pages/HomePage/sections/Showcase.tsx create mode 100644 src/pages/HomePage/sections/Testimonials.tsx diff --git a/src/index.css b/src/index.css index 7ac7135..067d14a 100644 --- a/src/index.css +++ b/src/index.css @@ -5,15 +5,15 @@ :root { /* @colorThemes/lightTheme/grayNavyBlue */ - --background: #f6f0e9; - --card: #efe7dd; - --foreground: #2b180a; - --primary-cta: #2b180a; - --primary-cta-text: #f6f0e9; - --secondary-cta: #efe7dd; - --secondary-cta-text: #2b180a; - --accent: #94877c; - --background-accent: #afa094; + --background: #0a0a0a; + --card: #141414; + --foreground: #e5e5e5; + --primary-cta: #ffffff; + --primary-cta-text: #000000; + --secondary-cta: #262626; + --secondary-cta-text: #e5e5e5; + --accent: #8c7355; + --background-accent: #1f1f1f; /* @layout/border-radius/rounded */ --radius: 1rem; diff --git a/src/pages/HomePage.tsx b/src/pages/HomePage.tsx index bf07569..b5a2dad 100644 --- a/src/pages/HomePage.tsx +++ b/src/pages/HomePage.tsx @@ -1,303 +1,36 @@ -import AboutText from '@/components/sections/about/AboutText'; -import ContactCta from '@/components/sections/contact/ContactCta'; -import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia'; -import FeaturesDetailedCards from '@/components/sections/features/FeaturesDetailedCards'; -import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento'; -import HeroSplitVerticalMarquee from '@/components/sections/hero/HeroSplitVerticalMarquee'; -import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards'; -import TestimonialRatingCards from '@/components/sections/testimonial/TestimonialRatingCards'; -import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; +// AUTO-GENERATED shell by per-section-migrate. +// Section bodies live in .//sections/.tsx. Edit the section +// files directly. Non-block content (wrappers, non-inlinable sections) is +// preserved inline; extracted section blocks become refs. -export default function HomePage() { +import React from 'react'; +import HeroSection from './HomePage/sections/Hero'; +import AboutSection from './HomePage/sections/About'; +import ServicesSection from './HomePage/sections/Services'; +import ShowcaseSection from './HomePage/sections/Showcase'; +import MetricsSection from './HomePage/sections/Metrics'; +import TestimonialsSection from './HomePage/sections/Testimonials'; +import FaqSection from './HomePage/sections/Faq'; +import ContactSection from './HomePage/sections/Contact'; + +export default function HomePage(): React.JSX.Element { return ( - <> -
- - - -
+<> + -
- - - -
+ -
- - - -
+ -
- - - -
+ -
- - - -
+ -
- - - -
+ -
- - - -
+ -
- - - -
+ ); } diff --git a/src/pages/HomePage/sections/About.tsx b/src/pages/HomePage/sections/About.tsx new file mode 100644 index 0000000..fb15705 --- /dev/null +++ b/src/pages/HomePage/sections/About.tsx @@ -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 AboutText from '@/components/sections/about/AboutText'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function AboutSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Contact.tsx b/src/pages/HomePage/sections/Contact.tsx new file mode 100644 index 0000000..a3c74c7 --- /dev/null +++ b/src/pages/HomePage/sections/Contact.tsx @@ -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 ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Faq.tsx b/src/pages/HomePage/sections/Faq.tsx new file mode 100644 index 0000000..c4e89b1 --- /dev/null +++ b/src/pages/HomePage/sections/Faq.tsx @@ -0,0 +1,35 @@ +// 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 ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Hero.tsx b/src/pages/HomePage/sections/Hero.tsx new file mode 100644 index 0000000..7f461b0 --- /dev/null +++ b/src/pages/HomePage/sections/Hero.tsx @@ -0,0 +1,68 @@ +// 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 ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Metrics.tsx b/src/pages/HomePage/sections/Metrics.tsx new file mode 100644 index 0000000..a0dd1bb --- /dev/null +++ b/src/pages/HomePage/sections/Metrics.tsx @@ -0,0 +1,46 @@ +// 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 MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function MetricsSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Services.tsx b/src/pages/HomePage/sections/Services.tsx new file mode 100644 index 0000000..0d0f9b4 --- /dev/null +++ b/src/pages/HomePage/sections/Services.tsx @@ -0,0 +1,49 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "services" section. + +import React from 'react'; +import FeaturesDetailedCards from '@/components/sections/features/FeaturesDetailedCards'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function ServicesSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Showcase.tsx b/src/pages/HomePage/sections/Showcase.tsx new file mode 100644 index 0000000..ce490bb --- /dev/null +++ b/src/pages/HomePage/sections/Showcase.tsx @@ -0,0 +1,64 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "showcase" section. + +import React from 'react'; +import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function ShowcaseSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Testimonials.tsx b/src/pages/HomePage/sections/Testimonials.tsx new file mode 100644 index 0000000..bde4b59 --- /dev/null +++ b/src/pages/HomePage/sections/Testimonials.tsx @@ -0,0 +1,57 @@ +// 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 TestimonialRatingCards from '@/components/sections/testimonial/TestimonialRatingCards'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function TestimonialsSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} -- 2.49.1 From 12845781140afc8a3a43950f063564920744c14a Mon Sep 17 00:00:00 2001 From: kudinDmitriyUp Date: Mon, 15 Jun 2026 19:16:50 +0000 Subject: [PATCH 2/3] Bob AI: Fixed hero image layout and applied dark theme. --- src/pages/HomePage/sections/About.tsx | 9 +- src/pages/HomePage/sections/Contact.tsx | 16 +-- src/pages/HomePage/sections/Faq.tsx | 25 +--- src/pages/HomePage/sections/Hero.tsx | 130 ++++++++++--------- src/pages/HomePage/sections/Metrics.tsx | 35 +---- src/pages/HomePage/sections/Services.tsx | 38 +----- src/pages/HomePage/sections/Showcase.tsx | 53 +------- src/pages/HomePage/sections/Testimonials.tsx | 46 +------ 8 files changed, 102 insertions(+), 250 deletions(-) diff --git a/src/pages/HomePage/sections/About.tsx b/src/pages/HomePage/sections/About.tsx index fb15705..5c07d30 100644 --- a/src/pages/HomePage/sections/About.tsx +++ b/src/pages/HomePage/sections/About.tsx @@ -10,12 +10,9 @@ export default function AboutSection(): React.JSX.Element {
+ title="Norte Bravo Carpintería nace de la pasión por construir espacios con carácter. Especializados en carpintería comercial, montaje de stands, showrooms y escaparates para marcas que buscan diferenciarse. Trabajamos con precisión, detalle y mentalidad internacional, creando proyectos que no solo se construyen, sino que se sienten." + primaryButton={{"href":"#services","text":"Nuestros servicios"}} + />
); diff --git a/src/pages/HomePage/sections/Contact.tsx b/src/pages/HomePage/sections/Contact.tsx index a3c74c7..72b6a3e 100644 --- a/src/pages/HomePage/sections/Contact.tsx +++ b/src/pages/HomePage/sections/Contact.tsx @@ -10,17 +10,11 @@ export default function ContactSection(): React.JSX.Element {
+ tag="Contacto" + text="¿Tienes un proyecto en mente? Hablemos." + primaryButton={{"href":"#","text":"Solicitar presupuesto"}} + secondaryButton={{"text":"hola@nortebravo.com","href":"mailto:hola@nortebravo.com"}} + />
); diff --git a/src/pages/HomePage/sections/Faq.tsx b/src/pages/HomePage/sections/Faq.tsx index c4e89b1..9414123 100644 --- a/src/pages/HomePage/sections/Faq.tsx +++ b/src/pages/HomePage/sections/Faq.tsx @@ -10,25 +10,12 @@ export default function FaqSection(): React.JSX.Element {
+ tag="El Fundador" + title="Norte Bravo" + description="Un carpintero moderno, trabajador, internacional y diferente. Pasión por el oficio." + items={[{"answer":"Nos dedicamos en cuerpo y alma a cada proyecto, asegurando que el resultado final sea perfecto.","question":"Trabajo duro"},{"answer":"Cada milímetro cuenta. Utilizamos técnicas avanzadas y herramientas de última generación.","question":"Precisión"},{"answer":"Buscamos siempre el equilibrio perfecto entre funcionalidad y un diseño visualmente impactante.","question":"Estética"},{"answer":"Años de trabajo en el sector nos avalan, enfrentando retos complejos con soluciones eficaces.","question":"Experiencia real"},{"question":"Espíritu viajero","answer":"Inspirados por tendencias globales, aportamos una visión internacional a cada diseño."},{"answer":"Siempre buscando mejorar, aprender nuevas técnicas y superar nuestros propios límites.","question":"Mentalidad de crecimiento"}]} + imageSrc="https://picsum.photos/seed/154548791/1200/800" + />
); diff --git a/src/pages/HomePage/sections/Hero.tsx b/src/pages/HomePage/sections/Hero.tsx index 7f461b0..018b884 100644 --- a/src/pages/HomePage/sections/Hero.tsx +++ b/src/pages/HomePage/sections/Hero.tsx @@ -1,68 +1,74 @@ -// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this -// file as the canonical source for the "hero" section. +/* 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 HeroBackgroundSlot from "@/components/ui/HeroBackgroundSlot"; +import TextAnimation from "@/components/ui/TextAnimation"; +import ImageOrVideo from "@/components/ui/ImageOrVideo"; +import ScrollReveal from "@/components/ui/ScrollReveal"; -import React from 'react'; -import HeroSplitVerticalMarquee from '@/components/sections/hero/HeroSplitVerticalMarquee'; -import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; +const primaryButton = { + href: "#showcase", + text: "Ver proyectos" +}; +const secondaryButton = { + href: "#contact", + text: "Pedir presupuesto" +}; -export default function HeroSection(): React.JSX.Element { +type HeroSplitProps = { + 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 HeroInline = () => { return ( -
- - - +
+ +
+
+
+
+

{"Diseño. Precisión. Montaje. Norte Bravo."}

+
+ + + + + +
+
+
+
+ + + +
+
+ ); +}; + +export default function HeroSection() { + return ( +
+ +
); } diff --git a/src/pages/HomePage/sections/Metrics.tsx b/src/pages/HomePage/sections/Metrics.tsx index a0dd1bb..4ac3fed 100644 --- a/src/pages/HomePage/sections/Metrics.tsx +++ b/src/pages/HomePage/sections/Metrics.tsx @@ -10,36 +10,11 @@ export default function MetricsSection(): React.JSX.Element {
+ tag="Proceso" + title="Nuestro método de trabajo" + description="Nos obsesiona el detalle." + metrics={[{"title":"Idea del cliente","features":["Escucha activa","Requisitos"],"value":"01"},{"value":"02","title":"Diseño y planificación","features":["Planos","Materiales"]},{"value":"03","title":"Fabricación y montaje","features":["Precisión","Taller"]},{"title":"Entrega impecable","features":["Acabados","Limpieza"],"value":"04"}]} + />
); diff --git a/src/pages/HomePage/sections/Services.tsx b/src/pages/HomePage/sections/Services.tsx index 0d0f9b4..5413c76 100644 --- a/src/pages/HomePage/sections/Services.tsx +++ b/src/pages/HomePage/sections/Services.tsx @@ -10,39 +10,11 @@ export default function ServicesSection(): React.JSX.Element {
+ tag="Servicios" + title="Soluciones para Retail y Marcas" + description="Cada servicio debe transmitir profesionalidad y acabados de alto nivel." + items={[{"imageSrc":"https://images.unsplash.com/photo-1540575467063-178a50c2df87?auto=format&fit=crop&q=80&w=800","description":"Estructuras impactantes para ferias y eventos internacionales.","title":"Montaje de stands","tags":["Stands","Eventos"]},{"tags":["Showrooms","Retail"],"title":"Showrooms","imageSrc":"https://images.unsplash.com/photo-1441986300917-64674bd600d8?auto=format&fit=crop&q=80&w=800","description":"Espacios inmersivos que reflejan la identidad de tu marca."},{"title":"Escaparates","imageSrc":"https://images.unsplash.com/photo-1567401893414-76b7b1e5a7a5?auto=format&fit=crop&q=80&w=800","description":"Diseños que capturan miradas y atraen clientes.","tags":["Escaparates","Diseño"]},{"title":"Expositores comerciales","imageSrc":"https://images.unsplash.com/photo-1555529771-835f59fc5efe?auto=format&fit=crop&q=80&w=800","description":"Mobiliario comercial diseñado para destacar tus productos.","tags":["Expositores","Retail"]},{"title":"Suelos","imageSrc":"https://images.unsplash.com/photo-1581858726788-75bc0f6a952d?auto=format&fit=crop&q=80&w=800","description":"Instalación de suelos de alta resistencia y estética impecable.","tags":["Suelos","Instalación"]},{"tags":["A medida","Premium"],"title":"Carpintería a medida","imageSrc":"https://images.unsplash.com/photo-1581091226825-a6a2a5aee158?auto=format&fit=crop&q=80&w=800","description":"Soluciones únicas para espacios comerciales exigentes."}]} + />
); diff --git a/src/pages/HomePage/sections/Showcase.tsx b/src/pages/HomePage/sections/Showcase.tsx index ce490bb..ce752a5 100644 --- a/src/pages/HomePage/sections/Showcase.tsx +++ b/src/pages/HomePage/sections/Showcase.tsx @@ -10,54 +10,11 @@ export default function ShowcaseSection(): React.JSX.Element {
+ tag="Proyectos" + title="Portfolio Destacado" + description="Una muestra de nuestra dedicación al detalle y amor por la madera en espacios comerciales." + items={[{"href":"#","description":"Montaje completo para tienda de ropa.","imageSrc":"https://images.unsplash.com/photo-1441984904996-e0b6ba687e04?auto=format&fit=crop&q=80&w=800","title":"Retail Premium"},{"href":"#","description":"Expositores y probadores a medida.","imageSrc":"https://images.unsplash.com/photo-1567401893414-76b7b1e5a7a5?auto=format&fit=crop&q=80&w=800","title":"Moda"},{"title":"Showrooms","description":"Espacio inmersivo para nueva colección.","imageSrc":"https://images.unsplash.com/photo-1497366216548-37526070297c?auto=format&fit=crop&q=80&w=800","href":"#"},{"href":"#","description":"Stand de alto impacto visual.","imageSrc":"https://images.unsplash.com/photo-1540575467063-178a50c2df87?auto=format&fit=crop&q=80&w=800","title":"Eventos"},{"href":"#","description":"Mobiliario exclusivo para boutique.","imageSrc":"https://images.unsplash.com/photo-1555529771-835f59fc5efe?auto=format&fit=crop&q=80&w=800","title":"Carpintería personalizada"}]} + />
); diff --git a/src/pages/HomePage/sections/Testimonials.tsx b/src/pages/HomePage/sections/Testimonials.tsx index bde4b59..7519e84 100644 --- a/src/pages/HomePage/sections/Testimonials.tsx +++ b/src/pages/HomePage/sections/Testimonials.tsx @@ -10,47 +10,11 @@ export default function TestimonialsSection(): React.JSX.Element {
+ tag="Confianza" + title="Opiniones de clientes" + description="Las marcas vuelven cuando el trabajo está bien hecho." + testimonials={[{"quote":"El stand que montaron para nuestra marca en la feria superó todas las expectativas. Impecable.","role":"Directora de Marketing","rating":5,"name":"Laura Gómez","imageSrc":"https://images.unsplash.com/photo-1573496359142-b8d87734a5a2?auto=format&fit=crop&q=80&w=800"},{"rating":5,"role":"CEO Retail Brand","quote":"La precisión en los acabados de nuestro nuevo showroom es de otro nivel. Profesionales de verdad.","imageSrc":"https://images.unsplash.com/photo-1560250097-0b93528c311a?auto=format&fit=crop&q=80&w=800","name":"David Ruiz"},{"quote":"Entendieron perfectamente la estética industrial que buscábamos para nuestros escaparates.","rating":5,"role":"Visual Merchandiser","name":"Marta Blanco","imageSrc":"https://images.unsplash.com/photo-1580489944761-15a19d654956?auto=format&fit=crop&q=80&w=800"}]} + />
); -- 2.49.1 From ce08e3058b4aa43971b72b5740dd402107f5be79 Mon Sep 17 00:00:00 2001 From: kudinDmitriyUp Date: Mon, 15 Jun 2026 19:17:47 +0000 Subject: [PATCH 3/3] Bob AI: fix build errors (attempt 1) --- src/pages/HomePage/sections/Showcase.tsx | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/pages/HomePage/sections/Showcase.tsx b/src/pages/HomePage/sections/Showcase.tsx index ce752a5..e19305c 100644 --- a/src/pages/HomePage/sections/Showcase.tsx +++ b/src/pages/HomePage/sections/Showcase.tsx @@ -13,9 +13,17 @@ export default function ShowcaseSection(): React.JSX.Element { tag="Proyectos" title="Portfolio Destacado" description="Una muestra de nuestra dedicación al detalle y amor por la madera en espacios comerciales." - items={[{"href":"#","description":"Montaje completo para tienda de ropa.","imageSrc":"https://images.unsplash.com/photo-1441984904996-e0b6ba687e04?auto=format&fit=crop&q=80&w=800","title":"Retail Premium"},{"href":"#","description":"Expositores y probadores a medida.","imageSrc":"https://images.unsplash.com/photo-1567401893414-76b7b1e5a7a5?auto=format&fit=crop&q=80&w=800","title":"Moda"},{"title":"Showrooms","description":"Espacio inmersivo para nueva colección.","imageSrc":"https://images.unsplash.com/photo-1497366216548-37526070297c?auto=format&fit=crop&q=80&w=800","href":"#"},{"href":"#","description":"Stand de alto impacto visual.","imageSrc":"https://images.unsplash.com/photo-1540575467063-178a50c2df87?auto=format&fit=crop&q=80&w=800","title":"Eventos"},{"href":"#","description":"Mobiliario exclusivo para boutique.","imageSrc":"https://images.unsplash.com/photo-1555529771-835f59fc5efe?auto=format&fit=crop&q=80&w=800","title":"Carpintería personalizada"}]} + items={[ + {"href":"#","description":"Montaje completo para tienda de ropa.","imageSrc":"https://images.unsplash.com/photo-1441984904996-e0b6ba687e04?auto=format&fit=crop&q=80&w=800","title":"Retail Premium"}, + {"href":"#","description":"Expositores y probadores a medida.","imageSrc":"https://images.unsplash.com/photo-1567401893414-76b7b1e5a7a5?auto=format&fit=crop&q=80&w=800","title":"Moda"}, + {"title":"Showrooms","description":"Espacio inmersivo para nueva colección.","imageSrc":"https://images.unsplash.com/photo-1497366216548-37526070297c?auto=format&fit=crop&q=80&w=800","href":"#"}, + {"href":"#","description":"Stand de alto impacto visual.","imageSrc":"https://images.unsplash.com/photo-1540575467063-178a50c2df87?auto=format&fit=crop&q=80&w=800","title":"Eventos"}, + {"href":"#","description":"Mobiliario exclusivo para boutique.","imageSrc":"https://images.unsplash.com/photo-1555529771-835f59fc5efe?auto=format&fit=crop&q=80&w=800","title":"Carpintería personalizada"}, + {"href":"#","description":"Diseño y montaje de stands para ferias internacionales.","imageSrc":"https://images.unsplash.com/photo-1504307651254-35680f356f27?auto=format&fit=crop&q=80&w=800","title":"Stands Comerciales"}, + {"href":"#","description":"Detalles en madera y metal para espacios de lujo.","imageSrc":"https://images.unsplash.com/photo-1581858726788-75bc0f6a952d?auto=format&fit=crop&q=80&w=800","title":"Acabados Premium"} + ]} />
); -} +} \ No newline at end of file -- 2.49.1