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}