@cordis-tavern/ct-ui-tools

中文文档
0.1.0发布于 2026/11/01MITTypeScriptES Module零依赖

(toast / modal)

中文使用文档
文档目录9 节
  1. 服务面
  2. toast
  3. error 防误关
  4. 堆叠
  5. modal
  6. 视觉
  7. 包形态
  8. 开发
  9. License

@cordis-tavern/ct-ui-tools

浏览器 Cordis 服务 uiTool:非模态 toast(五态)+ 模态 modal(normal / risk)。 原生 DOM,零运行期依赖;颜色只消费 --ct-color-*,缺主题时用兜底色。

服务面

const loading = uiTool.toast('info', '正在保存…')
loading.done(true, '保存成功')

const ok = await uiTool.modal('risk', {
  title: '删除数据表?',
  message: '此操作将永久删除 users_backup。',
  detail: '删除后无法恢复。',
  confirmText: '永久删除',
  cancelText: '取消',
})

其他客户端插件经 cordis inject: ['uiTool'] 使用。

toast

uiTool.toast(type?, context)

type自动消失点击返回视觉
success2000ms可undefined--ct-color-success + ✓
error不可,带守卫undefined--ct-color-error + !
warning5000ms可undefined--ct-color-warning + !
info不不可ToastHandle--ct-color-info + 转圈
省略2000ms可undefined--ct-color-info,无图标

info 是 loading:

const handle = uiTool.toast('info', '正在保存…')
handle.done(true, '保存成功')   // 同一节点转 success,2s 后消失
handle.done(false, '保存失败')  // 同一节点转 error,常驻
  • done 只生效一次。
  • context 省略时保留 loading 原文案。
  • loading 期间点击无效。

error 防误关

按住 ≥ 500ms、指针位移 > 10px、或 toast 内有非折叠选区时,点击不会关闭; 普通短按才关闭。长文本会换行,error 文本可选中复制。

堆叠

顶部居中,同屏最多 4 条,超出先关最旧的一条。

modal

uiTool.modal(type, context?): Promise<boolean>

type说明
normal普通确认,蓝色语义
risk风险确认,红色语义 + detail 红框

context:

字段默认说明
title提示标题
message''正文
detail''额外说明;空串不渲染,risk 下为红色提示框,normal 下为中性提示框
confirmText确定确认按钮
cancelText取消取消按钮
closeOnOverlaytrue点遮罩是否关闭
  • 确认 true;取消 / Esc / 点遮罩 false。
  • 初始焦点:normal 在确认,risk 在取消;Tab 焦点陷阱,关闭后焦点回到触发元素。
  • 同一时刻只有一个 modal;开第二个时前一个以 false 收尾,旧 modal 不抢焦点、不解锁滚动。
  • 打开时锁 body 滚动。

视觉

  • z-index:toast 30000,modal 20000(高于 layout overlay 的 10000)。
  • 颜色只引用 token 且带兜底:success #47A76E、error #EA6B58、warning #C97A1A、info #5B8DEF、surface #1F1F1F、surface-2 #262626、border #333333、text #D6D6D6。
  • 类名前缀 ct-ui-toast / ct-ui-modal / ct-ui-tools;样式一次性注入 <style id="ct-ui-tools-style">。
  • prefers-reduced-motion 下只保留透明度过渡。

包形态

项值
Node 入口空 apply,只进发现链
浏览器入口exports["./client"] IIFE,provide('uiTool')
声明insert id: uiTool;ct.client.inject: ["@cordis-tavern/ct-client-cordis"]
依赖运行期零依赖;peer 与兄弟包一致

安装:

ct plugin add -p <环境名> @cordis-tavern/ct-ui-tools

开发

pnpm install
pnpm build
pnpm test
pnpm typecheck

pnpm test 读取 dist/,先 pnpm build。

License

MIT

版本与发布记录

@cordis-tavern/ct-ui-tools 共发布 4 个版本,首次发布于 2026/11/01;过去 12 个月发布了 4 个版本。

版本发布日期距今
0.1.0latest2026/11/012 天前
0.1.0-rc.1rc2026/11/012 天前
0.1.0-alpha.12026/11/012 天前
0.0.0-stage2026/11/012 天前

关于 @cordis-tavern/ct-ui-tools 的常见问题

@cordis-tavern/ct-ui-tools 是什么?

(toast / modal)

如何安装 @cordis-tavern/ct-ui-tools?

在项目目录运行 npm install @cordis-tavern/ct-ui-tools,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@cordis-tavern/cordis(^4.0.0-rc.11)、@cordis-tavern/cosmokit(^1.8.1)、@cordis-tavern/schemastery(*)、@cordis-tavern/plugin-loader(^1.0.0-rc.7)、@cordis-tavern/plugin-include(^1.1.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@cordis-tavern/ct-ui-tools 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@cordis-tavern/ct-ui-tools 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@cordis-tavern/ct-ui-tools 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@cordis-tavern/ct-ui-tools 可以商用吗?

@cordis-tavern/ct-ui-tools 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@cordis-tavern/ct-ui-tools 还在维护吗?

最新版本 0.1.0 发布于 2026/11/01(2 天前);至今共发布 4 个版本,其中过去 12 个月发布了 4 个;首次发布于 2026/11/01。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。