summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2025-10-31 18:04:28 -0400
committerDax Raad <[email protected]>2025-10-31 18:04:38 -0400
commit7a926b32ce56fdbc6786e7912765c9e508dd07d9 (patch)
tree2afea5f12e971d94b00d454f537abc2c0221140e
parenta5ede68241bc971d7fdeea799e506928e1aa411e (diff)
downloadopencode-7a926b32ce56fdbc6786e7912765c9e508dd07d9.tar.gz
opencode-7a926b32ce56fdbc6786e7912765c9e508dd07d9.zip
respect theme in config
-rw-r--r--packages/opencode/src/cli/cmd/tui/context/theme.tsx25
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() {