feat(theme): add the Catppuccin adaptive palette
Expose light/dark adaptive styles for the chrome, following the lipgloss v2 color API.
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
// Package theme is the Catppuccin palette used by lazyntfy.
|
||||
// Dark terminals get Mocha and light terminals get Latte, so the chrome
|
||||
// matches a Catppuccin terminal theme.
|
||||
package theme
|
||||
|
||||
import (
|
||||
"image/color"
|
||||
|
||||
"charm.land/lipgloss/v2"
|
||||
"charm.land/lipgloss/v2/compat"
|
||||
)
|
||||
|
||||
func pair(dark, light string) color.Color {
|
||||
return compat.AdaptiveColor{Dark: lipgloss.Color(dark), Light: lipgloss.Color(light)}
|
||||
}
|
||||
|
||||
var (
|
||||
// Mocha / Latte.
|
||||
mauve = pair("#cba6f7", "#8839ef")
|
||||
red = pair("#f38ba8", "#d20f39")
|
||||
yellow = pair("#f9e2af", "#df8e1d")
|
||||
green = pair("#a6e3a1", "#40a02b")
|
||||
text = pair("#cdd6f4", "#4c4f69")
|
||||
overlay = pair("#6c7086", "#9ca0b0")
|
||||
surface = pair("#313244", "#ccd0da")
|
||||
base = pair("#1e1e2e", "#eff1f5")
|
||||
crust = pair("#11111b", "#dce0e8")
|
||||
|
||||
Title = lipgloss.NewStyle().Bold(true).Foreground(mauve)
|
||||
Accent = lipgloss.NewStyle().Foreground(mauve)
|
||||
Text = lipgloss.NewStyle().Foreground(text)
|
||||
Dim = lipgloss.NewStyle().Foreground(overlay)
|
||||
OK = lipgloss.NewStyle().Foreground(green)
|
||||
Warn = lipgloss.NewStyle().Foreground(yellow)
|
||||
Bad = lipgloss.NewStyle().Bold(true).Foreground(red)
|
||||
Badge = lipgloss.NewStyle().Bold(true).Foreground(crust).Background(mauve)
|
||||
Key = lipgloss.NewStyle().Bold(true).Foreground(mauve).Background(surface)
|
||||
Filter = lipgloss.NewStyle().Foreground(crust).Background(yellow)
|
||||
Selected = lipgloss.NewStyle().Bold(true).Foreground(base).Background(mauve)
|
||||
)
|
||||
Reference in New Issue
Block a user