codelation_assets 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Rakefile +3 -27
- data/app/assets/stylesheets/codelation/mixins/has_grid.scss +1 -0
- data/app/assets/stylesheets/codelation.scss +1 -1
- data/lib/codelation_assets/version.rb +1 -1
- data/lib/codelation_assets.rb +0 -1
- data/lib/tasks/compile.rake +20 -0
- data/{app/assets → vendor}/stylesheets/_normalize.scss +0 -0
- data/vendor/stylesheets/bourbon/_bourbon-deprecated-upcoming.scss +411 -0
- data/vendor/stylesheets/bourbon/_bourbon.scss +87 -0
- data/vendor/stylesheets/bourbon/addons/_border-color.scss +26 -0
- data/vendor/stylesheets/bourbon/addons/_border-radius.scss +48 -0
- data/vendor/stylesheets/bourbon/addons/_border-style.scss +25 -0
- data/vendor/stylesheets/bourbon/addons/_border-width.scss +25 -0
- data/vendor/stylesheets/bourbon/addons/_buttons.scss +64 -0
- data/vendor/stylesheets/bourbon/addons/_clearfix.scss +25 -0
- data/vendor/stylesheets/bourbon/addons/_ellipsis.scss +30 -0
- data/vendor/stylesheets/bourbon/addons/_font-stacks.scss +31 -0
- data/vendor/stylesheets/bourbon/addons/_hide-text.scss +27 -0
- data/vendor/stylesheets/bourbon/addons/_margin.scss +26 -0
- data/vendor/stylesheets/bourbon/addons/_padding.scss +26 -0
- data/vendor/stylesheets/bourbon/addons/_position.scss +48 -0
- data/vendor/stylesheets/bourbon/addons/_prefixer.scss +66 -0
- data/vendor/stylesheets/bourbon/addons/_retina-image.scss +25 -0
- data/vendor/stylesheets/bourbon/addons/_size.scss +51 -0
- data/vendor/stylesheets/bourbon/addons/_text-inputs.scss +113 -0
- data/vendor/stylesheets/bourbon/addons/_timing-functions.scss +34 -0
- data/vendor/stylesheets/bourbon/addons/_triangle.scss +63 -0
- data/vendor/stylesheets/bourbon/addons/_word-wrap.scss +29 -0
- data/vendor/stylesheets/bourbon/css3/_animation.scss +43 -0
- data/vendor/stylesheets/bourbon/css3/_appearance.scss +3 -0
- data/vendor/stylesheets/bourbon/css3/_backface-visibility.scss +3 -0
- data/vendor/stylesheets/bourbon/css3/_background-image.scss +42 -0
- data/vendor/stylesheets/bourbon/css3/_background.scss +55 -0
- data/vendor/stylesheets/bourbon/css3/_border-image.scss +59 -0
- data/vendor/stylesheets/bourbon/css3/_calc.scss +4 -0
- data/vendor/stylesheets/bourbon/css3/_columns.scss +47 -0
- data/vendor/stylesheets/bourbon/css3/_filter.scss +4 -0
- data/vendor/stylesheets/bourbon/css3/_flex-box.scss +287 -0
- data/vendor/stylesheets/bourbon/css3/_font-face.scss +24 -0
- data/vendor/stylesheets/bourbon/css3/_font-feature-settings.scss +4 -0
- data/vendor/stylesheets/bourbon/css3/_hidpi-media-query.scss +10 -0
- data/vendor/stylesheets/bourbon/css3/_hyphens.scss +4 -0
- data/vendor/stylesheets/bourbon/css3/_image-rendering.scss +14 -0
- data/vendor/stylesheets/bourbon/css3/_keyframes.scss +36 -0
- data/vendor/stylesheets/bourbon/css3/_linear-gradient.scss +38 -0
- data/vendor/stylesheets/bourbon/css3/_perspective.scss +8 -0
- data/vendor/stylesheets/bourbon/css3/_placeholder.scss +8 -0
- data/vendor/stylesheets/bourbon/css3/_radial-gradient.scss +39 -0
- data/vendor/stylesheets/bourbon/css3/_selection.scss +42 -0
- data/vendor/stylesheets/bourbon/css3/_text-decoration.scss +19 -0
- data/vendor/stylesheets/bourbon/css3/_transform.scss +15 -0
- data/vendor/stylesheets/bourbon/css3/_transition.scss +71 -0
- data/vendor/stylesheets/bourbon/css3/_user-select.scss +3 -0
- data/vendor/stylesheets/bourbon/functions/_assign-inputs.scss +11 -0
- data/vendor/stylesheets/bourbon/functions/_contains-falsy.scss +20 -0
- data/vendor/stylesheets/bourbon/functions/_contains.scss +26 -0
- data/vendor/stylesheets/bourbon/functions/_is-length.scss +11 -0
- data/vendor/stylesheets/bourbon/functions/_is-light.scss +21 -0
- data/vendor/stylesheets/bourbon/functions/_is-number.scss +11 -0
- data/vendor/stylesheets/bourbon/functions/_is-size.scss +13 -0
- data/vendor/stylesheets/bourbon/functions/_modular-scale.scss +69 -0
- data/vendor/stylesheets/bourbon/functions/_px-to-em.scss +13 -0
- data/vendor/stylesheets/bourbon/functions/_px-to-rem.scss +15 -0
- data/vendor/stylesheets/bourbon/functions/_shade.scss +24 -0
- data/vendor/stylesheets/bourbon/functions/_strip-units.scss +17 -0
- data/vendor/stylesheets/bourbon/functions/_tint.scss +24 -0
- data/vendor/stylesheets/bourbon/functions/_transition-property-name.scss +22 -0
- data/vendor/stylesheets/bourbon/functions/_unpack.scss +27 -0
- data/vendor/stylesheets/bourbon/helpers/_convert-units.scss +21 -0
- data/vendor/stylesheets/bourbon/helpers/_directional-values.scss +96 -0
- data/vendor/stylesheets/bourbon/helpers/_font-source-declaration.scss +43 -0
- data/vendor/stylesheets/bourbon/helpers/_gradient-positions-parser.scss +13 -0
- data/vendor/stylesheets/bourbon/helpers/_linear-angle-parser.scss +25 -0
- data/vendor/stylesheets/bourbon/helpers/_linear-gradient-parser.scss +41 -0
- data/vendor/stylesheets/bourbon/helpers/_linear-positions-parser.scss +61 -0
- data/vendor/stylesheets/bourbon/helpers/_linear-side-corner-parser.scss +31 -0
- data/vendor/stylesheets/bourbon/helpers/_radial-arg-parser.scss +69 -0
- data/vendor/stylesheets/bourbon/helpers/_radial-gradient-parser.scss +50 -0
- data/vendor/stylesheets/bourbon/helpers/_radial-positions-parser.scss +18 -0
- data/vendor/stylesheets/bourbon/helpers/_render-gradients.scss +26 -0
- data/vendor/stylesheets/bourbon/helpers/_shape-size-stripper.scss +10 -0
- data/vendor/stylesheets/bourbon/helpers/_str-to-num.scss +50 -0
- data/vendor/stylesheets/bourbon/settings/_asset-pipeline.scss +7 -0
- data/vendor/stylesheets/bourbon/settings/_prefixer.scss +9 -0
- data/vendor/stylesheets/bourbon/settings/_px-to-em.scss +1 -0
- metadata +96 -17
@@ -0,0 +1,14 @@
|
|
1
|
+
@mixin image-rendering ($mode:auto) {
|
2
|
+
|
3
|
+
@if ($mode == crisp-edges) {
|
4
|
+
-ms-interpolation-mode: nearest-neighbor; // IE8+
|
5
|
+
image-rendering: -moz-crisp-edges;
|
6
|
+
image-rendering: -o-crisp-edges;
|
7
|
+
image-rendering: -webkit-optimize-contrast;
|
8
|
+
image-rendering: crisp-edges;
|
9
|
+
}
|
10
|
+
|
11
|
+
@else {
|
12
|
+
image-rendering: $mode;
|
13
|
+
}
|
14
|
+
}
|
@@ -0,0 +1,36 @@
|
|
1
|
+
// Adds keyframes blocks for supported prefixes, removing redundant prefixes in the block's content
|
2
|
+
@mixin keyframes($name) {
|
3
|
+
$original-prefix-for-webkit: $prefix-for-webkit;
|
4
|
+
$original-prefix-for-mozilla: $prefix-for-mozilla;
|
5
|
+
$original-prefix-for-microsoft: $prefix-for-microsoft;
|
6
|
+
$original-prefix-for-opera: $prefix-for-opera;
|
7
|
+
$original-prefix-for-spec: $prefix-for-spec;
|
8
|
+
|
9
|
+
@if $original-prefix-for-webkit {
|
10
|
+
@include disable-prefix-for-all();
|
11
|
+
$prefix-for-webkit: true !global;
|
12
|
+
@-webkit-keyframes #{$name} {
|
13
|
+
@content;
|
14
|
+
}
|
15
|
+
}
|
16
|
+
|
17
|
+
@if $original-prefix-for-mozilla {
|
18
|
+
@include disable-prefix-for-all();
|
19
|
+
$prefix-for-mozilla: true !global;
|
20
|
+
@-moz-keyframes #{$name} {
|
21
|
+
@content;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
|
25
|
+
$prefix-for-webkit: $original-prefix-for-webkit !global;
|
26
|
+
$prefix-for-mozilla: $original-prefix-for-mozilla !global;
|
27
|
+
$prefix-for-microsoft: $original-prefix-for-microsoft !global;
|
28
|
+
$prefix-for-opera: $original-prefix-for-opera !global;
|
29
|
+
$prefix-for-spec: $original-prefix-for-spec !global;
|
30
|
+
|
31
|
+
@if $original-prefix-for-spec {
|
32
|
+
@keyframes #{$name} {
|
33
|
+
@content;
|
34
|
+
}
|
35
|
+
}
|
36
|
+
}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
@mixin linear-gradient($pos, $g1, $g2: null,
|
2
|
+
$g3: null, $g4: null,
|
3
|
+
$g5: null, $g6: null,
|
4
|
+
$g7: null, $g8: null,
|
5
|
+
$g9: null, $g10: null,
|
6
|
+
$fallback: null) {
|
7
|
+
// Detect what type of value exists in $pos
|
8
|
+
$pos-type: type-of(nth($pos, 1));
|
9
|
+
$pos-spec: null;
|
10
|
+
$pos-degree: null;
|
11
|
+
|
12
|
+
// If $pos is missing from mixin, reassign vars and add default position
|
13
|
+
@if ($pos-type == color) or (nth($pos, 1) == "transparent") {
|
14
|
+
$g10: $g9; $g9: $g8; $g8: $g7; $g7: $g6; $g6: $g5;
|
15
|
+
$g5: $g4; $g4: $g3; $g3: $g2; $g2: $g1; $g1: $pos;
|
16
|
+
$pos: null;
|
17
|
+
}
|
18
|
+
|
19
|
+
@if $pos {
|
20
|
+
$positions: _linear-positions-parser($pos);
|
21
|
+
$pos-degree: nth($positions, 1);
|
22
|
+
$pos-spec: nth($positions, 2);
|
23
|
+
}
|
24
|
+
|
25
|
+
$full: $g1, $g2, $g3, $g4, $g5, $g6, $g7, $g8, $g9, $g10;
|
26
|
+
|
27
|
+
// Set $g1 as the default fallback color
|
28
|
+
$fallback-color: nth($g1, 1);
|
29
|
+
|
30
|
+
// If $fallback is a color use that color as the fallback color
|
31
|
+
@if (type-of($fallback) == color) or ($fallback == "transparent") {
|
32
|
+
$fallback-color: $fallback;
|
33
|
+
}
|
34
|
+
|
35
|
+
background-color: $fallback-color;
|
36
|
+
background-image: -webkit-linear-gradient($pos-degree $full); // Safari 5.1+, Chrome
|
37
|
+
background-image: unquote("linear-gradient(#{$pos-spec}#{$full})");
|
38
|
+
}
|
@@ -0,0 +1,39 @@
|
|
1
|
+
// Requires Sass 3.1+
|
2
|
+
@mixin radial-gradient($g1, $g2,
|
3
|
+
$g3: null, $g4: null,
|
4
|
+
$g5: null, $g6: null,
|
5
|
+
$g7: null, $g8: null,
|
6
|
+
$g9: null, $g10: null,
|
7
|
+
$pos: null,
|
8
|
+
$shape-size: null,
|
9
|
+
$fallback: null) {
|
10
|
+
|
11
|
+
$data: _radial-arg-parser($g1, $g2, $pos, $shape-size);
|
12
|
+
$g1: nth($data, 1);
|
13
|
+
$g2: nth($data, 2);
|
14
|
+
$pos: nth($data, 3);
|
15
|
+
$shape-size: nth($data, 4);
|
16
|
+
|
17
|
+
$full: $g1, $g2, $g3, $g4, $g5, $g6, $g7, $g8, $g9, $g10;
|
18
|
+
|
19
|
+
// Strip deprecated cover/contain for spec
|
20
|
+
$shape-size-spec: _shape-size-stripper($shape-size);
|
21
|
+
|
22
|
+
// Set $g1 as the default fallback color
|
23
|
+
$first-color: nth($full, 1);
|
24
|
+
$fallback-color: nth($first-color, 1);
|
25
|
+
|
26
|
+
@if (type-of($fallback) == color) or ($fallback == "transparent") {
|
27
|
+
$fallback-color: $fallback;
|
28
|
+
}
|
29
|
+
|
30
|
+
// Add Commas and spaces
|
31
|
+
$shape-size: if($shape-size, "#{$shape-size}, ", null);
|
32
|
+
$pos: if($pos, "#{$pos}, ", null);
|
33
|
+
$pos-spec: if($pos, "at #{$pos}", null);
|
34
|
+
$shape-size-spec: if(($shape-size-spec != " ") and ($pos == null), "#{$shape-size-spec}, ", "#{$shape-size-spec} ");
|
35
|
+
|
36
|
+
background-color: $fallback-color;
|
37
|
+
background-image: -webkit-radial-gradient(unquote(#{$pos}#{$shape-size}#{$full}));
|
38
|
+
background-image: unquote("radial-gradient(#{$shape-size-spec}#{$pos-spec}#{$full})");
|
39
|
+
}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
@charset "UTF-8";
|
2
|
+
|
3
|
+
/// Outputs the spec and prefixed versions of the `::selection` pseudo-element.
|
4
|
+
///
|
5
|
+
/// @param {Bool} $current-selector [false]
|
6
|
+
/// If set to `true`, it takes the current element into consideration.
|
7
|
+
///
|
8
|
+
/// @example scss - Usage
|
9
|
+
/// .element {
|
10
|
+
/// @include selection(true) {
|
11
|
+
/// background-color: #ffbb52;
|
12
|
+
/// }
|
13
|
+
/// }
|
14
|
+
///
|
15
|
+
/// @example css - CSS Output
|
16
|
+
/// .element::-moz-selection {
|
17
|
+
/// background-color: #ffbb52;
|
18
|
+
/// }
|
19
|
+
///
|
20
|
+
/// .element::selection {
|
21
|
+
/// background-color: #ffbb52;
|
22
|
+
/// }
|
23
|
+
|
24
|
+
@mixin selection($current-selector: false) {
|
25
|
+
@if $current-selector {
|
26
|
+
&::-moz-selection {
|
27
|
+
@content;
|
28
|
+
}
|
29
|
+
|
30
|
+
&::selection {
|
31
|
+
@content;
|
32
|
+
}
|
33
|
+
} @else {
|
34
|
+
::-moz-selection {
|
35
|
+
@content;
|
36
|
+
}
|
37
|
+
|
38
|
+
::selection {
|
39
|
+
@content;
|
40
|
+
}
|
41
|
+
}
|
42
|
+
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
@mixin text-decoration($value) {
|
2
|
+
// <text-decoration-line> || <text-decoration-style> || <text-decoration-color>
|
3
|
+
@include prefixer(text-decoration, $value, moz);
|
4
|
+
}
|
5
|
+
|
6
|
+
@mixin text-decoration-line($line: none) {
|
7
|
+
// none || underline || overline || line-through
|
8
|
+
@include prefixer(text-decoration-line, $line, moz);
|
9
|
+
}
|
10
|
+
|
11
|
+
@mixin text-decoration-style($style: solid) {
|
12
|
+
// solid || double || dotted || dashed || wavy
|
13
|
+
@include prefixer(text-decoration-style, $style, moz webkit);
|
14
|
+
}
|
15
|
+
|
16
|
+
@mixin text-decoration-color($color: currentColor) {
|
17
|
+
// currentColor || <color>
|
18
|
+
@include prefixer(text-decoration-color, $color, moz);
|
19
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
@mixin transform($property: none) {
|
2
|
+
// none | <transform-function>
|
3
|
+
@include prefixer(transform, $property, webkit moz ms o spec);
|
4
|
+
}
|
5
|
+
|
6
|
+
@mixin transform-origin($axes: 50%) {
|
7
|
+
// x-axis - left | center | right | length | %
|
8
|
+
// y-axis - top | center | bottom | length | %
|
9
|
+
// z-axis - length
|
10
|
+
@include prefixer(transform-origin, $axes, webkit moz ms o spec);
|
11
|
+
}
|
12
|
+
|
13
|
+
@mixin transform-style($style: flat) {
|
14
|
+
@include prefixer(transform-style, $style, webkit moz ms o spec);
|
15
|
+
}
|
@@ -0,0 +1,71 @@
|
|
1
|
+
// Shorthand mixin. Supports multiple parentheses-deliminated values for each variable.
|
2
|
+
// Example: @include transition (all 2s ease-in-out);
|
3
|
+
// @include transition (opacity 1s ease-in 2s, width 2s ease-out);
|
4
|
+
// @include transition-property (transform, opacity);
|
5
|
+
|
6
|
+
@mixin transition($properties...) {
|
7
|
+
// Fix for vendor-prefix transform property
|
8
|
+
$needs-prefixes: false;
|
9
|
+
$webkit: ();
|
10
|
+
$moz: ();
|
11
|
+
$spec: ();
|
12
|
+
|
13
|
+
// Create lists for vendor-prefixed transform
|
14
|
+
@each $list in $properties {
|
15
|
+
@if nth($list, 1) == "transform" {
|
16
|
+
$needs-prefixes: true;
|
17
|
+
$list1: -webkit-transform;
|
18
|
+
$list2: -moz-transform;
|
19
|
+
$list3: ();
|
20
|
+
|
21
|
+
@each $var in $list {
|
22
|
+
$list3: join($list3, $var);
|
23
|
+
|
24
|
+
@if $var != "transform" {
|
25
|
+
$list1: join($list1, $var);
|
26
|
+
$list2: join($list2, $var);
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
$webkit: append($webkit, $list1);
|
31
|
+
$moz: append($moz, $list2);
|
32
|
+
$spec: append($spec, $list3);
|
33
|
+
} @else {
|
34
|
+
$webkit: append($webkit, $list, comma);
|
35
|
+
$moz: append($moz, $list, comma);
|
36
|
+
$spec: append($spec, $list, comma);
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
40
|
+
@if $needs-prefixes {
|
41
|
+
-webkit-transition: $webkit;
|
42
|
+
-moz-transition: $moz;
|
43
|
+
transition: $spec;
|
44
|
+
} @else {
|
45
|
+
@if length($properties) >= 1 {
|
46
|
+
@include prefixer(transition, $properties, webkit moz spec);
|
47
|
+
} @else {
|
48
|
+
$properties: all 0.15s ease-out 0s;
|
49
|
+
@include prefixer(transition, $properties, webkit moz spec);
|
50
|
+
}
|
51
|
+
}
|
52
|
+
}
|
53
|
+
|
54
|
+
@mixin transition-property($properties...) {
|
55
|
+
-webkit-transition-property: transition-property-names($properties, "webkit");
|
56
|
+
-moz-transition-property: transition-property-names($properties, "moz");
|
57
|
+
transition-property: transition-property-names($properties, false);
|
58
|
+
}
|
59
|
+
|
60
|
+
@mixin transition-duration($times...) {
|
61
|
+
@include prefixer(transition-duration, $times, webkit moz spec);
|
62
|
+
}
|
63
|
+
|
64
|
+
@mixin transition-timing-function($motions...) {
|
65
|
+
// ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier()
|
66
|
+
@include prefixer(transition-timing-function, $motions, webkit moz spec);
|
67
|
+
}
|
68
|
+
|
69
|
+
@mixin transition-delay($times...) {
|
70
|
+
@include prefixer(transition-delay, $times, webkit moz spec);
|
71
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
@charset "UTF-8";
|
2
|
+
|
3
|
+
/// Checks if a list does not contains a value.
|
4
|
+
///
|
5
|
+
/// @access private
|
6
|
+
///
|
7
|
+
/// @param {List} $list
|
8
|
+
/// The list to check against.
|
9
|
+
///
|
10
|
+
/// @return {Bool}
|
11
|
+
|
12
|
+
@function contains-falsy($list) {
|
13
|
+
@each $item in $list {
|
14
|
+
@if not $item {
|
15
|
+
@return true;
|
16
|
+
}
|
17
|
+
}
|
18
|
+
|
19
|
+
@return false;
|
20
|
+
}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
@charset "UTF-8";
|
2
|
+
|
3
|
+
/// Checks if a list contains a value(s).
|
4
|
+
///
|
5
|
+
/// @access private
|
6
|
+
///
|
7
|
+
/// @param {List} $list
|
8
|
+
/// The list to check against.
|
9
|
+
///
|
10
|
+
/// @param {List} $values
|
11
|
+
/// A single value or list of values to check for.
|
12
|
+
///
|
13
|
+
/// @example scss - Usage
|
14
|
+
/// contains($list, $value)
|
15
|
+
///
|
16
|
+
/// @return {Bool}
|
17
|
+
|
18
|
+
@function contains($list, $values...) {
|
19
|
+
@each $value in $values {
|
20
|
+
@if type-of(index($list, $value)) != "number" {
|
21
|
+
@return false;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
|
25
|
+
@return true;
|
26
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
@charset "UTF-8";
|
2
|
+
|
3
|
+
/// Checks for a valid CSS length.
|
4
|
+
///
|
5
|
+
/// @param {String} $value
|
6
|
+
|
7
|
+
@function is-length($value) {
|
8
|
+
@return type-of($value) != "null" and (str-slice($value + "", 1, 4) == "calc"
|
9
|
+
or index(auto inherit initial 0, $value)
|
10
|
+
or (type-of($value) == "number" and not(unitless($value))));
|
11
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
@charset "UTF-8";
|
2
|
+
|
3
|
+
/// Programatically determines whether a color is light or dark.
|
4
|
+
///
|
5
|
+
/// @link http://robots.thoughtbot.com/closer-look-color-lightness
|
6
|
+
///
|
7
|
+
/// @param {Color (Hex)} $color
|
8
|
+
///
|
9
|
+
/// @example scss - Usage
|
10
|
+
/// is-light($color)
|
11
|
+
///
|
12
|
+
/// @return {Bool}
|
13
|
+
|
14
|
+
@function is-light($hex-color) {
|
15
|
+
$-local-red: red(rgba($hex-color, 1));
|
16
|
+
$-local-green: green(rgba($hex-color, 1));
|
17
|
+
$-local-blue: blue(rgba($hex-color, 1));
|
18
|
+
$-local-lightness: ($-local-red * 0.2126 + $-local-green * 0.7152 + $-local-blue * 0.0722) / 255;
|
19
|
+
|
20
|
+
@return $-local-lightness > 0.6;
|
21
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
@charset "UTF-8";
|
2
|
+
|
3
|
+
/// Checks for a valid CSS size.
|
4
|
+
///
|
5
|
+
/// @param {String} $value
|
6
|
+
///
|
7
|
+
/// @require {function} contains
|
8
|
+
/// @require {function} is-length
|
9
|
+
|
10
|
+
@function is-size($value) {
|
11
|
+
@return is-length($value)
|
12
|
+
or contains("fill" "fit-content" "min-content" "max-content", $value);
|
13
|
+
}
|
@@ -0,0 +1,69 @@
|
|
1
|
+
// Scaling Variables
|
2
|
+
$golden: 1.618;
|
3
|
+
$minor-second: 1.067;
|
4
|
+
$major-second: 1.125;
|
5
|
+
$minor-third: 1.2;
|
6
|
+
$major-third: 1.25;
|
7
|
+
$perfect-fourth: 1.333;
|
8
|
+
$augmented-fourth: 1.414;
|
9
|
+
$perfect-fifth: 1.5;
|
10
|
+
$minor-sixth: 1.6;
|
11
|
+
$major-sixth: 1.667;
|
12
|
+
$minor-seventh: 1.778;
|
13
|
+
$major-seventh: 1.875;
|
14
|
+
$octave: 2;
|
15
|
+
$major-tenth: 2.5;
|
16
|
+
$major-eleventh: 2.667;
|
17
|
+
$major-twelfth: 3;
|
18
|
+
$double-octave: 4;
|
19
|
+
|
20
|
+
$modular-scale-ratio: $perfect-fourth !default;
|
21
|
+
$modular-scale-base: em($em-base) !default;
|
22
|
+
|
23
|
+
@function modular-scale($increment, $value: $modular-scale-base, $ratio: $modular-scale-ratio) {
|
24
|
+
$v1: nth($value, 1);
|
25
|
+
$v2: nth($value, length($value));
|
26
|
+
$value: $v1;
|
27
|
+
|
28
|
+
// scale $v2 to just above $v1
|
29
|
+
@while $v2 > $v1 {
|
30
|
+
$v2: ($v2 / $ratio); // will be off-by-1
|
31
|
+
}
|
32
|
+
@while $v2 < $v1 {
|
33
|
+
$v2: ($v2 * $ratio); // will fix off-by-1
|
34
|
+
}
|
35
|
+
|
36
|
+
// check AFTER scaling $v2 to prevent double-counting corner-case
|
37
|
+
$double-stranded: $v2 > $v1;
|
38
|
+
|
39
|
+
@if $increment > 0 {
|
40
|
+
@for $i from 1 through $increment {
|
41
|
+
@if $double-stranded and ($v1 * $ratio) > $v2 {
|
42
|
+
$value: $v2;
|
43
|
+
$v2: ($v2 * $ratio);
|
44
|
+
} @else {
|
45
|
+
$v1: ($v1 * $ratio);
|
46
|
+
$value: $v1;
|
47
|
+
}
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
@if $increment < 0 {
|
52
|
+
// adjust $v2 to just below $v1
|
53
|
+
@if $double-stranded {
|
54
|
+
$v2: ($v2 / $ratio);
|
55
|
+
}
|
56
|
+
|
57
|
+
@for $i from $increment through -1 {
|
58
|
+
@if $double-stranded and ($v1 / $ratio) < $v2 {
|
59
|
+
$value: $v2;
|
60
|
+
$v2: ($v2 / $ratio);
|
61
|
+
} @else {
|
62
|
+
$v1: ($v1 / $ratio);
|
63
|
+
$value: $v1;
|
64
|
+
}
|
65
|
+
}
|
66
|
+
}
|
67
|
+
|
68
|
+
@return $value;
|
69
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
// Convert pixels to ems
|
2
|
+
// eg. for a relational value of 12px write em(12) when the parent is 16px
|
3
|
+
// if the parent is another value say 24px write em(12, 24)
|
4
|
+
|
5
|
+
@function em($pxval, $base: $em-base) {
|
6
|
+
@if not unitless($pxval) {
|
7
|
+
$pxval: strip-units($pxval);
|
8
|
+
}
|
9
|
+
@if not unitless($base) {
|
10
|
+
$base: strip-units($base);
|
11
|
+
}
|
12
|
+
@return ($pxval / $base) * 1em;
|
13
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
// Convert pixels to rems
|
2
|
+
// eg. for a relational value of 12px write rem(12)
|
3
|
+
// Assumes $em-base is the font-size of <html>
|
4
|
+
|
5
|
+
@function rem($pxval) {
|
6
|
+
@if not unitless($pxval) {
|
7
|
+
$pxval: strip-units($pxval);
|
8
|
+
}
|
9
|
+
|
10
|
+
$base: $em-base;
|
11
|
+
@if not unitless($base) {
|
12
|
+
$base: strip-units($base);
|
13
|
+
}
|
14
|
+
@return ($pxval / $base) * 1rem;
|
15
|
+
}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
@charset "UTF-8";
|
2
|
+
|
3
|
+
/// Mixes a color with black.
|
4
|
+
///
|
5
|
+
/// @param {Color} $color
|
6
|
+
///
|
7
|
+
/// @param {Number (Percentage)} $percent
|
8
|
+
/// The amount of black to be mixed in.
|
9
|
+
///
|
10
|
+
/// @example scss - Usage
|
11
|
+
/// .element {
|
12
|
+
/// background-color: shade(#ffbb52, 60%);
|
13
|
+
/// }
|
14
|
+
///
|
15
|
+
/// @example css - CSS Output
|
16
|
+
/// .element {
|
17
|
+
/// background-color: #664a20;
|
18
|
+
/// }
|
19
|
+
///
|
20
|
+
/// @return {Color}
|
21
|
+
|
22
|
+
@function shade($color, $percent) {
|
23
|
+
@return mix(#000, $color, $percent);
|
24
|
+
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
@charset "UTF-8";
|
2
|
+
|
3
|
+
/// Strips the unit from a number.
|
4
|
+
///
|
5
|
+
/// @param {Number (With Unit)} $value
|
6
|
+
///
|
7
|
+
/// @example scss - Usage
|
8
|
+
/// $dimension: strip-units(10em);
|
9
|
+
///
|
10
|
+
/// @example css - CSS Output
|
11
|
+
/// $dimension: 10;
|
12
|
+
///
|
13
|
+
/// @return {Number (Unitless)}
|
14
|
+
|
15
|
+
@function strip-units($value) {
|
16
|
+
@return ($value / ($value * 0 + 1));
|
17
|
+
}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
@charset "UTF-8";
|
2
|
+
|
3
|
+
/// Mixes a color with white.
|
4
|
+
///
|
5
|
+
/// @param {Color} $color
|
6
|
+
///
|
7
|
+
/// @param {Number (Percentage)} $percent
|
8
|
+
/// The amount of white to be mixed in.
|
9
|
+
///
|
10
|
+
/// @example scss - Usage
|
11
|
+
/// .element {
|
12
|
+
/// background-color: tint(#6ecaa6, 40%);
|
13
|
+
/// }
|
14
|
+
///
|
15
|
+
/// @example css - CSS Output
|
16
|
+
/// .element {
|
17
|
+
/// background-color: #a8dfc9;
|
18
|
+
/// }
|
19
|
+
///
|
20
|
+
/// @return {Color}
|
21
|
+
|
22
|
+
@function tint($color, $percent) {
|
23
|
+
@return mix(#fff, $color, $percent);
|
24
|
+
}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
// Return vendor-prefixed property names if appropriate
|
2
|
+
// Example: transition-property-names((transform, color, background), moz) -> -moz-transform, color, background
|
3
|
+
//************************************************************************//
|
4
|
+
@function transition-property-names($props, $vendor: false) {
|
5
|
+
$new-props: ();
|
6
|
+
|
7
|
+
@each $prop in $props {
|
8
|
+
$new-props: append($new-props, transition-property-name($prop, $vendor), comma);
|
9
|
+
}
|
10
|
+
|
11
|
+
@return $new-props;
|
12
|
+
}
|
13
|
+
|
14
|
+
@function transition-property-name($prop, $vendor: false) {
|
15
|
+
// put other properties that need to be prefixed here aswell
|
16
|
+
@if $vendor and $prop == transform {
|
17
|
+
@return unquote('-'+$vendor+'-'+$prop);
|
18
|
+
}
|
19
|
+
@else {
|
20
|
+
@return $prop;
|
21
|
+
}
|
22
|
+
}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
@charset "UTF-8";
|
2
|
+
|
3
|
+
/// Converts shorthand to the 4-value syntax.
|
4
|
+
///
|
5
|
+
/// @param {List} $shorthand
|
6
|
+
///
|
7
|
+
/// @example scss - Usage
|
8
|
+
/// .element {
|
9
|
+
/// margin: unpack(1em 2em);
|
10
|
+
/// }
|
11
|
+
///
|
12
|
+
/// @example css - CSS Output
|
13
|
+
/// .element {
|
14
|
+
/// margin: 1em 2em 1em 2em;
|
15
|
+
/// }
|
16
|
+
|
17
|
+
@function unpack($shorthand) {
|
18
|
+
@if length($shorthand) == 1 {
|
19
|
+
@return nth($shorthand, 1) nth($shorthand, 1) nth($shorthand, 1) nth($shorthand, 1);
|
20
|
+
} @else if length($shorthand) == 2 {
|
21
|
+
@return nth($shorthand, 1) nth($shorthand, 2) nth($shorthand, 1) nth($shorthand, 2);
|
22
|
+
} @else if length($shorthand) == 3 {
|
23
|
+
@return nth($shorthand, 1) nth($shorthand, 2) nth($shorthand, 3) nth($shorthand, 2);
|
24
|
+
} @else {
|
25
|
+
@return $shorthand;
|
26
|
+
}
|
27
|
+
}
|