ansiq-widgets
ansiq-widgets 包含:
Block、Paragraph、List、Table、Tabs这类低阶 primitives- 一些更高阶的 shell-oriented 组合件
它的定位不是“再造一个 runtime”,而是:
- 给
Element提供 builder 风格构造 - 把常见 TUI 视觉和交互模式收成可复用 widget
- 把 shell/session 这类更高阶界面组合也收成可读 API
去哪里看“怎么用”
如果你想看的是:
- 使用示例
- 某个 UI 问题该选哪个 widget
Shell + SessionTranscript + ComposerBar这类常见组合
请直接进入专门的 组件模块。
精确接口以 rustdoc 为准,这里只负责说明它们在文档体系中的位置。
低阶 primitives
最常用的低阶部件包括:
- 结构:
Box、Block、Pane、Shell - 文本:
Text、Paragraph、RichText、StreamingText - 输入与集合:
Input、List、Tabs、Table - 滚动:
ScrollView、Scrollbar - 可视化:
Gauge、LineGauge、Sparkline、BarChart、Chart、Canvas
这些 widget 的职责是:
- 把常见 props 收成 builder API
- 把状态型组件接到 runtime continuity / routing 协议
- 让
view!和 builder 写法都能落到同一棵Element树
更高阶组合件
ansiq-widgets 里还有一些明显更接近“界面模式”的组件:
StatusBarBottomPaneComposerBarSessionHeaderSessionTranscriptTranscriptView
这些组件更适合:
- session shell
- streaming 界面
- explorer / dashboard 类终端应用
它们不应该替代 app state 或 runtime,而是帮助你把常见终端界面收成稳定组合。
builder 和 view!
Ansiq 的 widget 有两种主要用法:
let list = List::new(items).highlight_symbol("> ");view! {
<List items={items} highlight_symbol={"> "} />
}两者最终都会编译到同一套 Element 模型。选择哪种主要取决于:
- 你是在写 Rust 组合逻辑
- 还是在写更声明式的视图树
什么时候该进 ansiq-widgets
适合放进这个 crate 的东西:
- 通用 widget builder
- 通用 shell/widget 组合
- 与 continuity / routing / render contract 有明确关系的组件
不适合直接放进这里的东西:
- 业务特定页面
- 只服务某个示例的局部拼装
- 需要依赖网络、系统采样、OpenAPI 解析之类能力的逻辑
这些更适合留在 examples/ 或单独 app crate 里。
Last updated on