summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-03-12 22:21:02 -0500
committerGitHub <[email protected]>2026-03-12 22:21:02 -0500
commit55766622001b0c1e048c93c06cb3f7a0a3e9fd94 (patch)
treee56ad31b2713b5e2db23299a2a941d7a7f1cf5ef
parent4a2a046d79ab8a0f2c152b6af4fd637d33843c9b (diff)
downloadopencode-55766622001b0c1e048c93c06cb3f7a0a3e9fd94.tar.gz
opencode-55766622001b0c1e048c93c06cb3f7a0a3e9fd94.zip
feat(app): missing themes (#17275)
-rw-r--r--.gitignore2
-rw-r--r--packages/ui/src/theme/default-themes.ts99
-rw-r--r--packages/ui/src/theme/index.ts35
-rw-r--r--packages/ui/src/theme/themes/catppuccin-frappe.json85
-rw-r--r--packages/ui/src/theme/themes/catppuccin-macchiato.json85
-rw-r--r--packages/ui/src/theme/themes/cobalt2.json87
-rw-r--r--packages/ui/src/theme/themes/cursor.json91
-rw-r--r--packages/ui/src/theme/themes/everforest.json89
-rw-r--r--packages/ui/src/theme/themes/flexoki.json86
-rw-r--r--packages/ui/src/theme/themes/github.json85
-rw-r--r--packages/ui/src/theme/themes/kanagawa.json89
-rw-r--r--packages/ui/src/theme/themes/lucent-orng.json87
-rw-r--r--packages/ui/src/theme/themes/material.json87
-rw-r--r--packages/ui/src/theme/themes/matrix.json91
-rw-r--r--packages/ui/src/theme/themes/mercury.json86
-rw-r--r--packages/ui/src/theme/themes/one-dark.json89
-rw-r--r--packages/ui/src/theme/themes/opencode.json89
-rw-r--r--packages/ui/src/theme/themes/orng.json87
-rw-r--r--packages/ui/src/theme/themes/osaka-jade.json88
-rw-r--r--packages/ui/src/theme/themes/palenight.json85
-rw-r--r--packages/ui/src/theme/themes/rosepine.json85
-rw-r--r--packages/ui/src/theme/themes/synthwave84.json87
-rw-r--r--packages/ui/src/theme/themes/vercel.json90
-rw-r--r--packages/ui/src/theme/themes/zenburn.json87
24 files changed, 1947 insertions, 24 deletions
diff --git a/.gitignore b/.gitignore
index bf78c046d..c287d91ac 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,7 +17,7 @@ ts-dist
/result
refs
Session.vim
-opencode.json
+/opencode.json
a.out
target
.scripts
diff --git a/packages/ui/src/theme/default-themes.ts b/packages/ui/src/theme/default-themes.ts
index 4b5601b1c..c14198955 100644
--- a/packages/ui/src/theme/default-themes.ts
+++ b/packages/ui/src/theme/default-themes.ts
@@ -1,37 +1,79 @@
import type { DesktopTheme } from "./types"
import oc2ThemeJson from "./themes/oc-2.json"
-import tokyoThemeJson from "./themes/tokyonight.json"
+import amoledThemeJson from "./themes/amoled.json"
+import auraThemeJson from "./themes/aura.json"
+import ayuThemeJson from "./themes/ayu.json"
+import carbonfoxThemeJson from "./themes/carbonfox.json"
+import catppuccinThemeJson from "./themes/catppuccin.json"
+import catppuccinFrappeThemeJson from "./themes/catppuccin-frappe.json"
+import catppuccinMacchiatoThemeJson from "./themes/catppuccin-macchiato.json"
+import cobalt2ThemeJson from "./themes/cobalt2.json"
+import cursorThemeJson from "./themes/cursor.json"
import draculaThemeJson from "./themes/dracula.json"
+import everforestThemeJson from "./themes/everforest.json"
+import flexokiThemeJson from "./themes/flexoki.json"
+import githubThemeJson from "./themes/github.json"
+import gruvboxThemeJson from "./themes/gruvbox.json"
+import kanagawaThemeJson from "./themes/kanagawa.json"
+import lucentOrngThemeJson from "./themes/lucent-orng.json"
+import materialThemeJson from "./themes/material.json"
+import matrixThemeJson from "./themes/matrix.json"
+import mercuryThemeJson from "./themes/mercury.json"
import monokaiThemeJson from "./themes/monokai.json"
-import solarizedThemeJson from "./themes/solarized.json"
+import nightowlThemeJson from "./themes/nightowl.json"
import nordThemeJson from "./themes/nord.json"
-import catppuccinThemeJson from "./themes/catppuccin.json"
-import ayuThemeJson from "./themes/ayu.json"
+import oneDarkThemeJson from "./themes/one-dark.json"
import oneDarkProThemeJson from "./themes/onedarkpro.json"
+import opencodeThemeJson from "./themes/opencode.json"
+import orngThemeJson from "./themes/orng.json"
+import osakaJadeThemeJson from "./themes/osaka-jade.json"
+import palenightThemeJson from "./themes/palenight.json"
+import rosepineThemeJson from "./themes/rosepine.json"
import shadesOfPurpleThemeJson from "./themes/shadesofpurple.json"
-import nightowlThemeJson from "./themes/nightowl.json"
+import solarizedThemeJson from "./themes/solarized.json"
+import synthwave84ThemeJson from "./themes/synthwave84.json"
+import tokyonightThemeJson from "./themes/tokyonight.json"
+import vercelThemeJson from "./themes/vercel.json"
import vesperThemeJson from "./themes/vesper.json"
-import carbonfoxThemeJson from "./themes/carbonfox.json"
-import gruvboxThemeJson from "./themes/gruvbox.json"
-import auraThemeJson from "./themes/aura.json"
-import amoledThemeJson from "./themes/amoled.json"
+import zenburnThemeJson from "./themes/zenburn.json"
export const oc2Theme = oc2ThemeJson as DesktopTheme
-export const tokyonightTheme = tokyoThemeJson as DesktopTheme
+export const amoledTheme = amoledThemeJson as DesktopTheme
+export const auraTheme = auraThemeJson as DesktopTheme
+export const ayuTheme = ayuThemeJson as DesktopTheme
+export const carbonfoxTheme = carbonfoxThemeJson as DesktopTheme
+export const catppuccinTheme = catppuccinThemeJson as DesktopTheme
+export const catppuccinFrappeTheme = catppuccinFrappeThemeJson as DesktopTheme
+export const catppuccinMacchiatoTheme = catppuccinMacchiatoThemeJson as DesktopTheme
+export const cobalt2Theme = cobalt2ThemeJson as DesktopTheme
+export const cursorTheme = cursorThemeJson as DesktopTheme
export const draculaTheme = draculaThemeJson as DesktopTheme
+export const everforestTheme = everforestThemeJson as DesktopTheme
+export const flexokiTheme = flexokiThemeJson as DesktopTheme
+export const githubTheme = githubThemeJson as DesktopTheme
+export const gruvboxTheme = gruvboxThemeJson as DesktopTheme
+export const kanagawaTheme = kanagawaThemeJson as DesktopTheme
+export const lucentOrngTheme = lucentOrngThemeJson as DesktopTheme
+export const materialTheme = materialThemeJson as DesktopTheme
+export const matrixTheme = matrixThemeJson as DesktopTheme
+export const mercuryTheme = mercuryThemeJson as DesktopTheme
export const monokaiTheme = monokaiThemeJson as DesktopTheme
-export const solarizedTheme = solarizedThemeJson as DesktopTheme
+export const nightowlTheme = nightowlThemeJson as DesktopTheme
export const nordTheme = nordThemeJson as DesktopTheme
-export const catppuccinTheme = catppuccinThemeJson as DesktopTheme
-export const ayuTheme = ayuThemeJson as DesktopTheme
+export const oneDarkTheme = oneDarkThemeJson as DesktopTheme
export const oneDarkProTheme = oneDarkProThemeJson as DesktopTheme
+export const opencodeTheme = opencodeThemeJson as DesktopTheme
+export const orngTheme = orngThemeJson as DesktopTheme
+export const osakaJadeTheme = osakaJadeThemeJson as DesktopTheme
+export const palenightTheme = palenightThemeJson as DesktopTheme
+export const rosepineTheme = rosepineThemeJson as DesktopTheme
export const shadesOfPurpleTheme = shadesOfPurpleThemeJson as DesktopTheme
-export const nightowlTheme = nightowlThemeJson as DesktopTheme
+export const solarizedTheme = solarizedThemeJson as DesktopTheme
+export const synthwave84Theme = synthwave84ThemeJson as DesktopTheme
+export const tokyonightTheme = tokyonightThemeJson as DesktopTheme
+export const vercelTheme = vercelThemeJson as DesktopTheme
export const vesperTheme = vesperThemeJson as DesktopTheme
-export const carbonfoxTheme = carbonfoxThemeJson as DesktopTheme
-export const gruvboxTheme = gruvboxThemeJson as DesktopTheme
-export const auraTheme = auraThemeJson as DesktopTheme
-export const amoledTheme = amoledThemeJson as DesktopTheme
+export const zenburnTheme = zenburnThemeJson as DesktopTheme
export const DEFAULT_THEMES: Record<string, DesktopTheme> = {
"oc-2": oc2Theme,
@@ -40,14 +82,35 @@ export const DEFAULT_THEMES: Record<string, DesktopTheme> = {
ayu: ayuTheme,
carbonfox: carbonfoxTheme,
catppuccin: catppuccinTheme,
+ "catppuccin-frappe": catppuccinFrappeTheme,
+ "catppuccin-macchiato": catppuccinMacchiatoTheme,
+ cobalt2: cobalt2Theme,
+ cursor: cursorTheme,
dracula: draculaTheme,
+ everforest: everforestTheme,
+ flexoki: flexokiTheme,
+ github: githubTheme,
gruvbox: gruvboxTheme,
+ kanagawa: kanagawaTheme,
+ "lucent-orng": lucentOrngTheme,
+ material: materialTheme,
+ matrix: matrixTheme,
+ mercury: mercuryTheme,
monokai: monokaiTheme,
nightowl: nightowlTheme,
nord: nordTheme,
+ "one-dark": oneDarkTheme,
onedarkpro: oneDarkProTheme,
+ opencode: opencodeTheme,
+ orng: orngTheme,
+ "osaka-jade": osakaJadeTheme,
+ palenight: palenightTheme,
+ rosepine: rosepineTheme,
shadesofpurple: shadesOfPurpleTheme,
solarized: solarizedTheme,
+ synthwave84: synthwave84Theme,
tokyonight: tokyonightTheme,
+ vercel: vercelTheme,
vesper: vesperTheme,
+ zenburn: zenburnTheme,
}
diff --git a/packages/ui/src/theme/index.ts b/packages/ui/src/theme/index.ts
index bfd55e60b..86d30eab8 100644
--- a/packages/ui/src/theme/index.ts
+++ b/packages/ui/src/theme/index.ts
@@ -36,15 +36,40 @@ export { ThemeProvider, useTheme, type ColorScheme } from "./context"
export {
DEFAULT_THEMES,
oc2Theme,
- tokyonightTheme,
+ amoledTheme,
+ auraTheme,
+ ayuTheme,
+ carbonfoxTheme,
+ catppuccinTheme,
+ catppuccinFrappeTheme,
+ catppuccinMacchiatoTheme,
+ cobalt2Theme,
+ cursorTheme,
draculaTheme,
+ everforestTheme,
+ flexokiTheme,
+ githubTheme,
+ gruvboxTheme,
+ kanagawaTheme,
+ lucentOrngTheme,
+ materialTheme,
+ matrixTheme,
+ mercuryTheme,
monokaiTheme,
- solarizedTheme,
+ nightowlTheme,
nordTheme,
- catppuccinTheme,
- ayuTheme,
+ oneDarkTheme,
oneDarkProTheme,
+ opencodeTheme,
+ orngTheme,
+ osakaJadeTheme,
+ palenightTheme,
+ rosepineTheme,
shadesOfPurpleTheme,
- nightowlTheme,
+ solarizedTheme,
+ synthwave84Theme,
+ tokyonightTheme,
+ vercelTheme,
vesperTheme,
+ zenburnTheme,
} from "./default-themes"
diff --git a/packages/ui/src/theme/themes/catppuccin-frappe.json b/packages/ui/src/theme/themes/catppuccin-frappe.json
new file mode 100644
index 000000000..ea02b981d
--- /dev/null
+++ b/packages/ui/src/theme/themes/catppuccin-frappe.json
@@ -0,0 +1,85 @@
+{
+ "$schema": "https://opencode.ai/desktop-theme.json",
+ "name": "Catppuccin Frappe",
+ "id": "catppuccin-frappe",
+ "light": {
+ "palette": {
+ "neutral": "#303446",
+ "ink": "#c6d0f5",
+ "primary": "#8da4e2",
+ "accent": "#f4b8e4",
+ "success": "#a6d189",
+ "warning": "#e5c890",
+ "error": "#e78284",
+ "info": "#81c8be"
+ },
+ "overrides": {
+ "text-weak": "#b5bfe2",
+ "syntax-comment": "#949cb8",
+ "syntax-keyword": "#ca9ee6",
+ "syntax-string": "#a6d189",
+ "syntax-primitive": "#8da4e2",
+ "syntax-variable": "#e78284",
+ "syntax-property": "#99d1db",
+ "syntax-type": "#e5c890",
+ "syntax-constant": "#ef9f76",
+ "syntax-operator": "#99d1db",
+ "syntax-punctuation": "#c6d0f5",
+ "syntax-object": "#e78284",
+ "markdown-heading": "#ca9ee6",
+ "markdown-text": "#c6d0f5",
+ "markdown-link": "#8da4e2",
+ "markdown-link-text": "#99d1db",
+ "markdown-code": "#a6d189",
+ "markdown-block-quote": "#e5c890",
+ "markdown-emph": "#e5c890",
+ "markdown-strong": "#ef9f76",
+ "markdown-horizontal-rule": "#a5adce",
+ "markdown-list-item": "#8da4e2",
+ "markdown-list-enumeration": "#99d1db",
+ "markdown-image": "#8da4e2",
+ "markdown-image-text": "#99d1db",
+ "markdown-code-block": "#c6d0f5"
+ }
+ },
+ "dark": {
+ "palette": {
+ "neutral": "#303446",
+ "ink": "#c6d0f5",
+ "primary": "#8da4e2",
+ "accent": "#f4b8e4",
+ "success": "#a6d189",
+ "warning": "#e5c890",
+ "error": "#e78284",
+ "info": "#81c8be"
+ },
+ "overrides": {
+ "text-weak": "#b5bfe2",
+ "syntax-comment": "#949cb8",
+ "syntax-keyword": "#ca9ee6",
+ "syntax-string": "#a6d189",
+ "syntax-primitive": "#8da4e2",
+ "syntax-variable": "#e78284",
+ "syntax-property": "#99d1db",
+ "syntax-type": "#e5c890",
+ "syntax-constant": "#ef9f76",
+ "syntax-operator": "#99d1db",
+ "syntax-punctuation": "#c6d0f5",
+ "syntax-object": "#e78284",
+ "markdown-heading": "#ca9ee6",
+ "markdown-text": "#c6d0f5",
+ "markdown-link": "#8da4e2",
+ "markdown-link-text": "#99d1db",
+ "markdown-code": "#a6d189",
+ "markdown-block-quote": "#e5c890",
+ "markdown-emph": "#e5c890",
+ "markdown-strong": "#ef9f76",
+ "markdown-horizontal-rule": "#a5adce",
+ "markdown-list-item": "#8da4e2",
+ "markdown-list-enumeration": "#99d1db",
+ "markdown-image": "#8da4e2",
+ "markdown-image-text": "#99d1db",
+ "markdown-code-block": "#c6d0f5"
+ }
+ }
+}
diff --git a/packages/ui/src/theme/themes/catppuccin-macchiato.json b/packages/ui/src/theme/themes/catppuccin-macchiato.json
new file mode 100644
index 000000000..9315e1542
--- /dev/null
+++ b/packages/ui/src/theme/themes/catppuccin-macchiato.json
@@ -0,0 +1,85 @@
+{
+ "$schema": "https://opencode.ai/desktop-theme.json",
+ "name": "Catppuccin Macchiato",
+ "id": "catppuccin-macchiato",
+ "light": {
+ "palette": {
+ "neutral": "#24273a",
+ "ink": "#cad3f5",
+ "primary": "#8aadf4",
+ "accent": "#f5bde6",
+ "success": "#a6da95",
+ "warning": "#eed49f",
+ "error": "#ed8796",
+ "info": "#8bd5ca"
+ },
+ "overrides": {
+ "text-weak": "#b8c0e0",
+ "syntax-comment": "#939ab7",
+ "syntax-keyword": "#c6a0f6",
+ "syntax-string": "#a6da95",
+ "syntax-primitive": "#8aadf4",
+ "syntax-variable": "#ed8796",
+ "syntax-property": "#91d7e3",
+ "syntax-type": "#eed49f",
+ "syntax-constant": "#f5a97f",
+ "syntax-operator": "#91d7e3",
+ "syntax-punctuation": "#cad3f5",
+ "syntax-object": "#ed8796",
+ "markdown-heading": "#c6a0f6",
+ "markdown-text": "#cad3f5",
+ "markdown-link": "#8aadf4",
+ "markdown-link-text": "#91d7e3",
+ "markdown-code": "#a6da95",
+ "markdown-block-quote": "#eed49f",
+ "markdown-emph": "#eed49f",
+ "markdown-strong": "#f5a97f",
+ "markdown-horizontal-rule": "#a5adcb",
+ "markdown-list-item": "#8aadf4",
+ "markdown-list-enumeration": "#91d7e3",
+ "markdown-image": "#8aadf4",
+ "markdown-image-text": "#91d7e3",
+ "markdown-code-block": "#cad3f5"
+ }
+ },
+ "dark": {
+ "palette": {
+ "neutral": "#24273a",
+ "ink": "#cad3f5",
+ "primary": "#8aadf4",
+ "accent": "#f5bde6",
+ "success": "#a6da95",
+ "warning": "#eed49f",
+ "error": "#ed8796",
+ "info": "#8bd5ca"
+ },
+ "overrides": {
+ "text-weak": "#b8c0e0",
+ "syntax-comment": "#939ab7",
+ "syntax-keyword": "#c6a0f6",
+ "syntax-string": "#a6da95",
+ "syntax-primitive": "#8aadf4",
+ "syntax-variable": "#ed8796",
+ "syntax-property": "#91d7e3",
+ "syntax-type": "#eed49f",
+ "syntax-constant": "#f5a97f",
+ "syntax-operator": "#91d7e3",
+ "syntax-punctuation": "#cad3f5",
+ "syntax-object": "#ed8796",
+ "markdown-heading": "#c6a0f6",
+ "markdown-text": "#cad3f5",
+ "markdown-link": "#8aadf4",
+ "markdown-link-text": "#91d7e3",
+ "markdown-code": "#a6da95",
+ "markdown-block-quote": "#eed49f",
+ "markdown-emph": "#eed49f",
+ "markdown-strong": "#f5a97f",
+ "markdown-horizontal-rule": "#a5adcb",
+ "markdown-list-item": "#8aadf4",
+ "markdown-list-enumeration": "#91d7e3",
+ "markdown-image": "#8aadf4",
+ "markdown-image-text": "#91d7e3",
+ "markdown-code-block": "#cad3f5"
+ }
+ }
+}
diff --git a/packages/ui/src/theme/themes/cobalt2.json b/packages/ui/src/theme/themes/cobalt2.json
new file mode 100644
index 000000000..56ff3b504
--- /dev/null
+++ b/packages/ui/src/theme/themes/cobalt2.json
@@ -0,0 +1,87 @@
+{
+ "$schema": "https://opencode.ai/desktop-theme.json",
+ "name": "Cobalt2",
+ "id": "cobalt2",
+ "light": {
+ "palette": {
+ "neutral": "#ffffff",
+ "ink": "#193549",
+ "primary": "#0066cc",
+ "accent": "#00acc1",
+ "success": "#4caf50",
+ "warning": "#ff9800",
+ "error": "#e91e63",
+ "info": "#ff5722"
+ },
+ "overrides": {
+ "text-weak": "#5c6b7d",
+ "syntax-comment": "#5c6b7d",
+ "syntax-keyword": "#ff5722",
+ "syntax-string": "#4caf50",
+ "syntax-primitive": "#ff9800",
+ "syntax-variable": "#193549",
+ "syntax-property": "#00acc1",
+ "syntax-type": "#00acc1",
+ "syntax-constant": "#e91e63",
+ "syntax-operator": "#ff5722",
+ "syntax-punctuation": "#193549",
+ "syntax-object": "#193549",
+ "markdown-heading": "#ff9800",
+ "markdown-text": "#193549",
+ "markdown-link": "#0066cc",
+ "markdown-link-text": "#00acc1",
+ "markdown-code": "#4caf50",
+ "markdown-block-quote": "#5c6b7d",
+ "markdown-emph": "#ff5722",
+ "markdown-strong": "#e91e63",
+ "markdown-horizontal-rule": "#d3dae3",
+ "markdown-list-item": "#0066cc",
+ "markdown-list-enumeration": "#00acc1",
+ "markdown-image": "#0066cc",
+ "markdown-image-text": "#00acc1",
+ "markdown-code-block": "#193549"
+ }
+ },
+ "dark": {
+ "palette": {
+ "neutral": "#193549",
+ "ink": "#ffffff",
+ "primary": "#0088ff",
+ "accent": "#2affdf",
+ "success": "#9eff80",
+ "warning": "#ffc600",
+ "error": "#ff0088",
+ "info": "#ff9d00",
+ "diffAdd": "#b9ff9f",
+ "diffDelete": "#ff5fb3"
+ },
+ "overrides": {
+ "text-weak": "#adb7c9",
+ "syntax-comment": "#0088ff",
+ "syntax-keyword": "#ff9d00",
+ "syntax-string": "#9eff80",
+ "syntax-primitive": "#ffc600",
+ "syntax-variable": "#ffffff",
+ "syntax-property": "#2affdf",
+ "syntax-type": "#2affdf",
+ "syntax-constant": "#ff628c",
+ "syntax-operator": "#ff9d00",
+ "syntax-punctuation": "#ffffff",
+ "syntax-object": "#ffffff",
+ "markdown-heading": "#ffc600",
+ "markdown-text": "#ffffff",
+ "markdown-link": "#0088ff",
+ "markdown-link-text": "#2affdf",
+ "markdown-code": "#9eff80",
+ "markdown-block-quote": "#adb7c9",
+ "markdown-emph": "#ff9d00",
+ "markdown-strong": "#ff628c",
+ "markdown-horizontal-rule": "#2d5a7b",
+ "markdown-list-item": "#0088ff",
+ "markdown-list-enumeration": "#2affdf",
+ "markdown-image": "#0088ff",
+ "markdown-image-text": "#2affdf",
+ "markdown-code-block": "#ffffff"
+ }
+ }
+}
diff --git a/packages/ui/src/theme/themes/cursor.json b/packages/ui/src/theme/themes/cursor.json
new file mode 100644
index 000000000..cbea56870
--- /dev/null
+++ b/packages/ui/src/theme/themes/cursor.json
@@ -0,0 +1,91 @@
+{
+ "$schema": "https://opencode.ai/desktop-theme.json",
+ "name": "Cursor",
+ "id": "cursor",
+ "light": {
+ "palette": {
+ "neutral": "#fcfcfc",
+ "ink": "#141414",
+ "primary": "#6f9ba6",
+ "accent": "#6f9ba6",
+ "success": "#1f8a65",
+ "warning": "#db704b",
+ "error": "#cf2d56",
+ "info": "#3c7cab",
+ "interactive": "#206595",
+ "diffAdd": "#55a583",
+ "diffDelete": "#e75e78"
+ },
+ "overrides": {
+ "text-weak": "#141414ad",
+ "syntax-comment": "#141414ad",
+ "syntax-keyword": "#b3003f",
+ "syntax-string": "#9e94d5",
+ "syntax-primitive": "#db704b",
+ "syntax-variable": "#141414",
+ "syntax-property": "#141414ad",
+ "syntax-type": "#206595",
+ "syntax-constant": "#b8448b",
+ "syntax-operator": "#141414",
+ "syntax-punctuation": "#141414",
+ "syntax-object": "#141414",
+ "markdown-heading": "#206595",
+ "markdown-text": "#141414",
+ "markdown-link": "#206595",
+ "markdown-link-text": "#141414ad",
+ "markdown-code": "#1f8a65",
+ "markdown-block-quote": "#141414ad",
+ "markdown-emph": "#141414",
+ "markdown-strong": "#141414",
+ "markdown-horizontal-rule": "#141414ad",
+ "markdown-list-item": "#141414",
+ "markdown-list-enumeration": "#141414ad",
+ "markdown-image": "#206595",
+ "markdown-image-text": "#141414ad",
+ "markdown-code-block": "#141414"
+ }
+ },
+ "dark": {
+ "palette": {
+ "neutral": "#181818",
+ "ink": "#e4e4e4",
+ "primary": "#88c0d0",
+ "accent": "#88c0d0",
+ "success": "#3fa266",
+ "warning": "#f1b467",
+ "error": "#e34671",
+ "info": "#81a1c1",
+ "interactive": "#82D2CE",
+ "diffAdd": "#70b489",
+ "diffDelete": "#fc6b83"
+ },
+ "overrides": {
+ "text-weak": "#e4e4e45e",
+ "syntax-comment": "#e4e4e45e",
+ "syntax-keyword": "#82D2CE",
+ "syntax-string": "#E394DC",
+ "syntax-primitive": "#EFB080",
+ "syntax-variable": "#e4e4e4",
+ "syntax-property": "#81a1c1",
+ "syntax-type": "#EFB080",
+ "syntax-constant": "#F8C762",
+ "syntax-operator": "#e4e4e4",
+ "syntax-punctuation": "#e4e4e4",
+ "syntax-object": "#e4e4e4",
+ "markdown-heading": "#AAA0FA",
+ "markdown-text": "#e4e4e4",
+ "markdown-link": "#82D2CE",
+ "markdown-link-text": "#81a1c1",
+ "markdown-code": "#E394DC",
+ "markdown-block-quote": "#e4e4e45e",
+ "markdown-emph": "#82D2CE",
+ "markdown-strong": "#F8C762",
+ "markdown-horizontal-rule": "#e4e4e45e",
+ "markdown-list-item": "#e4e4e4",
+ "markdown-list-enumeration": "#88c0d0",
+ "markdown-image": "#88c0d0",
+ "markdown-image-text": "#81a1c1",
+ "markdown-code-block": "#e4e4e4"
+ }
+ }
+}
diff --git a/packages/ui/src/theme/themes/everforest.json b/packages/ui/src/theme/themes/everforest.json
new file mode 100644
index 000000000..21c04c8ab
--- /dev/null
+++ b/packages/ui/src/theme/themes/everforest.json
@@ -0,0 +1,89 @@
+{
+ "$schema": "https://opencode.ai/desktop-theme.json",
+ "name": "Everforest",
+ "id": "everforest",
+ "light": {
+ "palette": {
+ "neutral": "#fdf6e3",
+ "ink": "#5c6a72",
+ "primary": "#8da101",
+ "accent": "#df69ba",
+ "success": "#8da101",
+ "warning": "#f57d26",
+ "error": "#f85552",
+ "info": "#35a77c",
+ "diffAdd": "#4db380",
+ "diffDelete": "#f52a65"
+ },
+ "overrides": {
+ "text-weak": "#a6b0a0",
+ "syntax-comment": "#a6b0a0",
+ "syntax-keyword": "#df69ba",
+ "syntax-string": "#8da101",
+ "syntax-primitive": "#8da101",
+ "syntax-variable": "#f85552",
+ "syntax-property": "#35a77c",
+ "syntax-type": "#dfa000",
+ "syntax-constant": "#f57d26",
+ "syntax-operator": "#35a77c",
+ "syntax-punctuation": "#5c6a72",
+ "syntax-object": "#f85552",
+ "markdown-heading": "#df69ba",
+ "markdown-text": "#5c6a72",
+ "markdown-link": "#8da101",
+ "markdown-link-text": "#35a77c",
+ "markdown-code": "#8da101",
+ "markdown-block-quote": "#dfa000",
+ "markdown-emph": "#dfa000",
+ "markdown-strong": "#f57d26",
+ "markdown-horizontal-rule": "#a6b0a0",
+ "markdown-list-item": "#8da101",
+ "markdown-list-enumeration": "#35a77c",
+ "markdown-image": "#8da101",
+ "markdown-image-text": "#35a77c",
+ "markdown-code-block": "#5c6a72"
+ }
+ },
+ "dark": {
+ "palette": {
+ "neutral": "#2d353b",
+ "ink": "#d3c6aa",
+ "primary": "#a7c080",
+ "accent": "#d699b6",
+ "success": "#a7c080",
+ "warning": "#e69875",
+ "error": "#e67e80",
+ "info": "#83c092",
+ "diffAdd": "#b8db87",
+ "diffDelete": "#e26a75"
+ },
+ "overrides": {
+ "text-weak": "#7a8478",
+ "syntax-comment": "#7a8478",
+ "syntax-keyword": "#d699b6",
+ "syntax-string": "#a7c080",
+ "syntax-primitive": "#a7c080",
+ "syntax-variable": "#e67e80",
+ "syntax-property": "#83c092",
+ "syntax-type": "#dbbc7f",
+ "syntax-constant": "#e69875",
+ "syntax-operator": "#83c092",
+ "syntax-punctuation": "#d3c6aa",
+ "syntax-object": "#e67e80",
+ "markdown-heading": "#d699b6",
+ "markdown-text": "#d3c6aa",
+ "markdown-link": "#a7c080",
+ "markdown-link-text": "#83c092",
+ "markdown-code": "#a7c080",
+ "markdown-block-quote": "#dbbc7f",
+ "markdown-emph": "#dbbc7f",
+ "markdown-strong": "#e69875",
+ "markdown-horizontal-rule": "#7a8478",
+ "markdown-list-item": "#a7c080",
+ "markdown-list-enumeration": "#83c092",
+ "markdown-image": "#a7c080",
+ "markdown-image-text": "#83c092",
+ "markdown-code-block": "#d3c6aa"
+ }
+ }
+}
diff --git a/packages/ui/src/theme/themes/flexoki.json b/packages/ui/src/theme/themes/flexoki.json
new file mode 100644
index 000000000..147681818
--- /dev/null
+++ b/packages/ui/src/theme/themes/flexoki.json
@@ -0,0 +1,86 @@
+{
+ "$schema": "https://opencode.ai/desktop-theme.json",
+ "name": "Flexoki",
+ "id": "flexoki",
+ "light": {
+ "palette": {
+ "neutral": "#FFFCF0",
+ "ink": "#100F0F",
+ "primary": "#205EA6",
+ "accent": "#BC5215",
+ "success": "#66800B",
+ "warning": "#BC5215",
+ "error": "#AF3029",
+ "info": "#24837B"
+ },
+ "overrides": {
+ "text-weak": "#6F6E69",
+ "syntax-comment": "#6F6E69",
+ "syntax-keyword": "#66800B",
+ "syntax-string": "#24837B",
+ "syntax-primitive": "#BC5215",
+ "syntax-variable": "#205EA6",
+ "syntax-property": "#24837B",
+ "syntax-type": "#AD8301",
+ "syntax-constant": "#5E409D",
+ "syntax-operator": "#6F6E69",
+ "syntax-punctuation": "#6F6E69",
+ "syntax-object": "#205EA6",
+ "markdown-heading": "#5E409D",
+ "markdown-text": "#100F0F",
+ "markdown-link": "#205EA6",
+ "markdown-link-text": "#24837B",
+ "markdown-code": "#24837B",
+ "markdown-block-quote": "#AD8301",
+ "markdown-emph": "#AD8301",
+ "markdown-strong": "#BC5215",
+ "markdown-horizontal-rule": "#6F6E69",
+ "markdown-list-item": "#BC5215",
+ "markdown-list-enumeration": "#24837B",
+ "markdown-image": "#A02F6F",
+ "markdown-image-text": "#24837B",
+ "markdown-code-block": "#100F0F"
+ }
+ },
+ "dark": {
+ "palette": {
+ "neutral": "#100F0F",
+ "ink": "#CECDC3",
+ "primary": "#DA702C",
+ "accent": "#8B7EC8",
+ "success": "#879A39",
+ "warning": "#DA702C",
+ "error": "#D14D41",
+ "info": "#3AA99F",
+ "interactive": "#4385BE"
+ },
+ "overrides": {
+ "text-weak": "#6F6E69",
+ "syntax-comment": "#6F6E69",
+ "syntax-keyword": "#879A39",
+ "syntax-string": "#3AA99F",
+ "syntax-primitive": "#DA702C",
+ "syntax-variable": "#4385BE",
+ "syntax-property": "#3AA99F",
+ "syntax-type": "#D0A215",
+ "syntax-constant": "#8B7EC8",
+ "syntax-operator": "#B7B5AC",
+ "syntax-punctuation": "#B7B5AC",
+ "syntax-object": "#4385BE",
+ "markdown-heading": "#8B7EC8",
+ "markdown-text": "#CECDC3",
+ "markdown-link": "#4385BE",
+ "markdown-link-text": "#3AA99F",
+ "markdown-code": "#3AA99F",
+ "markdown-block-quote": "#D0A215",
+ "markdown-emph": "#D0A215",
+ "markdown-strong": "#DA702C",
+ "markdown-horizontal-rule": "#6F6E69",
+ "markdown-list-item": "#DA702C",
+ "markdown-list-enumeration": "#3AA99F",
+ "markdown-image": "#CE5D97",
+ "markdown-image-text": "#3AA99F",
+ "markdown-code-block": "#CECDC3"
+ }
+ }
+}
diff --git a/packages/ui/src/theme/themes/github.json b/packages/ui/src/theme/themes/github.json
new file mode 100644
index 000000000..8cdf54f14
--- /dev/null
+++ b/packages/ui/src/theme/themes/github.json
@@ -0,0 +1,85 @@
+{
+ "$schema": "https://opencode.ai/desktop-theme.json",
+ "name": "GitHub",
+ "id": "github",
+ "light": {
+ "palette": {
+ "neutral": "#ffffff",
+ "ink": "#24292f",
+ "primary": "#0969da",
+ "accent": "#1b7c83",
+ "success": "#1a7f37",
+ "warning": "#9a6700",
+ "error": "#cf222e",
+ "info": "#bc4c00"
+ },
+ "overrides": {
+ "text-weak": "#57606a",
+ "syntax-comment": "#57606a",
+ "syntax-keyword": "#cf222e",
+ "syntax-string": "#0969da",
+ "syntax-primitive": "#8250df",
+ "syntax-variable": "#bc4c00",
+ "syntax-property": "#1b7c83",
+ "syntax-type": "#bc4c00",
+ "syntax-constant": "#1b7c83",
+ "syntax-operator": "#cf222e",
+ "syntax-punctuation": "#24292f",
+ "syntax-object": "#bc4c00",
+ "markdown-heading": "#0969da",
+ "markdown-text": "#24292f",
+ "markdown-link": "#0969da",
+ "markdown-link-text": "#1b7c83",
+ "markdown-code": "#bf3989",
+ "markdown-block-quote": "#57606a",
+ "markdown-emph": "#9a6700",
+ "markdown-strong": "#bc4c00",
+ "markdown-horizontal-rule": "#d0d7de",
+ "markdown-list-item": "#0969da",
+ "markdown-list-enumeration": "#1b7c83",
+ "markdown-image": "#0969da",
+ "markdown-image-text": "#1b7c83",
+ "markdown-code-block": "#24292f"
+ }
+ },
+ "dark": {
+ "palette": {
+ "neutral": "#0d1117",
+ "ink": "#c9d1d9",
+ "primary": "#58a6ff",
+ "accent": "#39c5cf",
+ "success": "#3fb950",
+ "warning": "#e3b341",
+ "error": "#f85149",
+ "info": "#d29922"
+ },
+ "overrides": {
+ "text-weak": "#8b949e",
+ "syntax-comment": "#8b949e",
+ "syntax-keyword": "#ff7b72",
+ "syntax-string": "#39c5cf",
+ "syntax-primitive": "#bc8cff",
+ "syntax-variable": "#d29922",
+ "syntax-property": "#39c5cf",
+ "syntax-type": "#d29922",
+ "syntax-constant": "#58a6ff",
+ "syntax-operator": "#ff7b72",
+ "syntax-punctuation": "#c9d1d9",
+ "syntax-object": "#d29922",
+ "markdown-heading": "#58a6ff",
+ "markdown-text": "#c9d1d9",
+ "markdown-link": "#58a6ff",
+ "markdown-link-text": "#39c5cf",
+ "markdown-code": "#ff7b72",
+ "markdown-block-quote": "#8b949e",
+ "markdown-emph": "#e3b341",
+ "markdown-strong": "#d29922",
+ "markdown-horizontal-rule": "#30363d",
+ "markdown-list-item": "#58a6ff",
+ "markdown-list-enumeration": "#39c5cf",
+ "markdown-image": "#58a6ff",
+ "markdown-image-text": "#39c5cf",
+ "markdown-code-block": "#c9d1d9"
+ }
+ }
+}
diff --git a/packages/ui/src/theme/themes/kanagawa.json b/packages/ui/src/theme/themes/kanagawa.json
new file mode 100644
index 000000000..e1b308c15
--- /dev/null
+++ b/packages/ui/src/theme/themes/kanagawa.json
@@ -0,0 +1,89 @@
+{
+ "$schema": "https://opencode.ai/desktop-theme.json",
+ "name": "Kanagawa",
+ "id": "kanagawa",
+ "light": {
+ "palette": {
+ "neutral": "#F2E9DE",
+ "ink": "#54433A",
+ "primary": "#2D4F67",
+ "accent": "#D27E99",
+ "success": "#98BB6C",
+ "warning": "#D7A657",
+ "error": "#E82424",
+ "info": "#76946A",
+ "diffAdd": "#89AF5B",
+ "diffDelete": "#D61F1F"
+ },
+ "overrides": {
+ "text-weak": "#9E9389",
+ "syntax-comment": "#9E9389",
+ "syntax-keyword": "#957FB8",
+ "syntax-string": "#98BB6C",
+ "syntax-primitive": "#2D4F67",
+ "syntax-variable": "#54433A",
+ "syntax-property": "#76946A",
+ "syntax-type": "#C38D9D",
+ "syntax-constant": "#D7A657",
+ "syntax-operator": "#D27E99",
+ "syntax-punctuation": "#54433A",
+ "syntax-object": "#54433A",
+ "markdown-heading": "#957FB8",
+ "markdown-text": "#54433A",
+ "markdown-link": "#2D4F67",
+ "markdown-link-text": "#76946A",
+ "markdown-code": "#98BB6C",
+ "markdown-block-quote": "#9E9389",
+ "markdown-emph": "#C38D9D",
+ "markdown-strong": "#D7A657",
+ "markdown-horizontal-rule": "#9E9389",
+ "markdown-list-item": "#2D4F67",
+ "markdown-list-enumeration": "#76946A",
+ "markdown-image": "#2D4F67",
+ "markdown-image-text": "#76946A",
+ "markdown-code-block": "#54433A"
+ }
+ },
+ "dark": {
+ "palette": {
+ "neutral": "#1F1F28",
+ "ink": "#DCD7BA",
+ "primary": "#7E9CD8",
+ "accent": "#D27E99",
+ "success": "#98BB6C",
+ "warning": "#D7A657",
+ "error": "#E82424",
+ "info": "#76946A",
+ "diffAdd": "#A9D977",
+ "diffDelete": "#F24A4A"
+ },
+ "overrides": {
+ "text-weak": "#727169",
+ "syntax-comment": "#727169",
+ "syntax-keyword": "#957FB8",
+ "syntax-string": "#98BB6C",
+ "syntax-primitive": "#7E9CD8",
+ "syntax-variable": "#DCD7BA",
+ "syntax-property": "#76946A",
+ "syntax-type": "#C38D9D",
+ "syntax-constant": "#D7A657",
+ "syntax-operator": "#D27E99",
+ "syntax-punctuation": "#DCD7BA",
+ "syntax-object": "#DCD7BA",
+ "markdown-heading": "#957FB8",
+ "markdown-text": "#DCD7BA",
+ "markdown-link": "#7E9CD8",
+ "markdown-link-text": "#76946A",
+ "markdown-code": "#98BB6C",
+ "markdown-block-quote": "#727169",
+ "markdown-emph": "#C38D9D",
+ "markdown-strong": "#D7A657",
+ "markdown-horizontal-rule": "#727169",
+ "markdown-list-item": "#7E9CD8",
+ "markdown-list-enumeration": "#76946A",
+ "markdown-image": "#7E9CD8",
+ "markdown-image-text": "#76946A",
+ "markdown-code-block": "#DCD7BA"
+ }
+ }
+}
diff --git a/packages/ui/src/theme/themes/lucent-orng.json b/packages/ui/src/theme/themes/lucent-orng.json
new file mode 100644
index 000000000..b963152ec
--- /dev/null
+++ b/packages/ui/src/theme/themes/lucent-orng.json
@@ -0,0 +1,87 @@
+{
+ "$schema": "https://opencode.ai/desktop-theme.json",
+ "name": "Lucent Orng",
+ "id": "lucent-orng",
+ "light": {
+ "palette": {
+ "neutral": "#fff5f0",
+ "ink": "#1a1a1a",
+ "primary": "#EC5B2B",
+ "accent": "#c94d24",
+ "success": "#0062d1",
+ "warning": "#EC5B2B",
+ "error": "#d1383d",
+ "info": "#318795",
+ "diffDelete": "#f52a65"
+ },
+ "overrides": {
+ "text-weak": "#8a8a8a",
+ "syntax-comment": "#8a8a8a",
+ "syntax-keyword": "#EC5B2B",
+ "syntax-string": "#0062d1",
+ "syntax-primitive": "#c94d24",
+ "syntax-variable": "#d1383d",
+ "syntax-property": "#318795",
+ "syntax-type": "#b0851f",
+ "syntax-constant": "#EC5B2B",
+ "syntax-operator": "#318795",
+ "syntax-punctuation": "#1a1a1a",
+ "syntax-object": "#d1383d",
+ "markdown-heading": "#EC5B2B",
+ "markdown-text": "#1a1a1a",
+ "markdown-link": "#EC5B2B",
+ "markdown-link-text": "#318795",
+ "markdown-code": "#0062d1",
+ "markdown-block-quote": "#b0851f",
+ "markdown-emph": "#b0851f",
+ "markdown-strong": "#EC5B2B",
+ "markdown-horizontal-rule": "#8a8a8a",
+ "markdown-list-item": "#EC5B2B",
+ "markdown-list-enumeration": "#318795",
+ "markdown-image": "#EC5B2B",
+ "markdown-image-text": "#318795",
+ "markdown-code-block": "#1a1a1a"
+ }
+ },
+ "dark": {
+ "palette": {
+ "neutral": "#2a1a15",
+ "ink": "#eeeeee",
+ "primary": "#EC5B2B",
+ "accent": "#FFF7F1",
+ "success": "#6ba1e6",
+ "warning": "#EC5B2B",
+ "error": "#e06c75",
+ "info": "#56b6c2",
+ "diffDelete": "#e26a75"
+ },
+ "overrides": {
+ "text-weak": "#808080",
+ "syntax-comment": "#808080",
+ "syntax-keyword": "#EC5B2B",
+ "syntax-string": "#6ba1e6",
+ "syntax-primitive": "#EE7948",
+ "syntax-variable": "#e06c75",
+ "syntax-property": "#56b6c2",
+ "syntax-type": "#e5c07b",
+ "syntax-constant": "#FFF7F1",
+ "syntax-operator": "#56b6c2",
+ "syntax-punctuation": "#eeeeee",
+ "syntax-object": "#e06c75",
+ "markdown-heading": "#EC5B2B",
+ "markdown-text": "#eeeeee",
+ "markdown-link": "#EC5B2B",
+ "markdown-link-text": "#56b6c2",
+ "markdown-code": "#6ba1e6",
+ "markdown-block-quote": "#FFF7F1",
+ "markdown-emph": "#e5c07b",
+ "markdown-strong": "#EE7948",
+ "markdown-horizontal-rule": "#808080",
+ "markdown-list-item": "#EC5B2B",
+ "markdown-list-enumeration": "#56b6c2",
+ "markdown-image": "#EC5B2B",
+ "markdown-image-text": "#56b6c2",
+ "markdown-code-block": "#eeeeee"
+ }
+ }
+}
diff --git a/packages/ui/src/theme/themes/material.json b/packages/ui/src/theme/themes/material.json
new file mode 100644
index 000000000..0753bbf52
--- /dev/null
+++ b/packages/ui/src/theme/themes/material.json
@@ -0,0 +1,87 @@
+{
+ "$schema": "https://opencode.ai/desktop-theme.json",
+ "name": "Material",
+ "id": "material",
+ "light": {
+ "palette": {
+ "neutral": "#fafafa",
+ "ink": "#263238",
+ "primary": "#6182b8",
+ "accent": "#39adb5",
+ "success": "#91b859",
+ "warning": "#ffb300",
+ "error": "#e53935",
+ "info": "#f4511e",
+ "interactive": "#39adb5"
+ },
+ "overrides": {
+ "text-weak": "#90a4ae",
+ "syntax-comment": "#90a4ae",
+ "syntax-keyword": "#7c4dff",
+ "syntax-string": "#91b859",
+ "syntax-primitive": "#6182b8",
+ "syntax-variable": "#263238",
+ "syntax-property": "#7c4dff",
+ "syntax-type": "#ffb300",
+ "syntax-constant": "#f4511e",
+ "syntax-operator": "#39adb5",
+ "syntax-punctuation": "#263238",
+ "syntax-object": "#263238",
+ "markdown-heading": "#6182b8",
+ "markdown-text": "#263238",
+ "markdown-link": "#39adb5",
+ "markdown-link-text": "#7c4dff",
+ "markdown-code": "#91b859",
+ "markdown-block-quote": "#90a4ae",
+ "markdown-emph": "#ffb300",
+ "markdown-strong": "#f4511e",
+ "markdown-horizontal-rule": "#e0e0e0",
+ "markdown-list-item": "#6182b8",
+ "markdown-list-enumeration": "#39adb5",
+ "markdown-image": "#39adb5",
+ "markdown-image-text": "#7c4dff",
+ "markdown-code-block": "#263238"
+ }
+ },
+ "dark": {
+ "palette": {
+ "neutral": "#263238",
+ "ink": "#eeffff",
+ "primary": "#82aaff",
+ "accent": "#89ddff",
+ "success": "#c3e88d",
+ "warning": "#ffcb6b",
+ "error": "#f07178",
+ "info": "#ffcb6b",
+ "interactive": "#89ddff"
+ },
+ "overrides": {
+ "text-weak": "#546e7a",
+ "syntax-comment": "#546e7a",
+ "syntax-keyword": "#c792ea",
+ "syntax-string": "#c3e88d",
+ "syntax-primitive": "#82aaff",
+ "syntax-variable": "#eeffff",
+ "syntax-property": "#c792ea",
+ "syntax-type": "#ffcb6b",
+ "syntax-constant": "#ffcb6b",
+ "syntax-operator": "#89ddff",
+ "syntax-punctuation": "#eeffff",
+ "syntax-object": "#eeffff",
+ "markdown-heading": "#82aaff",
+ "markdown-text": "#eeffff",
+ "markdown-link": "#89ddff",
+ "markdown-link-text": "#c792ea",
+ "markdown-code": "#c3e88d",
+ "markdown-block-quote": "#546e7a",
+ "markdown-emph": "#ffcb6b",
+ "markdown-strong": "#ffcb6b",
+ "markdown-horizontal-rule": "#37474f",
+ "markdown-list-item": "#82aaff",
+ "markdown-list-enumeration": "#89ddff",
+ "markdown-image": "#89ddff",
+ "markdown-image-text": "#c792ea",
+ "markdown-code-block": "#eeffff"
+ }
+ }
+}
diff --git a/packages/ui/src/theme/themes/matrix.json b/packages/ui/src/theme/themes/matrix.json
new file mode 100644
index 000000000..adc379326
--- /dev/null
+++ b/packages/ui/src/theme/themes/matrix.json
@@ -0,0 +1,91 @@
+{
+ "$schema": "https://opencode.ai/desktop-theme.json",
+ "name": "Matrix",
+ "id": "matrix",
+ "light": {
+ "palette": {
+ "neutral": "#eef3ea",
+ "ink": "#203022",
+ "primary": "#1cc24b",
+ "accent": "#c770ff",
+ "success": "#1cc24b",
+ "warning": "#e6ff57",
+ "error": "#ff4b4b",
+ "info": "#30b3ff",
+ "interactive": "#30b3ff",
+ "diffAdd": "#5dac7e",
+ "diffDelete": "#d53a3a"
+ },
+ "overrides": {
+ "text-weak": "#748476",
+ "syntax-comment": "#748476",
+ "syntax-keyword": "#c770ff",
+ "syntax-string": "#1cc24b",
+ "syntax-primitive": "#30b3ff",
+ "syntax-variable": "#203022",
+ "syntax-property": "#24f6d9",
+ "syntax-type": "#e6ff57",
+ "syntax-constant": "#ffa83d",
+ "syntax-operator": "#24f6d9",
+ "syntax-punctuation": "#203022",
+ "syntax-object": "#203022",
+ "markdown-heading": "#24f6d9",
+ "markdown-text": "#203022",
+ "markdown-link": "#30b3ff",
+ "markdown-link-text": "#24f6d9",
+ "markdown-code": "#1cc24b",
+ "markdown-block-quote": "#748476",
+ "markdown-emph": "#ffa83d",
+ "markdown-strong": "#e6ff57",
+ "markdown-horizontal-rule": "#748476",
+ "markdown-list-item": "#30b3ff",
+ "markdown-list-enumeration": "#24f6d9",
+ "markdown-image": "#30b3ff",
+ "markdown-image-text": "#24f6d9",
+ "markdown-code-block": "#203022"
+ }
+ },
+ "dark": {
+ "palette": {
+ "neutral": "#0a0e0a",
+ "ink": "#62ff94",
+ "primary": "#2eff6a",
+ "accent": "#c770ff",
+ "success": "#62ff94",
+ "warning": "#e6ff57",
+ "error": "#ff4b4b",
+ "info": "#30b3ff",
+ "interactive": "#30b3ff",
+ "diffAdd": "#77ffaf",
+ "diffDelete": "#ff7171"
+ },
+ "overrides": {
+ "text-weak": "#8ca391",
+ "syntax-comment": "#8ca391",
+ "syntax-keyword": "#c770ff",
+ "syntax-string": "#1cc24b",
+ "syntax-primitive": "#30b3ff",
+ "syntax-variable": "#62ff94",
+ "syntax-property": "#24f6d9",
+ "syntax-type": "#e6ff57",
+ "syntax-constant": "#ffa83d",
+ "syntax-operator": "#24f6d9",
+ "syntax-punctuation": "#62ff94",
+ "syntax-object": "#62ff94",
+ "markdown-heading": "#00efff",
+ "markdown-text": "#62ff94",
+ "markdown-link": "#30b3ff",
+ "markdown-link-text": "#24f6d9",
+ "markdown-code": "#1cc24b",
+ "markdown-block-quote": "#8ca391",
+ "markdown-emph": "#ffa83d",
+ "markdown-strong": "#e6ff57",
+ "markdown-horizontal-rule": "#8ca391",
+ "markdown-list-item": "#30b3ff",
+ "markdown-list-enumeration": "#24f6d9",
+ "markdown-image": "#30b3ff",
+ "markdown-image-text": "#24f6d9",
+ "markdown-code-block": "#62ff94"
+ }
+ }
+}
diff --git a/packages/ui/src/theme/themes/mercury.json b/packages/ui/src/theme/themes/mercury.json
new file mode 100644
index 000000000..0d16eda1e
--- /dev/null
+++ b/packages/ui/src/theme/themes/mercury.json
@@ -0,0 +1,86 @@
+{
+ "$schema": "https://opencode.ai/desktop-theme.json",
+ "name": "Mercury",
+ "id": "mercury",
+ "light": {
+ "palette": {
+ "neutral": "#ffffff",
+ "ink": "#363644",
+ "primary": "#5266eb",
+ "accent": "#8da4f5",
+ "success": "#036e43",
+ "warning": "#a44200",
+ "error": "#b0175f",
+ "info": "#007f95",
+ "interactive": "#465bd1"
+ },
+ "overrides": {
+ "text-weak": "#70707d",
+ "syntax-comment": "#70707d",
+ "syntax-keyword": "#465bd1",
+ "syntax-string": "#036e43",
+ "syntax-primitive": "#5266eb",
+ "syntax-variable": "#007f95",
+ "syntax-property": "#5266eb",
+ "syntax-type": "#007f95",
+ "syntax-constant": "#a44200",
+ "syntax-operator": "#465bd1",
+ "syntax-punctuation": "#363644",
+ "syntax-object": "#007f95",
+ "markdown-heading": "#1e1e2a",
+ "markdown-text": "#363644",
+ "markdown-link": "#465bd1",
+ "markdown-link-text": "#5266eb",
+ "markdown-code": "#036e43",
+ "markdown-block-quote": "#70707d",
+ "markdown-emph": "#a44200",
+ "markdown-strong": "#1e1e2a",
+ "markdown-horizontal-rule": "#7073931a",
+ "markdown-list-item": "#1e1e2a",
+ "markdown-list-enumeration": "#5266eb",
+ "markdown-image": "#465bd1",
+ "markdown-image-text": "#5266eb",
+ "markdown-code-block": "#363644"
+ }
+ },
+ "dark": {
+ "palette": {
+ "neutral": "#171721",
+ "ink": "#dddde5",
+ "primary": "#8da4f5",
+ "accent": "#8da4f5",
+ "success": "#77c599",
+ "warning": "#fc9b6f",
+ "error": "#fc92b4",
+ "info": "#77becf"
+ },
+ "overrides": {
+ "text-weak": "#9d9da8",
+ "syntax-comment": "#9d9da8",
+ "syntax-keyword": "#8da4f5",
+ "syntax-string": "#77c599",
+ "syntax-primitive": "#8da4f5",
+ "syntax-variable": "#77becf",
+ "syntax-property": "#a7b6f8",
+ "syntax-type": "#77becf",
+ "syntax-constant": "#fc9b6f",
+ "syntax-operator": "#8da4f5",
+ "syntax-punctuation": "#dddde5",
+ "syntax-object": "#77becf",
+ "markdown-heading": "#ffffff",
+ "markdown-text": "#dddde5",
+ "markdown-link": "#8da4f5",
+ "markdown-link-text": "#a7b6f8",
+ "markdown-code": "#77c599",
+ "markdown-block-quote": "#9d9da8",
+ "markdown-emph": "#fc9b6f",
+ "markdown-strong": "#f4f5f9",
+ "markdown-horizontal-rule": "#b4b7c81f",
+ "markdown-list-item": "#ffffff",
+ "markdown-list-enumeration": "#8da4f5",
+ "markdown-image": "#8da4f5",
+ "markdown-image-text": "#a7b6f8",
+ "markdown-code-block": "#dddde5"
+ }
+ }
+}
diff --git a/packages/ui/src/theme/themes/one-dark.json b/packages/ui/src/theme/themes/one-dark.json
new file mode 100644
index 000000000..0017bd6f5
--- /dev/null
+++ b/packages/ui/src/theme/themes/one-dark.json
@@ -0,0 +1,89 @@
+{
+ "$schema": "https://opencode.ai/desktop-theme.json",
+ "name": "One Dark",
+ "id": "one-dark",
+ "light": {
+ "palette": {
+ "neutral": "#fafafa",
+ "ink": "#383a42",
+ "primary": "#4078f2",
+ "accent": "#0184bc",
+ "success": "#50a14f",
+ "warning": "#c18401",
+ "error": "#e45649",
+ "info": "#986801",
+ "diffAdd": "#489447",
+ "diffDelete": "#d65145"
+ },
+ "overrides": {
+ "text-weak": "#a0a1a7",
+ "syntax-comment": "#a0a1a7",
+ "syntax-keyword": "#a626a4",
+ "syntax-string": "#50a14f",
+ "syntax-primitive": "#4078f2",
+ "syntax-variable": "#e45649",
+ "syntax-property": "#0184bc",
+ "syntax-type": "#c18401",
+ "syntax-constant": "#986801",
+ "syntax-operator": "#0184bc",
+ "syntax-punctuation": "#383a42",
+ "syntax-object": "#e45649",
+ "markdown-heading": "#a626a4",
+ "markdown-text": "#383a42",
+ "markdown-link": "#4078f2",
+ "markdown-link-text": "#0184bc",
+ "markdown-code": "#50a14f",
+ "markdown-block-quote": "#a0a1a7",
+ "markdown-emph": "#c18401",
+ "markdown-strong": "#986801",
+ "markdown-horizontal-rule": "#a0a1a7",
+ "markdown-list-item": "#4078f2",
+ "markdown-list-enumeration": "#0184bc",
+ "markdown-image": "#4078f2",
+ "markdown-image-text": "#0184bc",
+ "markdown-code-block": "#383a42"
+ }
+ },
+ "dark": {
+ "palette": {
+ "neutral": "#282c34",
+ "ink": "#abb2bf",
+ "primary": "#61afef",
+ "accent": "#56b6c2",
+ "success": "#98c379",
+ "warning": "#e5c07b",
+ "error": "#e06c75",
+ "info": "#d19a66",
+ "diffAdd": "#aad482",
+ "diffDelete": "#e8828b"
+ },
+ "overrides": {
+ "text-weak": "#5c6370",
+ "syntax-comment": "#5c6370",
+ "syntax-keyword": "#c678dd",
+ "syntax-string": "#98c379",
+ "syntax-primitive": "#61afef",
+ "syntax-variable": "#e06c75",
+ "syntax-property": "#56b6c2",
+ "syntax-type": "#e5c07b",
+ "syntax-constant": "#d19a66",
+ "syntax-operator": "#56b6c2",
+ "syntax-punctuation": "#abb2bf",
+ "syntax-object": "#e06c75",
+ "markdown-heading": "#c678dd",
+ "markdown-text": "#abb2bf",
+ "markdown-link": "#61afef",
+ "markdown-link-text": "#56b6c2",
+ "markdown-code": "#98c379",
+ "markdown-block-quote": "#5c6370",
+ "markdown-emph": "#e5c07b",
+ "markdown-strong": "#d19a66",
+ "markdown-horizontal-rule": "#5c6370",
+ "markdown-list-item": "#61afef",
+ "markdown-list-enumeration": "#56b6c2",
+ "markdown-image": "#61afef",
+ "markdown-image-text": "#56b6c2",
+ "markdown-code-block": "#abb2bf"
+ }
+ }
+}
diff --git a/packages/ui/src/theme/themes/opencode.json b/packages/ui/src/theme/themes/opencode.json
new file mode 100644
index 000000000..de7ab19e5
--- /dev/null
+++ b/packages/ui/src/theme/themes/opencode.json
@@ -0,0 +1,89 @@
+{
+ "$schema": "https://opencode.ai/desktop-theme.json",
+ "name": "OpenCode",
+ "id": "opencode",
+ "light": {
+ "palette": {
+ "neutral": "#ffffff",
+ "ink": "#1a1a1a",
+ "primary": "#3b7dd8",
+ "accent": "#d68c27",
+ "success": "#3d9a57",
+ "warning": "#d68c27",
+ "error": "#d1383d",
+ "info": "#318795",
+ "diffAdd": "#4db380",
+ "diffDelete": "#f52a65"
+ },
+ "overrides": {
+ "text-weak": "#8a8a8a",
+ "syntax-comment": "#8a8a8a",
+ "syntax-keyword": "#d68c27",
+ "syntax-string": "#3d9a57",
+ "syntax-primitive": "#3b7dd8",
+ "syntax-variable": "#d1383d",
+ "syntax-property": "#318795",
+ "syntax-type": "#b0851f",
+ "syntax-constant": "#d68c27",
+ "syntax-operator": "#318795",
+ "syntax-punctuation": "#1a1a1a",
+ "syntax-object": "#d1383d",
+ "markdown-heading": "#d68c27",
+ "markdown-text": "#1a1a1a",
+ "markdown-link": "#3b7dd8",
+ "markdown-link-text": "#318795",
+ "markdown-code": "#3d9a57",
+ "markdown-block-quote": "#b0851f",
+ "markdown-emph": "#b0851f",
+ "markdown-strong": "#d68c27",
+ "markdown-horizontal-rule": "#8a8a8a",
+ "markdown-list-item": "#3b7dd8",
+ "markdown-list-enumeration": "#318795",
+ "markdown-image": "#3b7dd8",
+ "markdown-image-text": "#318795",
+ "markdown-code-block": "#1a1a1a"
+ }
+ },
+ "dark": {
+ "palette": {
+ "neutral": "#0a0a0a",
+ "ink": "#eeeeee",
+ "primary": "#fab283",
+ "accent": "#9d7cd8",
+ "success": "#7fd88f",
+ "warning": "#f5a742",
+ "error": "#e06c75",
+ "info": "#56b6c2",
+ "diffAdd": "#b8db87",
+ "diffDelete": "#e26a75"
+ },
+ "overrides": {
+ "text-weak": "#808080",
+ "syntax-comment": "#808080",
+ "syntax-keyword": "#9d7cd8",
+ "syntax-string": "#7fd88f",
+ "syntax-primitive": "#fab283",
+ "syntax-variable": "#e06c75",
+ "syntax-property": "#56b6c2",
+ "syntax-type": "#e5c07b",
+ "syntax-constant": "#f5a742",
+ "syntax-operator": "#56b6c2",
+ "syntax-punctuation": "#eeeeee",
+ "syntax-object": "#e06c75",
+ "markdown-heading": "#9d7cd8",
+ "markdown-text": "#eeeeee",
+ "markdown-link": "#fab283",
+ "markdown-link-text": "#56b6c2",
+ "markdown-code": "#7fd88f",
+ "markdown-block-quote": "#e5c07b",
+ "markdown-emph": "#e5c07b",
+ "markdown-strong": "#f5a742",
+ "markdown-horizontal-rule": "#808080",
+ "markdown-list-item": "#fab283",
+ "markdown-list-enumeration": "#56b6c2",
+ "markdown-image": "#fab283",
+ "markdown-image-text": "#56b6c2",
+ "markdown-code-block": "#eeeeee"
+ }
+ }
+}
diff --git a/packages/ui/src/theme/themes/orng.json b/packages/ui/src/theme/themes/orng.json
new file mode 100644
index 000000000..95bf19e9f
--- /dev/null
+++ b/packages/ui/src/theme/themes/orng.json
@@ -0,0 +1,87 @@
+{
+ "$schema": "https://opencode.ai/desktop-theme.json",
+ "name": "Orng",
+ "id": "orng",
+ "light": {
+ "palette": {
+ "neutral": "#ffffff",
+ "ink": "#1a1a1a",
+ "primary": "#EC5B2B",
+ "accent": "#c94d24",
+ "success": "#0062d1",
+ "warning": "#EC5B2B",
+ "error": "#d1383d",
+ "info": "#318795",
+ "diffDelete": "#f52a65"
+ },
+ "overrides": {
+ "text-weak": "#8a8a8a",
+ "syntax-comment": "#8a8a8a",
+ "syntax-keyword": "#EC5B2B",
+ "syntax-string": "#0062d1",
+ "syntax-primitive": "#c94d24",
+ "syntax-variable": "#d1383d",
+ "syntax-property": "#318795",
+ "syntax-type": "#b0851f",
+ "syntax-constant": "#EC5B2B",
+ "syntax-operator": "#318795",
+ "syntax-punctuation": "#1a1a1a",
+ "syntax-object": "#d1383d",
+ "markdown-heading": "#EC5B2B",
+ "markdown-text": "#1a1a1a",
+ "markdown-link": "#EC5B2B",
+ "markdown-link-text": "#318795",
+ "markdown-code": "#0062d1",
+ "markdown-block-quote": "#b0851f",
+ "markdown-emph": "#b0851f",
+ "markdown-strong": "#EC5B2B",
+ "markdown-horizontal-rule": "#8a8a8a",
+ "markdown-list-item": "#EC5B2B",
+ "markdown-list-enumeration": "#318795",
+ "markdown-image": "#EC5B2B",
+ "markdown-image-text": "#318795",
+ "markdown-code-block": "#1a1a1a"
+ }
+ },
+ "dark": {
+ "palette": {
+ "neutral": "#0a0a0a",
+ "ink": "#eeeeee",
+ "primary": "#EC5B2B",
+ "accent": "#FFF7F1",
+ "success": "#6ba1e6",
+ "warning": "#EC5B2B",
+ "error": "#e06c75",
+ "info": "#56b6c2",
+ "diffDelete": "#e26a75"
+ },
+ "overrides": {
+ "text-weak": "#808080",
+ "syntax-comment": "#808080",
+ "syntax-keyword": "#EC5B2B",
+ "syntax-string": "#6ba1e6",
+ "syntax-primitive": "#EE7948",
+ "syntax-variable": "#e06c75",
+ "syntax-property": "#56b6c2",
+ "syntax-type": "#e5c07b",
+ "syntax-constant": "#FFF7F1",
+ "syntax-operator": "#56b6c2",
+ "syntax-punctuation": "#eeeeee",
+ "syntax-object": "#e06c75",
+ "markdown-heading": "#EC5B2B",
+ "markdown-text": "#eeeeee",
+ "markdown-link": "#EC5B2B",
+ "markdown-link-text": "#56b6c2",
+ "markdown-code": "#6ba1e6",
+ "markdown-block-quote": "#FFF7F1",
+ "markdown-emph": "#e5c07b",
+ "markdown-strong": "#EE7948",
+ "markdown-horizontal-rule": "#808080",
+ "markdown-list-item": "#EC5B2B",
+ "markdown-list-enumeration": "#56b6c2",
+ "markdown-image": "#EC5B2B",
+ "markdown-image-text": "#56b6c2",
+ "markdown-code-block": "#eeeeee"
+ }
+ }
+}
diff --git a/packages/ui/src/theme/themes/osaka-jade.json b/packages/ui/src/theme/themes/osaka-jade.json
new file mode 100644
index 000000000..2a0689c28
--- /dev/null
+++ b/packages/ui/src/theme/themes/osaka-jade.json
@@ -0,0 +1,88 @@
+{
+ "$schema": "https://opencode.ai/desktop-theme.json",
+ "name": "Osaka Jade",
+ "id": "osaka-jade",
+ "light": {
+ "palette": {
+ "neutral": "#F6F5DD",
+ "ink": "#111c18",
+ "primary": "#1faa90",
+ "accent": "#3d7a52",
+ "success": "#3d7a52",
+ "warning": "#b5a020",
+ "error": "#c7392d",
+ "info": "#1faa90"
+ },
+ "overrides": {
+ "text-weak": "#53685B",
+ "syntax-comment": "#53685B",
+ "syntax-keyword": "#1faa90",
+ "syntax-string": "#3d7a52",
+ "syntax-primitive": "#3d7560",
+ "syntax-variable": "#111c18",
+ "syntax-property": "#3d7a52",
+ "syntax-type": "#3d7a52",
+ "syntax-constant": "#a8527a",
+ "syntax-operator": "#b5a020",
+ "syntax-punctuation": "#111c18",
+ "syntax-object": "#111c18",
+ "markdown-heading": "#1faa90",
+ "markdown-text": "#111c18",
+ "markdown-link": "#1faa90",
+ "markdown-link-text": "#3d7a52",
+ "markdown-code": "#3d7a52",
+ "markdown-block-quote": "#53685B",
+ "markdown-emph": "#a8527a",
+ "markdown-strong": "#111c18",
+ "markdown-horizontal-rule": "#53685B",
+ "markdown-list-item": "#1faa90",
+ "markdown-list-enumeration": "#1faa90",
+ "markdown-image": "#1faa90",
+ "markdown-image-text": "#3d7a52",
+ "markdown-code-block": "#111c18"
+ }
+ },
+ "dark": {
+ "palette": {
+ "neutral": "#111c18",
+ "ink": "#C1C497",
+ "primary": "#2DD5B7",
+ "accent": "#549e6a",
+ "success": "#549e6a",
+ "warning": "#E5C736",
+ "error": "#FF5345",
+ "info": "#2DD5B7",
+ "interactive": "#8CD3CB",
+ "diffAdd": "#63b07a",
+ "diffDelete": "#db9f9c"
+ },
+ "overrides": {
+ "text-weak": "#53685B",
+ "syntax-comment": "#53685B",
+ "syntax-keyword": "#2DD5B7",
+ "syntax-string": "#63b07a",
+ "syntax-primitive": "#509475",
+ "syntax-variable": "#C1C497",
+ "syntax-property": "#549e6a",
+ "syntax-type": "#549e6a",
+ "syntax-constant": "#D2689C",
+ "syntax-operator": "#459451",
+ "syntax-punctuation": "#C1C497",
+ "syntax-object": "#C1C497",
+ "markdown-heading": "#2DD5B7",
+ "markdown-text": "#C1C497",
+ "markdown-link": "#8CD3CB",
+ "markdown-link-text": "#549e6a",
+ "markdown-code": "#63b07a",
+ "markdown-block-quote": "#53685B",
+ "markdown-emph": "#D2689C",
+ "markdown-strong": "#C1C497",
+ "markdown-horizontal-rule": "#53685B",
+ "markdown-list-item": "#2DD5B7",
+ "markdown-list-enumeration": "#8CD3CB",
+ "markdown-image": "#8CD3CB",
+ "markdown-image-text": "#549e6a",
+ "markdown-code-block": "#C1C497"
+ }
+ }
+}
diff --git a/packages/ui/src/theme/themes/palenight.json b/packages/ui/src/theme/themes/palenight.json
new file mode 100644
index 000000000..15463c9c8
--- /dev/null
+++ b/packages/ui/src/theme/themes/palenight.json
@@ -0,0 +1,85 @@
+{
+ "$schema": "https://opencode.ai/desktop-theme.json",
+ "name": "Palenight",
+ "id": "palenight",
+ "light": {
+ "palette": {
+ "neutral": "#fafafa",
+ "ink": "#292d3e",
+ "primary": "#4976eb",
+ "accent": "#00acc1",
+ "success": "#91b859",
+ "warning": "#ffb300",
+ "error": "#e53935",
+ "info": "#f4511e"
+ },
+ "overrides": {
+ "text-weak": "#8796b0",
+ "syntax-comment": "#8796b0",
+ "syntax-keyword": "#a854f2",
+ "syntax-string": "#91b859",
+ "syntax-primitive": "#4976eb",
+ "syntax-variable": "#292d3e",
+ "syntax-property": "#00acc1",
+ "syntax-type": "#ffb300",
+ "syntax-constant": "#f4511e",
+ "syntax-operator": "#00acc1",
+ "syntax-punctuation": "#292d3e",
+ "syntax-object": "#292d3e",
+ "markdown-heading": "#a854f2",
+ "markdown-text": "#292d3e",
+ "markdown-link": "#4976eb",
+ "markdown-link-text": "#00acc1",
+ "markdown-code": "#91b859",
+ "markdown-block-quote": "#8796b0",
+ "markdown-emph": "#ffb300",
+ "markdown-strong": "#f4511e",
+ "markdown-horizontal-rule": "#8796b0",
+ "markdown-list-item": "#4976eb",
+ "markdown-list-enumeration": "#00acc1",
+ "markdown-image": "#4976eb",
+ "markdown-image-text": "#00acc1",
+ "markdown-code-block": "#292d3e"
+ }
+ },
+ "dark": {
+ "palette": {
+ "neutral": "#292d3e",
+ "ink": "#a6accd",
+ "primary": "#82aaff",
+ "accent": "#89ddff",
+ "success": "#c3e88d",
+ "warning": "#ffcb6b",
+ "error": "#f07178",
+ "info": "#f78c6c"
+ },
+ "overrides": {
+ "text-weak": "#676e95",
+ "syntax-comment": "#676e95",
+ "syntax-keyword": "#c792ea",
+ "syntax-string": "#c3e88d",
+ "syntax-primitive": "#82aaff",
+ "syntax-variable": "#a6accd",
+ "syntax-property": "#89ddff",
+ "syntax-type": "#ffcb6b",
+ "syntax-constant": "#f78c6c",
+ "syntax-operator": "#89ddff",
+ "syntax-punctuation": "#a6accd",
+ "syntax-object": "#a6accd",
+ "markdown-heading": "#c792ea",
+ "markdown-text": "#a6accd",
+ "markdown-link": "#82aaff",
+ "markdown-link-text": "#89ddff",
+ "markdown-code": "#c3e88d",
+ "markdown-block-quote": "#676e95",
+ "markdown-emph": "#ffcb6b",
+ "markdown-strong": "#f78c6c",
+ "markdown-horizontal-rule": "#676e95",
+ "markdown-list-item": "#82aaff",
+ "markdown-list-enumeration": "#89ddff",
+ "markdown-image": "#82aaff",
+ "markdown-image-text": "#89ddff",
+ "markdown-code-block": "#a6accd"
+ }
+ }
+}
diff --git a/packages/ui/src/theme/themes/rosepine.json b/packages/ui/src/theme/themes/rosepine.json
new file mode 100644
index 000000000..a71ad18ce
--- /dev/null
+++ b/packages/ui/src/theme/themes/rosepine.json
@@ -0,0 +1,85 @@
+{
+ "$schema": "https://opencode.ai/desktop-theme.json",
+ "name": "Rose Pine",
+ "id": "rosepine",
+ "light": {
+ "palette": {
+ "neutral": "#faf4ed",
+ "ink": "#575279",
+ "primary": "#31748f",
+ "accent": "#d7827e",
+ "success": "#286983",
+ "warning": "#ea9d34",
+ "error": "#b4637a",
+ "info": "#56949f"
+ },
+ "overrides": {
+ "text-weak": "#9893a5",
+ "syntax-comment": "#9893a5",
+ "syntax-keyword": "#286983",
+ "syntax-string": "#ea9d34",
+ "syntax-primitive": "#d7827e",
+ "syntax-variable": "#575279",
+ "syntax-property": "#d7827e",
+ "syntax-type": "#56949f",
+ "syntax-constant": "#907aa9",
+ "syntax-operator": "#797593",
+ "syntax-punctuation": "#797593",
+ "syntax-object": "#575279",
+ "markdown-heading": "#907aa9",
+ "markdown-text": "#575279",
+ "markdown-link": "#31748f",
+ "markdown-link-text": "#d7827e",
+ "markdown-code": "#286983",
+ "markdown-block-quote": "#9893a5",
+ "markdown-emph": "#ea9d34",
+ "markdown-strong": "#b4637a",
+ "markdown-horizontal-rule": "#dfdad9",
+ "markdown-list-item": "#31748f",
+ "markdown-list-enumeration": "#d7827e",
+ "markdown-image": "#31748f",
+ "markdown-image-text": "#d7827e",
+ "markdown-code-block": "#575279"
+ }
+ },
+ "dark": {
+ "palette": {
+ "neutral": "#191724",
+ "ink": "#e0def4",
+ "primary": "#9ccfd8",
+ "accent": "#ebbcba",
+ "success": "#31748f",
+ "warning": "#f6c177",
+ "error": "#eb6f92",
+ "info": "#9ccfd8"
+ },
+ "overrides": {
+ "text-weak": "#6e6a86",
+ "syntax-comment": "#6e6a86",
+ "syntax-keyword": "#31748f",
+ "syntax-string": "#f6c177",
+ "syntax-primitive": "#ebbcba",
+ "syntax-variable": "#e0def4",
+ "syntax-property": "#ebbcba",
+ "syntax-type": "#9ccfd8",
+ "syntax-constant": "#c4a7e7",
+ "syntax-operator": "#908caa",
+ "syntax-punctuation": "#908caa",
+ "syntax-object": "#e0def4",
+ "markdown-heading": "#c4a7e7",
+ "markdown-text": "#e0def4",
+ "markdown-link": "#9ccfd8",
+ "markdown-link-text": "#ebbcba",
+ "markdown-code": "#31748f",
+ "markdown-block-quote": "#6e6a86",
+ "markdown-emph": "#f6c177",
+ "markdown-strong": "#eb6f92",
+ "markdown-horizontal-rule": "#403d52",
+ "markdown-list-item": "#9ccfd8",
+ "markdown-list-enumeration": "#ebbcba",
+ "markdown-image": "#9ccfd8",
+ "markdown-image-text": "#ebbcba",
+ "markdown-code-block": "#e0def4"
+ }
+ }
+}
diff --git a/packages/ui/src/theme/themes/synthwave84.json b/packages/ui/src/theme/themes/synthwave84.json
new file mode 100644
index 000000000..ce86ce89f
--- /dev/null
+++ b/packages/ui/src/theme/themes/synthwave84.json
@@ -0,0 +1,87 @@
+{
+ "$schema": "https://opencode.ai/desktop-theme.json",
+ "name": "Synthwave '84",
+ "id": "synthwave84",
+ "light": {
+ "palette": {
+ "neutral": "#fafafa",
+ "ink": "#262335",
+ "primary": "#00bcd4",
+ "accent": "#9c27b0",
+ "success": "#4caf50",
+ "warning": "#ff9800",
+ "error": "#f44336",
+ "info": "#ff5722"
+ },
+ "overrides": {
+ "text-weak": "#5c5c8a",
+ "syntax-comment": "#5c5c8a",
+ "syntax-keyword": "#e91e63",
+ "syntax-string": "#ff9800",
+ "syntax-primitive": "#ff5722",
+ "syntax-variable": "#262335",
+ "syntax-property": "#9c27b0",
+ "syntax-type": "#00bcd4",
+ "syntax-constant": "#9c27b0",
+ "syntax-operator": "#e91e63",
+ "syntax-punctuation": "#262335",
+ "syntax-object": "#262335",
+ "markdown-heading": "#e91e63",
+ "markdown-text": "#262335",
+ "markdown-link": "#00bcd4",
+ "markdown-link-text": "#9c27b0",
+ "markdown-code": "#4caf50",
+ "markdown-block-quote": "#5c5c8a",
+ "markdown-emph": "#ff9800",
+ "markdown-strong": "#ff5722",
+ "markdown-horizontal-rule": "#e0e0e0",
+ "markdown-list-item": "#00bcd4",
+ "markdown-list-enumeration": "#9c27b0",
+ "markdown-image": "#00bcd4",
+ "markdown-image-text": "#9c27b0",
+ "markdown-code-block": "#262335"
+ }
+ },
+ "dark": {
+ "palette": {
+ "neutral": "#262335",
+ "ink": "#ffffff",
+ "primary": "#36f9f6",
+ "accent": "#b084eb",
+ "success": "#72f1b8",
+ "warning": "#fede5d",
+ "error": "#fe4450",
+ "info": "#ff8b39",
+ "diffAdd": "#97f1d8",
+ "diffDelete": "#ff5e5b"
+ },
+ "overrides": {
+ "text-weak": "#848bbd",
+ "syntax-comment": "#848bbd",
+ "syntax-keyword": "#ff7edb",
+ "syntax-string": "#fede5d",
+ "syntax-primitive": "#ff8b39",
+ "syntax-variable": "#ffffff",
+ "syntax-property": "#b084eb",
+ "syntax-type": "#36f9f6",
+ "syntax-constant": "#b084eb",
+ "syntax-operator": "#ff7edb",
+ "syntax-punctuation": "#ffffff",
+ "syntax-object": "#ffffff",
+ "markdown-heading": "#ff7edb",
+ "markdown-text": "#ffffff",
+ "markdown-link": "#36f9f6",
+ "markdown-link-text": "#b084eb",
+ "markdown-code": "#72f1b8",
+ "markdown-block-quote": "#848bbd",
+ "markdown-emph": "#fede5d",
+ "markdown-strong": "#ff8b39",
+ "markdown-horizontal-rule": "#495495",
+ "markdown-list-item": "#36f9f6",
+ "markdown-list-enumeration": "#b084eb",
+ "markdown-image": "#36f9f6",
+ "markdown-image-text": "#b084eb",
+ "markdown-code-block": "#ffffff"
+ }
+ }
+}
diff --git a/packages/ui/src/theme/themes/vercel.json b/packages/ui/src/theme/themes/vercel.json
new file mode 100644
index 000000000..dd0028c70
--- /dev/null
+++ b/packages/ui/src/theme/themes/vercel.json
@@ -0,0 +1,90 @@
+{
+ "$schema": "https://opencode.ai/desktop-theme.json",
+ "name": "Vercel",
+ "id": "vercel",
+ "light": {
+ "palette": {
+ "neutral": "#FFFFFF",
+ "ink": "#171717",
+ "primary": "#0070F3",
+ "accent": "#8E4EC6",
+ "success": "#388E3C",
+ "warning": "#FF9500",
+ "error": "#DC3545",
+ "info": "#0070F3",
+ "diffAdd": "#46A758",
+ "diffDelete": "#E5484D"
+ },
+ "overrides": {
+ "text-weak": "#666666",
+ "syntax-comment": "#888888",
+ "syntax-keyword": "#E93D82",
+ "syntax-string": "#46A758",
+ "syntax-primitive": "#8E4EC6",
+ "syntax-variable": "#0070F3",
+ "syntax-property": "#12A594",
+ "syntax-type": "#12A594",
+ "syntax-constant": "#FFB224",
+ "syntax-operator": "#E93D82",
+ "syntax-punctuation": "#171717",
+ "syntax-object": "#0070F3",
+ "markdown-heading": "#8E4EC6",
+ "markdown-text": "#171717",
+ "markdown-link": "#0070F3",
+ "markdown-link-text": "#12A594",
+ "markdown-code": "#46A758",
+ "markdown-block-quote": "#666666",
+ "markdown-emph": "#FFB224",
+ "markdown-strong": "#E93D82",
+ "markdown-horizontal-rule": "#999999",
+ "markdown-list-item": "#171717",
+ "markdown-list-enumeration": "#0070F3",
+ "markdown-image": "#12A594",
+ "markdown-image-text": "#12A594",
+ "markdown-code-block": "#171717"
+ }
+ },
+ "dark": {
+ "palette": {
+ "neutral": "#000000",
+ "ink": "#EDEDED",
+ "primary": "#0070F3",
+ "accent": "#8E4EC6",
+ "success": "#46A758",
+ "warning": "#FFB224",
+ "error": "#E5484D",
+ "info": "#52A8FF",
+ "interactive": "#52A8FF",
+ "diffAdd": "#63C46D",
+ "diffDelete": "#FF6166"
+ },
+ "overrides": {
+ "text-weak": "#878787",
+ "syntax-comment": "#878787",
+ "syntax-keyword": "#F75590",
+ "syntax-string": "#63C46D",
+ "syntax-primitive": "#BF7AF0",
+ "syntax-variable": "#52A8FF",
+ "syntax-property": "#0AC7AC",
+ "syntax-type": "#0AC7AC",
+ "syntax-constant": "#F2A700",
+ "syntax-operator": "#F75590",
+ "syntax-punctuation": "#EDEDED",
+ "syntax-object": "#52A8FF",
+ "markdown-heading": "#BF7AF0",
+ "markdown-text": "#EDEDED",
+ "markdown-link": "#52A8FF",
+ "markdown-link-text": "#0AC7AC",
+ "markdown-code": "#63C46D",
+ "markdown-block-quote": "#878787",
+ "markdown-emph": "#F2A700",
+ "markdown-strong": "#F75590",
+ "markdown-horizontal-rule": "#454545",
+ "markdown-list-item": "#EDEDED",
+ "markdown-list-enumeration": "#52A8FF",
+ "markdown-image": "#0AC7AC",
+ "markdown-image-text": "#50E3C2",
+ "markdown-code-block": "#EDEDED"
+ }
+ }
+}
diff --git a/packages/ui/src/theme/themes/zenburn.json b/packages/ui/src/theme/themes/zenburn.json
new file mode 100644
index 000000000..fc6420599
--- /dev/null
+++ b/packages/ui/src/theme/themes/zenburn.json
@@ -0,0 +1,87 @@
+{
+ "$schema": "https://opencode.ai/desktop-theme.json",
+ "name": "Zenburn",
+ "id": "zenburn",
+ "light": {
+ "palette": {
+ "neutral": "#ffffef",
+ "ink": "#3f3f3f",
+ "primary": "#5f7f8f",
+ "accent": "#5f8f8f",
+ "success": "#5f8f5f",
+ "warning": "#8f8f5f",
+ "error": "#8f5f5f",
+ "info": "#8f7f5f"
+ },
+ "overrides": {
+ "text-weak": "#6f6f6f",
+ "syntax-comment": "#5f7f5f",
+ "syntax-keyword": "#8f8f5f",
+ "syntax-string": "#8f5f5f",
+ "syntax-primitive": "#5f7f8f",
+ "syntax-variable": "#3f3f3f",
+ "syntax-property": "#5f8f8f",
+ "syntax-type": "#5f8f8f",
+ "syntax-constant": "#5f8f5f",
+ "syntax-operator": "#8f8f5f",
+ "syntax-punctuation": "#3f3f3f",
+ "syntax-object": "#3f3f3f",
+ "markdown-heading": "#8f8f5f",
+ "markdown-text": "#3f3f3f",
+ "markdown-link": "#5f7f8f",
+ "markdown-link-text": "#5f8f8f",
+ "markdown-code": "#5f8f5f",
+ "markdown-block-quote": "#6f6f6f",
+ "markdown-emph": "#8f8f5f",
+ "markdown-strong": "#8f7f5f",
+ "markdown-horizontal-rule": "#6f6f6f",
+ "markdown-list-item": "#5f7f8f",
+ "markdown-list-enumeration": "#5f8f8f",
+ "markdown-image": "#5f7f8f",
+ "markdown-image-text": "#5f8f8f",
+ "markdown-code-block": "#3f3f3f"
+ }
+ },
+ "dark": {
+ "palette": {
+ "neutral": "#3f3f3f",
+ "ink": "#dcdccc",
+ "primary": "#8cd0d3",
+ "accent": "#93e0e3",
+ "success": "#7f9f7f",
+ "warning": "#f0dfaf",
+ "error": "#cc9393",
+ "info": "#dfaf8f",
+ "diffAdd": "#8fb28f",
+ "diffDelete": "#dca3a3"
+ },
+ "overrides": {
+ "text-weak": "#9f9f9f",
+ "syntax-comment": "#7f9f7f",
+ "syntax-keyword": "#f0dfaf",
+ "syntax-string": "#cc9393",
+ "syntax-primitive": "#8cd0d3",
+ "syntax-variable": "#dcdccc",
+ "syntax-property": "#93e0e3",
+ "syntax-type": "#93e0e3",
+ "syntax-constant": "#8fb28f",
+ "syntax-operator": "#f0dfaf",
+ "syntax-punctuation": "#dcdccc",
+ "syntax-object": "#dcdccc",
+ "markdown-heading": "#f0dfaf",
+ "markdown-text": "#dcdccc",
+ "markdown-link": "#8cd0d3",
+ "markdown-link-text": "#93e0e3",
+ "markdown-code": "#7f9f7f",
+ "markdown-block-quote": "#9f9f9f",
+ "markdown-emph": "#e0cf9f",
+ "markdown-strong": "#dfaf8f",
+ "markdown-horizontal-rule": "#9f9f9f",
+ "markdown-list-item": "#8cd0d3",
+ "markdown-list-enumeration": "#93e0e3",
+ "markdown-image": "#8cd0d3",
+ "markdown-image-text": "#93e0e3",
+ "markdown-code-block": "#dcdccc"
+ }
+ }
+}