diff --git a/src/lib/components/chat/Settings/General.svelte b/src/lib/components/chat/Settings/General.svelte
index 8825b7902..70670d27e 100644
--- a/src/lib/components/chat/Settings/General.svelte
+++ b/src/lib/components/chat/Settings/General.svelte
@@ -18,6 +18,41 @@
let showAdvanced = false;
+ window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', e => {
+ if (theme === 'system') {
+ updateSystemTheme();
+ }
+ });
+
+ function updateSystemTheme() {
+ const isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;
+ const systemTheme = isDarkMode ? 'dark' : 'light';
+ applyTheme(systemTheme);
+ }
+
+ function applyTheme(theme: string) {
+ localStorage.theme = theme;
+ const themeClassList = document.documentElement.classList;
+ if (theme === 'system') {
+ updateSystemTheme();
+ return;
+ }
+
+ themes
+ .filter((e) => e !== theme)
+ .forEach((e) => {
+ e.split(' ').forEach((e) => {
+ document.documentElement.classList.remove(e);
+ });
+ });
+
+ theme.split(' ').forEach((e) => {
+ document.documentElement.classList.add(e);
+ });
+
+ console.log(theme)
+ }
+
const toggleNotification = async () => {
const permission = await Notification.requestPermission();
@@ -123,24 +158,9 @@
class="w-fit pr-8 rounded py-2 px-2 text-xs bg-transparent outline-none text-right"
bind:value={theme}
placeholder="Select a theme"
- on:change={(e) => {
- localStorage.theme = theme;
-
- themes
- .filter((e) => e !== theme)
- .forEach((e) => {
- e.split(' ').forEach((e) => {
- document.documentElement.classList.remove(e);
- });
- });
-
- theme.split(' ').forEach((e) => {
- document.documentElement.classList.add(e);
- });
-
- console.log(theme);
- }}
+ on:change="{() => applyTheme(theme)}"
>
+