summaryrefslogtreecommitdiffhomepage
path: root/packages/tui/internal/theme
diff options
context:
space:
mode:
Diffstat (limited to 'packages/tui/internal/theme')
-rw-r--r--packages/tui/internal/theme/loader.go408
-rw-r--r--packages/tui/internal/theme/loader_test.go141
-rw-r--r--packages/tui/internal/theme/manager.go229
-rw-r--r--packages/tui/internal/theme/system.go303
-rw-r--r--packages/tui/internal/theme/theme.go215
-rw-r--r--packages/tui/internal/theme/themes/aura.json69
-rw-r--r--packages/tui/internal/theme/themes/ayu.json80
-rw-r--r--packages/tui/internal/theme/themes/catppuccin.json112
-rw-r--r--packages/tui/internal/theme/themes/cobalt2.json228
-rw-r--r--packages/tui/internal/theme/themes/dracula.json219
-rw-r--r--packages/tui/internal/theme/themes/everforest.json241
-rw-r--r--packages/tui/internal/theme/themes/github.json233
-rw-r--r--packages/tui/internal/theme/themes/gruvbox.json95
-rw-r--r--packages/tui/internal/theme/themes/kanagawa.json77
-rw-r--r--packages/tui/internal/theme/themes/material.json235
-rw-r--r--packages/tui/internal/theme/themes/matrix.json77
-rw-r--r--packages/tui/internal/theme/themes/mellow.json87
-rw-r--r--packages/tui/internal/theme/themes/monokai.json221
-rw-r--r--packages/tui/internal/theme/themes/nightowl.json221
-rw-r--r--packages/tui/internal/theme/themes/nord.json223
-rw-r--r--packages/tui/internal/theme/themes/one-dark.json84
-rw-r--r--packages/tui/internal/theme/themes/opencode.json245
-rw-r--r--packages/tui/internal/theme/themes/palenight.json222
-rw-r--r--packages/tui/internal/theme/themes/rosepine.json234
-rw-r--r--packages/tui/internal/theme/themes/solarized.json223
-rw-r--r--packages/tui/internal/theme/themes/synthwave84.json226
-rw-r--r--packages/tui/internal/theme/themes/tokyonight.json243
-rw-r--r--packages/tui/internal/theme/themes/vesper.json218
-rw-r--r--packages/tui/internal/theme/themes/zenburn.json223
29 files changed, 0 insertions, 5632 deletions
diff --git a/packages/tui/internal/theme/loader.go b/packages/tui/internal/theme/loader.go
deleted file mode 100644
index b3d2f0982..000000000
--- a/packages/tui/internal/theme/loader.go
+++ /dev/null
@@ -1,408 +0,0 @@
-package theme
-
-import (
- "embed"
- "encoding/json"
- "fmt"
- "image/color"
- "os"
- "path"
- "path/filepath"
- "strings"
-
- "github.com/charmbracelet/lipgloss/v2"
- "github.com/charmbracelet/lipgloss/v2/compat"
-)
-
-//go:embed themes/*.json
-var themesFS embed.FS
-
-type JSONTheme struct {
- Defs map[string]any `json:"defs,omitempty"`
- Theme map[string]any `json:"theme"`
-}
-
-type LoadedTheme struct {
- BaseTheme
- name string
-}
-
-func (t *LoadedTheme) Name() string {
- return t.name
-}
-
-type colorRef struct {
- value any
- resolved bool
-}
-
-func LoadThemesFromJSON() error {
- entries, err := themesFS.ReadDir("themes")
- if err != nil {
- return fmt.Errorf("failed to read themes directory: %w", err)
- }
-
- for _, entry := range entries {
- if !strings.HasSuffix(entry.Name(), ".json") {
- continue
- }
- themeName := strings.TrimSuffix(entry.Name(), ".json")
- data, err := themesFS.ReadFile(path.Join("themes", entry.Name()))
- if err != nil {
- return fmt.Errorf("failed to read theme file %s: %w", entry.Name(), err)
- }
- theme, err := parseJSONTheme(themeName, data)
- if err != nil {
- return fmt.Errorf("failed to parse theme %s: %w", themeName, err)
- }
- RegisterTheme(themeName, theme)
- }
-
- return nil
-}
-
-// LoadThemesFromDirectories loads themes from user directories in the correct override order.
-// The hierarchy is (from lowest to highest priority):
-// 1. Built-in themes (embedded)
-// 2. USER_CONFIG/opencode/themes/*.json
-// 3. PROJECT_ROOT/.opencode/themes/*.json
-// 4. CWD/.opencode/themes/*.json
-func LoadThemesFromDirectories(userConfig, projectRoot, cwd string) error {
- if err := LoadThemesFromJSON(); err != nil {
- return fmt.Errorf("failed to load built-in themes: %w", err)
- }
-
- dirs := []string{
- filepath.Join(userConfig, "themes"),
- filepath.Join(projectRoot, ".opencode", "themes"),
- }
- if cwd != projectRoot {
- dirs = append(dirs, filepath.Join(cwd, ".opencode", "themes"))
- }
-
- for _, dir := range dirs {
- if err := loadThemesFromDirectory(dir); err != nil {
- fmt.Printf("Warning: Failed to load themes from %s: %v\n", dir, err)
- }
- }
-
- return nil
-}
-
-func loadThemesFromDirectory(dir string) error {
- if _, err := os.Stat(dir); os.IsNotExist(err) {
- return nil // Directory doesn't exist, which is fine
- }
-
- entries, err := os.ReadDir(dir)
- if err != nil {
- return fmt.Errorf("failed to read directory: %w", err)
- }
-
- for _, entry := range entries {
- if entry.IsDir() || !strings.HasSuffix(entry.Name(), ".json") {
- continue
- }
-
- themeName := strings.TrimSuffix(entry.Name(), ".json")
- filePath := filepath.Join(dir, entry.Name())
-
- data, err := os.ReadFile(filePath)
- if err != nil {
- fmt.Printf("Warning: Failed to read theme file %s: %v\n", filePath, err)
- continue
- }
-
- theme, err := parseJSONTheme(themeName, data)
- if err != nil {
- fmt.Printf("Warning: Failed to parse theme %s: %v\n", filePath, err)
- continue
- }
-
- RegisterTheme(themeName, theme)
- }
-
- return nil
-}
-
-func parseJSONTheme(name string, data []byte) (Theme, error) {
- var jsonTheme JSONTheme
- if err := json.Unmarshal(data, &jsonTheme); err != nil {
- return nil, fmt.Errorf("failed to unmarshal JSON: %w", err)
- }
- theme := &LoadedTheme{
- name: name,
- }
- colorMap := make(map[string]*colorRef)
- for key, value := range jsonTheme.Defs {
- colorMap[key] = &colorRef{value: value, resolved: false}
- }
- for key, value := range jsonTheme.Theme {
- colorMap[key] = &colorRef{value: value, resolved: false}
- }
- resolver := &colorResolver{
- colors: colorMap,
- visited: make(map[string]bool),
- }
- for key, value := range jsonTheme.Theme {
- resolved, err := resolver.resolveColor(key, value)
- if err != nil {
- return nil, fmt.Errorf("failed to resolve color %s: %w", key, err)
- }
- adaptiveColor, err := parseResolvedColor(resolved)
- if err != nil {
- return nil, fmt.Errorf("failed to parse color %s: %w", key, err)
- }
- if err := setThemeColor(theme, key, adaptiveColor); err != nil {
- return nil, fmt.Errorf("failed to set color %s: %w", key, err)
- }
- }
-
- return theme, nil
-}
-
-type colorResolver struct {
- colors map[string]*colorRef
- visited map[string]bool
-}
-
-func (r *colorResolver) resolveColor(key string, value any) (any, error) {
- if r.visited[key] {
- return nil, fmt.Errorf("circular reference detected for color %s", key)
- }
- r.visited[key] = true
- defer func() { r.visited[key] = false }()
-
- switch v := value.(type) {
- case string:
- if strings.HasPrefix(v, "#") || v == "none" {
- return v, nil
- }
- return r.resolveReference(v)
- case float64:
- return v, nil
- case map[string]any:
- resolved := make(map[string]any)
-
- if dark, ok := v["dark"]; ok {
- resolvedDark, err := r.resolveColorValue(dark)
- if err != nil {
- return nil, fmt.Errorf("failed to resolve dark variant: %w", err)
- }
- resolved["dark"] = resolvedDark
- }
-
- if light, ok := v["light"]; ok {
- resolvedLight, err := r.resolveColorValue(light)
- if err != nil {
- return nil, fmt.Errorf("failed to resolve light variant: %w", err)
- }
- resolved["light"] = resolvedLight
- }
-
- return resolved, nil
- default:
- return nil, fmt.Errorf("invalid color value type: %T", value)
- }
-}
-
-func (r *colorResolver) resolveColorValue(value any) (any, error) {
- switch v := value.(type) {
- case string:
- if strings.HasPrefix(v, "#") || v == "none" {
- return v, nil
- }
- return r.resolveReference(v)
- case float64:
- return v, nil
- default:
- return nil, fmt.Errorf("invalid color value type: %T", value)
- }
-}
-
-func (r *colorResolver) resolveReference(ref string) (any, error) {
- colorRef, exists := r.colors[ref]
- if !exists {
- return nil, fmt.Errorf("color reference '%s' not found", ref)
- }
-
- if colorRef.resolved {
- return colorRef.value, nil
- }
-
- resolved, err := r.resolveColor(ref, colorRef.value)
- if err != nil {
- return nil, err
- }
-
- colorRef.value = resolved
- colorRef.resolved = true
-
- return resolved, nil
-}
-
-func parseResolvedColor(value any) (compat.AdaptiveColor, error) {
- switch v := value.(type) {
- case string:
- if v == "none" {
- return compat.AdaptiveColor{
- Dark: lipgloss.NoColor{},
- Light: lipgloss.NoColor{},
- }, nil
- }
- return compat.AdaptiveColor{
- Dark: lipgloss.Color(v),
- Light: lipgloss.Color(v),
- }, nil
- case float64:
- colorStr := fmt.Sprintf("%d", int(v))
- return compat.AdaptiveColor{
- Dark: lipgloss.Color(colorStr),
- Light: lipgloss.Color(colorStr),
- }, nil
- case map[string]any:
- dark, darkOk := v["dark"]
- light, lightOk := v["light"]
-
- if !darkOk || !lightOk {
- return compat.AdaptiveColor{}, fmt.Errorf("color object must have both 'dark' and 'light' keys")
- }
- darkColor, err := parseColorValue(dark)
- if err != nil {
- return compat.AdaptiveColor{}, fmt.Errorf("failed to parse dark color: %w", err)
- }
- lightColor, err := parseColorValue(light)
- if err != nil {
- return compat.AdaptiveColor{}, fmt.Errorf("failed to parse light color: %w", err)
- }
- return compat.AdaptiveColor{
- Dark: darkColor,
- Light: lightColor,
- }, nil
- default:
- return compat.AdaptiveColor{}, fmt.Errorf("invalid resolved color type: %T", value)
- }
-}
-
-func parseColorValue(value any) (color.Color, error) {
- switch v := value.(type) {
- case string:
- if v == "none" {
- return lipgloss.NoColor{}, nil
- }
- return lipgloss.Color(v), nil
- case float64:
- return lipgloss.Color(fmt.Sprintf("%d", int(v))), nil
- default:
- return nil, fmt.Errorf("invalid color value type: %T", value)
- }
-}
-
-func setThemeColor(theme *LoadedTheme, key string, color compat.AdaptiveColor) error {
- switch key {
- case "primary":
- theme.PrimaryColor = color
- case "secondary":
- theme.SecondaryColor = color
- case "accent":
- theme.AccentColor = color
- case "error":
- theme.ErrorColor = color
- case "warning":
- theme.WarningColor = color
- case "success":
- theme.SuccessColor = color
- case "info":
- theme.InfoColor = color
- case "text":
- theme.TextColor = color
- case "textMuted":
- theme.TextMutedColor = color
- case "background":
- theme.BackgroundColor = color
- case "backgroundPanel":
- theme.BackgroundPanelColor = color
- case "backgroundElement":
- theme.BackgroundElementColor = color
- case "border":
- theme.BorderColor = color
- case "borderActive":
- theme.BorderActiveColor = color
- case "borderSubtle":
- theme.BorderSubtleColor = color
- case "diffAdded":
- theme.DiffAddedColor = color
- case "diffRemoved":
- theme.DiffRemovedColor = color
- case "diffContext":
- theme.DiffContextColor = color
- case "diffHunkHeader":
- theme.DiffHunkHeaderColor = color
- case "diffHighlightAdded":
- theme.DiffHighlightAddedColor = color
- case "diffHighlightRemoved":
- theme.DiffHighlightRemovedColor = color
- case "diffAddedBg":
- theme.DiffAddedBgColor = color
- case "diffRemovedBg":
- theme.DiffRemovedBgColor = color
- case "diffContextBg":
- theme.DiffContextBgColor = color
- case "diffLineNumber":
- theme.DiffLineNumberColor = color
- case "diffAddedLineNumberBg":
- theme.DiffAddedLineNumberBgColor = color
- case "diffRemovedLineNumberBg":
- theme.DiffRemovedLineNumberBgColor = color
- case "markdownText":
- theme.MarkdownTextColor = color
- case "markdownHeading":
- theme.MarkdownHeadingColor = color
- case "markdownLink":
- theme.MarkdownLinkColor = color
- case "markdownLinkText":
- theme.MarkdownLinkTextColor = color
- case "markdownCode":
- theme.MarkdownCodeColor = color
- case "markdownBlockQuote":
- theme.MarkdownBlockQuoteColor = color
- case "markdownEmph":
- theme.MarkdownEmphColor = color
- case "markdownStrong":
- theme.MarkdownStrongColor = color
- case "markdownHorizontalRule":
- theme.MarkdownHorizontalRuleColor = color
- case "markdownListItem":
- theme.MarkdownListItemColor = color
- case "markdownListEnumeration":
- theme.MarkdownListEnumerationColor = color
- case "markdownImage":
- theme.MarkdownImageColor = color
- case "markdownImageText":
- theme.MarkdownImageTextColor = color
- case "markdownCodeBlock":
- theme.MarkdownCodeBlockColor = color
- case "syntaxComment":
- theme.SyntaxCommentColor = color
- case "syntaxKeyword":
- theme.SyntaxKeywordColor = color
- case "syntaxFunction":
- theme.SyntaxFunctionColor = color
- case "syntaxVariable":
- theme.SyntaxVariableColor = color
- case "syntaxString":
- theme.SyntaxStringColor = color
- case "syntaxNumber":
- theme.SyntaxNumberColor = color
- case "syntaxType":
- theme.SyntaxTypeColor = color
- case "syntaxOperator":
- theme.SyntaxOperatorColor = color
- case "syntaxPunctuation":
- theme.SyntaxPunctuationColor = color
- default:
- // Ignore unknown keys for forward compatibility
- return nil
- }
- return nil
-}
diff --git a/packages/tui/internal/theme/loader_test.go b/packages/tui/internal/theme/loader_test.go
deleted file mode 100644
index 37546789b..000000000
--- a/packages/tui/internal/theme/loader_test.go
+++ /dev/null
@@ -1,141 +0,0 @@
-package theme
-
-import (
- "os"
- "path/filepath"
- "slices"
- "testing"
-)
-
-func TestLoadThemesFromJSON(t *testing.T) {
- // Test loading themes
- err := LoadThemesFromJSON()
- if err != nil {
- t.Fatalf("Failed to load themes: %v", err)
- }
-
- // Check that themes were loaded
- themes := AvailableThemes()
- if len(themes) == 0 {
- t.Fatal("No themes were loaded")
- }
-
- // Check for expected themes
- expectedThemes := []string{"tokyonight", "opencode", "everforest", "ayu"}
- for _, expected := range expectedThemes {
- found := slices.Contains(themes, expected)
- if !found {
- t.Errorf("Expected theme %s not found", expected)
- }
- }
-
- // Test getting a specific theme
- tokyonight := GetTheme("tokyonight")
- if tokyonight == nil {
- t.Fatal("Failed to get tokyonight theme")
- }
-
- // Test theme colors
- primary := tokyonight.Primary()
- if primary.Dark == nil || primary.Light == nil {
- t.Error("Primary color not properly set")
- }
-}
-
-func TestColorReferenceResolution(t *testing.T) {
- // Load themes first
- err := LoadThemesFromJSON()
- if err != nil {
- t.Fatalf("Failed to load themes: %v", err)
- }
-
- // Test a theme that uses references (e.g., solarized uses color definitions)
- solarized := GetTheme("solarized")
- if solarized == nil {
- t.Fatal("Failed to get solarized theme")
- }
-
- // Check that color references were resolved
- primary := solarized.Primary()
- if primary.Dark == nil || primary.Light == nil {
- t.Error("Primary color reference not resolved")
- }
-
- // Check that all colors are properly resolved
- text := solarized.Text()
- if text.Dark == nil || text.Light == nil {
- t.Error("Text color reference not resolved")
- }
-}
-
-func TestLoadThemesFromDirectories(t *testing.T) {
- // Create temporary directories for testing
- tempDir := t.TempDir()
-
- userConfig := filepath.Join(tempDir, "config")
- projectRoot := filepath.Join(tempDir, "project")
- cwd := filepath.Join(tempDir, "cwd")
-
- // Create theme directories
- os.MkdirAll(filepath.Join(userConfig, "opencode", "themes"), 0755)
- os.MkdirAll(filepath.Join(projectRoot, ".opencode", "themes"), 0755)
- os.MkdirAll(filepath.Join(cwd, ".opencode", "themes"), 0755)
-
- // Create test themes with same name to test override behavior
- testTheme1 := `{
- "theme": {
- "primary": "#111111",
- "secondary": "#222222",
- "accent": "#333333",
- "text": "#ffffff",
- "textMuted": "#cccccc",
- "background": "#000000"
- }
- }`
-
- testTheme2 := `{
- "theme": {
- "primary": "#444444",
- "secondary": "#555555",
- "accent": "#666666",
- "text": "#ffffff",
- "textMuted": "#cccccc",
- "background": "#000000"
- }
- }`
-
- testTheme3 := `{
- "theme": {
- "primary": "#777777",
- "secondary": "#888888",
- "accent": "#999999",
- "text": "#ffffff",
- "textMuted": "#cccccc",
- "background": "#000000"
- }
- }`
-
- // Write themes to different directories
- os.WriteFile(filepath.Join(userConfig, "opencode", "themes", "override-test.json"), []byte(testTheme1), 0644)
- os.WriteFile(filepath.Join(projectRoot, ".opencode", "themes", "override-test.json"), []byte(testTheme2), 0644)
- os.WriteFile(filepath.Join(cwd, ".opencode", "themes", "override-test.json"), []byte(testTheme3), 0644)
-
- // Load themes
- err := LoadThemesFromDirectories(userConfig, projectRoot, cwd)
- if err != nil {
- t.Fatalf("Failed to load themes from directories: %v", err)
- }
-
- // Check that the theme from CWD (highest priority) won
- overrideTheme := GetTheme("override-test")
- if overrideTheme == nil {
- t.Fatal("Failed to get override-test theme")
- }
-
- // The primary color should be from testTheme3 (#777777)
- primary := overrideTheme.Primary()
- // We can't directly check the color value, but we can verify it was loaded
- if primary.Dark == nil || primary.Light == nil {
- t.Error("Override theme not properly loaded")
- }
-}
diff --git a/packages/tui/internal/theme/manager.go b/packages/tui/internal/theme/manager.go
deleted file mode 100644
index 420b96dea..000000000
--- a/packages/tui/internal/theme/manager.go
+++ /dev/null
@@ -1,229 +0,0 @@
-package theme
-
-import (
- "fmt"
- "image/color"
- "slices"
- "strconv"
- "strings"
- "sync"
-
- "github.com/alecthomas/chroma/v2/styles"
- "github.com/charmbracelet/lipgloss/v2"
- "github.com/charmbracelet/lipgloss/v2/compat"
- "github.com/charmbracelet/x/ansi"
-)
-
-// Manager handles theme registration, selection, and retrieval.
-// It maintains a registry of available themes and tracks the currently active theme.
-type Manager struct {
- themes map[string]Theme
- currentName string
- currentUsesAnsiCache bool // Cache whether current theme uses ANSI colors
- mu sync.RWMutex
-}
-
-// Global instance of the theme manager
-var globalManager = &Manager{
- themes: make(map[string]Theme),
- currentName: "",
-}
-
-// RegisterTheme adds a new theme to the registry.
-// If this is the first theme registered, it becomes the default.
-func RegisterTheme(name string, theme Theme) {
- globalManager.mu.Lock()
- defer globalManager.mu.Unlock()
-
- globalManager.themes[name] = theme
-
- // If this is the first theme, make it the default
- if globalManager.currentName == "" {
- globalManager.currentName = name
- globalManager.currentUsesAnsiCache = themeUsesAnsiColors(theme)
- }
-}
-
-// SetTheme changes the active theme to the one with the specified name.
-// Returns an error if the theme doesn't exist.
-func SetTheme(name string) error {
- globalManager.mu.Lock()
- defer globalManager.mu.Unlock()
- delete(styles.Registry, "charm")
-
- theme, exists := globalManager.themes[name]
- if !exists {
- return fmt.Errorf("theme '%s' not found", name)
- }
-
- globalManager.currentName = name
- globalManager.currentUsesAnsiCache = themeUsesAnsiColors(theme)
-
- return nil
-}
-
-// CurrentTheme returns the currently active theme.
-// If no theme is set, it returns nil.
-func CurrentTheme() Theme {
- globalManager.mu.RLock()
- defer globalManager.mu.RUnlock()
-
- if globalManager.currentName == "" {
- return nil
- }
-
- return globalManager.themes[globalManager.currentName]
-}
-
-// CurrentThemeName returns the name of the currently active theme.
-func CurrentThemeName() string {
- globalManager.mu.RLock()
- defer globalManager.mu.RUnlock()
-
- return globalManager.currentName
-}
-
-// AvailableThemes returns a list of all registered theme names.
-func AvailableThemes() []string {
- globalManager.mu.RLock()
- defer globalManager.mu.RUnlock()
-
- names := make([]string, 0, len(globalManager.themes))
- for name := range globalManager.themes {
- names = append(names, name)
- }
- slices.SortFunc(names, func(a, b string) int {
- if a == "opencode" {
- return -1
- } else if b == "opencode" {
- return 1
- }
- if a == "system" {
- return -1
- } else if b == "system" {
- return 1
- }
- return strings.Compare(a, b)
- })
- return names
-}
-
-// GetTheme returns a specific theme by name.
-// Returns nil if the theme doesn't exist.
-func GetTheme(name string) Theme {
- globalManager.mu.RLock()
- defer globalManager.mu.RUnlock()
-
- return globalManager.themes[name]
-}
-
-// UpdateSystemTheme updates the system theme with terminal background info
-func UpdateSystemTheme(terminalBg color.Color, isDark bool) {
- globalManager.mu.Lock()
- defer globalManager.mu.Unlock()
-
- dynamicTheme := NewSystemTheme(terminalBg, isDark)
- globalManager.themes["system"] = dynamicTheme
- if globalManager.currentName == "system" {
- globalManager.currentUsesAnsiCache = themeUsesAnsiColors(dynamicTheme)
- }
-}
-
-// CurrentThemeUsesAnsiColors returns true if the current theme uses ANSI 0-16 colors
-func CurrentThemeUsesAnsiColors() bool {
- // globalManager.mu.RLock()
- // defer globalManager.mu.RUnlock()
-
- return globalManager.currentUsesAnsiCache
-}
-
-// isAnsiColor checks if a color represents an ANSI 0-16 color
-func isAnsiColor(c color.Color) bool {
- if _, ok := c.(lipgloss.NoColor); ok {
- return false
- }
- if _, ok := c.(ansi.BasicColor); ok {
- return true
- }
-
- // For other color types, check if they represent ANSI colors
- // by examining their string representation
- if stringer, ok := c.(fmt.Stringer); ok {
- str := stringer.String()
- // Check if it's a numeric ANSI color (0-15)
- if num, err := strconv.Atoi(str); err == nil && num >= 0 && num <= 15 {
- return true
- }
- }
-
- return false
-}
-
-// adaptiveColorUsesAnsi checks if an AdaptiveColor uses ANSI colors
-func adaptiveColorUsesAnsi(ac compat.AdaptiveColor) bool {
- if isAnsiColor(ac.Dark) {
- return true
- }
- if isAnsiColor(ac.Light) {
- return true
- }
- return false
-}
-
-// themeUsesAnsiColors checks if a theme uses any ANSI 0-16 colors
-func themeUsesAnsiColors(theme Theme) bool {
- if theme == nil {
- return false
- }
-
- return adaptiveColorUsesAnsi(theme.Primary()) ||
- adaptiveColorUsesAnsi(theme.Secondary()) ||
- adaptiveColorUsesAnsi(theme.Accent()) ||
- adaptiveColorUsesAnsi(theme.Error()) ||
- adaptiveColorUsesAnsi(theme.Warning()) ||
- adaptiveColorUsesAnsi(theme.Success()) ||
- adaptiveColorUsesAnsi(theme.Info()) ||
- adaptiveColorUsesAnsi(theme.Text()) ||
- adaptiveColorUsesAnsi(theme.TextMuted()) ||
- adaptiveColorUsesAnsi(theme.Background()) ||
- adaptiveColorUsesAnsi(theme.BackgroundPanel()) ||
- adaptiveColorUsesAnsi(theme.BackgroundElement()) ||
- adaptiveColorUsesAnsi(theme.Border()) ||
- adaptiveColorUsesAnsi(theme.BorderActive()) ||
- adaptiveColorUsesAnsi(theme.BorderSubtle()) ||
- adaptiveColorUsesAnsi(theme.DiffAdded()) ||
- adaptiveColorUsesAnsi(theme.DiffRemoved()) ||
- adaptiveColorUsesAnsi(theme.DiffContext()) ||
- adaptiveColorUsesAnsi(theme.DiffHunkHeader()) ||
- adaptiveColorUsesAnsi(theme.DiffHighlightAdded()) ||
- adaptiveColorUsesAnsi(theme.DiffHighlightRemoved()) ||
- adaptiveColorUsesAnsi(theme.DiffAddedBg()) ||
- adaptiveColorUsesAnsi(theme.DiffRemovedBg()) ||
- adaptiveColorUsesAnsi(theme.DiffContextBg()) ||
- adaptiveColorUsesAnsi(theme.DiffLineNumber()) ||
- adaptiveColorUsesAnsi(theme.DiffAddedLineNumberBg()) ||
- adaptiveColorUsesAnsi(theme.DiffRemovedLineNumberBg()) ||
- adaptiveColorUsesAnsi(theme.MarkdownText()) ||
- adaptiveColorUsesAnsi(theme.MarkdownHeading()) ||
- adaptiveColorUsesAnsi(theme.MarkdownLink()) ||
- adaptiveColorUsesAnsi(theme.MarkdownLinkText()) ||
- adaptiveColorUsesAnsi(theme.MarkdownCode()) ||
- adaptiveColorUsesAnsi(theme.MarkdownBlockQuote()) ||
- adaptiveColorUsesAnsi(theme.MarkdownEmph()) ||
- adaptiveColorUsesAnsi(theme.MarkdownStrong()) ||
- adaptiveColorUsesAnsi(theme.MarkdownHorizontalRule()) ||
- adaptiveColorUsesAnsi(theme.MarkdownListItem()) ||
- adaptiveColorUsesAnsi(theme.MarkdownListEnumeration()) ||
- adaptiveColorUsesAnsi(theme.MarkdownImage()) ||
- adaptiveColorUsesAnsi(theme.MarkdownImageText()) ||
- adaptiveColorUsesAnsi(theme.MarkdownCodeBlock()) ||
- adaptiveColorUsesAnsi(theme.SyntaxComment()) ||
- adaptiveColorUsesAnsi(theme.SyntaxKeyword()) ||
- adaptiveColorUsesAnsi(theme.SyntaxFunction()) ||
- adaptiveColorUsesAnsi(theme.SyntaxVariable()) ||
- adaptiveColorUsesAnsi(theme.SyntaxString()) ||
- adaptiveColorUsesAnsi(theme.SyntaxNumber()) ||
- adaptiveColorUsesAnsi(theme.SyntaxType()) ||
- adaptiveColorUsesAnsi(theme.SyntaxOperator()) ||
- adaptiveColorUsesAnsi(theme.SyntaxPunctuation())
-}
diff --git a/packages/tui/internal/theme/system.go b/packages/tui/internal/theme/system.go
deleted file mode 100644
index 8dd48cfec..000000000
--- a/packages/tui/internal/theme/system.go
+++ /dev/null
@@ -1,303 +0,0 @@
-package theme
-
-import (
- "fmt"
- "image/color"
- "math"
-
- "github.com/charmbracelet/lipgloss/v2"
- "github.com/charmbracelet/lipgloss/v2/compat"
-)
-
-// SystemTheme is a dynamic theme that derives its gray scale colors
-// from the terminal's background color at runtime
-type SystemTheme struct {
- BaseTheme
- terminalBg color.Color
- terminalBgIsDark bool
-}
-
-// NewSystemTheme creates a new instance of the dynamic system theme
-func NewSystemTheme(terminalBg color.Color, isDark bool) *SystemTheme {
- theme := &SystemTheme{
- terminalBg: terminalBg,
- terminalBgIsDark: isDark,
- }
- theme.initializeColors()
- return theme
-}
-
-func (t *SystemTheme) Name() string {
- return "system"
-}
-
-// initializeColors sets up all theme colors
-func (t *SystemTheme) initializeColors() {
- // Generate gray scale based on terminal background
- grays := t.generateGrayScale()
-
- // Set ANSI colors for primary colors
- t.PrimaryColor = compat.AdaptiveColor{
- Dark: lipgloss.Cyan,
- Light: lipgloss.Cyan,
- }
- t.SecondaryColor = compat.AdaptiveColor{
- Dark: lipgloss.Magenta,
- Light: lipgloss.Magenta,
- }
- t.AccentColor = compat.AdaptiveColor{
- Dark: lipgloss.Cyan,
- Light: lipgloss.Cyan,
- }
-
- // Status colors using ANSI
- t.ErrorColor = compat.AdaptiveColor{
- Dark: lipgloss.Red,
- Light: lipgloss.Red,
- }
- t.WarningColor = compat.AdaptiveColor{
- Dark: lipgloss.Yellow,
- Light: lipgloss.Yellow,
- }
- t.SuccessColor = compat.AdaptiveColor{
- Dark: lipgloss.Green,
- Light: lipgloss.Green,
- }
- t.InfoColor = compat.AdaptiveColor{
- Dark: lipgloss.Cyan,
- Light: lipgloss.Cyan,
- }
-
- // Text colors
- t.TextColor = compat.AdaptiveColor{
- Dark: lipgloss.NoColor{},
- Light: lipgloss.NoColor{},
- }
- // Derive muted text color from terminal foreground
- t.TextMutedColor = t.generateMutedTextColor()
-
- // Background colors
- t.BackgroundColor = compat.AdaptiveColor{
- Dark: lipgloss.NoColor{},
- Light: lipgloss.NoColor{},
- }
- t.BackgroundPanelColor = grays[2]
- t.BackgroundElementColor = grays[3]
-
- // Border colors
- t.BorderSubtleColor = grays[6]
- t.BorderColor = grays[7]
- t.BorderActiveColor = grays[8]
-
- // Diff colors using ANSI colors
- t.DiffAddedColor = compat.AdaptiveColor{
- Dark: lipgloss.Color("2"), // green
- Light: lipgloss.Color("2"),
- }
- t.DiffRemovedColor = compat.AdaptiveColor{
- Dark: lipgloss.Color("1"), // red
- Light: lipgloss.Color("1"),
- }
- t.DiffContextColor = grays[7] // Use gray for context
- t.DiffHunkHeaderColor = grays[7]
- t.DiffHighlightAddedColor = compat.AdaptiveColor{
- Dark: lipgloss.Color("2"), // green
- Light: lipgloss.Color("2"),
- }
- t.DiffHighlightRemovedColor = compat.AdaptiveColor{
- Dark: lipgloss.Color("1"), // red
- Light: lipgloss.Color("1"),
- }
- // Use subtle gray backgrounds for diff
- t.DiffAddedBgColor = grays[2]
- t.DiffRemovedBgColor = grays[2]
- t.DiffContextBgColor = grays[1]
- t.DiffLineNumberColor = grays[6]
- t.DiffAddedLineNumberBgColor = grays[3]
- t.DiffRemovedLineNumberBgColor = grays[3]
-
- // Markdown colors using ANSI
- t.MarkdownTextColor = compat.AdaptiveColor{
- Dark: lipgloss.NoColor{},
- Light: lipgloss.NoColor{},
- }
- t.MarkdownHeadingColor = compat.AdaptiveColor{
- Dark: lipgloss.NoColor{},
- Light: lipgloss.NoColor{},
- }
- t.MarkdownLinkColor = compat.AdaptiveColor{
- Dark: lipgloss.Color("4"), // blue
- Light: lipgloss.Color("4"),
- }
- t.MarkdownLinkTextColor = compat.AdaptiveColor{
- Dark: lipgloss.Color("6"), // cyan
- Light: lipgloss.Color("6"),
- }
- t.MarkdownCodeColor = compat.AdaptiveColor{
- Dark: lipgloss.Color("2"), // green
- Light: lipgloss.Color("2"),
- }
- t.MarkdownBlockQuoteColor = compat.AdaptiveColor{
- Dark: lipgloss.Color("3"), // yellow
- Light: lipgloss.Color("3"),
- }
- t.MarkdownEmphColor = compat.AdaptiveColor{
- Dark: lipgloss.Color("3"), // yellow
- Light: lipgloss.Color("3"),
- }
- t.MarkdownStrongColor = compat.AdaptiveColor{
- Dark: lipgloss.NoColor{},
- Light: lipgloss.NoColor{},
- }
- t.MarkdownHorizontalRuleColor = t.BorderColor
- t.MarkdownListItemColor = compat.AdaptiveColor{
- Dark: lipgloss.Color("4"), // blue
- Light: lipgloss.Color("4"),
- }
- t.MarkdownListEnumerationColor = compat.AdaptiveColor{
- Dark: lipgloss.Color("6"), // cyan
- Light: lipgloss.Color("6"),
- }
- t.MarkdownImageColor = compat.AdaptiveColor{
- Dark: lipgloss.Color("4"), // blue
- Light: lipgloss.Color("4"),
- }
- t.MarkdownImageTextColor = compat.AdaptiveColor{
- Dark: lipgloss.Color("6"), // cyan
- Light: lipgloss.Color("6"),
- }
- t.MarkdownCodeBlockColor = compat.AdaptiveColor{
- Dark: lipgloss.NoColor{},
- Light: lipgloss.NoColor{},
- }
-
- // Syntax colors
- t.SyntaxCommentColor = t.TextMutedColor // Use same as muted text
- t.SyntaxKeywordColor = compat.AdaptiveColor{
- Dark: lipgloss.Color("5"), // magenta
- Light: lipgloss.Color("5"),
- }
- t.SyntaxFunctionColor = compat.AdaptiveColor{
- Dark: lipgloss.Color("4"), // blue
- Light: lipgloss.Color("4"),
- }
- t.SyntaxVariableColor = compat.AdaptiveColor{
- Dark: lipgloss.NoColor{},
- Light: lipgloss.NoColor{},
- }
- t.SyntaxStringColor = compat.AdaptiveColor{
- Dark: lipgloss.Color("2"), // green
- Light: lipgloss.Color("2"),
- }
- t.SyntaxNumberColor = compat.AdaptiveColor{
- Dark: lipgloss.Color("3"), // yellow
- Light: lipgloss.Color("3"),
- }
- t.SyntaxTypeColor = compat.AdaptiveColor{
- Dark: lipgloss.Color("6"), // cyan
- Light: lipgloss.Color("6"),
- }
- t.SyntaxOperatorColor = compat.AdaptiveColor{
- Dark: lipgloss.Color("6"), // cyan
- Light: lipgloss.Color("6"),
- }
- t.SyntaxPunctuationColor = compat.AdaptiveColor{
- Dark: lipgloss.NoColor{},
- Light: lipgloss.NoColor{},
- }
-}
-
-// generateGrayScale creates a gray scale based on the terminal background
-func (t *SystemTheme) generateGrayScale() map[int]compat.AdaptiveColor {
- grays := make(map[int]compat.AdaptiveColor)
-
- r, g, b, _ := t.terminalBg.RGBA()
- bgR := float64(r >> 8)
- bgG := float64(g >> 8)
- bgB := float64(b >> 8)
-
- luminance := 0.299*bgR + 0.587*bgG + 0.114*bgB
-
- for i := 1; i <= 12; i++ {
- var stepColor string
- factor := float64(i) / 12.0
-
- if t.terminalBgIsDark {
- if luminance < 10 {
- grayValue := int(factor * 0.4 * 255)
- stepColor = fmt.Sprintf("#%02x%02x%02x", grayValue, grayValue, grayValue)
- } else {
- newLum := luminance + (255-luminance)*factor*0.4
-
- ratio := newLum / luminance
- newR := math.Min(bgR*ratio, 255)
- newG := math.Min(bgG*ratio, 255)
- newB := math.Min(bgB*ratio, 255)
-
- stepColor = fmt.Sprintf("#%02x%02x%02x", int(newR), int(newG), int(newB))
- }
- } else {
- if luminance > 245 {
- grayValue := int(255 - factor*0.4*255)
- stepColor = fmt.Sprintf("#%02x%02x%02x", grayValue, grayValue, grayValue)
- } else {
- newLum := luminance * (1 - factor*0.4)
-
- ratio := newLum / luminance
- newR := math.Max(bgR*ratio, 0)
- newG := math.Max(bgG*ratio, 0)
- newB := math.Max(bgB*ratio, 0)
-
- stepColor = fmt.Sprintf("#%02x%02x%02x", int(newR), int(newG), int(newB))
- }
- }
-
- grays[i] = compat.AdaptiveColor{
- Dark: lipgloss.Color(stepColor),
- Light: lipgloss.Color(stepColor),
- }
- }
-
- return grays
-}
-
-// generateMutedTextColor creates a muted gray color based on the terminal background
-func (t *SystemTheme) generateMutedTextColor() compat.AdaptiveColor {
- bgR, bgG, bgB, _ := t.terminalBg.RGBA()
-
- bgRf := float64(bgR >> 8)
- bgGf := float64(bgG >> 8)
- bgBf := float64(bgB >> 8)
-
- bgLum := 0.299*bgRf + 0.587*bgGf + 0.114*bgBf
-
- var grayValue int
- if t.terminalBgIsDark {
- if bgLum < 10 {
- // Very dark/black background
- // grays[3] would be around #2e (46), so we need much lighter
- grayValue = 180 // #b4b4b4
- } else {
- // Scale up for lighter dark backgrounds
- // Ensure we're always significantly brighter than BackgroundElement
- grayValue = min(int(160+(bgLum*0.3)), 200)
- }
- } else {
- if bgLum > 245 {
- // Very light/white background
- // grays[3] would be around #f5 (245), so we need much darker
- grayValue = 75 // #4b4b4b
- } else {
- // Scale down for darker light backgrounds
- // Ensure we're always significantly darker than BackgroundElement
- grayValue = max(int(100-((255-bgLum)*0.2)), 60)
- }
- }
-
- mutedColor := fmt.Sprintf("#%02x%02x%02x", grayValue, grayValue, grayValue)
-
- return compat.AdaptiveColor{
- Dark: lipgloss.Color(mutedColor),
- Light: lipgloss.Color(mutedColor),
- }
-}
diff --git a/packages/tui/internal/theme/theme.go b/packages/tui/internal/theme/theme.go
deleted file mode 100644
index d5d27a1e1..000000000
--- a/packages/tui/internal/theme/theme.go
+++ /dev/null
@@ -1,215 +0,0 @@
-package theme
-
-import (
- "github.com/charmbracelet/lipgloss/v2/compat"
-)
-
-// Theme defines the interface for all UI themes in the application.
-// All colors must be defined as compat.AdaptiveColor to support
-// both light and dark terminal backgrounds.
-type Theme interface {
- Name() string
-
- // Background colors
- Background() compat.AdaptiveColor // Radix 1
- BackgroundPanel() compat.AdaptiveColor // Radix 2
- BackgroundElement() compat.AdaptiveColor // Radix 3
-
- // Border colors
- BorderSubtle() compat.AdaptiveColor // Radix 6
- Border() compat.AdaptiveColor // Radix 7
- BorderActive() compat.AdaptiveColor // Radix 8
-
- // Brand colors
- Primary() compat.AdaptiveColor // Radix 9
- Secondary() compat.AdaptiveColor
- Accent() compat.AdaptiveColor
-
- // Text colors
- TextMuted() compat.AdaptiveColor // Radix 11
- Text() compat.AdaptiveColor // Radix 12
-
- // Status colors
- Error() compat.AdaptiveColor
- Warning() compat.AdaptiveColor
- Success() compat.AdaptiveColor
- Info() compat.AdaptiveColor
-
- // Diff view colors
- DiffAdded() compat.AdaptiveColor
- DiffRemoved() compat.AdaptiveColor
- DiffContext() compat.AdaptiveColor
- DiffHunkHeader() compat.AdaptiveColor
- DiffHighlightAdded() compat.AdaptiveColor
- DiffHighlightRemoved() compat.AdaptiveColor
- DiffAddedBg() compat.AdaptiveColor
- DiffRemovedBg() compat.AdaptiveColor
- DiffContextBg() compat.AdaptiveColor
- DiffLineNumber() compat.AdaptiveColor
- DiffAddedLineNumberBg() compat.AdaptiveColor
- DiffRemovedLineNumberBg() compat.AdaptiveColor
-
- // Markdown colors
- MarkdownText() compat.AdaptiveColor
- MarkdownHeading() compat.AdaptiveColor
- MarkdownLink() compat.AdaptiveColor
- MarkdownLinkText() compat.AdaptiveColor
- MarkdownCode() compat.AdaptiveColor
- MarkdownBlockQuote() compat.AdaptiveColor
- MarkdownEmph() compat.AdaptiveColor
- MarkdownStrong() compat.AdaptiveColor
- MarkdownHorizontalRule() compat.AdaptiveColor
- MarkdownListItem() compat.AdaptiveColor
- MarkdownListEnumeration() compat.AdaptiveColor
- MarkdownImage() compat.AdaptiveColor
- MarkdownImageText() compat.AdaptiveColor
- MarkdownCodeBlock() compat.AdaptiveColor
-
- // Syntax highlighting colors
- SyntaxComment() compat.AdaptiveColor
- SyntaxKeyword() compat.AdaptiveColor
- SyntaxFunction() compat.AdaptiveColor
- SyntaxVariable() compat.AdaptiveColor
- SyntaxString() compat.AdaptiveColor
- SyntaxNumber() compat.AdaptiveColor
- SyntaxType() compat.AdaptiveColor
- SyntaxOperator() compat.AdaptiveColor
- SyntaxPunctuation() compat.AdaptiveColor
-}
-
-// BaseTheme provides a default implementation of the Theme interface
-// that can be embedded in concrete theme implementations.
-type BaseTheme struct {
- // Background colors
- BackgroundColor compat.AdaptiveColor
- BackgroundPanelColor compat.AdaptiveColor
- BackgroundElementColor compat.AdaptiveColor
-
- // Border colors
- BorderSubtleColor compat.AdaptiveColor
- BorderColor compat.AdaptiveColor
- BorderActiveColor compat.AdaptiveColor
-
- // Brand colors
- PrimaryColor compat.AdaptiveColor
- SecondaryColor compat.AdaptiveColor
- AccentColor compat.AdaptiveColor
-
- // Text colors
- TextMutedColor compat.AdaptiveColor
- TextColor compat.AdaptiveColor
-
- // Status colors
- ErrorColor compat.AdaptiveColor
- WarningColor compat.AdaptiveColor
- SuccessColor compat.AdaptiveColor
- InfoColor compat.AdaptiveColor
-
- // Diff view colors
- DiffAddedColor compat.AdaptiveColor
- DiffRemovedColor compat.AdaptiveColor
- DiffContextColor compat.AdaptiveColor
- DiffHunkHeaderColor compat.AdaptiveColor
- DiffHighlightAddedColor compat.AdaptiveColor
- DiffHighlightRemovedColor compat.AdaptiveColor
- DiffAddedBgColor compat.AdaptiveColor
- DiffRemovedBgColor compat.AdaptiveColor
- DiffContextBgColor compat.AdaptiveColor
- DiffLineNumberColor compat.AdaptiveColor
- DiffAddedLineNumberBgColor compat.AdaptiveColor
- DiffRemovedLineNumberBgColor compat.AdaptiveColor
-
- // Markdown colors
- MarkdownTextColor compat.AdaptiveColor
- MarkdownHeadingColor compat.AdaptiveColor
- MarkdownLinkColor compat.AdaptiveColor
- MarkdownLinkTextColor compat.AdaptiveColor
- MarkdownCodeColor compat.AdaptiveColor
- MarkdownBlockQuoteColor compat.AdaptiveColor
- MarkdownEmphColor compat.AdaptiveColor
- MarkdownStrongColor compat.AdaptiveColor
- MarkdownHorizontalRuleColor compat.AdaptiveColor
- MarkdownListItemColor compat.AdaptiveColor
- MarkdownListEnumerationColor compat.AdaptiveColor
- MarkdownImageColor compat.AdaptiveColor
- MarkdownImageTextColor compat.AdaptiveColor
- MarkdownCodeBlockColor compat.AdaptiveColor
-
- // Syntax highlighting colors
- SyntaxCommentColor compat.AdaptiveColor
- SyntaxKeywordColor compat.AdaptiveColor
- SyntaxFunctionColor compat.AdaptiveColor
- SyntaxVariableColor compat.AdaptiveColor
- SyntaxStringColor compat.AdaptiveColor
- SyntaxNumberColor compat.AdaptiveColor
- SyntaxTypeColor compat.AdaptiveColor
- SyntaxOperatorColor compat.AdaptiveColor
- SyntaxPunctuationColor compat.AdaptiveColor
-}
-
-// Implement the Theme interface for BaseTheme
-func (t *BaseTheme) Primary() compat.AdaptiveColor { return t.PrimaryColor }
-func (t *BaseTheme) Secondary() compat.AdaptiveColor { return t.SecondaryColor }
-func (t *BaseTheme) Accent() compat.AdaptiveColor { return t.AccentColor }
-
-func (t *BaseTheme) Error() compat.AdaptiveColor { return t.ErrorColor }
-func (t *BaseTheme) Warning() compat.AdaptiveColor { return t.WarningColor }
-func (t *BaseTheme) Success() compat.AdaptiveColor { return t.SuccessColor }
-func (t *BaseTheme) Info() compat.AdaptiveColor { return t.InfoColor }
-
-func (t *BaseTheme) Text() compat.AdaptiveColor { return t.TextColor }
-func (t *BaseTheme) TextMuted() compat.AdaptiveColor { return t.TextMutedColor }
-
-func (t *BaseTheme) Background() compat.AdaptiveColor { return t.BackgroundColor }
-func (t *BaseTheme) BackgroundPanel() compat.AdaptiveColor { return t.BackgroundPanelColor }
-func (t *BaseTheme) BackgroundElement() compat.AdaptiveColor { return t.BackgroundElementColor }
-
-func (t *BaseTheme) Border() compat.AdaptiveColor { return t.BorderColor }
-func (t *BaseTheme) BorderActive() compat.AdaptiveColor { return t.BorderActiveColor }
-func (t *BaseTheme) BorderSubtle() compat.AdaptiveColor { return t.BorderSubtleColor }
-
-func (t *BaseTheme) DiffAdded() compat.AdaptiveColor { return t.DiffAddedColor }
-func (t *BaseTheme) DiffRemoved() compat.AdaptiveColor { return t.DiffRemovedColor }
-func (t *BaseTheme) DiffContext() compat.AdaptiveColor { return t.DiffContextColor }
-func (t *BaseTheme) DiffHunkHeader() compat.AdaptiveColor { return t.DiffHunkHeaderColor }
-func (t *BaseTheme) DiffHighlightAdded() compat.AdaptiveColor { return t.DiffHighlightAddedColor }
-func (t *BaseTheme) DiffHighlightRemoved() compat.AdaptiveColor { return t.DiffHighlightRemovedColor }
-func (t *BaseTheme) DiffAddedBg() compat.AdaptiveColor { return t.DiffAddedBgColor }
-func (t *BaseTheme) DiffRemovedBg() compat.AdaptiveColor { return t.DiffRemovedBgColor }
-func (t *BaseTheme) DiffContextBg() compat.AdaptiveColor { return t.DiffContextBgColor }
-func (t *BaseTheme) DiffLineNumber() compat.AdaptiveColor { return t.DiffLineNumberColor }
-func (t *BaseTheme) DiffAddedLineNumberBg() compat.AdaptiveColor {
- return t.DiffAddedLineNumberBgColor
-}
-func (t *BaseTheme) DiffRemovedLineNumberBg() compat.AdaptiveColor {
- return t.DiffRemovedLineNumberBgColor
-}
-
-func (t *BaseTheme) MarkdownText() compat.AdaptiveColor { return t.MarkdownTextColor }
-func (t *BaseTheme) MarkdownHeading() compat.AdaptiveColor { return t.MarkdownHeadingColor }
-func (t *BaseTheme) MarkdownLink() compat.AdaptiveColor { return t.MarkdownLinkColor }
-func (t *BaseTheme) MarkdownLinkText() compat.AdaptiveColor { return t.MarkdownLinkTextColor }
-func (t *BaseTheme) MarkdownCode() compat.AdaptiveColor { return t.MarkdownCodeColor }
-func (t *BaseTheme) MarkdownBlockQuote() compat.AdaptiveColor { return t.MarkdownBlockQuoteColor }
-func (t *BaseTheme) MarkdownEmph() compat.AdaptiveColor { return t.MarkdownEmphColor }
-func (t *BaseTheme) MarkdownStrong() compat.AdaptiveColor { return t.MarkdownStrongColor }
-func (t *BaseTheme) MarkdownHorizontalRule() compat.AdaptiveColor {
- return t.MarkdownHorizontalRuleColor
-}
-func (t *BaseTheme) MarkdownListItem() compat.AdaptiveColor { return t.MarkdownListItemColor }
-func (t *BaseTheme) MarkdownListEnumeration() compat.AdaptiveColor {
- return t.MarkdownListEnumerationColor
-}
-func (t *BaseTheme) MarkdownImage() compat.AdaptiveColor { return t.MarkdownImageColor }
-func (t *BaseTheme) MarkdownImageText() compat.AdaptiveColor { return t.MarkdownImageTextColor }
-func (t *BaseTheme) MarkdownCodeBlock() compat.AdaptiveColor { return t.MarkdownCodeBlockColor }
-
-func (t *BaseTheme) SyntaxComment() compat.AdaptiveColor { return t.SyntaxCommentColor }
-func (t *BaseTheme) SyntaxKeyword() compat.AdaptiveColor { return t.SyntaxKeywordColor }
-func (t *BaseTheme) SyntaxFunction() compat.AdaptiveColor { return t.SyntaxFunctionColor }
-func (t *BaseTheme) SyntaxVariable() compat.AdaptiveColor { return t.SyntaxVariableColor }
-func (t *BaseTheme) SyntaxString() compat.AdaptiveColor { return t.SyntaxStringColor }
-func (t *BaseTheme) SyntaxNumber() compat.AdaptiveColor { return t.SyntaxNumberColor }
-func (t *BaseTheme) SyntaxType() compat.AdaptiveColor { return t.SyntaxTypeColor }
-func (t *BaseTheme) SyntaxOperator() compat.AdaptiveColor { return t.SyntaxOperatorColor }
-func (t *BaseTheme) SyntaxPunctuation() compat.AdaptiveColor { return t.SyntaxPunctuationColor }
diff --git a/packages/tui/internal/theme/themes/aura.json b/packages/tui/internal/theme/themes/aura.json
deleted file mode 100644
index e7798d520..000000000
--- a/packages/tui/internal/theme/themes/aura.json
+++ /dev/null
@@ -1,69 +0,0 @@
-{
- "$schema": "https://opencode.ai/theme.json",
- "defs": {
- "darkBg": "#0f0f0f",
- "darkBgPanel": "#15141b",
- "darkBorder": "#2d2d2d",
- "darkFgMuted": "#6d6d6d",
- "darkFg": "#edecee",
- "purple": "#a277ff",
- "pink": "#f694ff",
- "blue": "#82e2ff",
- "red": "#ff6767",
- "orange": "#ffca85",
- "cyan": "#61ffca",
- "green": "#9dff65"
- },
- "theme": {
- "primary": "purple",
- "secondary": "pink",
- "accent": "purple",
- "error": "red",
- "warning": "orange",
- "success": "cyan",
- "info": "purple",
- "text": "darkFg",
- "textMuted": "darkFgMuted",
- "background": "darkBg",
- "backgroundPanel": "darkBgPanel",
- "backgroundElement": "darkBgPanel",
- "border": "darkBorder",
- "borderActive": "darkFgMuted",
- "borderSubtle": "darkBorder",
- "diffAdded": "cyan",
- "diffRemoved": "red",
- "diffContext": "darkFgMuted",
- "diffHunkHeader": "darkFgMuted",
- "diffHighlightAdded": "cyan",
- "diffHighlightRemoved": "red",
- "diffAddedBg": "#354933",
- "diffRemovedBg": "#3f191a",
- "diffContextBg": "darkBgPanel",
- "diffLineNumber": "darkBorder",
- "diffAddedLineNumberBg": "#162620",
- "diffRemovedLineNumberBg": "#26161a",
- "markdownText": "darkFg",
- "markdownHeading": "purple",
- "markdownLink": "pink",
- "markdownLinkText": "purple",
- "markdownCode": "cyan",
- "markdownBlockQuote": "darkFgMuted",
- "markdownEmph": "orange",
- "markdownStrong": "purple",
- "markdownHorizontalRule": "darkFgMuted",
- "markdownListItem": "purple",
- "markdownListEnumeration": "purple",
- "markdownImage": "pink",
- "markdownImageText": "purple",
- "markdownCodeBlock": "darkFg",
- "syntaxComment": "darkFgMuted",
- "syntaxKeyword": "pink",
- "syntaxFunction": "purple",
- "syntaxVariable": "purple",
- "syntaxString": "cyan",
- "syntaxNumber": "green",
- "syntaxType": "purple",
- "syntaxOperator": "pink",
- "syntaxPunctuation": "darkFg"
- }
-}
diff --git a/packages/tui/internal/theme/themes/ayu.json b/packages/tui/internal/theme/themes/ayu.json
deleted file mode 100644
index a42fce4c4..000000000
--- a/packages/tui/internal/theme/themes/ayu.json
+++ /dev/null
@@ -1,80 +0,0 @@
-{
- "$schema": "https://opencode.ai/theme.json",
- "defs": {
- "darkBg": "#0B0E14",
- "darkBgAlt": "#0D1017",
- "darkLine": "#11151C",
- "darkPanel": "#0F131A",
- "darkFg": "#BFBDB6",
- "darkFgMuted": "#565B66",
- "darkGutter": "#6C7380",
- "darkTag": "#39BAE6",
- "darkFunc": "#FFB454",
- "darkEntity": "#59C2FF",
- "darkString": "#AAD94C",
- "darkRegexp": "#95E6CB",
- "darkMarkup": "#F07178",
- "darkKeyword": "#FF8F40",
- "darkSpecial": "#E6B673",
- "darkComment": "#ACB6BF",
- "darkConstant": "#D2A6FF",
- "darkOperator": "#F29668",
- "darkAdded": "#7FD962",
- "darkRemoved": "#F26D78",
- "darkAccent": "#E6B450",
- "darkError": "#D95757",
- "darkIndentActive": "#6C7380"
- },
- "theme": {
- "primary": "darkEntity",
- "secondary": "darkConstant",
- "accent": "darkAccent",
- "error": "darkError",
- "warning": "darkSpecial",
- "success": "darkAdded",
- "info": "darkTag",
- "text": "darkFg",
- "textMuted": "darkFgMuted",
- "background": "darkBg",
- "backgroundPanel": "darkPanel",
- "backgroundElement": "darkBgAlt",
- "border": "darkGutter",
- "borderActive": "darkIndentActive",
- "borderSubtle": "darkLine",
- "diffAdded": "darkAdded",
- "diffRemoved": "darkRemoved",
- "diffContext": "darkComment",
- "diffHunkHeader": "darkComment",
- "diffHighlightAdded": "darkString",
- "diffHighlightRemoved": "darkMarkup",
- "diffAddedBg": "#20303b",
- "diffRemovedBg": "#37222c",
- "diffContextBg": "darkPanel",
- "diffLineNumber": "darkGutter",
- "diffAddedLineNumberBg": "#1b2b34",
- "diffRemovedLineNumberBg": "#2d1f26",
- "markdownText": "darkFg",
- "markdownHeading": "darkConstant",
- "markdownLink": "darkEntity",
- "markdownLinkText": "darkTag",
- "markdownCode": "darkString",
- "markdownBlockQuote": "darkSpecial",
- "markdownEmph": "darkSpecial",
- "markdownStrong": "darkFunc",
- "markdownHorizontalRule": "darkFgMuted",
- "markdownListItem": "darkEntity",
- "markdownListEnumeration": "darkTag",
- "markdownImage": "darkEntity",
- "markdownImageText": "darkTag",
- "markdownCodeBlock": "darkFg",
- "syntaxComment": "darkComment",
- "syntaxKeyword": "darkKeyword",
- "syntaxFunction": "darkFunc",
- "syntaxVariable": "darkEntity",
- "syntaxString": "darkString",
- "syntaxNumber": "darkConstant",
- "syntaxType": "darkSpecial",
- "syntaxOperator": "darkOperator",
- "syntaxPunctuation": "darkFg"
- }
-}
diff --git a/packages/tui/internal/theme/themes/catppuccin.json b/packages/tui/internal/theme/themes/catppuccin.json
deleted file mode 100644
index d0fa6a11d..000000000
--- a/packages/tui/internal/theme/themes/catppuccin.json
+++ /dev/null
@@ -1,112 +0,0 @@
-{
- "$schema": "https://opencode.ai/theme.json",
- "defs": {
- "lightRosewater": "#dc8a78",
- "lightFlamingo": "#dd7878",
- "lightPink": "#ea76cb",
- "lightMauve": "#8839ef",
- "lightRed": "#d20f39",
- "lightMaroon": "#e64553",
- "lightPeach": "#fe640b",
- "lightYellow": "#df8e1d",
- "lightGreen": "#40a02b",
- "lightTeal": "#179299",
- "lightSky": "#04a5e5",
- "lightSapphire": "#209fb5",
- "lightBlue": "#1e66f5",
- "lightLavender": "#7287fd",
- "lightText": "#4c4f69",
- "lightSubtext1": "#5c5f77",
- "lightSubtext0": "#6c6f85",
- "lightOverlay2": "#7c7f93",
- "lightOverlay1": "#8c8fa1",
- "lightOverlay0": "#9ca0b0",
- "lightSurface2": "#acb0be",
- "lightSurface1": "#bcc0cc",
- "lightSurface0": "#ccd0da",
- "lightBase": "#eff1f5",
- "lightMantle": "#e6e9ef",
- "lightCrust": "#dce0e8",
- "darkRosewater": "#f5e0dc",
- "darkFlamingo": "#f2cdcd",
- "darkPink": "#f5c2e7",
- "darkMauve": "#cba6f7",
- "darkRed": "#f38ba8",
- "darkMaroon": "#eba0ac",
- "darkPeach": "#fab387",
- "darkYellow": "#f9e2af",
- "darkGreen": "#a6e3a1",
- "darkTeal": "#94e2d5",
- "darkSky": "#89dceb",
- "darkSapphire": "#74c7ec",
- "darkBlue": "#89b4fa",
- "darkLavender": "#b4befe",
- "darkText": "#cdd6f4",
- "darkSubtext1": "#bac2de",
- "darkSubtext0": "#a6adc8",
- "darkOverlay2": "#9399b2",
- "darkOverlay1": "#7f849c",
- "darkOverlay0": "#6c7086",
- "darkSurface2": "#585b70",
- "darkSurface1": "#45475a",
- "darkSurface0": "#313244",
- "darkBase": "#1e1e2e",
- "darkMantle": "#181825",
- "darkCrust": "#11111b"
- },
- "theme": {
- "primary": { "dark": "darkBlue", "light": "lightBlue" },
- "secondary": { "dark": "darkMauve", "light": "lightMauve" },
- "accent": { "dark": "darkPink", "light": "lightPink" },
- "error": { "dark": "darkRed", "light": "lightRed" },
- "warning": { "dark": "darkYellow", "light": "lightYellow" },
- "success": { "dark": "darkGreen", "light": "lightGreen" },
- "info": { "dark": "darkTeal", "light": "lightTeal" },
- "text": { "dark": "darkText", "light": "lightText" },
- "textMuted": { "dark": "darkSubtext1", "light": "lightSubtext1" },
- "background": { "dark": "darkBase", "light": "lightBase" },
- "backgroundPanel": { "dark": "darkMantle", "light": "lightMantle" },
- "backgroundElement": { "dark": "darkCrust", "light": "lightCrust" },
- "border": { "dark": "darkSurface0", "light": "lightSurface0" },
- "borderActive": { "dark": "darkSurface1", "light": "lightSurface1" },
- "borderSubtle": { "dark": "darkSurface2", "light": "lightSurface2" },
- "diffAdded": { "dark": "darkGreen", "light": "lightGreen" },
- "diffRemoved": { "dark": "darkRed", "light": "lightRed" },
- "diffContext": { "dark": "darkOverlay2", "light": "lightOverlay2" },
- "diffHunkHeader": { "dark": "darkPeach", "light": "lightPeach" },
- "diffHighlightAdded": { "dark": "darkGreen", "light": "lightGreen" },
- "diffHighlightRemoved": { "dark": "darkRed", "light": "lightRed" },
- "diffAddedBg": { "dark": "#24312b", "light": "#d6f0d9" },
- "diffRemovedBg": { "dark": "#3c2a32", "light": "#f6dfe2" },
- "diffContextBg": { "dark": "darkMantle", "light": "lightMantle" },
- "diffLineNumber": { "dark": "darkSurface1", "light": "lightSurface1" },
- "diffAddedLineNumberBg": { "dark": "#1e2a25", "light": "#c9e3cb" },
- "diffRemovedLineNumberBg": { "dark": "#32232a", "light": "#e9d3d6" },
- "markdownText": { "dark": "darkText", "light": "lightText" },
- "markdownHeading": { "dark": "darkMauve", "light": "lightMauve" },
- "markdownLink": { "dark": "darkBlue", "light": "lightBlue" },
- "markdownLinkText": { "dark": "darkSky", "light": "lightSky" },
- "markdownCode": { "dark": "darkGreen", "light": "lightGreen" },
- "markdownBlockQuote": { "dark": "darkYellow", "light": "lightYellow" },
- "markdownEmph": { "dark": "darkYellow", "light": "lightYellow" },
- "markdownStrong": { "dark": "darkPeach", "light": "lightPeach" },
- "markdownHorizontalRule": {
- "dark": "darkSubtext0",
- "light": "lightSubtext0"
- },
- "markdownListItem": { "dark": "darkBlue", "light": "lightBlue" },
- "markdownListEnumeration": { "dark": "darkSky", "light": "lightSky" },
- "markdownImage": { "dark": "darkBlue", "light": "lightBlue" },
- "markdownImageText": { "dark": "darkSky", "light": "lightSky" },
- "markdownCodeBlock": { "dark": "darkText", "light": "lightText" },
- "syntaxComment": { "dark": "darkOverlay2", "light": "lightOverlay2" },
- "syntaxKeyword": { "dark": "darkMauve", "light": "lightMauve" },
- "syntaxFunction": { "dark": "darkBlue", "light": "lightBlue" },
- "syntaxVariable": { "dark": "darkRed", "light": "lightRed" },
- "syntaxString": { "dark": "darkGreen", "light": "lightGreen" },
- "syntaxNumber": { "dark": "darkPeach", "light": "lightPeach" },
- "syntaxType": { "dark": "darkYellow", "light": "lightYellow" },
- "syntaxOperator": { "dark": "darkSky", "light": "lightSky" },
- "syntaxPunctuation": { "dark": "darkText", "light": "lightText" }
- }
-}
diff --git a/packages/tui/internal/theme/themes/cobalt2.json b/packages/tui/internal/theme/themes/cobalt2.json
deleted file mode 100644
index 2967eae58..000000000
--- a/packages/tui/internal/theme/themes/cobalt2.json
+++ /dev/null
@@ -1,228 +0,0 @@
-{
- "$schema": "https://opencode.ai/theme.json",
- "defs": {
- "background": "#193549",
- "backgroundAlt": "#122738",
- "backgroundPanel": "#1f4662",
- "foreground": "#ffffff",
- "foregroundMuted": "#adb7c9",
- "yellow": "#ffc600",
- "yellowBright": "#ffe14c",
- "orange": "#ff9d00",
- "orangeBright": "#ffb454",
- "mint": "#2affdf",
- "mintBright": "#7efff5",
- "blue": "#0088ff",
- "blueBright": "#5cb7ff",
- "pink": "#ff628c",
- "pinkBright": "#ff86a5",
- "green": "#9eff80",
- "greenBright": "#b9ff9f",
- "purple": "#9a5feb",
- "purpleBright": "#b88cfd",
- "red": "#ff0088",
- "redBright": "#ff5fb3"
- },
- "theme": {
- "primary": {
- "dark": "blue",
- "light": "#0066cc"
- },
- "secondary": {
- "dark": "purple",
- "light": "#7c4dff"
- },
- "accent": {
- "dark": "mint",
- "light": "#00acc1"
- },
- "error": {
- "dark": "red",
- "light": "#e91e63"
- },
- "warning": {
- "dark": "yellow",
- "light": "#ff9800"
- },
- "success": {
- "dark": "green",
- "light": "#4caf50"
- },
- "info": {
- "dark": "orange",
- "light": "#ff5722"
- },
- "text": {
- "dark": "foreground",
- "light": "#193549"
- },
- "textMuted": {
- "dark": "foregroundMuted",
- "light": "#5c6b7d"
- },
- "background": {
- "dark": "#193549",
- "light": "#ffffff"
- },
- "backgroundPanel": {
- "dark": "#122738",
- "light": "#f5f7fa"
- },
- "backgroundElement": {
- "dark": "#1f4662",
- "light": "#e8ecf1"
- },
- "border": {
- "dark": "#1f4662",
- "light": "#d3dae3"
- },
- "borderActive": {
- "dark": "blue",
- "light": "#0066cc"
- },
- "borderSubtle": {
- "dark": "#0e1e2e",
- "light": "#e8ecf1"
- },
- "diffAdded": {
- "dark": "green",
- "light": "#4caf50"
- },
- "diffRemoved": {
- "dark": "red",
- "light": "#e91e63"
- },
- "diffContext": {
- "dark": "foregroundMuted",
- "light": "#5c6b7d"
- },
- "diffHunkHeader": {
- "dark": "mint",
- "light": "#00acc1"
- },
- "diffHighlightAdded": {
- "dark": "greenBright",
- "light": "#4caf50"
- },
- "diffHighlightRemoved": {
- "dark": "redBright",
- "light": "#e91e63"
- },
- "diffAddedBg": {
- "dark": "#1a3a2a",
- "light": "#e8f5e9"
- },
- "diffRemovedBg": {
- "dark": "#3a1a2a",
- "light": "#ffebee"
- },
- "diffContextBg": {
- "dark": "#122738",
- "light": "#f5f7fa"
- },
- "diffLineNumber": {
- "dark": "#2d5a7b",
- "light": "#b0bec5"
- },
- "diffAddedLineNumberBg": {
- "dark": "#1a3a2a",
- "light": "#e8f5e9"
- },
- "diffRemovedLineNumberBg": {
- "dark": "#3a1a2a",
- "light": "#ffebee"
- },
- "markdownText": {
- "dark": "foreground",
- "light": "#193549"
- },
- "markdownHeading": {
- "dark": "yellow",
- "light": "#ff9800"
- },
- "markdownLink": {
- "dark": "blue",
- "light": "#0066cc"
- },
- "markdownLinkText": {
- "dark": "mint",
- "light": "#00acc1"
- },
- "markdownCode": {
- "dark": "green",
- "light": "#4caf50"
- },
- "markdownBlockQuote": {
- "dark": "foregroundMuted",
- "light": "#5c6b7d"
- },
- "markdownEmph": {
- "dark": "orange",
- "light": "#ff5722"
- },
- "markdownStrong": {
- "dark": "pink",
- "light": "#e91e63"
- },
- "markdownHorizontalRule": {
- "dark": "#2d5a7b",
- "light": "#d3dae3"
- },
- "markdownListItem": {
- "dark": "blue",
- "light": "#0066cc"
- },
- "markdownListEnumeration": {
- "dark": "mint",
- "light": "#00acc1"
- },
- "markdownImage": {
- "dark": "blue",
- "light": "#0066cc"
- },
- "markdownImageText": {
- "dark": "mint",
- "light": "#00acc1"
- },
- "markdownCodeBlock": {
- "dark": "foreground",
- "light": "#193549"
- },
- "syntaxComment": {
- "dark": "#0088ff",
- "light": "#5c6b7d"
- },
- "syntaxKeyword": {
- "dark": "orange",
- "light": "#ff5722"
- },
- "syntaxFunction": {
- "dark": "yellow",
- "light": "#ff9800"
- },
- "syntaxVariable": {
- "dark": "foreground",
- "light": "#193549"
- },
- "syntaxString": {
- "dark": "green",
- "light": "#4caf50"
- },
- "syntaxNumber": {
- "dark": "pink",
- "light": "#e91e63"
- },
- "syntaxType": {
- "dark": "mint",
- "light": "#00acc1"
- },
- "syntaxOperator": {
- "dark": "orange",
- "light": "#ff5722"
- },
- "syntaxPunctuation": {
- "dark": "foreground",
- "light": "#193549"
- }
- }
-}
diff --git a/packages/tui/internal/theme/themes/dracula.json b/packages/tui/internal/theme/themes/dracula.json
deleted file mode 100644
index c837a0b58..000000000
--- a/packages/tui/internal/theme/themes/dracula.json
+++ /dev/null
@@ -1,219 +0,0 @@
-{
- "$schema": "https://opencode.ai/theme.json",
- "defs": {
- "background": "#282a36",
- "currentLine": "#44475a",
- "selection": "#44475a",
- "foreground": "#f8f8f2",
- "comment": "#6272a4",
- "cyan": "#8be9fd",
- "green": "#50fa7b",
- "orange": "#ffb86c",
- "pink": "#ff79c6",
- "purple": "#bd93f9",
- "red": "#ff5555",
- "yellow": "#f1fa8c"
- },
- "theme": {
- "primary": {
- "dark": "purple",
- "light": "purple"
- },
- "secondary": {
- "dark": "pink",
- "light": "pink"
- },
- "accent": {
- "dark": "cyan",
- "light": "cyan"
- },
- "error": {
- "dark": "red",
- "light": "red"
- },
- "warning": {
- "dark": "yellow",
- "light": "yellow"
- },
- "success": {
- "dark": "green",
- "light": "green"
- },
- "info": {
- "dark": "orange",
- "light": "orange"
- },
- "text": {
- "dark": "foreground",
- "light": "#282a36"
- },
- "textMuted": {
- "dark": "comment",
- "light": "#6272a4"
- },
- "background": {
- "dark": "#282a36",
- "light": "#f8f8f2"
- },
- "backgroundPanel": {
- "dark": "#21222c",
- "light": "#e8e8e2"
- },
- "backgroundElement": {
- "dark": "currentLine",
- "light": "#d8d8d2"
- },
- "border": {
- "dark": "currentLine",
- "light": "#c8c8c2"
- },
- "borderActive": {
- "dark": "purple",
- "light": "purple"
- },
- "borderSubtle": {
- "dark": "#191a21",
- "light": "#e0e0e0"
- },
- "diffAdded": {
- "dark": "green",
- "light": "green"
- },
- "diffRemoved": {
- "dark": "red",
- "light": "red"
- },
- "diffContext": {
- "dark": "comment",
- "light": "#6272a4"
- },
- "diffHunkHeader": {
- "dark": "comment",
- "light": "#6272a4"
- },
- "diffHighlightAdded": {
- "dark": "green",
- "light": "green"
- },
- "diffHighlightRemoved": {
- "dark": "red",
- "light": "red"
- },
- "diffAddedBg": {
- "dark": "#1a3a1a",
- "light": "#e0ffe0"
- },
- "diffRemovedBg": {
- "dark": "#3a1a1a",
- "light": "#ffe0e0"
- },
- "diffContextBg": {
- "dark": "#21222c",
- "light": "#e8e8e2"
- },
- "diffLineNumber": {
- "dark": "currentLine",
- "light": "#c8c8c2"
- },
- "diffAddedLineNumberBg": {
- "dark": "#1a3a1a",
- "light": "#e0ffe0"
- },
- "diffRemovedLineNumberBg": {
- "dark": "#3a1a1a",
- "light": "#ffe0e0"
- },
- "markdownText": {
- "dark": "foreground",
- "light": "#282a36"
- },
- "markdownHeading": {
- "dark": "purple",
- "light": "purple"
- },
- "markdownLink": {
- "dark": "cyan",
- "light": "cyan"
- },
- "markdownLinkText": {
- "dark": "pink",
- "light": "pink"
- },
- "markdownCode": {
- "dark": "green",
- "light": "green"
- },
- "markdownBlockQuote": {
- "dark": "comment",
- "light": "#6272a4"
- },
- "markdownEmph": {
- "dark": "yellow",
- "light": "yellow"
- },
- "markdownStrong": {
- "dark": "orange",
- "light": "orange"
- },
- "markdownHorizontalRule": {
- "dark": "comment",
- "light": "#6272a4"
- },
- "markdownListItem": {
- "dark": "purple",
- "light": "purple"
- },
- "markdownListEnumeration": {
- "dark": "cyan",
- "light": "cyan"
- },
- "markdownImage": {
- "dark": "cyan",
- "light": "cyan"
- },
- "markdownImageText": {
- "dark": "pink",
- "light": "pink"
- },
- "markdownCodeBlock": {
- "dark": "foreground",
- "light": "#282a36"
- },
- "syntaxComment": {
- "dark": "comment",
- "light": "#6272a4"
- },
- "syntaxKeyword": {
- "dark": "pink",
- "light": "pink"
- },
- "syntaxFunction": {
- "dark": "green",
- "light": "green"
- },
- "syntaxVariable": {
- "dark": "foreground",
- "light": "#282a36"
- },
- "syntaxString": {
- "dark": "yellow",
- "light": "yellow"
- },
- "syntaxNumber": {
- "dark": "purple",
- "light": "purple"
- },
- "syntaxType": {
- "dark": "cyan",
- "light": "cyan"
- },
- "syntaxOperator": {
- "dark": "pink",
- "light": "pink"
- },
- "syntaxPunctuation": {
- "dark": "foreground",
- "light": "#282a36"
- }
- }
-}
diff --git a/packages/tui/internal/theme/themes/everforest.json b/packages/tui/internal/theme/themes/everforest.json
deleted file mode 100644
index 62dfb31ba..000000000
--- a/packages/tui/internal/theme/themes/everforest.json
+++ /dev/null
@@ -1,241 +0,0 @@
-{
- "$schema": "https://opencode.ai/theme.json",
- "defs": {
- "darkStep1": "#2d353b",
- "darkStep2": "#333c43",
- "darkStep3": "#343f44",
- "darkStep4": "#3d484d",
- "darkStep5": "#475258",
- "darkStep6": "#7a8478",
- "darkStep7": "#859289",
- "darkStep8": "#9da9a0",
- "darkStep9": "#a7c080",
- "darkStep10": "#83c092",
- "darkStep11": "#7a8478",
- "darkStep12": "#d3c6aa",
- "darkRed": "#e67e80",
- "darkOrange": "#e69875",
- "darkGreen": "#a7c080",
- "darkCyan": "#83c092",
- "darkYellow": "#dbbc7f",
- "lightStep1": "#fdf6e3",
- "lightStep2": "#efebd4",
- "lightStep3": "#f4f0d9",
- "lightStep4": "#efebd4",
- "lightStep5": "#e6e2cc",
- "lightStep6": "#a6b0a0",
- "lightStep7": "#939f91",
- "lightStep8": "#829181",
- "lightStep9": "#8da101",
- "lightStep10": "#35a77c",
- "lightStep11": "#a6b0a0",
- "lightStep12": "#5c6a72",
- "lightRed": "#f85552",
- "lightOrange": "#f57d26",
- "lightGreen": "#8da101",
- "lightCyan": "#35a77c",
- "lightYellow": "#dfa000"
- },
- "theme": {
- "primary": {
- "dark": "darkStep9",
- "light": "lightStep9"
- },
- "secondary": {
- "dark": "#7fbbb3",
- "light": "#3a94c5"
- },
- "accent": {
- "dark": "#d699b6",
- "light": "#df69ba"
- },
- "error": {
- "dark": "darkRed",
- "light": "lightRed"
- },
- "warning": {
- "dark": "darkOrange",
- "light": "lightOrange"
- },
- "success": {
- "dark": "darkGreen",
- "light": "lightGreen"
- },
- "info": {
- "dark": "darkCyan",
- "light": "lightCyan"
- },
- "text": {
- "dark": "darkStep12",
- "light": "lightStep12"
- },
- "textMuted": {
- "dark": "darkStep11",
- "light": "lightStep11"
- },
- "background": {
- "dark": "darkStep1",
- "light": "lightStep1"
- },
- "backgroundPanel": {
- "dark": "darkStep2",
- "light": "lightStep2"
- },
- "backgroundElement": {
- "dark": "darkStep3",
- "light": "lightStep3"
- },
- "border": {
- "dark": "darkStep7",
- "light": "lightStep7"
- },
- "borderActive": {
- "dark": "darkStep8",
- "light": "lightStep8"
- },
- "borderSubtle": {
- "dark": "darkStep6",
- "light": "lightStep6"
- },
- "diffAdded": {
- "dark": "#4fd6be",
- "light": "#1e725c"
- },
- "diffRemoved": {
- "dark": "#c53b53",
- "light": "#c53b53"
- },
- "diffContext": {
- "dark": "#828bb8",
- "light": "#7086b5"
- },
- "diffHunkHeader": {
- "dark": "#828bb8",
- "light": "#7086b5"
- },
- "diffHighlightAdded": {
- "dark": "#b8db87",
- "light": "#4db380"
- },
- "diffHighlightRemoved": {
- "dark": "#e26a75",
- "light": "#f52a65"
- },
- "diffAddedBg": {
- "dark": "#20303b",
- "light": "#d5e5d5"
- },
- "diffRemovedBg": {
- "dark": "#37222c",
- "light": "#f7d8db"
- },
- "diffContextBg": {
- "dark": "darkStep2",
- "light": "lightStep2"
- },
- "diffLineNumber": {
- "dark": "darkStep3",
- "light": "lightStep3"
- },
- "diffAddedLineNumberBg": {
- "dark": "#1b2b34",
- "light": "#c5d5c5"
- },
- "diffRemovedLineNumberBg": {
- "dark": "#2d1f26",
- "light": "#e7c8cb"
- },
- "markdownText": {
- "dark": "darkStep12",
- "light": "lightStep12"
- },
- "markdownHeading": {
- "dark": "#d699b6",
- "light": "#df69ba"
- },
- "markdownLink": {
- "dark": "darkStep9",
- "light": "lightStep9"
- },
- "markdownLinkText": {
- "dark": "darkCyan",
- "light": "lightCyan"
- },
- "markdownCode": {
- "dark": "darkGreen",
- "light": "lightGreen"
- },
- "markdownBlockQuote": {
- "dark": "darkYellow",
- "light": "lightYellow"
- },
- "markdownEmph": {
- "dark": "darkYellow",
- "light": "lightYellow"
- },
- "markdownStrong": {
- "dark": "darkOrange",
- "light": "lightOrange"
- },
- "markdownHorizontalRule": {
- "dark": "darkStep11",
- "light": "lightStep11"
- },
- "markdownListItem": {
- "dark": "darkStep9",
- "light": "lightStep9"
- },
- "markdownListEnumeration": {
- "dark": "darkCyan",
- "light": "lightCyan"
- },
- "markdownImage": {
- "dark": "darkStep9",
- "light": "lightStep9"
- },
- "markdownImageText": {
- "dark": "darkCyan",
- "light": "lightCyan"
- },
- "markdownCodeBlock": {
- "dark": "darkStep12",
- "light": "lightStep12"
- },
- "syntaxComment": {
- "dark": "darkStep11",
- "light": "lightStep11"
- },
- "syntaxKeyword": {
- "dark": "#d699b6",
- "light": "#df69ba"
- },
- "syntaxFunction": {
- "dark": "darkStep9",
- "light": "lightStep9"
- },
- "syntaxVariable": {
- "dark": "darkRed",
- "light": "lightRed"
- },
- "syntaxString": {
- "dark": "darkGreen",
- "light": "lightGreen"
- },
- "syntaxNumber": {
- "dark": "darkOrange",
- "light": "lightOrange"
- },
- "syntaxType": {
- "dark": "darkYellow",
- "light": "lightYellow"
- },
- "syntaxOperator": {
- "dark": "darkCyan",
- "light": "lightCyan"
- },
- "syntaxPunctuation": {
- "dark": "darkStep12",
- "light": "lightStep12"
- }
- }
-}
diff --git a/packages/tui/internal/theme/themes/github.json b/packages/tui/internal/theme/themes/github.json
deleted file mode 100644
index 99a80879e..000000000
--- a/packages/tui/internal/theme/themes/github.json
+++ /dev/null
@@ -1,233 +0,0 @@
-{
- "$schema": "https://opencode.ai/theme.json",
- "defs": {
- "darkBg": "#0d1117",
- "darkBgAlt": "#010409",
- "darkBgPanel": "#161b22",
- "darkFg": "#c9d1d9",
- "darkFgMuted": "#8b949e",
- "darkBlue": "#58a6ff",
- "darkGreen": "#3fb950",
- "darkRed": "#f85149",
- "darkOrange": "#d29922",
- "darkPurple": "#bc8cff",
- "darkPink": "#ff7b72",
- "darkYellow": "#e3b341",
- "darkCyan": "#39c5cf",
- "lightBg": "#ffffff",
- "lightBgAlt": "#f6f8fa",
- "lightBgPanel": "#f0f3f6",
- "lightFg": "#24292f",
- "lightFgMuted": "#57606a",
- "lightBlue": "#0969da",
- "lightGreen": "#1a7f37",
- "lightRed": "#cf222e",
- "lightOrange": "#bc4c00",
- "lightPurple": "#8250df",
- "lightPink": "#bf3989",
- "lightYellow": "#9a6700",
- "lightCyan": "#1b7c83"
- },
- "theme": {
- "primary": {
- "dark": "darkBlue",
- "light": "lightBlue"
- },
- "secondary": {
- "dark": "darkPurple",
- "light": "lightPurple"
- },
- "accent": {
- "dark": "darkCyan",
- "light": "lightCyan"
- },
- "error": {
- "dark": "darkRed",
- "light": "lightRed"
- },
- "warning": {
- "dark": "darkYellow",
- "light": "lightYellow"
- },
- "success": {
- "dark": "darkGreen",
- "light": "lightGreen"
- },
- "info": {
- "dark": "darkOrange",
- "light": "lightOrange"
- },
- "text": {
- "dark": "darkFg",
- "light": "lightFg"
- },
- "textMuted": {
- "dark": "darkFgMuted",
- "light": "lightFgMuted"
- },
- "background": {
- "dark": "darkBg",
- "light": "lightBg"
- },
- "backgroundPanel": {
- "dark": "darkBgAlt",
- "light": "lightBgAlt"
- },
- "backgroundElement": {
- "dark": "darkBgPanel",
- "light": "lightBgPanel"
- },
- "border": {
- "dark": "#30363d",
- "light": "#d0d7de"
- },
- "borderActive": {
- "dark": "darkBlue",
- "light": "lightBlue"
- },
- "borderSubtle": {
- "dark": "#21262d",
- "light": "#d8dee4"
- },
- "diffAdded": {
- "dark": "darkGreen",
- "light": "lightGreen"
- },
- "diffRemoved": {
- "dark": "darkRed",
- "light": "lightRed"
- },
- "diffContext": {
- "dark": "darkFgMuted",
- "light": "lightFgMuted"
- },
- "diffHunkHeader": {
- "dark": "darkBlue",
- "light": "lightBlue"
- },
- "diffHighlightAdded": {
- "dark": "#3fb950",
- "light": "#1a7f37"
- },
- "diffHighlightRemoved": {
- "dark": "#f85149",
- "light": "#cf222e"
- },
- "diffAddedBg": {
- "dark": "#033a16",
- "light": "#dafbe1"
- },
- "diffRemovedBg": {
- "dark": "#67060c",
- "light": "#ffebe9"
- },
- "diffContextBg": {
- "dark": "darkBgAlt",
- "light": "lightBgAlt"
- },
- "diffLineNumber": {
- "dark": "#484f58",
- "light": "#afb8c1"
- },
- "diffAddedLineNumberBg": {
- "dark": "#033a16",
- "light": "#dafbe1"
- },
- "diffRemovedLineNumberBg": {
- "dark": "#67060c",
- "light": "#ffebe9"
- },
- "markdownText": {
- "dark": "darkFg",
- "light": "lightFg"
- },
- "markdownHeading": {
- "dark": "darkBlue",
- "light": "lightBlue"
- },
- "markdownLink": {
- "dark": "darkBlue",
- "light": "lightBlue"
- },
- "markdownLinkText": {
- "dark": "darkCyan",
- "light": "lightCyan"
- },
- "markdownCode": {
- "dark": "darkPink",
- "light": "lightPink"
- },
- "markdownBlockQuote": {
- "dark": "darkFgMuted",
- "light": "lightFgMuted"
- },
- "markdownEmph": {
- "dark": "darkYellow",
- "light": "lightYellow"
- },
- "markdownStrong": {
- "dark": "darkOrange",
- "light": "lightOrange"
- },
- "markdownHorizontalRule": {
- "dark": "#30363d",
- "light": "#d0d7de"
- },
- "markdownListItem": {
- "dark": "darkBlue",
- "light": "lightBlue"
- },
- "markdownListEnumeration": {
- "dark": "darkCyan",
- "light": "lightCyan"
- },
- "markdownImage": {
- "dark": "darkBlue",
- "light": "lightBlue"
- },
- "markdownImageText": {
- "dark": "darkCyan",
- "light": "lightCyan"
- },
- "markdownCodeBlock": {
- "dark": "darkFg",
- "light": "lightFg"
- },
- "syntaxComment": {
- "dark": "darkFgMuted",
- "light": "lightFgMuted"
- },
- "syntaxKeyword": {
- "dark": "darkPink",
- "light": "lightRed"
- },
- "syntaxFunction": {
- "dark": "darkPurple",
- "light": "lightPurple"
- },
- "syntaxVariable": {
- "dark": "darkOrange",
- "light": "lightOrange"
- },
- "syntaxString": {
- "dark": "darkCyan",
- "light": "lightBlue"
- },
- "syntaxNumber": {
- "dark": "darkBlue",
- "light": "lightCyan"
- },
- "syntaxType": {
- "dark": "darkOrange",
- "light": "lightOrange"
- },
- "syntaxOperator": {
- "dark": "darkPink",
- "light": "lightRed"
- },
- "syntaxPunctuation": {
- "dark": "darkFg",
- "light": "lightFg"
- }
- }
-}
diff --git a/packages/tui/internal/theme/themes/gruvbox.json b/packages/tui/internal/theme/themes/gruvbox.json
deleted file mode 100644
index c3101b565..000000000
--- a/packages/tui/internal/theme/themes/gruvbox.json
+++ /dev/null
@@ -1,95 +0,0 @@
-{
- "$schema": "https://opencode.ai/theme.json",
- "defs": {
- "darkBg0": "#282828",
- "darkBg1": "#3c3836",
- "darkBg2": "#504945",
- "darkBg3": "#665c54",
- "darkFg0": "#fbf1c7",
- "darkFg1": "#ebdbb2",
- "darkGray": "#928374",
- "darkRed": "#cc241d",
- "darkGreen": "#98971a",
- "darkYellow": "#d79921",
- "darkBlue": "#458588",
- "darkPurple": "#b16286",
- "darkAqua": "#689d6a",
- "darkOrange": "#d65d0e",
- "darkRedBright": "#fb4934",
- "darkGreenBright": "#b8bb26",
- "darkYellowBright": "#fabd2f",
- "darkBlueBright": "#83a598",
- "darkPurpleBright": "#d3869b",
- "darkAquaBright": "#8ec07c",
- "darkOrangeBright": "#fe8019",
- "lightBg0": "#fbf1c7",
- "lightBg1": "#ebdbb2",
- "lightBg2": "#d5c4a1",
- "lightBg3": "#bdae93",
- "lightFg0": "#282828",
- "lightFg1": "#3c3836",
- "lightGray": "#7c6f64",
- "lightRed": "#9d0006",
- "lightGreen": "#79740e",
- "lightYellow": "#b57614",
- "lightBlue": "#076678",
- "lightPurple": "#8f3f71",
- "lightAqua": "#427b58",
- "lightOrange": "#af3a03"
- },
- "theme": {
- "primary": { "dark": "darkBlueBright", "light": "lightBlue" },
- "secondary": { "dark": "darkPurpleBright", "light": "lightPurple" },
- "accent": { "dark": "darkAquaBright", "light": "lightAqua" },
- "error": { "dark": "darkRedBright", "light": "lightRed" },
- "warning": { "dark": "darkOrangeBright", "light": "lightOrange" },
- "success": { "dark": "darkGreenBright", "light": "lightGreen" },
- "info": { "dark": "darkYellowBright", "light": "lightYellow" },
- "text": { "dark": "darkFg1", "light": "lightFg1" },
- "textMuted": { "dark": "darkGray", "light": "lightGray" },
- "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": "#e2e0b5" },
- "diffRemovedBg": { "dark": "#322929", "light": "#e9d8d5" },
- "diffContextBg": { "dark": "darkBg1", "light": "lightBg1" },
- "diffLineNumber": { "dark": "darkBg3", "light": "lightBg3" },
- "diffAddedLineNumberBg": { "dark": "#2a2827", "light": "#d4d2a9" },
- "diffRemovedLineNumberBg": { "dark": "#2a2222", "light": "#d8cbc8" },
- "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": {
- "dark": "darkAquaBright",
- "light": "lightAqua"
- },
- "markdownImage": { "dark": "darkAquaBright", "light": "lightAqua" },
- "markdownImageText": { "dark": "darkGreenBright", "light": "lightGreen" },
- "markdownCodeBlock": { "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" }
- }
-}
diff --git a/packages/tui/internal/theme/themes/kanagawa.json b/packages/tui/internal/theme/themes/kanagawa.json
deleted file mode 100644
index 91a784014..000000000
--- a/packages/tui/internal/theme/themes/kanagawa.json
+++ /dev/null
@@ -1,77 +0,0 @@
-{
- "$schema": "https://opencode.ai/theme.json",
- "defs": {
- "sumiInk0": "#1F1F28",
- "sumiInk1": "#2A2A37",
- "sumiInk2": "#363646",
- "sumiInk3": "#54546D",
- "fujiWhite": "#DCD7BA",
- "oldWhite": "#C8C093",
- "fujiGray": "#727169",
- "oniViolet": "#957FB8",
- "crystalBlue": "#7E9CD8",
- "carpYellow": "#C38D9D",
- "sakuraPink": "#D27E99",
- "waveAqua": "#76946A",
- "roninYellow": "#D7A657",
- "dragonRed": "#E82424",
- "lotusGreen": "#98BB6C",
- "waveBlue": "#2D4F67",
- "lightBg": "#F2E9DE",
- "lightPaper": "#EAE4D7",
- "lightText": "#54433A",
- "lightGray": "#9E9389"
- },
- "theme": {
- "primary": { "dark": "crystalBlue", "light": "waveBlue" },
- "secondary": { "dark": "oniViolet", "light": "oniViolet" },
- "accent": { "dark": "sakuraPink", "light": "sakuraPink" },
- "error": { "dark": "dragonRed", "light": "dragonRed" },
- "warning": { "dark": "roninYellow", "light": "roninYellow" },
- "success": { "dark": "lotusGreen", "light": "lotusGreen" },
- "info": { "dark": "waveAqua", "light": "waveAqua" },
- "text": { "dark": "fujiWhite", "light": "lightText" },
- "textMuted": { "dark": "fujiGray", "light": "lightGray" },
- "background": { "dark": "sumiInk0", "light": "lightBg" },
- "backgroundPanel": { "dark": "sumiInk1", "light": "lightPaper" },
- "backgroundElement": { "dark": "sumiInk2", "light": "#E3DCD2" },
- "border": { "dark": "sumiInk3", "light": "#D4CBBF" },
- "borderActive": { "dark": "carpYellow", "light": "carpYellow" },
- "borderSubtle": { "dark": "sumiInk2", "light": "#DCD4C9" },
- "diffAdded": { "dark": "lotusGreen", "light": "lotusGreen" },
- "diffRemoved": { "dark": "dragonRed", "light": "dragonRed" },
- "diffContext": { "dark": "fujiGray", "light": "lightGray" },
- "diffHunkHeader": { "dark": "waveBlue", "light": "waveBlue" },
- "diffHighlightAdded": { "dark": "#A9D977", "light": "#89AF5B" },
- "diffHighlightRemoved": { "dark": "#F24A4A", "light": "#D61F1F" },
- "diffAddedBg": { "dark": "#252E25", "light": "#EAF3E4" },
- "diffRemovedBg": { "dark": "#362020", "light": "#FBE6E6" },
- "diffContextBg": { "dark": "sumiInk1", "light": "lightPaper" },
- "diffLineNumber": { "dark": "sumiInk3", "light": "#C7BEB4" },
- "diffAddedLineNumberBg": { "dark": "#202820", "light": "#DDE8D6" },
- "diffRemovedLineNumberBg": { "dark": "#2D1C1C", "light": "#F2DADA" },
- "markdownText": { "dark": "fujiWhite", "light": "lightText" },
- "markdownHeading": { "dark": "oniViolet", "light": "oniViolet" },
- "markdownLink": { "dark": "crystalBlue", "light": "waveBlue" },
- "markdownLinkText": { "dark": "waveAqua", "light": "waveAqua" },
- "markdownCode": { "dark": "lotusGreen", "light": "lotusGreen" },
- "markdownBlockQuote": { "dark": "fujiGray", "light": "lightGray" },
- "markdownEmph": { "dark": "carpYellow", "light": "carpYellow" },
- "markdownStrong": { "dark": "roninYellow", "light": "roninYellow" },
- "markdownHorizontalRule": { "dark": "fujiGray", "light": "lightGray" },
- "markdownListItem": { "dark": "crystalBlue", "light": "waveBlue" },
- "markdownListEnumeration": { "dark": "waveAqua", "light": "waveAqua" },
- "markdownImage": { "dark": "crystalBlue", "light": "waveBlue" },
- "markdownImageText": { "dark": "waveAqua", "light": "waveAqua" },
- "markdownCodeBlock": { "dark": "fujiWhite", "light": "lightText" },
- "syntaxComment": { "dark": "fujiGray", "light": "lightGray" },
- "syntaxKeyword": { "dark": "oniViolet", "light": "oniViolet" },
- "syntaxFunction": { "dark": "crystalBlue", "light": "waveBlue" },
- "syntaxVariable": { "dark": "fujiWhite", "light": "lightText" },
- "syntaxString": { "dark": "lotusGreen", "light": "lotusGreen" },
- "syntaxNumber": { "dark": "roninYellow", "light": "roninYellow" },
- "syntaxType": { "dark": "carpYellow", "light": "carpYellow" },
- "syntaxOperator": { "dark": "sakuraPink", "light": "sakuraPink" },
- "syntaxPunctuation": { "dark": "fujiWhite", "light": "lightText" }
- }
-}
diff --git a/packages/tui/internal/theme/themes/material.json b/packages/tui/internal/theme/themes/material.json
deleted file mode 100644
index c3a106808..000000000
--- a/packages/tui/internal/theme/themes/material.json
+++ /dev/null
@@ -1,235 +0,0 @@
-{
- "$schema": "https://opencode.ai/theme.json",
- "defs": {
- "darkBg": "#263238",
- "darkBgAlt": "#1e272c",
- "darkBgPanel": "#37474f",
- "darkFg": "#eeffff",
- "darkFgMuted": "#546e7a",
- "darkRed": "#f07178",
- "darkPink": "#f78c6c",
- "darkOrange": "#ffcb6b",
- "darkYellow": "#ffcb6b",
- "darkGreen": "#c3e88d",
- "darkCyan": "#89ddff",
- "darkBlue": "#82aaff",
- "darkPurple": "#c792ea",
- "darkViolet": "#bb80b3",
- "lightBg": "#fafafa",
- "lightBgAlt": "#f5f5f5",
- "lightBgPanel": "#e7e7e8",
- "lightFg": "#263238",
- "lightFgMuted": "#90a4ae",
- "lightRed": "#e53935",
- "lightPink": "#ec407a",
- "lightOrange": "#f4511e",
- "lightYellow": "#ffb300",
- "lightGreen": "#91b859",
- "lightCyan": "#39adb5",
- "lightBlue": "#6182b8",
- "lightPurple": "#7c4dff",
- "lightViolet": "#945eb8"
- },
- "theme": {
- "primary": {
- "dark": "darkBlue",
- "light": "lightBlue"
- },
- "secondary": {
- "dark": "darkPurple",
- "light": "lightPurple"
- },
- "accent": {
- "dark": "darkCyan",
- "light": "lightCyan"
- },
- "error": {
- "dark": "darkRed",
- "light": "lightRed"
- },
- "warning": {
- "dark": "darkYellow",
- "light": "lightYellow"
- },
- "success": {
- "dark": "darkGreen",
- "light": "lightGreen"
- },
- "info": {
- "dark": "darkOrange",
- "light": "lightOrange"
- },
- "text": {
- "dark": "darkFg",
- "light": "lightFg"
- },
- "textMuted": {
- "dark": "darkFgMuted",
- "light": "lightFgMuted"
- },
- "background": {
- "dark": "darkBg",
- "light": "lightBg"
- },
- "backgroundPanel": {
- "dark": "darkBgAlt",
- "light": "lightBgAlt"
- },
- "backgroundElement": {
- "dark": "darkBgPanel",
- "light": "lightBgPanel"
- },
- "border": {
- "dark": "#37474f",
- "light": "#e0e0e0"
- },
- "borderActive": {
- "dark": "darkBlue",
- "light": "lightBlue"
- },
- "borderSubtle": {
- "dark": "#1e272c",
- "light": "#eeeeee"
- },
- "diffAdded": {
- "dark": "darkGreen",
- "light": "lightGreen"
- },
- "diffRemoved": {
- "dark": "darkRed",
- "light": "lightRed"
- },
- "diffContext": {
- "dark": "darkFgMuted",
- "light": "lightFgMuted"
- },
- "diffHunkHeader": {
- "dark": "darkCyan",
- "light": "lightCyan"
- },
- "diffHighlightAdded": {
- "dark": "darkGreen",
- "light": "lightGreen"
- },
- "diffHighlightRemoved": {
- "dark": "darkRed",
- "light": "lightRed"
- },
- "diffAddedBg": {
- "dark": "#2e3c2b",
- "light": "#e8f5e9"
- },
- "diffRemovedBg": {
- "dark": "#3c2b2b",
- "light": "#ffebee"
- },
- "diffContextBg": {
- "dark": "darkBgAlt",
- "light": "lightBgAlt"
- },
- "diffLineNumber": {
- "dark": "#37474f",
- "light": "#cfd8dc"
- },
- "diffAddedLineNumberBg": {
- "dark": "#2e3c2b",
- "light": "#e8f5e9"
- },
- "diffRemovedLineNumberBg": {
- "dark": "#3c2b2b",
- "light": "#ffebee"
- },
- "markdownText": {
- "dark": "darkFg",
- "light": "lightFg"
- },
- "markdownHeading": {
- "dark": "darkBlue",
- "light": "lightBlue"
- },
- "markdownLink": {
- "dark": "darkCyan",
- "light": "lightCyan"
- },
- "markdownLinkText": {
- "dark": "darkPurple",
- "light": "lightPurple"
- },
- "markdownCode": {
- "dark": "darkGreen",
- "light": "lightGreen"
- },
- "markdownBlockQuote": {
- "dark": "darkFgMuted",
- "light": "lightFgMuted"
- },
- "markdownEmph": {
- "dark": "darkYellow",
- "light": "lightYellow"
- },
- "markdownStrong": {
- "dark": "darkOrange",
- "light": "lightOrange"
- },
- "markdownHorizontalRule": {
- "dark": "#37474f",
- "light": "#e0e0e0"
- },
- "markdownListItem": {
- "dark": "darkBlue",
- "light": "lightBlue"
- },
- "markdownListEnumeration": {
- "dark": "darkCyan",
- "light": "lightCyan"
- },
- "markdownImage": {
- "dark": "darkCyan",
- "light": "lightCyan"
- },
- "markdownImageText": {
- "dark": "darkPurple",
- "light": "lightPurple"
- },
- "markdownCodeBlock": {
- "dark": "darkFg",
- "light": "lightFg"
- },
- "syntaxComment": {
- "dark": "darkFgMuted",
- "light": "lightFgMuted"
- },
- "syntaxKeyword": {
- "dark": "darkPurple",
- "light": "lightPurple"
- },
- "syntaxFunction": {
- "dark": "darkBlue",
- "light": "lightBlue"
- },
- "syntaxVariable": {
- "dark": "darkFg",
- "light": "lightFg"
- },
- "syntaxString": {
- "dark": "darkGreen",
- "light": "lightGreen"
- },
- "syntaxNumber": {
- "dark": "darkOrange",
- "light": "lightOrange"
- },
- "syntaxType": {
- "dark": "darkYellow",
- "light": "lightYellow"
- },
- "syntaxOperator": {
- "dark": "darkCyan",
- "light": "lightCyan"
- },
- "syntaxPunctuation": {
- "dark": "darkFg",
- "light": "lightFg"
- }
- }
-}
diff --git a/packages/tui/internal/theme/themes/matrix.json b/packages/tui/internal/theme/themes/matrix.json
deleted file mode 100644
index 354946284..000000000
--- a/packages/tui/internal/theme/themes/matrix.json
+++ /dev/null
@@ -1,77 +0,0 @@
-{
- "$schema": "https://opencode.ai/theme.json",
- "defs": {
- "matrixInk0": "#0a0e0a",
- "matrixInk1": "#0e130d",
- "matrixInk2": "#141c12",
- "matrixInk3": "#1e2a1b",
- "rainGreen": "#2eff6a",
- "rainGreenDim": "#1cc24b",
- "rainGreenHi": "#62ff94",
- "rainCyan": "#00efff",
- "rainTeal": "#24f6d9",
- "rainPurple": "#c770ff",
- "rainOrange": "#ffa83d",
- "alertRed": "#ff4b4b",
- "alertYellow": "#e6ff57",
- "alertBlue": "#30b3ff",
- "rainGray": "#8ca391",
- "lightBg": "#eef3ea",
- "lightPaper": "#e4ebe1",
- "lightInk1": "#dae1d7",
- "lightText": "#203022",
- "lightGray": "#748476"
- },
- "theme": {
- "primary": { "dark": "rainGreen", "light": "rainGreenDim" },
- "secondary": { "dark": "rainCyan", "light": "rainTeal" },
- "accent": { "dark": "rainPurple", "light": "rainPurple" },
- "error": { "dark": "alertRed", "light": "alertRed" },
- "warning": { "dark": "alertYellow", "light": "alertYellow" },
- "success": { "dark": "rainGreenHi", "light": "rainGreenDim" },
- "info": { "dark": "alertBlue", "light": "alertBlue" },
- "text": { "dark": "rainGreenHi", "light": "lightText" },
- "textMuted": { "dark": "rainGray", "light": "lightGray" },
- "background": { "dark": "matrixInk0", "light": "lightBg" },
- "backgroundPanel": { "dark": "matrixInk1", "light": "lightPaper" },
- "backgroundElement": { "dark": "matrixInk2", "light": "lightInk1" },
- "border": { "dark": "matrixInk3", "light": "lightGray" },
- "borderActive": { "dark": "rainGreen", "light": "rainGreenDim" },
- "borderSubtle": { "dark": "matrixInk2", "light": "lightInk1" },
- "diffAdded": { "dark": "rainGreenDim", "light": "rainGreenDim" },
- "diffRemoved": { "dark": "alertRed", "light": "alertRed" },
- "diffContext": { "dark": "rainGray", "light": "lightGray" },
- "diffHunkHeader": { "dark": "alertBlue", "light": "alertBlue" },
- "diffHighlightAdded": { "dark": "#77ffaf", "light": "#5dac7e" },
- "diffHighlightRemoved": { "dark": "#ff7171", "light": "#d53a3a" },
- "diffAddedBg": { "dark": "#132616", "light": "#e0efde" },
- "diffRemovedBg": { "dark": "#261212", "light": "#f9e5e5" },
- "diffContextBg": { "dark": "matrixInk1", "light": "lightPaper" },
- "diffLineNumber": { "dark": "matrixInk3", "light": "lightGray" },
- "diffAddedLineNumberBg": { "dark": "#0f1b11", "light": "#d6e7d2" },
- "diffRemovedLineNumberBg": { "dark": "#1b1414", "light": "#f2d2d2" },
- "markdownText": { "dark": "rainGreenHi", "light": "lightText" },
- "markdownHeading": { "dark": "rainCyan", "light": "rainTeal" },
- "markdownLink": { "dark": "alertBlue", "light": "alertBlue" },
- "markdownLinkText": { "dark": "rainTeal", "light": "rainTeal" },
- "markdownCode": { "dark": "rainGreenDim", "light": "rainGreenDim" },
- "markdownBlockQuote": { "dark": "rainGray", "light": "lightGray" },
- "markdownEmph": { "dark": "rainOrange", "light": "rainOrange" },
- "markdownStrong": { "dark": "alertYellow", "light": "alertYellow" },
- "markdownHorizontalRule": { "dark": "rainGray", "light": "lightGray" },
- "markdownListItem": { "dark": "alertBlue", "light": "alertBlue" },
- "markdownListEnumeration": { "dark": "rainTeal", "light": "rainTeal" },
- "markdownImage": { "dark": "alertBlue", "light": "alertBlue" },
- "markdownImageText": { "dark": "rainTeal", "light": "rainTeal" },
- "markdownCodeBlock": { "dark": "rainGreenHi", "light": "lightText" },
- "syntaxComment": { "dark": "rainGray", "light": "lightGray" },
- "syntaxKeyword": { "dark": "rainPurple", "light": "rainPurple" },
- "syntaxFunction": { "dark": "alertBlue", "light": "alertBlue" },
- "syntaxVariable": { "dark": "rainGreenHi", "light": "lightText" },
- "syntaxString": { "dark": "rainGreenDim", "light": "rainGreenDim" },
- "syntaxNumber": { "dark": "rainOrange", "light": "rainOrange" },
- "syntaxType": { "dark": "alertYellow", "light": "alertYellow" },
- "syntaxOperator": { "dark": "rainTeal", "light": "rainTeal" },
- "syntaxPunctuation": { "dark": "rainGreenHi", "light": "lightText" }
- }
-}
diff --git a/packages/tui/internal/theme/themes/mellow.json b/packages/tui/internal/theme/themes/mellow.json
deleted file mode 100644
index f2a00a47f..000000000
--- a/packages/tui/internal/theme/themes/mellow.json
+++ /dev/null
@@ -1,87 +0,0 @@
-{
- "$schema": "https://opencode.ai/theme.json",
- "defs": {
- "dark_bg": "#161617",
- "dark_fg": "#c9c7cd",
- "dark_bg_dark": "#131314",
-
- "dark_black": "#27272a",
- "dark_red": "#f5a191",
- "dark_green": "#90b99f",
- "dark_yellow": "#e6b99d",
- "dark_blue": "#aca1cf",
- "dark_magenta": "#e29eca",
- "dark_cyan": "#ea83a5",
- "dark_white": "#c1c0d4",
-
- "dark_bright_black": "#353539",
- "dark_bright_red": "#ffae9f",
- "dark_bright_green": "#9dc6ac",
- "dark_bright_yellow": "#f0c5a9",
- "dark_bright_blue": "#b9aeda",
- "dark_bright_magenta": "#ecaad6",
- "dark_bright_cyan": "#f591b2",
- "dark_bright_white": "#cac9dd",
-
- "dark_gray00": "#18181a",
- "dark_gray01": "#1b1b1d",
- "dark_gray02": "#2a2a2d",
- "dark_gray03": "#3e3e43",
- "dark_gray04": "#57575f",
- "dark_gray05": "#757581",
- "dark_gray06": "#9998a8",
- "dark_gray07": "#c1c0d4"
- },
- "theme": {
- "primary": "dark_cyan",
- "secondary": "dark_cyan",
- "accent": "dark_blue",
- "error": "dark_cyan",
- "warning": "dark_yellow",
- "success": "dark_green",
- "info": "dark_blue",
- "text": "dark_fg",
- "textMuted": "dark_white",
- "background": "dark_bg",
- "backgroundPanel": "dark_gray01",
- "backgroundElement": "dark_gray02",
- "border": "dark_gray02",
- "borderActive": "dark_gray01",
- "borderSubtle": "dark_gray00",
- "diffAdded": "dark_black",
- "diffRemoved": "dark_black",
- "diffContext": "dark_fg",
- "diffHunkHeader": "dark_magenta",
- "diffHighlightAdded": "dark_bright_green",
- "diffHighlightRemoved": "dark_bright_red",
- "diffAddedBg": "dark_green",
- "diffRemovedBg": "dark_red",
- "diffContextBg": "dark_gray00",
- "diffLineNumber": "diffContextBg",
- "diffAddedLineNumberBg": "dark_green",
- "diffRemovedLineNumberBg": "dark_red",
- "markdownText": "dark_fg",
- "markdownHeading": "dark_gray06",
- "markdownLink": "dark_blue",
- "markdownLinkText": "dark_cyan",
- "markdownCode": "dark_bright_green",
- "markdownBlockQuote": "dark_gray00",
- "markdownEmph": "dark_bright_yellow",
- "markdownStrong": "dark_bright_red",
- "markdownHorizontalRule": "markdownText",
- "markdownListItem": "dark_blue",
- "markdownListEnumeration": "dark_bright_blue",
- "markdownImage": "markdownLink",
- "markdownImageText": "markdownLinkText",
- "markdownCodeBlock": "dark_fg",
- "syntaxComment": "dark_gray05",
- "syntaxKeyword": "dark_blue",
- "syntaxFunction": "dark_gray07",
- "syntaxVariable": "dark_fg",
- "syntaxString": "dark_green",
- "syntaxNumber": "dark_magenta",
- "syntaxType": "dark_magenta",
- "syntaxOperator": "dark_yellow",
- "syntaxPunctuation": "dark_gray06"
- }
-}
diff --git a/packages/tui/internal/theme/themes/monokai.json b/packages/tui/internal/theme/themes/monokai.json
deleted file mode 100644
index 09637a1e2..000000000
--- a/packages/tui/internal/theme/themes/monokai.json
+++ /dev/null
@@ -1,221 +0,0 @@
-{
- "$schema": "https://opencode.ai/theme.json",
- "defs": {
- "background": "#272822",
- "backgroundAlt": "#1e1f1c",
- "backgroundPanel": "#3e3d32",
- "foreground": "#f8f8f2",
- "comment": "#75715e",
- "red": "#f92672",
- "orange": "#fd971f",
- "lightOrange": "#e69f66",
- "yellow": "#e6db74",
- "green": "#a6e22e",
- "cyan": "#66d9ef",
- "blue": "#66d9ef",
- "purple": "#ae81ff",
- "pink": "#f92672"
- },
- "theme": {
- "primary": {
- "dark": "cyan",
- "light": "blue"
- },
- "secondary": {
- "dark": "purple",
- "light": "purple"
- },
- "accent": {
- "dark": "green",
- "light": "green"
- },
- "error": {
- "dark": "red",
- "light": "red"
- },
- "warning": {
- "dark": "yellow",
- "light": "orange"
- },
- "success": {
- "dark": "green",
- "light": "green"
- },
- "info": {
- "dark": "orange",
- "light": "orange"
- },
- "text": {
- "dark": "foreground",
- "light": "#272822"
- },
- "textMuted": {
- "dark": "comment",
- "light": "#75715e"
- },
- "background": {
- "dark": "#272822",
- "light": "#fafafa"
- },
- "backgroundPanel": {
- "dark": "#1e1f1c",
- "light": "#f0f0f0"
- },
- "backgroundElement": {
- "dark": "#3e3d32",
- "light": "#e0e0e0"
- },
- "border": {
- "dark": "#3e3d32",
- "light": "#d0d0d0"
- },
- "borderActive": {
- "dark": "cyan",
- "light": "blue"
- },
- "borderSubtle": {
- "dark": "#1e1f1c",
- "light": "#e8e8e8"
- },
- "diffAdded": {
- "dark": "green",
- "light": "green"
- },
- "diffRemoved": {
- "dark": "red",
- "light": "red"
- },
- "diffContext": {
- "dark": "comment",
- "light": "#75715e"
- },
- "diffHunkHeader": {
- "dark": "comment",
- "light": "#75715e"
- },
- "diffHighlightAdded": {
- "dark": "green",
- "light": "green"
- },
- "diffHighlightRemoved": {
- "dark": "red",
- "light": "red"
- },
- "diffAddedBg": {
- "dark": "#1a3a1a",
- "light": "#e0ffe0"
- },
- "diffRemovedBg": {
- "dark": "#3a1a1a",
- "light": "#ffe0e0"
- },
- "diffContextBg": {
- "dark": "#1e1f1c",
- "light": "#f0f0f0"
- },
- "diffLineNumber": {
- "dark": "#3e3d32",
- "light": "#d0d0d0"
- },
- "diffAddedLineNumberBg": {
- "dark": "#1a3a1a",
- "light": "#e0ffe0"
- },
- "diffRemovedLineNumberBg": {
- "dark": "#3a1a1a",
- "light": "#ffe0e0"
- },
- "markdownText": {
- "dark": "foreground",
- "light": "#272822"
- },
- "markdownHeading": {
- "dark": "pink",
- "light": "pink"
- },
- "markdownLink": {
- "dark": "cyan",
- "light": "blue"
- },
- "markdownLinkText": {
- "dark": "purple",
- "light": "purple"
- },
- "markdownCode": {
- "dark": "green",
- "light": "green"
- },
- "markdownBlockQuote": {
- "dark": "comment",
- "light": "#75715e"
- },
- "markdownEmph": {
- "dark": "yellow",
- "light": "orange"
- },
- "markdownStrong": {
- "dark": "orange",
- "light": "orange"
- },
- "markdownHorizontalRule": {
- "dark": "comment",
- "light": "#75715e"
- },
- "markdownListItem": {
- "dark": "cyan",
- "light": "blue"
- },
- "markdownListEnumeration": {
- "dark": "purple",
- "light": "purple"
- },
- "markdownImage": {
- "dark": "cyan",
- "light": "blue"
- },
- "markdownImageText": {
- "dark": "purple",
- "light": "purple"
- },
- "markdownCodeBlock": {
- "dark": "foreground",
- "light": "#272822"
- },
- "syntaxComment": {
- "dark": "comment",
- "light": "#75715e"
- },
- "syntaxKeyword": {
- "dark": "pink",
- "light": "pink"
- },
- "syntaxFunction": {
- "dark": "green",
- "light": "green"
- },
- "syntaxVariable": {
- "dark": "foreground",
- "light": "#272822"
- },
- "syntaxString": {
- "dark": "yellow",
- "light": "orange"
- },
- "syntaxNumber": {
- "dark": "purple",
- "light": "purple"
- },
- "syntaxType": {
- "dark": "cyan",
- "light": "blue"
- },
- "syntaxOperator": {
- "dark": "pink",
- "light": "pink"
- },
- "syntaxPunctuation": {
- "dark": "foreground",
- "light": "#272822"
- }
- }
-}
diff --git a/packages/tui/internal/theme/themes/nightowl.json b/packages/tui/internal/theme/themes/nightowl.json
deleted file mode 100644
index 8eff42c5f..000000000
--- a/packages/tui/internal/theme/themes/nightowl.json
+++ /dev/null
@@ -1,221 +0,0 @@
-{
- "$schema": "https://opencode.ai/theme.json",
- "defs": {
- "nightOwlBg": "#011627",
- "nightOwlFg": "#d6deeb",
- "nightOwlBlue": "#82AAFF",
- "nightOwlCyan": "#7fdbca",
- "nightOwlGreen": "#c5e478",
- "nightOwlYellow": "#ecc48d",
- "nightOwlOrange": "#F78C6C",
- "nightOwlRed": "#EF5350",
- "nightOwlPink": "#ff5874",
- "nightOwlPurple": "#c792ea",
- "nightOwlMuted": "#5f7e97",
- "nightOwlGray": "#637777",
- "nightOwlLightGray": "#89a4bb",
- "nightOwlPanel": "#0b253a"
- },
- "theme": {
- "primary": {
- "dark": "nightOwlBlue",
- "light": "nightOwlBlue"
- },
- "secondary": {
- "dark": "nightOwlCyan",
- "light": "nightOwlCyan"
- },
- "accent": {
- "dark": "nightOwlPurple",
- "light": "nightOwlPurple"
- },
- "error": {
- "dark": "nightOwlRed",
- "light": "nightOwlRed"
- },
- "warning": {
- "dark": "nightOwlYellow",
- "light": "nightOwlYellow"
- },
- "success": {
- "dark": "nightOwlGreen",
- "light": "nightOwlGreen"
- },
- "info": {
- "dark": "nightOwlBlue",
- "light": "nightOwlBlue"
- },
- "text": {
- "dark": "nightOwlFg",
- "light": "nightOwlFg"
- },
- "textMuted": {
- "dark": "nightOwlMuted",
- "light": "nightOwlMuted"
- },
- "background": {
- "dark": "nightOwlBg",
- "light": "nightOwlBg"
- },
- "backgroundPanel": {
- "dark": "nightOwlPanel",
- "light": "nightOwlPanel"
- },
- "backgroundElement": {
- "dark": "nightOwlPanel",
- "light": "nightOwlPanel"
- },
- "border": {
- "dark": "nightOwlMuted",
- "light": "nightOwlMuted"
- },
- "borderActive": {
- "dark": "nightOwlBlue",
- "light": "nightOwlBlue"
- },
- "borderSubtle": {
- "dark": "nightOwlMuted",
- "light": "nightOwlMuted"
- },
- "diffAdded": {
- "dark": "nightOwlGreen",
- "light": "nightOwlGreen"
- },
- "diffRemoved": {
- "dark": "nightOwlRed",
- "light": "nightOwlRed"
- },
- "diffContext": {
- "dark": "nightOwlMuted",
- "light": "nightOwlMuted"
- },
- "diffHunkHeader": {
- "dark": "nightOwlMuted",
- "light": "nightOwlMuted"
- },
- "diffHighlightAdded": {
- "dark": "nightOwlGreen",
- "light": "nightOwlGreen"
- },
- "diffHighlightRemoved": {
- "dark": "nightOwlRed",
- "light": "nightOwlRed"
- },
- "diffAddedBg": {
- "dark": "#0a2e1a",
- "light": "#0a2e1a"
- },
- "diffRemovedBg": {
- "dark": "#2d1b1b",
- "light": "#2d1b1b"
- },
- "diffContextBg": {
- "dark": "nightOwlPanel",
- "light": "nightOwlPanel"
- },
- "diffLineNumber": {
- "dark": "nightOwlMuted",
- "light": "nightOwlMuted"
- },
- "diffAddedLineNumberBg": {
- "dark": "#0a2e1a",
- "light": "#0a2e1a"
- },
- "diffRemovedLineNumberBg": {
- "dark": "#2d1b1b",
- "light": "#2d1b1b"
- },
- "markdownText": {
- "dark": "nightOwlFg",
- "light": "nightOwlFg"
- },
- "markdownHeading": {
- "dark": "nightOwlBlue",
- "light": "nightOwlBlue"
- },
- "markdownLink": {
- "dark": "nightOwlCyan",
- "light": "nightOwlCyan"
- },
- "markdownLinkText": {
- "dark": "nightOwlBlue",
- "light": "nightOwlBlue"
- },
- "markdownCode": {
- "dark": "nightOwlGreen",
- "light": "nightOwlGreen"
- },
- "markdownBlockQuote": {
- "dark": "nightOwlMuted",
- "light": "nightOwlMuted"
- },
- "markdownEmph": {
- "dark": "nightOwlPurple",
- "light": "nightOwlPurple"
- },
- "markdownStrong": {
- "dark": "nightOwlYellow",
- "light": "nightOwlYellow"
- },
- "markdownHorizontalRule": {
- "dark": "nightOwlMuted",
- "light": "nightOwlMuted"
- },
- "markdownListItem": {
- "dark": "nightOwlBlue",
- "light": "nightOwlBlue"
- },
- "markdownListEnumeration": {
- "dark": "nightOwlCyan",
- "light": "nightOwlCyan"
- },
- "markdownImage": {
- "dark": "nightOwlCyan",
- "light": "nightOwlCyan"
- },
- "markdownImageText": {
- "dark": "nightOwlBlue",
- "light": "nightOwlBlue"
- },
- "markdownCodeBlock": {
- "dark": "nightOwlFg",
- "light": "nightOwlFg"
- },
- "syntaxComment": {
- "dark": "nightOwlGray",
- "light": "nightOwlGray"
- },
- "syntaxKeyword": {
- "dark": "nightOwlPurple",
- "light": "nightOwlPurple"
- },
- "syntaxFunction": {
- "dark": "nightOwlBlue",
- "light": "nightOwlBlue"
- },
- "syntaxVariable": {
- "dark": "nightOwlFg",
- "light": "nightOwlFg"
- },
- "syntaxString": {
- "dark": "nightOwlYellow",
- "light": "nightOwlYellow"
- },
- "syntaxNumber": {
- "dark": "nightOwlOrange",
- "light": "nightOwlOrange"
- },
- "syntaxType": {
- "dark": "nightOwlGreen",
- "light": "nightOwlGreen"
- },
- "syntaxOperator": {
- "dark": "nightOwlCyan",
- "light": "nightOwlCyan"
- },
- "syntaxPunctuation": {
- "dark": "nightOwlFg",
- "light": "nightOwlFg"
- }
- }
-} \ No newline at end of file
diff --git a/packages/tui/internal/theme/themes/nord.json b/packages/tui/internal/theme/themes/nord.json
deleted file mode 100644
index 4a525382a..000000000
--- a/packages/tui/internal/theme/themes/nord.json
+++ /dev/null
@@ -1,223 +0,0 @@
-{
- "$schema": "https://opencode.ai/theme.json",
- "defs": {
- "nord0": "#2E3440",
- "nord1": "#3B4252",
- "nord2": "#434C5E",
- "nord3": "#4C566A",
- "nord4": "#D8DEE9",
- "nord5": "#E5E9F0",
- "nord6": "#ECEFF4",
- "nord7": "#8FBCBB",
- "nord8": "#88C0D0",
- "nord9": "#81A1C1",
- "nord10": "#5E81AC",
- "nord11": "#BF616A",
- "nord12": "#D08770",
- "nord13": "#EBCB8B",
- "nord14": "#A3BE8C",
- "nord15": "#B48EAD"
- },
- "theme": {
- "primary": {
- "dark": "nord8",
- "light": "nord10"
- },
- "secondary": {
- "dark": "nord9",
- "light": "nord9"
- },
- "accent": {
- "dark": "nord7",
- "light": "nord7"
- },
- "error": {
- "dark": "nord11",
- "light": "nord11"
- },
- "warning": {
- "dark": "nord12",
- "light": "nord12"
- },
- "success": {
- "dark": "nord14",
- "light": "nord14"
- },
- "info": {
- "dark": "nord8",
- "light": "nord10"
- },
- "text": {
- "dark": "nord6",
- "light": "nord0"
- },
- "textMuted": {
- "dark": "#8B95A7",
- "light": "nord1"
- },
- "background": {
- "dark": "nord0",
- "light": "nord6"
- },
- "backgroundPanel": {
- "dark": "nord1",
- "light": "nord5"
- },
- "backgroundElement": {
- "dark": "nord2",
- "light": "nord4"
- },
- "border": {
- "dark": "nord2",
- "light": "nord3"
- },
- "borderActive": {
- "dark": "nord3",
- "light": "nord2"
- },
- "borderSubtle": {
- "dark": "nord2",
- "light": "nord3"
- },
- "diffAdded": {
- "dark": "nord14",
- "light": "nord14"
- },
- "diffRemoved": {
- "dark": "nord11",
- "light": "nord11"
- },
- "diffContext": {
- "dark": "#8B95A7",
- "light": "nord3"
- },
- "diffHunkHeader": {
- "dark": "#8B95A7",
- "light": "nord3"
- },
- "diffHighlightAdded": {
- "dark": "nord14",
- "light": "nord14"
- },
- "diffHighlightRemoved": {
- "dark": "nord11",
- "light": "nord11"
- },
- "diffAddedBg": {
- "dark": "#3B4252",
- "light": "#E5E9F0"
- },
- "diffRemovedBg": {
- "dark": "#3B4252",
- "light": "#E5E9F0"
- },
- "diffContextBg": {
- "dark": "nord1",
- "light": "nord5"
- },
- "diffLineNumber": {
- "dark": "nord2",
- "light": "nord4"
- },
- "diffAddedLineNumberBg": {
- "dark": "#3B4252",
- "light": "#E5E9F0"
- },
- "diffRemovedLineNumberBg": {
- "dark": "#3B4252",
- "light": "#E5E9F0"
- },
- "markdownText": {
- "dark": "nord4",
- "light": "nord0"
- },
- "markdownHeading": {
- "dark": "nord8",
- "light": "nord10"
- },
- "markdownLink": {
- "dark": "nord9",
- "light": "nord9"
- },
- "markdownLinkText": {
- "dark": "nord7",
- "light": "nord7"
- },
- "markdownCode": {
- "dark": "nord14",
- "light": "nord14"
- },
- "markdownBlockQuote": {
- "dark": "#8B95A7",
- "light": "nord3"
- },
- "markdownEmph": {
- "dark": "nord12",
- "light": "nord12"
- },
- "markdownStrong": {
- "dark": "nord13",
- "light": "nord13"
- },
- "markdownHorizontalRule": {
- "dark": "#8B95A7",
- "light": "nord3"
- },
- "markdownListItem": {
- "dark": "nord8",
- "light": "nord10"
- },
- "markdownListEnumeration": {
- "dark": "nord7",
- "light": "nord7"
- },
- "markdownImage": {
- "dark": "nord9",
- "light": "nord9"
- },
- "markdownImageText": {
- "dark": "nord7",
- "light": "nord7"
- },
- "markdownCodeBlock": {
- "dark": "nord4",
- "light": "nord0"
- },
- "syntaxComment": {
- "dark": "#8B95A7",
- "light": "nord3"
- },
- "syntaxKeyword": {
- "dark": "nord9",
- "light": "nord9"
- },
- "syntaxFunction": {
- "dark": "nord8",
- "light": "nord8"
- },
- "syntaxVariable": {
- "dark": "nord7",
- "light": "nord7"
- },
- "syntaxString": {
- "dark": "nord14",
- "light": "nord14"
- },
- "syntaxNumber": {
- "dark": "nord15",
- "light": "nord15"
- },
- "syntaxType": {
- "dark": "nord7",
- "light": "nord7"
- },
- "syntaxOperator": {
- "dark": "nord9",
- "light": "nord9"
- },
- "syntaxPunctuation": {
- "dark": "nord4",
- "light": "nord0"
- }
- }
-}
diff --git a/packages/tui/internal/theme/themes/one-dark.json b/packages/tui/internal/theme/themes/one-dark.json
deleted file mode 100644
index 73b24e929..000000000
--- a/packages/tui/internal/theme/themes/one-dark.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "$schema": "https://opencode.ai/theme.json",
- "defs": {
- "darkBg": "#282c34",
- "darkBgAlt": "#21252b",
- "darkBgPanel": "#353b45",
- "darkFg": "#abb2bf",
- "darkFgMuted": "#5c6370",
- "darkPurple": "#c678dd",
- "darkBlue": "#61afef",
- "darkRed": "#e06c75",
- "darkGreen": "#98c379",
- "darkYellow": "#e5c07b",
- "darkOrange": "#d19a66",
- "darkCyan": "#56b6c2",
- "lightBg": "#fafafa",
- "lightBgAlt": "#f0f0f1",
- "lightBgPanel": "#eaeaeb",
- "lightFg": "#383a42",
- "lightFgMuted": "#a0a1a7",
- "lightPurple": "#a626a4",
- "lightBlue": "#4078f2",
- "lightRed": "#e45649",
- "lightGreen": "#50a14f",
- "lightYellow": "#c18401",
- "lightOrange": "#986801",
- "lightCyan": "#0184bc"
- },
- "theme": {
- "primary": { "dark": "darkBlue", "light": "lightBlue" },
- "secondary": { "dark": "darkPurple", "light": "lightPurple" },
- "accent": { "dark": "darkCyan", "light": "lightCyan" },
- "error": { "dark": "darkRed", "light": "lightRed" },
- "warning": { "dark": "darkYellow", "light": "lightYellow" },
- "success": { "dark": "darkGreen", "light": "lightGreen" },
- "info": { "dark": "darkOrange", "light": "lightOrange" },
- "text": { "dark": "darkFg", "light": "lightFg" },
- "textMuted": { "dark": "darkFgMuted", "light": "lightFgMuted" },
- "background": { "dark": "darkBg", "light": "lightBg" },
- "backgroundPanel": { "dark": "darkBgAlt", "light": "lightBgAlt" },
- "backgroundElement": { "dark": "darkBgPanel", "light": "lightBgPanel" },
- "border": { "dark": "#393f4a", "light": "#d1d1d2" },
- "borderActive": { "dark": "darkBlue", "light": "lightBlue" },
- "borderSubtle": { "dark": "#2c313a", "light": "#e0e0e1" },
- "diffAdded": { "dark": "darkGreen", "light": "lightGreen" },
- "diffRemoved": { "dark": "darkRed", "light": "lightRed" },
- "diffContext": { "dark": "darkFgMuted", "light": "lightFgMuted" },
- "diffHunkHeader": { "dark": "darkCyan", "light": "lightCyan" },
- "diffHighlightAdded": { "dark": "#aad482", "light": "#489447" },
- "diffHighlightRemoved": { "dark": "#e8828b", "light": "#d65145" },
- "diffAddedBg": { "dark": "#2c382b", "light": "#eafbe9" },
- "diffRemovedBg": { "dark": "#3a2d2f", "light": "#fce9e8" },
- "diffContextBg": { "dark": "darkBgAlt", "light": "lightBgAlt" },
- "diffLineNumber": { "dark": "#495162", "light": "#c9c9ca" },
- "diffAddedLineNumberBg": { "dark": "#283427", "light": "#e1f3df" },
- "diffRemovedLineNumberBg": { "dark": "#36292b", "light": "#f5e2e1" },
- "markdownText": { "dark": "darkFg", "light": "lightFg" },
- "markdownHeading": { "dark": "darkPurple", "light": "lightPurple" },
- "markdownLink": { "dark": "darkBlue", "light": "lightBlue" },
- "markdownLinkText": { "dark": "darkCyan", "light": "lightCyan" },
- "markdownCode": { "dark": "darkGreen", "light": "lightGreen" },
- "markdownBlockQuote": { "dark": "darkFgMuted", "light": "lightFgMuted" },
- "markdownEmph": { "dark": "darkYellow", "light": "lightYellow" },
- "markdownStrong": { "dark": "darkOrange", "light": "lightOrange" },
- "markdownHorizontalRule": {
- "dark": "darkFgMuted",
- "light": "lightFgMuted"
- },
- "markdownListItem": { "dark": "darkBlue", "light": "lightBlue" },
- "markdownListEnumeration": { "dark": "darkCyan", "light": "lightCyan" },
- "markdownImage": { "dark": "darkBlue", "light": "lightBlue" },
- "markdownImageText": { "dark": "darkCyan", "light": "lightCyan" },
- "markdownCodeBlock": { "dark": "darkFg", "light": "lightFg" },
- "syntaxComment": { "dark": "darkFgMuted", "light": "lightFgMuted" },
- "syntaxKeyword": { "dark": "darkPurple", "light": "lightPurple" },
- "syntaxFunction": { "dark": "darkBlue", "light": "lightBlue" },
- "syntaxVariable": { "dark": "darkRed", "light": "lightRed" },
- "syntaxString": { "dark": "darkGreen", "light": "lightGreen" },
- "syntaxNumber": { "dark": "darkOrange", "light": "lightOrange" },
- "syntaxType": { "dark": "darkYellow", "light": "lightYellow" },
- "syntaxOperator": { "dark": "darkCyan", "light": "lightCyan" },
- "syntaxPunctuation": { "dark": "darkFg", "light": "lightFg" }
- }
-}
diff --git a/packages/tui/internal/theme/themes/opencode.json b/packages/tui/internal/theme/themes/opencode.json
deleted file mode 100644
index 8f585a450..000000000
--- a/packages/tui/internal/theme/themes/opencode.json
+++ /dev/null
@@ -1,245 +0,0 @@
-{
- "$schema": "https://opencode.ai/theme.json",
- "defs": {
- "darkStep1": "#0a0a0a",
- "darkStep2": "#141414",
- "darkStep3": "#1e1e1e",
- "darkStep4": "#282828",
- "darkStep5": "#323232",
- "darkStep6": "#3c3c3c",
- "darkStep7": "#484848",
- "darkStep8": "#606060",
- "darkStep9": "#fab283",
- "darkStep10": "#ffc09f",
- "darkStep11": "#808080",
- "darkStep12": "#eeeeee",
- "darkSecondary": "#5c9cf5",
- "darkAccent": "#9d7cd8",
- "darkRed": "#e06c75",
- "darkOrange": "#f5a742",
- "darkGreen": "#7fd88f",
- "darkCyan": "#56b6c2",
- "darkYellow": "#e5c07b",
- "lightStep1": "#ffffff",
- "lightStep2": "#fafafa",
- "lightStep3": "#f5f5f5",
- "lightStep4": "#ebebeb",
- "lightStep5": "#e1e1e1",
- "lightStep6": "#d4d4d4",
- "lightStep7": "#b8b8b8",
- "lightStep8": "#a0a0a0",
- "lightStep9": "#3b7dd8",
- "lightStep10": "#2968c3",
- "lightStep11": "#8a8a8a",
- "lightStep12": "#1a1a1a",
- "lightSecondary": "#7b5bb6",
- "lightAccent": "#d68c27",
- "lightRed": "#d1383d",
- "lightOrange": "#d68c27",
- "lightGreen": "#3d9a57",
- "lightCyan": "#318795",
- "lightYellow": "#b0851f"
- },
- "theme": {
- "primary": {
- "dark": "darkStep9",
- "light": "lightStep9"
- },
- "secondary": {
- "dark": "darkSecondary",
- "light": "lightSecondary"
- },
- "accent": {
- "dark": "darkAccent",
- "light": "lightAccent"
- },
- "error": {
- "dark": "darkRed",
- "light": "lightRed"
- },
- "warning": {
- "dark": "darkOrange",
- "light": "lightOrange"
- },
- "success": {
- "dark": "darkGreen",
- "light": "lightGreen"
- },
- "info": {
- "dark": "darkCyan",
- "light": "lightCyan"
- },
- "text": {
- "dark": "darkStep12",
- "light": "lightStep12"
- },
- "textMuted": {
- "dark": "darkStep11",
- "light": "lightStep11"
- },
- "background": {
- "dark": "darkStep1",
- "light": "lightStep1"
- },
- "backgroundPanel": {
- "dark": "darkStep2",
- "light": "lightStep2"
- },
- "backgroundElement": {
- "dark": "darkStep3",
- "light": "lightStep3"
- },
- "border": {
- "dark": "darkStep7",
- "light": "lightStep7"
- },
- "borderActive": {
- "dark": "darkStep8",
- "light": "lightStep8"
- },
- "borderSubtle": {
- "dark": "darkStep6",
- "light": "lightStep6"
- },
- "diffAdded": {
- "dark": "#4fd6be",
- "light": "#1e725c"
- },
- "diffRemoved": {
- "dark": "#c53b53",
- "light": "#c53b53"
- },
- "diffContext": {
- "dark": "#828bb8",
- "light": "#7086b5"
- },
- "diffHunkHeader": {
- "dark": "#828bb8",
- "light": "#7086b5"
- },
- "diffHighlightAdded": {
- "dark": "#b8db87",
- "light": "#4db380"
- },
- "diffHighlightRemoved": {
- "dark": "#e26a75",
- "light": "#f52a65"
- },
- "diffAddedBg": {
- "dark": "#20303b",
- "light": "#d5e5d5"
- },
- "diffRemovedBg": {
- "dark": "#37222c",
- "light": "#f7d8db"
- },
- "diffContextBg": {
- "dark": "darkStep2",
- "light": "lightStep2"
- },
- "diffLineNumber": {
- "dark": "darkStep3",
- "light": "lightStep3"
- },
- "diffAddedLineNumberBg": {
- "dark": "#1b2b34",
- "light": "#c5d5c5"
- },
- "diffRemovedLineNumberBg": {
- "dark": "#2d1f26",
- "light": "#e7c8cb"
- },
- "markdownText": {
- "dark": "darkStep12",
- "light": "lightStep12"
- },
- "markdownHeading": {
- "dark": "darkAccent",
- "light": "lightAccent"
- },
- "markdownLink": {
- "dark": "darkStep9",
- "light": "lightStep9"
- },
- "markdownLinkText": {
- "dark": "darkCyan",
- "light": "lightCyan"
- },
- "markdownCode": {
- "dark": "darkGreen",
- "light": "lightGreen"
- },
- "markdownBlockQuote": {
- "dark": "darkYellow",
- "light": "lightYellow"
- },
- "markdownEmph": {
- "dark": "darkYellow",
- "light": "lightYellow"
- },
- "markdownStrong": {
- "dark": "darkOrange",
- "light": "lightOrange"
- },
- "markdownHorizontalRule": {
- "dark": "darkStep11",
- "light": "lightStep11"
- },
- "markdownListItem": {
- "dark": "darkStep9",
- "light": "lightStep9"
- },
- "markdownListEnumeration": {
- "dark": "darkCyan",
- "light": "lightCyan"
- },
- "markdownImage": {
- "dark": "darkStep9",
- "light": "lightStep9"
- },
- "markdownImageText": {
- "dark": "darkCyan",
- "light": "lightCyan"
- },
- "markdownCodeBlock": {
- "dark": "darkStep12",
- "light": "lightStep12"
- },
- "syntaxComment": {
- "dark": "darkStep11",
- "light": "lightStep11"
- },
- "syntaxKeyword": {
- "dark": "darkAccent",
- "light": "lightAccent"
- },
- "syntaxFunction": {
- "dark": "darkStep9",
- "light": "lightStep9"
- },
- "syntaxVariable": {
- "dark": "darkRed",
- "light": "lightRed"
- },
- "syntaxString": {
- "dark": "darkGreen",
- "light": "lightGreen"
- },
- "syntaxNumber": {
- "dark": "darkOrange",
- "light": "lightOrange"
- },
- "syntaxType": {
- "dark": "darkYellow",
- "light": "lightYellow"
- },
- "syntaxOperator": {
- "dark": "darkCyan",
- "light": "lightCyan"
- },
- "syntaxPunctuation": {
- "dark": "darkStep12",
- "light": "lightStep12"
- }
- }
-}
diff --git a/packages/tui/internal/theme/themes/palenight.json b/packages/tui/internal/theme/themes/palenight.json
deleted file mode 100644
index 79f7c59e8..000000000
--- a/packages/tui/internal/theme/themes/palenight.json
+++ /dev/null
@@ -1,222 +0,0 @@
-{
- "$schema": "https://opencode.ai/theme.json",
- "defs": {
- "background": "#292d3e",
- "backgroundAlt": "#1e2132",
- "backgroundPanel": "#32364a",
- "foreground": "#a6accd",
- "foregroundBright": "#bfc7d5",
- "comment": "#676e95",
- "red": "#f07178",
- "orange": "#f78c6c",
- "yellow": "#ffcb6b",
- "green": "#c3e88d",
- "cyan": "#89ddff",
- "blue": "#82aaff",
- "purple": "#c792ea",
- "magenta": "#ff5370",
- "pink": "#f07178"
- },
- "theme": {
- "primary": {
- "dark": "blue",
- "light": "#4976eb"
- },
- "secondary": {
- "dark": "purple",
- "light": "#a854f2"
- },
- "accent": {
- "dark": "cyan",
- "light": "#00acc1"
- },
- "error": {
- "dark": "red",
- "light": "#e53935"
- },
- "warning": {
- "dark": "yellow",
- "light": "#ffb300"
- },
- "success": {
- "dark": "green",
- "light": "#91b859"
- },
- "info": {
- "dark": "orange",
- "light": "#f4511e"
- },
- "text": {
- "dark": "foreground",
- "light": "#292d3e"
- },
- "textMuted": {
- "dark": "comment",
- "light": "#8796b0"
- },
- "background": {
- "dark": "#292d3e",
- "light": "#fafafa"
- },
- "backgroundPanel": {
- "dark": "#1e2132",
- "light": "#f5f5f5"
- },
- "backgroundElement": {
- "dark": "#32364a",
- "light": "#e7e7e8"
- },
- "border": {
- "dark": "#32364a",
- "light": "#e0e0e0"
- },
- "borderActive": {
- "dark": "blue",
- "light": "#4976eb"
- },
- "borderSubtle": {
- "dark": "#1e2132",
- "light": "#eeeeee"
- },
- "diffAdded": {
- "dark": "green",
- "light": "#91b859"
- },
- "diffRemoved": {
- "dark": "red",
- "light": "#e53935"
- },
- "diffContext": {
- "dark": "comment",
- "light": "#8796b0"
- },
- "diffHunkHeader": {
- "dark": "cyan",
- "light": "#00acc1"
- },
- "diffHighlightAdded": {
- "dark": "green",
- "light": "#91b859"
- },
- "diffHighlightRemoved": {
- "dark": "red",
- "light": "#e53935"
- },
- "diffAddedBg": {
- "dark": "#2e3c2b",
- "light": "#e8f5e9"
- },
- "diffRemovedBg": {
- "dark": "#3c2b2b",
- "light": "#ffebee"
- },
- "diffContextBg": {
- "dark": "#1e2132",
- "light": "#f5f5f5"
- },
- "diffLineNumber": {
- "dark": "#444760",
- "light": "#cfd8dc"
- },
- "diffAddedLineNumberBg": {
- "dark": "#2e3c2b",
- "light": "#e8f5e9"
- },
- "diffRemovedLineNumberBg": {
- "dark": "#3c2b2b",
- "light": "#ffebee"
- },
- "markdownText": {
- "dark": "foreground",
- "light": "#292d3e"
- },
- "markdownHeading": {
- "dark": "purple",
- "light": "#a854f2"
- },
- "markdownLink": {
- "dark": "blue",
- "light": "#4976eb"
- },
- "markdownLinkText": {
- "dark": "cyan",
- "light": "#00acc1"
- },
- "markdownCode": {
- "dark": "green",
- "light": "#91b859"
- },
- "markdownBlockQuote": {
- "dark": "comment",
- "light": "#8796b0"
- },
- "markdownEmph": {
- "dark": "yellow",
- "light": "#ffb300"
- },
- "markdownStrong": {
- "dark": "orange",
- "light": "#f4511e"
- },
- "markdownHorizontalRule": {
- "dark": "comment",
- "light": "#8796b0"
- },
- "markdownListItem": {
- "dark": "blue",
- "light": "#4976eb"
- },
- "markdownListEnumeration": {
- "dark": "cyan",
- "light": "#00acc1"
- },
- "markdownImage": {
- "dark": "blue",
- "light": "#4976eb"
- },
- "markdownImageText": {
- "dark": "cyan",
- "light": "#00acc1"
- },
- "markdownCodeBlock": {
- "dark": "foreground",
- "light": "#292d3e"
- },
- "syntaxComment": {
- "dark": "comment",
- "light": "#8796b0"
- },
- "syntaxKeyword": {
- "dark": "purple",
- "light": "#a854f2"
- },
- "syntaxFunction": {
- "dark": "blue",
- "light": "#4976eb"
- },
- "syntaxVariable": {
- "dark": "foreground",
- "light": "#292d3e"
- },
- "syntaxString": {
- "dark": "green",
- "light": "#91b859"
- },
- "syntaxNumber": {
- "dark": "orange",
- "light": "#f4511e"
- },
- "syntaxType": {
- "dark": "yellow",
- "light": "#ffb300"
- },
- "syntaxOperator": {
- "dark": "cyan",
- "light": "#00acc1"
- },
- "syntaxPunctuation": {
- "dark": "foreground",
- "light": "#292d3e"
- }
- }
-}
diff --git a/packages/tui/internal/theme/themes/rosepine.json b/packages/tui/internal/theme/themes/rosepine.json
deleted file mode 100644
index 444cdbd13..000000000
--- a/packages/tui/internal/theme/themes/rosepine.json
+++ /dev/null
@@ -1,234 +0,0 @@
-{
- "$schema": "https://opencode.ai/theme.json",
- "defs": {
- "base": "#191724",
- "surface": "#1f1d2e",
- "overlay": "#26233a",
- "muted": "#6e6a86",
- "subtle": "#908caa",
- "text": "#e0def4",
- "love": "#eb6f92",
- "gold": "#f6c177",
- "rose": "#ebbcba",
- "pine": "#31748f",
- "foam": "#9ccfd8",
- "iris": "#c4a7e7",
- "highlightLow": "#21202e",
- "highlightMed": "#403d52",
- "highlightHigh": "#524f67",
- "moonBase": "#232136",
- "moonSurface": "#2a273f",
- "moonOverlay": "#393552",
- "moonMuted": "#6e6a86",
- "moonSubtle": "#908caa",
- "moonText": "#e0def4",
- "dawnBase": "#faf4ed",
- "dawnSurface": "#fffaf3",
- "dawnOverlay": "#f2e9e1",
- "dawnMuted": "#9893a5",
- "dawnSubtle": "#797593",
- "dawnText": "#575279"
- },
- "theme": {
- "primary": {
- "dark": "foam",
- "light": "pine"
- },
- "secondary": {
- "dark": "iris",
- "light": "#907aa9"
- },
- "accent": {
- "dark": "rose",
- "light": "#d7827e"
- },
- "error": {
- "dark": "love",
- "light": "#b4637a"
- },
- "warning": {
- "dark": "gold",
- "light": "#ea9d34"
- },
- "success": {
- "dark": "pine",
- "light": "#286983"
- },
- "info": {
- "dark": "foam",
- "light": "#56949f"
- },
- "text": {
- "dark": "#e0def4",
- "light": "#575279"
- },
- "textMuted": {
- "dark": "muted",
- "light": "dawnMuted"
- },
- "background": {
- "dark": "base",
- "light": "dawnBase"
- },
- "backgroundPanel": {
- "dark": "surface",
- "light": "dawnSurface"
- },
- "backgroundElement": {
- "dark": "overlay",
- "light": "dawnOverlay"
- },
- "border": {
- "dark": "highlightMed",
- "light": "#dfdad9"
- },
- "borderActive": {
- "dark": "foam",
- "light": "pine"
- },
- "borderSubtle": {
- "dark": "highlightLow",
- "light": "#f4ede8"
- },
- "diffAdded": {
- "dark": "pine",
- "light": "#286983"
- },
- "diffRemoved": {
- "dark": "love",
- "light": "#b4637a"
- },
- "diffContext": {
- "dark": "muted",
- "light": "dawnMuted"
- },
- "diffHunkHeader": {
- "dark": "iris",
- "light": "#907aa9"
- },
- "diffHighlightAdded": {
- "dark": "pine",
- "light": "#286983"
- },
- "diffHighlightRemoved": {
- "dark": "love",
- "light": "#b4637a"
- },
- "diffAddedBg": {
- "dark": "#1f2d3a",
- "light": "#e5f2f3"
- },
- "diffRemovedBg": {
- "dark": "#3a1f2d",
- "light": "#fce5e8"
- },
- "diffContextBg": {
- "dark": "surface",
- "light": "dawnSurface"
- },
- "diffLineNumber": {
- "dark": "muted",
- "light": "dawnMuted"
- },
- "diffAddedLineNumberBg": {
- "dark": "#1f2d3a",
- "light": "#e5f2f3"
- },
- "diffRemovedLineNumberBg": {
- "dark": "#3a1f2d",
- "light": "#fce5e8"
- },
- "markdownText": {
- "dark": "#e0def4",
- "light": "#575279"
- },
- "markdownHeading": {
- "dark": "iris",
- "light": "#907aa9"
- },
- "markdownLink": {
- "dark": "foam",
- "light": "pine"
- },
- "markdownLinkText": {
- "dark": "rose",
- "light": "#d7827e"
- },
- "markdownCode": {
- "dark": "pine",
- "light": "#286983"
- },
- "markdownBlockQuote": {
- "dark": "muted",
- "light": "dawnMuted"
- },
- "markdownEmph": {
- "dark": "gold",
- "light": "#ea9d34"
- },
- "markdownStrong": {
- "dark": "love",
- "light": "#b4637a"
- },
- "markdownHorizontalRule": {
- "dark": "highlightMed",
- "light": "#dfdad9"
- },
- "markdownListItem": {
- "dark": "foam",
- "light": "pine"
- },
- "markdownListEnumeration": {
- "dark": "rose",
- "light": "#d7827e"
- },
- "markdownImage": {
- "dark": "foam",
- "light": "pine"
- },
- "markdownImageText": {
- "dark": "rose",
- "light": "#d7827e"
- },
- "markdownCodeBlock": {
- "dark": "#e0def4",
- "light": "#575279"
- },
- "syntaxComment": {
- "dark": "muted",
- "light": "dawnMuted"
- },
- "syntaxKeyword": {
- "dark": "pine",
- "light": "#286983"
- },
- "syntaxFunction": {
- "dark": "rose",
- "light": "#d7827e"
- },
- "syntaxVariable": {
- "dark": "#e0def4",
- "light": "#575279"
- },
- "syntaxString": {
- "dark": "gold",
- "light": "#ea9d34"
- },
- "syntaxNumber": {
- "dark": "iris",
- "light": "#907aa9"
- },
- "syntaxType": {
- "dark": "foam",
- "light": "#56949f"
- },
- "syntaxOperator": {
- "dark": "subtle",
- "light": "dawnSubtle"
- },
- "syntaxPunctuation": {
- "dark": "subtle",
- "light": "dawnSubtle"
- }
- }
-}
diff --git a/packages/tui/internal/theme/themes/solarized.json b/packages/tui/internal/theme/themes/solarized.json
deleted file mode 100644
index e4de11367..000000000
--- a/packages/tui/internal/theme/themes/solarized.json
+++ /dev/null
@@ -1,223 +0,0 @@
-{
- "$schema": "https://opencode.ai/theme.json",
- "defs": {
- "base03": "#002b36",
- "base02": "#073642",
- "base01": "#586e75",
- "base00": "#657b83",
- "base0": "#839496",
- "base1": "#93a1a1",
- "base2": "#eee8d5",
- "base3": "#fdf6e3",
- "yellow": "#b58900",
- "orange": "#cb4b16",
- "red": "#dc322f",
- "magenta": "#d33682",
- "violet": "#6c71c4",
- "blue": "#268bd2",
- "cyan": "#2aa198",
- "green": "#859900"
- },
- "theme": {
- "primary": {
- "dark": "blue",
- "light": "blue"
- },
- "secondary": {
- "dark": "violet",
- "light": "violet"
- },
- "accent": {
- "dark": "cyan",
- "light": "cyan"
- },
- "error": {
- "dark": "red",
- "light": "red"
- },
- "warning": {
- "dark": "yellow",
- "light": "yellow"
- },
- "success": {
- "dark": "green",
- "light": "green"
- },
- "info": {
- "dark": "orange",
- "light": "orange"
- },
- "text": {
- "dark": "base0",
- "light": "base00"
- },
- "textMuted": {
- "dark": "base01",
- "light": "base1"
- },
- "background": {
- "dark": "base03",
- "light": "base3"
- },
- "backgroundPanel": {
- "dark": "base02",
- "light": "base2"
- },
- "backgroundElement": {
- "dark": "#073642",
- "light": "#eee8d5"
- },
- "border": {
- "dark": "base02",
- "light": "base2"
- },
- "borderActive": {
- "dark": "base01",
- "light": "base1"
- },
- "borderSubtle": {
- "dark": "#073642",
- "light": "#eee8d5"
- },
- "diffAdded": {
- "dark": "green",
- "light": "green"
- },
- "diffRemoved": {
- "dark": "red",
- "light": "red"
- },
- "diffContext": {
- "dark": "base01",
- "light": "base1"
- },
- "diffHunkHeader": {
- "dark": "base01",
- "light": "base1"
- },
- "diffHighlightAdded": {
- "dark": "green",
- "light": "green"
- },
- "diffHighlightRemoved": {
- "dark": "red",
- "light": "red"
- },
- "diffAddedBg": {
- "dark": "#073642",
- "light": "#eee8d5"
- },
- "diffRemovedBg": {
- "dark": "#073642",
- "light": "#eee8d5"
- },
- "diffContextBg": {
- "dark": "base02",
- "light": "base2"
- },
- "diffLineNumber": {
- "dark": "base01",
- "light": "base1"
- },
- "diffAddedLineNumberBg": {
- "dark": "#073642",
- "light": "#eee8d5"
- },
- "diffRemovedLineNumberBg": {
- "dark": "#073642",
- "light": "#eee8d5"
- },
- "markdownText": {
- "dark": "base0",
- "light": "base00"
- },
- "markdownHeading": {
- "dark": "blue",
- "light": "blue"
- },
- "markdownLink": {
- "dark": "cyan",
- "light": "cyan"
- },
- "markdownLinkText": {
- "dark": "violet",
- "light": "violet"
- },
- "markdownCode": {
- "dark": "green",
- "light": "green"
- },
- "markdownBlockQuote": {
- "dark": "base01",
- "light": "base1"
- },
- "markdownEmph": {
- "dark": "yellow",
- "light": "yellow"
- },
- "markdownStrong": {
- "dark": "orange",
- "light": "orange"
- },
- "markdownHorizontalRule": {
- "dark": "base01",
- "light": "base1"
- },
- "markdownListItem": {
- "dark": "blue",
- "light": "blue"
- },
- "markdownListEnumeration": {
- "dark": "cyan",
- "light": "cyan"
- },
- "markdownImage": {
- "dark": "cyan",
- "light": "cyan"
- },
- "markdownImageText": {
- "dark": "violet",
- "light": "violet"
- },
- "markdownCodeBlock": {
- "dark": "base0",
- "light": "base00"
- },
- "syntaxComment": {
- "dark": "base01",
- "light": "base1"
- },
- "syntaxKeyword": {
- "dark": "green",
- "light": "green"
- },
- "syntaxFunction": {
- "dark": "blue",
- "light": "blue"
- },
- "syntaxVariable": {
- "dark": "cyan",
- "light": "cyan"
- },
- "syntaxString": {
- "dark": "cyan",
- "light": "cyan"
- },
- "syntaxNumber": {
- "dark": "magenta",
- "light": "magenta"
- },
- "syntaxType": {
- "dark": "yellow",
- "light": "yellow"
- },
- "syntaxOperator": {
- "dark": "green",
- "light": "green"
- },
- "syntaxPunctuation": {
- "dark": "base0",
- "light": "base00"
- }
- }
-}
diff --git a/packages/tui/internal/theme/themes/synthwave84.json b/packages/tui/internal/theme/themes/synthwave84.json
deleted file mode 100644
index d25bf3b49..000000000
--- a/packages/tui/internal/theme/themes/synthwave84.json
+++ /dev/null
@@ -1,226 +0,0 @@
-{
- "$schema": "https://opencode.ai/theme.json",
- "defs": {
- "background": "#262335",
- "backgroundAlt": "#1e1a29",
- "backgroundPanel": "#2a2139",
- "foreground": "#ffffff",
- "foregroundMuted": "#848bbd",
- "pink": "#ff7edb",
- "pinkBright": "#ff92df",
- "cyan": "#36f9f6",
- "cyanBright": "#72f1f8",
- "yellow": "#fede5d",
- "yellowBright": "#fff95d",
- "orange": "#ff8b39",
- "orangeBright": "#ff9f43",
- "purple": "#b084eb",
- "purpleBright": "#c792ea",
- "red": "#fe4450",
- "redBright": "#ff5e5b",
- "green": "#72f1b8",
- "greenBright": "#97f1d8"
- },
- "theme": {
- "primary": {
- "dark": "cyan",
- "light": "#00bcd4"
- },
- "secondary": {
- "dark": "pink",
- "light": "#e91e63"
- },
- "accent": {
- "dark": "purple",
- "light": "#9c27b0"
- },
- "error": {
- "dark": "red",
- "light": "#f44336"
- },
- "warning": {
- "dark": "yellow",
- "light": "#ff9800"
- },
- "success": {
- "dark": "green",
- "light": "#4caf50"
- },
- "info": {
- "dark": "orange",
- "light": "#ff5722"
- },
- "text": {
- "dark": "foreground",
- "light": "#262335"
- },
- "textMuted": {
- "dark": "foregroundMuted",
- "light": "#5c5c8a"
- },
- "background": {
- "dark": "#262335",
- "light": "#fafafa"
- },
- "backgroundPanel": {
- "dark": "#1e1a29",
- "light": "#f5f5f5"
- },
- "backgroundElement": {
- "dark": "#2a2139",
- "light": "#eeeeee"
- },
- "border": {
- "dark": "#495495",
- "light": "#e0e0e0"
- },
- "borderActive": {
- "dark": "cyan",
- "light": "#00bcd4"
- },
- "borderSubtle": {
- "dark": "#241b2f",
- "light": "#f0f0f0"
- },
- "diffAdded": {
- "dark": "green",
- "light": "#4caf50"
- },
- "diffRemoved": {
- "dark": "red",
- "light": "#f44336"
- },
- "diffContext": {
- "dark": "foregroundMuted",
- "light": "#5c5c8a"
- },
- "diffHunkHeader": {
- "dark": "purple",
- "light": "#9c27b0"
- },
- "diffHighlightAdded": {
- "dark": "greenBright",
- "light": "#4caf50"
- },
- "diffHighlightRemoved": {
- "dark": "redBright",
- "light": "#f44336"
- },
- "diffAddedBg": {
- "dark": "#1a3a2a",
- "light": "#e8f5e9"
- },
- "diffRemovedBg": {
- "dark": "#3a1a2a",
- "light": "#ffebee"
- },
- "diffContextBg": {
- "dark": "#1e1a29",
- "light": "#f5f5f5"
- },
- "diffLineNumber": {
- "dark": "#495495",
- "light": "#b0b0b0"
- },
- "diffAddedLineNumberBg": {
- "dark": "#1a3a2a",
- "light": "#e8f5e9"
- },
- "diffRemovedLineNumberBg": {
- "dark": "#3a1a2a",
- "light": "#ffebee"
- },
- "markdownText": {
- "dark": "foreground",
- "light": "#262335"
- },
- "markdownHeading": {
- "dark": "pink",
- "light": "#e91e63"
- },
- "markdownLink": {
- "dark": "cyan",
- "light": "#00bcd4"
- },
- "markdownLinkText": {
- "dark": "purple",
- "light": "#9c27b0"
- },
- "markdownCode": {
- "dark": "green",
- "light": "#4caf50"
- },
- "markdownBlockQuote": {
- "dark": "foregroundMuted",
- "light": "#5c5c8a"
- },
- "markdownEmph": {
- "dark": "yellow",
- "light": "#ff9800"
- },
- "markdownStrong": {
- "dark": "orange",
- "light": "#ff5722"
- },
- "markdownHorizontalRule": {
- "dark": "#495495",
- "light": "#e0e0e0"
- },
- "markdownListItem": {
- "dark": "cyan",
- "light": "#00bcd4"
- },
- "markdownListEnumeration": {
- "dark": "purple",
- "light": "#9c27b0"
- },
- "markdownImage": {
- "dark": "cyan",
- "light": "#00bcd4"
- },
- "markdownImageText": {
- "dark": "purple",
- "light": "#9c27b0"
- },
- "markdownCodeBlock": {
- "dark": "foreground",
- "light": "#262335"
- },
- "syntaxComment": {
- "dark": "foregroundMuted",
- "light": "#5c5c8a"
- },
- "syntaxKeyword": {
- "dark": "pink",
- "light": "#e91e63"
- },
- "syntaxFunction": {
- "dark": "orange",
- "light": "#ff5722"
- },
- "syntaxVariable": {
- "dark": "foreground",
- "light": "#262335"
- },
- "syntaxString": {
- "dark": "yellow",
- "light": "#ff9800"
- },
- "syntaxNumber": {
- "dark": "purple",
- "light": "#9c27b0"
- },
- "syntaxType": {
- "dark": "cyan",
- "light": "#00bcd4"
- },
- "syntaxOperator": {
- "dark": "pink",
- "light": "#e91e63"
- },
- "syntaxPunctuation": {
- "dark": "foreground",
- "light": "#262335"
- }
- }
-}
diff --git a/packages/tui/internal/theme/themes/tokyonight.json b/packages/tui/internal/theme/themes/tokyonight.json
deleted file mode 100644
index 1c9503a42..000000000
--- a/packages/tui/internal/theme/themes/tokyonight.json
+++ /dev/null
@@ -1,243 +0,0 @@
-{
- "$schema": "https://opencode.ai/theme.json",
- "defs": {
- "darkStep1": "#1a1b26",
- "darkStep2": "#1e2030",
- "darkStep3": "#222436",
- "darkStep4": "#292e42",
- "darkStep5": "#3b4261",
- "darkStep6": "#545c7e",
- "darkStep7": "#737aa2",
- "darkStep8": "#9099b2",
- "darkStep9": "#82aaff",
- "darkStep10": "#89b4fa",
- "darkStep11": "#828bb8",
- "darkStep12": "#c8d3f5",
- "darkRed": "#ff757f",
- "darkOrange": "#ff966c",
- "darkYellow": "#ffc777",
- "darkGreen": "#c3e88d",
- "darkCyan": "#86e1fc",
- "darkPurple": "#c099ff",
- "lightStep1": "#e1e2e7",
- "lightStep2": "#d5d6db",
- "lightStep3": "#c8c9ce",
- "lightStep4": "#b9bac1",
- "lightStep5": "#a8aecb",
- "lightStep6": "#9699a8",
- "lightStep7": "#737a8c",
- "lightStep8": "#5a607d",
- "lightStep9": "#2e7de9",
- "lightStep10": "#1a6ce7",
- "lightStep11": "#8990a3",
- "lightStep12": "#3760bf",
- "lightRed": "#f52a65",
- "lightOrange": "#b15c00",
- "lightYellow": "#8c6c3e",
- "lightGreen": "#587539",
- "lightCyan": "#007197",
- "lightPurple": "#9854f1"
- },
- "theme": {
- "primary": {
- "dark": "darkStep9",
- "light": "lightStep9"
- },
- "secondary": {
- "dark": "darkPurple",
- "light": "lightPurple"
- },
- "accent": {
- "dark": "darkOrange",
- "light": "lightOrange"
- },
- "error": {
- "dark": "darkRed",
- "light": "lightRed"
- },
- "warning": {
- "dark": "darkOrange",
- "light": "lightOrange"
- },
- "success": {
- "dark": "darkGreen",
- "light": "lightGreen"
- },
- "info": {
- "dark": "darkStep9",
- "light": "lightStep9"
- },
- "text": {
- "dark": "darkStep12",
- "light": "lightStep12"
- },
- "textMuted": {
- "dark": "darkStep11",
- "light": "lightStep11"
- },
- "background": {
- "dark": "darkStep1",
- "light": "lightStep1"
- },
- "backgroundPanel": {
- "dark": "darkStep2",
- "light": "lightStep2"
- },
- "backgroundElement": {
- "dark": "darkStep3",
- "light": "lightStep3"
- },
- "border": {
- "dark": "darkStep7",
- "light": "lightStep7"
- },
- "borderActive": {
- "dark": "darkStep8",
- "light": "lightStep8"
- },
- "borderSubtle": {
- "dark": "darkStep6",
- "light": "lightStep6"
- },
- "diffAdded": {
- "dark": "#4fd6be",
- "light": "#1e725c"
- },
- "diffRemoved": {
- "dark": "#c53b53",
- "light": "#c53b53"
- },
- "diffContext": {
- "dark": "#828bb8",
- "light": "#7086b5"
- },
- "diffHunkHeader": {
- "dark": "#828bb8",
- "light": "#7086b5"
- },
- "diffHighlightAdded": {
- "dark": "#b8db87",
- "light": "#4db380"
- },
- "diffHighlightRemoved": {
- "dark": "#e26a75",
- "light": "#f52a65"
- },
- "diffAddedBg": {
- "dark": "#20303b",
- "light": "#d5e5d5"
- },
- "diffRemovedBg": {
- "dark": "#37222c",
- "light": "#f7d8db"
- },
- "diffContextBg": {
- "dark": "darkStep2",
- "light": "lightStep2"
- },
- "diffLineNumber": {
- "dark": "darkStep3",
- "light": "lightStep3"
- },
- "diffAddedLineNumberBg": {
- "dark": "#1b2b34",
- "light": "#c5d5c5"
- },
- "diffRemovedLineNumberBg": {
- "dark": "#2d1f26",
- "light": "#e7c8cb"
- },
- "markdownText": {
- "dark": "darkStep12",
- "light": "lightStep12"
- },
- "markdownHeading": {
- "dark": "darkPurple",
- "light": "lightPurple"
- },
- "markdownLink": {
- "dark": "darkStep9",
- "light": "lightStep9"
- },
- "markdownLinkText": {
- "dark": "darkCyan",
- "light": "lightCyan"
- },
- "markdownCode": {
- "dark": "darkGreen",
- "light": "lightGreen"
- },
- "markdownBlockQuote": {
- "dark": "darkYellow",
- "light": "lightYellow"
- },
- "markdownEmph": {
- "dark": "darkYellow",
- "light": "lightYellow"
- },
- "markdownStrong": {
- "dark": "darkOrange",
- "light": "lightOrange"
- },
- "markdownHorizontalRule": {
- "dark": "darkStep11",
- "light": "lightStep11"
- },
- "markdownListItem": {
- "dark": "darkStep9",
- "light": "lightStep9"
- },
- "markdownListEnumeration": {
- "dark": "darkCyan",
- "light": "lightCyan"
- },
- "markdownImage": {
- "dark": "darkStep9",
- "light": "lightStep9"
- },
- "markdownImageText": {
- "dark": "darkCyan",
- "light": "lightCyan"
- },
- "markdownCodeBlock": {
- "dark": "darkStep12",
- "light": "lightStep12"
- },
- "syntaxComment": {
- "dark": "darkStep11",
- "light": "lightStep11"
- },
- "syntaxKeyword": {
- "dark": "darkPurple",
- "light": "lightPurple"
- },
- "syntaxFunction": {
- "dark": "darkStep9",
- "light": "lightStep9"
- },
- "syntaxVariable": {
- "dark": "darkRed",
- "light": "lightRed"
- },
- "syntaxString": {
- "dark": "darkGreen",
- "light": "lightGreen"
- },
- "syntaxNumber": {
- "dark": "darkOrange",
- "light": "lightOrange"
- },
- "syntaxType": {
- "dark": "darkYellow",
- "light": "lightYellow"
- },
- "syntaxOperator": {
- "dark": "darkCyan",
- "light": "lightCyan"
- },
- "syntaxPunctuation": {
- "dark": "darkStep12",
- "light": "lightStep12"
- }
- }
-}
diff --git a/packages/tui/internal/theme/themes/vesper.json b/packages/tui/internal/theme/themes/vesper.json
deleted file mode 100644
index 758c8f20c..000000000
--- a/packages/tui/internal/theme/themes/vesper.json
+++ /dev/null
@@ -1,218 +0,0 @@
-{
- "$schema": "https://opencode.ai/theme.json",
- "defs": {
- "vesperBg": "#101010",
- "vesperFg": "#FFF",
- "vesperComment": "#8b8b8b",
- "vesperKeyword": "#A0A0A0",
- "vesperFunction": "#FFC799",
- "vesperString": "#99FFE4",
- "vesperNumber": "#FFC799",
- "vesperError": "#FF8080",
- "vesperWarning": "#FFC799",
- "vesperSuccess": "#99FFE4",
- "vesperMuted": "#A0A0A0"
- },
- "theme": {
- "primary": {
- "dark": "#FFC799",
- "light": "#FFC799"
- },
- "secondary": {
- "dark": "#99FFE4",
- "light": "#99FFE4"
- },
- "accent": {
- "dark": "#FFC799",
- "light": "#FFC799"
- },
- "error": {
- "dark": "vesperError",
- "light": "vesperError"
- },
- "warning": {
- "dark": "vesperWarning",
- "light": "vesperWarning"
- },
- "success": {
- "dark": "vesperSuccess",
- "light": "vesperSuccess"
- },
- "info": {
- "dark": "#FFC799",
- "light": "#FFC799"
- },
- "text": {
- "dark": "vesperFg",
- "light": "vesperBg"
- },
- "textMuted": {
- "dark": "vesperMuted",
- "light": "vesperMuted"
- },
- "background": {
- "dark": "vesperBg",
- "light": "#FFF"
- },
- "backgroundPanel": {
- "dark": "vesperBg",
- "light": "#F0F0F0"
- },
- "backgroundElement": {
- "dark": "vesperBg",
- "light": "#E0E0E0"
- },
- "border": {
- "dark": "#282828",
- "light": "#D0D0D0"
- },
- "borderActive": {
- "dark": "#FFC799",
- "light": "#FFC799"
- },
- "borderSubtle": {
- "dark": "#1C1C1C",
- "light": "#E8E8E8"
- },
- "diffAdded": {
- "dark": "vesperSuccess",
- "light": "vesperSuccess"
- },
- "diffRemoved": {
- "dark": "vesperError",
- "light": "vesperError"
- },
- "diffContext": {
- "dark": "vesperMuted",
- "light": "vesperMuted"
- },
- "diffHunkHeader": {
- "dark": "vesperMuted",
- "light": "vesperMuted"
- },
- "diffHighlightAdded": {
- "dark": "vesperSuccess",
- "light": "vesperSuccess"
- },
- "diffHighlightRemoved": {
- "dark": "vesperError",
- "light": "vesperError"
- },
- "diffAddedBg": {
- "dark": "#0d2818",
- "light": "#e8f5e8"
- },
- "diffRemovedBg": {
- "dark": "#281a1a",
- "light": "#f5e8e8"
- },
- "diffContextBg": {
- "dark": "vesperBg",
- "light": "#F8F8F8"
- },
- "diffLineNumber": {
- "dark": "#505050",
- "light": "#808080"
- },
- "diffAddedLineNumberBg": {
- "dark": "#0d2818",
- "light": "#e8f5e8"
- },
- "diffRemovedLineNumberBg": {
- "dark": "#281a1a",
- "light": "#f5e8e8"
- },
- "markdownText": {
- "dark": "vesperFg",
- "light": "vesperBg"
- },
- "markdownHeading": {
- "dark": "#FFC799",
- "light": "#FFC799"
- },
- "markdownLink": {
- "dark": "#FFC799",
- "light": "#FFC799"
- },
- "markdownLinkText": {
- "dark": "vesperMuted",
- "light": "vesperMuted"
- },
- "markdownCode": {
- "dark": "vesperMuted",
- "light": "vesperMuted"
- },
- "markdownBlockQuote": {
- "dark": "vesperFg",
- "light": "vesperBg"
- },
- "markdownEmph": {
- "dark": "vesperFg",
- "light": "vesperBg"
- },
- "markdownStrong": {
- "dark": "vesperFg",
- "light": "vesperBg"
- },
- "markdownHorizontalRule": {
- "dark": "#65737E",
- "light": "#65737E"
- },
- "markdownListItem": {
- "dark": "vesperFg",
- "light": "vesperBg"
- },
- "markdownListEnumeration": {
- "dark": "vesperFg",
- "light": "vesperBg"
- },
- "markdownImage": {
- "dark": "#FFC799",
- "light": "#FFC799"
- },
- "markdownImageText": {
- "dark": "vesperMuted",
- "light": "vesperMuted"
- },
- "markdownCodeBlock": {
- "dark": "vesperFg",
- "light": "vesperBg"
- },
- "syntaxComment": {
- "dark": "vesperComment",
- "light": "vesperComment"
- },
- "syntaxKeyword": {
- "dark": "vesperKeyword",
- "light": "vesperKeyword"
- },
- "syntaxFunction": {
- "dark": "vesperFunction",
- "light": "vesperFunction"
- },
- "syntaxVariable": {
- "dark": "vesperFg",
- "light": "vesperBg"
- },
- "syntaxString": {
- "dark": "vesperString",
- "light": "vesperString"
- },
- "syntaxNumber": {
- "dark": "vesperNumber",
- "light": "vesperNumber"
- },
- "syntaxType": {
- "dark": "vesperFunction",
- "light": "vesperFunction"
- },
- "syntaxOperator": {
- "dark": "vesperKeyword",
- "light": "vesperKeyword"
- },
- "syntaxPunctuation": {
- "dark": "vesperFg",
- "light": "vesperBg"
- }
- }
-}
diff --git a/packages/tui/internal/theme/themes/zenburn.json b/packages/tui/internal/theme/themes/zenburn.json
deleted file mode 100644
index c4475923b..000000000
--- a/packages/tui/internal/theme/themes/zenburn.json
+++ /dev/null
@@ -1,223 +0,0 @@
-{
- "$schema": "https://opencode.ai/theme.json",
- "defs": {
- "bg": "#3f3f3f",
- "bgAlt": "#4f4f4f",
- "bgPanel": "#5f5f5f",
- "fg": "#dcdccc",
- "fgMuted": "#9f9f9f",
- "red": "#cc9393",
- "redBright": "#dca3a3",
- "green": "#7f9f7f",
- "greenBright": "#8fb28f",
- "yellow": "#f0dfaf",
- "yellowDim": "#e0cf9f",
- "blue": "#8cd0d3",
- "blueDim": "#7cb8bb",
- "magenta": "#dc8cc3",
- "cyan": "#93e0e3",
- "orange": "#dfaf8f"
- },
- "theme": {
- "primary": {
- "dark": "blue",
- "light": "#5f7f8f"
- },
- "secondary": {
- "dark": "magenta",
- "light": "#8f5f8f"
- },
- "accent": {
- "dark": "cyan",
- "light": "#5f8f8f"
- },
- "error": {
- "dark": "red",
- "light": "#8f5f5f"
- },
- "warning": {
- "dark": "yellow",
- "light": "#8f8f5f"
- },
- "success": {
- "dark": "green",
- "light": "#5f8f5f"
- },
- "info": {
- "dark": "orange",
- "light": "#8f7f5f"
- },
- "text": {
- "dark": "fg",
- "light": "#3f3f3f"
- },
- "textMuted": {
- "dark": "fgMuted",
- "light": "#6f6f6f"
- },
- "background": {
- "dark": "bg",
- "light": "#ffffef"
- },
- "backgroundPanel": {
- "dark": "bgAlt",
- "light": "#f5f5e5"
- },
- "backgroundElement": {
- "dark": "bgPanel",
- "light": "#ebebdb"
- },
- "border": {
- "dark": "#5f5f5f",
- "light": "#d0d0c0"
- },
- "borderActive": {
- "dark": "blue",
- "light": "#5f7f8f"
- },
- "borderSubtle": {
- "dark": "#4f4f4f",
- "light": "#e0e0d0"
- },
- "diffAdded": {
- "dark": "green",
- "light": "#5f8f5f"
- },
- "diffRemoved": {
- "dark": "red",
- "light": "#8f5f5f"
- },
- "diffContext": {
- "dark": "fgMuted",
- "light": "#6f6f6f"
- },
- "diffHunkHeader": {
- "dark": "cyan",
- "light": "#5f8f8f"
- },
- "diffHighlightAdded": {
- "dark": "greenBright",
- "light": "#5f8f5f"
- },
- "diffHighlightRemoved": {
- "dark": "redBright",
- "light": "#8f5f5f"
- },
- "diffAddedBg": {
- "dark": "#4f5f4f",
- "light": "#efffef"
- },
- "diffRemovedBg": {
- "dark": "#5f4f4f",
- "light": "#ffefef"
- },
- "diffContextBg": {
- "dark": "bgAlt",
- "light": "#f5f5e5"
- },
- "diffLineNumber": {
- "dark": "#6f6f6f",
- "light": "#b0b0a0"
- },
- "diffAddedLineNumberBg": {
- "dark": "#4f5f4f",
- "light": "#efffef"
- },
- "diffRemovedLineNumberBg": {
- "dark": "#5f4f4f",
- "light": "#ffefef"
- },
- "markdownText": {
- "dark": "fg",
- "light": "#3f3f3f"
- },
- "markdownHeading": {
- "dark": "yellow",
- "light": "#8f8f5f"
- },
- "markdownLink": {
- "dark": "blue",
- "light": "#5f7f8f"
- },
- "markdownLinkText": {
- "dark": "cyan",
- "light": "#5f8f8f"
- },
- "markdownCode": {
- "dark": "green",
- "light": "#5f8f5f"
- },
- "markdownBlockQuote": {
- "dark": "fgMuted",
- "light": "#6f6f6f"
- },
- "markdownEmph": {
- "dark": "yellowDim",
- "light": "#8f8f5f"
- },
- "markdownStrong": {
- "dark": "orange",
- "light": "#8f7f5f"
- },
- "markdownHorizontalRule": {
- "dark": "fgMuted",
- "light": "#6f6f6f"
- },
- "markdownListItem": {
- "dark": "blue",
- "light": "#5f7f8f"
- },
- "markdownListEnumeration": {
- "dark": "cyan",
- "light": "#5f8f8f"
- },
- "markdownImage": {
- "dark": "blue",
- "light": "#5f7f8f"
- },
- "markdownImageText": {
- "dark": "cyan",
- "light": "#5f8f8f"
- },
- "markdownCodeBlock": {
- "dark": "fg",
- "light": "#3f3f3f"
- },
- "syntaxComment": {
- "dark": "#7f9f7f",
- "light": "#5f7f5f"
- },
- "syntaxKeyword": {
- "dark": "yellow",
- "light": "#8f8f5f"
- },
- "syntaxFunction": {
- "dark": "blue",
- "light": "#5f7f8f"
- },
- "syntaxVariable": {
- "dark": "fg",
- "light": "#3f3f3f"
- },
- "syntaxString": {
- "dark": "red",
- "light": "#8f5f5f"
- },
- "syntaxNumber": {
- "dark": "greenBright",
- "light": "#5f8f5f"
- },
- "syntaxType": {
- "dark": "cyan",
- "light": "#5f8f8f"
- },
- "syntaxOperator": {
- "dark": "yellow",
- "light": "#8f8f5f"
- },
- "syntaxPunctuation": {
- "dark": "fg",
- "light": "#3f3f3f"
- }
- }
-}