UNPKG

@douyinfe/semi-ui

Version:

A modern, comprehensive, flexible design system and UI library. Connect DesignOps & DevOps. Quickly build beautiful React apps. Maintained by Douyin-fe team.

610 lines (512 loc) 30 kB
--- category: 生态与帮助 title: Tailwind 搭配使用 icon: doc-tailwind localeCode: zh-CN order: 13 brief: 更优雅地使用 TailwindCSS 与 Semi --- # 注意 <br/> 本页将提供 TailwindCSS (支持 v3 和 v4) 等原子类样式库与 Semi 共同使用时遇到的一些问题的最佳实践。 这些问题在其他组件库与 Tailwind 共同使用时候也会经常遇到,但 Semi 提供了官方解决方案,建议按照本文说明,正确配置项目。 <Notice title="注意"> Semi 不依赖任何第三方样式库,没有安装 Tailwind 一样可以运行,如果你没有使用 Tailwind 等原子类库,可忽略以下内容 </Notice> ### 1. 解决样式覆盖优先级问题 #### 问题表现 在组件中使用部分原子类时没有效果 或 组件库样式异常。 #### 原因分析 使用 Tailwind 时,Tailwind 通过 className 对 dom 进行样式修改,同样作用于 Semi 组件库。同时 Tailwind 默认开启了 [Preflight](https://tailwindcss.com/docs/preflight) 来重置浏览器默认样式。 此时根据你项目的配置和入口的 import,有两种可能: 1. Tailwind 比 Semi 的样式先引入,Semi 优先级更高 2. Semi 样式 比 Tailwind 先引入,Tailwind 优先级更高 如果是 1,则会出现 Tailwind 在添加某些原子类时,如果组件样式已经定义了某个 css 属性,原子类的优先级比 Semi 优先级低,此时原子类失效。 例如在 1 的前提下,对 Button 组件设置 padding,会出现失效的情况。 如果是 2,因为 Tailwind 优先级较高,其对浏览器默认样式覆盖的 Preflight 会同时覆盖掉 Semi 的样式。 例如在 2 的前提下,light 的 Button 的背景色会被覆盖为 transparent,导致样式表现异常。 #### 解决方案 无论 Tailwind 和 组件库哪一方优先级高,都会出现问题,因此解决方式在于正确处理 Tailwind 样式中 Preflight 和用户需要的原子类的优先级相对于组件库优先级的关系。 ** 1. 开启 Semi 插件 (>= 2.59.0) ** ```shell yarn add -D @douyinfe/semi-webpack-plugin ``` ** 2. 在项目中的配置文件中 ** - webpack 用户:在 webpack.config.js 引入 Semi webpack 插件并开启 cssLayer ```js const SemiPlugin = require('@douyinfe/semi-webpack-plugin').default; module.exports = { // ... plugins: [ new SemiPlugin({ cssLayer:true, /* ...options */ }) ] // ... }; ``` - rspack 用户:在 rspack.config.js 引入 Semi webpack 插件并开启 cssLayer ```js const {SemiRspackPlugin} = require('@douyinfe/semi-rspack-plugin'); module.exports = { // ... plugins: [ new SemiRspackPlugin({ cssLayer:true }) ] }; ``` 使用非 webpack rspack 构建的用户请参照原理自行对 semi 的 css 进行 layer 包裹 ** 3. 修改 Tailwind 入口配置** <Notice title="选择你的 Tailwind 版本"> Tailwind v3 和 v4 的配置方式不同,请根据你使用的版本选择对应的配置方式。 </Notice> **Tailwind v4 配置方式:** 1. 创建一个 CSS 文件(如 `semi-layer.css`),内容如下: ```css @layer theme, base, semi, utilities; ``` 2. 在项目的 JS 入口文件(如 `main.tsx`、`App.tsx` 或 `index.js`)的**最顶部**,在所有其他 import 语句之前,import 这个文件: ```js // main.tsx 或 index.js - 必须放在最顶部 import './semi-layer.css'; // 必须在最前面 import './tailwind.css'; // 包含 @import "tailwindcss"; 的文件 import { Button } from '@douyinfe/semi-ui'; // ... 其他 import ``` <Notice type="warning" title="重要"> `semi-layer.css` 必须在任何包含 `@import "tailwindcss";` 的 CSS 文件和任何 Semi 组件的 import 之前引入,否则 CSS Layer 顺序将不正确。建议将其放在入口文件的第一行。 </Notice> --- **Tailwind v3 配置方式:** Tailwind v3 入口的 CSS 通常是包含了下面三行的文件 ```css @tailwind base; @tailwind components; @tailwind utilities; ``` 将其修改为(直接复制) ```css @layer tailwind-base,semi,tailwind-components,tailwind-utils; @layer tailwind-base{ @tailwind base; } @layer tailwind-components{ @tailwind components; } @layer tailwind-utils { @tailwind utilities; } ``` 并在项目的 JS 入口文件(即 App.tsx 或 index.js)处**最上方** import 上面修改的文件。(通常一个 Tailwind 项目对于上面文件的 import 已经处理好,只要将该 import 语句提到所有 import 语句前即可) <Notice title="兼容低版本浏览器"> CSS Layer 要求浏览器版本高于 Chromium 99 <a target="_blank" href="https://caniuse.com/?search=CSS%20Cascade%20Layers">(兼容性表格)</a>,如果你的网站需要低版本浏览器访问,需要添加 CSS Layer 的 Polyfill,请参考此 Polyfill 的 <a target="_blank" href="https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-cascade-layers">PostCSS 插件文档</a> </Notice> #### 原理 通过 CSS Layer 特性,实现不同来源的样式的优先级设置。 开启插件后,所有的 Semi 样式都会被 `@layer {xxxx}` 包裹。另外,我们也手动设置了项目中的 Tailwind 的各种类型的样式的 Layer。 另外,我们配置了各种 Layer 的优先级顺序: ```css @layer tailwind-base,semi,tailwind-components,tailwind-utils; ``` 上述 CSS 的含义为,base(含 Preflight)优先级最低,Semi 次之,用户设置的原子类样式(padding-[xxx] 等)优先级最高,这样即可解决上面遇到的问题。 ### 2.解决在 Tailwind 原子类中使用 Semi Token 的问题 (可选) Tailwind 支持用户配置自己的 Token 来实现主题。同时 Semi 也提供了自己的主题方案与对应 Token 如果想在项目中直接使用 Semi Token,例如将一个 span 的文字颜色设置为 `--semi-color-text-0` 来实现亮暗色的颜色自动切换与主题保持一致,需要单独设置 css `color: var(--semi-color-text-0)`,很不方便。 Semi 提供了 Tailwind 的主题配置文件,用于将 Semi 的 Token 映射为原子类 Token,上述需求可以直接给 span 设置 `text-semi-color-text-0` 即可。 <Notice title="选择你的 Tailwind 版本"> Tailwind v3 和 v4 的主题配置方式不同,请根据你使用的版本选择对应的配置方式。 </Notice> **Tailwind v4 配置方式:** 在你的 Tailwind 入口 CSS 文件中(包含 `@import "tailwindcss";` 的文件),添加 `@theme` 配置: ```css @import "tailwindcss"; /** * Semi Design Token 与 Tailwind CSS v4 集成 * * 原理: * 1. @theme 中用 var(--semi-xxx) 占位,让 Tailwind 生成对应的工具类 * (@theme 中的 var() 不会在构建时解析,仅作为占位符) * 2. body 中重新定义这些变量,指向 Semi 的真实 Token * (用 body 而非 :root,确保在 Semi 注入 :root 变量之后生效) * * 使用示例: * bg-semi-color-primary -> 主色背景 * text-semi-color-text-0 -> 主要文字颜色 * rounded-semi-border-radius-medium -> 中等圆角 */ @theme { /* ========== 基础色 ========== */ --color-semi-color-white: var(--semi-color-white); --color-semi-color-black: var(--semi-color-black); /* ========== Primary 主色 ========== */ --color-semi-color-primary: var(--semi-color-primary); --color-semi-color-primary-hover: var(--semi-color-primary-hover); --color-semi-color-primary-active: var(--semi-color-primary-active); --color-semi-color-primary-disabled: var(--semi-color-primary-disabled); --color-semi-color-primary-light-default: var(--semi-color-primary-light-default); --color-semi-color-primary-light-hover: var(--semi-color-primary-light-hover); --color-semi-color-primary-light-active: var(--semi-color-primary-light-active); /* ========== Secondary 次要色 ========== */ --color-semi-color-secondary: var(--semi-color-secondary); --color-semi-color-secondary-hover: var(--semi-color-secondary-hover); --color-semi-color-secondary-active: var(--semi-color-secondary-active); --color-semi-color-secondary-disabled: var(--semi-color-secondary-disabled); --color-semi-color-secondary-light-default: var(--semi-color-secondary-light-default); --color-semi-color-secondary-light-hover: var(--semi-color-secondary-light-hover); --color-semi-color-secondary-light-active: var(--semi-color-secondary-light-active); /* ========== Tertiary 第三色 ========== */ --color-semi-color-tertiary: var(--semi-color-tertiary); --color-semi-color-tertiary-hover: var(--semi-color-tertiary-hover); --color-semi-color-tertiary-active: var(--semi-color-tertiary-active); --color-semi-color-tertiary-light-default: var(--semi-color-tertiary-light-default); --color-semi-color-tertiary-light-hover: var(--semi-color-tertiary-light-hover); --color-semi-color-tertiary-light-active: var(--semi-color-tertiary-light-active); /* ========== Default 默认色 ========== */ --color-semi-color-default: var(--semi-color-default); --color-semi-color-default-hover: var(--semi-color-default-hover); --color-semi-color-default-active: var(--semi-color-default-active); /* ========== Info 信息色 ========== */ --color-semi-color-info: var(--semi-color-info); --color-semi-color-info-hover: var(--semi-color-info-hover); --color-semi-color-info-active: var(--semi-color-info-active); --color-semi-color-info-disabled: var(--semi-color-info-disabled); --color-semi-color-info-light-default: var(--semi-color-info-light-default); --color-semi-color-info-light-hover: var(--semi-color-info-light-hover); --color-semi-color-info-light-active: var(--semi-color-info-light-active); /* ========== Success 成功色 ========== */ --color-semi-color-success: var(--semi-color-success); --color-semi-color-success-hover: var(--semi-color-success-hover); --color-semi-color-success-active: var(--semi-color-success-active); --color-semi-color-success-disabled: var(--semi-color-success-disabled); --color-semi-color-success-light-default: var(--semi-color-success-light-default); --color-semi-color-success-light-hover: var(--semi-color-success-light-hover); --color-semi-color-success-light-active: var(--semi-color-success-light-active); /* ========== Danger 危险色 ========== */ --color-semi-color-danger: var(--semi-color-danger); --color-semi-color-danger-hover: var(--semi-color-danger-hover); --color-semi-color-danger-active: var(--semi-color-danger-active); --color-semi-color-danger-light-default: var(--semi-color-danger-light-default); --color-semi-color-danger-light-hover: var(--semi-color-danger-light-hover); --color-semi-color-danger-light-active: var(--semi-color-danger-light-active); /* ========== Warning 警告色 ========== */ --color-semi-color-warning: var(--semi-color-warning); --color-semi-color-warning-hover: var(--semi-color-warning-hover); --color-semi-color-warning-active: var(--semi-color-warning-active); --color-semi-color-warning-light-default: var(--semi-color-warning-light-default); --color-semi-color-warning-light-hover: var(--semi-color-warning-light-hover); --color-semi-color-warning-light-active: var(--semi-color-warning-light-active); /* ========== 功能色 ========== */ --color-semi-color-focus-border: var(--semi-color-focus-border); --color-semi-color-disabled-text: var(--semi-color-disabled-text); --color-semi-color-disabled-border: var(--semi-color-disabled-border); --color-semi-color-disabled-bg: var(--semi-color-disabled-bg); --color-semi-color-disabled-fill: var(--semi-color-disabled-fill); --color-semi-color-shadow: var(--semi-color-shadow); /* ========== Link 链接色 ========== */ --color-semi-color-link: var(--semi-color-link); --color-semi-color-link-hover: var(--semi-color-link-hover); --color-semi-color-link-active: var(--semi-color-link-active); --color-semi-color-link-visited: var(--semi-color-link-visited); /* ========== Border 边框 ========== */ --color-semi-color-border: var(--semi-color-border); /* ========== Background 背景色 ========== */ --color-semi-color-nav-bg: var(--semi-color-nav-bg); --color-semi-color-overlay-bg: var(--semi-color-overlay-bg); --color-semi-color-bg-0: var(--semi-color-bg-0); --color-semi-color-bg-1: var(--semi-color-bg-1); --color-semi-color-bg-2: var(--semi-color-bg-2); --color-semi-color-bg-3: var(--semi-color-bg-3); --color-semi-color-bg-4: var(--semi-color-bg-4); /* ========== Fill 填充色 ========== */ --color-semi-color-fill-0: var(--semi-color-fill-0); --color-semi-color-fill-1: var(--semi-color-fill-1); --color-semi-color-fill-2: var(--semi-color-fill-2); /* ========== Text 文字色 ========== */ --color-semi-color-text-0: var(--semi-color-text-0); --color-semi-color-text-1: var(--semi-color-text-1); --color-semi-color-text-2: var(--semi-color-text-2); --color-semi-color-text-3: var(--semi-color-text-3); /* ========== Highlight 高亮色 ========== */ --color-semi-color-highlight-bg: var(--semi-color-highlight-bg); --color-semi-color-highlight: var(--semi-color-highlight); /* ========== Data 数据可视化色 ========== */ --color-semi-color-data-0: var(--semi-color-data-0); --color-semi-color-data-1: var(--semi-color-data-1); --color-semi-color-data-2: var(--semi-color-data-2); --color-semi-color-data-3: var(--semi-color-data-3); --color-semi-color-data-4: var(--semi-color-data-4); --color-semi-color-data-5: var(--semi-color-data-5); --color-semi-color-data-6: var(--semi-color-data-6); --color-semi-color-data-7: var(--semi-color-data-7); --color-semi-color-data-8: var(--semi-color-data-8); --color-semi-color-data-9: var(--semi-color-data-9); --color-semi-color-data-10: var(--semi-color-data-10); --color-semi-color-data-11: var(--semi-color-data-11); --color-semi-color-data-12: var(--semi-color-data-12); --color-semi-color-data-13: var(--semi-color-data-13); --color-semi-color-data-14: var(--semi-color-data-14); --color-semi-color-data-15: var(--semi-color-data-15); --color-semi-color-data-16: var(--semi-color-data-16); --color-semi-color-data-17: var(--semi-color-data-17); --color-semi-color-data-18: var(--semi-color-data-18); --color-semi-color-data-19: var(--semi-color-data-19); /* ========== Border Radius 圆角 ========== */ --radius-semi-border-radius-extra-small: var(--semi-border-radius-extra-small); --radius-semi-border-radius-small: var(--semi-border-radius-small); --radius-semi-border-radius-medium: var(--semi-border-radius-medium); --radius-semi-border-radius-large: var(--semi-border-radius-large); --radius-semi-border-radius-circle: var(--semi-border-radius-circle); --radius-semi-border-radius-full: var(--semi-border-radius-full); } /** * 运行时变量覆盖 * 用 body 选择器确保在 Semi 的 :root 变量注入后生效 */ body { /* 基础色 */ --color-semi-color-white: var(--semi-color-white); --color-semi-color-black: var(--semi-color-black); /* Primary */ --color-semi-color-primary: var(--semi-color-primary); --color-semi-color-primary-hover: var(--semi-color-primary-hover); --color-semi-color-primary-active: var(--semi-color-primary-active); --color-semi-color-primary-disabled: var(--semi-color-primary-disabled); --color-semi-color-primary-light-default: var(--semi-color-primary-light-default); --color-semi-color-primary-light-hover: var(--semi-color-primary-light-hover); --color-semi-color-primary-light-active: var(--semi-color-primary-light-active); /* Secondary */ --color-semi-color-secondary: var(--semi-color-secondary); --color-semi-color-secondary-hover: var(--semi-color-secondary-hover); --color-semi-color-secondary-active: var(--semi-color-secondary-active); --color-semi-color-secondary-disabled: var(--semi-color-secondary-disabled); --color-semi-color-secondary-light-default: var(--semi-color-secondary-light-default); --color-semi-color-secondary-light-hover: var(--semi-color-secondary-light-hover); --color-semi-color-secondary-light-active: var(--semi-color-secondary-light-active); /* Tertiary */ --color-semi-color-tertiary: var(--semi-color-tertiary); --color-semi-color-tertiary-hover: var(--semi-color-tertiary-hover); --color-semi-color-tertiary-active: var(--semi-color-tertiary-active); --color-semi-color-tertiary-light-default: var(--semi-color-tertiary-light-default); --color-semi-color-tertiary-light-hover: var(--semi-color-tertiary-light-hover); --color-semi-color-tertiary-light-active: var(--semi-color-tertiary-light-active); /* Default */ --color-semi-color-default: var(--semi-color-default); --color-semi-color-default-hover: var(--semi-color-default-hover); --color-semi-color-default-active: var(--semi-color-default-active); /* Info */ --color-semi-color-info: var(--semi-color-info); --color-semi-color-info-hover: var(--semi-color-info-hover); --color-semi-color-info-active: var(--semi-color-info-active); --color-semi-color-info-disabled: var(--semi-color-info-disabled); --color-semi-color-info-light-default: var(--semi-color-info-light-default); --color-semi-color-info-light-hover: var(--semi-color-info-light-hover); --color-semi-color-info-light-active: var(--semi-color-info-light-active); /* Success */ --color-semi-color-success: var(--semi-color-success); --color-semi-color-success-hover: var(--semi-color-success-hover); --color-semi-color-success-active: var(--semi-color-success-active); --color-semi-color-success-disabled: var(--semi-color-success-disabled); --color-semi-color-success-light-default: var(--semi-color-success-light-default); --color-semi-color-success-light-hover: var(--semi-color-success-light-hover); --color-semi-color-success-light-active: var(--semi-color-success-light-active); /* Danger */ --color-semi-color-danger: var(--semi-color-danger); --color-semi-color-danger-hover: var(--semi-color-danger-hover); --color-semi-color-danger-active: var(--semi-color-danger-active); --color-semi-color-danger-light-default: var(--semi-color-danger-light-default); --color-semi-color-danger-light-hover: var(--semi-color-danger-light-hover); --color-semi-color-danger-light-active: var(--semi-color-danger-light-active); /* Warning */ --color-semi-color-warning: var(--semi-color-warning); --color-semi-color-warning-hover: var(--semi-color-warning-hover); --color-semi-color-warning-active: var(--semi-color-warning-active); --color-semi-color-warning-light-default: var(--semi-color-warning-light-default); --color-semi-color-warning-light-hover: var(--semi-color-warning-light-hover); --color-semi-color-warning-light-active: var(--semi-color-warning-light-active); /* 功能色 */ --color-semi-color-focus-border: var(--semi-color-focus-border); --color-semi-color-disabled-text: var(--semi-color-disabled-text); --color-semi-color-disabled-border: var(--semi-color-disabled-border); --color-semi-color-disabled-bg: var(--semi-color-disabled-bg); --color-semi-color-disabled-fill: var(--semi-color-disabled-fill); --color-semi-color-shadow: var(--semi-color-shadow); /* Link */ --color-semi-color-link: var(--semi-color-link); --color-semi-color-link-hover: var(--semi-color-link-hover); --color-semi-color-link-active: var(--semi-color-link-active); --color-semi-color-link-visited: var(--semi-color-link-visited); /* Border */ --color-semi-color-border: var(--semi-color-border); /* Background */ --color-semi-color-nav-bg: var(--semi-color-nav-bg); --color-semi-color-overlay-bg: var(--semi-color-overlay-bg); --color-semi-color-bg-0: var(--semi-color-bg-0); --color-semi-color-bg-1: var(--semi-color-bg-1); --color-semi-color-bg-2: var(--semi-color-bg-2); --color-semi-color-bg-3: var(--semi-color-bg-3); --color-semi-color-bg-4: var(--semi-color-bg-4); /* Fill */ --color-semi-color-fill-0: var(--semi-color-fill-0); --color-semi-color-fill-1: var(--semi-color-fill-1); --color-semi-color-fill-2: var(--semi-color-fill-2); /* Text */ --color-semi-color-text-0: var(--semi-color-text-0); --color-semi-color-text-1: var(--semi-color-text-1); --color-semi-color-text-2: var(--semi-color-text-2); --color-semi-color-text-3: var(--semi-color-text-3); /* Highlight */ --color-semi-color-highlight-bg: var(--semi-color-highlight-bg); --color-semi-color-highlight: var(--semi-color-highlight); /* Data */ --color-semi-color-data-0: var(--semi-color-data-0); --color-semi-color-data-1: var(--semi-color-data-1); --color-semi-color-data-2: var(--semi-color-data-2); --color-semi-color-data-3: var(--semi-color-data-3); --color-semi-color-data-4: var(--semi-color-data-4); --color-semi-color-data-5: var(--semi-color-data-5); --color-semi-color-data-6: var(--semi-color-data-6); --color-semi-color-data-7: var(--semi-color-data-7); --color-semi-color-data-8: var(--semi-color-data-8); --color-semi-color-data-9: var(--semi-color-data-9); --color-semi-color-data-10: var(--semi-color-data-10); --color-semi-color-data-11: var(--semi-color-data-11); --color-semi-color-data-12: var(--semi-color-data-12); --color-semi-color-data-13: var(--semi-color-data-13); --color-semi-color-data-14: var(--semi-color-data-14); --color-semi-color-data-15: var(--semi-color-data-15); --color-semi-color-data-16: var(--semi-color-data-16); --color-semi-color-data-17: var(--semi-color-data-17); --color-semi-color-data-18: var(--semi-color-data-18); --color-semi-color-data-19: var(--semi-color-data-19); /* Border Radius */ --radius-semi-border-radius-extra-small: var(--semi-border-radius-extra-small); --radius-semi-border-radius-small: var(--semi-border-radius-small); --radius-semi-border-radius-medium: var(--semi-border-radius-medium); --radius-semi-border-radius-large: var(--semi-border-radius-large); --radius-semi-border-radius-circle: var(--semi-border-radius-circle); --radius-semi-border-radius-full: var(--semi-border-radius-full); } ``` 配置后即可使用如 `text-semi-color-text-0`、`bg-semi-color-primary`、`rounded-semi-border-radius-small` 等原子类。 --- **Tailwind v3 配置方式:** 在 Tailwind 配置中 (即 `tailwind.config.js`) 配置以下内容即可: ```js module.exports = { theme:{ colors:{ "semi-color-white": "var(--semi-color-white)", "semi-color-black": "var(--semi-color-black)", "semi-color-primary": "var(--semi-color-primary)", "semi-color-primary-hover": "var(--semi-color-primary-hover)", "semi-color-primary-active": "var(--semi-color-primary-active)", "semi-color-primary-disabled": "var(--semi-color-primary-disabled)", "semi-color-primary-light-default": "var(--semi-color-primary-light-default)", "semi-color-primary-light-hover": "var(--semi-color-primary-light-hover)", "semi-color-primary-light-active": "var(--semi-color-primary-light-active)", "semi-color-secondary": "var(--semi-color-secondary)", "semi-color-secondary-hover": "var(--semi-color-secondary-hover)", "semi-color-secondary-active": "var(--semi-color-secondary-active)", "semi-color-secondary-disabled": "var(--semi-color-secondary-disabled)", "semi-color-secondary-light-default": "var(--semi-color-secondary-light-default)", "semi-color-secondary-light-hover": "var(--semi-color-secondary-light-hover)", "semi-color-secondary-light-active": "var(--semi-color-secondary-light-active)", "semi-color-tertiary": "var(--semi-color-tertiary)", "semi-color-tertiary-hover": "var(--semi-color-tertiary-hover)", "semi-color-tertiary-active": "var(--semi-color-tertiary-active)", "semi-color-tertiary-light-default": "var(--semi-color-tertiary-light-default)", "semi-color-tertiary-light-hover": "var(--semi-color-tertiary-light-hover)", "semi-color-tertiary-light-active": "var(--semi-color-tertiary-light-active)", "semi-color-default": "var(--semi-color-default)", "semi-color-default-hover": "var(--semi-color-default-hover)", "semi-color-default-active": "var(--semi-color-default-active)", "semi-color-info": "var(--semi-color-info)", "semi-color-info-hover": "var(--semi-color-info-hover)", "semi-color-info-active": "var(--semi-color-info-active)", "semi-color-info-disabled": "var(--semi-color-info-disabled)", "semi-color-info-light-default": "var(--semi-color-info-light-default)", "semi-color-info-light-hover": "var(--semi-color-info-light-hover)", "semi-color-info-light-active": "var(--semi-color-info-light-active)", "semi-color-success": "var(--semi-color-success)", "semi-color-success-hover": "var(--semi-color-success-hover)", "semi-color-success-active": "var(--semi-color-success-active)", "semi-color-success-disabled": "var(--semi-color-success-disabled)", "semi-color-success-light-default": "var(--semi-color-success-light-default)", "semi-color-success-light-hover": "var(--semi-color-success-light-hover)", "semi-color-success-light-active": "var(--semi-color-success-light-active)", "semi-color-danger": "var(--semi-color-danger)", "semi-color-danger-hover": "var(--semi-color-danger-hover)", "semi-color-danger-active": "var(--semi-color-danger-active)", "semi-color-danger-light-default": "var(--semi-color-danger-light-default)", "semi-color-danger-light-hover": "var(--semi-color-danger-light-hover)", "semi-color-danger-light-active": "var(--semi-color-danger-light-active)", "semi-color-warning": "var(--semi-color-warning)", "semi-color-warning-hover": "var(--semi-color-warning-hover)", "semi-color-warning-active": "var(--semi-color-warning-active)", "semi-color-warning-light-default": "var(--semi-color-warning-light-default)", "semi-color-warning-light-hover": "var(--semi-color-warning-light-hover)", "semi-color-warning-light-active": "var(--semi-color-warning-light-active)", "semi-color-focus-border": "var(--semi-color-focus-border)", "semi-color-disabled-text": "var(--semi-color-disabled-text)", "semi-color-disabled-border": "var(--semi-color-disabled-border)", "semi-color-disabled-bg": "var(--semi-color-disabled-bg)", "semi-color-disabled-fill": "var(--semi-color-disabled-fill)", "semi-color-shadow": "var(--semi-color-shadow)", "semi-color-link": "var(--semi-color-link)", "semi-color-link-hover": "var(--semi-color-link-hover)", "semi-color-link-active": "var(--semi-color-link-active)", "semi-color-link-visited": "var(--semi-color-link-visited)", "semi-color-border": "var(--semi-color-border)", "semi-color-nav-bg": "var(--semi-color-nav-bg)", "semi-color-overlay-bg": "var(--semi-color-overlay-bg)", "semi-color-fill-0": "var(--semi-color-fill-0)", "semi-color-fill-1": "var(--semi-color-fill-1)", "semi-color-fill-2": "var(--semi-color-fill-2)", "semi-color-bg-0": "var(--semi-color-bg-0)", "semi-color-bg-1": "var(--semi-color-bg-1)", "semi-color-bg-2": "var(--semi-color-bg-2)", "semi-color-bg-3": "var(--semi-color-bg-3)", "semi-color-bg-4": "var(--semi-color-bg-4)", "semi-color-text-0": "var(--semi-color-text-0)", "semi-color-text-1": "var(--semi-color-text-1)", "semi-color-text-2": "var(--semi-color-text-2)", "semi-color-text-3": "var(--semi-color-text-3)", "semi-color-highlight-bg": "var(--semi-color-highlight-bg)", "semi-color-highlight": "var(--semi-color-highlight)", "semi-color-data-0": "var(--semi-color-data-0)", "semi-color-data-1": "var(--semi-color-data-1)", "semi-color-data-2": "var(--semi-color-data-2)", "semi-color-data-3": "var(--semi-color-data-3)", "semi-color-data-4": "var(--semi-color-data-4)", "semi-color-data-5": "var(--semi-color-data-5)", "semi-color-data-6": "var(--semi-color-data-6)", "semi-color-data-7": "var(--semi-color-data-7)", "semi-color-data-8": "var(--semi-color-data-8)", "semi-color-data-9": "var(--semi-color-data-9)", "semi-color-data-10": "var(--semi-color-data-10)", "semi-color-data-11": "var(--semi-color-data-11)", "semi-color-data-12": "var(--semi-color-data-12)", "semi-color-data-13": "var(--semi-color-data-13)", "semi-color-data-14": "var(--semi-color-data-14)", "semi-color-data-15": "var(--semi-color-data-15)", "semi-color-data-16": "var(--semi-color-data-16)", "semi-color-data-17": "var(--semi-color-data-17)", "semi-color-data-18": "var(--semi-color-data-18)", "semi-color-data-19": "var(--semi-color-data-19)" }, extend:{ borderRadius:{ "semi-border-radius-extra-small": "var(--semi-border-radius-extra-small)", "semi-border-radius-small": "var(--semi-border-radius-small)", "semi-border-radius-medium": "var(--semi-border-radius-medium)", "semi-border-radius-large": "var(--semi-border-radius-large)", "semi-border-radius-circle": "var(--semi-border-radius-circle)", "semi-border-radius-full": "var(--semi-border-radius-full)", } } } } ```