ui

package
v0.0.0-...-b6c7913 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 31, 2025 License: MIT Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// Primary broadcast colors
	Primary   = lipgloss.Color("#FF6B35") // Broadcast Orange/Red
	Secondary = lipgloss.Color("#1E88E5") // Broadcast Blue
	Success   = lipgloss.Color("#4CAF50") // Professional Green (readable)
	Warning   = lipgloss.Color("#FFB74D") // Amber warning
	Error     = lipgloss.Color("#F44336") // Alert Red

	// Text and background colors for dark broadcast theme
	Text       = lipgloss.Color("#E0E0E0") // Light text for dark background
	TextBright = lipgloss.Color("#FFFFFF") // Bright white text
	White      = lipgloss.Color("#FFFFFF") // White (compatibility)
	Muted      = lipgloss.Color("#90A4AE") // Muted gray for secondary info

	// Alternative success colors for better readability
	SuccessAlt = lipgloss.Color("#81C784") // Lighter readable green
	LiveGreen  = lipgloss.Color("#66BB6A") // Softer live indicator green

	// Background colors - dark broadcast studio aesthetic
	Background = lipgloss.Color("#0D1117") // Deep dark background
	PanelBg    = lipgloss.Color("#161B26") // Panel background
	HeaderBg   = lipgloss.Color("#1C2128") // Header background
	BorderDark = lipgloss.Color("#30363D") // Dark borders

	// Broadcast-specific accent colors
	OnAir     = lipgloss.Color("#FF1744") // On-air red
	Recording = lipgloss.Color("#FF5722") // Recording orange
	Standby   = lipgloss.Color("#FFC107") // Standby yellow
	Offline   = lipgloss.Color("#424242") // Offline gray

	// Modern broadcast gradient colors
	GradientStart = lipgloss.Color("#1565C0") // Deep broadcast blue
	GradientEnd   = lipgloss.Color("#283593") // Dark purple-blue

	// Adaptive colors for modern broadcast look
	CardBg      = lipgloss.AdaptiveColor{Light: "#F5F5F5", Dark: "#161B26"}
	BorderColor = lipgloss.AdaptiveColor{Light: "#DDDDDD", Dark: "#30363D"}
	AccentBg    = lipgloss.AdaptiveColor{Light: "#E3F2FD", Dark: "#1A237E"}
)

Broadcast-focused color palette with modern dark theme

View Source
var (
	HeaderStyle = lipgloss.NewStyle().
				Foreground(TextBright).
				Background(HeaderBg).
				Padding(1, 2).
				Bold(true).
				Align(lipgloss.Center).
				Border(lipgloss.RoundedBorder()).
				BorderForeground(Primary)

	PanelStyle = lipgloss.NewStyle().
				Border(lipgloss.RoundedBorder()).
				BorderForeground(BorderDark).
				Background(PanelBg).
				Foreground(Text).
				Padding(1, 2).
				MarginBottom(1).
				Width(50)

	BroadcastPanelStyle = lipgloss.NewStyle().
						Border(lipgloss.ThickBorder()).
						BorderForeground(Primary).
						Background(PanelBg).
						Foreground(Text).
						Padding(1, 2)

	PanelTitleStyle = lipgloss.NewStyle().
					Foreground(Primary).
					Background(PanelBg).
					Bold(true).
					Padding(0, 1)

	OnAirStyle = lipgloss.NewStyle().
				Foreground(OnAir).
				Bold(true).
				Background(PanelBg)

	SuccessStyle = lipgloss.NewStyle().
					Foreground(Success).
					Bold(true)

	ErrorStyle = lipgloss.NewStyle().
				Foreground(Error).
				Bold(true)

	WarningStyle = lipgloss.NewStyle().
					Foreground(Warning).
					Bold(true)

	InfoStyle = lipgloss.NewStyle().
				Foreground(Secondary).
				Bold(true)

	MutedStyle = lipgloss.NewStyle().
				Foreground(Muted)

	MetricStyle = lipgloss.NewStyle().
				Foreground(Primary).
				Bold(true).
				Background(PanelBg).
				Padding(0, 1)

	ValueStyle = lipgloss.NewStyle().
				Foreground(TextBright).
				Bold(true).
				Background(PanelBg).
				Padding(0, 1)

	ActiveStyle = lipgloss.NewStyle().
				Foreground(LiveGreen).
				Background(PanelBg).
				Bold(true).
				Padding(0, 1)

	InactiveStyle = lipgloss.NewStyle().
					Foreground(Offline).
					Background(PanelBg).
					Bold(true).
					Padding(0, 1)

	// New broadcast-specific styles
	LiveStyle = lipgloss.NewStyle().
				Foreground(OnAir).
				Background(PanelBg).
				Bold(true).
				Padding(0, 1).
				Border(lipgloss.RoundedBorder()).
				BorderForeground(OnAir)

	RecordingStyle = lipgloss.NewStyle().
					Foreground(Recording).
					Background(PanelBg).
					Bold(true).
					Padding(0, 1)

	StandbyStyle = lipgloss.NewStyle().
					Foreground(Standby).
					Background(PanelBg).
					Bold(true).
					Padding(0, 1)
)

Broadcast-focused style definitions with dark theme

View Source
var (
	// High contrast alternatives for poor terminal support
	HighContrastSuccess = lipgloss.Color("#00FF00") // Fallback bright green
	HighContrastError   = lipgloss.Color("#FF0000") // Fallback bright red
	HighContrastWarning = lipgloss.Color("#FFFF00") // Fallback bright yellow
)

Terminal readability enhancements

Functions

func BroadcastStatusIcon

func BroadcastStatusIcon(status string) string

func LogLevelIcon

func LogLevelIcon(level string) string

func ProtocolIcon

func ProtocolIcon(protocol string) string

func StatusIcon

func StatusIcon(active bool) string

Helper functions for broadcast-style indicators

func StreamTypeIcon

func StreamTypeIcon(streamType string) string

Types

type ResponsiveLayout

type ResponsiveLayout struct {
	Type         string // mobile, tablet, desktop, ultrawide
	Width        int
	Height       int
	Columns      int  // Number of columns
	ShowDetails  bool // Whether to show detailed information
	CompactMode  bool // Whether to use compact display
	PanelHeight  int  // Height for individual panels
	CardWidth    int  // Width for cards
	ShowActivity bool // Whether to show activity panel
}

ResponsiveLayout defines the layout configuration for different screen sizes

type RichDashboardModel

type RichDashboardModel struct {
	// contains filtered or unexported fields
}

RichDashboardModel represents the Rich dashboard state

func NewRichDashboardModel

func NewRichDashboardModel(env TestEnvironment, ffmpegMode bool) *RichDashboardModel

NewRichDashboardModel creates a new Rich dashboard model

func (*RichDashboardModel) AddLogEntry

func (m *RichDashboardModel) AddLogEntry(level, component, message string)

AddLogEntry adds a log entry to the dashboard

func (*RichDashboardModel) Cleanup

func (m *RichDashboardModel) Cleanup()

Cleanup performs cleanup when the dashboard stops

func (*RichDashboardModel) Init

func (m *RichDashboardModel) Init() tea.Cmd

Init implements tea.Model

func (*RichDashboardModel) Reset

func (m *RichDashboardModel) Reset()

Reset clears all dashboard state for clean restart

func (*RichDashboardModel) SetPhase

func (m *RichDashboardModel) SetPhase(phase string)

SetPhase updates the current test phase

func (*RichDashboardModel) SetProgress

func (m *RichDashboardModel) SetProgress(progress int)

SetProgress updates the progress percentage

func (*RichDashboardModel) Update

func (m *RichDashboardModel) Update(msg tea.Msg) (tea.Model, tea.Cmd)

Update implements tea.Model

func (*RichDashboardModel) UpdateStats

func (m *RichDashboardModel) UpdateStats(stats interface{})

UpdateStats updates the model stats from external source

func (*RichDashboardModel) View

func (m *RichDashboardModel) View() string

View implements tea.Model

type TestEnvironment

type TestEnvironment interface {
	GetHTTPClient() *http.Client
}

TestEnvironment interface to avoid import cycle

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL