import React, { useState } from "react";
import { ArrowIcon } from "../../icons/ExportCommonIcons";
import { toggleTheme } from "../../../utils/theme";
import { useNavigate } from "react-router-dom";
import useVersionHistoryStore from "../../../store/store";
import { useSubModuleStore } from "../../../store/useModuleStore";

interface MenuBarProps {
  setOpenMenu: (isOpen: boolean) => void; // Function to update menu state
}

const MenuBar: React.FC<MenuBarProps> = ({ setOpenMenu }) => {
  const navigate = useNavigate();
  const [activeMenu, setActiveMenu] = useState<string | null>(null);
  const [activeSubMenu, setActiveSubMenu] = useState<string | null>(null);

  const { setVersionHistory } = useVersionHistoryStore();
  const { setSubModule } = useSubModuleStore();

  // State to track selection for all menu items
  const [selectedItems, setSelectedItems] = useState<Record<string, boolean>>(
    {}
  );

  // Function to toggle selection for a specific item
  const toggleSelection = (itemName: string) => {
    setSelectedItems((prev) => ({
      ...prev,
      [itemName]: !prev[itemName], // Toggle the selection state
    }));
  };

  function handleThemeChange() {
    toggleTheme();
    window.location.reload();
  }

  const savedTheme: string | null = localStorage.getItem("theme") ?? "light";


  const handleLogout = () => {
    localStorage.clear(); // 1. Clear all localStorage
    navigate('/');        // 2. Redirect to homepage
  };

  return (
    <div
      className="menu-bar"
      onPointerLeave={() => {
        setOpenMenu(false);
      }}
    >
      {/* Top-level menu buttons */}
      <div className="menu-buttons">
        {/* File Menu */}
        <div
          className="menu-button-container"
          onMouseEnter={() => setActiveMenu("File")}
          onMouseLeave={() => {
            setActiveMenu(null);
            setActiveSubMenu(null);
          }}
        >
          <div className="menu-button">
            File
            <span className="dropdown-icon">
              <ArrowIcon />
            </span>
          </div>

          {/* File Dropdown */}
          {activeMenu === "File" && (
            <div className="dropdown-menu">
              {/* New File */}
              <div
                className="menu-item-container"
                onClick={() => toggleSelection("New File")}
              >
                <div className="menu-item">
                  <span>New File</span>
                  <div className="menu-item-right">
                    <span className="shortcut">Ctrl + N</span>
                  </div>
                </div>
              </div>

              {/* Open Local File */}
              <div
                className="menu-item-container"
                onClick={() => toggleSelection("Open Local File")}
              >
                <div className="menu-item">
                  <span>Open Local File</span>
                  <div className="menu-item-right">
                    <span className="shortcut">Ctrl + O</span>
                  </div>
                </div>
              </div>

              {/* Save Version */}
              <div
                className="menu-item-container"
                onClick={() => toggleSelection("Save Version")}
              >
                <div className="menu-item">
                  <span>Save Version</span>
                </div>
                <div className="split"></div>
              </div>

              {/* Make a Copy */}
              <div
                className="menu-item-container"
                onClick={() => toggleSelection("Make a Copy")}
              >
                <div className="menu-item">
                  <span>Make a Copy</span>
                </div>
              </div>

              {/* Share */}
              <div
                className="menu-item-container"
                onClick={() => toggleSelection("Share")}
              >
                <div className="menu-item">
                  <span>Share</span>
                </div>
              </div>

              {/* Rename */}
              <div
                className="menu-item-container"
                onClick={() => toggleSelection("Rename")}
              >
                <div className="menu-item">
                  <span>Rename</span>
                </div>
                <div className="split"></div>
              </div>

              {/* Import */}
              <div
                className="menu-item-container"
                onClick={() => toggleSelection("Import")}
              >
                <div className="menu-item">
                  <span>Import</span>
                </div>
              </div>

              {/* Close File */}
              <div
                className="menu-item-container"
                onClick={() => toggleSelection("Close File")}
              >
                <div className="menu-item">
                  <span>Close File</span>
                </div>
              </div>
            </div>
          )}
        </div>

        {/* Edit Menu */}
        <div
          className="menu-button-container"
          onMouseEnter={() => setActiveMenu("Edit")}
          onMouseLeave={() => {
            setActiveMenu(null);
            setActiveSubMenu(null);
          }}
        >
          <div className="menu-button">
            Edit
            <span className="dropdown-icon">
              <ArrowIcon />
            </span>
          </div>

          {/* Edit Dropdown */}
          {activeMenu === "Edit" && (
            <div className="dropdown-menu">
              {/* Undo */}
              <div
                className="menu-item-container"
                onClick={() => toggleSelection("Undo")}
              >
                <div className="menu-item">
                  <span>Undo</span>
                  <div className="menu-item-right">
                    <span className="shortcut">Ctrl + Z</span>
                  </div>
                </div>
              </div>

              {/* Redo */}
              <div
                className="menu-item-container"
                onClick={() => toggleSelection("Redo")}
              >
                <div className="menu-item">
                  <span>Redo</span>
                  <div className="menu-item-right">
                    <span className="shortcut">Ctrl + Shift + Z</span>
                  </div>
                </div>
                <div className="split"></div>
              </div>

              {/* Undo History */}
              <div
                className="menu-item-container"
                onClick={() => toggleSelection("Undo History")}
              >
                <div className="menu-item">
                  <span>Undo History</span>
                </div>
              </div>

              {/* Redo History */}
              <div
                className="menu-item-container"
                onClick={() => toggleSelection("Redo History")}
              >
                <div className="menu-item">
                  <span>Redo History</span>
                </div>
                <div className="split"></div>
              </div>

              {/* Find */}
              <div
                className="menu-item-container"
                onClick={() => toggleSelection("Find")}
              >
                <div className="menu-item">
                  <span>Find</span>
                  <div className="menu-item-right">
                    <span className="shortcut">Ctrl + F</span>
                  </div>
                </div>
              </div>

              {/* Delete */}
              <div
                className="menu-item-container"
                onClick={() => toggleSelection("Delete")}
              >
                <div className="menu-item">
                  <span>Delete</span>
                </div>
              </div>

              {/* Select by... */}
              <div
                className="menu-item-container"
                onClick={() => toggleSelection("Select by...")}
              >
                <div className="menu-item">
                  <span>Select by...</span>
                </div>
              </div>

              {/* Keymap */}
              <div
                className="menu-item-container"
                onClick={() => toggleSelection("Keymap")}
              >
                <div className="menu-item">
                  <span>Keymap</span>
                </div>
              </div>
            </div>
          )}
        </div>

        {/* View Menu */}
        <div
          className="menu-button-container"
          onMouseEnter={() => setActiveMenu("View")}
          onMouseLeave={() => {
            setActiveMenu(null);
            setActiveSubMenu(null);
          }}
        >
          <div className="menu-button">
            View
            <span className="dropdown-icon">
              <ArrowIcon />
            </span>
          </div>

          {/* View Dropdown */}
          {activeMenu === "View" && (
            <div className="dropdown-menu">
              {/* Grid */}
              <div
                className={"menu-item-container"}
                onClick={() => toggleSelection("Grid")}
              >
                <div className="menu-item">
                  <span>Grid</span>
                </div>
              </div>

              {/* Gizmo */}
              <div
                className="menu-item-container"
                onMouseEnter={() => setActiveSubMenu("View-Gizmo")}
                onMouseLeave={() => setActiveSubMenu(null)}
              >
                <div className="menu-item">
                  <span>Gizmo</span>
                  <span className="dropdown-icon">
                    <ArrowIcon />
                  </span>
                </div>
                <div className="split"></div>

                {/* Gizmo Submenu */}
                {activeSubMenu === "View-Gizmo" && (
                  <div className="submenu">
                    {/* Visibility */}
                    <div
                      className="submenu-item"
                      onClick={() => toggleSelection("Visibility")}
                    >
                      <span>
                        {selectedItems["Visibility"] && "✓ "}
                        Visibility
                      </span>
                    </div>
                    <div className="split"></div>

                    {/* Cube view */}
                    <div
                      className="submenu-item"
                      onClick={() => toggleSelection("Cube view")}
                    >
                      <span>Cube view</span>
                    </div>

                    {/* Sphere view */}
                    <div
                      className="submenu-item"
                      onClick={() => toggleSelection("Sphere view")}
                    >
                      <span>Sphere view</span>
                    </div>
                  </div>
                )}
              </div>

              {/* Zoom */}
              <div
                className="menu-item-container"
                onClick={() => toggleSelection("Zoom")}
              >
                <div className="menu-item">
                  <span>Zoom</span>
                </div>
              </div>

              {/* Full Screen */}
              <div
                className="menu-item-container"
                onClick={() => toggleSelection("Full Screen")}
              >
                <div className="menu-item">
                  <span>Full Screen</span>
                  <div className="menu-item-right">
                    <span className="shortcut">F11</span>
                  </div>
                </div>
              </div>
            </div>
          )}
        </div>

        {/* Version History Menu */}
        <div
          className="menu-button-container"
          onMouseEnter={() => setActiveMenu("Version history")}
          onMouseLeave={() => {
            setActiveMenu(null);
            setActiveSubMenu(null);
          }}
          onClick={() => {
            setVersionHistory(true);
            setSubModule("properties");
          }}
        >
          <div className="menu-button">Version history</div>
        </div>

        {/* Export As Menu */}
        <div
          className="menu-button-container"
          onMouseEnter={() => setActiveMenu("Export as...")}
          onMouseLeave={() => {
            setActiveMenu(null);
            setActiveSubMenu(null);
          }}
        >
          <div className="menu-button">Export as...</div>
        </div>

        <div
          className="menu-button-container"
          onMouseEnter={() => setActiveMenu("theme")}
          onMouseLeave={() => {
            setActiveMenu(null);
            setActiveSubMenu(null);
          }}
          onClick={() => {
            handleThemeChange();
          }}
        >
          <div className="menu-button">
            Theme <div className="value">{savedTheme}</div>
          </div>
        </div>

        {/* Apps Menu */}
        {/* <div
          className="menu-button-container"
          onMouseEnter={() => setActiveMenu("Apps")}
          onMouseLeave={() => {
            setActiveMenu(null);
            setActiveSubMenu(null);
          }}
        >
          <div className="menu-button">
            Apps
            <span className="dropdown-icon">
              <ArrowIcon />
            </span>
          </div>

          {activeMenu === "Apps" && (
            <div className="dropdown-menu">
              <div
                className="menu-item-container"
                onClick={() => toggleSelection("New App")}
              >
                <div className="menu-item">
                  <span>
                    
                    New App
                  </span>
                </div>
                <div className="split"></div>
              </div>

              <div
                className="menu-item-container"
                onClick={() => toggleSelection("Work-flow Monitor")}
              >
                <div className="menu-item">
                  <span>
                    
                    Work-flow Monitor
                  </span>
                </div>
              </div>

              <div
                className="menu-item-container"
                onClick={() => toggleSelection("Temperature Visualizer")}
              >
                <div className="menu-item">
                  <span>
                    
                    Temperature Visualizer
                  </span>
                </div>
              </div>

              <div
                className="menu-item-container"
                onClick={() => toggleSelection("View all")}
              >
                <div className="menu-item">
                  <span>
                    
                    View all
                  </span>
                </div>
              </div>
            </div>
          )}
        </div> */}

        {/* Help Menu */}
        <div
          className="menu-button-container"
          onMouseEnter={() => setActiveMenu("Help")}
          onMouseLeave={() => {
            setActiveMenu(null);
            setActiveSubMenu(null);
          }}
        >
          <div className="menu-button">
            Help
            <span className="dropdown-icon">
              <ArrowIcon />
            </span>
          </div>

          {/* Help Dropdown */}
          {activeMenu === "Help" && (
            <div className="dropdown-menu">
              {/* Shortcuts */}
              <div
                className="menu-item-container"
                onClick={() => toggleSelection("Shortcuts")}
              >
                <div className="menu-item">
                  <span>Shortcuts</span>
                  <div className="menu-item-right">
                    <span className="shortcut">Ctrl + Shift + ?</span>
                  </div>
                </div>
              </div>

              {/* Manual */}
              <div
                className="menu-item-container"
                onClick={() => toggleSelection("Manual")}
              >
                <div className="menu-item">
                  <span>Manual</span>
                </div>
              </div>

              {/* Video Tutorials */}
              <div
                className="menu-item-container"
                onClick={() => toggleSelection("Video Tutorials")}
              >
                <div className="menu-item">
                  <span>Video Tutorials</span>
                </div>
              </div>

              {/* Report a bug */}
              <div
                className="menu-item-container"
                onClick={() => toggleSelection("Report a bug")}
              >
                <div className="menu-item">
                  <span>Report a bug</span>
                </div>
              </div>
            </div>
          )}
        </div>
        <div className="menu-button-container" onClick={handleLogout}>
          <div className="menu-button">Log out</div>
        </div>
      </div>
    </div>
  );
};

export default MenuBar;