Подробный гайд как сделать темную тему с помощью variables фигмы

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

  1. Создаем вот такой попап в темной теме, на его примере будет работать с variables. Цветовых стилей при этом у меня нет.
Подробный гайд как сделать темную тему с помощью variables фигмы

2. Создаем компонент кнопок, чтобы наши токены применялись побыстрее и нам не пришлось тыкать много раз подряд.

Подробный гайд как сделать темную тему с помощью variables фигмы

3. Переносим готовые кнопки-компоненты в попап. У нас получилась вот такая простая структура.

Подробный гайд как сделать темную тему с помощью variables фигмы

4. Убираем выделение со всех элементов, находим справа в панели Local variables. И нажимает на иконку настройки

Подробный гайд как сделать темную тему с помощью variables фигмы

5. Как мы видим, пока тут пусто, нажимаем на + Create variable

Подробный гайд как сделать темную тему с помощью variables фигмы

6. Нам предлагают выбор между цветом и другими переменными. Они тоже очень полезные. Например Number используют для того, чтобы добавить определенные скругления, или высоту, или что-то еще. В общем любой параметр из панели справа, выраженный в цифрах. Это нужно, чтобы например у вас на мобиле, десктопе и планшете были одни и те же скругления. Или для того, чтобы высота таббара на всех девайсах была одной и той же (ну а вдруг). String - переменная, удобная для локализации. Например вы создаете ру/англ версию сайта. Привязываете переменную к текстам и просто в 1 клик переключаете языки, чтобы убедиться что все локализовано + тексты не поехали. Boolean – это уже что-то на программистком, но можно использовать для того, чтобы показать/скрыть слой. Например на мобильных устройствах у вас есть бургер, а на десктопе он пропадает. Для этого лучше использовать true/false булеву переменную.

Подробный гайд как сделать темную тему с помощью variables фигмы

7. С вариациями разобрались, теперь создаем переменную цвета и нажимает справа сверху на плюсик, чтобы добавить еще одну колонку. Это вторая колонка и будет отвечать за темную тему (сравнительная таблица светлой и темной темы по сути)

Подробный гайд как сделать темную тему с помощью variables фигмы

8. Создаем две переменные для цвета кнопки. Primary для основной и secondary для доп. кнопок. Так же забиваем цвета. Например синий у нас не изменится, будет везде синим, а вот черная кнопка изменится на серую. Такие HEX и вставляем.

Подробный гайд как сделать темную тему с помощью variables фигмы

9. Как видите, то, что писал выше мы добавили, а еще накидали переменных для текста. Черный текст у нас станет белым, а серый останется серым, так как выбран оттенок, хорошо различимый на фоне.

Подробный гайд как сделать темную тему с помощью variables фигмы

10. Теперь выбираем кнопку и применяем к ней нашу переменную button-primary. Переменные при этом выглядят в виде квадратиков, в отличие от круглых стилей.

Подробный гайд как сделать темную тему с помощью variables фигмы

11. Теперь применяем для второй кнопки button-secondary. Но почему-то она покрасилась в белый, и очевидно, что что-то пошло нет так. Разбираемся

Подробный гайд как сделать темную тему с помощью variables фигмы

12. Находим у кнопки вот такие гаечки в разделе Layer.

Подробный гайд как сделать темную тему с помощью variables фигмы

13. Дальше находим нашу коллекцию и выбираем нужный Mode.

Подробный гайд как сделать темную тему с помощью variables фигмы

14. Теперь наша кнопка покрасилась в нужный цвет с примененной темной темой. Теперь все ок. Но обратите внимание, что кнопка покрасилась, а компонент остался таким же. В этом случае нужно было применять переменную к компоненту.

Подробный гайд как сделать темную тему с помощью variables фигмы

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

Подробный гайд как сделать темную тему с помощью variables фигмы

16. Для кнопок исправляем ошибку выше и красим кнопочки в компоненте.

Подробный гайд как сделать темную тему с помощью variables фигмы

17. Мы забыли подложку! Добавляем еще одну переменную surface – она будет служить фоном для попапа.

Подробный гайд как сделать темную тему с помощью variables фигмы

18. Добавляем значения.

Подробный гайд как сделать темную тему с помощью variables фигмы

19. У нас появился новый токен surface-primary

Подробный гайд как сделать темную тему с помощью variables фигмы

20. Теперь нажимаем на layer и находим этот токен.

Подробный гайд как сделать темную тему с помощью variables фигмы

21. Применяем его к подложке.

Подробный гайд как сделать темную тему с помощью variables фигмы

22. Заключительный шаг, создаем секцию вокруг попапа.

Подробный гайд как сделать темную тему с помощью variables фигмы

22. Нажимаем на секцию и применяем для нее Light mode. И казалось бы все должно заработать. Но ничего не произошло. Почему? Потому что мы для попапа добавили dark переменные грубо говоря хардкодом. В таком случае попап не слушается внешнего регулятора.

Подробный гайд как сделать темную тему с помощью variables фигмы

23. Чтобы исправить эту оплошность, настраиваем все компоненты внутри попапа на переменные Auto. Light в этом случае стоит первой колонкой в наших variables, поэтому он и применится по умолчанию. Поэтому если вы собираетесь использовать секции с автоматическим контролем переменных, советую выбирать auto. Если у вас макеты размножены на светлую и темную тему, то лучше добавлять режим мануально.

Подробный гайд как сделать темную тему с помощью variables фигмы

24. В итоге добавляем еще одну секцию и привязываем к секции переменную Dark, а к другой Light. Попап у нас при этом в режиме Auto. В таком случае его цвета и токены будут управляться через внешнюю секцию. Получается вот такая игрушка. Можете пойти хвастаться перед коллегами.

Спасибо тем, кто дочитал, успехов вам с дизайном. Помните, что делая такую систему, один фронтендер облегченно выдыхает, благодаря вас.

7878
28 комментариев
Комментарий удалён модератором

у каждого свой подход, как в продукте нет универсального пути его успеха. Я показал то, что может работать для маленьких команд и стартапов. Если знаете, как делать правильно – покажите

5
Ответить

Статья все-таки не про построение тем, а про пример работы с variables для создание разных цветовых тем. Не душите и научитесь видеть для себя пользу во всем 😉

Ответить

Печально, что для цвета теней нет поддержи variables

1
Ответить

Это временно, на презентации говорили, что поддержка для эффектов тоже будет скоро

2
Ответить

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

Ответить

Подавляющее большинство приложений крупных ретейлеров не имеет темных тем

1
Ответить