diff --git a/components/common/EmptyPlaceholder.js b/components/common/EmptyPlaceholder.js index b5394e85..4952d78d 100644 --- a/components/common/EmptyPlaceholder.js +++ b/components/common/EmptyPlaceholder.js @@ -7,7 +7,11 @@ import styles from './EmptyPlaceholder.module.css'; function EmptyPlaceholder({ msg, children }) { return (
- } size="xlarge" /> + } + size="xlarge" + className={styles.icon} + />

{msg}

{children}
diff --git a/components/common/Icon.js b/components/common/Icon.js index e9d96eb5..dea70bf7 100644 --- a/components/common/Icon.js +++ b/components/common/Icon.js @@ -1,6 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames'; +import Image from 'next/image'; import styles from './Icon.module.css'; function Icon({ icon, className, size = 'medium', ...props }) { @@ -15,7 +16,7 @@ function Icon({ icon, className, size = 'medium', ...props }) { })} {...props} > - {icon} + {typeof icon === 'string' ? : icon} ); } diff --git a/components/forms/LoginForm.js b/components/forms/LoginForm.js index f8a7c1a0..e86c00ee 100644 --- a/components/forms/LoginForm.js +++ b/components/forms/LoginForm.js @@ -76,7 +76,11 @@ export default function LoginForm() { {() => (
- } size="xlarge" className={styles.icon} /> + } + size="xlarge" + className={styles.icon} + />

{process.env.NEXT_PUBLIC_CUSTOM_TITLE || 'umami'}

diff --git a/components/layout/Header.js b/components/layout/Header.js index 9f946a45..e734757f 100644 --- a/components/layout/Header.js +++ b/components/layout/Header.js @@ -26,7 +26,11 @@ export default function Header() { {allowUpdate && }
- } size="large" className={styles.logo} /> + } + size="large" + className={styles.logo} + /> diff --git a/lang/de-DE.json b/lang/de-DE.json index f95f4fc8..5cef09ee 100644 --- a/lang/de-DE.json +++ b/lang/de-DE.json @@ -79,7 +79,7 @@ "message.no-data-available": "Keine Daten vorhanden.", "message.no-websites-configured": "Es ist keine Webseite vorhanden.", "message.page-not-found": "Seite nicht gefunden.", - "message.powered-by": "Betrieben durch {name}", + "message.powered-by": "Powered by {name}", "message.reset-warning": "Alle Daten für diese Webseite werden gelöscht, jedoch bleibt der Tracking Code bestehen.", "message.save-success": "Erfolgreich gespeichert.", "message.share-url": "Dies ist die öffentliche URL zum Teilen für {target}.", diff --git a/next.config.js b/next.config.js index e26d882e..d68d688d 100644 --- a/next.config.js +++ b/next.config.js @@ -3,7 +3,7 @@ const pkg = require('./package.json'); const contentSecurityPolicy = ` default-src 'self'; - img-src *; + img-src * 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; connect-src 'self' api.umami.is; @@ -52,6 +52,10 @@ module.exports = { return config; }, + images: { + dangerouslyAllowSVG: true, + domains: [new URL(process.env.NEXT_PUBLIC_CUSTOM_LOGO_URL).hostname], + }, async headers() { return [ { diff --git a/pages/_app.js b/pages/_app.js index b8653113..7bd80130 100644 --- a/pages/_app.js +++ b/pages/_app.js @@ -27,12 +27,33 @@ export default function App({ Component, pageProps }) { return ( - - - - + + + + - + diff --git a/public/intl/messages/de-DE.json b/public/intl/messages/de-DE.json index ee999544..7f24e375 100644 --- a/public/intl/messages/de-DE.json +++ b/public/intl/messages/de-DE.json @@ -582,7 +582,7 @@ "message.powered-by": [ { "type": 0, - "value": "Betrieben durch " + "value": "Powered by " }, { "type": 1,