diff options
| author | Dax Raad <[email protected]> | 2025-10-31 18:04:28 -0400 |
|---|---|---|
| committer | Dax Raad <[email protected]> | 2025-10-31 18:04:38 -0400 |
| commit | 7a926b32ce56fdbc6786e7912765c9e508dd07d9 (patch) | |
| tree | 2afea5f12e971d94b00d454f537abc2c0221140e | |
| parent | a5ede68241bc971d7fdeea799e506928e1aa411e (diff) | |
| download | opencode-7a926b32ce56fdbc6786e7912765c9e508dd07d9.tar.gz opencode-7a926b32ce56fdbc6786e7912765c9e508dd07d9.zip | |
respect theme in config
| -rw-r--r-- | packages/opencode/src/cli/cmd/tui/context/theme.tsx | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/packages/opencode/src/cli/cmd/tui/context/theme.tsx b/packages/opencode/src/cli/cmd/tui/context/theme.tsx index c9fd82af3..b2c92ff13 100644 --- a/packages/opencode/src/cli/cmd/tui/context/theme.tsx +++ b/packages/opencode/src/cli/cmd/tui/context/theme.tsx @@ -1,5 +1,5 @@ import { SyntaxStyle, RGBA } from "@opentui/core" -import { createMemo } from "solid-js" +import { createMemo, createSignal } from "solid-js" import { useSync } from "@tui/context/sync" import { createSimpleContext } from "./helper" import aura from "../../../../../../tui/internal/theme/themes/aura.json" with { type: "json" } @@ -83,7 +83,7 @@ type ThemeJson = { theme: Record<keyof Theme, ColorValue> } -export const THEMES = { +export const THEMES: Record<string, Theme> = { aura: resolveTheme(aura), ayu: resolveTheme(ayu), catppuccin: resolveTheme(catppuccin), @@ -629,23 +629,24 @@ export const { use: useTheme, provider: ThemeProvider } = createSimpleContext({ const sync = useSync() const kv = useKV() - const theme = createMemo(() => { - return THEMES[kv.data.theme as keyof typeof THEMES] ?? THEMES.opencode + const [theme, setTheme] = createSignal(sync.data.config.theme ?? kv.data.theme) + + const values = createMemo(() => { + return THEMES[theme()] ?? THEMES.opencode }) return { - get theme() { - return new Proxy(theme(), { - get(_target, prop) { - // @ts-expect-error - return theme()[prop] - }, - }) - }, + theme: new Proxy(values(), { + get(_target, prop) { + // @ts-expect-error + return values()[prop] + }, + }), get selectedTheme() { return kv.data.theme }, setSelectedTheme(theme: string) { + setTheme(theme) kv.set("theme", theme) }, get ready() { |
