Gitfed
bastien-mrq/gitfed / cmd / gitfed-ctl / styles.go
package main

import "github.com/charmbracelet/lipgloss"

// Palette mirrors gitfed-web's own CSS tokens (cmd/gitfed-web/render.go),
// same as cmd/gitfed-install/styles.go — duplicated here rather than shared
// since these are separate `package main` binaries.
var (
	colCanvas    = lipgloss.Color("#0d0f13")
	colBorder    = lipgloss.Color("#262c36")
	colText      = lipgloss.Color("#e8eaed")
	colTextDim   = lipgloss.Color("#9aa1ac")
	colTextFaint = lipgloss.Color("#6b7280")
	colAccent    = lipgloss.Color("#6c9df5")
	colOK        = lipgloss.Color("#7bd6a8")
	colWarn      = lipgloss.Color("#e0b34e")
	colDanger    = lipgloss.Color("#f28b82")
)

var (
	styleTitle = lipgloss.NewStyle().Bold(true).Foreground(colText)
	styleTag   = lipgloss.NewStyle().Foreground(colTextFaint).Border(lipgloss.RoundedBorder()).
			BorderForeground(colBorder).Padding(0, 1)
	styleBody   = lipgloss.NewStyle().Foreground(colTextDim)
	styleMuted  = lipgloss.NewStyle().Foreground(colTextFaint)
	styleAccent = lipgloss.NewStyle().Foreground(colAccent)
	styleBold   = lipgloss.NewStyle().Bold(true).Foreground(colText)

	styleOK     = lipgloss.NewStyle().Foreground(colOK).Bold(true)
	styleWarn   = lipgloss.NewStyle().Foreground(colWarn).Bold(true)
	styleDanger = lipgloss.NewStyle().Foreground(colDanger).Bold(true)

	stylePanel = lipgloss.NewStyle().Border(lipgloss.RoundedBorder()).
			BorderForeground(colBorder).Padding(0, 2).Foreground(colText)
	stylePanelDanger = lipgloss.NewStyle().Border(lipgloss.RoundedBorder()).
				BorderForeground(colDanger).Padding(0, 2).Foreground(colText)

	styleLog = lipgloss.NewStyle().Foreground(colTextDim).Border(lipgloss.NormalBorder()).
			BorderForeground(colBorder).Padding(0, 1)

	styleFooter = lipgloss.NewStyle().Foreground(colTextFaint)
)

type checkStatus int

const (
	statusOK checkStatus = iota
	statusMissing
	statusWarn
)

func glyph(status checkStatus) string {
	switch status {
	case statusOK:
		return styleOK.Render("✓")
	case statusWarn:
		return styleWarn.Render("!")
	default:
		return styleMuted.Render("○")
	}
}