/* * Copyright (C) Contributors to the Suwayomi project * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ import React, { useState } from 'react'; import { BrowserRouter as Router, Switch, Route, Redirect, } from 'react-router-dom'; import { QueryParamProvider } from 'use-query-params'; import { Container, useMediaQuery } from '@mui/material'; import CssBaseline from '@mui/material/CssBaseline'; import { createTheme, ThemeProvider, Theme, StyledEngineProvider, } from '@mui/material/styles'; import DefaultNavBar from 'components/navbar/DefaultNavBar'; import NavbarContext from 'components/context/NavbarContext'; import DarkTheme from 'components/context/DarkTheme'; import useLocalStorage from 'util/useLocalStorage'; import Settings from 'screens/Settings'; import About from 'screens/settings/About'; import Categories from 'screens/settings/Categories'; import Backup from 'screens/settings/Backup'; import Library from 'screens/Library'; import SearchSingle from 'screens/SearchSingle'; import SourceConfigure from 'screens/SourceConfigure'; import Manga from 'screens/Manga'; import SourceMangas from 'screens/SourceMangas'; import Reader from 'screens/Reader'; import Updates from 'screens/Updates'; import DownloadQueue from 'screens/DownloadQueue'; import Browse from 'screens/Browse'; declare module '@mui/styles/defaultTheme' { // eslint-disable-next-line @typescript-eslint/no-empty-interface interface DefaultTheme extends Theme { } } export default function App() { const [title, setTitle] = useState('Tachidesk'); const [action, setAction] = useState(
); const [override, setOverride] = useState({ status: false, value:
, }); const [darkTheme, setDarkTheme] = useLocalStorage('darkTheme', true); const navBarContext = { title, setTitle, action, setAction, override, setOverride, }; const darkThemeContext = { darkTheme, setDarkTheme, }; const theme = React.useMemo( () => createTheme({ palette: { mode: darkTheme ? 'dark' : 'light', }, components: { MuiCssBaseline: { styleOverrides: ` *::-webkit-scrollbar { width: 10px; background: ${darkTheme ? '#222' : '#e1e1e1'}; } *::-webkit-scrollbar-thumb { background: ${darkTheme ? '#111' : '#aaa'}; border-radius: 5px; } `, }, }, }), [darkTheme], ); // this can only be used after the theme object is created const isMobileWidth = useMediaQuery(theme.breakpoints.down('sm')); return ( {/* General Routes */} ( )} /> {/* Manga Routes */} <> ( ) } /> ); }