refactor: split menubar into multiple components
This commit is contained in:
parent
adae559d01
commit
f2b3910432
4 changed files with 84 additions and 40 deletions
35
src/components/menubar/FileMenu.tsx
Normal file
35
src/components/menubar/FileMenu.tsx
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
import {
|
||||||
|
MenubarContent,
|
||||||
|
MenubarItem,
|
||||||
|
MenubarMenu,
|
||||||
|
MenubarSeparator,
|
||||||
|
MenubarSub,
|
||||||
|
MenubarSubContent,
|
||||||
|
MenubarSubTrigger,
|
||||||
|
MenubarTrigger,
|
||||||
|
} from "@/components/ui/menubar";
|
||||||
|
|
||||||
|
function FileMenu() {
|
||||||
|
return (
|
||||||
|
<MenubarMenu>
|
||||||
|
<MenubarTrigger>File</MenubarTrigger>
|
||||||
|
<MenubarContent>
|
||||||
|
<MenubarItem>Open Schematic</MenubarItem>
|
||||||
|
<MenubarItem>Open Image</MenubarItem>
|
||||||
|
|
||||||
|
<MenubarSeparator />
|
||||||
|
|
||||||
|
<MenubarSub>
|
||||||
|
<MenubarSubTrigger>Export to...</MenubarSubTrigger>
|
||||||
|
<MenubarSubContent>
|
||||||
|
<MenubarItem>.schematic</MenubarItem>
|
||||||
|
<MenubarItem>.litematic</MenubarItem>
|
||||||
|
<MenubarItem>image</MenubarItem>
|
||||||
|
</MenubarSubContent>
|
||||||
|
</MenubarSub>
|
||||||
|
</MenubarContent>
|
||||||
|
</MenubarMenu>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default FileMenu;
|
||||||
15
src/components/menubar/MoreMenu.tsx
Normal file
15
src/components/menubar/MoreMenu.tsx
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
import { MenubarContent, MenubarMenu, MenubarTrigger } from "@/components/ui/menubar";
|
||||||
|
import ThemeChanger from "./ThemeChanger";
|
||||||
|
|
||||||
|
function MoreMenu() {
|
||||||
|
return (
|
||||||
|
<MenubarMenu>
|
||||||
|
<MenubarTrigger>More</MenubarTrigger>
|
||||||
|
<MenubarContent>
|
||||||
|
<ThemeChanger />
|
||||||
|
</MenubarContent>
|
||||||
|
</MenubarMenu>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default MoreMenu;
|
||||||
24
src/components/menubar/ViewMenu.tsx
Normal file
24
src/components/menubar/ViewMenu.tsx
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
import { useContext } from "react";
|
||||||
|
import { MenubarCheckboxItem, MenubarContent, MenubarMenu, MenubarTrigger } from "@/components/ui/menubar";
|
||||||
|
import { SettingsContext } from "@/context/SettingsContext";
|
||||||
|
|
||||||
|
function ViewMenu() {
|
||||||
|
const { settings, setSetting } = useContext(SettingsContext);
|
||||||
|
|
||||||
|
const onCheckedChange = (key: keyof Settings) => (value: boolean) => {
|
||||||
|
setSetting(key, value);
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<MenubarMenu>
|
||||||
|
<MenubarTrigger>View</MenubarTrigger>
|
||||||
|
<MenubarContent>
|
||||||
|
<MenubarCheckboxItem checked={settings.grid} onCheckedChange={onCheckedChange("grid")}>
|
||||||
|
Grid
|
||||||
|
</MenubarCheckboxItem>
|
||||||
|
</MenubarContent>
|
||||||
|
</MenubarMenu>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default ViewMenu;
|
||||||
|
|
@ -1,49 +1,19 @@
|
||||||
import {
|
import { Menubar as UIMenubar } from "@/components/ui/menubar";
|
||||||
Menubar as UIMenubar,
|
|
||||||
MenubarContent,
|
|
||||||
MenubarItem,
|
|
||||||
MenubarMenu,
|
|
||||||
MenubarSeparator,
|
|
||||||
MenubarSub,
|
|
||||||
MenubarSubContent,
|
|
||||||
MenubarSubTrigger,
|
|
||||||
MenubarTrigger,
|
|
||||||
} from "@/components/ui/menubar";
|
|
||||||
|
|
||||||
import ThemeChanger from "./ThemeChanger";
|
import FileMenu from "./FileMenu";
|
||||||
|
import ViewMenu from "./ViewMenu";
|
||||||
|
import MoreMenu from "./MoreMenu";
|
||||||
|
|
||||||
function Menubar() {
|
function Menubar() {
|
||||||
return (
|
return (
|
||||||
<UIMenubar className="rounded-none border-t-0 border-x-0 col-span-2">
|
<UIMenubar className="rounded-none border-t-0 border-x-0 col-span-2">
|
||||||
<MenubarMenu>
|
<a href="https://github.com/trafficlunar/blockmatic" className="ml-4 mr-2">
|
||||||
<a href="https://github.com/trafficlunar/blockmatic" className="ml-4 mr-2">
|
blockmatic
|
||||||
blockmatic
|
</a>
|
||||||
</a>
|
|
||||||
|
|
||||||
<MenubarTrigger>File</MenubarTrigger>
|
<FileMenu />
|
||||||
<MenubarContent>
|
<ViewMenu />
|
||||||
<MenubarItem>Open Schematic</MenubarItem>
|
<MoreMenu />
|
||||||
<MenubarItem>Open Image</MenubarItem>
|
|
||||||
|
|
||||||
<MenubarSeparator />
|
|
||||||
|
|
||||||
<MenubarSub>
|
|
||||||
<MenubarSubTrigger>Export to...</MenubarSubTrigger>
|
|
||||||
<MenubarSubContent>
|
|
||||||
<MenubarItem>.schematic</MenubarItem>
|
|
||||||
<MenubarItem>.litematic</MenubarItem>
|
|
||||||
<MenubarItem>image</MenubarItem>
|
|
||||||
</MenubarSubContent>
|
|
||||||
</MenubarSub>
|
|
||||||
</MenubarContent>
|
|
||||||
</MenubarMenu>
|
|
||||||
|
|
||||||
<MenubarMenu>
|
|
||||||
<MenubarTrigger>More</MenubarTrigger>
|
|
||||||
<MenubarContent>
|
|
||||||
<ThemeChanger />
|
|
||||||
</MenubarContent>
|
|
||||||
</MenubarMenu>
|
|
||||||
</UIMenubar>
|
</UIMenubar>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue