feat(tui): add NvChadTheme field and ThemeByID helper

This commit is contained in:
MDietermann
2026-04-14 09:58:04 +02:00
parent adfc9232ac
commit e830e4dfda
2 changed files with 49 additions and 9 deletions

View File

@@ -7,21 +7,33 @@ import (
"github.com/MDietermann/ArduinoArchSetup/internal/module"
)
// Theme is a named colorscheme presented in the wizard. Plan 3 wires these
// names to actual theme modules; for now they are display-only strings.
// Theme is a named colorscheme presented in the wizard. Each entry carries
// per-tool theme names; Plan 3b uses NvChadTheme, later plans add more.
type Theme struct {
ID string
Name string
ID string
Name string
NvChadTheme string
}
// BuiltinThemes is the fixed list the wizard shows. Keep in sync with the
// themes shipped by Plan 3's theme module.
var BuiltinThemes = []Theme{
{ID: "gruvbox", Name: "Gruvbox Dark"},
{ID: "catppuccin", Name: "Catppuccin Mocha"},
{ID: "tokyonight", Name: "Tokyo Night"},
{ID: "nord", Name: "Nord"},
{ID: "dracula", Name: "Dracula"},
{ID: "gruvbox", Name: "Gruvbox Dark", NvChadTheme: "gruvbox"},
{ID: "catppuccin", Name: "Catppuccin Mocha", NvChadTheme: "catppuccin"},
{ID: "tokyonight", Name: "Tokyo Night", NvChadTheme: "tokyonight"},
{ID: "nord", Name: "Nord", NvChadTheme: "nord"},
{ID: "dracula", Name: "Dracula", NvChadTheme: "dracula"},
}
// ThemeByID returns the Theme with the given ID. The bool is false when no
// match is found; callers decide whether to fall back or error.
func ThemeByID(themes []Theme, id string) (Theme, bool) {
for _, t := range themes {
if t.ID == id {
return t, true
}
}
return Theme{}, false
}
// ModuleChoice is one row in the module selector.