styles.go

 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}