跳到主要内容
menumenu tanreiexpand_morecontrasttranslate
tanreiexpand_more
开始使用WebReactSwiftUIJetpack ComposeFlutterReact Native预设你自己的设计系统与 AI 代理一起使用 Tanrei品牌设计令牌设计系统与定制Theme Studio颜色字体排印图标形状层级动效交互状态行为布局无障碍文字颜色令牌字阶令牌形状令牌层级令牌动效令牌状态令牌间距与度量令牌组件按钮主操作按钮分段按钮按钮组带菜单的按钮工具栏复制按钮复选框单选按钮开关纸片(Chip)菜单滑块滑块字段日历DateTimePicker字段组单选组复选框组下拉选择框下拉选择字段菜单栏文件上传文件选择器 进阶放置区文本输入框 进阶文本字段纸片字段字段组合框 进阶组合框字段数字输入框 进阶数字字段颜色输入框 进阶颜色字段一次性验证码输入框 进阶一次性验证码字段嵌入式文本输入框 进阶聊天输入栏卡片分隔线模态层 进阶对话框列表列表行底部面板侧边面板轮播代码块表格弹出框步骤折叠面板描述列表图示应用外壳页头树视图时间线图片预览调整手柄可调整大小的框滚动区域徽标进度指示器计量条数字滚动器加载指示器消息条(Snackbar)工具提示键盘快捷键标签(Tag)行内代码提示块(Callout)头像空状态标签组(Tag group)骨架屏文件项色块跑马灯文本标签页标签页视图应用栏导航栏导航抽屉搜索链接分页上一页/下一页链接步骤条面包屑目录链接卡片FAB 菜单状态Tanrei 是如何构建的参与贡献许可与致谢
首页项目参与贡献

参与贡献

Tanrei 为什么不接受外部贡献,如何报告 bug 或提问,以及规则写在哪里。

content_copy以 Markdown 格式查看

不接受外部贡献

仓库已在 github.com/chnotchy/tanrei 公开,好让任何人都能读到 Tanrei 是怎样做出来的。所有修改都由维护者进行:来自外部的拉取请求(Pull Request)会不经合并直接关闭,也不接受新组件或新令牌的提议。原因在于供应链的安全:Tanrei 是运行在别人产品里的代码,每一个来自外部的修改,都是一条让维护者没有写过的代码进入这些产品的通道;鉴于当前的安全形势,本项目不承担这种风险。报告 bug 或提问,请新建一个 issue。安全问题请按仓库中 SECURITY.md 的说明私下报告,切勿写在 issue 里。

规则写在哪里

仓库根目录的 AGENTS.md 是修改仓库的人(无论是人还是 AI)的权威指南。它很短,先读一遍可以节省时间。每个包和源码目录都可以再放一份嵌套的 AGENTS.md 来补充本地规则;以最近的那份为准,但任何一份都不得削弱根目录的规则。根目录的 CONTRIBUTING.md 是它的详细版本。

篇幅更长的资料放在仓库的 docs/ 目录下:架构概览,以及说明谁决定什么的治理规则。

一次修改的形态

每一次修改都遵循以下步骤,无论由谁来做。

  1. 从唯一可信来源开始。 对组件公开接口的修改从 specs/ 开始,对设计值的修改从 tokens/ 开始。平台代码随后跟进。
  2. 在本地运行检查。 依次运行 pnpm validate、pnpm generate 和 pnpm check。如果漂移检查失败,请重新生成;不要去编辑生成的文件。
  3. 如实反映各平台的状态。 如果某个平台没能完成,就让它的状态保持真实情况。状态矩阵由仓库生成,不得声称比实际存在的更多。
  4. 添加 changeset。 凡是用户看得到的修改都要添加,并使用 Conventional Commits(feat(web): …、fix(tokens): …、docs: …)。

任何修改都不得包含的内容

  • 在组件内部硬编码颜色、半径、字体排印、间距、动效或不透明度。
  • 为了让测试通过而更新快照基准图。
  • 放宽对比度或无障碍阈值。
  • 从其他设计系统抄来的文档文字。Tanrei 的所有文字都是原创的。

文档的修改

本站位于 apps/docs/。正文是手写的 MDX:英文是源文,每个页面都翻译成本站的其他语言(语言列表,以及译文如何记录自己译自哪个版本的源文,见 apps/docs/i18n/README.md)。凡是能由规格、令牌文件或状态矩阵提供的表格,都从这些数据渲染而来,绝不手工录入。本地规则见 apps/docs/AGENTS.md。