diff --git a/app/src/components/ui/FileMenu.tsx b/app/src/components/ui/FileMenu.tsx
index 475d01f..a7c876d 100644
--- a/app/src/components/ui/FileMenu.tsx
+++ b/app/src/components/ui/FileMenu.tsx
@@ -1,12 +1,24 @@
-import React from "react";
+import React, { useState } from "react";
import RenameInput from "./inputs/RenameInput";
+import { ArrowIcon } from "../icons/ExportCommonIcons";
+import MenuBar from "./menu/menu";
const FileMenu: React.FC = () => {
+ const [openMenu, setOpenMenu] = useState(false);
return (
(null);
const [openDrop, setOpenDrop] = useState(false);
@@ -62,7 +62,11 @@ const Tools: React.FC = () => {
// Reset activeTool whenever activeModule changes
useEffect(() => {
- setToggleUI(localStorage.getItem('navBarUi') ? localStorage.getItem('navBarUi') === 'true' : true)
+ setToggleUI(
+ localStorage.getItem("navBarUi")
+ ? localStorage.getItem("navBarUi") === "true"
+ : true
+ );
}, []);
useEffect(() => {
@@ -80,7 +84,11 @@ const Tools: React.FC = () => {
} else {
setToggleView(false);
}
- setToggleUI(localStorage.getItem('navBarUi') ? localStorage.getItem('navBarUi') === 'true' : true)
+ setToggleUI(
+ localStorage.getItem("navBarUi")
+ ? localStorage.getItem("navBarUi") === "true"
+ : true
+ );
setToggleThreeD(!toggleThreeD);
setActiveSubTool("cursor");
setActiveTool("cursor");
@@ -202,8 +210,9 @@ const Tools: React.FC = () => {
{activeSubTool == "cursor" && (
{
setActiveTool("cursor");
}}
@@ -213,8 +222,9 @@ const Tools: React.FC = () => {
)}
{activeSubTool == "free-hand" && (
{
setActiveTool("free-hand");
}}
@@ -224,8 +234,9 @@ const Tools: React.FC = () => {
)}
{activeSubTool == "delete" && (
{
setActiveTool("delete");
}}
@@ -297,8 +308,9 @@ const Tools: React.FC = () => {
{
setActiveTool("draw-wall");
}}
@@ -307,8 +319,9 @@ const Tools: React.FC = () => {
{
setActiveTool("draw-zone");
}}
@@ -317,8 +330,9 @@ const Tools: React.FC = () => {
{
setActiveTool("draw-aisle");
}}
@@ -327,8 +341,9 @@ const Tools: React.FC = () => {
{
setActiveTool("draw-floor");
}}
@@ -344,8 +359,9 @@ const Tools: React.FC = () => {
{
setActiveTool("measure");
}}
@@ -361,8 +377,9 @@ const Tools: React.FC = () => {
{
setActiveTool("pen");
}}
@@ -394,8 +411,9 @@ const Tools: React.FC = () => {
{
setActiveTool("comment");
}}
@@ -404,8 +422,9 @@ const Tools: React.FC = () => {
{toggleThreeD && (
{
setIsPlaying(!isPlaying);
}}
@@ -414,19 +433,28 @@ const Tools: React.FC = () => {
)}
-
-
+ {activeModule === "builder" && (
+ <>
+
+
+ >
+ )}
>
) : (
diff --git a/app/src/components/ui/menu/menu.tsx b/app/src/components/ui/menu/menu.tsx
index b374237..b4ab78e 100644
--- a/app/src/components/ui/menu/menu.tsx
+++ b/app/src/components/ui/menu/menu.tsx
@@ -1,6 +1,11 @@
import React, { useState } from "react";
+import { ArrowIcon } from "../../icons/ExportCommonIcons";
-const MenuBar = () => {
+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);
@@ -18,7 +23,12 @@ const MenuBar = () => {
};
return (
-
+
{
+ setOpenMenu(false);
+ }}
+ >
{/* Top-level menu buttons */}
{/* File Menu */}
@@ -32,7 +42,9 @@ const MenuBar = () => {
>
{/* File Dropdown */}
@@ -44,10 +56,7 @@ const MenuBar = () => {
onClick={() => toggleSelection("New File")}
>
-
- {selectedItems["New File"] && "✓ "}
- New File
-
+
New File
Ctrl + N
@@ -60,10 +69,7 @@ const MenuBar = () => {
onClick={() => toggleSelection("Open Local File")}
>
-
- {selectedItems["Open Local File"] && "✓ "}
- Open Local File
-
+
Open Local File
Ctrl + O
@@ -76,10 +82,7 @@ const MenuBar = () => {
onClick={() => toggleSelection("Save Version")}
>
-
- {selectedItems["Save Version"] && "✓ "}
- Save Version
-
+ Save Version
@@ -90,10 +93,7 @@ const MenuBar = () => {
onClick={() => toggleSelection("Make a Copy")}
>
-
- {selectedItems["Make a Copy"] && "✓ "}
- Make a Copy
-
+ Make a Copy
@@ -103,10 +103,7 @@ const MenuBar = () => {
onClick={() => toggleSelection("Share")}
>
-
- {selectedItems["Share"] && "✓ "}
- Share
-
+ Share
@@ -116,10 +113,7 @@ const MenuBar = () => {
onClick={() => toggleSelection("Rename")}
>
-
- {selectedItems["Rename"] && "✓ "}
- Rename
-
+ Rename
@@ -130,10 +124,7 @@ const MenuBar = () => {
onClick={() => toggleSelection("Import")}
>
-
- {selectedItems["Import"] && "✓ "}
- Import
-
+ Import
@@ -143,10 +134,7 @@ const MenuBar = () => {
onClick={() => toggleSelection("Close File")}
>
-
- {selectedItems["Close File"] && "✓ "}
- Close File
-
+ Close File
@@ -164,7 +152,9 @@ const MenuBar = () => {
>
{/* Edit Dropdown */}
@@ -176,10 +166,7 @@ const MenuBar = () => {
onClick={() => toggleSelection("Undo")}
>
-
- {selectedItems["Undo"] && "✓ "}
- Undo
-
+
Undo
Ctrl + Z
@@ -192,10 +179,7 @@ const MenuBar = () => {
onClick={() => toggleSelection("Redo")}
>
-
- {selectedItems["Redo"] && "✓ "}
- Redo
-
+
Redo
Ctrl + Shift + Z
@@ -209,10 +193,7 @@ const MenuBar = () => {
onClick={() => toggleSelection("Undo History")}
>
-
- {selectedItems["Undo History"] && "✓ "}
- Undo History
-
+ Undo History
@@ -222,10 +203,7 @@ const MenuBar = () => {
onClick={() => toggleSelection("Redo History")}
>
-
- {selectedItems["Redo History"] && "✓ "}
- Redo History
-
+ Redo History
@@ -236,10 +214,7 @@ const MenuBar = () => {
onClick={() => toggleSelection("Find")}
>
-
- {selectedItems["Find"] && "✓ "}
- Find
-
+
Find
Ctrl + F
@@ -252,10 +227,7 @@ const MenuBar = () => {
onClick={() => toggleSelection("Delete")}
>
-
- {selectedItems["Delete"] && "✓ "}
- Delete
-
+ Delete
@@ -265,10 +237,7 @@ const MenuBar = () => {
onClick={() => toggleSelection("Select by...")}
>
-
- {selectedItems["Select by..."] && "✓ "}
- Select by...
-
+ Select by...
@@ -278,10 +247,7 @@ const MenuBar = () => {
onClick={() => toggleSelection("Keymap")}
>
-
- {selectedItems["Keymap"] && "✓ "}
- Keymap
-
+ Keymap
@@ -299,7 +265,9 @@ const MenuBar = () => {
>
{/* View Dropdown */}
@@ -311,10 +279,7 @@ const MenuBar = () => {
onClick={() => toggleSelection("Grid")}
>
-
- {selectedItems["Grid"] && "✓ "}
- Grid
-
+ Grid
@@ -325,11 +290,10 @@ const MenuBar = () => {
onMouseLeave={() => setActiveSubMenu(null)}
>
-
- {selectedItems["Gizmo"] && "✓ "}
- Gizmo
+ Gizmo
+
+
- ▾
@@ -346,16 +310,14 @@ const MenuBar = () => {
Visibility
+
{/* Cube view */}
toggleSelection("Cube view")}
>
-
- {selectedItems["Cube view"] && "✓ "}
- Cube view
-
+ Cube view
{/* Sphere view */}
@@ -363,21 +325,7 @@ const MenuBar = () => {
className="submenu-item"
onClick={() => toggleSelection("Sphere view")}
>
-
- {selectedItems["Sphere view"] && "✓ "}
- Sphere view
-
-
-
- {/* Custom settings */}
-
toggleSelection("Custom settings")}
- >
-
- {selectedItems["Custom settings"] && "✓ "}
- Custom settings
-
+ Sphere view
)}
@@ -389,10 +337,7 @@ const MenuBar = () => {
onClick={() => toggleSelection("Zoom")}
>
-
- {selectedItems["Zoom"] && "✓ "}
- Zoom
-
+ Zoom
@@ -402,10 +347,7 @@ const MenuBar = () => {
onClick={() => toggleSelection("Full Screen")}
>
-
- {selectedItems["Full Screen"] && "✓ "}
- Full Screen
-
+
Full Screen
F11
@@ -424,11 +366,7 @@ const MenuBar = () => {
setActiveSubMenu(null);
}}
>
-
- Version history
-
-
-
+
Version history
{/* Export As Menu */}
@@ -440,14 +378,11 @@ const MenuBar = () => {
setActiveSubMenu(null);
}}
>
-
- Export as...
-
-
+ Export as...
{/* Apps Menu */}
- setActiveMenu("Apps")}
onMouseLeave={() => {
@@ -457,68 +392,64 @@ const MenuBar = () => {
>
- {/* Apps Dropdown */}
{activeMenu === "Apps" && (
- {/* New App */}
toggleSelection("New App")}
>
- {selectedItems["New App"] && "✓ "}
+
New App
-
- {/* Work-flow Monitor */}
toggleSelection("Work-flow Monitor")}
>
- {selectedItems["Work-flow Monitor"] && "✓ "}
+
Work-flow Monitor
- {/* Temperature Visualizer */}
toggleSelection("Temperature Visualizer")}
>
- {selectedItems["Temperature Visualizer"] && "✓ "}
+
Temperature Visualizer
- {/* View all */}
toggleSelection("View all")}
>
- {selectedItems["View all"] && "✓ "}
+
View all
)}
-
+ */}
{/* Help Menu */}
{
>
{/* Help Dropdown */}
@@ -543,10 +476,7 @@ const MenuBar = () => {
onClick={() => toggleSelection("Shortcuts")}
>
-
- {selectedItems["Shortcuts"] && "✓ "}
- Shortcuts
-
+
Shortcuts
Ctrl + Shift + ?
@@ -559,10 +489,7 @@ const MenuBar = () => {
onClick={() => toggleSelection("Manual")}
>
-
- {selectedItems["Manual"] && "✓ "}
- Manual
-
+ Manual
@@ -572,10 +499,7 @@ const MenuBar = () => {
onClick={() => toggleSelection("Video Tutorials")}
>
-
- {selectedItems["Video Tutorials"] && "✓ "}
- Video Tutorials
-
+ Video Tutorials
@@ -585,10 +509,7 @@ const MenuBar = () => {
onClick={() => toggleSelection("Report a bug")}
>
-
- {selectedItems["Report a bug"] && "✓ "}
- Report a bug
-
+ Report a bug
@@ -600,5 +521,3 @@ const MenuBar = () => {
};
export default MenuBar;
-
-
diff --git a/app/src/pages/Project.tsx b/app/src/pages/Project.tsx
index a7800e1..41f04a7 100644
--- a/app/src/pages/Project.tsx
+++ b/app/src/pages/Project.tsx
@@ -2,7 +2,7 @@ import React, { useEffect } from "react";
import ModuleToggle from "../components/ui/ModuleToggle";
import SideBarLeft from "../components/layout/sidebarLeft/SideBarLeft";
import SideBarRight from "../components/layout/sidebarRight/SideBarRight";
-import useModuleStore from "../store/useModuleStore";
+import useModuleStore, { useThreeDStore } from "../store/useModuleStore";
import RealTimeVisulization from "../components/ui/componets/RealTimeVisulization";
import Tools from "../components/ui/Tools";
// import Scene from "../modules/scene/scene";
@@ -49,14 +49,14 @@ const Project: React.FC = () => {
}
}, []);
const { isPlaying } = usePlayButtonStore();
+ const { toggleThreeD } = useThreeDStore();
return (
{loadingProgress && }
{!isPlaying && (
<>
-
-
+ {toggleThreeD && }
>
diff --git a/app/src/store/useModuleStore.ts b/app/src/store/useModuleStore.ts
index 6373af5..1012792 100644
--- a/app/src/store/useModuleStore.ts
+++ b/app/src/store/useModuleStore.ts
@@ -23,4 +23,17 @@ const useSubModuleStore = create((set) => ({
setSubModule: (subModule) => set({ subModule }), // Update subModule state
}));
-export { useSubModuleStore };
\ No newline at end of file
+export { useSubModuleStore };
+
+interface ThreeDState {
+ toggleThreeD: boolean;
+ setToggleThreeD: (value: boolean) => void;
+}
+
+// Create the Zustand store
+const useThreeDStore = create((set) => ({
+ toggleThreeD: true, // Initial state
+ setToggleThreeD: (value) => set({ toggleThreeD: value }), // Action to update the state
+}));
+
+export { useThreeDStore };
\ No newline at end of file
diff --git a/app/src/styles/components/input.scss b/app/src/styles/components/input.scss
index f60aca6..e5dd2b4 100644
--- a/app/src/styles/components/input.scss
+++ b/app/src/styles/components/input.scss
@@ -155,16 +155,6 @@
}
}
-.project-dropdowm-container {
- position: relative;
- height: 32px;
-
- .project-name {
- line-height: 32px;
- height: 100%;
- }
-}
-
.regularDropdown-container {
width: 100%;
min-width: 80px;
@@ -655,4 +645,4 @@ input {
.multi-email-invite-input.active {
border: 1px solid var(--accent-color);
}
-}
\ No newline at end of file
+}
diff --git a/app/src/styles/components/menu/menu.scss b/app/src/styles/components/menu/menu.scss
index a4348a3..8635b0d 100644
--- a/app/src/styles/components/menu/menu.scss
+++ b/app/src/styles/components/menu/menu.scss
@@ -1,25 +1,58 @@
+@use "../../abstracts/variables" as *;
+@use "../../abstracts/mixins" as *;
+
+.project-dropdowm-container {
+ display: flex;
+ align-items: center;
+ gap: 2px;
+ position: relative;
+ height: 32px;
+ .project-name {
+ line-height: 32px;
+ height: 100%;
+ }
+ .more-options-button {
+ @include flex-center;
+ border-radius: #{$border-radius-small};
+ height: 28px;
+ position: relative;
+ &:hover {
+ background: var(--highlight-accent-color);
+ path {
+ fill: var(--accent-color);
+ }
+ }
+ }
+ .more-options-button.active {
+ background: var(--highlight-accent-color);
+ path {
+ fill: var(--accent-color);
+ }
+ }
+}
+
.menu-bar {
position: absolute;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
+ top: 32px;
+ left: 0;
z-index: 5;
background-color: var(--background-color);
color: var(--text-color);
box-shadow: var(--box-shadow-light);
border-radius: 8px;
+ border: 1px solid var(--border-color);
.menu-buttons {
display: flex;
flex-direction: column;
height: 100%;
- padding: 8px 4px;
+ padding: 4px;
min-width: 178px;
.menu-button-container {
position: relative;
height: 100%;
- padding: 8px;
-
+ padding: 4px 8px 4px 12px;
+ border-radius: #{$border-radius-small};
.menu-button {
width: 100%;
cursor: pointer;
@@ -32,7 +65,7 @@
.dropdown-icon {
margin-left: 5px;
font-size: var(--font-size-small);
- color: #666666;
+ rotate: -90deg;
}
}
@@ -46,20 +79,21 @@
box-shadow: var(--box-shadow-light);
border: 1px solid var(--background-color);
z-index: 100;
- padding: 5px 0;
-
+ padding: 4px;
.menu-item-container {
position: relative;
-
.menu-item {
+ padding: 4px 8px 4px 12px;
+ border-radius: #{$border-radius-small};
display: flex;
justify-content: space-between;
align-items: center;
- padding: 8px 20px;
cursor: pointer;
white-space: nowrap;
color: var(--text-color);
-
+ .dropdown-icon {
+ rotate: -90deg;
+ }
&:hover {
background-color: var(--highlight-accent-color);
color: var(--highlight-accent-color);
@@ -92,19 +126,20 @@
box-shadow: var(--box-shadow-light);
border: 1px solid var(--background-color);
z-index: 101;
-
+ padding: 4px;
.submenu-item {
- padding: 8px 20px;
- cursor: pointer;
+ padding: 4px 8px 4px 12px;
+ border-radius: #{$border-radius-small};
display: flex;
justify-content: space-between;
+ align-items: center;
+ cursor: pointer;
+ white-space: nowrap;
color: var(--text-color);
-
&:hover {
- background-color: var(--background-color-gray);
+ background-color: var(--highlight-accent-color);
color: var(--highlight-accent-color);
}
-
.shortcut {
color: var(--text-color);
}
@@ -122,6 +157,7 @@
.split {
width: 100%;
height: 1px;
- background-color: #e0dfff;
+ background-color: var(--highlight-accent-color);
+ margin: 2px 0;
}
}