+
0}
+ aria-controls={listboxId}
+ aria-autocomplete="list"
+ autoComplete="off"
+ value={value}
+ placeholder={placeholder}
+ onChange={(e) => handleChange(e.target.value)}
+ onKeyDown={onKeyDown}
+ onFocus={() => value.trim().length >= 2 && suggestions.length > 0 && setOpen(true)}
+ onBlur={() => setTimeout(() => setOpen(false), 120)}
+ className="w-full h-9 px-3 rounded-md border border-ih-border bg-ih-bg-card text-[13px] focus:shadow-ih-focus outline-none"
+ />
+ {open && suggestions.length > 0 && (
+
+ {suggestions.map((s, i) => (
+ - {
+ e.preventDefault();
+ choose(s);
+ }}
+ onMouseEnter={() => setActive(i)}
+ className={`px-3 py-2 cursor-pointer text-[13px] ${i === active ? "bg-ih-primary-tint text-ih-primary" : "text-ih-fg-2"}`}
+ >
+ {s.mainText}
+ {s.secondaryText && {s.secondaryText}}
+
+ ))}
+
+ )}
+ {detailsFetcher.state === "loading" && (
+
{m.common_loading()}
+ )}
+
+ );
+}
diff --git a/app/components/address/GoogleMap.test.tsx b/app/components/address/GoogleMap.test.tsx
new file mode 100644
index 00000000..ffd1cb1d
--- /dev/null
+++ b/app/components/address/GoogleMap.test.tsx
@@ -0,0 +1,42 @@
+import { describe, it, expect, vi, beforeEach } from "vitest";
+import { render } from "@testing-library/react";
+
+// Prevent the real SDK loader from injecting a