diff options
| author | Brendan Allan <[email protected]> | 2026-03-13 09:18:27 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-03-13 09:18:27 +0800 |
| commit | 84df96eaefe7a920b48b205501fc849ba027e9ad (patch) | |
| tree | 65ac52fde124e5cde48f56bba46c2d7fc1c2f070 /packages/ui/src/theme | |
| parent | d9dd33aeebad49120ea8204e34520db872c9f553 (diff) | |
| download | opencode-84df96eaefe7a920b48b205501fc849ba027e9ad.tar.gz opencode-84df96eaefe7a920b48b205501fc849ba027e9ad.zip | |
desktop: multi-window support in electron (#17155)
Diffstat (limited to 'packages/ui/src/theme')
| -rw-r--r-- | packages/ui/src/theme/context.tsx | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/packages/ui/src/theme/context.tsx b/packages/ui/src/theme/context.tsx index ad82a088d..9808c8e84 100644 --- a/packages/ui/src/theme/context.tsx +++ b/packages/ui/src/theme/context.tsx @@ -1,9 +1,9 @@ -import { onMount, onCleanup, createEffect } from "solid-js" +import { createEffect, onCleanup, onMount } from "solid-js" import { createStore } from "solid-js/store" -import type { DesktopTheme } from "./types" -import { resolveThemeVariant, themeToCss } from "./resolve" -import { DEFAULT_THEMES } from "./default-themes" import { createSimpleContext } from "../context/helper" +import { DEFAULT_THEMES } from "./default-themes" +import { resolveThemeVariant, themeToCss } from "./resolve" +import type { DesktopTheme } from "./types" export type ColorScheme = "light" | "dark" | "system" @@ -87,6 +87,14 @@ export const { use: useTheme, provider: ThemeProvider } = createSimpleContext({ previewScheme: null as ColorScheme | null, }) + window.addEventListener("storage", (e) => { + if (e.key === STORAGE_KEYS.THEME_ID && e.newValue) setStore("themeId", e.newValue) + if (e.key === STORAGE_KEYS.COLOR_SCHEME && e.newValue) { + setStore("colorScheme", e.newValue as ColorScheme) + setStore("mode", e.newValue === "system" ? getSystemMode() : (e.newValue as any)) + } + }) + onMount(() => { const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)") const handler = () => { |
