import React, { useState, useMemo, createContext, useContext } from "react"; import { createTheme, ThemeProvider } from "@mui/material/styles"; import useMediaQuery from "@mui/material/useMediaQuery"; import blueGrey from "@mui/material/colors/blueGrey" import teal from "@mui/material/colors/teal"; import AppBar from "@mui/material/AppBar"; import Box from "@mui/material/Box"; import Button from "@mui/material/Button"; import Brightness4Icon from "@mui/icons-material/Brightness4"; import Container from "@mui/material/Container"; import CssBaseline from "@mui/material/CssBaseline"; import IconButton from "@mui/material/IconButton"; import Menu from "@mui/material/Menu"; import MenuItem from "@mui/material/MenuItem"; import Toolbar from "@mui/material/Toolbar"; import Typography from "@mui/material/Typography"; import Sliders from "./Sliders"; // Light / Dark mode type ThemeMode = 'system' | 'light' | 'dark'; const ThemeModeContext = createContext((_: ThemeMode) => { }) const App: React.FC = () => { const systemDarkMode = useMediaQuery('(prefers-color-scheme: dark)'); const [themeMode, setThemeMode] = useState('system'); const theme = useMemo( () => createTheme({ palette: { mode: themeMode === 'system' ? (systemDarkMode ? 'dark' : 'light') : themeMode, primary: blueGrey, secondary: teal, } }), [themeMode, systemDarkMode], ); return } // Layout const Layout: React.FC = () => { return <>
} // Top Bar const TopBar: React.FC = () => { const setThemeMode = useContext(ThemeModeContext); const [anchorEl, setAnchorEl] = useState(null); const open = Boolean(anchorEl); return DMX Controllinator ) => { setAnchorEl(event.currentTarget) }} color="inherit" > { setAnchorEl(null) }} > { setAnchorEl(null); setThemeMode('light'); }}>Light { setAnchorEl(null); setThemeMode('system'); }}>System { setAnchorEl(null); setThemeMode('dark'); }}>Dark } // Content export default App;