locomotivecms_wagon 2.4.0.rc2 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (137) hide show
  1. checksums.yaml +4 -4
  2. data/generators/foundation/public/javascripts/vendor/foundation.js +10839 -6523
  3. data/generators/foundation/public/javascripts/vendor/foundation.min.js +5 -3
  4. data/generators/foundation/public/stylesheets/_settings.scss +455 -115
  5. data/generators/foundation/public/stylesheets/app.css +0 -3
  6. data/generators/foundation/public/stylesheets/app.scss +15 -6
  7. data/generators/foundation/public/stylesheets/foundation.css +4191 -1885
  8. data/generators/foundation/public/stylesheets/foundation6/_global.scss +106 -54
  9. data/generators/foundation/public/stylesheets/foundation6/components/_accordion-menu.scss +157 -14
  10. data/generators/foundation/public/stylesheets/foundation6/components/_accordion.scss +71 -28
  11. data/generators/foundation/public/stylesheets/foundation6/components/_badge.scss +17 -9
  12. data/generators/foundation/public/stylesheets/foundation6/components/_breadcrumbs.scss +33 -10
  13. data/generators/foundation/public/stylesheets/foundation6/components/_button-group.scss +168 -30
  14. data/generators/foundation/public/stylesheets/foundation6/components/_button.scss +165 -44
  15. data/generators/foundation/public/stylesheets/foundation6/components/_callout.scss +9 -18
  16. data/generators/foundation/public/stylesheets/foundation6/components/_card.scss +129 -0
  17. data/generators/foundation/public/stylesheets/foundation6/components/_close-button.scss +54 -13
  18. data/generators/foundation/public/stylesheets/foundation6/components/_drilldown.scss +108 -33
  19. data/generators/foundation/public/stylesheets/foundation6/components/_dropdown-menu.scss +215 -64
  20. data/generators/foundation/public/stylesheets/foundation6/components/_dropdown.scss +22 -7
  21. data/generators/foundation/public/stylesheets/foundation6/components/_flex-video.scss +1 -68
  22. data/generators/foundation/public/stylesheets/foundation6/components/_flex.scss +117 -0
  23. data/generators/foundation/public/stylesheets/foundation6/components/_float.scss +1 -1
  24. data/generators/foundation/public/stylesheets/foundation6/components/_label.scss +16 -8
  25. data/generators/foundation/public/stylesheets/foundation6/components/_media-object.scss +50 -10
  26. data/generators/foundation/public/stylesheets/foundation6/components/_menu-icon.scss +9 -0
  27. data/generators/foundation/public/stylesheets/foundation6/components/_menu.scss +373 -91
  28. data/generators/foundation/public/stylesheets/foundation6/components/_off-canvas.scss +418 -83
  29. data/generators/foundation/public/stylesheets/foundation6/components/_orbit.scss +17 -7
  30. data/generators/foundation/public/stylesheets/foundation6/components/_pagination.scss +77 -45
  31. data/generators/foundation/public/stylesheets/foundation6/components/_progress-bar.scss +16 -35
  32. data/generators/foundation/public/stylesheets/foundation6/components/_responsive-embed.scss +70 -0
  33. data/generators/foundation/public/stylesheets/foundation6/components/_reveal.scss +59 -34
  34. data/generators/foundation/public/stylesheets/foundation6/components/_slider.scss +17 -38
  35. data/generators/foundation/public/stylesheets/foundation6/components/_sticky.scss +5 -4
  36. data/generators/foundation/public/stylesheets/foundation6/components/_switch.scss +52 -36
  37. data/generators/foundation/public/stylesheets/foundation6/components/_table.scss +197 -79
  38. data/generators/foundation/public/stylesheets/foundation6/components/_tabs.scss +126 -67
  39. data/generators/foundation/public/stylesheets/foundation6/components/_thumbnail.scss +17 -4
  40. data/generators/foundation/public/stylesheets/foundation6/components/_title-bar.scss +61 -21
  41. data/generators/foundation/public/stylesheets/foundation6/components/_tooltip.scss +74 -24
  42. data/generators/foundation/public/stylesheets/foundation6/components/_top-bar.scss +128 -10
  43. data/generators/foundation/public/stylesheets/foundation6/components/_visibility.scss +6 -5
  44. data/generators/foundation/public/stylesheets/foundation6/forms/_checkbox.scss +14 -9
  45. data/generators/foundation/public/stylesheets/foundation6/forms/_error.scss +12 -5
  46. data/generators/foundation/public/stylesheets/foundation6/forms/_fieldset.scss +6 -6
  47. data/generators/foundation/public/stylesheets/foundation6/forms/_forms.scss +11 -9
  48. data/generators/foundation/public/stylesheets/foundation6/forms/_help-text.scss +1 -1
  49. data/generators/foundation/public/stylesheets/foundation6/forms/_input-group.scss +82 -10
  50. data/generators/foundation/public/stylesheets/foundation6/forms/_label.scss +2 -0
  51. data/generators/foundation/public/stylesheets/foundation6/forms/_meter.scss +116 -0
  52. data/generators/foundation/public/stylesheets/foundation6/forms/_progress.scss +94 -0
  53. data/generators/foundation/public/stylesheets/foundation6/forms/_range.scss +149 -0
  54. data/generators/foundation/public/stylesheets/foundation6/forms/_select.scss +36 -14
  55. data/generators/foundation/public/stylesheets/foundation6/forms/_text.scss +53 -27
  56. data/generators/foundation/public/stylesheets/foundation6/foundation.scss +59 -17
  57. data/generators/foundation/public/stylesheets/foundation6/grid/_classes.scss +100 -56
  58. data/generators/foundation/public/stylesheets/foundation6/grid/_column.scss +22 -22
  59. data/generators/foundation/public/stylesheets/foundation6/grid/_flex-grid.scss +164 -96
  60. data/generators/foundation/public/stylesheets/foundation6/grid/_grid.scss +19 -4
  61. data/generators/foundation/public/stylesheets/foundation6/grid/_gutter.scss +61 -10
  62. data/generators/foundation/public/stylesheets/foundation6/grid/_layout.scss +49 -5
  63. data/generators/foundation/public/stylesheets/foundation6/grid/_position.scss +14 -9
  64. data/generators/foundation/public/stylesheets/foundation6/grid/_row.scss +42 -15
  65. data/generators/foundation/public/stylesheets/foundation6/motion-ui/_classes.scss +11 -4
  66. data/generators/foundation/public/stylesheets/foundation6/motion-ui/effects/_fade.scss +4 -1
  67. data/generators/foundation/public/stylesheets/foundation6/motion-ui/effects/_zoom.scss +1 -1
  68. data/generators/foundation/public/stylesheets/foundation6/motion-ui/transitions/_slide.scss +1 -1
  69. data/generators/foundation/public/stylesheets/foundation6/motion-ui/util/_transition.scss +1 -1
  70. data/generators/foundation/public/stylesheets/foundation6/prototype/_arrow.scss +36 -0
  71. data/generators/foundation/public/stylesheets/foundation6/prototype/_border-box.scss +35 -0
  72. data/generators/foundation/public/stylesheets/foundation6/prototype/_border-none.scss +35 -0
  73. data/generators/foundation/public/stylesheets/foundation6/prototype/_bordered.scss +54 -0
  74. data/generators/foundation/public/stylesheets/foundation6/prototype/_box.scss +23 -0
  75. data/generators/foundation/public/stylesheets/foundation6/prototype/_display.scss +50 -0
  76. data/generators/foundation/public/stylesheets/foundation6/prototype/_font-styling.scss +95 -0
  77. data/generators/foundation/public/stylesheets/foundation6/prototype/_list-style-type.scss +95 -0
  78. data/generators/foundation/public/stylesheets/foundation6/prototype/_overflow.scss +72 -0
  79. data/generators/foundation/public/stylesheets/foundation6/prototype/_position.scss +114 -0
  80. data/generators/foundation/public/stylesheets/foundation6/prototype/_prototype.scss +87 -0
  81. data/generators/foundation/public/stylesheets/foundation6/prototype/_relation.scss +157 -0
  82. data/generators/foundation/public/stylesheets/foundation6/prototype/_rotate.scss +31 -0
  83. data/generators/foundation/public/stylesheets/foundation6/prototype/_rounded.scss +54 -0
  84. data/generators/foundation/public/stylesheets/foundation6/prototype/_separator.scss +96 -0
  85. data/generators/foundation/public/stylesheets/foundation6/prototype/_shadow.scss +43 -0
  86. data/generators/foundation/public/stylesheets/foundation6/prototype/_sizing.scss +73 -0
  87. data/generators/foundation/public/stylesheets/foundation6/prototype/_spacing.scss +204 -0
  88. data/generators/foundation/public/stylesheets/foundation6/prototype/_text-decoration.scss +48 -0
  89. data/generators/foundation/public/stylesheets/foundation6/prototype/_text-transformation.scss +48 -0
  90. data/generators/foundation/public/stylesheets/foundation6/prototype/_text-utilities.scss +88 -0
  91. data/generators/foundation/public/stylesheets/foundation6/settings/_settings.scss +454 -116
  92. data/generators/foundation/public/stylesheets/foundation6/typography/_alignment.scss +9 -8
  93. data/generators/foundation/public/stylesheets/foundation6/typography/_base.scss +128 -55
  94. data/generators/foundation/public/stylesheets/foundation6/typography/_helpers.scss +7 -4
  95. data/generators/foundation/public/stylesheets/foundation6/typography/_print.scss +22 -9
  96. data/generators/foundation/public/stylesheets/foundation6/typography/_typography.scss +0 -2
  97. data/generators/foundation/public/stylesheets/foundation6/util/_breakpoint.scss +213 -47
  98. data/generators/foundation/public/stylesheets/foundation6/util/_color.scss +105 -17
  99. data/generators/foundation/public/stylesheets/foundation6/util/_direction.scss +31 -0
  100. data/generators/foundation/public/stylesheets/foundation6/util/_flex.scss +85 -0
  101. data/generators/foundation/public/stylesheets/foundation6/util/_math.scss +72 -0
  102. data/generators/foundation/public/stylesheets/foundation6/util/_mixins.scss +161 -38
  103. data/generators/foundation/public/stylesheets/foundation6/util/_selector.scss +5 -3
  104. data/generators/foundation/public/stylesheets/foundation6/util/_typography.scss +26 -0
  105. data/generators/foundation/public/stylesheets/foundation6/util/_unit.scss +100 -17
  106. data/generators/foundation/public/stylesheets/foundation6/util/_util.scss +4 -5
  107. data/generators/foundation/public/stylesheets/foundation6/util/_value.scss +68 -25
  108. data/generators/foundation/public/stylesheets/foundation6/vendor/normalize-scss/sass/_normalize.scss +3 -0
  109. data/generators/foundation/public/stylesheets/foundation6/vendor/normalize-scss/sass/normalize/_import-now.scss +11 -0
  110. data/generators/foundation/public/stylesheets/foundation6/vendor/normalize-scss/sass/normalize/_normalize-mixin.scss +676 -0
  111. data/generators/foundation/public/stylesheets/foundation6/vendor/normalize-scss/sass/normalize/_variables.scss +36 -0
  112. data/generators/foundation/public/stylesheets/foundation6/vendor/normalize-scss/sass/normalize/_vertical-rhythm.scss +61 -0
  113. data/generators/foundation/public/stylesheets/foundation6/vendor/sassy-lists/stylesheets/functions/_contain.scss +31 -0
  114. data/generators/foundation/public/stylesheets/foundation6/vendor/sassy-lists/stylesheets/functions/_purge.scss +38 -0
  115. data/generators/foundation/public/stylesheets/foundation6/vendor/sassy-lists/stylesheets/functions/_remove.scss +31 -0
  116. data/generators/foundation/public/stylesheets/foundation6/vendor/sassy-lists/stylesheets/functions/_replace.scss +46 -0
  117. data/generators/foundation/public/stylesheets/foundation6/vendor/sassy-lists/stylesheets/functions/_to-list.scss +27 -0
  118. data/generators/foundation/public/stylesheets/foundation6/vendor/sassy-lists/stylesheets/helpers/_missing-dependencies.scss +25 -0
  119. data/generators/foundation/public/stylesheets/foundation6/vendor/sassy-lists/stylesheets/helpers/_true.scss +13 -0
  120. data/generators/foundation/public/stylesheets/foundation6/xy-grid/_cell.scss +169 -0
  121. data/generators/foundation/public/stylesheets/foundation6/xy-grid/_classes.scss +476 -0
  122. data/generators/foundation/public/stylesheets/foundation6/xy-grid/_collapse.scss +74 -0
  123. data/generators/foundation/public/stylesheets/foundation6/xy-grid/_frame.scss +85 -0
  124. data/generators/foundation/public/stylesheets/foundation6/xy-grid/_grid.scss +35 -0
  125. data/generators/foundation/public/stylesheets/foundation6/xy-grid/_gutters.scss +45 -0
  126. data/generators/foundation/public/stylesheets/foundation6/xy-grid/_layout.scss +33 -0
  127. data/generators/foundation/public/stylesheets/foundation6/xy-grid/_position.scss +28 -0
  128. data/generators/foundation/public/stylesheets/foundation6/xy-grid/_xy-grid.scss +51 -0
  129. data/lib/locomotive/wagon/tools/styled_yaml.rb +1 -1
  130. data/lib/locomotive/wagon/version.rb +1 -1
  131. data/locomotivecms_wagon.gemspec +2 -2
  132. data/spec/fixtures/cassettes/authenticate.yml +102 -48
  133. data/spec/fixtures/cassettes/delete.yml +519 -259
  134. data/spec/fixtures/cassettes/push.yml +2724 -1486
  135. metadata +61 -10
  136. data/generators/foundation/public/stylesheets/foundation6/motion-ui.scss +0 -4
  137. data/generators/foundation/public/stylesheets/foundation6/vendor/normalize.scss +0 -424
@@ -7,8 +7,10 @@
7
7
  ////
8
8
 
9
9
  /// Generates a selector with every text input type. You can also filter the list to only output a subset of those selectors.
10
+ ///
10
11
  /// @param {List|Keyword} $types [()] - A list of text input types to use. Leave blank to use all of them.
11
- @function text-inputs($types: ()) {
12
+ /// @param {Keyword} $modifier [''] - A modifier to be applied to each text input type (e.g. a class or a pseudo-class). Leave blank to ignore.
13
+ @function text-inputs($types: (), $modifier: '') {
12
14
  $return: ();
13
15
 
14
16
  $all-types:
@@ -27,12 +29,12 @@
27
29
  url
28
30
  color;
29
31
 
30
- @if not(hasvalue($types)) {
32
+ @if not has-value($types) {
31
33
  $types: $all-types;
32
34
  }
33
35
 
34
36
  @each $type in $types {
35
- $return: append($return, unquote('[type="#{$type}"]'), comma);
37
+ $return: append($return, unquote('[type=\'#{$type}\']#{$modifier}'), comma);
36
38
  }
37
39
 
38
40
  @return $return;
@@ -0,0 +1,26 @@
1
+ // Foundation for Sites by ZURB
2
+ // foundation.zurb.com
3
+ // Licensed under MIT Open Source
4
+
5
+ ////
6
+ /// @group functions
7
+ ////
8
+
9
+ $-zf-font-stack: (
10
+ 'georgia': (Georgia, "URW Bookman L", serif),
11
+ 'helvetica': (Helvetica, Arial, "Nimbus Sans L", sans-serif),
12
+ 'lucida-grande': ("Lucida Grande", "Lucida Sans Unicode", "Bitstream Vera Sans", sans-serif),
13
+ 'monospace': ("Courier New", Courier, "Nimbus Sans L", monospace),
14
+ 'system': (-apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Helvetica Neue", Helvetica, Arial, sans-serif),
15
+ 'verdana': (Verdana, Geneva, "DejaVu Sans", sans-serif),
16
+ );
17
+
18
+ /// Return a font stack list from a map. Equivalent to `map-safe-get($name, $-zf-font-stack)`.
19
+ ///
20
+ /// @param {String} $stack - Name of the font stack.
21
+ /// @param {Map} $map [$-zf-font-stack] - Map of font stacks to retrieve a list from.
22
+ ///
23
+ /// @returns {List} Found font stack.
24
+ @function font-stack($stack, $map: $-zf-font-stack) {
25
+ @return map-safe-get($map, $stack);
26
+ }
@@ -6,30 +6,41 @@
6
6
  /// @group functions
7
7
  ////
8
8
 
9
- // scss-lint:disable ZeroUnit
10
-
11
- /// Defines the base font size of the page, which is the value `1rem` is equal to.
12
- /// @type Number
13
- /// @group global
14
- $rem-base: 16px !default;
9
+ $global-font-size: 100% !default;
15
10
 
16
11
  /// Removes the unit (e.g. px, em, rem) from a value, returning the number only.
12
+ ///
17
13
  /// @param {Number} $num - Number to strip unit from.
14
+ ///
18
15
  /// @returns {Number} The same number, sans unit.
19
16
  @function strip-unit($num) {
20
17
  @return $num / ($num * 0 + 1);
21
18
  }
22
19
 
23
20
  /// Converts one or more pixel values into matching rem values.
21
+ ///
24
22
  /// @param {Number|List} $values - One or more values to convert. Be sure to separate them with spaces and not commas. If you need to convert a comma-separated list, wrap the list in parentheses.
25
- /// @param {Number} $base [$rem-base] - The base value to use when calculating the `rem`. If you're using Foundation out of the box, this is 16px.
23
+ /// @param {Number} $base [null] - The base value to use when calculating the `rem`. If you're using Foundation out of the box, this is 16px. If this parameter is `null`, the function will reference the `$base-font-size` variable as the base.
24
+ ///
26
25
  /// @returns {List} A list of converted values.
27
- @function rem-calc($values, $base: $rem-base) {
26
+ @function rem-calc($values, $base: null) {
28
27
  $rem-values: ();
29
28
  $count: length($values);
30
29
 
30
+ // If no base is defined, defer to the global font size
31
31
  @if $base == null {
32
- $base: $rem-base;
32
+ $base: $global-font-size;
33
+ }
34
+
35
+ // If the base font size is a %, then multiply it by 16px
36
+ // This is because 100% font size = 16px in most all browsers
37
+ @if unit($base) == '%' {
38
+ $base: ($base / 100%) * 16px;
39
+ }
40
+
41
+ // Using rem as base allows correct scaling
42
+ @if unit($base) == 'rem' {
43
+ $base: strip-unit($base) * 16px;
33
44
  }
34
45
 
35
46
  @if $count == 1 {
@@ -46,24 +57,96 @@ $rem-base: 16px !default;
46
57
  // Converts a unitless, pixel, or rem value to em, for use in breakpoints.
47
58
  @function -zf-bp-to-em($value) {
48
59
  // Pixel and unitless values are converted to rems
49
- @if unit($value) == 'px' or unit($value) == '' {
50
- $value: rem-calc($value);
60
+ @if unit($value) == 'px' or unitless($value) {
61
+ $value: rem-calc($value, $base: 16px);
51
62
  }
52
63
 
53
64
  // Then the value is converted to ems
54
65
  @return strip-unit($value) * 1em;
55
66
  }
56
67
 
57
- /// Converts a pixel value to matching rem value. *Any* value passed, regardless of unit, is assumed to be a pixel value. By default, the base pixel value used to calculate the rem value is taken from the `$rem-base` variable.
68
+ /// Converts a pixel value to matching rem value. *Any* value passed, regardless of unit, is assumed to be a pixel value. By default, the base pixel value used to calculate the rem value is taken from the `$global-font-size` variable.
69
+ /// @access private
70
+ ///
58
71
  /// @param {Number} $value - Pixel value to convert.
72
+ /// @param {Number} $base [null] - Base for pixel conversion.
73
+ ///
59
74
  /// @returns {Number} A number in rems, calculated based on the given value and the base pixel value. rem values are passed through as is.
60
- /// @access private
61
- @function -zf-to-rem($value, $base: $rem-base) {
62
- // Calculate rem if units for $value is not rem
63
- @if (unit($value) != 'rem') {
75
+ @function -zf-to-rem($value, $base: null) {
76
+ // Check if the value is a number
77
+ @if type-of($value) != 'number' {
78
+ @warn inspect($value) + ' was passed to rem-calc(), which is not a number.';
79
+ @return $value;
80
+ }
81
+
82
+ // Transform em into rem if someone hands over 'em's
83
+ @if unit($value) == 'em' {
84
+ $value: strip-unit($value) * 1rem;
85
+ }
86
+
87
+ // Calculate rem if units for $value is not rem or em
88
+ @if unit($value) != 'rem' {
64
89
  $value: strip-unit($value) / strip-unit($base) * 1rem;
65
90
  }
91
+
66
92
  // Turn 0rem into 0
67
- @if ($value == 0rem) { $value: 0; }
93
+ @if $value == 0rem {
94
+ $value: 0;
95
+ }
96
+
97
+ @return $value;
98
+ }
99
+
100
+ /// Converts a pixel, percentage, rem or em value to a unitless value based on a given font size. Ideal for working out unitless line heights.
101
+ ///
102
+ /// @param {Number} $value - Value to convert to a unitless line height
103
+ /// @param {Number} $base - The font size to use to work out the line height - defaults to $global-font-size
104
+ ///
105
+ /// @return {Number} - Unitless number
106
+ @function unitless-calc($value, $base: null) {
107
+
108
+ // If no base is defined, defer to the global font size
109
+ @if $base == null {
110
+ $base: $global-font-size;
111
+ }
112
+
113
+ // First, lets convert our $base to pixels
114
+
115
+ // If the base font size is a %, then multiply it by 16px
116
+ @if unit($base) == '%' {
117
+ $base: ($base / 100%) * 16px;
118
+ }
119
+
120
+ @if unit($base) == 'rem' {
121
+ $base: strip-unit($base) * 16px;
122
+ }
123
+
124
+ @if unit($base) == 'em' {
125
+ $base: strip-unit($base) * 16px;
126
+ }
127
+
128
+ // Now lets convert our value to pixels too
129
+ @if unit($value) == '%' {
130
+ $value: ($value / 100%) * $base;
131
+ }
132
+
133
+ @if unit($value) == 'rem' {
134
+ $value: strip-unit($value) * $base;
135
+ }
136
+
137
+ @if unit($value) == 'em' {
138
+ $value: strip-unit($value) * $base;
139
+ }
140
+
141
+ // 'px'
142
+ @if unit($value) == 'px' {
143
+ @return strip-unit($value) / strip-unit($base);
144
+ }
145
+
146
+ // assume that line-heights greatern then 10 are meant to be absolute in 'px'
147
+ @if unitless($value) and ($value > 10) {
148
+ @return $value / strip-unit($base);
149
+ }
150
+
68
151
  @return $value;
69
152
  }
@@ -2,14 +2,13 @@
2
2
  // foundation.zurb.com
3
3
  // Licensed under MIT Open Source
4
4
 
5
- // Utilities
5
+ @import 'math';
6
6
  @import 'unit';
7
7
  @import 'value';
8
+ @import 'direction';
8
9
  @import 'color';
9
10
  @import 'selector';
10
-
11
- // Libraries
11
+ @import 'flex';
12
12
  @import 'breakpoint';
13
-
14
- // Mixins
15
13
  @import 'mixins';
14
+ @import 'typography';
@@ -7,9 +7,11 @@
7
7
  ////
8
8
 
9
9
  /// Determine if a value is not falsey, in CSS terms. Falsey values are `null`, `none`, `0` with any unit, or an empty list.
10
- /// @param $val - Value to check.
10
+ ///
11
+ /// @param {Mixed} $val - Value to check.
12
+ ///
11
13
  /// @returns {Boolean} `true` if `$val` is not falsey.
12
- @function hasvalue($val) {
14
+ @function has-value($val) {
13
15
  @if $val == null or $val == none {
14
16
  @return false;
15
17
  }
@@ -23,8 +25,10 @@
23
25
  }
24
26
 
25
27
  /// Determine a top/right/bottom/right value on a padding, margin, etc. property, no matter how many values were passed in. Use this function if you need to know the specific side of a value, but don't know if the value is using a shorthand format.
28
+ ///
26
29
  /// @param {List|Number} $val - Value to analyze. Should be a shorthand sizing property, e.g. "1em 2em 1em"
27
30
  /// @param {Keyword} $side - Side to return. Should be `top`, `right`, `bottom`, or `left`.
31
+ ///
28
32
  /// @returns {Number} A single value based on `$val` and `$side`.
29
33
  @function get-side($val, $side) {
30
34
  $length: length($val);
@@ -59,8 +63,10 @@
59
63
  }
60
64
 
61
65
  /// Given border $val, find a specific element of the border, which is $elem. The possible values for $elem are width, style, and color.
66
+ ///
62
67
  /// @param {List} $val - Border value to find a value in.
63
68
  /// @param {Keyword} $elem - Border component to extract.
69
+ ///
64
70
  /// @returns {Mixed} If the value exists, returns the value. If the value is not in the border definition, the function will return a 0px width, solid style, or black border.
65
71
  @function get-border-value($val, $elem) {
66
72
  // Find the width, style, or color and return it
@@ -83,35 +89,72 @@
83
89
  style: solid,
84
90
  color: #000,
85
91
  );
92
+
86
93
  @return map-get($defaults, $elem);
87
94
  }
88
95
 
89
- /// Calculates x^y, where x is `$base` and y is `$power`.
90
- /// @access private
91
- /// @param {Number} $base - Base number (x).
92
- /// @param {Number} $power - Exponent (y).
93
- @function pow($base, $power) {
94
- @if $power == 0 { @return 1; }
95
- @return $base * pow($base, $power - 1);
96
+ /// Finds a value in a nested map.
97
+ /// @link https://css-tricks.com/snippets/sass/deep-getset-maps/ Deep Get/Set in Maps
98
+ ///
99
+ /// @param {Map} $map - Map to pull a value from.
100
+ /// @param {String} $keys... - Keys to use when looking for a value.
101
+ /// @returns {Mixed} The value found in the map.
102
+ @function map-deep-get($map, $keys...) {
103
+ @each $key in $keys {
104
+ $map: map-get($map, $key);
105
+ }
106
+ @return $map;
96
107
  }
97
108
 
98
- // TODO: Remove this (it's used by the grid but is overkill)
99
- /// Given a user-defined list of keywords and a list of possible keywords, find the ones that were passed in.
100
- /// @param {List} $opts - List of values to find keywords in.
101
- /// @param {List} $seeking - List of all possible keywords.
102
- /// @access private
103
- /// @returns {Map} A map of all keywords in $seeking. If a keyword was found in $opts, its value is true, otherwise false.
104
- @function -zf-get-options($opts, $seeking) {
105
- @if type-of($opts) != 'list' {
106
- $opts: ($opts);
107
- }
109
+ /// Casts a map into a list.
110
+ /// @link http://hugogiraudel.com/2014/04/28/casting-map-into-list/
111
+ ///
112
+ /// @param {Map} $map - Map to pull a value from.
113
+ ///
114
+ /// @returns {List} Depending on the flag, returns either $keys or $values or both.
115
+ @function map-to-list($map, $keep: 'both') {
116
+ $keep: if(index('keys' 'values', $keep), $keep, 'both');
117
+
118
+ @if type-of($map) == 'map' {
119
+ $keys: ();
120
+ $values: ();
108
121
 
109
- $map: ();
110
- @each $keyword in $seeking {
111
- $val: if(index($opts, $keyword) != null, true, false);
112
- $item: ($keyword: $val);
113
- $map: map-merge($map, $item);
122
+ @each $key, $val in $map {
123
+ $keys: append($keys, $key);
124
+ $values: append($values, $val);
125
+ }
126
+
127
+ @if $keep == 'keys' {
128
+ @return $keys;
129
+ }
130
+ @else if $keep == 'values' {
131
+ @return $values;
132
+ }
133
+ @else {
134
+ @return zip($keys, $values);
135
+ }
114
136
  }
115
137
 
116
- @return $map;
138
+ @return if(type-of($map) != 'list', ($value,), $map);
139
+
140
+ }
141
+
142
+ /// Safely return a value from a map.
143
+ ///
144
+ /// @param {Map} $map - Map to retrieve a value from.
145
+ /// @param {String} $key - Name of the map key.
146
+ ///
147
+ /// @returns {List} Found value.
148
+ @function map-safe-get($map, $key) {
149
+ @if (type-of($map) == 'map' or (type-of($map) == 'list' and length($map) == 0)) {
150
+ @if (map-has-key($map, $key)) {
151
+ @return map-get($map, $key);
152
+ }
153
+ @else {
154
+ @error 'Key: `#{$key}` is not available in `#{$map}`';
155
+ }
156
+ }
157
+ @else {
158
+ @error '`#{$map}` is not a valid map';
159
+ }
117
160
  }
@@ -0,0 +1,3 @@
1
+ @import 'normalize/variables';
2
+ @import 'normalize/vertical-rhythm';
3
+ @import 'normalize/normalize-mixin';
@@ -0,0 +1,11 @@
1
+ // Import Now
2
+ //
3
+ // If you import this module directly, it will immediately output all the CSS
4
+ // needed to normalize default HTML elements across all browsers.
5
+ //
6
+ // ```
7
+ // @import "normalize/import-now";
8
+ // ```
9
+
10
+ @import '../normalize';
11
+ @include normalize();
@@ -0,0 +1,676 @@
1
+ // Helper function for the normalize() mixin.
2
+ @function _normalize-include($section, $exclude: null) {
3
+ // Initialize the global variables needed by this function.
4
+ @if not global_variable_exists(_normalize-include) {
5
+ $_normalize-include: () !global;
6
+ $_normalize-exclude: () !global;
7
+ }
8
+ // Since we are given 2 parameters, set the global variables.
9
+ @if $exclude != null {
10
+ $include: $section;
11
+ // Sass doesn't have static variables, so the work-around is to stuff these
12
+ // values into global variables so we can access them in future calls.
13
+ $_normalize-include: if(type-of($include) == 'list', $include, ($include)) !global;
14
+ $_normalize-exclude: if(type-of($exclude) == 'list', $exclude, ($exclude)) !global;
15
+ @return true;
16
+ }
17
+
18
+ // Check if $section is in the $include list.
19
+ @if index($_normalize-include, $section) {
20
+ @return true;
21
+ }
22
+ // If $include is set to (all), make sure $section is not in $exclude.
23
+ @else if not index($_normalize-exclude, $section) and index($_normalize-include, all) {
24
+ @return true;
25
+ }
26
+ @return false;
27
+ }
28
+
29
+ @mixin normalize($include: (all), $exclude: ()) {
30
+ // Initialize the helper function by passing it this mixin's parameters.
31
+ $init: _normalize-include($include, $exclude);
32
+
33
+ // If we've customized any font variables, we'll need extra properties.
34
+ @if $base-font-size != 16px
35
+ or $base-line-height != 24px
36
+ or $base-unit != 'em'
37
+ or $h1-font-size != 2 * $base-font-size
38
+ or $h2-font-size != 1.5 * $base-font-size
39
+ or $h3-font-size != 1.17 * $base-font-size
40
+ or $h4-font-size != 1 * $base-font-size
41
+ or $h5-font-size != 0.83 * $base-font-size
42
+ or $h6-font-size != 0.67 * $base-font-size {
43
+ $normalize-vertical-rhythm: true !global;
44
+ }
45
+
46
+ /*! normalize-scss | MIT/GPLv2 License | bit.ly/normalize-scss */
47
+
48
+ @if _normalize-include(document) {
49
+ /* Document
50
+ ========================================================================== */
51
+
52
+ /**
53
+ * 1. Change the default font family in all browsers (opinionated).
54
+ * 2. Correct the line height in all browsers.
55
+ * 3. Prevent adjustments of font size after orientation changes in
56
+ * IE on Windows Phone and in iOS.
57
+ */
58
+
59
+ html {
60
+ font-family: $base-font-family; /* 1 */
61
+ @if $normalize-vertical-rhythm {
62
+ // Correct old browser bug that prevented accessible resizing of text
63
+ // when root font-size is set with px or em.
64
+ font-size: ($base-font-size / 16px) * 100%;
65
+ line-height: ($base-line-height / $base-font-size) * 1em; /* 2 */
66
+ }
67
+ @else {
68
+ line-height: 1.15; /* 2 */
69
+ }
70
+ -ms-text-size-adjust: 100%; /* 3 */
71
+ -webkit-text-size-adjust: 100%; /* 3 */
72
+ }
73
+ }
74
+
75
+ @if _normalize-include(sections) {
76
+ /* Sections
77
+ ========================================================================== */
78
+
79
+ /**
80
+ * Remove the margin in all browsers (opinionated).
81
+ */
82
+
83
+ body {
84
+ margin: 0;
85
+ }
86
+
87
+ /**
88
+ * Add the correct display in IE 9-.
89
+ */
90
+
91
+ article,
92
+ aside,
93
+ footer,
94
+ header,
95
+ nav,
96
+ section {
97
+ display: block;
98
+ }
99
+
100
+ /**
101
+ * Correct the font size and margin on `h1` elements within `section` and
102
+ * `article` contexts in Chrome, Firefox, and Safari.
103
+ */
104
+
105
+ h1 {
106
+ @include normalize-font-size($h1-font-size);
107
+ @if $normalize-vertical-rhythm {
108
+ @include normalize-line-height($h1-font-size);
109
+ }
110
+
111
+ @if $normalize-vertical-rhythm {
112
+ /* Set 1 unit of vertical rhythm on the top and bottom margins. */
113
+ @include normalize-margin(1 0, $h1-font-size);
114
+ }
115
+ @else {
116
+ margin: 0.67em 0;
117
+ }
118
+ }
119
+
120
+ @if $normalize-vertical-rhythm {
121
+ h2 {
122
+ @include normalize-font-size($h2-font-size);
123
+ @include normalize-line-height($h2-font-size);
124
+ @include normalize-margin(1 0, $h2-font-size);
125
+ }
126
+
127
+ h3 {
128
+ @include normalize-font-size($h3-font-size);
129
+ @include normalize-line-height($h3-font-size);
130
+ @include normalize-margin(1 0, $h3-font-size);
131
+ }
132
+
133
+ h4 {
134
+ @include normalize-font-size($h4-font-size);
135
+ @include normalize-line-height($h4-font-size);
136
+ @include normalize-margin(1 0, $h4-font-size);
137
+ }
138
+
139
+ h5 {
140
+ @include normalize-font-size($h5-font-size);
141
+ @include normalize-line-height($h5-font-size);
142
+ @include normalize-margin(1 0, $h5-font-size);
143
+ }
144
+
145
+ h6 {
146
+ @include normalize-font-size($h6-font-size);
147
+ @include normalize-line-height($h6-font-size);
148
+ @include normalize-margin(1 0, $h6-font-size);
149
+ }
150
+ }
151
+ }
152
+
153
+ @if _normalize-include(grouping) {
154
+ /* Grouping content
155
+ ========================================================================== */
156
+
157
+ @if $normalize-vertical-rhythm {
158
+ /**
159
+ * Set 1 unit of vertical rhythm on the top and bottom margin.
160
+ */
161
+
162
+ blockquote {
163
+ @include normalize-margin(1 $indent-amount);
164
+ }
165
+
166
+ dl,
167
+ ol,
168
+ ul {
169
+ @include normalize-margin(1 0);
170
+ }
171
+
172
+ /**
173
+ * Turn off margins on nested lists.
174
+ */
175
+
176
+ ol,
177
+ ul {
178
+ ol,
179
+ ul {
180
+ margin: 0;
181
+ }
182
+ }
183
+
184
+ dd {
185
+ margin: 0 0 0 $indent-amount;
186
+ }
187
+
188
+ ol,
189
+ ul {
190
+ padding: 0 0 0 $indent-amount;
191
+ }
192
+ }
193
+
194
+ /**
195
+ * Add the correct display in IE 9-.
196
+ */
197
+
198
+ figcaption,
199
+ figure {
200
+ display: block;
201
+ }
202
+
203
+ /**
204
+ * Add the correct margin in IE 8.
205
+ */
206
+
207
+ figure {
208
+ @if $normalize-vertical-rhythm {
209
+ @include normalize-margin(1 $indent-amount);
210
+ }
211
+ @else {
212
+ margin: 1em $indent-amount;
213
+ }
214
+ }
215
+
216
+ /**
217
+ * 1. Add the correct box sizing in Firefox.
218
+ * 2. Show the overflow in Edge and IE.
219
+ */
220
+
221
+ hr {
222
+ box-sizing: content-box; /* 1 */
223
+ height: 0; /* 1 */
224
+ overflow: visible; /* 2 */
225
+ }
226
+
227
+ /**
228
+ * Add the correct display in IE.
229
+ */
230
+
231
+ main {
232
+ display: block;
233
+ }
234
+
235
+ @if $normalize-vertical-rhythm {
236
+ /**
237
+ * Set 1 unit of vertical rhythm on the top and bottom margin.
238
+ */
239
+
240
+ p,
241
+ pre {
242
+ @include normalize-margin(1 0);
243
+ }
244
+ }
245
+
246
+ /**
247
+ * 1. Correct the inheritance and scaling of font size in all browsers.
248
+ * 2. Correct the odd `em` font sizing in all browsers.
249
+ */
250
+
251
+ pre {
252
+ font-family: monospace, monospace; /* 1 */
253
+ font-size: 1em; /* 2 */
254
+ }
255
+ }
256
+
257
+ @if _normalize-include(links) {
258
+ /* Links
259
+ ========================================================================== */
260
+
261
+ /**
262
+ * 1. Remove the gray background on active links in IE 10.
263
+ * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
264
+ */
265
+
266
+ a {
267
+ background-color: transparent; /* 1 */
268
+ -webkit-text-decoration-skip: objects; /* 2 */
269
+ }
270
+
271
+ /**
272
+ * Remove the outline on focused links when they are also active or hovered
273
+ * in all browsers (opinionated).
274
+ */
275
+
276
+ a:active,
277
+ a:hover {
278
+ outline-width: 0;
279
+ }
280
+ }
281
+
282
+ @if _normalize-include(text) {
283
+ /* Text-level semantics
284
+ ========================================================================== */
285
+
286
+ /**
287
+ * 1. Remove the bottom border in Firefox 39-.
288
+ * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
289
+ */
290
+
291
+ abbr[title] {
292
+ border-bottom: none; /* 1 */
293
+ text-decoration: underline; /* 2 */
294
+ text-decoration: underline dotted; /* 2 */
295
+ }
296
+
297
+ /**
298
+ * Prevent the duplicate application of `bolder` by the next rule in Safari 6.
299
+ */
300
+
301
+ b,
302
+ strong {
303
+ font-weight: inherit;
304
+ }
305
+
306
+ /**
307
+ * Add the correct font weight in Chrome, Edge, and Safari.
308
+ */
309
+
310
+ b,
311
+ strong {
312
+ font-weight: bolder;
313
+ }
314
+
315
+ /**
316
+ * 1. Correct the inheritance and scaling of font size in all browsers.
317
+ * 2. Correct the odd `em` font sizing in all browsers.
318
+ */
319
+
320
+ code,
321
+ kbd,
322
+ samp {
323
+ font-family: monospace, monospace; /* 1 */
324
+ font-size: 1em; /* 2 */
325
+ }
326
+
327
+ /**
328
+ * Add the correct font style in Android 4.3-.
329
+ */
330
+
331
+ dfn {
332
+ font-style: italic;
333
+ }
334
+
335
+ /**
336
+ * Add the correct background and color in IE 9-.
337
+ */
338
+
339
+ mark {
340
+ background-color: #ff0;
341
+ color: #000;
342
+ }
343
+
344
+ /**
345
+ * Add the correct font size in all browsers.
346
+ */
347
+
348
+ small {
349
+ font-size: 80%;
350
+ }
351
+
352
+ /**
353
+ * Prevent `sub` and `sup` elements from affecting the line height in
354
+ * all browsers.
355
+ */
356
+
357
+ sub,
358
+ sup {
359
+ font-size: 75%;
360
+ line-height: 0;
361
+ position: relative;
362
+ vertical-align: baseline;
363
+ }
364
+
365
+ sub {
366
+ bottom: -0.25em;
367
+ }
368
+
369
+ sup {
370
+ top: -0.5em;
371
+ }
372
+ }
373
+
374
+ @if _normalize-include(embedded) {
375
+ /* Embedded content
376
+ ========================================================================== */
377
+
378
+ /**
379
+ * Add the correct display in IE 9-.
380
+ */
381
+
382
+ audio,
383
+ video {
384
+ display: inline-block;
385
+ }
386
+
387
+ /**
388
+ * Add the correct display in iOS 4-7.
389
+ */
390
+
391
+ audio:not([controls]) {
392
+ display: none;
393
+ height: 0;
394
+ }
395
+
396
+ /**
397
+ * Remove the border on images inside links in IE 10-.
398
+ */
399
+
400
+ img {
401
+ border-style: none;
402
+ }
403
+
404
+ /**
405
+ * Hide the overflow in IE.
406
+ */
407
+
408
+ svg:not(:root) {
409
+ overflow: hidden;
410
+ }
411
+ }
412
+
413
+ @if _normalize-include(forms) {
414
+ /* Forms
415
+ ========================================================================== */
416
+
417
+ /**
418
+ * 1. Change the font styles in all browsers (opinionated).
419
+ * 2. Remove the margin in Firefox and Safari.
420
+ */
421
+
422
+ button,
423
+ input,
424
+ optgroup,
425
+ select,
426
+ textarea {
427
+ font-family: $base-font-family; /* 1 */
428
+ font-size: 100%; /* 1 */
429
+ @if $normalize-vertical-rhythm {
430
+ line-height: ($base-line-height / $base-font-size) * 1em; /* 1 */
431
+ }
432
+ @else {
433
+ line-height: 1.15; /* 1 */
434
+ }
435
+ margin: 0; /* 2 */
436
+ }
437
+
438
+ /**
439
+ * Show the overflow in IE.
440
+ */
441
+
442
+ button {
443
+ overflow: visible;
444
+ }
445
+
446
+ /**
447
+ * Remove the inheritance of text transform in Edge, Firefox, and IE.
448
+ * 1. Remove the inheritance of text transform in Firefox.
449
+ */
450
+
451
+ button,
452
+ select { /* 1 */
453
+ text-transform: none;
454
+ }
455
+
456
+ /**
457
+ * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
458
+ * controls in Android 4.
459
+ * 2. Correct the inability to style clickable types in iOS and Safari.
460
+ */
461
+
462
+ button,
463
+ html [type="button"], /* 1 */
464
+ [type="reset"],
465
+ [type="submit"] {
466
+ -webkit-appearance: button; /* 2 */
467
+ }
468
+
469
+ button,
470
+ [type="button"],
471
+ [type="reset"],
472
+ [type="submit"] {
473
+
474
+ /**
475
+ * Remove the inner border and padding in Firefox.
476
+ */
477
+
478
+ &::-moz-focus-inner {
479
+ border-style: none;
480
+ padding: 0;
481
+ }
482
+
483
+ /**
484
+ * Restore the focus styles unset by the previous rule.
485
+ */
486
+
487
+ &:-moz-focusring {
488
+ outline: 1px dotted ButtonText;
489
+ }
490
+ }
491
+
492
+ /**
493
+ * Show the overflow in Edge.
494
+ */
495
+
496
+ input {
497
+ overflow: visible;
498
+ }
499
+
500
+ /**
501
+ * 1. Add the correct box sizing in IE 10-.
502
+ * 2. Remove the padding in IE 10-.
503
+ */
504
+
505
+ [type="checkbox"],
506
+ [type="radio"] {
507
+ box-sizing: border-box; /* 1 */
508
+ padding: 0; /* 2 */
509
+ }
510
+
511
+ /**
512
+ * Correct the cursor style of increment and decrement buttons in Chrome.
513
+ */
514
+
515
+ [type="number"]::-webkit-inner-spin-button,
516
+ [type="number"]::-webkit-outer-spin-button {
517
+ height: auto;
518
+ }
519
+
520
+ /**
521
+ * 1. Correct the odd appearance in Chrome and Safari.
522
+ * 2. Correct the outline style in Safari.
523
+ */
524
+
525
+ [type="search"] {
526
+ -webkit-appearance: textfield; /* 1 */
527
+ outline-offset: -2px; /* 2 */
528
+
529
+ /**
530
+ * Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
531
+ */
532
+
533
+ &::-webkit-search-cancel-button,
534
+ &::-webkit-search-decoration {
535
+ -webkit-appearance: none;
536
+ }
537
+ }
538
+
539
+ /**
540
+ * 1. Correct the inability to style clickable types in iOS and Safari.
541
+ * 2. Change font properties to `inherit` in Safari.
542
+ */
543
+
544
+ ::-webkit-file-upload-button {
545
+ -webkit-appearance: button; /* 1 */
546
+ font: inherit; /* 2 */
547
+ }
548
+
549
+ /**
550
+ * Change the border, margin, and padding in all browsers (opinionated).
551
+ */
552
+
553
+ fieldset {
554
+ border: 1px solid #c0c0c0;
555
+ margin: 0 2px;
556
+ padding: 0.35em 0.625em 0.75em;
557
+ }
558
+
559
+ /**
560
+ * 1. Correct the text wrapping in Edge and IE.
561
+ * 2. Correct the color inheritance from `fieldset` elements in IE.
562
+ * 3. Remove the padding so developers are not caught out when they zero out
563
+ * `fieldset` elements in all browsers.
564
+ */
565
+
566
+ legend {
567
+ box-sizing: border-box; /* 1 */
568
+ display: table; /* 1 */
569
+ max-width: 100%; /* 1 */
570
+ padding: 0; /* 3 */
571
+ color: inherit; /* 2 */
572
+ white-space: normal; /* 1 */
573
+ }
574
+
575
+ /**
576
+ * 1. Add the correct display in IE 9-.
577
+ * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
578
+ */
579
+
580
+ progress {
581
+ display: inline-block; /* 1 */
582
+ vertical-align: baseline; /* 2 */
583
+ }
584
+
585
+ /**
586
+ * Remove the default vertical scrollbar in IE.
587
+ */
588
+
589
+ textarea {
590
+ overflow: auto;
591
+ }
592
+ }
593
+
594
+ @if _normalize-include(interactive) {
595
+ /* Interactive
596
+ ========================================================================== */
597
+
598
+ /*
599
+ * Add the correct display in Edge, IE, and Firefox.
600
+ */
601
+
602
+ details {
603
+ display: block;
604
+ }
605
+
606
+ /*
607
+ * Add the correct display in all browsers.
608
+ */
609
+
610
+ summary {
611
+ display: list-item;
612
+ }
613
+
614
+ /*
615
+ * Add the correct display in IE 9-.
616
+ */
617
+
618
+ menu {
619
+ display: block;
620
+
621
+ @if $normalize-vertical-rhythm {
622
+ /*
623
+ * 1. Set 1 unit of vertical rhythm on the top and bottom margin.
624
+ * 2. Set consistent space for the list style image.
625
+ */
626
+
627
+ @include normalize-margin(1 0); /* 1 */
628
+ padding: 0 0 0 $indent-amount; /* 2 */
629
+
630
+ /**
631
+ * Turn off margins on nested lists.
632
+ */
633
+
634
+ menu &,
635
+ ol &,
636
+ ul & {
637
+ margin: 0;
638
+ }
639
+ }
640
+ }
641
+ }
642
+
643
+ @if _normalize-include(scripting) {
644
+ /* Scripting
645
+ ========================================================================== */
646
+
647
+ /**
648
+ * Add the correct display in IE 9-.
649
+ */
650
+
651
+ canvas {
652
+ display: inline-block;
653
+ }
654
+
655
+ /**
656
+ * Add the correct display in IE.
657
+ */
658
+
659
+ template {
660
+ display: none;
661
+ }
662
+ }
663
+
664
+ @if _normalize-include(hidden) {
665
+ /* Hidden
666
+ ========================================================================== */
667
+
668
+ /**
669
+ * Add the correct display in IE 10-.
670
+ */
671
+
672
+ [hidden] {
673
+ display: none;
674
+ }
675
+ }
676
+ }