Skip to content

Commit b370c8a

Browse files
fix theme not being applied when system setting updates
1 parent ab080b2 commit b370c8a

File tree

6 files changed

+9
-6
lines changed

6 files changed

+9
-6
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "svelte-theme-select",
3-
"version": "0.1.0",
3+
"version": "0.1.1",
44
"type": "module",
55
"keywords": [
66
"svelte",

src/lib/Icon.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script lang="ts">
2-
import { theme } from './theme'
2+
import { theme } from './state.svelte'
33
</script>
44

55
<span class="size-6" hidden={theme.override === 'system'}>

src/lib/ThemeSelect.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<script lang="ts">
22
import { browser } from '$app/environment'
33
import Icon from './Icon.svelte'
4-
import { theme, themes, type Theme } from './theme'
4+
import { theme, themes, type Theme } from './state.svelte'
55
66
function onChange(e: Event) {
77
const el = e.target as HTMLSelectElement

src/lib/ThemeToggle.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<script lang="ts">
22
import Transition from 'svelte-transition'
33
import { createMenu } from 'svelte-headlessui'
4-
import { theme, themes, type Theme } from './theme'
4+
import { theme, themes, type Theme } from './state.svelte'
55
import Icon from './Icon.svelte'
66
77
const menu = createMenu({ label: 'Theme' })

src/lib/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
export * from './icons'
2-
export * from './theme'
2+
export * from './state.svelte'
33
export { default as Theme } from './Theme.svelte'
44
export { default as ThemeToggle } from './ThemeToggle.svelte'
55
export { default as ThemeSelect } from './ThemeSelect.svelte'
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ class ThemeState {
4444
this.#override = saved
4545
update()
4646

47+
$effect(() => {
48+
document.documentElement.classList.toggle('dark', this.current === 'dark')
49+
})
50+
4751
return on(window, 'storage', (event: StorageEvent) => {
4852
if (event.key === 'theme') {
4953
this.#override = event.newValue as Theme
@@ -86,7 +90,6 @@ class ThemeState {
8690
}
8791
this.#override = value
8892
this.#update?.()
89-
document.documentElement.classList.toggle('dark', this.current === 'dark')
9093
}
9194
}
9295

0 commit comments

Comments
 (0)