DRY Mixins
// DRY (Don't Repeat Yourself)
// Helps mixins generate dynamic extensions.
$placeholders: () !default;
@mixin dry-do($key, $extend: true) {
$placeholder: map-get($placeholders, $key);
@if $extend == true {
@if $placeholder == null {
$placeholder: unique-id();
$placeholders: map-merge($placeholders, ($key: $placeholder)) !global;
@at-root %#{$placeholder} {
@include dry-do($key, false) {
@content;
}
}
}
@extend %#{$placeholder} !optional;
}
@else {
@content;
}
}
@mixin dry($key, $context: null) {
@include dry-do('#{$key}-#{$context}') {
@content;
}
}