// RMA Motors Dubai — interactive prototype // Single-file React app. Mounts into #root. const { useState, useEffect, useMemo, useRef, useCallback } = React; // ───────────────────────────────────────────────────────────────────────────── // Brand mark — RMA wordmark in SVG. Heavy italic forward-leaning grotesque. // Modelled (originally drawn) after the brand's bold-italic mark seen in // uploaded brand assets — NOT a trace, but evokes the same forward-thrust // shape language used in the existing brand. function RMAWordmark({ color = "currentColor", tagline = true, size = 1 }) { return ( RMA MOTORS {tagline && ( D U B A I )} ); } // Motorsport stripe — three stripes echoing the brand's racing livery in the // PPF and finance banners. Used as a visual accent rule. function Stripe({ vertical = false, w = 120, h = 6, opacity = 1 }) { const isV = vertical; return ( {isV ? ( <> ) : ( <> )} ); } // Stock chip / spec divider function SpecPill({ children, kind = "default" }) { return {children}; } // ───────────────────────────────────────────────────────────────────────────── // Sticky CTA FABs — WhatsApp + Call function FABs({ onEnquire }) { return (
{ e.preventDefault(); onEnquire({ channel: "whatsapp" }); }} aria-label="WhatsApp RMA Motors"> WhatsApp {COPY.contact.main}
); } // ───────────────────────────────────────────────────────────────────────────── // Top navigation function Nav({ view, navigate, locale, setLocale, onEnquire }) { const [scrolled, setScrolled] = useState(false); useEffect(() => { const onScroll = () => setScrolled(window.scrollY > 24); onScroll(); window.addEventListener("scroll", onScroll, { passive: true }); return () => window.removeEventListener("scroll", onScroll); }, []); const groups = [ { label: "Inventory", items: [ { k: "inventory", label: "Used Cars" }, { k: "inventory", label: "New" }, { k: "inventory", label: "Trade-in" }, ]}, { label: "Services", items: [ { k: "sell", label: "Sell" }, { k: "finance", label: "Finance" }, { k: "carcare", label: "Car Care" }, ]}, { label: "Company", items: [ { k: "about", label: "About" }, { k: "contact", label: "Contact" }, ]}, ]; return (
{ e.preventDefault(); navigate({ view: "home" }); }}>
{["EN", "AR", "RU", "ZH"].map((l) => ( ))}
{COPY.contact.main}
); } // ───────────────────────────────────────────────────────────────────────────── // Vehicle card function VehicleCard({ v, onClick, dense = false }) { return (
{`${v.year}
{v.flags.map((f, i) => ({f}))}
{v.id}
{v.year} {v.tag}

{v.make} {v.model}

{v.body} {v.transmission} {v.region} spec
Price {v.price === "POA" ? "On application" : v.price}
View details →
); } // ───────────────────────────────────────────────────────────────────────────── // HOME VIEW function HomeView({ navigate, onEnquire }) { const featured = useMemo( () => [VEHICLES[0], VEHICLES[1], VEHICLES[9], VEHICLES[10], VEHICLES[13], VEHICLES[6]], [] ); return (
{/* Hero */}
Prestige · Sports · Muscle · Classic

The enthusiasts
empowering everyone
to achieve their motoring
dreams.

Dubai Investment Park · Speedex Center · est. by three generations of vehicle technicians.

ShowroomSpeedex Center, DIP 1
StockLive feed — {VEHICLES.length} cars
BookingsMon–Sat by appointment
{/* Trust strip */}
{[...COPY.trust, ...COPY.trust].map((t, i) => ( {t} ))}
{/* Featured grid */}
Featured / just-arrived

The current roster

{featured.map((v) => ( navigate({ view: "detail", id: v.id })} /> ))}
SAMPLE INVENTORY · BOUND TO LIVE GFORCES FEED IN PRODUCTION
{/* Services tiles */}
What we do

Four ways the showroom works.

{COPY.services.map((s, i) => (
0{i + 1}

{s.title}

{s.body}

))}
{/* Founder / story */}
RMA Motors technicians
SPEEDEX CENTER · WORKSHOP FLOOR
Our story

Built on a workshop floor — not a sales floor.

{COPY.about_long.map((p, i) => (

{p}

))}
01 Three generations of vehicle technicians
02 Ex-BMW & Rolls-Royce UK senior technicians
03 Ferrari · Bentley · Porsche · GCC specialists
{/* Car care band */}
RMA Car Care & PPF

The same hands that prepare the showroom cars look after yours.

  • Multi-stage polishing & paint correction
  • Paint-protection film & ceramic coating
  • Window tints, headlight & alloy refurb
RMA PPF workshop
{/* Reviews / Trustpilot placeholder */}
What customers say

Reviews live where they should — on Trustpilot.

Our review wall is the official Trustpilot widget — self-updating, unfiltered, owned by the customer not by us. The embed will load here in production.

TRUSTPILOT EMBED · LIVE WIDGET
{[0,1,2,3,4].map(i => )}
RATING + REVIEW COUNT BIND TO LIVE TRUSTPILOT FEED · NO FABRICATED NUMBERS
{/* Locations */}
Visit the showroom

Two units. One address.

{COPY.locations.map((l, i) => (
{String(i+1).padStart(2,'0')} · {l.kind}

{l.name}

{l.addr}
{l.sub}

))}
MAP · SPEEDEX CENTER · DIP 1 COORDS TBC · SITE'S OWN COORDS LOOK PLACEHOLDER
); } // ───────────────────────────────────────────────────────────────────────────── // INVENTORY VIEW function InventoryView({ navigate }) { const [filters, setFilters] = useState({ make: "All", segment: "All", q: "", sort: "newest" }); const filtered = useMemo(() => { let r = VEHICLES.slice(); if (filters.make !== "All") r = r.filter((v) => v.make === filters.make); if (filters.segment !== "All") r = r.filter((v) => v.segment === filters.segment); if (filters.q) { const q = filters.q.toLowerCase(); r = r.filter((v) => `${v.make} ${v.model} ${v.body}`.toLowerCase().includes(q)); } if (filters.sort === "newest") r.sort((a, b) => b.year - a.year); if (filters.sort === "oldest") r.sort((a, b) => a.year - b.year); if (filters.sort === "az") r.sort((a, b) => a.make.localeCompare(b.make)); return r; }, [filters]); return (
Live inventory

The showroom.

Every car in stock today. Prices are quoted on application — collector-grade and consigned cars are individually appraised. Tap any car for the full spec, gallery and enquiry.

setFilters((f) => ({ ...f, make: v }))} /> setFilters((f) => ({ ...f, segment: v }))} />
setFilters((f) => ({ ...f, q: e.target.value }))} />
{filtered.length} of {VEHICLES.length} in stock
{filtered.map((v) => ( navigate({ view: "detail", id: v.id })} /> ))} {filtered.length === 0 && (

No cars match those filters.

)}
SAMPLE INVENTORY · BINDS TO LIVE GFORCES FEED · SSG + ISR PER VEHICLE
); } function FilterGroup({ label, value, options, onChange }) { return (
); } // ───────────────────────────────────────────────────────────────────────────── // VEHICLE DETAIL VIEW function DetailView({ id, navigate, onEnquire }) { const v = VEHICLES.find((x) => x.id === id) || VEHICLES[0]; const similar = useMemo(() => VEHICLES.filter((x) => x.id !== v.id && (x.make === v.make || x.segment === v.segment)).slice(0, 3), [v]); const [galleryIdx, setGalleryIdx] = useState(0); // Simulate multi-angle gallery: use the hero + 3 zoom-crops styled differently const galleryShots = [ { src: v.image, label: "FRONT 3/4" }, { src: v.image, label: "PROFILE", style: { objectPosition: "left center", transform: "scale(1.1)" } }, { src: v.image, label: "DETAIL", style: { objectPosition: "right center", transform: "scale(1.4)" } }, { src: v.image, label: "STUDIO", style: { filter: "brightness(0.8) contrast(1.05)" } }, ]; const specs = [ { k: "Year", v: v.year }, { k: "Make", v: v.make }, { k: "Model", v: v.model }, { k: "Body", v: v.body }, { k: "Segment", v: v.segment }, { k: "Drivetrain", v: v.drivetrain }, { k: "Transmission", v: v.transmission }, { k: "Exterior", v: v.exterior }, { k: "Interior", v: v.interior }, { k: "Regional spec", v: v.region }, { k: "Mileage", v: "On enquiry" }, { k: "Stock ID", v: v.id }, ]; return (
{/* Breadcrumb */}
{ e.preventDefault(); navigate({ view: "home" }); }}>Home / { e.preventDefault(); navigate({ view: "inventory" }); }}>Used Cars / {v.year} {v.make} {v.model}
{/* Cinematic hero */}
{galleryShots[galleryIdx].label}
{String(galleryIdx + 1).padStart(2, "0")} / {String(galleryShots.length).padStart(2, "0")}
{galleryShots.map((s, i) => ( ))}
{/* Spec table + story */}
Specification

Every field is what the feed gives us — nothing invented.

{specs.map((s, i) => (
{s.k} {s.v}
))}

Preparation

Every car that enters Speedex Center is mechanically and cosmetically prepared by the same technicians who would sign off a factory delivery. Our ULTIMATE detail is applied as standard — multi-stage paint correction, full interior recommission and a roadworthiness report kept on file.

Provenance & paperwork

Service history, regional spec confirmation and warranty status are walked through with you in person before any test drive. We do not list mileage publicly on collector and consignment cars — those figures are shared during enquiry.

⚠ DEMO DATA · IN PRODUCTION SPECS BIND 1:1 TO LIVE GFORCES FEED FIELDS · POA SUPPORTED · NO INVENTED VALUES
{/* Similar */}
You may also consider

Similar cars in the showroom.

{similar.map((s) => ( { navigate({ view: "detail", id: s.id }); window.scrollTo({ top: 0 }); }} /> ))}
); } // ───────────────────────────────────────────────────────────────────────────── // "Placeholder" pages — Sell / Finance / Car Care / About / Contact // Just enough to give the nav real links without padding with filler. function MiniView({ title, eyebrow, body, ctaLabel, onEnquire, image }) { return (
{eyebrow}

{title}

{body.map((p, i) =>

{p}

)}
); } // ───────────────────────────────────────────────────────────────────────────── // Enquiry modal function EnquiryModal({ open, onClose, prefill }) { const [sent, setSent] = useState(false); const [form, setForm] = useState({ name: "", phone: "", email: "", msg: "" }); useEffect(() => { if (open) { setSent(false); setForm({ name: "", phone: "", email: "", msg: "" }); } }, [open, prefill]); if (!open) return null; const veh = prefill?.vehicle; const topic = prefill?.topic || (veh ? `${veh.year} ${veh.make} ${veh.model}` : "General enquiry"); const channel = prefill?.channel === "whatsapp" ? "WhatsApp" : "RMA Motors"; return (
e.stopPropagation()}>
{channel}

{topic}

{veh && (
{veh.id} {veh.year} {veh.make} {veh.model} {veh.body} · {veh.transmission} · {veh.region} spec
)}
{!sent ? (
{ e.preventDefault(); setSent(true); }}>