1package tui
2
3import (
4 "fmt"
5
6 "github.com/charmbracelet/bubbles/spinner"
7 tea "github.com/charmbracelet/bubbletea"
8 "github.com/charmbracelet/lipgloss"
9)
10
11var (
12 DialogBoxStyle = lipgloss.NewStyle().
13 Border(lipgloss.RoundedBorder()).
14 BorderForeground(lipgloss.Color("#874BFD")).
15 Padding(1, 0).
16 BorderTop(true).
17 BorderLeft(true).
18 BorderRight(true).
19 BorderBottom(true)
20
21 HelpStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("240"))
22 SuccessStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("42")).Bold(true)
23 InfoStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("205")).Bold(true)
24)
25
26var DocStyle = lipgloss.NewStyle().Margin(1, 2)
27
28// A simple model for showing a status message
29type Status struct {
30 spinner spinner.Model
31 message string
32}
33
34func NewStatus(msg string) Status {
35 s := spinner.New()
36 s.Spinner = spinner.Dot
37 s.Style = lipgloss.NewStyle().Foreground(lipgloss.Color("205"))
38 return Status{spinner: s, message: msg}
39}
40
41func (m Status) Init() tea.Cmd { return m.spinner.Tick }
42
43func (m Status) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
44 var cmd tea.Cmd
45 m.spinner, cmd = m.spinner.Update(msg)
46 return m, cmd
47}
48
49func (m Status) View() string {
50 return fmt.Sprintf("\n\n %s %s\n\n", m.spinner.View(), m.message)
51}