// Main app
const { useState, useEffect, useRef, useMemo } = React;
// SVG logo (matches uploaded wordmark — original re-tracing of the OMNIYAT mark would be needed for production; here we render the brand-supplied SVG inline)
function Logo({ height = 14 }) {
return (
);
}
function Nav({ active, project, locale, setLocale, onCta, scrolled, sections }) {
const t = STRINGS[locale];
return (
{["EN","AR","RU","ZH"].map(L => (
setLocale(L.toLowerCase())}>
{L}
))}
{t.nav_cta}
);
}
function Hero({ project, onCta }) {
const [idx, setIdx] = useState(0);
useEffect(()=>{
const t = setInterval(()=> setIdx(i => (i+1) % project.heroImages.length), 6000);
return ()=> clearInterval(t);
}, [project.id]);
// Reset when project changes
useEffect(()=> setIdx(0), [project.id]);
return (
{project.heroImages.map((src,i)=>(
))}
{project.eyebrow.split(" · ").map((p,i)=>(
{i>0 && }
{p}
))}
{project.name}
— {project.sub.split(".")[0]}.
{project.sub}
onCta("interest")}>
Register interest
onCta("brochure")}>
Download brochure
{String(idx+1).padStart(2,"0")}
/ {String(project.heroImages.length).padStart(2,"0")}
Architect
{project.architect.replace("OMNIYAT in collaboration with ","").replace(" — interior architecture","")}
Completion
{project.completion}
);
}
function BrandStrip() {
return (
2005
Founded
Mahdi Amjad, Chairman
~$10bn
Portfolio
Eighteen masterpieces
37%
$10M+ residential share, Dubai
Property Monitor · 2024
$900M
Sukuk raised, 2025
Press attributed
);
}
function Vision({ project }) {
return (
Vision 01
A discreet
architectural
composition.
{project.vision.map((p, i) => (
{p}
))}
);
}
function Architecture({ project }) {
return (
Architecture & Design 02
Drawn for
the long horizon.
{project.architectureCopy}
Architecture
{project.architect}
Interiors
{project.interiors}
{project.hospitality && project.hospitality !== "Confirm with developer" && (
<>
Operator
{project.hospitality}
>
)}
Developer
OMNIYAT
);
}
function Hospitality({ project }) {
if (project.hospitality !== "Dorchester Collection") {
// For Vela & non-Dorchester projects, use a neutral block
return (
Service 03
Hospitality-grade
residential service.
{project.hospitalityCopy.map((p,i)=>
{p}
)}
Operator confirmation pending — by enquiry.
);
}
return (
Hospitality 03
Operated by
Dorchester Collection.
{project.hospitalityCopy.map((p,i)=>
{p}
)}
The Dorchester
45 Park Lane
Le Meurice
The Beverly Hills Hotel
Dorchester Collection marks shown for editorial reference. Logo rights to be cleared prior to publishing on any production microsite.
);
}
// Stylised, abstract location plot — not a literal Google embed (which is a separate component to wire pre-launch).
function LocationMapSvg({ project }) {
return (
{/* gradient water */}
{/* Stylised Palm Jumeirah / Marasi shape, depending on project */}
{project.location.includes("Palm") ? (
{Array.from({length:16}).map((_,i)=>{
const a = (i / 16) * Math.PI * 2;
const x1 = 200 + Math.cos(a) * 90;
const y1 = 200 + Math.sin(a) * 90;
const x2 = 200 + Math.cos(a) * 140;
const y2 = 200 + Math.sin(a) * 140;
return ;
})}
) : (
{/* canal shape */}
{Array.from({length:8}).map((_,i)=>(
))}
)}
{/* project pin */}
{project.location.toUpperCase()}
DUBAI · UAE
);
}
function LocationBlock({ project }) {
return (
Location 04
{project.location.split(" (")[0]}.
Dubai, United Arab Emirates
Latitude {project.coords.lat}
Longitude {project.coords.lng}
{project.coords.note}
Proximity
{project.pois.map((p,i)=>(
{p.name}
{p.d}
))}
Drive-times indicative · subject to traffic.
);
}
function Residences({ project }) {
return (
Residences 05
{project.residences ? `${project.residences} private residences.` : "A reserved release."}
Every residence is delivered to the same architectural standard. Specifications are
confirmed at private viewing — no published prices, no public availability list.
{project.residences ?? "—"}{project.residences ? "" : ""}
Private residences
{project.resortResidences ?? (project.storeys ?? "—")}
{project.resortResidences ? "Resort residences" : (project.storeys ? "Storeys" : "By enquiry")}
{project.floorRatio ? "1:1" : "—"}
{project.floorRatio || "Residence ratio"}
{project.completion.split(" ")[0]}
Completion · {project.completion.includes("(") ? "official" : "confirmed"}
{project.residenceTypes.map((t,i)=>(
{t.label}
{t.name}
{t.meta}
{t.price}
→
))}
Residence sizes, configurations, layouts and pricing are confirmed only at private viewing and remain subject to RERA / Dubai Land Department registration. No price list is published; no availability is implied.
);
}
function Amenities({ project }) {
return (
Amenities 06
A private
residential club.
{project.amenities.map((a,i)=>(
{String(i+1).padStart(2,"0")}
{a}
))}
Selected amenities are reserved for residence owners and named guests; access is allocated by the building's residential director. Programming subject to refinement at handover.
);
}
function Gallery({ project, onOpen }) {
const tiles = project.gallery.slice(0,8);
return (
Gallery 07
A film & render archive.
{project.gallery.length} frames · indicative
{tiles.map((g,i)=>(
onOpen(i)}>
{String(i+1).padStart(2,"0")} · {g.caption}
))}
);
}
function Lightbox({ project, idx, setIdx, onClose }) {
if (idx == null) return null;
const g = project.gallery[idx];
useEffect(()=>{
const h = (e)=>{
if (e.key === "Escape") onClose();
if (e.key === "ArrowRight") setIdx((idx+1) % project.gallery.length);
if (e.key === "ArrowLeft") setIdx((idx-1+project.gallery.length) % project.gallery.length);
};
window.addEventListener("keydown", h);
return ()=> window.removeEventListener("keydown", h);
}, [idx]);
return (
{ e.stopPropagation(); setIdx((idx-1+project.gallery.length) % project.gallery.length); }}>‹
e.stopPropagation()}>
{String(idx+1).padStart(2,"0")} / {String(project.gallery.length).padStart(2,"0")} · {g.caption}
{ e.stopPropagation(); setIdx((idx+1) % project.gallery.length); }}>›
Close · Esc
);
}
function Register({ project, locale }) {
const t = STRINGS[locale];
return (
Register Interest 08
{t.register_title} {t.register_em}
{t.register_blurb}
{t.perks.map((p,i)=>(
{String(i+1).padStart(2,"0")}
{p}
))}
Or call · +971 4 511 5504
Toll-free · 800 666
Media · media@omniyat.com
);
}
function NextProjects({ activeId, onSwitch }) {
const others = Object.values(PROJECTS);
return (
Other masterpieces 09
Explore the portfolio.
Eighteen masterpieces · three destinations
{others.map(p => (
onSwitch(p.id)}>
{p.id === activeId ? "Now viewing" : "View"}
{p.name}
{p.location.split(" (")[0]}
))}
);
}
function Footer() {
return (
The Art of Elevation.
OMNIYAT is Dubai's ultra-luxury real-estate and lifestyle developer. Founded 2005 by Mahdi Amjad.
© OMNIYAT 2005–{new Date().getFullYear()}. All figures attributed. No price published.
);
}
// === MAIN APP =====================================================
function App() {
const defaults = window.__TWEAK_DEFAULTS__ || { project:"alba", locale:"en", accent:"bronze" };
const [tweaks, setTweak] = window.useTweaks(defaults);
const project = PROJECTS[tweaks.project] || PROJECTS.alba;
const locale = tweaks.locale || "en";
const [activeSection, setActiveSection] = useState("top");
const [scrolled, setScrolled] = useState(false);
const [lightboxIdx, setLightboxIdx] = useState(null);
// Apply locale to
useEffect(()=>{
document.documentElement.lang = locale;
document.documentElement.dir = (locale === "ar") ? "rtl" : "ltr";
document.documentElement.dataset.accent = tweaks.accent || "bronze";
document.title = `${project.fullName} — OMNIYAT`;
}, [locale, tweaks.accent, project.fullName]);
// Scroll detection
useEffect(()=>{
const onScroll = ()=>{
setScrolled(window.scrollY > 80);
const sections = ["top","vision","architecture","hospitality","location","residences","amenities","gallery","register"];
let cur = "top";
for (const id of sections) {
const el = document.getElementById(id);
if (el && el.getBoundingClientRect().top < 200) cur = id;
}
setActiveSection(cur);
};
window.addEventListener("scroll", onScroll, { passive:true });
return ()=> window.removeEventListener("scroll", onScroll);
}, []);
const sections = [
{ id:"vision", label:"Vision" },
{ id:"architecture", label:"Architecture" },
{ id:"hospitality", label:"Hospitality" },
{ id:"location", label:"Location" },
{ id:"residences", label:"Residences" },
{ id:"amenities", label:"Amenities" },
{ id:"register", label:"Register" },
];
const scrollToRegister = (mode) => {
const el = document.getElementById("register");
if (el) {
const top = el.getBoundingClientRect().top + window.scrollY - 20;
window.scrollTo({ top, behavior:"smooth" });
}
};
// Tweaks panel
const TweaksPanel = window.TweaksPanel;
const TweakSection = window.TweakSection;
const TweakRadio = window.TweakRadio;
const TweakSelect = window.TweakSelect;
const TweakColor = window.TweakColor;
return (
setTweak("locale", l)} sections={sections}
scrolled={scrolled} onCta={()=> scrollToRegister()} />
scrollToRegister(mode)} />
{
setTweak("project", id);
window.scrollTo({ top:0, behavior:"smooth" });
}} />
setLightboxIdx(null)} />
scrollToRegister("brochure")}>Brochure
scrollToRegister("interest")}>Register interest
{TweaksPanel && (
setTweak("project", v)}
options={[
{ value:"alba", label:"The Alba (Dorchester · Zaha Hadid)" },
{ value:"ava", label:"AVA at Palm Jumeirah (Dorchester · Portia Fox)" },
{ value:"orla", label:"Orla (Dorchester · Foster + Partners)" },
{ value:"vela", label:"Vela (Marasi Bay)" },
]} />
setTweak("locale", v)}
options={[
{ value:"en", label:"EN" },
{ value:"ar", label:"AR (RTL)" },
]} />
setTweak("accent", v)}
options={[
{ value:"bronze", label:"Bronze" },
{ value:"sea", label:"Sea-glass" },
{ value:"ink", label:"Limestone" },
]} />
)}
);
}
ReactDOM.createRoot(document.getElementById("root")).render( );