go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/cli/theme/theme.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package theme 5 6 import ( 7 "fmt" 8 9 "github.com/c-bata/go-prompt" 10 "github.com/muesli/termenv" 11 "go.mondoo.com/cnquery/cli/printer" 12 "go.mondoo.com/cnquery/cli/theme/colors" 13 ) 14 15 type PromptColors struct { 16 PrefixTextColor prompt.Color 17 PreviewSuggestionTextColor prompt.Color 18 PreviewSuggestionBGColor prompt.Color 19 SuggestionTextColor prompt.Color 20 SuggestionBGColor prompt.Color 21 SelectedSuggestionTextColor prompt.Color 22 SelectedSuggestionBGColor prompt.Color 23 DescriptionTextColor prompt.Color 24 DescriptionBGColor prompt.Color 25 SelectedDescriptionTextColor prompt.Color 26 SelectedDescriptionBGColor prompt.Color 27 ScrollbarBGColor prompt.Color 28 ScrollbarThumbColor prompt.Color 29 } 30 31 // Theme to configure how the shell will look and feel 32 type Theme struct { 33 Colors colors.Theme 34 PromptColors PromptColors 35 36 List func(...string) string 37 Landing string 38 Welcome string 39 Prefix string 40 PolicyPrinter printer.Printer 41 } 42 43 func (t Theme) Primary(s ...interface{}) string { 44 return termenv.String(fmt.Sprint(s...)).Foreground(t.Colors.Primary).String() 45 } 46 47 func (t Theme) Secondary(s ...interface{}) string { 48 return termenv.String(fmt.Sprint(s...)).Foreground(t.Colors.Secondary).String() 49 } 50 51 func (t Theme) Disabled(s ...interface{}) string { 52 return termenv.String(fmt.Sprint(s...)).Foreground(t.Colors.Disabled).String() 53 } 54 55 func (t Theme) Error(s ...interface{}) string { 56 return termenv.String(fmt.Sprint(s...)).Foreground(DefaultTheme.Colors.Error).String() 57 } 58 59 func (t Theme) Success(s ...interface{}) string { 60 return termenv.String(fmt.Sprint(s...)).Foreground(DefaultTheme.Colors.Success).String() 61 }