# Именование

# Вариации блоков

Для изменения внешнего вида вы должны использовать мофидикаторы со значением(например: --theme_default). Таким образом избавимся от захламления API компонента, и упростим расширение его стилизации.

Единственное где подобный механизм не совсем корректен - это индикация состояния компонента(зачастую булевые: disabled, readonly, invalid, active, opened, hidden, etc). В таком случае создание отдельного prop оправдано.

Ключи для стилизации компонента в порядке возрастания специфичности:

  1. theme - Тема. Самое глобальное поведение компонента, которое изменяет базовые параметры элементов. Использовать крайне редко. Чаще всего - это какой-то глобальный .theme--, который влияет на стилизацию все элементов внутри. Только единичное изменение.
  2. view - Варианты отображения элемента, которые сильно меняют его поведение/визуальное отображение. Например изменяют позиционирование внутренних объектов, или изменяют реализацию его составных частей. Редко встречается в множественном виде/применении.
  3. styling - Также крупные изменения, но только в стилизации блока, без существенного изменения поведения/расположения элементов.
  4. variant - Крупные визуальные вариации оформления элемента.
  5. appearance - Мелкие визуальные изменения элемента. Например изменение базового цвета, или изменение радиуса скругления углов. Типа: --appearance_rounded, --appearance_stacked, --appearance_elevated. Может быть множественным.
  6. kind - Чаще всего функциональный модификатор. Стилистически изменения должны проводится для отображения изменения его функциональной принадлежности. Например: типы полей ввода(при этом, например, будет меняться только иконка).

# Позиционирование

  • align - Внутреннее - позиционируются составные элементы обьекта.
  • fit - Внешнее - позиционируется элемент относительно окружающих. Желательно сводить к минимуму использование этого модификатора.

Вообще идеальный вариант когда позиционирование происходит исключительно наружное. То есть корневой элемент(блок) ничего не знает об окружающем его мире, и не занимается собственным расположением. А занимается исключительно позиционированием собственных составных частей. В таком случае он легко переиспользуется в абсолютно любом месте без потребности в его изменении.

# Состояния

Булевые:

  • disabled - Отключенный элемент. Все его механики не должны работать.
  • passive - Визуально отключенный элемент. Механики продолжают работать, но требуется убрать визуальную индикацию его работоспособности.
  • readonly - Отключены механики, которые способны изменить состояние, но не отображение.
  • invalid - Текущее состояние компонента не соответствует внешним требованиям.
  • active - Установка "активного" состояния элемента, что-бы это не значило.
  • opened - Установка "открытия" состояния элемента, что-бы это не значило.
  • hidden - Установка "скрытого" состояния элемента, что-бы это не значило.