theme

package
v0.29.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 31, 2026 License: MIT Imports: 6 Imported by: 0

README

theme

The theme package defines the color palette system for Matcha's terminal UI. It provides built-in themes and supports user-created custom themes.

Architecture

Each theme is a set of named colors (accent, danger, warning, link, etc.) used consistently across all UI components. The package:

  • Defines 6 built-in themes: Matcha, Rose, Lavender, Ocean, Peach, and Catppuccin Mocha
  • Supports custom themes loaded from ~/.config/matcha/themes/*.json
  • Maintains a global ActiveTheme variable that all UI components reference
  • Uses Lip Gloss color values for terminal-compatible color rendering

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ActiveTheme = Matcha

ActiveTheme is the currently active theme used for styling.

View Source
var BuiltinThemes = []Theme{
	Matcha,
	Rose,
	Lavender,
	Ocean,
	Peach,
	CatppuccinMocha,
}

BuiltinThemes lists all built-in themes in display order.

View Source
var CatppuccinMocha = Theme{
	Name:       "Catppuccin Mocha",
	Accent:     lipgloss.Color("#89B4FA"),
	AccentDark: lipgloss.Color("#74C7EC"),
	AccentText: lipgloss.Color("#1E1E2E"),
	Secondary:  lipgloss.Color("#6C7086"),
	SubtleText: lipgloss.Color("#7F849C"),
	MutedText:  lipgloss.Color("#9399B2"),
	DimText:    lipgloss.Color("#BAC2DE"),
	Danger:     lipgloss.Color("#F38BA8"),
	Warning:    lipgloss.Color("#FAB387"),
	Tip:        lipgloss.Color("#F9E2AF"),
	Link:       lipgloss.Color("#89DCEB"),
	Directory:  lipgloss.Color("#89B4FA"),
	Contrast:   lipgloss.Color("#1E1E2E"),
}
View Source
var Lavender = Theme{
	Name:       "Lavender",
	Accent:     lipgloss.Color("#B4A7D6"),
	AccentDark: lipgloss.Color("#8E7CC3"),
	AccentText: lipgloss.Color("#FFFDF5"),
	Secondary:  lipgloss.Color("244"),
	SubtleText: lipgloss.Color("245"),
	MutedText:  lipgloss.Color("247"),
	DimText:    lipgloss.Color("250"),
	Danger:     lipgloss.Color("196"),
	Warning:    lipgloss.Color("208"),
	Tip:        lipgloss.Color("214"),
	Link:       lipgloss.Color("#9BC4FF"),
	Directory:  lipgloss.Color("#B4A7D6"),
	Contrast:   lipgloss.Color("#000000"),
}
View Source
var Matcha = Theme{
	Name:       "Matcha",
	Accent:     lipgloss.Color("42"),
	AccentDark: lipgloss.Color("#25A065"),
	AccentText: lipgloss.Color("#FFFDF5"),
	Secondary:  lipgloss.Color("244"),
	SubtleText: lipgloss.Color("245"),
	MutedText:  lipgloss.Color("247"),
	DimText:    lipgloss.Color("250"),
	Danger:     lipgloss.Color("196"),
	Warning:    lipgloss.Color("208"),
	Tip:        lipgloss.Color("214"),
	Link:       lipgloss.Color("#9BC4FF"),
	Directory:  lipgloss.Color("34"),
	Contrast:   lipgloss.Color("#000000"),
}
View Source
var Ocean = Theme{
	Name:       "Ocean",
	Accent:     lipgloss.Color("#5B9BD5"),
	AccentDark: lipgloss.Color("#3A7BBF"),
	AccentText: lipgloss.Color("#FFFDF5"),
	Secondary:  lipgloss.Color("244"),
	SubtleText: lipgloss.Color("245"),
	MutedText:  lipgloss.Color("247"),
	DimText:    lipgloss.Color("250"),
	Danger:     lipgloss.Color("196"),
	Warning:    lipgloss.Color("208"),
	Tip:        lipgloss.Color("214"),
	Link:       lipgloss.Color("#9BC4FF"),
	Directory:  lipgloss.Color("#5B9BD5"),
	Contrast:   lipgloss.Color("#000000"),
}
View Source
var Peach = Theme{
	Name:       "Peach",
	Accent:     lipgloss.Color("#FAB387"),
	AccentDark: lipgloss.Color("#E0956E"),
	AccentText: lipgloss.Color("#1E1E2E"),
	Secondary:  lipgloss.Color("244"),
	SubtleText: lipgloss.Color("245"),
	MutedText:  lipgloss.Color("247"),
	DimText:    lipgloss.Color("250"),
	Danger:     lipgloss.Color("#F38BA8"),
	Warning:    lipgloss.Color("#F9E2AF"),
	Tip:        lipgloss.Color("#F9E2AF"),
	Link:       lipgloss.Color("#89B4FA"),
	Directory:  lipgloss.Color("#FAB387"),
	Contrast:   lipgloss.Color("#1E1E2E"),
}
View Source
var Rose = Theme{
	Name:       "Rose",
	Accent:     lipgloss.Color("#E8729B"),
	AccentDark: lipgloss.Color("#B5547A"),
	AccentText: lipgloss.Color("#FFFDF5"),
	Secondary:  lipgloss.Color("244"),
	SubtleText: lipgloss.Color("245"),
	MutedText:  lipgloss.Color("247"),
	DimText:    lipgloss.Color("250"),
	Danger:     lipgloss.Color("196"),
	Warning:    lipgloss.Color("208"),
	Tip:        lipgloss.Color("214"),
	Link:       lipgloss.Color("#9BC4FF"),
	Directory:  lipgloss.Color("#E8729B"),
	Contrast:   lipgloss.Color("#000000"),
}

Functions

func SetTheme

func SetTheme(name string) bool

SetTheme sets the active theme by name. Returns true if found. It searches built-in themes first, then custom themes.

Types

type Theme

type Theme struct {
	Name       string      `json:"name"`
	Accent     color.Color `json:"-"`
	AccentDark color.Color `json:"-"`
	AccentText color.Color `json:"-"`
	Secondary  color.Color `json:"-"`
	SubtleText color.Color `json:"-"`
	MutedText  color.Color `json:"-"`
	DimText    color.Color `json:"-"`
	Danger     color.Color `json:"-"`
	Warning    color.Color `json:"-"`
	Tip        color.Color `json:"-"`
	Link       color.Color `json:"-"`
	Directory  color.Color `json:"-"`
	Contrast   color.Color `json:"-"`
}

Theme defines the color palette for the application.

func AllThemes

func AllThemes() []Theme

AllThemes returns all available themes (built-in + custom).

func LoadCustomThemes

func LoadCustomThemes() []Theme

LoadCustomThemes loads custom themes from ~/.config/matcha/themes/*.json.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL