diff --git a/ui/src/configuration/Configuration.js b/ui/src/configuration/Configuration.js index dd5979eed..b0c5bb76a 100644 --- a/ui/src/configuration/Configuration.js +++ b/ui/src/configuration/Configuration.js @@ -1,11 +1,10 @@ import React from 'react' -import { useSelector, useDispatch } from 'react-redux' -import Card from '@material-ui/core/Card' -import CardContent from '@material-ui/core/CardContent' -import Button from '@material-ui/core/Button' -import { useTranslate, Title } from 'react-admin' +import { useDispatch, useSelector } from 'react-redux' +import { Card, CardContent, MenuItem, Select } from '@material-ui/core' +import { Title, useTranslate } from 'react-admin' import { makeStyles } from '@material-ui/core/styles' import { changeTheme } from './actions' +import themes from '../themes' const useStyles = makeStyles({ label: { width: '10em', display: 'inline-block' }, @@ -17,27 +16,24 @@ const Configuration = () => { const classes = useStyles() const theme = useSelector((state) => state.theme) const dispatch = useDispatch() + const themeNames = Object.keys(themes).sort() + return ( - {translate('menu.theme.name')} - dispatch(changeTheme('light'))} + {translate('menu.theme')} + { + dispatch(changeTheme(event.target.value)) + }} > - {translate('theme.light')} - - dispatch(changeTheme('dark'))} - > - {translate('theme.dark')} - + {themeNames.map((t) => ( + {themes[t].name} + ))} + ) diff --git a/ui/src/configuration/themeReducer.js b/ui/src/configuration/themeReducer.js index 71141b90d..db4c24447 100644 --- a/ui/src/configuration/themeReducer.js +++ b/ui/src/configuration/themeReducer.js @@ -1,6 +1,6 @@ import { CHANGE_THEME } from './actions' -export default (previousState = 'dark', { type, payload }) => { +export default (previousState = 'DarkTheme', { type, payload }) => { if (type === CHANGE_THEME) { return payload } diff --git a/ui/src/i18n/en.js b/ui/src/i18n/en.js index da12222aa..78d19a74f 100644 --- a/ui/src/i18n/en.js +++ b/ui/src/i18n/en.js @@ -47,13 +47,7 @@ export default deepmerge(englishMessages, { settings: 'Settings', configuration: 'Configuration', version: 'Version %{version}', - theme: { - name: 'Theme' - } - }, - theme: { - dark: 'Dark', - light: 'Light' + theme: 'Theme' }, player: { panelTitle: 'Play Queue', diff --git a/ui/src/layout/Layout.js b/ui/src/layout/Layout.js index 3c207206d..72d461ca1 100644 --- a/ui/src/layout/Layout.js +++ b/ui/src/layout/Layout.js @@ -4,7 +4,7 @@ import { Layout } from 'react-admin' import { makeStyles } from '@material-ui/core/styles' import Menu from './Menu' import AppBar from './AppBar' -import { DarkTheme, LightTheme } from '../themes' +import themes from '../themes' const useStyles = makeStyles({ root: { paddingBottom: '80px' } @@ -12,19 +12,15 @@ const useStyles = makeStyles({ export default (props) => { const classes = useStyles() - const theme = useSelector((state) => - state.theme === 'dark' ? DarkTheme : LightTheme - ) + const theme = useSelector((state) => themes[state.theme] || themes.DarkTheme) return ( - <> - - > + ) } diff --git a/ui/src/layout/Login.js b/ui/src/layout/Login.js index d76fef825..64acc94c1 100644 --- a/ui/src/layout/Login.js +++ b/ui/src/layout/Login.js @@ -14,7 +14,7 @@ import LockIcon from '@material-ui/icons/Lock' import { Notification, useLogin, useNotify, useTranslate } from 'react-admin' -import { LightTheme } from '../themes' +import LightTheme from '../themes/light' const useStyles = makeStyles((theme) => ({ main: { diff --git a/ui/src/themes/dark.js b/ui/src/themes/dark.js index ed7f4a404..68475f25f 100644 --- a/ui/src/themes/dark.js +++ b/ui/src/themes/dark.js @@ -1,6 +1,7 @@ import blue from '@material-ui/core/colors/blue' export default { + name: 'Dark (default)', palette: { primary: { main: '#90caf9' diff --git a/ui/src/themes/index.js b/ui/src/themes/index.js index bb9812739..4778eae68 100644 --- a/ui/src/themes/index.js +++ b/ui/src/themes/index.js @@ -1,4 +1,4 @@ import LightTheme from './light' import DarkTheme from './dark' -export { LightTheme, DarkTheme } +export default { LightTheme, DarkTheme } diff --git a/ui/src/themes/light.js b/ui/src/themes/light.js index a4a99b0f2..4605d5444 100644 --- a/ui/src/themes/light.js +++ b/ui/src/themes/light.js @@ -1,4 +1,5 @@ export default { + name: 'Light', palette: { secondary: { light: '#5f5fc4',