TUI

0.3.7

设计理念

深入理解 Tui UI 组件库的核心理念与设计原则

核心目标

Tui UI 致力于提供一套既 灵活高定制开发友好 的组件库,让开发者在满足复杂业务场景的同时,也能享受高度解耦和一致性体验。

我们的设计理念围绕以下五大核心原则:

自定义样式
清晰事件
方法职责分离
主题融合
最大化拓展

Props 与样式定制

每个组件都支持通过 style 和 class完全自定义样式。组件内部基于 --ts-xxx CSS 变量定义局部主题,并在渲染时自动将用户的样式与默认主题合并。

  • 支持局部 --ts-xxx 样式变量覆盖
  • 支持全局主题变量与局部主题融合
  • 明确样式优先级: props.style/class > 局部主题 > 全局主题 > 默认样式
  • 提供 color 、bg 、hoverBg 等

组件库尺寸设计规范

统一组件大小(Size)命名与样式配置,有助于增强组件一致性、降低开发维护成本、提升产品视觉统一性。

  • 组件库设计以 fontSize: 14px 为基础,使用 box-sizing: border-box
  • 组件 size 命名统一为: small / medium / large / (可选) x-large
  • 提供例如: closeable、disabled 等统一的prop规则来控制组件的工

事件与回调

所有事件均遵循 最小职责原则 ,只返回必要信息,避免耦合业务逻辑。

  • change 事件默认返回唯一标识(如 path 或 key)
  • 一维数据返回简单数据值,便于快速使用
  • 二维 / 树形数据仅返回标识,由业务方自行处理数据

方法设计

组件提供职责清晰的方法,确保功能单一、易于理解。

  • TsMenu.expandByPath() 仅控制子项展开/折叠,不进行选中或跳转
  • 方法命名直观明确,与组件行为高度一致
  • 所有方法均提供类型提示与文档说明

主题系统

Tui UI 内置 lightdark 两种基础主题,并支持 完全自定义主题局部主题

  • 使用 CSS 变量实现动态主题切换
  • 允许通过 themeContextprops 注入自定义主题
  • 局部主题可作用于任意组件区域
  • 支持响应式主题更新

插槽与拓展

所有组件尽可能提供插槽,使开发者在不修改内部逻辑的前提下,自由拓展内容。

  • 支持前缀 / 后缀插槽
  • 支持节点自定义渲染
  • 插槽参数返回完整数据与状态信息
  • 最大化定制能力,兼容多样化业务需求

设计规范建议

  • 组件命名统一以 Ts 前缀
  • Props 使用驼峰命名风格,与 Vue 生态一致
  • 样式类名统一使用 ts- 前缀,避免全局冲突
  • 建议所有样式变量写在 :root[data-ts-theme] 作用域下
  • 通过 [data-ts-theme='dark'] 设置暗色主题样式
  • 可调用 setTsTheme 切换主题

色彩系统

定义品牌主色、辅助色与中性色的使用规则,确保产品视觉的一致性与专业性。

主色
#2D5BFF
主色深
#1E40AF
主色浅
#DBEAFE
成功色
#10B981
错误色
#EF4444
警告色
#F59E0B
文本深色
#111827
文本浅色
#6B7280
背景色
#F3F4F6

排版规范

建立清晰的字体层级结构,确保信息传递的有效性和可读性,提升整体视觉体验。

H1 - 大标题
这是一级标题示例
H2 - 中标题
这是二级标题示例
H3 - 小标题
这是三级标题示例
Body - 正文
这是正文文本示例。正文是产品中最常用的文本样式,用于展示主要内容信息,确保良好的可读性。
Small - 辅助文字
这是辅助文字示例。辅助文字通常用于标注、说明或补充信息,字号较小。

组件规范

标准化的UI组件库,包含各类基础组件的样式定义、状态变化和交互规则。

按钮

定义了主要按钮、次要按钮、文本按钮等不同类型按钮的样式、尺寸和状态变化。

输入框

包含文本输入、密码输入、多行文本等输入组件的设计规范和交互逻辑。

列表

定义了基础列表、可交互列表、分组列表等不同形式列表的设计标准。

弹窗

包含确认弹窗、提示弹窗、抽屉式弹窗等不同类型弹窗的样式和行为规范。

选择器

定义了下拉选择器、日期选择器、时间选择器等组件的设计规范。

数据展示

包含表格、图表、进度条等数据可视化组件的设计标准和使用规范。