"use client"; import Link from "next/link"; import { usePathname, useRouter } from "next/navigation"; import { Flame, Heart, LogOut, Palette, Settings, Sparkles, User, UserCog } from "lucide-react"; import { NotificationBell } from "@/components/notification-bell"; import { ThemeToggle } from "@/components/theme-toggle"; import { BrandMark } from "@/components/brand-mark"; import { useRealtimeGateway } from "@/hooks/use-realtime"; import { useLiveUser } from "@/hooks/use-live-user"; import { useAuth } from "@/lib/auth-store"; import { http } from "@/lib/api"; import { heartsOf, hasInfiniteHearts, MAX_HEARTS, INFINITE_HEARTS_LABEL } from "@/lib/hearts"; import { useState } from "react"; import { AvatarStudio } from "@/components/avatar-studio"; import { UserAvatar, avatarPaletteOf } from "@/components/ui/user-avatar"; import { Dialog, DialogContent, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Button } from "@/components/ui/button"; import { cn, formatFaNumber } from "@/lib/utils"; import { isVerifiedRole, VerifiedBadge } from "@/components/verified-badge"; const navLinks = [ { href: "/cap", label: "درخت مهارت" }, { href: "/unwrap", label: "مرکز" }, { href: "/leaderboard", label: "لیگ‌ها" }, ]; export function Navbar() { const router = useRouter(); const pathname = usePathname(); const user = useAuth((s) => s.user); const liveUser = useLiveUser(); useRealtimeGateway(); const [studioOpen, setStudioOpen] = useState(false); const locked = !!liveUser?.isLocked && !hasInfiniteHearts(liveUser.role); const infiniteHearts = hasInfiniteHearts(liveUser?.role); const effHearts = heartsOf(liveUser); const logout = () => { const { refreshToken, clear: clearAuth } = useAuth.getState(); void http.post("/api/auth/logout", refreshToken ? { refreshToken } : {}).catch(() => undefined); clearAuth(); router.replace("/"); }; // Guest chrome: home + login only if (!user) { return (
{pathname !== "/login" && ( )}
); } return (
{!locked && ( )}
{liveUser && ( <>
{formatFaNumber(liveUser.streakCurrent)} {formatFaNumber(liveUser.xp)} {infiniteHearts ? ( {INFINITE_HEARTS_LABEL} ) : ( <> {formatFaNumber(effHearts)}/{formatFaNumber(MAX_HEARTS)} )}

{liveUser.name} {isVerifiedRole(liveUser.role) && }

{liveUser.email}

{roleLabel(liveUser.role)}

router.push("/profile")}> پروفایل من router.push("/settings")}> تنظیمات setStudioOpen(true)}> ویرایش آواتار {liveUser.role === "admin" && ( router.push("/admin")}> پنل مدیریت )} {liveUser.role === "mentor" && ( router.push("/admin")}> پنل منتور )} خروج
ویرایش آواتار setStudioOpen(false)} /> )}
); } function roleLabel(role: string): string { if (role === "admin") return "ادمین"; if (role === "mentor") return "منتور"; return "هنرجو"; }