styles.go

  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}