// Package theme provides the visual theme system for the dashboard. package theme import ( "github.com/charmbracelet/lipgloss" "github.com/muesli/termenv" ) // Theme holds all color definitions for the pipeline dashboard. type Theme struct { // Base colors Base lipgloss.Color Surface lipgloss.Color Overlay lipgloss.Color Text lipgloss.Color Subtext lipgloss.Color // Accent colors Blue lipgloss.Color Mauve lipgloss.Color Green lipgloss.Color Yellow lipgloss.Color Sky lipgloss.Color Peach lipgloss.Color Red lipgloss.Color Pink lipgloss.Color } // NewTheme creates a theme by name. Use "auto" or "" to detect from terminal background. func NewTheme(name string) Theme { switch name { case "catppuccin-mocha": return newCatppuccinMocha() case "catppuccin-latte": return newCatppuccinLatte() case "auto", "": if termenv.HasDarkBackground() { return newCatppuccinMocha() } return newCatppuccinLatte() default: return newCatppuccinMocha() } }