/* Sea La Vie — page bodies (one component per route) */ const { useState: useP, useEffect: useEp, useMemo: useM } = React; /* ==================================================================== HOME ==================================================================== */ function HomePage() { return (
The Residences

Four houses, one estate.

Each residence has its own character — a courtyard, a long pool deck, a forest plunge pool, a headland with the view down the coast. Choose one, or take all four for a private party.

The Journal

Notes from the coast.

Field guides, recipes, conservation, and the slow rhythms of the south coast — written by our team and by the makers we work with.

); } /* ==================================================================== RESIDENCES — Detailed page with anchored sections per villa ==================================================================== */ function ResidenceDetail({ v, flip, currency }) { return (
{v.badge}

{v.name[0]} {v.name[1]}

{v.desc}

Bedrooms
{v.bedrooms}
Bathrooms
{v.baths}
Interior
{v.sqft} sq ft
Sleeps
{v.sleeps} guests
From
{formatPrice(v.priceUSD, currency)}
Per
{v.period}
); } function ResidencesPage() { const [currency] = useCurrency(); return ( {VILLAS.map((v, i) => )}
Whole-Estate Buyout

The entire property, privately yours.

For weddings, retreats, multi-generational holidays and corporate gatherings, the four residences can be taken as a single buyout — sixteen bedrooms, twenty-eight guests, two pools, a private chef brigade, and a stretch of coastline to yourself.

); } /* ==================================================================== EXPERIENCES — all categories with sub-tabs ==================================================================== */ function ExperiencesPage() { const [tab, setTab] = useP("Ocean"); const cats = ["Ocean", "Adrenaline", "Wellness", "Excursions"]; return (
{cats.map(c => ( ))}
Concierge

Looking for something specific? Tell us and we'll arrange it.

Email our concierge
); } /* ==================================================================== CUISINE ==================================================================== */ function CuisinePage() { return (
In-villa & near-by

Six tables worth knowing.

A selection of in-villa private dining options and the most loved restaurants on the south coast. Reservations are made by your travel curator on request.

The Villa Kitchen

A chef in the house, every day.

Every residence comes with a dedicated chef brigade who shop the Likoni fish market at dawn and the Ukunda spice stalls before lunch. Menus are personal — share what you love, what you don't, and what you'd like to learn.

  • · Breakfast on the deck — fresh tropical fruit, mahamri, masala chai
  • · Long, slow lunches — pilau, coconut-braised reef fish
  • · Dinner on the sand — bonfire table, whole catch on the coals
  • · A market tour and cooking class on request
); } /* ==================================================================== WELLNESS ==================================================================== */ function WellnessPage() { return (
In-villa rituals

Slow mornings, longer evenings.

A short menu of in-villa wellness offerings, each performed by therapists and teachers we have known for years.

The Retreat Programme

A week-long retreat, built around you.

For longer stays, we curate week-long retreat programmes with private yoga, daily massage, a nutritionist-designed menu drawn from the villa kitchen, and a curated set of nature excursions across the south coast.

Enquire about a retreat
); } /* ==================================================================== JOURNAL ==================================================================== */ function JournalPage() { return (
{JOURNAL.slice(0, 3).map((j, i) => (
{j.cat} · {j.date}

{j.title[0]} {j.title[1]}

{j.excerpt}

Read the entry
))}
{JOURNAL.slice(3).map((j, i) => (
{j.cat} · {j.date}

{j.title[0]} {j.title[1]}

{j.excerpt}

Read the entry
))}
Subscribe

The Letter

A quarterly note from the coast — Kaskazi tides, recipes, opening dates, and the small movements of the estate.

); } /* ==================================================================== AVAILABILITY ==================================================================== */ function AvailabilityPage() { // Read ?villa=… from query string to pre-select the booking widget villa const initial = useM(() => { if (typeof window === "undefined") return null; const p = new URLSearchParams(window.location.search); return p.get("villa"); }, []); return (
Need help?

Speak to a travel curator

For long stays, whole-estate buyouts, or anything outside the usual, a member of our team will reply within twenty-four hours.

); } /* ==================================================================== STORY ==================================================================== */ function StoryPage() { return (

Hidden within Diani's lush coastline, the residences bring together contemporary coastal design with the textures, materials, and craftsmanship of the Swahili coast — lime-washed walls, hand-carved details, natural timber, soft linen, and open spaces shaped by ocean air and tropical light.

Every element has been intentionally considered to create an experience that feels calm, discreet, and deeply connected to place. Days move between the pool, the ocean, long lunches, barefoot evenings, and the stillness that makes this coastline unlike anywhere else.

Much of what defines Sea La Vie comes from the surrounding region itself — locally crafted interiors, fresh ingredients sourced from nearby farms and fishermen, and a team whose warmth and knowledge shape the experience quietly behind the scenes.

More than a place to stay, Sea La Vie is designed to feel private, effortless, and removed from the pace of everyday life — a refined coastal escape steps from the ocean.

Opening November 2026.

The Coastline

Steps from the
Indian Ocean.

Diani is a thirty-kilometre arc of soft white sand, fringed by an offshore reef that breaks the surf and turns the inshore water into a long, shallow swimming pool — among the most consistently warm and clear waters on the east African coast.

Just south of the property is the Kisite-Mpunguti Marine Park, where dolphins still calve and sea turtles nest. Just inland is Shimba Hills, a coastal forest with elephant herds. The combination is exceedingly rare.

From the ocean
100 metres
From the airport
7 minutes
Opening
November 2026
Residences
Four
Considered Design

Every element intentional.

From the lime-washed walls to the carved Swahili doors, every detail of Sea La Vie has been sourced or made locally by craftspeople rooted in this coast.

{[ { l: "Materials", v: "Lime-washed walls, natural timber, hand-carved Swahili details, soft linen." }, { l: "Sourcing", v: "Interiors, furnishings and finishes crafted within the surrounding region." }, { l: "Cuisine", v: "Fresh ingredients drawn from nearby farms and the daily catch from local fishermen." }, { l: "Team", v: "A team whose warmth and knowledge shape the experience quietly behind the scenes." }, { l: "Privacy", v: "Four residences set within indigenous coastal forest, hidden from one another and from the road." }, { l: "Place", v: "Designed to feel calm, discreet, and deeply connected to the Swahili coast." } ].map((f, i) => (
{f.l}

{f.v}

))}
); } /* ==================================================================== CONTACT ==================================================================== */ function ContactPage() { return (
Direct

Reach us any way you like.

Reservations
Telephone
WhatsApp
Hours
{CONTACT.hours}
In person

Visit the estate.

{CONTACT.address.map((l, i) => {l}
)}

Getting here
7 minutes by car from Ukunda Airport (UKA) — daily SafariLink and Skyward flights from Wilson, Nairobi.
45 minutes by car from Moi International, Mombasa (MBA) — direct international flights from Europe and the Middle East.
A private transfer is arranged with every reservation.

); } function EnquiryForm() { const [form, setForm] = useP({ name: "", email: "", phone: "", subject: "General enquiry", message: "" }); const [sent, setSent] = useP(false); const [err, setErr] = useP(""); const [submitting, setSubmitting] = useP(false); function up(k, v) { setForm(prev => ({ ...prev, [k]: v })); } async function submit(e) { e.preventDefault(); setErr(""); if (!form.name.trim() || !form.email.trim() || !form.message.trim()) { setErr("Please share your name, email and message."); return; } setSubmitting(true); try { const r = await apiEnquiry(form); if (r && r.ok) setSent(true); else setErr((r && r.error) || "Something went wrong. Please email us directly at " + CONTACT.email); } catch(e) { // Fallback to mailto const subj = encodeURIComponent(form.subject); const body = encodeURIComponent(`Name: ${form.name}\nEmail: ${form.email}\nPhone: ${form.phone}\n\n${form.message}`); window.location.href = `mailto:${CONTACT.email}?subject=${subj}&body=${body}`; setSent(true); } finally { setSubmitting(false); } } if (sent) { return (
Thank you

Asante sana.

Your message has reached our reservations desk. A member of the team will be in touch from {CONTACT.email} within twenty-four hours.

); } return (
Send a note

Tell us about your trip.

up("name", e.target.value)} placeholder="As it appears on your passport" />
up("email", e.target.value)} placeholder="you@example.com" />
up("phone", e.target.value)} placeholder="+254 …" />