@import 'variables'; @mixin display-flex($content: center, $items: center, $direction: row) { display: flex; justify-content: #{$content}; align-items: #{$items}; flex-direction: #{$direction}; } @mixin element-invisible($enforce: true) { $important: if($enforce, '!important', null); max-height: 0 #{$important}; opacity: 0 #{$important}; visibility: hidden #{$important}; transition: $default-transition; } @mixin element-invisible-off($value-visibility: 100px, $enforce: true) { $important: if($enforce, '!important', null); max-height: #{$value-visibility} #{$important}; opacity: 1 #{$important}; visibility: visible #{$important}; } @mixin pseudo-element( $element, $el-height: 0, $el-width: 0, $isCentered: false, $el-background: transparent, $el-rotation: 0deg, $el-transition: none, $isVisible: true ) { @if $element == 'before' or $element == 'after' { position: relative; &:#{$element} { @extend %content; width: #{$el-width}; height: #{$el-height}; background: #{$el-background}; transition: #{$el-transition}; @content; @if $isVisible { @include element-invisible-off; } @else { @include element-invisible; } @if $isCentered { top: 50%; left: 50%; transform: translate(-50%, -50%) rotate(#{$el-rotation}); } @else { transform: rotate(#{$el-rotation}); @content; } } } @else { @warn "`#{$el}` isn't a valid pseudo element"; } } @mixin css-triangle( $pseudo, $triangle-size, $triangle-color, $triangle-direction ) { @include pseudo-element(#{$pseudo}) { border-style: solid; border-width: $triangle-size; @content; border-#{$triangle-direction}-width: 0; border-color: if($triangle-direction == down, $triangle-color, transparent) if($triangle-direction == left, $triangle-color, transparent) if($triangle-direction == up, $triangle-color, transparent) if($triangle-direction == right, $triangle-color, transparent); } } @mixin respond-to($breakpoint) { @if map-has-key($breakpoints, $breakpoint) { @media (max-width: map-get($breakpoints, $breakpoint)) { @content; } } @else { @error "Unfortunately, no value could be retrieved from `#{$breakpoint}`. " + "Available breakpoints are: #{map-keys($breakpoints)}."; } }