bourbon 5.0.1 → 7.1.0

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.
Files changed (57) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +6 -16
  3. data/.hound.yml +4 -1
  4. data/.npmignore +2 -3
  5. data/.stylelintrc.json +3 -0
  6. data/.tool-versions +2 -1
  7. data/CHANGELOG.md +46 -3
  8. data/CONTRIBUTING.md +5 -1
  9. data/LICENSE.md +1 -1
  10. data/README.md +4 -20
  11. data/RELEASING.md +8 -11
  12. data/bourbon.gemspec +3 -4
  13. data/core/_bourbon.scss +2 -2
  14. data/core/bourbon/helpers/_scales.scss +16 -16
  15. data/core/bourbon/library/_contrast-switch.scss +3 -3
  16. data/core/bourbon/library/_font-face.scss +6 -6
  17. data/core/bourbon/library/_font-stacks.scss +2 -3
  18. data/core/bourbon/library/_hide-visually.scss +1 -1
  19. data/core/bourbon/library/_modular-scale.scss +7 -5
  20. data/core/bourbon/library/_overflow-wrap.scss +1 -0
  21. data/core/bourbon/library/_position.scss +4 -4
  22. data/core/bourbon/library/_shade.scss +1 -1
  23. data/core/bourbon/library/_size.scss +2 -2
  24. data/core/bourbon/library/_strip-unit.scss +3 -1
  25. data/core/bourbon/library/_timing-functions.scss +24 -26
  26. data/core/bourbon/library/_tint.scss +1 -1
  27. data/core/bourbon/library/_triangle.scss +6 -6
  28. data/core/bourbon/settings/_settings.scss +4 -4
  29. data/core/bourbon/utilities/_compact-shorthand.scss +9 -6
  30. data/core/bourbon/utilities/_contrast-ratio.scss +4 -2
  31. data/core/bourbon/utilities/_directional-property.scss +4 -6
  32. data/core/bourbon/utilities/_font-source-declaration.scss +10 -9
  33. data/core/bourbon/utilities/_gamma.scss +10 -5
  34. data/core/bourbon/utilities/_lightness.scss +5 -3
  35. data/core/bourbon/validators/_is-length.scss +8 -3
  36. data/core/bourbon/validators/_is-size.scss +1 -1
  37. data/lib/bourbon/version.rb +1 -1
  38. data/lib/bourbon.rb +6 -3
  39. data/package-lock.json +6636 -0
  40. data/package.json +8 -1
  41. data/spec/bourbon/library/font_face_spec_1.rb +2 -2
  42. data/spec/bourbon/library/font_face_spec_2.rb +2 -3
  43. data/spec/bourbon/library/font_face_spec_3.rb +1 -1
  44. data/spec/bourbon/library/font_stacks_spec.rb +4 -4
  45. data/spec/bourbon/utilities/font_source_declaration_spec.rb +4 -10
  46. data/spec/bourbon/utilities/gamma_spec.rb +1 -1
  47. data/spec/bourbon/utilities/lightness_spec.rb +1 -1
  48. data/spec/bourbon/validators/is_length_spec.rb +12 -0
  49. data/spec/fixtures/utilities/font-source-declaration.scss +1 -1
  50. data/spec/fixtures/validators/is-length.scss +8 -0
  51. data/spec/support/sass_support.rb +2 -2
  52. metadata +19 -39
  53. data/.ruby-version +0 -1
  54. data/.scss-lint.yml +0 -247
  55. data/bower.json +0 -39
  56. data/spec/bourbon/library/font_face_spec_4.rb +0 -17
  57. data/spec/fixtures/library/font-face-4.scss +0 -7
@@ -11,7 +11,7 @@
11
11
  /// @property {color} contrast-switch-light-color [#fff]
12
12
  /// Global light color for the `contrast-switch` function.
13
13
  ///
14
- /// @property {list} global-font-file-formats [("ttf", "woff2", "woff")]
14
+ /// @property {list} global-font-file-formats [("woff2", "woff")]
15
15
  /// Global font file formats for the `font-face` mixin.
16
16
  ///
17
17
  /// @property {number (with unit)} modular-scale-base [1em]
@@ -30,7 +30,7 @@
30
30
  $_bourbon-defaults: (
31
31
  "contrast-switch-dark-color": #000,
32
32
  "contrast-switch-light-color": #fff,
33
- "global-font-file-formats": ("ttf", "woff2", "woff"),
33
+ "global-font-file-formats": ("woff2", "woff"),
34
34
  "modular-scale-base": 1em,
35
35
  "modular-scale-ratio": $major-third,
36
36
  "rails-asset-pipeline": false,
@@ -48,7 +48,7 @@ $_bourbon-defaults: (
48
48
  /// @property {color} contrast-switch-light-color [#fff]
49
49
  /// Global light color for the `contrast-switch` function.
50
50
  ///
51
- /// @property {list} global-font-file-formats [("ttf", "woff2", "woff")]
51
+ /// @property {list} global-font-file-formats [("woff2", "woff")]
52
52
  /// Global font file formats for the `font-face` mixin.
53
53
  ///
54
54
  /// @property {number (with unit)} modular-scale-base [1em]
@@ -66,7 +66,7 @@ $_bourbon-defaults: (
66
66
  /// $bourbon: (
67
67
  /// "contrast-switch-dark-color": #000,
68
68
  /// "contrast-switch-light-color": #fff,
69
- /// "global-font-file-formats": ("ttf", "woff2", "woff"),
69
+ /// "global-font-file-formats": ("woff2", "woff"),
70
70
  /// "modular-scale-base": 1em,
71
71
  /// "modular-scale-ratio": $major-third,
72
72
  /// "rails-asset-pipeline": false,
@@ -1,7 +1,5 @@
1
1
  @charset "UTF-8";
2
2
 
3
- // scss-lint:disable ElsePlacement
4
-
5
3
  /// Transforms shorthand to its shortest possible form.
6
4
  ///
7
5
  /// @argument {list} $values
@@ -30,10 +28,15 @@
30
28
  @if $c == 0 { $c: 0; }
31
29
  @if $d == 0 { $d: 0; }
32
30
 
33
- @if $a == $b and $a == $c and $a == $d { $output: $a; }
34
- @else if $a == $c and $b == $d { $output: $a $b; }
35
- @else if $b == $d { $output: $a $b $c; }
36
- @else { $output: $a $b $c $d; }
31
+ @if $a == $b and $a == $c and $a == $d {
32
+ $output: $a;
33
+ } @else if $a == $c and $b == $d {
34
+ $output: $a $b;
35
+ } @else if $b == $d {
36
+ $output: $a $b $c;
37
+ } @else {
38
+ $output: $a $b $c $d;
39
+ }
37
40
 
38
41
  @return $output;
39
42
  }
@@ -19,13 +19,15 @@
19
19
  ///
20
20
  /// @access private
21
21
 
22
+ @use "sass:math";
23
+
22
24
  @function _contrast-ratio($color-1, $color-2) {
23
25
  $-local-lightness-1: _lightness($color-1) + 0.05;
24
26
  $-local-lightness-2: _lightness($color-2) + 0.05;
25
27
 
26
28
  @if $-local-lightness-1 > $-local-lightness-2 {
27
- @return $-local-lightness-1 / $-local-lightness-2;
29
+ @return math.div($-local-lightness-1, $-local-lightness-2);
28
30
  } @else {
29
- @return $-local-lightness-2 / $-local-lightness-1;
31
+ @return math.div($-local-lightness-2, $-local-lightness-1);
30
32
  }
31
33
  }
@@ -1,7 +1,5 @@
1
1
  @charset "UTF-8";
2
2
 
3
- // scss-lint:disable SpaceAroundOperator
4
-
5
3
  /// Builds directional properties by parsing CSS shorthand values. For example,
6
4
  /// a value of `10px null` will output top and bottom directional properties,
7
5
  /// but the `null` skips left and right from being output.
@@ -37,11 +35,11 @@
37
35
  $suffix,
38
36
  $values
39
37
  ) {
40
- $top: $property + "-top" + if($suffix, "-#{$suffix}", "");
38
+ $top: $property + "-top" + if($suffix, "-#{$suffix}", "");
41
39
  $bottom: $property + "-bottom" + if($suffix, "-#{$suffix}", "");
42
- $left: $property + "-left" + if($suffix, "-#{$suffix}", "");
43
- $right: $property + "-right" + if($suffix, "-#{$suffix}", "");
44
- $all: $property + if($suffix, "-#{$suffix}", "");
40
+ $left: $property + "-left" + if($suffix, "-#{$suffix}", "");
41
+ $right: $property + "-right" + if($suffix, "-#{$suffix}", "");
42
+ $all: $property + if($suffix, "-#{$suffix}", "");
45
43
 
46
44
  $values: _compact-shorthand($values);
47
45
 
@@ -27,23 +27,24 @@
27
27
  $src: ();
28
28
 
29
29
  $formats-map: (
30
- eot: "#{$file-path}.eot?#iefix" format("embedded-opentype"),
31
- woff2: "#{$file-path}.woff2" format("woff2"),
32
- woff: "#{$file-path}.woff" format("woff"),
33
- ttf: "#{$file-path}.ttf" format("truetype"),
34
- svg: "#{$file-path}.svg##{$font-family}" format("svg"),
30
+ "woff2": "#{$file-path}.woff2" format("woff2"),
31
+ "woff": "#{$file-path}.woff" format("woff"),
35
32
  );
36
33
 
37
- @each $key, $values in $formats-map {
38
- @if _contains($file-formats, $key) {
39
- $file-path: nth($values, 1);
40
- $font-format: nth($values, 2);
34
+ @each $format in $file-formats {
35
+ @if _contains(map-keys($formats-map), $format) {
36
+ $value: map-get($formats-map, $format);
37
+ $file-path: nth($value, 1);
38
+ $font-format: nth($value, 2);
41
39
 
42
40
  @if $asset-pipeline == true {
43
41
  $src: append($src, font-url($file-path) $font-format, comma);
44
42
  } @else {
45
43
  $src: append($src, url($file-path) $font-format, comma);
46
44
  }
45
+ } @else {
46
+ @error "`#{$file-formats}` contains an unsupported font file format. " +
47
+ "Must be `woff` and/or `woff2`.";
47
48
  }
48
49
  }
49
50
 
@@ -2,8 +2,7 @@
2
2
 
3
3
  /// Performs gamma correction on a single color channel.
4
4
  ///
5
- /// Note that Sass does not have a `pow()` function, so the calculation
6
- /// is approximate.
5
+ /// Note that the calculation is approximate if a `pow()` is not available.
7
6
  ///
8
7
  /// @argument {number (0-1)} $channel
9
8
  ///
@@ -11,11 +10,17 @@
11
10
  ///
12
11
  /// @access private
13
12
 
13
+ @use "sass:math";
14
+
14
15
  @function _gamma($channel) {
15
16
  @if $channel < 0.03928 {
16
- @return $channel / 12.92;
17
+ @return math.div($channel, 12.92);
17
18
  } @else {
18
- $c: ($channel + 0.055) / 1.055;
19
- @return (133 * $c * $c * $c + 155 * $c * $c) / 288;
19
+ $c: math.div($channel + 0.055, 1.055);
20
+ @if function-exists("pow") {
21
+ @return pow($c, 2.4);
22
+ } @else {
23
+ @return 0.56 * $c * $c * $c + 0.44 * $c * $c;
24
+ }
20
25
  }
21
26
  }
@@ -11,14 +11,16 @@
11
11
  ///
12
12
  /// @access private
13
13
 
14
+ @use "sass:math";
15
+
14
16
  @function _lightness($hex-color) {
15
17
  $-local-red-raw: red(rgba($hex-color, 1));
16
18
  $-local-green-raw: green(rgba($hex-color, 1));
17
19
  $-local-blue-raw: blue(rgba($hex-color, 1));
18
20
 
19
- $-local-red: _gamma($-local-red-raw / 255);
20
- $-local-green: _gamma($-local-green-raw / 255);
21
- $-local-blue: _gamma($-local-blue-raw / 255);
21
+ $-local-red: _gamma(math.div($-local-red-raw, 255));
22
+ $-local-green: _gamma(math.div($-local-green-raw, 255));
23
+ $-local-blue: _gamma(math.div($-local-blue-raw, 255));
22
24
 
23
25
  @return $-local-red * 0.2126 + $-local-green * 0.7152 + $-local-blue * 0.0722;
24
26
  }
@@ -9,7 +9,12 @@
9
9
  /// @access private
10
10
 
11
11
  @function _is-length($value) {
12
- @return type-of($value) != "null" and (str-slice($value + "", 1, 4) == "calc"
13
- or index(auto inherit initial 0, $value)
14
- or (type-of($value) == "number" and not(unitless($value))));
12
+ @return type-of($value) != "null"
13
+ and (
14
+ str-slice($value + "", 1, 4) == "calc"
15
+ or str-slice($value + "", 1, 3) == "var"
16
+ or str-slice($value + "", 1, 3) == "env"
17
+ or index(auto inherit initial 0, $value)
18
+ or (type-of($value) == "number" and not(unitless($value)))
19
+ );
15
20
  }
@@ -14,5 +14,5 @@
14
14
 
15
15
  @function _is-size($value) {
16
16
  @return _is-length($value)
17
- or _contains("fill" "fit-content" "min-content" "max-content", $value);
17
+ or _contains("fill" "fit-content" "min-content" "max-content", $value);
18
18
  }
@@ -1,3 +1,3 @@
1
1
  module Bourbon
2
- VERSION = "5.0.1"
2
+ VERSION = "7.1.0"
3
3
  end
data/lib/bourbon.rb CHANGED
@@ -1,12 +1,15 @@
1
- require "sass"
2
1
  require "bourbon/generator"
3
2
 
4
3
  module Bourbon
5
4
  if defined?(Rails) && defined?(Rails::Engine)
6
5
  class Engine < ::Rails::Engine
7
- config.assets.paths << File.expand_path("../../core", __FILE__)
6
+ config.assets.paths << File.expand_path("../core", __dir__)
8
7
  end
9
8
  else
10
- Sass.load_paths << File.expand_path("../../core", __FILE__)
9
+ begin
10
+ require "sass"
11
+ Sass.load_paths << File.expand_path("../core", __dir__)
12
+ rescue LoadError
13
+ end
11
14
  end
12
15
  end