Private/Write-EFMenuLine.ps1

function Write-EFMenuLine {
    [Diagnostics.CodeAnalysis.SuppressMessageAttribute(
        'PSAvoidUsingWriteHost',
        '',
        Justification = 'The opt-in EndpointForge menu intentionally writes presentation-only host output.'
    )]
    [CmdletBinding()]
    param(
        [AllowEmptyString()]
        [string]$Text = '',

        [ConsoleColor]$Color = [ConsoleColor]::Gray,

        [switch]$NoColor,

        [ValidateRange(20, 240)]
        [int]$Width = 80,

        [ValidateRange(0, 40)]
        [int]$Indent = 0
    )

    $disableColor = [bool]$NoColor -or -not [string]::IsNullOrEmpty($env:NO_COLOR)
    try {
        $disableColor = $disableColor -or [Console]::IsOutputRedirected
    }
    catch {
        Write-Verbose 'Console redirection state is unavailable; using the explicit color preference.'
    }

    $availableWidth = [math]::Max(10, $Width - $Indent)
    $prefix = ' ' * $Indent
    $logicalLines = @($Text -split "`r?`n", -1)
    foreach ($logicalLine in $logicalLines) {
        $remaining = [string]$logicalLine
        if ($remaining.Length -eq 0) {
            if ($disableColor) { Write-Host '' } else { Write-Host '' -ForegroundColor $Color }
            continue
        }

        while ($remaining.Length -gt $availableWidth) {
            $breakAt = $remaining.LastIndexOf(' ', $availableWidth)
            if ($breakAt -lt 1) {
                $breakAt = $availableWidth
            }
            $segment = $remaining.Substring(0, $breakAt).TrimEnd()
            if ($disableColor) { Write-Host ($prefix + $segment) } else { Write-Host ($prefix + $segment) -ForegroundColor $Color }
            $remaining = $remaining.Substring($breakAt).TrimStart()
        }

        if ($disableColor) { Write-Host ($prefix + $remaining) } else { Write-Host ($prefix + $remaining) -ForegroundColor $Color }
    }
}