Merge version_2_1782157948172 into main #1
@@ -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 Mon–Thu 9:00–15: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 />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
21
src/pages/HomePage/sections/About.tsx
Normal file
21
src/pages/HomePage/sections/About.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 "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>
|
||||
);
|
||||
}
|
||||
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="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>
|
||||
);
|
||||
}
|
||||
47
src/pages/HomePage/sections/Faq.tsx
Normal file
47
src/pages/HomePage/sections/Faq.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
48
src/pages/HomePage/sections/Features.tsx
Normal file
48
src/pages/HomePage/sections/Features.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
44
src/pages/HomePage/sections/Home.tsx
Normal file
44
src/pages/HomePage/sections/Home.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
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 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>
|
||||
);
|
||||
}
|
||||
57
src/pages/HomePage/sections/Programs.tsx
Normal file
57
src/pages/HomePage/sections/Programs.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 "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 Mon–Thu 9:00–15: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>
|
||||
);
|
||||
}
|
||||
144
src/pages/HomePage/sections/Registration.tsx
Normal file
144
src/pages/HomePage/sections/Registration.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
52
src/pages/HomePage/sections/Testimonials.tsx
Normal file
52
src/pages/HomePage/sections/Testimonials.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user