import { ThemeProvider } from "@emotion/react"; import { ChevronLeft, Dashboard, // Download, Menu, Settings as SettingsIcon, SettingsEthernet, Storage } from "@mui/icons-material"; import { Box, createTheme, CssBaseline, Divider, IconButton, List, ListItemIcon, ListItemText, Toolbar, Typography } from "@mui/material"; import { grey } from "@mui/material/colors"; import ListItemButton from '@mui/material/ListItemButton'; import { useMemo, useState } from "react"; import { Provider, useSelector } from "react-redux"; import { BrowserRouter as Router, Link, Route, Routes } from 'react-router-dom'; import { AppBar } from "./components/AppBar"; import { Drawer } from "./components/Drawer"; import Home from "./Home"; import Settings from "./Settings"; import { RootState, store } from './stores/store'; import { formatGiB, getWebSocketEndpoint } from "./utils"; function AppContent() { const [open, setOpen] = useState(false); const settings = useSelector((state: RootState) => state.settings) const status = useSelector((state: RootState) => state.status) const socket = useMemo(() => new WebSocket(getWebSocketEndpoint()), []) const mode = settings.theme const theme = useMemo(() => createTheme({ palette: { mode: settings.theme, background: { default: settings.theme === 'light' ? grey[50] : '#121212' }, }, }), [settings.theme] ); const toggleDrawer = () => { setOpen(!open); }; return ( yt-dlp WebUI { status.freeSpace ? {formatGiB(status.freeSpace)} : null } {status.connected ? settings.serverAddr : 'not connected'} } /> } /> ); } export function App() { return ( ); }