diff options
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/tui/components/spinner/spinner.go | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/internal/tui/components/spinner/spinner.go b/internal/tui/components/spinner/spinner.go index 42b98810a..5e1af8771 100644 --- a/internal/tui/components/spinner/spinner.go +++ b/internal/tui/components/spinner/spinner.go @@ -7,6 +7,7 @@ import ( "github.com/charmbracelet/bubbles/spinner" tea "github.com/charmbracelet/bubbletea" + "github.com/charmbracelet/lipgloss" ) // Spinner wraps the bubbles spinner for both interactive and non-interactive mode @@ -80,6 +81,30 @@ func NewSpinner(message string) *Spinner { } } +// NewThemedSpinner creates a new spinner with the given message and color +func NewThemedSpinner(message string, color lipgloss.AdaptiveColor) *Spinner { + s := spinner.New() + s.Spinner = spinner.Dot + s.Style = s.Style.Foreground(color) + + ctx, cancel := context.WithCancel(context.Background()) + + model := spinnerModel{ + spinner: s, + message: message, + } + + prog := tea.NewProgram(model, tea.WithOutput(os.Stderr), tea.WithoutCatchPanics()) + + return &Spinner{ + model: s, + done: make(chan struct{}), + prog: prog, + ctx: ctx, + cancel: cancel, + } +} + // Start begins the spinner animation func (s *Spinner) Start() { go func() { |
