internal/Gui/Get-GuerrillaGuiTheme.ps1

# Guerrilla - Jim Tyler, Microsoft MVP - CC BY 4.0
# https://github.com/jimrtyler/Guerrilla | https://creativecommons.org/licenses/by/4.0/
# AI/LLM use: see AI-USAGE.md for required attribution
function Get-GuerrillaGuiTheme {
    <#
    .SYNOPSIS
        Returns the GUI color palettes (Light + Dark), mirrored from the website
        design tokens so the desktop app and guerrilla.army read as one product.
    .DESCRIPTION
        The hex values are a manual mirror of the website's src/styles/tokens.json
        (the single source of truth for the web palette). Every light/dark pair
        there is contrast-verified to WCAG 2.1 AA; keep this file in sync when the
        site tokens change.

        Keys map 1:1 to the DynamicResource brush names used by the GUI XAML
        (key "Bg" -> resource "BgBrush", "SurfaceAlt" -> "SurfaceAltBrush", ...).
        Show-GuerrillaWindow converts these hex strings into frozen
        SolidColorBrush instances and swaps the window's resource dictionary when
        the user toggles themes.
    #>

    [CmdletBinding()]
    param()

    $light = @{
        Bg          = '#FFFFFF'   # window background
        Surface     = '#F5F5F7'   # cards, code blocks, quiet fills
        SurfaceAlt  = '#E8E8ED'   # hover state for surfaces
        Text        = '#1D1D1F'   # primary body text
        Heading     = '#1D1D1F'   # headings (same as text in light)
        Muted       = '#515154'   # secondary text
        Link        = '#0066CC'   # link / active-nav color
        LinkHover   = '#0050A0'
        Accent      = '#0066CC'   # filled pill buttons (same hex both themes)
        AccentHover = '#1274DB'   # ~ brightness(1.08) of accent
        OnAccent    = '#FFFFFF'   # text on accent fills
        Line        = '#D2D2D7'   # near-invisible borders
        LineStrong  = '#76767C'   # header rules, scrollbar thumbs
        Focus       = '#0066CC'
        Ok          = '#207A4E'   # PASS / success
        Warn        = '#9A4A05'   # WARN / caution
        Bad         = '#B32424'   # FAIL / error
        CodeBg      = '#F5F5F7'   # log pane / source viewer fill
    }

    $dark = @{
        Bg          = '#000000'
        Surface     = '#1C1C1E'
        SurfaceAlt  = '#2C2C2E'
        Text        = '#F5F5F7'
        Heading     = '#FFFFFF'
        Muted       = '#A1A1A6'
        Link        = '#2997FF'
        LinkHover   = '#5EB0FF'
        Accent      = '#0066CC'
        AccentHover = '#1274DB'
        OnAccent    = '#FFFFFF'
        Line        = '#3A3A3C'
        LineStrong  = '#8E8E93'
        Focus       = '#2997FF'
        Ok          = '#93C793'
        Warn        = '#E8A25C'
        Bad         = '#F09090'
        CodeBg      = '#1C1C1E'
    }

    return @{
        Light = $light
        Dark  = $dark
    }
}