- Componentes de UI para terminal de código abierto para React que se pueden configurar con un solo comando, sin necesidad de ajustes adicionales
- Construido sobre Ink y OpenTUI, se integra de forma fluida con shadcn/ui y usa el mismo formato de registro y la misma CLI
- Detecta automáticamente el tema de terminal seleccionado y lo adapta
- Permite construir interfaces de terminal complejas mediante composición (Composable) con componentes simples y declarativos
- Ofrece 99 componentes en 11 categorías
- diseño, tipografía, entrada, selección, datos, retroalimentación, navegación, superposición, formularios, utilidades, IA
- También incluye muchos componentes poco comunes de ver en terminal
- Para agentes de IA: Thinking Block, Streaming Text, Tool Approval, Token Usage, Model Selector y otros componentes recientes que han aparecido en herramientas CLI agentic
- Renderizado gráfico: Image, que dibuja imágenes reales en la terminal; QR Code, que muestra códigos QR en la CLI; y Progress Circle, un indicador de progreso circular
- Superposiciones: Modal, Dialog, Drawer, Popover y Tooltip, que colocan capas sobre una cuadrícula de texto
- Especializados para herramientas de desarrollo: Git Status, Diff View, Directory Tree y Embedded Terminal, una terminal dentro de la terminal
- Widgets de entrada tipo GUI: Color Picker, Date Picker, File Picker y otros, recreados con interacción basada en teclado
- Se pueden ver ejemplos en funcionamiento en https://www.termcn.dev
- Licencia MIT
2 comentarios
Es cierto que aumenta la productividad, pero personalmente creo que, si uno fuera a decirles a los de antes que va a crear una TUI con React, dirían: “¡Oye! ¿Qué haces agregando overhead innecesario a la terminal?”
Me hace pensar en esa anécdota de von Neumann viendo a sus alumnos usar lenguaje ensamblador y preguntándoles por qué usaban algo raro en lugar de programar en lenguaje máquina.
Personalmente, creo que últimamente las herramientas TUI tienen tan buena usabilidad que, al compararlas con un IDE, más que sentirse como la diferencia entre lenguaje máquina ↔ ensamblador, quizá sea más bien una cuestión de gustos, como mouse ↔ trackpad jaja