A page module that has a certain purpose and is a wrapper for its children.
Naming components
.component {…}
.component-name {…}
Example:
.search-form {...}
Elements are things inside your component.
.component__link {…}
.component-name__link-element {…}
Example:
.search-form__field {...}
.search-form__action {...}
Components may have variants. Elements may have variants, too.
Naming variants
.component--variant {…}
.component-name--variant-modifier {…}
Example:
.search-form--prefixed {...}
Naming variants
A component can be modified via a separate class.
.component.active {…}
Example:
.search-form.active {...}