@@ -2,7 +2,7 @@ package theme
4 catppuccin "github.com/catppuccin/go"
4 catppuccin "github.com/catppuccin/go"
5− "github.com/charmbracelet/lipgloss"
5+ "github.com/charmbracelet/lipgloss/v2"
8// CatppuccinTheme implements the Theme interface with Catppuccin colors.
8// CatppuccinTheme implements the Theme interface with Catppuccin colors.
@@ -11,238 +11,162 @@ type CatppuccinTheme struct {
14−// NewCatppuccinTheme creates a new instance of the Catppuccin theme.
14+// NewCatppuccinMochaTheme creates a new instance of the Catppuccin Mocha theme.
15−func NewCatppuccinTheme() *CatppuccinTheme {
15+func NewCatppuccinMochaTheme() *CatppuccinTheme {
16− // Get the Catppuccin palettes
16+ // Get the Catppuccin palette
17 mocha := catppuccin.Mocha
17 mocha := catppuccin.Mocha
19+ theme := &CatppuccinTheme{}
22+ theme.PrimaryColor = lipgloss.Color(mocha.Blue().Hex)
23+ theme.SecondaryColor = lipgloss.Color(mocha.Mauve().Hex)
24+ theme.AccentColor = lipgloss.Color(mocha.Peach().Hex)
27+ theme.ErrorColor = lipgloss.Color(mocha.Red().Hex)
28+ theme.WarningColor = lipgloss.Color(mocha.Peach().Hex)
29+ theme.SuccessColor = lipgloss.Color(mocha.Green().Hex)
30+ theme.InfoColor = lipgloss.Color(mocha.Blue().Hex)
33+ theme.TextColor = lipgloss.Color(mocha.Text().Hex)
34+ theme.TextMutedColor = lipgloss.Color(mocha.Subtext0().Hex)
35+ theme.TextEmphasizedColor = lipgloss.Color(mocha.Lavender().Hex)
38+ theme.BackgroundColor = lipgloss.Color("#212121") // From existing styles
39+ theme.BackgroundSecondaryColor = lipgloss.Color("#2c2c2c") // From existing styles
40+ theme.BackgroundDarkerColor = lipgloss.Color("#181818") // From existing styles
43+ theme.BorderNormalColor = lipgloss.Color("#4b4c5c") // From existing styles
44+ theme.BorderFocusedColor = lipgloss.Color(mocha.Blue().Hex)
45+ theme.BorderDimColor = lipgloss.Color(mocha.Surface0().Hex)
48+ theme.DiffAddedColor = lipgloss.Color("#478247") // From existing diff.go
49+ theme.DiffRemovedColor = lipgloss.Color("#7C4444") // From existing diff.go
50+ theme.DiffContextColor = lipgloss.Color("#a0a0a0") // From existing diff.go
51+ theme.DiffHunkHeaderColor = lipgloss.Color("#a0a0a0") // From existing diff.go
52+ theme.DiffHighlightAddedColor = lipgloss.Color("#DAFADA") // From existing diff.go
53+ theme.DiffHighlightRemovedColor = lipgloss.Color("#FADADD") // From existing diff.go
54+ theme.DiffAddedBgColor = lipgloss.Color("#303A30") // From existing diff.go
55+ theme.DiffRemovedBgColor = lipgloss.Color("#3A3030") // From existing diff.go
56+ theme.DiffContextBgColor = lipgloss.Color("#212121") // From existing diff.go
57+ theme.DiffLineNumberColor = lipgloss.Color("#888888") // From existing diff.go
58+ theme.DiffAddedLineNumberBgColor = lipgloss.Color("#293229") // From existing diff.go
59+ theme.DiffRemovedLineNumberBgColor = lipgloss.Color("#332929") // From existing diff.go
62+ theme.MarkdownTextColor = lipgloss.Color(mocha.Text().Hex)
63+ theme.MarkdownHeadingColor = lipgloss.Color(mocha.Mauve().Hex)
64+ theme.MarkdownLinkColor = lipgloss.Color(mocha.Sky().Hex)
65+ theme.MarkdownLinkTextColor = lipgloss.Color(mocha.Pink().Hex)
66+ theme.MarkdownCodeColor = lipgloss.Color(mocha.Green().Hex)
67+ theme.MarkdownBlockQuoteColor = lipgloss.Color(mocha.Yellow().Hex)
68+ theme.MarkdownEmphColor = lipgloss.Color(mocha.Yellow().Hex)
69+ theme.MarkdownStrongColor = lipgloss.Color(mocha.Peach().Hex)
70+ theme.MarkdownHorizontalRuleColor = lipgloss.Color(mocha.Overlay0().Hex)
71+ theme.MarkdownListItemColor = lipgloss.Color(mocha.Blue().Hex)
72+ theme.MarkdownListEnumerationColor = lipgloss.Color(mocha.Sky().Hex)
73+ theme.MarkdownImageColor = lipgloss.Color(mocha.Sapphire().Hex)
74+ theme.MarkdownImageTextColor = lipgloss.Color(mocha.Pink().Hex)
75+ theme.MarkdownCodeBlockColor = lipgloss.Color(mocha.Text().Hex)
77+ // Syntax highlighting colors
78+ theme.SyntaxCommentColor = lipgloss.Color(mocha.Overlay1().Hex)
79+ theme.SyntaxKeywordColor = lipgloss.Color(mocha.Pink().Hex)
80+ theme.SyntaxFunctionColor = lipgloss.Color(mocha.Green().Hex)
81+ theme.SyntaxVariableColor = lipgloss.Color(mocha.Sky().Hex)
82+ theme.SyntaxStringColor = lipgloss.Color(mocha.Yellow().Hex)
83+ theme.SyntaxNumberColor = lipgloss.Color(mocha.Teal().Hex)
84+ theme.SyntaxTypeColor = lipgloss.Color(mocha.Sky().Hex)
85+ theme.SyntaxOperatorColor = lipgloss.Color(mocha.Pink().Hex)
86+ theme.SyntaxPunctuationColor = lipgloss.Color(mocha.Text().Hex)
91+// NewCatppuccinLatteTheme creates a new instance of the Catppuccin Latte theme.
92+func NewCatppuccinLatteTheme() *CatppuccinTheme {
93+ // Get the Catppuccin palette
18 latte := catppuccin.Latte
94 latte := catppuccin.Latte
20 theme := &CatppuccinTheme{}
96 theme := &CatppuccinTheme{}
22 // Base colors
98 // Base colors
23− theme.PrimaryColor = lipgloss.AdaptiveColor{
99+ theme.PrimaryColor = lipgloss.Color(latte.Blue().Hex)
24− Dark: mocha.Blue().Hex,
25− Light: latte.Blue().Hex,
27− theme.SecondaryColor = lipgloss.AdaptiveColor{
100+ theme.SecondaryColor = lipgloss.Color(latte.Mauve().Hex)
28− Dark: mocha.Mauve().Hex,
29− Light: latte.Mauve().Hex,
31− theme.AccentColor = lipgloss.AdaptiveColor{
101+ theme.AccentColor = lipgloss.Color(latte.Peach().Hex)
32− Dark: mocha.Peach().Hex,
33− Light: latte.Peach().Hex,
36 // Status colors
103 // Status colors
37− theme.ErrorColor = lipgloss.AdaptiveColor{
104+ theme.ErrorColor = lipgloss.Color(latte.Red().Hex)
38− Dark: mocha.Red().Hex,
39− Light: latte.Red().Hex,
41− theme.WarningColor = lipgloss.AdaptiveColor{
105+ theme.WarningColor = lipgloss.Color(latte.Peach().Hex)
42− Dark: mocha.Peach().Hex,
43− Light: latte.Peach().Hex,
45− theme.SuccessColor = lipgloss.AdaptiveColor{
106+ theme.SuccessColor = lipgloss.Color(latte.Green().Hex)
46− Dark: mocha.Green().Hex,
47− Light: latte.Green().Hex,
49− theme.InfoColor = lipgloss.AdaptiveColor{
107+ theme.InfoColor = lipgloss.Color(latte.Blue().Hex)
50− Dark: mocha.Blue().Hex,
51− Light: latte.Blue().Hex,
54 // Text colors
109 // Text colors
55− theme.TextColor = lipgloss.AdaptiveColor{
110+ theme.TextColor = lipgloss.Color(latte.Text().Hex)
56− Dark: mocha.Text().Hex,
57− Light: latte.Text().Hex,
59− theme.TextMutedColor = lipgloss.AdaptiveColor{
111+ theme.TextMutedColor = lipgloss.Color(latte.Subtext0().Hex)
60− Dark: mocha.Subtext0().Hex,
61− Light: latte.Subtext0().Hex,
63− theme.TextEmphasizedColor = lipgloss.AdaptiveColor{
112+ theme.TextEmphasizedColor = lipgloss.Color(latte.Lavender().Hex)
64− Dark: mocha.Lavender().Hex,
65− Light: latte.Lavender().Hex,
68 // Background colors
114 // Background colors
69− theme.BackgroundColor = lipgloss.AdaptiveColor{
115+ theme.BackgroundColor = lipgloss.Color("#EEEEEE") // Light equivalent
70− Dark: "#212121", // From existing styles
71− Light: "#EEEEEE", // Light equivalent
73− theme.BackgroundSecondaryColor = lipgloss.AdaptiveColor{
116+ theme.BackgroundSecondaryColor = lipgloss.Color("#E0E0E0") // Light equivalent
74− Dark: "#2c2c2c", // From existing styles
75− Light: "#E0E0E0", // Light equivalent
77− theme.BackgroundDarkerColor = lipgloss.AdaptiveColor{
117+ theme.BackgroundDarkerColor = lipgloss.Color("#F5F5F5") // Light equivalent
78− Dark: "#181818", // From existing styles
79− Light: "#F5F5F5", // Light equivalent
82 // Border colors
119 // Border colors
83− theme.BorderNormalColor = lipgloss.AdaptiveColor{
120+ theme.BorderNormalColor = lipgloss.Color("#BDBDBD") // Light equivalent
84− Dark: "#4b4c5c", // From existing styles
85− Light: "#BDBDBD", // Light equivalent
87− theme.BorderFocusedColor = lipgloss.AdaptiveColor{
121+ theme.BorderFocusedColor = lipgloss.Color(latte.Blue().Hex)
88− Dark: mocha.Blue().Hex,
89− Light: latte.Blue().Hex,
91− theme.BorderDimColor = lipgloss.AdaptiveColor{
122+ theme.BorderDimColor = lipgloss.Color(latte.Surface0().Hex)
92− Dark: mocha.Surface0().Hex,
93− Light: latte.Surface0().Hex,
96 // Diff view colors
124 // Diff view colors
97− theme.DiffAddedColor = lipgloss.AdaptiveColor{
125+ theme.DiffAddedColor = lipgloss.Color("#2E7D32") // Light equivalent
98− Dark: "#478247", // From existing diff.go
99− Light: "#2E7D32", // Light equivalent
101− theme.DiffRemovedColor = lipgloss.AdaptiveColor{
126+ theme.DiffRemovedColor = lipgloss.Color("#C62828") // Light equivalent
102− Dark: "#7C4444", // From existing diff.go
103− Light: "#C62828", // Light equivalent
105− theme.DiffContextColor = lipgloss.AdaptiveColor{
127+ theme.DiffContextColor = lipgloss.Color("#757575") // Light equivalent
106− Dark: "#a0a0a0", // From existing diff.go
107− Light: "#757575", // Light equivalent
109− theme.DiffHunkHeaderColor = lipgloss.AdaptiveColor{
128+ theme.DiffHunkHeaderColor = lipgloss.Color("#757575") // Light equivalent
110− Dark: "#a0a0a0", // From existing diff.go
111− Light: "#757575", // Light equivalent
113− theme.DiffHighlightAddedColor = lipgloss.AdaptiveColor{
129+ theme.DiffHighlightAddedColor = lipgloss.Color("#A5D6A7") // Light equivalent
114− Dark: "#DAFADA", // From existing diff.go
115− Light: "#A5D6A7", // Light equivalent
117− theme.DiffHighlightRemovedColor = lipgloss.AdaptiveColor{
130+ theme.DiffHighlightRemovedColor = lipgloss.Color("#EF9A9A") // Light equivalent
118− Dark: "#FADADD", // From existing diff.go
119− Light: "#EF9A9A", // Light equivalent
121− theme.DiffAddedBgColor = lipgloss.AdaptiveColor{
131+ theme.DiffAddedBgColor = lipgloss.Color("#E8F5E9") // Light equivalent
122− Dark: "#303A30", // From existing diff.go
123− Light: "#E8F5E9", // Light equivalent
125− theme.DiffRemovedBgColor = lipgloss.AdaptiveColor{
132+ theme.DiffRemovedBgColor = lipgloss.Color("#FFEBEE") // Light equivalent
126− Dark: "#3A3030", // From existing diff.go
127− Light: "#FFEBEE", // Light equivalent
129− theme.DiffContextBgColor = lipgloss.AdaptiveColor{
133+ theme.DiffContextBgColor = lipgloss.Color("#F5F5F5") // Light equivalent
130− Dark: "#212121", // From existing diff.go
131− Light: "#F5F5F5", // Light equivalent
133− theme.DiffLineNumberColor = lipgloss.AdaptiveColor{
134+ theme.DiffLineNumberColor = lipgloss.Color("#9E9E9E") // Light equivalent
134− Dark: "#888888", // From existing diff.go
135− Light: "#9E9E9E", // Light equivalent
137− theme.DiffAddedLineNumberBgColor = lipgloss.AdaptiveColor{
135+ theme.DiffAddedLineNumberBgColor = lipgloss.Color("#C8E6C9") // Light equivalent
138− Dark: "#293229", // From existing diff.go
139− Light: "#C8E6C9", // Light equivalent
141− theme.DiffRemovedLineNumberBgColor = lipgloss.AdaptiveColor{
136+ theme.DiffRemovedLineNumberBgColor = lipgloss.Color("#FFCDD2") // Light equivalent
142− Dark: "#332929", // From existing diff.go
143− Light: "#FFCDD2", // Light equivalent
146 // Markdown colors
138 // Markdown colors
147− theme.MarkdownTextColor = lipgloss.AdaptiveColor{
139+ theme.MarkdownTextColor = lipgloss.Color(latte.Text().Hex)
148− Dark: mocha.Text().Hex,
149− Light: latte.Text().Hex,
151− theme.MarkdownHeadingColor = lipgloss.AdaptiveColor{
140+ theme.MarkdownHeadingColor = lipgloss.Color(latte.Mauve().Hex)
152− Dark: mocha.Mauve().Hex,
153− Light: latte.Mauve().Hex,
155− theme.MarkdownLinkColor = lipgloss.AdaptiveColor{
141+ theme.MarkdownLinkColor = lipgloss.Color(latte.Sky().Hex)
156− Dark: mocha.Sky().Hex,
157− Light: latte.Sky().Hex,
159− theme.MarkdownLinkTextColor = lipgloss.AdaptiveColor{
142+ theme.MarkdownLinkTextColor = lipgloss.Color(latte.Pink().Hex)
160− Dark: mocha.Pink().Hex,
161− Light: latte.Pink().Hex,
163− theme.MarkdownCodeColor = lipgloss.AdaptiveColor{
143+ theme.MarkdownCodeColor = lipgloss.Color(latte.Green().Hex)
164− Dark: mocha.Green().Hex,
165− Light: latte.Green().Hex,
167− theme.MarkdownBlockQuoteColor = lipgloss.AdaptiveColor{
144+ theme.MarkdownBlockQuoteColor = lipgloss.Color(latte.Yellow().Hex)
168− Dark: mocha.Yellow().Hex,
169− Light: latte.Yellow().Hex,
171− theme.MarkdownEmphColor = lipgloss.AdaptiveColor{
145+ theme.MarkdownEmphColor = lipgloss.Color(latte.Yellow().Hex)
172− Dark: mocha.Yellow().Hex,
173− Light: latte.Yellow().Hex,
175− theme.MarkdownStrongColor = lipgloss.AdaptiveColor{
146+ theme.MarkdownStrongColor = lipgloss.Color(latte.Peach().Hex)
176− Dark: mocha.Peach().Hex,
177− Light: latte.Peach().Hex,
179− theme.MarkdownHorizontalRuleColor = lipgloss.AdaptiveColor{
147+ theme.MarkdownHorizontalRuleColor = lipgloss.Color(latte.Overlay0().Hex)
180− Dark: mocha.Overlay0().Hex,
181− Light: latte.Overlay0().Hex,
183− theme.MarkdownListItemColor = lipgloss.AdaptiveColor{
148+ theme.MarkdownListItemColor = lipgloss.Color(latte.Blue().Hex)
184− Dark: mocha.Blue().Hex,
185− Light: latte.Blue().Hex,
187− theme.MarkdownListEnumerationColor = lipgloss.AdaptiveColor{
149+ theme.MarkdownListEnumerationColor = lipgloss.Color(latte.Sky().Hex)
188− Dark: mocha.Sky().Hex,
189− Light: latte.Sky().Hex,
191− theme.MarkdownImageColor = lipgloss.AdaptiveColor{
150+ theme.MarkdownImageColor = lipgloss.Color(latte.Sapphire().Hex)
192− Dark: mocha.Sapphire().Hex,
193− Light: latte.Sapphire().Hex,
195− theme.MarkdownImageTextColor = lipgloss.AdaptiveColor{
151+ theme.MarkdownImageTextColor = lipgloss.Color(latte.Pink().Hex)
196− Dark: mocha.Pink().Hex,
197− Light: latte.Pink().Hex,
199− theme.MarkdownCodeBlockColor = lipgloss.AdaptiveColor{
152+ theme.MarkdownCodeBlockColor = lipgloss.Color(latte.Text().Hex)
200− Dark: mocha.Text().Hex,
201− Light: latte.Text().Hex,
204 // Syntax highlighting colors
154 // Syntax highlighting colors
205− theme.SyntaxCommentColor = lipgloss.AdaptiveColor{
155+ theme.SyntaxCommentColor = lipgloss.Color(latte.Overlay1().Hex)
206− Dark: mocha.Overlay1().Hex,
207− Light: latte.Overlay1().Hex,
209− theme.SyntaxKeywordColor = lipgloss.AdaptiveColor{
156+ theme.SyntaxKeywordColor = lipgloss.Color(latte.Pink().Hex)
210− Dark: mocha.Pink().Hex,
211− Light: latte.Pink().Hex,
213− theme.SyntaxFunctionColor = lipgloss.AdaptiveColor{
157+ theme.SyntaxFunctionColor = lipgloss.Color(latte.Green().Hex)
214− Dark: mocha.Green().Hex,
215− Light: latte.Green().Hex,
217− theme.SyntaxVariableColor = lipgloss.AdaptiveColor{
158+ theme.SyntaxVariableColor = lipgloss.Color(latte.Sky().Hex)
218− Dark: mocha.Sky().Hex,
219− Light: latte.Sky().Hex,
221− theme.SyntaxStringColor = lipgloss.AdaptiveColor{
159+ theme.SyntaxStringColor = lipgloss.Color(latte.Yellow().Hex)
222− Dark: mocha.Yellow().Hex,
223− Light: latte.Yellow().Hex,
225− theme.SyntaxNumberColor = lipgloss.AdaptiveColor{
160+ theme.SyntaxNumberColor = lipgloss.Color(latte.Teal().Hex)
226− Dark: mocha.Teal().Hex,
227− Light: latte.Teal().Hex,
229− theme.SyntaxTypeColor = lipgloss.AdaptiveColor{
161+ theme.SyntaxTypeColor = lipgloss.Color(latte.Sky().Hex)
230− Dark: mocha.Sky().Hex,
231− Light: latte.Sky().Hex,
233− theme.SyntaxOperatorColor = lipgloss.AdaptiveColor{
162+ theme.SyntaxOperatorColor = lipgloss.Color(latte.Pink().Hex)
234− Dark: mocha.Pink().Hex,
235− Light: latte.Pink().Hex,
237− theme.SyntaxPunctuationColor = lipgloss.AdaptiveColor{
163+ theme.SyntaxPunctuationColor = lipgloss.Color(latte.Text().Hex)
238− Dark: mocha.Text().Hex,
239− Light: latte.Text().Hex,
242 return theme
165 return theme
245func init() {
168func init() {
246− // Register the Catppuccin theme with the theme manager
169+ // Register the Catppuccin themes with the theme manager
247− RegisterTheme("catppuccin", NewCatppuccinTheme())
170+ RegisterTheme("catppuccin-mocha", NewCatppuccinMochaTheme())
171+ RegisterTheme("catppuccin-latte", NewCatppuccinLatteTheme())