fix(tui): unify keybinding footer, remove duplicate status bar
This commit is contained in:
@@ -351,7 +351,7 @@ func (t *HostFormTab) View() string {
|
|||||||
|
|
||||||
inner.WriteString("\n")
|
inner.WriteString("\n")
|
||||||
inner.WriteString(lipgloss.PlaceHorizontal(contentW, lipgloss.Center,
|
inner.WriteString(lipgloss.PlaceHorizontal(contentW, lipgloss.Center,
|
||||||
SubtitleStyle.Render("↑↓: navigate Enter: next Ctrl+S: save Esc: cancel")))
|
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")))
|
||||||
|
|
||||||
box := BorderStyle.Render(inner.String())
|
box := BorderStyle.Render(inner.String())
|
||||||
var b strings.Builder
|
var b strings.Builder
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ func (t *HostListTab) View() string {
|
|||||||
|
|
||||||
// Footer
|
// Footer
|
||||||
var footer styledRow
|
var footer styledRow
|
||||||
footerText := "[n]ew [e]dit [d]el [f]sftp [K]eygen [/]find [q]uit"
|
footerText := "Ctrl+Tab:switch Ctrl+Q:close ↑↓:nav Enter:SSH Ctrl+N:add Ctrl+F:SFTP Ctrl+K:keys Ctrl+P:snippets q:quit"
|
||||||
footer = styledRow{text: SubtitleStyle.Render(footerText), plain: footerText}
|
footer = styledRow{text: SubtitleStyle.Render(footerText), plain: footerText}
|
||||||
rows = append(rows, footer) // for widest measurement
|
rows = append(rows, footer) // for widest measurement
|
||||||
|
|
||||||
|
|||||||
@@ -231,7 +231,7 @@ func (t *KeyFormTab) View() string {
|
|||||||
|
|
||||||
inner.WriteString("\n")
|
inner.WriteString("\n")
|
||||||
inner.WriteString(lipgloss.PlaceHorizontal(contentW, lipgloss.Center,
|
inner.WriteString(lipgloss.PlaceHorizontal(contentW, lipgloss.Center,
|
||||||
SubtitleStyle.Render("↑↓: navigate Enter: next Ctrl+S: save Esc: cancel")))
|
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")))
|
||||||
|
|
||||||
box := BorderStyle.Render(inner.String())
|
box := BorderStyle.Render(inner.String())
|
||||||
var b strings.Builder
|
var b strings.Builder
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ func (t *KeyListTab) View() string {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
footerPlain := "Ctrl+N:add Ctrl+E:edit D:delete Esc:back"
|
footerPlain := "Ctrl+Tab:switch Ctrl+Q:close ↑↓:nav Enter:SSH Ctrl+N:add Ctrl+F:SFTP Ctrl+K:keys Ctrl+P:snippets q:quit"
|
||||||
footer := styledRow{text: SubtitleStyle.Render(footerPlain), plain: footerPlain}
|
footer := styledRow{text: SubtitleStyle.Render(footerPlain), plain: footerPlain}
|
||||||
|
|
||||||
widestRow := lipgloss.Width(titlePlain)
|
widestRow := lipgloss.Width(titlePlain)
|
||||||
|
|||||||
@@ -567,7 +567,7 @@ func (t *SFTPBrowserTab) View() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
b.WriteString("\n" + lipgloss.PlaceHorizontal(t.width, lipgloss.Center,
|
b.WriteString("\n" + lipgloss.PlaceHorizontal(t.width, lipgloss.Center,
|
||||||
SubtitleStyle.Render("Tab:switch ↑↓:nav /:filter C:copy D:delete N:mkdir R:refresh Esc:close")))
|
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")))
|
||||||
|
|
||||||
return b.String()
|
return b.String()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -239,7 +239,7 @@ func (t *SnippetFormTab) View() string {
|
|||||||
|
|
||||||
inner.WriteString("\n")
|
inner.WriteString("\n")
|
||||||
inner.WriteString(lipgloss.PlaceHorizontal(contentW, lipgloss.Center,
|
inner.WriteString(lipgloss.PlaceHorizontal(contentW, lipgloss.Center,
|
||||||
SubtitleStyle.Render("↑↓: navigate Enter: next Ctrl+S: save Esc: cancel")))
|
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")))
|
||||||
|
|
||||||
box := BorderStyle.Render(inner.String())
|
box := BorderStyle.Render(inner.String())
|
||||||
var b strings.Builder
|
var b strings.Builder
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ func (t *SnippetListTab) View() string {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
footerPlain := "Ctrl+N:add Ctrl+E:edit D:delete Esc:back"
|
footerPlain := "Ctrl+Tab:switch Ctrl+Q:close ↑↓:nav Enter:SSH Ctrl+N:add Ctrl+F:SFTP Ctrl+K:keys Ctrl+P:snippets q:quit"
|
||||||
footer := styledRow{text: SubtitleStyle.Render(footerPlain), plain: footerPlain}
|
footer := styledRow{text: SubtitleStyle.Render(footerPlain), plain: footerPlain}
|
||||||
|
|
||||||
widestRow := lipgloss.Width(titlePlain)
|
widestRow := lipgloss.Width(titlePlain)
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
tea "github.com/charmbracelet/bubbletea"
|
tea "github.com/charmbracelet/bubbletea"
|
||||||
"github.com/charmbracelet/lipgloss"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Tab represents a single tab in the TUI
|
// Tab represents a single tab in the TUI
|
||||||
@@ -175,10 +174,6 @@ func (tm *TabManager) View() string {
|
|||||||
b.WriteString(content)
|
b.WriteString(content)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Render status bar (muted, like tamagosh)
|
|
||||||
b.WriteString("\n")
|
|
||||||
b.WriteString(renderStatusBar(tm))
|
|
||||||
|
|
||||||
return b.String()
|
return b.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -202,18 +197,4 @@ func renderTabBar(tm *TabManager) string {
|
|||||||
return TabBarStyle.Render(bar)
|
return TabBarStyle.Render(bar)
|
||||||
}
|
}
|
||||||
|
|
||||||
// renderStatusBar renders the bottom status bar, centered — muted like tamagosh
|
|
||||||
func renderStatusBar(tm *TabManager) string {
|
|
||||||
hints := "Ctrl+Tab:switch Ctrl+Q:close ↑↓:nav Enter:SSH Ctrl+N:add Ctrl+F:SFTP Ctrl+K:keys Ctrl+P:snippets q:quit"
|
|
||||||
rendered := SubtitleStyle.Render(hints)
|
|
||||||
if tm.width > 0 {
|
|
||||||
w := lipgloss.Width(rendered)
|
|
||||||
if w < tm.width {
|
|
||||||
pad := (tm.width - w) / 2
|
|
||||||
rendered = strings.Repeat(" ", pad) + rendered
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return rendered
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user