Оптимизируйте свои названия цветов для темного режима

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

Что я имею в виду под названиями цветового спектра?

Названия спектра означают, что вы используете такие имена, как: grey, blue, green… и т. Д. Это также относится к оттенкам определенного цвета: grey[500], blue[300], green[100].

Почему такой подход плохой?

У такого подхода много минусов:

  • Трудно провести рефакторинг

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

  • Это не поддерживает темный режим

Допустим, вы используете оттенки серого для создания компонентов (текста, фона, границ, цветов разделителя ...)

grey[500] в светлом режиме на светлом фоне выглядит хорошо, но то же самое в grey[500] темном режиме над темным фоном может быть полностью невидимым.

Предложенное решение

Используйте функциональные названия вместо названий спектров.

  • начальный
  • вторичный
  • высшее
  • ошибка
  • предупреждение
  • успех
  • Информация

Это решает вышеупомянутые проблемы.

Например, text.primary цвет в светлом режиме может быть #000000 (черный), а в темном режиме #ffffff (белый).

Ту же концепцию можно применить к цветам акцента, состояниям ошибок, границам, фону и т. Д.

Удачного проектирования / кодирования! 🎉