Skip to content

Commit

Permalink
feat(class.variant-create()): add mixin to replace variant() mixin …
Browse files Browse the repository at this point in the history
…and add spec.
  • Loading branch information
sciborrudnicki committed Oct 17, 2023
1 parent 4adc86d commit 47e5a29
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 0 deletions.
1 change: 1 addition & 0 deletions class/variant/_index.scss
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
@forward 'variant.attribute.mixin';
@forward 'variant.class-value.mixin';
@forward 'variant.combine.mixin';
@forward 'variant.create.mixin';
@forward 'variant.property.mixin';
@forward 'variant.set.mixin';
41 changes: 41 additions & 0 deletions class/variant/_variant.create.mixin.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
// Modules.
@use '../../map';
@use '../../meta';

// Mixins.
@use '../../class/class.content.mixin';
@use '../../property/property.set.mixin' as property;
@use '../../variant/variant.transform.mixin';

// Functions.
@use '../../selector/selector.class.function';

// Status:
// The `class.variant-create()` mixin .
// @param `$variant`
// @param `$combine`
// @param `$pseudo-class`
// @param `$dictionary`
// @param `$function`
// @param `$modifier`
@mixin create(
$variant,
$combine: false false false,
$pseudo-class: (),
$dictionary: (),
$function: meta.get-function(class, false, selector),
$modifier: null,
) {
@include variant.transform($variant, $combine, $modifier) using($resolved) {
@each $resolved in $resolved {
@include class.content(
map.get($resolved, (class, name)),
$pseudo-class,
$dictionary,
$function,
) {
@content($resolved);
}
}
}
}
25 changes: 25 additions & 0 deletions class/variant/_variant.create.mixin.spec.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// Modules.
@use '../../class';
@use '../../map';

@include class.variant-create((
// FEATURE: Variant 1.
// outline: 2px solid blue,
// (border, outline): 1px solid yellow,

// FEATURE: Variant 2.
// (border: (top: 10px))
// (padding, margin): ((top: top): 10px, (right: right): 20px, (bottom: bottom): 10px),

// FEATURE: Variant 3.
// (border: (start: (start: 10px)))

// FEATURE: Variant 4.
border: (start: (start: ((radius: radius): 10px))),
),
false,
(),
(), // (border: b),
) using($resolved) {
#{map.get($resolved, (property, name))}: map.get($resolved, (property, value));
};

0 comments on commit 47e5a29

Please sign in to comment.