package ui import "github.com/charmbracelet/lipgloss" // Color definitions (Hex palette) const ( ColorBg = "#0b1017" // Dark slate background ColorCardBg = "#121a24" // Dark grey cards ColorBorder = "#2e3b4e" // Dark slate borders ColorText = "#e0ecf6" // Light grey text ColorSubdued = "#8c9ba5" // Subdued slate text ColorCyan = "#00ffd2" // Bright teal/cyan accent ColorPink = "#ff2a85" // Hot pink accent ColorGreen = "#3cd58c" // Vibrant green (completed) ColorYellow = "#f4b942" // Amber/yellow (downloading) ColorRed = "#ff5555" // Bright red (error/missing) ) var ( // Base styles StyleBg = lipgloss.NewStyle(). Background(lipgloss.Color(ColorBg)). Foreground(lipgloss.Color(ColorText)) StyleTitle = lipgloss.NewStyle(). Bold(true). Foreground(lipgloss.Color(ColorCyan)). Border(lipgloss.DoubleBorder(), true). BorderForeground(lipgloss.Color(ColorCyan)). Padding(0, 2). MarginBottom(1) StyleHeader = lipgloss.NewStyle(). Bold(true). Foreground(lipgloss.Color(ColorPink)). MarginBottom(1) // Status states StyleStatusIdle = lipgloss.NewStyle(). Bold(true). Foreground(lipgloss.Color(ColorSubdued)) StyleStatusActive = lipgloss.NewStyle(). Bold(true). Foreground(lipgloss.Color(ColorYellow)) StyleStatusDone = lipgloss.NewStyle(). Bold(true). Foreground(lipgloss.Color(ColorGreen)) StyleStatusError = lipgloss.NewStyle(). Bold(true). Foreground(lipgloss.Color(ColorRed)) // KPI Cards StyleCard = lipgloss.NewStyle(). Background(lipgloss.Color(ColorCardBg)). Border(lipgloss.RoundedBorder()). BorderForeground(lipgloss.Color(ColorBorder)). Padding(0, 1). Align(lipgloss.Left) StyleCardActive = StyleCard. BorderForeground(lipgloss.Color(ColorCyan)) StyleCardTitle = lipgloss.NewStyle(). Bold(true). Foreground(lipgloss.Color(ColorSubdued)) StyleCardValue = lipgloss.NewStyle(). Bold(true). Foreground(lipgloss.Color(ColorText)) // Tabs StyleTab = lipgloss.NewStyle(). Padding(0, 2). Background(lipgloss.Color(ColorCardBg)). Foreground(lipgloss.Color(ColorSubdued)). Border(lipgloss.NormalBorder(), false, true, false, false). BorderForeground(lipgloss.Color(ColorBorder)) StyleActiveTab = lipgloss.NewStyle(). Bold(true). Padding(0, 2). Background(lipgloss.Color(ColorCardBg)). Foreground(lipgloss.Color(ColorCyan)). Border(lipgloss.NormalBorder(), true, true, false, true). BorderForeground(lipgloss.Color(ColorCyan)) StyleTabsRow = lipgloss.NewStyle(). Border(lipgloss.NormalBorder(), false, false, true, false). BorderForeground(lipgloss.Color(ColorBorder)). MarginBottom(1) // Input form StyleInputLabel = lipgloss.NewStyle(). Bold(true). Foreground(lipgloss.Color(ColorCyan)). Width(15) StyleInputFocused = lipgloss.NewStyle(). Foreground(lipgloss.Color(ColorCyan)). BorderForeground(lipgloss.Color(ColorCyan)) StyleInputUnfocused = lipgloss.NewStyle(). Foreground(lipgloss.Color(ColorSubdued)). BorderForeground(lipgloss.Color(ColorBorder)) // Help bar StyleHelp = lipgloss.NewStyle(). Foreground(lipgloss.Color(ColorSubdued)). MarginTop(1) StyleKey = lipgloss.NewStyle(). Bold(true). Foreground(lipgloss.Color(ColorPink)) // Tables StyleTableHeader = lipgloss.NewStyle(). Bold(true). Foreground(lipgloss.Color(ColorCyan)) StyleTableRowSelected = lipgloss.NewStyle(). Background(lipgloss.Color(ColorBorder)). Foreground(lipgloss.Color(ColorCyan)). Bold(true) // Grid colors StylePieceCompleted = lipgloss.NewStyle().Foreground(lipgloss.Color(ColorGreen)) StylePieceDownloading = lipgloss.NewStyle().Foreground(lipgloss.Color(ColorYellow)) StylePieceMissing = lipgloss.NewStyle().Foreground(lipgloss.Color(ColorBorder)) )