import Link from "next/link" import { BookOpen, Search, Bell, Settings } from "lucide-react" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar" import { useFamily } from "@/context/family-context" import { useState, useRef, useEffect } from "react" import { useRouter } from "next/navigation" export function SiteHeader() { const { searchMembers, searchResults } = useFamily() const [searchQuery, setSearchQuery] = useState("") const [showResults, setShowResults] = useState(false) const searchRef = useRef(null) const router = useRouter() // 点击外部关闭搜索结果 useEffect(() => { function handleClickOutside(event: MouseEvent) { if (searchRef.current && !searchRef.current.contains(event.target as Node)) { setShowResults(false) } } document.addEventListener("mousedown", handleClickOutside) return () => document.removeEventListener("mousedown", handleClickOutside) }, []) const handleSearch = (query: string) => { setSearchQuery(query) searchMembers(query) setShowResults(query.length > 0) } const handleSelectMember = (memberId: string) => { router.push(`/members/${memberId}`) setSearchQuery("") setShowResults(false) } return (
华夏谱 (HuaXiaPu)
handleSearch(e.target.value)} className="h-9 w-64 rounded-full bg-muted pl-9 text-sm focus-visible:ring-primary" /> {/* 搜索结果下拉框 */} {showResults && searchResults.length > 0 && (
{searchResults.map((member) => ( ))}
)} {/* 无结果提示 */} {showResults && searchQuery && searchResults.length === 0 && (
未找到匹配的成员
)}
) }