diff --git a/assets/dark-mode.svg b/assets/dark-mode.svg new file mode 100644 index 0000000..caeb069 --- /dev/null +++ b/assets/dark-mode.svg @@ -0,0 +1,12 @@ + + \ No newline at end of file diff --git a/src/renderer/App.tsx b/src/renderer/App.tsx index 4998314..9b94430 100644 --- a/src/renderer/App.tsx +++ b/src/renderer/App.tsx @@ -114,6 +114,8 @@ export default function App() { const [deviceInfoState, setDeviceInfoState] = useState( [] as DeviceInfoState[], ); + // Dark Mode UI State + const [isDarkMode, setIsDarkMode] = useState(false); const changeActiveModal = (newModalName: string) => { if (document.activeElement instanceof HTMLElement) { @@ -177,6 +179,9 @@ export default function App() { window.electron.ipcRenderer.sendMessage('main-update-robot-mode', mode); setRobotRunning(mode !== RobotRunMode.IDLE); }; + const toggleDarkMode = () => { + setIsDarkMode((prev) => !prev); + }; const closeWindow = useCallback(() => { window.electron.ipcRenderer.sendMessage('main-quit', { @@ -418,6 +423,7 @@ export default function App() { dawnVersion={dawnVersion} robotLatencyMs={robotLatencyMs} robotBatteryVoltage={robotBatteryVoltage} + // isDarkMode={isDarkMode} />
+{messages.map((msg: AppConsoleMessage) => ({msg.text}diff --git a/src/renderer/editor/Editor.tsx b/src/renderer/editor/Editor.tsx index 977ac24..b71a3d4 100644 --- a/src/renderer/editor/Editor.tsx +++ b/src/renderer/editor/Editor.tsx @@ -31,6 +31,7 @@ import startRobot from '../../../assets/start-robot.svg'; import stopRobot from '../../../assets/stop-robot.svg'; import keyboardKeySvg from '../../../assets/keyboard-key.svg'; import themeSvg from '../../../assets/theme.svg'; +import darkModeSvg from '../../../assets/dark-mode.svg'; import './Editor.css'; @@ -108,6 +109,9 @@ const ACE_THEMES = { * @param props.onToggleConsole - handler called when the user wants to toggle the AppConsole's * visibility * @param props.onClearConsole - handler called when the user wants to clear the AppConsole + * dark mode + * @param props.isDarkMode - whether UI is in dark mode + * @param props.onToggleDarkMode - handler called when user wans to toggle UI's dark mode. */ export default function Editor({ width, @@ -120,6 +124,7 @@ export default function Editor({ keyboardControlsStatus, robotConnected, robotRunning, + isDarkMode, onOpen, onSave, onNewFile, @@ -131,6 +136,7 @@ export default function Editor({ onToggleConsole, onClearConsole, onToggleKeyboardControls, + onToggleDarkMode, }: { width: number; /** @@ -146,6 +152,7 @@ export default function Editor({ keyboardControlsStatus: KeyboardControlsStatus; robotConnected: boolean; robotRunning: boolean; + isDarkMode: boolean; onOpen: () => void; /** * handler called when the user wants to save the contents of the editor @@ -165,6 +172,7 @@ export default function Editor({ onToggleConsole: () => void; onClearConsole: () => void; onToggleKeyboardControls: () => void; + onToggleDarkMode: () => void; }) { const [opmode, setOpmode] = useState('auto'); const [fontSize, setFontSize] = useState(12); @@ -298,6 +306,16 @@ export default function Editor({ ))}