// === Seven Yachts — Overlays (drawer, modal, FAB) === function FavouritesDrawer({ open, onClose, favs, toggleFav, onSelect, openBooking }) { if (!open) return null; const items = favs.map(findYacht).filter(Boolean); const enquireAll = () => { if (items.length === 0) return; const list = items.map(y => `• ${y.name} — ${y.builder} ${y.length}ft`).join('%0A'); const msg = `Hello Seven Yachts, I have a shortlist:%0A${list}%0A%0APlease share availability for ...`; window.open(`https://wa.me/971521217833?text=${msg}`, '_blank'); }; return ( <>
> ); } window.FavouritesDrawer = FavouritesDrawer; function BookingModal({ open, onClose, prefill }) { if (!open) return null; const [step, setStep] = useState('form'); // form | success const [data, setData] = useState({ yacht: prefill?.yacht || 'any', date: prefill?.date || new Date(Date.now() + 7 * 86400000).toISOString().slice(0, 10), guests: prefill?.guests || 8, duration: prefill?.duration || '4hr', name: '', phone: '', email: '', occasion: 'general', message: '', }); const yacht = data.yacht === 'any' ? null : findYacht(data.yacht); const heroImg = yacht ? yacht.hero : 'media/lucien-exterior.webp'; const handle = (e) => { e.preventDefault(); setStep('success'); }; const waNow = () => { const yLine = yacht ? `${yacht.name} (${yacht.builder} ${yacht.length}ft)` : 'recommendation'; const occ = data.occasion !== 'general' ? `Occasion: ${data.occasion}.` : ''; const msg = `Hello Seven Yachts, I'd like to enquire about ${yLine} on ${data.date} for ${data.guests} guests (${data.duration}). ${occ} ${data.message || ''}`.trim(); window.open(waLink(msg), '_blank'); }; return ({yacht ? `${yacht.builder} · ${yacht.length}ft` : "We'll suggest the right vessel."}
Every enquiry is hand-replied by the concierge desk — usually within the hour, in your preferred language.
{data.name && `Thank you, ${data.name.split(' ')[0]}. `} Our concierge will respond within the hour by your preferred channel. For an immediate answer, message us on WhatsApp.