import { Heart, Wallet } from "lucide-react"; import { useEffect, useRef, useState } from "react"; import { Link } from "react-router-dom"; import { useI18n } from "../i18n"; import { useLocalizedPath } from "../useLocalizedPath"; import { shortenAddress, useWallet } from "./WalletProvider"; export function WalletButton({ compact = false, onOpenLogin, }: { compact?: boolean; onOpenLogin?: () => void; }) { const { t } = useI18n(); const lp = useLocalizedPath(); const wallet = useWallet(); const [open, setOpen] = useState(false); const rootRef = useRef(null); useEffect(() => { if (!open) return; const closeOnOutside = (event: MouseEvent | TouchEvent) => { if (!rootRef.current?.contains(event.target as Node)) setOpen(false); }; const closeOnEscape = (event: KeyboardEvent) => { if (event.key === "Escape") setOpen(false); }; document.addEventListener("mousedown", closeOnOutside); document.addEventListener("touchstart", closeOnOutside); window.addEventListener("keydown", closeOnEscape); return () => { document.removeEventListener("mousedown", closeOnOutside); document.removeEventListener("touchstart", closeOnOutside); window.removeEventListener("keydown", closeOnEscape); }; }, [open]); if (wallet.status === "loggedIn" && wallet.address) { if (compact) { return (
{shortenAddress(wallet.address)}
); } return (
{open ? (
{wallet.address}
setOpen(false)} className="flex w-full items-center gap-2 rounded-xl px-3 py-2 text-left text-sm font-medium text-neutral-100 transition hover:bg-ark-gold/10 hover:text-ark-gold" > {t("favorites")}
) : null}
); } return ( ); }