// ============================================================ // MONOGRAM — Bespoke multi-step enquiry flow // ============================================================ const INTERESTS_EN = [ { id: "jewellery", title: "Fine", ital: "jewellery.", sub: "Commission a sculptural piece from one of the five collections, or a one-of-a-kind." }, { id: "invitation", title: "Couture", ital: "invitations.", sub: "Bespoke invitation suite for a wedding, exhibition, or private event." }, { id: "both", title: "Both —", ital: "a full suite.", sub: "Jewellery + invitations for a single occasion. Treated as one commission." }, { id: "open", title: "I'd like to", ital: "talk first.", sub: "Not sure yet — book a 30-minute conversation at the d3 studio." }, ]; const INTERESTS_AR = [ { id: "jewellery", title: "مجوهرات", ital: "راقية.", sub: "قطعةٌ نحتيّة من إحدى المجموعات الخمس، أو تصميمٌ فرديّ." }, { id: "invitation", title: "دعوات", ital: "كوتور.", sub: "دعوات حسب الطلب لعرس، أو معرض، أو مناسبة خاصّة." }, { id: "both", title: "كلاهما —", ital: "حزمة متكاملة.", sub: "مجوهرات + دعوات لمناسبة واحدة. تُعامَل كطلبٍ واحد." }, { id: "open", title: "أحبّ", ital: "الحديث أوّلاً.", sub: "لم أحدّد بعد — لقاءٌ مدّته ٣٠ دقيقة في الاستوديو." }, ]; const TIMELINE_EN = [ "Within 1 month", "1 – 3 months", "3 – 6 months", "Open — when the work is ready", ]; const TIMELINE_AR = [ "خلال شهر", "١ – ٣ أشهر", "٣ – ٦ أشهر", "مفتوح ـ حين يكتمل العمل", ]; function BespokeScreen({ setRoute, locale, preset }) { const t = COPY[locale]; const isAr = locale === "ar"; const [step, setStep] = useState(0); const [data, setData] = useState({ interest: preset || "jewellery", collection: preset && preset !== "invitation" ? preset : "sculptural", occasion: "", timeline: isAr ? TIMELINE_AR[1] : TIMELINE_EN[1], refs: [], name: "", contact: "", method: "whatsapp", notes: "", }); const [submitted, setSubmitted] = useState(false); useEffect(() => { window.scrollTo({ top: 0, behavior: "instant" }); }, []); const STEPS = isAr ? ["الاهتمام", "التفاصيل", "المراجع", "التواصل", "المراجعة"] : ["Interest", "Details", "References", "Contact", "Review"]; const set = (k, v) => setData((d) => ({ ...d, [k]: v })); // ---- Step renderers ---- const Step0 = () => (

{isAr ? <>ما الذي يجمعنا اليوم؟ : <>What brings you to MONOGRAM?}

{isAr ? "كلّ طلبٍ يبدأ بنوع المشروع. اختر ما يناسبك ـ يمكنك تغييره لاحقاً." : "Every commission begins with a kind of project. Pick what fits — you can change this later."}

{(isAr ? INTERESTS_AR : INTERESTS_EN).map((opt) => ( ))}
); const Step1 = () => (

{isAr ? <>التفاصيل الأوّليّة. : <>The first details.}

{isAr ? "كي نأتي إلى اللقاء وفي ذهننا فكرة. كلّ هذه الحقول اختياريّة." : "So we arrive at the meeting with something already in mind. All fields are optional."}

{(data.interest === "jewellery" || data.interest === "both") && (
{COLLECTIONS.map((c) => ( ))}
)}
set("occasion", e.target.value)} />
{(isAr ? TIMELINE_AR : TIMELINE_EN).map((tl) => ( ))}
); const Step2 = () => { const onFile = (e) => { const files = Array.from(e.target.files || []).map((f) => f.name); set("refs", [...data.refs, ...files]); }; return (

{isAr ? <>المراجع والإلهام. : <>References, if you have any.}

{isAr ? "صورة لحرفٍ تحبّه، ورقةٌ مطويّة، أو ببساطة صورة لقطعة موجودة لديك. اختياريّ." : "A letter you love, a folded paper, even a picture of an existing piece you’d like to echo. Optional."}

{data.refs.length > 0 && (
{data.refs.map((r, i) => (
{String(i + 1).padStart(2, "0")}
))}
)}