1package styles
2
3import (
4 "github.com/charmbracelet/lipgloss"
5)
6
7// XXX: For now, this is in its own package so that it can be shared between
8// different packages without incurring an illegal import cycle.
9
10// Styles defines styles for the UI.
11type Styles struct {
12 ActiveBorderColor lipgloss.Color
13 InactiveBorderColor lipgloss.Color
14
15 App lipgloss.Style
16 Header lipgloss.Style
17
18 Menu lipgloss.Style
19 MenuCursor lipgloss.Style
20 MenuItem lipgloss.Style
21 MenuLastUpdate lipgloss.Style
22
23 // Selection page styles
24 SelectorBox lipgloss.Style
25 ReadmeBox lipgloss.Style
26
27 Repo lipgloss.Style
28 RepoTitle lipgloss.Style
29 RepoCommand lipgloss.Style
30 RepoBody lipgloss.Style
31 RepoHeader lipgloss.Style
32 RepoHeaderName lipgloss.Style
33 RepoHeaderDesc lipgloss.Style
34
35 Footer lipgloss.Style
36 Branch lipgloss.Style
37 HelpKey lipgloss.Style
38 HelpValue lipgloss.Style
39 HelpDivider lipgloss.Style
40
41 Error lipgloss.Style
42 ErrorTitle lipgloss.Style
43 ErrorBody lipgloss.Style
44
45 AboutNoReadme lipgloss.Style
46
47 LogItem lipgloss.Style
48 LogItemSelector lipgloss.Style
49 LogItemActive lipgloss.Style
50 LogItemInactive lipgloss.Style
51 LogItemHash lipgloss.Style
52 LogItemTitle lipgloss.Style
53 LogCommit lipgloss.Style
54 LogCommitHash lipgloss.Style
55 LogCommitAuthor lipgloss.Style
56 LogCommitDate lipgloss.Style
57 LogCommitBody lipgloss.Style
58 LogCommitStatsAdd lipgloss.Style
59 LogCommitStatsDel lipgloss.Style
60 LogPaginator lipgloss.Style
61
62 RefItemSelector lipgloss.Style
63 RefItemActive lipgloss.Style
64 RefItemInactive lipgloss.Style
65 RefItemBranch lipgloss.Style
66 RefItemTagInactive lipgloss.Style
67 RefItemTagActive lipgloss.Style
68 RefPaginator lipgloss.Style
69
70 TreeItemSelector lipgloss.Style
71 TreeItemActive lipgloss.Style
72 TreeItemInactive lipgloss.Style
73 TreeFileDirInactive lipgloss.Style
74 TreeFileDirActive lipgloss.Style
75 TreeFileModeInactive lipgloss.Style
76 TreeFileModeActive lipgloss.Style
77 TreeFileSizeInactive lipgloss.Style
78 TreeFileSizeActive lipgloss.Style
79 TreeFileContent lipgloss.Style
80 TreePaginator lipgloss.Style
81 TreeNoItems lipgloss.Style
82
83 Spinner lipgloss.Style
84
85 CodeNoContent lipgloss.Style
86
87 StatusBar lipgloss.Style
88 StatusBarKey lipgloss.Style
89 StatusBarValue lipgloss.Style
90 StatusBarInfo lipgloss.Style
91 StatusBarBranch lipgloss.Style
92 StatusBarHelp lipgloss.Style
93
94 Tabs lipgloss.Style
95 TabInactive lipgloss.Style
96 TabActive lipgloss.Style
97 TabSeparator lipgloss.Style
98}
99
100// DefaultStyles returns default styles for the UI.
101func DefaultStyles() *Styles {
102 highlightColor := lipgloss.Color("210")
103 highlightColorDim := lipgloss.Color("174")
104 selectorColor := lipgloss.Color("204")
105
106 s := new(Styles)
107
108 s.ActiveBorderColor = lipgloss.Color("62")
109 s.InactiveBorderColor = lipgloss.Color("241")
110
111 s.App = lipgloss.NewStyle().
112 Margin(1, 2)
113
114 s.Header = lipgloss.NewStyle().
115 Align(lipgloss.Left).
116 Height(1).
117 PaddingLeft(1).
118 MarginBottom(1).
119 Bold(true)
120
121 s.Menu = lipgloss.NewStyle().
122 BorderStyle(lipgloss.RoundedBorder()).
123 BorderForeground(s.InactiveBorderColor).
124 Padding(1, 2).
125 MarginRight(1).
126 Width(24)
127
128 s.MenuCursor = lipgloss.NewStyle().
129 Foreground(lipgloss.Color("213")).
130 SetString(">")
131
132 s.MenuItem = lipgloss.NewStyle().
133 PaddingLeft(1).
134 Border(lipgloss.Border{
135 Left: " ",
136 }, false, false, false, true).
137 Height(3)
138
139 s.MenuLastUpdate = lipgloss.NewStyle().
140 Foreground(lipgloss.Color("241")).
141 Align(lipgloss.Right)
142
143 s.SelectorBox = lipgloss.NewStyle()
144
145 s.ReadmeBox = lipgloss.NewStyle()
146
147 s.Repo = lipgloss.NewStyle()
148
149 s.RepoTitle = lipgloss.NewStyle().
150 Padding(0, 2)
151
152 s.RepoCommand = lipgloss.NewStyle().
153 Foreground(lipgloss.Color("168"))
154
155 s.RepoBody = lipgloss.NewStyle().
156 Margin(1, 0)
157
158 s.RepoHeader = lipgloss.NewStyle().
159 Height(2).
160 Border(lipgloss.NormalBorder(), false, false, true, false).
161 BorderForeground(lipgloss.Color("238"))
162
163 s.RepoHeaderName = lipgloss.NewStyle().
164 Bold(true)
165
166 s.RepoHeaderDesc = lipgloss.NewStyle().
167 Faint(true)
168
169 s.Footer = lipgloss.NewStyle().
170 MarginTop(1).
171 Padding(0, 1).
172 Height(1)
173
174 s.Branch = lipgloss.NewStyle().
175 Foreground(lipgloss.Color("203")).
176 Background(lipgloss.Color("236")).
177 Padding(0, 1)
178
179 s.HelpKey = lipgloss.NewStyle().
180 Foreground(lipgloss.Color("241"))
181
182 s.HelpValue = lipgloss.NewStyle().
183 Foreground(lipgloss.Color("239"))
184
185 s.HelpDivider = lipgloss.NewStyle().
186 Foreground(lipgloss.Color("237")).
187 SetString(" • ")
188
189 s.Error = lipgloss.NewStyle().
190 MarginTop(2)
191
192 s.ErrorTitle = lipgloss.NewStyle().
193 Foreground(lipgloss.Color("230")).
194 Background(lipgloss.Color("204")).
195 Bold(true).
196 Padding(0, 1)
197
198 s.ErrorBody = lipgloss.NewStyle().
199 Foreground(lipgloss.Color("252")).
200 MarginLeft(2)
201
202 s.AboutNoReadme = lipgloss.NewStyle().
203 MarginTop(1).
204 MarginLeft(2).
205 Foreground(lipgloss.Color("#626262"))
206
207 s.LogItemInactive = lipgloss.NewStyle().
208 Border(lipgloss.Border{
209 Left: " ",
210 }, false, false, false, true).
211 PaddingLeft(1)
212
213 s.LogItemActive = s.LogItemInactive.Copy().
214 Border(lipgloss.Border{
215 Left: "┃",
216 }, false, false, false, true).
217 BorderForeground(lipgloss.Color("#B083EA"))
218
219 s.LogItemSelector = s.LogItemInactive.Copy().
220 Width(1).
221 Foreground(lipgloss.Color("#B083EA"))
222
223 s.LogItemHash = s.LogItemInactive.Copy().
224 Foreground(lipgloss.Color("#A3A322"))
225
226 s.LogItemTitle = lipgloss.NewStyle().
227 Foreground(lipgloss.Color("#B083EA"))
228
229 s.LogCommit = lipgloss.NewStyle().
230 Margin(0, 2)
231
232 s.LogCommitHash = lipgloss.NewStyle().
233 Foreground(lipgloss.Color("#A3A322")).
234 Bold(true)
235
236 s.LogCommitBody = lipgloss.NewStyle().
237 MarginTop(1).
238 MarginLeft(2)
239
240 s.LogCommitStatsAdd = lipgloss.NewStyle().
241 Foreground(lipgloss.Color("#00D787")).
242 Bold(true)
243
244 s.LogCommitStatsDel = lipgloss.NewStyle().
245 Foreground(lipgloss.Color("#FD5B5B")).
246 Bold(true)
247
248 s.LogPaginator = lipgloss.NewStyle().
249 Margin(0).
250 Align(lipgloss.Center)
251
252 s.RefItemInactive = lipgloss.NewStyle()
253
254 s.RefItemSelector = lipgloss.NewStyle().
255 Foreground(selectorColor).
256 SetString("> ")
257
258 s.RefItemActive = s.RefItemActive.Copy().
259 Foreground(highlightColorDim)
260
261 s.RefItemBranch = lipgloss.NewStyle()
262
263 s.RefItemTagInactive = lipgloss.NewStyle().
264 Foreground(lipgloss.Color("#A3A322"))
265
266 s.RefItemTagActive = lipgloss.NewStyle().
267 Bold(true).
268 Foreground(highlightColor)
269
270 s.RefItemActive = lipgloss.NewStyle().
271 Bold(true).
272 Foreground(highlightColor)
273
274 s.RefPaginator = s.LogPaginator.Copy()
275
276 s.TreeItemSelector = s.TreeItemInactive.Copy().
277 Width(1).
278 Foreground(selectorColor)
279
280 s.TreeItemInactive = lipgloss.NewStyle().
281 MarginLeft(1)
282
283 s.TreeItemActive = s.TreeItemInactive.Copy().
284 Bold(true).
285 Foreground(highlightColor)
286
287 s.TreeFileDirInactive = lipgloss.NewStyle().
288 Foreground(lipgloss.Color("39"))
289
290 s.TreeFileDirActive = lipgloss.NewStyle().
291 Foreground(highlightColor)
292
293 s.TreeFileModeInactive = s.TreeItemInactive.Copy().
294 Width(10).
295 Foreground(lipgloss.Color("243"))
296
297 s.TreeFileModeActive = s.TreeFileModeInactive.Copy().
298 Foreground(highlightColorDim)
299
300 s.TreeFileSizeInactive = s.TreeItemInactive.Copy().
301 Foreground(lipgloss.Color("243"))
302
303 s.TreeFileSizeActive = s.TreeItemInactive.Copy().
304 Foreground(highlightColorDim)
305
306 s.TreeFileContent = lipgloss.NewStyle()
307
308 s.TreePaginator = s.LogPaginator.Copy()
309
310 s.TreeNoItems = s.AboutNoReadme.Copy()
311
312 s.Spinner = lipgloss.NewStyle().
313 MarginTop(1).
314 MarginLeft(2).
315 Foreground(lipgloss.Color("205"))
316
317 s.CodeNoContent = lipgloss.NewStyle().
318 SetString("No Content.").
319 MarginTop(1).
320 MarginLeft(2).
321 Foreground(lipgloss.Color("#626262"))
322
323 s.StatusBar = lipgloss.NewStyle().
324 Height(1)
325
326 s.StatusBarKey = lipgloss.NewStyle().
327 Bold(true).
328 Padding(0, 1).
329 Background(lipgloss.Color("#FF5FD2")).
330 Foreground(lipgloss.Color("#FFFF87"))
331
332 s.StatusBarValue = lipgloss.NewStyle().
333 Padding(0, 1).
334 Background(lipgloss.Color("235")).
335 Foreground(lipgloss.Color("243"))
336
337 s.StatusBarInfo = lipgloss.NewStyle().
338 Padding(0, 1).
339 Background(lipgloss.Color("#FF8EC7")).
340 Foreground(lipgloss.Color("#F1F1F1"))
341
342 s.StatusBarBranch = lipgloss.NewStyle().
343 Padding(0, 1).
344 Background(lipgloss.Color("#6E6ED8")).
345 Foreground(lipgloss.Color("#F1F1F1"))
346
347 s.StatusBarHelp = lipgloss.NewStyle().
348 Padding(0, 1).
349 Background(lipgloss.Color("237")).
350 Foreground(lipgloss.Color("243"))
351
352 s.Tabs = lipgloss.NewStyle()
353
354 s.TabInactive = lipgloss.NewStyle()
355
356 s.TabActive = lipgloss.NewStyle().
357 Foreground(lipgloss.Color("63")).
358 Underline(true)
359
360 s.TabSeparator = lipgloss.NewStyle().
361 SetString("│").
362 Padding(0, 1).
363 Foreground(lipgloss.Color("238"))
364
365 return s
366}