import { ThemeProvider } from '@emotion/react' import ChevronLeft from '@mui/icons-material/ChevronLeft' import Dashboard from '@mui/icons-material/Dashboard' import DownloadIcon from '@mui/icons-material/Download' import Menu from '@mui/icons-material/Menu' import SettingsIcon from '@mui/icons-material/Settings' import SettingsEthernet from '@mui/icons-material/SettingsEthernet' import { Box, createTheme } from '@mui/material' import CssBaseline from '@mui/material/CssBaseline' import Divider from '@mui/material/Divider' import IconButton from '@mui/material/IconButton' import List from '@mui/material/List' import ListItemButton from '@mui/material/ListItemButton' import ListItemIcon from '@mui/material/ListItemIcon' import ListItemText from '@mui/material/ListItemText' import Toolbar from '@mui/material/Toolbar' import Typography from '@mui/material/Typography' import { grey } from '@mui/material/colors' import { Suspense, useMemo, useState } from 'react' import { Link, Outlet } from 'react-router-dom' import { useRecoilValue } from 'recoil' import { settingsState } from './atoms/settings' import { connectedState } from './atoms/status' import AppBar from './components/AppBar' import Drawer from './components/Drawer' import FreeSpaceIndicator from './components/FreeSpaceIndicator' import Logout from './components/Logout' import SocketSubscriber from './components/SocketSubscriber' import ThemeToggler from './components/ThemeToggler' import { useI18n } from './hooks/useI18n' import Toaster from './providers/ToasterProvider' import TerminalIcon from '@mui/icons-material/Terminal' export default function Layout() { const [open, setOpen] = useState(false) const settings = useRecoilValue(settingsState) const isConnected = useRecoilValue(connectedState) 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(state => !state) const { i18n } = useI18n() return ( {settings.appTitle}
{isConnected ? settings.serverAddr : i18n.t('notConnectedText')}
) }