Src/Private/Draw-AsciiBanner.ps1

function Draw-AsciiBanner {
    <#
    .SYNOPSIS
        Draws a decorative banner with text for console output.
    .DESCRIPTION
        Draws a simple banner with horizontal line separators above and below text.
        Uses Unicode characters for a clean appearance that works reliably across all
        languages, scripts, and terminal types.
    .PARAMETER Lines
        An array of strings to display in the banner. Each string will be displayed on its own line.
    .PARAMETER TextColor
        The color to use for the text content. Accepts standard PowerShell console colors.
    .PARAMETER SeparatorColor
        The color to use for the separator lines. Accepts standard PowerShell console colors.
    .PARAMETER SeparatorLength
        The length of the separator lines. Default is 60 characters.
    .EXAMPLE
        Draw-AsciiBanner -Lines @("Welcome", "AsBuiltReport") -TextColor 'Cyan' -SeparatorColor 'Cyan'
 
        Displays a cyan-colored banner with "Welcome" and "AsBuiltReport" on separate lines.
    .EXAMPLE
        Draw-AsciiBanner -Lines @("Configuration") -TextColor 'Green' -SeparatorColor 'Yellow'
 
        Displays a banner with green text and yellow separator lines.
    .NOTES
        This is a private function used internally by the AsBuiltReport.Core module.
        Uses a simple horizontal line format that works reliably with all character sets.
    #>

    param(
        [string[]]$Lines,
        [string]$TextColor,
        [string]$SeparatorColor,
        [int]$SeparatorLength = 60
    )

    # Use heavy horizontal line character for visual separation
    $separator = [char]0x2500  # ─
    $separatorLine = $separator.ToString() * $SeparatorLength

    # Draw top separator
    Write-Host $separatorLine -ForegroundColor $SeparatorColor

    # Draw each line of text with padding
    foreach ($line in $Lines) {
        Write-Host " $line" -ForegroundColor $TextColor
    }

    # Draw bottom separator
    Write-Host $separatorLine -ForegroundColor $SeparatorColor
}