private/output/New-StatusIndicator.ps1
|
function New-StatusIndicator { <# .SYNOPSIS Creates animated status indicator (spinner/checkmark/warning). #> [CmdletBinding()] param() # Status indicator - small spinner that shows running/complete/warning states $statusIndicator = [System.Windows.Controls.Grid]@{ Width = 20 Height = 20 Margin = [System.Windows.Thickness]::new(0, 0, 8, 0) VerticalAlignment = 'Center' ToolTip = "Running..." } # Keyed rather than colored, since this one is built once with the window and outlives theme switches. $statusSpinner = New-UiLoadingSpinner -Size 16 -BrushKey 'AccentBrush' [void]$statusIndicator.Children.Add($statusSpinner) # Success checkmark icon (hidden initially) $statusSuccess = [System.Windows.Controls.TextBlock]@{ Text = [PsUi.ModuleContext]::GetIcon('Accept') FontFamily = [PsUi.ModuleContext]::ActiveIconFontFamily FontSize = 16 Foreground = ConvertTo-UiBrush '#107C10' HorizontalAlignment = 'Center' VerticalAlignment = 'Center' Visibility = 'Collapsed' } [void]$statusIndicator.Children.Add($statusSuccess) # Warning icon (hidden initially) $statusWarning = [System.Windows.Controls.TextBlock]@{ Text = [PsUi.ModuleContext]::GetIcon('Warning') FontFamily = [PsUi.ModuleContext]::ActiveIconFontFamily FontSize = 16 Foreground = ConvertTo-UiBrush '#FFA500' HorizontalAlignment = 'Center' VerticalAlignment = 'Center' Visibility = 'Collapsed' } [void]$statusIndicator.Children.Add($statusWarning) return @{ Container = $statusIndicator Spinner = $statusSpinner Success = $statusSuccess Warning = $statusWarning } } |