refactor(help): streamline with Glow, Bubbles, and Huh

bashbunni created

Change summary

internal/tui/components/core/list/keys.go    | 52 +++++++++++++--------
internal/tui/components/core/list/list.go    |  4 +
internal/tui/components/dialogs/quit/keys.go | 18 ++++---
internal/tui/components/dialogs/quit/quit.go |  2 
4 files changed, 47 insertions(+), 29 deletions(-)

Detailed changes

internal/tui/components/core/list/keys.go 🔗

@@ -5,49 +5,59 @@ import (
 )
 
 type KeyMap struct {
-	Down,
 	Up,
-	DownOneItem,
+	Down,
 	UpOneItem,
-	HalfPageDown,
+	DownOneItem,
+	PageUp,
+	PageDown,
 	HalfPageUp,
+	HalfPageDown,
 	Home,
 	End key.Binding
 }
 
 func DefaultKeyMap() KeyMap {
 	return KeyMap{
-		Down: key.NewBinding(
-			key.WithKeys("down", "ctrl+j", "ctrl+n", "j"),
-			key.WithHelp("↓", "down"),
+		PageDown: key.NewBinding(
+			key.WithKeys("pgdown", "f"),
+			key.WithHelp("f/pgdn", "page down"),
+		),
+		PageUp: key.NewBinding(
+			key.WithKeys("pgup", "b"),
+			key.WithHelp("b/pgup", "page up"),
+		),
+		HalfPageUp: key.NewBinding(
+			key.WithKeys("u"),
+			key.WithHelp("u", "½ page up"),
+		),
+		HalfPageDown: key.NewBinding(
+			key.WithKeys("d"),
+			key.WithHelp("d", "½ page down"),
 		),
 		Up: key.NewBinding(
-			key.WithKeys("up", "ctrl+k", "ctrl+p", "k"),
-			key.WithHelp("↑", "up"),
+			key.WithKeys("up", "k"),
+			key.WithHelp("↑/k", "up"),
+		),
+		Down: key.NewBinding(
+			key.WithKeys("down", "j"),
+			key.WithHelp("↓/j", "down"),
 		),
 		UpOneItem: key.NewBinding(
-			key.WithKeys("shift+up", "K"),
+			key.WithKeys("shift+up"),
 			key.WithHelp("shift+↑", "up one item"),
 		),
 		DownOneItem: key.NewBinding(
-			key.WithKeys("shift+down", "J"),
+			key.WithKeys("shift+down"),
 			key.WithHelp("shift+↓", "down one item"),
 		),
-		HalfPageDown: key.NewBinding(
-			key.WithKeys("d"),
-			key.WithHelp("d", "half page down"),
-		),
-		HalfPageUp: key.NewBinding(
-			key.WithKeys("u"),
-			key.WithHelp("u", "half page up"),
-		),
 		Home: key.NewBinding(
 			key.WithKeys("g", "home"),
-			key.WithHelp("g", "home"),
+			key.WithHelp("g/home", "top"),
 		),
 		End: key.NewBinding(
 			key.WithKeys("G", "end"),
-			key.WithHelp("G", "end"),
+			key.WithHelp("G/end", "end"),
 		),
 	}
 }
@@ -59,6 +69,8 @@ func (k KeyMap) KeyBindings() []key.Binding {
 		k.Up,
 		k.DownOneItem,
 		k.UpOneItem,
+		k.PageDown,
+		k.PageUp,
 		k.HalfPageDown,
 		k.HalfPageUp,
 		k.Home,

internal/tui/components/core/list/list.go 🔗

@@ -330,6 +330,10 @@ func (m *model) handleKeyPress(msg tea.KeyPressMsg) (tea.Model, tea.Cmd) {
 		m.scrollDown(m.listHeight() / 2)
 	case key.Matches(msg, m.keyMap.HalfPageUp):
 		m.scrollUp(m.listHeight() / 2)
+	case key.Matches(msg, m.keyMap.PageDown):
+		m.scrollDown(m.listHeight())
+	case key.Matches(msg, m.keyMap.PageUp):
+		m.scrollUp(m.listHeight())
 	case key.Matches(msg, m.keyMap.Home):
 		return m, m.goToTop()
 	case key.Matches(msg, m.keyMap.End):

internal/tui/components/dialogs/quit/keys.go 🔗

@@ -14,27 +14,29 @@ type KeyMap struct {
 	Close key.Binding
 }
 
-func DefaultKeymap() KeyMap {
+func DefaultKeyMap() KeyMap {
 	return KeyMap{
 		LeftRight: key.NewBinding(
-			key.WithKeys("left", "right"),
-			key.WithHelp("←/→", "switch options"),
+			key.WithKeys("h", "l", "left", "right"),
+			key.WithHelp("←/→", "toggle"),
 		),
 		EnterSpace: key.NewBinding(
-			key.WithKeys("enter", " "),
-			key.WithHelp("enter/space", "confirm"),
+			key.WithKeys("enter"),
+			key.WithHelp("enter", "confirm"),
 		),
 		Yes: key.NewBinding(
 			key.WithKeys("y", "Y", "ctrl+c"),
-			key.WithHelp("y/Y/ctrl+c", "yes"),
+			key.WithHelp("y", "Yes"),
 		),
 		No: key.NewBinding(
 			key.WithKeys("n", "N"),
-			key.WithHelp("n/N", "no"),
+			key.WithHelp("n", "No"),
 		),
+		// TODO I think we can remove this. We don't have tab to toggle in Huh's
+		// confirm dialogue.
 		Tab: key.NewBinding(
 			key.WithKeys("tab"),
-			key.WithHelp("tab", "switch options"),
+			key.WithHelp("tab", "toggle"),
 		),
 		Close: key.NewBinding(
 			key.WithKeys("esc"),

internal/tui/components/dialogs/quit/quit.go 🔗

@@ -31,7 +31,7 @@ type quitDialogCmp struct {
 func NewQuitDialog() QuitDialog {
 	return &quitDialogCmp{
 		selectedNo: true, // Default to "No" for safety
-		keymap:     DefaultKeymap(),
+		keymap:     DefaultKeyMap(),
 	}
 }