examples/DEMO_COMPLETO_INTERACTIVO.ps1

# HermesConsoleUI v2.0.1 - Demo Interactivo Completo
# Muestra TODOS los componentes: visuales + interactivos

Import-Module "C:\test\HermesConsoleUI\HermesConsoleUI.psd1" -Force

# Clear-Host
Write-Host "`n`n"
Write-Host "===================================================================" -ForegroundColor Cyan
Write-Host " HermesConsoleUI v2.0.1 - DEMO INTERACTIVO COMPLETO" -ForegroundColor Cyan
Write-Host " Mostraron TODOS los componentes (40 funciones)" -ForegroundColor Cyan
Write-Host "===================================================================" -ForegroundColor Cyan
Write-Host ""
Write-Host "Este demo incluye componentes que requieren tu interaccion." -ForegroundColor Yellow
Write-Host "Presiona ENTER para continuar..." -ForegroundColor Gray
Read-Host

# ===== PARTE 1: COMPONENTES VISUALES (18) =====

# Clear-Host
Write-Host "`n=== PARTE 1: COMPONENTES VISUALES (18) ===" -ForegroundColor Green
Write-Host "Presiona ENTER para comenzar..." -ForegroundColor Gray
Read-Host

# 1. Write-ConsoleTitle
# Clear-Host
Write-Host "`n[1/34] Write-ConsoleTitle" -ForegroundColor Yellow
Write-ConsoleTitle -Title "DEMO COMPLETO HermesConsoleUI"
Read-Host "Presiona ENTER para continuar"

# 2. Write-ConsoleHeader
# Clear-Host
Write-Host "`n[2/34] Write-ConsoleHeader" -ForegroundColor Yellow
Write-ConsoleHeader -Text "Seccion Principal"
Read-Host "Presiona ENTER para continuar"

# 3. Write-ConsoleSubtitle
# Clear-Host
Write-Host "`n[3/34] Write-ConsoleSubtitle" -ForegroundColor Yellow
Write-ConsoleSubtitle -Text "Items Procesados" -Count 42
Read-Host "Presiona ENTER para continuar"

# 4. Write-ConsoleStatus
# Clear-Host
Write-Host "`n[4/34] Write-ConsoleStatus" -ForegroundColor Yellow
Write-ConsoleStatus -Message "Operacion exitosa" -Type Success
Write-ConsoleStatus -Message "Advertencia detectada" -Type Warning
Write-ConsoleStatus -Message "Error encontrado" -Type Error
Write-ConsoleStatus -Message "Procesando datos" -Type Info
Read-Host "Presiona ENTER para continuar"

# 5. Write-ConsoleError
# Clear-Host
Write-Host "`n[5/34] Write-ConsoleError" -ForegroundColor Yellow
Write-ConsoleError -Message "Fallo en la conexion"
Read-Host "Presiona ENTER para continuar"

# 6. Write-ConsoleInfo
# Clear-Host
Write-Host "`n[6/34] Write-ConsoleInfo" -ForegroundColor Yellow
Write-ConsoleInfo -Message "Cargando configuracion..."
Read-Host "Presiona ENTER para continuar"

# 7. Write-ConsoleMetadata
# Clear-Host
Write-Host "`n[7/34] Write-ConsoleMetadata" -ForegroundColor Yellow
$metadata = @{
    "Version" = "2.0.0"
    "Autor" = "David Prieto"
    "Licencia" = "MIT"
}
Write-ConsoleMetadata -Metadata $metadata -Title "Informacion del Modulo"
Read-Host "Presiona ENTER para continuar"

# 8. Write-ConsoleSummary
# Clear-Host
Write-Host "`n[8/34] Write-ConsoleSummary" -ForegroundColor Yellow
Write-ConsoleSummary -Title "Resumen de Operaciones" -Items @(
    "Total procesado: 100",
    "Exitosos: 95",
    "Fallidos: 5"
)
Read-Host "Presiona ENTER para continuar"

# 9. Write-ConsoleDiff
# Clear-Host
Write-Host "`n[9/34] Write-ConsoleDiff" -ForegroundColor Yellow
Write-ConsoleDiff -Label "Version" -OldValue "1.0.0" -NewValue "2.0.0"
Read-Host "Presiona ENTER para continuar"

# 10. Write-ConsoleChart
# Clear-Host
Write-Host "`n[10/34] Write-ConsoleChart" -ForegroundColor Yellow
Write-ConsoleChart -Label "Uso de CPU" -Value 75 -Max 100 -Color Green
Write-ConsoleChart -Label "Uso de RAM" -Value 60 -Max 100 -Color Yellow
Read-Host "Presiona ENTER para continuar"

# 11. Write-ConsoleSparkline
# Clear-Host
Write-Host "`n[11/34] Write-ConsoleSparkline" -ForegroundColor Yellow
Write-Host "Tendencia (ultimas 24h): " -NoNewline
Write-ConsoleSparkline -Data @(45, 52, 48, 65, 70, 68, 55, 50, 47, 60, 75, 80) -Color Cyan
Read-Host "Presiona ENTER para continuar"

# 12. Write-ConsolePanel
# Clear-Host
Write-Host "`n[12/34] Write-ConsolePanel" -ForegroundColor Yellow
Write-ConsolePanel -Title "Panel de Informacion" -BorderStyle Rounded -Color Cyan -Content {
    Write-Host " Linea 1: Contenido del panel"
    Write-Host " Linea 2: Mas informacion"
    Write-Host " Linea 3: Datos adicionales"
}
Read-Host "Presiona ENTER para continuar"

# 13. Write-ConsoleBox
# Clear-Host
Write-Host "`n[13/34] Write-ConsoleBox" -ForegroundColor Yellow
Write-ConsoleBox -Message "Mensaje importante!" -Color Yellow
Read-Host "Presiona ENTER para continuar"

# 14. Write-ConsoleTree
# Clear-Host
Write-Host "`n[14/34] Write-ConsoleTree" -ForegroundColor Yellow
$tree = @{
    "Raiz" = @{
        "Carpeta1" = @("archivo1.txt", "archivo2.txt")
        "Carpeta2" = @("archivo3.txt")
    }
}
Write-ConsoleTree -TreeData $tree
Read-Host "Presiona ENTER para continuar"

# 15. Show-ConsoleList
# Clear-Host
Write-Host "`n[15/34] Show-ConsoleList" -ForegroundColor Yellow
Show-ConsoleList -Items @("Item 1", "Item 2", "Item 3") -Numbered -Color Green
Read-Host "Presiona ENTER para continuar"

# 16. Write-ConsoleSeparator
# Clear-Host
Write-Host "`n[16/34] Write-ConsoleSeparator" -ForegroundColor Yellow
Write-Host "Seccion A" -ForegroundColor Cyan
Write-ConsoleSeparator -Length 60
Write-Host "Seccion B" -ForegroundColor Cyan
Read-Host "Presiona ENTER para continuar"

# 17. Write-ConsoleBreadcrumb
# Clear-Host
Write-Host "`n[17/34] Write-ConsoleBreadcrumb" -ForegroundColor Yellow
Write-ConsoleBreadcrumb -Path @("Home", "Configuracion", "Avanzado")
Read-Host "Presiona ENTER para continuar"

# 18. Write-ConsoleTable
# Clear-Host
Write-Host "`n[18/34] Write-ConsoleTable" -ForegroundColor Yellow
$data = @(
    @{ Nombre = "Item1"; Estado = "Activo"; Valor = "100" }
    @{ Nombre = "Item2"; Estado = "Inactivo"; Valor = "50" }
)
$columns = @(
    @{ Header = "Nombre"; Property = "Nombre"; Width = 15 }
    @{ Header = "Estado"; Property = "Estado"; Width = 12 }
    @{ Header = "Valor"; Property = "Valor"; Width = 10 }
)
Write-ConsoleTable -Data $data -Columns $columns
Read-Host "Presiona ENTER para continuar"

# ===== PARTE 2: COMPONENTES INTERACTIVOS (10) =====

# Clear-Host
Write-Host "`n`n=== PARTE 2: COMPONENTES INTERACTIVOS (10) ===" -ForegroundColor Green
Write-Host "Estos componentes requieren tu interaccion." -ForegroundColor Yellow
Write-Host "Presiona ENTER para comenzar..." -ForegroundColor Gray
Read-Host

# 19. Show-ConsoleMenu
# Clear-Host
Write-Host "`n[19/34] Show-ConsoleMenu" -ForegroundColor Yellow
$count = Show-ConsoleMenu -Title "Menu de Ejemplo" -Options @(
    "Opcion 1",
    "Opcion 2",
    "Opcion 3"
) -Footer "Selecciona una opcion"
Write-Host "`nMenu mostrado con $count opciones seleccionables" -ForegroundColor Green
Read-Host "Presiona ENTER para continuar"

# 20. Read-ConsoleChoice
# Clear-Host
Write-Host "`n[20/34] Read-ConsoleChoice" -ForegroundColor Yellow
Write-Host "Opciones disponibles:" -ForegroundColor Cyan
Write-Host " 1. Primera opcion"
Write-Host " 2. Segunda opcion"
Write-Host " 3. Tercera opcion"
$choice = Read-ConsoleChoice -MaxChoice 3 -Prompt "Selecciona una opcion (1-3)" -AllowZero $false
Write-Host "`nSeleccionaste la opcion: $choice" -ForegroundColor Green
Read-Host "Presiona ENTER para continuar"

# 21. Read-ConsoleMultiChoice
# Clear-Host
Write-Host "`n[21/34] Read-ConsoleMultiChoice" -ForegroundColor Yellow
$selected = Read-ConsoleMultiChoice -Options @("Opcion A", "Opcion B", "Opcion C") -Prompt "Selecciona opciones (separadas por coma, ej: 1,3)"
Write-Host "`nSeleccionaste: $($selected -join ', ')" -ForegroundColor Green
Read-Host "Presiona ENTER para continuar"

# 22. Read-ConsoleInput
# Clear-Host
Write-Host "`n[22/34] Read-ConsoleInput" -ForegroundColor Yellow
$input = Read-ConsoleInput -Prompt "Ingresa tu nombre"
Write-Host "`nHola, $input!" -ForegroundColor Green
Read-Host "Presiona ENTER para continuar"

# 23. Read-ConsoleConfirmation
# Clear-Host
Write-Host "`n[23/34] Read-ConsoleConfirmation" -ForegroundColor Yellow
$confirm = Read-ConsoleConfirmation -Message "Deseas continuar?"
if ($confirm) {
    Write-Host "`nConfirmado!" -ForegroundColor Green
} else {
    Write-Host "`nCancelado" -ForegroundColor Red
}
Read-Host "Presiona ENTER para continuar"

# 24. Read-ConsolePassword
# Clear-Host
Write-Host "`n[24/34] Read-ConsolePassword" -ForegroundColor Yellow
$password = Read-ConsolePassword -Prompt "Ingresa una contrasena (no se mostrara)"
Write-Host "`nContrasena capturada de forma segura" -ForegroundColor Green
Read-Host "Presiona ENTER para continuar"

# 25. Show-ConsoleNotification
# Clear-Host
Write-Host "`n[25/34] Show-ConsoleNotification" -ForegroundColor Yellow
Show-ConsoleNotification -Message "Operacion completada exitosamente" -Type "Success"
Read-Host "Presiona ENTER para continuar"

# 26. Invoke-ConsoleSpinner
# Clear-Host
Write-Host "`n[26/34] Invoke-ConsoleSpinner" -ForegroundColor Yellow
Write-Host "Simulando operacion con spinner..." -ForegroundColor Cyan
Invoke-ConsoleSpinner -Message "Procesando" -Action {
    Start-Sleep -Seconds 3
}
Read-Host "Presiona ENTER para continuar"

# 27. Write-ConsoleProgress
# Clear-Host
Write-Host "`n[27/34] Write-ConsoleProgress" -ForegroundColor Yellow
Write-Host "Simulando barra de progreso..." -ForegroundColor Cyan
for ($i = 0; $i -le 100; $i += 20) {
    Write-ConsoleProgress -Activity "Procesando archivos" -Percent $i
    Start-Sleep -Milliseconds 500
}
Write-Progress -Activity "Procesando archivos" -Completed
Write-Host "Progreso completado!" -ForegroundColor Green
Read-Host "Presiona ENTER para continuar"

# 28. Invoke-ConsoleMenu (menu completo con acciones)
# Clear-Host
Write-Host "`n[28/34] Invoke-ConsoleMenu (Menu Interactivo Completo)" -ForegroundColor Yellow
Write-Host "Este componente muestra un menu interactivo completo." -ForegroundColor Cyan
Write-Host "Selecciona '0' para salir del menu." -ForegroundColor Yellow
Read-Host "Presiona ENTER para abrir el menu"

$menuItems = @(
    @{ Label = "Ver informacion"; Action = { Write-Host "`nMostrando informacion..." -ForegroundColor Cyan } }
    @{ Label = "Ejecutar tarea"; Action = { Write-Host "`nEjecutando tarea..." -ForegroundColor Green } }
    @{ Label = "Configuracion"; Action = { Write-Host "`nAbriendo configuracion..." -ForegroundColor Yellow } }
)
Invoke-ConsoleMenu -Title "Menu de Ejemplo" -MenuItems $menuItems -Footer "Selecciona 0 para salir"

# ===== PARTE 3: FUNCIONES CORE (6) =====

# Clear-Host
Write-Host "`n`n=== PARTE 3: FUNCIONES CORE (6) ===" -ForegroundColor Green
Write-Host "Estas son funciones internas del framework." -ForegroundColor Yellow
Read-Host "Presiona ENTER para ver"

# 29-34. Core Functions
# Clear-Host
Write-Host "`n[29-34] Funciones Core" -ForegroundColor Yellow
Write-Host "`nEstas funciones gestionan la configuracion interna:" -ForegroundColor Cyan
Write-Host " 29. Initialize-UIConfig - Inicializa configuracion"
Write-Host " 30. Get-UIConfig - Obtiene configuracion actual"
Write-Host " 31. Get-UIColor - Obtiene color del tema"
Write-Host " 32. Get-UIIcon - Obtiene icono del tema"
Write-Host " 33. Set-ConsoleTheme - Cambia tema activo"
Write-Host " 34. Get-ConsoleTheme - Obtiene tema actual"
Write-Host "`nTema actual: $(Get-ConsoleTheme)" -ForegroundColor Green
Read-Host "Presiona ENTER para continuar a la nueva Seccion de Layout"

# ===== PARTE 4: SISTEMA DE LAYOUT (6) =====

# Clear-Host
Write-Host "`n`n=== PARTE 4: SISTEMA DE LAYOUT (6) ===" -ForegroundColor Green
Write-Host "Nueva arquitectura de rejillas y columnas paralelas." -ForegroundColor Yellow
Read-Host "Presiona ENTER para ver el motor de Layout en accion"

# 35-38. Layout Engine
Write-Host "`n[35-38] Motor de Layout y Grillas" -ForegroundColor Yellow
Write-Host "Renderizando componentes en paralelo (45% | 55%):" -ForegroundColor Cyan

$list_data = Show-ConsoleList -Items @("CPU: Online", "Disk: Healthy") -ReturnLines -Width 20 -Bullet ">"
$box_data  = Write-ConsoleBox -Message "SISTEMA SEGURO" -Color Green -ReturnLines -Width 25

$demoRow = New-ConsoleRow -Columns @(
    (New-ConsoleColumn -Content $list_data -WidthPercent 45),
    (New-ConsoleColumn -Content $box_data  -WidthPercent 55)
)
$demoLayout = New-ConsoleLayout -Rows @($demoRow)
Write-ConsoleLayout -Layout $demoLayout -TotalWidth 60

# 39-40. Helpers
Write-Host "`n[39-40] Helpers de Captura" -ForegroundColor Yellow
Write-Host " 39. Set-LayoutBuffer - Fusiona lineas de texto"
Write-Host " 40. Invoke-CapturedOutput - Captura salida de comandos"
Read-Host "Presiona ENTER para finalizar"

# ===== RESUMEN FINAL =====

# Clear-Host
Write-Host "`n`n"
Write-Host "===================================================================" -ForegroundColor Green
Write-Host " DEMO COMPLETO FINALIZADO" -ForegroundColor Green
Write-Host "===================================================================" -ForegroundColor Green
Write-Host ""
Write-Host "Componentes demostrados: 40/40 (100%) - HermesConsoleUI v2.0.1 🏛️" -ForegroundColor Cyan
Write-Host ""
Write-Host "Desglose:" -ForegroundColor Yellow
Write-Host " - Componentes visuales: 18" -ForegroundColor Cyan
Write-Host " - Componentes interactivos: 10" -ForegroundColor Cyan
Write-Host " - Funciones core: 6" -ForegroundColor Cyan
Write-Host " - Sistema de Layout: 6" -ForegroundColor Cyan
Write-Host ""
Write-Host "HermesConsoleUI v2.0.1 - Framework completo y funcional!" -ForegroundColor Green
Write-Host ""