diff --git a/backend/common/src/helper.py b/backend/common/src/helper.py
index 5f001f8d..d2ec8538 100644
--- a/backend/common/src/helper.py
+++ b/backend/common/src/helper.py
@@ -231,7 +231,7 @@ def ta_host_parser(ta_host: str) -> tuple[list[str], list[str]]:
def get_stylesheets() -> list:
"""Get all valid stylesheets from /static/css"""
- stylesheets = ["dark.css", "light.css", "matrix.css", "midnight.css"]
+ stylesheets = ["dark.css", "light.css", "matrix.css", "midnight.css", "custom.css"]
return stylesheets
diff --git a/frontend/src/configuration/colours/components/css/dark.css b/frontend/public/css/custom.css
similarity index 100%
rename from frontend/src/configuration/colours/components/css/dark.css
rename to frontend/public/css/custom.css
diff --git a/frontend/public/css/dark.css b/frontend/public/css/dark.css
new file mode 100644
index 00000000..1ac16ca6
--- /dev/null
+++ b/frontend/public/css/dark.css
@@ -0,0 +1,16 @@
+:root {
+ --main-bg: #00202f;
+ --highlight-bg: #00293b;
+ --highlight-error: #990202;
+ --highlight-error-light: #c44343;
+ --highlight-bg-transparent: #00293baf;
+ --main-font: #eeeeee;
+ --accent-font-dark: #259485;
+ --accent-font-light: #97d4c8;
+ --img-filter: invert(50%) sepia(9%) saturate(2940%) hue-rotate(122deg) brightness(94%)
+ contrast(90%);
+ --img-filter-error: invert(16%) sepia(60%) saturate(3717%) hue-rotate(349deg) brightness(86%)
+ contrast(120%);
+ --banner: url('/img/banner-tube-archivist-dark.png');
+ --logo: url('/img/logo-tube-archivist-dark.png');
+}
diff --git a/frontend/src/configuration/colours/components/css/light.css b/frontend/public/css/light.css
similarity index 100%
rename from frontend/src/configuration/colours/components/css/light.css
rename to frontend/public/css/light.css
diff --git a/frontend/src/configuration/colours/components/css/matrix.css b/frontend/public/css/matrix.css
similarity index 100%
rename from frontend/src/configuration/colours/components/css/matrix.css
rename to frontend/public/css/matrix.css
diff --git a/frontend/src/configuration/colours/components/css/midnight.css b/frontend/public/css/midnight.css
similarity index 100%
rename from frontend/src/configuration/colours/components/css/midnight.css
rename to frontend/public/css/midnight.css
diff --git a/frontend/src/api/actions/updateUserConfig.ts b/frontend/src/api/actions/updateUserConfig.ts
index 06eeddab..84c5ce3d 100644
--- a/frontend/src/api/actions/updateUserConfig.ts
+++ b/frontend/src/api/actions/updateUserConfig.ts
@@ -1,7 +1,12 @@
import { SortByType, SortOrderType, ViewLayoutType } from '../../pages/Home';
import APIClient from '../../functions/APIClient';
-export type ColourVariants = 'dark.css' | 'light.css' | 'matrix.css' | 'midnight.css';
+export type ColourVariants =
+ | 'dark.css'
+ | 'light.css'
+ | 'matrix.css'
+ | 'midnight.css'
+ | 'custom.css';
export const FileSizeUnits = {
Binary: 'binary',
diff --git a/frontend/src/configuration/colours/Colours.tsx b/frontend/src/configuration/colours/Colours.tsx
new file mode 100644
index 00000000..c4654f32
--- /dev/null
+++ b/frontend/src/configuration/colours/Colours.tsx
@@ -0,0 +1,34 @@
+import { useUserConfigStore } from '../../stores/UserConfigStore';
+import { ColourConstant } from './colourConstant';
+import CustomStylesheet from './components/Custom';
+import DarkStylesheet from './components/Dark';
+import LightStylesheet from './components/Light';
+import MatrixStylesheet from './components/Matrix';
+import MidnightStylesheet from './components/Midnight';
+
+const Colours = () => {
+ const { userConfig } = useUserConfigStore();
+ const stylesheet = userConfig?.stylesheet;
+
+ switch (stylesheet) {
+ case ColourConstant.Dark:
+ return
diff --git a/frontend/src/pages/SettingsUser.tsx b/frontend/src/pages/SettingsUser.tsx
index da46c26c..b822eb05 100644
--- a/frontend/src/pages/SettingsUser.tsx
+++ b/frontend/src/pages/SettingsUser.tsx
@@ -1,10 +1,8 @@
-import { useNavigate } from 'react-router-dom';
import updateUserConfig, {
ColourVariants,
FileSizeUnits,
UserConfigType,
} from '../api/actions/updateUserConfig';
-import { ColourConstant } from '../configuration/colours/useColours';
import SettingsNavigation from '../components/SettingsNavigation';
import Notifications from '../components/Notifications';
import Button from '../components/Button';
@@ -12,14 +10,13 @@ import useIsAdmin from '../functions/useIsAdmin';
import { useUserConfigStore } from '../stores/UserConfigStore';
import { useEffect, useState } from 'react';
import ToggleConfig from '../components/ToggleConfig';
+import { ColourConstant } from '../configuration/colours/colourConstant';
const SettingsUser = () => {
const { userConfig, setUserConfig } = useUserConfigStore();
const isAdmin = useIsAdmin();
- const navigate = useNavigate();
const [styleSheet, setStyleSheet] = useState