Есть веские причины использовать переменные, возможно, не будем вдаваться в них здесь. Однако это хороший аргумент в пользу того, чтобы не спорить о природе CSS. Мне следовало сформулировать это лучше: дело не в природе CSS, а в лучших практиках стилизации для фреймворка, основанного на компонентах. И я полностью согласен, что кнопки — ещё один отличный пример того, как эти правила не могут быть корректно применены.
Если посмотреть на картину в целом, то было предпринято согласованное усилие по модернизации JavaScript-стороны фронтенд-фреймворка. И я считаю, что это был оглушительный успех. Работа с чистыми стандартами и хорошо структурированными классами теперь действительно приятна. Для меня как для дизайнера это также открыло возможности для создания новых фронтенд-компонентов проще и эффективнее.
Однако у меня не уходит ощущение, что нет аналогичной приверженности приведению дизайн-системы к тем же стандартам. Хотя добавление CSS-переменных для каждого аспекта, безусловно, производительнее и чище текущего подхода, это всё ещё кажется способом избежать более глубоких архитектурных проблем: кодовой базы, полной излишне специфичных объявлений и отсутствия чётких стилей, ограниченных областью компонента. Это ощущается как «более простое» решение, которое обходит более сложную проблему: полную синхронизацию архитектуры стилизации с модульным дизайном фреймворка.
Я понимаю, что это повлечёт за собой огромный объём работы и проблемы обратной совместимости. Но команда успешно справлялась с такими вызовами на стороне JavaScript. Если JavaScript будет продолжать получать значительно больше ресурсов, чем стили, это неравенство проявится в итоговых дизайнах. И пользователи почувствуют разницу, даже если не смогут объяснить, почему.
Мне бы очень хотелось увидеть, как та же энергия модернизации будет применена к архитектуре CSS, потому что я убеждён, что долгосрочные преимущества как для разработчиков, так и для пользователей будут трансформационными.