Files
yt-dlp-webui/frontend/src/components/ThemeToggler.tsx
2024-11-12 11:31:25 +01:00

35 lines
1.0 KiB
TypeScript

import Brightness4 from '@mui/icons-material/Brightness4'
import Brightness5 from '@mui/icons-material/Brightness5'
import BrightnessAuto from '@mui/icons-material/BrightnessAuto'
import { ListItemButton, ListItemIcon, ListItemText } from '@mui/material'
import { Theme, themeState } from '../atoms/settings'
import { useI18n } from '../hooks/useI18n'
import { useAtom } from 'jotai'
const ThemeToggler: React.FC = () => {
const [theme, setTheme] = useAtom(themeState)
const actions: Record<Theme, React.ReactNode> = {
system: <BrightnessAuto />,
light: <Brightness4 />,
dark: <Brightness5 />,
}
const themes: Theme[] = ['system', 'light', 'dark']
const currentTheme = themes.indexOf(theme)
const { i18n } = useI18n()
return (
<ListItemButton onClick={() => {
setTheme(themes[(currentTheme + 1) % themes.length])
}}>
<ListItemIcon>
{actions[theme]}
</ListItemIcon>
<ListItemText primary={i18n.t('themeTogglerLabel')} />
</ListItemButton>
)
}
export default ThemeToggler