Dokumentation

tui.builders ist ein visueller Drag-and-Drop-Editor zum Gestalten von Terminal-Interfaces. Er generiert derzeit produktionsreifen Rust-Code für SuperLightTUI (SLT), weitere Framework-Unterstützung ist geplant.

Verwendung

  1. Öffne den Editor.
  2. Wähle ein Template oder starte mit einem leeren Projekt.
  3. Füge Widgets aus der Palette hinzu.
  4. Passe Props, Layout und Stil im Inspektor an.
  5. Exportiere den generierten Rust-Code.

Voraussetzungen: Installiere Rust und stelle sicher, dass cargo in deiner Shell verfügbar ist.

Editor-Anleitung

Palette

Ziehe Widgets in den Baum oder klicke, um sie an der aktuellen Auswahl einzufügen.

Canvas

Live-Terminal-Vorschau deines aktuellen Widget-Baums.

Inspektor

Bearbeite Widget-Props, Flex-Layout-Werte und Style-Tokens an einem Ort.

Code-Vorschau

Sieh dir die generierten Rust-Änderungen in Echtzeit an, während du bearbeitest.

Export

Als Cargo-Projekt (.zip) herunterladen, eine einzelne .rs-Datei exportieren oder Code in die Zwischenablage kopieren.

Widget-Katalog

Alle verfügbaren Widgets nach Kategorie gruppiert.

Layout (8)

WidgetSLT-FunktionBeschreibung
Containerui.container().col(...) / ui.row(...)Flexibler Eltern-Container mit Rahmen, Abstand und Layout-Steuerung.
Spacerui.spacer()Verbraucht den verbleibenden Platz, um umliegende Inhalte auszurichten.
Separatorui.separator()Zeichnet eine horizontale Trennlinie.
Scrollableui.scrollable(&mut state)Fügt Scroll-Verhalten für lange Inhaltsbereiche hinzu.
Screenui.screen(...)
Gridui.grid(cols, ...)Ordnet Kindelemente in einem responsiven Mehrspaltenlayout an.
Divider Textui.divider_text(label)Rendert einen beschrifteten Abschnittstrenner.
Accordionui.accordion(title, &mut open, ...)Aufklappbarer Bereich für schrittweise eingeblendete Inhalte.

Text (4)

WidgetSLT-FunktionBeschreibung
Textui.text(value)Rendert einfachen Terminal-Text.
Markdownui.markdown(value)Rendert Markdown mit SLT-Inline-Formatierung.
Linkui.link(label, url)Erstellt anklickbare Terminal-Hyperlinks (OSC 8).
Code Blockui.code_block(value)Zeigt syntaxformatierte Code-Ausschnitte.

Eingabe (11)

WidgetSLT-FunktionBeschreibung
Text Inputui.text_input(&mut state)Einzeiliges Texteingabefeld.
Textareaui.textarea(&mut state, rows)Mehrzeiliger Textbearbeitungsbereich.
Buttonui.button(label)Anklickbarer Aktionsauslöser mit Variantenunterstützung.
Sliderui.slider(label, &mut value, min..=max)Passt einen numerischen Wert innerhalb eines Bereichs an.
Confirmui.confirm(question, &mut state)Binäre Bestätigungsinteraktion.
Checkboxui.checkbox(label, &mut checked)Boolescher Optionsschalter mit Häkchen-UI.
Toggleui.toggle(label, &mut on)Boolesches Steuerelement im Schalter-Stil.
Selectui.select(&mut state)Einzelauswahl-Selektor im Dropdown-Stil.
Radioui.radio(&mut state)Sich gegenseitig ausschließende Optionsgruppe.
Multi-Selectui.multi_select(&mut state)Wählt mehrere Optionen aus einer Liste aus.
Calendarui.calendar(...)

Daten (6)

WidgetSLT-FunktionBeschreibung
Tableui.table(&mut state)Strukturierte Zeilen und Spalten mit Auswahlunterstützung.
Listui.list(&mut state)Vertikale auswählbare Liste für menüartige Abläufe.
Treeui.tree(&mut state)Hierarchischer Viewer für aufklappbare Knoten.
Virtual Listui.virtual_list(&mut state, visible, ...)Virtualisierte Liste für große Datensätze.
Statui.stat(label, value)Kompakte Metrikkarte mit optionalen Trend- und Farbvarianten.
Def. Listui.definition_list(&[(term, value)])Ausgerichtete Schlüssel/Wert-Detailliste.

Navigation (5)

WidgetSLT-FunktionBeschreibung
Tabsui.tabs(&mut state)Tab-Navigation zwischen Inhaltsbereichen.
Cmd Paletteui.command_palette(&mut state)Durchsuchbares Befehlsstarter-Overlay.
Help Barui.help(&[(key, desc)])Untere Hilfsleiste für Tastenbelegungen.
Breadcrumbui.breadcrumb(&[segments])Navigationspfad im Breadcrumb-Stil.
Key Hintui.key_hint(key)Inline-Tastaturhinweis-Chip.

Feedback (8)

WidgetSLT-FunktionBeschreibung
Progressui.progress(value)Minimaler Fortschrittsanzeiger.
Progress Barui.progress_bar(value, width)Fortschrittsbalken mit steuerbarer Breite.
Spinnerui.spinner(&state)Animierter Ladeindikator.
Toastui.toast(&mut state)Zeitgesteuerte Benachrichtigungsreihe.
Tooltipui.tooltip(...)
Alertui.alert(message, level)Inline-Hinweisbanner mit Schweregrad.
Badgeui.badge(label)Kompaktes Status- oder Metadaten-Label.
Empty Stateui.empty_state(title, subtitle)Platzhalterinhalt für leere Ansichten.

Datenvisualisierung (7)

WidgetSLT-FunktionBeschreibung
Bar Chartui.bar_chart(&[(label, value)], h)Vergleichende kategorische Balkenvisualisierung.
Sparklineui.sparkline(&values, width)Kleines Inline-Trenddiagramm.
Chartui.chart(builder, w, h)Konfigurierbarer Diagramm-Builder für mehrere Datenreihen.
Candlestickui.candlestick(&candles, up, down)OHLC-Marktdiagramm-Rendering.
Heatmapui.heatmap(&grid, w, h, low, high)Farbintensitäts-Matrix-Visualisierung.
Scatterui.scatter(&points, w, h)Stellt Punktverteilungen auf zwei Achsen dar.
Histogramui.histogram(&values, w, h)Häufigkeitsverteilungs-Buckets.

Overlay (2)

WidgetSLT-FunktionBeschreibung
Modalui.modal(|ui| { ... })Abgedunkelter Overlay-Dialog.
Overlayui.overlay(|ui| { ... })Schwebende Inhaltsebene ohne Abdunkelung.

KI (3)

WidgetSLT-FunktionBeschreibung
Streaming Textui.streaming_text(&mut state)Token-für-Token-Textstrom-Ausgabe.
Stream MDui.streaming_markdown(&mut state)Streaming-Markdown-Renderer.
Context Barui.context_bar(&items)Kontext-Token/Quell-Chips für KI-Workflows.

Formular (1)

WidgetSLT-FunktionBeschreibung
Form Fieldui.form_field(&mut field)Komponierbares Formulareingabefeld.

Medien (2)

WidgetSLT-FunktionBeschreibung
Sixel Imageui.sixel_image(...)
Imageui.image(&img)Halbblock-Bild-Rendering aus RGBA-Daten.

Code-Generierung

tui.builders wandelt deinen Editor-Baum über generateRustCode() in Rust um und erzeugt eine ausführfertige main.rs für SLT v0.12.x mit slt::run_with() und RunConfig.

Beispiel: Container + Text + Button

use slt::*;
use std::time::Duration;

fn main() -> std::io::Result<()> {
    slt::run_with(
        RunConfig {
            theme: Theme::dark(),
            mouse: true,
            tick_rate: Duration::from_millis(16),
            ..Default::default()
        },
        |ui: &mut Context| {
            if ui.key('q') { ui.quit(); }

            ui.bordered(Border::Rounded).pad(1).gap(1).col(|ui| {
                ui.text("Hello from tui.builders").bold().fg(Color::Cyan);
                if ui.button("Click me").clicked {
                    // handle click
                }
                ui.help(&[("q", "quit")]);
            });
        },
    )
}

Deinen Code ausführen

Der von tui.builders generierte Code kompiliert direkt gegen SuperLightTUI. So führst du ihn aus.

Option 1: Als Cargo-Projekt exportieren (.zip)

Klicke auf Export → Cargo Project in der Editor-Symbolleiste. Entpacke und führe aus:

unzip my-tui-app.zip
cd my-tui-app
cargo run

Option 2: Als .rs-Datei exportieren

Klicke auf Export → .rs File. Erstelle manuell ein Cargo-Projekt:

cargo new my-tui-app
cd my-tui-app
cargo add superlighttui
# Replace src/main.rs with your exported file
cargo run

Option 3: In Zwischenablage kopieren

Klicke auf Export → Copy. In ein bestehendes Cargo-Projekt mit superlighttui als Abhängigkeit einfügen.

# In your Cargo.toml:
[dependencies]
superlighttui = "0.12"
Hinweis: Rust und Cargo müssen installiert sein. Der gesamte generierte Code zielt auf SLT v0.12.x ab und wird durch automatisierte Tests auf Kompilierbarkeit geprüft. Drücke q, um die laufende TUI-App zu beenden.

Templates

tui.builders enthält 20 Templates für Dashboards, Formulare, Navigationsabläufe und Betriebswerkzeuge.

Tastaturkürzel

qBeenden in generierten TUI-Apps.
TabFokus zum nächsten Widget verschieben.
EnterFokussierte Steuerelemente auswählen oder aktivieren.
Ctrl+CApp sofort beenden.

Unterstützte Frameworks

tui.builders generiert derzeit Code für SuperLightTUI. Wir planen, auf weitere TUI-Ökosysteme zu erweitern.

Unterstützt
SuperLightTUI (Rust)

Immediate-Mode, kein unsafe-Code, Flexbox-Layout, 50+ Widgets, Theming, Animation, KI-native Widgets

Als Nächstes
Ink (TypeScript)

React-basiertes Terminal-UI-Framework von Vadim Demedes

Geplant
Ratatui (Rust) · Textual (Python) · Bubbletea (Go)