Private/Get-IRODTheme.ps1

function Get-IRODTheme {
    <#
    .SYNOPSIS
        Gets the current IROD theme (Dark or Light).
    #>

    $settingsPath = Join-Path $env:APPDATA "IROD\settings.json"
    
    if (Test-Path $settingsPath) {
        try {
            $settings = Get-Content $settingsPath -Raw | ConvertFrom-Json
            if ($settings.Theme -eq 'Light') {
                return 'Light'
            }
        }
        catch { }
    }
    
    return 'Dark'
}

function Test-IRODThemeConfigured {
    <#
    .SYNOPSIS
        Checks if the theme has been explicitly configured.
    #>

    $settingsPath = Join-Path $env:APPDATA "IROD\settings.json"
    
    if (Test-Path $settingsPath) {
        try {
            $settings = Get-Content $settingsPath -Raw | ConvertFrom-Json
            if ($null -ne $settings.Theme) {
                return $true
            }
        }
        catch { }
    }
    
    return $false
}

function Set-IRODTheme {
    <#
    .SYNOPSIS
        Sets the IROD theme (Dark or Light).
    #>

    param(
        [ValidateSet('Dark', 'Light')]
        [string]$Theme
    )
    
    $settingsDir = Join-Path $env:APPDATA "IROD"
    $settingsPath = Join-Path $settingsDir "settings.json"
    
    if (-not (Test-Path $settingsDir)) {
        New-Item -ItemType Directory -Path $settingsDir -Force | Out-Null
    }
    
    $settings = @{}
    if (Test-Path $settingsPath) {
        try {
            $settings = Get-Content $settingsPath -Raw | ConvertFrom-Json -AsHashtable
        }
        catch {
            $settings = @{}
        }
    }
    
    $settings['Theme'] = $Theme
    $settings | ConvertTo-Json | Set-Content $settingsPath -Force
    
    Write-Host "Theme set to: $Theme" -ForegroundColor Green
}

function Get-IRODThemeColors {
    <#
    .SYNOPSIS
        Returns color definitions for the current theme.
    #>

    $theme = Get-IRODTheme
    
    if ($theme -eq 'Light') {
        return @{
            WindowBackground = "#F5F5F5"
            ControlBackground = "#FFFFFF"
            ControlBackgroundAlt = "#F0F0F0"
            ControlBackgroundHover = "#E5E5E5"
            ControlBackgroundSelected = "#0078D4"
            TextPrimary = "#1E1E1E"
            TextSecondary = "#666666"
            TextPlaceholder = "#999999"
            Border = "#CCCCCC"
            BorderHover = "#AAAAAA"
            AccentGreen = "#2E8B57"
            AccentGreenHover = "#3E9B67"
            HeaderBackground = "#E8E8E8"
            ListBackground = "#FFFFFF"
            ListItemHover = "#F0F0F0"
            SelectedBackground = "#0078D4"
            SelectedText = "#FFFFFF"
            TooltipBackground = "#FFFFFF"
            TooltipBorder = "#CCCCCC"
            ButtonBackground = "#E1E1E1"
            ButtonHover = "#D5D5D5"
            SuccessGreen = "#228B22"
            WarningRed = "#C42B1C"
        }
    }
    else {
        # Dark theme (default)
        return @{
            WindowBackground = "#1E1E1E"
            ControlBackground = "#2D2D30"
            ControlBackgroundAlt = "#252526"
            ControlBackgroundHover = "#3E3E42"
            ControlBackgroundSelected = "#094771"
            TextPrimary = "#FFFFFF"
            TextSecondary = "#CCCCCC"
            TextPlaceholder = "#808080"
            Border = "#3F3F46"
            BorderHover = "#4F4F56"
            AccentGreen = "#2E8B57"
            AccentGreenHover = "#3E9B67"
            HeaderBackground = "#2D2D30"
            ListBackground = "#252526"
            ListItemHover = "#2D2D30"
            SelectedBackground = "#094771"
            SelectedText = "#FFFFFF"
            TooltipBackground = "#2D2D30"
            TooltipBorder = "#3F3F46"
            ButtonBackground = "#2D2D30"
            ButtonHover = "#3E3E42"
            SuccessGreen = "#4EBB77"
            WarningRed = "#F85149"
        }
    }
}