diff options
| author | adamdottv <[email protected]> | 2025-06-12 05:35:40 -0500 |
|---|---|---|
| committer | adamdottv <[email protected]> | 2025-06-12 16:00:24 -0500 |
| commit | cce2e4ad754479917fc8f6f24c1421cf19c04573 (patch) | |
| tree | 62c0ec32358932a468af73b44fd28e7de7859bbe /packages/tui/internal/theme | |
| parent | a1ce35c208bf9ebca37f722e845035bd7fd5e801 (diff) | |
| download | opencode-cce2e4ad754479917fc8f6f24c1421cf19c04573.tar.gz opencode-cce2e4ad754479917fc8f6f24c1421cf19c04573.zip | |
wip: refactoring tui
Diffstat (limited to 'packages/tui/internal/theme')
| -rw-r--r-- | packages/tui/internal/theme/ayu.go | 276 | ||||
| -rw-r--r-- | packages/tui/internal/theme/catppuccin.go | 244 | ||||
| -rw-r--r-- | packages/tui/internal/theme/dracula.go | 270 | ||||
| -rw-r--r-- | packages/tui/internal/theme/flexoki.go | 278 | ||||
| -rw-r--r-- | packages/tui/internal/theme/gruvbox.go | 298 | ||||
| -rw-r--r-- | packages/tui/internal/theme/manager.go | 5 | ||||
| -rw-r--r-- | packages/tui/internal/theme/monokai.go | 269 | ||||
| -rw-r--r-- | packages/tui/internal/theme/onedark.go | 270 | ||||
| -rw-r--r-- | packages/tui/internal/theme/opencode.go | 303 | ||||
| -rw-r--r-- | packages/tui/internal/theme/theme.go | 359 | ||||
| -rw-r--r-- | packages/tui/internal/theme/tokyonight.go | 303 | ||||
| -rw-r--r-- | packages/tui/internal/theme/tron.go | 272 |
12 files changed, 486 insertions, 2661 deletions
diff --git a/packages/tui/internal/theme/ayu.go b/packages/tui/internal/theme/ayu.go deleted file mode 100644 index 947e41e5b..000000000 --- a/packages/tui/internal/theme/ayu.go +++ /dev/null @@ -1,276 +0,0 @@ -package theme - -import ( - "github.com/charmbracelet/lipgloss" -) - -// AyuDarkTheme implements the Theme interface with Ayu Dark colors. -type AyuDarkTheme struct { - BaseTheme -} - -// AyuLightTheme implements the Theme interface with Ayu Light colors. -type AyuLightTheme struct { - BaseTheme -} - -// AyuMirageTheme implements the Theme interface with Ayu Mirage colors. -type AyuMirageTheme struct { - BaseTheme -} - -// NewAyuDarkTheme creates a new instance of the Ayu Dark theme. -func NewAyuDarkTheme() *AyuDarkTheme { - // Ayu Dark color palette - darkBackground := "#0f1419" - darkCurrentLine := "#191f26" - darkSelection := "#253340" - darkForeground := "#b3b1ad" - darkComment := "#5c6773" - darkBlue := "#53bdfa" - darkCyan := "#90e1c6" - darkGreen := "#91b362" - darkOrange := "#f9af4f" - darkPurple := "#fae994" - darkRed := "#ea6c73" - darkBorder := "#253340" - - // Light mode approximation for terminal compatibility - lightBackground := "#fafafa" - lightCurrentLine := "#f0f0f0" - lightSelection := "#d1d1d1" - lightForeground := "#5c6773" - lightComment := "#828c99" - lightBlue := "#3199e1" - lightCyan := "#46ba94" - lightGreen := "#7c9f32" - lightOrange := "#f29718" - lightPurple := "#9e75c7" - lightRed := "#f07171" - lightBorder := "#d1d1d1" - - theme := &AyuDarkTheme{} - - // Base colors - theme.PrimaryColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - theme.SecondaryColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.AccentColor = lipgloss.AdaptiveColor{ - Dark: darkOrange, - Light: lightOrange, - } - - // Status colors - theme.ErrorColor = lipgloss.AdaptiveColor{ - Dark: darkRed, - Light: lightRed, - } - theme.WarningColor = lipgloss.AdaptiveColor{ - Dark: darkOrange, - Light: lightOrange, - } - theme.SuccessColor = lipgloss.AdaptiveColor{ - Dark: darkGreen, - Light: lightGreen, - } - theme.InfoColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - - // Text colors - theme.TextColor = lipgloss.AdaptiveColor{ - Dark: darkForeground, - Light: lightForeground, - } - theme.TextMutedColor = lipgloss.AdaptiveColor{ - Dark: darkComment, - Light: lightComment, - } - - // Background colors - theme.BackgroundColor = lipgloss.AdaptiveColor{ - Dark: darkBackground, - Light: lightBackground, - } - theme.BackgroundSubtleColor = lipgloss.AdaptiveColor{ - Dark: darkCurrentLine, - Light: lightCurrentLine, - } - theme.BackgroundElementColor = lipgloss.AdaptiveColor{ - Dark: "#0b0e14", // Darker than background - Light: "#ffffff", // Lighter than background - } - - // Border colors - theme.BorderColor = lipgloss.AdaptiveColor{ - Dark: darkBorder, - Light: lightBorder, - } - theme.BorderActiveColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - theme.BorderSubtleColor = lipgloss.AdaptiveColor{ - Dark: darkSelection, - Light: lightSelection, - } - - // Diff view colors - theme.DiffAddedColor = lipgloss.AdaptiveColor{ - Dark: darkGreen, - Light: lightGreen, - } - theme.DiffRemovedColor = lipgloss.AdaptiveColor{ - Dark: darkRed, - Light: lightRed, - } - theme.DiffContextColor = lipgloss.AdaptiveColor{ - Dark: darkComment, - Light: lightComment, - } - theme.DiffHunkHeaderColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - theme.DiffHighlightAddedColor = lipgloss.AdaptiveColor{ - Dark: "#91b362", - Light: "#a5d6a7", - } - theme.DiffHighlightRemovedColor = lipgloss.AdaptiveColor{ - Dark: "#ea6c73", - Light: "#ef9a9a", - } - theme.DiffAddedBgColor = lipgloss.AdaptiveColor{ - Dark: "#1f2c1f", - Light: "#e8f5e9", - } - theme.DiffRemovedBgColor = lipgloss.AdaptiveColor{ - Dark: "#2c1f1f", - Light: "#ffebee", - } - theme.DiffContextBgColor = lipgloss.AdaptiveColor{ - Dark: darkBackground, - Light: lightBackground, - } - theme.DiffLineNumberColor = lipgloss.AdaptiveColor{ - Dark: darkComment, - Light: lightComment, - } - theme.DiffAddedLineNumberBgColor = lipgloss.AdaptiveColor{ - Dark: "#1a261a", - Light: "#c8e6c9", - } - theme.DiffRemovedLineNumberBgColor = lipgloss.AdaptiveColor{ - Dark: "#261a1a", - Light: "#ffcdd2", - } - - // Markdown colors - theme.MarkdownTextColor = lipgloss.AdaptiveColor{ - Dark: darkForeground, - Light: lightForeground, - } - theme.MarkdownHeadingColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - theme.MarkdownLinkColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.MarkdownLinkTextColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - theme.MarkdownCodeColor = lipgloss.AdaptiveColor{ - Dark: darkGreen, - Light: lightGreen, - } - theme.MarkdownBlockQuoteColor = lipgloss.AdaptiveColor{ - Dark: darkComment, - Light: lightComment, - } - theme.MarkdownEmphColor = lipgloss.AdaptiveColor{ - Dark: darkPurple, - Light: lightPurple, - } - theme.MarkdownStrongColor = lipgloss.AdaptiveColor{ - Dark: darkOrange, - Light: lightOrange, - } - theme.MarkdownHorizontalRuleColor = lipgloss.AdaptiveColor{ - Dark: darkComment, - Light: lightComment, - } - theme.MarkdownListItemColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - theme.MarkdownListEnumerationColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.MarkdownImageColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - theme.MarkdownImageTextColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.MarkdownCodeBlockColor = lipgloss.AdaptiveColor{ - Dark: darkForeground, - Light: lightForeground, - } - - // Syntax highlighting colors - theme.SyntaxCommentColor = lipgloss.AdaptiveColor{ - Dark: darkComment, - Light: lightComment, - } - theme.SyntaxKeywordColor = lipgloss.AdaptiveColor{ - Dark: darkPurple, - Light: lightPurple, - } - theme.SyntaxFunctionColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - theme.SyntaxVariableColor = lipgloss.AdaptiveColor{ - Dark: darkForeground, - Light: lightForeground, - } - theme.SyntaxStringColor = lipgloss.AdaptiveColor{ - Dark: darkGreen, - Light: lightGreen, - } - theme.SyntaxNumberColor = lipgloss.AdaptiveColor{ - Dark: darkPurple, - Light: lightPurple, - } - theme.SyntaxTypeColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.SyntaxOperatorColor = lipgloss.AdaptiveColor{ - Dark: darkOrange, - Light: lightOrange, - } - theme.SyntaxPunctuationColor = lipgloss.AdaptiveColor{ - Dark: darkForeground, - Light: lightForeground, - } - - return theme -} - -func init() { - // Register all three Ayu theme variants with the theme manager - RegisterTheme("ayu", NewAyuDarkTheme()) -} diff --git a/packages/tui/internal/theme/catppuccin.go b/packages/tui/internal/theme/catppuccin.go deleted file mode 100644 index 976eb7fbd..000000000 --- a/packages/tui/internal/theme/catppuccin.go +++ /dev/null @@ -1,244 +0,0 @@ -package theme - -import ( - catppuccin "github.com/catppuccin/go" - "github.com/charmbracelet/lipgloss" -) - -// CatppuccinTheme implements the Theme interface with Catppuccin colors. -// It provides both dark (Mocha) and light (Latte) variants. -type CatppuccinTheme struct { - BaseTheme -} - -// NewCatppuccinTheme creates a new instance of the Catppuccin theme. -func NewCatppuccinTheme() *CatppuccinTheme { - // Get the Catppuccin palettes - mocha := catppuccin.Mocha - latte := catppuccin.Latte - - theme := &CatppuccinTheme{} - - // Base colors - theme.PrimaryColor = lipgloss.AdaptiveColor{ - Dark: mocha.Blue().Hex, - Light: latte.Blue().Hex, - } - theme.SecondaryColor = lipgloss.AdaptiveColor{ - Dark: mocha.Mauve().Hex, - Light: latte.Mauve().Hex, - } - theme.AccentColor = lipgloss.AdaptiveColor{ - Dark: mocha.Peach().Hex, - Light: latte.Peach().Hex, - } - - // Status colors - theme.ErrorColor = lipgloss.AdaptiveColor{ - Dark: mocha.Red().Hex, - Light: latte.Red().Hex, - } - theme.WarningColor = lipgloss.AdaptiveColor{ - Dark: mocha.Peach().Hex, - Light: latte.Peach().Hex, - } - theme.SuccessColor = lipgloss.AdaptiveColor{ - Dark: mocha.Green().Hex, - Light: latte.Green().Hex, - } - theme.InfoColor = lipgloss.AdaptiveColor{ - Dark: mocha.Blue().Hex, - Light: latte.Blue().Hex, - } - - // Text colors - theme.TextColor = lipgloss.AdaptiveColor{ - Dark: mocha.Text().Hex, - Light: latte.Text().Hex, - } - theme.TextMutedColor = lipgloss.AdaptiveColor{ - Dark: mocha.Subtext0().Hex, - Light: latte.Subtext0().Hex, - } - - // Background colors - theme.BackgroundColor = lipgloss.AdaptiveColor{ - Dark: "#212121", // From existing styles - Light: "#EEEEEE", // Light equivalent - } - theme.BackgroundSubtleColor = lipgloss.AdaptiveColor{ - Dark: "#2c2c2c", // From existing styles - Light: "#E0E0E0", // Light equivalent - } - theme.BackgroundElementColor = lipgloss.AdaptiveColor{ - Dark: "#181818", // From existing styles - Light: "#F5F5F5", // Light equivalent - } - - // Border colors - theme.BorderColor = lipgloss.AdaptiveColor{ - Dark: "#4b4c5c", // From existing styles - Light: "#BDBDBD", // Light equivalent - } - theme.BorderActiveColor = lipgloss.AdaptiveColor{ - Dark: mocha.Blue().Hex, - Light: latte.Blue().Hex, - } - theme.BorderSubtleColor = lipgloss.AdaptiveColor{ - Dark: mocha.Surface0().Hex, - Light: latte.Surface0().Hex, - } - - // Diff view colors - theme.DiffAddedColor = lipgloss.AdaptiveColor{ - Dark: "#478247", // From existing diff.go - Light: "#2E7D32", // Light equivalent - } - theme.DiffRemovedColor = lipgloss.AdaptiveColor{ - Dark: "#7C4444", // From existing diff.go - Light: "#C62828", // Light equivalent - } - theme.DiffContextColor = lipgloss.AdaptiveColor{ - Dark: "#a0a0a0", // From existing diff.go - Light: "#757575", // Light equivalent - } - theme.DiffHunkHeaderColor = lipgloss.AdaptiveColor{ - Dark: "#a0a0a0", // From existing diff.go - Light: "#757575", // Light equivalent - } - theme.DiffHighlightAddedColor = lipgloss.AdaptiveColor{ - Dark: "#DAFADA", // From existing diff.go - Light: "#A5D6A7", // Light equivalent - } - theme.DiffHighlightRemovedColor = lipgloss.AdaptiveColor{ - Dark: "#FADADD", // From existing diff.go - Light: "#EF9A9A", // Light equivalent - } - theme.DiffAddedBgColor = lipgloss.AdaptiveColor{ - Dark: "#303A30", // From existing diff.go - Light: "#E8F5E9", // Light equivalent - } - theme.DiffRemovedBgColor = lipgloss.AdaptiveColor{ - Dark: "#3A3030", // From existing diff.go - Light: "#FFEBEE", // Light equivalent - } - theme.DiffContextBgColor = lipgloss.AdaptiveColor{ - Dark: "#212121", // From existing diff.go - Light: "#F5F5F5", // Light equivalent - } - theme.DiffLineNumberColor = lipgloss.AdaptiveColor{ - Dark: "#888888", // From existing diff.go - Light: "#9E9E9E", // Light equivalent - } - theme.DiffAddedLineNumberBgColor = lipgloss.AdaptiveColor{ - Dark: "#293229", // From existing diff.go - Light: "#C8E6C9", // Light equivalent - } - theme.DiffRemovedLineNumberBgColor = lipgloss.AdaptiveColor{ - Dark: "#332929", // From existing diff.go - Light: "#FFCDD2", // Light equivalent - } - - // Markdown colors - theme.MarkdownTextColor = lipgloss.AdaptiveColor{ - Dark: mocha.Text().Hex, - Light: latte.Text().Hex, - } - theme.MarkdownHeadingColor = lipgloss.AdaptiveColor{ - Dark: mocha.Mauve().Hex, - Light: latte.Mauve().Hex, - } - theme.MarkdownLinkColor = lipgloss.AdaptiveColor{ - Dark: mocha.Sky().Hex, - Light: latte.Sky().Hex, - } - theme.MarkdownLinkTextColor = lipgloss.AdaptiveColor{ - Dark: mocha.Pink().Hex, - Light: latte.Pink().Hex, - } - theme.MarkdownCodeColor = lipgloss.AdaptiveColor{ - Dark: mocha.Green().Hex, - Light: latte.Green().Hex, - } - theme.MarkdownBlockQuoteColor = lipgloss.AdaptiveColor{ - Dark: mocha.Yellow().Hex, - Light: latte.Yellow().Hex, - } - theme.MarkdownEmphColor = lipgloss.AdaptiveColor{ - Dark: mocha.Yellow().Hex, - Light: latte.Yellow().Hex, - } - theme.MarkdownStrongColor = lipgloss.AdaptiveColor{ - Dark: mocha.Peach().Hex, - Light: latte.Peach().Hex, - } - theme.MarkdownHorizontalRuleColor = lipgloss.AdaptiveColor{ - Dark: mocha.Overlay0().Hex, - Light: latte.Overlay0().Hex, - } - theme.MarkdownListItemColor = lipgloss.AdaptiveColor{ - Dark: mocha.Blue().Hex, - Light: latte.Blue().Hex, - } - theme.MarkdownListEnumerationColor = lipgloss.AdaptiveColor{ - Dark: mocha.Sky().Hex, - Light: latte.Sky().Hex, - } - theme.MarkdownImageColor = lipgloss.AdaptiveColor{ - Dark: mocha.Sapphire().Hex, - Light: latte.Sapphire().Hex, - } - theme.MarkdownImageTextColor = lipgloss.AdaptiveColor{ - Dark: mocha.Pink().Hex, - Light: latte.Pink().Hex, - } - theme.MarkdownCodeBlockColor = lipgloss.AdaptiveColor{ - Dark: mocha.Text().Hex, - Light: latte.Text().Hex, - } - - // Syntax highlighting colors - theme.SyntaxCommentColor = lipgloss.AdaptiveColor{ - Dark: mocha.Overlay1().Hex, - Light: latte.Overlay1().Hex, - } - theme.SyntaxKeywordColor = lipgloss.AdaptiveColor{ - Dark: mocha.Pink().Hex, - Light: latte.Pink().Hex, - } - theme.SyntaxFunctionColor = lipgloss.AdaptiveColor{ - Dark: mocha.Green().Hex, - Light: latte.Green().Hex, - } - theme.SyntaxVariableColor = lipgloss.AdaptiveColor{ - Dark: mocha.Sky().Hex, - Light: latte.Sky().Hex, - } - theme.SyntaxStringColor = lipgloss.AdaptiveColor{ - Dark: mocha.Yellow().Hex, - Light: latte.Yellow().Hex, - } - theme.SyntaxNumberColor = lipgloss.AdaptiveColor{ - Dark: mocha.Teal().Hex, - Light: latte.Teal().Hex, - } - theme.SyntaxTypeColor = lipgloss.AdaptiveColor{ - Dark: mocha.Sky().Hex, - Light: latte.Sky().Hex, - } - theme.SyntaxOperatorColor = lipgloss.AdaptiveColor{ - Dark: mocha.Pink().Hex, - Light: latte.Pink().Hex, - } - theme.SyntaxPunctuationColor = lipgloss.AdaptiveColor{ - Dark: mocha.Text().Hex, - Light: latte.Text().Hex, - } - - return theme -} - -func init() { - // Register the Catppuccin theme with the theme manager - RegisterTheme("catppuccin", NewCatppuccinTheme()) -} diff --git a/packages/tui/internal/theme/dracula.go b/packages/tui/internal/theme/dracula.go deleted file mode 100644 index 7f14d6290..000000000 --- a/packages/tui/internal/theme/dracula.go +++ /dev/null @@ -1,270 +0,0 @@ -package theme - -import ( - "github.com/charmbracelet/lipgloss" -) - -// DraculaTheme implements the Theme interface with Dracula colors. -// It provides both dark and light variants, though Dracula is primarily a dark theme. -type DraculaTheme struct { - BaseTheme -} - -// NewDraculaTheme creates a new instance of the Dracula theme. -func NewDraculaTheme() *DraculaTheme { - // Dracula color palette - // Official colors from https://draculatheme.com/ - darkBackground := "#282a36" - darkCurrentLine := "#44475a" - darkSelection := "#44475a" - darkForeground := "#f8f8f2" - darkComment := "#6272a4" - darkCyan := "#8be9fd" - darkGreen := "#50fa7b" - darkOrange := "#ffb86c" - darkPink := "#ff79c6" - darkPurple := "#bd93f9" - darkRed := "#ff5555" - darkYellow := "#f1fa8c" - darkBorder := "#44475a" - - // Light mode approximation (Dracula is primarily a dark theme) - lightBackground := "#f8f8f2" - lightCurrentLine := "#e6e6e6" - lightSelection := "#d8d8d8" - lightForeground := "#282a36" - lightComment := "#6272a4" - lightCyan := "#0097a7" - lightGreen := "#388e3c" - lightOrange := "#f57c00" - lightPink := "#d81b60" - lightPurple := "#7e57c2" - lightRed := "#e53935" - lightYellow := "#fbc02d" - lightBorder := "#d8d8d8" - - theme := &DraculaTheme{} - - // Base colors - theme.PrimaryColor = lipgloss.AdaptiveColor{ - Dark: darkPurple, - Light: lightPurple, - } - theme.SecondaryColor = lipgloss.AdaptiveColor{ - Dark: darkPink, - Light: lightPink, - } - theme.AccentColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - - // Status colors - theme.ErrorColor = lipgloss.AdaptiveColor{ - Dark: darkRed, - Light: lightRed, - } - theme.WarningColor = lipgloss.AdaptiveColor{ - Dark: darkOrange, - Light: lightOrange, - } - theme.SuccessColor = lipgloss.AdaptiveColor{ - Dark: darkGreen, - Light: lightGreen, - } - theme.InfoColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - - // Text colors - theme.TextColor = lipgloss.AdaptiveColor{ - Dark: darkForeground, - Light: lightForeground, - } - theme.TextMutedColor = lipgloss.AdaptiveColor{ - Dark: darkComment, - Light: lightComment, - } - - // Background colors - theme.BackgroundElementColor = lipgloss.AdaptiveColor{ - Dark: darkBackground, - Light: lightBackground, - } - theme.BackgroundSubtleColor = lipgloss.AdaptiveColor{ - Dark: darkCurrentLine, - Light: lightCurrentLine, - } - theme.BackgroundColor = lipgloss.AdaptiveColor{ - Dark: "#21222c", // Slightly darker than background - Light: "#ffffff", // Slightly lighter than background - } - - // Border colors - theme.BorderColor = lipgloss.AdaptiveColor{ - Dark: darkBorder, - Light: lightBorder, - } - theme.BorderActiveColor = lipgloss.AdaptiveColor{ - Dark: darkPurple, - Light: lightPurple, - } - theme.BorderSubtleColor = lipgloss.AdaptiveColor{ - Dark: darkSelection, - Light: lightSelection, - } - - // Diff view colors - theme.DiffAddedColor = lipgloss.AdaptiveColor{ - Dark: darkGreen, - Light: lightGreen, - } - theme.DiffRemovedColor = lipgloss.AdaptiveColor{ - Dark: darkRed, - Light: lightRed, - } - theme.DiffContextColor = lipgloss.AdaptiveColor{ - Dark: darkComment, - Light: lightComment, - } - theme.DiffHunkHeaderColor = lipgloss.AdaptiveColor{ - Dark: darkCurrentLine, - Light: lightCurrentLine, - } - theme.DiffHighlightAddedColor = lipgloss.AdaptiveColor{ - Dark: "#50fa7b", - Light: "#a5d6a7", - } - theme.DiffHighlightRemovedColor = lipgloss.AdaptiveColor{ - Dark: "#ff5555", - Light: "#ef9a9a", - } - theme.DiffAddedBgColor = lipgloss.AdaptiveColor{ - Dark: "#2c3b2c", - Light: "#e8f5e9", - } - theme.DiffRemovedBgColor = lipgloss.AdaptiveColor{ - Dark: "#3b2c2c", - Light: "#ffebee", - } - theme.DiffContextBgColor = lipgloss.AdaptiveColor{ - Dark: darkBackground, - Light: lightBackground, - } - theme.DiffLineNumberColor = lipgloss.AdaptiveColor{ - Dark: darkComment, - Light: lightComment, - } - theme.DiffAddedLineNumberBgColor = lipgloss.AdaptiveColor{ - Dark: "#253025", - Light: "#c8e6c9", - } - theme.DiffRemovedLineNumberBgColor = lipgloss.AdaptiveColor{ - Dark: "#302525", - Light: "#ffcdd2", - } - - // Markdown colors - theme.MarkdownTextColor = lipgloss.AdaptiveColor{ - Dark: darkForeground, - Light: lightForeground, - } - theme.MarkdownHeadingColor = lipgloss.AdaptiveColor{ - Dark: darkPink, - Light: lightPink, - } - theme.MarkdownLinkColor = lipgloss.AdaptiveColor{ - Dark: darkPurple, - Light: lightPurple, - } - theme.MarkdownLinkTextColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.MarkdownCodeColor = lipgloss.AdaptiveColor{ - Dark: darkGreen, - Light: lightGreen, - } - theme.MarkdownBlockQuoteColor = lipgloss.AdaptiveColor{ - Dark: darkYellow, - Light: lightYellow, - } - theme.MarkdownEmphColor = lipgloss.AdaptiveColor{ - Dark: darkYellow, - Light: lightYellow, - } - theme.MarkdownStrongColor = lipgloss.AdaptiveColor{ - Dark: darkOrange, - Light: lightOrange, - } - theme.MarkdownHorizontalRuleColor = lipgloss.AdaptiveColor{ - Dark: darkComment, - Light: lightComment, - } - theme.MarkdownListItemColor = lipgloss.AdaptiveColor{ - Dark: darkPurple, - Light: lightPurple, - } - theme.MarkdownListEnumerationColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.MarkdownImageColor = lipgloss.AdaptiveColor{ - Dark: darkPurple, - Light: lightPurple, - } - theme.MarkdownImageTextColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.MarkdownCodeBlockColor = lipgloss.AdaptiveColor{ - Dark: darkForeground, - Light: lightForeground, - } - - // Syntax highlighting colors - theme.SyntaxCommentColor = lipgloss.AdaptiveColor{ - Dark: darkComment, - Light: lightComment, - } - theme.SyntaxKeywordColor = lipgloss.AdaptiveColor{ - Dark: darkPink, - Light: lightPink, - } - theme.SyntaxFunctionColor = lipgloss.AdaptiveColor{ - Dark: darkGreen, - Light: lightGreen, - } - theme.SyntaxVariableColor = lipgloss.AdaptiveColor{ - Dark: darkOrange, - Light: lightOrange, - } - theme.SyntaxStringColor = lipgloss.AdaptiveColor{ - Dark: darkYellow, - Light: lightYellow, - } - theme.SyntaxNumberColor = lipgloss.AdaptiveColor{ - Dark: darkPurple, - Light: lightPurple, - } - theme.SyntaxTypeColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.SyntaxOperatorColor = lipgloss.AdaptiveColor{ - Dark: darkPink, - Light: lightPink, - } - theme.SyntaxPunctuationColor = lipgloss.AdaptiveColor{ - Dark: darkForeground, - Light: lightForeground, - } - - return theme -} - -func init() { - // Register the Dracula theme with the theme manager - RegisterTheme("dracula", NewDraculaTheme()) -} diff --git a/packages/tui/internal/theme/flexoki.go b/packages/tui/internal/theme/flexoki.go deleted file mode 100644 index ad5443869..000000000 --- a/packages/tui/internal/theme/flexoki.go +++ /dev/null @@ -1,278 +0,0 @@ -package theme - -import ( - "github.com/charmbracelet/lipgloss" -) - -// Flexoki color palette constants -const ( - // Base colors - flexokiPaper = "#FFFCF0" // Paper (lightest) - flexokiBase50 = "#F2F0E5" // bg-2 (light) - flexokiBase100 = "#E6E4D9" // ui (light) - flexokiBase150 = "#DAD8CE" // ui-2 (light) - flexokiBase200 = "#CECDC3" // ui-3 (light) - flexokiBase300 = "#B7B5AC" // tx-3 (light) - flexokiBase500 = "#878580" // tx-2 (light) - flexokiBase600 = "#6F6E69" // tx (light) - flexokiBase700 = "#575653" // tx-3 (dark) - flexokiBase800 = "#403E3C" // ui-3 (dark) - flexokiBase850 = "#343331" // ui-2 (dark) - flexokiBase900 = "#282726" // ui (dark) - flexokiBase950 = "#1C1B1A" // bg-2 (dark) - flexokiBlack = "#100F0F" // bg (darkest) - - // Accent colors - Light theme (600) - flexokiRed600 = "#AF3029" - flexokiOrange600 = "#BC5215" - flexokiYellow600 = "#AD8301" - flexokiGreen600 = "#66800B" - flexokiCyan600 = "#24837B" - flexokiBlue600 = "#205EA6" - flexokiPurple600 = "#5E409D" - flexokiMagenta600 = "#A02F6F" - - // Accent colors - Dark theme (400) - flexokiRed400 = "#D14D41" - flexokiOrange400 = "#DA702C" - flexokiYellow400 = "#D0A215" - flexokiGreen400 = "#879A39" - flexokiCyan400 = "#3AA99F" - flexokiBlue400 = "#4385BE" - flexokiPurple400 = "#8B7EC8" - flexokiMagenta400 = "#CE5D97" -) - -// FlexokiTheme implements the Theme interface with Flexoki colors. -// It provides both dark and light variants. -type FlexokiTheme struct { - BaseTheme -} - -// NewFlexokiTheme creates a new instance of the Flexoki theme. -func NewFlexokiTheme() *FlexokiTheme { - theme := &FlexokiTheme{} - - // Base colors - theme.PrimaryColor = lipgloss.AdaptiveColor{ - Dark: flexokiBlue400, - Light: flexokiBlue600, - } - theme.SecondaryColor = lipgloss.AdaptiveColor{ - Dark: flexokiPurple400, - Light: flexokiPurple600, - } - theme.AccentColor = lipgloss.AdaptiveColor{ - Dark: flexokiOrange400, - Light: flexokiOrange600, - } - - // Status colors - theme.ErrorColor = lipgloss.AdaptiveColor{ - Dark: flexokiRed400, - Light: flexokiRed600, - } - theme.WarningColor = lipgloss.AdaptiveColor{ - Dark: flexokiYellow400, - Light: flexokiYellow600, - } - theme.SuccessColor = lipgloss.AdaptiveColor{ - Dark: flexokiGreen400, - Light: flexokiGreen600, - } - theme.InfoColor = lipgloss.AdaptiveColor{ - Dark: flexokiCyan400, - Light: flexokiCyan600, - } - - // Text colors - theme.TextColor = lipgloss.AdaptiveColor{ - Dark: flexokiBase300, - Light: flexokiBase600, - } - theme.TextMutedColor = lipgloss.AdaptiveColor{ - Dark: flexokiBase700, - Light: flexokiBase500, - } - - // Background colors - theme.BackgroundColor = lipgloss.AdaptiveColor{ - Dark: flexokiBlack, - Light: flexokiPaper, - } - theme.BackgroundSubtleColor = lipgloss.AdaptiveColor{ - Dark: flexokiBase950, - Light: flexokiBase50, - } - theme.BackgroundElementColor = lipgloss.AdaptiveColor{ - Dark: flexokiBase900, - Light: flexokiBase100, - } - - // Border colors - theme.BorderColor = lipgloss.AdaptiveColor{ - Dark: flexokiBase900, - Light: flexokiBase100, - } - theme.BorderActiveColor = lipgloss.AdaptiveColor{ - Dark: flexokiBlue400, - Light: flexokiBlue600, - } - theme.BorderSubtleColor = lipgloss.AdaptiveColor{ - Dark: flexokiBase850, - Light: flexokiBase150, - } - - // Diff view colors - theme.DiffAddedColor = lipgloss.AdaptiveColor{ - Dark: flexokiGreen400, - Light: flexokiGreen600, - } - theme.DiffRemovedColor = lipgloss.AdaptiveColor{ - Dark: flexokiRed400, - Light: flexokiRed600, - } - theme.DiffContextColor = lipgloss.AdaptiveColor{ - Dark: flexokiBase700, - Light: flexokiBase500, - } - theme.DiffHunkHeaderColor = lipgloss.AdaptiveColor{ - Dark: flexokiBase700, - Light: flexokiBase500, - } - theme.DiffHighlightAddedColor = lipgloss.AdaptiveColor{ - Dark: flexokiGreen400, - Light: flexokiGreen600, - } - theme.DiffHighlightRemovedColor = lipgloss.AdaptiveColor{ - Dark: flexokiRed400, - Light: flexokiRed600, - } - theme.DiffAddedBgColor = lipgloss.AdaptiveColor{ - Dark: "#1D2419", // Darker green background - Light: "#EFF2E2", // Light green background - } - theme.DiffRemovedBgColor = lipgloss.AdaptiveColor{ - Dark: "#241919", // Darker red background - Light: "#F2E2E2", // Light red background - } - theme.DiffContextBgColor = lipgloss.AdaptiveColor{ - Dark: flexokiBlack, - Light: flexokiPaper, - } - theme.DiffLineNumberColor = lipgloss.AdaptiveColor{ - Dark: flexokiBase700, - Light: flexokiBase500, - } - theme.DiffAddedLineNumberBgColor = lipgloss.AdaptiveColor{ - Dark: "#1A2017", // Slightly darker green - Light: "#E5EBD9", // Light green - } - theme.DiffRemovedLineNumberBgColor = lipgloss.AdaptiveColor{ - Dark: "#201717", // Slightly darker red - Light: "#EBD9D9", // Light red - } - - // Markdown colors - theme.MarkdownTextColor = lipgloss.AdaptiveColor{ - Dark: flexokiBase300, - Light: flexokiBase600, - } - theme.MarkdownHeadingColor = lipgloss.AdaptiveColor{ - Dark: flexokiYellow400, - Light: flexokiYellow600, - } - theme.MarkdownLinkColor = lipgloss.AdaptiveColor{ - Dark: flexokiCyan400, - Light: flexokiCyan600, - } - theme.MarkdownLinkTextColor = lipgloss.AdaptiveColor{ - Dark: flexokiMagenta400, - Light: flexokiMagenta600, - } - theme.MarkdownCodeColor = lipgloss.AdaptiveColor{ - Dark: flexokiGreen400, - Light: flexokiGreen600, - } - theme.MarkdownBlockQuoteColor = lipgloss.AdaptiveColor{ - Dark: flexokiCyan400, - Light: flexokiCyan600, - } - theme.MarkdownEmphColor = lipgloss.AdaptiveColor{ - Dark: flexokiYellow400, - Light: flexokiYellow600, - } - theme.MarkdownStrongColor = lipgloss.AdaptiveColor{ - Dark: flexokiOrange400, - Light: flexokiOrange600, - } - theme.MarkdownHorizontalRuleColor = lipgloss.AdaptiveColor{ - Dark: flexokiBase800, - Light: flexokiBase200, - } - theme.MarkdownListItemColor = lipgloss.AdaptiveColor{ - Dark: flexokiBlue400, - Light: flexokiBlue600, - } - theme.MarkdownListEnumerationColor = lipgloss.AdaptiveColor{ - Dark: flexokiBlue400, - Light: flexokiBlue600, - } - theme.MarkdownImageColor = lipgloss.AdaptiveColor{ - Dark: flexokiPurple400, - Light: flexokiPurple600, - } - theme.MarkdownImageTextColor = lipgloss.AdaptiveColor{ - Dark: flexokiMagenta400, - Light: flexokiMagenta600, - } - theme.MarkdownCodeBlockColor = lipgloss.AdaptiveColor{ - Dark: flexokiBase300, - Light: flexokiBase600, - } - - // Syntax highlighting colors (based on Flexoki's mappings) - theme.SyntaxCommentColor = lipgloss.AdaptiveColor{ - Dark: flexokiBase700, // tx-3 - Light: flexokiBase300, // tx-3 - } - theme.SyntaxKeywordColor = lipgloss.AdaptiveColor{ - Dark: flexokiGreen400, // gr - Light: flexokiGreen600, // gr - } - theme.SyntaxFunctionColor = lipgloss.AdaptiveColor{ - Dark: flexokiOrange400, // or - Light: flexokiOrange600, // or - } - theme.SyntaxVariableColor = lipgloss.AdaptiveColor{ - Dark: flexokiBlue400, // bl - Light: flexokiBlue600, // bl - } - theme.SyntaxStringColor = lipgloss.AdaptiveColor{ - Dark: flexokiCyan400, // cy - Light: flexokiCyan600, // cy - } - theme.SyntaxNumberColor = lipgloss.AdaptiveColor{ - Dark: flexokiPurple400, // pu - Light: flexokiPurple600, // pu - } - theme.SyntaxTypeColor = lipgloss.AdaptiveColor{ - Dark: flexokiYellow400, // ye - Light: flexokiYellow600, // ye - } - theme.SyntaxOperatorColor = lipgloss.AdaptiveColor{ - Dark: flexokiBase500, // tx-2 - Light: flexokiBase500, // tx-2 - } - theme.SyntaxPunctuationColor = lipgloss.AdaptiveColor{ - Dark: flexokiBase500, // tx-2 - Light: flexokiBase500, // tx-2 - } - - return theme -} - -func init() { - // Register the Flexoki theme with the theme manager - RegisterTheme("flexoki", NewFlexokiTheme()) -} diff --git a/packages/tui/internal/theme/gruvbox.go b/packages/tui/internal/theme/gruvbox.go deleted file mode 100644 index da9aab50e..000000000 --- a/packages/tui/internal/theme/gruvbox.go +++ /dev/null @@ -1,298 +0,0 @@ -package theme - -import ( - "github.com/charmbracelet/lipgloss" -) - -// Gruvbox color palette constants -const ( - // Dark theme colors - gruvboxDarkBg0 = "#282828" - gruvboxDarkBg0Soft = "#32302f" - gruvboxDarkBg1 = "#3c3836" - gruvboxDarkBg2 = "#504945" - gruvboxDarkBg3 = "#665c54" - gruvboxDarkBg4 = "#7c6f64" - gruvboxDarkFg0 = "#fbf1c7" - gruvboxDarkFg1 = "#ebdbb2" - gruvboxDarkFg2 = "#d5c4a1" - gruvboxDarkFg3 = "#bdae93" - gruvboxDarkFg4 = "#a89984" - gruvboxDarkGray = "#928374" - gruvboxDarkRed = "#cc241d" - gruvboxDarkRedBright = "#fb4934" - gruvboxDarkGreen = "#98971a" - gruvboxDarkGreenBright = "#b8bb26" - gruvboxDarkYellow = "#d79921" - gruvboxDarkYellowBright = "#fabd2f" - gruvboxDarkBlue = "#458588" - gruvboxDarkBlueBright = "#83a598" - gruvboxDarkPurple = "#b16286" - gruvboxDarkPurpleBright = "#d3869b" - gruvboxDarkAqua = "#689d6a" - gruvboxDarkAquaBright = "#8ec07c" - gruvboxDarkOrange = "#d65d0e" - gruvboxDarkOrangeBright = "#fe8019" - - // Light theme colors - gruvboxLightBg0 = "#fbf1c7" - gruvboxLightBg0Soft = "#f2e5bc" - gruvboxLightBg1 = "#ebdbb2" - gruvboxLightBg2 = "#d5c4a1" - gruvboxLightBg3 = "#bdae93" - gruvboxLightBg4 = "#a89984" - gruvboxLightFg0 = "#282828" - gruvboxLightFg1 = "#3c3836" - gruvboxLightFg2 = "#504945" - gruvboxLightFg3 = "#665c54" - gruvboxLightFg4 = "#7c6f64" - gruvboxLightGray = "#928374" - gruvboxLightRed = "#9d0006" - gruvboxLightRedBright = "#cc241d" - gruvboxLightGreen = "#79740e" - gruvboxLightGreenBright = "#98971a" - gruvboxLightYellow = "#b57614" - gruvboxLightYellowBright = "#d79921" - gruvboxLightBlue = "#076678" - gruvboxLightBlueBright = "#458588" - gruvboxLightPurple = "#8f3f71" - gruvboxLightPurpleBright = "#b16286" - gruvboxLightAqua = "#427b58" - gruvboxLightAquaBright = "#689d6a" - gruvboxLightOrange = "#af3a03" - gruvboxLightOrangeBright = "#d65d0e" -) - -// GruvboxTheme implements the Theme interface with Gruvbox colors. -// It provides both dark and light variants. -type GruvboxTheme struct { - BaseTheme -} - -// NewGruvboxTheme creates a new instance of the Gruvbox theme. -func NewGruvboxTheme() *GruvboxTheme { - theme := &GruvboxTheme{} - - // Base colors - theme.PrimaryColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkBlueBright, - Light: gruvboxLightBlueBright, - } - theme.SecondaryColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkPurpleBright, - Light: gruvboxLightPurpleBright, - } - theme.AccentColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkOrangeBright, - Light: gruvboxLightOrangeBright, - } - - // Status colors - theme.ErrorColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkRedBright, - Light: gruvboxLightRedBright, - } - theme.WarningColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkYellowBright, - Light: gruvboxLightYellowBright, - } - theme.SuccessColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkGreenBright, - Light: gruvboxLightGreenBright, - } - theme.InfoColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkBlueBright, - Light: gruvboxLightBlueBright, - } - - // Text colors - theme.TextColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkFg1, - Light: gruvboxLightFg1, - } - theme.TextMutedColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkFg4, - Light: gruvboxLightFg4, - } - - // Background colors - theme.BackgroundColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkBg0, - Light: gruvboxLightBg0, - } - theme.BackgroundSubtleColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkBg1, - Light: gruvboxLightBg1, - } - theme.BackgroundElementColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkBg0Soft, - Light: gruvboxLightBg0Soft, - } - - // Border colors - theme.BorderColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkBg2, - Light: gruvboxLightBg2, - } - theme.BorderActiveColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkBlueBright, - Light: gruvboxLightBlueBright, - } - theme.BorderSubtleColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkBg1, - Light: gruvboxLightBg1, - } - - // Diff view colors - theme.DiffAddedColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkGreenBright, - Light: gruvboxLightGreenBright, - } - theme.DiffRemovedColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkRedBright, - Light: gruvboxLightRedBright, - } - theme.DiffContextColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkFg4, - Light: gruvboxLightFg4, - } - theme.DiffHunkHeaderColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkFg3, - Light: gruvboxLightFg3, - } - theme.DiffHighlightAddedColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkGreenBright, - Light: gruvboxLightGreenBright, - } - theme.DiffHighlightRemovedColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkRedBright, - Light: gruvboxLightRedBright, - } - theme.DiffAddedBgColor = lipgloss.AdaptiveColor{ - Dark: "#3C4C3C", // Darker green background - Light: "#E8F5E9", // Light green background - } - theme.DiffRemovedBgColor = lipgloss.AdaptiveColor{ - Dark: "#4C3C3C", // Darker red background - Light: "#FFEBEE", // Light red background - } - theme.DiffContextBgColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkBg0, - Light: gruvboxLightBg0, - } - theme.DiffLineNumberColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkFg4, - Light: gruvboxLightFg4, - } - theme.DiffAddedLineNumberBgColor = lipgloss.AdaptiveColor{ - Dark: "#32432F", // Slightly darker green - Light: "#C8E6C9", // Light green - } - theme.DiffRemovedLineNumberBgColor = lipgloss.AdaptiveColor{ - Dark: "#43322F", // Slightly darker red - Light: "#FFCDD2", // Light red - } - - // Markdown colors - theme.MarkdownTextColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkFg1, - Light: gruvboxLightFg1, - } - theme.MarkdownHeadingColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkYellowBright, - Light: gruvboxLightYellowBright, - } - theme.MarkdownLinkColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkBlueBright, - Light: gruvboxLightBlueBright, - } - theme.MarkdownLinkTextColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkAquaBright, - Light: gruvboxLightAquaBright, - } - theme.MarkdownCodeColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkGreenBright, - Light: gruvboxLightGreenBright, - } - theme.MarkdownBlockQuoteColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkAquaBright, - Light: gruvboxLightAquaBright, - } - theme.MarkdownEmphColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkYellowBright, - Light: gruvboxLightYellowBright, - } - theme.MarkdownStrongColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkOrangeBright, - Light: gruvboxLightOrangeBright, - } - theme.MarkdownHorizontalRuleColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkBg3, - Light: gruvboxLightBg3, - } - theme.MarkdownListItemColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkBlueBright, - Light: gruvboxLightBlueBright, - } - theme.MarkdownListEnumerationColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkBlueBright, - Light: gruvboxLightBlueBright, - } - theme.MarkdownImageColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkPurpleBright, - Light: gruvboxLightPurpleBright, - } - theme.MarkdownImageTextColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkAquaBright, - Light: gruvboxLightAquaBright, - } - theme.MarkdownCodeBlockColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkFg1, - Light: gruvboxLightFg1, - } - - // Syntax highlighting colors - theme.SyntaxCommentColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkGray, - Light: gruvboxLightGray, - } - theme.SyntaxKeywordColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkRedBright, - Light: gruvboxLightRedBright, - } - theme.SyntaxFunctionColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkGreenBright, - Light: gruvboxLightGreenBright, - } - theme.SyntaxVariableColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkBlueBright, - Light: gruvboxLightBlueBright, - } - theme.SyntaxStringColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkYellowBright, - Light: gruvboxLightYellowBright, - } - theme.SyntaxNumberColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkPurpleBright, - Light: gruvboxLightPurpleBright, - } - theme.SyntaxTypeColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkYellow, - Light: gruvboxLightYellow, - } - theme.SyntaxOperatorColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkAquaBright, - Light: gruvboxLightAquaBright, - } - theme.SyntaxPunctuationColor = lipgloss.AdaptiveColor{ - Dark: gruvboxDarkFg1, - Light: gruvboxLightFg1, - } - - return theme -} - -func init() { - // Register the Gruvbox theme with the theme manager - RegisterTheme("gruvbox", NewGruvboxTheme()) -} diff --git a/packages/tui/internal/theme/manager.go b/packages/tui/internal/theme/manager.go index 020e3e193..3e351f7f1 100644 --- a/packages/tui/internal/theme/manager.go +++ b/packages/tui/internal/theme/manager.go @@ -6,8 +6,7 @@ import ( "slices" "strings" "sync" - - "github.com/alecthomas/chroma/v2/styles" + // "github.com/alecthomas/chroma/v2/styles" ) // Manager handles theme registration, selection, and retrieval. @@ -46,7 +45,7 @@ func RegisterTheme(name string, theme Theme) { func SetTheme(name string) error { globalManager.mu.Lock() defer globalManager.mu.Unlock() - delete(styles.Registry, "charm") + // delete(styles.Registry, "charm") // Handle custom theme // if name == "custom" { diff --git a/packages/tui/internal/theme/monokai.go b/packages/tui/internal/theme/monokai.go deleted file mode 100644 index 71234d025..000000000 --- a/packages/tui/internal/theme/monokai.go +++ /dev/null @@ -1,269 +0,0 @@ -package theme - -import ( - "github.com/charmbracelet/lipgloss" -) - -// MonokaiProTheme implements the Theme interface with Monokai Pro colors. -// It provides both dark and light variants. -type MonokaiProTheme struct { - BaseTheme -} - -// NewMonokaiProTheme creates a new instance of the Monokai Pro theme. -func NewMonokaiProTheme() *MonokaiProTheme { - // Monokai Pro color palette (dark mode) - darkBackground := "#2d2a2e" - darkCurrentLine := "#403e41" - darkSelection := "#5b595c" - darkForeground := "#fcfcfa" - darkComment := "#727072" - darkRed := "#ff6188" - darkOrange := "#fc9867" - darkYellow := "#ffd866" - darkGreen := "#a9dc76" - darkCyan := "#78dce8" - darkBlue := "#ab9df2" - darkPurple := "#ab9df2" - darkBorder := "#403e41" - - // Light mode colors (adapted from dark) - lightBackground := "#fafafa" - lightCurrentLine := "#f0f0f0" - lightSelection := "#e5e5e6" - lightForeground := "#2d2a2e" - lightComment := "#939293" - lightRed := "#f92672" - lightOrange := "#fd971f" - lightYellow := "#e6db74" - lightGreen := "#9bca65" - lightCyan := "#66d9ef" - lightBlue := "#7e75db" - lightPurple := "#ae81ff" - lightBorder := "#d3d3d3" - - theme := &MonokaiProTheme{} - - // Base colors - theme.PrimaryColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.SecondaryColor = lipgloss.AdaptiveColor{ - Dark: darkPurple, - Light: lightPurple, - } - theme.AccentColor = lipgloss.AdaptiveColor{ - Dark: darkOrange, - Light: lightOrange, - } - - // Status colors - theme.ErrorColor = lipgloss.AdaptiveColor{ - Dark: darkRed, - Light: lightRed, - } - theme.WarningColor = lipgloss.AdaptiveColor{ - Dark: darkOrange, - Light: lightOrange, - } - theme.SuccessColor = lipgloss.AdaptiveColor{ - Dark: darkGreen, - Light: lightGreen, - } - theme.InfoColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - - // Text colors - theme.TextColor = lipgloss.AdaptiveColor{ - Dark: darkForeground, - Light: lightForeground, - } - theme.TextMutedColor = lipgloss.AdaptiveColor{ - Dark: darkComment, - Light: lightComment, - } - - // Background colors - theme.BackgroundColor = lipgloss.AdaptiveColor{ - Dark: darkBackground, - Light: lightBackground, - } - theme.BackgroundSubtleColor = lipgloss.AdaptiveColor{ - Dark: darkCurrentLine, - Light: lightCurrentLine, - } - theme.BackgroundElementColor = lipgloss.AdaptiveColor{ - Dark: "#221f22", // Slightly darker than background - Light: "#ffffff", // Slightly lighter than background - } - - // Border colors - theme.BorderColor = lipgloss.AdaptiveColor{ - Dark: darkBorder, - Light: lightBorder, - } - theme.BorderActiveColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.BorderSubtleColor = lipgloss.AdaptiveColor{ - Dark: darkSelection, - Light: lightSelection, - } - - // Diff view colors - theme.DiffAddedColor = lipgloss.AdaptiveColor{ - Dark: "#a9dc76", - Light: "#9bca65", - } - theme.DiffRemovedColor = lipgloss.AdaptiveColor{ - Dark: "#ff6188", - Light: "#f92672", - } - theme.DiffContextColor = lipgloss.AdaptiveColor{ - Dark: "#a0a0a0", - Light: "#757575", - } - theme.DiffHunkHeaderColor = lipgloss.AdaptiveColor{ - Dark: "#a0a0a0", - Light: "#757575", - } - theme.DiffHighlightAddedColor = lipgloss.AdaptiveColor{ - Dark: "#c2e7a9", - Light: "#c5e0b4", - } - theme.DiffHighlightRemovedColor = lipgloss.AdaptiveColor{ - Dark: "#ff8ca6", - Light: "#ffb3c8", - } - theme.DiffAddedBgColor = lipgloss.AdaptiveColor{ - Dark: "#3a4a35", - Light: "#e8f5e9", - } - theme.DiffRemovedBgColor = lipgloss.AdaptiveColor{ - Dark: "#4a3439", - Light: "#ffebee", - } - theme.DiffContextBgColor = lipgloss.AdaptiveColor{ - Dark: darkBackground, - Light: lightBackground, - } - theme.DiffLineNumberColor = lipgloss.AdaptiveColor{ - Dark: "#888888", - Light: "#9e9e9e", - } - theme.DiffAddedLineNumberBgColor = lipgloss.AdaptiveColor{ - Dark: "#2d3a28", - Light: "#c8e6c9", - } - theme.DiffRemovedLineNumberBgColor = lipgloss.AdaptiveColor{ - Dark: "#3d2a2e", - Light: "#ffcdd2", - } - - // Markdown colors - theme.MarkdownTextColor = lipgloss.AdaptiveColor{ - Dark: darkForeground, - Light: lightForeground, - } - theme.MarkdownHeadingColor = lipgloss.AdaptiveColor{ - Dark: darkPurple, - Light: lightPurple, - } - theme.MarkdownLinkColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.MarkdownLinkTextColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - theme.MarkdownCodeColor = lipgloss.AdaptiveColor{ - Dark: darkGreen, - Light: lightGreen, - } - theme.MarkdownBlockQuoteColor = lipgloss.AdaptiveColor{ - Dark: darkYellow, - Light: lightYellow, - } - theme.MarkdownEmphColor = lipgloss.AdaptiveColor{ - Dark: darkYellow, - Light: lightYellow, - } - theme.MarkdownStrongColor = lipgloss.AdaptiveColor{ - Dark: darkOrange, - Light: lightOrange, - } - theme.MarkdownHorizontalRuleColor = lipgloss.AdaptiveColor{ - Dark: darkComment, - Light: lightComment, - } - theme.MarkdownListItemColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.MarkdownListEnumerationColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - theme.MarkdownImageColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.MarkdownImageTextColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - theme.MarkdownCodeBlockColor = lipgloss.AdaptiveColor{ - Dark: darkForeground, - Light: lightForeground, - } - - // Syntax highlighting colors - theme.SyntaxCommentColor = lipgloss.AdaptiveColor{ - Dark: darkComment, - Light: lightComment, - } - theme.SyntaxKeywordColor = lipgloss.AdaptiveColor{ - Dark: darkRed, - Light: lightRed, - } - theme.SyntaxFunctionColor = lipgloss.AdaptiveColor{ - Dark: darkGreen, - Light: lightGreen, - } - theme.SyntaxVariableColor = lipgloss.AdaptiveColor{ - Dark: darkForeground, - Light: lightForeground, - } - theme.SyntaxStringColor = lipgloss.AdaptiveColor{ - Dark: darkYellow, - Light: lightYellow, - } - theme.SyntaxNumberColor = lipgloss.AdaptiveColor{ - Dark: darkPurple, - Light: lightPurple, - } - theme.SyntaxTypeColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - theme.SyntaxOperatorColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.SyntaxPunctuationColor = lipgloss.AdaptiveColor{ - Dark: darkForeground, - Light: lightForeground, - } - - return theme -} - -func init() { - // Register the Monokai Pro theme with the theme manager - RegisterTheme("monokai", NewMonokaiProTheme()) -} diff --git a/packages/tui/internal/theme/onedark.go b/packages/tui/internal/theme/onedark.go deleted file mode 100644 index 21953c10d..000000000 --- a/packages/tui/internal/theme/onedark.go +++ /dev/null @@ -1,270 +0,0 @@ -package theme - -import ( - "github.com/charmbracelet/lipgloss" -) - -// OneDarkTheme implements the Theme interface with Atom's One Dark colors. -// It provides both dark and light variants. -type OneDarkTheme struct { - BaseTheme -} - -// NewOneDarkTheme creates a new instance of the One Dark theme. -func NewOneDarkTheme() *OneDarkTheme { - // One Dark color palette - // Dark mode colors from Atom One Dark - darkBackground := "#282c34" - darkCurrentLine := "#2c313c" - darkSelection := "#3e4451" - darkForeground := "#abb2bf" - darkComment := "#5c6370" - darkRed := "#e06c75" - darkOrange := "#d19a66" - darkYellow := "#e5c07b" - darkGreen := "#98c379" - darkCyan := "#56b6c2" - darkBlue := "#61afef" - darkPurple := "#c678dd" - darkBorder := "#3b4048" - - // Light mode colors from Atom One Light - lightBackground := "#fafafa" - lightCurrentLine := "#f0f0f0" - lightSelection := "#e5e5e6" - lightForeground := "#383a42" - lightComment := "#a0a1a7" - lightRed := "#e45649" - lightOrange := "#da8548" - lightYellow := "#c18401" - lightGreen := "#50a14f" - lightCyan := "#0184bc" - lightBlue := "#4078f2" - lightPurple := "#a626a4" - lightBorder := "#d3d3d3" - - theme := &OneDarkTheme{} - - // Base colors - theme.PrimaryColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - theme.SecondaryColor = lipgloss.AdaptiveColor{ - Dark: darkPurple, - Light: lightPurple, - } - theme.AccentColor = lipgloss.AdaptiveColor{ - Dark: darkOrange, - Light: lightOrange, - } - - // Status colors - theme.ErrorColor = lipgloss.AdaptiveColor{ - Dark: darkRed, - Light: lightRed, - } - theme.WarningColor = lipgloss.AdaptiveColor{ - Dark: darkOrange, - Light: lightOrange, - } - theme.SuccessColor = lipgloss.AdaptiveColor{ - Dark: darkGreen, - Light: lightGreen, - } - theme.InfoColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - - // Text colors - theme.TextColor = lipgloss.AdaptiveColor{ - Dark: darkForeground, - Light: lightForeground, - } - theme.TextMutedColor = lipgloss.AdaptiveColor{ - Dark: darkComment, - Light: lightComment, - } - - // Background colors - theme.BackgroundColor = lipgloss.AdaptiveColor{ - Dark: darkBackground, - Light: lightBackground, - } - theme.BackgroundSubtleColor = lipgloss.AdaptiveColor{ - Dark: darkCurrentLine, - Light: lightCurrentLine, - } - theme.BackgroundElementColor = lipgloss.AdaptiveColor{ - Dark: "#21252b", // Slightly darker than background - Light: "#ffffff", // Slightly lighter than background - } - - // Border colors - theme.BorderColor = lipgloss.AdaptiveColor{ - Dark: darkBorder, - Light: lightBorder, - } - theme.BorderActiveColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - theme.BorderSubtleColor = lipgloss.AdaptiveColor{ - Dark: darkSelection, - Light: lightSelection, - } - - // Diff view colors - theme.DiffAddedColor = lipgloss.AdaptiveColor{ - Dark: "#478247", - Light: "#2E7D32", - } - theme.DiffRemovedColor = lipgloss.AdaptiveColor{ - Dark: "#7C4444", - Light: "#C62828", - } - theme.DiffContextColor = lipgloss.AdaptiveColor{ - Dark: "#a0a0a0", - Light: "#757575", - } - theme.DiffHunkHeaderColor = lipgloss.AdaptiveColor{ - Dark: "#a0a0a0", - Light: "#757575", - } - theme.DiffHighlightAddedColor = lipgloss.AdaptiveColor{ - Dark: "#DAFADA", - Light: "#A5D6A7", - } - theme.DiffHighlightRemovedColor = lipgloss.AdaptiveColor{ - Dark: "#FADADD", - Light: "#EF9A9A", - } - theme.DiffAddedBgColor = lipgloss.AdaptiveColor{ - Dark: "#303A30", - Light: "#E8F5E9", - } - theme.DiffRemovedBgColor = lipgloss.AdaptiveColor{ - Dark: "#3A3030", - Light: "#FFEBEE", - } - theme.DiffContextBgColor = lipgloss.AdaptiveColor{ - Dark: darkBackground, - Light: lightBackground, - } - theme.DiffLineNumberColor = lipgloss.AdaptiveColor{ - Dark: "#888888", - Light: "#9E9E9E", - } - theme.DiffAddedLineNumberBgColor = lipgloss.AdaptiveColor{ - Dark: "#293229", - Light: "#C8E6C9", - } - theme.DiffRemovedLineNumberBgColor = lipgloss.AdaptiveColor{ - Dark: "#332929", - Light: "#FFCDD2", - } - - // Markdown colors - theme.MarkdownTextColor = lipgloss.AdaptiveColor{ - Dark: darkForeground, - Light: lightForeground, - } - theme.MarkdownHeadingColor = lipgloss.AdaptiveColor{ - Dark: darkPurple, - Light: lightPurple, - } - theme.MarkdownLinkColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - theme.MarkdownLinkTextColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.MarkdownCodeColor = lipgloss.AdaptiveColor{ - Dark: darkGreen, - Light: lightGreen, - } - theme.MarkdownBlockQuoteColor = lipgloss.AdaptiveColor{ - Dark: darkYellow, - Light: lightYellow, - } - theme.MarkdownEmphColor = lipgloss.AdaptiveColor{ - Dark: darkYellow, - Light: lightYellow, - } - theme.MarkdownStrongColor = lipgloss.AdaptiveColor{ - Dark: darkOrange, - Light: lightOrange, - } - theme.MarkdownHorizontalRuleColor = lipgloss.AdaptiveColor{ - Dark: darkComment, - Light: lightComment, - } - theme.MarkdownListItemColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - theme.MarkdownListEnumerationColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.MarkdownImageColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - theme.MarkdownImageTextColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.MarkdownCodeBlockColor = lipgloss.AdaptiveColor{ - Dark: darkForeground, - Light: lightForeground, - } - - // Syntax highlighting colors - theme.SyntaxCommentColor = lipgloss.AdaptiveColor{ - Dark: darkComment, - Light: lightComment, - } - theme.SyntaxKeywordColor = lipgloss.AdaptiveColor{ - Dark: darkPurple, - Light: lightPurple, - } - theme.SyntaxFunctionColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - theme.SyntaxVariableColor = lipgloss.AdaptiveColor{ - Dark: darkRed, - Light: lightRed, - } - theme.SyntaxStringColor = lipgloss.AdaptiveColor{ - Dark: darkGreen, - Light: lightGreen, - } - theme.SyntaxNumberColor = lipgloss.AdaptiveColor{ - Dark: darkOrange, - Light: lightOrange, - } - theme.SyntaxTypeColor = lipgloss.AdaptiveColor{ - Dark: darkYellow, - Light: lightYellow, - } - theme.SyntaxOperatorColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.SyntaxPunctuationColor = lipgloss.AdaptiveColor{ - Dark: darkForeground, - Light: lightForeground, - } - - return theme -} - -func init() { - // Register the One Dark theme with the theme manager - RegisterTheme("onedark", NewOneDarkTheme()) -} diff --git a/packages/tui/internal/theme/opencode.go b/packages/tui/internal/theme/opencode.go index 4de88ae4e..8f188be3c 100644 --- a/packages/tui/internal/theme/opencode.go +++ b/packages/tui/internal/theme/opencode.go @@ -1,7 +1,8 @@ package theme import ( - "github.com/charmbracelet/lipgloss" + "github.com/charmbracelet/lipgloss/v2" + "github.com/charmbracelet/lipgloss/v2/compat" ) // OpenCodeTheme implements the Theme interface with OpenCode brand colors. @@ -72,219 +73,219 @@ func NewOpenCodeTheme() *OpenCodeTheme { theme := &OpenCodeTheme{} // Base colors - theme.PrimaryColor = lipgloss.AdaptiveColor{ - Dark: darkPrimary, - Light: lightPrimary, + theme.PrimaryColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkPrimary), + Light: lipgloss.Color(lightPrimary), } - theme.SecondaryColor = lipgloss.AdaptiveColor{ - Dark: darkSecondary, - Light: lightSecondary, + theme.SecondaryColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkSecondary), + Light: lipgloss.Color(lightSecondary), } - theme.AccentColor = lipgloss.AdaptiveColor{ - Dark: darkAccent, - Light: lightAccent, + theme.AccentColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkAccent), + Light: lipgloss.Color(lightAccent), } // Status colors - theme.ErrorColor = lipgloss.AdaptiveColor{ - Dark: darkRed, - Light: lightRed, + theme.ErrorColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkRed), + Light: lipgloss.Color(lightRed), } - theme.WarningColor = lipgloss.AdaptiveColor{ - Dark: darkOrange, - Light: lightOrange, + theme.WarningColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkOrange), + Light: lipgloss.Color(lightOrange), } - theme.SuccessColor = lipgloss.AdaptiveColor{ - Dark: darkGreen, - Light: lightGreen, + theme.SuccessColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkGreen), + Light: lipgloss.Color(lightGreen), } - theme.InfoColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, + theme.InfoColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkCyan), + Light: lipgloss.Color(lightCyan), } // Text colors - theme.TextColor = lipgloss.AdaptiveColor{ - Dark: darkStep12, - Light: lightStep12, + theme.TextColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep12), + Light: lipgloss.Color(lightStep12), } - theme.TextMutedColor = lipgloss.AdaptiveColor{ - Dark: darkStep11, - Light: lightStep11, + theme.TextMutedColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep11), + Light: lipgloss.Color(lightStep11), } // Background colors - theme.BackgroundColor = lipgloss.AdaptiveColor{ - Dark: darkStep1, - Light: lightStep1, + theme.BackgroundColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep1), + Light: lipgloss.Color(lightStep1), } - theme.BackgroundSubtleColor = lipgloss.AdaptiveColor{ - Dark: darkStep2, - Light: lightStep2, + theme.BackgroundSubtleColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep2), + Light: lipgloss.Color(lightStep2), } - theme.BackgroundElementColor = lipgloss.AdaptiveColor{ - Dark: darkStep3, - Light: lightStep3, + theme.BackgroundElementColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep3), + Light: lipgloss.Color(lightStep3), } // Border colors - theme.BorderColor = lipgloss.AdaptiveColor{ - Dark: darkStep7, - Light: lightStep7, + theme.BorderColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep7), + Light: lipgloss.Color(lightStep7), } - theme.BorderActiveColor = lipgloss.AdaptiveColor{ - Dark: darkStep8, - Light: lightStep8, + theme.BorderActiveColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep8), + Light: lipgloss.Color(lightStep8), } - theme.BorderSubtleColor = lipgloss.AdaptiveColor{ - Dark: darkStep6, - Light: lightStep6, + theme.BorderSubtleColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep6), + Light: lipgloss.Color(lightStep6), } // Diff view colors - theme.DiffAddedColor = lipgloss.AdaptiveColor{ - Dark: "#478247", - Light: "#2E7D32", + theme.DiffAddedColor = compat.AdaptiveColor{ + Dark: lipgloss.Color("#478247"), + Light: lipgloss.Color("#2E7D32"), } - theme.DiffRemovedColor = lipgloss.AdaptiveColor{ - Dark: "#7C4444", - Light: "#C62828", + theme.DiffRemovedColor = compat.AdaptiveColor{ + Dark: lipgloss.Color("#7C4444"), + Light: lipgloss.Color("#C62828"), } - theme.DiffContextColor = lipgloss.AdaptiveColor{ - Dark: "#a0a0a0", - Light: "#757575", + theme.DiffContextColor = compat.AdaptiveColor{ + Dark: lipgloss.Color("#a0a0a0"), + Light: lipgloss.Color("#757575"), } - theme.DiffHunkHeaderColor = lipgloss.AdaptiveColor{ - Dark: "#a0a0a0", - Light: "#757575", + theme.DiffHunkHeaderColor = compat.AdaptiveColor{ + Dark: lipgloss.Color("#a0a0a0"), + Light: lipgloss.Color("#757575"), } - theme.DiffHighlightAddedColor = lipgloss.AdaptiveColor{ - Dark: "#DAFADA", - Light: "#A5D6A7", + theme.DiffHighlightAddedColor = compat.AdaptiveColor{ + Dark: lipgloss.Color("#DAFADA"), + Light: lipgloss.Color("#A5D6A7"), } - theme.DiffHighlightRemovedColor = lipgloss.AdaptiveColor{ - Dark: "#FADADD", - Light: "#EF9A9A", + theme.DiffHighlightRemovedColor = compat.AdaptiveColor{ + Dark: lipgloss.Color("#FADADD"), + Light: lipgloss.Color("#EF9A9A"), } - theme.DiffAddedBgColor = lipgloss.AdaptiveColor{ - Dark: "#303A30", - Light: "#E8F5E9", + theme.DiffAddedBgColor = compat.AdaptiveColor{ + Dark: lipgloss.Color("#303A30"), + Light: lipgloss.Color("#E8F5E9"), } - theme.DiffRemovedBgColor = lipgloss.AdaptiveColor{ - Dark: "#3A3030", - Light: "#FFEBEE", + theme.DiffRemovedBgColor = compat.AdaptiveColor{ + Dark: lipgloss.Color("#3A3030"), + Light: lipgloss.Color("#FFEBEE"), } - theme.DiffContextBgColor = lipgloss.AdaptiveColor{ - Dark: darkStep2, - Light: lightStep2, + theme.DiffContextBgColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep2), + Light: lipgloss.Color(lightStep2), } - theme.DiffLineNumberColor = lipgloss.AdaptiveColor{ - Dark: darkStep3, - Light: lightStep3, + theme.DiffLineNumberColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep3), + Light: lipgloss.Color(lightStep3), } - theme.DiffAddedLineNumberBgColor = lipgloss.AdaptiveColor{ - Dark: "#293229", - Light: "#C8E6C9", + theme.DiffAddedLineNumberBgColor = compat.AdaptiveColor{ + Dark: lipgloss.Color("#293229"), + Light: lipgloss.Color("#C8E6C9"), } - theme.DiffRemovedLineNumberBgColor = lipgloss.AdaptiveColor{ - Dark: "#332929", - Light: "#FFCDD2", + theme.DiffRemovedLineNumberBgColor = compat.AdaptiveColor{ + Dark: lipgloss.Color("#332929"), + Light: lipgloss.Color("#FFCDD2"), } // Markdown colors - theme.MarkdownTextColor = lipgloss.AdaptiveColor{ - Dark: darkStep12, - Light: lightStep12, + theme.MarkdownTextColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep12), + Light: lipgloss.Color(lightStep12), } - theme.MarkdownHeadingColor = lipgloss.AdaptiveColor{ - Dark: darkSecondary, - Light: lightSecondary, + theme.MarkdownHeadingColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkSecondary), + Light: lipgloss.Color(lightSecondary), } - theme.MarkdownLinkColor = lipgloss.AdaptiveColor{ - Dark: darkPrimary, - Light: lightPrimary, + theme.MarkdownLinkColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkPrimary), + Light: lipgloss.Color(lightPrimary), } - theme.MarkdownLinkTextColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, + theme.MarkdownLinkTextColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkCyan), + Light: lipgloss.Color(lightCyan), } - theme.MarkdownCodeColor = lipgloss.AdaptiveColor{ - Dark: darkGreen, - Light: lightGreen, + theme.MarkdownCodeColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkGreen), + Light: lipgloss.Color(lightGreen), } - theme.MarkdownBlockQuoteColor = lipgloss.AdaptiveColor{ - Dark: darkYellow, - Light: lightYellow, + theme.MarkdownBlockQuoteColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkYellow), + Light: lipgloss.Color(lightYellow), } - theme.MarkdownEmphColor = lipgloss.AdaptiveColor{ - Dark: darkYellow, - Light: lightYellow, + theme.MarkdownEmphColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkYellow), + Light: lipgloss.Color(lightYellow), } - theme.MarkdownStrongColor = lipgloss.AdaptiveColor{ - Dark: darkAccent, - Light: lightAccent, + theme.MarkdownStrongColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkAccent), + Light: lipgloss.Color(lightAccent), } - theme.MarkdownHorizontalRuleColor = lipgloss.AdaptiveColor{ - Dark: darkStep11, - Light: lightStep11, + theme.MarkdownHorizontalRuleColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep11), + Light: lipgloss.Color(lightStep11), } - theme.MarkdownListItemColor = lipgloss.AdaptiveColor{ - Dark: darkPrimary, - Light: lightPrimary, + theme.MarkdownListItemColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkPrimary), + Light: lipgloss.Color(lightPrimary), } - theme.MarkdownListEnumerationColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, + theme.MarkdownListEnumerationColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkCyan), + Light: lipgloss.Color(lightCyan), } - theme.MarkdownImageColor = lipgloss.AdaptiveColor{ - Dark: darkPrimary, - Light: lightPrimary, + theme.MarkdownImageColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkPrimary), + Light: lipgloss.Color(lightPrimary), } - theme.MarkdownImageTextColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, + theme.MarkdownImageTextColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkCyan), + Light: lipgloss.Color(lightCyan), } - theme.MarkdownCodeBlockColor = lipgloss.AdaptiveColor{ - Dark: darkStep12, - Light: lightStep12, + theme.MarkdownCodeBlockColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep12), + Light: lipgloss.Color(lightStep12), } // Syntax highlighting colors - theme.SyntaxCommentColor = lipgloss.AdaptiveColor{ - Dark: darkStep11, - Light: lightStep11, + theme.SyntaxCommentColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep11), + Light: lipgloss.Color(lightStep11), } - theme.SyntaxKeywordColor = lipgloss.AdaptiveColor{ - Dark: darkSecondary, - Light: lightSecondary, + theme.SyntaxKeywordColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkPrimary), + Light: lipgloss.Color(lightPrimary), } - theme.SyntaxFunctionColor = lipgloss.AdaptiveColor{ - Dark: darkPrimary, - Light: lightPrimary, + theme.SyntaxFunctionColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkPrimary), + Light: lipgloss.Color(lightPrimary), } - theme.SyntaxVariableColor = lipgloss.AdaptiveColor{ - Dark: darkRed, - Light: lightRed, + theme.SyntaxVariableColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkRed), + Light: lipgloss.Color(lightRed), } - theme.SyntaxStringColor = lipgloss.AdaptiveColor{ - Dark: darkGreen, - Light: lightGreen, + theme.SyntaxStringColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkGreen), + Light: lipgloss.Color(lightGreen), } - theme.SyntaxNumberColor = lipgloss.AdaptiveColor{ - Dark: darkAccent, - Light: lightAccent, + theme.SyntaxNumberColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkAccent), + Light: lipgloss.Color(lightAccent), } - theme.SyntaxTypeColor = lipgloss.AdaptiveColor{ - Dark: darkYellow, - Light: lightYellow, + theme.SyntaxTypeColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkYellow), + Light: lipgloss.Color(lightYellow), } - theme.SyntaxOperatorColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, + theme.SyntaxOperatorColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkCyan), + Light: lipgloss.Color(lightCyan), } - theme.SyntaxPunctuationColor = lipgloss.AdaptiveColor{ - Dark: darkStep12, - Light: lightStep12, + theme.SyntaxPunctuationColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep12), + Light: lipgloss.Color(lightStep12), } return theme diff --git a/packages/tui/internal/theme/theme.go b/packages/tui/internal/theme/theme.go index 8b2d926b1..2769a1720 100644 --- a/packages/tui/internal/theme/theme.go +++ b/packages/tui/internal/theme/theme.go @@ -4,231 +4,232 @@ import ( "fmt" "regexp" - "github.com/charmbracelet/lipgloss" + "github.com/charmbracelet/lipgloss/v2" + "github.com/charmbracelet/lipgloss/v2/compat" ) // Theme defines the interface for all UI themes in the application. -// All colors must be defined as lipgloss.AdaptiveColor to support +// All colors must be defined as compat.AdaptiveColor to support // both light and dark terminal backgrounds. type Theme interface { // Background colors - Background() lipgloss.AdaptiveColor // Radix 1 - BackgroundSubtle() lipgloss.AdaptiveColor // Radix 2 - BackgroundElement() lipgloss.AdaptiveColor // Radix 3 + Background() compat.AdaptiveColor // Radix 1 + BackgroundSubtle() compat.AdaptiveColor // Radix 2 + BackgroundElement() compat.AdaptiveColor // Radix 3 // Border colors - BorderSubtle() lipgloss.AdaptiveColor // Radix 6 - Border() lipgloss.AdaptiveColor // Radix 7 - BorderActive() lipgloss.AdaptiveColor // Radix 8 + BorderSubtle() compat.AdaptiveColor // Radix 6 + Border() compat.AdaptiveColor // Radix 7 + BorderActive() compat.AdaptiveColor // Radix 8 // Brand colors - Primary() lipgloss.AdaptiveColor // Radix 9 - Secondary() lipgloss.AdaptiveColor - Accent() lipgloss.AdaptiveColor + Primary() compat.AdaptiveColor // Radix 9 + Secondary() compat.AdaptiveColor + Accent() compat.AdaptiveColor // Text colors - TextMuted() lipgloss.AdaptiveColor // Radix 11 - Text() lipgloss.AdaptiveColor // Radix 12 + TextMuted() compat.AdaptiveColor // Radix 11 + Text() compat.AdaptiveColor // Radix 12 // Status colors - Error() lipgloss.AdaptiveColor - Warning() lipgloss.AdaptiveColor - Success() lipgloss.AdaptiveColor - Info() lipgloss.AdaptiveColor + Error() compat.AdaptiveColor + Warning() compat.AdaptiveColor + Success() compat.AdaptiveColor + Info() compat.AdaptiveColor // Diff view colors - DiffAdded() lipgloss.AdaptiveColor - DiffRemoved() lipgloss.AdaptiveColor - DiffContext() lipgloss.AdaptiveColor - DiffHunkHeader() lipgloss.AdaptiveColor - DiffHighlightAdded() lipgloss.AdaptiveColor - DiffHighlightRemoved() lipgloss.AdaptiveColor - DiffAddedBg() lipgloss.AdaptiveColor - DiffRemovedBg() lipgloss.AdaptiveColor - DiffContextBg() lipgloss.AdaptiveColor - DiffLineNumber() lipgloss.AdaptiveColor - DiffAddedLineNumberBg() lipgloss.AdaptiveColor - DiffRemovedLineNumberBg() lipgloss.AdaptiveColor + 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() lipgloss.AdaptiveColor - MarkdownHeading() lipgloss.AdaptiveColor - MarkdownLink() lipgloss.AdaptiveColor - MarkdownLinkText() lipgloss.AdaptiveColor - MarkdownCode() lipgloss.AdaptiveColor - MarkdownBlockQuote() lipgloss.AdaptiveColor - MarkdownEmph() lipgloss.AdaptiveColor - MarkdownStrong() lipgloss.AdaptiveColor - MarkdownHorizontalRule() lipgloss.AdaptiveColor - MarkdownListItem() lipgloss.AdaptiveColor - MarkdownListEnumeration() lipgloss.AdaptiveColor - MarkdownImage() lipgloss.AdaptiveColor - MarkdownImageText() lipgloss.AdaptiveColor - MarkdownCodeBlock() lipgloss.AdaptiveColor + 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() lipgloss.AdaptiveColor - SyntaxKeyword() lipgloss.AdaptiveColor - SyntaxFunction() lipgloss.AdaptiveColor - SyntaxVariable() lipgloss.AdaptiveColor - SyntaxString() lipgloss.AdaptiveColor - SyntaxNumber() lipgloss.AdaptiveColor - SyntaxType() lipgloss.AdaptiveColor - SyntaxOperator() lipgloss.AdaptiveColor - SyntaxPunctuation() lipgloss.AdaptiveColor + 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 lipgloss.AdaptiveColor - BackgroundSubtleColor lipgloss.AdaptiveColor - BackgroundElementColor lipgloss.AdaptiveColor + BackgroundColor compat.AdaptiveColor + BackgroundSubtleColor compat.AdaptiveColor + BackgroundElementColor compat.AdaptiveColor // Border colors - BorderSubtleColor lipgloss.AdaptiveColor - BorderColor lipgloss.AdaptiveColor - BorderActiveColor lipgloss.AdaptiveColor + BorderSubtleColor compat.AdaptiveColor + BorderColor compat.AdaptiveColor + BorderActiveColor compat.AdaptiveColor // Brand colors - PrimaryColor lipgloss.AdaptiveColor - SecondaryColor lipgloss.AdaptiveColor - AccentColor lipgloss.AdaptiveColor + PrimaryColor compat.AdaptiveColor + SecondaryColor compat.AdaptiveColor + AccentColor compat.AdaptiveColor // Text colors - TextMutedColor lipgloss.AdaptiveColor - TextColor lipgloss.AdaptiveColor + TextMutedColor compat.AdaptiveColor + TextColor compat.AdaptiveColor // Status colors - ErrorColor lipgloss.AdaptiveColor - WarningColor lipgloss.AdaptiveColor - SuccessColor lipgloss.AdaptiveColor - InfoColor lipgloss.AdaptiveColor + ErrorColor compat.AdaptiveColor + WarningColor compat.AdaptiveColor + SuccessColor compat.AdaptiveColor + InfoColor compat.AdaptiveColor // Diff view colors - DiffAddedColor lipgloss.AdaptiveColor - DiffRemovedColor lipgloss.AdaptiveColor - DiffContextColor lipgloss.AdaptiveColor - DiffHunkHeaderColor lipgloss.AdaptiveColor - DiffHighlightAddedColor lipgloss.AdaptiveColor - DiffHighlightRemovedColor lipgloss.AdaptiveColor - DiffAddedBgColor lipgloss.AdaptiveColor - DiffRemovedBgColor lipgloss.AdaptiveColor - DiffContextBgColor lipgloss.AdaptiveColor - DiffLineNumberColor lipgloss.AdaptiveColor - DiffAddedLineNumberBgColor lipgloss.AdaptiveColor - DiffRemovedLineNumberBgColor lipgloss.AdaptiveColor + 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 lipgloss.AdaptiveColor - MarkdownHeadingColor lipgloss.AdaptiveColor - MarkdownLinkColor lipgloss.AdaptiveColor - MarkdownLinkTextColor lipgloss.AdaptiveColor - MarkdownCodeColor lipgloss.AdaptiveColor - MarkdownBlockQuoteColor lipgloss.AdaptiveColor - MarkdownEmphColor lipgloss.AdaptiveColor - MarkdownStrongColor lipgloss.AdaptiveColor - MarkdownHorizontalRuleColor lipgloss.AdaptiveColor - MarkdownListItemColor lipgloss.AdaptiveColor - MarkdownListEnumerationColor lipgloss.AdaptiveColor - MarkdownImageColor lipgloss.AdaptiveColor - MarkdownImageTextColor lipgloss.AdaptiveColor - MarkdownCodeBlockColor lipgloss.AdaptiveColor + 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 lipgloss.AdaptiveColor - SyntaxKeywordColor lipgloss.AdaptiveColor - SyntaxFunctionColor lipgloss.AdaptiveColor - SyntaxVariableColor lipgloss.AdaptiveColor - SyntaxStringColor lipgloss.AdaptiveColor - SyntaxNumberColor lipgloss.AdaptiveColor - SyntaxTypeColor lipgloss.AdaptiveColor - SyntaxOperatorColor lipgloss.AdaptiveColor - SyntaxPunctuationColor lipgloss.AdaptiveColor + 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() lipgloss.AdaptiveColor { return t.PrimaryColor } -func (t *BaseTheme) Secondary() lipgloss.AdaptiveColor { return t.SecondaryColor } -func (t *BaseTheme) Accent() lipgloss.AdaptiveColor { return t.AccentColor } - -func (t *BaseTheme) Error() lipgloss.AdaptiveColor { return t.ErrorColor } -func (t *BaseTheme) Warning() lipgloss.AdaptiveColor { return t.WarningColor } -func (t *BaseTheme) Success() lipgloss.AdaptiveColor { return t.SuccessColor } -func (t *BaseTheme) Info() lipgloss.AdaptiveColor { return t.InfoColor } - -func (t *BaseTheme) Text() lipgloss.AdaptiveColor { return t.TextColor } -func (t *BaseTheme) TextMuted() lipgloss.AdaptiveColor { return t.TextMutedColor } - -func (t *BaseTheme) Background() lipgloss.AdaptiveColor { return t.BackgroundColor } -func (t *BaseTheme) BackgroundSubtle() lipgloss.AdaptiveColor { return t.BackgroundSubtleColor } -func (t *BaseTheme) BackgroundElement() lipgloss.AdaptiveColor { return t.BackgroundElementColor } - -func (t *BaseTheme) Border() lipgloss.AdaptiveColor { return t.BorderColor } -func (t *BaseTheme) BorderActive() lipgloss.AdaptiveColor { return t.BorderActiveColor } -func (t *BaseTheme) BorderSubtle() lipgloss.AdaptiveColor { return t.BorderSubtleColor } - -func (t *BaseTheme) DiffAdded() lipgloss.AdaptiveColor { return t.DiffAddedColor } -func (t *BaseTheme) DiffRemoved() lipgloss.AdaptiveColor { return t.DiffRemovedColor } -func (t *BaseTheme) DiffContext() lipgloss.AdaptiveColor { return t.DiffContextColor } -func (t *BaseTheme) DiffHunkHeader() lipgloss.AdaptiveColor { return t.DiffHunkHeaderColor } -func (t *BaseTheme) DiffHighlightAdded() lipgloss.AdaptiveColor { return t.DiffHighlightAddedColor } -func (t *BaseTheme) DiffHighlightRemoved() lipgloss.AdaptiveColor { return t.DiffHighlightRemovedColor } -func (t *BaseTheme) DiffAddedBg() lipgloss.AdaptiveColor { return t.DiffAddedBgColor } -func (t *BaseTheme) DiffRemovedBg() lipgloss.AdaptiveColor { return t.DiffRemovedBgColor } -func (t *BaseTheme) DiffContextBg() lipgloss.AdaptiveColor { return t.DiffContextBgColor } -func (t *BaseTheme) DiffLineNumber() lipgloss.AdaptiveColor { return t.DiffLineNumberColor } -func (t *BaseTheme) DiffAddedLineNumberBg() lipgloss.AdaptiveColor { +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) BackgroundSubtle() compat.AdaptiveColor { return t.BackgroundSubtleColor } +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() lipgloss.AdaptiveColor { +func (t *BaseTheme) DiffRemovedLineNumberBg() compat.AdaptiveColor { return t.DiffRemovedLineNumberBgColor } -func (t *BaseTheme) MarkdownText() lipgloss.AdaptiveColor { return t.MarkdownTextColor } -func (t *BaseTheme) MarkdownHeading() lipgloss.AdaptiveColor { return t.MarkdownHeadingColor } -func (t *BaseTheme) MarkdownLink() lipgloss.AdaptiveColor { return t.MarkdownLinkColor } -func (t *BaseTheme) MarkdownLinkText() lipgloss.AdaptiveColor { return t.MarkdownLinkTextColor } -func (t *BaseTheme) MarkdownCode() lipgloss.AdaptiveColor { return t.MarkdownCodeColor } -func (t *BaseTheme) MarkdownBlockQuote() lipgloss.AdaptiveColor { return t.MarkdownBlockQuoteColor } -func (t *BaseTheme) MarkdownEmph() lipgloss.AdaptiveColor { return t.MarkdownEmphColor } -func (t *BaseTheme) MarkdownStrong() lipgloss.AdaptiveColor { return t.MarkdownStrongColor } -func (t *BaseTheme) MarkdownHorizontalRule() lipgloss.AdaptiveColor { +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() lipgloss.AdaptiveColor { return t.MarkdownListItemColor } -func (t *BaseTheme) MarkdownListEnumeration() lipgloss.AdaptiveColor { +func (t *BaseTheme) MarkdownListItem() compat.AdaptiveColor { return t.MarkdownListItemColor } +func (t *BaseTheme) MarkdownListEnumeration() compat.AdaptiveColor { return t.MarkdownListEnumerationColor } -func (t *BaseTheme) MarkdownImage() lipgloss.AdaptiveColor { return t.MarkdownImageColor } -func (t *BaseTheme) MarkdownImageText() lipgloss.AdaptiveColor { return t.MarkdownImageTextColor } -func (t *BaseTheme) MarkdownCodeBlock() lipgloss.AdaptiveColor { return t.MarkdownCodeBlockColor } - -func (t *BaseTheme) SyntaxComment() lipgloss.AdaptiveColor { return t.SyntaxCommentColor } -func (t *BaseTheme) SyntaxKeyword() lipgloss.AdaptiveColor { return t.SyntaxKeywordColor } -func (t *BaseTheme) SyntaxFunction() lipgloss.AdaptiveColor { return t.SyntaxFunctionColor } -func (t *BaseTheme) SyntaxVariable() lipgloss.AdaptiveColor { return t.SyntaxVariableColor } -func (t *BaseTheme) SyntaxString() lipgloss.AdaptiveColor { return t.SyntaxStringColor } -func (t *BaseTheme) SyntaxNumber() lipgloss.AdaptiveColor { return t.SyntaxNumberColor } -func (t *BaseTheme) SyntaxType() lipgloss.AdaptiveColor { return t.SyntaxTypeColor } -func (t *BaseTheme) SyntaxOperator() lipgloss.AdaptiveColor { return t.SyntaxOperatorColor } -func (t *BaseTheme) SyntaxPunctuation() lipgloss.AdaptiveColor { return t.SyntaxPunctuationColor } - -// ParseAdaptiveColor parses a color value from the config file into a lipgloss.AdaptiveColor. +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 } + +// ParseAdaptiveColor parses a color value from the config file into a compat.AdaptiveColor. // It accepts either a string (hex color) or a map with "dark" and "light" keys. -func ParseAdaptiveColor(value any) (lipgloss.AdaptiveColor, error) { +func ParseAdaptiveColor(value any) (compat.AdaptiveColor, error) { // Regular expression to validate hex color format hexColorRegex := regexp.MustCompile(`^#[0-9a-fA-F]{6}$`) // Case 1: String value (same color for both dark and light modes) if hexColor, ok := value.(string); ok { if !hexColorRegex.MatchString(hexColor) { - return lipgloss.AdaptiveColor{}, fmt.Errorf("invalid hex color format: %s", hexColor) + return compat.AdaptiveColor{}, fmt.Errorf("invalid hex color format: %s", hexColor) } - return lipgloss.AdaptiveColor{ - Dark: hexColor, - Light: hexColor, + return compat.AdaptiveColor{ + Dark: lipgloss.Color(hexColor), + Light: lipgloss.Color(hexColor), }, nil } @@ -236,11 +237,11 @@ func ParseAdaptiveColor(value any) (lipgloss.AdaptiveColor, error) { if numericVal, ok := value.(float64); ok { intVal := int(numericVal) if intVal < 0 || intVal > 255 { - return lipgloss.AdaptiveColor{}, fmt.Errorf("invalid int color value (must be between 0 and 255): %d", intVal) + return compat.AdaptiveColor{}, fmt.Errorf("invalid int color value (must be between 0 and 255): %d", intVal) } - return lipgloss.AdaptiveColor{ - Dark: fmt.Sprintf("%d", intVal), - Light: fmt.Sprintf("%d", intVal), + return compat.AdaptiveColor{ + Dark: lipgloss.Color(fmt.Sprintf("%d", intVal)), + Light: lipgloss.Color(fmt.Sprintf("%d", intVal)), }, nil } @@ -250,7 +251,7 @@ func ParseAdaptiveColor(value any) (lipgloss.AdaptiveColor, error) { lightVal, lightOk := colorMap["light"] if !darkOk || !lightOk { - return lipgloss.AdaptiveColor{}, fmt.Errorf("color map must contain both 'dark' and 'light' keys") + return compat.AdaptiveColor{}, fmt.Errorf("color map must contain both 'dark' and 'light' keys") } darkHex, darkIsString := darkVal.(string) @@ -261,27 +262,27 @@ func ParseAdaptiveColor(value any) (lipgloss.AdaptiveColor, error) { lightVal, lightIsNumber := lightVal.(float64) if !darkIsNumber || !lightIsNumber { - return lipgloss.AdaptiveColor{}, fmt.Errorf("color map values must be strings or ints") + return compat.AdaptiveColor{}, fmt.Errorf("color map values must be strings or ints") } darkInt := int(darkVal) lightInt := int(lightVal) - return lipgloss.AdaptiveColor{ - Dark: fmt.Sprintf("%d", darkInt), - Light: fmt.Sprintf("%d", lightInt), + return compat.AdaptiveColor{ + Dark: lipgloss.Color(fmt.Sprintf("%d", darkInt)), + Light: lipgloss.Color(fmt.Sprintf("%d", lightInt)), }, nil } if !hexColorRegex.MatchString(darkHex) || !hexColorRegex.MatchString(lightHex) { - return lipgloss.AdaptiveColor{}, fmt.Errorf("invalid hex color format") + return compat.AdaptiveColor{}, fmt.Errorf("invalid hex color format") } - return lipgloss.AdaptiveColor{ - Dark: darkHex, - Light: lightHex, + return compat.AdaptiveColor{ + Dark: lipgloss.Color(darkHex), + Light: lipgloss.Color(lightHex), }, nil } - return lipgloss.AdaptiveColor{}, fmt.Errorf("color must be either a hex string or an object with dark/light keys") + return compat.AdaptiveColor{}, fmt.Errorf("color must be either a hex string or an object with dark/light keys") } diff --git a/packages/tui/internal/theme/tokyonight.go b/packages/tui/internal/theme/tokyonight.go index 7ae53abc5..8bb32dced 100644 --- a/packages/tui/internal/theme/tokyonight.go +++ b/packages/tui/internal/theme/tokyonight.go @@ -1,7 +1,8 @@ package theme import ( - "github.com/charmbracelet/lipgloss" + "github.com/charmbracelet/lipgloss/v2" + "github.com/charmbracelet/lipgloss/v2/compat" ) // TokyoNightTheme implements the Theme interface with Tokyo Night colors. @@ -70,219 +71,219 @@ func NewTokyoNightTheme() *TokyoNightTheme { theme := &TokyoNightTheme{} // Base colors - theme.PrimaryColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, + theme.PrimaryColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkBlue), + Light: lipgloss.Color(lightBlue), } - theme.SecondaryColor = lipgloss.AdaptiveColor{ - Dark: darkPurple, - Light: lightPurple, + theme.SecondaryColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkPurple), + Light: lipgloss.Color(lightPurple), } - theme.AccentColor = lipgloss.AdaptiveColor{ - Dark: darkOrange, - Light: lightOrange, + theme.AccentColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkOrange), + Light: lipgloss.Color(lightOrange), } // Status colors - theme.ErrorColor = lipgloss.AdaptiveColor{ - Dark: darkRed, - Light: lightRed, + theme.ErrorColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkRed), + Light: lipgloss.Color(lightRed), } - theme.WarningColor = lipgloss.AdaptiveColor{ - Dark: darkOrange, - Light: lightOrange, + theme.WarningColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkOrange), + Light: lipgloss.Color(lightOrange), } - theme.SuccessColor = lipgloss.AdaptiveColor{ - Dark: darkGreen, - Light: lightGreen, + theme.SuccessColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkGreen), + Light: lipgloss.Color(lightGreen), } - theme.InfoColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, + theme.InfoColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkBlue), + Light: lipgloss.Color(lightBlue), } // Text colors - theme.TextColor = lipgloss.AdaptiveColor{ - Dark: darkStep12, - Light: lightStep12, + theme.TextColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep12), + Light: lipgloss.Color(lightStep12), } - theme.TextMutedColor = lipgloss.AdaptiveColor{ - Dark: darkStep11, - Light: lightStep11, + theme.TextMutedColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep11), + Light: lipgloss.Color(lightStep11), } // Background colors - theme.BackgroundColor = lipgloss.AdaptiveColor{ - Dark: darkStep1, - Light: lightStep1, + theme.BackgroundColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep1), + Light: lipgloss.Color(lightStep1), } - theme.BackgroundSubtleColor = lipgloss.AdaptiveColor{ - Dark: darkStep2, - Light: lightStep2, + theme.BackgroundSubtleColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep2), + Light: lipgloss.Color(lightStep2), } - theme.BackgroundElementColor = lipgloss.AdaptiveColor{ - Dark: darkStep3, - Light: lightStep3, + theme.BackgroundElementColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep3), + Light: lipgloss.Color(lightStep3), } // Border colors - theme.BorderColor = lipgloss.AdaptiveColor{ - Dark: darkStep7, - Light: lightStep7, + theme.BorderColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep7), + Light: lipgloss.Color(lightStep7), } - theme.BorderActiveColor = lipgloss.AdaptiveColor{ - Dark: darkStep8, - Light: lightStep8, + theme.BorderActiveColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep8), + Light: lipgloss.Color(lightStep8), } - theme.BorderSubtleColor = lipgloss.AdaptiveColor{ - Dark: darkStep6, - Light: lightStep6, + theme.BorderSubtleColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep6), + Light: lipgloss.Color(lightStep6), } // Diff view colors - theme.DiffAddedColor = lipgloss.AdaptiveColor{ - Dark: "#4fd6be", // teal from palette - Light: "#1e725c", + theme.DiffAddedColor = compat.AdaptiveColor{ + Dark: lipgloss.Color("#4fd6be"), // teal from palette + Light: lipgloss.Color("#1e725c"), } - theme.DiffRemovedColor = lipgloss.AdaptiveColor{ - Dark: "#c53b53", // red1 from palette - Light: "#c53b53", + theme.DiffRemovedColor = compat.AdaptiveColor{ + Dark: lipgloss.Color("#c53b53"), // red1 from palette + Light: lipgloss.Color("#c53b53"), } - theme.DiffContextColor = lipgloss.AdaptiveColor{ - Dark: "#828bb8", // fg_dark from palette - Light: "#7086b5", + theme.DiffContextColor = compat.AdaptiveColor{ + Dark: lipgloss.Color("#828bb8"), // fg_dark from palette + Light: lipgloss.Color("#7086b5"), } - theme.DiffHunkHeaderColor = lipgloss.AdaptiveColor{ - Dark: "#828bb8", // fg_dark from palette - Light: "#7086b5", + theme.DiffHunkHeaderColor = compat.AdaptiveColor{ + Dark: lipgloss.Color("#828bb8"), // fg_dark from palette + Light: lipgloss.Color("#7086b5"), } - theme.DiffHighlightAddedColor = lipgloss.AdaptiveColor{ - Dark: "#b8db87", // git.add from palette - Light: "#4db380", + theme.DiffHighlightAddedColor = compat.AdaptiveColor{ + Dark: lipgloss.Color("#b8db87"), // git.add from palette + Light: lipgloss.Color("#4db380"), } - theme.DiffHighlightRemovedColor = lipgloss.AdaptiveColor{ - Dark: "#e26a75", // git.delete from palette - Light: "#f52a65", + theme.DiffHighlightRemovedColor = compat.AdaptiveColor{ + Dark: lipgloss.Color("#e26a75"), // git.delete from palette + Light: lipgloss.Color("#f52a65"), } - theme.DiffAddedBgColor = lipgloss.AdaptiveColor{ - Dark: "#20303b", - Light: "#d5e5d5", + theme.DiffAddedBgColor = compat.AdaptiveColor{ + Dark: lipgloss.Color("#20303b"), + Light: lipgloss.Color("#d5e5d5"), } - theme.DiffRemovedBgColor = lipgloss.AdaptiveColor{ - Dark: "#37222c", - Light: "#f7d8db", + theme.DiffRemovedBgColor = compat.AdaptiveColor{ + Dark: lipgloss.Color("#37222c"), + Light: lipgloss.Color("#f7d8db"), } - theme.DiffContextBgColor = lipgloss.AdaptiveColor{ - Dark: darkStep2, - Light: lightStep2, + theme.DiffContextBgColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep2), + Light: lipgloss.Color(lightStep2), } - theme.DiffLineNumberColor = lipgloss.AdaptiveColor{ - Dark: darkStep3, // dark3 from palette - Light: lightStep3, + theme.DiffLineNumberColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep3), // dark3 from palette + Light: lipgloss.Color(lightStep3), } - theme.DiffAddedLineNumberBgColor = lipgloss.AdaptiveColor{ - Dark: "#1b2b34", - Light: "#c5d5c5", + theme.DiffAddedLineNumberBgColor = compat.AdaptiveColor{ + Dark: lipgloss.Color("#1b2b34"), + Light: lipgloss.Color("#c5d5c5"), } - theme.DiffRemovedLineNumberBgColor = lipgloss.AdaptiveColor{ - Dark: "#2d1f26", - Light: "#e7c8cb", + theme.DiffRemovedLineNumberBgColor = compat.AdaptiveColor{ + Dark: lipgloss.Color("#2d1f26"), + Light: lipgloss.Color("#e7c8cb"), } // Markdown colors - theme.MarkdownTextColor = lipgloss.AdaptiveColor{ - Dark: darkStep12, - Light: lightStep12, + theme.MarkdownTextColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep12), + Light: lipgloss.Color(lightStep12), } - theme.MarkdownHeadingColor = lipgloss.AdaptiveColor{ - Dark: darkPurple, - Light: lightPurple, + theme.MarkdownHeadingColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkPurple), + Light: lipgloss.Color(lightPurple), } - theme.MarkdownLinkColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, + theme.MarkdownLinkColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkBlue), + Light: lipgloss.Color(lightBlue), } - theme.MarkdownLinkTextColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, + theme.MarkdownLinkTextColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkCyan), + Light: lipgloss.Color(lightCyan), } - theme.MarkdownCodeColor = lipgloss.AdaptiveColor{ - Dark: darkGreen, - Light: lightGreen, + theme.MarkdownCodeColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkGreen), + Light: lipgloss.Color(lightGreen), } - theme.MarkdownBlockQuoteColor = lipgloss.AdaptiveColor{ - Dark: darkYellow, - Light: lightYellow, + theme.MarkdownBlockQuoteColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkYellow), + Light: lipgloss.Color(lightYellow), } - theme.MarkdownEmphColor = lipgloss.AdaptiveColor{ - Dark: darkYellow, - Light: lightYellow, + theme.MarkdownEmphColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkYellow), + Light: lipgloss.Color(lightYellow), } - theme.MarkdownStrongColor = lipgloss.AdaptiveColor{ - Dark: darkOrange, - Light: lightOrange, + theme.MarkdownStrongColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkOrange), + Light: lipgloss.Color(lightOrange), } - theme.MarkdownHorizontalRuleColor = lipgloss.AdaptiveColor{ - Dark: darkStep11, - Light: lightStep11, + theme.MarkdownHorizontalRuleColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep11), + Light: lipgloss.Color(lightStep11), } - theme.MarkdownListItemColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, + theme.MarkdownListItemColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkBlue), + Light: lipgloss.Color(lightBlue), } - theme.MarkdownListEnumerationColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, + theme.MarkdownListEnumerationColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkCyan), + Light: lipgloss.Color(lightCyan), } - theme.MarkdownImageColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, + theme.MarkdownImageColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkBlue), + Light: lipgloss.Color(lightBlue), } - theme.MarkdownImageTextColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, + theme.MarkdownImageTextColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkCyan), + Light: lipgloss.Color(lightCyan), } - theme.MarkdownCodeBlockColor = lipgloss.AdaptiveColor{ - Dark: darkStep12, - Light: lightStep12, + theme.MarkdownCodeBlockColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep12), + Light: lipgloss.Color(lightStep12), } // Syntax highlighting colors - theme.SyntaxCommentColor = lipgloss.AdaptiveColor{ - Dark: darkStep11, - Light: lightStep11, + theme.SyntaxCommentColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep11), + Light: lipgloss.Color(lightStep11), } - theme.SyntaxKeywordColor = lipgloss.AdaptiveColor{ - Dark: darkPurple, - Light: lightPurple, + theme.SyntaxKeywordColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkPurple), + Light: lipgloss.Color(lightPurple), } - theme.SyntaxFunctionColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, + theme.SyntaxFunctionColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkBlue), + Light: lipgloss.Color(lightBlue), } - theme.SyntaxVariableColor = lipgloss.AdaptiveColor{ - Dark: darkRed, - Light: lightRed, + theme.SyntaxVariableColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkRed), + Light: lipgloss.Color(lightRed), } - theme.SyntaxStringColor = lipgloss.AdaptiveColor{ - Dark: darkGreen, - Light: lightGreen, + theme.SyntaxStringColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkGreen), + Light: lipgloss.Color(lightGreen), } - theme.SyntaxNumberColor = lipgloss.AdaptiveColor{ - Dark: darkOrange, - Light: lightOrange, + theme.SyntaxNumberColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkOrange), + Light: lipgloss.Color(lightOrange), } - theme.SyntaxTypeColor = lipgloss.AdaptiveColor{ - Dark: darkYellow, - Light: lightYellow, + theme.SyntaxTypeColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkYellow), + Light: lipgloss.Color(lightYellow), } - theme.SyntaxOperatorColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, + theme.SyntaxOperatorColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkCyan), + Light: lipgloss.Color(lightCyan), } - theme.SyntaxPunctuationColor = lipgloss.AdaptiveColor{ - Dark: darkStep12, - Light: lightStep12, + theme.SyntaxPunctuationColor = compat.AdaptiveColor{ + Dark: lipgloss.Color(darkStep12), + Light: lipgloss.Color(lightStep12), } return theme diff --git a/packages/tui/internal/theme/tron.go b/packages/tui/internal/theme/tron.go deleted file mode 100644 index ea9756753..000000000 --- a/packages/tui/internal/theme/tron.go +++ /dev/null @@ -1,272 +0,0 @@ -package theme - -import ( - "github.com/charmbracelet/lipgloss" -) - -// TronTheme implements the Theme interface with Tron-inspired colors. -// It provides both dark and light variants, though Tron is primarily a dark theme. -type TronTheme struct { - BaseTheme -} - -// NewTronTheme creates a new instance of the Tron theme. -func NewTronTheme() *TronTheme { - // Tron color palette - // Inspired by the Tron movie's neon aesthetic - darkBackground := "#0c141f" - darkCurrentLine := "#1a2633" - darkSelection := "#1a2633" - darkForeground := "#caf0ff" - darkComment := "#4d6b87" - darkCyan := "#00d9ff" - darkBlue := "#007fff" - darkOrange := "#ff9000" - darkPink := "#ff00a0" - darkPurple := "#b73fff" - darkRed := "#ff3333" - darkYellow := "#ffcc00" - darkGreen := "#00ff8f" - darkBorder := "#1a2633" - - // Light mode approximation - lightBackground := "#f0f8ff" - lightCurrentLine := "#e0f0ff" - lightSelection := "#d0e8ff" - lightForeground := "#0c141f" - lightComment := "#4d6b87" - lightCyan := "#0097b3" - lightBlue := "#0066cc" - lightOrange := "#cc7300" - lightPink := "#cc0080" - lightPurple := "#9932cc" - lightRed := "#cc2929" - lightYellow := "#cc9900" - lightGreen := "#00cc72" - lightBorder := "#d0e8ff" - - theme := &TronTheme{} - - // Base colors - theme.PrimaryColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.SecondaryColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - theme.AccentColor = lipgloss.AdaptiveColor{ - Dark: darkOrange, - Light: lightOrange, - } - - // Status colors - theme.ErrorColor = lipgloss.AdaptiveColor{ - Dark: darkRed, - Light: lightRed, - } - theme.WarningColor = lipgloss.AdaptiveColor{ - Dark: darkOrange, - Light: lightOrange, - } - theme.SuccessColor = lipgloss.AdaptiveColor{ - Dark: darkGreen, - Light: lightGreen, - } - theme.InfoColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - - // Text colors - theme.TextColor = lipgloss.AdaptiveColor{ - Dark: darkForeground, - Light: lightForeground, - } - theme.TextMutedColor = lipgloss.AdaptiveColor{ - Dark: darkComment, - Light: lightComment, - } - - // Background colors - theme.BackgroundColor = lipgloss.AdaptiveColor{ - Dark: darkBackground, - Light: lightBackground, - } - theme.BackgroundSubtleColor = lipgloss.AdaptiveColor{ - Dark: darkCurrentLine, - Light: lightCurrentLine, - } - theme.BackgroundElementColor = lipgloss.AdaptiveColor{ - Dark: "#070d14", // Slightly darker than background - Light: "#ffffff", // Slightly lighter than background - } - - // Border colors - theme.BorderColor = lipgloss.AdaptiveColor{ - Dark: darkBorder, - Light: lightBorder, - } - theme.BorderActiveColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.BorderSubtleColor = lipgloss.AdaptiveColor{ - Dark: darkSelection, - Light: lightSelection, - } - - // Diff view colors - theme.DiffAddedColor = lipgloss.AdaptiveColor{ - Dark: darkGreen, - Light: lightGreen, - } - theme.DiffRemovedColor = lipgloss.AdaptiveColor{ - Dark: darkRed, - Light: lightRed, - } - theme.DiffContextColor = lipgloss.AdaptiveColor{ - Dark: darkComment, - Light: lightComment, - } - theme.DiffHunkHeaderColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - theme.DiffHighlightAddedColor = lipgloss.AdaptiveColor{ - Dark: "#00ff8f", - Light: "#a5d6a7", - } - theme.DiffHighlightRemovedColor = lipgloss.AdaptiveColor{ - Dark: "#ff3333", - Light: "#ef9a9a", - } - theme.DiffAddedBgColor = lipgloss.AdaptiveColor{ - Dark: "#0a2a1a", - Light: "#e8f5e9", - } - theme.DiffRemovedBgColor = lipgloss.AdaptiveColor{ - Dark: "#2a0a0a", - Light: "#ffebee", - } - theme.DiffContextBgColor = lipgloss.AdaptiveColor{ - Dark: darkBackground, - Light: lightBackground, - } - theme.DiffLineNumberColor = lipgloss.AdaptiveColor{ - Dark: darkComment, - Light: lightComment, - } - theme.DiffAddedLineNumberBgColor = lipgloss.AdaptiveColor{ - Dark: "#082015", - Light: "#c8e6c9", - } - theme.DiffRemovedLineNumberBgColor = lipgloss.AdaptiveColor{ - Dark: "#200808", - Light: "#ffcdd2", - } - - // Markdown colors - theme.MarkdownTextColor = lipgloss.AdaptiveColor{ - Dark: darkForeground, - Light: lightForeground, - } - theme.MarkdownHeadingColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.MarkdownLinkColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - theme.MarkdownLinkTextColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.MarkdownCodeColor = lipgloss.AdaptiveColor{ - Dark: darkGreen, - Light: lightGreen, - } - theme.MarkdownBlockQuoteColor = lipgloss.AdaptiveColor{ - Dark: darkYellow, - Light: lightYellow, - } - theme.MarkdownEmphColor = lipgloss.AdaptiveColor{ - Dark: darkYellow, - Light: lightYellow, - } - theme.MarkdownStrongColor = lipgloss.AdaptiveColor{ - Dark: darkOrange, - Light: lightOrange, - } - theme.MarkdownHorizontalRuleColor = lipgloss.AdaptiveColor{ - Dark: darkComment, - Light: lightComment, - } - theme.MarkdownListItemColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - theme.MarkdownListEnumerationColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.MarkdownImageColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - theme.MarkdownImageTextColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.MarkdownCodeBlockColor = lipgloss.AdaptiveColor{ - Dark: darkForeground, - Light: lightForeground, - } - - // Syntax highlighting colors - theme.SyntaxCommentColor = lipgloss.AdaptiveColor{ - Dark: darkComment, - Light: lightComment, - } - theme.SyntaxKeywordColor = lipgloss.AdaptiveColor{ - Dark: darkCyan, - Light: lightCyan, - } - theme.SyntaxFunctionColor = lipgloss.AdaptiveColor{ - Dark: darkGreen, - Light: lightGreen, - } - theme.SyntaxVariableColor = lipgloss.AdaptiveColor{ - Dark: darkOrange, - Light: lightOrange, - } - theme.SyntaxStringColor = lipgloss.AdaptiveColor{ - Dark: darkYellow, - Light: lightYellow, - } - theme.SyntaxNumberColor = lipgloss.AdaptiveColor{ - Dark: darkBlue, - Light: lightBlue, - } - theme.SyntaxTypeColor = lipgloss.AdaptiveColor{ - Dark: darkPurple, - Light: lightPurple, - } - theme.SyntaxOperatorColor = lipgloss.AdaptiveColor{ - Dark: darkPink, - Light: lightPink, - } - theme.SyntaxPunctuationColor = lipgloss.AdaptiveColor{ - Dark: darkForeground, - Light: lightForeground, - } - - return theme -} - -func init() { - // Register the Tron theme with the theme manager - RegisterTheme("tron", NewTronTheme()) -} |
