diff --git a/webUI/react/src/App.tsx b/webUI/react/src/App.tsx index 81da2914..5c89f619 100644 --- a/webUI/react/src/App.tsx +++ b/webUI/react/src/App.tsx @@ -2,6 +2,9 @@ import React, { useState } from 'react'; import { BrowserRouter as Router, Route, Switch, } from 'react-router-dom'; +import CssBaseline from '@material-ui/core/CssBaseline'; +import { createMuiTheme, ThemeProvider } from '@material-ui/core/styles'; + import NavBar from './components/NavBar'; import Home from './screens/Home'; import Sources from './screens/Sources'; @@ -11,43 +14,61 @@ import Manga from './screens/Manga'; import Reader from './screens/Reader'; import Search from './screens/SearchSingle'; import NavBarTitle from './context/NavbarTitle'; +import DarkTheme from './context/DarkTheme'; export default function App() { const [title, setTitle] = useState('Tachidesk'); - const contextValue = { title, setTitle }; + const [darkTheme, setDarkTheme] = useState(true); + const navTitleContext = { title, setTitle }; + const darkThemeContext = { darkTheme, setDarkTheme }; + + const theme = React.useMemo( + () => createMuiTheme({ + palette: { + type: darkTheme ? 'dark' : 'light', + }, + }), + [darkTheme], + ); return ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); } diff --git a/webUI/react/src/components/NavBar.tsx b/webUI/react/src/components/NavBar.tsx index 894bdd2d..df9106e2 100644 --- a/webUI/react/src/components/NavBar.tsx +++ b/webUI/react/src/components/NavBar.tsx @@ -1,12 +1,17 @@ import React, { useContext, useState } from 'react'; import { makeStyles } from '@material-ui/core/styles'; +import MoreIcon from '@material-ui/icons/MoreVert'; import AppBar from '@material-ui/core/AppBar'; import Toolbar from '@material-ui/core/Toolbar'; import Typography from '@material-ui/core/Typography'; import IconButton from '@material-ui/core/IconButton'; import MenuIcon from '@material-ui/icons/Menu'; +import MenuItem from '@material-ui/core/MenuItem'; +import Menu from '@material-ui/core/Menu'; + import TemporaryDrawer from './TemporaryDrawer'; import NavBarTitle from '../context/NavbarTitle'; +import DarkTheme from '../context/DarkTheme'; const useStyles = makeStyles((theme) => ({ root: { @@ -20,14 +25,35 @@ const useStyles = makeStyles((theme) => ({ }, })); +// const theme = createMuiTheme({ +// overrides: { +// MuiAppBar: { +// colorPrimary: { backgroundColor: '#FFC0CB' }, +// }, +// }, +// palette: { type: 'dark' }, +// }); + export default function NavBar() { const classes = useStyles(); const [drawerOpen, setDrawerOpen] = useState(false); + const [anchorEl, setAnchorEl] = React.useState(null); const { title } = useContext(NavBarTitle); + const open = Boolean(anchorEl); + + const { setDarkTheme } = useContext(DarkTheme); + + const handleMenu = (event: React.MouseEvent) => { + setAnchorEl(event.currentTarget); + }; + + const handleClose = () => { + setAnchorEl(null); + }; return (
- + {title} + + + + + setDarkTheme(true)}>Dark Theme + setDarkTheme(false)}>Light Theme + diff --git a/webUI/react/src/context/DarkTheme.tsx b/webUI/react/src/context/DarkTheme.tsx new file mode 100644 index 00000000..fabf32b6 --- /dev/null +++ b/webUI/react/src/context/DarkTheme.tsx @@ -0,0 +1,13 @@ +import React from 'react'; + +type ContextType = { + darkTheme: boolean + setDarkTheme: React.Dispatch> +}; + +const DarkTheme = React.createContext({ + darkTheme: true, + setDarkTheme: ():void => {}, +}); + +export default DarkTheme;