1package dialog
 2
 3import "github.com/charmbracelet/bubbles/v2/key"
 4
 5// KeyMap defines key bindings for dialogs.
 6type KeyMap struct {
 7	Close key.Binding
 8}
 9
10// DefaultKeyMap returns the default key bindings for dialogs.
11func DefaultKeyMap() KeyMap {
12	return KeyMap{
13		Close: key.NewBinding(
14			key.WithKeys("esc", "alt+esc"),
15		),
16	}
17}
18
19// QuitKeyMap represents key bindings for the quit dialog.
20type QuitKeyMap struct {
21	LeftRight,
22	EnterSpace,
23	Yes,
24	No,
25	Tab,
26	Close key.Binding
27}
28
29// DefaultQuitKeyMap returns the default key bindings for the quit dialog.
30func DefaultQuitKeyMap() QuitKeyMap {
31	return QuitKeyMap{
32		LeftRight: key.NewBinding(
33			key.WithKeys("left", "right"),
34			key.WithHelp("←/→", "switch options"),
35		),
36		EnterSpace: key.NewBinding(
37			key.WithKeys("enter", " "),
38			key.WithHelp("enter/space", "confirm"),
39		),
40		Yes: key.NewBinding(
41			key.WithKeys("y", "Y", "ctrl+c"),
42			key.WithHelp("y/Y/ctrl+c", "yes"),
43		),
44		No: key.NewBinding(
45			key.WithKeys("n", "N"),
46			key.WithHelp("n/N", "no"),
47		),
48		Tab: key.NewBinding(
49			key.WithKeys("tab"),
50			key.WithHelp("tab", "switch options"),
51		),
52		Close: key.NewBinding(
53			key.WithKeys("esc", "alt+esc"),
54			key.WithHelp("esc", "cancel"),
55		),
56	}
57}