examples/00_DEMO_COMPLETO.ps1
|
<#
.SYNOPSIS PSConsoleUI - Demo Completo de Todos los Componentes .DESCRIPTION Demostración visual de los 29 componentes de PSConsoleUI con datos de prueba y explicaciones detalladas. #> # Importar módulo Import-Module "$PSScriptRoot\..\PSConsoleUI.psd1" -Force Clear-Host # ============================================================================ # DEMO: COMPONENTES DE TEXTO (11 componentes) # ============================================================================ Write-Host "`n`n" Write-Host "═══════════════════════════════════════════════════════════════════" -ForegroundColor Cyan Write-Host " PSConsoleUI v2.0.0 - DEMO COMPLETO DE COMPONENTES" -ForegroundColor Cyan Write-Host "═══════════════════════════════════════════════════════════════════" -ForegroundColor Cyan Write-Host "`nEsta demo muestra los 29 componentes disponibles con ejemplos visuales.`n" -ForegroundColor Gray Read-Host "Presiona ENTER para comenzar" Clear-Host # --- 1. Write-ConsoleTitle --- Write-Host "`n[1/29] Write-ConsoleTitle - Títulos centrados con bordes" -ForegroundColor Yellow Write-ConsoleTitle -Title "SISTEMA DE AUDITORÍA" -Width 80 Write-Host "Uso: Write-ConsoleTitle -Title 'Texto' -Width 80`n" -ForegroundColor DarkGray Start-Sleep -Seconds 2 # --- 2. Write-ConsoleHeader --- Write-Host "`n[2/29] Write-ConsoleHeader - Encabezados de sección" -ForegroundColor Yellow Write-ConsoleHeader -Text "Análisis de Seguridad" Write-Host "Uso: Write-ConsoleHeader -Text 'Sección'`n" -ForegroundColor DarkGray Start-Sleep -Seconds 2 # --- 3. Write-ConsoleSubtitle --- Write-Host "`n[3/29] Write-ConsoleSubtitle - Subtítulos con contadores" -ForegroundColor Yellow Write-ConsoleSubtitle -Text "Servicios Analizados" -Count 47 Write-Host "Uso: Write-ConsoleSubtitle -Text 'Subtítulo' -Count 47`n" -ForegroundColor DarkGray Start-Sleep -Seconds 2 # --- 4. Write-ConsoleStatus --- Write-Host "`n[4/29] Write-ConsoleStatus - Mensajes de estado con iconos" -ForegroundColor Yellow Write-ConsoleStatus -Message "Operación completada exitosamente" -Type "Success" Write-ConsoleStatus -Message "Advertencia: Configuración no óptima" -Type "Warning" Write-ConsoleStatus -Message "Error: Acceso denegado" -Type "Error" Write-ConsoleStatus -Message "Información: Procesando datos" -Type "Info" Write-Host "Uso: Write-ConsoleStatus -Message 'Texto' -Type Success|Warning|Error|Info`n" -ForegroundColor DarkGray Start-Sleep -Seconds 3 # --- 5. Write-ConsoleError --- Write-Host "`n[5/29] Write-ConsoleError - Mensajes de error destacados" -ForegroundColor Yellow Write-ConsoleError -Message "No se pudo conectar al servidor remoto" Write-Host "Uso: Write-ConsoleError -Message 'Error'`n" -ForegroundColor DarkGray Start-Sleep -Seconds 2 # --- 6. Write-ConsoleInfo --- Write-Host "`n[6/29] Write-ConsoleInfo - Mensajes informativos" -ForegroundColor Yellow Write-ConsoleInfo -Message "Escaneando 1,247 archivos en el sistema..." Write-Host "Uso: Write-ConsoleInfo -Message 'Info'`n" -ForegroundColor DarkGray Start-Sleep -Seconds 2 # --- 7. Write-ConsoleMetadata --- Write-Host "`n[7/29] Write-ConsoleMetadata - Pares clave-valor alineados" -ForegroundColor Yellow $metadata = @{ "Sistema Operativo" = "Windows 11 Pro" "PowerShell" = "7.4.1" "Última Actualización" = "2026-01-14" } Write-ConsoleMetadata -Metadata $metadata -Title "Información del Sistema" Write-Host "Uso: Write-ConsoleMetadata -Metadata `$hashtable -Title 'Título'`n" -ForegroundColor DarkGray Start-Sleep -Seconds 3 # --- 8. Write-ConsoleSummary --- Write-Host "`n[8/29] Write-ConsoleSummary - Resúmenes con listas" -ForegroundColor Yellow Write-ConsoleSummary -Title "Resumen de Análisis" -Items @( "Total de archivos: 1,247", "Archivos sospechosos: 3", "Tiempo de ejecución: 45 segundos" ) Write-Host "Uso: Write-ConsoleSummary -Title 'Título' -Items @('Item1', 'Item2')`n" -ForegroundColor DarkGray Start-Sleep -Seconds 3 # --- 9. Write-ConsoleDiff --- Write-Host "`n[9/29] Write-ConsoleDiff - Comparaciones antes/después" -ForegroundColor Yellow Write-ConsoleDiff -Label "Servicios vulnerables" -OldValue "12" -NewValue "0" Write-Host "Uso: Write-ConsoleDiff -Label 'Etiqueta' -OldValue 'Antes' -NewValue 'Después'`n" -ForegroundColor DarkGray Start-Sleep -Seconds 2 # --- 10. Write-ConsoleSeparator --- Write-Host "`n[10/29] Write-ConsoleSeparator - Líneas separadoras" -ForegroundColor Yellow Write-ConsoleSeparator -Width 60 -Char "─" Write-Host "Uso: Write-ConsoleSeparator -Width 60 -Char '─'`n" -ForegroundColor DarkGray Start-Sleep -Seconds 2 # --- 11. Write-ConsoleBreadcrumb --- Write-Host "`n[11/29] Write-ConsoleBreadcrumb - Rutas de navegación" -ForegroundColor Yellow Write-ConsoleBreadcrumb -Path @("Sistema", "Seguridad", "Firewall", "Reglas") Write-Host "Uso: Write-ConsoleBreadcrumb -Path @('Nivel1', 'Nivel2', 'Nivel3')`n" -ForegroundColor DarkGray Start-Sleep -Seconds 2 Read-Host "`nPresiona ENTER para ver componentes visuales" Clear-Host # ============================================================================ # DEMO: COMPONENTES VISUALES (7 componentes) # ============================================================================ Write-ConsoleHeader -Text "COMPONENTES VISUALES" # --- 12. Show-ConsoleList --- Write-Host "`n[12/29] Show-ConsoleList - Listas con bullets/números" -ForegroundColor Yellow Show-ConsoleList -Items @("Firewall activo", "Antivirus actualizado", "Cifrado habilitado") -Numbered Write-Host "Uso: Show-ConsoleList -Items @('Item1', 'Item2') -Numbered`n" -ForegroundColor DarkGray Start-Sleep -Seconds 3 # --- 13. Write-ConsoleTree --- Write-Host "`n[13/29] Write-ConsoleTree - Estructuras jerárquicas" -ForegroundColor Yellow $tree = @{ "Sistema" = @{ "Servicios" = @("Windows Update", "Firewall") "Procesos" = @("svchost.exe", "explorer.exe") } } Write-ConsoleTree -TreeData $tree Write-Host "Uso: Write-ConsoleTree -TreeData `$hashtable`n" -ForegroundColor DarkGray Start-Sleep -Seconds 3 # --- 14. Write-ConsoleChart --- Write-Host "`n[14/29] Write-ConsoleChart - Gráficos de barras horizontales" -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 Write-ConsoleChart -Label "Uso de Disco" -Value 90 -Max 100 -Color Red Write-Host "Uso: Write-ConsoleChart -Label 'Métrica' -Value 75 -Max 100`n" -ForegroundColor DarkGray Start-Sleep -Seconds 3 # --- 15. Write-ConsoleSparkline --- Write-Host "`n[15/29] Write-ConsoleSparkline - Mini-gráficos inline" -ForegroundColor Yellow Write-Host "Tendencia CPU (últimas 24h): " -NoNewline Write-ConsoleSparkline -Data @(45, 52, 48, 65, 70, 68, 55, 50, 47, 60, 75, 80) -Color Cyan Write-Host "Uso: Write-ConsoleSparkline -Data @(1,5,2,8,3,9)`n" -ForegroundColor DarkGray Start-Sleep -Seconds 3 # --- 16. Write-ConsolePanel --- Write-Host "`n[16/29] Write-ConsolePanel - Contenedores con bordes" -ForegroundColor Yellow Write-ConsolePanel -Title "Información del Sistema" -BorderStyle Rounded -Color Cyan -Content { Write-Host " CPU: Intel Core i7-9700K" Write-Host " RAM: 32GB DDR4" Write-Host " GPU: NVIDIA RTX 3080" } Write-Host "Uso: Write-ConsolePanel -Title 'Título' -Content { ... }`n" -ForegroundColor DarkGray Start-Sleep -Seconds 3 # --- 17. Write-ConsoleBox --- Write-Host "`n[17/29] Write-ConsoleBox - Cajas de mensaje simples" -ForegroundColor Yellow Write-ConsoleBox -Message "¡Atención! Sistema requiere reinicio" Write-Host "Uso: Write-ConsoleBox -Message 'Texto'`n" -ForegroundColor DarkGray Start-Sleep -Seconds 2 # --- 18. Write-ConsoleTable --- Write-Host "`n[18/29] Write-ConsoleTable - Tablas formateadas" -ForegroundColor Yellow $data = @( @{ Servicio = "Windows Update"; Estado = "Running"; Puerto = "443" } @{ Servicio = "Firewall"; Estado = "Running"; Puerto = "N/A" } @{ Servicio = "SSH"; Estado = "Stopped"; Puerto = "22" } ) $columns = @( @{ Header = "Servicio"; Property = "Servicio"; Width = 20 } @{ Header = "Estado"; Property = "Estado"; Width = 12 } @{ Header = "Puerto"; Property = "Puerto"; Width = 10 } ) Write-ConsoleTable -Data $data -Columns $columns Write-Host "Uso: Write-ConsoleTable -Data `$data -Columns `$columns`n" -ForegroundColor DarkGray Start-Sleep -Seconds 3 Read-Host "`nPresiona ENTER para ver componentes interactivos" Clear-Host # ============================================================================ # DEMO: COMPONENTES INTERACTIVOS (10 componentes) # ============================================================================ Write-ConsoleHeader -Text "COMPONENTES INTERACTIVOS" # --- 19. Show-ConsoleMenu --- Write-Host "`n[19/29] Show-ConsoleMenu - Menús visuales" -ForegroundColor Yellow $options = @("Opción 1", "Opción 2", "Opción 3") Show-ConsoleMenu -Title "Menú de Ejemplo" -Options $options Write-Host "`nUso: Show-ConsoleMenu -Title 'Menú' -Options @('Op1', 'Op2')`n" -ForegroundColor DarkGray Start-Sleep -Seconds 2 # --- 20. Read-ConsoleChoice --- Write-Host "`n[20/29] Read-ConsoleChoice - Selección de opciones" -ForegroundColor Yellow Write-Host "Ejemplo: `$choice = Read-ConsoleChoice -Prompt '¿Continuar?' -Choices @('Sí', 'No')" -ForegroundColor DarkGray Write-Host "(Demo no interactiva - requiere input del usuario)`n" -ForegroundColor Gray Start-Sleep -Seconds 2 # --- 21. Read-ConsoleMultiChoice --- Write-Host "`n[21/29] Read-ConsoleMultiChoice - Selección múltiple" -ForegroundColor Yellow Write-Host "Ejemplo: `$choices = Read-ConsoleMultiChoice -Prompt 'Selecciona módulos' -Choices @('A', 'B', 'C')" -ForegroundColor DarkGray Write-Host "(Demo no interactiva - requiere input del usuario)`n" -ForegroundColor Gray Start-Sleep -Seconds 2 # --- 22. Invoke-ConsoleMenu --- Write-Host "`n[22/29] Invoke-ConsoleMenu - Menús con acciones" -ForegroundColor Yellow Write-Host "Ejemplo: Invoke-ConsoleMenu -Title 'Acciones' -MenuItems `$items" -ForegroundColor DarkGray Write-Host "(Demo no interactiva - ejecuta acciones)`n" -ForegroundColor Gray Start-Sleep -Seconds 2 # --- 23. Invoke-ConsoleSpinner --- Write-Host "`n[23/29] Invoke-ConsoleSpinner - Indicador de progreso animado" -ForegroundColor Yellow Write-Host "Ejecutando operación con spinner..." -ForegroundColor Cyan $result = Invoke-ConsoleSpinner -Message "Procesando datos" -ScriptBlock { Start-Sleep -Seconds 3 return "Operación completada" } Write-Host "Resultado: $result" -ForegroundColor Green Write-Host "Uso: Invoke-ConsoleSpinner -Message 'Texto' -ScriptBlock { ... }`n" -ForegroundColor DarkGray Start-Sleep -Seconds 2 # --- 24. Write-ConsoleProgress --- Write-Host "`n[24/29] Write-ConsoleProgress - Barras de progreso" -ForegroundColor Yellow for ($i = 0; $i -le 100; $i += 20) { Write-ConsoleProgress -Activity "Descargando archivos" -Percent $i Start-Sleep -Milliseconds 500 } Write-Host "`nUso: Write-ConsoleProgress -Activity 'Tarea' -Percent 50`n" -ForegroundColor DarkGray Start-Sleep -Seconds 2 # --- 25. Read-ConsoleInput --- Write-Host "`n[25/29] Read-ConsoleInput - Input con valores por defecto" -ForegroundColor Yellow Write-Host "Ejemplo: `$name = Read-ConsoleInput -Prompt 'Nombre' -Default 'Usuario'" -ForegroundColor DarkGray Write-Host "(Demo no interactiva - requiere input del usuario)`n" -ForegroundColor Gray Start-Sleep -Seconds 2 # --- 26. Read-ConsoleConfirmation --- Write-Host "`n[26/29] Read-ConsoleConfirmation - Confirmaciones Sí/No" -ForegroundColor Yellow Write-Host "Ejemplo: `$confirm = Read-ConsoleConfirmation -Prompt '¿Eliminar archivo?'" -ForegroundColor DarkGray Write-Host "(Demo no interactiva - requiere input del usuario)`n" -ForegroundColor Gray Start-Sleep -Seconds 2 # --- 27. Read-ConsolePassword --- Write-Host "`n[27/29] Read-ConsolePassword - Input de contraseñas seguro" -ForegroundColor Yellow Write-Host "Ejemplo: `$pwd = Read-ConsolePassword -Prompt 'Contraseña'" -ForegroundColor DarkGray Write-Host "(Demo no interactiva - input enmascarado)`n" -ForegroundColor Gray Start-Sleep -Seconds 2 # --- 28. Show-ConsoleNotification --- Write-Host "`n[28/29] Show-ConsoleNotification - Notificaciones temporales" -ForegroundColor Yellow Show-ConsoleNotification -Message "Operación completada exitosamente" -Type Success -Duration 2 Show-ConsoleNotification -Message "Advertencia: Revisa la configuración" -Type Warning -Duration 2 Show-ConsoleNotification -Message "Error: No se pudo conectar" -Type Error -Duration 2 Write-Host "Uso: Show-ConsoleNotification -Message 'Texto' -Type Success -Duration 3`n" -ForegroundColor DarkGray Start-Sleep -Seconds 2 Read-Host "`nPresiona ENTER para ver funciones core" Clear-Host # ============================================================================ # DEMO: FUNCIONES CORE (1 componente visible) # ============================================================================ Write-ConsoleHeader -Text "FUNCIONES CORE Y TEMAS" # --- 29. Set-ConsoleTheme --- Write-Host "`n[29/29] Set-ConsoleTheme - Cambio de temas dinámico" -ForegroundColor Yellow Write-Host "`nTema actual: Default" -ForegroundColor Cyan Write-ConsoleStatus -Message "Mensaje con tema Default" -Type Success Write-Host "`nCambiando a tema Cyberpunk..." -ForegroundColor Cyan Set-ConsoleTheme -ThemeName "Cyberpunk" Write-ConsoleStatus -Message "Mensaje con tema Cyberpunk" -Type Success Write-Host "`nCambiando a tema Monochrome..." -ForegroundColor Cyan Set-ConsoleTheme -ThemeName "Monochrome" Write-ConsoleStatus -Message "Mensaje con tema Monochrome" -Type Success Write-Host "`nRestaurando tema Default..." -ForegroundColor Cyan Set-ConsoleTheme -ThemeName "Default" Write-Host "`nUso: Set-ConsoleTheme -ThemeName 'Default|Cyberpunk|Classic|Monochrome'`n" -ForegroundColor DarkGray Start-Sleep -Seconds 3 # ============================================================================ # RESUMEN FINAL # ============================================================================ Clear-Host Write-ConsoleTitle -Title "DEMO COMPLETADA" -Width 80 Write-Host "`n" Write-ConsolePanel -Title "Resumen de PSConsoleUI v2.0.0" -BorderStyle Double -Color Green -Content { Write-Host " ✓ 29 componentes demostrados" Write-Host " ✓ 11 componentes de texto" Write-Host " ✓ 7 componentes visuales" Write-Host " ✓ 10 componentes interactivos" Write-Host " ✓ 1 sistema de temas" Write-Host "" Write-Host " Framework: Zero dependencies" Write-Host " i18n: Soporte multiidioma (EN, ES, FR)" Write-Host " Temas: 4 predefinidos + custom" Write-Host " Licencia: MIT" } Write-Host "`n" Write-ConsoleSummary -Title "Próximos Pasos" -Items @( "1. Revisar ejemplos en carpeta examples/", "2. Leer documentación en docs/", "3. Integrar en tus proyectos", "4. Contribuir en GitHub (próximamente)" ) Write-Host "`n" Write-ConsoleStatus -Message "¡Gracias por probar PSConsoleUI!" -Type Success Write-Host "`n" |