package tui import ( "github.com/charmbracelet/lipgloss" "gitea.oblak.solutions/dimitar/gitFlow/internal/presenter" ) // Styles groups the lipgloss styles used across TUI views. type Styles struct { Header lipgloss.Style Row lipgloss.Style CursorRow lipgloss.Style StatusBar lipgloss.Style Changed lipgloss.Style } // Dim applies a dimmed, lower-contrast style (shared helper). func (s Styles) Dim(text string) string { return lipgloss.NewStyle().Faint(true).Render(text) } // Err applies an error-highlight style. func (s Styles) Err(text string) string { return lipgloss.NewStyle().Foreground(lipgloss.Color("1")).Render(text) } // NewStyles builds a Styles palette from the presenter options so the TUI // theme matches the CLI. func NewStyles(opts presenter.Options) Styles { headerFg, rowFg, cursorFg, barFg := darkColors() if opts.Theme == presenter.ThemeLight { headerFg, rowFg, cursorFg, barFg = lightColors() } return Styles{ Header: lipgloss.NewStyle(). Foreground(lipgloss.Color(headerFg)). Bold(true), Row: lipgloss.NewStyle(). Foreground(lipgloss.Color(rowFg)), CursorRow: lipgloss.NewStyle(). Foreground(lipgloss.Color(cursorFg)). Background(lipgloss.Color("235")), StatusBar: lipgloss.NewStyle(). Foreground(lipgloss.Color(barFg)). Background(lipgloss.Color("236")), Changed: lipgloss.NewStyle(). Foreground(lipgloss.Color("11")). Bold(true), } } func darkColors() (h, r, c, b string) { return "14", "7", "15", "8" } func lightColors() (h, r, c, b string) { return "6", "0", "0", "7" }