blogssh/nav.go
2025-06-01 16:52:45 +01:00

63 lines
1.1 KiB
Go

package main
import (
tea "github.com/charmbracelet/bubbletea"
"github.com/charmbracelet/lipgloss"
)
type navModel struct {
renderer *lipgloss.Renderer
style lipgloss.Style
}
func (m navModel) Init() tea.Cmd {
return nil
}
func (m navModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
return m, nil
}
func (m navModel) View() string {
nameStyle := m.renderer.NewStyle().Bold(true)
blogStyle := m.renderer.NewStyle().
Bold(true).
Underline(true)
shortcutStyle := m.renderer.NewStyle().
Faint(true)
name := nameStyle.Render("John Costa")
nameShortcut := shortcutStyle.Render("(h)")
blog := blogStyle.Render("Blog")
blogShortcut := shortcutStyle.Render("(b)")
rightSide := lipgloss.JoinHorizontal(
lipgloss.Center,
nameShortcut,
" ",
name,
" ",
blogShortcut,
" ",
blog,
)
return m.style.Render(rightSide)
}
func createNavModel(renderer *lipgloss.Renderer, width int) navModel {
style := renderer.NewStyle().
BorderStyle(lipgloss.RoundedBorder()).
BorderForeground(lipgloss.Color("62"))
style = style.Width(width - style.GetHorizontalFrameSize())
return navModel{
renderer: renderer,
style: style,
}
}