Files
Hon 47c2b6bed9 Add terminal UI (#1593)
* Init attempt at tui with bubble tea.

Co-authored-by: mcastorina <m.castorina93@gmail.com>

* Add starting and source selection options

Co-authored-by: mcastorina <m.castorina93@gmail.com>

* Rewrite models into a state machine

* Update source descriptions

* Make subpages implement tea.Model

* Rename page0 and page1 to be more descriptive

* Adjust styling and adding color consts

Co-authored-by: mcastorina <m.castorina93@gmail.com>

* Add helper generic function to call Update and type cast

* Setup plumbing for source configuration page

* Use CLI introspection for source configuration (WIP)

* Experiment with table view

* Replace table with form fields

Co-authored-by: mcastorina <m.castorina93@gmail.com>

* Change 🔒 to 💸

* Copy components from soft-serve

Co-authored-by: hxnyk <8292703+hxnyk@users.noreply.github.com>

* Copy styles from soft-serve

Co-authored-by: hxnyk <8292703+hxnyk@users.noreply.github.com>

* Copy common from soft-serve

Co-authored-by: hxnyk <8292703+hxnyk@users.noreply.github.com>

* Refactor into pages

This is still a WIP, but the main structure is there.

Co-authored-by: hxnyk <8292703+hxnyk@users.noreply.github.com>

* Trying out selector for wizard intro

Co-authored-by: mcastorina <m.castorina93@gmail.com>

* Use selector with custom View

Co-authored-by: hxnyk <8292703+hxnyk@users.noreply.github.com>

* Change Item to be an enum

Co-authored-by: hxnyk <8292703+hxnyk@users.noreply.github.com>

* Add link pages

Co-authored-by: mcastorina <m.castorina93@gmail.com>

* Update source select to use selector

Co-authored-by: mcastorina <m.castorina93@gmail.com>

* Delete source configure page and add blank tabs

Co-authored-by: hxnyk <8292703+hxnyk@users.noreply.github.com>

* Add tab placeholder pages for configurationi

Co-authored-by: mcastorina <m.castorina93@gmail.com>

* Added headers and style to each tab

Co-authored-by: hxnyk <8292703+hxnyk@users.noreply.github.com>

* Update with new sources

* Remove kingpin attribute from SourceItem

* Add basic form field and source structuring

* Hookup git form fields with an underlying textinput component

Co-authored-by: hxnyk <8292703+hxnyk@users.noreply.github.com>

* Update forms for git and github

Co-authored-by: mcastorina <m.castorina93@gmail.com>

* Add labels per text input

* Add sources and adjust styling

* add basic trufflehog configuration page

* Add skip button to textinputs component

* Emit and handle textinputs skip/submit button commands

* Don't quit when q is pressed on the sourceConfigurePage

* Build trufflehog command based on source config vals

Co-authored-by: mcastorina <m.castorina93@gmail.com>

* Build flags based on truffle config inputs

* Update summary section

* Add generated truffle fields

Co-authored-by: mcastorina <m.castorina93@gmail.com>

* update summary to correctly print info

* Go back a page when escape key is pressed

* WIP run page list

Co-authored-by: hxnyk <8292703+hxnyk@users.noreply.github.com>

* Allow running trufflehog from the run page

Co-authored-by: hxnyk <8292703+hxnyk@users.noreply.github.com>

* Add option to view help docs

Co-authored-by: mcastorina <m.castorina93@gmail.com>

* comment out unused styles and remove unused types

* Capitalize H in TruffleHog

* remove unneeded fmt.Sprintf

---------

Co-authored-by: mcastorina <m.castorina93@gmail.com>
2023-08-09 13:13:55 -07:00

218 lines
2.6 KiB
Go

package keymap
import "github.com/charmbracelet/bubbles/key"
// KeyMap is a map of key bindings for the UI.
type KeyMap struct {
Quit key.Binding
CmdQuit key.Binding
Up key.Binding
Down key.Binding
UpDown key.Binding
LeftRight key.Binding
Arrows key.Binding
Select key.Binding
Section key.Binding
Back key.Binding
PrevPage key.Binding
NextPage key.Binding
Help key.Binding
SelectItem key.Binding
BackItem key.Binding
Copy key.Binding
}
// DefaultKeyMap returns the default key map.
func DefaultKeyMap() *KeyMap {
km := new(KeyMap)
km.Quit = key.NewBinding(
key.WithKeys(
"ctrl+c",
),
key.WithHelp(
"ctrl+c",
"quit",
),
)
km.CmdQuit = key.NewBinding(
key.WithKeys(
"q",
"ctrl+c",
),
key.WithHelp(
"q",
"quit",
),
)
km.Up = key.NewBinding(
key.WithKeys(
"up",
"k",
),
key.WithHelp(
"↑/k",
"up",
),
)
km.Down = key.NewBinding(
key.WithKeys(
"down",
"j",
),
key.WithHelp(
"↓/j",
"down",
),
)
km.UpDown = key.NewBinding(
key.WithKeys(
"up",
"down",
"k",
"j",
),
key.WithHelp(
"↑↓",
"navigate",
),
)
km.LeftRight = key.NewBinding(
key.WithKeys(
"left",
"h",
"right",
"l",
),
key.WithHelp(
"←→",
"navigate",
),
)
km.Arrows = key.NewBinding(
key.WithKeys(
"up",
"right",
"down",
"left",
"k",
"j",
"h",
"l",
),
key.WithHelp(
"↑←↓→",
"navigate",
),
)
km.Select = key.NewBinding(
key.WithKeys(
"enter",
),
key.WithHelp(
"enter",
"select",
),
)
km.Section = key.NewBinding(
key.WithKeys(
"tab",
"shift+tab",
),
key.WithHelp(
"tab",
"section",
),
)
km.Back = key.NewBinding(
key.WithKeys(
"esc",
),
key.WithHelp(
"esc",
"back",
),
)
km.PrevPage = key.NewBinding(
key.WithKeys(
"pgup",
"b",
"u",
),
key.WithHelp(
"pgup",
"prev page",
),
)
km.NextPage = key.NewBinding(
key.WithKeys(
"pgdown",
"f",
"d",
),
key.WithHelp(
"pgdn",
"next page",
),
)
km.Help = key.NewBinding(
key.WithKeys(
"?",
),
key.WithHelp(
"?",
"toggle help",
),
)
km.SelectItem = key.NewBinding(
key.WithKeys(
"l",
"right",
),
key.WithHelp(
"→",
"select",
),
)
km.BackItem = key.NewBinding(
key.WithKeys(
"h",
"left",
"backspace",
),
key.WithHelp(
"←",
"back",
),
)
km.Copy = key.NewBinding(
key.WithKeys(
"c",
"ctrl+c",
),
key.WithHelp(
"c",
"copy text",
),
)
return km
}