import { q } from "@thorium/context/AppContext"; import { useStation } from "@thorium/routes/station/useStation"; import { Icon } from "@thorium/ui/Icon"; import SearchableInput, { DefaultResultLabel } from "@thorium/ui/SearchableInput"; import { useShipMapStore } from "./useShipMapStore"; export function CargoSearchInput() { const { shipId } = useStation(); return ( className="cargo-search" queryKey="cargo" placeholder="Search for rooms, cargo, and systems" getOptions={async ({ queryKey, signal }) => { const result = await q.cargoControl.search.netRequest( { query: queryKey[1], shipId }, { signal }, ); return result; }} ResultLabel={({ active, result, selected }) => (

{result.name} {result.count ? ` (${result.count})` : ""}

{result.type !== "deck" && (

{[result.room, result.deck].filter(Boolean).join(", ")}

)}
)} setSelected={(value) => { if (!value) return; const { deckIndex, roomId } = value; useShipMapStore.setState({ deckIndex }); useShipMapStore.setState({ selectedRoomId: roomId || null }); }} displayValue={(item) => item?.name || ""} /> ); }