К содержанию
Возможности

Переменные и режимы в макете

Переменная — именованное значение: цвет, число, строка или «да/нет». Слои ссылаются на неё по имени, а режим на фрейме выбирает, какой набор значений показать.

Обновлено 6 минут чтения

Окно «Переменные»: коллекция «Тема» с режимами «Светлая» и «Тёмная», цвета фона, текста и акцента и число «Скругление»

Коротко

Переменная в Morfa — именованное значение типа «Цвет», «Число», «Строка» или «Логическое», которое хранится в коллекции и подставляется в слои по ссылке. Окно «Переменные» открывается кнопкой «Открыть переменные»: во вкладке «Дизайн», когда ничего не выделено, или в «Ассетах».

У коллекции могут быть режимы, например «Светлая» и «Тёмная»: режим выбирают на фрейме, и экран перекрашивается без копий. В коде переменные становятся CSS-переменными в tokens.css, а режимы — блоками с атрибутом data-theme. В прототипах переменных и условий пока нет.

Что такое переменная и коллекция

Переменная — значение, которое хранится в одном месте и используется во многих слоях. Привяжите заливку всех кнопок к переменной «Акцент/Основной», и цвет кнопок меняется правкой одного значения.

Переменные живут в коллекциях — наборах по смыслу: «Тема» для цветов интерфейса, «Отступы» для размеров. Косая черта в имени делит переменные на группы: «Фон/Основной» и «Фон/Карточка» окажутся в одной группе «Фон».

По сути переменные — это дизайн-токены прямо в макете: у каждой есть имя, тип и своё значение для каждого режима коллекции.

Как создать коллекцию и переменные

Всё делается в окне «Переменные». Снимите выделение: во вкладке «Дизайн» появится раздел «Переменные» с кнопкой «Открыть переменные». Та же кнопка есть в «Ассетах».

  1. Создайте коллекцию

    Нажмите «+» рядом со словом «Коллекции» («Создать коллекцию»). Появится «Коллекция 1» с режимом «Режим 1»: сразу переименуйте её, например в «Тема».

  2. Добавьте режимы

    Кнопка «+» в заголовке таблицы («Добавить режим») создаёт новый столбец. Двойной щелчок по названию режима переименовывает его, а правый щелчок открывает «Сделать основным» и «Удалить режим».

  3. Создайте переменные

    Кнопка «Создать переменную» внизу окна предложит тип: «Цвет», «Число», «Строка» или «Логическое». Назовите переменную через косую черту, например «Фон/Основной».

  4. Заполните значения

    В каждом столбце режима своё значение: цвет вводят в HEX, число и строку — в поле, логическое переключают между «Да» и «Нет».

  5. Сошлитесь на другую переменную

    Кнопка «Сослаться на переменную» рядом со значением подставит переменную того же типа: так «Кнопка/Фон» может ссылаться на «Акцент/Основной». Ссылку, которая ведёт по кругу, редактор сделать не даст.

Четыре типа переменных и к чему их привязывают

Тип выбирают при создании, и он решает, к каким полям панели переменную можно привязать.

Типы переменных в Morfa
ТипЧто хранитГде используется
ЦветЦвет в HEX, можно с прозрачностьюЗаливки и обводки слоёв
ЧислоЧислоШирина и высота, мин. и макс. размеры, интервал и отступы автолейаута, скругление, непрозрачность
СтрокаТекстХранится в коллекции и меняется по режимам; в коде становится CSS-переменной со строкой
Логическое«Да» или «Нет»Хранится в коллекции; в коде попадает в tokens.ts как флаг

Как привязать переменную к слою

Привязанный слой хранит ссылку на переменную, а не число: поменяйте значение в окне «Переменные», и все такие слои обновятся.

  1. Цвет заливки или обводки

    В разделе «Заливка» нажмите кнопку «Стили и переменные заливки» и выберите переменную в списке «Переменные». Другой путь — открыть палитру цвета и перейти на вкладку «Библиотеки».

  2. Число

    Наведите курсор на поле ширины, интервала, отступа, скругления или непрозрачности: в правом краю поля покажется шестиугольник «Применить переменную». Выберите переменную типа «Число».

  3. Проверьте привязку

    Вместо числа или цвета поле показывает имя переменной. Кнопка «Отвязать переменную» снимает связь, а слой сохраняет текущее значение.

Палитра цвета заливки: квадрат цвета, ползунки оттенка и прозрачности, пипетка, привязанная переменная «Фон/Основной» и цвета файла
Палитра цвета заливки: вместо числа привязана переменная «Фон/Основной», ниже — ползунки оттенка и прозрачности, пипетка и цвета файла.

Когда ничего не выделено, во вкладке «Дизайн» видны локальные переменные и стили файла: так удобно проверить, что уже заведено.

Режимы: светлая и тёмная тема без копий экранов

Режим — набор значений одной коллекции. В шаблоне «Мобильное приложение» у коллекции «Тема» два режима: «Светлая» (основной) и «Тёмная». Переменная «Фон/Основной» в первом режиме белая, во втором — почти чёрная.

Режим выбирают на фрейме. Выделите экран: во вкладке «Дизайн» появится раздел «Переменные» со строкой для каждой коллекции, где больше одного режима. Выберите «Тёмная», и все привязанные слои внутри фрейма возьмут тёмные значения. Вариант «Авто» берёт режим у родительского фрейма, а явный выбор на вложенном фрейме его перекрывает: так делают светлую карточку на тёмном экране.

Режимы годятся не только для темы. Коллекция «Плотность» с режимами «Обычная» и «Компактная» переключает отступы так же, как «Тема» переключает цвета.

Окно «Переменные»: коллекция «Тема» с режимами «Светлая» и «Тёмная», цвета фона, текста и акцента и число «Скругление»
Окно «Переменные»: коллекция «Тема» с режимами «Светлая» и «Тёмная», цвета фона, текста и акцента и число «Скругление».

Пошагово, от коллекции до переключения темы, — в гайде тёмная тема в макете.

Что получится в коде

Во вкладке «Код» и в проекте «Экспорт в React…» переменные становятся дизайн-токенами: CSS-переменными в src/tokens.css и именами в src/tokens.ts. Русские имена переводятся или транслитерируются: «Фон/Основной» превращается в --color-background-primary.

Значения основного режима записываются в :root, остальные режимы — в блоки с атрибутом. Первая коллекция с режимами получает атрибут data-theme, следующие — свой, например data-density для «Плотности». Фрейм, которому в редакторе выбрали «Тёмная», получает в разметке data-theme="dark", а ссылка на другую переменную остаётся ссылкой var(--…).

Привязанные слои ссылаются на токен и не повторяют значение, поэтому правка токена меняет все места сразу. Логические переменные попадают только в tokens.ts, в объект flags.

cssПример, упрощённо: фрагмент tokens.css для шаблона «Мобильное приложение» — переменная «Фон/Основной» в режимах «Светлая» и «Тёмная» и число «Скругление/Карточка».
:root {
  --color-background-primary: #FFFFFF; /* Фон/Основной */
  --radius-card: 20px; /* Скругление/Карточка */
}

[data-theme='dark'] {
  --color-background-primary: #0E0F13;
}

Как разработчик получает эти файлы, описано на странице дизайн в код.

Переменные в библиотеке команды

Коллекции переменных публикуются в общую библиотеку вместе с компонентами и стилями: «Файл → Опубликовать библиотеку…». Служебную переменную можно скрыть от публикации.

В файле, который подключил библиотеку, её коллекция доступна только для чтения: значения меняют в файле библиотеки, и они приходят с обновлением. Как устроены общие библиотеки, описано на странице для дизайн-систем.

Чего пока нет

Переменные работают в макете и в коде, но у них есть границы, которые стоит знать заранее.

  • Переменных и условий в прототипах: «Установить переменную» и переходы по условию сделать нельзя. Смену состояния показывают вариантами компонента и действием «Изменить на» — подробнее на странице прототипы.
  • Привязки строк и логических значений к слоям: в панели к переменным привязываются цвета и числовые поля.
  • Переноса переменных из Figma: Figma отдаёт их через API только на плане Enterprise, поэтому слои получают текущие значения, а коллекции с режимами собирают заново.

Morfa — редактор интерфейсов в браузере

Компоненты, автолейаут, прототипы, совместная работа и код React. Без VPN, с оплатой в рублях.

0 ₽
План «Бесплатный»: 10 файлов, все инструменты и экспорт, без срока
990 ₽
в месяц за план «Профессиональный» или 790 ₽ при оплате за год; 20 ГБ картинок
Figma → Morfa
Импорт файлов по ссылке, бесплатно на любом плане
Без VPN
Открывается в браузере из России, без установки

Вопросы

Что чаще всего спрашивают о теме «Переменные и режимы».

Чем переменная отличается от стиля?

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

Можно ли сделать режимы не только для светлой и тёмной темы?

Да. Режимы есть у любой коллекции: например, «Плотность» с режимами «Обычная» и «Компактная» для отступов. В коде такая коллекция получает свой атрибут, например data-density.

Можно ли поменять переменную из подключённой библиотеки?

Нет, в подключившем файле коллекция библиотеки доступна только для чтения. Значения меняют в файле библиотеки и публикуют обновление, а подписчики принимают его в окне «Обновления библиотек».

Можно ли скрыть переменную от библиотеки команды?

Да, переменную можно скрыть от публикации в библиотеку. Остальные переменные коллекции публикуются вместе с компонентами и стилями через «Файл → Опубликовать библиотеку…».

Как переменные попадают в код?

Они становятся CSS-переменными в tokens.css и именами в tokens.ts, а режимы — блоками с атрибутом data-theme. Слои, привязанные к переменной, ссылаются на токен, а не копируют значение.

Начните с шаблона или с файла из Figma

Бесплатно — 10 файлов, все инструменты и экспорт. Карта не нужна.