bourbon 4.2.6 → 5.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (259) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +34 -0
  3. data/.github/ISSUE_TEMPLATE.md +22 -0
  4. data/.github/PULL_REQUEST_TEMPLATE.md +10 -0
  5. data/.npmignore +6 -1
  6. data/.ruby-version +1 -0
  7. data/.scss-lint.yml +100 -8
  8. data/.tool-versions +1 -0
  9. data/CHANGELOG.md +406 -0
  10. data/CODE_OF_CONDUCT.md +6 -0
  11. data/CONTRIBUTING.md +77 -28
  12. data/Gemfile +1 -1
  13. data/LICENSE.md +1 -1
  14. data/README.md +161 -92
  15. data/RELEASING.md +34 -0
  16. data/Rakefile +0 -2
  17. data/bin/bourbon +1 -2
  18. data/bourbon.gemspec +32 -24
  19. data/bower.json +22 -19
  20. data/core/_bourbon.scss +54 -0
  21. data/core/bourbon/helpers/_buttons-list.scss +14 -0
  22. data/core/bourbon/helpers/_scales.scss +27 -0
  23. data/core/bourbon/helpers/_text-inputs-list.scss +26 -0
  24. data/core/bourbon/library/_border-color.scss +26 -0
  25. data/core/bourbon/library/_border-radius.scss +85 -0
  26. data/core/bourbon/library/_border-style.scss +25 -0
  27. data/core/bourbon/library/_border-width.scss +25 -0
  28. data/core/bourbon/library/_buttons.scss +84 -0
  29. data/{app/assets/stylesheets/addons → core/bourbon/library}/_clearfix.scss +5 -5
  30. data/core/bourbon/library/_contrast-switch.scss +81 -0
  31. data/{app/assets/stylesheets/addons → core/bourbon/library}/_ellipsis.scss +12 -6
  32. data/core/bourbon/library/_font-face.scss +65 -0
  33. data/core/bourbon/library/_font-stacks.scss +248 -0
  34. data/core/bourbon/library/_hide-text.scss +24 -0
  35. data/core/bourbon/library/_hide-visually.scss +70 -0
  36. data/core/bourbon/library/_margin.scss +37 -0
  37. data/core/bourbon/library/_modular-scale.scss +120 -0
  38. data/core/bourbon/library/_overflow-wrap.scss +24 -0
  39. data/core/bourbon/library/_padding.scss +36 -0
  40. data/core/bourbon/library/_position.scss +62 -0
  41. data/core/bourbon/library/_prefixer.scss +37 -0
  42. data/core/bourbon/library/_shade.scss +32 -0
  43. data/core/bourbon/library/_size.scss +50 -0
  44. data/core/bourbon/library/_strip-unit.scss +17 -0
  45. data/core/bourbon/library/_text-inputs.scss +163 -0
  46. data/{app/assets/stylesheets/addons → core/bourbon/library}/_timing-functions.scss +7 -3
  47. data/core/bourbon/library/_tint.scss +32 -0
  48. data/core/bourbon/library/_triangle.scss +82 -0
  49. data/core/bourbon/library/_value-prefixer.scss +37 -0
  50. data/core/bourbon/settings/_settings.scss +75 -0
  51. data/core/bourbon/utilities/_assign-inputs.scss +28 -0
  52. data/core/bourbon/utilities/_compact-shorthand.scss +39 -0
  53. data/core/bourbon/utilities/_contrast-ratio.scss +31 -0
  54. data/core/bourbon/utilities/_directional-property.scss +70 -0
  55. data/core/bourbon/utilities/_fetch-bourbon-setting.scss +16 -0
  56. data/{app/assets/stylesheets/helpers → core/bourbon/utilities}/_font-source-declaration.scss +23 -15
  57. data/core/bourbon/utilities/_gamma.scss +24 -0
  58. data/core/bourbon/utilities/_lightness.scss +24 -0
  59. data/{app/assets/stylesheets/functions/_unpack.scss → core/bourbon/utilities/_unpack-shorthand.scss} +8 -6
  60. data/{app/assets/stylesheets/functions → core/bourbon/validators}/_contains-falsy.scss +6 -6
  61. data/{app/assets/stylesheets/functions → core/bourbon/validators}/_contains.scss +8 -8
  62. data/core/bourbon/validators/_is-color.scss +13 -0
  63. data/{app/assets/stylesheets/functions → core/bourbon/validators}/_is-length.scss +6 -2
  64. data/core/bourbon/validators/_is-number.scss +15 -0
  65. data/core/bourbon/validators/_is-size.scss +18 -0
  66. data/features/install.feature +0 -1
  67. data/features/step_definitions/bourbon_steps.rb +13 -5
  68. data/features/update.feature +0 -1
  69. data/features/version.feature +0 -2
  70. data/index.js +2 -2
  71. data/lib/bourbon/generator.rb +11 -10
  72. data/lib/bourbon/version.rb +1 -1
  73. data/lib/bourbon.rb +3 -19
  74. data/package.json +18 -17
  75. data/spec/bourbon/{addons → library}/border_color_spec.rb +8 -8
  76. data/spec/bourbon/{addons → library}/border_radius_spec.rb +1 -1
  77. data/spec/bourbon/{addons → library}/border_style_spec.rb +1 -1
  78. data/spec/bourbon/{addons → library}/border_width_spec.rb +1 -1
  79. data/spec/bourbon/{addons → library}/buttons_spec.rb +4 -4
  80. data/spec/bourbon/{addons → library}/clearfix_spec.rb +3 -3
  81. data/spec/bourbon/library/contrast_switch_spec.rb +23 -0
  82. data/spec/bourbon/{addons → library}/ellipsis_spec.rb +1 -1
  83. data/spec/bourbon/library/font_face_spec_1.rb +16 -0
  84. data/spec/bourbon/library/font_face_spec_2.rb +21 -0
  85. data/spec/bourbon/library/font_face_spec_3.rb +16 -0
  86. data/spec/bourbon/library/font_face_spec_4.rb +17 -0
  87. data/spec/bourbon/library/font_stacks_spec.rb +42 -0
  88. data/spec/bourbon/{addons → library}/hide_text_spec.rb +1 -1
  89. data/spec/bourbon/library/hide_visually_spec.rb +37 -0
  90. data/spec/bourbon/{addons → library}/margin_spec.rb +1 -1
  91. data/spec/bourbon/{functions → library}/modular_scale_spec.rb +6 -6
  92. data/spec/bourbon/library/overflow_wrap_spec.rb +27 -0
  93. data/spec/bourbon/{addons → library}/padding_spec.rb +1 -1
  94. data/spec/bourbon/{addons → library}/position_spec.rb +1 -1
  95. data/spec/bourbon/library/prefixer_spec.rb +34 -0
  96. data/spec/bourbon/{functions → library}/shade_spec.rb +1 -1
  97. data/spec/bourbon/{addons → library}/size_spec.rb +1 -1
  98. data/spec/bourbon/{functions/strip_units_spec.rb → library/strip_unit_spec.rb} +2 -2
  99. data/spec/bourbon/{addons → library}/text_inputs_spec.rb +25 -15
  100. data/spec/bourbon/{functions → library}/tint_spec.rb +1 -1
  101. data/spec/bourbon/library/triangle_spec.rb +31 -0
  102. data/spec/bourbon/{functions → utilities}/assign_inputs_spec.rb +8 -8
  103. data/spec/bourbon/utilities/compact_shorthand_spec.rb +30 -0
  104. data/spec/bourbon/utilities/contrast_ratio_spec.rb +23 -0
  105. data/spec/bourbon/utilities/directional_property_spec.rb +28 -0
  106. data/spec/bourbon/utilities/fetch_bourbon_setting_spec.rb +31 -0
  107. data/spec/bourbon/{helpers → utilities}/font_source_declaration_spec.rb +1 -1
  108. data/spec/bourbon/utilities/gamma_spec.rb +23 -0
  109. data/spec/bourbon/utilities/lightness_spec.rb +31 -0
  110. data/spec/bourbon/{functions → utilities}/unpack_spec.rb +1 -1
  111. data/spec/bourbon/{functions → validators}/contains_spec.rb +1 -1
  112. data/spec/bourbon/{functions → validators}/is_length_spec.rb +1 -1
  113. data/spec/bourbon/{functions → validators}/is_number_spec.rb +1 -1
  114. data/spec/bourbon/{functions → validators}/is_size_spec.rb +1 -1
  115. data/spec/fixtures/_setup.scss +1 -1
  116. data/spec/fixtures/{addons → library}/border-color.scss +4 -4
  117. data/spec/fixtures/{addons → library}/border-radius.scss +0 -0
  118. data/spec/fixtures/{addons → library}/border-style.scss +0 -0
  119. data/spec/fixtures/{addons → library}/border-width.scss +0 -0
  120. data/spec/fixtures/{addons → library}/buttons.scss +0 -0
  121. data/spec/fixtures/{addons → library}/clearfix.scss +0 -0
  122. data/spec/fixtures/library/contrast-switch.scss +9 -0
  123. data/spec/fixtures/{addons → library}/ellipsis.scss +0 -0
  124. data/spec/fixtures/library/font-face-1.scss +6 -0
  125. data/spec/fixtures/library/font-face-2.scss +10 -0
  126. data/spec/fixtures/library/font-face-3.scss +8 -0
  127. data/spec/fixtures/library/font-face-4.scss +7 -0
  128. data/spec/fixtures/library/font-stacks.scss +41 -0
  129. data/spec/fixtures/{addons → library}/hide-text.scss +0 -0
  130. data/spec/fixtures/library/hide-visually.scss +9 -0
  131. data/spec/fixtures/{addons → library}/margin.scss +0 -0
  132. data/spec/fixtures/{functions → library}/modular-scale.scss +0 -0
  133. data/spec/fixtures/library/overflow-wrap.scss +9 -0
  134. data/spec/fixtures/{addons → library}/padding.scss +0 -0
  135. data/spec/fixtures/{addons → library}/position.scss +0 -4
  136. data/spec/fixtures/library/prefixer.scss +13 -0
  137. data/spec/fixtures/{functions → library}/shade.scss +1 -1
  138. data/spec/fixtures/{addons → library}/size.scss +2 -2
  139. data/spec/fixtures/library/strip-unit.scss +17 -0
  140. data/spec/fixtures/{addons → library}/text-inputs.scss +4 -0
  141. data/spec/fixtures/{functions → library}/tint.scss +1 -1
  142. data/spec/fixtures/library/triangle.scss +9 -0
  143. data/spec/fixtures/utilities/assign-inputs.scss +19 -0
  144. data/spec/fixtures/utilities/compact-shorthand.scss +21 -0
  145. data/spec/fixtures/utilities/contrast-ratio.scss +9 -0
  146. data/spec/fixtures/utilities/directional-property.scss +17 -0
  147. data/spec/fixtures/utilities/fetch-bourbon-setting.scss +16 -0
  148. data/spec/fixtures/utilities/font-source-declaration.scss +11 -0
  149. data/spec/fixtures/utilities/gamma.scss +9 -0
  150. data/spec/fixtures/utilities/lightness.scss +13 -0
  151. data/spec/fixtures/utilities/unpack.scss +17 -0
  152. data/spec/fixtures/{functions → validators}/contains.scss +1 -1
  153. data/spec/fixtures/{functions → validators}/is-length.scss +1 -1
  154. data/spec/fixtures/{functions → validators}/is-number.scss +1 -1
  155. data/spec/fixtures/{functions → validators}/is-size.scss +1 -1
  156. data/spec/support/matchers/have_value.rb +1 -1
  157. metadata +267 -272
  158. data/app/assets/stylesheets/_bourbon-deprecated-upcoming.scss +0 -411
  159. data/app/assets/stylesheets/_bourbon.scss +0 -87
  160. data/app/assets/stylesheets/addons/_border-color.scss +0 -26
  161. data/app/assets/stylesheets/addons/_border-radius.scss +0 -48
  162. data/app/assets/stylesheets/addons/_border-style.scss +0 -25
  163. data/app/assets/stylesheets/addons/_border-width.scss +0 -25
  164. data/app/assets/stylesheets/addons/_buttons.scss +0 -64
  165. data/app/assets/stylesheets/addons/_font-stacks.scss +0 -31
  166. data/app/assets/stylesheets/addons/_hide-text.scss +0 -27
  167. data/app/assets/stylesheets/addons/_margin.scss +0 -26
  168. data/app/assets/stylesheets/addons/_padding.scss +0 -26
  169. data/app/assets/stylesheets/addons/_position.scss +0 -48
  170. data/app/assets/stylesheets/addons/_prefixer.scss +0 -66
  171. data/app/assets/stylesheets/addons/_retina-image.scss +0 -25
  172. data/app/assets/stylesheets/addons/_size.scss +0 -51
  173. data/app/assets/stylesheets/addons/_text-inputs.scss +0 -113
  174. data/app/assets/stylesheets/addons/_triangle.scss +0 -63
  175. data/app/assets/stylesheets/addons/_word-wrap.scss +0 -29
  176. data/app/assets/stylesheets/css3/_animation.scss +0 -43
  177. data/app/assets/stylesheets/css3/_appearance.scss +0 -3
  178. data/app/assets/stylesheets/css3/_backface-visibility.scss +0 -3
  179. data/app/assets/stylesheets/css3/_background-image.scss +0 -42
  180. data/app/assets/stylesheets/css3/_background.scss +0 -55
  181. data/app/assets/stylesheets/css3/_border-image.scss +0 -59
  182. data/app/assets/stylesheets/css3/_calc.scss +0 -4
  183. data/app/assets/stylesheets/css3/_columns.scss +0 -47
  184. data/app/assets/stylesheets/css3/_filter.scss +0 -4
  185. data/app/assets/stylesheets/css3/_flex-box.scss +0 -287
  186. data/app/assets/stylesheets/css3/_font-face.scss +0 -24
  187. data/app/assets/stylesheets/css3/_font-feature-settings.scss +0 -4
  188. data/app/assets/stylesheets/css3/_hidpi-media-query.scss +0 -10
  189. data/app/assets/stylesheets/css3/_hyphens.scss +0 -4
  190. data/app/assets/stylesheets/css3/_image-rendering.scss +0 -14
  191. data/app/assets/stylesheets/css3/_keyframes.scss +0 -36
  192. data/app/assets/stylesheets/css3/_linear-gradient.scss +0 -38
  193. data/app/assets/stylesheets/css3/_perspective.scss +0 -8
  194. data/app/assets/stylesheets/css3/_placeholder.scss +0 -8
  195. data/app/assets/stylesheets/css3/_radial-gradient.scss +0 -39
  196. data/app/assets/stylesheets/css3/_selection.scss +0 -42
  197. data/app/assets/stylesheets/css3/_text-decoration.scss +0 -19
  198. data/app/assets/stylesheets/css3/_transform.scss +0 -15
  199. data/app/assets/stylesheets/css3/_transition.scss +0 -71
  200. data/app/assets/stylesheets/css3/_user-select.scss +0 -3
  201. data/app/assets/stylesheets/functions/_assign-inputs.scss +0 -11
  202. data/app/assets/stylesheets/functions/_is-light.scss +0 -21
  203. data/app/assets/stylesheets/functions/_is-number.scss +0 -11
  204. data/app/assets/stylesheets/functions/_is-size.scss +0 -13
  205. data/app/assets/stylesheets/functions/_modular-scale.scss +0 -69
  206. data/app/assets/stylesheets/functions/_px-to-em.scss +0 -13
  207. data/app/assets/stylesheets/functions/_px-to-rem.scss +0 -15
  208. data/app/assets/stylesheets/functions/_shade.scss +0 -24
  209. data/app/assets/stylesheets/functions/_strip-units.scss +0 -17
  210. data/app/assets/stylesheets/functions/_tint.scss +0 -24
  211. data/app/assets/stylesheets/functions/_transition-property-name.scss +0 -22
  212. data/app/assets/stylesheets/helpers/_convert-units.scss +0 -21
  213. data/app/assets/stylesheets/helpers/_directional-values.scss +0 -96
  214. data/app/assets/stylesheets/helpers/_gradient-positions-parser.scss +0 -13
  215. data/app/assets/stylesheets/helpers/_linear-angle-parser.scss +0 -25
  216. data/app/assets/stylesheets/helpers/_linear-gradient-parser.scss +0 -41
  217. data/app/assets/stylesheets/helpers/_linear-positions-parser.scss +0 -61
  218. data/app/assets/stylesheets/helpers/_linear-side-corner-parser.scss +0 -31
  219. data/app/assets/stylesheets/helpers/_radial-arg-parser.scss +0 -69
  220. data/app/assets/stylesheets/helpers/_radial-gradient-parser.scss +0 -50
  221. data/app/assets/stylesheets/helpers/_radial-positions-parser.scss +0 -18
  222. data/app/assets/stylesheets/helpers/_render-gradients.scss +0 -26
  223. data/app/assets/stylesheets/helpers/_shape-size-stripper.scss +0 -10
  224. data/app/assets/stylesheets/helpers/_str-to-num.scss +0 -50
  225. data/app/assets/stylesheets/settings/_asset-pipeline.scss +0 -7
  226. data/app/assets/stylesheets/settings/_prefixer.scss +0 -9
  227. data/app/assets/stylesheets/settings/_px-to-em.scss +0 -1
  228. data/lib/bourbon/engine.rb +0 -5
  229. data/lib/tasks/install.rake +0 -20
  230. data/sache.json +0 -5
  231. data/spec/bourbon/addons/font_stacks_spec.rb +0 -25
  232. data/spec/bourbon/addons/retina_image_spec.rb +0 -57
  233. data/spec/bourbon/addons/triangle_spec.rb +0 -32
  234. data/spec/bourbon/addons/word_wrap_spec.rb +0 -29
  235. data/spec/bourbon/css3/font_face_spec.rb +0 -45
  236. data/spec/bourbon/css3/hidpi_media_query_spec.rb +0 -23
  237. data/spec/bourbon/functions/is_light_spec.rb +0 -37
  238. data/spec/bourbon/functions/px_to_em_spec.rb +0 -31
  239. data/spec/bourbon/functions/px_to_rem_spec.rb +0 -25
  240. data/spec/bourbon/helpers/convert_units_spec.rb +0 -31
  241. data/spec/bourbon/helpers/directional_values_spec.rb +0 -39
  242. data/spec/bourbon/helpers/str_to_num_spec.rb +0 -25
  243. data/spec/fixtures/addons/font-stacks.scss +0 -21
  244. data/spec/fixtures/addons/retina-image.scss +0 -21
  245. data/spec/fixtures/addons/triangle.scss +0 -9
  246. data/spec/fixtures/addons/word-wrap.scss +0 -9
  247. data/spec/fixtures/css3/font-face.scss +0 -6
  248. data/spec/fixtures/css3/hidpi-media-query.scss +0 -13
  249. data/spec/fixtures/functions/assign-inputs.scss +0 -19
  250. data/spec/fixtures/functions/is-light.scss +0 -29
  251. data/spec/fixtures/functions/px-to-em.scss +0 -17
  252. data/spec/fixtures/functions/px-to-rem.scss +0 -15
  253. data/spec/fixtures/functions/strip-units.scss +0 -17
  254. data/spec/fixtures/functions/unpack.scss +0 -17
  255. data/spec/fixtures/helpers/convert-units.scss +0 -17
  256. data/spec/fixtures/helpers/directional-values.scss +0 -29
  257. data/spec/fixtures/helpers/font-source-declaration.scss +0 -10
  258. data/spec/fixtures/helpers/str-to-num.scss +0 -13
  259. data/spec/support/matchers/be_contained_in.rb +0 -10
@@ -1,10 +1,14 @@
1
1
  @charset "UTF-8";
2
2
 
3
- /// CSS cubic-bezier timing functions. Timing functions courtesy of jquery.easie (github.com/jaukia/easie)
3
+ // scss-lint:disable SpaceAfterComma, UnnecessaryMantissa, TrailingZero
4
+
5
+ ////
6
+ /// CSS cubic-bezier timing functions.
4
7
  ///
5
- /// Timing functions are the same as demoed here: http://jqueryui.com/resources/demos/effect/easing.html
8
+ /// @link https://goo.gl/p8u6SK
6
9
  ///
7
- /// @type cubic-bezier
10
+ /// @type string
11
+ ////
8
12
 
9
13
  $ease-in-quad: cubic-bezier(0.550, 0.085, 0.680, 0.530);
10
14
  $ease-in-cubic: cubic-bezier(0.550, 0.055, 0.675, 0.190);
@@ -0,0 +1,32 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Mixes a color with white.
4
+ ///
5
+ /// @argument {color} $color
6
+ ///
7
+ /// @argument {number (percentage)} $percent
8
+ /// The amount of white to be mixed in.
9
+ ///
10
+ /// @return {color}
11
+ ///
12
+ /// @example scss
13
+ /// .element {
14
+ /// background-color: tint(#6ecaa6, 40%);
15
+ /// }
16
+ ///
17
+ /// // CSS Output
18
+ /// .element {
19
+ /// background-color: #a8dfc9;
20
+ /// }
21
+
22
+ @function tint(
23
+ $color,
24
+ $percent
25
+ ) {
26
+ @if not _is-color($color) {
27
+ @error "`#{$color}` is not a valid color for the `$color` argument in " +
28
+ "the `tint` mixin.";
29
+ } @else {
30
+ @return mix(#fff, $color, $percent);
31
+ }
32
+ }
@@ -0,0 +1,82 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Generates a triangle pointing in a specified direction.
4
+ ///
5
+ /// @argument {string} $direction
6
+ /// The direction the triangle should point. Accepts `up`, `up-right`,
7
+ /// `right`, `down-right`, `down`, `down-left`, `left` or `up-left`.
8
+ ///
9
+ /// @argument {number (with unit)} $width
10
+ /// Width of the triangle.
11
+ ///
12
+ /// @argument {number (with unit)} $height
13
+ /// Height of the triangle.
14
+ ///
15
+ /// @argument {color} $color
16
+ /// Color of the triangle.
17
+ ///
18
+ /// @example scss
19
+ /// .element {
20
+ /// &::before {
21
+ /// @include triangle("up", 2rem, 1rem, #b25c9c);
22
+ /// content: "";
23
+ /// }
24
+ /// }
25
+ ///
26
+ /// // CSS Output
27
+ /// .element::before {
28
+ /// border-style: solid;
29
+ /// height: 0;
30
+ /// width: 0;
31
+ /// border-color: transparent transparent #b25c9c;
32
+ /// border-width: 0 1rem 1rem;
33
+ /// content: "";
34
+ /// }
35
+
36
+ @mixin triangle(
37
+ $direction,
38
+ $width,
39
+ $height,
40
+ $color
41
+ ) {
42
+ @if not index(
43
+ "up" "up-right" "right" "down-right" "down" "down-left" "left" "up-left",
44
+ $direction
45
+ ) {
46
+ @error "Direction must be `up`, `up-right`, `right`, `down-right`, " +
47
+ "`down`, `down-left`, `left` or `up-left`.";
48
+ } @else if not _is-color($color) {
49
+ @error "`#{$color}` is not a valid color for the `$color` argument in " +
50
+ "the `triangle` mixin.";
51
+ } @else {
52
+ border-style: solid;
53
+ height: 0;
54
+ width: 0;
55
+
56
+ @if $direction == "up" {
57
+ border-color: transparent transparent $color;
58
+ border-width: 0 ($width / 2) $height;
59
+ } @else if $direction == "up-right" {
60
+ border-color: transparent $color transparent transparent;
61
+ border-width: 0 $width $width 0;
62
+ } @else if $direction == "right" {
63
+ border-color: transparent transparent transparent $color;
64
+ border-width: ($height / 2) 0 ($height / 2) $width;
65
+ } @else if $direction == "down-right" {
66
+ border-color: transparent transparent $color;
67
+ border-width: 0 0 $width $width;
68
+ } @else if $direction == "down" {
69
+ border-color: $color transparent transparent;
70
+ border-width: $height ($width / 2) 0;
71
+ } @else if $direction == "down-left" {
72
+ border-color: transparent transparent transparent $color;
73
+ border-width: $width 0 0 $width;
74
+ } @else if $direction == "left" {
75
+ border-color: transparent $color transparent transparent;
76
+ border-width: ($height / 2) $width ($height / 2) 0;
77
+ } @else if $direction == "up-left" {
78
+ border-color: $color transparent transparent;
79
+ border-width: $width $width 0 0;
80
+ }
81
+ }
82
+ }
@@ -0,0 +1,37 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Generates vendor prefixes for values.
4
+ ///
5
+ /// @argument {string} $property
6
+ /// Property to use.
7
+ ///
8
+ /// @argument {string} $value
9
+ /// Value to prefix.
10
+ ///
11
+ /// @argument {list} $prefixes
12
+ /// Vendor prefixes to output.
13
+ ///
14
+ /// @example scss
15
+ /// .element {
16
+ /// @include value-prefixer(cursor, grab, ("webkit", "moz"));
17
+ /// }
18
+ ///
19
+ /// // CSS Output
20
+ /// .element {
21
+ /// cursor: -webkit-grab;
22
+ /// cursor: -moz-grab;
23
+ /// cursor: grab;
24
+ /// }
25
+ ///
26
+ /// @author Matthew Tobiasz
27
+
28
+ @mixin value-prefixer(
29
+ $property,
30
+ $value,
31
+ $prefixes: ()
32
+ ) {
33
+ @each $prefix in $prefixes {
34
+ #{$property}: #{"-" + $prefix + "-" + $value};
35
+ }
36
+ #{$property}: $value;
37
+ }
@@ -0,0 +1,75 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Default global Bourbon settings. Values in this map are overwritten by any
4
+ /// values set in the `$bourbon` map.
5
+ ///
6
+ /// @type map
7
+ ///
8
+ /// @property {color} contrast-switch-dark-color [#000]
9
+ /// Global dark color for the `contrast-switch` function.
10
+ ///
11
+ /// @property {color} contrast-switch-light-color [#fff]
12
+ /// Global light color for the `contrast-switch` function.
13
+ ///
14
+ /// @property {list} global-font-file-formats [("ttf", "woff2", "woff")]
15
+ /// Global font file formats for the `font-face` mixin.
16
+ ///
17
+ /// @property {number (with unit)} modular-scale-base [1em]
18
+ /// Global base value for the `modular-scale` function.
19
+ ///
20
+ /// @property {number (unitless)} modular-scale-ratio [$major-third (1.25)]
21
+ /// Global base ratio for the `modular-scale` function.
22
+ ///
23
+ /// @property {boolean} rails-asset-pipeline [false]
24
+ /// Set this to `true` when using the Rails Asset Pipeline and Bourbon will
25
+ /// write asset paths using
26
+ /// [sass-rails’ asset helpers](https://github.com/rails/sass-rails#asset-helpers).
27
+ ///
28
+ /// @access private
29
+
30
+ $_bourbon-defaults: (
31
+ "contrast-switch-dark-color": #000,
32
+ "contrast-switch-light-color": #fff,
33
+ "global-font-file-formats": ("ttf", "woff2", "woff"),
34
+ "modular-scale-base": 1em,
35
+ "modular-scale-ratio": $major-third,
36
+ "rails-asset-pipeline": false,
37
+ );
38
+
39
+ /// Global Bourbon settings.
40
+ ///
41
+ /// @name Settings
42
+ ///
43
+ /// @type map
44
+ ///
45
+ /// @property {color} contrast-switch-dark-color [#000]
46
+ /// Global dark color for the `contrast-switch` function.
47
+ ///
48
+ /// @property {color} contrast-switch-light-color [#fff]
49
+ /// Global light color for the `contrast-switch` function.
50
+ ///
51
+ /// @property {list} global-font-file-formats [("ttf", "woff2", "woff")]
52
+ /// Global font file formats for the `font-face` mixin.
53
+ ///
54
+ /// @property {number (with unit)} modular-scale-base [1em]
55
+ /// Global base value for the `modular-scale` function.
56
+ ///
57
+ /// @property {number (unitless)} modular-scale-ratio [$major-third (1.25)]
58
+ /// Global base ratio for the `modular-scale` function.
59
+ ///
60
+ /// @property {boolean} rails-asset-pipeline [false]
61
+ /// Set this to `true` when using the Rails Asset Pipeline and Bourbon will
62
+ /// write asset paths using
63
+ /// [sass-rails’ asset helpers](https://github.com/rails/sass-rails#asset-helpers).
64
+ ///
65
+ /// @example scss
66
+ /// $bourbon: (
67
+ /// "contrast-switch-dark-color": #000,
68
+ /// "contrast-switch-light-color": #fff,
69
+ /// "global-font-file-formats": ("ttf", "woff2", "woff"),
70
+ /// "modular-scale-base": 1em,
71
+ /// "modular-scale-ratio": $major-third,
72
+ /// "rails-asset-pipeline": false,
73
+ /// );
74
+
75
+ $bourbon: () !default;
@@ -0,0 +1,28 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Append pseudo-classes to a selector(s).
4
+ ///
5
+ /// @argument {list | string} $inputs
6
+ /// A selector, or list of selectors, to apply the pseudo-class to.
7
+ ///
8
+ /// @argument {pseudo-class} $pseudo [null]
9
+ /// The pseudo-class to be appended.
10
+ ///
11
+ /// @return {list}
12
+ ///
13
+ /// @access private
14
+
15
+ @function _assign-inputs(
16
+ $inputs,
17
+ $pseudo: null
18
+ ) {
19
+ $list: ();
20
+
21
+ @each $input in $inputs {
22
+ $input: unquote($input);
23
+ $input: if($pseudo, $input + ":" + $pseudo, $input);
24
+ $list: append($list, $input, comma);
25
+ }
26
+
27
+ @return $list;
28
+ }
@@ -0,0 +1,39 @@
1
+ @charset "UTF-8";
2
+
3
+ // scss-lint:disable ElsePlacement
4
+
5
+ /// Transforms shorthand to its shortest possible form.
6
+ ///
7
+ /// @argument {list} $values
8
+ /// List of directional values.
9
+ ///
10
+ /// @example scss
11
+ /// $values: _compact-shorthand(10px 20px 10px 20px);
12
+ ///
13
+ /// // Output
14
+ /// $values: 10px 20px;
15
+ ///
16
+ /// @return {list}
17
+ ///
18
+ /// @access private
19
+
20
+ @function _compact-shorthand($values) {
21
+ $output: null;
22
+
23
+ $a: nth($values, 1);
24
+ $b: if(length($values) < 2, $a, nth($values, 2));
25
+ $c: if(length($values) < 3, $a, nth($values, 3));
26
+ $d: if(length($values) < 2, $a, nth($values, if(length($values) < 4, 2, 4)));
27
+
28
+ @if $a == 0 { $a: 0; }
29
+ @if $b == 0 { $b: 0; }
30
+ @if $c == 0 { $c: 0; }
31
+ @if $d == 0 { $d: 0; }
32
+
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; }
37
+
38
+ @return $output;
39
+ }
@@ -0,0 +1,31 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Programatically determines the contrast ratio between two colors.
4
+ ///
5
+ /// Note that the alpha channel is ignored.
6
+ ///
7
+ /// @link https://goo.gl/54htLV
8
+ ///
9
+ /// @argument {color (hex)} $color-1
10
+ ///
11
+ /// @argument {color (hex)} $color-2
12
+ ///
13
+ /// @return {number (1-21)}
14
+ ///
15
+ /// @example scss
16
+ /// _contrast-ratio(black, white)
17
+ ///
18
+ /// @require {function} _lightness
19
+ ///
20
+ /// @access private
21
+
22
+ @function _contrast-ratio($color-1, $color-2) {
23
+ $-local-lightness-1: _lightness($color-1) + 0.05;
24
+ $-local-lightness-2: _lightness($color-2) + 0.05;
25
+
26
+ @if $-local-lightness-1 > $-local-lightness-2 {
27
+ @return $-local-lightness-1 / $-local-lightness-2;
28
+ } @else {
29
+ @return $-local-lightness-2 / $-local-lightness-1;
30
+ }
31
+ }
@@ -0,0 +1,70 @@
1
+ @charset "UTF-8";
2
+
3
+ // scss-lint:disable SpaceAroundOperator
4
+
5
+ /// Builds directional properties by parsing CSS shorthand values. For example,
6
+ /// a value of `10px null` will output top and bottom directional properties,
7
+ /// but the `null` skips left and right from being output.
8
+ ///
9
+ /// @argument {string} $property
10
+ /// Base property.
11
+ ///
12
+ /// @argument {string} $suffix
13
+ /// Suffix to append. Use `null` to omit.
14
+ ///
15
+ /// @argument {list} $values
16
+ /// List of values to set for the property.
17
+ ///
18
+ /// @example scss
19
+ /// .element {
20
+ /// @include _directional-property(border, width, null 5px);
21
+ /// }
22
+ ///
23
+ /// // CSS Output
24
+ /// .element {
25
+ /// border-right-width: 5px;
26
+ /// border-left-width: 5px;
27
+ /// }
28
+ ///
29
+ /// @require {function} _compact-shorthand
30
+ ///
31
+ /// @require {function} _contains-falsy
32
+ ///
33
+ /// @access private
34
+
35
+ @mixin _directional-property(
36
+ $property,
37
+ $suffix,
38
+ $values
39
+ ) {
40
+ $top: $property + "-top" + if($suffix, "-#{$suffix}", "");
41
+ $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}", "");
45
+
46
+ $values: _compact-shorthand($values);
47
+
48
+ @if _contains-falsy($values) {
49
+ @if nth($values, 1) { #{$top}: nth($values, 1); }
50
+
51
+ @if length($values) == 1 {
52
+ @if nth($values, 1) { #{$right}: nth($values, 1); }
53
+ } @else {
54
+ @if nth($values, 2) { #{$right}: nth($values, 2); }
55
+ }
56
+
57
+ @if length($values) == 2 {
58
+ @if nth($values, 1) { #{$bottom}: nth($values, 1); }
59
+ @if nth($values, 2) { #{$left}: nth($values, 2); }
60
+ } @else if length($values) == 3 {
61
+ @if nth($values, 3) { #{$bottom}: nth($values, 3); }
62
+ @if nth($values, 2) { #{$left}: nth($values, 2); }
63
+ } @else if length($values) == 4 {
64
+ @if nth($values, 3) { #{$bottom}: nth($values, 3); }
65
+ @if nth($values, 4) { #{$left}: nth($values, 4); }
66
+ }
67
+ } @else {
68
+ #{$all}: $values;
69
+ }
70
+ }
@@ -0,0 +1,16 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Return a Bourbon setting.
4
+ ///
5
+ /// @argument {string} $setting
6
+ ///
7
+ /// @return {boolean | color | list | number | string}
8
+ ///
9
+ /// @example scss
10
+ /// _fetch-bourbon-setting(rails-asset-pipeline)
11
+ ///
12
+ /// @access private
13
+
14
+ @function _fetch-bourbon-setting($setting) {
15
+ @return map-get(map-merge($_bourbon-defaults, $bourbon), $setting);
16
+ }
@@ -1,21 +1,29 @@
1
- // Used for creating the source string for fonts using @font-face
2
- // Reference: http://goo.gl/Ru1bKP
1
+ @charset "UTF-8";
3
2
 
4
- @function font-url-prefixer($asset-pipeline) {
5
- @if $asset-pipeline == true {
6
- @return font-url;
7
- } @else {
8
- @return url;
9
- }
10
- }
3
+ /// Builds the `src` list for an `@font-face` declaration.
4
+ ///
5
+ /// @link https://goo.gl/Ru1bKP
6
+ ///
7
+ /// @argument {string} $font-family
8
+ ///
9
+ /// @argument {string} $file-path
10
+ ///
11
+ /// @argument {boolean} $asset-pipeline
12
+ ///
13
+ /// @argument {list} $file-formats
14
+ ///
15
+ /// @return {list}
16
+ ///
17
+ /// @require {function} _contains
18
+ ///
19
+ /// @access private
11
20
 
12
- @function font-source-declaration(
21
+ @function _font-source-declaration(
13
22
  $font-family,
14
23
  $file-path,
15
24
  $asset-pipeline,
16
- $file-formats,
17
- $font-url) {
18
-
25
+ $file-formats
26
+ ) {
19
27
  $src: ();
20
28
 
21
29
  $formats-map: (
@@ -23,11 +31,11 @@
23
31
  woff2: "#{$file-path}.woff2" format("woff2"),
24
32
  woff: "#{$file-path}.woff" format("woff"),
25
33
  ttf: "#{$file-path}.ttf" format("truetype"),
26
- svg: "#{$file-path}.svg##{$font-family}" format("svg")
34
+ svg: "#{$file-path}.svg##{$font-family}" format("svg"),
27
35
  );
28
36
 
29
37
  @each $key, $values in $formats-map {
30
- @if contains($file-formats, $key) {
38
+ @if _contains($file-formats, $key) {
31
39
  $file-path: nth($values, 1);
32
40
  $font-format: nth($values, 2);
33
41
 
@@ -0,0 +1,24 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Performs gamma correction on a single color channel.
4
+ ///
5
+ /// Note that the calculation is approximate if a `pow()` is not available.
6
+ ///
7
+ /// @argument {number (0-1)} $channel
8
+ ///
9
+ /// @return {number (0-1)}
10
+ ///
11
+ /// @access private
12
+
13
+ @function _gamma($channel) {
14
+ @if $channel < 0.03928 {
15
+ @return $channel / 12.92;
16
+ } @else {
17
+ $c: ($channel + 0.055) / 1.055;
18
+ @if function-exists("pow") {
19
+ @return pow($c, 2.4);
20
+ } @else {
21
+ @return 0.56 * $c * $c * $c + 0.44 * $c * $c;
22
+ }
23
+ }
24
+ }
@@ -0,0 +1,24 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Programatically determines the lightness of a color.
4
+ ///
5
+ /// @argument {color (hex)} $hex-color
6
+ ///
7
+ /// @return {number (0-1)}
8
+ ///
9
+ /// @example scss
10
+ /// _lightness($color)
11
+ ///
12
+ /// @access private
13
+
14
+ @function _lightness($hex-color) {
15
+ $-local-red-raw: red(rgba($hex-color, 1));
16
+ $-local-green-raw: green(rgba($hex-color, 1));
17
+ $-local-blue-raw: blue(rgba($hex-color, 1));
18
+
19
+ $-local-red: _gamma($-local-red-raw / 255);
20
+ $-local-green: _gamma($-local-green-raw / 255);
21
+ $-local-blue: _gamma($-local-blue-raw / 255);
22
+
23
+ @return $-local-red * 0.2126 + $-local-green * 0.7152 + $-local-blue * 0.0722;
24
+ }
@@ -1,20 +1,22 @@
1
1
  @charset "UTF-8";
2
2
 
3
- /// Converts shorthand to the 4-value syntax.
3
+ /// Transforms shorthand that can range from 1-to-4 values to be 4 values.
4
4
  ///
5
- /// @param {List} $shorthand
5
+ /// @argument {list} $shorthand
6
6
  ///
7
- /// @example scss - Usage
7
+ /// @example scss
8
8
  /// .element {
9
- /// margin: unpack(1em 2em);
9
+ /// margin: _unpack-shorthand(1em 2em);
10
10
  /// }
11
11
  ///
12
- /// @example css - CSS Output
12
+ /// // CSS Output
13
13
  /// .element {
14
14
  /// margin: 1em 2em 1em 2em;
15
15
  /// }
16
+ ///
17
+ /// @access private
16
18
 
17
- @function unpack($shorthand) {
19
+ @function _unpack-shorthand($shorthand) {
18
20
  @if length($shorthand) == 1 {
19
21
  @return nth($shorthand, 1) nth($shorthand, 1) nth($shorthand, 1) nth($shorthand, 1);
20
22
  } @else if length($shorthand) == 2 {
@@ -1,15 +1,15 @@
1
1
  @charset "UTF-8";
2
2
 
3
- /// Checks if a list does not contains a value.
3
+ /// Checks if a list does not contain any values.
4
4
  ///
5
- /// @access private
6
- ///
7
- /// @param {List} $list
5
+ /// @argument {list} $list
8
6
  /// The list to check against.
9
7
  ///
10
- /// @return {Bool}
8
+ /// @return {boolean}
9
+ ///
10
+ /// @access private
11
11
 
12
- @function contains-falsy($list) {
12
+ @function _contains-falsy($list) {
13
13
  @each $item in $list {
14
14
  @if not $item {
15
15
  @return true;
@@ -2,20 +2,20 @@
2
2
 
3
3
  /// Checks if a list contains a value(s).
4
4
  ///
5
- /// @access private
6
- ///
7
- /// @param {List} $list
5
+ /// @argument {list} $list
8
6
  /// The list to check against.
9
7
  ///
10
- /// @param {List} $values
8
+ /// @argument {list} $values
11
9
  /// A single value or list of values to check for.
12
10
  ///
13
- /// @example scss - Usage
14
- /// contains($list, $value)
11
+ /// @return {boolean}
15
12
  ///
16
- /// @return {Bool}
13
+ /// @access private
17
14
 
18
- @function contains($list, $values...) {
15
+ @function _contains(
16
+ $list,
17
+ $values...
18
+ ) {
19
19
  @each $value in $values {
20
20
  @if type-of(index($list, $value)) != "number" {
21
21
  @return false;
@@ -0,0 +1,13 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Checks for a valid CSS color.
4
+ ///
5
+ /// @argument {string} $color
6
+ ///
7
+ /// @return {boolean}
8
+ ///
9
+ /// @access private
10
+
11
+ @function _is-color($color) {
12
+ @return (type-of($color) == color) or ($color == "currentColor");
13
+ }
@@ -2,9 +2,13 @@
2
2
 
3
3
  /// Checks for a valid CSS length.
4
4
  ///
5
- /// @param {String} $value
5
+ /// @argument {string} $value
6
+ ///
7
+ /// @return {boolean}
8
+ ///
9
+ /// @access private
6
10
 
7
- @function is-length($value) {
11
+ @function _is-length($value) {
8
12
  @return type-of($value) != "null" and (str-slice($value + "", 1, 4) == "calc"
9
13
  or index(auto inherit initial 0, $value)
10
14
  or (type-of($value) == "number" and not(unitless($value))));
@@ -0,0 +1,15 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Checks for a valid number.
4
+ ///
5
+ /// @argument {number} $value
6
+ ///
7
+ /// @require {function} _contains
8
+ ///
9
+ /// @return {boolean}
10
+ ///
11
+ /// @access private
12
+
13
+ @function _is-number($value) {
14
+ @return _contains("0" "1" "2" "3" "4" "5" "6" "7" "8" "9" 0 1 2 3 4 5 6 7 8 9, $value);
15
+ }