/* Category view + Enquiry modal */ const CategoryView = ({ catId, lang, onCategory, onEnquire, onNav }) => { const cat = window.BENO.categories.find(c => c.id === catId) || window.BENO.categories[0]; const fleet = window.BENO.fleet[cat.id] || []; const process = window.BENO.process[cat.id] || window.BENO.process.cars; const T = window.BENO.copy[lang]; return (
/ {T.navRentals} · {cat.pill[lang]}

{cat.name[lang].split(' ')[0]}{cat.name[lang].includes(' ') ? <>
{cat.name[lang].split(' ').slice(1).join(' ')} : ''}

{cat.one[lang]}

{cat.noteAge && (
{lang === 'en' ? 'Min. age' : 'الحد الأدنى للسن'}
{cat.noteAge}
)}
{lang === 'en' ? 'Availability' : 'التوفر'}
{cat.meta[lang]}
{lang === 'en' ? 'Rates' : 'الأسعار'}
{lang === 'en' ? 'On request' : 'حسب الطلب'}
WhatsApp
{process.map(s => (
{s.n}

{s.t[lang]}

{s.s[lang]}

))}
{fleet.length > 0 && (
{lang === 'en' ? 'A glimpse of the inventory' : 'لمحة عن الأسطول'}

{lang === 'en' ? 'Recent' : 'مختارات'} {cat.name[lang].toLowerCase()}

{lang === 'en' ? 'Inventory is partner-supplied and changes weekly. Specific models, lengths and availability are confirmed at enquiry — no fixed catalogue.' : 'الأسطول من شركاء معتمدين ويتغير أسبوعيًا. تأكيد الموديل والتوفر يتم عند الاستفسار.'}

{fleet.map(f => (
onEnquire({ ...cat, prefill: f.name })}>
{f.name}
{f.tag}

{f.name}

{lang === 'en' ? 'From' : 'يبدأ من'}
{lang === 'en' ? 'On request' : 'حسب الطلب'}
{lang === 'en' ? 'Enquire' : 'استفسر'}
))}
)} {/* Related categories */}
{lang === 'en' ? 'Or explore' : 'أو استكشف'}

{lang === 'en' ? 'Other ' : 'فئات '}{lang === 'en' ? 'categories' : 'أخرى'}

{window.BENO.categories.filter(c => c.id !== cat.id).slice(0, 3).map(c => (
{ window.scrollTo(0, 0); onCategory(c.id); }}>
{c.pill[lang]}

{c.name[lang]}

{c.one[lang]}

))}
); }; /* =========================== ENQUIRY MODAL =========================== */ const EnquiryModal = ({ open, onClose, lang, seedCategory, seedMessage }) => { const [step, setStep] = React.useState(0); const [data, setData] = React.useState({ category: seedCategory?.id || '', occasion: '', date: '', guests: 4, duration: '', name: '', phone: '+971 ', email: '', message: seedMessage || (seedCategory?.prefill ? 'Interested in ' + seedCategory.prefill : ''), }); React.useEffect(() => { if (open) { setStep(0); setData(d => ({ ...d, category: seedCategory?.id || '', message: seedMessage || (seedCategory?.prefill ? 'Interested in ' + seedCategory.prefill : ''), })); } }, [open, seedCategory, seedMessage]); if (!open) return null; const T = window.BENO.copy[lang]; const cats = window.BENO.categories; const occasions = lang === 'en' ? ['Personal day', 'Couple / anniversary', 'Family', 'Friends weekend', 'Proposal', 'Corporate / activation'] : ['يوم شخصي', 'ذكرى زواج', 'عائلية', 'عطلة أصدقاء', 'طلب يد', 'فعالية شركة']; const durations = lang === 'en' ? ['Half day', 'Full day', 'Weekend', 'Multi-day', 'Monthly'] : ['نصف يوم', 'يوم كامل', 'عطلة أسبوع', 'عدة أيام', 'شهري']; const steps = lang === 'en' ? ['What\u2019s the category?', 'When and how many?', 'Your details', 'Brief & handoff'] : ['اختر الفئة', 'متى وكم؟', 'بياناتك', 'الملخص']; const heroImg = (cats.find(c => c.id === data.category)?.lifestyle) || 'media/lifestyle-yachts.webp'; const canNext = () => { if (step === 0) return !!data.category; if (step === 1) return !!data.date && !!data.duration; if (step === 2) return data.name && data.phone && data.email; return true; }; const next = () => setStep(s => Math.min(s + 1, 3)); const prev = () => setStep(s => Math.max(s - 1, 0)); const cat = cats.find(c => c.id === data.category); const summaryMessage = (lang === 'en' ? `Hi Beno, I\u2019d like to enquire about ${cat?.name.en || 'a luxury rental'}.` : `مرحبًا بينو، أرغب بالاستفسار عن ${cat?.name.ar || 'تأجير فاخر'}.`) + (data.date ? ` ${lang === 'en' ? 'Date' : 'التاريخ'}: ${data.date}.` : '') + (data.duration ? ` ${lang === 'en' ? 'Duration' : 'المدة'}: ${data.duration}.` : '') + (data.guests ? ` ${lang === 'en' ? 'Guests' : 'الضيوف'}: ${data.guests}.` : '') + (data.occasion ? ` ${lang === 'en' ? 'Occasion' : 'المناسبة'}: ${data.occasion}.` : '') + (data.message ? ` ${data.message}` : ''); return (
{ if (e.target.classList.contains('modal-scrim')) onClose(); }}>
{step === 0 && (

{lang === 'en' ? <>What are you renting today? : <>ما الذي تستأجره اليوم؟}

{lang === 'en' ? 'Pick a category — we\u2019ll tailor the brief.' : 'اختر فئة وسنخصص الباقي.'}

{cats.map(c => ( ))}
)} {step === 1 && (

{lang === 'en' ? <>When and how many? : <>متى وكم؟}

{lang === 'en' ? 'We confirm live availability within the hour.' : 'نؤكد التوفر خلال ساعة.'}

setData({ ...data, date: e.target.value })}/>
setData({ ...data, guests: Number(e.target.value) })}/>
{occasions.map(o => ( ))}
)} {step === 2 && (

{lang === 'en' ? <>How can we reach you? : <>كيف نتواصل معك؟}

{lang === 'en' ? 'WhatsApp is fastest — we reply within the hour.' : 'الواتساب أسرع — نرد خلال ساعة.'}

setData({ ...data, name: e.target.value })} placeholder={lang === 'en' ? 'e.g. Maya Hassan' : 'مايا حسن'}/>
setData({ ...data, phone: e.target.value })}/>
setData({ ...data, email: e.target.value })} placeholder="you@email.com"/>