Skip to content

DSH Semi UI

@tnnevol/dsh-semi-ui 是插件工作空间内部的共享 UI 包。它封装 Semi Design 组件,并把组件颜色、边框、圆角、浮层和选中状态映射到 DSH 主题变量。

它不是 DSH 运行时插件,不需要加入 dsh.profile.bundles。当前工作空间版本为 0.1.1-rc.2,尚未单独发布到 npm。

为什么单独维护

Codex Auth 和 fnOS 插件都需要按钮、浮层、树和选择器。统一封装后,两边不再各自覆盖 Semi 样式,亮色、深色和后续组件调整只需维护一处。

组件

分类导出
操作DshButtonDshIconButton
浮层DshModalDshDropdownDshTooltip
选择DshCascaderDshTreeSelectDshTree
图标文件、文件夹、关闭、设置、更新日志等插件常用图标
主题installSemiDshTheme()SEMI_DSH_THEME_ATTRIBUTE

组件仍按需导入。共享包不会自动把整套 Semi UI 挂到 DSH 全局。

主题接入

插件客户端启动时安装主题桥接,并在卸载时清理:

ts
import { installSemiDshTheme } from '@tnnevol/dsh-semi-ui'

export function apply(ctx) {
  ctx.effect(() => installSemiDshTheme(), 'plugin: Semi DSH theme')
}

主题层使用 DSH 的语义变量,不自行判断浅色或深色。主要覆盖范围包括:

  • 背景、文字、边框和阴影;
  • 主按钮的黑白反色;
  • Dropdown、Tooltip、Modal 等浮层;
  • Cascader、Tree 和 TreeSelect 的选中、半选、悬停与滚动;
  • fnOS 文件选择和 Codex 全局模型选择器的局部样式。

开发

sh
pnpm --filter @tnnevol/dsh-semi-ui run check

两个插件的 prebuild 会先构建该包。新增共享组件时,应从 src/index.ts 明确导出,并同时检查 Codex Auth 和 fnOS 插件构建,避免工作空间链接仍指向旧产物。

链接

基于 VitePress 构建