feat(ui): add gruvbox theme (Web/App) (#9855)
This commit is contained in:
@@ -38,58 +38,205 @@
|
|||||||
"lightOrange": "#af3a03"
|
"lightOrange": "#af3a03"
|
||||||
},
|
},
|
||||||
"theme": {
|
"theme": {
|
||||||
"primary": { "dark": "darkBlueBright", "light": "lightBlue" },
|
"primary": {
|
||||||
"secondary": { "dark": "darkPurpleBright", "light": "lightPurple" },
|
"dark": "darkBlueBright",
|
||||||
"accent": { "dark": "darkAquaBright", "light": "lightAqua" },
|
"light": "lightBlue"
|
||||||
"error": { "dark": "darkRedBright", "light": "lightRed" },
|
},
|
||||||
"warning": { "dark": "darkOrangeBright", "light": "lightOrange" },
|
"secondary": {
|
||||||
"success": { "dark": "darkGreenBright", "light": "lightGreen" },
|
"dark": "darkPurpleBright",
|
||||||
"info": { "dark": "darkYellowBright", "light": "lightYellow" },
|
"light": "lightPurple"
|
||||||
"text": { "dark": "darkFg1", "light": "lightFg1" },
|
},
|
||||||
"textMuted": { "dark": "darkGray", "light": "lightGray" },
|
"accent": {
|
||||||
"background": { "dark": "darkBg0", "light": "lightBg0" },
|
"dark": "darkAquaBright",
|
||||||
"backgroundPanel": { "dark": "darkBg1", "light": "lightBg1" },
|
"light": "lightAqua"
|
||||||
"backgroundElement": { "dark": "darkBg2", "light": "lightBg2" },
|
},
|
||||||
"border": { "dark": "darkBg3", "light": "lightBg3" },
|
"error": {
|
||||||
"borderActive": { "dark": "darkFg1", "light": "lightFg1" },
|
"dark": "darkRedBright",
|
||||||
"borderSubtle": { "dark": "darkBg2", "light": "lightBg2" },
|
"light": "lightRed"
|
||||||
"diffAdded": { "dark": "darkGreen", "light": "lightGreen" },
|
},
|
||||||
"diffRemoved": { "dark": "darkRed", "light": "lightRed" },
|
"warning": {
|
||||||
"diffContext": { "dark": "darkGray", "light": "lightGray" },
|
"dark": "darkOrangeBright",
|
||||||
"diffHunkHeader": { "dark": "darkAqua", "light": "lightAqua" },
|
"light": "lightOrange"
|
||||||
"diffHighlightAdded": { "dark": "darkGreenBright", "light": "lightGreen" },
|
},
|
||||||
"diffHighlightRemoved": { "dark": "darkRedBright", "light": "lightRed" },
|
"success": {
|
||||||
"diffAddedBg": { "dark": "#32302f", "light": "#e2e0b5" },
|
"dark": "darkGreenBright",
|
||||||
"diffRemovedBg": { "dark": "#322929", "light": "#e9d8d5" },
|
"light": "lightGreen"
|
||||||
"diffContextBg": { "dark": "darkBg1", "light": "lightBg1" },
|
},
|
||||||
"diffLineNumber": { "dark": "darkBg3", "light": "lightBg3" },
|
"info": {
|
||||||
"diffAddedLineNumberBg": { "dark": "#2a2827", "light": "#d4d2a9" },
|
"dark": "darkYellowBright",
|
||||||
"diffRemovedLineNumberBg": { "dark": "#2a2222", "light": "#d8cbc8" },
|
"light": "lightYellow"
|
||||||
"markdownText": { "dark": "darkFg1", "light": "lightFg1" },
|
},
|
||||||
"markdownHeading": { "dark": "darkBlueBright", "light": "lightBlue" },
|
"text": {
|
||||||
"markdownLink": { "dark": "darkAquaBright", "light": "lightAqua" },
|
"dark": "darkFg1",
|
||||||
"markdownLinkText": { "dark": "darkGreenBright", "light": "lightGreen" },
|
"light": "lightFg1"
|
||||||
"markdownCode": { "dark": "darkYellowBright", "light": "lightYellow" },
|
},
|
||||||
"markdownBlockQuote": { "dark": "darkGray", "light": "lightGray" },
|
"textMuted": {
|
||||||
"markdownEmph": { "dark": "darkPurpleBright", "light": "lightPurple" },
|
"dark": "darkGray",
|
||||||
"markdownStrong": { "dark": "darkOrangeBright", "light": "lightOrange" },
|
"light": "lightGray"
|
||||||
"markdownHorizontalRule": { "dark": "darkGray", "light": "lightGray" },
|
},
|
||||||
"markdownListItem": { "dark": "darkBlueBright", "light": "lightBlue" },
|
"background": {
|
||||||
|
"dark": "darkBg0",
|
||||||
|
"light": "lightBg0"
|
||||||
|
},
|
||||||
|
"backgroundPanel": {
|
||||||
|
"dark": "darkBg1",
|
||||||
|
"light": "lightBg1"
|
||||||
|
},
|
||||||
|
"backgroundElement": {
|
||||||
|
"dark": "darkBg2",
|
||||||
|
"light": "lightBg2"
|
||||||
|
},
|
||||||
|
"border": {
|
||||||
|
"dark": "darkBg3",
|
||||||
|
"light": "lightBg3"
|
||||||
|
},
|
||||||
|
"borderActive": {
|
||||||
|
"dark": "darkFg1",
|
||||||
|
"light": "lightFg1"
|
||||||
|
},
|
||||||
|
"borderSubtle": {
|
||||||
|
"dark": "darkBg2",
|
||||||
|
"light": "lightBg2"
|
||||||
|
},
|
||||||
|
"diffAdded": {
|
||||||
|
"dark": "darkGreen",
|
||||||
|
"light": "lightGreen"
|
||||||
|
},
|
||||||
|
"diffRemoved": {
|
||||||
|
"dark": "darkRed",
|
||||||
|
"light": "lightRed"
|
||||||
|
},
|
||||||
|
"diffContext": {
|
||||||
|
"dark": "darkGray",
|
||||||
|
"light": "lightGray"
|
||||||
|
},
|
||||||
|
"diffHunkHeader": {
|
||||||
|
"dark": "darkAqua",
|
||||||
|
"light": "lightAqua"
|
||||||
|
},
|
||||||
|
"diffHighlightAdded": {
|
||||||
|
"dark": "darkGreenBright",
|
||||||
|
"light": "lightGreen"
|
||||||
|
},
|
||||||
|
"diffHighlightRemoved": {
|
||||||
|
"dark": "darkRedBright",
|
||||||
|
"light": "lightRed"
|
||||||
|
},
|
||||||
|
"diffAddedBg": {
|
||||||
|
"dark": "#32302f",
|
||||||
|
"light": "#dcd8a4"
|
||||||
|
},
|
||||||
|
"diffRemovedBg": {
|
||||||
|
"dark": "#322929",
|
||||||
|
"light": "#e2c7c3"
|
||||||
|
},
|
||||||
|
"diffContextBg": {
|
||||||
|
"dark": "darkBg1",
|
||||||
|
"light": "lightBg1"
|
||||||
|
},
|
||||||
|
"diffLineNumber": {
|
||||||
|
"dark": "darkBg3",
|
||||||
|
"light": "lightBg3"
|
||||||
|
},
|
||||||
|
"diffAddedLineNumberBg": {
|
||||||
|
"dark": "#2a2827",
|
||||||
|
"light": "#cec99e"
|
||||||
|
},
|
||||||
|
"diffRemovedLineNumberBg": {
|
||||||
|
"dark": "#2a2222",
|
||||||
|
"light": "#d3bdb9"
|
||||||
|
},
|
||||||
|
"markdownText": {
|
||||||
|
"dark": "darkFg1",
|
||||||
|
"light": "lightFg1"
|
||||||
|
},
|
||||||
|
"markdownHeading": {
|
||||||
|
"dark": "darkBlueBright",
|
||||||
|
"light": "lightBlue"
|
||||||
|
},
|
||||||
|
"markdownLink": {
|
||||||
|
"dark": "darkAquaBright",
|
||||||
|
"light": "lightAqua"
|
||||||
|
},
|
||||||
|
"markdownLinkText": {
|
||||||
|
"dark": "darkGreenBright",
|
||||||
|
"light": "lightGreen"
|
||||||
|
},
|
||||||
|
"markdownCode": {
|
||||||
|
"dark": "darkYellowBright",
|
||||||
|
"light": "lightYellow"
|
||||||
|
},
|
||||||
|
"markdownBlockQuote": {
|
||||||
|
"dark": "darkGray",
|
||||||
|
"light": "lightGray"
|
||||||
|
},
|
||||||
|
"markdownEmph": {
|
||||||
|
"dark": "darkPurpleBright",
|
||||||
|
"light": "lightPurple"
|
||||||
|
},
|
||||||
|
"markdownStrong": {
|
||||||
|
"dark": "darkOrangeBright",
|
||||||
|
"light": "lightOrange"
|
||||||
|
},
|
||||||
|
"markdownHorizontalRule": {
|
||||||
|
"dark": "darkGray",
|
||||||
|
"light": "lightGray"
|
||||||
|
},
|
||||||
|
"markdownListItem": {
|
||||||
|
"dark": "darkBlueBright",
|
||||||
|
"light": "lightBlue"
|
||||||
|
},
|
||||||
"markdownListEnumeration": {
|
"markdownListEnumeration": {
|
||||||
"dark": "darkAquaBright",
|
"dark": "darkAquaBright",
|
||||||
"light": "lightAqua"
|
"light": "lightAqua"
|
||||||
},
|
},
|
||||||
"markdownImage": { "dark": "darkAquaBright", "light": "lightAqua" },
|
"markdownImage": {
|
||||||
"markdownImageText": { "dark": "darkGreenBright", "light": "lightGreen" },
|
"dark": "darkAquaBright",
|
||||||
"markdownCodeBlock": { "dark": "darkFg1", "light": "lightFg1" },
|
"light": "lightAqua"
|
||||||
"syntaxComment": { "dark": "darkGray", "light": "lightGray" },
|
},
|
||||||
"syntaxKeyword": { "dark": "darkRedBright", "light": "lightRed" },
|
"markdownImageText": {
|
||||||
"syntaxFunction": { "dark": "darkGreenBright", "light": "lightGreen" },
|
"dark": "darkGreenBright",
|
||||||
"syntaxVariable": { "dark": "darkBlueBright", "light": "lightBlue" },
|
"light": "lightGreen"
|
||||||
"syntaxString": { "dark": "darkYellowBright", "light": "lightYellow" },
|
},
|
||||||
"syntaxNumber": { "dark": "darkPurpleBright", "light": "lightPurple" },
|
"markdownCodeBlock": {
|
||||||
"syntaxType": { "dark": "darkAquaBright", "light": "lightAqua" },
|
"dark": "darkFg1",
|
||||||
"syntaxOperator": { "dark": "darkOrangeBright", "light": "lightOrange" },
|
"light": "lightFg1"
|
||||||
"syntaxPunctuation": { "dark": "darkFg1", "light": "lightFg1" }
|
},
|
||||||
|
"syntaxComment": {
|
||||||
|
"dark": "darkGray",
|
||||||
|
"light": "lightGray"
|
||||||
|
},
|
||||||
|
"syntaxKeyword": {
|
||||||
|
"dark": "darkRedBright",
|
||||||
|
"light": "lightRed"
|
||||||
|
},
|
||||||
|
"syntaxFunction": {
|
||||||
|
"dark": "darkGreenBright",
|
||||||
|
"light": "lightGreen"
|
||||||
|
},
|
||||||
|
"syntaxVariable": {
|
||||||
|
"dark": "darkBlueBright",
|
||||||
|
"light": "lightBlue"
|
||||||
|
},
|
||||||
|
"syntaxString": {
|
||||||
|
"dark": "darkYellowBright",
|
||||||
|
"light": "lightYellow"
|
||||||
|
},
|
||||||
|
"syntaxNumber": {
|
||||||
|
"dark": "darkPurpleBright",
|
||||||
|
"light": "lightPurple"
|
||||||
|
},
|
||||||
|
"syntaxType": {
|
||||||
|
"dark": "darkAquaBright",
|
||||||
|
"light": "lightAqua"
|
||||||
|
},
|
||||||
|
"syntaxOperator": {
|
||||||
|
"dark": "darkOrangeBright",
|
||||||
|
"light": "lightOrange"
|
||||||
|
},
|
||||||
|
"syntaxPunctuation": {
|
||||||
|
"dark": "darkFg1",
|
||||||
|
"light": "lightFg1"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import shadesOfPurpleThemeJson from "./themes/shadesofpurple.json"
|
|||||||
import nightowlThemeJson from "./themes/nightowl.json"
|
import nightowlThemeJson from "./themes/nightowl.json"
|
||||||
import vesperThemeJson from "./themes/vesper.json"
|
import vesperThemeJson from "./themes/vesper.json"
|
||||||
import carbonfoxThemeJson from "./themes/carbonfox.json"
|
import carbonfoxThemeJson from "./themes/carbonfox.json"
|
||||||
|
import gruvboxThemeJson from "./themes/gruvbox.json"
|
||||||
|
|
||||||
export const oc1Theme = oc1ThemeJson as DesktopTheme
|
export const oc1Theme = oc1ThemeJson as DesktopTheme
|
||||||
export const tokyonightTheme = tokyoThemeJson as DesktopTheme
|
export const tokyonightTheme = tokyoThemeJson as DesktopTheme
|
||||||
@@ -26,6 +27,7 @@ export const shadesOfPurpleTheme = shadesOfPurpleThemeJson as DesktopTheme
|
|||||||
export const nightowlTheme = nightowlThemeJson as DesktopTheme
|
export const nightowlTheme = nightowlThemeJson as DesktopTheme
|
||||||
export const vesperTheme = vesperThemeJson as DesktopTheme
|
export const vesperTheme = vesperThemeJson as DesktopTheme
|
||||||
export const carbonfoxTheme = carbonfoxThemeJson as DesktopTheme
|
export const carbonfoxTheme = carbonfoxThemeJson as DesktopTheme
|
||||||
|
export const gruvboxTheme = gruvboxThemeJson as DesktopTheme
|
||||||
|
|
||||||
export const DEFAULT_THEMES: Record<string, DesktopTheme> = {
|
export const DEFAULT_THEMES: Record<string, DesktopTheme> = {
|
||||||
"oc-1": oc1Theme,
|
"oc-1": oc1Theme,
|
||||||
@@ -41,4 +43,5 @@ export const DEFAULT_THEMES: Record<string, DesktopTheme> = {
|
|||||||
nightowl: nightowlTheme,
|
nightowl: nightowlTheme,
|
||||||
vesper: vesperTheme,
|
vesper: vesperTheme,
|
||||||
carbonfox: carbonfoxTheme,
|
carbonfox: carbonfoxTheme,
|
||||||
|
gruvbox: gruvboxTheme,
|
||||||
}
|
}
|
||||||
|
|||||||
132
packages/ui/src/theme/themes/gruvbox.json
Normal file
132
packages/ui/src/theme/themes/gruvbox.json
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://opencode.ai/desktop-theme.json",
|
||||||
|
"name": "Gruvbox",
|
||||||
|
"id": "gruvbox",
|
||||||
|
"light": {
|
||||||
|
"seeds": {
|
||||||
|
"neutral": "#fbf1c7",
|
||||||
|
"primary": "#076678",
|
||||||
|
"success": "#79740e",
|
||||||
|
"warning": "#b57614",
|
||||||
|
"error": "#9d0006",
|
||||||
|
"info": "#8f3f71",
|
||||||
|
"interactive": "#076678",
|
||||||
|
"diffAdd": "#79740e",
|
||||||
|
"diffDelete": "#9d0006"
|
||||||
|
},
|
||||||
|
"overrides": {
|
||||||
|
"background-base": "#fbf1c7",
|
||||||
|
"background-weak": "#f2e5bc",
|
||||||
|
"background-strong": "#f9f5d7",
|
||||||
|
"background-stronger": "#fdf9e8",
|
||||||
|
"surface-raised-stronger-non-alpha": "#fbfaf5",
|
||||||
|
"border-weak-base": "#d5c4a1",
|
||||||
|
"border-weak-hover": "#c9b897",
|
||||||
|
"border-weak-active": "#bdae93",
|
||||||
|
"border-weak-selected": "#b0a285",
|
||||||
|
"border-weak-disabled": "#f0e4b8",
|
||||||
|
"border-weak-focus": "#c4b590",
|
||||||
|
"border-base": "#bdae93",
|
||||||
|
"border-hover": "#b0a285",
|
||||||
|
"border-active": "#a89984",
|
||||||
|
"border-selected": "#928374",
|
||||||
|
"border-disabled": "#e5d9ad",
|
||||||
|
"border-focus": "#a89984",
|
||||||
|
"border-strong-base": "#7c6f64",
|
||||||
|
"border-strong-hover": "#6e6259",
|
||||||
|
"border-strong-active": "#665c54",
|
||||||
|
"border-strong-selected": "#5a524b",
|
||||||
|
"border-strong-disabled": "#c9bda1",
|
||||||
|
"border-strong-focus": "#665c54",
|
||||||
|
"surface-diff-add-base": "#dde3b1",
|
||||||
|
"surface-diff-delete-base": "#e8c7c3",
|
||||||
|
"surface-diff-hidden-base": "#ebdfb5",
|
||||||
|
"text-base": "#3c3836",
|
||||||
|
"text-weak": "#7c6f64",
|
||||||
|
"text-strong": "#282828",
|
||||||
|
"syntax-string": "#79740e",
|
||||||
|
"syntax-primitive": "#9d0006",
|
||||||
|
"syntax-property": "#076678",
|
||||||
|
"syntax-type": "#b57614",
|
||||||
|
"syntax-constant": "#8f3f71",
|
||||||
|
"syntax-info": "#427b58",
|
||||||
|
"markdown-heading": "#076678",
|
||||||
|
"markdown-text": "#3c3836",
|
||||||
|
"markdown-link": "#076678",
|
||||||
|
"markdown-link-text": "#427b58",
|
||||||
|
"markdown-code": "#79740e",
|
||||||
|
"markdown-block-quote": "#928374",
|
||||||
|
"markdown-emph": "#8f3f71",
|
||||||
|
"markdown-strong": "#af3a03",
|
||||||
|
"markdown-horizontal-rule": "#d5c4a1",
|
||||||
|
"markdown-list-item": "#076678",
|
||||||
|
"markdown-list-enumeration": "#427b58",
|
||||||
|
"markdown-image": "#076678",
|
||||||
|
"markdown-image-text": "#427b58",
|
||||||
|
"markdown-code-block": "#3c3836"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dark": {
|
||||||
|
"seeds": {
|
||||||
|
"neutral": "#282828",
|
||||||
|
"primary": "#83a598",
|
||||||
|
"success": "#b8bb26",
|
||||||
|
"warning": "#fabd2f",
|
||||||
|
"error": "#fb4934",
|
||||||
|
"info": "#d3869b",
|
||||||
|
"interactive": "#83a598",
|
||||||
|
"diffAdd": "#b8bb26",
|
||||||
|
"diffDelete": "#fb4934"
|
||||||
|
},
|
||||||
|
"overrides": {
|
||||||
|
"background-base": "#282828",
|
||||||
|
"background-weak": "#32302f",
|
||||||
|
"background-strong": "#1d2021",
|
||||||
|
"background-stronger": "#141617",
|
||||||
|
"border-weak-base": "#504945",
|
||||||
|
"border-weak-hover": "#5a524b",
|
||||||
|
"border-weak-active": "#665c54",
|
||||||
|
"border-weak-selected": "#70665d",
|
||||||
|
"border-weak-disabled": "#1e1d1c",
|
||||||
|
"border-weak-focus": "#5e5650",
|
||||||
|
"border-base": "#665c54",
|
||||||
|
"border-hover": "#70665d",
|
||||||
|
"border-active": "#7c6f64",
|
||||||
|
"border-selected": "#928374",
|
||||||
|
"border-disabled": "#2a2827",
|
||||||
|
"border-focus": "#7c6f64",
|
||||||
|
"border-strong-base": "#928374",
|
||||||
|
"border-strong-hover": "#9d8e7f",
|
||||||
|
"border-strong-active": "#a89984",
|
||||||
|
"border-strong-selected": "#b3a48f",
|
||||||
|
"border-strong-disabled": "#3c3836",
|
||||||
|
"border-strong-focus": "#a89984",
|
||||||
|
"surface-diff-add-base": "#2a3325",
|
||||||
|
"surface-diff-delete-base": "#3c2222",
|
||||||
|
"surface-diff-hidden-base": "#32302f",
|
||||||
|
"text-base": "#ebdbb2",
|
||||||
|
"text-weak": "#a89984",
|
||||||
|
"text-strong": "#fbf1c7",
|
||||||
|
"syntax-string": "#b8bb26",
|
||||||
|
"syntax-primitive": "#fb4934",
|
||||||
|
"syntax-property": "#83a598",
|
||||||
|
"syntax-type": "#fabd2f",
|
||||||
|
"syntax-constant": "#d3869b",
|
||||||
|
"syntax-info": "#8ec07c",
|
||||||
|
"markdown-heading": "#83a598",
|
||||||
|
"markdown-text": "#ebdbb2",
|
||||||
|
"markdown-link": "#83a598",
|
||||||
|
"markdown-link-text": "#8ec07c",
|
||||||
|
"markdown-code": "#b8bb26",
|
||||||
|
"markdown-block-quote": "#928374",
|
||||||
|
"markdown-emph": "#d3869b",
|
||||||
|
"markdown-strong": "#fe8019",
|
||||||
|
"markdown-horizontal-rule": "#504945",
|
||||||
|
"markdown-list-item": "#83a598",
|
||||||
|
"markdown-list-enumeration": "#8ec07c",
|
||||||
|
"markdown-image": "#83a598",
|
||||||
|
"markdown-image-text": "#8ec07c",
|
||||||
|
"markdown-code-block": "#ebdbb2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user