Merge version_2_1781400185099 into main #1
@@ -5,8 +5,8 @@
|
||||
|
||||
:root {
|
||||
/* @colorThemes/lightTheme/grayNavyBlue */
|
||||
--background: #f5f4ef;
|
||||
--card: #dad6cd;
|
||||
--background: #fce4ec;
|
||||
--card: #f8bbd0;
|
||||
--foreground: #2a2928;
|
||||
--primary-cta: #2a2928;
|
||||
--primary-cta-text: #f5f4ef;
|
||||
|
||||
@@ -1,308 +1,36 @@
|
||||
import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqSimple from '@/components/sections/faq/FaqSimple';
|
||||
import FeaturesRevealCards from '@/components/sections/features/FeaturesRevealCards';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import HeroSplitVerticalMarquee from '@/components/sections/hero/HeroSplitVerticalMarquee';
|
||||
import MetricsIconCards from '@/components/sections/metrics/MetricsIconCards';
|
||||
import TestimonialRatingCards from '@/components/sections/testimonial/TestimonialRatingCards';
|
||||
import { Award, Clock, MapPin, Shield, Smile, Sparkles } 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 ProductSection from './HomePage/sections/Product';
|
||||
import MetricsSection from './HomePage/sections/Metrics';
|
||||
import TestimonialSection from './HomePage/sections/Testimonial';
|
||||
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">
|
||||
<HeroSplitVerticalMarquee
|
||||
tag="Clinical & Luxe"
|
||||
title="Beauty Groningen: Elite Aesthetic Care"
|
||||
description="Experience professional skincare and transformative treatments across our Groningen and Sappemeer locations."
|
||||
primaryButton={{
|
||||
text: "Book an Appointment",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Our Services",
|
||||
href: "#features",
|
||||
}}
|
||||
leftItems={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/illuminated-couch-armchair_1203-771.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/transparent-oily-bubbles-vibrant-copy-space-watery-background_23-2148290191.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/armchair-couch_1203-772.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/studio-portrait-with-hands-posing-with-plants_23-2149628187.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautician-with-paper-sheet_23-2148875476.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/serene-spa-interior_23-2151945692.jpg",
|
||||
},
|
||||
]}
|
||||
rightItems={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-hyaluronic-acid-tratment_23-2149286732.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/gua-sha-face-roller-plate-arrangement-high-angle_23-2149357122.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-beautiful-woman-with-clear-skin-using-face-serum_23-2149207918.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautician-woman-clinic_23-2148878875.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-smiley-woman-using-serum_23-2149319498.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-elegant-beauty-selfcare-treatment_23-2149238339.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutFeaturesSplit
|
||||
tag="Our Philosophy"
|
||||
title="Clinical Precision meets Luxe Care"
|
||||
description="Beauty Groningen provides premium, evidence-based treatments delivered with individual attention in a serene clinical setting."
|
||||
items={[
|
||||
{
|
||||
icon: Shield,
|
||||
title: "Expert Care",
|
||||
description: "Board-certified professionals for every treatment.",
|
||||
},
|
||||
{
|
||||
icon: Sparkles,
|
||||
title: "Luxe Settings",
|
||||
description: "Two premium clinics designed for your total comfort.",
|
||||
},
|
||||
{
|
||||
icon: Award,
|
||||
title: "Evidence Based",
|
||||
description: "Proven protocols for optimal, lasting results.",
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/woman-visiting-cosmetologist-making-rejuvenation-procedures_1303-26039.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesRevealCards
|
||||
tag="Our Services"
|
||||
title="Comprehensive Aesthetic Solutions"
|
||||
description="Explore our curated list of professional treatments."
|
||||
items={[
|
||||
{
|
||||
title: "Advanced Skincare",
|
||||
description: "Tailored regimens to restore your skin's vitality.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-cream-bath-concept_23-2148419382.jpg",
|
||||
},
|
||||
{
|
||||
title: "Injectables",
|
||||
description: "Natural-looking rejuvenation by medical experts.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/arrangement-nail-care-accessories-salon_23-2148766591.jpg",
|
||||
},
|
||||
{
|
||||
title: "Laser Treatments",
|
||||
description: "High-precision technology for resurfacing and repair.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/doctor-performing-laser-hair-removal-patient-skin_107420-65220.jpg",
|
||||
},
|
||||
{
|
||||
title: "Facials",
|
||||
description: "Deep-cleansing and nutrient-rich therapy for a glow.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/3d-rendering-spa-massage-wellness-hotel-suite-with-bathtub_105762-2026.jpg",
|
||||
},
|
||||
{
|
||||
title: "Body Treatments",
|
||||
description: "Advanced non-invasive contouring technology.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/fit-woman-wearing-white-lingerie_273609-14461.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FeaturesSection />
|
||||
|
||||
<div id="product" data-section="product">
|
||||
<SectionErrorBoundary name="product">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Treatment Menu"
|
||||
title="Precision Care Protocols"
|
||||
description="Our signature treatment pathways for every concern."
|
||||
items={[
|
||||
{
|
||||
title: "Groningen Glow Facial",
|
||||
description: "Signature hydrating facial.",
|
||||
href: "#contact",
|
||||
imageSrc: "https://storage.googleapis.com/webild/default/no-image.jpg?id=jty5p8",
|
||||
},
|
||||
{
|
||||
title: "Sappemeer Lift",
|
||||
description: "Advanced contouring.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-bath-products_23-2148223716.jpg",
|
||||
},
|
||||
{
|
||||
title: "Laser Genesis",
|
||||
description: "Skin resurfacing.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/dermatologist-removing-mole-from-womans-shoulder_107420-74019.jpg",
|
||||
},
|
||||
{
|
||||
title: "Botulinum Therapy",
|
||||
description: "Dynamic line reduction.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/masseur-taking-care-her-client_23-2149273923.jpg",
|
||||
},
|
||||
{
|
||||
title: "Dermal Filling",
|
||||
description: "Volume restoration.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/girl-spa-salon-receives-back-neck-massage-lies-cosmetology-table-relaxed-enjoys-process_343596-4325.jpg",
|
||||
},
|
||||
{
|
||||
title: "Body Sculpture",
|
||||
description: "Fat reduction.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/female-with-electrocardiogram-leads-body_23-2147934614.jpg",
|
||||
},
|
||||
{
|
||||
title: "Expert Consultation",
|
||||
description: "Personalized assessment.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-medical-pills_23-2149283859.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ProductSection />
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsIconCards
|
||||
tag="Our Impact"
|
||||
title="Beauty Groningen by the Numbers"
|
||||
description="Excellence defined through clinic success."
|
||||
metrics={[
|
||||
{
|
||||
icon: Smile,
|
||||
title: "Happy Clients",
|
||||
value: "5000+",
|
||||
},
|
||||
{
|
||||
icon: Clock,
|
||||
title: "Years Experience",
|
||||
value: "15",
|
||||
},
|
||||
{
|
||||
icon: MapPin,
|
||||
title: "Locations",
|
||||
value: "2",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MetricsSection />
|
||||
|
||||
<div id="testimonial" data-section="testimonial">
|
||||
<SectionErrorBoundary name="testimonial">
|
||||
<TestimonialRatingCards
|
||||
tag="Testimonials"
|
||||
title="Voices of Our Clients"
|
||||
description="Real stories from your local community."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Anna V.",
|
||||
role: "Client",
|
||||
quote: "The best clinic in Groningen. Truly professional.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/senior-man-talking-phone_23-2148404354.jpg",
|
||||
},
|
||||
{
|
||||
name: "Mark D.",
|
||||
role: "Client",
|
||||
quote: "Transformative facial, worth every euro.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/female-visagiste-with-client-smiling-camera_23-2148113181.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sophie K.",
|
||||
role: "Client",
|
||||
quote: "I feel so confident after my treatments.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/women-discussing-spa-treatment_23-2149871830.jpg",
|
||||
},
|
||||
{
|
||||
name: "Jeroen H.",
|
||||
role: "Client",
|
||||
quote: "Professional, clinical, and very welcoming.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-checking-her-skin-mirror-after-receiving-cosmetic-treatment_107420-73987.jpg",
|
||||
},
|
||||
{
|
||||
name: "Lotte P.",
|
||||
role: "Client",
|
||||
quote: "Clean and premium care, highly recommended.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/doctor-examining-female-patients-face-clinic_107420-73982.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSimple
|
||||
tag="FAQ"
|
||||
title="Common Questions"
|
||||
description="Get answers about our clinics and treatments."
|
||||
items={[
|
||||
{
|
||||
question: "Where are your clinics located?",
|
||||
answer: "We have clinics in both Groningen and Sappemeer for your convenience.",
|
||||
},
|
||||
{
|
||||
question: "Are treatments invasive?",
|
||||
answer: "Most treatments are non-invasive, with minimal downtime.",
|
||||
},
|
||||
{
|
||||
question: "Do I need a consultation first?",
|
||||
answer: "We recommend a consultation to customize your care plan.",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Start Your Journey"
|
||||
text="Ready for a transformation? Book your consultation today."
|
||||
primaryButton={{
|
||||
text: "Book Groningen",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Book Sappemeer",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
23
src/pages/HomePage/sections/About.tsx
Normal file
23
src/pages/HomePage/sections/About.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 "about" section.
|
||||
|
||||
import React from 'react';
|
||||
import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';
|
||||
import { Award, Clock, MapPin, Shield, Smile, Sparkles } 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="Clinical Precision meets Luxe Care"
|
||||
description="Beauty Groningen provides premium, evidence-based treatments delivered with individual attention in a serene clinical setting. We prioritize your safety and satisfaction, utilizing the latest advancements in aesthetic medicine to deliver measurable, long-lasting improvements."
|
||||
items={[{"title":"Expert Care","description":"Board-certified professionals ensuring the highest standards of safety and efficacy for every treatment.","icon":"Shield"},{"icon":"Sparkles","description":"Two premium clinics designed for your total comfort and privacy during your transformative journey.","title":"Luxe Settings"},{"icon":"Award","description":"Proven protocols and state-of-the-art technology for optimal, lasting results you can trust.","title":"Evidence Based"}]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/woman-visiting-cosmetologist-making-rejuvenation-procedures_1303-26039.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
27
src/pages/HomePage/sections/Contact.tsx
Normal file
27
src/pages/HomePage/sections/Contact.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 "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="Start Your Journey"
|
||||
text="Ready for a transformation? Book your consultation today."
|
||||
primaryButton={{
|
||||
text: "Book Groningen",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Book Sappemeer",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
34
src/pages/HomePage/sections/Faq.tsx
Normal file
34
src/pages/HomePage/sections/Faq.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 "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="FAQ"
|
||||
title="Common Questions"
|
||||
description="Get answers about our clinics and treatments."
|
||||
items={[
|
||||
{
|
||||
question: "Where are your clinics located?",
|
||||
answer: "We have clinics in both Groningen and Sappemeer for your convenience.",
|
||||
},
|
||||
{
|
||||
question: "Are treatments invasive?",
|
||||
answer: "Most treatments are non-invasive, with minimal downtime.",
|
||||
},
|
||||
{
|
||||
question: "Do I need a consultation first?",
|
||||
answer: "We recommend a consultation to customize your care plan.",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
21
src/pages/HomePage/sections/Features.tsx
Normal file
21
src/pages/HomePage/sections/Features.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 "features" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesRevealCards from '@/components/sections/features/FeaturesRevealCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FeaturesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesRevealCards
|
||||
tag="Our Services"
|
||||
title="Comprehensive Aesthetic Solutions"
|
||||
description="Explore our curated list of professional treatments, each designed to deliver exceptional, noticeable results."
|
||||
items={[{"description":"Tailored regimens using medical-grade products to restore your skin's vitality and youthful glow.","title":"Advanced Skincare","imageSrc":"http://img.b2bpic.net/free-photo/high-angle-cream-bath-concept_23-2148419382.jpg"},{"title":"Injectables","imageSrc":"http://img.b2bpic.net/free-photo/arrangement-nail-care-accessories-salon_23-2148766591.jpg","description":"Natural-looking rejuvenation administered by highly experienced medical experts for safe, beautiful outcomes."},{"imageSrc":"http://img.b2bpic.net/free-photo/doctor-performing-laser-hair-removal-patient-skin_107420-65220.jpg","title":"Laser Treatments","description":"High-precision technology for resurfacing and repair, effectively targeting imperfections with minimal downtime."},{"description":"Deep-cleansing and nutrient-rich therapy customized to your skin type for a radiant, healthy complexion.","title":"Facials","imageSrc":"http://img.b2bpic.net/free-photo/3d-rendering-spa-massage-wellness-hotel-suite-with-bathtub_105762-2026.jpg"},{"title":"Body Treatments","imageSrc":"http://img.b2bpic.net/free-photo/fit-woman-wearing-white-lingerie_273609-14461.jpg","description":"Advanced non-invasive contouring technology to sculpt and refine your silhouette safely and effectively."}]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
68
src/pages/HomePage/sections/Hero.tsx
Normal file
68
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -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 (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroSplitVerticalMarquee
|
||||
tag="Clinical Excellence & Luxe Care"
|
||||
title="Beauty Groningen: Elite Aesthetic Care & Proven Results"
|
||||
description="Experience professional skincare and transformative treatments across our Groningen and Sappemeer locations. Our highly trained specialists use industry-leading techniques to ensure safe, effective, and stunning results."
|
||||
primaryButton={{
|
||||
text: "Book an Appointment",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Our Services",
|
||||
href: "#features",
|
||||
}}
|
||||
leftItems={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/illuminated-couch-armchair_1203-771.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/transparent-oily-bubbles-vibrant-copy-space-watery-background_23-2148290191.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/armchair-couch_1203-772.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/studio-portrait-with-hands-posing-with-plants_23-2149628187.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautician-with-paper-sheet_23-2148875476.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/serene-spa-interior_23-2151945692.jpg",
|
||||
},
|
||||
]}
|
||||
rightItems={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-hyaluronic-acid-tratment_23-2149286732.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/gua-sha-face-roller-plate-arrangement-high-angle_23-2149357122.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-beautiful-woman-with-clear-skin-using-face-serum_23-2149207918.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautician-woman-clinic_23-2148878875.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-smiley-woman-using-serum_23-2149319498.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-elegant-beauty-selfcare-treatment_23-2149238339.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
22
src/pages/HomePage/sections/Metrics.tsx
Normal file
22
src/pages/HomePage/sections/Metrics.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 "metrics" section.
|
||||
|
||||
import React from 'react';
|
||||
import MetricsIconCards from '@/components/sections/metrics/MetricsIconCards';
|
||||
import { Award, Clock, MapPin, Shield, Smile, Sparkles } 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="Our Impact"
|
||||
title="Beauty Groningen by the Numbers"
|
||||
description="Excellence defined through clinic success, continuous education, and unwavering commitment to client satisfaction."
|
||||
metrics={[{"value":"5000+","icon":"Smile","title":"Satisfied Clients"},{"icon":"Award","value":"12","title":"Industry Awards"},{"title":"Years of Excellence","icon":"Clock","value":"15+"},{"title":"Premium Locations","icon":"MapPin","value":"2"}]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
64
src/pages/HomePage/sections/Product.tsx
Normal file
64
src/pages/HomePage/sections/Product.tsx
Normal file
@@ -0,0 +1,64 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "product" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ProductSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="product" data-section="product">
|
||||
<SectionErrorBoundary name="product">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Treatment Menu"
|
||||
title="Precision Care Protocols"
|
||||
description="Our signature treatment pathways for every concern."
|
||||
items={[
|
||||
{
|
||||
title: "Groningen Glow Facial",
|
||||
description: "Signature hydrating facial.",
|
||||
href: "#contact",
|
||||
imageSrc: "https://storage.googleapis.com/webild/default/no-image.jpg?id=jty5p8",
|
||||
},
|
||||
{
|
||||
title: "Sappemeer Lift",
|
||||
description: "Advanced contouring.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-bath-products_23-2148223716.jpg",
|
||||
},
|
||||
{
|
||||
title: "Laser Genesis",
|
||||
description: "Skin resurfacing.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/dermatologist-removing-mole-from-womans-shoulder_107420-74019.jpg",
|
||||
},
|
||||
{
|
||||
title: "Botulinum Therapy",
|
||||
description: "Dynamic line reduction.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/masseur-taking-care-her-client_23-2149273923.jpg",
|
||||
},
|
||||
{
|
||||
title: "Dermal Filling",
|
||||
description: "Volume restoration.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/girl-spa-salon-receives-back-neck-massage-lies-cosmetology-table-relaxed-enjoys-process_343596-4325.jpg",
|
||||
},
|
||||
{
|
||||
title: "Body Sculpture",
|
||||
description: "Fat reduction.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/female-with-electrocardiogram-leads-body_23-2147934614.jpg",
|
||||
},
|
||||
{
|
||||
title: "Expert Consultation",
|
||||
description: "Personalized assessment.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-medical-pills_23-2149283859.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
57
src/pages/HomePage/sections/Testimonial.tsx
Normal file
57
src/pages/HomePage/sections/Testimonial.tsx
Normal file
@@ -0,0 +1,57 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "testimonial" section.
|
||||
|
||||
import React from 'react';
|
||||
import TestimonialRatingCards from '@/components/sections/testimonial/TestimonialRatingCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonial" data-section="testimonial">
|
||||
<SectionErrorBoundary name="testimonial">
|
||||
<TestimonialRatingCards
|
||||
tag="Testimonials"
|
||||
title="Voices of Our Clients"
|
||||
description="Real stories from your local community."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Anna V.",
|
||||
role: "Client",
|
||||
quote: "The best clinic in Groningen. Truly professional.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/senior-man-talking-phone_23-2148404354.jpg",
|
||||
},
|
||||
{
|
||||
name: "Mark D.",
|
||||
role: "Client",
|
||||
quote: "Transformative facial, worth every euro.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/female-visagiste-with-client-smiling-camera_23-2148113181.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sophie K.",
|
||||
role: "Client",
|
||||
quote: "I feel so confident after my treatments.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/women-discussing-spa-treatment_23-2149871830.jpg",
|
||||
},
|
||||
{
|
||||
name: "Jeroen H.",
|
||||
role: "Client",
|
||||
quote: "Professional, clinical, and very welcoming.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-checking-her-skin-mirror-after-receiving-cosmetic-treatment_107420-73987.jpg",
|
||||
},
|
||||
{
|
||||
name: "Lotte P.",
|
||||
role: "Client",
|
||||
quote: "Clean and premium care, highly recommended.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/doctor-examining-female-patients-face-clinic_107420-73982.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user