Files
box-box/internal/ui/keys.go
2026-03-03 00:48:05 -05:00

91 lines
1.9 KiB
Go

package ui
import "github.com/charmbracelet/bubbles/key"
// GlobalKeyMap holds keybindings that work from any tab.
type GlobalKeyMap struct {
Tab1 key.Binding
Tab2 key.Binding
Tab3 key.Binding
Tab4 key.Binding
Quit key.Binding
Up key.Binding
Down key.Binding
Enter key.Binding
Back key.Binding
}
// 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"),
),
Quit: key.NewBinding(
key.WithKeys("q", "ctrl+c"),
key.WithHelp("q", "quit"),
),
Up: key.NewBinding(
key.WithKeys("k", "up"),
key.WithHelp("k/↑", "up"),
),
Down: key.NewBinding(
key.WithKeys("j", "down"),
key.WithHelp("j/↓", "down"),
),
Enter: key.NewBinding(
key.WithKeys("enter"),
key.WithHelp("enter", "select"),
),
Back: key.NewBinding(
key.WithKeys("b"),
key.WithHelp("b", "back"),
),
}
// 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 {
ScrollUp key.Binding
ScrollDown key.Binding
}
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"),
),
}