Есть задача организовать поддержку различных цветовых решений для интерфейса. Все стили на less, сгруппированы в компоненты. Т.е. разметка всегда общая, отличаются только цвета элементов.
Мне видится два пути:
1. Для каждого элемента определить персональную переменную с цветом, исходя из контекста элемента (например @loginFormBg, @SerachButtonTextColor) и потом просто для каждой темы указать нужные цвета для этих переменных.
Но тут есть явный минус в виде огромного кол-ва переменных, которые зачастую будут содержать одни и те же цветовые значения.
2. Вынести в название переменной идентификатор темы, а внутри каждого класса сделать фактически if, который в зависимости от идентификатора темы будет использовать нужное значение.
.sidebar {
width: 220px;
margin: 10px 0;
& when (@theme = default) {background: @black;}
& when (@theme = fireCat) {background: @fc_red;}
}
3. Третий вариант в виде расширения существующих классов в отдельном файле темы не рассматриваю, т.к.
во-первых, получу кучу дублирования в названиях классов и, как следствие, увеличение размера css,
во-вторых, нарушу структуру кода.
Есть ли какие-то еще красивые решения?