import { IconButton, Popover, ToggleButton, ToggleButtonGroup, Tooltip } from "@mui/material"; import DarkTheme from "../../Icons/DarkTheme.tsx"; import { useTranslation } from "react-i18next"; import { useMemo, useState } from "react"; import { useAppDispatch, useAppSelector } from "../../../redux/hooks.ts"; import Sunny from "../../Icons/Sunny.tsx"; import Moon from "../../Icons/Moon.tsx"; import SunWithTime from "../../Icons/SunWithTime.tsx"; import { setDarkMode } from "../../../redux/globalStateSlice.ts"; import SessionManager, { UserSettings } from "../../../session"; interface SwitchPopoverProps { open?: boolean; anchorEl?: HTMLElement | null; onClose?: () => void; } export const SwitchPopover = ({ open, anchorEl, onClose }: SwitchPopoverProps) => { const { t } = useTranslation(); const dispatch = useAppDispatch(); const darkMode = useAppSelector((state) => state.globalState.darkMode); const currentMode = useMemo(() => { if (darkMode === undefined) { return "system"; } return darkMode ? "dark" : "light"; }, [darkMode]); const handleChange = (_event: React.MouseEvent, newMode: string) => { let newSetting: boolean | undefined; if (newMode === "light") { newSetting = false; } else if (newMode === "dark") { newSetting = true; } dispatch(setDarkMode(newSetting)); SessionManager.set(UserSettings.PreferredDarkMode, newSetting); onClose && onClose(); }; const inner = ( {t("navbar.toLightMode")} {t("setting.syncWithSystem")} {t("navbar.toDarkMode")} ); return onClose ? ( {inner} ) : ( inner ); }; const DarkThemeSwitcher = () => { const { t } = useTranslation(); const [anchorEl, setAnchorEl] = useState(null); const handleClick = (event: React.MouseEvent) => { setAnchorEl(event.currentTarget); }; return ( <> setAnchorEl(null)} /> ); }; export default DarkThemeSwitcher;