Типы токенов
Полная карта всех 38 типов токенов SXL Studio: во что каждый экспортируется в Figma, форма значения, JSON-примеры, дефолтные scopes и алиасы.
Overview
SXL Studio поддерживает 38 канонических типов токенов. Каждый тип объявляется через $type (DTCG- и легаси-алиасы нормализуются автоматически) и при экспорте становится переменной Figma, стилем Figma или остаётся внутренним (используется в Apply / Generate / Code, сам по себе не экспортируется).
| Цель экспорта | Кол-во | Во что превращается |
|---|---|---|
| Переменная Figma | 17 | Переменная в коллекции (COLOR / FLOAT / STRING / BOOLEAN) |
| Стиль Figma | 10 | Локальный стиль (Paint / Effect / Text / Grid) |
| Внутренние / редакт. | 11 | Логика плагина или рендер; напрямую не экспортируется |
Ключевая идея Выбирайте тип по тому, что хотите в Figma: переиспользуемую переменную (цвета, размеры, флаги), общий стиль (градиенты, тени, типографика, сетки) или внутренний контракт (border, анимация, composition, custom).
Цели экспорта
| Цель | Типы |
|---|---|
Переменная — COLOR | color |
Переменная — FLOAT | opacity, dimension, number, spacing, sizing, borderWidth, borderRadius, fontSize, lineHeight, letterSpacing, paragraphIndent, paragraphSpacing |
Переменная — STRING | fontFamily, fontWeight, text |
Переменная — BOOLEAN | boolean |
| Стиль — Paint | gradient, img, fill |
| Стиль — Effect | shadow, backdrop-blur, blur, glass, effects |
| Стиль — Text | typography |
| Стиль — Grid | grid |
| Внутренние / редакт. | border, strokeStyle, fontStyle, textCase, textDecoration, transition, duration, cubicBezier, template, composition, custom |
Типы токенов по группам
Это семь групп из меню Create token. Каждая строка показывает, во что тип экспортируется, и минимальный пример $value.
Styles
$type | Экспортируется как | Пример $value |
|---|---|---|
color | Переменная (COLOR) | "#635BFF" или { "r": 0.4, "g": 0.36, "b": 1 } |
gradient | Стиль Paint | "linear-gradient(90deg, #635BFF, #A78BFA)" |
img | Стиль Paint | "url(https://…/cover.png)" |
fill | Стиль Paint | [{ "type": "solid", "color": "#635BFF" }] |
opacity | Переменная (FLOAT) | 0.6 |
Dimension
$type | Экспортируется как | Пример $value |
|---|---|---|
dimension | Переменная (FLOAT) | "16px" |
number | Переменная (FLOAT) | 8 |
spacing | Переменная (FLOAT) | "16px" |
sizing | Переменная (FLOAT) | "240px" |
Borders
$type | Экспортируется как | Пример $value |
|---|---|---|
border | Внутренний | { "color": "#E7EAF1", "width": "1px", "style": "solid" } |
borderWidth | Переменная (FLOAT) | "1px" |
borderRadius | Переменная (FLOAT) | "8px" |
strokeStyle | Внутренний | { "dashPattern": [4, 4] } |
Effects
$type | Экспортируется как | Пример $value |
|---|---|---|
shadow | Стиль Effect | [{ "offsetX": 0, "offsetY": 2, "blur": 8, "color": "#00000033" }] |
backdrop-blur | Стиль Effect | "8px" |
blur | Стиль Effect | "4px" |
glass | Стиль Effect | { "blur": 12, "opacity": 0.6 } |
effects | Стиль Effect | [{ "type": "DROP_SHADOW", "x": 0, "y": 2, "blur": 8, "color": "#00000033" }] |
Typography
$type | Экспортируется как | Пример $value |
|---|---|---|
typography | Стиль Text | { "fontFamily": "Inter", "fontSize": "16px", "fontWeight": 500, "lineHeight": "24px" } |
fontFamily | Переменная (STRING) | "Inter" |
fontWeight | Переменная (STRING) | 500 |
fontStyle | Внутренний | "italic" |
fontSize | Переменная (FLOAT) | "16px" |
lineHeight | Переменная (FLOAT) | "24px" |
letterSpacing | Переменная (FLOAT) | "0.5px" |
paragraphIndent | Переменная (FLOAT) | "8px" |
paragraphSpacing | Переменная (FLOAT) | "12px" |
textCase | Внутренний | "uppercase" |
textDecoration | Внутренний | "underline" |
Animation
$type | Экспортируется как | Пример $value |
|---|---|---|
transition | Внутренний | "on-hover smart-animate 200ms ease-out" |
duration | Внутренний | "200ms" |
cubicBezier | Внутренний | "[0.4, 0, 0.2, 1]" |
Other
$type | Экспортируется как | Пример $value |
|---|---|---|
grid | Стиль Grid | { "pattern": "grid", "sectionSize": 8 } |
boolean | Переменная (BOOLEAN) | true |
text | Переменная (STRING) | "Checkout" |
template | Внутренний | объект-определение template |
composition | Внутренний | объект-определение composition |
custom | Внутренний (или вывод) | любое JSON-значение |
Примечание custom (или чистый проектный $type, например "baseUnit") остаётся редактируемым. При экспорте SXL выводит безопасную цель из формы $value (#112233 → color, числа → number, булевы → boolean, CSS-градиенты → paint); значения, которые нельзя вывести безопасно, остаются opaque.
Примеры композитных значений
Объектные и массивные типы стоит увидеть целиком.
Typography:
{
"$type": "typography",
"$value": { "fontFamily": "Inter", "fontSize": "16px", "fontWeight": 500, "lineHeight": "24px", "letterSpacing": "0px" }
}
Shadow (массив слоёв):
{
"$type": "shadow",
"$value": [
{ "offsetX": 0, "offsetY": 1, "blur": 2, "spread": 0, "color": "#0000001F" },
{ "offsetX": 0, "offsetY": 8, "blur": 24, "spread": 0, "color": "#00000029" }
]
}
Gradient:
{ "$type": "gradient", "$value": "linear-gradient(135deg, #635BFF 0%, #A78BFA 100%)" }
Grid:
{ "$type": "grid", "$value": { "pattern": "grid", "sectionSize": 8, "alignment": "STRETCH" } }
Fill (многослойный):
{
"$type": "fill",
"$value": [
{ "type": "image", "url": "https://…/photo.jpg", "scaleMode": "FILL", "opacity": 0.7 },
{ "type": "solid", "color": "#00000029" }
]
}
Дефолтные scopes
Простые типы-переменные получают разумный scope Figma по умолчанию (его можно переопределить через figma.scopes). Типы не из списка по умолчанию получают ALL_SCOPES.
$type | Дефолтный scope |
|---|---|
color | ALL_FILLS, STROKE_COLOR, EFFECT_COLOR |
sizing | WIDTH_HEIGHT |
spacing | GAP |
borderRadius | CORNER_RADIUS |
borderWidth | STROKE_FLOAT |
opacity | OPACITY |
fontFamily | FONT_FAMILY |
fontWeight | FONT_STYLE |
fontSize | FONT_SIZE |
lineHeight | LINE_HEIGHT |
letterSpacing | LETTER_SPACING |
paragraphSpacing | PARAGRAPH_SPACING |
paragraphIndent | PARAGRAPH_INDENT |
dimension, number, text, boolean | ALL_SCOPES |
Полное поведение scope и фильтрация: Scopes & Code Syntax.
Наследование и алиасы
Группа может объявить $type один раз — каждый дочерний токен его наследует.
{
"spacing": {
"$type": "spacing",
"sm": { "$value": "8px" },
"md": { "$value": "16px" }
}
}
Легаси- и множественные значения $type нормализуются к каноническому ключу:
Сырой $type | Канонический |
|---|---|
string | text |
size | sizing |
space | spacing |
fontSizes / fontWeights / fontStyles … | fontSize / fontWeight / fontStyle |
borderRadii | borderRadius |
boxShadow | shadow |
backgroundBlur / backdropBlur / background-blur | backdrop-blur |
layerBlur | blur |
В production-файлах используйте канонические имена. Полная таблица — на странице JSON-формат токенов.
Связанные страницы
- JSON-формат токенов — как писать валидный token JSON
- Color, Gradient, Image, Fill, Opacity
- Dimension, Number, Sizing, Spacing
- Border, Border Width, Border Radius, Stroke Style
- Типографика и текстовые токены
- Shadow, Blur, Glass, Effects
- Duration, Cubic Bezier, Transition
- String, Boolean, Grid, Template, Custom
- Composition — структура, props, styles
- Scopes & Code Syntax