135 lines
2.1 KiB
SCSS
135 lines
2.1 KiB
SCSS
![]() |
@use 'function' as *;
|
||
|
// forward mixins
|
||
|
@forward 'config';
|
||
|
@forward 'function';
|
||
|
|
||
|
@use 'config' as *;
|
||
|
|
||
|
// BEM
|
||
|
@mixin b($block) {
|
||
|
$B: $namespace + '-' + $block !global;
|
||
|
|
||
|
.#{$B} {
|
||
|
@content;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@mixin e($element) {
|
||
|
$E: $element !global;
|
||
|
$selector: &;
|
||
|
$currentSelector: '';
|
||
|
@each $unit in $element {
|
||
|
$currentSelector: #{$currentSelector +
|
||
|
'.' +
|
||
|
$B +
|
||
|
$element-separator +
|
||
|
$unit +
|
||
|
','};
|
||
|
}
|
||
|
|
||
|
@if hitAllSpecialNestRule($selector) {
|
||
|
@at-root {
|
||
|
#{$selector} {
|
||
|
#{$currentSelector} {
|
||
|
@content;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
} @else {
|
||
|
@at-root {
|
||
|
#{$currentSelector} {
|
||
|
@content;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@mixin m($modifier) {
|
||
|
$selector: &;
|
||
|
$currentSelector: '';
|
||
|
@each $unit in $modifier {
|
||
|
$currentSelector: #{$currentSelector +
|
||
|
$selector +
|
||
|
$modifier-separator +
|
||
|
$unit +
|
||
|
','};
|
||
|
}
|
||
|
|
||
|
@at-root {
|
||
|
#{$currentSelector} {
|
||
|
@content;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@mixin configurable-m($modifier, $E-flag: false) {
|
||
|
$selector: &;
|
||
|
$interpolation: '';
|
||
|
|
||
|
@if $E-flag {
|
||
|
$interpolation: $element-separator + $E-flag;
|
||
|
}
|
||
|
|
||
|
@at-root {
|
||
|
#{$selector} {
|
||
|
.#{$B + $interpolation + $modifier-separator + $modifier} {
|
||
|
@content;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@mixin spec-selector(
|
||
|
$specSelector: '',
|
||
|
$element: $E,
|
||
|
$modifier: false,
|
||
|
$block: $B
|
||
|
) {
|
||
|
$modifierCombo: '';
|
||
|
$elementCombo: '';
|
||
|
|
||
|
@if $modifier {
|
||
|
$modifierCombo: $modifier-separator + $modifier;
|
||
|
}
|
||
|
@if $element {
|
||
|
$elementCombo: $element-separator + $element;
|
||
|
}
|
||
|
|
||
|
@at-root {
|
||
|
#{&}#{$specSelector}.#{$block + $elementCombo + $modifierCombo} {
|
||
|
@content;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@mixin meb($modifier: false, $element: $E, $block: $B) {
|
||
|
$selector: &;
|
||
|
$modifierCombo: '';
|
||
|
|
||
|
@if $modifier {
|
||
|
$modifierCombo: $modifier-separator + $modifier;
|
||
|
}
|
||
|
|
||
|
@at-root {
|
||
|
#{$selector} {
|
||
|
.#{$block + $element-separator + $element + $modifierCombo} {
|
||
|
@content;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@mixin when($state) {
|
||
|
@at-root {
|
||
|
&.#{$state-prefix + $state} {
|
||
|
@content;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@mixin pseudo($pseudo) {
|
||
|
@at-root #{&}#{':#{$pseudo}'} {
|
||
|
@content;
|
||
|
}
|
||
|
}
|