/* * 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 { Container } from '@mui/material'; import CssBaseline from '@mui/material/CssBaseline'; import { createTheme, ThemeProvider, Theme, StyledEngineProvider, } from '@mui/material/styles'; import NavBar from 'components/navbar/NavBar'; import NavbarContext from 'context/NavbarContext'; import DarkTheme from 'context/DarkTheme'; import useLocalStorage from 'util/useLocalStorage'; import MangaSources from 'screens/manga/MangaSources'; import AnimeSources from 'screens/anime/AnimeSources'; 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/manga/Library'; import SearchSingle from 'screens/manga/SearchSingle'; import AnimeSearchSingle from 'screens/anime/AnimeSearchSingle'; import SourceConfigure from 'screens/manga/SourceConfigure'; import Manga from 'screens/manga/Manga'; import Anime from 'screens/anime/Anime'; import MangaExtensions from 'screens/manga/MangaExtensions'; import SourceMangas from 'screens/manga/SourceMangas'; import SourceAnimes from 'screens/anime/SourceAnimes'; import Reader from 'screens/manga/Reader'; import Player from 'screens/anime/Player'; import AnimeExtensions from 'screens/anime/AnimeExtensions'; import DownloadQueue from 'screens/manga/DownloadQueue'; 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], ); return ( {/* general routes */} ( )} /> {/* Manga Routes */} <> {/* Anime Routes */} } /> ); }