Refactor and split tui into smaller files
This commit is contained in:
parent
b339dab29f
commit
123d1ca18a
12 changed files with 603 additions and 508 deletions
55
internal/ui_style.go
Normal file
55
internal/ui_style.go
Normal file
|
@ -0,0 +1,55 @@
|
|||
package internal
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"strings"
|
||||
|
||||
"github.com/charmbracelet/bubbles/list"
|
||||
tea "github.com/charmbracelet/bubbletea"
|
||||
"github.com/charmbracelet/lipgloss"
|
||||
)
|
||||
|
||||
var (
|
||||
titleStyle = lipgloss.NewStyle().
|
||||
Background(lipgloss.Color("#5F5FD7")).
|
||||
Foreground(lipgloss.Color("#FFFFFF")).
|
||||
PaddingLeft(2).PaddingRight(2)
|
||||
helpStyle = lipgloss.NewStyle().
|
||||
Foreground(lipgloss.Color(241))
|
||||
listStyle = lipgloss.NewStyle().
|
||||
PaddingLeft(2).
|
||||
PaddingRight(2)
|
||||
choiceStyle = lipgloss.NewStyle().
|
||||
PaddingLeft(4).
|
||||
PaddingRight(4)
|
||||
selectedChoiceStyle = lipgloss.NewStyle().
|
||||
PaddingLeft(2).
|
||||
Foreground(lipgloss.Color("170"))
|
||||
dialogStyle = lipgloss.NewStyle().
|
||||
PaddingLeft(2)
|
||||
)
|
||||
|
||||
// Choice delegate (for our dialog boxes)
|
||||
type choiceDelegate struct{}
|
||||
|
||||
func (d choiceDelegate) Height() int { return 1 }
|
||||
func (d choiceDelegate) Spacing() int { return 0 }
|
||||
func (d choiceDelegate) Update(msg tea.Msg, m *list.Model) tea.Cmd { return nil }
|
||||
func (d choiceDelegate) Render(w io.Writer, m list.Model, index int, listItem list.Item) {
|
||||
i, ok := listItem.(item)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
|
||||
str := i.title
|
||||
|
||||
fn := choiceStyle.Render
|
||||
if index == m.Index() {
|
||||
fn = func(s ...string) string {
|
||||
return selectedChoiceStyle.Render("| " + strings.Join(s, " "))
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Fprint(w, fn(str))
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue