import { type AccountFragment, AccountsOrderBy, type AccountsRequest, PageSize, useAccountsLazyQuery } from "@hey/indexer"; import type { ChangeEvent } from "react"; import Loader from "@/components/Shared/Loader"; import { Card, Input } from "@/components/Shared/UI"; import SmallSingleAccount from "./SmallSingleAccount"; interface SearchAccountsProps { error?: boolean; hideDropdown?: boolean; onChange: (event: ChangeEvent) => void; onAccountSelected: (account: AccountFragment) => void; placeholder?: string; value: string; } const SearchAccounts = ({ error = false, hideDropdown = false, onChange, onAccountSelected, placeholder = "Search…", value }: SearchAccountsProps) => { const [searchAccounts, { data, loading }] = useAccountsLazyQuery(); const handleSearch = (event: ChangeEvent) => { onChange(event); const keyword = event.target.value; const request: AccountsRequest = { filter: { searchBy: { localNameQuery: keyword } }, orderBy: AccountsOrderBy.BestMatch, pageSize: PageSize.Fifty }; searchAccounts({ variables: { request } }); }; const accounts = data?.accounts?.items; return (
{!hideDropdown && value.length > 0 && (
{loading ? ( ) : accounts && accounts.length > 0 ? ( accounts.slice(0, 7).map((account) => (
onAccountSelected(account)} >
)) ) : (
No matching users
)}
)}
); }; export default SearchAccounts;