feat: use new ui bubbletea
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
package tui
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
tea "github.com/charmbracelet/bubbletea"
|
||||
"github.com/leonardotrapani/hyprvoice/internal/config"
|
||||
)
|
||||
|
||||
// ConfigureResult holds the configuration result from the TUI.
|
||||
type ConfigureResult struct {
|
||||
Config *config.Config
|
||||
Cancelled bool
|
||||
}
|
||||
|
||||
type screen interface {
|
||||
Init() tea.Cmd
|
||||
Update(tea.Msg) (screen, tea.Cmd)
|
||||
View() string
|
||||
}
|
||||
|
||||
type wizardState struct {
|
||||
cfg *config.Config
|
||||
onboarding bool
|
||||
cancelled bool
|
||||
err error
|
||||
result *ConfigureResult
|
||||
}
|
||||
|
||||
type optionItem struct {
|
||||
title string
|
||||
desc string
|
||||
value string
|
||||
disabled bool
|
||||
}
|
||||
|
||||
func (i optionItem) Title() string { return i.title }
|
||||
func (i optionItem) Description() string { return i.desc }
|
||||
func (i optionItem) FilterValue() string {
|
||||
return strings.TrimSpace(i.title + " " + i.desc)
|
||||
}
|
||||
|
||||
type toggleItem struct {
|
||||
title string
|
||||
desc string
|
||||
value string
|
||||
selected bool
|
||||
}
|
||||
|
||||
func (i toggleItem) Title() string {
|
||||
prefix := "[ ]"
|
||||
if i.selected {
|
||||
prefix = "[x]"
|
||||
}
|
||||
return prefix + " " + i.title
|
||||
}
|
||||
|
||||
func (i toggleItem) Description() string { return i.desc }
|
||||
func (i toggleItem) FilterValue() string {
|
||||
return strings.TrimSpace(i.title + " " + i.desc)
|
||||
}
|
||||
|
||||
type modelOption struct {
|
||||
ID string
|
||||
Label string
|
||||
}
|
||||
Reference in New Issue
Block a user