import { BugReportOutlined, SettingsOutlined } from "@mui/icons-material"; import { LoadingButton, TabContext, TabList, TabPanel } from "@mui/lab"; import { Box, Button, IconButton, Tab, Tooltip, useTheme } from "@mui/material"; import { useAtom } from "jotai"; import { useRouter } from "next/router"; import { useEffect, useState } from "react"; import { useSettings } from "../../../contexts/SettingsContext"; import { stagedSettingsAtom } from "../../../lib/store/jotai/settings"; import { FloatingDialog } from "../../Generic/FloatingDialog"; import { Background } from "./SettingsTabs/Background"; import { Style } from "./SettingsTabs/Style"; import { Window } from "./SettingsTabs/Window"; export const Settings = () => { // contexts const theme = useTheme(); const { settings, updateSettings } = useSettings(); const router = useRouter(); // atoms const [stagedSettings, setStagedSettings] = useAtom(stagedSettingsAtom); // states const [settingsOpenState, setSettingsOpenState] = useState(false); const [settingsMaximisedState, setSettingsMaximisedState] = useState(false); const [subTabValue, setSubTabValue] = useState("style"); const [applyLoading, setApplyLoading] = useState(false); const [saveLoading, setSaveLoading] = useState(false); const toggleSettings = () => { setSettingsOpenState((prevState) => !prevState); }; const closeSettings = () => { setSettingsOpenState(false); }; // logic for switching tabs const subTabChangeEvent = (newTabValue: string) => { setSubTabValue(newTabValue); }; // set staged settings back to current settings on cancel const cancelClickEvent = () => { setStagedSettings(settings); setSettingsOpenState(false); }; const applyClickEvent = () => { setApplyLoading(true); updateSettings(stagedSettings); setApplyLoading(false); }; const saveClickEvent = () => { applyClickEvent(); closeSettings(); }; // set staged settings back to current settings on close useEffect(() => { if (!settingsOpenState) setStagedSettings(settings); }, [settingsOpenState]); return ( { router.push("/testing"); }} sx={{ mr: 1, }} > } body={ { subTabChangeEvent(value); }} scrollButtons={true} sx={{ borderBottom: "1px solid " + theme.palette.divider, }} variant="scrollable" >