diff --git a/package-lock.json b/package-lock.json
index 1cb633e17..3b5609871 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,7 +9,6 @@
"version": "1.0.0",
"hasInstallScript": true,
"dependencies": {
- "@efstajas/svelte-stored-writable": "^0.3.0",
"@radicle/gray-matter": "4.1.0",
"@wooorm/starry-night": "^3.5.0",
"async-mutex": "^0.5.0",
@@ -82,15 +81,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/@efstajas/svelte-stored-writable": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/@efstajas/svelte-stored-writable/-/svelte-stored-writable-0.3.0.tgz",
- "integrity": "sha512-TIhJ5gpivhCsN+ijt/bAWp20uoeRZHJCOCTLqfzN4n5fk6uMUVtPeqnmC5eCe1Tn23moBuKOC6wgK4APuyuT6A==",
- "dependencies": {
- "svelte": "^4.2.19",
- "zod": "^3.21.4"
- }
- },
"node_modules/@esbuild/aix-ppc64": {
"version": "0.21.5",
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
diff --git a/package.json b/package.json
index 998438e60..523535c58 100644
--- a/package.json
+++ b/package.json
@@ -53,7 +53,6 @@
"wait-on": "^8.0.1"
},
"dependencies": {
- "@efstajas/svelte-stored-writable": "^0.3.0",
"@radicle/gray-matter": "4.1.0",
"@wooorm/starry-night": "^3.5.0",
"async-mutex": "^0.5.0",
diff --git a/src/App.svelte b/src/App.svelte
index 50f1e54df..873c37b40 100644
--- a/src/App.svelte
+++ b/src/App.svelte
@@ -2,7 +2,7 @@
import * as router from "@app/lib/router";
import { unreachable } from "@app/lib/utils";
- import { codeFont, theme } from "@app/lib/appearance";
+ import { codeFont, followSystemTheme, theme } from "@app/lib/appearance";
import FullscreenModalPortal from "./App/FullscreenModalPortal.svelte";
import Hotkeys from "./App/Hotkeys.svelte";
@@ -27,8 +27,9 @@
window
.matchMedia("(prefers-color-scheme: dark)")
.addEventListener("change", ({ matches }) => {
- theme.set(matches ? "dark" : "light");
- followSystemTheme.set(true);
+ if ($followSystemTheme) {
+ theme.set(matches ? "dark" : "light");
+ }
});
void router.loadFromLocation();
diff --git a/src/App/Settings.svelte b/src/App/Settings.svelte
index 4dfb53dc1..8d96a9638 100644
--- a/src/App/Settings.svelte
+++ b/src/App/Settings.svelte
@@ -2,10 +2,9 @@
import {
codeFont,
codeFonts,
- storeCodeFont,
- storeTheme,
theme,
followSystemTheme,
+ loadTheme,
} from "@app/lib/appearance";
import Button from "@app/components/Button.svelte";
@@ -47,7 +46,10 @@
variant={!$followSystemTheme && $theme === "light"
? "selected"
: "not-selected"}
- on:click={() => storeTheme("light")}>
+ on:click={() => {
+ theme.set("light");
+ followSystemTheme.set(false);
+ }}>
@@ -57,7 +59,10 @@
variant={!$followSystemTheme && $theme === "dark"
? "selected"
: "not-selected"}
- on:click={() => storeTheme("dark")}>
+ on:click={() => {
+ theme.set("dark");
+ followSystemTheme.set(false);
+ }}>
@@ -65,7 +70,10 @@
ariaLabel="System Theme"
styleBorderRadius="0"
variant={$followSystemTheme ? "selected" : "not-selected"}
- on:click={() => storeTheme("system")}>
+ on:click={() => {
+ theme.set(loadTheme());
+ followSystemTheme.set(true);
+ }}>
@@ -79,7 +87,7 @@