diff options
Diffstat (limited to 'internal')
-rw-r--r-- | internal/picker/picker.go | 13 | ||||
-rw-r--r-- | internal/preview/preview.go | 27 | ||||
-rw-r--r-- | internal/switcher/switcher.go | 12 |
3 files changed, 40 insertions, 12 deletions
diff --git a/internal/picker/picker.go b/internal/picker/picker.go index 14ada59..5a7493d 100644 --- a/internal/picker/picker.go +++ b/internal/picker/picker.go @@ -9,6 +9,10 @@ import ( tea "github.com/charmbracelet/bubbletea" ) +const ( + activeRune = '>' +) + type Model struct { title string active int @@ -109,11 +113,16 @@ func (m Model) Init() tea.Cmd { func (m Model) View() string { var s string + + carriageReturn := "" for i, slider := range m.sliders { + if i > 0 { + carriageReturn = "\n" + } if i == m.active { - s += fmt.Sprintf("\n-> %s", slider.View()) + s += fmt.Sprintf("%v%c %s", carriageReturn, activeRune, slider.View()) } else { - s += fmt.Sprintf("\n %s", slider.View()) + s += fmt.Sprintf("%v %s", carriageReturn, slider.View()) } } return s diff --git a/internal/preview/preview.go b/internal/preview/preview.go index eb7d344..1ab86be 100644 --- a/internal/preview/preview.go +++ b/internal/preview/preview.go @@ -7,19 +7,29 @@ import ( "github.com/charmbracelet/lipgloss" ) -const runeBlock = "█" +const ( + runeBlock = "█" + defaultHeight = 5 + defaultWidth = 78 +) type Model struct { - size int // height of the square in rows - hex string + height int + width int + hex string } -func (m *Model) Color(hex string) { m.hex = hex } +func (m *Model) SetColor(hex string) { m.hex = hex } + +func (m *Model) SetHeight(size int) { m.height = size } + +func (m *Model) SetWidth(size int) { m.width = size } func New(hex string) *Model { return &Model{ - size: 5, - hex: hex, + height: defaultHeight, + width: defaultWidth, + hex: hex, } } @@ -29,8 +39,7 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { return m, nil } func (m Model) View() string { style := lipgloss.NewStyle().Foreground(lipgloss.Color(m.hex)) - // size is doubled since terminal cells are 2:1 (h:w) - oneRow := strings.Repeat(runeBlock, m.size*2) - block := strings.Repeat(oneRow+"\n", m.size) + oneRow := strings.Repeat(runeBlock, m.width) + block := strings.Repeat(oneRow+"\n", m.height) return style.Render(block) } diff --git a/internal/switcher/switcher.go b/internal/switcher/switcher.go index fdf91af..589b029 100644 --- a/internal/switcher/switcher.go +++ b/internal/switcher/switcher.go @@ -67,9 +67,17 @@ func (m Model) View() string { } pickerView := m.pickers[m.active].View() + boxStyle := lipgloss.NewStyle().Border(lipgloss.RoundedBorder(), true, true, false, true) w := lipgloss.Width(pickerView) + pickerView = boxStyle.Render(pickerView) + + m.preview.SetWidth(w) + boxStyle = boxStyle.Border(lipgloss.RoundedBorder(), false, true, false, true) + previewStr := boxStyle.Render(m.preview.View()) m.help.Styles.ShortKey.Width(w) + boxStyle = boxStyle.Border(lipgloss.RoundedBorder(), false, true, true, true).Width(w) + var helpstr string if m.fullHelp { helpstr = m.help.FullHelpView(m.AllKeys()) @@ -81,10 +89,12 @@ func (m Model) View() string { helpstr = m.help.FullHelpView(shortKeys()) } + helpstr = boxStyle.Render(helpstr) + return fmt.Sprintf("%s\n%s\n%s\n%v", tabs, pickerView, - m.preview.View(), + previewStr, helpstr, ) } |