Skip to Content
APIansiq-widgets

ansiq-widgets

ansiq-widgets 包含:

  • BlockParagraphListTableTabs 这类低阶 primitives
  • 一些更高阶的 shell-oriented 组合件

它的定位不是“再造一个 runtime”,而是:

  • Element 提供 builder 风格构造
  • 把常见 TUI 视觉和交互模式收成可复用 widget
  • 把 shell/session 这类更高阶界面组合也收成可读 API

去哪里看“怎么用”

如果你想看的是:

  • 使用示例
  • 某个 UI 问题该选哪个 widget
  • Shell + SessionTranscript + ComposerBar 这类常见组合

请直接进入专门的 组件模块

精确接口以 rustdoc 为准,这里只负责说明它们在文档体系中的位置。

低阶 primitives

最常用的低阶部件包括:

  • 结构:BoxBlockPaneShell
  • 文本:TextParagraphRichTextStreamingText
  • 输入与集合:InputListTabsTable
  • 滚动:ScrollViewScrollbar
  • 可视化:GaugeLineGaugeSparklineBarChartChartCanvas

这些 widget 的职责是:

  • 把常见 props 收成 builder API
  • 把状态型组件接到 runtime continuity / routing 协议
  • view! 和 builder 写法都能落到同一棵 Element

更高阶组合件

ansiq-widgets 里还有一些明显更接近“界面模式”的组件:

  • StatusBar
  • BottomPane
  • ComposerBar
  • SessionHeader
  • SessionTranscript
  • TranscriptView

这些组件更适合:

  • 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