twink/tui/home.go

67 lines
1.1 KiB
Go
Raw Permalink Normal View History

2025-12-06 11:01:11 +01:00
package tui
import (
"fmt"
tea "github.com/charmbracelet/bubbletea"
"github.com/charmbracelet/lipgloss"
)
type (
HomeScreenModel struct{
Size Size
}
2025-12-07 11:42:57 +01:00
SwitchHomeScreenMsg struct{}
2025-12-06 11:01:11 +01:00
)
2025-12-07 11:42:57 +01:00
func SwitchHomeScreen() tea.Msg {
return SwitchHomeScreenMsg{}
}
2025-12-06 11:01:11 +01:00
func NewHomeScreen() HomeScreenModel {
return HomeScreenModel{}
}
func (m HomeScreenModel) Init() tea.Cmd {
return nil
}
func (m HomeScreenModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
var cmd tea.Cmd
switch msg := msg.(type) {
case tea.KeyMsg:
switch msg.String() {
case "q", "ctrl-c":
cmd = tea.Quit
2025-12-07 11:42:57 +01:00
case "N":
cmd = SwitchNotificationScreen
2025-12-06 11:01:11 +01:00
}
case Size:
m.Size = msg
}
return m, cmd
}
2025-12-07 11:42:57 +01:00
func (m HomeScreenModel) SetSize(width, height int) HomeScreenModel {
m.Size = NewSize(width, height)
return m
}
2025-12-06 11:01:11 +01:00
func (m HomeScreenModel) View() string {
header := lipgloss.NewStyle().
Align(lipgloss.Center).
Width(m.Size.Width).
SetString(fmt.Sprintf("Home\n%s", "@example@mastodon.social"))
window := lipgloss.NewStyle().
Width(m.Size.Width).
Height(m.Size.Height)
return window.Render(
header.Render(),
)
}