// sections.jsx — Raffles ECC homepage sections. Loaded via Babel. /* global React */ const { useState, useEffect, useRef } = React; // ───────── Icons ───────── const Icon = ({ name, size = 18 }) => { const s = { width: size, height: size, strokeWidth: 1.8, fill: "none", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round" }; switch (name) { case "calendar": return (); case "phone": return (); case "wa": return (); case "shield": return (); case "spark": return (); case "heart": return (); case "run": return (); case "speech": return (); case "users": return (); case "clock": return (); case "pin": return (); case "book": return (); case "leaf": return (); case "arrow": return (); case "plus": return (); case "check": return (); case "lock": return (); case "mail": return (); case "globe": return (); case "bell": return (); default: return null; } }; // ───────── Logo (clean SVG redraw of shield, no copyrighted text faces) ───────── const Logo = ({ size = 38 }) => ( {/* TL gold */} {/* TR plum */} {/* BL plum */} {/* BR gold */} {/* Book TR */} {/* Horse silhouette BL */} ); // ───────── Nav ───────── function Nav({ branch, onBranchChange, onTourClick }) { const [scrolled, setScrolled] = useState(false); useEffect(() => { const f = () => setScrolled(window.scrollY > 20); window.addEventListener("scroll", f, { passive: true }); return () => window.removeEventListener("scroll", f); }, []); return ( ); } // ───────── Hero ───────── function Hero({ branch, onTourClick }) { return (
EYFS Premium early years · from 45 days

A warm, considered start to school{" "} — for children from 45 days.

Raffles ECC is a group of premium Dubai nurseries following the UK Early Years Foundation Stage. Play-based learning, qualified key persons and a clear pathway into the Innoventures family of schools.

See our programmes
Since
2008 · ECCs across Dubai
Ratios
1:3 to 1:8 by age
Hours
7am – 6pm · 3 or 5 days
A child in the Raffles ECC uniform, smiling during messy play.
Photos shown with parental consent
Sensory play with shaving foam and sea-creature figures.
1 educator : 3 infants The lowest ratio for our under-1s
); } // ───────── Trust strip ───────── function TrustStrip() { const items = [ { icon: "book", b: "UK EYFS curriculum", s: "Play-based, holistic" }, { icon: "heart", b: "From 45 days", s: "Babies through preschool" }, { icon: "users", b: "Ratios 1:3 — 1:8", s: "Attributed to WSA" }, { icon: "arrow", b: "School pathway", s: "Innoventures priority" }, { icon: "pin", b: "8 community centres", s: "Dubai-wide" }, ]; return (
{items.map((i, k) => (
{i.b} {i.s}
))}
); } // ───────── Curriculum (EYFS) ───────── function Curriculum({ pillars }) { return (
The curriculum

Learning is an adventure, not a worksheet.

Every Raffles ECC follows the UK Early Years Foundation Stage — a play-based framework that meets each child where they are. Teachers observe, document and gently extend learning across four developmental pillars.

The EYFS, in plain language for parents.

"Play-based" doesn't mean unstructured. Each day balances child-led exploration with short, focused group routines: a phonics circle, a number song, a story. Educators track ongoing observations against EYFS milestones, then plan the next step.

  • Daily report via the Kalo Parent App — photos, meals, naps, milestones.
  • Key-person model: one consistent educator who knows your child.
  • Termly parent–teacher conversations and a written summary.
{pillars.map(p => (
{p.title} {p.body}
))}
); } // ───────── Programmes (age band tabs) ───────── function Programmes({ ageBands }) { const [active, setActive] = useState(ageBands[0].id); const band = ageBands.find(b => b.id === active); return (
Programmes & ages

From first weeks to first words to first day of school.

Four age stages, each with a dedicated room, ratio and rhythm. Choose 3 or 5 days a week, with day options from 8am–2pm through to 8am–6pm. Early drop-off from 7am on request.

{ageBands.map(b => ( ))}
{band.label {band.range}
{band.label}

{band.lede}

{band.summary}

{band.focus.map(([k, v], i) => (
{k} {v}
))}
Ratio {band.ratio} Book a tour
); } // ───────── Pathway ───────── function Pathway({ schools }) { const stages = [ { age: "45d — 4 yrs", title: "Raffles ECC", body: "EYFS nursery across 7 community centres." }, { age: "3 — 5 yrs", title: "Raffles Starters", body: "Preschool bridge at Springs 7." }, { age: "FS1 onward", title: "Innoventures Schools", body: "Priority admission into five sister schools." }, ]; return (
Pathway to school

One family of schools. Eighteen years of education planned for.

Children leaving Raffles ECC receive priority admission into the five Innoventures schools across IB, British and American curricula — so the question "what's next?" already has an answer.

{stages.map((s, i) => (
{i + 1}

{s.title}

{s.body}

{s.age}
))}

Continue at Innoventures

The five schools your child can move into:

    {schools.map((s, i) => (
  • {s.name}
  • ))}

Curriculum details and KHDA ratings live on each school's own site — they're sister schools, not the ECC. We won't merge their inspection data here.

); } // ───────── Mission / Director quote ───────── function Mission() { return (
Lara Hudson, Director of Raffles ECCs.
Lara Hudson Director · Raffles ECCs
From the director

"Every child is valued and supported. We don't measure them against the next child — we follow their next step. That's what EYFS, done well, looks like."

Lara Hudson, Director of all Raffles ECCs
2008
Raffles ECCs founded
8
Community centres across Dubai
9,000+
Students across Innoventures group, daily
); } // ───────── Facilities gallery ───────── function Facilities() { const items = [ { src: "media/gallery-01.webp", label: "Provocation tables", cls: "lg" }, { src: "media/content-hero-04.webp", label: "Construction & STEM", cls: "sq" }, { src: "media/where-next-04.webp", label: "Outdoor reading nook", cls: "sq" }, { src: "media/content-hero-05.webp", label: "Make-your-mark wall", cls: "md" }, { src: "media/gallery-02.webp", label: "Loose-parts play", cls: "md" }, { src: "cta", cls: "sm" }, { src: "media/home-mission.webp", label: "Library corner", cls: "md" }, ]; return (
Facilities

Rooms that invite children in.

Every centre is set up as a series of invitations — soft corners for stories, low tables for messy play, shaded outdoor zones for gross-motor work. Plus on-site clinic, Kalo meals and door-to-door transport where available.

{items.map((it, i) => it.src === "cta" ? (

See it in person.

Book a tour
) : (
{it.label} {it.label}
) )}
Photography shown with parental consent and reviewed under our safeguarding policy. Per-branch facility tours are by appointment.
); } // ───────── Locations ───────── function Locations({ branches, branch, setBranch }) { return (
Locations

Eight community centres. One standard of care.

Choose a centre near home or work, then book a tour. Each branch has its own team, uniform and rhythm — but every Raffles ECC delivers the same EYFS curriculum, ratios and safeguarding standards.

{branches.map(b => (
setBranch(b)} >
{b.name {b.flag && {b.flag}}

{b.name}

{b.area}
{b.tags.map((t, i) => {t})}
))}
); } // ───────── Tour booking form ───────── function TourForm({ branches, branch, setBranch, ageBands, contact, formRef }) { const [name, setName] = useState(""); const [email, setEmail] = useState(""); const [phone, setPhone] = useState(""); const [age, setAge] = useState(ageBands[1].id); const [day, setDay] = useState(""); const [message, setMessage] = useState(""); const [submitted, setSubmitted] = useState(false); const submit = (e) => { e.preventDefault(); setSubmitted(true); }; return (
Book a tour

Visit {branch.name}. Bring your questions.

Tours run during the operating day so you can see the rooms in motion. Allow about 45 minutes — and bring your child if you'd like to see how they settle.

  • Walk every room your child would use
  • Meet the centre manager and key persons
  • Leave with the current fee table and start date options
  • Talk through the school pathway, if relevant
Prefer to call?
{contact.adminPhone} {" · "} WhatsApp
{submitted ? (

Thank you, {name.split(" ")[0] || "friend"} 👋

We've received your tour request for {branch.name}. A member of our admissions team will be in touch within one working day to confirm a time.

Message on WhatsApp
) : (
setName(e.target.value)} placeholder="Jane Smith" />
setPhone(e.target.value)} placeholder="+971 …" />
setEmail(e.target.value)} placeholder="jane@example.com" />
setDay(e.target.value)} />
{ageBands.map(b => ( ))}