/* global React */ const { useState: useS2, useEffect: useE2, useMemo: useM2, useRef: useR2, useCallback: useC2 } = React; /* ============================================================ Nav ============================================================ */ function Nav({ locale, setLocale }) { const [scrolled, setScrolled] = useS2(false); useE2(() => { const onScroll = () => setScrolled(window.scrollY > 24); window.addEventListener("scroll", onScroll); return () => window.removeEventListener("scroll", onScroll); }, []); return ( ); } /* ============================================================ Hero ============================================================ */ const HERO_OPTIONS = { showroom: { img: "assets/showroom-01.webp", alt: "Mirage Project Point Dubai showroom" }, entry: { img: "assets/project-point-dubai-entry.webp", alt: "Mirage Project Point Dubai entry" }, surface: { img: "assets/showroom-03.webp", alt: "Surface display at the Mirage Project Point" }, ambient: { img: "assets/ambient-bathmood-flair.webp", alt: "Ambient surface" }, }; function Hero({ variant }) { const opt = HERO_OPTIONS[variant] || HERO_OPTIONS.showroom; return (
{opt.alt}
Dubai Design District · Building 7, R05 First Mirage hub outside Italy

World-class Italian surfaces,
made specifiable in Dubai.

The Mirage Project Point at d3 — a consultation, sampling and co-working space for architects, designers and practitioners working across the GCC.

Book a consultation Visit the Project Point
AddressBuilding 7, R05 · Dubai Design District
HoursMon–Sat · 09:00 – 18:00
Phone+971 4 554 3944
StatusOpen · Walk-ins by appointment
); } /* ============================================================ Project Point feature (the differentiator) ============================================================ */ function ProjectPointFeature() { return (
The Project Point · d3

A workshop for specifiers,
not a showroom for shoppers.

Browse ceramic material, select colour combinations, work through mockups and bespoke technical solutions with Mirage staff, and leave with the samples and documentation you need. Seminars, workshops and meetings on request.

Address
Building 7, R05
Dubai Design District
Hours
Mon – Sat
09:00 – 18:00
Interior design
Pallavi Dean Interiors · Roar
Book a consultation See the space
Visit · d3
Mirage Project Point Dubai entry
Project Point interior
); } /* ============================================================ Collections ============================================================ */ function Collections() { const [filter, setFilter] = useS2("All"); const filtered = useM2(() => { if (filter === "All") return COLLECTIONS; return COLLECTIONS.filter(c => c.category === filter); }, [filter]); return (
Collections

Surfaces, by effect
and application.

The full Mirage range — porcelain stoneware in concrete, stone, wood and resin effects, plus outdoor 20 mm and technical/architectural surfaces. Finishes, sizes and technical PDFs pulled live at specification.

All collections
{COLL_FILTERS.map(f => ( ))}
{filtered.map((c, i) => { const sizeClass = i === 0 && filter === "All" ? "feature" : (c.size === "half" ? "half" : ""); return (
{c.category} {c.name
{c.name}
{c.effect}
); })}
); } /* ============================================================ Applications strip ============================================================ */ function Applications() { return (
Applications

Surfaces, by use.

From residential interiors to ventilated facades — the same porcelain platform, specified for the conditions of the build. Talk to the Project Point about sizes, finishes and technical detailing for each context.

{APPLICATIONS.map(a => (
{a.num}
{a.name}
{a.desc}
))}
); } /* ============================================================ Gallery + Lightbox ============================================================ */ function Gallery() { const [open, setOpen] = useS2(null); const close = () => setOpen(null); const prev = useC2(() => setOpen(o => (o + GALLERY.length - 1) % GALLERY.length), []); const next = useC2(() => setOpen(o => (o + 1) % GALLERY.length), []); useE2(() => { if (open === null) return; const onKey = (e) => { if (e.key === "Escape") close(); if (e.key === "ArrowLeft") prev(); if (e.key === "ArrowRight") next(); }; window.addEventListener("keydown", onKey); return () => window.removeEventListener("keydown", onKey); }, [open, prev, next]); return ( ); }