From c1955a4c800c5746c3b25d74d522c1c94186455f Mon Sep 17 00:00:00 2001 From: Tyler Koenig Date: Tue, 21 Jul 2026 22:09:51 -0400 Subject: [PATCH] feat(tui): overhaul theme palette for legibility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace Nord and Gruvbox with Rosé Pine and Dracula. Add Kanagawa and Everforest. Fix legibility issues across remaining themes: - Tokyo Night: separate Muted from Fg, distinct SelectedBg - Catppuccin Mocha: bolder semantic colors, tighter zebra, distinct SelectedBg - Order themes by warm→cool color temperature for smooth cycling --- internal/tui/theme.go | 138 ++++++++++++++++++++++++++++-------------- 1 file changed, 91 insertions(+), 47 deletions(-) diff --git a/internal/tui/theme.go b/internal/tui/theme.go index 8731ec3..e8daf79 100644 --- a/internal/tui/theme.go +++ b/internal/tui/theme.go @@ -46,10 +46,12 @@ type Theme struct { var themes = []Theme{ themeFlexokiDark, + themeEverforest, + themeKanagawa, themeTokyoNight, themeCatppuccinMocha, - themeNord, - themeGruvbox, + themeRosePine, + themeDracula, } var themeFlexokiDark = Theme{ @@ -80,7 +82,7 @@ var themeTokyoNight = Theme{ Panel: cc("#292e42", ""), Border: cc("#3b4261", "8"), Fg: cc("#c0caf5", "15"), - Muted: cc("#a9b1d6", "7"), + Muted: cc("#7982a9", "7"), Subtle: cc("#565f89", "7"), Success: cc("#9ece6a", "10"), Warning: cc("#e0af68", "11"), @@ -91,28 +93,28 @@ var themeTokyoNight = Theme{ Purple: cc("#bb9af7", "13"), ZebraBg: cc("#1c1d28", ""), SelectedFg: cc("#c0caf5", "15"), - SelectedBg: cc("#292e42", "4"), + SelectedBg: cc("#363c53", "4"), } -var themeGruvbox = Theme{ - Name: "Gruvbox", - Bg: cc("#282828", ""), - Surface: cc("#3c3836", ""), - Panel: cc("#504945", ""), - Border: cc("#665c54", "8"), - Fg: cc("#ebdbb2", "15"), - Muted: cc("#bdae93", "7"), - Subtle: cc("#7c6f64", "7"), - Success: cc("#b8bb26", "10"), - Warning: cc("#fabd2f", "11"), - Stale: cc("#fe8019", "3"), - Danger: cc("#fb4934", "9"), - Info: cc("#83a598", "12"), - Accent: cc("#8ec07c", "14"), - Purple: cc("#d3869b", "13"), - ZebraBg: cc("#2a2a2a", ""), - SelectedFg: cc("#fbf1c7", "15"), - SelectedBg: cc("#504945", "4"), +var themeDracula = Theme{ + Name: "Dracula", + Bg: cc("#282a36", ""), + Surface: cc("#343746", ""), + Panel: cc("#44475a", ""), + Border: cc("#6272a4", "8"), + Fg: cc("#f8f8f2", "15"), + Muted: cc("#a9b0cb", "7"), + Subtle: cc("#6272a4", "7"), + Success: cc("#50fa7b", "10"), + Warning: cc("#f1fa8c", "11"), + Stale: cc("#ffb86c", "3"), + Danger: cc("#ff5555", "9"), + Info: cc("#8be9fd", "12"), + Accent: cc("#bd93f9", "14"), + Purple: cc("#ff79c6", "13"), + ZebraBg: cc("#2c2e3a", ""), + SelectedFg: cc("#f8f8f2", "15"), + SelectedBg: cc("#52556b", "4"), } var themeCatppuccinMocha = Theme{ @@ -124,37 +126,79 @@ var themeCatppuccinMocha = Theme{ Fg: cc("#cdd6f4", "15"), Muted: cc("#a6adc8", "7"), Subtle: cc("#6c7086", "7"), - Success: cc("#a6e3a1", "10"), - Warning: cc("#f9e2af", "11"), + Success: cc("#7dc47a", "10"), + Warning: cc("#f0c644", "11"), Stale: cc("#fab387", "3"), - Danger: cc("#f38ba8", "9"), + Danger: cc("#e6546e", "9"), Info: cc("#89b4fa", "12"), Accent: cc("#94e2d5", "14"), Purple: cc("#cba6f7", "13"), - ZebraBg: cc("#232334", ""), + ZebraBg: cc("#212130", ""), SelectedFg: cc("#cdd6f4", "15"), - SelectedBg: cc("#45475a", "4"), + SelectedBg: cc("#585b70", "4"), } -var themeNord = Theme{ - Name: "Nord", - Bg: cc("#2e3440", ""), - Surface: cc("#3b4252", ""), - Panel: cc("#434c5e", ""), - Border: cc("#4c566a", "8"), - Fg: cc("#d8dee9", "15"), - Muted: cc("#d8dee9", "7"), - Subtle: cc("#4c566a", "7"), - Success: cc("#a3be8c", "10"), - Warning: cc("#ebcb8b", "11"), - Stale: cc("#d08770", "3"), - Danger: cc("#bf616a", "9"), - Info: cc("#81a1c1", "12"), - Accent: cc("#88c0d0", "14"), - Purple: cc("#b48ead", "13"), - ZebraBg: cc("#323845", ""), - SelectedFg: cc("#eceff4", "15"), - SelectedBg: cc("#434c5e", "4"), +var themeRosePine = Theme{ + Name: "Rosé Pine", + Bg: cc("#191724", ""), + Surface: cc("#1f1d2e", ""), + Panel: cc("#26233a", ""), + Border: cc("#524f67", "8"), + Fg: cc("#e0def4", "15"), + Muted: cc("#908caa", "7"), + Subtle: cc("#6e6a86", "7"), + Success: cc("#9ccfd8", "10"), + Warning: cc("#f6c177", "11"), + Stale: cc("#ebbcba", "3"), + Danger: cc("#eb6f92", "9"), + Info: cc("#3e8fb0", "12"), + Accent: cc("#c4a7e7", "14"), + Purple: cc("#ebbcba", "13"), + ZebraBg: cc("#1c1a28", ""), + SelectedFg: cc("#e0def4", "15"), + SelectedBg: cc("#403d52", "4"), +} + +var themeKanagawa = Theme{ + Name: "Kanagawa", + Bg: cc("#1F1F28", ""), + Surface: cc("#2A2A37", ""), + Panel: cc("#363646", ""), + Border: cc("#54546D", "8"), + Fg: cc("#DCD7BA", "15"), + Muted: cc("#C8C093", "7"), + Subtle: cc("#727169", "7"), + Success: cc("#98BB6C", "10"), + Warning: cc("#E6C384", "11"), + Stale: cc("#FFA066", "3"), + Danger: cc("#E46876", "9"), + Info: cc("#7E9CD8", "12"), + Accent: cc("#7FB4CA", "14"), + Purple: cc("#D27E99", "13"), + ZebraBg: cc("#22222c", ""), + SelectedFg: cc("#DCD7BA", "15"), + SelectedBg: cc("#2D4F67", "4"), +} + +var themeEverforest = Theme{ + Name: "Everforest", + Bg: cc("#2F383E", ""), + Surface: cc("#343F44", ""), + Panel: cc("#3D484D", ""), + Border: cc("#56635F", "8"), + Fg: cc("#D3C6AA", "15"), + Muted: cc("#9DA9A0", "7"), + Subtle: cc("#7A8478", "7"), + Success: cc("#A7C080", "10"), + Warning: cc("#DBBC7F", "11"), + Stale: cc("#E69875", "3"), + Danger: cc("#E67E80", "9"), + Info: cc("#7FBBB3", "12"), + Accent: cc("#83C092", "14"), + Purple: cc("#D699B6", "13"), + ZebraBg: cc("#30393F", ""), + SelectedFg: cc("#D3C6AA", "15"), + SelectedBg: cc("#475258", "4"), } func (t Theme) HuhTheme() *huh.Theme { -- 2.52.0