From b92b1738152976d38845f2dfb4e6ebd0cf778604 Mon Sep 17 00:00:00 2001 From: vaibhav Date: Fri, 16 Jan 2026 02:05:12 +0530 Subject: [PATCH] Add sidebar component Introduce a new `Sidebar` component to encapsulate sidebar logic and rendering. This component utilizes Bubble Tea and Lipgloss for UI elements. The main application now integrates this component for displaying sidebar content. --- components/main_content.go | 1 + components/sidebar.go | 29 +++++++++++++++++++++++++++++ main.go | 18 ++++++++++++------ 3 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 components/main_content.go create mode 100644 components/sidebar.go diff --git a/components/main_content.go b/components/main_content.go new file mode 100644 index 0000000..bc820f5 --- /dev/null +++ b/components/main_content.go @@ -0,0 +1 @@ +package components diff --git a/components/sidebar.go b/components/sidebar.go new file mode 100644 index 0000000..671ec14 --- /dev/null +++ b/components/sidebar.go @@ -0,0 +1,29 @@ +package components + +import ( + tea "github.com/charmbracelet/bubbletea" + "github.com/charmbracelet/lipgloss" +) + +type Sidebar struct { + data string +} + +func (s Sidebar) Update(msg tea.Msg) (tea.Model, tea.Cmd) { + switch m := msg.(type) { + case tea.KeyMsg: + switch m.String() { + case "up": + + } + } +} + +func (s Sidebar) View() string { + sidebar := lipgloss. + NewStyle(). + BorderStyle(lipgloss.NormalBorder()). + Padding(1, 2). + Render(s.data) + return sidebar +} diff --git a/main.go b/main.go index 894042c..ec73152 100644 --- a/main.go +++ b/main.go @@ -7,6 +7,7 @@ import ( "github.com/charmbracelet/bubbles/textinput" tea "github.com/charmbracelet/bubbletea" "github.com/charmbracelet/lipgloss" + "github.com/vvaibhavv11/player/components" ) type model struct { @@ -54,20 +55,25 @@ func (m model) View() string { return "loading..." } - // Create search box - searchBox := lipgloss.NewStyle().BorderStyle(lipgloss.ThickBorder()).Padding(0, 1).Render(m.textInput.View()) + searchBox := lipgloss.Place( + m.width, + m.height/12, + lipgloss.Center, + lipgloss.Center, + lipgloss.NewStyle().BorderStyle(lipgloss.NormalBorder()).Padding(0, 1).Render(m.textInput.View()), + ) // Create sidebar - sidebar := lipgloss.NewStyle().BorderStyle(lipgloss.NormalBorder()).Padding(1, 2).Render(m.sidebarContent) + // sidebar := lipgloss.NewStyle().BorderStyle(lipgloss.NormalBorder()).Padding(1, 2).Render(m.sidebarContent) // Combine search and sidebar vertically - content := lipgloss.JoinVertical(lipgloss.Left, searchBox, "\n", sidebar) + content := lipgloss.JoinVertical(lipgloss.Left, searchBox, "\n", components.Sidebar(m.sidebarContent)) return lipgloss.Place( m.width, m.height, - lipgloss.Center, - lipgloss.Center, + 0, + 0, content, ) }