// Projects index (filterable grid) + Case Study template. function ProjectsIndex({ setRoute, initialSector }) { const { PROJECTS, SECTORS } = window.GLI_DATA; const [sector, setSector] = useState(initialSector || "All"); const filtered = useMemo(() => { if (sector === "All") return PROJECTS; return PROJECTS.filter(p => p.sector === sector); }, [sector]); const onOpen = (id) => setRoute({ page: "project", id }); return (
All projects

{filtered.length} projects across the GCC and beyond.

A working selection of the thousand-plus interiors we've delivered since 1976. Royal palaces and private residences are anonymised throughout — full case studies available on signed NDA.

FILTER · setSector("All")}> All {PROJECTS.length} {SECTORS.map(s => ( setSector(s.name)}> {s.name} {PROJECTS.filter(p => p.sector === s.name).length} ))} {filtered.length} SHOWN
{filtered.map(p => )}
); } function CaseStudy({ id, setRoute }) { const { PROJECTS } = window.GLI_DATA; const p = PROJECTS.find(x => x.id === id) || PROJECTS[0]; const idx = PROJECTS.findIndex(x => x.id === p.id); const next = PROJECTS[(idx + 1) % PROJECTS.length]; const prev = PROJECTS[(idx - 1 + PROJECTS.length) % PROJECTS.length]; const [lightbox, setLightbox] = useState(null); return (
setLightbox(null)} /> {/* Hero */}
{p.name}
/ {p.sector.toUpperCase()} {p.nda && NDA · Anonymised}

{p.name}

{/* Meta */}
SECTOR
{p.sector}
LOCATION
{p.location}
SCOPE
{p.scope}
YEAR
{p.year}
{/* Narrative — Brief → Design → Manufacture → Install → Outcome */}
Brief

{p.brief}

setLightbox(p.gallery[0])} style={{ cursor: "zoom-in" }} />
Design

{p.design}

Manufacture · in our Dubai factory

{p.manufacture}

BUILT IN-HOUSE
Joinery · Furniture · Metalwork · Soft furnishings
setLightbox(p.gallery[1] || p.gallery[0])} style={{ cursor: "zoom-in" }} />
setLightbox(p.gallery[2] || p.gallery[0])} style={{ cursor: "zoom-in" }} />
Install

{p.install}

Outcome

{p.outcome}

{/* Palette */}
{p.palette.map((c, i) => (
{c.toUpperCase()}
{["Primary", "Accent", "Field", "Detail"][i]}
))}
{/* Gallery */}
{p.gallery.map((src, i) => (
setLightbox(src)}>
))}
{p.credit}
{/* CTA + nav */}
Like this one?

Start a similar project.

); } function SectorsHub({ setRoute }) { const { SECTORS } = window.GLI_DATA; return (
Sectors

Three sectors. One studio. One factory.

Each sector demands a different rhythm — the pre-opening clock of a hotel; the confidentiality of a royal residence; the security-cleared sequencing of a federal chamber or an airline lounge. We are set up for all three.

{SECTORS.map((s, i) => (
{s.name}
0{i+1} · {s.count}+ DELIVERED

{s.name}

{s.blurb}

))}
); } function CapabilitiesPage({ setRoute }) { const { CAPABILITIES } = window.GLI_DATA; return (
Capabilities

One signature. Three disciplines.

Design. Manufacturing. Contracting. Engaged together or separately — most clients take all three, on a single accountable contract.

{CAPABILITIES.map((c, i) => (
{c.name}
Capability

{c.name}

{c.blurb}

    {c.items.map(it => (
  • {it}
  • ))}
{c.id === "manufacturing" && ( )}
))}
); } Object.assign(window, { ProjectsIndex, CaseStudy, SectorsHub, CapabilitiesPage });