fix(tui): center all tabs, full-screen SFTP, muted inline keybindings

This commit is contained in:
swanadiva
2026-06-23 17:12:12 +07:00
parent c7568e0bf4
commit 7f197b9e3a
8 changed files with 355 additions and 232 deletions
+26 -11
View File
@@ -6,6 +6,7 @@ import (
"github.com/charmbracelet/bubbles/textinput"
tea "github.com/charmbracelet/bubbletea"
"github.com/charmbracelet/lipgloss"
"git.tukangketik.id/swanadiva/hostkeeper/internal/models"
)
@@ -191,18 +192,28 @@ func (t *KeyFormTab) submit() (Tab, tea.Cmd) {
}
func (t *KeyFormTab) View() string {
var b strings.Builder
contentW := t.width - 12
if contentW < 50 {
contentW = 50
}
if contentW > 70 {
contentW = 70
}
var inner strings.Builder
title := "Add SSH Key"
if t.mode == keyFormEdit {
title = "Edit SSH Key"
}
b.WriteString(AppTitleStyle.Render(title))
b.WriteString("\n\n")
inner.WriteString(lipgloss.PlaceHorizontal(contentW, lipgloss.Center,
lipgloss.NewStyle().Bold(true).Foreground(gbYellow).Render(title)))
inner.WriteString("\n\n")
if t.err != nil {
b.WriteString(ErrorStyle.Render(fmt.Sprintf("Error: %v", t.err)))
b.WriteString("\n\n")
inner.WriteString(lipgloss.PlaceHorizontal(contentW, lipgloss.Center,
ErrorStyle.Render(fmt.Sprintf("Error: %v", t.err))))
inner.WriteString("\n\n")
}
for i := keyFieldID(0); i < keyFieldCount; i++ {
@@ -212,15 +223,19 @@ func (t *KeyFormTab) View() string {
if i == t.focus {
style = HighlightStyle
}
b.WriteString(style.Render(label + ":"))
b.WriteString("\n ")
b.WriteString(input.View())
b.WriteString("\n\n")
inner.WriteString(style.Render(label + ":"))
inner.WriteString("\n ")
inner.WriteString(input.View())
inner.WriteString("\n\n")
}
b.WriteString(SubtitleStyle.Render(
"↑↓: navigate Enter: next Ctrl+S: save Esc: cancel"))
inner.WriteString("\n")
inner.WriteString(lipgloss.PlaceHorizontal(contentW, lipgloss.Center,
SubtitleStyle.Render("↑↓: navigate Enter: next Ctrl+S: save Esc: cancel")))
box := BorderStyle.Render(inner.String())
var b strings.Builder
b.WriteString(lipgloss.PlaceHorizontal(t.width, lipgloss.Center, box))
return b.String()
}