feat(tui): add split-pane detail, compact date headers, and input drawer
Three layout improvements for better space utilization: - Compact date headers: date labels render as left gutter column instead of standalone lines, saving one line per date group in stream view - Input drawer: capture bar expands to 4-line drawer with border, hints, and live preview of parsed entity/search query - Split-pane detail: wide terminals (>=100 cols) show list and detail side-by-side with h/l focus switching, falling back to full-screen detail on narrow terminals
This commit is contained in:
+56
-52
@@ -3,59 +3,63 @@ package tui
|
||||
import "github.com/charmbracelet/bubbles/key"
|
||||
|
||||
type keyMap struct {
|
||||
Up key.Binding
|
||||
Down key.Binding
|
||||
Enter key.Binding
|
||||
Back key.Binding
|
||||
Add key.Binding
|
||||
Delete key.Binding
|
||||
Quit key.Binding
|
||||
Help key.Binding
|
||||
PageUp key.Binding
|
||||
PageDn key.Binding
|
||||
Top key.Binding
|
||||
Bottom key.Binding
|
||||
Todo key.Binding
|
||||
Pin key.Binding
|
||||
Filter key.Binding
|
||||
Promote key.Binding
|
||||
Demote key.Binding
|
||||
Copy key.Binding
|
||||
Edit key.Binding
|
||||
Stream key.Binding
|
||||
Cards key.Binding
|
||||
Sort key.Binding
|
||||
Intent key.Binding
|
||||
Absorb key.Binding
|
||||
Run key.Binding
|
||||
Fill key.Binding
|
||||
Up key.Binding
|
||||
Down key.Binding
|
||||
Enter key.Binding
|
||||
Back key.Binding
|
||||
Add key.Binding
|
||||
Delete key.Binding
|
||||
Quit key.Binding
|
||||
Help key.Binding
|
||||
PageUp key.Binding
|
||||
PageDn key.Binding
|
||||
Top key.Binding
|
||||
Bottom key.Binding
|
||||
Todo key.Binding
|
||||
Pin key.Binding
|
||||
Filter key.Binding
|
||||
Promote key.Binding
|
||||
Demote key.Binding
|
||||
Copy key.Binding
|
||||
Edit key.Binding
|
||||
Stream key.Binding
|
||||
Cards key.Binding
|
||||
Sort key.Binding
|
||||
Intent key.Binding
|
||||
Absorb key.Binding
|
||||
Run key.Binding
|
||||
Fill key.Binding
|
||||
FocusLeft key.Binding
|
||||
FocusRight key.Binding
|
||||
}
|
||||
|
||||
var keys = keyMap{
|
||||
Up: key.NewBinding(key.WithKeys("up", "k"), key.WithHelp("↑/k", "up")),
|
||||
Down: key.NewBinding(key.WithKeys("down", "j"), key.WithHelp("↓/j", "down")),
|
||||
Enter: key.NewBinding(key.WithKeys("enter"), key.WithHelp("enter", "view")),
|
||||
Back: key.NewBinding(key.WithKeys("esc"), key.WithHelp("esc", "back")),
|
||||
Add: key.NewBinding(key.WithKeys("a"), key.WithHelp("a", "add")),
|
||||
Delete: key.NewBinding(key.WithKeys("d"), key.WithHelp("d", "delete")),
|
||||
Quit: key.NewBinding(key.WithKeys("q", "ctrl+c"), key.WithHelp("q", "quit")),
|
||||
Help: key.NewBinding(key.WithKeys("?"), key.WithHelp("?", "help")),
|
||||
PageUp: key.NewBinding(key.WithKeys("pgup", "ctrl+u"), key.WithHelp("pgup", "page up")),
|
||||
PageDn: key.NewBinding(key.WithKeys("pgdown", "ctrl+d"), key.WithHelp("pgdn", "page down")),
|
||||
Top: key.NewBinding(key.WithKeys("home", "g"), key.WithHelp("home", "top")),
|
||||
Bottom: key.NewBinding(key.WithKeys("end", "G"), key.WithHelp("end", "bottom")),
|
||||
Todo: key.NewBinding(key.WithKeys("x"), key.WithHelp("x", "toggle todo")),
|
||||
Pin: key.NewBinding(key.WithKeys("!"), key.WithHelp("!", "toggle pin")),
|
||||
Filter: key.NewBinding(key.WithKeys("#"), key.WithHelp("#", "filter tag")),
|
||||
Promote: key.NewBinding(key.WithKeys("p"), key.WithHelp("p", "promote")),
|
||||
Demote: key.NewBinding(key.WithKeys("D"), key.WithHelp("D", "demote")),
|
||||
Copy: key.NewBinding(key.WithKeys("c"), key.WithHelp("c", "copy")),
|
||||
Edit: key.NewBinding(key.WithKeys("e"), key.WithHelp("e", "edit")),
|
||||
Stream: key.NewBinding(key.WithKeys("1"), key.WithHelp("1", "stream")),
|
||||
Cards: key.NewBinding(key.WithKeys("2"), key.WithHelp("2", "cards")),
|
||||
Sort: key.NewBinding(key.WithKeys("s"), key.WithHelp("s", "sort")),
|
||||
Intent: key.NewBinding(key.WithKeys("tab"), key.WithHelp("tab", "intent")),
|
||||
Absorb: key.NewBinding(key.WithKeys("m"), key.WithHelp("m", "absorb")),
|
||||
Run: key.NewBinding(key.WithKeys("r"), key.WithHelp("r", "run checklist")),
|
||||
Fill: key.NewBinding(key.WithKeys("f"), key.WithHelp("f", "fill template")),
|
||||
Up: key.NewBinding(key.WithKeys("up", "k"), key.WithHelp("↑/k", "up")),
|
||||
Down: key.NewBinding(key.WithKeys("down", "j"), key.WithHelp("↓/j", "down")),
|
||||
Enter: key.NewBinding(key.WithKeys("enter"), key.WithHelp("enter", "view")),
|
||||
Back: key.NewBinding(key.WithKeys("esc"), key.WithHelp("esc", "back")),
|
||||
Add: key.NewBinding(key.WithKeys("a"), key.WithHelp("a", "add")),
|
||||
Delete: key.NewBinding(key.WithKeys("d"), key.WithHelp("d", "delete")),
|
||||
Quit: key.NewBinding(key.WithKeys("q", "ctrl+c"), key.WithHelp("q", "quit")),
|
||||
Help: key.NewBinding(key.WithKeys("?"), key.WithHelp("?", "help")),
|
||||
PageUp: key.NewBinding(key.WithKeys("pgup", "ctrl+u"), key.WithHelp("pgup", "page up")),
|
||||
PageDn: key.NewBinding(key.WithKeys("pgdown", "ctrl+d"), key.WithHelp("pgdn", "page down")),
|
||||
Top: key.NewBinding(key.WithKeys("home", "g"), key.WithHelp("home", "top")),
|
||||
Bottom: key.NewBinding(key.WithKeys("end", "G"), key.WithHelp("end", "bottom")),
|
||||
Todo: key.NewBinding(key.WithKeys("x"), key.WithHelp("x", "toggle todo")),
|
||||
Pin: key.NewBinding(key.WithKeys("!"), key.WithHelp("!", "toggle pin")),
|
||||
Filter: key.NewBinding(key.WithKeys("#"), key.WithHelp("#", "filter tag")),
|
||||
Promote: key.NewBinding(key.WithKeys("p"), key.WithHelp("p", "promote")),
|
||||
Demote: key.NewBinding(key.WithKeys("D"), key.WithHelp("D", "demote")),
|
||||
Copy: key.NewBinding(key.WithKeys("c"), key.WithHelp("c", "copy")),
|
||||
Edit: key.NewBinding(key.WithKeys("e"), key.WithHelp("e", "edit")),
|
||||
Stream: key.NewBinding(key.WithKeys("1"), key.WithHelp("1", "stream")),
|
||||
Cards: key.NewBinding(key.WithKeys("2"), key.WithHelp("2", "cards")),
|
||||
Sort: key.NewBinding(key.WithKeys("s"), key.WithHelp("s", "sort")),
|
||||
Intent: key.NewBinding(key.WithKeys("tab"), key.WithHelp("tab", "intent")),
|
||||
Absorb: key.NewBinding(key.WithKeys("m"), key.WithHelp("m", "absorb")),
|
||||
Run: key.NewBinding(key.WithKeys("r"), key.WithHelp("r", "run checklist")),
|
||||
Fill: key.NewBinding(key.WithKeys("f"), key.WithHelp("f", "fill template")),
|
||||
FocusLeft: key.NewBinding(key.WithKeys("h"), key.WithHelp("h", "focus list")),
|
||||
FocusRight: key.NewBinding(key.WithKeys("l"), key.WithHelp("l", "focus detail")),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user