{"id":14291,"url":"\/distributions\/14291\/click?bit=1&hash=257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","hash":"257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","title":"\u0420\u0435\u043a\u043b\u0430\u043c\u0430 \u043d\u0430 Ozon \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0430\u043c \u043d\u0435 \u043f\u0440\u043e\u0434\u0430\u0451\u0442","buttonText":"","imageUuid":""}

→ Как быстро завезти тёмную тему

Преамбула

Продукт не должен проседать на фоне конкурентов, даже несмотря на наследие и ограниченные ресурсы.

Сейчас я расскажу, как моя команда, имея слабую компонентную базу, умудрилась завести и завезти тёмную тему для айос и андроид.

Задача стояла нехитрая: сделать тёмную тему для приложений на обеих платформах.

При этом в «дано» у нас было:

  • библиотека цветов в Фигме;
  • библиотека цветов на платформах (с кучей цветов наследия);
  • только базовые компоненты в Фигме и ещё меньше — в коде;
  • иконочный сет и сет иллюстраций.

Да, мы знали, как правильно, но на это у нас не было ни времени, ни рук.

Далее по шагам опишу наш путь.

1
Рефакторинг

Заскринили экраны приложений для обеих платформ (iOS, Android), сравнили с макетами.

Ремарка: приложения у нас в большинстве своём схожи.

2
Проработка цветов

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

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

Думали сделать уникальные цвета с идентичным контрастом для обеих тем. Но решили не упарываться и для светлой темы почти ничего в цветах не меняли, а для тёмной реверсировали глубину цвета. Так мы получили 2 набора динамичных (переключающихся) цветов.

Палитра цветов сформированная на контрасте по отношению к фону

Контрасты цветов мы замерили по шкале доступности контента применяемой к контрасту. Получили в большинстве случаев близкие показатели.

3
Цветовые токены

Ранее мы именовали цвета исходя из глубины цвета. Теперь мы взяли за основу контраст в светлой и тёмной темах. Цвета именуются одинаково, содержат префикс оттенка и число контраста. То есть, светлый синий на светлой теме и тёмный синий на тёмной имеют одинаковый b_100. Чем контрастнее, тем больше число.

4
Отрисовка

Скорее не отрисовка, а назначение тёмной цветовой схемы светлой.

5
Уникальные цвета

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

Также нам понадобился набор статичных (непереключающихся) цветовых оттенков.

6
Автоматизация

Мы должны проверять свой дизайн, а делать для этого макеты в 2-х темах совершенно не наш подход. Запустили плагин Appearance для Фигмы, настроили, протестили.

7
Разработка

Выгружаем наши цвета в нужном разработчикам формате и/или добавляем их в песочницу сами. Просим разработчиков выгрузить библиотеку цветов из кода. Рефакторим цвета, присваивая цветам наследия новые цвета.

Просим сборку у разрабов на новых цветах и наслаждаемся результатом переключения цветов. Конечно же, было ещё немало работы по вычищению ошибок по цветам. Но не долго.

Итог

Таким подходом, технически, мы завезли тёмную тему буквально за пару недель. Да, на изучение различных подходов, перебор массы дизайн-систем, перекраску цветов (раз 8) ушло месяца 3, но глядя на результат, мы с командой понимаем, что всё было не зря.

Тонкостей по пути было много. Если будут вопросы, я с радостью отвечу на них в Телеграме — @Kilunin.

Рад, если было полезно!

0
3 комментария
Перечитатель

Обрадовался, думал, что скажут как на VC сделать темную тему.. а тут какая-то шняга

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
0 комментариев
Раскрывать всегда