@@ -1,224 +0,0 @@
1−package theme
2−
3−import (
4− "github.com/charmbracelet/lipgloss/v2"
5−)
6−
7−// Gruvbox color palette constants
8−const (
9− // Dark theme colors
10− gruvboxDarkBg0 = "#282828"
11− gruvboxDarkBg0Soft = "#32302f"
12− gruvboxDarkBg1 = "#3c3836"
13− gruvboxDarkBg2 = "#504945"
14− gruvboxDarkBg3 = "#665c54"
15− gruvboxDarkBg4 = "#7c6f64"
16− gruvboxDarkFg0 = "#fbf1c7"
17− gruvboxDarkFg1 = "#ebdbb2"
18− gruvboxDarkFg2 = "#d5c4a1"
19− gruvboxDarkFg3 = "#bdae93"
20− gruvboxDarkFg4 = "#a89984"
21− gruvboxDarkGray = "#928374"
22− gruvboxDarkRed = "#cc241d"
23− gruvboxDarkRedBright = "#fb4934"
24− gruvboxDarkGreen = "#98971a"
25− gruvboxDarkGreenBright = "#b8bb26"
26− gruvboxDarkYellow = "#d79921"
27− gruvboxDarkYellowBright = "#fabd2f"
28− gruvboxDarkBlue = "#458588"
29− gruvboxDarkBlueBright = "#83a598"
30− gruvboxDarkPurple = "#b16286"
31− gruvboxDarkPurpleBright = "#d3869b"
32− gruvboxDarkAqua = "#689d6a"
33− gruvboxDarkAquaBright = "#8ec07c"
34− gruvboxDarkOrange = "#d65d0e"
35− gruvboxDarkOrangeBright = "#fe8019"
36−
37− // Light theme colors
38− gruvboxLightBg0 = "#fbf1c7"
39− gruvboxLightBg0Soft = "#f2e5bc"
40− gruvboxLightBg1 = "#ebdbb2"
41− gruvboxLightBg2 = "#d5c4a1"
42− gruvboxLightBg3 = "#bdae93"
43− gruvboxLightBg4 = "#a89984"
44− gruvboxLightFg0 = "#282828"
45− gruvboxLightFg1 = "#3c3836"
46− gruvboxLightFg2 = "#504945"
47− gruvboxLightFg3 = "#665c54"
48− gruvboxLightFg4 = "#7c6f64"
49− gruvboxLightGray = "#928374"
50− gruvboxLightRed = "#9d0006"
51− gruvboxLightRedBright = "#cc241d"
52− gruvboxLightGreen = "#79740e"
53− gruvboxLightGreenBright = "#98971a"
54− gruvboxLightYellow = "#b57614"
55− gruvboxLightYellowBright = "#d79921"
56− gruvboxLightBlue = "#076678"
57− gruvboxLightBlueBright = "#458588"
58− gruvboxLightPurple = "#8f3f71"
59− gruvboxLightPurpleBright = "#b16286"
60− gruvboxLightAqua = "#427b58"
61− gruvboxLightAquaBright = "#689d6a"
62− gruvboxLightOrange = "#af3a03"
63− gruvboxLightOrangeBright = "#d65d0e"
64−)
65−
66−// GruvboxTheme implements the Theme interface with Gruvbox colors.
67−// It provides both dark and light variants.
68−type GruvboxTheme struct {
69− BaseTheme
70−}
71−
72−// NewGruvboxTheme creates a new instance of the Gruvbox theme.
73−func NewGruvboxTheme() *GruvboxTheme {
74− theme := &GruvboxTheme{}
75−
76− // Base colors
77− theme.PrimaryColor = lipgloss.Color(gruvboxDarkBlueBright)
78− theme.SecondaryColor = lipgloss.Color(gruvboxDarkPurpleBright)
79− theme.AccentColor = lipgloss.Color(gruvboxDarkOrangeBright)
80−
81− // Status colors
82− theme.ErrorColor = lipgloss.Color(gruvboxDarkRedBright)
83− theme.WarningColor = lipgloss.Color(gruvboxDarkYellowBright)
84− theme.SuccessColor = lipgloss.Color(gruvboxDarkGreenBright)
85− theme.InfoColor = lipgloss.Color(gruvboxDarkBlueBright)
86−
87− // Text colors
88− theme.TextColor = lipgloss.Color(gruvboxDarkFg1)
89− theme.TextMutedColor = lipgloss.Color(gruvboxDarkFg4)
90− theme.TextEmphasizedColor = lipgloss.Color(gruvboxDarkYellowBright)
91−
92− // Background colors
93− theme.BackgroundColor = lipgloss.Color(gruvboxDarkBg0)
94− theme.BackgroundSecondaryColor = lipgloss.Color(gruvboxDarkBg1)
95− theme.BackgroundDarkerColor = lipgloss.Color(gruvboxDarkBg0Soft)
96−
97− // Border colors
98− theme.BorderNormalColor = lipgloss.Color(gruvboxDarkBg2)
99− theme.BorderFocusedColor = lipgloss.Color(gruvboxDarkBlueBright)
100− theme.BorderDimColor = lipgloss.Color(gruvboxDarkBg1)
101−
102− // Diff view colors
103− theme.DiffAddedColor = lipgloss.Color(gruvboxDarkGreenBright)
104− theme.DiffRemovedColor = lipgloss.Color(gruvboxDarkRedBright)
105− theme.DiffContextColor = lipgloss.Color(gruvboxDarkFg4)
106− theme.DiffHunkHeaderColor = lipgloss.Color(gruvboxDarkFg3)
107− theme.DiffHighlightAddedColor = lipgloss.Color(gruvboxDarkGreenBright)
108− theme.DiffHighlightRemovedColor = lipgloss.Color(gruvboxDarkRedBright)
109− theme.DiffAddedBgColor = lipgloss.Color("#3C4C3C") // Darker green background
110− theme.DiffRemovedBgColor = lipgloss.Color("#4C3C3C") // Darker red background
111− theme.DiffContextBgColor = lipgloss.Color(gruvboxDarkBg0)
112− theme.DiffLineNumberColor = lipgloss.Color(gruvboxDarkFg4)
113− theme.DiffAddedLineNumberBgColor = lipgloss.Color("#32432F") // Slightly darker green
114− theme.DiffRemovedLineNumberBgColor = lipgloss.Color("#43322F") // Slightly darker red
115−
116− // Markdown colors
117− theme.MarkdownTextColor = lipgloss.Color(gruvboxDarkFg1)
118− theme.MarkdownHeadingColor = lipgloss.Color(gruvboxDarkYellowBright)
119− theme.MarkdownLinkColor = lipgloss.Color(gruvboxDarkBlueBright)
120− theme.MarkdownLinkTextColor = lipgloss.Color(gruvboxDarkAquaBright)
121− theme.MarkdownCodeColor = lipgloss.Color(gruvboxDarkGreenBright)
122− theme.MarkdownBlockQuoteColor = lipgloss.Color(gruvboxDarkAquaBright)
123− theme.MarkdownEmphColor = lipgloss.Color(gruvboxDarkYellowBright)
124− theme.MarkdownStrongColor = lipgloss.Color(gruvboxDarkOrangeBright)
125− theme.MarkdownHorizontalRuleColor = lipgloss.Color(gruvboxDarkBg3)
126− theme.MarkdownListItemColor = lipgloss.Color(gruvboxDarkBlueBright)
127− theme.MarkdownListEnumerationColor = lipgloss.Color(gruvboxDarkBlueBright)
128− theme.MarkdownImageColor = lipgloss.Color(gruvboxDarkPurpleBright)
129− theme.MarkdownImageTextColor = lipgloss.Color(gruvboxDarkAquaBright)
130− theme.MarkdownCodeBlockColor = lipgloss.Color(gruvboxDarkFg1)
131−
132− // Syntax highlighting colors
133− theme.SyntaxCommentColor = lipgloss.Color(gruvboxDarkGray)
134− theme.SyntaxKeywordColor = lipgloss.Color(gruvboxDarkRedBright)
135− theme.SyntaxFunctionColor = lipgloss.Color(gruvboxDarkGreenBright)
136− theme.SyntaxVariableColor = lipgloss.Color(gruvboxDarkBlueBright)
137− theme.SyntaxStringColor = lipgloss.Color(gruvboxDarkYellowBright)
138− theme.SyntaxNumberColor = lipgloss.Color(gruvboxDarkPurpleBright)
139− theme.SyntaxTypeColor = lipgloss.Color(gruvboxDarkYellow)
140− theme.SyntaxOperatorColor = lipgloss.Color(gruvboxDarkAquaBright)
141− theme.SyntaxPunctuationColor = lipgloss.Color(gruvboxDarkFg1)
142−
143− return theme
144−}
145−
146−// NewGruvboxLightTheme creates a new instance of the Gruvbox Light theme.
147−func NewGruvboxLightTheme() *GruvboxTheme {
148− theme := &GruvboxTheme{}
149−
150− // Base colors
151− theme.PrimaryColor = lipgloss.Color(gruvboxLightBlueBright)
152− theme.SecondaryColor = lipgloss.Color(gruvboxLightPurpleBright)
153− theme.AccentColor = lipgloss.Color(gruvboxLightOrangeBright)
154−
155− // Status colors
156− theme.ErrorColor = lipgloss.Color(gruvboxLightRedBright)
157− theme.WarningColor = lipgloss.Color(gruvboxLightYellowBright)
158− theme.SuccessColor = lipgloss.Color(gruvboxLightGreenBright)
159− theme.InfoColor = lipgloss.Color(gruvboxLightBlueBright)
160−
161− // Text colors
162− theme.TextColor = lipgloss.Color(gruvboxLightFg1)
163− theme.TextMutedColor = lipgloss.Color(gruvboxLightFg4)
164− theme.TextEmphasizedColor = lipgloss.Color(gruvboxLightYellowBright)
165−
166− // Background colors
167− theme.BackgroundColor = lipgloss.Color(gruvboxLightBg0)
168− theme.BackgroundSecondaryColor = lipgloss.Color(gruvboxLightBg1)
169− theme.BackgroundDarkerColor = lipgloss.Color(gruvboxLightBg0Soft)
170−
171− // Border colors
172− theme.BorderNormalColor = lipgloss.Color(gruvboxLightBg2)
173− theme.BorderFocusedColor = lipgloss.Color(gruvboxLightBlueBright)
174− theme.BorderDimColor = lipgloss.Color(gruvboxLightBg1)
175−
176− // Diff view colors
177− theme.DiffAddedColor = lipgloss.Color(gruvboxLightGreenBright)
178− theme.DiffRemovedColor = lipgloss.Color(gruvboxLightRedBright)
179− theme.DiffContextColor = lipgloss.Color(gruvboxLightFg4)
180− theme.DiffHunkHeaderColor = lipgloss.Color(gruvboxLightFg3)
181− theme.DiffHighlightAddedColor = lipgloss.Color(gruvboxLightGreenBright)
182− theme.DiffHighlightRemovedColor = lipgloss.Color(gruvboxLightRedBright)
183− theme.DiffAddedBgColor = lipgloss.Color("#E8F5E9") // Light green background
184− theme.DiffRemovedBgColor = lipgloss.Color("#FFEBEE") // Light red background
185− theme.DiffContextBgColor = lipgloss.Color(gruvboxLightBg0)
186− theme.DiffLineNumberColor = lipgloss.Color(gruvboxLightFg4)
187− theme.DiffAddedLineNumberBgColor = lipgloss.Color("#C8E6C9") // Light green
188− theme.DiffRemovedLineNumberBgColor = lipgloss.Color("#FFCDD2") // Light red
189−
190− // Markdown colors
191− theme.MarkdownTextColor = lipgloss.Color(gruvboxLightFg1)
192− theme.MarkdownHeadingColor = lipgloss.Color(gruvboxLightYellowBright)
193− theme.MarkdownLinkColor = lipgloss.Color(gruvboxLightBlueBright)
194− theme.MarkdownLinkTextColor = lipgloss.Color(gruvboxLightAquaBright)
195− theme.MarkdownCodeColor = lipgloss.Color(gruvboxLightGreenBright)
196− theme.MarkdownBlockQuoteColor = lipgloss.Color(gruvboxLightAquaBright)
197− theme.MarkdownEmphColor = lipgloss.Color(gruvboxLightYellowBright)
198− theme.MarkdownStrongColor = lipgloss.Color(gruvboxLightOrangeBright)
199− theme.MarkdownHorizontalRuleColor = lipgloss.Color(gruvboxLightBg3)
200− theme.MarkdownListItemColor = lipgloss.Color(gruvboxLightBlueBright)
201− theme.MarkdownListEnumerationColor = lipgloss.Color(gruvboxLightBlueBright)
202− theme.MarkdownImageColor = lipgloss.Color(gruvboxLightPurpleBright)
203− theme.MarkdownImageTextColor = lipgloss.Color(gruvboxLightAquaBright)
204− theme.MarkdownCodeBlockColor = lipgloss.Color(gruvboxLightFg1)
205−
206− // Syntax highlighting colors
207− theme.SyntaxCommentColor = lipgloss.Color(gruvboxLightGray)
208− theme.SyntaxKeywordColor = lipgloss.Color(gruvboxLightRedBright)
209− theme.SyntaxFunctionColor = lipgloss.Color(gruvboxLightGreenBright)
210− theme.SyntaxVariableColor = lipgloss.Color(gruvboxLightBlueBright)
211− theme.SyntaxStringColor = lipgloss.Color(gruvboxLightYellowBright)
212− theme.SyntaxNumberColor = lipgloss.Color(gruvboxLightPurpleBright)
213− theme.SyntaxTypeColor = lipgloss.Color(gruvboxLightYellow)
214− theme.SyntaxOperatorColor = lipgloss.Color(gruvboxLightAquaBright)
215− theme.SyntaxPunctuationColor = lipgloss.Color(gruvboxLightFg1)
216−
217− return theme
218−}
219−
220−func init() {
221− // Register the Gruvbox themes with the theme manager
222− RegisterTheme("gruvbox", NewGruvboxTheme())
223− RegisterTheme("gruvbox-light", NewGruvboxLightTheme())
224−}