Merge version_2_1782313775680 into main
Merge version_2_1782313775680 into main
This commit was merged in pull request #3.
This commit is contained in:
@@ -36,7 +36,7 @@ export default function Layout() {
|
||||
<SectionErrorBoundary name="navbar">
|
||||
<NavbarFloatingLogo
|
||||
logo="Abiari Interiors"
|
||||
logoImageSrc="http://img.b2bpic.net/free-vector/rc-logo-monogram-design_23-2151060583.jpg"
|
||||
logoImageSrc="https://storage.googleapis.com/webild/users/user_3FXwZkEMU4cqAOONj15cZx70RD4/uploaded-1782313774608-5une20t6.png"
|
||||
ctaButton={{
|
||||
text: "Inquire", href: "#contact"}}
|
||||
navItems={navItems} />
|
||||
|
||||
@@ -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: #fdfbf9;
|
||||
--card: #f5f0eb;
|
||||
--foreground: #3d2b1f;
|
||||
--primary-cta: #d4a373;
|
||||
--primary-cta-text: #ffffff;
|
||||
--secondary-cta: #f5f0eb;
|
||||
--secondary-cta-text: #3d2b1f;
|
||||
--accent: #a69b91;
|
||||
--background-accent: #c2b6ac;
|
||||
|
||||
/* @layout/border-radius/rounded */
|
||||
--radius: 1.5rem;
|
||||
|
||||
@@ -1,139 +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 HeroSplit from '@/components/sections/hero/HeroSplit';
|
||||
import MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
|
||||
import TestimonialQuoteCards from '@/components/sections/testimonial/TestimonialQuoteCards';
|
||||
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 PortfolioSection from './HomePage/sections/Portfolio';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import MetricsSection from './HomePage/sections/Metrics';
|
||||
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">
|
||||
<HeroSplit
|
||||
tag="Luxury Interior Design"
|
||||
title="Crafting Timeless Spaces"
|
||||
description="Abiari Interiors transforms your vision into a bespoke living experience, blending artisan craftsmanship with modern elegance."
|
||||
primaryButton={{ text: "View Projects", href: "#portfolio" }}
|
||||
secondaryButton={{ text: "Our Process", href: "#about" }}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/full-shot-woman-writing-her-journal_23-2150416349.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutFeaturesSplit
|
||||
tag="Our Philosophy"
|
||||
title="Eigens in Every Detail"
|
||||
description="We believe home is more than a place; it is a canvas for your life. Our approach combines structured design with warm, organic aesthetics."
|
||||
items={[
|
||||
{ icon: "Sparkles", title: "Artisanal Vision", description: "Hand-picked materials and textures." },
|
||||
{ icon: "CheckCircle", title: "Tailored Layouts", description: "Spaces perfectly fit for your habits." },
|
||||
{ icon: "Award", title: "Award-Winning Craft", description: "Industry leading design standards." },
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/keyboard-diary-calculator-blueprint-background_23-2148183022.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesBentoGrid
|
||||
tag="Why Us"
|
||||
title="The Abiari Difference"
|
||||
description="We bridge the gap between architectural integrity and intimate comfort."
|
||||
features={[
|
||||
{ title: "Bespoke Furnishings", description: "Custom pieces made to order.", imageSrc: "http://img.b2bpic.net/free-photo/texture-background_1404-190.jpg" },
|
||||
{ title: "Spatial Flow", description: "Optimized layouts for every lifestyle.", imageSrc: "http://img.b2bpic.net/free-photo/gift-boxes-3d-present-package-with-ribbon-bow_107791-17012.jpg" },
|
||||
{ title: "Lighting Design", description: "Atmospheric solutions for all spaces.", imageSrc: "https://storage.googleapis.com/webild/default/no-image.jpg?id=3i9vzs" },
|
||||
{ title: "Sustainable Luxury", description: "Ethical and durable material choices.", imageSrc: "http://img.b2bpic.net/free-vector/creative-icons-set_1251-2.jpg" },
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FeaturesSection />
|
||||
|
||||
<div id="portfolio" data-section="portfolio">
|
||||
<SectionErrorBoundary name="portfolio">
|
||||
<FeaturesImageBento
|
||||
tag="Our Works"
|
||||
title="Curated Design Projects"
|
||||
description="A glimpse into our recent residential and commercial interior projects."
|
||||
items={[
|
||||
{ title: "Modern Dining", description: "Sophisticated dining room redesign.", imageSrc: "http://img.b2bpic.net/free-photo/modern-luxury-bathroom-interior-with-natural-stone-tiles-bathtub_1194-640320.jpg" },
|
||||
{ title: "Living Elegance", description: "Minimalist living space composition.", imageSrc: "http://img.b2bpic.net/free-photo/modern-styled-small-entryway_23-2150712903.jpg" },
|
||||
{ title: "Kitchen Artistry", description: "High-end functional culinary space.", imageSrc: "http://img.b2bpic.net/free-photo/interior-design-neoclassical-style-with-furnishings-decor_23-2151199326.jpg" },
|
||||
{ title: "Master Retreat", description: "Serene bedroom sanctuary.", imageSrc: "http://img.b2bpic.net/free-photo/cozy-modern-bedroom-with-comfortable-bedding-green-plants-generated-by-ai_188544-38187.jpg" },
|
||||
{ title: "Executive Suite", description: "Refined and productive office.", imageSrc: "http://img.b2bpic.net/free-photo/modern-styled-small-entryway_23-2150712969.jpg" },
|
||||
{ title: "Spa Bathroom", description: "Luxurious sanctuary design.", imageSrc: "http://img.b2bpic.net/free-photo/3d-rendering-loft-luxury-living-room-with-design-chandelier_105762-2226.jpg" },
|
||||
{ title: "Artistic Entry", description: "A grand entrance experience.", imageSrc: "http://img.b2bpic.net/free-photo/creative-fengshui-practice-dining-room-arrangement_23-2149135746.jpg" },
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<PortfolioSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialQuoteCards
|
||||
tag="Client Stories"
|
||||
title="Trusted by Many"
|
||||
description="Hear what our clients have to say about their Abiari transformation."
|
||||
testimonials={[
|
||||
{ name: "Eleanor P.", role: "Homeowner", quote: "Simply transformed my house into a sanctuary.", imageSrc: "http://img.b2bpic.net/free-photo/bearded-young-man-standing-office-medium-shot_23-2148327020.jpg" },
|
||||
{ name: "Marcus W.", role: "Business Owner", quote: "Professional, punctual, and highly creative.", imageSrc: "http://img.b2bpic.net/free-photo/professional-women-stylish-suit-office-with-tablet-device_23-2150167810.jpg" },
|
||||
{ name: "Sarah J.", role: "Architect", quote: "Attention to detail is truly unmatched.", imageSrc: "http://img.b2bpic.net/free-photo/couple-sharing-great-working-relationship_329181-17640.jpg" },
|
||||
{ name: "David K.", role: "Homeowner", quote: "They understood exactly what I needed.", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-smiley-women-high-five_23-2149390525.jpg" },
|
||||
{ name: "Emma R.", role: "Creative Director", quote: "The aesthetic is absolutely divine.", imageSrc: "http://img.b2bpic.net/free-photo/front-view-man-posing-near-wall_23-2148718039.jpg" },
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsMediaCards
|
||||
tag="Our Impact"
|
||||
title="Design by the Numbers"
|
||||
description="Quality and expertise built over a decade."
|
||||
metrics={[
|
||||
{ value: "150+", title: "Completed Projects", description: "Satisfied clients across the region.", imageSrc: "http://img.b2bpic.net/free-photo/full-shot-artisan-doing-woodcutting_23-2150104701.jpg" },
|
||||
{ value: "12", title: "Years Experience", description: "Expert design in every corner.", imageSrc: "http://img.b2bpic.net/free-photo/full-shot-man-working-project_23-2149721868.jpg" },
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MetricsSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqTabbedAccordion
|
||||
tag="Need Help?"
|
||||
title="Frequently Asked Questions"
|
||||
description="Answers to our common process inquiries."
|
||||
categories={[
|
||||
{ name: "General", items: [
|
||||
{ question: "What is the timeline?", answer: "Usually 3-6 months depending on scope." },
|
||||
{ question: "How do we start?", answer: "Simply fill out our consultation form." },
|
||||
{ question: "Do you work remotely?", answer: "Yes, we offer virtual design packages." },
|
||||
] },
|
||||
]}
|
||||
cta={{ name: "Design Consultant", role: "Lead Architect", buttonText: "Ask Us Anything", buttonHref: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/full-shot-woman-with-canvas_23-2148944968.jpg" }}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Get Started"
|
||||
text="Ready to redefine your space? Let's discuss your project vision today."
|
||||
primaryButton={{ text: "Book Consultation", href: "#" }}
|
||||
secondaryButton={{ text: "Email Us", href: "mailto:hello@abiariinteriors.com" }}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
26
src/pages/HomePage/sections/About.tsx
Normal file
26
src/pages/HomePage/sections/About.tsx
Normal file
@@ -0,0 +1,26 @@
|
||||
// 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 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="Eigens in Every Detail"
|
||||
description="We believe home is more than a place; it is a canvas for your life. Our approach combines structured design with warm, organic aesthetics."
|
||||
items={[
|
||||
{ icon: "Sparkles", title: "Artisanal Vision", description: "Hand-picked materials and textures." },
|
||||
{ icon: "CheckCircle", title: "Tailored Layouts", description: "Spaces perfectly fit for your habits." },
|
||||
{ icon: "Award", title: "Award-Winning Craft", description: "Industry leading design standards." },
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/keyboard-diary-calculator-blueprint-background_23-2148183022.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="Get Started"
|
||||
text="Ready to redefine your space? Let's discuss your project vision today."
|
||||
primaryButton={{ text: "Book Consultation", href: "#" }}
|
||||
secondaryButton={{ text: "Email Us", href: "mailto:hello@abiariinteriors.com" }}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
28
src/pages/HomePage/sections/Faq.tsx
Normal file
28
src/pages/HomePage/sections/Faq.tsx
Normal file
@@ -0,0 +1,28 @@
|
||||
// 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="Need Help?"
|
||||
title="Frequently Asked Questions"
|
||||
description="Answers to our common process inquiries."
|
||||
categories={[
|
||||
{ name: "General", items: [
|
||||
{ question: "What is the timeline?", answer: "Usually 3-6 months depending on scope." },
|
||||
{ question: "How do we start?", answer: "Simply fill out our consultation form." },
|
||||
{ question: "Do you work remotely?", answer: "Yes, we offer virtual design packages." },
|
||||
] },
|
||||
]}
|
||||
cta={{ name: "Design Consultant", role: "Lead Architect", buttonText: "Ask Us Anything", buttonHref: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/full-shot-woman-with-canvas_23-2148944968.jpg" }}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
26
src/pages/HomePage/sections/Features.tsx
Normal file
26
src/pages/HomePage/sections/Features.tsx
Normal file
@@ -0,0 +1,26 @@
|
||||
// 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="Why Us"
|
||||
title="The Abiari Difference"
|
||||
description="We bridge the gap between architectural integrity and intimate comfort."
|
||||
features={[
|
||||
{ title: "Bespoke Furnishings", description: "Custom pieces made to order.", imageSrc: "http://img.b2bpic.net/free-photo/texture-background_1404-190.jpg" },
|
||||
{ title: "Spatial Flow", description: "Optimized layouts for every lifestyle.", imageSrc: "http://img.b2bpic.net/free-photo/gift-boxes-3d-present-package-with-ribbon-bow_107791-17012.jpg" },
|
||||
{ title: "Lighting Design", description: "Atmospheric solutions for all spaces.", imageSrc: "https://storage.googleapis.com/webild/default/no-image.jpg?id=3i9vzs" },
|
||||
{ title: "Sustainable Luxury", description: "Ethical and durable material choices.", imageSrc: "http://img.b2bpic.net/free-vector/creative-icons-set_1251-2.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="Luxury Interior Design"
|
||||
title="Crafting Timeless Spaces"
|
||||
description="Abiari Interiors transforms your vision into a bespoke living experience, blending artisan craftsmanship with modern elegance."
|
||||
primaryButton={{ text: "View Projects", href: "#portfolio" }}
|
||||
secondaryButton={{ text: "Our Process", href: "#about" }}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/full-shot-woman-writing-her-journal_23-2150416349.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
24
src/pages/HomePage/sections/Metrics.tsx
Normal file
24
src/pages/HomePage/sections/Metrics.tsx
Normal file
@@ -0,0 +1,24 @@
|
||||
// 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="Our Impact"
|
||||
title="Design by the Numbers"
|
||||
description="Quality and expertise built over a decade."
|
||||
metrics={[
|
||||
{ value: "150+", title: "Completed Projects", description: "Satisfied clients across the region.", imageSrc: "http://img.b2bpic.net/free-photo/full-shot-artisan-doing-woodcutting_23-2150104701.jpg" },
|
||||
{ value: "12", title: "Years Experience", description: "Expert design in every corner.", imageSrc: "http://img.b2bpic.net/free-photo/full-shot-man-working-project_23-2149721868.jpg" },
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
29
src/pages/HomePage/sections/Portfolio.tsx
Normal file
29
src/pages/HomePage/sections/Portfolio.tsx
Normal file
@@ -0,0 +1,29 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "portfolio" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function PortfolioSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="portfolio" data-section="portfolio">
|
||||
<SectionErrorBoundary name="portfolio">
|
||||
<FeaturesImageBento
|
||||
tag="Our Works"
|
||||
title="Curated Design Projects"
|
||||
description="A glimpse into our recent residential and commercial interior projects."
|
||||
items={[
|
||||
{ title: "Modern Dining", description: "Sophisticated dining room redesign.", imageSrc: "http://img.b2bpic.net/free-photo/modern-luxury-bathroom-interior-with-natural-stone-tiles-bathtub_1194-640320.jpg" },
|
||||
{ title: "Living Elegance", description: "Minimalist living space composition.", imageSrc: "http://img.b2bpic.net/free-photo/modern-styled-small-entryway_23-2150712903.jpg" },
|
||||
{ title: "Kitchen Artistry", description: "High-end functional culinary space.", imageSrc: "http://img.b2bpic.net/free-photo/interior-design-neoclassical-style-with-furnishings-decor_23-2151199326.jpg" },
|
||||
{ title: "Master Retreat", description: "Serene bedroom sanctuary.", imageSrc: "http://img.b2bpic.net/free-photo/cozy-modern-bedroom-with-comfortable-bedding-green-plants-generated-by-ai_188544-38187.jpg" },
|
||||
{ title: "Executive Suite", description: "Refined and productive office.", imageSrc: "http://img.b2bpic.net/free-photo/modern-styled-small-entryway_23-2150712969.jpg" },
|
||||
{ title: "Spa Bathroom", description: "Luxurious sanctuary design.", imageSrc: "http://img.b2bpic.net/free-photo/3d-rendering-loft-luxury-living-room-with-design-chandelier_105762-2226.jpg" },
|
||||
{ title: "Artistic Entry", description: "A grand entrance experience.", imageSrc: "http://img.b2bpic.net/free-photo/creative-fengshui-practice-dining-room-arrangement_23-2149135746.jpg" },
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
27
src/pages/HomePage/sections/Testimonials.tsx
Normal file
27
src/pages/HomePage/sections/Testimonials.tsx
Normal file
@@ -0,0 +1,27 @@
|
||||
// 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 TestimonialQuoteCards from '@/components/sections/testimonial/TestimonialQuoteCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialQuoteCards
|
||||
tag="Client Stories"
|
||||
title="Trusted by Many"
|
||||
description="Hear what our clients have to say about their Abiari transformation."
|
||||
testimonials={[
|
||||
{ name: "Eleanor P.", role: "Homeowner", quote: "Simply transformed my house into a sanctuary.", imageSrc: "http://img.b2bpic.net/free-photo/bearded-young-man-standing-office-medium-shot_23-2148327020.jpg" },
|
||||
{ name: "Marcus W.", role: "Business Owner", quote: "Professional, punctual, and highly creative.", imageSrc: "http://img.b2bpic.net/free-photo/professional-women-stylish-suit-office-with-tablet-device_23-2150167810.jpg" },
|
||||
{ name: "Sarah J.", role: "Architect", quote: "Attention to detail is truly unmatched.", imageSrc: "http://img.b2bpic.net/free-photo/couple-sharing-great-working-relationship_329181-17640.jpg" },
|
||||
{ name: "David K.", role: "Homeowner", quote: "They understood exactly what I needed.", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-smiley-women-high-five_23-2149390525.jpg" },
|
||||
{ name: "Emma R.", role: "Creative Director", quote: "The aesthetic is absolutely divine.", imageSrc: "http://img.b2bpic.net/free-photo/front-view-man-posing-near-wall_23-2148718039.jpg" },
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user