/* VSHD pages: Home, Projects, CaseStudy (Origami), plus placeholders */ const { useState: _useState, useEffect: _useEffect, useMemo: _useMemo, useRef: _useRef } = React; /* ================= HOME ================= */ function Home({ go, onOpenEnquiry, tweaks }) { const heroes = window.VSHD_HERO; const projects = window.VSHD_PROJECTS; const [idx, setIdx] = _useState(0); const [progress, setProgress] = _useState(0); const durMs = (tweaks.heroPaceSec || 7) * 1000; _useEffect(() => { setProgress(0); const started = Date.now(); const tick = setInterval(() => { const p = (Date.now() - started) / durMs; if (p >= 1) { setIdx((i) => (i + 1) % heroes.length); setProgress(0); } else { setProgress(p); } }, 40); return () => clearInterval(tick); }, [idx, durMs, heroes.length]); const heroProj = projects.find(p => p.slug === heroes[idx].slug) || projects[0]; // Selected work — curated 4 (matches the staggered editorial grid) const selected = [ projects.find(p => p.slug === "origami"), projects.find(p => p.slug === "klei-spa"), projects.find(p => p.slug === "burj-residence"), projects.find(p => p.slug === "hoof") ].filter(Boolean); // Sector counts const sectorCounts = {}; projects.forEach(p => { sectorCounts[p.sector] = (sectorCounts[p.sector] || 0) + 1; }); const sectorList = [ { key: "Residential", num: "01" }, { key: "Hospitality", num: "02", label: "Hospitality & F&B" }, { key: "Workplace", num: "03" }, { key: "Retail", num: "04" }, { key: "Wellness", num: "05" }, { key: "Fitness", num: "06" } ]; return (
{/* HERO */}
{heroes.map((h, i) => { const proj = projects.find(p => p.slug === h.slug); return (
); })} VSHD · Est. 2007 · Dubai  /  Montréal

{heroes[idx].sector}  ·  {heroes[idx].location}

Interior architecture
of calm, beauty &
subtle luxury.

Now showing {heroes[idx].caption}
{heroes.map((h, i) => (
{/* SELECTED WORK */}

Selected work · 2017—2024

A practice told through
twenty-five places.

We work slowly and at boutique scale — typically six to eight commissions a year — across residence, restaurant, workplace and wellness. Each project is photographed, written and credited as a case study.

{selected.map((p, i) => ( go("project/" + p.slug)} role="link" tabIndex="0" >
{p.name}
{p.name}
{p.location}
{p.sector} · {p.year}
))}
{/* APPROACH — dark inverted */}

Approach

Four pillars,
quietly held.

From Rania Hamed's own writing on the studio: a slow practice guided by four convictions. They have not changed since 2007.

  1. 01

    Timelessness over trend.

    We design for longevity. Visualisations are not trend-led but synonymous with timelessness — calm rooms that age into themselves.

  2. 02

    Light as a material.

    We transform the space through the creative use of light — natural, electric, reflected — treated with the same care as stone, timber or plaster.

  3. 03

    Tradition × contemporary.

    Integrating traditional culture and technique into contemporary design — craft from the region carried forward on a modern grid.

  4. 04

    Subtle luxury.

    Combining modesty with elegance to reach elements of calm, beauty and subtle luxury — what the eye notices last is often the most considered.

{/* SECTORS */}

Sectors

Six typologies. One standard.

{sectorList.map((s) => { const count = sectorCounts[s.key] || 0; return (
go("projects?s=" + s.key)}> {s.num} · {s.label || s.key} {count ? String(count).padStart(2, "0") : "—"} projects
); })}
{/* AWARDS */}

Recognition

Quiet, repeated
recognition.

A boutique studio with an international press and awards record. Listed by issuer, year and project — never bundled into a generic "award-winning" claim.

As featured in

Architectural Digest Vogue Arabia Harper's Bazaar Interiors Dezeen PLAIN Magazine
{window.VSHD_AWARDS.map((a, i) => (
{a.year} {a.title}{a.sub} {a.issuer}
))}
{/* CTA BAND */}

Begin

Brief us on a place
you'd like considered.

); } /* ================= PROJECTS INDEX ================= */ function Projects({ go, onOpenEnquiry, initialSector }) { const projects = window.VSHD_PROJECTS; const sectors = window.VSHD_SECTORS; const [sector, setSector] = _useState(initialSector || "All"); const sectorCounts = _useMemo(() => { const m = { All: projects.length }; projects.forEach(p => { m[p.sector] = (m[p.sector] || 0) + 1; }); return m; }, [projects]); const filtered = sector === "All" ? projects : projects.filter(p => p.sector === sector); // Editorial rhythm classes: 8/4, 4/8, 6/6, 6/6, then loop const rhythm = ["proj-card--wide", "proj-card--narrow", "proj-card--default", "proj-card--default"]; return (

Projects · Index

Twenty-five places,
case by case.

{String(filtered.length).padStart(2, "0")}showing

Filter by sector. Every project page carries its photographer credit, year, location and a written narrative — never a thumbnail alone.

{sectors.map(s => ( ))}
{filtered.map((p, i) => ( go("project/" + p.slug)} role="link" tabIndex="0" >
{p.name} {String(i + 1).padStart(2, "0")}
{p.name}
{p.location} · {p.year}
{p.sector}
))}
); } /* ================= CASE STUDY ================= */ function CaseStudy({ slug, go, onOpenEnquiry }) { const project = window.VSHD_PROJECTS.find(p => p.slug === slug); const [lightbox, setLightbox] = _useState(null); if (!project) { return (

404

Project not found.

); } // Origami gets the full narrative; other projects show a graceful shorter version const isOrigami = project.slug === "origami"; // next/prev const list = window.VSHD_PROJECTS; const i = list.findIndex(p => p.slug === slug); const prev = list[(i - 1 + list.length) % list.length]; const next = list[(i + 1) % list.length]; // Hero image const heroImg = project.images && project.images[0] ? project.images[0] : project.cover; // Gallery — for Origami use its 3 location images plus the cover image rotation const galleryImages = (project.images && project.images.length > 1) ? project.images : [project.cover]; // Padded list to 4 frames for visual rhythm — repeat if necessary const galleryFour = []; for (let k = 0; k < 4; k++) { galleryFour.push(galleryImages[k % galleryImages.length]); } return (
{/* CS HERO */}
{project.name}

Case Study · {String(i + 1).padStart(2, "0")} · {project.sector}

{project.name.split(" · ")[0]}
{project.location && ( {project.location.split(",")[0]}. )}

{/* META BAR */}
Client
{isOrigami ? "Origami Sushi Atelier" : "Private client"}
Sector
{project.sector}
Location
{project.location}
Year
{project.year}
Scope
{isOrigami ? "Interior architecture, joinery, lighting" : "Interior architecture"}
Area
{isOrigami ? "3 venues · 420—780 m²" : "—"}
{/* NARRATIVE */}

Brief

A sushi atelier
told as a ritual
of folded paper.

{project.award && (

{project.award}

)}
{isOrigami ? ( <>

Origami arrived as an unusual brief: not a restaurant, but a three-act atelier — Jumeirah, Dubai Mall and Marsa Al Bateen — that had to feel of one hand while answering three very different rooms. The client asked for a place where the food's quiet precision could be felt before a single dish arrived at the counter.

We worked with paper as the central metaphor. Folded walls, vertical timber screens and recessed light coves do the spatial work; mirror polish, blackened steel and chestnut veneer carry the material vocabulary. Lighting is electric and low — a thin warm seam between volumes — so that what the guest sees first is the chef's hands, not the room.

Across all three venues we held one rule: every visible hinge, ceiling shadow line and floor seam had to draw a vertical or a horizontal — never a curve. The curves were reserved for the food.

) : ( <>

{project.blurb || "A private commission delivered by the studio."} The full case study narrative is written in collaboration with the client and the architectural photographer, then published with credits.

Per-project narrative, plans, material schedules and process photographs are being prepared with the client. This page shows the photographic record only.

)}
{/* PULL QUOTE */}
{isOrigami ? <>"The curves were reserved
for the food." : <>"Modesty with elegance,
calm with luxury."}

{isOrigami ? "From the design statement" : "Studio principle, 2007—"}

{/* GALLERY */}
{galleryFour.map((src, k) => (
setLightbox({ src, caption: project.name + " · Plate " + String(k + 1).padStart(2, "0") })} >
{project.name
{isOrigami ? ["Jumeirah", "Dubai Mall", "Marsa Al Bateen", "Detail"][k] : "Plate " + String(k + 1).padStart(2, "0")} {String(k + 1).padStart(2, "0")} / 04
))}
{/* CREDITS */}
Interior Architecture
VSHD Design
Photography
To be credited
Confirm photographer + licence
Press
{isOrigami ? "Dezeen, 2022" : "—"}
Year
{project.year}
{/* NEXT / PREV */} {/* CTA */}

Begin

A similar brief? Tell us.

); } /* ================= Stub pages (Studio, Awards, etc) ================= */ function Stub({ title, eyebrow, go, onOpenEnquiry }) { return (

{eyebrow}

{title}

This page is part of the full IA (10 routes) but isn't built in this prototype pass. The Home, Projects index and one full Case Study (Origami) carry the design system.

); } Object.assign(window, { Home, Projects, CaseStudy, Stub });