/* global React, HOUSE, COUTURE_LOOKS, BRIDAL_LOOKS, RTW_PRODUCTS, FRAGRANCE, D3_LISTINGS, Silk, SectionHeader, PageHero, aed */ // ============== COLLECTION PAGES: Couture, Bridal, RTW, Jewellery, Fragrance ============== const { useState: useStateColl, useMemo: useMemoColl } = React; // -------- HAUTE COUTURE -------- function HauteCouturePage({ setRoute }) { const [look, setLook] = useStateColl(0); const current = COUTURE_LOOKS[look]; return (
Haute Couture · A/W 2026

La cathédrale
de soie.

Twenty-eight made-to-measure pieces, presented by private salon in Dubai. Couture is shown by appointment and is not priced publicly — every commission is bespoke to the wearer and the occasion.

{/* Look viewer */}
{current.image ? {current.name} : }
Look {String(look+1).padStart(2,'0')} / {String(COUTURE_LOOKS.length).padStart(2,'0')}

{current.name}

{current.note}

Reference
{current.id}
Season
{current.season}
Métier
{current.category}
Lead time
16–24 weeks · By consultation
Salon
Dubai · Building 4 · Entrance A301
{/* Look navigator */}

Choose a look
{COUTURE_LOOKS.map((l, i) => ( ))}
{/* The salon — process */}
How a couture piece
begins, ages, leaves.} align="left" />
{[ { n: 'I', t: 'The salon', d: 'A private conversation in Dubai. Sketches, fabrics, references — and an honest scope.' }, { n: 'II', t: 'The toile', d: 'A cotton mock-up cut to your measure. The shape of the final piece, before silk.' }, { n: 'III', t: 'The hand', d: 'Embroidery, beadwork and finishing in our atelier. Documented every fitting.' }, { n: 'IV', t: 'Delivery', d: 'Final fitting and travel-ready preparation. The piece arrives in custom storage.' }, ].map(s => (
{s.n}

{s.t}

{s.d}

))}
); } // -------- BRIDAL -------- function BridalPage({ setRoute }) { return (
For the
once-in-a-life dress.} sub="The bridal house works in three programmes: a one-of-one couture commission from the atelier, a Bridal Couture made-to-order line, and a Bridal RTW capsule available in salon sizes. Every path begins with a private appointment in Dubai." /> {/* Programmes */}
{[ { tag: 'I · Bridal Atelier', title: 'One-of-One', d: 'A bespoke gown made to your measure. Six to nine months from first sketch.', cta: 'Begin a commission' }, { tag: 'II · Bridal Couture', title: 'Made-to-Order', d: 'Signature silhouettes adjusted to your measurements in the Dubai atelier. Three to four months.', cta: 'Reserve a fitting' }, { tag: 'III · Bridal RTW', title: 'Salon Sizes', d: 'Curated capsule available in five sizes, with light alterations in salon. By appointment only.', cta: 'Book the salon' }, ].map(p => (
{p.tag}

{p.title}

{p.d}

))}
{/* Looks gallery */}
{BRIDAL_LOOKS.map(b => (
{b.image ? {b.name} : }
{b.name}
{b.house} · {b.id}

{b.note}

))}
{/* What to expect */}
What to expect

Your bridal appointment.

The first conversation runs around 90 minutes — sketches, fabric stories, an honest read of timeline and scope. Bring a single inspiration image if you have one.

The atelier hosts up to two guests with you. We provide tea, water and a quiet room for any conversation that is private. The salon is in Building 4, d3, by appointment only.

); } // -------- READY-TO-WEAR -------- function ReadyToWearPage({ setRoute }) { const CATS = ['All', 'Evening', 'Cocktail', 'Day', 'Resort', 'Outerwear']; const [cat, setCat] = useStateColl('All'); const [bag, setBag] = useStateColl([]); const list = useMemoColl(() => cat === 'All' ? RTW_PRODUCTS : RTW_PRODUCTS.filter(p => p.category === cat), [cat]); const inBag = id => bag.includes(id); const toggle = id => setBag(b => b.includes(id) ? b.filter(x => x !== id) : [...b, id]); const subtotal = bag.reduce((s, id) => s + (RTW_PRODUCTS.find(p => p.id === id)?.priceAED || 0), 0); return (
Ready-to-Wear · Live commerce · AED

The seasonal capsule.

Live prices from the Dubai atelier in AED. Light alterations in salon are included on any gown above AED 9,000. The salon confirms availability and tailoring within two working days of order.


{CATS.map(c => ( ))}
Showing {list.length} of {RTW_PRODUCTS.length}
{list.map(p => (
toggle(p.id)}>
{p.image ? {p.name} : } {inBag(p.id) && In salon bag} {!inBag(p.id) && p.priceAED > 18000 && Couture-cut}
{p.category} · {p.id} {p.name}
AED {aed(p.priceAED)} {inBag(p.id) ? 'Remove' : 'Add to bag'}
))}
{/* Sticky bag */} {bag.length > 0 && (
Salon bag · {bag.length} {bag.length === 1 ? 'piece' : 'pieces'}
AED {aed(subtotal)}
)}

); } // -------- JEWELLERY -------- function JewelleryPage({ setRoute }) { return (
The jewellery
salon.} sub="The jewellery line operates as a separate appointment in Building 4. Pieces are not catalogued online — selection is made in salon with the atelier director, against the season's couture and bridal." />

A salon, not a shop.

Each piece is hand-selected for the wearer and the wider look — a couture gown, a bridal silhouette, a private editorial. The salon door is by referral or in continuation of an existing couture/bridal appointment.

  • · Diamond and coloured-stone jewellery, statement and parure
  • · Bridal jewellery — coordinated with the bridal gown
  • · Editorial loans for press, by representation
  • · Bespoke commissioning, on referral
Michael Cinco Jewellery directory imagery

Visiting the jewellery salon

Building 4 · Entrance B403

Service-line routing is in confirmation. Until the master schedule is published, requests are received on the primary appointment mobile and routed by the salon team.

); } // -------- FRAGRANCE -------- function FragrancePage({ setRoute }) { const [sel, setSel] = useStateColl('M3'); const current = FRAGRANCE.find(f => f.id === sel); return (
Seven
private rooms.} sub="A seven-fragrance house collection — eau de parfum, 100ml, in heavy hand-blown crystal. Each fragrance is built around one couture material. Live in salon and online." />
{current.title}
100 ml · Eau de Parfum · Crystal flacon
{current.id} · Single note study

{current.title}

{current.sub}

AED {aed(current.priceAED)} 100 ml
Other rooms
{FRAGRANCE.map(f => ( ))}
{FRAGRANCE.map(f => (
setSel(f.id)} style={{ display: 'grid', gridTemplateColumns: '64px 1fr auto', alignItems: 'baseline', borderTop: '1px solid var(--rule)', padding: '22px 0', cursor: 'pointer' }}> {f.title.replace('M ','')}
{f.title}
{f.sub}
AED {aed(f.priceAED)}
))}
); } function Detail({ k, v }) { return (
{k}
{v}
); } Object.assign(window, { HauteCouturePage, BridalPage, ReadyToWearPage, JewelleryPage, FragrancePage, Detail });