Compare commits
2 Commits
version_1_
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| da955225aa | |||
|
|
e0ad96de14 |
@@ -1,210 +1,33 @@
|
||||
import AboutTextSplit from '@/components/sections/about/AboutTextSplit';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqTabbedAccordion from '@/components/sections/faq/FaqTabbedAccordion';
|
||||
import FeaturesBentoGrid from '@/components/sections/features/FeaturesBentoGrid';
|
||||
import HeroTiltedCards from '@/components/sections/hero/HeroTiltedCards';
|
||||
import MetricsSimpleCards from '@/components/sections/metrics/MetricsSimpleCards';
|
||||
import TestimonialMarqueeOverlayCards from '@/components/sections/testimonial/TestimonialMarqueeOverlayCards';
|
||||
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 MetricsSection from './HomePage/sections/Metrics';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import FeaturesSection from './HomePage/sections/Features';
|
||||
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">
|
||||
<HeroTiltedCards
|
||||
tag="De meetbare branchenorm"
|
||||
title="De norm voor fitnessmarketing. Jij presteert erboven."
|
||||
description="Sterck publiceert de maatstaf waar elke club zich tegen meet. Wij maken marketing meetbaar, voorspelbaar en winstgevend."
|
||||
primaryButton={{
|
||||
text: "Vraag Benchmark Aan",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Ontdek de Methode",
|
||||
href: "#about",
|
||||
}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/analysis-innovation-opportunities-strengths-strategic_53876-14003.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-male-hairdresser-salon_52683-111009.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-business-woman-pointing-camera-smiling_1098-20747.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/sport-healthy-lifestyle-fitness-concept-cheerful-girl-s_197531-30690.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-businessman-having-fun-while-listening-music-headphone-office_637285-8714.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutTextSplit
|
||||
title="Waarom Sterck de norm definieert"
|
||||
descriptions={[
|
||||
"Marketing is geen gokspel. Voor fitnessondernemers met een serieuze omzet moet elke geïnvesteerde euro direct herleidbaar zijn naar resultaat. Wij elimineren 'vaagheid' en vervangen dit door keiharde data.",
|
||||
"Onze methodiek is gebaseerd op de vier meetpunten die bepalen of een club groeit of stagneert. Wij zijn de enige partner die zich committeert aan cijfers boven beloftes.",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsSimpleCards
|
||||
tag="De 4 Meetpunten"
|
||||
title="De Sterck Benchmark"
|
||||
description="Dit zijn de vier variabelen die bepalen of jouw club gezond is en waar wij de norm voor zetten."
|
||||
metrics={[
|
||||
{
|
||||
value: "€15",
|
||||
description: "Maximale kosten per gekwalificeerde lead",
|
||||
},
|
||||
{
|
||||
value: "33%",
|
||||
description: "Minimale afspraakratio op leads",
|
||||
},
|
||||
{
|
||||
value: "75%",
|
||||
description: "Show rate voor fysieke afspraken",
|
||||
},
|
||||
{
|
||||
value: "€80",
|
||||
description: "Maximale acquisitiekosten per nieuw lid",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MetricsSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialMarqueeOverlayCards
|
||||
tag="Resultaten"
|
||||
title="Wat ondernemers zeggen over onze norm"
|
||||
testimonials={[
|
||||
{
|
||||
name: "Marc de Vries",
|
||||
role: "Eigenaar",
|
||||
company: "FitResult",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-beautiful-african-woman-student-resting-relaxing-sitting-cafe-smiling-drinking-coffee_176420-12323.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sophie Janssen",
|
||||
role: "Manager",
|
||||
company: "StudioBalance",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-young-businesswoman_23-2149153827.jpg",
|
||||
},
|
||||
{
|
||||
name: "Erik van Doorn",
|
||||
role: "Eigenaar",
|
||||
company: "CoreDynamics",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-senior-woman-professional-blazer-outdoors-laptop_23-2150296623.jpg",
|
||||
},
|
||||
{
|
||||
name: "Lisa Bakker",
|
||||
role: "Eigenaar",
|
||||
company: "PureFit",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/happy-bearded-man-busines-clothes-with-crossed-arms-looking-camera-gray_171337-11335.jpg",
|
||||
},
|
||||
{
|
||||
name: "Tom Willems",
|
||||
role: "Manager",
|
||||
company: "PeakPower",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/professional-cleaning-service-person-using-vacuum-cleaner-office_23-2150520631.jpg",
|
||||
},
|
||||
]}
|
||||
description="Bekijk de resultaten die fitnessclubs in heel Nederland met onze methode hebben behaald."
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesBentoGrid
|
||||
tag="Transparantie"
|
||||
title="Wat Sterck niet doet"
|
||||
description="Wij werken niet zoals traditionele bureaus. Geen verborgen kosten, geen vage KPI's."
|
||||
features={[
|
||||
{
|
||||
title: "Geen 'Awareness' campagnes",
|
||||
description: "Wij focussen puur op conversie naar afspraak.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/business-chart-visual-graphics-report-concept_53876-167093.jpg",
|
||||
},
|
||||
{
|
||||
title: "Geen vage rapportages",
|
||||
description: "Je dashboard vertelt de hele waarheid in real-time.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/economy-representative-arrows_23-2148541978.jpg",
|
||||
},
|
||||
{
|
||||
title: "Geen lange opzegtermijnen",
|
||||
description: "Wij presteren elke maand opnieuw voor je.",
|
||||
imageSrc: "http://img.b2bpic.net/free-vector/illustration-business-people_53876-5887.jpg",
|
||||
},
|
||||
{
|
||||
title: "Geen creatieve excuses",
|
||||
description: "Als de cijfers niet kloppen, lossen wij het op.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/gold-coin-dram-armenia-currency-money-icon-sign-symbol-business-financial-exchange-3d-background-illustration_56104-1974.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FeaturesSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqTabbedAccordion
|
||||
tag="Vragen"
|
||||
title="Veelgestelde vragen"
|
||||
categories={[
|
||||
{
|
||||
name: "De Methode",
|
||||
items: [
|
||||
{
|
||||
question: "Wat als ik mijn benchmark niet haal?",
|
||||
answer: "Dan is er werk aan de winkel. Wij analyseren de bottleneck in jouw salesproces.",
|
||||
},
|
||||
{
|
||||
question: "Is Sterck geschikt voor elke club?",
|
||||
answer: "Wij werken alleen met ondernemers die al een minimale omzet van 15k draaien.",
|
||||
},
|
||||
],
|
||||
},
|
||||
]}
|
||||
description="Meer weten over onze werkwijze?"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Start vandaag"
|
||||
text="Klaar om jouw marketing cijfermatig te onderbouwen? Vraag jouw toetsing aan de Sterck-norm aan."
|
||||
primaryButton={{
|
||||
text: "Vraag Toetsing Aan",
|
||||
href: "#contact-form",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Stuur ons een mail",
|
||||
href: "mailto:info@sterck.nl",
|
||||
}}
|
||||
/>
|
||||
</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 AboutTextSplit from '@/components/sections/about/AboutTextSplit';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function AboutSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutTextSplit
|
||||
title="Waarom Sterck de norm definieert"
|
||||
descriptions={[
|
||||
"Marketing is geen gokspel. Voor fitnessondernemers met een serieuze omzet moet elke geïnvesteerde euro direct herleidbaar zijn naar resultaat. Wij elimineren 'vaagheid' en vervangen dit door keiharde data.",
|
||||
"Onze methodiek is gebaseerd op de vier meetpunten die bepalen of een club groeit of stagneert. Wij zijn de enige partner die zich committeert aan cijfers boven beloftes.",
|
||||
]}
|
||||
/>
|
||||
</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 vandaag"
|
||||
text="Klaar om jouw marketing cijfermatig te onderbouwen? Vraag jouw toetsing aan de Sterck-norm aan."
|
||||
primaryButton={{
|
||||
text: "Vraag Toetsing Aan",
|
||||
href: "#contact-form",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Stuur ons een mail",
|
||||
href: "mailto:info@sterck.nl",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
35
src/pages/HomePage/sections/Faq.tsx
Normal file
35
src/pages/HomePage/sections/Faq.tsx
Normal file
@@ -0,0 +1,35 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "faq" section.
|
||||
|
||||
import React from 'react';
|
||||
import 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="Vragen"
|
||||
title="Veelgestelde vragen"
|
||||
categories={[
|
||||
{
|
||||
name: "De Methode",
|
||||
items: [
|
||||
{
|
||||
question: "Wat als ik mijn benchmark niet haal?",
|
||||
answer: "Dan is er werk aan de winkel. Wij analyseren de bottleneck in jouw salesproces.",
|
||||
},
|
||||
{
|
||||
question: "Is Sterck geschikt voor elke club?",
|
||||
answer: "Wij werken alleen met ondernemers die al een minimale omzet van 15k draaien.",
|
||||
},
|
||||
],
|
||||
},
|
||||
]}
|
||||
description="Meer weten over onze werkwijze?"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
42
src/pages/HomePage/sections/Features.tsx
Normal file
42
src/pages/HomePage/sections/Features.tsx
Normal 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="Transparantie"
|
||||
title="Wat Sterck niet doet"
|
||||
description="Wij werken niet zoals traditionele bureaus. Geen verborgen kosten, geen vage KPI's."
|
||||
features={[
|
||||
{
|
||||
title: "Geen 'Awareness' campagnes",
|
||||
description: "Wij focussen puur op conversie naar afspraak.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/business-chart-visual-graphics-report-concept_53876-167093.jpg",
|
||||
},
|
||||
{
|
||||
title: "Geen vage rapportages",
|
||||
description: "Je dashboard vertelt de hele waarheid in real-time.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/economy-representative-arrows_23-2148541978.jpg",
|
||||
},
|
||||
{
|
||||
title: "Geen lange opzegtermijnen",
|
||||
description: "Wij presteren elke maand opnieuw voor je.",
|
||||
imageSrc: "http://img.b2bpic.net/free-vector/illustration-business-people_53876-5887.jpg",
|
||||
},
|
||||
{
|
||||
title: "Geen creatieve excuses",
|
||||
description: "Als de cijfers niet kloppen, lossen wij het op.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/gold-coin-dram-armenia-currency-money-icon-sign-symbol-business-financial-exchange-3d-background-illustration_56104-1974.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
117
src/pages/HomePage/sections/Hero.tsx
Normal file
117
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,117 @@
|
||||
/* eslint-disable */
|
||||
// @ts-nocheck — generated by catalog-eject; runtime-correct but TS strict-mode false-positives on inlined catalog body
|
||||
import Button from "@/components/ui/Button";
|
||||
import HeroBackgroundSlot from "@/components/ui/HeroBackgroundSlot";
|
||||
import TextAnimation from "@/components/ui/TextAnimation";
|
||||
import TiltedCarousel from "@/components/ui/TiltedCarousel";
|
||||
|
||||
const primaryButton = {
|
||||
text: "Vraag Benchmark Aan",
|
||||
href: "#contact"
|
||||
};
|
||||
const secondaryButton = {
|
||||
href: "#about",
|
||||
text: "Ontdek de Methode"
|
||||
};
|
||||
const items = [
|
||||
{
|
||||
imageSrc: "https://images.unsplash.com/photo-1534438327276-14e5300c3a48?q=80&w=1470&auto=format&fit=crop"
|
||||
},
|
||||
{
|
||||
imageSrc: "https://images.unsplash.com/photo-1581009146145-b5ef050c2e1e?q=80&w=1470&auto=format&fit=crop"
|
||||
},
|
||||
{
|
||||
imageSrc: "https://images.unsplash.com/photo-1571019614242-c5c5dee9f50b?q=80&w=1470&auto=format&fit=crop"
|
||||
},
|
||||
{
|
||||
imageSrc: "https://images.unsplash.com/photo-1540497077202-7c8a3999166f?q=80&w=1470&auto=format&fit=crop"
|
||||
},
|
||||
{
|
||||
imageSrc: "https://images.unsplash.com/photo-1558611848-73f7eb4001a1?q=80&w=1471&auto=format&fit=crop"
|
||||
}
|
||||
];
|
||||
|
||||
type HeroBillboardTiltedCarouselProps = {
|
||||
tag: string;
|
||||
title: string;
|
||||
description: string;
|
||||
primaryButton: { text: string; href: string };
|
||||
secondaryButton: { text: string; href: string };
|
||||
items: ({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never })[];
|
||||
};
|
||||
|
||||
const HeroInline = () => {
|
||||
return (
|
||||
<section
|
||||
aria-label="Hero section"
|
||||
className="relative flex flex-col items-center justify-center gap-8 md:gap-10 w-full min-h-svh pt-25 pb-20 md:pt-30"
|
||||
>
|
||||
<HeroBackgroundSlot />
|
||||
<div className="flex flex-col items-center gap-3 w-content-width mx-auto text-center">
|
||||
<div className="px-3 py-1 mb-1 text-sm card rounded w-fit">
|
||||
<p>{"De meetbare branchenorm"}</p>
|
||||
</div>
|
||||
|
||||
<TextAnimation
|
||||
text={"De norm voor fitnessmarketing. Jij presteert erboven."}
|
||||
variant="slide-up"
|
||||
gradientText={true}
|
||||
tag="h1"
|
||||
className="md:max-w-8/10 text-7xl 2xl:text-8xl leading-[1.15] font-semibold text-center text-balance"
|
||||
/>
|
||||
|
||||
<TextAnimation
|
||||
text={"Sterck publiceert de maatstaf waar elke club zich tegen meet. Wij maken marketing meetbaar, voorspelbaar en winstgevend."}
|
||||
variant="slide-up"
|
||||
gradientText={false}
|
||||
tag="p"
|
||||
className="md:max-w-7/10 text-lg md:text-xl leading-snug text-balance"
|
||||
/>
|
||||
|
||||
<div className="flex flex-wrap justify-center gap-3 mt-2 md:mt-3">
|
||||
<Button text={primaryButton.text} href={primaryButton.href} variant="primary"/>
|
||||
<Button text={secondaryButton.text} href={secondaryButton.href} variant="secondary"animationDelay={0.1} />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<TiltedCarousel items={items} />
|
||||
|
||||
<div className="w-full bg-background py-12 border-b border-border/40 mt-12">
|
||||
<div className="max-w-content-width mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<p className="text-center text-sm font-semibold text-muted-foreground mb-8 uppercase tracking-widest">
|
||||
Erkend en vertrouwd door marktleiders in de fitnessbranche
|
||||
</p>
|
||||
<div className="flex flex-wrap justify-center items-center gap-10 md:gap-20 opacity-60 grayscale hover:grayscale-0 transition-all duration-500">
|
||||
<div className="flex items-center gap-2">
|
||||
<div className="w-8 h-8 rounded-full bg-foreground flex items-center justify-center text-background font-bold text-xs">NL</div>
|
||||
<span className="text-xl font-bold text-foreground tracking-tight">FitNed</span>
|
||||
</div>
|
||||
<div className="flex items-center gap-2">
|
||||
<div className="w-8 h-8 bg-foreground text-background flex items-center justify-center font-bold rounded-sm text-xs">BE</div>
|
||||
<span className="text-xl font-bold text-foreground tracking-tight">HealthClub</span>
|
||||
</div>
|
||||
<div className="flex items-center gap-2">
|
||||
<svg className="w-8 h-8 text-foreground" fill="currentColor" viewBox="0 0 24 24"><path d="M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5"/></svg>
|
||||
<span className="text-xl font-bold text-foreground tracking-tight">EuropeActive</span>
|
||||
</div>
|
||||
<div className="flex items-center gap-2">
|
||||
<div className="w-8 h-8 border-4 border-foreground rounded-full flex items-center justify-center"><div className="w-2 h-2 bg-foreground rounded-full"></div></div>
|
||||
<span className="text-xl font-bold text-foreground tracking-tight">BoutiqueFit</span>
|
||||
</div>
|
||||
<div className="flex items-center gap-2">
|
||||
<span className="text-2xl font-black tracking-tighter text-foreground">MEDIA<span className="opacity-50">FIT</span></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export default function HeroSection() {
|
||||
return (
|
||||
<div data-webild-section="hero" id="hero">
|
||||
<HeroInline />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
38
src/pages/HomePage/sections/Metrics.tsx
Normal file
38
src/pages/HomePage/sections/Metrics.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 "metrics" section.
|
||||
|
||||
import React from 'react';
|
||||
import MetricsSimpleCards from '@/components/sections/metrics/MetricsSimpleCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function MetricsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsSimpleCards
|
||||
tag="De 4 Meetpunten"
|
||||
title="De Sterck Benchmark"
|
||||
description="Dit zijn de vier variabelen die bepalen of jouw club gezond is en waar wij de norm voor zetten."
|
||||
metrics={[
|
||||
{
|
||||
value: "€15",
|
||||
description: "Maximale kosten per gekwalificeerde lead",
|
||||
},
|
||||
{
|
||||
value: "33%",
|
||||
description: "Minimale afspraakratio op leads",
|
||||
},
|
||||
{
|
||||
value: "75%",
|
||||
description: "Show rate voor fysieke afspraken",
|
||||
},
|
||||
{
|
||||
value: "€80",
|
||||
description: "Maximale acquisitiekosten per nieuw lid",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
57
src/pages/HomePage/sections/Testimonials.tsx
Normal file
57
src/pages/HomePage/sections/Testimonials.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 "testimonials" section.
|
||||
|
||||
import React from 'react';
|
||||
import TestimonialMarqueeOverlayCards from '@/components/sections/testimonial/TestimonialMarqueeOverlayCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialMarqueeOverlayCards
|
||||
tag="Resultaten"
|
||||
title="Wat ondernemers zeggen over onze norm"
|
||||
testimonials={[
|
||||
{
|
||||
name: "Marc de Vries",
|
||||
role: "Eigenaar",
|
||||
company: "FitResult",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-beautiful-african-woman-student-resting-relaxing-sitting-cafe-smiling-drinking-coffee_176420-12323.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sophie Janssen",
|
||||
role: "Manager",
|
||||
company: "StudioBalance",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-young-businesswoman_23-2149153827.jpg",
|
||||
},
|
||||
{
|
||||
name: "Erik van Doorn",
|
||||
role: "Eigenaar",
|
||||
company: "CoreDynamics",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-senior-woman-professional-blazer-outdoors-laptop_23-2150296623.jpg",
|
||||
},
|
||||
{
|
||||
name: "Lisa Bakker",
|
||||
role: "Eigenaar",
|
||||
company: "PureFit",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/happy-bearded-man-busines-clothes-with-crossed-arms-looking-camera-gray_171337-11335.jpg",
|
||||
},
|
||||
{
|
||||
name: "Tom Willems",
|
||||
role: "Manager",
|
||||
company: "PeakPower",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/professional-cleaning-service-person-using-vacuum-cleaner-office_23-2150520631.jpg",
|
||||
},
|
||||
]}
|
||||
description="Bekijk de resultaten die fitnessclubs in heel Nederland met onze methode hebben behaald."
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user