"use client"; import Link from "next/link"; import { useTheme } from "next-themes"; import { useAppSelector, useAppDispatch } from "@/lib/hooks"; import { logout } from "@/lib/features/auth/authSlice"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { Sun, Moon, LogOut, User, LayoutDashboard, Menu } from "lucide-react"; import { Sheet, SheetContent, SheetTrigger } from "@/components/ui/sheet"; import { useState, useEffect } from "react"; import { getAvatarUrl } from "@/lib/utils"; export function Header() { const { setTheme, theme } = useTheme(); const dispatch = useAppDispatch(); const { isAuthenticated, user } = useAppSelector((state) => state.auth); const [mounted, setMounted] = useState(false); // Prevent hydration mismatch useEffect(() => { setMounted(true); }, []); const handleLogout = () => { dispatch(logout()); }; if (!mounted) { return ( NextGoBlog Blog Hakkında Giriş Yap Kayıt Ol ) } return ( {/* Desktop Interface */} NextGoBlog Blog Hakkında {/* Mobile Interface */} Toggle Menu NextGoBlog Blog Hakkında {/* Right Side */} setTheme(theme === "dark" ? "light" : "dark")} > Toggle theme {isAuthenticated ? ( {user?.username?.slice(0, 2).toUpperCase()} {user?.username} {user?.email} {user?.roles?.some((r: any) => r.name === "admin") && ( Admin Panel )} Profil Çıkış Yap ) : ( Giriş Yap Kayıt Ol )} ); }
{user?.username}
{user?.email}