"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, useSearchParams } from "next/navigation";
import { cn } from "@/lib/utils";
import Image from "next/image";
import { MobileMenu } from "./MobileMenu";
import { CommandMenu } from "./command-menu";
import { useSession, signOut } from "next-auth/react";
import { NotificationDropdown } from "./NotificationDropdown";

// 간단한 메뉴 배열
const simpleMenus = [
    { title: "발주처 목록", href: "/evcp/data-room/owner-companies" },
    { title: "데이터룸", href: "/evcp/data-room" }
];
export function HeaderDataRoom() {
    const params = useParams();
    const lng = params?.lng as string;
    const pathname = usePathname();
    const { data: session } = useSession();

    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);
    };

    return (
        <>
            <header className="border-grid sticky top-0 z-40 w-full border-b bg-slate-100 backdrop-blur supports-[backdrop-filter]:bg-background/60">
                <div className="container-wrapper">
                    <div className="container flex h-14 items-center">
                        {/* 햄버거 메뉴 버튼 (모바일) */}
                        <Button
                            onClick={toggleMobileMenu}
                            variant="ghost"
                            className="-ml-2 mr-2 h-8 w-8 px-0 text-base hover:bg-transparent focus-visible:bg-transparent focus-visible:ring-0 focus-visible:ring-offset-0 md:hidden"
                        >
                            <svg
                                xmlns="http://www.w3.org/2000/svg"
                                fill="none"
                                viewBox="0 0 24 24"
                                strokeWidth="1.5"
                                stroke="currentColor"
                                className="!size-6"
                            >
                                <path
                                    strokeLinecap="round"
                                    strokeLinejoin="round"
                                    d="M3.75 9h16.5m-16.5 6.75h16.5"
                                />
                            </svg>
                            <span className="sr-only">메뉴 토글</span>
                        </Button>

                        {/* 로고 영역 */}
                        <div className="mr-4 flex-shrink-0 flex items-center gap-2 lg:mr-6">
                            <Link href={`/${lng}/evcp`} className="flex items-center gap-2">
                                <Image
                                    className="dark:invert"
                                    src="/images/vercel.svg"
                                    alt="EVCP Logo"
                                    width={20}
                                    height={20}
                                />
                                <span className="hidden font-bold lg:inline-block">
                                    EVCP
                                </span>
                            </Link>
                        </div>

                        {/* 네비게이션 메뉴 - 간단한 배열 */}
                        <div className="hidden md:block flex-1 min-w-0">
                            <nav className="flex items-center space-x-6">
                                {simpleMenus.map((menu) => (
                                    <Link
                                        key={menu.href}
                                        href={`/${lng}${menu.href}`}
                                        className="text-sm font-medium transition-colors hover:text-primary"
                                    >
                                        {menu.title}
                                    </Link>
                                ))}
                            </nav>
                        </div>

                        {/* 우측 영역 */}
                        <div className="ml-auto flex flex-shrink-0 items-center space-x-2">
                            {/* 데스크탑에서는 CommandMenu, 모바일에서는 검색 아이콘만 */}

                            {/* 알림 버튼 */}
                            <NotificationDropdown />

                            {/* 사용자 메뉴 */}
                            <DropdownMenu>
                                <DropdownMenuTrigger asChild>
                                    <Avatar className="cursor-pointer h-8 w-8">
                                        <AvatarImage src={`${session?.user?.image}` || "/user-avatar.jpg"} alt="User Avatar" />
                                        <AvatarFallback>
                                            {initials || "?"}
                                        </AvatarFallback>
                                    </Avatar>
                                </DropdownMenuTrigger>
                                <DropdownMenuContent className="w-48" align="end">
                                    <DropdownMenuLabel>내 계정</DropdownMenuLabel>
                                    <DropdownMenuSeparator />
                                    <DropdownMenuItem asChild>
                                        <Link href={`/${lng}/evcp/settings`}>설정</Link>
                                    </DropdownMenuItem>
                                    <DropdownMenuSeparator />
                                    <DropdownMenuItem onSelect={() => signOut({ callbackUrl: `/${lng}/${domain}` })}>
                                        로그아웃
                                    </DropdownMenuItem>
                                </DropdownMenuContent>
                            </DropdownMenu>
                        </div>
                    </div>
                </div>

                {/* 모바일 메뉴 */}
                {isMobileMenuOpen && (
                    <MobileMenu
                        lng={lng}
                        onClose={toggleMobileMenu}
                        activeMenus={[]}
                        domainMain={simpleMenus}
                        domainAdditional={[]}
                        t={(key: string) => key}
                    />
                )}
            </header>
        </>
    );
}

const ListItem = React.forwardRef<
    React.ElementRef<"a">,
    React.ComponentPropsWithoutRef<"a">
>(({ className, title, children, ...props }, ref) => {
    return (
        <li>
            <NavigationMenuLink asChild>
                <a
                    ref={ref}
                    className={cn(
                        "block select-none space-y-1 rounded-md p-3 leading-none no-underline outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground",
                        className
                    )}
                    {...props}
                >
                    <div className="text-sm font-medium leading-none">{title}</div>
                    {children && (
                        <p className="line-clamp-2 text-sm leading-snug text-muted-foreground">
                            {children}
                        </p>
                    )}
                </a>
            </NavigationMenuLink>
        </li>
    );
});
ListItem.displayName = "ListItem";


export function RouteLogger() {
    const path = usePathname();
    const qs = useSearchParams().toString();
    React.useEffect(() => {
        console.log("[URL]", path + (qs ? "?" + qs : ""));
    }, [path, qs]);
    return null;
}