view.go 744 B

12345678910111213141516171819202122232425262728293031
  1. package header
  2. import (
  3. "fmt"
  4. "fbtop/internal/shared"
  5. "charm.land/lipgloss/v2"
  6. )
  7. var (
  8. titleStyle = lipgloss.NewStyle().Bold(true).Foreground(lipgloss.Color("63"))
  9. urlStyle = lipgloss.NewStyle().Faint(true)
  10. dotStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("42"))
  11. )
  12. func Render(state shared.State, url string, width int) string {
  13. dot := "● Disconnected"
  14. if state.Connected {
  15. dot = dotStyle.Render("● Connected")
  16. }
  17. title := titleStyle.Render("fbtop")
  18. urlStr := urlStyle.Render(url)
  19. updated := state.UpdatedAt.Format("15:04:05")
  20. header := fmt.Sprintf(" %s %s %s\n Components: %d Updated: %s",
  21. title, urlStr, dot, len(state.Comps), updated)
  22. return lipgloss.NewStyle().Width(width).Render(header)
  23. }