"use client"; import { useState, useEffect, useCallback } from "react"; import Link from "next/link"; import Image from "next/image"; import { X, Menu, Search, Store, LogOut, User as UserIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import Logo from "@/public/logo.png"; import CategoryMenu from "./ui/CategoryMenu"; import SearchBar from "./ui/SearchBar"; import AuthDialog from "./ui/AuthDialog"; import ActionButtons from "./ui/ActionButtons"; import LanguageSelector from "./ui/LanguageSelector"; import { useAuthStatus, useLogout } from "@/lib/hooks/useAuth"; import { useTranslations } from "next-intl"; interface HeaderProps { locale?: string; } export default function Header({ locale = "ru" }: HeaderProps) { const [isClient, setIsClient] = useState(false); const [isCategoryOpen, setIsCategoryOpen] = useState(false); const [isMobileSearchOpen, setIsMobileSearchOpen] = useState(false); const [isLoginOpen, setIsLoginOpen] = useState(false); const t = useTranslations(); const { isAuthenticated, isLoading } = useAuthStatus(); const { mutate: logout, isPending: isLoggingOut } = useLogout(); useEffect(() => { setIsClient(true); }, []); const handleAuthClick = useCallback(() => { if (isAuthenticated) { window.location.href = `/${locale}/me`; } else { setIsLoginOpen(true); } }, [isAuthenticated, locale]); const handleLogout = useCallback(() => { logout(); }, [logout]); const toggleCategoryMenu = useCallback(() => { setIsCategoryOpen((prev) => !prev); }, []); const closeCategoryMenu = useCallback(() => { setIsCategoryOpen(false); }, []); if (!isClient) return null; return ( <>
Logo
setIsMobileSearchOpen(false)} searchPlaceholder={t("common.search")} locale={locale} /> setIsLoginOpen(false)} /> ); }