From 0eadc7b502acd8d4256a7524ae21347dc00c8aef Mon Sep 17 00:00:00 2001 From: vaibhav Date: Sun, 18 Jan 2026 04:02:17 +0530 Subject: [PATCH] Refactor sidebar component to use struct This commit refactors the sidebar component to use a struct for better organization and maintainability. The `data` and `sindex` fields are now exported as `Data` and `Sindex` respectively, allowing for easier access and modification. Additionally, the styling for the selected sidebar item has been updated for improved visual clarity. --- components/sidebar.go | 20 ++++++++++---------- main.go | 11 ++++++++--- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/components/sidebar.go b/components/sidebar.go index 91499b0..7765396 100644 --- a/components/sidebar.go +++ b/components/sidebar.go @@ -6,8 +6,8 @@ import ( ) type Sidebar struct { - data []string - sindex int + Data []string + Sindex int } func (s Sidebar) Init() tea.Cmd { @@ -19,12 +19,12 @@ func (s *Sidebar) Update(msg tea.Msg) (tea.Model, tea.Cmd) { case tea.KeyMsg: switch m.String() { case "up": - if s.sindex > 0 { - s.sindex-- + if s.Sindex > 0 { + s.Sindex-- } case "down": - if s.sindex < len(s.data)-1 { - s.sindex++ + if s.Sindex < len(s.Data)-1 { + s.Sindex++ } } } @@ -33,12 +33,12 @@ func (s *Sidebar) Update(msg tea.Msg) (tea.Model, tea.Cmd) { func (s Sidebar) View() string { var items []string - for i, item := range s.data { - if i == s.sindex { + for i, item := range s.Data { + if i == s.Sindex { items = append(items, lipgloss. NewStyle(). - Background(lipgloss.Color("93BD57")). - Padding(1, 2). + Foreground(lipgloss.Color("#FFFFFF")). + Background(lipgloss.Color("#93BD57")). Render(item)) } else { items = append(items, item) diff --git a/main.go b/main.go index ec73152..48d5ef0 100644 --- a/main.go +++ b/main.go @@ -14,7 +14,7 @@ type model struct { textInput textinput.Model width int height int - sidebarContent string + sidebarContent components.Sidebar } func initialModel() model { @@ -24,9 +24,14 @@ func initialModel() model { ti.CharLimit = 30 ti.Prompt = "" ti.Focus() + sidebarcon := components.Sidebar{ + Data: []string{"Library", "Playlist1", "Playlist2", "Favorites"}, + Sindex: 0, + } + return model{ textInput: ti, - sidebarContent: "Library\n\nPlaylist 1\nPlaylist 2\nFavorites", + sidebarContent: sidebarcon, } } @@ -67,7 +72,7 @@ func (m model) View() string { // sidebar := lipgloss.NewStyle().BorderStyle(lipgloss.NormalBorder()).Padding(1, 2).Render(m.sidebarContent) // Combine search and sidebar vertically - content := lipgloss.JoinVertical(lipgloss.Left, searchBox, "\n", components.Sidebar(m.sidebarContent)) + content := lipgloss.JoinVertical(lipgloss.Left, searchBox, "\n", m.sidebarContent.View()) return lipgloss.Place( m.width,