Terminal rendering: colors, panels, tables, progress bars.
Project description
VP Terminal - Advanced CLI UI Library
vpterm-vp is a comprehensive terminal UI library for Python CLIs, inspired by modern interfaces like Claude Code.
✨ Features
- Component System: Modular UI components with layout management
- Interactive Menus: Dropdown menus with keyboard navigation
- Tabbed Interface: Multi-tab applications with easy switching
- Rich Layouts: FlexBox and Grid layouts for responsive design
- Widget Library: Pre-built components (TextBox, Alert, Badge, etc.)
- ANSI Styling: Full color and style support with auto-detection
- Progress Bars: Visual progress indicators and spinners
- Tables & Panels: Structured data display
- Window Management: Full application window framework
🚀 Quick Start
Install:
pip install vpterm-vp
This package now focuses on terminal primitives and rendering components.
For a real training logger demo with live updates and parallel workers, use
the sample in morphlog-vp.
📖 Basic Usage
from vpterm import Window, TextBox, Title, Alert
# Create a window
window = Window("My App")
window.set_header(Title("Welcome to VP Terminal"))
# Add content
window.set_content(TextBox("Hello, World!"))
window.set_footer(Alert("Ready!", "success"))
# Display
window.display()
🧩 Components
Core Components
Component: Base class for all UI elementsContainer: Groups multiple componentsFlexBox: Flexible layout containerGridLayout: Grid-based layout
UI Widgets
TextBox: Multi-line text displayTitle: Large, styled titleAlert: Status messages (success/warning/error/info)Badge: Small status indicatorsBox: Bordered content containerSpacer: Flexible spacingDivider: Visual separators
Interactive Elements
Menu: Dropdown menu with itemsMenuBar: Horizontal menu barTab: Individual tab contentTabBar: Tab navigationTabGroup: Multi-group tab management
Data Display
Table: Columnar data displayPanel: Bordered information panelsKeyValue: Key=value formatted output
Application Framework
Window: Main application windowStatusBar: Bottom status displayProgressBar: Visual progress indicators
🎨 Styling
from vpterm import Style
# Colors
print(Style.red("Error message"))
print(Style.green("Success!"))
print(Style.blue("Information"))
# Styles
print(Style.bold("Important text"))
print(Style.underline("Underlined"))
print(Style.invert("Highlighted"))
# Combined
print(Style.bold(Style.red("Critical error!")))
📐 Layouts
FlexBox Layout
from vpterm import FlexBox, Direction, TextBox
layout = FlexBox(direction=Direction.VERTICAL, gap=1)
layout.add_child(TextBox("First item"))
layout.add_child(TextBox("Second item"))
Grid Layout
from vpterm import GridLayout, Box
grid = GridLayout(columns=3, gap=2)
for i in range(9):
grid.add_child(Box(TextBox(f"Item {i+1}")))
🎯 Interactive Menus
from vpterm import MenuBar, Menu, Window
menu_bar = MenuBar()
file_menu = Menu("File")
file_menu.add_item("New", "Ctrl+N", lambda: print("New!"))
file_menu.add_item("Open", "Ctrl+O", lambda: print("Open!"))
menu_bar.add_menu(file_menu)
window = Window("My App")
window.set_menu_bar(menu_bar)
📊 Tables and Panels
from vpterm import Table, Panel
# Table
table = Table(["Name", "Age", "City"])
table.add_row(["Alice", "25", "NYC"])
table.add_row(["Bob", "30", "LA"])
# Panel
panel = Panel("User Info")
panel.add_kv("Name", "Alice")
panel.add_kv("Status", "Active")
🏗️ Architecture
vpterm/
├── core/ # Component system & layouts
├── ui/ # Widgets & interactive elements
├── rendering/ # Styling & display components
├── window/ # Application framework
├── terminal/ # Terminal interaction
└── data/ # Data formatting
🔧 Advanced Features
- Responsive Design: Automatic terminal size detection
- Keyboard Navigation: Full keyboard control for menus and tabs
- Live Updates: Progress bars and spinners for long operations
- Color Detection: Automatic ANSI color support detection
- Cross-platform: Windows, macOS, Linux support
📝 API Reference
For detailed API documentation, see the docstrings in each module.
🤝 Contributing
Contributions welcome! The library is designed to be modular and extensible.
📄 License
MIT License - see LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vpterm_vp-2.0.0.tar.gz.
File metadata
- Download URL: vpterm_vp-2.0.0.tar.gz
- Upload date:
- Size: 23.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
17b0688cffc418dd80b9c9b6dcfbab599b358c45d90b92613671a49ba1240ff7
|
|
| MD5 |
b90e7fb44ffec957ebd418bfcf81031c
|
|
| BLAKE2b-256 |
e197238f3b9c1c08988696f58e8e7daaed48f1a8e418920ef37b69da7dce8446
|
File details
Details for the file vpterm_vp-2.0.0-py3-none-any.whl.
File metadata
- Download URL: vpterm_vp-2.0.0-py3-none-any.whl
- Upload date:
- Size: 26.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f4d44de439728bd0d8a98c0b21fd1dcd4a91d18a8c1573fe4c59df3b95689040
|
|
| MD5 |
f1ab2f80d5634086fd21d8a8eeabf8ce
|
|
| BLAKE2b-256 |
8587af08d52909524b035d92e3497f3f04a6f5d6e336763e72626faae80728d3
|