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