aboutsummaryrefslogtreecommitdiff
path: root/internal/tui/styles.go
blob: eb4f50aa92b1256fc7bf0d71351fe17cec740d5c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package tui

import "github.com/charmbracelet/lipgloss"

// Color roles for the reader. These use the terminal's own ANSI palette
// (colours 0-15) and text attributes rather than fixed hex values, so the
// reader respects whatever colour scheme the terminal is configured with
// instead of forcing one. Verse body text takes the terminal's default
// foreground (most legible). The header and footer bars use reverse video
// (the terminal's fg/bg swapped) so they stay readable on any theme -- no
// faint text on a fixed grey bar. NO_COLOR still degrades everything to
// plain text automatically (termenv's profile falls back to Ascii).
var (
	// headingStyle renders a reading section's heading (e.g. "Ewangelia").
	headingStyle = lipgloss.NewStyle().Bold(true).Foreground(lipgloss.Color("4")) // ANSI blue

	// citationStyle renders a section's subtitle/citation line -- dimmed.
	citationStyle = lipgloss.NewStyle().Faint(true)

	// verseNumStyle renders a bible verse's "chapter:verse" prefix -- dimmed.
	verseNumStyle = lipgloss.NewStyle().Faint(true)

	// verseTextStyle renders verse/paragraph body text in the terminal's
	// default foreground colour.
	verseTextStyle = lipgloss.NewStyle()

	// refrainStyle renders a responsorial psalm's repeated refrain.
	refrainStyle = lipgloss.NewStyle().Italic(true)

	// headerStyle renders the top bar (date + active version) as a reverse-
	// video bar so it reads on any terminal theme.
	headerStyle = lipgloss.NewStyle().Bold(true).Reverse(true).Padding(0, 1)

	// footerStyle renders the bottom keybar as a reverse-video bar (legible,
	// not faint-on-grey).
	footerStyle = lipgloss.NewStyle().Reverse(true).Padding(0, 1)

	// errStyle renders the error line.
	errStyle = lipgloss.NewStyle().Bold(true).Foreground(lipgloss.Color("1")) // ANSI red
)