bourbon 3.2.4 → 4.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +6 -6
  3. data/.npmignore +9 -11
  4. data/Gemfile.lock +49 -0
  5. data/{LICENSE.md → LICENSE} +10 -8
  6. data/app/assets/stylesheets/_bourbon-deprecated-upcoming.scss +3 -8
  7. data/app/assets/stylesheets/_bourbon.scss +9 -12
  8. data/app/assets/stylesheets/addons/_directional-values.scss +8 -5
  9. data/app/assets/stylesheets/addons/_html5-input-types.scss +15 -39
  10. data/app/assets/stylesheets/addons/_position.scss +5 -5
  11. data/app/assets/stylesheets/addons/_prefixer.scss +5 -5
  12. data/app/assets/stylesheets/addons/_rem.scss +33 -0
  13. data/app/assets/stylesheets/addons/_retina-image.scss +1 -1
  14. data/app/assets/stylesheets/addons/_size.scss +9 -37
  15. data/app/assets/stylesheets/addons/_timing-functions.scss +1 -1
  16. data/app/assets/stylesheets/addons/_triangle.scss +0 -1
  17. data/app/assets/stylesheets/css3/_background-image.scss +29 -35
  18. data/app/assets/stylesheets/css3/_background.scss +37 -85
  19. data/app/assets/stylesheets/css3/_border-image.scss +45 -42
  20. data/app/assets/stylesheets/css3/_flex-box.scss +14 -14
  21. data/app/assets/stylesheets/css3/_font-face.scss +1 -1
  22. data/app/assets/stylesheets/css3/_keyframes.scss +7 -7
  23. data/app/assets/stylesheets/functions/_assign.scss +11 -0
  24. data/app/assets/stylesheets/functions/_color-lightness.scss +5 -5
  25. data/app/assets/stylesheets/helpers/_convert-units.scss +15 -0
  26. data/app/assets/stylesheets/helpers/_is-num.scss +8 -0
  27. data/app/assets/stylesheets/helpers/_linear-angle-parser.scss +25 -0
  28. data/app/assets/stylesheets/helpers/_linear-gradient-parser.scss +41 -0
  29. data/app/assets/stylesheets/helpers/_linear-side-corner-parser.scss +31 -0
  30. data/app/assets/stylesheets/helpers/_radial-gradient-parser.scss +50 -0
  31. data/app/assets/stylesheets/helpers/_render-gradients.scss +2 -2
  32. data/app/assets/stylesheets/helpers/_str-to-num.scss +50 -0
  33. data/bourbon.gemspec +2 -2
  34. data/bower.json +6 -23
  35. data/dist/_bourbon-deprecated-upcoming.scss +3 -8
  36. data/dist/_bourbon.scss +9 -12
  37. data/dist/addons/_directional-values.scss +8 -5
  38. data/dist/addons/_html5-input-types.scss +15 -39
  39. data/dist/addons/_position.scss +5 -5
  40. data/dist/addons/_prefixer.scss +5 -5
  41. data/dist/addons/_rem.scss +33 -0
  42. data/dist/addons/_retina-image.scss +1 -1
  43. data/dist/addons/_size.scss +9 -37
  44. data/dist/addons/_timing-functions.scss +1 -1
  45. data/dist/addons/_triangle.scss +0 -1
  46. data/dist/css3/_background-image.scss +29 -35
  47. data/dist/css3/_background.scss +37 -85
  48. data/dist/css3/_border-image.scss +45 -42
  49. data/dist/css3/_flex-box.scss +14 -14
  50. data/dist/css3/_font-face.scss +1 -1
  51. data/dist/css3/_keyframes.scss +7 -7
  52. data/dist/functions/_assign.scss +11 -0
  53. data/dist/functions/_color-lightness.scss +5 -5
  54. data/dist/helpers/_convert-units.scss +15 -0
  55. data/dist/helpers/_is-num.scss +8 -0
  56. data/dist/helpers/_linear-angle-parser.scss +25 -0
  57. data/dist/helpers/_linear-gradient-parser.scss +41 -0
  58. data/dist/helpers/_linear-side-corner-parser.scss +31 -0
  59. data/dist/helpers/_radial-gradient-parser.scss +50 -0
  60. data/dist/helpers/_render-gradients.scss +2 -2
  61. data/dist/helpers/_str-to-num.scss +50 -0
  62. data/lib/bourbon/version.rb +1 -1
  63. data/package.json +14 -18
  64. data/readme.md +96 -0
  65. metadata +38 -33
  66. data/README.md +0 -126
  67. data/app/assets/stylesheets/addons/_word-wrap.scss +0 -8
  68. data/app/assets/stylesheets/css3/_inline-block.scss +0 -8
  69. data/app/assets/stylesheets/functions/_linear-gradient.scss +0 -13
  70. data/app/assets/stylesheets/functions/_px-to-rem.scss +0 -15
  71. data/app/assets/stylesheets/functions/_radial-gradient.scss +0 -23
  72. data/app/assets/stylesheets/settings/_asset-pipeline.scss +0 -1
  73. data/dist/addons/_word-wrap.scss +0 -8
  74. data/dist/css3/_inline-block.scss +0 -8
  75. data/dist/functions/_linear-gradient.scss +0 -13
  76. data/dist/functions/_px-to-rem.scss +0 -15
  77. data/dist/functions/_radial-gradient.scss +0 -23
  78. data/dist/settings/_asset-pipeline.scss +0 -1
@@ -1,49 +1,53 @@
1
- @mixin border-image($images) {
2
- -webkit-border-image: _border-add-prefix($images, webkit);
3
- -moz-border-image: _border-add-prefix($images, moz);
4
- -o-border-image: _border-add-prefix($images, o);
5
- border-image: _border-add-prefix($images);
6
- border-style: solid;
7
- }
1
+ @mixin border-image($borders...) {
2
+ $webkit-borders: ();
3
+ $spec-borders: ();
4
+
5
+ @each $border in $borders {
6
+ $webkit-border: ();
7
+ $spec-border: ();
8
+ $border-type: type-of($border);
9
+
10
+ @if $border-type == string or list {
11
+ $border-str: if($border-type == list, nth($border, 1), $border);
12
+
13
+ $url-str: str-slice($border-str, 0, 3);
14
+ $gradient-type: str-slice($border-str, 0, 6);
15
+
16
+ @if $url-str == "url" {
17
+ $webkit-border: $border;
18
+ $spec-border: $border;
19
+ }
20
+
21
+ @else if $gradient-type == "linear" {
22
+ $gradients: _linear-gradient-parser("#{$border}");
23
+ $webkit-border: map-get($gradients, webkit-image);
24
+ $spec-border: map-get($gradients, spec-image);
25
+ }
26
+
27
+ @else if $gradient-type == "radial" {
28
+ $gradients: _radial-gradient-parser("#{$border}");
29
+ $webkit-border: map-get($gradients, webkit-image);
30
+ $spec-border: map-get($gradients, spec-image);
31
+ }
8
32
 
9
- @function _border-add-prefix($images, $vendor: false) {
10
- $border-image: null;
11
- $images-type: type-of(nth($images, 1));
12
- $first-var: nth(nth($images, 1), 1); // Get type of Gradient (Linear || radial)
13
-
14
- // If input is a gradient
15
- @if $images-type == string {
16
- @if ($first-var == "linear") or ($first-var == "radial") {
17
- $gradient-type: nth($images, 1); // Get type of gradient (linear || radial)
18
- $gradient-pos: nth($images, 2); // Get gradient position
19
- $gradient-args: nth($images, 3); // Get actual gradient (red, blue)
20
- $gradient-positions: _gradient-positions-parser($gradient-type, $gradient-pos);
21
- $border-image: _render-gradients($gradient-positions, $gradient-args, $gradient-type, $vendor);
33
+ @else {
34
+ $webkit-border: $border;
35
+ $spec-border: $border;
36
+ }
22
37
  }
23
- // If input is a URL
38
+
24
39
  @else {
25
- $border-image: $images;
26
- }
27
- }
28
- // If input is gradient or url + additional args
29
- @else if $images-type == list {
30
- $type: type-of(nth($images, 1)); // Get type of variable - List or String
31
-
32
- // If variable is a list - Gradient
33
- @if $type == list {
34
- $gradient: nth($images, 1);
35
- $gradient-type: nth($gradient, 1); // Get type of gradient (linear || radial)
36
- $gradient-pos: nth($gradient, 2); // Get gradient position
37
- $gradient-args: nth($gradient, 3); // Get actual gradient (red, blue)
38
- $gradient-positions: _gradient-positions-parser($gradient-type, $gradient-pos);
39
- $border-image: _render-gradients($gradient-positions, $gradient-args, $gradient-type, $vendor);
40
-
41
- @for $i from 2 through length($images) {
42
- $border-image: append($border-image, nth($images, $i));
43
- }
40
+ $webkit-border: $border;
41
+ $spec-border: $border;
44
42
  }
43
+
44
+ $webkit-borders: append($webkit-borders, $webkit-border, comma);
45
+ $spec-borders: append($spec-borders, $spec-border, comma);
45
46
  }
46
- @return $border-image;
47
+
48
+ -webkit-border-image: $webkit-borders;
49
+ border-image: $spec-borders;
50
+ border-style: solid;
47
51
  }
48
52
 
49
53
  //Examples:
@@ -53,4 +57,3 @@
53
57
  // @include border-image(linear-gradient(45deg, orange, yellow) stretch);
54
58
  // @include border-image(linear-gradient(45deg, orange, yellow) 20 30 40 50 stretch round);
55
59
  // @include border-image(radial-gradient(top, cover, orange, yellow, orange));
56
-
@@ -78,7 +78,7 @@
78
78
  display: flex;
79
79
  }
80
80
 
81
- @else if $value == "inline-flex" {
81
+ @elseif $value == "inline-flex" {
82
82
  display: -webkit-inline-box;
83
83
  display: -moz-inline-box;
84
84
  display: inline-box;
@@ -124,16 +124,16 @@
124
124
  $value-2009: horizontal;
125
125
  }
126
126
 
127
- @else if $value == "row-reverse" {
127
+ @elseif $value == "row-reverse" {
128
128
  $value-2009: horizontal;
129
129
  $direction: reverse;
130
130
  }
131
131
 
132
- @else if $value == column {
132
+ @elseif $value == column {
133
133
  $value-2009: vertical;
134
134
  }
135
135
 
136
- @else if $value == "column-reverse" {
136
+ @elseif $value == "column-reverse" {
137
137
  $value-2009: vertical;
138
138
  $direction: reverse;
139
139
  }
@@ -162,11 +162,11 @@
162
162
  $alt-value: single;
163
163
  }
164
164
 
165
- @else if $value == wrap {
165
+ @elseif $value == wrap {
166
166
  $alt-value: multiple;
167
167
  }
168
168
 
169
- @else if $value == "wrap-reverse" {
169
+ @elseif $value == "wrap-reverse" {
170
170
  $alt-value: multiple;
171
171
  }
172
172
 
@@ -224,15 +224,15 @@
224
224
  $alt-value: start;
225
225
  }
226
226
 
227
- @else if $value == "flex-end" {
227
+ @elseif $value == "flex-end" {
228
228
  $alt-value: end;
229
229
  }
230
230
 
231
- @else if $value == "space-between" {
231
+ @elseif $value == "space-between" {
232
232
  $alt-value: justify;
233
233
  }
234
234
 
235
- @else if $value == "space-around" {
235
+ @elseif $value == "space-around" {
236
236
  $alt-value: center;
237
237
  }
238
238
 
@@ -257,7 +257,7 @@
257
257
  $alt-value: start;
258
258
  }
259
259
 
260
- @else if $value == "flex-end" {
260
+ @elseif $value == "flex-end" {
261
261
  $alt-value: end;
262
262
  }
263
263
 
@@ -280,7 +280,7 @@
280
280
  $value-2011: start;
281
281
  }
282
282
 
283
- @else if $value == "flex-end" {
283
+ @elseif $value == "flex-end" {
284
284
  $value-2011: end;
285
285
  }
286
286
 
@@ -300,15 +300,15 @@
300
300
  $value-2011: start;
301
301
  }
302
302
 
303
- @else if $value == "flex-end" {
303
+ @elseif $value == "flex-end" {
304
304
  $value-2011: end;
305
305
  }
306
306
 
307
- @else if $value == "space-between" {
307
+ @elseif $value == "space-between" {
308
308
  $value-2011: justify;
309
309
  }
310
310
 
311
- @else if $value == "space-around" {
311
+ @elseif $value == "space-around" {
312
312
  $value-2011: distribute;
313
313
  }
314
314
 
@@ -1,6 +1,6 @@
1
1
  // Order of the includes matters, and it is: normal, bold, italic, bold+italic.
2
2
 
3
- @mixin font-face($font-family, $file-path, $weight: normal, $style: normal, $asset-pipeline: $asset-pipeline) {
3
+ @mixin font-face($font-family, $file-path, $weight: normal, $style: normal, $asset-pipeline: false ) {
4
4
  @font-face {
5
5
  font-family: $font-family;
6
6
  font-weight: $weight;
@@ -8,24 +8,24 @@
8
8
 
9
9
  @if $original-prefix-for-webkit {
10
10
  @include disable-prefix-for-all();
11
- $prefix-for-webkit: true;
11
+ $prefix-for-webkit: true !global;
12
12
  @-webkit-keyframes #{$name} {
13
13
  @content;
14
14
  }
15
15
  }
16
16
  @if $original-prefix-for-mozilla {
17
17
  @include disable-prefix-for-all();
18
- $prefix-for-mozilla: true;
18
+ $prefix-for-mozilla: true !global;
19
19
  @-moz-keyframes #{$name} {
20
20
  @content;
21
21
  }
22
22
  }
23
23
 
24
- $prefix-for-webkit: $original-prefix-for-webkit;
25
- $prefix-for-mozilla: $original-prefix-for-mozilla;
26
- $prefix-for-microsoft: $original-prefix-for-microsoft;
27
- $prefix-for-opera: $original-prefix-for-opera;
28
- $prefix-for-spec: $original-prefix-for-spec;
24
+ $prefix-for-webkit: $original-prefix-for-webkit !global;
25
+ $prefix-for-mozilla: $original-prefix-for-mozilla !global;
26
+ $prefix-for-microsoft: $original-prefix-for-microsoft !global;
27
+ $prefix-for-opera: $original-prefix-for-opera !global;
28
+ $prefix-for-spec: $original-prefix-for-spec !global;
29
29
 
30
30
  @if $original-prefix-for-spec {
31
31
  @keyframes #{$name} {
@@ -0,0 +1,11 @@
1
+ @function assign-inputs($inputs, $pseudo: null) {
2
+ $list : ();
3
+
4
+ @each $input in $inputs {
5
+ $input: unquote($input);
6
+ $input: if($pseudo, $input + ":" + $pseudo, $input);
7
+ $list: append($list, $input, comma);
8
+ }
9
+
10
+ @return $list;
11
+ }
@@ -3,11 +3,11 @@
3
3
  // More details here http://robots.thoughtbot.com/closer-look-color-lightness
4
4
 
5
5
  @function is-light($hex-color) {
6
- $-local-red: red(rgba($hex-color, 1.0));
7
- $-local-green: green(rgba($hex-color, 1.0));
8
- $-local-blue: blue(rgba($hex-color, 1.0));
6
+ $red: red(rgba($hex-color, 1.0));
7
+ $green: green(rgba($hex-color, 1.0));
8
+ $blue: blue(rgba($hex-color, 1.0));
9
9
 
10
- $-local-lightness: ($-local-red * 0.2126 + $-local-green * 0.7152 + $-local-blue * 0.0722) / 255;
10
+ $lightness: ($red * 0.2126 + $green * 0.7152 + $blue * 0.0722) / 255;
11
11
 
12
- @return $-local-lightness > .6;
12
+ @return $lightness > .6;
13
13
  }
@@ -0,0 +1,15 @@
1
+ //************************************************************************//
2
+ // Helper function for str-to-num fn.
3
+ // Source: http://sassmeister.com/gist/9647408
4
+ //************************************************************************//
5
+ @function _convert-units($number, $unit) {
6
+ $strings: 'px' 'cm' 'mm' '%' 'ch' 'pica' 'in' 'em' 'rem' 'pt' 'pc' 'ex' 'vw' 'vh' 'vmin' 'vmax', 'deg', 'rad', 'grad', 'turn';
7
+ $units: 1px 1cm 1mm 1% 1ch 1pica 1in 1em 1rem 1pt 1pc 1ex 1vw 1vh 1vmin 1vmax, 1deg, 1rad, 1grad, 1turn;
8
+ $index: index($strings, $unit);
9
+
10
+ @if not $index {
11
+ @warn "Unknown unit `#{$unit}`.";
12
+ @return false;
13
+ }
14
+ @return $number * nth($units, $index);
15
+ }
@@ -0,0 +1,8 @@
1
+ //************************************************************************//
2
+ // Helper for linear-gradient-parser
3
+ //************************************************************************//
4
+ @function _is-num($char) {
5
+ $strings: "0 1 2 3 4 5 6 7 8 9";
6
+ $index: str-index($strings, $char);
7
+ @return if($index, true, false);
8
+ }
@@ -0,0 +1,25 @@
1
+ // Private function for linear-gradient-parser
2
+ @function _linear-angle-parser($image, $first-val, $prefix, $suffix) {
3
+ $offset: null;
4
+ $unit-short: str-slice($first-val, str-length($first-val) - 2, str-length($first-val));
5
+ $unit-long: str-slice($first-val, str-length($first-val) - 3, str-length($first-val));
6
+
7
+ @if ($unit-long == "grad") or
8
+ ($unit-long == "turn") {
9
+ $offset: if($unit-long == "grad", -100grad * 3, -0.75turn);
10
+ }
11
+
12
+ @else if ($unit-short == "deg") or
13
+ ($unit-short == "rad") {
14
+ $offset: if($unit-short == "deg", -90 * 3, 1.6rad);
15
+ }
16
+
17
+ @if $offset {
18
+ $num: _str-to-num($first-val);
19
+
20
+ @return (
21
+ webkit-image: -webkit- + $prefix + ($offset - $num) + $suffix,
22
+ spec-image: $image
23
+ );
24
+ }
25
+ }
@@ -0,0 +1,41 @@
1
+ @function _linear-gradient-parser($image) {
2
+ $image: unquote($image);
3
+ $gradients: ();
4
+ $start: str-index($image, "(");
5
+ $end: str-index($image, ",");
6
+ $first-val: str-slice($image, $start + 1, $end - 1);
7
+
8
+ $prefix: str-slice($image, 0, $start);
9
+ $suffix: str-slice($image, $end, str-length($image));
10
+
11
+ $has-multiple-vals: str-index($first-val, " ");
12
+ $has-single-position: unquote(_position-flipper($first-val) + "");
13
+ $has-angle: _is-num(str-slice($first-val, 0, 0));
14
+
15
+ @if $has-multiple-vals {
16
+ $gradients: _linear-side-corner-parser($image, $first-val, $prefix, $suffix, $has-multiple-vals);
17
+ }
18
+
19
+ @else if $has-single-position != "" {
20
+ $pos: unquote($has-single-position + "");
21
+
22
+ $gradients: (
23
+ webkit-image: -webkit- + $image,
24
+ spec-image: $prefix + "to " + $pos + $suffix
25
+ );
26
+ }
27
+
28
+ @else if $has-angle {
29
+ // Rotate degree for webkit
30
+ $gradients: _linear-angle-parser($image, $first-val, $prefix, $suffix);
31
+ }
32
+
33
+ @else {
34
+ $gradients: (
35
+ webkit-image: -webkit- + $image,
36
+ spec-image: $image
37
+ );
38
+ }
39
+
40
+ @return $gradients;
41
+ }
@@ -0,0 +1,31 @@
1
+ // Private function for linear-gradient-parser
2
+ @function _linear-side-corner-parser($image, $first-val, $prefix, $suffix, $has-multiple-vals) {
3
+ $val-1: str-slice($first-val, 0, $has-multiple-vals - 1 );
4
+ $val-2: str-slice($first-val, $has-multiple-vals + 1, str-length($first-val));
5
+ $val-3: null;
6
+ $has-val-3: str-index($val-2, " ");
7
+
8
+ @if $has-val-3 {
9
+ $val-3: str-slice($val-2, $has-val-3 + 1, str-length($val-2));
10
+ $val-2: str-slice($val-2, 0, $has-val-3 - 1);
11
+ }
12
+
13
+ $pos: _position-flipper($val-1) _position-flipper($val-2) _position-flipper($val-3);
14
+ $pos: unquote($pos + "");
15
+
16
+ // Use old spec for webkit
17
+ @if $val-1 == "to" {
18
+ @return (
19
+ webkit-image: -webkit- + $prefix + $pos + $suffix,
20
+ spec-image: $image
21
+ );
22
+ }
23
+
24
+ // Bring the code up to spec
25
+ @else {
26
+ @return (
27
+ webkit-image: -webkit- + $image,
28
+ spec-image: $prefix + "to " + $pos + $suffix
29
+ );
30
+ }
31
+ }
@@ -0,0 +1,50 @@
1
+ @function _radial-gradient-parser($image) {
2
+ $image: unquote($image);
3
+ $gradients: ();
4
+ $start: str-index($image, "(");
5
+ $end: str-index($image, ",");
6
+ $first-val: str-slice($image, $start + 1, $end - 1);
7
+
8
+ $prefix: str-slice($image, 0, $start);
9
+ $suffix: str-slice($image, $end, str-length($image));
10
+
11
+ $is-spec-syntax: str-index($first-val, "at");
12
+
13
+ @if $is-spec-syntax and $is-spec-syntax > 1 {
14
+ $keyword: str-slice($first-val, 1, $is-spec-syntax - 2);
15
+ $pos: str-slice($first-val, $is-spec-syntax + 3, str-length($first-val));
16
+ $pos: append($pos, $keyword, comma);
17
+
18
+ $gradients: (
19
+ webkit-image: -webkit- + $prefix + $pos + $suffix,
20
+ spec-image: $image
21
+ )
22
+ }
23
+
24
+ @else if $is-spec-syntax == 1 {
25
+ $pos: str-slice($first-val, $is-spec-syntax + 3, str-length($first-val));
26
+
27
+ $gradients: (
28
+ webkit-image: -webkit- + $prefix + $pos + $suffix,
29
+ spec-image: $image
30
+ )
31
+ }
32
+
33
+ @else if str-index($image, "cover") or str-index($image, "contain") {
34
+ @warn "Radial-gradient needs to be updated to conform to latest spec.";
35
+
36
+ $gradients: (
37
+ webkit-image: null,
38
+ spec-image: $image
39
+ )
40
+ }
41
+
42
+ @else {
43
+ $gradients: (
44
+ webkit-image: -webkit- + $image,
45
+ spec-image: $image
46
+ )
47
+ }
48
+
49
+ @return $gradients;
50
+ }
@@ -16,11 +16,11 @@
16
16
  }
17
17
 
18
18
  @if $vendor {
19
- $vendor-gradients: "-#{$vendor}-#{$gradient-type}-gradient(#{$pre-spec} #{$gradients})";
19
+ $vendor-gradients: -#{$vendor}-#{$gradient-type}-gradient(#{$pre-spec} $gradients);
20
20
  }
21
21
  @else if $vendor == false {
22
22
  $vendor-gradients: "#{$gradient-type}-gradient(#{$spec} #{$gradients})";
23
+ $vendor-gradients: unquote($vendor-gradients);
23
24
  }
24
- $vendor-gradients: unquote($vendor-gradients);
25
25
  @return $vendor-gradients;
26
26
  }