63 lines
1.1 KiB
Go
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,
|
|
}
|
|
}
|