import { useState, useRef, useEffect } from 'react' import { Users, Check, X } from 'lucide-react' /** * 多选成员选择器 * 支持搜索、已选 Tag 展示、点击外部关闭 */ export default function MemberSelector({ members = [], selected = [], onChange }) { const [open, setOpen] = useState(false) const [search, setSearch] = useState('') const ref = useRef(null) // 点击外部关闭 useEffect(() => { function handler(e) { if (ref.current && !ref.current.contains(e.target)) setOpen(false) } document.addEventListener('mousedown', handler) return () => document.removeEventListener('mousedown', handler) }, []) const filtered = members.filter((m) => { if (!search) return true return ( m.accountName?.includes(search) || m.groupNickname?.includes(search) || m.platformId?.includes(search) ) }) const toggle = (id) => { if (selected.includes(id)) { onChange(selected.filter((s) => s !== id)) } else { onChange([...selected, id]) } } const getMember = (id) => members.find((m) => m.platformId === id) return (