134 lines
4.3 KiB
Go
134 lines
4.3 KiB
Go
package tui
|
|
|
|
import "github.com/charmbracelet/lipgloss"
|
|
|
|
// =============================================================================
|
|
// GLOBAL TUI STYLE DEFINITIONS
|
|
// =============================================================================
|
|
// Design Language:
|
|
// - Bold text for labels and headers
|
|
// - Colors for semantic meaning (green=success, red=error, yellow=warning)
|
|
// - No emoticons - use simple text prefixes like [OK], [FAIL], [!]
|
|
// - No boxes for inline status - use bold+color accents
|
|
// - Consistent color palette across all views
|
|
// =============================================================================
|
|
|
|
// Color Palette (ANSI 256 colors for terminal compatibility)
|
|
const (
|
|
ColorWhite = lipgloss.Color("15") // Bright white
|
|
ColorGray = lipgloss.Color("250") // Light gray
|
|
ColorDim = lipgloss.Color("244") // Dim gray
|
|
ColorDimmer = lipgloss.Color("240") // Darker gray
|
|
ColorSuccess = lipgloss.Color("2") // Green
|
|
ColorError = lipgloss.Color("1") // Red
|
|
ColorWarning = lipgloss.Color("3") // Yellow
|
|
ColorInfo = lipgloss.Color("6") // Cyan
|
|
ColorAccent = lipgloss.Color("4") // Blue
|
|
)
|
|
|
|
// =============================================================================
|
|
// TITLE & HEADER STYLES
|
|
// =============================================================================
|
|
|
|
// TitleStyle - main view title (bold white on gray background)
|
|
var TitleStyle = lipgloss.NewStyle().
|
|
Bold(true).
|
|
Foreground(ColorWhite).
|
|
Background(ColorDimmer).
|
|
Padding(0, 1)
|
|
|
|
// HeaderStyle - section headers (bold gray)
|
|
var HeaderStyle = lipgloss.NewStyle().
|
|
Bold(true).
|
|
Foreground(ColorDim)
|
|
|
|
// LabelStyle - field labels (bold cyan)
|
|
var LabelStyle = lipgloss.NewStyle().
|
|
Bold(true).
|
|
Foreground(ColorInfo)
|
|
|
|
// =============================================================================
|
|
// STATUS STYLES
|
|
// =============================================================================
|
|
|
|
// StatusReadyStyle - idle/ready state (dim)
|
|
var StatusReadyStyle = lipgloss.NewStyle().
|
|
Foreground(ColorDim)
|
|
|
|
// StatusActiveStyle - operation in progress (bold cyan)
|
|
var StatusActiveStyle = lipgloss.NewStyle().
|
|
Bold(true).
|
|
Foreground(ColorInfo)
|
|
|
|
// StatusSuccessStyle - success messages (bold green)
|
|
var StatusSuccessStyle = lipgloss.NewStyle().
|
|
Bold(true).
|
|
Foreground(ColorSuccess)
|
|
|
|
// StatusErrorStyle - error messages (bold red)
|
|
var StatusErrorStyle = lipgloss.NewStyle().
|
|
Bold(true).
|
|
Foreground(ColorError)
|
|
|
|
// StatusWarningStyle - warning messages (bold yellow)
|
|
var StatusWarningStyle = lipgloss.NewStyle().
|
|
Bold(true).
|
|
Foreground(ColorWarning)
|
|
|
|
// =============================================================================
|
|
// LIST & TABLE STYLES
|
|
// =============================================================================
|
|
|
|
// ListNormalStyle - unselected list items
|
|
var ListNormalStyle = lipgloss.NewStyle().
|
|
Foreground(ColorGray)
|
|
|
|
// ListSelectedStyle - selected/cursor item (bold white)
|
|
var ListSelectedStyle = lipgloss.NewStyle().
|
|
Foreground(ColorWhite).
|
|
Bold(true)
|
|
|
|
// ListHeaderStyle - column headers (bold dim)
|
|
var ListHeaderStyle = lipgloss.NewStyle().
|
|
Bold(true).
|
|
Foreground(ColorDim)
|
|
|
|
// =============================================================================
|
|
// ITEM STATUS STYLES
|
|
// =============================================================================
|
|
|
|
// ItemValidStyle - valid/OK items (green)
|
|
var ItemValidStyle = lipgloss.NewStyle().
|
|
Foreground(ColorSuccess)
|
|
|
|
// ItemInvalidStyle - invalid/failed items (red)
|
|
var ItemInvalidStyle = lipgloss.NewStyle().
|
|
Foreground(ColorError)
|
|
|
|
// ItemOldStyle - old/stale items (yellow)
|
|
var ItemOldStyle = lipgloss.NewStyle().
|
|
Foreground(ColorWarning)
|
|
|
|
// =============================================================================
|
|
// SHORTCUT STYLE
|
|
// =============================================================================
|
|
|
|
// ShortcutStyle - keyboard shortcuts footer (dim)
|
|
var ShortcutStyle = lipgloss.NewStyle().
|
|
Foreground(ColorDim)
|
|
|
|
// =============================================================================
|
|
// HELPER PREFIXES (no emoticons)
|
|
// =============================================================================
|
|
|
|
const (
|
|
PrefixOK = "[OK]"
|
|
PrefixFail = "[FAIL]"
|
|
PrefixWarn = "[!]"
|
|
PrefixInfo = "[i]"
|
|
PrefixPlus = "[+]"
|
|
PrefixMinus = "[-]"
|
|
PrefixArrow = ">"
|
|
PrefixSpinner = "" // Spinner character added dynamically
|
|
)
|