/* Pages other than Home: Collections hub, Collection detail, Product, Bespoke, Projects, Craft, Showroom, Contact. */ const { useState: useStateO, useMemo, useEffect: useEffectO } = React; // ── Collections hub ───────────────────────────────────────────── function CollectionsPage({ navigate }) { const [tab, setTab] = useStateO("style"); const tabs = [ { key: "style", label: "By style" }, { key: "material", label: "By material" }, { key: "room", label: "By room" }, { key: "signature", label: "Signature ranges" }, ]; const list = tab === "style" ? COLLECTIONS_BY_STYLE : tab === "material" ? COLLECTIONS_BY_MATERIAL : tab === "room" ? COLLECTIONS_BY_ROOM : SIGNATURE_RANGES; return ( <> · Hands  /  The Collections} title="The Collections." sub="957 ready pieces across style, material, room and signature ranges — every one of them hand-knotted in our Bhadohi ateliers." bg="media/collection-modern.webp" />
{tabs.map(t => ( ))}
{list.length} collections · 957 priced pieces
{tab !== "signature" ? (
{list.map(c => (
navigate("collection", { handle: c.handle })}> {c.img && {c.name}} {!c.img &&
}
{tab === "material" ? "Material" : tab === "room" ? "Room" : "Style"}

{c.name}

{c.count} pieces · View →
))}
) : (
{[...SIGNATURE_RANGES, { handle: "nika", name: "Nika", count: 12 }, { handle: "overlap", name: "Overlap", count: 10 }, { handle: "lost-heritage", name: "Lost Heritage", count: 18 }, { handle: "lithology", name: "Lithology", count: 14 }, { handle: "french-savonneries", name: "French Savonneries", count: 8 }, { handle: "antique-turkish-kilims", name: "Antique Turkish Kilims", count: 22 }].map((r, i) => (
e.currentTarget.style.background = "var(--bone)"} onMouseLeave={(e) => e.currentTarget.style.background = "transparent"} onClick={() => navigate("collection", { handle: r.handle })}>
Signature range

{r.name}

{r.count} pieces · {r.handle}
))}
)}
Don't see it?

Then we'll weave it.

Any size, palette, pattern or material. Our bespoke service has been turning rooms into one-of-a-kind carpets since 1881.

); } // ── Collection detail (filterable product grid) ───────────────── function CollectionDetailPage({ navigate, params, openProduct, favs, toggleFav }) { const [colorFilter, setColorFilter] = useStateO("all"); const [sizeFilter, setSizeFilter] = useStateO("all"); const [constrFilter, setConstrFilter] = useStateO("all"); const [sort, setSort] = useStateO("featured"); const all = COLLECTIONS_BY_STYLE.concat(COLLECTIONS_BY_MATERIAL, COLLECTIONS_BY_ROOM, SIGNATURE_RANGES); const found = all.find(c => c.handle === params.handle) || { handle: params.handle, name: params.handle, count: 0, img: "media/collection-traditional.webp" }; // Synthesize a list — duplicate the 14 catalogue pieces with stable seeded order. const products = useMemo(() => { const pool = PRODUCTS.filter(p => p.collection === params.handle); const base = pool.length > 0 ? pool : PRODUCTS; // Generate "more" by cycling let list = []; for (let i = 0; i < 12; i++) list.push(base[i % base.length]); return list; }, [params.handle]); const colorOptions = ["all", "Ivory", "Madder", "Indigo", "Sage", "Charcoal", "Camel"]; const sizeOptions = ["all", "Small (≤6×9)", "Medium (8×10)", "Large (9×12)", "Oversized (12×18+)", "Bespoke"]; const constrOptions = ["all", "Hand Knotted", "Hand Woven", "Hand Tufted"]; return ( <> · Hands  /  Collections  /  {found.name}} title={`The ${found.name}
collection.`} sub={`${found.count || products.length}+ pieces — every one hand-knotted from finest New Zealand wool in our Bhadohi ateliers.`} bg={found.img || "media/collection-persian.webp"} />
Construction
{constrOptions.map(o => ( ))}
Colour family
{colorOptions.map(o => ( ))}
Size
{sizeOptions.map(o => ( ))}
{products.length} pieces · AED 7,068 – 70,115
{products.map((p, i) => ( ))}
); } // ── Product detail ────────────────────────────────────────────── function ProductPage({ navigate, params, addToCart, favs, toggleFav, openProduct }) { const p = PRODUCTS.find(x => x.handle === params.handle) || PRODUCTS[0]; const [thumb, setThumb] = useStateO(0); const [size, setSize] = useStateO("8×10 ft"); const sizes = ["6×9 ft", "8×10 ft", "9×12 ft", "10×14 ft", "Bespoke"]; const galleryImgs = [p.img, "media/showroom-d3-menu.webp", p.img, p.img]; const related = PRODUCTS.filter(x => x.handle !== p.handle).slice(0, 4); const isFav = favs.has(p.handle); return (
{galleryImgs.map((g, i) => (
setThumb(i)} /> ))}
Top-down studio shot · in-situ imagery client to supply

{p.title}

{p.type} · Finest New Zealand wool
{fmtAED(p.price)}incl. VAT

A {p.type.toLowerCase()} piece in a {p.palette.toLowerCase()} palette. Hand-knotted in Bhadohi from the finest New Zealand wool — each carpet is the work of one weaver, knot by knot, over many months on a vertical loom.

Construction
{p.type}
Material
Finest New Zealand wool · 100%
Knot density
Persian hand-knotted · 100–160 knots/in² exact per SKU
Palette
{p.palette}
Origin
Bhadohi · Varanasi · India
Lead time
Ready piece · in d3 stock verify per SKU
Size
{sizes.map(s => ( ))}
Exact dimensions per SKU — client to confirm
Or WhatsApp the showroom · checkout via Shopify
A note from the atelier
Every Hands carpet is unique. Subtle variations in dye-lot, knot rhythm and wash patina are the signature of true hand-knotting — and the reason no two pieces of this title are ever quite the same.
More from the collection

Other pieces in {p.collection}.

{related.map(rp => ( ))}
); } // ── Bespoke page ──────────────────────────────────────────────── function BespokePage({ navigate }) { const [interest, setInterest] = useStateO("bespoke"); const [sent, setSent] = useStateO(false); return ( <> · Hands  /  The Atelier  /  Bespoke} title="A carpet that exists nowhere else." sub="The Hands atelier has been weaving bespoke carpets since 1881 — for palaces, hotels and the world's most exceptional rooms. Now, also for yours." bg="media/custom-made-thumb.webp" />
The bespoke service · Since 1881

From sketch, mood
or room — to loom.

Bring us a brief, a pinboard, a swatch — or simply the dimensions of your floor. Our in-house design team will draw the carpet at scale, weave a hand-knotted sample for your sign-off, and put a single weaver on a vertical loom in Bhadohi for the months it will take to make.

Bespoke is a consultation — not a checkout. Pricing is project-quoted on materials, dimensions, knot density and complexity. We work directly with designers, architects and homeowners.

The room above
An unbuilt palette, drawn for a south-facing drawing room in Emirates Hills.
01

Consult

A conversation about the room, the brief, the budget and the materials. In person at d3, or by video.

02

Design & sample

Our atelier draws the carpet at scale and weaves a small hand-knotted sample — to your colour, density and feel — for sign-off.

03

Weave

A single weaver is set to a vertical loom in Bhadohi. Knot by knot, often for months — sometimes more than a year.

04

Deliver

Finished, washed and finished by hand. Packed, shipped and delivered to the room. White-glove install on request.

Begin a bespoke enquiry

Tell us about the room.

We typically reply within one working day. Designers and trade — please tick the trade option and we'll loop in our trade team.

{Icon.phone} +971 4 589 8510
{Icon.pin} #3, Ground Floor, Building 9 · d3, Dubai
); } // ── Projects page ─────────────────────────────────────────────── function ProjectsPage({ navigate }) { return ( <> · Hands  /  Projects & Trade} title="The world's landmark
interiors." sub="Bespoke carpets for palaces, five-star hotels and private residences. Marquee project names are shown only with the client's written permission — anonymised case studies below." bg="media/product-12-dl-1570-grey.webp" />
Case studies · A selection

Carpets for rooms
that don't repeat.

Hospitality, palaces, private residences, institutions. A Hands carpet is the slowest specifying decision in any project — and usually the most defining one.

{PROJECTS.map((proj) => (
{proj.permission === "permission-pending" && (
Client to confirm permission
)} {proj.img ? {proj.title} : (
Project imagery — client to supply
)}
{proj.kind}

{proj.title}

{proj.scope}
))}
For interior designers & architects

The trade programme.

Trade pricing, sample libraries, project consultation and dedicated account management for studios and architectural practices.

Publicly reported · attribute

Marquee installations.

{[ { name: "Armani Hotel · Burj Khalifa", loc: "Dubai", note: "Featured in public partner profiles · permission to display — pending" }, { name: "Nathan Outlaw at Al Mahara", loc: "Burj Al Arab · Dubai", note: "Featured in public partner profiles · permission to display — pending" }, { name: "MGM Grand", loc: "Macau", note: "Featured in public partner profiles · permission to display — pending" }, ].map(m => (
Hospitality

{m.name}

{m.loc}
{m.note}
))}
); } // ── Craft page ────────────────────────────────────────────────── function CraftPage({ navigate }) { return ( <> · Hands  /  The Craft & Heritage} title="A house of carpets since 1881." sub="The Hands story begins not on a sales floor, but in the weavers' alleys of Bhadohi (Varanasi) — and continues today on the same vertical looms, with the same finest New Zealand wool." bg="media/product-01-dl-1569-assorted.webp" />
The discovery

Bhadohi, 1881.

In 1881, the carpet-weaving community of Bhadohi (Varanasi) is discovered by A. Tellery — pioneering masterfully hand-knotted carpets that would eventually leave Indian looms for palaces, hotels and residences across five continents.

A century and forty-four years later, the looms are still vertical, the wool is still drawn from the finest New Zealand flocks, and the carpets are still tied — one knot at a time — by hand.

The Timeline · 144 years

From the alleys of Bhadohi
to the world's most exceptional rooms.

{TIMELINE.map((t) => (
{t.year}

{t.title}

{t.body}

))}
The wool · The dye · The knot

Three steps, one carpet.

{[ { n: "01", t: "Finest New Zealand wool", p: "Long-staple, lustrous fleece from New Zealand flocks — the standard for fine hand-knotting. Spun in small lots; held to lustre and tensile-strength benchmarks." }, { n: "02", t: "Bhadohi small-lot dyeing", p: "Yarn is dyed in small lots in Bhadohi — palettes drawn from archive Persian dye-recipes alongside our designers' contemporary colour studies." }, { n: "03", t: "Hand-knotting on vertical looms", p: "One weaver, one loom, one carpet. Each knot is hand-tied, the pile clipped, and the finished piece washed and finished by hand. A large piece can take a year." }, ].map(s => (
{s.n}

{s.t}

{s.p}

))}
4,900
Knots per square inch · 1999
Publicly reported craft achievement. Attribute openly; not presented as a Guinness-certified record without documented proof.
12,000+
m² Grand Mosque, Astana
A single handmade carpet commissioned for the Astana / Nur-Sultan Grand Mosque — among the largest the atelier has woven.
144
Years on the loom
Continuous operation since 1881 (independently corroborated by the d3 listing).
); } // ── Showroom page ─────────────────────────────────────────────── function ShowroomPage({ navigate }) { const stores = [ { city: "Dubai · d3", addr: "#3 Building 9, Dubai Design District, Dubai, UAE", flag: "primary" }, { city: "New Delhi", addr: "Exclusive boutique · India" }, { city: "Mumbai", addr: "Exclusive boutique · India" }, { city: "Hyderabad", addr: "Exclusive boutique · India" }, { city: "Singapore", addr: "Exclusive boutique · Singapore" }, ]; return ( <> · Hands  /  The Showroom} title="The Dubai atelier." sub="Our designer-led boutique opened at Dubai Design Week 2018 in Building 9, d3 — a place to walk the floor, draft a bespoke carpet over a coffee, or simply see what 4,900 knots per square inch looks like under the light." bg="media/showroom-d3-menu.webp" />
The d3 boutique · Open by appointment & walk-in

Building 9.

#3, Ground Floor, Building 9, Dubai Design District, Dubai.

Hours
Mon — Fri · 10:00 – 19:00
Saturday · 10:00 – 18:00
Sunday · closed
Directory-listed — client to confirm before publishing as schema
WhatsApp
+971 58 825 0451 official site · 2GIS lists 0464 — confirm
PO Box
333015
WhatsApp the showroom
Find us · Dubai Design District

The map.