Skip to content

Commit 83ed1ad

Browse files
authored
feat: add Carbonfox theme (anomalyco#8723)
1 parent 9b57db3 commit 83ed1ad

4 files changed

Lines changed: 375 additions & 0 deletions

File tree

packages/opencode/src/cli/cmd/tui/context/theme.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import tokyonight from "./theme/tokyonight.json" with { type: "json" }
3535
import vercel from "./theme/vercel.json" with { type: "json" }
3636
import vesper from "./theme/vesper.json" with { type: "json" }
3737
import zenburn from "./theme/zenburn.json" with { type: "json" }
38+
import carbonfox from "./theme/carbonfox.json" with { type: "json" }
3839
import { useKV } from "./kv"
3940
import { useRenderer } from "@opentui/solid"
4041
import { createStore, produce } from "solid-js/store"
@@ -170,6 +171,7 @@ export const DEFAULT_THEMES: Record<string, ThemeJson> = {
170171
vesper,
171172
vercel,
172173
zenburn,
174+
carbonfox,
173175
}
174176

175177
function resolveTheme(theme: ThemeJson, mode: "dark" | "light") {
Lines changed: 248 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,248 @@
1+
{
2+
"$schema": "https://opencode.ai/theme.json",
3+
"defs": {
4+
"bg0": "#0d0d0d",
5+
"bg1": "#161616",
6+
"bg1a": "#1a1a1a",
7+
"bg2": "#1e1e1e",
8+
"bg3": "#262626",
9+
"bg4": "#303030",
10+
"fg0": "#ffffff",
11+
"fg1": "#f2f4f8",
12+
"fg2": "#a9afbc",
13+
"fg3": "#7d848f",
14+
"lbg0": "#ffffff",
15+
"lbg1": "#f4f4f4",
16+
"lbg2": "#e8e8e8",
17+
"lbg3": "#dcdcdc",
18+
"lfg0": "#000000",
19+
"lfg1": "#161616",
20+
"lfg2": "#525252",
21+
"lfg3": "#6f6f6f",
22+
"red": "#ee5396",
23+
"green": "#25be6a",
24+
"yellow": "#08bdba",
25+
"blue": "#78a9ff",
26+
"magenta": "#be95ff",
27+
"cyan": "#33b1ff",
28+
"white": "#dfdfe0",
29+
"orange": "#3ddbd9",
30+
"pink": "#ff7eb6",
31+
"blueBright": "#8cb6ff",
32+
"cyanBright": "#52c7ff",
33+
"greenBright": "#46c880",
34+
"redLight": "#9f1853",
35+
"greenLight": "#198038",
36+
"yellowLight": "#007d79",
37+
"blueLight": "#0043ce",
38+
"magentaLight": "#6929c4",
39+
"cyanLight": "#0072c3",
40+
"warning": "#f1c21b",
41+
"diffGreen": "#50fa7b",
42+
"diffRed": "#ff6b6b",
43+
"diffGreenBg": "#0f2418",
44+
"diffRedBg": "#2a1216"
45+
},
46+
"theme": {
47+
"primary": {
48+
"dark": "cyan",
49+
"light": "blueLight"
50+
},
51+
"secondary": {
52+
"dark": "blue",
53+
"light": "blueLight"
54+
},
55+
"accent": {
56+
"dark": "pink",
57+
"light": "redLight"
58+
},
59+
"error": {
60+
"dark": "red",
61+
"light": "redLight"
62+
},
63+
"warning": {
64+
"dark": "warning",
65+
"light": "yellowLight"
66+
},
67+
"success": {
68+
"dark": "green",
69+
"light": "greenLight"
70+
},
71+
"info": {
72+
"dark": "blue",
73+
"light": "blueLight"
74+
},
75+
"text": {
76+
"dark": "fg1",
77+
"light": "lfg1"
78+
},
79+
"textMuted": {
80+
"dark": "fg3",
81+
"light": "lfg3"
82+
},
83+
"background": {
84+
"dark": "bg1",
85+
"light": "lbg0"
86+
},
87+
"backgroundPanel": {
88+
"dark": "bg1a",
89+
"light": "lbg1"
90+
},
91+
"backgroundElement": {
92+
"dark": "bg2",
93+
"light": "lbg1"
94+
},
95+
"border": {
96+
"dark": "bg4",
97+
"light": "lbg3"
98+
},
99+
"borderActive": {
100+
"dark": "cyan",
101+
"light": "blueLight"
102+
},
103+
"borderSubtle": {
104+
"dark": "bg3",
105+
"light": "lbg2"
106+
},
107+
"diffAdded": {
108+
"dark": "diffGreen",
109+
"light": "greenLight"
110+
},
111+
"diffRemoved": {
112+
"dark": "diffRed",
113+
"light": "redLight"
114+
},
115+
"diffContext": {
116+
"dark": "fg3",
117+
"light": "lfg3"
118+
},
119+
"diffHunkHeader": {
120+
"dark": "blue",
121+
"light": "blueLight"
122+
},
123+
"diffHighlightAdded": {
124+
"dark": "#7dffaa",
125+
"light": "greenLight"
126+
},
127+
"diffHighlightRemoved": {
128+
"dark": "#ff9999",
129+
"light": "redLight"
130+
},
131+
"diffAddedBg": {
132+
"dark": "diffGreenBg",
133+
"light": "#defbe6"
134+
},
135+
"diffRemovedBg": {
136+
"dark": "diffRedBg",
137+
"light": "#fff1f1"
138+
},
139+
"diffContextBg": {
140+
"dark": "bg1",
141+
"light": "lbg1"
142+
},
143+
"diffLineNumber": {
144+
"dark": "fg3",
145+
"light": "lfg3"
146+
},
147+
"diffAddedLineNumberBg": {
148+
"dark": "diffGreenBg",
149+
"light": "#defbe6"
150+
},
151+
"diffRemovedLineNumberBg": {
152+
"dark": "diffRedBg",
153+
"light": "#fff1f1"
154+
},
155+
"markdownText": {
156+
"dark": "fg1",
157+
"light": "lfg1"
158+
},
159+
"markdownHeading": {
160+
"dark": "blueBright",
161+
"light": "blueLight"
162+
},
163+
"markdownLink": {
164+
"dark": "blue",
165+
"light": "blueLight"
166+
},
167+
"markdownLinkText": {
168+
"dark": "cyan",
169+
"light": "cyanLight"
170+
},
171+
"markdownCode": {
172+
"dark": "green",
173+
"light": "greenLight"
174+
},
175+
"markdownBlockQuote": {
176+
"dark": "fg3",
177+
"light": "lfg3"
178+
},
179+
"markdownEmph": {
180+
"dark": "magenta",
181+
"light": "magentaLight"
182+
},
183+
"markdownStrong": {
184+
"dark": "fg0",
185+
"light": "lfg0"
186+
},
187+
"markdownHorizontalRule": {
188+
"dark": "bg4",
189+
"light": "lbg3"
190+
},
191+
"markdownListItem": {
192+
"dark": "cyan",
193+
"light": "cyanLight"
194+
},
195+
"markdownListEnumeration": {
196+
"dark": "cyan",
197+
"light": "cyanLight"
198+
},
199+
"markdownImage": {
200+
"dark": "blue",
201+
"light": "blueLight"
202+
},
203+
"markdownImageText": {
204+
"dark": "cyan",
205+
"light": "cyanLight"
206+
},
207+
"markdownCodeBlock": {
208+
"dark": "fg2",
209+
"light": "lfg2"
210+
},
211+
"syntaxComment": {
212+
"dark": "fg3",
213+
"light": "lfg3"
214+
},
215+
"syntaxKeyword": {
216+
"dark": "magenta",
217+
"light": "magentaLight"
218+
},
219+
"syntaxFunction": {
220+
"dark": "blueBright",
221+
"light": "blueLight"
222+
},
223+
"syntaxVariable": {
224+
"dark": "white",
225+
"light": "lfg1"
226+
},
227+
"syntaxString": {
228+
"dark": "green",
229+
"light": "greenLight"
230+
},
231+
"syntaxNumber": {
232+
"dark": "orange",
233+
"light": "yellowLight"
234+
},
235+
"syntaxType": {
236+
"dark": "yellow",
237+
"light": "yellowLight"
238+
},
239+
"syntaxOperator": {
240+
"dark": "fg2",
241+
"light": "lfg2"
242+
},
243+
"syntaxPunctuation": {
244+
"dark": "fg2",
245+
"light": "lfg1"
246+
}
247+
}
248+
}

packages/ui/src/theme/default-themes.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import oneDarkProThemeJson from "./themes/onedarkpro.json"
1111
import shadesOfPurpleThemeJson from "./themes/shadesofpurple.json"
1212
import nightowlThemeJson from "./themes/nightowl.json"
1313
import vesperThemeJson from "./themes/vesper.json"
14+
import carbonfoxThemeJson from "./themes/carbonfox.json"
1415

1516
export const oc1Theme = oc1ThemeJson as DesktopTheme
1617
export const tokyonightTheme = tokyoThemeJson as DesktopTheme
@@ -24,6 +25,7 @@ export const oneDarkProTheme = oneDarkProThemeJson as DesktopTheme
2425
export const shadesOfPurpleTheme = shadesOfPurpleThemeJson as DesktopTheme
2526
export const nightowlTheme = nightowlThemeJson as DesktopTheme
2627
export const vesperTheme = vesperThemeJson as DesktopTheme
28+
export const carbonfoxTheme = carbonfoxThemeJson as DesktopTheme
2729

2830
export const DEFAULT_THEMES: Record<string, DesktopTheme> = {
2931
"oc-1": oc1Theme,
@@ -38,4 +40,5 @@ export const DEFAULT_THEMES: Record<string, DesktopTheme> = {
3840
shadesofpurple: shadesOfPurpleTheme,
3941
nightowl: nightowlTheme,
4042
vesper: vesperTheme,
43+
carbonfox: carbonfoxTheme,
4144
}

0 commit comments

Comments
 (0)