summaryrefslogtreecommitdiff
path: root/internal/client/ui
diff options
context:
space:
mode:
Diffstat (limited to 'internal/client/ui')
-rw-r--r--internal/client/ui/core/core.go8
-rw-r--r--internal/client/ui/core/networkcreation/networkcreation.go2
-rw-r--r--internal/client/ui/core/networklist/networklist.go44
-rw-r--r--internal/client/ui/ui.go2
4 files changed, 44 insertions, 12 deletions
diff --git a/internal/client/ui/core/core.go b/internal/client/ui/core/core.go
index 140d5f3..6949aee 100644
--- a/internal/client/ui/core/core.go
+++ b/internal/client/ui/core/core.go
@@ -204,7 +204,13 @@ func (m *Model) updateConnected(msg tea.Msg) tea.Cmd {
}
}
- return nil
+ var cmd tea.Cmd
+ switch m.focus {
+ case FocusNetworkList:
+ m.networkList, cmd = m.networkList.Update(msg)
+ }
+
+ return cmd
}
func (m *Model) updateLoadScreenContent() {
diff --git a/internal/client/ui/core/networkcreation/networkcreation.go b/internal/client/ui/core/networkcreation/networkcreation.go
index 4575143..f1089ad 100644
--- a/internal/client/ui/core/networkcreation/networkcreation.go
+++ b/internal/client/ui/core/networkcreation/networkcreation.go
@@ -156,7 +156,7 @@ func (m Model) Init() tea.Cmd {
func (m Model) View() string {
name := m.name.View()
- iconPreview := networklist.IconStyle(m.lastFg, m.lastBg).Render(m.icon.Value())
+ iconPreview := networklist.IconStyle(m.icon.Value(), m.lastFg, m.lastBg).String()
iconPreview = lipgloss.NewStyle().Width(m.nameWidth).Align(lipgloss.Center).Render(iconPreview)
color := colors.Gray
diff --git a/internal/client/ui/core/networklist/networklist.go b/internal/client/ui/core/networklist/networklist.go
index 92c0094..8b01c1e 100644
--- a/internal/client/ui/core/networklist/networklist.go
+++ b/internal/client/ui/core/networklist/networklist.go
@@ -12,24 +12,30 @@ import (
var (
style = lipgloss.NewStyle().Border(lipgloss.ThickBorder(), true, false)
- partialIconStyle = lipgloss.NewStyle().Width(6).Height(3).PaddingTop(1).Margin(0, 1).
+ partialIconStyle = lipgloss.NewStyle().
+ Width(6).Height(3).
Align(lipgloss.Center).
Border(lipgloss.ThickBorder(), false, false)
- trustedUsersButton = IconStyle(lipgloss.Color(colors.Turquoise), lipgloss.Color(colors.DarkerCyan)).
- MarginBottom(1).Render(" ")
+
+ selectedIndicator = "|\n|\n|\n"
+ trustedUsersIcon = IconStyle(" ", lipgloss.Color(colors.Turquoise), lipgloss.Color(colors.DarkerCyan))
+ trustedUsersButton = trustedUsersIcon.Margin(0, 1, 1).String()
+ trustedUsersButtonSelected = lipgloss.JoinHorizontal(ui.Center, selectedIndicator, trustedUsersIcon.Margin(0, 1, 1, 0).String())
)
-func IconStyle(fg, bg lipgloss.Color) lipgloss.Style {
- return partialIconStyle.Foreground(fg).Background(bg)
+func IconStyle(icon string, fg, bg lipgloss.Color) lipgloss.Style {
+ return partialIconStyle.Foreground(fg).Background(bg).SetString("\n" + icon)
}
-type Model struct{
+type Model struct {
focus bool
+ index int
}
func New() Model {
return Model{
focus: false,
+ index: 0,
}
}
@@ -44,11 +50,19 @@ func (m Model) View() string {
// top := strings.Repeat(border.Top, 6)
// builder.WriteString(fmt.Sprintf("%s%s%s\n", border.TopLeft, top, border.TopRight))
builder.WriteString("\n")
- builder.WriteString(trustedUsersButton)
+ if m.index == 0 {
+ builder.WriteString(trustedUsersButtonSelected)
+ } else {
+ builder.WriteString(trustedUsersButton)
+ }
builder.WriteString("\n")
- for _, network := range state.State.Networks {
- builder.WriteString(IconStyle(lipgloss.Color(network.FgHexColor), lipgloss.Color(network.BgHexColor)).
- MarginBottom(1).Render(network.Icon))
+ for i, network := range state.State.Networks {
+ icon := IconStyle(network.Icon, lipgloss.Color(network.FgHexColor), lipgloss.Color(network.BgHexColor))
+ if m.index == i+1 {
+ builder.WriteString(lipgloss.JoinHorizontal(ui.Center, selectedIndicator, icon.Margin(0, 1, 1, 0).String()))
+ } else {
+ builder.WriteString(icon.Margin(0, 1, 1).String())
+ }
builder.WriteString("\n")
}
// bottom := strings.Repeat(border.Bottom, 6)
@@ -66,6 +80,16 @@ func (m Model) View() string {
}
func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
+ switch msg := msg.(type) {
+ case tea.KeyMsg:
+ key := msg.String()
+ switch key {
+ case "k":
+ m.index = max(0, m.index-1)
+ case "j":
+ m.index = min(len(state.State.Networks), m.index+1)
+ }
+ }
return m, nil
}
diff --git a/internal/client/ui/ui.go b/internal/client/ui/ui.go
index 4b2149d..3ee0124 100644
--- a/internal/client/ui/ui.go
+++ b/internal/client/ui/ui.go
@@ -17,6 +17,8 @@ import (
const DEBUG = true
+var Center lipgloss.Position = 0.499
+
var Width int
var Height int
var Program *tea.Program