Files
miasma-installer/tui/steps/hostname.go
tumillanino ee79d720ec
Some checks failed
Build / build (push) Failing after 4m56s
updated styling and installation steps
2025-10-31 22:59:56 +11:00

74 lines
1.5 KiB
Go

package steps
import (
"miasma-installer/tui/styles"
"strings"
"github.com/charmbracelet/bubbles/textinput"
tea "github.com/charmbracelet/bubbletea"
)
type HostnameModel struct {
Hostname string
input textinput.Model
Finished bool
}
func NewHostnameModel() HostnameModel {
ti := textinput.New()
ti.Placeholder = "miasma"
ti.Focus()
ti.CharLimit = 63
ti.Width = 40
return HostnameModel{
input: ti,
}
}
func (m HostnameModel) Init() tea.Cmd {
return textinput.Blink
}
func (m HostnameModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
if m.Finished {
return m, nil
}
switch msg := msg.(type) {
case tea.KeyMsg:
switch msg.String() {
case "enter":
if m.input.Value() != "" {
m.Hostname = m.input.Value()
m.Finished = true
return m, nil
}
}
}
var cmd tea.Cmd
m.input, cmd = m.input.Update(msg)
return m, cmd
}
func (m HostnameModel) View() string {
var content strings.Builder
content.WriteString(styles.TitleStyle.Render("💻 System Hostname"))
content.WriteString("\n\n")
info := "Choose a name for your computer.\nThis will be used to identify your system on the network."
content.WriteString(styles.InfoBoxStyle.Render(info))
content.WriteString("\n\n")
content.WriteString(styles.LabelStyle.Render("Hostname:"))
content.WriteString("\n")
content.WriteString(styles.FocusedInputStyle.Render(m.input.View()))
content.WriteString("\n\n")
content.WriteString(styles.RenderHelp("Enter", "Continue"))
return styles.AppStyle.Render(content.String())
}