|
@@ -3,6 +3,7 @@ import { getDefaultAppState } from "../appState";
|
|
|
import { ColorPicker } from "../components/ColorPicker";
|
|
|
import { resetZoom, trash, zoomIn, zoomOut } from "../components/icons";
|
|
|
import { ToolButton } from "../components/ToolButton";
|
|
|
+import { DarkModeToggle } from "../components/DarkModeToggle";
|
|
|
import { ZOOM_STEP } from "../constants";
|
|
|
import { getCommonBounds, getNonDeletedElements } from "../element";
|
|
|
import { newElementWith } from "../element/mutateElement";
|
|
@@ -260,3 +261,27 @@ export const actionZoomToFit = register({
|
|
|
!event.altKey &&
|
|
|
!event[KEYS.CTRL_OR_CMD],
|
|
|
});
|
|
|
+
|
|
|
+export const actionToggleTheme = register({
|
|
|
+ name: "toggleTheme",
|
|
|
+ perform: (_, appState, value) => {
|
|
|
+ return {
|
|
|
+ appState: {
|
|
|
+ ...appState,
|
|
|
+ theme: value || (appState.theme === "light" ? "dark" : "light"),
|
|
|
+ },
|
|
|
+ commitToHistory: false,
|
|
|
+ };
|
|
|
+ },
|
|
|
+ PanelComponent: ({ appState, updateData }) => (
|
|
|
+ <div style={{ marginInlineStart: "0.25rem" }}>
|
|
|
+ <DarkModeToggle
|
|
|
+ value={appState.theme}
|
|
|
+ onChange={(theme) => {
|
|
|
+ updateData(theme);
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ ),
|
|
|
+ keyTest: (event) => event.altKey && event.shiftKey && event.code === CODES.D,
|
|
|
+});
|