文档

tui.builders 是一个用于设计终端界面的可视化拖拽编辑器。目前可生成面向 SuperLightTUI (SLT) 的生产级 Rust 代码,后续还将支持更多框架。

使用方式

  1. 打开编辑器。
  2. 选择模板或从空白项目开始。
  3. 从组件面板添加组件。
  4. 在检查器中调整属性、布局与样式。
  5. 导出生成的 Rust 代码。

前置条件: 安装 Rust 并确保 cargo 在命令行中可用。

编辑器指南

组件面板

将组件拖入树中,或点击以插入到当前选中位置。

画布

实时显示当前组件树的终端预览。

检查器

在同一处编辑组件属性、flex 布局参数与样式 token。

代码预览

编辑时实时查看生成的 Rust 代码更新。

导出

可下载为 Cargo 项目 zip、导出单个 .rs 文件,或复制到剪贴板。

组件目录

按类别分组展示所有可用组件。

布局 (8)

组件SLT 函数描述框架
Containerui.container().col(...) / ui.row(...)支持边框、间距和布局控制的弹性父容器。SLTInk
Spacerui.spacer()占用剩余空间,用于对齐周围内容。SLTInk
Separatorui.separator()绘制一条水平分隔线。SLTInk
Scrollableui.scrollable(&mut state)为高度超出区域的内容添加滚动行为。SLTInk
Screenui.screen(...)SLT
Gridui.grid(cols, ...)将子元素排列为响应式多列布局。SLTInk
Divider Textui.divider_text(label)渲染带标签的分节分隔线。SLTInk
Accordionui.accordion(title, &mut open, ...)可展开的折叠区域,用于逐步展示内容。SLTInk

文本 (4)

组件SLT 函数描述框架
Textui.text(value)渲染纯终端文本。SLTInk
Markdownui.markdown(value)使用 SLT 内联格式渲染 Markdown。SLTInk
Linkui.link(label, url)创建可点击的终端超链接(OSC 8)。SLTInk
Code Blockui.code_block(value)展示带语法高亮的代码片段。SLTInk

输入 (11)

组件SLT 函数描述框架
Text Inputui.text_input(&mut state)单行文本输入框。SLTInk
Textareaui.textarea(&mut state, rows)多行文本编辑区域。SLTInk
Buttonui.button(label)支持变体的可点击操作按钮。SLTInk
Sliderui.slider(label, &mut value, min..=max)在指定范围内调整数值。SLTInk
Confirmui.confirm(question, &mut state)二元确认交互控件。SLTInk
Checkboxui.checkbox(label, &mut checked)带勾选标记的布尔选项开关。SLTInk
Toggleui.toggle(label, &mut on)开关样式的布尔控件。SLTInk
Selectui.select(&mut state)下拉式单项选择器。SLTInk
Radioui.radio(&mut state)互斥选项组。SLTInk
Multi-Selectui.multi_select(&mut state)从列表中选择多个选项。SLTInk
Calendarui.calendar(...)SLT

数据 (8)

组件SLT 函数描述框架
Tableui.table(&mut state)支持选中的结构化行列表格。SLTInk
Listui.list(&mut state)适用于菜单式交互的垂直可选列表。SLTInk
Treeui.tree(&mut state)可展开的层级节点查看器。SLTInk
Dir Treeui.directory_tree(...)SLT
File Pickerui.file_picker(...)SLT
Virtual Listui.virtual_list(&mut state, visible, ...)适用于大数据集的虚拟化列表。SLT
Statui.stat(label, value)带可选趋势和颜色变体的紧凑指标卡片。SLTInk
Def. Listui.definition_list(&[(term, value)])对齐的键值详情列表。SLTInk

导航 (5)

组件SLT 函数描述框架
Tabsui.tabs(&mut state)跨内容面板的标签页导航。SLTInk
Cmd Paletteui.command_palette(&mut state)可搜索的命令启动浮层。SLT
Help Barui.help(&[(key, desc)])显示快捷键绑定的底部辅助栏。SLTInk
Breadcrumbui.breadcrumb(&[segments])路径式导航轨迹。SLTInk
Key Hintui.key_hint(key)内联键盘提示标签。SLTInk

反馈 (10)

组件SLT 函数描述框架
Progressui.progress(value)简洁的进度指示器。SLTInk
Progress Barui.progress_bar(value, width)宽度可控的进度条。SLTInk
Spinnerui.spinner(&state)动画加载指示器。SLTInk
Toastui.toast(&mut state)定时通知堆叠提示。SLTInk
Timerui.timer_display(...)SLT
Rich Logui.rich_log(...)SLT
Tooltipui.tooltip(...)SLTInk
Alertui.alert(message, level)内联严重性提示横幅。SLTInk
Badgeui.badge(label)紧凑的状态或元数据标签。SLTInk
Empty Stateui.empty_state(title, subtitle)空屏幕的占位内容。SLTInk

数据可视化 (7)

组件SLT 函数描述框架
Bar Chartui.bar_chart(&[(label, value)], h)分类对比柱状图。SLTInk
Sparklineui.sparkline(&values, width)小型内联趋势图。SLTInk
Chartui.chart(builder, w, h)支持多系列的可配置图表构建器。SLT
Candlestickui.candlestick(&candles, up, down)OHLC 市场风格的蜡烛图渲染。SLT
Heatmapui.heatmap(&grid, w, h, low, high)颜色强度矩阵可视化。SLT
Scatterui.scatter(&points, w, h)在两个轴上绘制点分布的散点图。SLT
Histogramui.histogram(&values, w, h)频率分布直方图。SLT

浮层 (2)

组件SLT 函数描述框架
Modalui.modal(|ui| { ... })带遮罩的弹出对话框层。SLTInk
Overlayui.overlay(|ui| { ... })无遮罩的浮动内容层。SLTInk

AI (3)

组件SLT 函数描述框架
Streaming Textui.streaming_text(&mut state)逐 token 的文本流输出。SLT
Stream MDui.streaming_markdown(&mut state)流式 Markdown 渲染器。SLT
Context Barui.context_bar(&items)用于 AI 工作流的上下文 token/来源标签条。SLTInk

表单 (1)

组件SLT 函数描述框架
Form Fieldui.form_field(&mut field)可组合的表单输入字段单元。SLTInk

媒体 (2)

组件SLT 函数描述框架
Sixel Imageui.sixel_image(...)SLT
Imageui.image(&img)基于 RGBA 数据的半块像素图像渲染。SLT

代码生成

tui.builders 会通过 generateRustCode() 将编辑器树转换为 Rust,并输出可直接运行的 main.rs,目标为 SLT v0.17.1,使用 slt::run_with() 与 RunConfig。

示例: container + text + button

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

fn main() -> std::io::Result<()> {
    let config = RunConfig::default()
        .theme(Theme::dark())
        .mouse(true)
        .tick_rate(Duration::from_millis(16));

    slt::run_with(
        config,
        |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")]);
            });
        },
    )
}

运行代码

tui.builders 生成的所有代码都可以直接在 SuperLightTUI 上编译。以下是运行方法。

方法1:导出为 Cargo 项目 (.zip)

在编辑器工具栏点击 Export → Cargo Project。解压后运行:

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

方法2:导出为 .rs 文件

点击 Export → .rs File。手动创建 Cargo 项目:

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

方法3:复制到剪贴板

点击 Export → Copy。粘贴到已有 superlighttui 依赖的 Cargo 项目中。

# In your Cargo.toml:
[dependencies]
superlighttui = "0.17.1"
注意: 需要安装 Rust 和 Cargo。所有生成代码针对 SLT v0.17.1,并通过自动测试验证编译。运行中的 TUI 应用按 q 退出。

模板

tui.builders 提供 25 个模板,覆盖仪表盘、表单、导航流程和运维工具场景。

键盘快捷键

q在生成的 TUI 应用中退出。
Tab将焦点移动到下一个组件。
Enter选中或激活当前聚焦的控件。
Ctrl+C立即退出应用。

支持的框架

tui.builders 可为多个 TUI 框架生成代码。SuperLightTUI 已正式支持,Ink 以 Beta 形式提供。

已支持
SuperLightTUI (Rust) · v0.17.1

即时模式、zero-unsafe、flexbox 布局、50+ 组件、主题、动画、AI 原生组件

公测
Ink (TypeScript) · v6

由 Vadim Demedes 开发的基于 React 的终端 UI 框架。现已提供 37+ 组件的 Beta 版本。

计划中
Ratatui (Rust) · Textual (Python) · Bubbletea (Go)