"use client" import { useState } from "react" import { useAuth } from "@/contexts/auth-context" import { Button } from "@/components/ui/button" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar" import { User, BarChart3, Settings, LogOut, Code, Shield, Upload } from "lucide-react" import { LoginDialog } from "./login-dialog" import { RegisterDialog } from "./register-dialog" import { ForgotPasswordDialog } from "./forgot-password-dialog" import { ProfileDialog } from "./profile-dialog" import { ActivityRecordsDialog } from "./activity-records-dialog" import { SettingsDialog } from "./settings-dialog" import { AppSubmissionDialog } from "../app-submission-dialog" export function UserMenu() { const { user, logout, canAccessAdmin, canSubmitApp } = useAuth() const [loginOpen, setLoginOpen] = useState(false) const [registerOpen, setRegisterOpen] = useState(false) const [forgotPasswordOpen, setForgotPasswordOpen] = useState(false) const [profileOpen, setProfileOpen] = useState(false) const [activityOpen, setActivityOpen] = useState(false) const [settingsOpen, setSettingsOpen] = useState(false) const [showAppSubmission, setShowAppSubmission] = useState(false) const handleSwitchToRegister = () => { setLoginOpen(false) setRegisterOpen(true) } const handleSwitchToLogin = () => { setRegisterOpen(false) setForgotPasswordOpen(false) setLoginOpen(true) } const handleSwitchToForgotPassword = () => { setLoginOpen(false) setForgotPasswordOpen(true) } const getRoleText = (role: string) => { switch (role) { case "admin": return "管理員" case "developer": return "開發者" case "user": return "一般用戶" default: return role } } const getRoleIcon = (role: string) => { switch (role) { case "admin": return case "developer": return case "user": return default: return } } const getRoleColor = (role: string) => { switch (role) { case "admin": return "bg-purple-100 text-purple-800" case "developer": return "bg-green-100 text-green-800" case "user": return "bg-blue-100 text-blue-800" default: return "bg-gray-100 text-gray-800" } } if (!user) { return ( <> setLoginOpen(true)} className="bg-gradient-to-r from-blue-600 to-purple-600 hover:from-blue-700 hover:to-purple-700 text-white" > 登入 > ) } return ( <> {user.name.charAt(0)} {user.name.charAt(0)} {user.name} {user.email} {user.department} {getRoleIcon(user.role)} {getRoleText(user.role)} {canAccessAdmin() && ( <> window.open("/admin", "_blank")}> 管理後台 > )} {canSubmitApp() && ( <> setShowAppSubmission(true)}> 提交應用 > )} setProfileOpen(true)}> 個人資料 setActivityOpen(true)}> 活動紀錄 setSettingsOpen(true)}> 設定 登出 > ) }
{user.name}
{user.email}