import { MagnifyingGlassIcon, UsersIcon, XMarkIcon } from '@heroicons/react/24/outline' import type { UserCandidate } from '../hooks/usePoolManageState' type Translator = (key: string, params?: Record) => string type Props = { t: Translator searchOpen: boolean query: string setQuery: (value: string) => void loading: boolean error: string hasSearched: boolean candidates: UserCandidate[] selectedCandidates: Set savingMembers: boolean onClose: () => void onSearch: () => Promise onClear: () => void onToggleCandidate: (id: string) => void onAddSingle: (candidate: UserCandidate) => Promise onAddSelected: () => Promise } export default function PoolSearchModal({ t, searchOpen, query, setQuery, loading, error, hasSearched, candidates, selectedCandidates, savingMembers, onClose, onSearch, onClear, onToggleCandidate, onAddSingle, onAddSelected, }: Props) { if (!searchOpen) return null return (

{t('autofix.ka6be28d2')}

{ event.preventDefault() void onSearch() }} className="px-6 py-4 grid grid-cols-1 md:grid-cols-5 gap-3 border-b border-slate-100" >
setQuery(event.target.value)} placeholder={t('autofix.kb35549bb')} className="w-full rounded-md bg-slate-50 border border-slate-300 text-sm text-slate-900 placeholder-slate-400 pl-8 pr-3 py-2 focus:ring-2 focus:ring-slate-900 focus:border-transparent transition" />
{t('autofix.ke4c4a858')}
{error &&
{error}
} {!error && query.trim().length < 3 && (
{t('autofix.kb87eb38b')}
)} {!error && hasSearched && loading && candidates.length === 0 && (
    {Array.from({ length: 5 }).map((_, index) => (
  • ))}
)} {!error && hasSearched && !loading && candidates.length === 0 && (
{t('autofix.k54f49724')}
)} {!error && candidates.length > 0 && (
    {candidates.map((candidate) => (
  • ))}
)} {loading && candidates.length > 0 && (
)}
{selectedCandidates.size > 0 ? t('autofix.k3ab09ef0').replace('{count}', String(selectedCandidates.size)) : t('autofix.k2042d9f2')}
) }