Skip to content

设计令牌 (Design Tokens)

设计令牌是 SXO 设计系统的核心。它们定义了系统的视觉属性,如颜色、间距、排版等。

令牌结构

SXO 的令牌遵循嵌套结构,可以轻松通过路径引用。

typescript
export const defaultTokens = {
  color: {
    primary: {
      DEFAULT: '#3b82f6',
      foreground: '#ffffff',
    },
    // ...
  },
  spacing: {
    1: '4px',
    2: '8px',
    // ...
  },
  // ...
};

使用令牌

在 CSS 中使用

引擎会自动将令牌转换为 CSS 变量:

css
.my-element {
  color: var(--color-primary);
  padding: var(--spacing-4);
}

在适配器中使用

使用 useToken Hook 获取令牌值:

React

tsx
const primaryColor = useToken('color.primary.DEFAULT');

Vue

tsx
const primaryColor = useToken('color.primary.DEFAULT');

切换主题

SXO 支持动态切换主题。你只需要为 SxoProvider (React) 或 createSxo (Vue) 提供不同的令牌对象。

深色模式 (Dark Mode)

SXO 原生支持深色模式。你可以在令牌配置中添加 dark 字段来覆盖默认令牌:

typescript
export const myTheme = {
  ...defaultTokens,
  dark: {
    color: {
      primary: {
        DEFAULT: '#60a5fa', // 深色模式下的蓝色
      },
      secondary: {
        DEFAULT: '#1f2937',
      }
    }
  }
};

引擎会自动生成 .dark 类名下的变量覆盖。