// Alba Cars — Sell Your Car (multi-step funnel) + minor pages const { useState: useStateS, useMemo: useMemoS, useEffect: useEffectS } = React; // ============================================================= // SELL YOUR CAR — Multi-step funnel // ============================================================= function SellPage({ setRoute }) { const [step, setStep] = useStateS(0); const [data, setData] = useStateS({ make: '', model: '', year: '', mileage: '', condition: '', fuel: '', trans: '', service: '', accidents: '', owners: '1', name: '', phone: '', email: '', emirate: 'Dubai', }); const update = (k, v) => setData(d => ({ ...d, [k]: v })); const steps = [ { id: 'car', label: 'Your car' }, { id: 'condition', label: 'Condition' }, { id: 'contact', label: 'Contact' }, { id: 'offer', label: 'Instant offer' }, ]; const canNext = useMemoS(() => { if (step === 0) return data.make && data.model && data.year && data.mileage; if (step === 1) return data.condition && data.fuel && data.trans; if (step === 2) return data.name && data.phone; return true; }, [step, data]); return (
{/* Header */}
Avg time to cash · ~2 hours

Sell your car in Dubai —
get the best price instantly.

Three steps. Free in-person inspection. Payment after RTA verification & pick-up. We settle outstanding finance.

{[ { v: '~2hr', l: 'To cash' }, { v: '0', l: 'Hidden fees' }, { v: '+8k', l: 'Cars bought' }, ].map(s => (
{s.v}
{s.l}
))}
{/* Wizard card */}
{/* Stepper */}
{steps.map((s, i) => ( ))}
{/* Body */}
{step === 0 && } {step === 1 && } {step === 2 && } {step === 3 && } {step < 3 && (
{step > 0 ? ( ) : }
{step === 0 ? 'Takes ~60 seconds' : step === 1 ? 'Almost there' : 'Last step before your offer'} canNext && setStep(step + 1)} style={{ opacity: canNext ? 1 : 0.4, pointerEvents: canNext ? 'auto' : 'none' }}> {step === 2 ? 'Get Instant Offer' : 'Continue'}
)}
{/* Below — value props */}
900 ? 'repeat(3, 1fr)' : '1fr', gap: 16, marginTop: 50 }}> {[ { i: '01', t: 'Share Your Car Details', d: 'A few quick details — make, model, year, mileage, condition. We give you the best price instantly.' }, { i: '02', t: 'Car Inspection', d: 'Our experts inspect your car in person and present the final offer. Free, no obligation.' }, { i: '03', t: 'Secure Payment & Pick-Up', d: 'We complete payment after RTA verification and arrange your car\'s pick-up. Same-day in most cases.' }, ].map(s => (
{s.i} / 03

{s.t}

{s.d}

))}
900 ? '1fr auto' : '1fr', gap: 32, alignItems: 'center' }}>
Got finance left on it? No problem.

We settle your bank, you keep the difference.

If your car has outstanding finance, we'll settle it directly with your bank. The remaining value lands in your account same-day, after RTA transfer.

How it works
); } function StepCar({ data, update }) { return (
Step 1 of 3

Tell us about your car.

Just the basics — we'll do the rest.

700 ? 'repeat(2, 1fr)' : '1fr', gap: 18 }}> update('model', e.target.value)} /> update('mileage', e.target.value)} />
); } function StepCondition({ data, update }) { const conditions = [ { id: 'excellent', l: 'Excellent', d: 'Like new, no visible flaws' }, { id: 'good', l: 'Good', d: 'Minor wear consistent with age' }, { id: 'fair', l: 'Fair', d: 'Visible wear, some repairs needed' }, { id: 'poor', l: 'Poor', d: 'Significant cosmetic or mechanical issues' }, ]; return (
Step 2 of 3

Condition & quick specs.

Approximate is fine — we confirm everything at inspection.

Condition
700 ? 'repeat(4, 1fr)' : 'repeat(2, 1fr)', gap: 10 }}> {conditions.map(c => ( ))}
700 ? 'repeat(2, 1fr)' : '1fr', gap: 18 }}> update('fuel', v)} /> update('trans', v)} /> update('service', v)} /> update('accidents', v)} />
); } function StepContact({ data, update }) { return (
Step 3 of 3

Where should we send your offer?

We'll show your instant offer next — and a specialist will call within 30 minutes (showroom hours).

700 ? 'repeat(2, 1fr)' : '1fr', gap: 18 }}> update('name', e.target.value)} /> update('phone', e.target.value)} /> update('email', e.target.value)} /> update('emirate', v)} />
); } function StepOffer({ data, setRoute }) { // illustrative offer formula — clearly labelled demo const base = useMemoS(() => { const years = data.year ? Math.max(0, 2026 - Number(data.year)) : 5; const km = Number(data.mileage) || 60000; const condMult = { excellent: 1.0, good: 0.93, fair: 0.82, poor: 0.7 }[data.condition] || 0.9; let basePrice = 120000; if (['Mercedes-Benz','BMW','Audi','Land Rover','Porsche'].includes(data.make)) basePrice = 220000; if (['Ferrari','Lamborghini','Bentley','Rolls Royce','Aston Martin','Maserati'].includes(data.make)) basePrice = 520000; const yearAdj = Math.max(0.45, 1 - years * 0.08); const kmAdj = Math.max(0.7, 1 - (km - 30000) / 400000); const result = Math.round(basePrice * yearAdj * kmAdj * condMult); const low = Math.round(result * 0.94 / 1000) * 1000; const high = Math.round(result * 1.06 / 1000) * 1000; return { low, high }; }, [data]); return (
900 ? '1fr 1.2fr' : '1fr', gap: 36, alignItems: 'flex-start' }}>
Your instant offer · illustrative

{data.year} {data.make} {data.model || ''}

{data.mileage ? Number(data.mileage).toLocaleString() + ' km' : '—'} · {data.condition || '—'} condition · {data.fuel || '—'} · {data.trans || '—'}
Estimated range — demo
AED {base.low.toLocaleString()} – {base.high.toLocaleString()}
Final offer presented after free in-person inspection. We settle outstanding finance & handle all RTA paperwork. Payment same-day in most cases.
Book inspection WhatsApp specialist
What happens next.
    {[ { t: 'Confirmation call', d: 'A specialist calls you within 30 minutes (during showroom hours) to confirm details.' }, { t: 'Book inspection', d: 'Pick a slot at our Al Asayel showroom — or we come to you in Dubai.' }, { t: 'Inspection & offer', d: '~45 minute full inspection. Final offer presented on the spot.' }, { t: 'RTA & payment', d: 'We transfer the RTA, settle any finance, and pay you. Same-day where possible.' }, ].map((s, i) => (
  1. 0{i+1}
    {s.t}
    {s.d}
  2. ))}
); } function Field({ label, children }) { return (
{label}
{children}
); } function Segmented({ options, value, onChange }) { return (
{options.map(opt => ( ))}
); } // ============================================================= // FINANCE PAGE — simplified // ============================================================= function FinancePage({ setRoute }) { return (
Finance · EMI up to 5 years

Drive now,
pay monthly.

In partnership with leading UAE banks. EMI up to 5 years, lease-to-own up to 4. 60-second eligibility check, no credit pull.

900 ? 'repeat(4, 1fr)' : 'repeat(2, 1fr)', gap: 0, borderTop: '1px solid var(--border)', borderBottom: '1px solid var(--border)' }}> {[ { t: 'UAE residency', d: 'Valid Emirates ID and residency visa.' }, { t: 'Income proof', d: '3 months\' salary slips or bank statements.' }, { t: 'Down payment', d: 'Typically 20% — varies by bank & profile.' }, { t: 'Bank approval', d: 'Final rate & tenure set by your bank.' }, ].map((r, i) => (
900) ? '1px solid var(--border)' : 'none' }}>
0{i+1}
{r.t}
{r.d}
))}
); } // ============================================================= // ABOUT PAGE — simplified // ============================================================= function AboutPage({ setRoute }) { return (
About · Alba Motors LLC

Pre-owned, not pre-loved.

900 ? '1fr 1fr' : '1fr', gap: 60, alignItems: 'flex-start' }}>

Alba Cars is a Dubai mainland company — Alba Motors LLC — operating one of the city's most trusted pre-owned showrooms in Al Quoz. We deal in British and German luxury, with curated selections across Japanese, American, and Italian marques.

Two-sided by design: we sell certified pre-owned cars with a 1-year warranty, and we buy from the public with an honest, ~2-hour offer. RTA and bank paperwork happens in-house, UAE delivery on us.

900 ? 'repeat(3, 1fr)' : '1fr', gap: 0, borderTop: '1px solid var(--border)' }}> {[ { img: 'media/showroom-exterior.webp', label: 'Showroom' }, { img: 'media/showroom-interior.webp', label: 'Floor' }, { img: 'media/showroom-team.webp', label: 'Team' }, ].map((x, i) => (
900) ? '1px solid var(--border)' : 'none' }}> {x.label}
{x.label}
))}
700 ? 'repeat(4, 1fr)' : 'repeat(2, 1fr)', gap: 0, borderTop: '1px solid var(--border)', borderBottom: '1px solid var(--border)' }}> {[ { v: '~2hr', l: 'Avg sell time' }, { v: '154', l: 'Inspection points' }, { v: '1yr', l: 'Free warranty' }, { v: '17', l: 'Marques on the floor' }, ].map((s, i) => (
700) ? '1px solid var(--border)' : 'none' }}>
{s.v}
{s.l}
))}
); } // ============================================================= // CONTACT PAGE — simplified // ============================================================= function ContactPage({ setRoute }) { return (
Contact

Drop by, dial in,
or message.

900 ? '1.2fr 1fr' : '1fr', gap: 40 }}> {/* Map placeholder */}
Alba Cars showroom
Al Asayel St, Al Quoz Ind 1
Map placeholder · live coords to confirm
+971 4 377 2503]} /> +971 4 377 2503]} /> info@albacars.ae]} />
WhatsApp us Call
); } function ContactRow({ icon, label, lines }) { return (
{label}
{lines.map((l, i) =>
{l}
)}
); } // ============================================================= // BRANDS PAGE — uses BrandWall + featured per brand // ============================================================= function BrandsPage({ setRoute, setVehicleId }) { return (
Brands · 17 marques

Shop by marque.

British and German lead. Live counts shown — tap any marque to filter the inventory.

); } Object.assign(window, { SellPage, FinancePage, AboutPage, ContactPage, BrandsPage });