icen.ai 的设计系统。组件、图表和 AI 界面共用一套设计令牌——换肤不改代码,UI 可直接交给模型调用。无框架,零运行时依赖,MIT。
- 文档与实时演示:https://ui.icen.ai
- 安装:
bun add @icen.ai/ui(或npm i)
/* 全量一行(ui.css 已含 tokens + base + 全部组件) */
@import '@icen.ai/ui/ui.css';
/* 或按需:tokens 底座 + 单引组件 CSS
@import '@icen.ai/ui/tokens.css';
@import '@icen.ai/ui/components/btn.css'; */<html data-icen-preset="piano" data-icen-theme="dark">
<!-- 明暗是二态契约:暗色 = 写 data-icen-theme="dark";亮色 = 移除该属性(没有 "light" 值) -->import { initTheme, initTabs, toast, renderLine } from '@icen.ai/ui';
initTheme(); // 尽早调用,跟随系统偏好
initTabs(); // [data-icen-tabs] 契约自动生效
toast.success('已保存');
renderLine(el, { labels, series }); // 函数式组件:无 init,直接渲染纯静态页面走 <link rel="stylesheet" href="./node_modules/@icen.ai/ui/ui.css">;ES module 直引需经静态服务器(file:// 直开会被浏览器 CORS 拦截)。更多入坑答案见 docs/faq.md。
- 组件:无框架组件库(表单 / 浮层 / 导航 / 数据展示 / 反馈),纯 CSS 契约 + 按需行为 JS。类名
icen-*、钩子data-icen-*、变量--icen-*,产物全部进 cascade layers,与任何第三方 CSS 共存零冲突。 - 图表:一份 JSON 十三种图,悬停/点击/图例开关内建,不依赖图表库。
- AI 界面:对话 / 推理 / 工具调用 / 审批 / 输入台 / 用量审计;兼容 OpenAI / Anthropic / MCP / AI SDK 协议;UI 能力可注册成模型直接调用的工具。
- 知识库:覆盖 RAG 全链路的组件族(摄取 / 检索 / 问数 / 治理 / 权限),权限域 fail-closed。
- 主题:色彩预设 × 设计原语 × 明暗,全部挂在
<html>data 属性上;自建品牌只需在自家 CSS 写一块 token 面。 - React / Vue 官方薄封装:
@icen.ai/ui/react、/vue,只做生命周期接线与事件桥;兼容契约见 docs/frameworks.md。 - RTL 全面支持(逻辑属性 + 方向图标自动镜像)、i18n 文案注册表(中英双语,
setIcenLocale切换)、统一事件体系(onIcen一个入口)。
生产环境依赖一个 0.x 库之前该问的问题,直接给证据:
- 全部测试与纪律守卫挂在每个 PR 的 CI 上,本地
bun run verify同口径;覆盖率地板与体积预算以棘轮文件锁在 docs/contracts/。 - 稳定性分层:Core 走 1.0 冻结轨道,图表 / AI / KB 标 Beta 随 minor 演进;事实源
docs/contracts/tiers.json,组件页徽标同源。 - 公共契约机器快照:
docs/contracts/snapshot.json六个面(类名 / 属性 / 变量 / 事件 / 导出 / 类型签名),bun run contracts:diff做 tag 间对比;破坏性变更只进 minor 且 CHANGELOG 逐条公告(CI 强制联动)。 - SECURITY.md:支持矩阵与漏洞响应承诺;textContent-only 渲染、权限域 fail-closed、URL 协议守卫,逐条有测试或守卫背书。
- CONTRIBUTING.md:加组件的仪式与 PR 规范。
- docs/versioning.md:版本与稳定性政策(分层 / 0.x 纪律 / 弃用 / 主题预算 / 1.0 门槛 / 支持周期)。
- docs/roadmap.md:0.11 → 0.13 → 1.0 收敛线与外部验收门槛;docs/acceptance.md:AI/KB 验收矩阵;docs/dogfood.md:陌生人验收记录。
- 发布链:
git tag v<x.y.z>→ CI 全门 → OIDC trusted publishing 发 npm(provenance,无长期 token)→ 自动建 GitHub Release。
- 包引入(推荐):
bun add @icen.ai/ui。CSS 全量一行./ui.css,或按需./tokens.css+./components/<name>.css;行为走./kit/<slug>一行入口。 - vendor 复制:锁定版本或离线构建场景,把
dist/复制进自家仓库。 - 给 AI 代理:包内
AGENTS.md+dist/**/*.d.mts;站点 https://ui.icen.ai/llms.txt(索引)与/llms-full.txt(全文 + 类型面)。
bun install
bun run verify # tsc + 守卫 + 测试 + 构建 + 体积预算(CI 另跑覆盖率、包面检查与 e2e)产物:dist/(ui.css / tokens.css / base.css / components/ / behaviors/ + .d.mts / registry.json / CLI)。
设计 token 另导出 DTCG / Tokens Studio / Figma Variables 三格式(dist/tokens/);规范无法表示的值明示跳过,不猜不静默。
src/tokens/ # 设计令牌(单一事实源 themes.json,改动后 bun run colors)
src/base.css # 元素基线 + 交互基元 + a11y 工具类
src/components/ # 组件 CSS(每文件头注释 = DOM 契约)
src/behaviors/ # 行为模块(SSR 守卫 + 幂等 init + 返回销毁函数)
docs/ # 治理文档(versioning / contracts / testing / roadmap…)与 spec
site/ # 文档站(独立 Astro 应用)
scripts/ # 构建、守卫与契约工具