summaryrefslogtreecommitdiffhomepage
path: root/internal
diff options
context:
space:
mode:
Diffstat (limited to 'internal')
-rw-r--r--internal/tui/components/spinner/spinner.go25
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() {