diff --git a/pkg/tui/host_form_tab.go b/pkg/tui/host_form_tab.go index 2076181..1154824 100644 --- a/pkg/tui/host_form_tab.go +++ b/pkg/tui/host_form_tab.go @@ -351,7 +351,7 @@ func (t *HostFormTab) View() string { inner.WriteString("\n") inner.WriteString(lipgloss.PlaceHorizontal(contentW, lipgloss.Center, - SubtitleStyle.Render("Ctrl+Tab:switch Ctrl+Q:close ↑↓:nav Enter:SSH Ctrl+N:add Ctrl+F:SFTP Ctrl+K:keys Ctrl+P:snippets q:quit"))) + SubtitleStyle.Render("Ctrl+Tab:switch Ctrl+Q:close Tab:next Enter:next Ctrl+S:save Esc:cancel"))) box := BorderStyle.Render(inner.String()) var b strings.Builder diff --git a/pkg/tui/host_list_tab.go b/pkg/tui/host_list_tab.go index ef1fabb..17e7972 100644 --- a/pkg/tui/host_list_tab.go +++ b/pkg/tui/host_list_tab.go @@ -192,19 +192,15 @@ func (t *HostListTab) View() string { const sidePad = 6 targetW := contentW + sidePad*2 - // Uniform left shift for the row block - rowShift := (targetW - widestRow) / 2 - var content strings.Builder // Centered title content.WriteString(lipgloss.PlaceHorizontal(targetW, lipgloss.Center, title)) content.WriteString("\n\n") - // Centered rows - shift := strings.Repeat(" ", rowShift) + // Center each row independently within the box for _, r := range rows[:len(rows)-1] { // exclude footer, added below - line := lipgloss.PlaceHorizontal(targetW, lipgloss.Left, shift+r.text) + line := lipgloss.PlaceHorizontal(targetW, lipgloss.Center, r.text) content.WriteString(line) content.WriteString("\n") } diff --git a/pkg/tui/key_form_tab.go b/pkg/tui/key_form_tab.go index 6401ee3..f50cc72 100644 --- a/pkg/tui/key_form_tab.go +++ b/pkg/tui/key_form_tab.go @@ -231,7 +231,7 @@ func (t *KeyFormTab) View() string { inner.WriteString("\n") inner.WriteString(lipgloss.PlaceHorizontal(contentW, lipgloss.Center, - SubtitleStyle.Render("Ctrl+Tab:switch Ctrl+Q:close ↑↓:nav Enter:SSH Ctrl+N:add Ctrl+F:SFTP Ctrl+K:keys Ctrl+P:snippets q:quit"))) + SubtitleStyle.Render("Ctrl+Tab:switch Ctrl+Q:close Tab:next Enter:next Ctrl+S:save Esc:cancel"))) box := BorderStyle.Render(inner.String()) var b strings.Builder diff --git a/pkg/tui/key_list_tab.go b/pkg/tui/key_list_tab.go index f81e521..56ac9ac 100644 --- a/pkg/tui/key_list_tab.go +++ b/pkg/tui/key_list_tab.go @@ -190,7 +190,7 @@ func (t *KeyListTab) View() string { } } - footerPlain := "Ctrl+Tab:switch Ctrl+Q:close ↑↓:nav Enter:SSH Ctrl+N:add Ctrl+F:SFTP Ctrl+K:keys Ctrl+P:snippets q:quit" + footerPlain := "Ctrl+Tab:switch Ctrl+Q:close ↑↓:nav Ctrl+N:add Ctrl+E:edit D:delete Esc:back" footer := styledRow{text: SubtitleStyle.Render(footerPlain), plain: footerPlain} widestRow := lipgloss.Width(titlePlain) @@ -205,7 +205,6 @@ func (t *KeyListTab) View() string { const sidePad = 6 targetW := widestRow + sidePad*2 - rowShift := (targetW - widestRow) / 2 var inner strings.Builder @@ -213,9 +212,9 @@ func (t *KeyListTab) View() string { inner.WriteString(lipgloss.PlaceHorizontal(targetW, lipgloss.Center, titleStyled)) inner.WriteString("\n\n") - shift := strings.Repeat(" ", rowShift) - for _, r := range rows { - line := lipgloss.PlaceHorizontal(targetW, lipgloss.Left, shift+r.text) + // Render rows, excluding the footer (last element) + for _, r := range rows[:len(rows)-1] { + line := lipgloss.PlaceHorizontal(targetW, lipgloss.Center, r.text) inner.WriteString(line) inner.WriteString("\n") } diff --git a/pkg/tui/sftp_browser_tab.go b/pkg/tui/sftp_browser_tab.go index 78f24e2..3893860 100644 --- a/pkg/tui/sftp_browser_tab.go +++ b/pkg/tui/sftp_browser_tab.go @@ -567,7 +567,7 @@ func (t *SFTPBrowserTab) View() string { } b.WriteString("\n" + lipgloss.PlaceHorizontal(t.width, lipgloss.Center, - SubtitleStyle.Render("Ctrl+Tab:switch Ctrl+Q:close ↑↓:nav Enter:SSH Ctrl+N:add Ctrl+F:SFTP Ctrl+K:keys Ctrl+P:snippets q:quit"))) + SubtitleStyle.Render("Ctrl+Tab:switch Ctrl+Q:close Tab:pane ↑↓:nav /:filter C:copy D:delete N:mkdir R:refresh Esc:close"))) return b.String() } diff --git a/pkg/tui/snippet_form_tab.go b/pkg/tui/snippet_form_tab.go index be24058..a1fc47a 100644 --- a/pkg/tui/snippet_form_tab.go +++ b/pkg/tui/snippet_form_tab.go @@ -239,7 +239,7 @@ func (t *SnippetFormTab) View() string { inner.WriteString("\n") inner.WriteString(lipgloss.PlaceHorizontal(contentW, lipgloss.Center, - SubtitleStyle.Render("Ctrl+Tab:switch Ctrl+Q:close ↑↓:nav Enter:SSH Ctrl+N:add Ctrl+F:SFTP Ctrl+K:keys Ctrl+P:snippets q:quit"))) + SubtitleStyle.Render("Ctrl+Tab:switch Ctrl+Q:close Tab:next Enter:next Ctrl+S:save Esc:cancel"))) box := BorderStyle.Render(inner.String()) var b strings.Builder diff --git a/pkg/tui/snippet_list_tab.go b/pkg/tui/snippet_list_tab.go index ef7162e..7a28456 100644 --- a/pkg/tui/snippet_list_tab.go +++ b/pkg/tui/snippet_list_tab.go @@ -190,7 +190,7 @@ func (t *SnippetListTab) View() string { } } - footerPlain := "Ctrl+Tab:switch Ctrl+Q:close ↑↓:nav Enter:SSH Ctrl+N:add Ctrl+F:SFTP Ctrl+K:keys Ctrl+P:snippets q:quit" + footerPlain := "Ctrl+Tab:switch Ctrl+Q:close ↑↓:nav Ctrl+N:add Ctrl+E:edit D:delete Esc:back" footer := styledRow{text: SubtitleStyle.Render(footerPlain), plain: footerPlain} widestRow := lipgloss.Width(titlePlain) @@ -205,7 +205,6 @@ func (t *SnippetListTab) View() string { const sidePad = 6 targetW := widestRow + sidePad*2 - rowShift := (targetW - widestRow) / 2 var inner strings.Builder @@ -213,9 +212,9 @@ func (t *SnippetListTab) View() string { inner.WriteString(lipgloss.PlaceHorizontal(targetW, lipgloss.Center, titleStyled)) inner.WriteString("\n\n") - shift := strings.Repeat(" ", rowShift) - for _, r := range rows { - line := lipgloss.PlaceHorizontal(targetW, lipgloss.Left, shift+r.text) + // Render rows, excluding the footer (last element) + for _, r := range rows[:len(rows)-1] { + line := lipgloss.PlaceHorizontal(targetW, lipgloss.Center, r.text) inner.WriteString(line) inner.WriteString("\n") }