package list import ( "github.com/charmbracelet/lipgloss" ) const ( bullet = "•" ellipsis = "…" ) // Styles contains style definitions for this list component. By default, these // values are generated by DefaultStyles. type Styles struct { TitleBar lipgloss.Style Title lipgloss.Style Spinner lipgloss.Style FilterPrompt lipgloss.Style FilterCursor lipgloss.Style // Default styling for matched characters in a filter. This can be // overridden by delegates. DefaultFilterCharacterMatch lipgloss.Style StatusBar lipgloss.Style StatusEmpty lipgloss.Style StatusBarActiveFilter lipgloss.Style StatusBarFilterCount lipgloss.Style NoItems lipgloss.Style PaginationStyle lipgloss.Style HelpStyle lipgloss.Style // Styled characters. ActivePaginationDot lipgloss.Style InactivePaginationDot lipgloss.Style ArabicPagination lipgloss.Style DividerDot lipgloss.Style } // DefaultStyles returns a set of default style definitions for this list // component. func DefaultStyles(isDark bool) (s Styles) { verySubduedColor := "#DDDADA" subduedColor := "#9B9B9B" spinnerColor := "#8E8E8E" filterPromptColor := "#04B575" filterCursorColor := "#EE6FF8" statusBarColor := "#A49FA5" statusBarActiveFilterColor := "#1a1a1a" noItemsColor := "#909090" activePaginationColor := "#847A85" if isDark { verySubduedColor = "#3C3C3C" subduedColor = "#5C5C5C" spinnerColor = "#747373" filterPromptColor = "#ECFD65" filterCursorColor = "#EE6FF8" statusBarColor = "#777777" statusBarActiveFilterColor = "#dddddd" noItemsColor = "#626262" activePaginationColor = "#979797" } s.TitleBar = lipgloss.NewStyle().Padding(0, 0, 1, 2) s.Title = lipgloss.NewStyle(). Background(lipgloss.Color("62")). Foreground(lipgloss.Color("230")). Padding(0, 1) s.Spinner = lipgloss.NewStyle(). Foreground(lipgloss.Color(spinnerColor)) s.FilterPrompt = lipgloss.NewStyle(). Foreground(lipgloss.Color(filterPromptColor)) s.FilterCursor = lipgloss.NewStyle(). Foreground(lipgloss.Color(filterCursorColor)) s.DefaultFilterCharacterMatch = lipgloss.NewStyle().Underline(true) s.StatusBar = lipgloss.NewStyle(). Foreground(lipgloss.Color(statusBarColor)). Padding(0, 0, 1, 2) s.StatusEmpty = lipgloss.NewStyle().Foreground(lipgloss.Color(subduedColor)) s.StatusBarActiveFilter = lipgloss.NewStyle(). Foreground(lipgloss.Color(statusBarActiveFilterColor)) s.StatusBarFilterCount = lipgloss.NewStyle().Foreground(lipgloss.Color(verySubduedColor)) s.NoItems = lipgloss.NewStyle(). Foreground(lipgloss.Color(noItemsColor)) s.ArabicPagination = lipgloss.NewStyle().Foreground(lipgloss.Color(subduedColor)) s.PaginationStyle = lipgloss.NewStyle().PaddingLeft(2) //nolint:gomnd s.HelpStyle = lipgloss.NewStyle().Padding(1, 0, 0, 2) s.ActivePaginationDot = lipgloss.NewStyle(). Foreground(lipgloss.Color(activePaginationColor)). SetString(bullet) s.InactivePaginationDot = lipgloss.NewStyle(). Foreground(lipgloss.Color(verySubduedColor)). SetString(bullet) s.DividerDot = lipgloss.NewStyle(). Foreground(lipgloss.Color(verySubduedColor)). SetString(" " + bullet + " ") return s }