// Package tui is a full-screen terminal front end built on Bubble Tea.
//
// It observes the same agent.Event stream the plain renderer does and answers
// the same approval.Prompt signature, so the dependency direction is unchanged:
// tui imports agent, never the reverse, and the eval runner still drives the
// loop with no terminal attached.
package tui
import "github.com/charmbracelet/lipgloss"
// The palette is a role, not a colour. Every value below is assigned by
// applyTheme in theme.go from the palette in force, so a style here can be
// read anywhere in the package without knowing which theme is on.
//
// The roles stay what they always were: one accent carries the identity and
// everything else is a grey at some distance from the text colour. Every
// colour is adaptive, because a palette tuned only for a dark terminal is the
// usual way a hand-rolled TUI becomes unreadable on a light one.
var (
colCoral lipgloss.AdaptiveColor // the accent, whatever hue the theme gives it
colText lipgloss.AdaptiveColor
colUser lipgloss.AdaptiveColor
colDim lipgloss.AdaptiveColor
colFaint lipgloss.AdaptiveColor
colOK lipgloss.AdaptiveColor
colErr lipgloss.AdaptiveColor
colWarn lipgloss.AdaptiveColor
colBlue lipgloss.AdaptiveColor
colPillBg lipgloss.AdaptiveColor
)
var (
styText lipgloss.Style
styDim lipgloss.Style
styFaint lipgloss.Style
styCoral lipgloss.Style
styBold lipgloss.Style
styErr lipgloss.Style
styWarn lipgloss.Style
styOK lipgloss.Style
// The transcript's grammar: every turn of events opens with a dot, and
// anything hanging off it is indented under that dot.
styUserMark lipgloss.Style
styUserText lipgloss.Style
styToolDot lipgloss.Style
styTextDot lipgloss.Style
styErrDot lipgloss.Style
styToolName lipgloss.Style
styToolArgs lipgloss.Style
styResult lipgloss.Style
styDiffAdd lipgloss.Style
styDiffDel lipgloss.Style
styDiffHunk lipgloss.Style
styDiffHead lipgloss.Style
styName lipgloss.Style
styPill lipgloss.Style
styKey lipgloss.Style
styHeading lipgloss.Style
// The input frame is the only always-present chrome, so it carries the
// mode: the accent when it is yours to type into, faint while the agent
// has it.
styBoxFocus lipgloss.Style
styBoxBlur lipgloss.Style
// The approval box is the one place the UI is allowed to shout: it is the
// only moment a human has to decide something.
styModal lipgloss.Style
)