diff --git a/resources/i18n/cs.json b/resources/i18n/cs.json
index 009fcad7..217865e4 100644
--- a/resources/i18n/cs.json
+++ b/resources/i18n/cs.json
@@ -265,7 +265,7 @@
"menu": {
"library": "Knihovna",
"settings": "Nastavení",
- "version": "Verze %{version}",
+ "version": "Verze",
"theme": "Motiv",
"personal": {
"name": "Osobní",
diff --git a/resources/i18n/da.json b/resources/i18n/da.json
index e4f160a1..9a915c36 100644
--- a/resources/i18n/da.json
+++ b/resources/i18n/da.json
@@ -257,7 +257,7 @@
"menu": {
"library": "Bibliotek",
"settings": "Indstillinger",
- "version": "Version %{version}",
+ "version": "Version",
"theme": "Tema",
"personal": {
"name": "Personligt",
diff --git a/resources/i18n/de.json b/resources/i18n/de.json
index 454e64ac..3a0c5583 100644
--- a/resources/i18n/de.json
+++ b/resources/i18n/de.json
@@ -257,7 +257,7 @@
"menu": {
"library": "Bibliothek",
"settings": "Einstellungen",
- "version": "Version %{version}",
+ "version": "Version",
"theme": "Design",
"personal": {
"name": "Persönlich",
diff --git a/resources/i18n/es.json b/resources/i18n/es.json
index aaf1a895..b6a9ca15 100644
--- a/resources/i18n/es.json
+++ b/resources/i18n/es.json
@@ -265,7 +265,7 @@
"menu": {
"library": "Biblioteca",
"settings": "Ajustes",
- "version": "Versión %{version}",
+ "version": "Versión",
"theme": "Tema",
"personal": {
"name": "Personal",
diff --git a/resources/i18n/fr.json b/resources/i18n/fr.json
index ba8e04b0..16e2c340 100644
--- a/resources/i18n/fr.json
+++ b/resources/i18n/fr.json
@@ -265,7 +265,7 @@
"menu": {
"library": "Bibliothèque",
"settings": "Paramètres",
- "version": "Version%{version}",
+ "version": "Version",
"theme": "Thème",
"personal": {
"name": "Paramètres personnels",
diff --git a/resources/i18n/it.json b/resources/i18n/it.json
index 870afb4a..49f791aa 100644
--- a/resources/i18n/it.json
+++ b/resources/i18n/it.json
@@ -265,7 +265,7 @@
"menu": {
"library": "Libreria",
"settings": "Impostazioni",
- "version": "Versione %{version}",
+ "version": "Versione",
"theme": "Tema",
"personal": {
"name": "Personale",
diff --git a/resources/i18n/ja.json b/resources/i18n/ja.json
index 7e45c64c..69ca9f07 100644
--- a/resources/i18n/ja.json
+++ b/resources/i18n/ja.json
@@ -265,7 +265,7 @@
"menu": {
"library": "ライブラリ",
"settings": "設定",
- "version": "バージョン %{version}",
+ "version": "バージョン",
"theme": "テーマ",
"personal": {
"name": "個人設定",
diff --git a/resources/i18n/nl.json b/resources/i18n/nl.json
index c52e3115..a8e415a6 100644
--- a/resources/i18n/nl.json
+++ b/resources/i18n/nl.json
@@ -222,7 +222,7 @@
"menu": {
"library": "Bibliotheek",
"settings": "Instellingen",
- "version": "Versie %{version}",
+ "version": "Versie",
"theme": "Thema",
"personal": {
"name": "Persoonlijk",
diff --git a/resources/i18n/pl.json b/resources/i18n/pl.json
index 53cf08e2..ea99623a 100644
--- a/resources/i18n/pl.json
+++ b/resources/i18n/pl.json
@@ -265,7 +265,7 @@
"menu": {
"library": "Biblioteka",
"settings": "Ustawienia",
- "version": "Wersja %{version}",
+ "version": "Wersja",
"theme": "Wygląd",
"personal": {
"name": "Personalizacja",
diff --git a/resources/i18n/pt.json b/resources/i18n/pt.json
index eb8bf691..54b5a60f 100644
--- a/resources/i18n/pt.json
+++ b/resources/i18n/pt.json
@@ -265,7 +265,7 @@
"albumList": "Álbuns",
"library": "Biblioteca",
"settings": "Configurações",
- "version": "Versão %{version}",
+ "version": "Versão",
"theme": "Tema",
"personal": {
"name": "Pessoal",
@@ -276,6 +276,13 @@
}
}
},
+ "about": {
+ "links": {
+ "homepage": "Website",
+ "source": "Código fonte",
+ "featureRequests": "Pedido de funcionalidade"
+ }
+ },
"player": {
"playListsText": "Fila de Execução",
"openText": "Abrir",
diff --git a/resources/i18n/tr.json b/resources/i18n/tr.json
index c41c0893..3c22bf63 100644
--- a/resources/i18n/tr.json
+++ b/resources/i18n/tr.json
@@ -257,7 +257,7 @@
"menu": {
"library": "Müzik kütüphanesi",
"settings": "Ayarlar",
- "version": "Sürüm %{version}",
+ "version": "Sürüm",
"theme": "Tema",
"personal": {
"name": "Kişisel",
diff --git a/resources/i18n/zn.json b/resources/i18n/zn.json
index 60748ee7..42193fe6 100644
--- a/resources/i18n/zn.json
+++ b/resources/i18n/zn.json
@@ -265,7 +265,7 @@
"menu": {
"library": "曲库",
"settings": "设置",
- "version": "版本 %{version}",
+ "version": "版本",
"theme": "主题",
"personal": {
"name": "个性化",
diff --git a/ui/src/i18n/en.json b/ui/src/i18n/en.json
index 344b222f..cc435feb 100644
--- a/ui/src/i18n/en.json
+++ b/ui/src/i18n/en.json
@@ -265,7 +265,7 @@
"menu": {
"library": "Library",
"settings": "Settings",
- "version": "Version %{version}",
+ "version": "Version",
"theme": "Theme",
"personal": {
"name": "Personal",
@@ -275,7 +275,15 @@
"defaultView": "Default View"
}
},
- "albumList": "Albums"
+ "albumList": "Albums",
+ "about": "About"
+ },
+ "about": {
+ "links": {
+ "homepage": "Home page",
+ "source": "Source code",
+ "featureRequests": "Feature requests"
+ }
},
"player": {
"playListsText": "Play Queue",
diff --git a/ui/src/layout/AboutDialog.js b/ui/src/layout/AboutDialog.js
new file mode 100644
index 00000000..2c7ea82e
--- /dev/null
+++ b/ui/src/layout/AboutDialog.js
@@ -0,0 +1,146 @@
+import React from 'react'
+import PropTypes from 'prop-types'
+import { withStyles } from '@material-ui/core/styles'
+import Link from '@material-ui/core/Link'
+import Dialog from '@material-ui/core/Dialog'
+import MuiDialogTitle from '@material-ui/core/DialogTitle'
+import MuiDialogContent from '@material-ui/core/DialogContent'
+import IconButton from '@material-ui/core/IconButton'
+import CloseIcon from '@material-ui/icons/Close'
+import Typography from '@material-ui/core/Typography'
+import TableContainer from '@material-ui/core/TableContainer'
+import Table from '@material-ui/core/Table'
+import TableBody from '@material-ui/core/TableBody'
+import TableRow from '@material-ui/core/TableRow'
+import TableCell from '@material-ui/core/TableCell'
+import Paper from '@material-ui/core/Paper'
+import FavoriteBorderIcon from '@material-ui/icons/FavoriteBorder'
+import inflection from 'inflection'
+import { useTranslate } from 'react-admin'
+import config from '../config'
+
+const styles = (theme) => ({
+ root: {
+ margin: 0,
+ padding: theme.spacing(2),
+ },
+ closeButton: {
+ position: 'absolute',
+ right: theme.spacing(1),
+ top: theme.spacing(1),
+ color: theme.palette.grey[500],
+ },
+})
+
+const links = {
+ homepage: 'navidrome.org',
+ reddit: 'reddit.com/r/Navidrome',
+ twitter: 'twitter.com/navidrome',
+ discord: 'discord.gg/xh7j7yF',
+ source: 'github.com/deluan/navidrome',
+ featureRequests: 'github.com/deluan/navidrome/issues',
+}
+
+const DialogTitle = withStyles(styles)((props) => {
+ const { children, classes, onClose, ...other } = props
+ return (
+
+ {children}
+ {onClose ? (
+
+
+
+ ) : null}
+
+ )
+})
+
+const DialogContent = withStyles((theme) => ({
+ root: {
+ padding: theme.spacing(2),
+ },
+}))(MuiDialogContent)
+
+const AboutDialog = ({ open, onClose }) => {
+ const translate = useTranslate()
+ return (
+
+ )
+}
+
+AboutDialog.propTypes = {
+ open: PropTypes.bool.isRequired,
+ onClose: PropTypes.func.isRequired,
+}
+
+export default AboutDialog
diff --git a/ui/src/layout/AppBar.js b/ui/src/layout/AppBar.js
index 583f08ca..2e01a53e 100644
--- a/ui/src/layout/AppBar.js
+++ b/ui/src/layout/AppBar.js
@@ -1,40 +1,53 @@
import React, { forwardRef } from 'react'
-import {
- AppBar as RAAppBar,
- MenuItemLink,
- UserMenu,
- useTranslate,
-} from 'react-admin'
-import { makeStyles } from '@material-ui/core'
+import { AppBar as RAAppBar, UserMenu, useTranslate } from 'react-admin'
+import { makeStyles, MenuItem, ListItemIcon } from '@material-ui/core'
import InfoIcon from '@material-ui/icons/Info'
-import config from '../config'
+import AboutDialog from './AboutDialog'
const useStyles = makeStyles((theme) => ({
- menuItem: {
+ root: {
color: theme.palette.text.secondary,
},
+ active: {
+ color: theme.palette.text.primary,
+ },
+ icon: { minWidth: theme.spacing(5) },
}))
-const VersionMenu = forwardRef((props, ref) => {
+const AboutMenuItem = forwardRef(({ onClick, ...rest }, ref) => {
+ const classes = useStyles(rest)
const translate = useTranslate()
- const classes = useStyles()
+ const [open, setOpen] = React.useState(false)
+
+ const handleOpen = () => {
+ setOpen(true)
+ }
+ const handleClose = () => {
+ onClick && onClick()
+ setOpen(false)
+ }
+ const label = translate('menu.about')
return (
- }
- className={classes.menuItem}
- sidebarIsOpen={true}
- />
+ <>
+
+
+ >
)
})
const CustomUserMenu = (props) => (
-
+
)