18 Commits

Author SHA1 Message Date
fa405d17a2 Update src/pages/HomePage/sections/Hero.tsx 2026-06-29 15:13:21 +00:00
kudinDmitriyUp
d9b839aee3 Bob AI: fix build errors (attempt 1) 2026-06-29 15:10:36 +00:00
kudinDmitriyUp
434a021adc Bob AI: Fix hero title JSX rendering 2026-06-29 15:09:31 +00:00
kudinDmitriyUp
ff19f49f34 Bob AI: Apply minimal Apple-like theme and remove footer image 2026-06-29 15:08:23 +00:00
adda4432d8 Merge version_7_1782745328447 into main
Merge version_7_1782745328447 into main
2026-06-29 15:02:23 +00:00
72492b2f9e Update src/pages/HomePage.tsx 2026-06-29 15:02:19 +00:00
f0bfe761a5 Merge version_6_1782745305265 into main
Merge version_6_1782745305265 into main
2026-06-29 15:02:00 +00:00
4504cf18b2 Update src/pages/HomePage.tsx 2026-06-29 15:01:56 +00:00
c07c980b7d Merge version_5_1782745278928 into main
Merge version_5_1782745278928 into main
2026-06-29 15:01:36 +00:00
7f88d73556 Update src/pages/HomePage.tsx 2026-06-29 15:01:30 +00:00
7d377837dc Merge version_4_1782745183044 into main
Merge version_4_1782745183044 into main
2026-06-29 14:59:57 +00:00
517328199f Update src/pages/HomePage.tsx 2026-06-29 14:59:54 +00:00
f797161b8a Merge version_3_1782745139427 into main
Merge version_3_1782745139427 into main
2026-06-29 14:59:13 +00:00
f57649a2fe Update src/pages/HomePage.tsx 2026-06-29 14:59:10 +00:00
bb1a6f13d9 Merge version_2_1782745010071 into main
Merge version_2_1782745010071 into main
2026-06-29 14:57:06 +00:00
49d3a40dfd Merge version_1_1782744163290 into main
Merge version_1_1782744163290 into main
2026-06-29 14:44:46 +00:00
f99e4dcbd4 Merge version_1_1782744163290 into main
Merge version_1_1782744163290 into main
2026-06-29 14:44:07 +00:00
abb47b679c Merge version_1_1782744163290 into main
Merge version_1_1782744163290 into main
2026-06-29 14:43:26 +00:00
12 changed files with 345 additions and 307 deletions

View File

@@ -102,7 +102,6 @@ export default function Layout() {
href: "#",
},
]}
imageSrc="http://img.b2bpic.net/free-photo/customer-service-feedback-interface-concept_53876-124955.jpg?_wi=2"
/>
</SectionErrorBoundary>
</StyleProvider>

View File

@@ -5,14 +5,14 @@
:root {
/* @colorThemes/lightTheme/grayNavyBlue */
--background: #F7F8FA;
--card: #FFFFFF;
--background: #FFFFFF;
--card: #F7F8FA;
--foreground: #0F172A;
--primary-cta: #2563EB;
--primary-cta: #000000;
--primary-cta-text: #FFFFFF;
--secondary-cta: #FFFFFF;
--secondary-cta-text: #0F172A;
--accent: #2563EB;
--accent: #000000;
--background-accent: #E2E8F0;
/* @layout/border-radius/rounded */

View File

@@ -1,315 +1,39 @@
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqSimple from '@/components/sections/faq/FaqSimple';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import FeaturesTaggedCards from '@/components/sections/features/FeaturesTaggedCards';
import HeroBillboardTiltedCarousel from '@/components/sections/hero/HeroBillboardTiltedCarousel';
import MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
import PricingSplitCards from '@/components/sections/pricing/PricingSplitCards';
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
import TestimonialTrustCard from '@/components/sections/testimonial/TestimonialTrustCard';
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 TickerSection from './HomePage/sections/Ticker';
import MetricsSection from './HomePage/sections/Metrics';
import HowItWorksSection from './HomePage/sections/HowItWorks';
import BenefitsSection from './HomePage/sections/Benefits';
import PricingSection from './HomePage/sections/Pricing';
import ReviewsSection from './HomePage/sections/Reviews';
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="⭐⭐⭐⭐⭐ 60+ websites opgeleverd"
title="Professionele website voor uw zaak. Klaar in 48 uur."
description="Eenmalig €00. U wordt eigenaar. Gevonden op Google. Geen maandverplichting."
primaryButton={{
text: "Vraag uw gratis voorbeeld aan",
href: "/contact",
}}
secondaryButton={{
text: "Bekijk ons werk",
href: "/#work",
}}
items={[
{
imageSrc: "http://img.b2bpic.net/free-photo/website-development-layout-sketch-drawing_53876-124188.jpg?_wi=1",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/still-life-graphic-design-office_23-2151345397.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/modern-laptop-with-blank-white-screen-isolated-black-background-close-up_169016-63906.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/organizational-staff-looking-device-with-green-screen-meeting_482257-115581.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/y2k-website-window-illustration_23-2151874930.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/young-business-manager-working-with-isolated-copy-space-her-tablet_482257-107523.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="ticker" data-section="ticker">
<SectionErrorBoundary name="ticker">
<SocialProofMarquee
title="38+ lokale bedrijven gingen u voor"
names={[
"Nagelstudio Lena",
"Schildersbedrijf De Moor",
"Trimsalon Bello",
"Kapperszaak Nora",
"Schoonheidssalon Lumière",
"Loodgieter Van den Berg",
"Koffiedealers",
"Bakkerij Aldo",
"Top Wash Cleaning",
]}
tag="Trusted by"
description="Samen bouwen we aan lokale online groei."
/>
</SectionErrorBoundary>
</div>
<TickerSection />
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsMediaCards
title="Data gedreven resultaat"
description="Zonder website mist u kansen. Uw concurrenten zijn u voor."
metrics={[
{
value: "72%",
title: "Zoekintentie",
description: "van klanten zoekt eerst op Google.",
imageSrc: "http://img.b2bpic.net/free-photo/customer-service-feedback-interface-concept_53876-124955.jpg?_wi=1",
},
{
value: "5x",
title: "Klantenverlies",
description: "tot 5 nieuwe klanten per week.",
imageSrc: "http://img.b2bpic.net/free-photo/digital-art-style-illustration-graphic-designer_23-2151536936.jpg",
},
{
value: "100%",
title: "Eigenaarschap",
description: "van uw volledige website.",
imageSrc: "http://img.b2bpic.net/free-vector/hand-drawn-start-up-concept-with-rocket_23-2147789007.jpg",
},
]}
tag="De digitale realiteit"
/>
</SectionErrorBoundary>
</div>
<MetricsSection />
<div id="how-it-works" data-section="how-it-works">
<SectionErrorBoundary name="how-it-works">
<FeaturesTaggedCards
tag="Werkwijze"
title="In drie stappen live"
description="Snel, professioneel en zonder zorgen."
items={[
{
tag: "Stap 01",
title: "Gratis voorbeeld",
description: "U vult ons formulier in. Binnen 24 uur ontvangt u een vrijblijvend voorbeeld.",
imageSrc: "http://img.b2bpic.net/free-photo/blank-billboard-structure-building-facade-with-lights_9975-133802.jpg",
primaryButton: {
text: "Start nu",
href: "/contact",
},
},
{
tag: "Stap 02",
title: "Bouw op maat",
description: "Wij bouwen uw website razendsnel binnen 48 uur na akkoord.",
imageSrc: "http://img.b2bpic.net/free-photo/programming-background-collage_23-2149901782.jpg",
primaryButton: {
text: "Bekijk proces",
href: "/over-ons",
},
},
{
tag: "Stap 03",
title: "Lancering",
description: "We zetten de site live, optimaliseren voor Google en begeleiden u.",
imageSrc: "http://img.b2bpic.net/free-photo/hand-arrange-white-letters-as-growth_1384-121.jpg",
primaryButton: {
text: "Laten starten",
href: "/contact",
},
},
]}
/>
</SectionErrorBoundary>
</div>
<HowItWorksSection />
<div id="benefits" data-section="benefits">
<SectionErrorBoundary name="benefits">
<FeaturesImageBento
tag="Waarom Nexora?"
title="Voordelen voor uw zaak"
description="Alles wat u nodig heeft om lokaal te groeien."
items={[
{
title: "Fractie van de prijs",
description: "Slechts €900 eenmalig.",
imageSrc: "http://img.b2bpic.net/free-vector/digital-medicine-icons_1284-5245.jpg",
},
{
title: "Live in 48 uur",
description: "Razendsnelle oplevering.",
imageSrc: "http://img.b2bpic.net/free-vector/mobile-line-banner-set_1284-34339.jpg",
},
{
title: "SEO-klaar",
description: "Gevonden worden in Google.",
imageSrc: "http://img.b2bpic.net/free-vector/startup-company-pack_78370-11283.jpg",
},
{
title: "Mobile-first",
description: "Werkt op elk toestel.",
imageSrc: "http://img.b2bpic.net/free-photo/business-branding-label-chart-graphic_53876-133806.jpg",
},
{
title: "100% Eigenaar",
description: "Geen lock-in contract.",
imageSrc: "http://img.b2bpic.net/free-vector/group-office-workers-collaborating-tasks_1262-19784.jpg",
},
{
title: "Optioneel onderhoud",
description: "€49/maand voor service.",
imageSrc: "http://img.b2bpic.net/free-photo/rag-doll-word-success_1156-188.jpg",
},
{
title: "Snelle ondersteuning",
description: "Altijd bereikbaar.",
imageSrc: "http://img.b2bpic.net/free-vector/corporate-brochure-poster-template_53876-80525.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<BenefitsSection />
<div id="pricing" data-section="pricing">
<SectionErrorBoundary name="pricing">
<PricingSplitCards
title="Eerlijke prijs"
description="Geen verrassingen, enkel resultaat."
plans={[
{
tag: "Meest gekozen",
price: "€900",
period: "eenmalig",
description: "Professionele website voor uw zaak.",
primaryButton: {
text: "Vraag voorbeeld aan",
href: "/contact",
},
featuresTitle: "Alles inbegrepen:",
features: [
"Design op maat",
"Tot 5 pagina's",
"Mobiel-vriendelijk",
"Basis SEO",
"Hosting & Domein",
"48-uur levering",
],
},
{
tag: "Optioneel",
price: "€49",
period: "per maand",
description: "Zorgeloos onderhoud voor uw website.",
primaryButton: {
text: "Bekijk details",
href: "/onderhoud",
},
featuresTitle: "Onderhoudsservice:",
features: [
"Technische updates",
"Veiligheidsbewaking",
"Tekstwijzigingen",
"Prioriteitsondersteuning",
],
},
]}
tag="Prijzen"
/>
</SectionErrorBoundary>
</div>
<PricingSection />
<div id="reviews" data-section="reviews">
<SectionErrorBoundary name="reviews">
<TestimonialTrustCard
quote="Nexora heeft mijn zaak echt een boost gegeven. Ik krijg wekelijks nieuwe aanvragen en de website was binnen 48 uur klaar. Absoluut top!"
rating={5}
author="M.D. — Schildersbedrijf Antwerpen"
avatars={[
{
name: "David",
imageSrc: "http://img.b2bpic.net/free-photo/bearded-man-wearing-white-shirt-looking-smiling-confident-showing-ok-sign-standing-pink-wall_141793-55819.jpg",
},
{
name: "Ilya",
imageSrc: "http://img.b2bpic.net/free-photo/front-view-man-posing-studio_23-2150275662.jpg",
},
{
name: "Vincent",
imageSrc: "http://img.b2bpic.net/free-photo/middle-age-latin-businesswoman-smiling-happy-standing-with-arms-crossed-gesture-city_839833-17431.jpg",
},
{
name: "L.V.",
imageSrc: "http://img.b2bpic.net/free-photo/portrait-man-black-suit_23-2148401442.jpg",
},
{
name: "Top Wash",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-corporate-woman-young-intern-walks-street-office-holds-mobile-phone-texts_1258-119521.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<ReviewsSection />
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqSimple
tag="FAQ"
title="Veelgestelde vragen"
items={[
{
question: "Wat is inbegrepen in de prijs?",
answer: "U ontvangt een volledige website met 5 pagina's, basis SEO en hosting.",
},
{
question: "Hoe snel is de oplevering?",
answer: "Binnen 48 uur na goedkeuring van het ontwerp.",
},
{
question: "Ben ik eigenaar?",
answer: "Ja, 100% eigendom. Geen lock-in.",
},
]}
description="Hier vindt u antwoorden op de meest gestelde vragen."
/>
</SectionErrorBoundary>
</div>
<FaqSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="GRATIS VOORBEELD"
text="Start vandaag. Vraag uw gratis voorbeeld aan. Vrijblijvend en zonder kosten."
primaryButton={{
text: "Vraag gratis voorbeeld aan",
href: "/contact",
}}
secondaryButton={{
text: "Bel +32 468 05 02 01",
href: "tel:+32468050201",
}}
/>
</SectionErrorBoundary>
</div>
<ContactSection />
</>
);
}

View File

@@ -0,0 +1,21 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "benefits" section.
import React from 'react';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function BenefitsSection(): React.JSX.Element {
return (
<div id="benefits" data-section="benefits">
<SectionErrorBoundary name="benefits">
<FeaturesImageBento
tag="Waarom Nexora?"
title="Voordelen voor uw zaak"
description="Alles wat u nodig heeft om lokaal te groeien."
items={[{"title":"Fractie van de prijs","imageSrc":"https://images.unsplash.com/photo-1554224155-6726b3ff858f?auto=format&fit=crop&q=80&w=2611&ixlib=rb-4.0.3","description":"Slechts €900 eenmalig."},{"imageSrc":"https://images.unsplash.com/photo-1498050108023-c5249f4df085?auto=format&fit=crop&q=80&w=2672&ixlib=rb-4.0.3","title":"Live in 48 uur","description":"Razendsnelle oplevering."},{"description":"Gevonden worden in Google.","imageSrc":"https://images.unsplash.com/photo-1460925895917-afdab827c52f?auto=format&fit=crop&q=80&w=2426&ixlib=rb-4.0.3","title":"SEO-klaar"},{"description":"Werkt op elk toestel.","imageSrc":"https://images.unsplash.com/photo-1512941937669-90a1b58e7e9c?auto=format&fit=crop&q=80&w=2670&ixlib=rb-4.0.3","title":"Mobile-first"},{"imageSrc":"https://images.unsplash.com/photo-1450101499163-c8848c66cb85?auto=format&fit=crop&q=80&w=2670&ixlib=rb-4.0.3","title":"100% Eigenaar","description":"Geen lock-in contract."},{"imageSrc":"https://images.unsplash.com/photo-1504384308090-c894fdcc538d?auto=format&fit=crop&q=80&w=2670&ixlib=rb-4.0.3","title":"Optioneel onderhoud","description":"€49/maand voor service."},{"description":"Altijd bereikbaar.","title":"Snelle ondersteuning","imageSrc":"https://images.unsplash.com/photo-1516321318423-f06f85e504b3?auto=format&fit=crop&q=80&w=2670&ixlib=rb-4.0.3"}]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,27 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "contact" section.
import React from 'react';
import ContactCta from '@/components/sections/contact/ContactCta';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ContactSection(): React.JSX.Element {
return (
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="GRATIS VOORBEELD"
text="Start vandaag. Vraag uw gratis voorbeeld aan. Vrijblijvend en zonder kosten."
primaryButton={{
text: "Vraag gratis voorbeeld aan",
href: "/contact",
}}
secondaryButton={{
text: "Bel +32 468 05 02 01",
href: "tel:+32468050201",
}}
/>
</SectionErrorBoundary>
</div>
);
}

View 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="Veelgestelde vragen"
items={[
{
question: "Wat is inbegrepen in de prijs?",
answer: "U ontvangt een volledige website met 5 pagina's, basis SEO en hosting.",
},
{
question: "Hoe snel is de oplevering?",
answer: "Binnen 48 uur na goedkeuring van het ontwerp.",
},
{
question: "Ben ik eigenaar?",
answer: "Ja, 100% eigendom. Geen lock-in.",
},
]}
description="Hier vindt u antwoorden op de meest gestelde vragen."
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,29 @@
// 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="⭐⭐⭐⭐⭐ 60+ websites opgeleverd"
title="Professionele website voor uw zaak. Klaar in 48 uur."
description="Eenmalig €00. U "
primaryButton={{
text: "Vraag uw gratis voorbeeld aan",
href: "/contact",
}}
secondaryButton={{
text: "Bekijk ons werk",
href: "/#work",
}}
items={[{"imageSrc":"https://images.unsplash.com/photo-1460925895917-afdab827c52f?auto=format&fit=crop&q=80&w=2426&ixlib=rb-4.0.3"},{"imageSrc":"https://images.unsplash.com/photo-1507238691740-187a5b1d37b8?auto=format&fit=crop&q=80&w=2555&ixlib=rb-4.0.3"},{"imageSrc":"https://images.unsplash.com/photo-1498050108023-c5249f4df085?auto=format&fit=crop&q=80&w=2672&ixlib=rb-4.0.3"},{"imageSrc":"https://images.unsplash.com/photo-1551288049-bebda4e38f71?auto=format&fit=crop&q=80&w=2670&ixlib=rb-4.0.3"},{"imageSrc":"https://images.unsplash.com/photo-1522542550221-31fd19575a2d?auto=format&fit=crop&q=80&w=2670&ixlib=rb-4.0.3"},{"imageSrc":"https://images.unsplash.com/photo-1481481322814-3c64d8e04871?auto=format&fit=crop&q=80&w=2669&ixlib=rb-4.0.3"}]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,52 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "how-it-works" section.
import React from 'react';
import FeaturesTaggedCards from '@/components/sections/features/FeaturesTaggedCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HowItWorksSection(): React.JSX.Element {
return (
<div id="how-it-works" data-section="how-it-works">
<SectionErrorBoundary name="how-it-works">
<FeaturesTaggedCards
tag="Werkwijze"
title="In drie stappen live"
description="Snel, professioneel en zonder zorgen."
items={[
{
tag: "Stap 01",
title: "Gratis voorbeeld",
description: "U vult ons formulier in. Binnen 24 uur ontvangt u een vrijblijvend voorbeeld en ",
imageSrc: "https://images.pexels.com/photos/34140/pexels-photo.jpg?auto=compress&cs=tinysrgb&h=650&w=940&id=34140",
primaryButton: {
text: "Start nu",
href: "/contact",
},
},
{
tag: "Stap 02",
title: "Bouw op jouw maat",
description: "Wij bouwen uw website razendsnel binnen 48 uur na akkoord.",
imageSrc: "https://images.pexels.com/photos/12899151/pexels-photo-12899151.jpeg?auto=compress&cs=tinysrgb&h=650&w=940&id=12899151",
primaryButton: {
text: "Bekijk proces",
href: "/over-ons",
},
},
{
tag: "Stap 03",
title: "Lancering",
description: "We zetten de site live, optimaliseren voor Google en begeleiden u.",
imageSrc: "https://images.pexels.com/photos/2166/flight-sky-earth-space.jpg?auto=compress&cs=tinysrgb&h=650&w=940&id=2166",
primaryButton: {
text: "Laten starten",
href: "/contact",
},
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,21 @@
// 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
title="Data gedreven resultaat"
description="Zonder website mist u kansen. Uw concurrenten zijn u voor."
metrics={[{"value":"72%","description":"van klanten zoekt eerst op Google.","title":"Zoekintentie","imageSrc":"https://images.unsplash.com/photo-1551288049-bebda4e38f71?auto=format&fit=crop&q=80&w=2670&ixlib=rb-4.0.3"},{"imageSrc":"https://images.unsplash.com/photo-1460925895917-afdab827c52f?auto=format&fit=crop&q=80&w=2426&ixlib=rb-4.0.3","title":"Klantenverlies","description":"tot 5 nieuwe klanten per week.","value":"5x"},{"value":"100%","title":"Eigenaarschap","imageSrc":"https://images.unsplash.com/photo-1507238691740-187a5b1d37b8?auto=format&fit=crop&q=80&w=2555&ixlib=rb-4.0.3","description":"van uw volledige website."}]}
tag="De digitale realiteit"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,58 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "pricing" section.
import React from 'react';
import PricingSplitCards from '@/components/sections/pricing/PricingSplitCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function PricingSection(): React.JSX.Element {
return (
<div id="pricing" data-section="pricing">
<SectionErrorBoundary name="pricing">
<PricingSplitCards
title="Eerlijke prijs"
description="Geen verrassingen, enkel resultaat."
plans={[
{
tag: "Meest gekozen",
price: "€900",
period: "eenmalig",
description: "Professionele website voor uw zaak.",
primaryButton: {
text: "Vraag voorbeeld aan",
href: "/contact",
},
featuresTitle: "Alles inbegrepen:",
features: [
"Design op maat",
"Tot 5 pagina's",
"Mobiel-vriendelijk",
"Basis SEO",
"Hosting & Domein",
"48-uur levering",
],
},
{
tag: "Optioneel",
price: "€49",
period: "per maand",
description: "Zorgeloos onderhoud voor uw website.",
primaryButton: {
text: "Bekijk details",
href: "/onderhoud",
},
featuresTitle: "Onderhoudsservice:",
features: [
"Technische updates",
"Veiligheidsbewaking",
"Tekstwijzigingen",
"Prioriteitsondersteuning",
],
},
]}
tag="Prijzen"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,42 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "reviews" section.
import React from 'react';
import TestimonialTrustCard from '@/components/sections/testimonial/TestimonialTrustCard';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ReviewsSection(): React.JSX.Element {
return (
<div id="reviews" data-section="reviews">
<SectionErrorBoundary name="reviews">
<TestimonialTrustCard
quote="Nexora heeft mijn zaak echt een boost gegeven. Ik krijg wekelijks nieuwe aanvragen en de website was binnen 48 uur klaar. Absoluut top!"
rating={5}
author="M.D. — Schildersbedrijf Antwerpen"
avatars={[
{
name: "David",
imageSrc: "http://img.b2bpic.net/free-photo/bearded-man-wearing-white-shirt-looking-smiling-confident-showing-ok-sign-standing-pink-wall_141793-55819.jpg",
},
{
name: "Ilya",
imageSrc: "http://img.b2bpic.net/free-photo/front-view-man-posing-studio_23-2150275662.jpg",
},
{
name: "Vincent",
imageSrc: "http://img.b2bpic.net/free-photo/middle-age-latin-businesswoman-smiling-happy-standing-with-arms-crossed-gesture-city_839833-17431.jpg",
},
{
name: "L.V.",
imageSrc: "http://img.b2bpic.net/free-photo/portrait-man-black-suit_23-2148401442.jpg",
},
{
name: "Top Wash",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-corporate-woman-young-intern-walks-street-office-holds-mobile-phone-texts_1258-119521.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,31 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "ticker" section.
import React from 'react';
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function TickerSection(): React.JSX.Element {
return (
<div id="ticker" data-section="ticker">
<SectionErrorBoundary name="ticker">
<SocialProofMarquee
title="38+ lokale bedrijven gingen u voor"
names={[
"Nagelstudio Lena",
"Schildersbedrijf De Moor",
"Trimsalon Bello",
"Kapperszaak Nora",
"Schoonheidssalon Lumière",
"Loodgieter Van den Berg",
"Koffiedealers",
"Bakkerij Aldo",
"Top Wash Cleaning",
]}
tag="Trusted by"
description="Samen bouwen we aan lokale online groei."
/>
</SectionErrorBoundary>
</div>
);
}