Files
box-box/internal/ui/keys.go

141 lines
3.0 KiB
Go
Raw Normal View History

2026-03-03 00:48:05 -05:00
package ui
import "github.com/charmbracelet/bubbles/key"
// GlobalKeyMap holds keybindings that work from any tab.
type GlobalKeyMap struct {
2026-03-03 02:29:34 -05:00
Tab1 key.Binding
Tab2 key.Binding
Tab3 key.Binding
Tab4 key.Binding
NextTab key.Binding
PrevTab key.Binding
Quit key.Binding
Up key.Binding
Down key.Binding
Enter key.Binding
Back key.Binding
Year key.Binding
Retry key.Binding
GoTop key.Binding
GoBottom key.Binding
HalfUp key.Binding
HalfDown key.Binding
2026-03-03 00:48:05 -05:00
}
// GlobalKeys is the singleton global key map.
var GlobalKeys = GlobalKeyMap{
Tab1: key.NewBinding(
key.WithKeys("1"),
key.WithHelp("1", "standings"),
),
Tab2: key.NewBinding(
key.WithKeys("2"),
key.WithHelp("2", "calendar"),
),
Tab3: key.NewBinding(
key.WithKeys("3"),
key.WithHelp("3", "race detail"),
),
Tab4: key.NewBinding(
key.WithKeys("4"),
key.WithHelp("4", "drivers"),
),
2026-03-03 02:29:34 -05:00
NextTab: key.NewBinding(
key.WithKeys("tab", "right"),
key.WithHelp("tab/->", "next tab"),
),
PrevTab: key.NewBinding(
key.WithKeys("shift+tab", "left"),
key.WithHelp("shift+tab/<-", "prev tab"),
),
2026-03-03 00:48:05 -05:00
Quit: key.NewBinding(
key.WithKeys("q", "ctrl+c"),
key.WithHelp("q", "quit"),
),
Up: key.NewBinding(
key.WithKeys("k", "up"),
2026-03-03 02:29:34 -05:00
key.WithHelp("k", "up"),
2026-03-03 00:48:05 -05:00
),
Down: key.NewBinding(
key.WithKeys("j", "down"),
2026-03-03 02:29:34 -05:00
key.WithHelp("j", "down"),
2026-03-03 00:48:05 -05:00
),
Enter: key.NewBinding(
key.WithKeys("enter"),
key.WithHelp("enter", "select"),
),
Back: key.NewBinding(
2026-03-03 02:29:34 -05:00
key.WithKeys("b", "esc"),
key.WithHelp("b/esc", "back"),
2026-03-03 00:48:05 -05:00
),
2026-03-03 01:16:04 -05:00
Year: key.NewBinding(
key.WithKeys("y"),
key.WithHelp("y", "switch year"),
),
2026-03-03 02:29:34 -05:00
Retry: key.NewBinding(
key.WithKeys("r"),
key.WithHelp("r", "retry"),
),
GoTop: key.NewBinding(
key.WithKeys("g", "home"),
key.WithHelp("g", "go to top"),
),
GoBottom: key.NewBinding(
key.WithKeys("G", "end"),
key.WithHelp("G", "go to bottom"),
),
HalfUp: key.NewBinding(
key.WithKeys("ctrl+u"),
key.WithHelp("ctrl+u", "half page up"),
),
HalfDown: key.NewBinding(
key.WithKeys("ctrl+d"),
key.WithHelp("ctrl+d", "half page down"),
),
2026-03-03 00:48:05 -05:00
}
// StandingsKeyMap holds standing-specific keybindings.
type StandingsKeyMap struct {
DriverView key.Binding
ConstructorView key.Binding
}
var StandingsKeys = StandingsKeyMap{
DriverView: key.NewBinding(
key.WithKeys("d"),
key.WithHelp("d", "drivers"),
),
ConstructorView: key.NewBinding(
key.WithKeys("c"),
key.WithHelp("c", "constructors"),
),
}
// RaceDetailKeyMap holds keybindings for the race detail tab.
type RaceDetailKeyMap struct {
2026-03-03 02:29:34 -05:00
ScrollUp key.Binding
ScrollDown key.Binding
PrevSession key.Binding
NextSession key.Binding
2026-03-03 00:48:05 -05:00
}
var RaceDetailKeys = RaceDetailKeyMap{
ScrollUp: key.NewBinding(
key.WithKeys("K"),
key.WithHelp("K", "scroll race control up"),
),
ScrollDown: key.NewBinding(
key.WithKeys("J"),
key.WithHelp("J", "scroll race control down"),
),
2026-03-03 02:29:34 -05:00
PrevSession: key.NewBinding(
key.WithKeys("["),
key.WithHelp("[", "previous session"),
),
NextSession: key.NewBinding(
key.WithKeys("]"),
key.WithHelp("]", "next session"),
),
2026-03-03 00:48:05 -05:00
}