AppMainMenu.tsx 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import React from "react";
  2. import {
  3. loginIcon,
  4. ExcalLogo,
  5. } from "../../packages/excalidraw/components/icons";
  6. import type { Theme } from "../../packages/excalidraw/element/types";
  7. import { MainMenu } from "../../packages/excalidraw/index";
  8. import { isExcalidrawPlusSignedUser } from "../app_constants";
  9. import { LanguageList } from "./LanguageList";
  10. export const AppMainMenu: React.FC<{
  11. onCollabDialogOpen: () => any;
  12. isCollaborating: boolean;
  13. isCollabEnabled: boolean;
  14. theme: Theme | "system";
  15. setTheme: (theme: Theme | "system") => void;
  16. }> = React.memo((props) => {
  17. return (
  18. <MainMenu>
  19. <MainMenu.DefaultItems.LoadScene />
  20. <MainMenu.DefaultItems.SaveToActiveFile />
  21. <MainMenu.DefaultItems.Export />
  22. <MainMenu.DefaultItems.SaveAsImage />
  23. {props.isCollabEnabled && (
  24. <MainMenu.DefaultItems.LiveCollaborationTrigger
  25. isCollaborating={props.isCollaborating}
  26. onSelect={() => props.onCollabDialogOpen()}
  27. />
  28. )}
  29. <MainMenu.DefaultItems.CommandPalette className="highlighted" />
  30. <MainMenu.DefaultItems.Help />
  31. <MainMenu.DefaultItems.ClearCanvas />
  32. <MainMenu.Separator />
  33. <MainMenu.ItemLink
  34. icon={ExcalLogo}
  35. href={`${
  36. import.meta.env.VITE_APP_PLUS_LP
  37. }/plus?utm_source=excalidraw&utm_medium=app&utm_content=hamburger`}
  38. className=""
  39. >
  40. Excalidraw+
  41. </MainMenu.ItemLink>
  42. <MainMenu.DefaultItems.Socials />
  43. <MainMenu.ItemLink
  44. icon={loginIcon}
  45. href={`${import.meta.env.VITE_APP_PLUS_APP}${
  46. isExcalidrawPlusSignedUser ? "" : "/sign-up"
  47. }?utm_source=signin&utm_medium=app&utm_content=hamburger`}
  48. className="highlighted"
  49. >
  50. {isExcalidrawPlusSignedUser ? "Sign in" : "Sign up"}
  51. </MainMenu.ItemLink>
  52. <MainMenu.Separator />
  53. <MainMenu.DefaultItems.ToggleTheme
  54. allowSystemTheme
  55. theme={props.theme}
  56. onSelect={props.setTheme}
  57. />
  58. <MainMenu.ItemCustom>
  59. <LanguageList style={{ width: "100%" }} />
  60. </MainMenu.ItemCustom>
  61. <MainMenu.DefaultItems.ChangeCanvasBackground />
  62. </MainMenu>
  63. );
  64. });