summaryrefslogtreecommitdiffstats
path: root/excalidraw-app/components/AppMainMenu.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'excalidraw-app/components/AppMainMenu.tsx')
-rw-r--r--excalidraw-app/components/AppMainMenu.tsx86
1 files changed, 86 insertions, 0 deletions
diff --git a/excalidraw-app/components/AppMainMenu.tsx b/excalidraw-app/components/AppMainMenu.tsx
new file mode 100644
index 0000000..426ec69
--- /dev/null
+++ b/excalidraw-app/components/AppMainMenu.tsx
@@ -0,0 +1,86 @@
+import React from "react";
+import {
+ loginIcon,
+ ExcalLogo,
+ eyeIcon,
+} from "@excalidraw/excalidraw/components/icons";
+import type { Theme } from "@excalidraw/excalidraw/element/types";
+import { MainMenu } from "@excalidraw/excalidraw/index";
+import { isExcalidrawPlusSignedUser } from "../app_constants";
+import { LanguageList } from "../app-language/LanguageList";
+import { saveDebugState } from "./DebugCanvas";
+
+export const AppMainMenu: React.FC<{
+ onCollabDialogOpen: () => any;
+ isCollaborating: boolean;
+ isCollabEnabled: boolean;
+ theme: Theme | "system";
+ setTheme: (theme: Theme | "system") => void;
+ refresh: () => void;
+}> = React.memo((props) => {
+ return (
+ <MainMenu>
+ <MainMenu.DefaultItems.LoadScene />
+ <MainMenu.DefaultItems.SaveToActiveFile />
+ <MainMenu.DefaultItems.Export />
+ <MainMenu.DefaultItems.SaveAsImage />
+ {props.isCollabEnabled && (
+ <MainMenu.DefaultItems.LiveCollaborationTrigger
+ isCollaborating={props.isCollaborating}
+ onSelect={() => props.onCollabDialogOpen()}
+ />
+ )}
+ <MainMenu.DefaultItems.CommandPalette className="highlighted" />
+ <MainMenu.DefaultItems.SearchMenu />
+ <MainMenu.DefaultItems.Help />
+ <MainMenu.DefaultItems.ClearCanvas />
+ <MainMenu.Separator />
+ <MainMenu.ItemLink
+ icon={ExcalLogo}
+ href={`${
+ import.meta.env.VITE_APP_PLUS_LP
+ }/plus?utm_source=excalidraw&utm_medium=app&utm_content=hamburger`}
+ className=""
+ >
+ kj-diagramming cloud
+ </MainMenu.ItemLink>
+ <MainMenu.DefaultItems.Socials />
+ <MainMenu.ItemLink
+ icon={loginIcon}
+ href={`${import.meta.env.VITE_APP_PLUS_APP}${
+ isExcalidrawPlusSignedUser ? "" : "/sign-up"
+ }?utm_source=signin&utm_medium=app&utm_content=hamburger`}
+ className="highlighted"
+ >
+ {isExcalidrawPlusSignedUser ? "Sign in" : "Sign up"}
+ </MainMenu.ItemLink>
+ {import.meta.env.DEV && (
+ <MainMenu.Item
+ icon={eyeIcon}
+ onClick={() => {
+ if (window.visualDebug) {
+ delete window.visualDebug;
+ saveDebugState({ enabled: false });
+ } else {
+ window.visualDebug = { data: [] };
+ saveDebugState({ enabled: true });
+ }
+ props?.refresh();
+ }}
+ >
+ Visual Debug
+ </MainMenu.Item>
+ )}
+ <MainMenu.Separator />
+ <MainMenu.DefaultItems.ToggleTheme
+ allowSystemTheme
+ theme={props.theme}
+ onSelect={props.setTheme}
+ />
+ <MainMenu.ItemCustom>
+ <LanguageList style={{ width: "100%" }} />
+ </MainMenu.ItemCustom>
+ <MainMenu.DefaultItems.ChangeCanvasBackground />
+ </MainMenu>
+ );
+});