"use client";
import * as React from "react";
import Link from "next/link";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { Avatar, AvatarImage, AvatarFallback } from "@/components/ui/avatar";
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuLabel,
DropdownMenuSeparator,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
import {
NavigationMenu,
NavigationMenuContent,
NavigationMenuItem,
NavigationMenuLink,
NavigationMenuList,
NavigationMenuTrigger,
navigationMenuTriggerStyle,
} from "@/components/ui/navigation-menu";
import { SearchIcon, BellIcon, Menu } from "lucide-react";
import { useParams, usePathname } from "next/navigation";
import { cn } from "@/lib/utils";
import Image from "next/image";
import {
mainNav,
additionalNav,
additional2Nav,
procurementNav,
salesNav,
engineeringNav,
MenuSection,
MenuItem,
mainNavVendor,
additionalNavVendor
} from "@/config/menuConfig";
import { MobileMenu } from "./MobileMenu";
import { CommandMenu } from "./command-menu";
import { useSession, signOut } from "next-auth/react";
import GroupedMenuRenderer from "./GroupedMenuRender";
import { useActiveMenus, filterActiveMenus, filterActiveAdditionalMenus } from "@/hooks/use-active-menus";
import { NotificationDropdown } from "./NotificationDropdown";
export function Header() {
const params = useParams();
const lng = params?.lng as string;
const pathname = usePathname();
const { data: session } = useSession();
const { activeMenus, isLoading } = useActiveMenus();
console.log(session)
const userName = session?.user?.name || "";
const domain = session?.user?.domain || "";
const initials = userName
.split(" ")
.map((word) => word[0]?.toUpperCase())
.join("");
const [isMobileMenuOpen, setIsMobileMenuOpen] = React.useState(false);
const toggleMobileMenu = () => {
setIsMobileMenuOpen(!isMobileMenuOpen);
};
// 도메인별 메뉴 및 브랜딩 정보 가져오기
const getDomainConfig = (pathname: string) => {
if (pathname?.includes("/partners")) {
return {
main: mainNavVendor,
additional: additionalNavVendor,
logoHref: `/${lng}/partners`,
brandName: "eVCP Partners",
basePath: `/${lng}/partners`
};
}
if (pathname?.includes("/procurement")) {
return {
main: procurementNav,
additional: additional2Nav,
logoHref: `/${lng}/procurement`,
brandName: "eVCP 구매관리",
basePath: `/${lng}/procurement`
};
}
if (pathname?.includes("/sales")) {
return {
main: salesNav,
additional: additional2Nav,
logoHref: `/${lng}/sales`,
brandName: "eVCP 기술영업",
basePath: `/${lng}/sales`
};
}
if (pathname?.includes("/engineering")) {
return {
main: engineeringNav,
additional: additional2Nav,
logoHref: `/${lng}/engineering`,
brandName: "eVCP 설계관리",
basePath: `/${lng}/engineering`
};
}
// 기본값: /evcp (전체 메뉴)
return {
main: mainNav,
additional: additionalNav,
logoHref: `/${lng}/evcp`,
brandName: "eVCP 삼성중공업",
basePath: `/${lng}/evcp`
};
};
const { main: originalMain, additional: originalAdditional, logoHref, brandName, basePath } = getDomainConfig(pathname);
// 활성 메뉴만 필터링 (로딩 중이거나 에러 시에는 모든 메뉴 표시)
const main = isLoading ? originalMain : filterActiveMenus(originalMain, activeMenus);
const additional = isLoading ? originalAdditional : filterActiveAdditionalMenus(originalAdditional, activeMenus);
return (
<>
{section.items.map((item) => (
{children}
)}