"use client";

import { useEffect, useState } from "react";
import { useSession, signOut } from "next-auth/react";
import Link from "next/link";

type DropdownName =
  | "about"
  | "experience"
  | "certification"
  | "services"
  | "account"
  | null;

export default function Navbar() {
  const { data: session } = useSession();
  const [scrolled, setScrolled] = useState(false);
  const [mobileOpen, setMobileOpen] = useState(false);
  const [openDropdown, setOpenDropdown] =
    useState<DropdownName>(null);

  useEffect(() => {
    const handleScroll = () => {
      setScrolled(window.scrollY > 30);
    };

    handleScroll();

    window.addEventListener("scroll", handleScroll);

    return () => {
      window.removeEventListener("scroll", handleScroll);
    };
  }, []);

  // Tutup navbar dan dropdown
  const closeNavbar = () => {
    setMobileOpen(false);
    setOpenDropdown(null);
  };

  // Toggle dropdown
  const toggleDropdown = (name: DropdownName) => {
    setOpenDropdown((current) =>
      current === name ? null : name
    );
  };

  // Tutup dropdown ketika klik di luar navbar
  useEffect(() => {
    const handleClickOutside = (event: MouseEvent) => {
      const target = event.target as HTMLElement;

      if (!target.closest(".main-navbar")) {
        setOpenDropdown(null);
      }
    };

    document.addEventListener(
      "mousedown",
      handleClickOutside
    );

    return () => {
      document.removeEventListener(
        "mousedown",
        handleClickOutside
      );
    };
  }, []);

  return (
    <nav
      className={`main-navbar navbar fixed-top ${
        scrolled ? "navbar-scrolled" : ""
      }`}
    >
      <div className="container navbar-container">

        {/* BRAND */}
        <Link
          href="/#home"
          className="navbar-brand-custom"
          onClick={closeNavbar}
        >
          <span className="brand-logo">
            <i className="bi bi-cpu-fill"></i>
          </span>

          <span className="brand-text">
            Global<span>ValueTech</span>
          </span>
        </Link>

        {/* MOBILE TOGGLE */}
        <button
          type="button"
          className={`navbar-toggle ${
            mobileOpen ? "active" : ""
          }`}
          onClick={() => {
            setMobileOpen((current) => !current);
            setOpenDropdown(null);
          }}
          aria-label="Toggle navigation"
          aria-expanded={mobileOpen}
        >
          <span></span>
          <span></span>
          <span></span>
        </button>

        {/* NAVIGATION */}
        <div
          className={`navbar-menu ${
            mobileOpen ? "mobile-open" : ""
          }`}
        >
          <ul className="navbar-nav-custom">

            {/* HOME */}
            <li className="nav-item-custom">
              <Link
                href="/"
                className="nav-link-custom"
                onClick={closeNavbar}
              >
                <i className="bi bi-house-door"></i>
                <span>Home</span>
              </Link>
            </li>

            {/* ABOUT */}
            <li
              className={`nav-item-custom dropdown-custom ${
                openDropdown === "about"
                  ? "dropdown-active"
                  : ""
              }`}
            >
              <button
                type="button"
                className="nav-link-custom dropdown-trigger"
                onClick={() =>
                  toggleDropdown("about")
                }
                aria-expanded={
                  openDropdown === "about"
                }
              >
                <i className="bi bi-person"></i>
                <span>About</span>

                <i
                  className={`bi ${
                    openDropdown === "about"
                      ? "bi-chevron-up"
                      : "bi-chevron-down"
                  } dropdown-chevron`}
                ></i>
              </button>

              {openDropdown === "about" && (
                <div className="dropdown-panel">
                  <div className="dropdown-header">
                    <span className="dropdown-header-icon">
                      <i className="bi bi-person"></i>
                    </span>

                    <div>
                      <strong>About Me</strong>
                      <small>Learn more about me</small>
                    </div>
                  </div>

                  <div className="dropdown-divider-custom"></div>

                  <Link
                    href="/about"
                    className="dropdown-link"
                    onClick={closeNavbar}
                  >
                    <span className="dropdown-link-icon">
                      <i className="bi bi-person-circle"></i>
                    </span>

                    <span className="dropdown-link-content">
                      <strong>About</strong>
                      <small>Profile & introduction</small>
                    </span>

                    <i className="bi bi-arrow-right"></i>
                  </Link>

                  <Link
                    href="/education"
                    className="dropdown-link"
                    onClick={closeNavbar}
                  >
                    <span className="dropdown-link-icon">
                      <i className="bi bi-mortarboard"></i>
                    </span>

                    <span className="dropdown-link-content">
                      <strong>Education</strong>
                      <small>Academic background</small>
                    </span>

                    <i className="bi bi-arrow-right"></i>
                  </Link>

                  <Link
                    href="/skills"
                    className="dropdown-link"
                    onClick={closeNavbar}
                  >
                    <span className="dropdown-link-icon">
                      <i className="bi bi-code-slash"></i>
                    </span>

                    <span className="dropdown-link-content">
                      <strong>Skills</strong>
                      <small>Technical expertise</small>
                    </span>

                    <i className="bi bi-arrow-right"></i>
                  </Link>
                </div>
              )}
            </li>

            {/* BLOG */}
            <li className="nav-item-custom">
              <Link
                href="/blog"
                className="nav-link-custom"
                onClick={closeNavbar}
              >
                <i className="bi bi-journal-text"></i>
                <span>Blog</span>
              </Link>
            </li>

            {/* EXPERIENCE */}
            <li
              className={`nav-item-custom dropdown-custom ${
                openDropdown === "experience"
                  ? "dropdown-active"
                  : ""
              }`}
            >
              <button
                type="button"
                className="nav-link-custom dropdown-trigger"
                onClick={() =>
                  toggleDropdown("experience")
                }
                aria-expanded={
                  openDropdown === "experience"
                }
              >
                <i className="bi bi-briefcase"></i>
                <span>Experience</span>

                <i
                  className={`bi ${
                    openDropdown === "experience"
                      ? "bi-chevron-up"
                      : "bi-chevron-down"
                  } dropdown-chevron`}
                ></i>
              </button>

              {openDropdown === "experience" && (
                <div className="dropdown-panel">
                  <div className="dropdown-header">
                    <span className="dropdown-header-icon">
                      <i className="bi bi-briefcase"></i>
                    </span>

                    <div>
                      <strong>Experience</strong>
                      <small>Professional journey</small>
                    </div>
                  </div>

                  <div className="dropdown-divider-custom"></div>

                  <Link
                    href="/experience"
                    className="dropdown-link"
                    onClick={closeNavbar}
                  >
                    <span className="dropdown-link-icon">
                      <i className="bi bi-briefcase"></i>
                    </span>

                    <span className="dropdown-link-content">
                      <strong>Experience</strong>
                      <small>Work experience</small>
                    </span>

                    <i className="bi bi-arrow-right"></i>
                  </Link>

                  <Link
                    href="/projects"
                    className="dropdown-link"
                    onClick={closeNavbar}
                  >
                    <span className="dropdown-link-icon">
                      <i className="bi bi-kanban"></i>
                    </span>

                    <span className="dropdown-link-content">
                      <strong>Projects</strong>
                      <small>Selected projects</small>
                    </span>

                    <i className="bi bi-arrow-right"></i>
                  </Link>

                  <Link
                    href="/gallery"
                    className="dropdown-link"
                    onClick={closeNavbar}
                  >
                    <span className="dropdown-link-icon">
                      <i className="bi bi-images"></i>
                    </span>

                    <span className="dropdown-link-content">
                      <strong>Gallery</strong>
                      <small>Project documentation</small>
                    </span>

                    <i className="bi bi-arrow-right"></i>
                  </Link>
                </div>
              )}
            </li>

            {/* CERTIFICATION */}
            <li
              className={`nav-item-custom dropdown-custom ${
                openDropdown === "certification"
                  ? "dropdown-active"
                  : ""
              }`}
            >
              <button
                type="button"
                className="nav-link-custom dropdown-trigger"
                onClick={() =>
                  toggleDropdown("certification")
                }
                aria-expanded={
                  openDropdown === "certification"
                }
              >
                <i className="bi bi-award"></i>
                <span>Certification</span>

                <i
                  className={`bi ${
                    openDropdown === "certification"
                      ? "bi-chevron-up"
                      : "bi-chevron-down"
                  } dropdown-chevron`}
                ></i>
              </button>

              {openDropdown === "certification" && (
                <div className="dropdown-panel">
                  <div className="dropdown-header">
                    <span className="dropdown-header-icon">
                      <i className="bi bi-award"></i>
                    </span>

                    <div>
                      <strong>Certification</strong>
                      <small>Credentials & achievements</small>
                    </div>
                  </div>

                  <div className="dropdown-divider-custom"></div>

                  <Link
                    href="/certification"
                    className="dropdown-link"
                    onClick={closeNavbar}
                  >
                    <span className="dropdown-link-icon">
                      <i className="bi bi-patch-check"></i>
                    </span>

                    <span className="dropdown-link-content">
                      <strong>Certification</strong>
                      <small>Professional certifications</small>
                    </span>

                    <i className="bi bi-arrow-right"></i>
                  </Link>

                  <Link
                    href="/achievements"
                    className="dropdown-link"
                    onClick={closeNavbar}
                  >
                    <span className="dropdown-link-icon">
                      <i className="bi bi-trophy"></i>
                    </span>

                    <span className="dropdown-link-content">
                      <strong>Achievement</strong>
                      <small>Professional achievements</small>
                    </span>

                    <i className="bi bi-arrow-right"></i>
                  </Link>
                </div>
              )}
            </li>

            {/* SERVICES */}
<li
  className={`nav-item-custom dropdown-custom ${
    openDropdown === "services"
      ? "dropdown-active"
      : ""
  }`}
>
  <button
    type="button"
    className="nav-link-custom dropdown-trigger"
    onClick={() =>
      toggleDropdown("services")
    }
    aria-expanded={
      openDropdown === "services"
    }
  >
    <i className="bi bi-gear"></i>
    <span>Services</span>

    <i
      className={`bi ${
        openDropdown === "services"
          ? "bi-chevron-up"
          : "bi-chevron-down"
      } dropdown-chevron`}
    ></i>
  </button>

  {openDropdown === "services" && (
    <div className="dropdown-panel">
      <div className="dropdown-header">
        <span className="dropdown-header-icon">
          <i className="bi bi-gear"></i>
        </span>

        <div>
          <strong>Services</strong>
          <small>Services & contact</small>
        </div>
      </div>

      <div className="dropdown-divider-custom"></div>

      <Link
        href="/services"
        className="dropdown-link"
        onClick={closeNavbar}
      >
        <span className="dropdown-link-icon">
          <i className="bi bi-gear"></i>
        </span>

        <span className="dropdown-link-content">
          <strong>Services</strong>
          <small>Professional services</small>
        </span>

        <i className="bi bi-arrow-right"></i>
      </Link>

      <Link
        href="/contact-form"
        className="dropdown-link"
        onClick={closeNavbar}
      >
        <span className="dropdown-link-icon">
          <i className="bi bi-envelope"></i>
        </span>

        <span className="dropdown-link-content">
          <strong>Contact</strong>
          <small>Get in touch with me</small>
        </span>

        <i className="bi bi-arrow-right"></i>
      </Link>
    </div>
  )}
</li>



       {/* LOGIN / ACCOUNT */}
<li
  className={`nav-item-custom dropdown-custom ${
    openDropdown === "account"
      ? "dropdown-active"
      : ""
  }`}
>
  {session ? (
    <>
      <button
  type="button"
  className="login-button-custom"
  onClick={() => toggleDropdown("account")}
        aria-expanded={openDropdown === "account"}
      >
        <span>Hi, {session.user?.name}</span>

        <i
          className={`bi ${
            openDropdown === "account"
              ? "bi-chevron-up"
              : "bi-chevron-down"
          } dropdown-chevron`}
        ></i>
      </button>

      {openDropdown === "account" && (
        <div className="dropdown-panel">

          <Link
            href="/articles/create"
            className="dropdown-link"
            onClick={closeNavbar}
          >
            <span className="dropdown-link-icon">
              <i className="bi bi-plus-circle"></i>
            </span>

            <span className="dropdown-link-content">
              <strong>Add Article</strong>
              <small>Create a new article</small>
            </span>

            <i className="bi bi-arrow-right"></i>
          </Link>

          <Link 
  href="/articles/edit"
  className="dropdown-link"
  onClick={closeNavbar}
>
            <span className="dropdown-link-icon">
              <i className="bi bi-pencil-square"></i>
            </span>

            <span className="dropdown-link-content">
              <strong>Edit My Articles</strong>
              <small>Manage your articles</small>
            </span>

            <i className="bi bi-arrow-right"></i>
          </Link>

          <button
  type="button"
  className="dropdown-link w-100 border-0 bg-transparent text-start"
  onClick={() => signOut({ callbackUrl: "/" })}
>
            <span className="dropdown-link-icon">
              <i className="bi bi-box-arrow-right"></i>
            </span>

            <span className="dropdown-link-content">
              <strong>Logout</strong>
              <small>Sign out of your account</small>
            </span>

            <i className="bi bi-arrow-right"></i>
          </button>

        </div>
      )}
    </>
  ) : (
    <Link
      href="/login"
      className="login-button-custom"
      onClick={closeNavbar}
    >
      <span className="google-icon">
        <i className="bi bi-google"></i>
      </span>

      <span>Login</span>
    </Link>
  )}
</li>

          </ul>
        </div>
      </div>
    </nav>
  );
}
