// Cars search panel — additive. Renders inside the existing glass search panel when // mode === "cars". Accent: --grass. Cars are a MOCK subgraph (Duffel has no car API), // so results come from EHT_API's client-side fallback until a real provider is wired. const CarSearchPanel = () => { const [pickupOpen, setPickupOpen] = useState(false); const [dropoffOpen, setDropoffOpen] = useState(false); const [pickup, setPickup] = useState(AIRPORTS.find(a => a.code === "LAX") || AIRPORTS[0]); const [dropoff, setDropoff] = useState(null); // null = same as pickup const [pickupDate, setPickupDate] = useState(""); const [dropoffDate, setDropoffDate] = useState(""); const [age, setAge] = useState(30); const [loading, setLoading] = useState(false); const [results, setResults] = useState(null); const [booking, setBooking] = useState(null); const choices = useMemo(() => AIRPORTS.map(a => ({ code: a.code, city: a.city, country: a.name })), []); async function runSearch() { setLoading(true); setResults(null); const list = await EHT_API.searchCars({ pickupLocation: `${pickup.city} (${pickup.code})`, dropoffLocation: dropoff ? `${dropoff.city} (${dropoff.code})` : `${pickup.city} (${pickup.code})`, pickupDate: pickupDate ? pickupDate + "T10:00" : undefined, dropoffDate: dropoffDate ? dropoffDate + "T10:00" : undefined, driverAge: age, }); setLoading(false); setResults(list); } const dropdownOpen = pickupOpen || dropoffOpen; return (