import React, { useState } from "react"; import { ArrowIcon } from "../../icons/ExportCommonIcons"; import { toggleTheme } from "../../../utils/theme"; interface MenuBarProps { setOpenMenu: (isOpen: boolean) => void; // Function to update menu state } const MenuBar: React.FC = ({ setOpenMenu }) => { const [activeMenu, setActiveMenu] = useState(null); const [activeSubMenu, setActiveSubMenu] = useState(null); // State to track selection for all menu items const [selectedItems, setSelectedItems] = useState>( {} ); // 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"; return (
{ setOpenMenu(false); }} > {/* Top-level menu buttons */}
{/* File Menu */}
setActiveMenu("File")} onMouseLeave={() => { setActiveMenu(null); setActiveSubMenu(null); }} >
File
{/* File Dropdown */} {activeMenu === "File" && (
{/* New File */}
toggleSelection("New File")} >
New File
Ctrl + N
{/* Open Local File */}
toggleSelection("Open Local File")} >
Open Local File
Ctrl + O
{/* Save Version */}
toggleSelection("Save Version")} >
Save Version
{/* Make a Copy */}
toggleSelection("Make a Copy")} >
Make a Copy
{/* Share */}
toggleSelection("Share")} >
Share
{/* Rename */}
toggleSelection("Rename")} >
Rename
{/* Import */}
toggleSelection("Import")} >
Import
{/* Close File */}
toggleSelection("Close File")} >
Close File
)}
{/* Edit Menu */}
setActiveMenu("Edit")} onMouseLeave={() => { setActiveMenu(null); setActiveSubMenu(null); }} >
Edit
{/* Edit Dropdown */} {activeMenu === "Edit" && (
{/* Undo */}
toggleSelection("Undo")} >
Undo
Ctrl + Z
{/* Redo */}
toggleSelection("Redo")} >
Redo
Ctrl + Shift + Z
{/* Undo History */}
toggleSelection("Undo History")} >
Undo History
{/* Redo History */}
toggleSelection("Redo History")} >
Redo History
{/* Find */}
toggleSelection("Find")} >
Find
Ctrl + F
{/* Delete */}
toggleSelection("Delete")} >
Delete
{/* Select by... */}
toggleSelection("Select by...")} >
Select by...
{/* Keymap */}
toggleSelection("Keymap")} >
Keymap
)}
{/* View Menu */}
setActiveMenu("View")} onMouseLeave={() => { setActiveMenu(null); setActiveSubMenu(null); }} >
View
{/* View Dropdown */} {activeMenu === "View" && (
{/* Grid */}
toggleSelection("Grid")} >
Grid
{/* Gizmo */}
setActiveSubMenu("View-Gizmo")} onMouseLeave={() => setActiveSubMenu(null)} >
Gizmo
{/* Gizmo Submenu */} {activeSubMenu === "View-Gizmo" && (
{/* Visibility */}
toggleSelection("Visibility")} > {selectedItems["Visibility"] && "✓ "} Visibility
{/* Cube view */}
toggleSelection("Cube view")} > Cube view
{/* Sphere view */}
toggleSelection("Sphere view")} > Sphere view
)}
{/* Zoom */}
toggleSelection("Zoom")} >
Zoom
{/* Full Screen */}
toggleSelection("Full Screen")} >
Full Screen
F11
)}
{/* Version History Menu */}
setActiveMenu("Version history")} onMouseLeave={() => { setActiveMenu(null); setActiveSubMenu(null); }} >
Version history
{/* Export As Menu */}
setActiveMenu("Export as...")} onMouseLeave={() => { setActiveMenu(null); setActiveSubMenu(null); }} >
Export as...
setActiveMenu("theme")} onMouseLeave={() => { setActiveMenu(null); setActiveSubMenu(null); }} onClick={() => { handleThemeChange(); }} >
Theme
{savedTheme}
{/* Apps Menu */} {/*
setActiveMenu("Apps")} onMouseLeave={() => { setActiveMenu(null); setActiveSubMenu(null); }} >
Apps
{activeMenu === "Apps" && (
toggleSelection("New App")} >
New App
toggleSelection("Work-flow Monitor")} >
Work-flow Monitor
toggleSelection("Temperature Visualizer")} >
Temperature Visualizer
toggleSelection("View all")} >
View all
)}
*/} {/* Help Menu */}
setActiveMenu("Help")} onMouseLeave={() => { setActiveMenu(null); setActiveSubMenu(null); }} >
Help
{/* Help Dropdown */} {activeMenu === "Help" && (
{/* Shortcuts */}
toggleSelection("Shortcuts")} >
Shortcuts
Ctrl + Shift + ?
{/* Manual */}
toggleSelection("Manual")} >
Manual
{/* Video Tutorials */}
toggleSelection("Video Tutorials")} >
Video Tutorials
{/* Report a bug */}
toggleSelection("Report a bug")} >
Report a bug
)}
); }; export default MenuBar;