summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAnthony Huang <[email protected]>2026-01-09 08:48:57 +0900
committerGitHub <[email protected]>2026-01-08 17:48:57 -0600
commit119cc8c79513aeab8e7359a228fe4a2f564644a8 (patch)
treeb0764953ed98b0b70108aa8f05b1e7bd5add52c9
parentbe9b2bab156d3eccaf1c8ea4fce2523407833fdd (diff)
downloadopencode-119cc8c79513aeab8e7359a228fe4a2f564644a8.tar.gz
opencode-119cc8c79513aeab8e7359a228fe4a2f564644a8.zip
feat(desktop): add Vesper theme (#7331)
Co-authored-by: Anthony Huang <[email protected]>
-rw-r--r--packages/ui/src/theme/default-themes.ts3
-rw-r--r--packages/ui/src/theme/index.ts1
-rw-r--r--packages/ui/src/theme/themes/vesper.json131
3 files changed, 135 insertions, 0 deletions
diff --git a/packages/ui/src/theme/default-themes.ts b/packages/ui/src/theme/default-themes.ts
index 42e94b446..54c96251c 100644
--- a/packages/ui/src/theme/default-themes.ts
+++ b/packages/ui/src/theme/default-themes.ts
@@ -10,6 +10,7 @@ import ayuThemeJson from "./themes/ayu.json"
import oneDarkProThemeJson from "./themes/onedarkpro.json"
import shadesOfPurpleThemeJson from "./themes/shadesofpurple.json"
import nightowlThemeJson from "./themes/nightowl.json"
+import vesperThemeJson from "./themes/vesper.json"
export const oc1Theme = oc1ThemeJson as DesktopTheme
export const tokyonightTheme = tokyoThemeJson as DesktopTheme
@@ -22,6 +23,7 @@ export const ayuTheme = ayuThemeJson as DesktopTheme
export const oneDarkProTheme = oneDarkProThemeJson as DesktopTheme
export const shadesOfPurpleTheme = shadesOfPurpleThemeJson as DesktopTheme
export const nightowlTheme = nightowlThemeJson as DesktopTheme
+export const vesperTheme = vesperThemeJson as DesktopTheme
export const DEFAULT_THEMES: Record<string, DesktopTheme> = {
"oc-1": oc1Theme,
@@ -35,4 +37,5 @@ export const DEFAULT_THEMES: Record<string, DesktopTheme> = {
onedarkpro: oneDarkProTheme,
shadesofpurple: shadesOfPurpleTheme,
nightowl: nightowlTheme,
+ vesper: vesperTheme,
}
diff --git a/packages/ui/src/theme/index.ts b/packages/ui/src/theme/index.ts
index 1ec4dc682..e8d2fe79f 100644
--- a/packages/ui/src/theme/index.ts
+++ b/packages/ui/src/theme/index.ts
@@ -42,4 +42,5 @@ export {
oneDarkProTheme,
shadesOfPurpleTheme,
nightowlTheme,
+ vesperTheme,
} from "./default-themes"
diff --git a/packages/ui/src/theme/themes/vesper.json b/packages/ui/src/theme/themes/vesper.json
new file mode 100644
index 000000000..3c5e44cbd
--- /dev/null
+++ b/packages/ui/src/theme/themes/vesper.json
@@ -0,0 +1,131 @@
+{
+ "$schema": "https://opencode.ai/desktop-theme.json",
+ "name": "Vesper",
+ "id": "vesper",
+ "light": {
+ "seeds": {
+ "neutral": "#F0F0F0",
+ "primary": "#FFC799",
+ "success": "#99FFE4",
+ "warning": "#FFC799",
+ "error": "#FF8080",
+ "info": "#FFC799",
+ "interactive": "#FFC799",
+ "diffAdd": "#99FFE4",
+ "diffDelete": "#FF8080"
+ },
+ "overrides": {
+ "background-base": "#FFF",
+ "background-weak": "#F8F8F8",
+ "background-strong": "#F0F0F0",
+ "background-stronger": "#E8E8E8",
+ "border-weak-base": "#E8E8E8",
+ "border-weak-hover": "#E0E0E0",
+ "border-weak-active": "#D8D8D8",
+ "border-weak-selected": "#D0D0D0",
+ "border-weak-disabled": "#F0F0F0",
+ "border-weak-focus": "#D8D8D8",
+ "border-base": "#D0D0D0",
+ "border-hover": "#C8C8C8",
+ "border-active": "#C0C0C0",
+ "border-selected": "#B8B8B8",
+ "border-disabled": "#E8E8E8",
+ "border-focus": "#C0C0C0",
+ "border-strong-base": "#A0A0A0",
+ "border-strong-hover": "#989898",
+ "border-strong-active": "#909090",
+ "border-strong-selected": "#888888",
+ "border-strong-disabled": "#D0D0D0",
+ "border-strong-focus": "#909090",
+ "surface-diff-add-base": "#e8f5e8",
+ "surface-diff-delete-base": "#f5e8e8",
+ "surface-diff-hidden-base": "#F0F0F0",
+ "text-base": "#101010",
+ "text-weak": "#A0A0A0",
+ "text-strong": "#000000",
+ "syntax-string": "#99FFE4",
+ "syntax-primitive": "#FF8080",
+ "syntax-property": "#FFC799",
+ "syntax-type": "#FFC799",
+ "syntax-constant": "#A0A0A0",
+ "syntax-info": "#A0A0A0",
+ "markdown-heading": "#FFC799",
+ "markdown-text": "#101010",
+ "markdown-link": "#FFC799",
+ "markdown-link-text": "#A0A0A0",
+ "markdown-code": "#A0A0A0",
+ "markdown-block-quote": "#101010",
+ "markdown-emph": "#101010",
+ "markdown-strong": "#101010",
+ "markdown-horizontal-rule": "#65737E",
+ "markdown-list-item": "#101010",
+ "markdown-list-enumeration": "#101010",
+ "markdown-image": "#FFC799",
+ "markdown-image-text": "#A0A0A0",
+ "markdown-code-block": "#FFC799"
+ }
+ },
+ "dark": {
+ "seeds": {
+ "neutral": "#101010",
+ "primary": "#FFC799",
+ "success": "#99FFE4",
+ "warning": "#FFC799",
+ "error": "#FF8080",
+ "info": "#FFC799",
+ "interactive": "#FFC799",
+ "diffAdd": "#99FFE4",
+ "diffDelete": "#FF8080"
+ },
+ "overrides": {
+ "background-base": "#101010",
+ "background-weak": "#141414",
+ "background-strong": "#0C0C0C",
+ "background-stronger": "#080808",
+ "border-weak-base": "#1C1C1C",
+ "border-weak-hover": "#202020",
+ "border-weak-active": "#242424",
+ "border-weak-selected": "#282828",
+ "border-weak-disabled": "#141414",
+ "border-weak-focus": "#242424",
+ "border-base": "#282828",
+ "border-hover": "#303030",
+ "border-active": "#383838",
+ "border-selected": "#404040",
+ "border-disabled": "#181818",
+ "border-focus": "#383838",
+ "border-strong-base": "#505050",
+ "border-strong-hover": "#585858",
+ "border-strong-active": "#606060",
+ "border-strong-selected": "#686868",
+ "border-strong-disabled": "#202020",
+ "border-strong-focus": "#606060",
+ "surface-diff-add-base": "#0d2818",
+ "surface-diff-delete-base": "#281a1a",
+ "surface-diff-hidden-base": "#141414",
+ "text-base": "#FFF",
+ "text-weak": "#A0A0A0",
+ "text-strong": "#FFFFFF",
+ "syntax-string": "#99FFE4",
+ "syntax-primitive": "#FF8080",
+ "syntax-property": "#FFC799",
+ "syntax-type": "#FFC799",
+ "syntax-constant": "#A0A0A0",
+ "syntax-info": "#8b8b8b",
+ "markdown-heading": "#FFC799",
+ "markdown-text": "#FFF",
+ "markdown-link": "#FFC799",
+ "markdown-link-text": "#A0A0A0",
+ "markdown-code": "#A0A0A0",
+ "markdown-block-quote": "#FFF",
+ "markdown-emph": "#FFF",
+ "markdown-strong": "#FFF",
+ "markdown-horizontal-rule": "#65737E",
+ "markdown-list-item": "#FFF",
+ "markdown-list-enumeration": "#FFF",
+ "markdown-image": "#FFC799",
+ "markdown-image-text": "#A0A0A0",
+ "markdown-code-block": "#FFF"
+ }
+ }
+}