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 RefItemTag lipgloss.Style
67 RefPaginator lipgloss.Style
68
69 TreeItemSelector lipgloss.Style
70 TreeItemActive lipgloss.Style
71 TreeItemInactive lipgloss.Style
72 TreeFileDir lipgloss.Style
73 TreeFileModeInactive lipgloss.Style
74 TreeFileModeActive lipgloss.Style
75 TreeFileSizeInactive lipgloss.Style
76 TreeFileSizeActive lipgloss.Style
77 TreeFileContent lipgloss.Style
78 TreePaginator lipgloss.Style
79 TreeNoItems lipgloss.Style
80
81 Spinner lipgloss.Style
82
83 CodeNoContent lipgloss.Style
84
85 StatusBar lipgloss.Style
86 StatusBarKey lipgloss.Style
87 StatusBarValue lipgloss.Style
88 StatusBarInfo lipgloss.Style
89 StatusBarBranch lipgloss.Style
90 StatusBarHelp lipgloss.Style
91
92 Tabs lipgloss.Style
93 TabInactive lipgloss.Style
94 TabActive lipgloss.Style
95 TabSeparator lipgloss.Style
96}
97
98// DefaultStyles returns default styles for the UI.
99func DefaultStyles() *Styles {
100 s := new(Styles)
101
102 s.ActiveBorderColor = lipgloss.Color("62")
103 s.InactiveBorderColor = lipgloss.Color("241")
104
105 s.App = lipgloss.NewStyle().
106 Margin(1, 2)
107
108 s.Header = lipgloss.NewStyle().
109 Align(lipgloss.Left).
110 Height(1).
111 PaddingLeft(1).
112 MarginBottom(1).
113 Bold(true)
114
115 s.Menu = lipgloss.NewStyle().
116 BorderStyle(lipgloss.RoundedBorder()).
117 BorderForeground(s.InactiveBorderColor).
118 Padding(1, 2).
119 MarginRight(1).
120 Width(24)
121
122 s.MenuCursor = lipgloss.NewStyle().
123 Foreground(lipgloss.Color("213")).
124 SetString(">")
125
126 s.MenuItem = lipgloss.NewStyle().
127 PaddingLeft(1).
128 Border(lipgloss.Border{
129 Left: " ",
130 }, false, false, false, true).
131 Height(3)
132
133 s.MenuLastUpdate = lipgloss.NewStyle().
134 Foreground(lipgloss.Color("241")).
135 Align(lipgloss.Right)
136
137 s.SelectorBox = lipgloss.NewStyle()
138
139 s.ReadmeBox = lipgloss.NewStyle()
140
141 s.Repo = lipgloss.NewStyle()
142
143 s.RepoTitle = lipgloss.NewStyle().
144 Padding(0, 2)
145
146 s.RepoCommand = lipgloss.NewStyle().
147 Foreground(lipgloss.Color("168"))
148
149 s.RepoBody = lipgloss.NewStyle().
150 Margin(1, 0)
151
152 s.RepoHeader = lipgloss.NewStyle().
153 Height(2).
154 Border(lipgloss.NormalBorder(), false, false, true, false).
155 BorderForeground(lipgloss.Color("238"))
156
157 s.RepoHeaderName = lipgloss.NewStyle().
158 Bold(true)
159
160 s.RepoHeaderDesc = lipgloss.NewStyle().
161 Faint(true)
162
163 s.Footer = lipgloss.NewStyle().
164 MarginTop(1).
165 Padding(0, 1).
166 Height(1)
167
168 s.Branch = lipgloss.NewStyle().
169 Foreground(lipgloss.Color("203")).
170 Background(lipgloss.Color("236")).
171 Padding(0, 1)
172
173 s.HelpKey = lipgloss.NewStyle().
174 Foreground(lipgloss.Color("241"))
175
176 s.HelpValue = lipgloss.NewStyle().
177 Foreground(lipgloss.Color("239"))
178
179 s.HelpDivider = lipgloss.NewStyle().
180 Foreground(lipgloss.Color("237")).
181 SetString(" • ")
182
183 s.Error = lipgloss.NewStyle().
184 MarginTop(2)
185
186 s.ErrorTitle = lipgloss.NewStyle().
187 Foreground(lipgloss.Color("230")).
188 Background(lipgloss.Color("204")).
189 Bold(true).
190 Padding(0, 1)
191
192 s.ErrorBody = lipgloss.NewStyle().
193 Foreground(lipgloss.Color("252")).
194 MarginLeft(2)
195
196 s.AboutNoReadme = lipgloss.NewStyle().
197 MarginTop(1).
198 MarginLeft(2).
199 Foreground(lipgloss.Color("#626262"))
200
201 s.LogItemInactive = lipgloss.NewStyle().
202 Border(lipgloss.Border{
203 Left: " ",
204 }, false, false, false, true).
205 PaddingLeft(1)
206
207 s.LogItemActive = s.LogItemInactive.Copy().
208 Border(lipgloss.Border{
209 Left: "┃",
210 }, false, false, false, true).
211 BorderForeground(lipgloss.Color("#B083EA"))
212
213 s.LogItemSelector = s.LogItemInactive.Copy().
214 Width(1).
215 Foreground(lipgloss.Color("#B083EA"))
216
217 s.LogItemHash = s.LogItemInactive.Copy().
218 Foreground(lipgloss.Color("#A3A322"))
219
220 s.LogItemTitle = lipgloss.NewStyle().
221 Foreground(lipgloss.Color("#B083EA"))
222
223 s.LogCommit = lipgloss.NewStyle().
224 Margin(0, 2)
225
226 s.LogCommitHash = lipgloss.NewStyle().
227 Foreground(lipgloss.Color("#A3A322")).
228 Bold(true)
229
230 s.LogCommitBody = lipgloss.NewStyle().
231 MarginTop(1).
232 MarginLeft(2)
233
234 s.LogCommitStatsAdd = lipgloss.NewStyle().
235 Foreground(lipgloss.Color("#00D787")).
236 Bold(true)
237
238 s.LogCommitStatsDel = lipgloss.NewStyle().
239 Foreground(lipgloss.Color("#FD5B5B")).
240 Bold(true)
241
242 s.LogPaginator = lipgloss.NewStyle().
243 Margin(0).
244 Align(lipgloss.Center)
245
246 s.RefItemInactive = lipgloss.NewStyle().
247 MarginLeft(1)
248
249 s.RefItemSelector = lipgloss.NewStyle().
250 Width(1).
251 Foreground(lipgloss.Color("#B083EA"))
252
253 s.RefItemActive = lipgloss.NewStyle().
254 MarginLeft(1).
255 Bold(true)
256
257 s.RefItemBranch = lipgloss.NewStyle()
258
259 s.RefItemTag = lipgloss.NewStyle().
260 Foreground(lipgloss.Color("#A3A322"))
261
262 s.RefPaginator = s.LogPaginator.Copy()
263
264 s.TreeItemSelector = s.TreeItemInactive.Copy().
265 Width(1).
266 Foreground(lipgloss.Color("#B083EA"))
267
268 s.TreeItemInactive = lipgloss.NewStyle().
269 MarginLeft(1)
270
271 s.TreeItemActive = s.TreeItemInactive.Copy().
272 Bold(true).
273 Foreground(lipgloss.Color("210"))
274
275 s.TreeFileDir = lipgloss.NewStyle().
276 Foreground(lipgloss.Color("39"))
277
278 s.TreeFileModeInactive = s.TreeItemInactive.Copy().
279 Width(10).
280 Foreground(lipgloss.Color("243"))
281
282 s.TreeFileModeActive = s.TreeFileModeInactive.Copy().
283 Foreground(lipgloss.Color("174"))
284
285 s.TreeFileSizeInactive = s.TreeItemInactive.Copy().
286 Foreground(lipgloss.Color("243"))
287
288 s.TreeFileSizeActive = s.TreeItemInactive.Copy().
289 Foreground(lipgloss.Color("174"))
290
291 s.TreeFileContent = lipgloss.NewStyle()
292
293 s.TreePaginator = s.LogPaginator.Copy()
294
295 s.TreeNoItems = s.AboutNoReadme.Copy()
296
297 s.Spinner = lipgloss.NewStyle().
298 MarginTop(1).
299 MarginLeft(2).
300 Foreground(lipgloss.Color("205"))
301
302 s.CodeNoContent = lipgloss.NewStyle().
303 SetString("No Content.").
304 MarginTop(1).
305 MarginLeft(2).
306 Foreground(lipgloss.Color("#626262"))
307
308 s.StatusBar = lipgloss.NewStyle().
309 Height(1)
310
311 s.StatusBarKey = lipgloss.NewStyle().
312 Bold(true).
313 Padding(0, 1).
314 Background(lipgloss.Color("#FF5FD2")).
315 Foreground(lipgloss.Color("#FFFF87"))
316
317 s.StatusBarValue = lipgloss.NewStyle().
318 Padding(0, 1).
319 Background(lipgloss.Color("235")).
320 Foreground(lipgloss.Color("243"))
321
322 s.StatusBarInfo = lipgloss.NewStyle().
323 Padding(0, 1).
324 Background(lipgloss.Color("#FF8EC7")).
325 Foreground(lipgloss.Color("#F1F1F1"))
326
327 s.StatusBarBranch = lipgloss.NewStyle().
328 Padding(0, 1).
329 Background(lipgloss.Color("#6E6ED8")).
330 Foreground(lipgloss.Color("#F1F1F1"))
331
332 s.StatusBarHelp = lipgloss.NewStyle().
333 Padding(0, 1).
334 Background(lipgloss.Color("237")).
335 Foreground(lipgloss.Color("243"))
336
337 s.Tabs = lipgloss.NewStyle()
338
339 s.TabInactive = lipgloss.NewStyle()
340
341 s.TabActive = lipgloss.NewStyle().
342 Foreground(lipgloss.Color("63")).
343 Underline(true)
344
345 s.TabSeparator = lipgloss.NewStyle().
346 SetString("│").
347 Padding(0, 1).
348 Foreground(lipgloss.Color("238"))
349
350 return s
351}