package tui import ( "strings" "github.com/charmbracelet/lipgloss" ) // Palette (Tokyo Night inspired) var ( colorPurple = lipgloss.Color("#7C71FF") colorGreen = lipgloss.Color("#9ECE6A") colorYellow = lipgloss.Color("#E0AF68") colorRed = lipgloss.Color("#F7768E") colorBlue = lipgloss.Color("#7AA2F7") colorCyan = lipgloss.Color("#73DACA") colorGray = lipgloss.Color("#565F89") colorBorder = lipgloss.Color("#414868") colorFg = lipgloss.Color("#C0CAF5") ) var ( headerStyle = lipgloss.NewStyle(). Background(colorPurple). Foreground(lipgloss.Color("#FFFFFF")). Bold(true). Padding(0, 2) subHeaderStyle = lipgloss.NewStyle(). Background(lipgloss.Color("#414868")). Foreground(colorFg). Padding(0, 2) footerStyle = lipgloss.NewStyle(). Foreground(colorGray) panelStyle = lipgloss.NewStyle(). Border(lipgloss.RoundedBorder()). BorderForeground(colorBorder) activePanelStyle = lipgloss.NewStyle(). Border(lipgloss.RoundedBorder()). BorderForeground(colorPurple) folderItemStyle = lipgloss.NewStyle(). Foreground(colorPurple). Bold(true) selectedItemStyle = lipgloss.NewStyle(). Foreground(colorPurple). Bold(true) dimItemStyle = lipgloss.NewStyle(). Foreground(colorGray) statusOKStyle = lipgloss.NewStyle(). Foreground(colorGreen). Bold(true) statusErrStyle = lipgloss.NewStyle(). Foreground(colorRed). Bold(true) labelStyle = lipgloss.NewStyle(). Foreground(colorGray) wizardBoxStyle = lipgloss.NewStyle(). Border(lipgloss.RoundedBorder()). BorderForeground(colorPurple). Padding(1, 2) hintStyle = lipgloss.NewStyle(). Foreground(colorGray). Italic(true) ) // envColorFor maps an environment name to its header accent colour. // prod/production → red (danger), staging → yellow, local/dev → green, else → purple. func envColorFor(name string) lipgloss.Color { switch strings.ToLower(name) { case "prod", "production", "live", "master": return colorRed case "staging", "stage", "uat", "preprod": return colorYellow case "local", "dev", "development", "test": return colorGreen default: return colorPurple } } // methodStyle returns a style coloured by HTTP verb. func methodStyle(method string) lipgloss.Style { switch method { case "GET": return lipgloss.NewStyle().Foreground(colorGreen).Bold(true) case "POST": return lipgloss.NewStyle().Foreground(colorYellow).Bold(true) case "PUT": return lipgloss.NewStyle().Foreground(colorBlue).Bold(true) case "DELETE": return lipgloss.NewStyle().Foreground(colorRed).Bold(true) case "PATCH": return lipgloss.NewStyle().Foreground(colorCyan).Bold(true) default: return lipgloss.NewStyle().Foreground(colorGray) } } // statusCodeStyle colours HTTP status codes (2xx green, 3xx blue, 4xx/5xx red). func statusCodeStyle(code int) lipgloss.Style { switch { case code >= 200 && code < 300: return lipgloss.NewStyle().Foreground(colorGreen).Bold(true) case code >= 300 && code < 400: return lipgloss.NewStyle().Foreground(colorBlue).Bold(true) case code >= 400: return lipgloss.NewStyle().Foreground(colorRed).Bold(true) default: return lipgloss.NewStyle().Foreground(colorGray) } }