"use client"; import { LogOut, User } from "lucide-react"; import Link from "next/link"; import { useLocale, useTranslations } from "next-intl"; import { useEffect, useState } from "react"; import { Avatar, AvatarFallback } from "@/components/ui/avatar"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { NavigationMenu, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, navigationMenuTriggerStyle, } from "@/components/ui/navigation-menu"; import { WordRotate } from "@/components/ui/word-rotate"; import { useSession } from "@/lib/hooks/use-session"; import { cn } from "@/lib/utils"; import { LoginDialog } from "./auth/login-dialog"; import { RegisterDialog } from "./auth/register-dialog"; import { LanguageSwitcher } from "./language-switcher"; import { MessagesBell } from "./messages/MessagesBell"; import { MobileMenu } from "./mobile-menu"; import { NotificationBell } from "./notifications/NotificationBell"; import { ThemeToggle } from "./theme-toggle"; export default function Header() { const t = useTranslations("header.nav"); const locale = useLocale(); const { user, isAuthenticated, isLoading, logout } = useSession(); const [loginDialogOpen, setLoginDialogOpen] = useState(false); const [registerDialogOpen, setRegisterDialogOpen] = useState(false); const [mounted, setMounted] = useState(false); // Evitar hidratação mismatch useEffect(() => { setMounted(true); }, []); const links = [ { href: `/${locale}/library`, label: "Library" }, { href: `/${locale}/market`, label: t("market") }, { href: `/${locale}/sobre`, label: t("about") }, { href: `/${locale}/precos`, label: t("prices") }, { href: `/${locale}/apoiar`, label: t("support"), highlight: true }, ]; const navLinks = [ ...links, ...(isAuthenticated && user?.userId === 1 ? [{ href: `/${locale}/admin`, label: "Admin" }] : []), ]; const handleLogout = async () => { await logout(); }; return (
{/* Logo */}
{/* Desktop Navigation */} {navLinks.map(({ href, label, highlight }) => ( {label} ))} {/* Desktop Controls */}
{/* Messages */} {mounted && isAuthenticated && } {/* Notifications */} {mounted && isAuthenticated && } {mounted && isAuthenticated && user?.subscriptionTier && ( {user.subscriptionTier.slug} )} {/* Auth Section */} {!mounted ? ( // Placeholder durante SSR para evitar mismatch
) : isLoading ? (
) : isAuthenticated && user ? (

{user.username}

{user.characterName && (

{user.characterName}

)}

{user.email}

Perfil Sair
) : (
)}
{/* Mobile Menu */}
{/* Login Dialog */} {/* Register Dialog */}
); }