// Binghatti Flare — Lead-gen landing page (marketed by Treysta Real Estate Broker L.L.C) // Broker campaign. Components exported to window. const WA = '971582475234'; // Treysta WhatsApp lead line const TEL = '+971585336375'; // Treysta call line const AGENCY = 'Treysta Real Estate Broker L.L.C'; const AGENCY_SHORT = 'Treysta'; const ORN = '46270'; // Treysta RERA ORN function waLink(msg) { return `https://wa.me/${WA}?text=${encodeURIComponent(msg || "Hi, I'd like the Binghatti Flare price list and floor plans please.")}`; } /* ============================================================ LEAD INTEGRATION — Google Sheet + CRM ------------------------------------------------------------ Paste your endpoints below. See INTEGRATION.md for the 2-minute Apps Script setup (pre-filled to your sheet). - googleSheetUrl: the Apps Script Web App /exec URL. - crmWebhookUrl : any JSON POST endpoint (Zapier / Make / HubSpot / Bitrix24 / Salesforce Web-to-Lead proxy, etc.). Leave a value '' to skip it. The form still works if both are empty (lead is kept in localStorage as a backup). ============================================================ */ const LEAD_CONFIG = { sheetId: '11Spa1HyGKpSZYQsZGNuBNOCbep4NavHHAU8QYDz_9NQ', googleSheetUrl: 'https://script.google.com/macros/s/AKfycbzk1m4Dk5kOOWoGFk_oIonut0Ttd_VA_hRHqipalZl9ImXSZWJDgUrJeD764elSiFnlWg/exec', // ← Apps Script Web App (Sheet + email) crmWebhookUrl: 'https://services.leadconnectorhq.com/hooks/mQIGQSfkaBURi1jHWkv7/webhook-trigger/092b1c3a-3dd7-4f7e-a35c-8019a2c0ed63', // LeadConnector / HighLevel inbound webhook source: 'Binghatti Flare LP', }; try { window.__adConsent = localStorage.getItem('flare_consent') === 'accepted'; } catch (e) { window.__adConsent = false; } function leadTracking() { try { const p = new URLSearchParams(location.search); const o = {}; ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term', 'gclid', 'fbclid', 'msclkid'] .forEach(k => { const v = p.get(k); if (v) o[k] = v; }); return o; } catch (e) { return {}; } } async function submitLead(payload) { const body = { ...payload, source: LEAD_CONFIG.source, page: (typeof location !== 'undefined' ? location.href : ''), referrer: (typeof document !== 'undefined' ? document.referrer : '') || 'direct', submittedAt: new Date().toISOString(), ...leadTracking(), }; // Local backup so a lead is never lost if the network fails. try { const k = 'flare_leads'; const a = JSON.parse(localStorage.getItem(k) || '[]'); a.push(body); localStorage.setItem(k, JSON.stringify(a)); } catch (e) { /* ignore */ } const tasks = []; if (LEAD_CONFIG.googleSheetUrl) { // text/plain avoids the CORS preflight Apps Script can't answer. tasks.push(fetch(LEAD_CONFIG.googleSheetUrl, { method: 'POST', mode: 'no-cors', headers: { 'Content-Type': 'text/plain;charset=utf-8' }, body: JSON.stringify(body), })); } if (LEAD_CONFIG.crmWebhookUrl) { // Real JSON (cors) so HighLevel/LeadConnector parses fields for workflow mapping. tasks.push(fetch(LEAD_CONFIG.crmWebhookUrl, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body), }).catch(function () {})); } try { await Promise.allSettled(tasks); } catch (e) { /* never block the UX */ } // Conversion events — only when the visitor has consented to analytics/advertising cookies. if (window.__adConsent) { try { if (window.gtag) window.gtag('event', 'generate_lead', { currency: 'AED', value: PRICE_AED, items: [{ item_name: body.unit || 'Unspecified' }] }); } catch (e) {} try { if (window.__trackLeadConversion) window.__trackLeadConversion(); } catch (e) {} try { if (window.fbq) window.fbq('track', 'Lead', { content_name: 'Binghatti Flare', value: PRICE_AED, currency: 'AED' }); } catch (e) {} try { if (window.dataLayer) window.dataLayer.push({ event: 'lead_submit', unit: body.unit || '' }); } catch (e) {} } return true; } /* ---------- currency ---------- */ const PRICE_AED = 800000; // starting price const CURRENCIES = { AED: { sym: 'AED', rate: 1 }, USD: { sym: '$', rate: 0.2723 }, EUR: { sym: '€', rate: 0.2487 }, INR: { sym: '₹', rate: 23.9 }, }; // Live FX: refresh rates (base AED) on load, keep the values above as fallback. function loadLiveRates(onDone) { try { fetch('https://open.er-api.com/v6/latest/AED') .then(r => r.ok ? r.json() : Promise.reject()) .then(d => { const rt = d && d.rates; if (!rt) return; if (rt.USD) CURRENCIES.USD.rate = rt.USD; if (rt.EUR) CURRENCIES.EUR.rate = rt.EUR; if (rt.INR) CURRENCIES.INR.rate = rt.INR; if (typeof onDone === 'function') onDone(); }) .catch(() => {}); } catch (e) {} } const CurrencyCtx = React.createContext(['AED', () => {}]); function useCurrency() { return React.useContext(CurrencyCtx); } function fmtK(aed, cur) { const c = CURRENCIES[cur] || CURRENCIES.AED; const v = aed * c.rate; if (cur === 'INR') return `₹${(v / 1e7).toFixed(1)} Cr`; const k = Math.round(v / 1000); return cur === 'AED' ? `AED ${k}K` : `${c.sym}${k}K`; } function fmtFull(aed, cur) { const c = CURRENCIES[cur] || CURRENCIES.AED; if (cur === 'INR') return `₹${(aed * c.rate / 1e7).toFixed(2)} Crore`; const v = Math.round((aed * c.rate) / 1000) * 1000; const n = v.toLocaleString('en-US'); return cur === 'AED' ? `AED ${n}` : `${c.sym}${n}`; } function CurrencySwitcher() { const [cur, setCur] = useCurrency(); const [open, setOpen] = React.useState(false); const ref = React.useRef(null); React.useEffect(() => { const onDoc = e => { if (ref.current && !ref.current.contains(e.target)) setOpen(false); }; document.addEventListener('mousedown', onDoc); return () => document.removeEventListener('mousedown', onDoc); }, []); return (
{open && ( )}
); } /* ---------- icons ---------- */ const IconWhatsApp = ({ s = 18 }) => ( ); const IconPhone = ({ s = 18 }) => ( ); const IconCheck = ({ s = 16 }) => (); const IconArrow = ({ s = 16 }) => (); const IconPlus = ({ s = 18 }) => (); const IconLock = ({ s = 16 }) => (); // amenity line icons const IcBeach = ({ s = 22 }) => (); const IcPool = ({ s = 22 }) => (); const IcGym = ({ s = 22 }) => (); const IcPaddle = ({ s = 22 }) => (); const IcKids = ({ s = 22 }) => (); const IcLobby = ({ s = 22 }) => (); const IcRetail = ({ s = 22 }) => (); const IcView = ({ s = 22 }) => (); /* ---------- chrome ---------- */ function TopBar({ onRegister }) { return (
Binghatti Flare
{window.LangSwitcher && React.createElement(window.LangSwitcher)}
); } function UrgencyBar({ show }) { if (!show) return null; return (
Launch pricing now live · limited release
); } function Chip({ children }) { return
{children}
; } function Hero({ t, scrollToForm, onRegister }) { const [cur] = useCurrency(); return (
Binghatti Flare twin towers in Jumeirah Village Triangle, Dubai Binghatti Flare twin towers
Binghatti Flare
Jumeirah Village Triangle · Dubai

{t.headline}

A landmark collection of residences, crafted by Binghatti on an easy 70/30 plan.

From {fmtK(PRICE_AED, cur)}*Starting price
Studio to 4 BRResidences & retail
Q2 2027Handover
); } function InfoModal({ title, children, onClose }) { React.useEffect(() => { const onKey = e => { if (e.key === 'Escape') onClose(); }; window.addEventListener('keydown', onKey); return () => window.removeEventListener('keydown', onKey); }, []); return (
e.stopPropagation()}>
{title}
{children}
); } const LEGAL = { disclaimer: ( <>

{AGENCY} is a RERA registered property broker (ORN {ORN}) marketing Binghatti Flare in Jumeirah Village Triangle, Dubai, as an authorised channel partner. We are not the developer. Binghatti and Binghatti Flare are trademarks of Binghatti Developers.

Prices, payment plans, availability, sizes, imagery and handover dates are indicative, subject to change, and do not form part of any offer or contract. Renders are artist impressions.

© 2026 {AGENCY}. All rights reserved.

), privacy: ( <>

At Treysta, privacy of visitors of our website is top priority. This Privacy Policy gives a detailed view into what types of information is collected from our visitors and how we use the same. It only applies to our online activities and does not extend to any data collected offline or through other channels.

Consent. By using our website, you hereby consent to our Privacy Policy and agree to its terms.

What we collect. We collect and record the personal information you share with us when you register. This information includes your name, company name, address, email id, mobile number and other such information. If you contact us directly, we may also receive additional information such as the content of your message and any attachments you choose to provide.

How we use your information. To operate and maintain our website; understand and analyse how you use it; improve and personalise our customer approach; develop new products, services and features; ensure customer safety and prevent fraud; communicate with you directly or through a partner; enable good customer service; and undertake marketing and promotional initiatives.

Log files. Like all hosting companies, we log visitors. These files collect Internet Protocol (IP) addresses, browser type, Internet Service Provider (ISP), referring/exit pages, time spent on the website, number of clicks, and date and time stamp. This information is not linked to any personally identifiable information.

Advertising partners. Some advertisers on our site may use cookies and web beacons. Each advertising partner has its own privacy policy for how it uses your data. Treysta has no access to or control over the cookies used by third-party advertisers. We advise you to review their respective privacy policies for details on how they use your information and how to opt out.

Children's information. Treysta does not knowingly collect any personal information from minors. We advise parents and guardians to monitor children's activity online. If you believe your child has shared this type of information on our website, please contact us and we will do our best to promptly remove it.

Your GDPR rights. Every user is entitled to: the right to access your personal data; the right to rectification; the right to erase, under certain conditions; the right to restrict processing, under certain conditions; and the right to data portability. Any request you make will be adhered to, and Treysta may take up to one month to respond.

Contact. If you need more information about our Privacy Policy, or wish to exercise any of your rights, write to us at info@treysta.ae.

), cookies: ( <>

Treysta uses cookies and web beacons on its website. These cookies collect and store information that is used to optimise visitor experience. This includes visitors' likes and preferences, pages they visited, the time they spent, the browser they used and other information. This helps Treysta customise and personalise its web page content to provide a better experience.

Some of the advertisers on our site may use cookies and web beacons. Third-party ad servers and ad networks also use technologies such as cookies, web beacons or JavaScript in their advertisements and links. These technologies are used to measure the effectiveness of advertising campaigns and to customise ad content for relevancy.

You can choose to disable cookies through your own individual browser. You can learn about cookie management specific to your web browser on its respective website.

), }; function DisclaimerModal({ onClose }) { return {LEGAL.disclaimer}; } function FormModal({ t, onClose }) { React.useEffect(() => { const onKey = e => { if (e.key === 'Escape') onClose(); }; window.addEventListener('keydown', onKey); return () => window.removeEventListener('keydown', onKey); }, []); return (
e.stopPropagation()}>
); } const COUNTRIES = [ ["AE", "United Arab Emirates", "+971"], ["SA", "Saudi Arabia", "+966"], ["QA", "Qatar", "+974"], ["BH", "Bahrain", "+973"], ["OM", "Oman", "+968"], ["KW", "Kuwait", "+965"], ["IN", "India", "+91"], ["GB", "United Kingdom", "+44"], ["US", "United States", "+1"], ["AF", "Afghanistan", "+93"], ["AL", "Albania", "+355"], ["DZ", "Algeria", "+213"], ["AD", "Andorra", "+376"], ["AO", "Angola", "+244"], ["AG", "Antigua & Barbuda", "+1"], ["AR", "Argentina", "+54"], ["AM", "Armenia", "+374"], ["AU", "Australia", "+61"], ["AT", "Austria", "+43"], ["AZ", "Azerbaijan", "+994"], ["BS", "Bahamas", "+1"], ["BD", "Bangladesh", "+880"], ["BB", "Barbados", "+1"], ["BY", "Belarus", "+375"], ["BE", "Belgium", "+32"], ["BZ", "Belize", "+501"], ["BJ", "Benin", "+229"], ["BT", "Bhutan", "+975"], ["BO", "Bolivia", "+591"], ["BA", "Bosnia & Herzegovina", "+387"], ["BW", "Botswana", "+267"], ["BR", "Brazil", "+55"], ["BN", "Brunei", "+673"], ["BG", "Bulgaria", "+359"], ["BF", "Burkina Faso", "+226"], ["BI", "Burundi", "+257"], ["KH", "Cambodia", "+855"], ["CM", "Cameroon", "+237"], ["CA", "Canada", "+1"], ["CV", "Cape Verde", "+238"], ["CF", "Central African Republic", "+236"], ["TD", "Chad", "+235"], ["CL", "Chile", "+56"], ["CN", "China", "+86"], ["CO", "Colombia", "+57"], ["KM", "Comoros", "+269"], ["CG", "Congo", "+242"], ["CD", "Congo (DRC)", "+243"], ["CR", "Costa Rica", "+506"], ["CI", "Côte d'Ivoire", "+225"], ["HR", "Croatia", "+385"], ["CU", "Cuba", "+53"], ["CY", "Cyprus", "+357"], ["CZ", "Czechia", "+420"], ["DK", "Denmark", "+45"], ["DJ", "Djibouti", "+253"], ["DM", "Dominica", "+1"], ["DO", "Dominican Republic", "+1"], ["EC", "Ecuador", "+593"], ["EG", "Egypt", "+20"], ["SV", "El Salvador", "+503"], ["GQ", "Equatorial Guinea", "+240"], ["ER", "Eritrea", "+291"], ["EE", "Estonia", "+372"], ["SZ", "Eswatini", "+268"], ["ET", "Ethiopia", "+251"], ["FJ", "Fiji", "+679"], ["FI", "Finland", "+358"], ["FR", "France", "+33"], ["GA", "Gabon", "+241"], ["GM", "Gambia", "+220"], ["GE", "Georgia", "+995"], ["DE", "Germany", "+49"], ["GH", "Ghana", "+233"], ["GR", "Greece", "+30"], ["GD", "Grenada", "+1"], ["GT", "Guatemala", "+502"], ["GN", "Guinea", "+224"], ["GW", "Guinea-Bissau", "+245"], ["GY", "Guyana", "+592"], ["HT", "Haiti", "+509"], ["HN", "Honduras", "+504"], ["HK", "Hong Kong", "+852"], ["HU", "Hungary", "+36"], ["IS", "Iceland", "+354"], ["ID", "Indonesia", "+62"], ["IR", "Iran", "+98"], ["IQ", "Iraq", "+964"], ["IE", "Ireland", "+353"], ["IL", "Israel", "+972"], ["IT", "Italy", "+39"], ["JM", "Jamaica", "+1"], ["JP", "Japan", "+81"], ["JO", "Jordan", "+962"], ["KZ", "Kazakhstan", "+7"], ["KE", "Kenya", "+254"], ["KI", "Kiribati", "+686"], ["KG", "Kyrgyzstan", "+996"], ["LA", "Laos", "+856"], ["LV", "Latvia", "+371"], ["LB", "Lebanon", "+961"], ["LS", "Lesotho", "+266"], ["LR", "Liberia", "+231"], ["LY", "Libya", "+218"], ["LI", "Liechtenstein", "+423"], ["LT", "Lithuania", "+370"], ["LU", "Luxembourg", "+352"], ["MO", "Macau", "+853"], ["MG", "Madagascar", "+261"], ["MW", "Malawi", "+265"], ["MY", "Malaysia", "+60"], ["MV", "Maldives", "+960"], ["ML", "Mali", "+223"], ["MT", "Malta", "+356"], ["MH", "Marshall Islands", "+692"], ["MR", "Mauritania", "+222"], ["MU", "Mauritius", "+230"], ["MX", "Mexico", "+52"], ["FM", "Micronesia", "+691"], ["MD", "Moldova", "+373"], ["MC", "Monaco", "+377"], ["MN", "Mongolia", "+976"], ["ME", "Montenegro", "+382"], ["MA", "Morocco", "+212"], ["MZ", "Mozambique", "+258"], ["MM", "Myanmar", "+95"], ["NA", "Namibia", "+264"], ["NR", "Nauru", "+674"], ["NP", "Nepal", "+977"], ["NL", "Netherlands", "+31"], ["NZ", "New Zealand", "+64"], ["NI", "Nicaragua", "+505"], ["NE", "Niger", "+227"], ["NG", "Nigeria", "+234"], ["KP", "North Korea", "+850"], ["MK", "North Macedonia", "+389"], ["NO", "Norway", "+47"], ["PK", "Pakistan", "+92"], ["PW", "Palau", "+680"], ["PS", "Palestine", "+970"], ["PA", "Panama", "+507"], ["PG", "Papua New Guinea", "+675"], ["PY", "Paraguay", "+595"], ["PE", "Peru", "+51"], ["PH", "Philippines", "+63"], ["PL", "Poland", "+48"], ["PT", "Portugal", "+351"], ["RO", "Romania", "+40"], ["RU", "Russia", "+7"], ["RW", "Rwanda", "+250"], ["KN", "Saint Kitts & Nevis", "+1"], ["LC", "Saint Lucia", "+1"], ["VC", "Saint Vincent", "+1"], ["WS", "Samoa", "+685"], ["SM", "San Marino", "+378"], ["ST", "São Tomé & Príncipe", "+239"], ["SN", "Senegal", "+221"], ["RS", "Serbia", "+381"], ["SC", "Seychelles", "+248"], ["SL", "Sierra Leone", "+232"], ["SG", "Singapore", "+65"], ["SK", "Slovakia", "+421"], ["SI", "Slovenia", "+386"], ["SB", "Solomon Islands", "+677"], ["SO", "Somalia", "+252"], ["ZA", "South Africa", "+27"], ["KR", "South Korea", "+82"], ["SS", "South Sudan", "+211"], ["ES", "Spain", "+34"], ["LK", "Sri Lanka", "+94"], ["SD", "Sudan", "+249"], ["SR", "Suriname", "+597"], ["SE", "Sweden", "+46"], ["CH", "Switzerland", "+41"], ["SY", "Syria", "+963"], ["TW", "Taiwan", "+886"], ["TJ", "Tajikistan", "+992"], ["TZ", "Tanzania", "+255"], ["TH", "Thailand", "+66"], ["TL", "Timor-Leste", "+670"], ["TG", "Togo", "+228"], ["TO", "Tonga", "+676"], ["TT", "Trinidad & Tobago", "+1"], ["TN", "Tunisia", "+216"], ["TR", "Türkiye", "+90"], ["TM", "Turkmenistan", "+993"], ["TV", "Tuvalu", "+688"], ["UG", "Uganda", "+256"], ["UA", "Ukraine", "+380"], ["UY", "Uruguay", "+598"], ["UZ", "Uzbekistan", "+998"], ["VU", "Vanuatu", "+678"], ["VE", "Venezuela", "+58"], ["VN", "Vietnam", "+84"], ["YE", "Yemen", "+967"], ["ZM", "Zambia", "+260"], ["ZW", "Zimbabwe", "+263"], ]; const UNIT_OPTIONS = ['Studio', '1 Bedroom', '2 Bedroom', '3 Bedroom', '4 Bedroom']; function CountrySelect({ value, onChange }) { const [open, setOpen] = React.useState(false); const [q, setQ] = React.useState(''); const ref = React.useRef(null); React.useEffect(() => { const onDoc = e => { if (ref.current && !ref.current.contains(e.target)) setOpen(false); }; document.addEventListener('mousedown', onDoc); return () => document.removeEventListener('mousedown', onDoc); }, []); React.useEffect(() => { if (!open) setQ(''); }, [open]); const sel = COUNTRIES.find(c => c[2] === value) || COUNTRIES[0]; const ql = q.trim().toLowerCase(); const list = ql ? COUNTRIES.filter(c => c[1].toLowerCase().includes(ql) || c[2].includes(ql) || c[0].toLowerCase() === ql) : COUNTRIES; return (
{open && (
setQ(e.target.value)} placeholder="Search country" />
)}
); } function LeadForm({ t, compact }) { const [sent, setSent] = React.useState(false); const [sending, setSending] = React.useState(false); const [vals, setVals] = React.useState({ name: '', cc: '+971', phone: '', email: '', unit: '', consent: true }); const [err, setErr] = React.useState({}); const submit = async (e) => { e.preventDefault(); if (sending) return; const er = {}; const digits = vals.phone.replace(/\D/g, ''); if (vals.name.trim().length < 2 || /\d/.test(vals.name)) er.name = 1; if (/[A-Za-z]/.test(vals.phone) || digits.length < 7 || digits.length > 15) er.phone = 1; if (!/^[^@\s]+@[^@\s]+\.[^@\s]{2,}$/.test(vals.email.trim())) er.email = 1; if (!vals.consent) er.consent = 1; setErr(er); if (Object.keys(er).length > 0) return; setSending(true); // Dispatch to Sheet/email + CRM, but don't make the user wait on slow // endpoints (Apps Script can take several seconds; the requests still // complete in the background and the lead is backed up locally). await Promise.race([ submitLead({ name: vals.name.trim(), phone: (vals.cc + ' ' + vals.phone).replace(/\s+/g, ' ').trim(), countryCode: vals.cc, email: vals.email.trim(), unit: vals.unit || 'Not specified', consent: vals.consent ? 'Yes' : 'No', }), new Promise(r => setTimeout(r, 1200)), ]); setSending(false); setSent(true); }; const setField = (k, v) => { setVals(p => ({ ...p, [k]: v })); setErr(p => { if (!p[k]) return p; const n = { ...p }; delete n[k]; return n; }); }; const MSG = { name: 'Please enter a valid name', phone: 'Enter a valid mobile number', email: 'Enter a valid email address', consent: 'Please tick the box to continue' }; if (sent) return ; return (
Get the price list & floor plans
Instant reply on WhatsApp. No spam.
{err.consent && {MSG.consent}}
); } function ThankYou({ name }) { return (
Thank you{name ? `, ${name.split(' ')[0]}` : ''}.

We'll send the price list and floor plans on WhatsApp shortly.

Chat now on WhatsApp
); } function BrokerTrust() { const items = ['Official channel partner', 'Direct developer pricing', 'RERA registered broker', '1,000+ buyers assisted']; return (
{items.map((t, i) =>
{t}
)}
); } function WhyDubai() { const items = [ ['0%', 'No annual property, income or capital-gains tax.'], ['Up to 10%', 'Gross rental yields, among the world’s strongest.'], ['10 Yr', 'Golden Visa on homes of AED 2M+.'], ['100%', 'Freehold for all nationalities. RERA escrow protected.'], ['Top 10', 'Ranked among the world’s safest cities.'], ]; return (
Why Dubai

Dubai, in Five Numbers.

{items.map(([n, l], i) => (
{n}{l}
))}

Market figures: Dubai Land Department / published portal data, 2025. Indicative only, not financial advice.

); } function Facts() { const data = [ ['2', 'Iconic towers · 40 & 34 floors'], ['1,378', 'Residences + 79 retail units'], ['70 / 30', 'Easy payment plan*'], ['JVT', 'Minutes to Marina & Downtown'], ]; return (
Why Flare

A Community That Matters.

{data.map(([n, l], i) => (
{n}{l}
))}
); } function UnitMix({ scrollToForm }) { const [cur] = useCurrency(); const units = [ { k: 'Studio', px: `From ${fmtK(PRICE_AED, cur)}*`, mt: 'Investor favourite', img: 'unitStudio' }, { k: '1 Bedroom', px: 'Price on request', mt: 'Balcony · skyline view', img: 'unit1' }, { k: '2 Bedroom', px: 'Price on request', mt: 'Family ready', img: 'unit2' }, { k: '3 & 4 Bedroom', px: 'Price on request', mt: 'Sky terrace · pool', img: 'unit3' }, ]; return (
Choose your residence

From Studios to Four Bedroom Sky Homes

{units.map((u, i) => ( ))}

* Indicative starting prices. Confirm availability on enquiry.

); } function Amenities() { const a = [ [, 'Artificial beach', 'Sand & pool deck'], [, 'Private sky pools', 'Sky-terrace homes'], [, 'Gym & running lane', 'Wellness floor'], [, 'Paddle court', 'Active living'], [, 'Kids wet & dry play', 'Family zones'], [, 'Luxury lobby', 'Signature arrival'], [, 'Retail & shopping', '79 units below'], [, 'Skyline views', 'Burj on the horizon'], ]; return (
Life at Flare

Resort Amenities at Your Door.

{a.map(([ic, t, s], i) => (
{ic}
{t}
{s}
))}
); } function FloorPlans({ scrollToForm }) { const plans = [ { k: 'Studio', f: 'fpStudio' }, { k: '1 Bedroom', f: 'fp1' }, { k: '2 Bedroom', f: 'fp2' }, { k: '3 Bedroom', f: 'fp3' }, { k: '4 Bedroom', f: 'fp4' }, ]; const [i, setI] = React.useState(0); return (
Layouts

Floor Plans

{plans.map((p, n) => ( ))}
{plans[i].k}

Indicative layout. Request the full floor plan pack with sizes and the current price list.

); } function GalleryStrip({ onOpen }) { const imgs = ['gExtBurj', 'unit1', 'gPodiumNight', 'gExtPoolDay', 'unitStudio', 'gExtSunset', 'unit2', 'gAmDeck', 'gExtFog', 'unit3', 'gExtDay', 'gAmAerial', 'lobby', 'gFooterSunset', 'int4']; return ( ); } function Lightbox({ imgs, index, onClose, onNav }) { React.useEffect(() => { const onKey = e => { if (e.key === 'Escape') onClose(); if (e.key === 'ArrowRight') onNav(1); if (e.key === 'ArrowLeft') onNav(-1); }; window.addEventListener('keydown', onKey); return () => window.removeEventListener('keydown', onKey); }, [onClose, onNav]); return (
e.stopPropagation()} alt="Binghatti Flare" />
{index + 1} / {imgs.length}
); } function Tour360() { return (
Step inside

A 360° Walk Through Flare.