fix(tui): center all tabs, full-screen SFTP, muted inline keybindings
This commit is contained in:
+26
-11
@@ -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()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user