Merge version_2_1782157948172 into main #1

Merged
bender merged 1 commits from version_2_1782157948172 into main 2026-06-22 19:55:16 +00:00
10 changed files with 504 additions and 255 deletions

View File

@@ -1,267 +1,38 @@
import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqTabbedAccordion from '@/components/sections/faq/FaqTabbedAccordion';
import FeaturesBorderGlow from '@/components/sections/features/FeaturesBorderGlow';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import HeroOverlayMarquee from '@/components/sections/hero/HeroOverlayMarquee';
import MetricsIconCards from '@/components/sections/metrics/MetricsIconCards';
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
import { Award, CheckCircle, Heart, Shield, Smile, Sparkles, Star, Zap } 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 HomeSection from './HomePage/sections/Home';
import AboutSection from './HomePage/sections/About';
import FeaturesSection from './HomePage/sections/Features';
import ProgramsSection from './HomePage/sections/Programs';
import MetricsSection from './HomePage/sections/Metrics';
import TestimonialsSection from './HomePage/sections/Testimonials';
import FaqSection from './HomePage/sections/Faq';
import ContactSection from './HomePage/sections/Contact';
import RegistrationSection from './HomePage/sections/Registration';export default function HomePage(): React.JSX.Element {
return (
<>
<div id="home" data-section="home">
<SectionErrorBoundary name="home">
<HeroOverlayMarquee
tag="Baby Physiotherapy"
title="Supporting Every First Movement"
description="Professional guidance for your newborn and toddler's physical growth. My World of Movement helps children reach their developmental milestones."
primaryButton={{
text: "View Programs",
href: "#programs",
}}
secondaryButton={{
text: "Contact Us",
href: "#contact",
}}
items={[
{
text: "Certified Experts",
icon: CheckCircle,
},
{
text: "Modern Techniques",
icon: Zap,
},
{
text: "Home Support",
icon: Shield,
},
]}
imageSrc="http://img.b2bpic.net/free-photo/baby-crawling-with-his-mother-s-help_23-2149355578.jpg"
/>
</SectionErrorBoundary>
</div>
<>
<HomeSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutMediaOverlay
tag="Our Approach"
title="Expert Care for Tiny Bodies"
description="Our practice is dedicated to early intervention and developmental support. We use evidence-based techniques to help newborns and babies (3+) explore movement safely."
imageSrc="http://img.b2bpic.net/free-photo/close-up-kids-playing-indoors_23-2149217978.jpg"
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesBorderGlow
tag="How We Help"
title="Developmental Benefits"
description="Our programs are tailored to the specific needs of infants and growing toddlers."
features={[
{
icon: Sparkles,
title: "Newborn Support",
description: "Gentle movement for healthy development.",
},
{
icon: Star,
title: "3+ Month Programs",
description: "Fun activities for early milestones.",
},
{
icon: Award,
title: "Professional Care",
description: "Evidence-based therapy techniques.",
},
{
icon: Heart,
title: "Holistic Approach",
description: "Supporting the whole family journey.",
},
{
icon: Smile,
title: "Expert Guidance",
description: "Qualified specialists in infant motor skills.",
},
]}
/>
</SectionErrorBoundary>
</div>
<FeaturesSection />
<div id="programs" data-section="programs">
<SectionErrorBoundary name="programs">
<FeaturesImageBento
tag="Programs"
title="Weekly Movement Schedule"
description="Available MonThu 9:0015:00. Max 4 families per hour."
items={[
{
title: "Newborns",
description: "Gentle exercise, 45m slots",
imageSrc: "http://img.b2bpic.net/free-photo/trainer-assisting-group-people-with-stretching-exercise_1170-216.jpg",
},
{
title: "Babies 3+",
description: "Movement play, 45m slots",
imageSrc: "http://img.b2bpic.net/free-photo/kid-doing-occupational-therapy-session-with-psychologist_23-2149091549.jpg",
},
{
title: "Physiotherapy",
description: "One-on-one sessions",
imageSrc: "http://img.b2bpic.net/free-photo/young-mother-with-newborn-baby-newborn-baby_169016-63129.jpg",
},
{
title: "Parent Education",
description: "Development tips",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-kid-with-car-wooden-toys_23-2149311281.jpg",
},
{
title: "Milestone Tracking",
description: "Progress updates",
imageSrc: "http://img.b2bpic.net/free-photo/full-shot-mother-baby-bed_23-2149409281.jpg",
},
{
title: "Home Exercises",
description: "Guided routines",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-kid-playing-indoors_23-2149217977.jpg",
},
{
title: "Clinic Visits",
description: "Book a session",
imageSrc: "http://img.b2bpic.net/free-photo/group-people-performing-stretching-exercise_1170-2992.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<ProgramsSection />
<RegistrationSection />
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsIconCards
tag="Our Impact"
title="Healthy Growth Statistics"
description="Evidence-based results for every family."
metrics={[
{
icon: CheckCircle,
title: "Happy Families",
value: "500+",
},
{
icon: Smile,
title: "Milestones Reached",
value: "1200",
},
{
icon: Heart,
title: "Weekly Sessions",
value: "40+",
},
]}
/>
</SectionErrorBoundary>
</div>
<MetricsSection />
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialColumnMarqueeCards
tag="Testimonials"
title="What Parents Say"
description="We are proud to support families on their journey."
testimonials={[
{
name: "Anna S.",
role: "Parent",
quote: "The program was excellent for our newborn.",
imageSrc: "http://img.b2bpic.net/free-photo/kids-celebrating-brothers-day_52683-109782.jpg",
},
{
name: "Mark D.",
role: "Parent",
quote: "Fantastic professional guidance provided.",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-child-enjoying-didactic-game_23-2149316967.jpg",
},
{
name: "Elena K.",
role: "Parent",
quote: "We saw great progress very quickly.",
imageSrc: "http://img.b2bpic.net/free-photo/elegant-mother-with-cute-little-daughter_1157-25311.jpg",
},
{
name: "Simon T.",
role: "Parent",
quote: "The team made us feel very welcome.",
imageSrc: "http://img.b2bpic.net/free-photo/mid-shot-mother-hiding-baby-papers_23-2148552485.jpg",
},
{
name: "Lisa M.",
role: "Parent",
quote: "Highly recommend these physiotherapy experts.",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-hands-drawing-with-chalk_23-2149027441.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<TestimonialsSection />
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqTabbedAccordion
tag="FAQ"
title="Common Questions"
categories={[
{
name: "General",
items: [
{
question: "What are your hours?",
answer: "Monday Friday: 8:00 AM 5:00 PM.",
},
{
question: "How to register?",
answer: "Contact us via phone or email.",
},
{
question: "Do I need a referral?",
answer: "No, you can book an initial consultation directly.",
},
{
question: "Are you specialized in infants?",
answer: "Yes, we focus exclusively on movement development in babies and toddlers.",
},
{
question: "Is insurance accepted?",
answer: "We provide documentation for you to submit to your provider.",
},
],
},
]}
description="Find answers to our most frequently asked questions."
/>
</SectionErrorBoundary>
</div>
<FaqSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Contact"
text="Start your journey with us today."
primaryButton={{
text: "+386 (0)41 262 430",
href: "tel:+38641262430",
}}
secondaryButton={{
text: "info@myworldofmovement.com",
href: "mailto:info@myworldofmovement.com",
}}
/>
</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 "about" section.
import React from 'react';
import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function AboutSection(): React.JSX.Element {
return (
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutMediaOverlay
tag="Our Approach"
title="Expert Care for Tiny Bodies"
description="Our practice is dedicated to early intervention and developmental support. We use evidence-based techniques to help newborns and babies (3+) explore movement safely."
imageSrc="http://img.b2bpic.net/free-photo/close-up-kids-playing-indoors_23-2149217978.jpg"
/>
</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="Contact"
text="Start your journey with us today."
primaryButton={{
text: "+386 (0)41 262 430",
href: "tel:+38641262430",
}}
secondaryButton={{
text: "info@myworldofmovement.com",
href: "mailto:info@myworldofmovement.com",
}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,47 @@
// 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="FAQ"
title="Common Questions"
categories={[
{
name: "General",
items: [
{
question: "What are your hours?",
answer: "Monday Friday: 8:00 AM 5:00 PM.",
},
{
question: "How to register?",
answer: "Contact us via phone or email.",
},
{
question: "Do I need a referral?",
answer: "No, you can book an initial consultation directly.",
},
{
question: "Are you specialized in infants?",
answer: "Yes, we focus exclusively on movement development in babies and toddlers.",
},
{
question: "Is insurance accepted?",
answer: "We provide documentation for you to submit to your provider.",
},
],
},
]}
description="Find answers to our most frequently asked questions."
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,48 @@
// 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 FeaturesBorderGlow from '@/components/sections/features/FeaturesBorderGlow';
import { Award, CheckCircle, Heart, Shield, Smile, Sparkles, Star, Zap } from "lucide-react";
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FeaturesSection(): React.JSX.Element {
return (
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesBorderGlow
tag="How We Help"
title="Developmental Benefits"
description="Our programs are tailored to the specific needs of infants and growing toddlers."
features={[
{
icon: Sparkles,
title: "Newborn Support",
description: "Gentle movement for healthy development.",
},
{
icon: Star,
title: "3+ Month Programs",
description: "Fun activities for early milestones.",
},
{
icon: Award,
title: "Professional Care",
description: "Evidence-based therapy techniques.",
},
{
icon: Heart,
title: "Holistic Approach",
description: "Supporting the whole family journey.",
},
{
icon: Smile,
title: "Expert Guidance",
description: "Qualified specialists in infant motor skills.",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,44 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "home" section.
import React from 'react';
import HeroOverlayMarquee from '@/components/sections/hero/HeroOverlayMarquee';
import { Award, CheckCircle, Heart, Shield, Smile, Sparkles, Star, Zap } from "lucide-react";
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HomeSection(): React.JSX.Element {
return (
<div id="home" data-section="home">
<SectionErrorBoundary name="home">
<HeroOverlayMarquee
tag="Baby Physiotherapy"
title="Supporting Every First Movement"
description="Professional guidance for your newborn and toddler's physical growth. My World of Movement helps children reach their developmental milestones."
primaryButton={{
text: "View Programs",
href: "#programs",
}}
secondaryButton={{
text: "Contact Us",
href: "#contact",
}}
items={[
{
text: "Certified Experts",
icon: CheckCircle,
},
{
text: "Modern Techniques",
icon: Zap,
},
{
text: "Home Support",
icon: Shield,
},
]}
imageSrc="http://img.b2bpic.net/free-photo/baby-crawling-with-his-mother-s-help_23-2149355578.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View 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 MetricsIconCards from '@/components/sections/metrics/MetricsIconCards';
import { Award, CheckCircle, Heart, Shield, Smile, Sparkles, Star, Zap } 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="Healthy Growth Statistics"
description="Evidence-based results for every family."
metrics={[
{
icon: CheckCircle,
title: "Happy Families",
value: "500+",
},
{
icon: Smile,
title: "Milestones Reached",
value: "1200",
},
{
icon: Heart,
title: "Weekly Sessions",
value: "40+",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,57 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "programs" section.
import React from 'react';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ProgramsSection(): React.JSX.Element {
return (
<div id="programs" data-section="programs">
<SectionErrorBoundary name="programs">
<FeaturesImageBento
tag="Programs"
title="Weekly Movement Schedule"
description="Available MonThu 9:0015:00. Max 4 families per hour."
items={[
{
title: "Newborns",
description: "Gentle exercise, 45m slots",
imageSrc: "http://img.b2bpic.net/free-photo/trainer-assisting-group-people-with-stretching-exercise_1170-216.jpg",
},
{
title: "Babies 3+",
description: "Movement play, 45m slots",
imageSrc: "http://img.b2bpic.net/free-photo/kid-doing-occupational-therapy-session-with-psychologist_23-2149091549.jpg",
},
{
title: "Physiotherapy",
description: "One-on-one sessions",
imageSrc: "http://img.b2bpic.net/free-photo/young-mother-with-newborn-baby-newborn-baby_169016-63129.jpg",
},
{
title: "Parent Education",
description: "Development tips",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-kid-with-car-wooden-toys_23-2149311281.jpg",
},
{
title: "Milestone Tracking",
description: "Progress updates",
imageSrc: "http://img.b2bpic.net/free-photo/full-shot-mother-baby-bed_23-2149409281.jpg",
},
{
title: "Home Exercises",
description: "Guided routines",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-kid-playing-indoors_23-2149217977.jpg",
},
{
title: "Clinic Visits",
description: "Book a session",
imageSrc: "http://img.b2bpic.net/free-photo/group-people-performing-stretching-exercise_1170-2992.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,144 @@
import Button from "@/components/ui/Button";
import Input from "@/components/ui/Input";
import Label from "@/components/ui/Label";
import TextAnimation from "@/components/ui/TextAnimation";
import ScrollReveal from "@/components/ui/ScrollReveal";
export default function RegistrationSection() {
return (
<div data-webild-section="registration">
<section className="relative w-full py-24 bg-background" id="registration">
<div className="w-content-width mx-auto">
<ScrollReveal variant="fade">
<div className="text-center mb-16">
<TextAnimation
text="Registration Schedule & Booking"
variant="fade-blur"
tag="h2"
className="text-4xl md:text-5xl font-bold text-foreground mb-4"
gradientText={false}
/>
<p className="text-lg text-accent max-w-2xl mx-auto">
Book a session for our Newborns or Babies 3+ programs. Each hour slot has a capacity of 4 families to ensure personalized attention.
</p>
</div>
</ScrollReveal>
<ScrollReveal variant="fade" delay={0.2}>
<div className="card p-6 md:p-8 rounded-lg shadow-sm mb-16 overflow-x-auto border border-accent/20">
<h3 className="text-2xl font-bold text-foreground mb-6">Weekly Schedule</h3>
<table className="w-full text-left border-collapse min-w-[600px]">
<thead>
<tr>
<th className="p-4 border-b border-accent/20 text-foreground font-semibold">Time</th>
{['Monday', 'Tuesday', 'Wednesday', 'Thursday'].map((day) => (
<th key={day} className="p-4 border-b border-accent/20 text-foreground font-semibold">{day}</th>
))}
</tr>
</thead>
<tbody>
{['09:00 AM', '10:00 AM', '11:00 AM', '12:00 PM', '01:00 PM', '02:00 PM', '03:00 PM'].map((hour) => (
<tr key={hour} className="hover:bg-accent/5 transition-colors">
<td className="p-4 border-b border-accent/20 text-foreground font-medium whitespace-nowrap">{hour}</td>
{['Monday', 'Tuesday', 'Wednesday', 'Thursday'].map((day) => (
<td key={`${day}-${hour}`} className="p-4 border-b border-accent/20 text-accent">
<div className="text-sm">Available</div>
<div className="text-xs opacity-70">Capacity: 4 families</div>
</td>
))}
</tr>
))}
</tbody>
</table>
</div>
</ScrollReveal>
<ScrollReveal variant="fade" delay={0.4}>
<div className="card p-6 md:p-8 rounded-lg shadow-sm max-w-3xl mx-auto border border-accent/20">
<h3 className="text-2xl font-bold text-foreground mb-6">Book a Session</h3>
<form className="space-y-6" onSubmit={(e) => e.preventDefault()}>
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
<div className="space-y-2">
<Label htmlFor="parentName">Parent's Name</Label>
<Input
id="parentName"
name="parentName"
required
placeholder="Jane Doe"
className="border-accent/30"
/>
</div>
<div className="space-y-2">
<Label htmlFor="childName">Child's Name</Label>
<Input
id="childName"
name="childName"
required
placeholder="Baby Doe"
className="border-accent/30"
/>
</div>
<div className="space-y-2">
<Label htmlFor="childAge">Child's Age (in months)</Label>
<Input
id="childAge"
name="childAge"
type="number"
required
placeholder="e.g. 4"
className="border-accent/30"
/>
</div>
<div className="space-y-2">
<Label htmlFor="program">Program</Label>
<select
id="program"
name="program"
className="flex h-10 w-full rounded-md border border-accent/30 bg-background px-3 py-2 text-sm text-foreground focus:outline-none focus:ring-2 focus:ring-primary-cta"
required
>
<option value="newborns">Newborns (0-3 months)</option>
<option value="babies3plus">Babies 3+ months</option>
</select>
</div>
<div className="space-y-2">
<Label htmlFor="day">Preferred Day</Label>
<select
id="day"
name="day"
className="flex h-10 w-full rounded-md border border-accent/30 bg-background px-3 py-2 text-sm text-foreground focus:outline-none focus:ring-2 focus:ring-primary-cta"
required
>
<option value="monday">Monday</option>
<option value="tuesday">Tuesday</option>
<option value="wednesday">Wednesday</option>
<option value="thursday">Thursday</option>
</select>
</div>
<div className="space-y-2">
<Label htmlFor="time">Preferred Time</Label>
<select
id="time"
name="time"
className="flex h-10 w-full rounded-md border border-accent/30 bg-background px-3 py-2 text-sm text-foreground focus:outline-none focus:ring-2 focus:ring-primary-cta"
required
>
<option value="09:00">09:00 AM</option>
<option value="10:00">10:00 AM</option>
<option value="11:00">11:00 AM</option>
<option value="12:00">12:00 PM</option>
<option value="13:00">01:00 PM</option>
<option value="14:00">02:00 PM</option>
<option value="15:00">03:00 PM</option>
</select>
</div>
</div>
<Button onClick={() => alert('Registration submitted successfully!')} variant="primary" className="w-full mt-6" text="Book Session" />
</form>
</div>
</ScrollReveal>
</div>
</section>
</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 "testimonials" section.
import React from 'react';
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function TestimonialsSection(): React.JSX.Element {
return (
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialColumnMarqueeCards
tag="Testimonials"
title="What Parents Say"
description="We are proud to support families on their journey."
testimonials={[
{
name: "Anna S.",
role: "Parent",
quote: "The program was excellent for our newborn.",
imageSrc: "http://img.b2bpic.net/free-photo/kids-celebrating-brothers-day_52683-109782.jpg",
},
{
name: "Mark D.",
role: "Parent",
quote: "Fantastic professional guidance provided.",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-child-enjoying-didactic-game_23-2149316967.jpg",
},
{
name: "Elena K.",
role: "Parent",
quote: "We saw great progress very quickly.",
imageSrc: "http://img.b2bpic.net/free-photo/elegant-mother-with-cute-little-daughter_1157-25311.jpg",
},
{
name: "Simon T.",
role: "Parent",
quote: "The team made us feel very welcome.",
imageSrc: "http://img.b2bpic.net/free-photo/mid-shot-mother-hiding-baby-papers_23-2148552485.jpg",
},
{
name: "Lisa M.",
role: "Parent",
quote: "Highly recommend these physiotherapy experts.",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-hands-drawing-with-chalk_23-2149027441.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}