/* global React, ReactDOM, Navbar, Hero, BrandStrip, NoDepositBand, FeaturedFleet, CategoriesBlock, HowItWorks, AwardStrip, CTABand, Footer, FleetPage, VehicleDetail, BookingDrawer, ContactPage, HowPage, AboutPage, FloatRail, TweaksPanel, useTweaks, TweakSection, TweakRadio, TweakColor, TweakToggle, TweakSelect */ const { useState, useEffect, useMemo } = React; const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "accent": "#E16C2A", "heroVariant": "ferrari", "rtl": false, "density": "comfortable", "displayFont": "Saira" }/*EDITMODE-END*/; const HERO_IMAGES = { huracan: "media/car-lamborghini-huracan.webp", bentley: "media/car-bentley-bentayga.webp", ferrari: "media/car-ferrari-f8.webp", cybertruck: "media/car-tesla-cybertruck.webp", audi: "media/car-audi-r8.webp" }; function App() { const [route, setRoute] = useState("home"); const [vehicle, setVehicle] = useState(null); const [bookingOpen, setBookingOpen] = useState(false); const [bookingVehicle, setBookingVehicle] = useState(null); const [locale, setLocale] = useState("en"); const [initialCategory, setInitialCategory] = useState(null); const [tweaks, setTweak] = useTweaks(TWEAK_DEFAULTS); // Imperative navigation exposed to inner components for simplicity useEffect(() => { window.go = (r) => { setRoute(r); window.scrollTo({top: 0}); }; window.openVehicle = (v) => { setVehicle(v); setRoute("vehicle"); window.scrollTo({top: 0}); }; window.openBooking = (v) => { setBookingVehicle(v); setBookingOpen(true); }; }, []); // Apply tweaks to CSS vars useEffect(() => { const root = document.documentElement; root.style.setProperty("--primary", tweaks.accent); // Derive secondary/accent shades from primary root.style.setProperty("--secondary", shade(tweaks.accent, -15)); root.style.setProperty("--accent", shade(tweaks.accent, 18)); root.style.setProperty("--font-display", `"${tweaks.displayFont}", "Saira", system-ui, sans-serif`); document.documentElement.dir = tweaks.rtl ? "rtl" : "ltr"; document.documentElement.lang = locale; }, [tweaks, locale]); // Open hero image swap via tweaks useEffect(() => { const heroImg = document.querySelector("[data-hero-img]"); if (heroImg) heroImg.src = HERO_IMAGES[tweaks.heroVariant] || HERO_IMAGES.huracan; }, [tweaks.heroVariant, route]); const handleSelect = (v) => { setVehicle(v); setRoute("vehicle"); window.scrollTo({top:0}); }; const handleBook = (v) => { setBookingVehicle(v); setBookingOpen(true); }; const handlePickCategory = (cat) => { setInitialCategory(cat); setRoute("fleet"); window.scrollTo({top:0}); }; return (
{route === "home" && ( <> )} {route === "fleet" && } {route === "categories" && } {route === "vehicle" && vehicle && setRoute("fleet")} onBook={handleBook}/>} {route === "contact" && } {route === "how" && } {route === "about" && } {route === "longterm" && } {route === "corporate" && }
); } function LeadPlaceholder({ kind }) { const meta = kind === "long-term" ? { title:"Long-term rental", kicker:"Weekly · Monthly · Subscription", body:"The longer the rental, the lower the daily rate. Tell us your dates and we'll match you to the right vehicle with a tailored monthly quote." } : { title:"Corporate & fleet", kicker:"Business accounts · VAT-invoiced", body:"Long-term commercial vehicle rental, executive fleets and chauffeur services. We work with hotels, production crews and family offices." }; return (
{meta.kicker}

{meta.title.split(" ").slice(0,-1).join(" ")} {meta.title.split(" ").slice(-1)}

{meta.body}

window.go("fleet")}>Browse fleet Talk on WhatsApp
); } // Lightweight palette helper - shifts a hex color's lightness function shade(hex, percent) { const num = parseInt(hex.slice(1), 16); const r = Math.min(255, Math.max(0, (num >> 16) + percent * 2.55)); const g = Math.min(255, Math.max(0, ((num >> 8) & 0xff) + percent * 2.55)); const b = Math.min(255, Math.max(0, (num & 0xff) + percent * 2.55)); return "#" + [r,g,b].map(x => Math.round(x).toString(16).padStart(2, "0")).join(""); } ReactDOM.createRoot(document.getElementById("root")).render();