"use client" import { Bell, Gamepad2, LogOut, Menu, MessageSquare, Search, Settings, ShoppingBag, User, Wallet, } from "lucide-react" import Link from "next/link" import { usePathname, useRouter } from "next/navigation" import { useState } from "react" import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { Input } from "@/components/ui/input" import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger } from "@/components/ui/sheet" import { currentUser, mockNotifications } from "@/lib/mock-data" import type { UserRole } from "@/lib/types" import { cn } from "@/lib/utils" import { useAuthStore } from "@/store/auth" const roleLabels: Record = { consumer: "消费者", player: "打手", owner: "店主", } const navLinks = [ { href: "/", label: "首页" }, { href: "/community", label: "社区" }, { href: "/orders", label: "订单" }, { href: "/chat", label: "消息" }, ] export function Header() { const [mobileOpen, setMobileOpen] = useState(false) const pathname = usePathname() const router = useRouter() const { isAuthenticated, currentRole, switchRole, logout } = useAuthStore() const unreadCount = mockNotifications.filter((n) => !n.read).length const handleSearch = (e: React.FormEvent) => { e.preventDefault() const formData = new FormData(e.currentTarget) const q = formData.get("q") as string if (q.trim()) router.push(`/search?q=${encodeURIComponent(q.trim())}`) } return (
聚玩
{isAuthenticated ? ( <> 切换身份 {(Object.entries(roleLabels) as [UserRole, string][]).map(([role, label]) => ( switchRole(role)} className={cn(currentRole === role && "bg-accent")} > {label} ))} {currentUser.nickname} {currentRole === "player" && ( 个人主页 )} 我的订单 消息 钱包 {(currentRole === "player" || currentRole === "owner") && ( 管理后台 )} 设置 退出登录 ) : (
)} 聚玩
{isAuthenticated && (
{currentUser.nickname[0]}

{currentUser.nickname}

{roleLabels[currentRole]}

)} {isAuthenticated && (

切换身份

{(Object.entries(roleLabels) as [UserRole, string][]).map(([role, label]) => ( ))}
)} {!isAuthenticated && (
)}
) }