Prefab UI 是 Prefab 的 Python DSL 技能,用于构建交互式 React 界面。核心模式是用上下文管理器组合组件,把动作写成 Pydantic 模型,并整体包在 PrefabApp 中。PrefabApp 是最外层上下文管理器,子组件自动追加;容器组件(Column、Card 等)用 with 块;state= 接收初始客户端状态的普通字典;{{ key }} 模板在渲染时对状态求值;CallTool 等动作调用服务端工具,result_key 把结果写入状态。
主要能力:提供布局(Column、Row、Grid、Container、Dashboard)、排版、卡片、数据展示(DataTable、Metric、Badge、Progress)、表单控件、交互组件(Tabs、Dialog、Popover)、媒体与图表(BarChart、LineChart 等)以及控制流(ForEach、If、Elif、Else)。动作分客户端即时动作(SetState、ToggleState、ShowToast、OpenLink)与 MCP 往返动作(CallTool、SendMessage、UpdateContext),支持 on_success、on_error,并可用 | 串联。组件与 PrefabApp 支持 on_mount,用于初始化数据或轮询。字符串属性支持 {{ expression }} 表达式,含点路径、算术、比较、逻辑、三元与管道,特殊变量有 $event、$error、$index、$item。
使用方式:从 prefab_ui.app 导入 PrefabApp,从 prefab_ui.components 导入所需组件,图表从 prefab_ui.components.charts 导入,控制流从 prefab_ui.components.control_flow 导入,动作从 prefab_ui.actions 与 prefab_ui.actions.mcp 导入。不要直接从 prefab_ui 导入;Spinner 不存在,应使用 Loader。布局上 Grid 用于等宽或比例列,Row 用于行内元素;Card 有结构化与简单两种模式,不要混用。DataTable 使用 rows= 与 key=/header=,on_row_click 通过 $event 访问行字段。
限制:资料未提供安装命令、收费、价格、平台与效果信息,暂未提供。组件具体 API 细节(props、变体、示例)需用组件搜索工具并设 detail=True 查询。