Panels¶
Config-driven Rich panels with consistent styling for dashboards and status displays.
Quick Start¶
from kstlib.ui.panels import PanelManager
manager = PanelManager()
manager.print_panel(payload={"status": "running", "jobs": 3})
Presets¶
Built-in presets for common use cases:
manager.print_panel(kind="info", payload="System ready")
manager.print_panel(kind="success", payload="Task completed")
manager.print_panel(kind="warning", payload="Low disk space")
manager.print_panel(kind="error", payload="Connection failed")
manager.print_panel(kind="summary", payload={"total": 100, "processed": 95})
Configuration¶
ui:
panels:
defaults:
panel:
border_style: "bright_blue"
box: "ROUNDED"
padding: [1, 2]
content:
box: "SIMPLE"
show_header: false
key_style: "bold white"
value_style: null
sort_keys: false
presets:
summary:
panel:
border_style: "light_steel_blue1"
title: "Execution Summary"
icon: "..."
content:
sort_keys: true
key_style: "bold orchid2"
Custom Presets¶
custom_config = {
"presets": {
"alerts": {
"panel": {"title": "Alerts", "border_style": "red3"},
"content": {"use_markup": True},
}
}
}
manager = PanelManager(config=custom_config)
manager.print_panel(kind="alerts", payload="[bold red]Risk warning[/bold red]")
Async Support¶
import asyncio
async def main():
manager = PanelManager()
await manager.print_panel_async(kind="summary", payload={"orders": 128})
asyncio.run(main())
Embedding Tables¶
from kstlib.ui import TableBuilder, PanelManager
builder = TableBuilder()
manager = PanelManager()
table = builder.render_table(kind="inventory", data=[{"component": "cache", "status": "ok"}])
manager.print_panel(kind="summary", payload=table)
API Reference¶
-> Full autodoc: UI Panels