Token

Token是由画布内自定义样式转化而来的一种以变量的形式存在的标识。

TokenCommonItem

type TokenItem = TokenCommonItem | TokenTextItem
type TokenCommonItem = {
  id: string
  type:
  | 'color'
  | 'padding'
  | 'border-radius'
  | 'border-width'
  | 'gap'
  name: TokenName
  value: TokenValue
  isMultiple?: boolean
}
type TokenName = string
type TokenValue = StyleSet[keyof StyleSet]

通用token

  • id: tokenid, 对应的是画布的自定义样式id
  • type: 自定义样式类型。
    • color: 颜色样式。
    • padding: 边距样式。
    • border-radius: 圆角样式。
    • border-width: 描边粗细样式。
    • gap: 间距样式。
  • name: token名称,优先取alias,没有则使用原本样式名。
  • value: token的具体值。
  • isMultiple: 是否是多段样式, 暂不支持多段样式的应用。

type TokenTextItem = {
  id: string
  type: 'text'
  name: TokenName
  textItems: Record<TokenTextSubItemType, TokenTextSubItem>
}

文字token。由于文字样式的内容映射到代码中上是多个文字属性,所以文字会以多种子token形式存在。

  • id: 文字样式的id
  • type: 类型为text
  • name: token名称,优先取alias,没有则使用原本样式名。
  • textItems: 文字样式子样式映射。

TokenTextSubItem

type TokenTextSubItemType =
| 'fontfamily'
| 'fontstyle'
| 'fontsize'
| 'lineheight'
| 'decoration'
| 'letterspacing'

type TokenTextSubItem = {
  type: TokenTextSubItemType
  name: TokenName
  value: TokenValue
}

文字的分类token

  • type:
    • fontfamily: 字族。
    • fontstyle: 字形。
    • fontsize: 字号。
    • lineheight: 行高。
    • decoration: 装饰符。
    • letterspacing: 字间距。
  • name: token名称,以其类型为前缀。
  • value: token值。

type StyleMap = {
  [styleId: string]: TokenItem
}