Tokens

Styles

Типы токенов группы Styles: Color, Gradient, Image, Fill, Opacity. Какие значения принимаются, как работают модификаторы цвета и связь цвета с переменной прозрачности, во что экспортируется каждый тип.

Группа Styles содержит цвета, заливки и прозрачность. color и opacity экспортируются как переменные Figma, gradient, img и fill как стили заливки.

$typeЭкспортируется какЗначение
colorПеременная ColorСтрока цвета или объект каналов
gradientСтиль PaintCSS-градиент, объект градиента или ссылка
imgСтиль PaintАдрес изображения или объект изображения
fillСтиль PaintОдин слой заливки или массив слоёв
opacityПеременная NumberЧисло от 0 до 1, проценты или ссылка

В окне Export to Figma цвета включаются переключателем Variables → Color, прозрачность переключателем Variables → Number, градиенты переключателем Styles → Gradient, а fill и img переключателем Styles → Fill.

Color

Переменная Figma Color. Scopes по умолчанию: All fills, Stroke color, Effect color.

Форма Create Color: значение с образцом цвета, описание, секции Color Modifier, Scopes и Code Syntax, флаг Hide from publishing.

ПринимаетсяПример
HEX, 3, 4, 6 или 8 знаков"#635BFF", "#635BFF80", "#FFF"
rgb() и rgba()"rgba(99, 91, 255, 0.8)"
hsl() и hsla()"hsl(244, 100%, 68%)"
lch(), oklch(), color()"oklch(0.62 0.2 280)", "color(display-p3 0.4 0.36 1)"
Объект каналов{ "r": 0.39, "g": 0.36, "b": 1, "a": 1 } — каналы 0..1, как в Figma
Объект цвета в форме DTCG{ "colorSpace": "srgb", "components": [0.39, 0.36, 1], "alpha": 0.5 }
Имя цвета CSS и transparent"white", "transparent"
Объект с каналами от 0 до 255 в JSON токенов{ "r": 51, "g": 102, "b": 153, "a": 0.16 } — нормализуется при загрузке JSON
Ссылка на другой цвет"{color.brand.primary}"
Цвет со ссылкой на прозрачность"rgba({color.brand.primary} {opacity.medium})"
JSON
{ "$type": "color", "$value": "#635BFF" }

RGB-объекты принимают числовое поле a, а объекты с цветовым пространством — числовое alpha. Ссылки на токены в этих полях не поддерживаются и могут быть проигнорированы при нормализации. Используйте одиночный шаг figma.modify типа alpha или ссылку на базовый объектный токен в inline-выражении. Поддерживаются значения colorSpace: srgb, display-p3, hsl, lch, oklch; это не полная поддержка цветового стандарта DTCG. Отдельный объект { "hex": "#635BFF" } не принимается: используйте строку "#635BFF".

Не поддерживаются lab(), oklab(), hwb(), процентные каналы RGB, процентная светлота OKLCH, currentColor, CSS var() / calc() / color-mix() и другие пространства color().

Модификаторы цвета

Модификатор выводит цвет из другого: осветляет, затемняет, меняет прозрачность или смешивает. В форме токена откройте секцию Color Modifier и нажмите Add Color Modifier: у каждого шага есть метод, цветовое пространство и величина, а результат виден в живом превью. Шаги применяются по порядку.

Секция Scopes: All Scopes, All Fills, Frame Fill, Shape Fill, Text Fill, Stroke Color, Effect Color.

Шаг модификатора: метод Lighten, пространство OKLCH, величина.

В JSON модификаторы записываются в $extensions.figma.modify:

ПолеЗначения
typelighten, darken, alpha, mix
valueВеличина: число от 0 до 1, число от 0 до 100, строка "56%" или ссылка на токен
spacesrgb, hsl, lch, oklch. По умолчанию oklch
colorВторой цвет, обязателен для mix
JSON
{
  "$type": "color",
  "$value": "{color.brand.primary}",
  "$extensions": {
    "figma.modify": [
      { "type": "lighten", "value": 0.12, "space": "oklch" },
      { "type": "alpha", "value": 0.6 }
    ]
  }
}

Пространство p3 в модификаторах не поддерживается; при этом литеральный цвет в записи color(display-p3 …) принимается.

Цвет с переменной прозрачности

Ссылку на прозрачность можно записать прямо в $value цветового токена; figma.modify необязателен. Export пробует сохранить ссылку на исходный цвет, если она задана, и ссылку на прозрачность в ячейках Figma. Существующий одиночный модификатор alpha использует тот же путь экспорта. Ссылка на цвет с литеральной alpha сохраняет ссылку на цвет; литеральный цвет с литеральной alpha остаётся обычным RGBA.

JSON
{ "$type": "color", "$value": "rgba({color.brand.primary}, {opacity.overlay})" }

Поддерживаются позиции alpha в прежней сокращённой записи цвета (через запятую, пробел или /), rgb / rgba, hsl / hsla, lch, oklch и color(srgb …) / color(display-p3 …):

JSON
{ "$type": "color", "$value": "rgb(0 0 0 / {opacity.overlay})" }

Например, rgba(0, 0, 0, {opacity.overlay}), hsl(210 50% 40% / {opacity.overlay}), oklch(0.7 0.1 30 / {opacity.overlay}) и color(display-p3 0.2 0.3 0.4 / {opacity.overlay}) принимают ссылку на прозрачность без расширения. Это не добавляет ссылки в отдельных каналах цвета или CSS var() / calc() / color-mix().

Один дополнительный модификатор alpha заменяет inline-прозрачность и сохраняет ссылку на исходный цвет. Другие модификаторы и цепочки из нескольких шагов по-прежнему применяются по порядку и экспортируются вычисленным цветом. Alpha заменяет прозрачность исходного цвета, а не умножается на неё.

Для нативной ссылки на цвет с отдельной прозрачностью базовая переменная должна быть полностью непрозрачной. Если исходный цвет уже содержит прозрачность, проверенная версия Figma блокирует её переопределение и использует alpha базового цвета. Для рабочей пары ссылок используйте базовый цвет с непрозрачностью 100% и отдельный токен прозрачности. Выражения с литеральным цветом могут заменять собственную alpha без этого ограничения.

Если база непрозрачна не полностью или её alpha нельзя проверить, Export записывает вычисленный цвет и предупреждает о недоступности связей цвета и прозрачности. Существующая составная ячейка сохраняется с предупреждением, если нельзя подтвердить, что это неизменённая запись плагина. Если позднее сделать связанный базовый цвет полупрозрачным в Figma, отдельная прозрачность может перестать учитываться сразу; повторите экспорт, чтобы проверить ячейку по токену.

Доступность нативных ячеек зависит от Plugin API Figma в вашей сессии. Если Figma отклоняет запись, например с сообщением «Composed color variable values are not supported», плагин экспортирует обычный цвет с уже применённой прозрачностью, как и в предыдущих версиях, так что переменная выглядит правильно, но не ссылается на исходный цвет и переменную прозрачности. В отчёте экспорта появляется одна сводная строка: сколько таких переменных, причина и список с подсказкой для каждой, например testColor ("base" @ the variable "alpha"). Чтобы получить ссылки, откройте переменную в панели Variables и выберите цвет и переменную прозрачности вручную. Заданную вручную ячейку плагин сохраняет при следующих экспортах, в том числе у обычного цветового токена без модификаторов, а если токен разойдётся с ней, предупредит. Как только Figma откроет запись, тот же JSON начнёт экспортироваться со ссылками без изменений.

Ячейка прозрачности в Figma хранит проценты, поэтому ссылайтесь на токен типа opacity: он экспортируется как 65 для значения 0.65. Если сослаться на обычный number со значением от 0 до 1, Figma прочитала бы его как 0.65%. В этом случае плагин оставляет ссылку на цвет, считает прозрачность литералом и выводит предупреждение, как сделать переменную привязываемой.

Чтобы переменная предлагалась в ячейке прозрачности цвета, у неё должен быть scope Color Opacity. Новая переменная получает все scopes, а если вы ограничиваете их через figma.scopes, добавьте значение COLOR_OPACITY (в форме токена это пункт Color Opacity).

JSON
{
  "$type": "color",
  "$value": "{color.brand.primary}",
  "$extensions": { "figma.modify": [{ "type": "alpha", "value": "{opacity.overlay}" }] }
}

Gradient

Стиль заливки с градиентом. Пишите CSS-градиент, ссылку или объект.

ПринимаетсяПример
CSS-градиент строкой"linear-gradient(135deg, #635BFF 0%, #A78BFA 100%)"
Направление словами"linear-gradient(to right, #635BFF, #A78BFA)"
Ссылка"{gradient.brand}"
Объект градиентасм. ключи ниже

Поддерживаются linear-gradient с углом (135deg, 0.25turn) или направлением (to right), radial-gradient с формой, размером и позицией (circle 60% at 25% 75%), conic-gradient с началом и центром (from 90deg at 50% 50%), а также angular-gradient и diamond-gradient в терминах Figma. Повторяющиеся градиенты repeating-* раскладываются на стопы по всему боксу: цикл в процентах (#000 0%, #fff 25%) повторяется ровно, а цикл, который не делит бокс нацело, обрезается у края с предупреждением. Позиции стопов принимаются в процентах, долях 0..1 и пикселях (пиксели масштабируются по самой длинной длине), двойные позиции #000 0% 50% дают резкую границу. Цвета стопов могут быть ссылками на цветовые токены: тогда в стиле Figma они будут привязаны к переменным. Угол и позиции стопов тоже могут быть ссылками ("{gradient.angle}deg", "{stop.mid}%"), но Figma не умеет привязывать их к переменным, поэтому при экспорте подставляется текущее значение и в отчёт попадает предупреждение.

Ключ объектаЗначения
typelinear, radial, angular, diamond
angleЧисло в градусах для linear
stopsМассив { "position": 0..1, "color": "#…" }
JSON
{
  "$type": "gradient",
  "$value": {
    "type": "linear",
    "angle": 135,
    "stops": [
      { "position": 0, "color": "{color.brand.primary}" },
      { "position": 1, "color": "#A78BFA" }
    ]
  }
}

Image

Стиль заливки с изображением.

ПринимаетсяПример
Адрес строкой"https://…/cover.png" или "url(https://…/cover.png)"
Встроенное изображение"data:image/png;base64,…"
Объект изображения{ "url": "https://…", "scaleMode": "FILL", "opacity": 1 }
Ссылка"{img.cover}"

scaleMode: FILL, FIT, CROP, TILE. Изображение загружается по адресу в момент экспорта, поэтому адрес должен быть доступен с вашего компьютера.

JSON
{ "$type": "img", "$value": { "url": "https://…/cover.png", "scaleMode": "FILL" } }

Fill

Самый гибкий тип заливки: один слой или стопка слоёв. В стиле Figma первый слой массива оказывается верхним.

ПринимаетсяПример
Строка цвета, градиента или адреса"#635BFF", "linear-gradient(…)"
Объект одного слоя{ "type": "solid", "color": "#635BFF" }
Массив слоёвсм. пример
Ссылка"{fill.card}"
Ключ слояЗначения
typesolid, gradient, image, video, pattern, строго строчными буквами
colorЦвет или ссылка на цветовой токен для solid
gradientОбъект или строка градиента для gradient
urlАдрес изображения для image: https://…, data:image/… или ассет из Database local-asset://<id>
videoUrlИсточник видео для video: https://… (mp4, mov, webm до 100 МБ) или local-asset://<id>; Figma загружает видео при экспорте, нужен платный план
scaleModeFILL, FIT, CROP, TILE для image и video
scalingFactor, rotation, filtersМасштаб плитки, поворот кратно 90° и ползунки коррекции (exposure, contrast, … от −1 до 1) для image и video
sourceNodeId, sourceNodeNameСлой-источник для pattern: по id или по имени на текущей странице. Текущие сборки Figma не принимают pattern-заливку через Plugin API: такой стиль пропускается, причина в отчёте
tileType, spacing, horizontalAlignmentДля pattern: rectangular, horizontal-hexagonal, vertical-hexagonal; { "x": 0, "y": 0 }; start, center, end
opacityОт 0 до 1, "50%" или ссылка на токен прозрачности: Figma не привязывает прозрачность слоя к переменной, поэтому ссылка подставляется текущим значением с предупреждением
blendModeРежим наложения Figma, например NORMAL, MULTIPLY
visibletrue или false

В форме Create Fill слои добавляются кнопкой Add layer, у каждого есть прозрачность, режим наложения и переключатель видимости; у изображений и видео можно выбрать ассет из Database и режим масштабирования; порядок меняется перетаскиванием.

JSON
{
  "$type": "fill",
  "$value": [
    { "type": "image", "url": "https://…/photo.jpg", "scaleMode": "FILL", "opacity": 0.7 },
    { "type": "solid", "color": "#00000029" }
  ]
}

Opacity

Переменная Figma Number со scope Opacity.

ПринимаетсяПример
Число от 0 до 10.6
Строка процентов"60%"
Ссылка или математика"{opacity.disabled}", "{opacity.base} * 0.5"

0.6 и "60%" означают одно и то же, выбирайте запись, которая читается лучше. Плагин сам приводит значение к форме, которую ожидает Figma для переменной и для слоя. В редакторе запятая в числе заменяется точкой.

JSON
{ "$type": "opacity", "$value": 0.6 }

Связанные страницы