package list import ( "charm.land/bubbles/v2/textinput" "charm.land/lipgloss/v2" ) 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 Filter textinput.Styles // 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) { lightDark := lipgloss.LightDark(isDark) verySubduedColor := lightDark(lipgloss.Color("#DDDADA"), lipgloss.Color("#3C3C3C")) subduedColor := lightDark(lipgloss.Color("#9B9B9B"), lipgloss.Color("#5C5C5C")) s.TitleBar = lipgloss.NewStyle().Padding(0, 0, 1, 2) //nolint:mnd s.Title = lipgloss.NewStyle(). Background(lipgloss.Color("62")). Foreground(lipgloss.Color("230")). Padding(0, 1) s.Spinner = lipgloss.NewStyle(). Foreground(lightDark(lipgloss.Color("#8E8E8E"), lipgloss.Color("#747373"))) prompt := lipgloss.NewStyle(). Foreground(lightDark(lipgloss.Color("#04B575"), lipgloss.Color("#ECFD65"))) s.Filter = textinput.DefaultStyles(isDark) s.Filter.Cursor.Color = lightDark(lipgloss.Color("#EE6FF8"), lipgloss.Color("#EE6FF8")) s.Filter.Blurred.Prompt = prompt s.Filter.Focused.Prompt = prompt s.DefaultFilterCharacterMatch = lipgloss.NewStyle().Underline(true) s.StatusBar = lipgloss.NewStyle(). Foreground(lightDark(lipgloss.Color("#A49FA5"), lipgloss.Color("#777777"))). Padding(0, 0, 1, 2) //nolint:mnd s.StatusEmpty = lipgloss.NewStyle().Foreground(subduedColor) s.StatusBarActiveFilter = lipgloss.NewStyle(). Foreground(lightDark(lipgloss.Color("#1a1a1a"), lipgloss.Color("#dddddd"))) s.StatusBarFilterCount = lipgloss.NewStyle().Foreground(verySubduedColor) s.NoItems = lipgloss.NewStyle(). Foreground(lightDark(lipgloss.Color("#909090"), lipgloss.Color("#626262"))) s.ArabicPagination = lipgloss.NewStyle().Foreground(subduedColor) s.PaginationStyle = lipgloss.NewStyle().PaddingLeft(2) //nolint:mnd s.HelpStyle = lipgloss.NewStyle().Padding(1, 0, 0, 2) //nolint:mnd s.ActivePaginationDot = lipgloss.NewStyle(). Foreground(lightDark(lipgloss.Color("#847A85"), lipgloss.Color("#979797"))). SetString(bullet) s.InactivePaginationDot = lipgloss.NewStyle(). Foreground(verySubduedColor). SetString(bullet) s.DividerDot = lipgloss.NewStyle(). Foreground(verySubduedColor). SetString(" " + bullet + " ") return s }