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  }