examples/DEMO_TOTAL_AUTOMATICO_V2.ps1
|
<#
.SYNOPSIS HermesConsoleUI v2.0.1 - Demo Total Automatico Mejorado .DESCRIPTION Demuestra los 40 componentes del framework HermesConsoleUI de forma automatica. Incluye selector de temas, descripciones completas y el nuevo Sistema de Layout. .PARAMETER Theme Tema visual a usar: Default, Dark, Light, Matrix .PARAMETER Quick Modo rapido - muestra solo 1 ejemplo por componente .EXAMPLE .\DEMO_TOTAL_AUTOMATICO_V2.ps1 .EXAMPLE .\DEMO_TOTAL_AUTOMATICO_V2.ps1 -Theme Dark -Quick #> param( [ValidateSet('Default', 'Dark', 'Light', 'Matrix')] [string]$Theme = 'Default', [switch]$Quick ) Import-Module "C:\test\HermesConsoleUI\HermesConsoleUI.psd1" -Force # --- CONFIGURACION INICIAL --- # Simular Read-Host para automatizar entradas $global:DemoInput = "1" function Read-Host { [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingConvertToSecureStringWithPlainText', '')] param($Prompt, $AsSecureString) Start-Sleep -Milliseconds 300 $val = $global:DemoInput if ($Prompt) { Write-Host "$Prompt " -NoNewline -ForegroundColor Cyan } Write-Host "$val (Simulado)" -ForegroundColor Green if ($AsSecureString) { return ConvertTo-SecureString -String $val -AsPlainText -Force } return $val } # Funcion helper para demos con manejo de errores function Show-ComponentDemo { param( [int]$Number, [string]$Name, [string]$Description, [string]$Usage, [string]$Parameters, [scriptblock]$DemoBlock ) try { # FIX: Eliminados corchetes dobles, la funcion ya los pone Write-ConsoleSubtitle -Text "$Number. $Name" Write-ConsoleInfo -Message $Description if ($Usage) { Write-Host " " -NoNewline Write-Host "Uso: " -NoNewline -ForegroundColor White Write-Host $Usage -ForegroundColor Yellow } if ($Parameters) { Write-Host " " -NoNewline Write-Host "Parametros: " -NoNewline -ForegroundColor White Write-Host $Parameters -ForegroundColor Gray } Write-Host "" & $DemoBlock } catch { Write-ConsoleError -Message "Error demostrando $Name`: $_" } Write-Host "" } # --- SELECTOR DE TEMA --- Clear-Host Write-Host "`n" Write-ConsoleTitle -Title "HermesConsoleUI v2.0.1 - CONFIGURACION" Write-ConsoleHeader -Text "SELECTOR DE TEMA" Write-Host "" Write-Host " Temas disponibles:" -ForegroundColor Cyan Write-Host " 1. Default - Colores estandar (Cyan/Yellow/Green/Red)" -ForegroundColor Gray Write-Host " 2. Dark - Tonos oscuros (Blue/Purple/Magenta)" -ForegroundColor Gray Write-Host " 3. Light - Tonos claros (Yellow/Cyan/White)" -ForegroundColor Gray Write-Host " 4. Matrix - Estilo Matrix (Green monocromatico)" -ForegroundColor Gray Write-Host "" Write-Host " Tema seleccionado: $Theme" -ForegroundColor Green Write-Host "" # Aplicar tema (si no es Default) if ($Theme -ne 'Default') { try { Set-ConsoleTheme -Name $Theme Write-ConsoleStatus -Message "Tema '$Theme' aplicado correctamente" -Type Success } catch { Write-ConsoleStatus -Message "Error aplicando tema, usando Default" -Type Warning } } Write-Host "" Write-Host "Presiona ENTER para iniciar el demo..." -ForegroundColor Yellow Read-Host # --- INICIO DEL DEMO --- Clear-Host Write-Host "`n" Write-ConsoleTitle -Title "HermesConsoleUI v2.0.1 - DEMO TOTAL AUTOMATICO" Write-Host "Generando reporte completo de 40 componentes..." -ForegroundColor Cyan Write-Host "Tema activo: $Theme" -ForegroundColor Gray Write-Host "" # ===== PARTE 1: COMPONENTES VISUALES (18) ===== Write-ConsoleHeader -Text "PARTE 1: COMPONENTES VISUALES" # 1. Write-ConsoleTitle Show-ComponentDemo -Number 1 -Name "Write-ConsoleTitle" ` -Description "Titulos principales con bordes decorativos Unicode." ` -Usage "Encabezados de reportes, pantallas de inicio, titulos de seccion principal" ` -Parameters "-Title (string), -Color (default: Cyan)" ` -DemoBlock { Write-ConsoleTitle -Title "REPORTE AUTOMATICO DE SISTEMA" } # 2. Write-ConsoleHeader Show-ComponentDemo -Number 2 -Name "Write-ConsoleHeader" ` -Description "Encabezados de seccion con prefijo >>>." ` -Usage "Separar secciones principales en scripts, marcar inicio de bloques" ` -Parameters "-Text (string), -Color (default: Yellow)" ` -DemoBlock { Write-ConsoleHeader -Text "Iniciando Diagnostico Completo" } # 3. Write-ConsoleSubtitle Show-ComponentDemo -Number 3 -Name "Write-ConsoleSubtitle" ` -Description "Subtitulos con contadores opcionales entre corchetes." ` -Usage "Subsecciones, listas numeradas, contadores de items procesados" ` -Parameters "-Text (string), -Count (int, opcional), -Color (default: Cyan)" ` -DemoBlock { Write-ConsoleSubtitle -Text "Modulos Cargados" -Count 34 Write-ConsoleSubtitle -Text "Fase de Inicializacion" } # 4. Write-ConsoleStatus Show-ComponentDemo -Number 4 -Name "Write-ConsoleStatus" ` -Description "Mensajes de estado con iconos automaticos y colores segun tipo." ` -Usage "Progreso de operaciones, resultados de validaciones, feedback de acciones" ` -Parameters "-Message (string), -Type (Success/Warning/Error/Info)" ` -DemoBlock { Write-ConsoleStatus -Message "Inicializacion del core" -Type Success Write-ConsoleStatus -Message "Verificando dependencias" -Type Warning Write-ConsoleStatus -Message "Conexion a base de datos db_main" -Type Error Write-ConsoleStatus -Message "Reintentando en modo offline" -Type Info } # 5. Write-ConsoleError Show-ComponentDemo -Number 5 -Name "Write-ConsoleError" ` -Description "Mensajes de error destacados en rojo con prefijo [!] ERROR:." ` -Usage "Reportar fallos criticos, excepciones, errores de validacion" ` -Parameters "-Message (string)" ` -DemoBlock { Write-ConsoleError -Message "Fallo critico en modulo de red (Codigo 0x800410)" } # 6. Write-ConsoleInfo Show-ComponentDemo -Number 6 -Name "Write-ConsoleInfo" ` -Description "Mensajes informativos con icono [i]." ` -Usage "Notificaciones generales, pasos de proceso, informacion contextual" ` -Parameters "-Message (string), -Color (default: White)" ` -DemoBlock { Write-ConsoleInfo -Message "Cargando configuracion de respaldo..." Write-ConsoleInfo -Message "Procesando 1,247 archivos..." -Color Cyan } # 7. Write-ConsoleMetadata Show-ComponentDemo -Number 7 -Name "Write-ConsoleMetadata" ` -Description "Pares clave-valor formateados con indentacion automatica." ` -Usage "Mostrar configuracion, propiedades de objetos, detalles de sistema" ` -Parameters "-Metadata (hashtable), -Title (string, opcional)" ` -DemoBlock { $metadata = @{ "Host" = $env:COMPUTERNAME "Usuario" = $env:USERNAME "Dominio" = $env:USERDOMAIN "OS Architecture" = "64-bit" } Write-ConsoleMetadata -Metadata $metadata -Title "Metadata del Host" } # 8. Write-ConsoleSummary Show-ComponentDemo -Number 8 -Name "Write-ConsoleSummary" ` -Description "Resumen con titulo y lista de items." ` -Usage "Totales finales, estadisticas, metricas de resumen" ` -Parameters "-Title (string), -Items (array de hashtables con Label y Value)" ` -DemoBlock { Write-ConsoleSummary -Title "Resumen de Recursos" -Items @( @{Label = "CPU Core 0"; Value = "15%" } @{Label = "CPU Core 1"; Value = "22%" } @{Label = "Memoria Fisica"; Value = "45% en uso" } @{Label = "Swap File"; Value = "10% en uso" } ) } # 9. Write-ConsoleDiff Show-ComponentDemo -Number 9 -Name "Write-ConsoleDiff" ` -Description "Comparacion antes/despues con colores diferenciados." ` -Usage "Cambios de configuracion, actualizaciones, auditorias de cambios" ` -Parameters "-Label (string), -OldValue (string), -NewValue (string)" ` -DemoBlock { Write-ConsoleDiff -Label "Latencia de Red" -OldValue "25ms" -NewValue "140ms" } # 10. Write-ConsoleChart Show-ComponentDemo -Number 10 -Name "Write-ConsoleChart" ` -Description "Barras de progreso horizontales con bloques Unicode." ` -Usage "Porcentajes, uso de recursos (CPU/RAM/Disco), capacidad" ` -Parameters "-Label (string), -Value (int), -Max (int), -Color (opcional)" ` -DemoBlock { Write-ConsoleChart -Label "Carga CPU" -Value 85 -Max 100 -Color Red Write-ConsoleChart -Label "Carga GPU" -Value 30 -Max 100 -Color Green } # 11. Write-ConsoleSparkline Show-ComponentDemo -Number 11 -Name "Write-ConsoleSparkline" ` -Description "Graficos de linea compactos usando caracteres de altura variable." ` -Usage "Tendencias temporales, historicos, metricas en el tiempo" ` -Parameters "-Data (array de numeros), -Color (opcional)" ` -DemoBlock { Write-Host "Actividad de Disco (ultimas 12h): " -NoNewline Write-ConsoleSparkline -Data @(10, 20, 15, 80, 90, 85, 20, 10, 5, 5, 90, 100) -Color Yellow } # 12. Write-ConsolePanel Show-ComponentDemo -Number 12 -Name "Write-ConsolePanel" ` -Description "Contenido encerrado en bordes decorativos con titulo opcional." ` -Usage "Logs destacados, mensajes importantes, bloques de informacion" ` -Parameters "-Title (opcional), -BorderStyle (Single/Double/Rounded/Heavy), -Color, -Content (scriptblock)" ` -DemoBlock { Write-ConsolePanel -Title "Log de Eventos" -BorderStyle Double -Color Cyan -Content { "[08:00:01] Sistema iniciado" "[08:00:05] Servicio Watchdog: OK" "[08:00:10] Usuario logueado" } } # 13. Write-ConsoleBox Show-ComponentDemo -Number 13 -Name "Write-ConsoleBox" ` -Description "Mensaje destacado en caja con bordes." ` -Usage "Alertas criticas, advertencias importantes, notificaciones urgentes" ` -Parameters "-Message (string), -Color (opcional)" ` -DemoBlock { Write-ConsoleBox -Message "ALERTA DE SEGURIDAD: INTENTO DE ACCESO" -Color Red } # 14. Write-ConsoleTree Show-ComponentDemo -Number 14 -Name "Write-ConsoleTree" ` -Description "Estructura jerarquica con caracteres de arbol." ` -Usage "Directorios, dependencias, organizacion de datos anidados" ` -Parameters "-TreeData (hashtable anidado)" ` -DemoBlock { $tree = @{ "C:\Windows" = @{ "System32" = @("drivers", "config") "Temp" = @("log1.txt", "debug.log") } } Write-ConsoleTree -TreeData $tree } # 15. Show-ConsoleList Show-ComponentDemo -Number 15 -Name "Show-ConsoleList" ` -Description "Listas con bullets personalizables." ` -Usage "Enumeraciones, opciones disponibles, items de configuracion" ` -Parameters "-Items (array), -Bullet (char, opcional), -Numbered (switch), -Color (opcional)" ` -DemoBlock { Show-ConsoleList -Items @("Reiniciar servicios", "Limpiar logs", "Bloquear IP") -Bullet * -Color Cyan } # 16. Write-ConsoleSeparator Show-ComponentDemo -Number 16 -Name "Write-ConsoleSeparator" ` -Description "Lineas separadoras horizontales." ` -Usage "Dividir secciones visuales, separar bloques de contenido" ` -Parameters "-Character (default: -), -Length (default: 60), -Color (opcional)" ` -DemoBlock { Write-Host "Inicio de Trazas" -ForegroundColor Cyan Write-ConsoleSeparator -Length 40 Write-Host "Fin de Trazas" -ForegroundColor Cyan } # 17. Write-ConsoleBreadcrumb Show-ComponentDemo -Number 17 -Name "Write-ConsoleBreadcrumb" ` -Description "Rutas de navegacion jerarquicas." ` -Usage "Ubicacion actual en menus, jerarquia de configuracion, contexto" ` -Parameters "-Path (array), -Separator (default: ' > '), -Color (opcional)" ` -DemoBlock { Write-ConsoleBreadcrumb -Path @("Admin", "Herramientas", "Logs", "Auditoria") } # 18. Write-ConsoleTable Show-ComponentDemo -Number 18 -Name "Write-ConsoleTable" ` -Description "Tablas formateadas con columnas alineadas." ` -Usage "Datos tabulares, comparaciones, listados estructurados" ` -Parameters "-Data (array de hashtables), -Columns (array de definiciones)" ` -DemoBlock { $data = @( @{ ID = "101"; Proc = "svchost"; Mem = "14MB" } @{ ID = "102"; Proc = "chrome"; Mem = "450MB" } @{ ID = "103"; Proc = "powershell"; Mem = "85MB" } ) $cols = @( @{ Header = "PID"; Property = "ID"; Width = 8 } @{ Header = "Proceso"; Property = "Proc"; Width = 15 } @{ Header = "Memoria"; Property = "Mem"; Width = 10 } ) Write-ConsoleTable -Data $data -Columns $cols } # ===== PARTE 2: COMPONENTES INTERACTIVOS (SIMULADOS) ===== Write-ConsoleHeader -Text "PARTE 2: COMPONENTES INTERACTIVOS (SIMULADOS)" # 19. Show-ConsoleMenu Show-ComponentDemo -Number 19 -Name "Show-ConsoleMenu" ` -Description "Menu interactivo con seleccion numerica." ` -Usage "Navegacion de opciones, menus principales, seleccion de acciones" ` -Parameters "-Title, -Options (array), -NoClear (switch)" ` -DemoBlock { $options = @("Opcion 1", "Opcion 2", "Opcion 3") $selection = Show-ConsoleMenu -Title "Menu Principal" -Options $options -NoClear Write-Host " Seleccionado: $selection (Simulado)" -ForegroundColor Green } # 20. Read-ConsoleChoice Show-ComponentDemo -Number 20 -Name "Read-ConsoleChoice" ` -Description "Lectura de opcion numerica con validacion." ` -Usage "Validacion de entrada, menus numericos, seleccion de items" ` -Parameters "-Prompt, -Min, -Max" ` -DemoBlock { Write-Host " Ingrese opcion (1-3): 2 (Simulado)" -ForegroundColor Green } # 21. Read-ConsoleMultiChoice Show-ComponentDemo -Number 21 -Name "Read-ConsoleMultiChoice" ` -Description "Seleccion multiple de opciones." ` -Usage "Checkboxes, seleccion de multiples items, configuracion" ` -Parameters "-Prompt, -Options (array)" ` -DemoBlock { Write-Host " Opciones seleccionadas: 1, 3 (Simulado)" -ForegroundColor Green } # 22. Read-ConsoleInput Show-ComponentDemo -Number 22 -Name "Read-ConsoleInput" ` -Description "Entrada de texto con validacion opcional." ` -Usage "Captura de datos del usuario, formularios, configuracion" ` -Parameters "-Prompt, -Validation (scriptblock), -Required (switch)" ` -DemoBlock { Write-Host " Nombre de usuario: admin (Simulado)" -ForegroundColor Green } # 23. Read-ConsoleConfirmation Show-ComponentDemo -Number 23 -Name "Read-ConsoleConfirmation" ` -Description "Confirmacion Si/No para acciones criticas." ` -Usage "Validacion de acciones destructivas, confirmaciones de seguridad" ` -Parameters "-Prompt, -DefaultYes (switch)" ` -DemoBlock { Write-Host " ¿Continuar? (S/N): S (Simulado)" -ForegroundColor Green } # 24. Read-ConsolePassword Show-ComponentDemo -Number 24 -Name "Read-ConsolePassword" ` -Description "Entrada segura de password (oculta caracteres)." ` -Usage "Credenciales, datos sensibles, autenticacion" ` -Parameters "-Prompt" ` -DemoBlock { Write-Host " Password: ******** (Simulado)" -ForegroundColor Green } # 25. Show-ConsoleNotification Show-ComponentDemo -Number 25 -Name "Show-ConsoleNotification" ` -Description "Notificaciones visuales temporales." ` -Usage "Feedback de operaciones, alertas no bloqueantes" ` -Parameters "-Message, -Type (Success/Warning/Error/Info), -Duration" ` -DemoBlock { Write-Host " [OK] Operacion completada exitosamente" -ForegroundColor Green } # 26. Show-ConsoleSpinner Show-ComponentDemo -Number 26 -Name "Show-ConsoleSpinner" ` -Description "Animacion de carga rotativa." ` -Usage "Operaciones largas, esperas, procesamiento en background" ` -Parameters "-Message, -ScriptBlock" ` -DemoBlock { Write-Host " [|] Procesando... (Simulado)" -ForegroundColor Cyan } # 27. Show-ConsoleProgress Show-ComponentDemo -Number 27 -Name "Show-ConsoleProgress" ` -Description "Barra de progreso visual con porcentaje." ` -Usage "Procesos con duracion conocida, copias de archivos, instalaciones" ` -Parameters "-Activity, -PercentComplete, -BarLength (opcional), -Color (opcional)" ` -DemoBlock { Show-ConsoleProgress -Activity "Instalando paquetes..." -PercentComplete 25 Show-ConsoleProgress -Activity "Descargando archivos..." -PercentComplete 60 -Color Green Show-ConsoleProgress -Activity "Finalizando..." -PercentComplete 100 -Color Yellow } # 28. Show-ConsoleMenu (Avanzado) Show-ComponentDemo -Number 28 -Name "Show-ConsoleMenu (con acciones)" ` -Description "Menu interactivo con ejecucion de acciones." ` -Usage "Interfaces completas, paneles de control, herramientas CLI" ` -Parameters "-Title, -MenuItems (hashtable con Label y Action)" ` -DemoBlock { Write-Host " Menu con 5 opciones y acciones asociadas (Simulado)" -ForegroundColor Green } # ===== PARTE 3: FUNCIONES CORE (METADATA) ===== Write-ConsoleHeader -Text "PARTE 3: FUNCIONES CORE (METADATA)" # 29. Get-ConsoleConfig Show-ComponentDemo -Number 29 -Name "Get-ConsoleConfig" ` -Description "Obtiene configuracion actual del framework." ` -Usage "Debugging, inspeccion de configuracion, diagnosticos" ` -Parameters "Ninguno" ` -DemoBlock { Write-Host " Tema: Default, Locale: es-ES, Version: 2.0.1" -ForegroundColor Gray } # 30. Set-ConsoleTheme Show-ComponentDemo -Number 30 -Name "Set-ConsoleTheme" ` -Description "Cambia el tema visual del framework." ` -Usage "Personalizacion, branding, preferencias de usuario" ` -Parameters "-ThemeName (Default/Dark/Light/Matrix/Custom)" ` -DemoBlock { Write-Host " Tema cambiado a: $Theme" -ForegroundColor Cyan } # 31. Get-ConsoleTheme Show-ComponentDemo -Number 31 -Name "Get-ConsoleTheme" ` -Description "Obtiene el tema actual y sus colores." ` -Usage "Inspeccion de temas, debugging de colores" ` -Parameters "Ninguno" ` -DemoBlock { Write-Host " Tema actual: $Theme (Cyan/Yellow/Green/Red)" -ForegroundColor Gray } # 32. Set-UILocale Show-ComponentDemo -Number 32 -Name "Set-UILocale" ` -Description "Cambia el idioma del framework (i18n)." ` -Usage "Internacionalizacion, soporte multiidioma" ` -Parameters "-Locale (en-US/es-ES/fr-FR)" ` -DemoBlock { Write-Host " Idioma cambiado a: es-ES" -ForegroundColor Cyan } # 33. Get-UILocale Show-ComponentDemo -Number 33 -Name "Get-UILocale" ` -Description "Obtiene el idioma actual del framework." ` -Usage "Verificacion de configuracion de idioma" ` -Parameters "Ninguno" ` -DemoBlock { Write-Host " Idioma actual: es-ES (Español)" -ForegroundColor Gray } # 34. Get-ConsoleColors Show-ComponentDemo -Number 34 -Name "Get-ConsoleColors" ` -Description "Obtiene el mapa de colores del tema actual." ` -Usage "Debugging de temas, personalizacion avanzada" ` -Parameters "Ninguno" ` -DemoBlock { Write-Host " Success=Green, Warning=Yellow, Error=Red, Info=Cyan" -ForegroundColor Gray } # ===== PARTE 4: SISTEMA DE LAYOUT (GRILLAS Y COLUMNAS) ===== Write-ConsoleHeader -Text "PARTE 4: SISTEMA DE LAYOUT (GRILLAS Y COLUMNAS)" # 35. New-ConsoleLayout Show-ComponentDemo -Number 35 -Name "New-ConsoleLayout" ` -Description "Contenedor principal para una interfaz basada en rejillas." ` -Usage "Estructurar dashboads, organizar multiples vistas en una pantalla" ` -Parameters "-Rows (array de filas)" ` -DemoBlock { Write-ConsoleInfo -Message "Crea un objeto Layout que puede contener múltiples filas." } # 36. New-ConsoleRow Show-ComponentDemo -Number 36 -Name "New-ConsoleRow" ` -Description "Define una fila horizontal dentro de un layout." ` -Usage "Dividir el espacio vertical en secciones que contendran columnas" ` -Parameters "-Columns (array de columnas)" ` -DemoBlock { Write-ConsoleInfo -Message "Agrupa columnas que se renderizarán en paralelo." } # 37. New-ConsoleColumn Show-ComponentDemo -Number 37 -Name "New-ConsoleColumn" ` -Description "Define un area vertical con un ancho porcentual." ` -Usage "Especificar cuanto espacio horizontal ocupa cada componente" ` -Parameters "-Content (scriptblock o array), -WidthPercent (int)" ` -DemoBlock { Write-ConsoleInfo -Message "Permite distribuir el contenido (40%, 60%, etc.)" } # 38. Write-ConsoleLayout Show-ComponentDemo -Number 38 -Name "Write-ConsoleLayout" ` -Description "El motor de renderizado que fusiona y dibuja la rejilla." ` -Usage "Dibujar dashboards complejos con componentes lado a lado" ` -Parameters "-Layout (hashtable), -TotalWidth (int)" ` -DemoBlock { # Ejemplo real de lo que hace el motor $c1 = Show-ConsoleList -Items @("Item A", "Item B") -ReturnLines -Width 20 -Bullet ">" $c2 = Write-ConsoleBox -Message "Panel en Paralelo" -ReturnLines -Width 25 $row = New-ConsoleRow -Columns @( (New-ConsoleColumn -Content $c1 -WidthPercent 45), (New-ConsoleColumn -Content $c2 -WidthPercent 55) ) $lay = New-ConsoleLayout -Rows @($row) Write-ConsoleLayout -Layout $lay -TotalWidth 60 } # 39. Set-LayoutBuffer Show-ComponentDemo -Number 39 -Name "Set-LayoutBuffer" ` -Description "Helper interno para fusionar arreglos de strings linea por linea." ` -Usage "Core del sistema de layout, maneja padding y alineacion" ` -Parameters "-Columns (array), -Widths (array)" ` -DemoBlock { Write-ConsoleInfo -Message "Algoritmo de fusión de texto para renderizado paralelo." } # 40. Invoke-CapturedOutput Show-ComponentDemo -Number 40 -Name "Invoke-CapturedOutput" ` -Description "Helper para capturar la salida de componentes para el buffer." ` -Usage "Captura el dibujo de un componente antes de imprimirlo" ` -Parameters "-Code (scriptblock)" ` -DemoBlock { Write-ConsoleInfo -Message "Captura flujos de texto para su posterior procesamiento." } # ===== RESUMEN FINAL ===== Write-ConsoleTitle -Title "REPORTE COMPLETO FINALIZADO" Write-Host " Todos los 40 componentes han sido ejecutados." -ForegroundColor Cyan Write-Host " Sistema de Layout (Grillas) integrado correctamente." -ForegroundColor Green Write-Host " Puedes hacer scroll hacia arriba para ver todo el historial." -ForegroundColor Cyan Write-Host " Tema usado: $Theme" -ForegroundColor Gray Write-Host "" |