Dev Mode

Генерация кода

Как получить код по выделенному слою: панель Code в Figma Dev Mode и вкладка Code плагина, языки Vue 3, React, SwiftUI, UIKit, Kotlin, DivKit и JSON, секции, режимы Styled, Decomposed и Raw, окно Codegen settings и правила имён иконок.

Плагин генерирует код по выделенному слою в двух местах, и результат в них одинаковый:

ГдеКак открытьДля чего
Панель Code в Figma Dev ModeВыберите слой, в панели Code выберите язык SXL StudioБыстрый просмотр без открытия плагина
Вкладка Code плагина в Dev ModeОткройте плагин из списка плагинов Dev Mode, выберите слойСекции, режимы отображения, настройки генерации, копирование

Языки

ЯзыкЧто получается
Vue 3Однофайловый компонент: <script setup lang="ts">, шаблон, стили с CSS-переменными
ReactФункциональный компонент .tsx с типизированными props, CSS Modules и clsx
JSONОписание композиции: структура, свойства компонента, стили
SwiftUISwift-код с обращением к перечислению токенов
UIKitКласс UIView со стеками, надписями и изображениями
KotlinKotlin Compose с константами токенов
DivKitJSON-документ карточки для мобильных приложений на DivKit

В панели Code Figma языки называются так же, JSON подписан как JSON (Design).

Вкладка Code плагина

Вкладка Code: язык Vue 3, секция All, переключатели Decomposed и Raw, кнопка Copy и шестерёнка Codegen settings.

ЭлементЧто делает
Список языковVue 3, React, SwiftUI, UIKit, Kotlin, DivKit, JSON
Список секцийAll, Template, Script, Styles, Variables, References. Для SwiftUI и Kotlin секции Script нет
DecomposedРаскладывает составные стили на отдельные свойства, ссылки на переменные сохраняются
RawПодставляет итоговые значения вместо переменных. Всегда разложенный вывод
CopyКопирует текущую секцию
ШестерёнкаОткрывает Codegen settings для этого файла Figma

Список языков во вкладке Code.

Секции Variables и References одинаковы для всех языков: первая показывает, какие переменные собраны с выделения, вторая перечисляет вложенные компоненты и предупреждения. Для JSON секции читаются по смыслу: Template показывает структуру, Script корневые поля, Styles стили.

Режимы отображения

РежимКак включитьЧто происходит с токенами
StyledОба переключателя выключеныИспользуются ссылки на составные стили, например текстовые стили и стили эффектов, переменные сохраняются
DecomposedВключён DecomposedСоставные стили разложены на отдельные свойства, переменные сохраняются
RawВключён RawЗначения подставлены литералами, без ссылок на переменные

Styled не абсолютен: если у слоя нет подходящей ссылки на стиль, генератор берёт фактические значения. На очень больших деревьях вывод может быть усечён, тогда в коде появляется заметка об этом.

Панель Code в Figma

В нативной панели Code каждый язык даёт набор вкладок. Например, для Vue 3: All, Script Setup, Template, Styles, Variables, Reference components, для React: All, Template, Script, Styles, Variables, Reference components, для мобильных языков: основной файл, Variables и Reference components. Если компонент связан через Code Connect, добавляются вкладки с импортом и примером использования. Вкладка Debug появляется только при наличии отладочной трассы.

Наборы вариантов

Если выделен набор вариантов, Vue 3 и React строят один компонент с props для осей вариантов и сопоставлением классов, DivKit строит одну карточку с отдельным состоянием на каждый вариант. Число вариантов видно в заголовке вкладки.

Codegen settings

Шестерёнка во вкладке Code открывает настройки генерации для текущего файла Figma. Пустые поля означают значения по умолчанию.

Окно Codegen settings: разделы Naming, Styling, Imports и Mobile, кнопки Reset и Save.

РазделПоля
NamingIcon component: обёртка для иконок. Icon name pattern: шаблон имени иконки. Bool collision и Swap collision: как переименовать булево свойство или свойство подмены при совпадении имён
StylingRoot class: класс корневого элемента. Class case: kebab-case или camelCase. Header comment: комментарий-шапка в стилях
ImportsComponent import path: шаблон пути импорта, например @/components/{Name}
MobileSwift token enum, Drawable prefix для Android, DivKit profile, DivKit validation, DivKit profile JSON
TestingTest attribute: атрибут для тестов, например data-testid. Пусто означает выключено
Icon rulesСписок правил именования иконок по странице, секции, набору, варианту или описанию, Default pattern и Gate (description)

Подстановки в шаблонах иконок:

ПодстановкаЗначение
{baseName}, {name}Нормализованное имя иконки или слоя
{setName}Имя набора компонентов
{pageName}Имя страницы Figma
{sectionName}Ближайшая секция
{variant.<ось>}Значение оси варианта

Правила проверяются сверху вниз, побеждает первое совпавшее. Если ни одно не подошло, используется Default pattern. Пример: Icon component: Icon, Icon name pattern: {baseName}, правило «если pageName = Icons и variant.Size = 24, то ui-{baseName}-{variant.Size}`».

Особенности языков

React. Компонент для React 19: .tsx, типизированные props, ReactNode для слотов и подмен, CSS Modules и clsx, пути импорта из настроек, необязательный тестовый атрибут. Слои-слоты становятся children, вложенные компоненты импортируются как теги.

UIKit. Класс UIView со стеками UIStackView, надписями UILabel и изображениями UIImageView. Цвета, размеры, типографика и эффекты берутся из токенов там, где это возможно. Явные режимы Figma выводятся комментариями.

DivKit. Готовый к передаче JSON: card и при необходимости templates. Ссылки на токены превращаются в переменные DivKit вида @{token_name}, коллекции с несколькими режимами получают переменную режима и словарь значений. Фреймы и компоненты становятся container, текст text, линии separator. Секция References перечисляет заглушки и неподдержанные конструкции: проверьте её, если ожидания не совпали.

DivKit имеет профили и режимы проверки. DivKit profile: Generic подходит любому проекту, NewMain BDUI и Custom включаются вручную. DivKit validation: Strict Playground держит вывод совместимым с публичным плейграундом DivKit, Host App разрешает схемы и блоки, объявленные в профиле проекта. Профиль проекта задаётся в поле DivKit profile JSON:

JSON
{
  "icons": {
    "circle-info": { "image_url": "https://cdn.example.com/icons/circle-info.svg" }
  },
  "slots": {
    "slot.class:progress": { "type": "custom", "custom_type": "new_main_story_progress" }
  },
  "actions": {
    "cta": "div-action://open/details"
  },
  "fonts": {
    "SF Pro Display": "display"
  },
  "customTypes": ["new_main_story_progress"]
}

Иконки превращаются в image с адресом, слоты в контейнеры, кастомные блоки или шаблоны, действия в обработчики нажатий, шрифты в псевдонимы хоста. Если сопоставления нет или его запрещает режим проверки, плагин оставляет безопасную заглушку и пишет причину в References.

Если вывод не такой, как ожидалось

  1. Переключите Decomposed и Raw, чтобы отделить поведение токенов от значений.
  2. Откройте секцию Variables и проверьте, какие переменные собраны с выделения.
  3. Убедитесь, что выделен нужный слой: компонент, вложенный слой или набор вариантов дают разный результат.
  4. В панели Code Figma загляните во вкладку Debug, если она появилась.

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