From bf84060b0139ddd942b552aa3649db287d98ac58 Mon Sep 17 00:00:00 2001 From: Kyren223 Date: Fri, 22 Nov 2024 18:15:42 +0200 Subject: First prototype design of networks scrollbar --- internal/client/ui/core/core.go | 6 ++- internal/client/ui/networks/networks.go | 66 +++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 internal/client/ui/networks/networks.go (limited to 'internal/client/ui') diff --git a/internal/client/ui/core/core.go b/internal/client/ui/core/core.go index 790c52e..bbc8576 100644 --- a/internal/client/ui/core/core.go +++ b/internal/client/ui/core/core.go @@ -11,6 +11,7 @@ import ( "github.com/kyren223/eko/internal/client/gateway" "github.com/kyren223/eko/internal/client/ui" "github.com/kyren223/eko/internal/client/ui/loadscreen" + "github.com/kyren223/eko/internal/client/ui/networks" "github.com/kyren223/eko/pkg/snowflake" ) @@ -32,6 +33,8 @@ type Model struct { connected bool id snowflake.ID + + networks networks.Model } func New(privKey ed25519.PrivateKey, name string) Model { @@ -42,6 +45,7 @@ func New(privKey ed25519.PrivateKey, name string) Model { timeout: initialTimeout, timer: newTimer(initialTimeout), connected: false, + networks: networks.New(), } } @@ -54,7 +58,7 @@ func (m Model) View() string { return m.loading.View() } - return "" + return m.networks.View() } func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { diff --git a/internal/client/ui/networks/networks.go b/internal/client/ui/networks/networks.go new file mode 100644 index 0000000..611e682 --- /dev/null +++ b/internal/client/ui/networks/networks.go @@ -0,0 +1,66 @@ +package networks + +import ( + "fmt" + "strings" + + tea "github.com/charmbracelet/bubbletea" + "github.com/charmbracelet/lipgloss" +) + +var ( + style = lipgloss.NewStyle().Border(lipgloss.ThickBorder(), true, false) + networkStyle = lipgloss.NewStyle().Width(6).Height(3).PaddingTop(1). + Align(lipgloss.Center). + Foreground(lipgloss.Color("#ffbf00")).Background(lipgloss.Color("#4a3d5c")). + Border(lipgloss.ThickBorder(), false, true) + networks = []string{ + "󰜈 ", + " ", + "Kr", + " ", + // "Test", + // "██████\n██████\n██████", + // " ▄▄▄▄ \n █ █ \n ▀▀▀▀ ", + // " \n 󰜈 \n ", + // "Hmm", + // "Another", + } +) + +type Model struct { + networks []string +} + +func New() Model { + return Model{ + networks: networks, + } +} + +func (m Model) Init() tea.Cmd { + return nil +} + +func (m Model) View() string { + border := lipgloss.ThickBorder() + var builder strings.Builder + + top := strings.Repeat(border.Top, 6) + builder.WriteString(fmt.Sprintf("%s%s%s\n", border.TopLeft, top, border.TopRight)) + for i, network := range m.networks { + if i != 0 { + middle := strings.Repeat(border.Top, 6) + builder.WriteString(fmt.Sprintf("\n%s%s%s\n", border.MiddleLeft, middle, border.MiddleRight)) + } + builder.WriteString(networkStyle.Render(network)) + } + bottom := strings.Repeat(border.Bottom, 6) + builder.WriteString(fmt.Sprintf("\n%s%s%s", border.BottomLeft, bottom, border.BottomRight)) + + return builder.String() +} + +func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) { + return m, nil +} -- cgit v1.3.1