Private/Interactive/Get-TBColorPalette.ps1

function Get-TBColorPalette {
    <#
    .SYNOPSIS
        Returns the color palette for premium menu rendering.
    .DESCRIPTION
        Returns a hashtable of ANSI 24-bit escape code strings based on the
        Catppuccin Mocha color scheme. On non-interactive hosts,
        returns empty strings so callers degrade gracefully.
    #>

    [CmdletBinding()]
    [OutputType([hashtable])]
    param()

    $esc = [char]27

    if ($PSVersionTable.PSVersion.Major -ge 7) {
        return @{
            Text      = "${esc}[38;2;205;214;244m"
            Subtext   = "${esc}[38;2;166;173;200m"
            Dim       = "${esc}[38;2;108;112;134m"
            Blue      = "${esc}[38;2;137;180;250m"
            Green     = "${esc}[38;2;166;227;161m"
            Red       = "${esc}[38;2;243;139;168m"
            Yellow    = "${esc}[38;2;249;226;175m"
            Mauve     = "${esc}[38;2;203;166;247m"
            Teal      = "${esc}[38;2;148;226;213m"
            Peach     = "${esc}[38;2;250;179;135m"
            Surface   = "${esc}[38;2;69;71;90m"
            BgSelect  = "${esc}[48;2;49;50;68m"
            Bold      = "${esc}[1m"
            Italic    = "${esc}[3m"
            DimStyle  = "${esc}[2m"
            Reset     = "${esc}[0m"
        }
    }

    # Non-interactive fallback: empty strings
    $empty = @{}
    foreach ($key in @('Text','Subtext','Dim','Blue','Green','Red','Yellow','Mauve','Teal','Peach','Surface','BgSelect','Bold','Italic','DimStyle','Reset')) {
        $empty[$key] = ''
    }
    return $empty
}