diff --git a/frontend/src/App/App.js b/frontend/src/App/App.js
index 41691a823..5715dd3e3 100644
--- a/frontend/src/App/App.js
+++ b/frontend/src/App/App.js
@@ -12,11 +12,10 @@ function App({ store, history }) {
-
-
-
-
-
+
+
+
+
diff --git a/frontend/src/App/ApplyTheme.js b/frontend/src/App/ApplyTheme.js
deleted file mode 100644
index dbec3bde2..000000000
--- a/frontend/src/App/ApplyTheme.js
+++ /dev/null
@@ -1,49 +0,0 @@
-import PropTypes from 'prop-types';
-import React, { Fragment, useCallback, useEffect } from 'react';
-import { connect } from 'react-redux';
-import { createSelector } from 'reselect';
-import themes from 'Styles/Themes';
-
-function createMapStateToProps() {
- return createSelector(
- (state) => state.settings.ui.item.theme || window.Radarr.theme,
- (
- theme
- ) => {
- return {
- theme
- };
- }
- );
-}
-
-function ApplyTheme({ theme, children }) {
- // Update the CSS Variables
- const updateCSSVariables = useCallback(() => {
- const arrayOfVariableKeys = Object.keys(themes[theme]);
- const arrayOfVariableValues = Object.values(themes[theme]);
-
- // Loop through each array key and set the CSS Variables
- arrayOfVariableKeys.forEach((cssVariableKey, index) => {
- // Based on our snippet from MDN
- document.documentElement.style.setProperty(
- `--${cssVariableKey}`,
- arrayOfVariableValues[index]
- );
- });
- }, [theme]);
-
- // On Component Mount and Component Update
- useEffect(() => {
- updateCSSVariables(theme);
- }, [updateCSSVariables, theme]);
-
- return {children};
-}
-
-ApplyTheme.propTypes = {
- theme: PropTypes.string.isRequired,
- children: PropTypes.object.isRequired
-};
-
-export default connect(createMapStateToProps)(ApplyTheme);
diff --git a/frontend/src/App/ApplyTheme.tsx b/frontend/src/App/ApplyTheme.tsx
new file mode 100644
index 000000000..cdd430541
--- /dev/null
+++ b/frontend/src/App/ApplyTheme.tsx
@@ -0,0 +1,37 @@
+import React, { Fragment, ReactNode, useCallback, useEffect } from 'react';
+import { useSelector } from 'react-redux';
+import { createSelector } from 'reselect';
+import themes from 'Styles/Themes';
+import AppState from './State/AppState';
+
+interface ApplyThemeProps {
+ children: ReactNode;
+}
+
+function createThemeSelector() {
+ return createSelector(
+ (state: AppState) => state.settings.ui.item.theme || window.Radarr.theme,
+ (theme) => {
+ return theme;
+ }
+ );
+}
+
+function ApplyTheme({ children }: ApplyThemeProps) {
+ const theme = useSelector(createThemeSelector());
+
+ const updateCSSVariables = useCallback(() => {
+ Object.entries(themes[theme]).forEach(([key, value]) => {
+ document.documentElement.style.setProperty(`--${key}`, value);
+ });
+ }, [theme]);
+
+ // On Component Mount and Component Update
+ useEffect(() => {
+ updateCSSVariables();
+ }, [updateCSSVariables, theme]);
+
+ return {children};
+}
+
+export default ApplyTheme;
diff --git a/frontend/src/Styles/Themes/index.js b/frontend/src/Styles/Themes/index.js
index d93c5dd8c..4dec39164 100644
--- a/frontend/src/Styles/Themes/index.js
+++ b/frontend/src/Styles/Themes/index.js
@@ -2,7 +2,7 @@ import * as dark from './dark';
import * as light from './light';
const defaultDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
-const auto = defaultDark ? { ...dark } : { ...light };
+const auto = defaultDark ? dark : light;
export default {
auto,
diff --git a/frontend/src/login.html b/frontend/src/login.html
index 4ba94c956..d1a480719 100644
--- a/frontend/src/login.html
+++ b/frontend/src/login.html
@@ -57,8 +57,8 @@