Merge version_2_1781409046753 into main #3

Merged
bender merged 1 commits from version_2_1781409046753 into main 2026-06-14 03:52:14 +00:00
9 changed files with 336 additions and 269 deletions

View File

@@ -1,281 +1,36 @@
import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqTabbedAccordion from '@/components/sections/faq/FaqTabbedAccordion';
import FeaturesBentoGrid from '@/components/sections/features/FeaturesBentoGrid';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import HeroCenteredLogos from '@/components/sections/hero/HeroCenteredLogos';
import MetricsIconCards from '@/components/sections/metrics/MetricsIconCards';
import TestimonialQuoteCards from '@/components/sections/testimonial/TestimonialQuoteCards';
import { Award, CheckCircle, Shield, Sparkles, Star, Users } from "lucide-react";
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 FeaturesSection from './HomePage/sections/Features';
import ProjectsSection from './HomePage/sections/Projects';
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 (
<>
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroCenteredLogos
avatarsSrc={[
"http://img.b2bpic.net/free-photo/young-people-having-fun_23-2149832986.jpg",
"http://img.b2bpic.net/free-photo/family-moving-using-boxes_1157-35479.jpg",
"http://img.b2bpic.net/free-photo/beautiful-young-african-american-woman-smiling-cheerful-friendly-face-laughing-confident_839833-29956.jpg",
"http://img.b2bpic.net/free-photo/male-real-estate-agent-doing-business-showing-house-potential-buying-couple_23-2150164714.jpg",
"http://img.b2bpic.net/free-photo/colleagues-sharing-high-five-office_482257-119313.jpg",
]}
avatarText="Trusted by 500+ families"
title="Crafting Timeless Spaces in the Heart of Madrid"
description="We blend Mediterranean warmth with contemporary luxury to transform your home into a sanctuary of elegance and comfort."
primaryButton={{
text: "View Projects",
href: "#projects",
}}
secondaryButton={{
text: "Contact Us",
href: "#contact",
}}
names={[
"Madrid",
"Barcelona",
"Seville",
"Valencia",
"Bilbao",
"Malaga",
]}
imageSrc="http://img.b2bpic.net/free-photo/close-up-happy-healthy-young-woman-with-dark-curly-hair-lying-comfortable-sofa-terrace_197531-22796.jpg"
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutFeaturesSplit
tag="Our Philosophy"
title="Design that Reflects Your Essence"
description="With over two decades of experience in the Madrid architecture and design scene, we specialize in curating bespoke interiors that tell your personal story through textures, light, and form."
items={[
{
icon: Sparkles,
title: "Bespoke Curation",
description: "Every element is hand-selected to match your vision.",
},
{
icon: CheckCircle,
title: "Precision Execution",
description: "From planning to installation, we manage every detail.",
},
{
icon: Shield,
title: "Quality Assurance",
description: "We partner only with the finest local craftsmen.",
},
]}
imageSrc="http://img.b2bpic.net/free-photo/cropped-top-view-young-beautiful-female-architect-hands-doing-blueprints-with-ruler-pen-white-table-coworking-space-business-concept_176420-8525.jpg"
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesBentoGrid
tag="Our Expertise"
title="Comprehensive Design Services"
description="End-to-end solutions tailored to your unique lifestyle."
features={[
{
title: "Residential Design",
description: "Full-scale home transformations and renovations.",
imageSrc: "http://img.b2bpic.net/free-photo/modern-kitchen-surface-pull-out-drawer-loft-style-interior-design-details_169016-72762.jpg",
},
{
title: "Space Optimization",
description: "Maximizing functionality for urban Madrid flats.",
imageSrc: "http://img.b2bpic.net/free-photo/young-woman-using-home-technology_23-2149216655.jpg",
},
{
title: "Eco-Conscious Selection",
description: "Sustainable sourcing for modern homes.",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-arrangement-modern-vases_23-2149646500.jpg",
},
{
title: "Luxury Finishing",
description: "Premium lighting, textures, and bespoke furniture.",
imageSrc: "http://img.b2bpic.net/free-photo/lobby-living-room-hotel_1150-11124.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<FeaturesSection />
<div id="projects" data-section="projects">
<SectionErrorBoundary name="projects">
<FeaturesImageBento
tag="Featured Work"
title="Selected Projects in Madrid"
description="Discover our latest transformations across the city."
items={[
{
title: "Luxury Flat",
description: "Barrio de Salamanca renovation",
imageSrc: "http://img.b2bpic.net/free-photo/woman-reading-book-reading-club-library_23-2150293528.jpg",
},
{
title: "Urban Oasis",
description: "Modern terrace concept",
imageSrc: "http://img.b2bpic.net/free-photo/modern-spacious-room-with-large-panoramic-window_7502-7289.jpg",
},
{
title: "Boutique Villa",
description: "Contemporary architecture",
imageSrc: "http://img.b2bpic.net/free-photo/young-coworkers-gathering-table-office_23-2147668778.jpg",
},
{
title: "Townhouse Staging",
description: "Modern living transformation",
imageSrc: "http://img.b2bpic.net/free-photo/side-view-blurry-man-walking_23-2150378941.jpg",
},
{
title: "Minimalist Loft",
description: "Open plan urban living",
imageSrc: "http://img.b2bpic.net/free-photo/ai-generated-house-design_23-2150666254.jpg",
},
{
title: "Traditional Fusion",
description: "Renovating history",
imageSrc: "http://img.b2bpic.net/free-photo/bathroom-interior-background-white-spa-towels-wood_1258-111485.jpg",
},
{
title: "Private Residence",
description: "Custom luxury detail",
imageSrc: "http://img.b2bpic.net/free-photo/abstract-blur-furniture-shop-store-interior_74190-4976.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<ProjectsSection />
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsIconCards
tag="By the Numbers"
title="A Track Record of Excellence"
description="Results that speak for themselves."
metrics={[
{
icon: Award,
title: "Completed Projects",
value: "350+",
},
{
icon: Star,
title: "Satisfied Clients",
value: "500+",
},
{
icon: Users,
title: "Design Experts",
value: "25+",
},
]}
/>
</SectionErrorBoundary>
</div>
<MetricsSection />
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialQuoteCards
tag="Client Stories"
title="What Homeowners Say"
description="Our passion is building your dream."
testimonials={[
{
name: "Elena R.",
role: "Salamanca Resident",
quote: "The design team turned my outdated flat into a modern masterpiece. Truly exceptional quality.",
imageSrc: "http://img.b2bpic.net/free-photo/woman-sitting-couch_23-2148751504.jpg",
},
{
name: "Carlos M.",
role: "Villa Owner",
quote: "They captured our vision perfectly. The attention to detail is unmatched in Madrid.",
imageSrc: "http://img.b2bpic.net/free-photo/overhead-view-young-couple-with-their-baby-sitting-cardboard-boxes-their-new-home_23-2148060078.jpg",
},
{
name: "Sofia G.",
role: "Art Collector",
quote: "A seamless process from concept to completion. I couldn't be happier with the results.",
imageSrc: "http://img.b2bpic.net/free-photo/portrait-beautiful-woman-bathrobe-indoors_1153-8058.jpg",
},
{
name: "Diego V.",
role: "Architect",
quote: "Their eye for texture and balance is superb. Highly recommended for any interior project.",
imageSrc: "http://img.b2bpic.net/free-photo/lovely-woman-drawing-looking-camera_23-2147770011.jpg",
},
{
name: "Isabel P.",
role: "Business Owner",
quote: "Simply wonderful to work with. They made the renovation process stress-free and exciting.",
imageSrc: "http://img.b2bpic.net/free-photo/colleagues-smiling-speaking-discussing-new-ideas_176420-1665.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<TestimonialsSection />
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqTabbedAccordion
tag="Questions"
title="Everything You Need to Know"
description="Clear answers to start your design journey."
categories={[
{
name: "Process",
items: [
{
question: "How long does a renovation take?",
answer: "Projects typically range from 2 to 6 months depending on scope.",
},
{
question: "Do you offer consultations?",
answer: "Yes, we provide initial site consultations to discuss your goals.",
},
],
},
{
name: "Services",
items: [
{
question: "Do you design commercial spaces?",
answer: "Our focus is primarily high-end residential interiors.",
},
{
question: "Do you source furniture?",
answer: "We manage sourcing, procurement, and installation as part of our service.",
},
],
},
]}
/>
</SectionErrorBoundary>
</div>
<FaqSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Get Started"
text="Ready to transform your home in Madrid? Let's discuss your vision over a private consultation."
primaryButton={{
text: "Contact Us",
href: "mailto:hello@studiomadrid.es",
}}
secondaryButton={{
text: "Book a Tour",
href: "#",
}}
/>
</SectionErrorBoundary>
</div>
<ContactSection />
</>
);
}

View File

@@ -0,0 +1,39 @@
// 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 AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';
import { Award, CheckCircle, Shield, Sparkles, Star, Users } from "lucide-react";
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function AboutSection(): React.JSX.Element {
return (
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutFeaturesSplit
tag="Our Philosophy"
title="Design that Reflects Your Essence"
description="With over two decades of experience in the Madrid architecture and design scene, we specialize in curating bespoke interiors that tell your personal story through textures, light, and form."
items={[
{
icon: Sparkles,
title: "Bespoke Curation",
description: "Every element is hand-selected to match your vision.",
},
{
icon: CheckCircle,
title: "Precision Execution",
description: "From planning to installation, we manage every detail.",
},
{
icon: Shield,
title: "Quality Assurance",
description: "We partner only with the finest local craftsmen.",
},
]}
imageSrc="http://img.b2bpic.net/free-photo/cropped-top-view-young-beautiful-female-architect-hands-doing-blueprints-with-ruler-pen-white-table-coworking-space-business-concept_176420-8525.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -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 (
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Get Started"
text="Ready to transform your home in Madrid? Let's discuss your vision over a private consultation."
primaryButton={{
text: "Contact Us",
href: "mailto:hello@studiomadrid.es",
}}
secondaryButton={{
text: "Book a Tour",
href: "#",
}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,48 @@
// 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 FaqTabbedAccordion from '@/components/sections/faq/FaqTabbedAccordion';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FaqSection(): React.JSX.Element {
return (
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqTabbedAccordion
tag="Questions"
title="Everything You Need to Know"
description="Clear answers to start your design journey."
categories={[
{
name: "Process",
items: [
{
question: "How long does a renovation take?",
answer: "Projects typically range from 2 to 6 months depending on scope.",
},
{
question: "Do you offer consultations?",
answer: "Yes, we provide initial site consultations to discuss your goals.",
},
],
},
{
name: "Services",
items: [
{
question: "Do you design commercial spaces?",
answer: "Our focus is primarily high-end residential interiors.",
},
{
question: "Do you source furniture?",
answer: "We manage sourcing, procurement, and installation as part of our service.",
},
],
},
]}
/>
</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 "features" section.
import React from 'react';
import FeaturesBentoGrid from '@/components/sections/features/FeaturesBentoGrid';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FeaturesSection(): React.JSX.Element {
return (
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesBentoGrid
tag="Our Expertise"
title="Comprehensive Design Services"
description="End-to-end solutions tailored to your unique lifestyle."
features={[
{
title: "Residential Design",
description: "Full-scale home transformations and renovations.",
imageSrc: "http://img.b2bpic.net/free-photo/modern-kitchen-surface-pull-out-drawer-loft-style-interior-design-details_169016-72762.jpg",
},
{
title: "Space Optimization",
description: "Maximizing functionality for urban Madrid flats.",
imageSrc: "http://img.b2bpic.net/free-photo/young-woman-using-home-technology_23-2149216655.jpg",
},
{
title: "Eco-Conscious Selection",
description: "Sustainable sourcing for modern homes.",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-arrangement-modern-vases_23-2149646500.jpg",
},
{
title: "Luxury Finishing",
description: "Premium lighting, textures, and bespoke furniture.",
imageSrc: "http://img.b2bpic.net/free-photo/lobby-living-room-hotel_1150-11124.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,44 @@
// 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 HeroCenteredLogos from '@/components/sections/hero/HeroCenteredLogos';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HeroSection(): React.JSX.Element {
return (
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroCenteredLogos
avatarsSrc={[
"http://img.b2bpic.net/free-photo/young-people-having-fun_23-2149832986.jpg",
"http://img.b2bpic.net/free-photo/family-moving-using-boxes_1157-35479.jpg",
"http://img.b2bpic.net/free-photo/beautiful-young-african-american-woman-smiling-cheerful-friendly-face-laughing-confident_839833-29956.jpg",
"http://img.b2bpic.net/free-photo/male-real-estate-agent-doing-business-showing-house-potential-buying-couple_23-2150164714.jpg",
"http://img.b2bpic.net/free-photo/colleagues-sharing-high-five-office_482257-119313.jpg",
]}
avatarText="Trusted by 500+ families"
title="Crafting Timeless Spaces in the Heart of Madrid"
description="We blend Mediterranean warmth with contemporary luxury to transform your home into a sanctuary of elegance and comfort."
primaryButton={{
text: "View Projects",
href: "#projects",
}}
secondaryButton={{
text: "Contact Us",
href: "#contact",
}}
names={[
"Madrid",
"Barcelona",
"Seville",
"Valencia",
"Bilbao",
"Malaga",
]}
imageSrc="http://img.b2bpic.net/free-photo/close-up-happy-healthy-young-woman-with-dark-curly-hair-lying-comfortable-sofa-terrace_197531-22796.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,38 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "metrics" section.
import React from 'react';
import MetricsIconCards from '@/components/sections/metrics/MetricsIconCards';
import { Award, CheckCircle, Shield, Sparkles, Star, Users } from "lucide-react";
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function MetricsSection(): React.JSX.Element {
return (
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsIconCards
tag="By the Numbers"
title="A Track Record of Excellence"
description="Results that speak for themselves."
metrics={[
{
icon: Award,
title: "Completed Projects",
value: "350+",
},
{
icon: Star,
title: "Satisfied Clients",
value: "500+",
},
{
icon: Users,
title: "Design Experts",
value: "25+",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,57 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "projects" section.
import React from 'react';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ProjectsSection(): React.JSX.Element {
return (
<div id="projects" data-section="projects">
<SectionErrorBoundary name="projects">
<FeaturesImageBento
tag="Featured Work"
title="Selected Projects in Madrid"
description="Discover our latest transformations across the city."
items={[
{
title: "Luxury Flat",
description: "Barrio de Salamanca renovation",
imageSrc: "http://img.b2bpic.net/free-photo/woman-reading-book-reading-club-library_23-2150293528.jpg",
},
{
title: "Urban Oasis",
description: "Modern terrace concept",
imageSrc: "http://img.b2bpic.net/free-photo/modern-spacious-room-with-large-panoramic-window_7502-7289.jpg",
},
{
title: "Boutique Villa",
description: "Contemporary architecture",
imageSrc: "http://img.b2bpic.net/free-photo/young-coworkers-gathering-table-office_23-2147668778.jpg",
},
{
title: "Townhouse Staging",
description: "Modern living transformation",
imageSrc: "http://img.b2bpic.net/free-photo/side-view-blurry-man-walking_23-2150378941.jpg",
},
{
title: "Minimalist Loft",
description: "Open plan urban living",
imageSrc: "http://img.b2bpic.net/free-photo/ai-generated-house-design_23-2150666254.jpg",
},
{
title: "Traditional Fusion",
description: "Renovating history",
imageSrc: "http://img.b2bpic.net/free-photo/bathroom-interior-background-white-spa-towels-wood_1258-111485.jpg",
},
{
title: "Private Residence",
description: "Custom luxury detail",
imageSrc: "http://img.b2bpic.net/free-photo/abstract-blur-furniture-shop-store-interior_74190-4976.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,17 @@
// Created by add_section_from_catalog (TestimonialMarqueeCards).
import React from 'react';
import TestimonialMarqueeCards from '@/components/sections/testimonial/TestimonialMarqueeCards';
export default function TestimonialsSection(): React.JSX.Element {
return (
<div data-webild-section="testimonials" id="testimonials">
<TestimonialMarqueeCards
description="Our passion is building your dream."
testimonials={[{"imageSrc":"http://img.b2bpic.net/free-photo/woman-sitting-couch_23-2148751504.jpg","quote":"The design team turned my outdated flat into a modern masterpiece. Truly exceptional quality.","role":"Salamanca Resident","name":"Elena R."},{"imageSrc":"http://img.b2bpic.net/free-photo/overhead-view-young-couple-with-their-baby-sitting-cardboard-boxes-their-new-home_23-2148060078.jpg","quote":"They captured our vision perfectly. The attention to detail is unmatched in Madrid.","role":"Villa Owner","name":"Carlos M."},{"imageSrc":"http://img.b2bpic.net/free-photo/portrait-beautiful-woman-bathrobe-indoors_1153-8058.jpg","quote":"A seamless process from concept to completion. I couldn't be happier with the results.","name":"Sofia G.","role":"Art Collector"},{"imageSrc":"http://img.b2bpic.net/free-photo/lovely-woman-drawing-looking-camera_23-2147770011.jpg","quote":"Their eye for texture and balance is superb. Highly recommended for any interior project.","role":"Architect","name":"Diego V."},{"imageSrc":"http://img.b2bpic.net/free-photo/colleagues-smiling-speaking-discussing-new-ideas_176420-1665.jpg","quote":"Simply wonderful to work with. They made the renovation process stress-free and exciting.","role":"Business Owner","name":"Isabel P."}]}
title="What Homeowners Say"
tag="Client Stories"
/>
</div>
);
}