Compare commits
8 Commits
version_1_
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 96094f8df1 | |||
| 7b84bbe477 | |||
| 18999f1dfe | |||
| e78c6d526a | |||
| 1b920cd489 | |||
|
|
b500d04961 | ||
| f81544a38d | |||
| ab1a55bc08 |
@@ -5,11 +5,11 @@
|
||||
|
||||
:root {
|
||||
/* @colorThemes/lightTheme/grayNavyBlue */
|
||||
--background: #efebe5;
|
||||
--card: #f7f2ea;
|
||||
--foreground: #000000;
|
||||
--primary-cta: #000000;
|
||||
--primary-cta-text: #efebe5;
|
||||
--background: #000000;
|
||||
--card: #111111;
|
||||
--foreground: #ffffff;
|
||||
--primary-cta: #ffffff;
|
||||
--primary-cta-text: #000000;
|
||||
--secondary-cta: #ffffff;
|
||||
--secondary-cta-text: #000000;
|
||||
--accent: #ffffff;
|
||||
|
||||
@@ -1,176 +1,36 @@
|
||||
import AboutTestimonial from '@/components/sections/about/AboutTestimonial';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqSimple from '@/components/sections/faq/FaqSimple';
|
||||
import FeaturesArrowCards from '@/components/sections/features/FeaturesArrowCards';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import HeroBillboardTiltedCarousel from '@/components/sections/hero/HeroBillboardTiltedCarousel';
|
||||
import MetricsIconCards from '@/components/sections/metrics/MetricsIconCards';
|
||||
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 ServicesSection from './HomePage/sections/Services';
|
||||
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">
|
||||
<HeroBillboardTiltedCarousel
|
||||
tag="Wellness Journey"
|
||||
title="Relax & Restore Your Mind and Body"
|
||||
description="Experience deep rejuvenation and therapeutic relief in our calm, serene sanctuary."
|
||||
primaryButton={{
|
||||
text: "Book Session", href: "#contact"}}
|
||||
secondaryButton={{
|
||||
text: "Our Services", href: "#services"}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/composed-bottles-with-rustic-decor_23-2147693388.jpg"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-couple-having-intimacy-moments_23-2149169159.jpg"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-woman-sitting-wooden-stool-reading-book_23-2147872108.jpg"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/spa-products-with-orchids_93675-128362.jpg"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/two-birds-near-white-cake-leaves-white-background_23-2147975468.jpg"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/female-hand-massage-with-pressure-point-massage_1150-20442.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutTestimonial
|
||||
tag="Our Philosophy"
|
||||
quote="Massage is not just a luxury; it's a vital necessity for modern life balance and health."
|
||||
author="Elena Rossi"
|
||||
role="Founder & Master Therapist"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/young-woman-holding-tea-cup-relaxing-spa-salon_176420-7542.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesArrowCards
|
||||
tag="Treatments"
|
||||
title="Customized Care for You"
|
||||
description="We specialize in personalized therapy to meet your body's specific needs."
|
||||
items={[
|
||||
{
|
||||
title: "Swedish Relaxation", tags: [
|
||||
"Deep Relief", "Stress"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-patient-alternative-therapy_23-2148815330.jpg"},
|
||||
{
|
||||
title: "Hot Stone Therapy", tags: [
|
||||
"Warmth", "Muscle"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/nurse-taking-care-patient_23-2149277899.jpg"},
|
||||
{
|
||||
title: "Clinical Reflexology", tags: [
|
||||
"Targeted", "Energy"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/modern-foot-massage-with-oil-heel-toe-relaxation_169016-69500.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FeaturesSection />
|
||||
|
||||
<div id="services" data-section="services">
|
||||
<SectionErrorBoundary name="services">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Our Collection"
|
||||
title="Enhance Your Experience"
|
||||
description="Premium add-ons and curated wellness products for your home."
|
||||
items={[
|
||||
{
|
||||
title: "Aromatic Oils", description: "Pure essential oil blends.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/close-up-floating-water_23-2150963082.jpg"},
|
||||
{
|
||||
title: "Healing Creams", description: "Organic soothing relief.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/boomers-using-cbd-oil-cream-treating-body-pain_23-2151263432.jpg"},
|
||||
{
|
||||
title: "Zen Candles", description: "Hand-poured tranquility.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/cozy-composition-with-candles-knitted-element-garland_169016-48476.jpg"},
|
||||
{
|
||||
title: "Wellness Teas", description: "Calming herbal infusions.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/top-view-bowls-cookies-cloves-citrus-fruits-wooden-board-with-herbal-tea-red-scarf-tea-strainer-white-surface_176474-28128.jpg"},
|
||||
{
|
||||
title: "Soft Linens", description: "Luxurious spa comforts.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/sideviews-spa-stones-towels_23-2148223690.jpg"},
|
||||
{
|
||||
title: "Diffuser Stones", description: "Artisanal scent holders.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/christmas-still-life-with-aroma-diffuser-moisturizing-air_169016-43245.jpg"},
|
||||
{
|
||||
title: "Gift Packages", description: "The perfect relaxing gift.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/spa-composition-with-thai-orchid-flowers-bath-accessories_169016-17217.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ServicesSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialQuoteCards
|
||||
tag="Client Stories"
|
||||
title="Trusted by Our Community"
|
||||
description="Read what our clients have to say about their healing experiences."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Sarah Miller", role: "Creative Director", quote: "The best massage experience in the city. Truly transformative.", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-relaxed-smiley-woman_23-2149144908.jpg"},
|
||||
{
|
||||
name: "Mark D.", role: "Software Engineer", quote: "Finally found relief from chronic shoulder pain. Highly recommended.", imageSrc: "http://img.b2bpic.net/free-photo/happy-smiling-hispanic-woman-sitting-rattan-armchair-hotel-patio_197531-22784.jpg"},
|
||||
{
|
||||
name: "Chloe J.", role: "Architect", quote: "Such a serene space. I leave feeling like a completely different person.", imageSrc: "http://img.b2bpic.net/free-photo/low-angle-smiley-women-bathroom_23-2149485699.jpg"},
|
||||
{
|
||||
name: "James L.", role: "Professor", quote: "Expert therapist and a lovely, calm environment. Worth every penny.", imageSrc: "http://img.b2bpic.net/free-photo/beautiful-woman-cafe_273609-12671.jpg"},
|
||||
{
|
||||
name: "Maria K.", role: "Entrepreneur", quote: "Professional, welcoming, and deeply effective. I'm a regular now.", imageSrc: "http://img.b2bpic.net/free-photo/young-woman-warm-white-hoodie-home-kitchen-starts-her-day-with-cup-coffee_343596-7226.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsIconCards
|
||||
tag="Our Impact"
|
||||
title="Wellness by the Numbers"
|
||||
description="Committed to delivering consistent quality and comfort."
|
||||
metrics={[
|
||||
{
|
||||
icon: "Users", title: "Happy Clients", value: "10,000+"},
|
||||
{
|
||||
icon: "Award", title: "Years of Care", value: "15"},
|
||||
{
|
||||
icon: "Heart", title: "Sessions Held", value: "25k+"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MetricsSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSimple
|
||||
tag="Support"
|
||||
title="Frequently Asked Questions"
|
||||
description="Have questions about our sessions? We have the answers."
|
||||
items={[
|
||||
{
|
||||
question: "What should I wear?", answer: "Wear whatever makes you comfortable! We provide linens for draping."},
|
||||
{
|
||||
question: "Do you accept insurance?", answer: "We provide detailed receipts that you can submit to your insurance."},
|
||||
{
|
||||
question: "Can I request a specific therapist?", answer: "Yes, you can select your preferred therapist during the booking flow."},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Get Started"
|
||||
text="Ready for your moment of peace?"
|
||||
primaryButton={{
|
||||
text: "Book Online", href: "#"}}
|
||||
secondaryButton={{
|
||||
text: "Call Us", href: "tel:5550123"}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
22
src/pages/HomePage/sections/About.tsx
Normal file
22
src/pages/HomePage/sections/About.tsx
Normal file
@@ -0,0 +1,22 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "about" section.
|
||||
|
||||
import React from 'react';
|
||||
import AboutTestimonial from '@/components/sections/about/AboutTestimonial';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function AboutSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutTestimonial
|
||||
tag="Our Philosophy"
|
||||
quote="Massage is not just a luxury; it's a vital necessity for modern life balance and health."
|
||||
author="Elena Rossi"
|
||||
role="Founder & Master Therapist"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/young-woman-holding-tea-cup-relaxing-spa-salon_176420-7542.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
23
src/pages/HomePage/sections/Contact.tsx
Normal file
23
src/pages/HomePage/sections/Contact.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 "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 for your moment of peace?"
|
||||
primaryButton={{
|
||||
text: "Book Online", href: "#"}}
|
||||
secondaryButton={{
|
||||
text: "Call Us", href: "tel:5550123"}}
|
||||
/>
|
||||
</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 FaqSimple from '@/components/sections/faq/FaqSimple';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FaqSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSimple
|
||||
tag="Support"
|
||||
title="Frequently Asked Questions"
|
||||
description="Have questions about our sessions? We have the answers."
|
||||
items={[
|
||||
{
|
||||
question: "What should I wear?", answer: "Wear whatever makes you comfortable! We provide linens for draping."},
|
||||
{
|
||||
question: "Do you accept insurance?", answer: "We provide detailed receipts that you can submit to your insurance."},
|
||||
{
|
||||
question: "Can I request a specific therapist?", answer: "Yes, you can select your preferred therapist during the booking flow."},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
34
src/pages/HomePage/sections/Features.tsx
Normal file
34
src/pages/HomePage/sections/Features.tsx
Normal file
@@ -0,0 +1,34 @@
|
||||
// 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 FeaturesArrowCards from '@/components/sections/features/FeaturesArrowCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FeaturesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesArrowCards
|
||||
tag="Treatments"
|
||||
title="Customized Care for You"
|
||||
description="We specialize in personalized therapy to meet your body's specific needs."
|
||||
items={[
|
||||
{
|
||||
title: "Swedish Relaxation", tags: [
|
||||
"Deep Relief", "Stress"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-patient-alternative-therapy_23-2148815330.jpg"},
|
||||
{
|
||||
title: "Hot Stone Therapy", tags: [
|
||||
"Warmth", "Muscle"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/nurse-taking-care-patient_23-2149277899.jpg"},
|
||||
{
|
||||
title: "Clinical Reflexology", tags: [
|
||||
"Targeted", "Energy"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/modern-foot-massage-with-oil-heel-toe-relaxation_169016-69500.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
38
src/pages/HomePage/sections/Hero.tsx
Normal file
38
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,38 @@
|
||||
// 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 HeroBillboardTiltedCarousel from '@/components/sections/hero/HeroBillboardTiltedCarousel';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboardTiltedCarousel
|
||||
tag="Wellness Journey"
|
||||
title="Relax & Restore Your Mind and Body"
|
||||
description="Experience deep rejuvenation and therapeutic relief in our calm, serene sanctuary."
|
||||
primaryButton={{
|
||||
text: "Book Session", href: "#contact"}}
|
||||
secondaryButton={{
|
||||
text: "Our Services", href: "#services"}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/composed-bottles-with-rustic-decor_23-2147693388.jpg"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-couple-having-intimacy-moments_23-2149169159.jpg"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-woman-sitting-wooden-stool-reading-book_23-2147872108.jpg"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/spa-products-with-orchids_93675-128362.jpg"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/two-birds-near-white-cake-leaves-white-background_23-2147975468.jpg"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/female-hand-massage-with-pressure-point-massage_1150-20442.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
28
src/pages/HomePage/sections/Metrics.tsx
Normal file
28
src/pages/HomePage/sections/Metrics.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 "metrics" section.
|
||||
|
||||
import React from 'react';
|
||||
import MetricsIconCards from '@/components/sections/metrics/MetricsIconCards';
|
||||
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="Our Impact"
|
||||
title="Wellness by the Numbers"
|
||||
description="Committed to delivering consistent quality and comfort."
|
||||
metrics={[
|
||||
{
|
||||
icon: "Users", title: "Happy Clients", value: "10,000+"},
|
||||
{
|
||||
icon: "Award", title: "Years of Care", value: "15"},
|
||||
{
|
||||
icon: "Heart", title: "Sessions Held", value: "25k+"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
36
src/pages/HomePage/sections/Services.tsx
Normal file
36
src/pages/HomePage/sections/Services.tsx
Normal file
@@ -0,0 +1,36 @@
|
||||
// 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 FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ServicesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="services" data-section="services">
|
||||
<SectionErrorBoundary name="services">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Our Collection"
|
||||
title="Enhance Your Experience"
|
||||
description="Premium add-ons and curated wellness products for your home."
|
||||
items={[
|
||||
{
|
||||
title: "Aromatic Oils", description: "Pure essential oil blends.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/close-up-floating-water_23-2150963082.jpg"},
|
||||
{
|
||||
title: "Healing Creams", description: "Organic soothing relief.", href: "#", imageSrc: "https://images.pexels.com/photos/14253965/pexels-photo-14253965.jpeg?auto=compress&cs=tinysrgb&h=650&w=940&id=14253965"},
|
||||
{
|
||||
title: "Zen Candles", description: "Hand-poured tranquility.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/cozy-composition-with-candles-knitted-element-garland_169016-48476.jpg"},
|
||||
{
|
||||
title: "Wellness Teas", description: "Calming herbal infusions.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/top-view-bowls-cookies-cloves-citrus-fruits-wooden-board-with-herbal-tea-red-scarf-tea-strainer-white-surface_176474-28128.jpg"},
|
||||
{
|
||||
title: "Soft Linens", description: "Luxurious spa comforts.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/sideviews-spa-stones-towels_23-2148223690.jpg"},
|
||||
{
|
||||
title: "Diffuser Stones", description: "Artisanal scent holders.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/christmas-still-life-with-aroma-diffuser-moisturizing-air_169016-43245.jpg"},
|
||||
{
|
||||
title: "Gift Packages", description: "The perfect relaxing gift.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/spa-composition-with-thai-orchid-flowers-bath-accessories_169016-17217.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
32
src/pages/HomePage/sections/Testimonials.tsx
Normal file
32
src/pages/HomePage/sections/Testimonials.tsx
Normal file
@@ -0,0 +1,32 @@
|
||||
// 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 Our Community"
|
||||
description="Read what our clients have to say about their healing experiences."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Sarah Miller", role: "Creative Director", quote: "The best massage experience in the city. Truly transformative.", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-relaxed-smiley-woman_23-2149144908.jpg"},
|
||||
{
|
||||
name: "Mark D.", role: "Software Engineer", quote: "Finally found relief from chronic shoulder pain. Highly recommended.", imageSrc: "http://img.b2bpic.net/free-photo/happy-smiling-hispanic-woman-sitting-rattan-armchair-hotel-patio_197531-22784.jpg"},
|
||||
{
|
||||
name: "Chloe J.", role: "Architect", quote: "Such a serene space. I leave feeling like a completely different person.", imageSrc: "http://img.b2bpic.net/free-photo/low-angle-smiley-women-bathroom_23-2149485699.jpg"},
|
||||
{
|
||||
name: "James L.", role: "Professor", quote: "Expert therapist and a lovely, calm environment. Worth every penny.", imageSrc: "http://img.b2bpic.net/free-photo/beautiful-woman-cafe_273609-12671.jpg"},
|
||||
{
|
||||
name: "Maria K.", role: "Entrepreneur", quote: "Professional, welcoming, and deeply effective. I'm a regular now.", imageSrc: "http://img.b2bpic.net/free-photo/young-woman-warm-white-hoodie-home-kitchen-starts-her-day-with-cup-coffee_343596-7226.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user