import { Search, X } from 'lucide-react' import { SetStateAction } from 'react' import { Button, cn, Select_Shadcn_, SelectContent_Shadcn_, SelectGroup_Shadcn_, SelectItem_Shadcn_, SelectSeparator_Shadcn_, SelectTrigger_Shadcn_, SelectValue_Shadcn_, Tooltip, TooltipContent, TooltipTrigger, } from 'ui' import { Input } from 'ui-patterns/DataInputs/Input' interface UsersSearchProps { search: string searchInvalid: boolean specificFilterColumn: 'id' | 'email' | 'phone' | 'freeform' setSearch: (value: SetStateAction) => void setFilterKeywords: (value: string) => void setSpecificFilterColumn: (value: 'id' | 'email' | 'phone' | 'freeform') => void } export const UsersSearch = ({ search, searchInvalid, specificFilterColumn, setSearch, setFilterKeywords, setSpecificFilterColumn, }: UsersSearchProps) => { return (
setSpecificFilterColumn(v as typeof specificFilterColumn)} > User ID Email address Phone number Unified search Search by all columns at once, including mid-string search. May impact database performance if you have many users. 1 && 'pr-6' )} placeholder={ specificFilterColumn === 'freeform' ? 'Search by user ID, email, phone or name' : `Search by ${specificFilterColumn === 'id' ? 'User ID' : specificFilterColumn === 'email' ? 'Email' : 'Phone'}` } value={search} onChange={(e) => { const value = e.target.value.replace(/\s+/g, '').toLowerCase() setSearch(value) }} onKeyDown={(e) => { if (e.code === 'Enter' || e.code === 'NumpadEnter') { setSearch((s) => { if (s && specificFilterColumn === 'phone' && !s.startsWith('+')) { return `+${s}` } else { return s } }) if (!searchInvalid) setFilterKeywords(search.trim().toLocaleLowerCase()) } }} actions={ search ? (
) }