/* global React, ReactDOM, SK_DATA */
const { useState, useEffect, useMemo, useRef } = React;
/* ---------- shared utilities ---------- */
const formatAED = (n) =>
"AED " + Number(n).toLocaleString("en-AE", { minimumFractionDigits: 0, maximumFractionDigits: 0 });
const PriceTag = ({ price, big }) => {
if (!price || price === 0) {
return On request ;
}
return {formatAED(price)} ;
};
const Wordmark = ({ small }) => (
Saiid Kobeisy
);
const Eyebrow = ({ children, gold }) => (
{children}
);
const Arrow = () => → ;
/* ---------- translations (light EN/AR for nav + hero) ---------- */
const STRINGS = {
en: {
bookAppointment: "Book an appointment",
shopRTW: "Shop Ready-to-Wear",
enquire: "Enquire on this look",
addToBag: "Add to bag",
onRequest: "On request",
appointmentPill: "Book Appointment",
nav: {
couture: "Couture",
rtw: "Ready-to-Wear",
bridal: "Bridal",
custom: "Custom-Made",
house: "The House",
stores: "Stores",
},
heroDisplay: ["A Lebanese couture", "house, by ", "appointment."],
heroBody:
"Couture, ready-to-wear and bridal — designed in Beirut, presented in Dubai and Paris. Each look is realised in our atelier and offered on appointment.",
},
ar: {
bookAppointment: "احجز موعدًا",
shopRTW: "تسوّق الجاهز للارتداء",
enquire: "استفسر عن هذه الإطلالة",
addToBag: "أضف إلى الحقيبة",
onRequest: "حسب الطلب",
appointmentPill: "احجز موعدًا",
nav: {
couture: "كوتور",
rtw: "جاهز للارتداء",
bridal: "العرائس",
custom: "تفصيل خاص",
house: "الدار",
stores: "الفروع",
},
heroDisplay: ["دار أزياء راقية", "لبنانية، بموعد", "مسبق."],
heroBody:
"كوتور، جاهز للارتداء وأزياء العرائس — تُصمَّم في بيروت وتُقدَّم في دبي وباريس. كل قطعة تُنفَّذ في الأتيليه بموعد مسبق.",
},
};
/* ---------- TopBar ---------- */
function TopBar({ locale }) {
return (
{locale === "ar"
? "صالة دبي · يونيت M04، مبنى ٦، دبي ديزاين ديستريكت — بموعد مسبق"
: "Dubai Showroom · Unit M04, Building 06, Dubai Design District — by appointment"}
·
WhatsApp +961 3 813 893
);
}
/* ---------- Nav ---------- */
function Nav({ page, go, locale, setLocale }) {
const t = STRINGS[locale];
const links = [
["couture", t.nav.couture],
["rtw", t.nav.rtw],
["bridal", t.nav.bridal],
["custom", t.nav.custom],
["house", t.nav.house],
["stores", t.nav.stores],
];
return (
{links.map(([k, label]) => (
go(k)}>
{label}
))}
go("home")} style={{background:"none",border:0,cursor:"pointer"}} aria-label="Home">
setLocale("en")}>EN
setLocale("ar")}>AR
go("appointments")}>
{t.bookAppointment}
);
}
/* ---------- Hero ---------- */
function Hero({ go, locale, heroVariant, setHeroVariant }) {
const t = STRINGS[locale];
const featureSlots = [
{ id: "feather-sculpted", img: "media/product-21-couture-feather-sculpted-dress.webp", label: "SS26 Couture · Look 31" },
{ id: "double-satin-train", img: "media/product-22-couture-double-satin-train-gown.webp", label: "SS26 Couture · Look 27" },
{ id: "feather-organza", img: "media/product-23-couture-feather-organza-dress.webp", label: "SS26 Couture · Look 26" },
{ id: "tayla", img: "media/product-18-bridal-tayla-gown.webp", label: "Bridal RTW FW26 · Tayla" },
];
const cur = featureSlots[heroVariant];
return (
Maison Saiid Kobeisy · Est. 2000
{t.heroDisplay[0]}
{t.heroDisplay[1]} {t.heroDisplay[2]}
{t.heroBody}
go("appointments")}>
{t.bookAppointment}
go("rtw")}>
{t.shopRTW}
3
Cities · Beirut · Dubai · Paris
Feature look {cur.label}
{featureSlots.map((s, i) => (
setHeroVariant(i)}
aria-label={"Show " + s.label}>
))}
);
}
/* ---------- Trust Spine ---------- */
function TrustSpine() {
return (
2000
A house, since
Begun as a private commission practice in Beirut; an atelier opened two years later.
35+
Countries
Distributed through 130 points of sale across Europe, the Gulf, North America and Asia.
3
Showrooms
Beirut house & atelier, Dubai Design District showroom, Paris showroom.
4
Lines
Couture, Ready-to-Wear, Bridal Couture, Bridal Ready-to-Wear. Little K children's line on request.
);
}
/* ---------- Line Tiles ---------- */
function LineTiles({ go }) {
const tiles = [
{
k: "couture",
label: "Couture",
sub: "By appointment",
copy: "Hand-finished pieces realised in the Beirut atelier — feathers, hand-set crystal, silk faille and structured corsetry.",
img: "media/product-21-couture-feather-sculpted-dress.webp",
},
{
k: "rtw",
label: "Ready-to-Wear",
sub: "Shop online",
copy: "Eveningwear and tailoring shipped from Beirut. Live AED pricing, in-stock pieces, made for delivery.",
img: "media/product-02-brocade-bow-dress.webp",
},
{
k: "bridal",
label: "Bridal",
sub: "Couture & Ready-to-Wear",
copy: "Two paths to the aisle — a made-to-measure couture commission, or our priced Bridal RTW range.",
img: "media/product-04-royal-bloom-gown.webp",
},
];
return (
The Lines
Four houses,one atelier.
go("house")}>Read the house →
{tiles.map(t => (
go(t.k)}>
{t.sub}
{t.label}
{t.copy}
Enter the line
))}
);
}
/* ---------- Featured Looks strip ---------- */
function LookbookStrip({ ids, openProduct, title, sub }) {
const products = SK_DATA.products.filter(p => ids.includes(p.id));
return (
Featured looks
{title}
{sub}
{products.map(p => (
openProduct(p.id)} aria-label={"View " + p.title}>
))}
);
}
/* ---------- Product Card ---------- */
function ProductCard({ p, openProduct, locale }) {
const t = STRINGS[locale];
return (
openProduct(p.id)}>
{p.season}
{p.price > 0 ? "Quick view · " + t.addToBag : "Quick view · " + t.enquire}
);
}
/* ---------- Couture page ---------- */
function CoutureGallery({ openProduct, locale }) {
const products = SK_DATA.products.filter(p => p.line === "Couture" || p.line === "Bridal Couture");
return (
Couture
By appointment,made in Beirut.
Each couture piece is made-to-measure in our Beirut atelier. Below is a selection from the most recent Evening Couture SS26 and Couture Bridal 2027 presentations — every look is on request and realised on commission.
{products.length} looks
);
}
/* ---------- RTW page ---------- */
function RTWGallery({ openProduct, locale }) {
const all = SK_DATA.products.filter(p => p.line === "Ready-to-Wear");
const [filter, setFilter] = useState("all");
const seasons = useMemo(() => {
const counts = {};
all.forEach(p => { counts[p.season] = (counts[p.season]||0) + 1; });
return Object.entries(counts);
}, [all]);
const products = filter === "all" ? all : all.filter(p => p.season === filter);
return (
Ready-to-Wear
Shop the runway,in-stock.
Eveningwear, tailoring and cocktail pieces shipped from Beirut. Prices in AED for the UAE storefront — re-confirmed against the live catalogue.
{products.length} pieces
setFilter("all")}>
All{all.length}
{seasons.map(([s, n]) => (
setFilter(s)}>
{s}{n}
))}
Pricing & availability: live AED prices are pulled from the official Shopify catalogue at build time. Sizing varies; appointment-led fittings are available at the Dubai Design District showroom.
);
}
window.SK = Object.assign(window.SK || {}, {
formatAED, PriceTag, Wordmark, Eyebrow, Arrow, STRINGS,
TopBar, Nav, Hero, TrustSpine, LineTiles, LookbookStrip,
ProductCard, CoutureGallery, RTWGallery,
});