baseline-scss 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +15 -0
  3. data/lib/baseline-scss.rb +1 -0
  4. data/lib/baseline_scss/version.rb +3 -0
  5. data/lib/baseline_scss.rb +41 -0
  6. data/src/_content.scss +7 -0
  7. data/src/_helpers.scss +49 -0
  8. data/src/_mixins.scss +7 -0
  9. data/src/_reboot.scss +227 -0
  10. data/src/_variables.scss +149 -0
  11. data/src/_vendors.scss +3 -0
  12. data/src/baseline.scss +8 -0
  13. data/src/content/_buttons.scss +37 -0
  14. data/src/content/_code.scss +15 -0
  15. data/src/content/_forms.scss +88 -0
  16. data/src/content/_lists.scss +15 -0
  17. data/src/content/_multimedia.scss +8 -0
  18. data/src/content/_tables.scss +27 -0
  19. data/src/content/_typography.scss +99 -0
  20. data/src/mixins/_.scss +4 -0
  21. data/src/mixins/_after_border.scss +12 -0
  22. data/src/mixins/_clearfix.scss +7 -0
  23. data/src/mixins/_font_awesome.scss +12 -0
  24. data/src/mixins/_max_width_container.scss +15 -0
  25. data/src/mixins/_outline.scss +5 -0
  26. data/src/mixins/_sr_only.scss +17 -0
  27. data/src/vendors/_bourbon.scss +54 -0
  28. data/src/vendors/_include-media.scss +591 -0
  29. data/src/vendors/animate.css +4072 -0
  30. data/src/vendors/bourbon/helpers/_buttons-list.scss +14 -0
  31. data/src/vendors/bourbon/helpers/_scales.scss +27 -0
  32. data/src/vendors/bourbon/helpers/_text-inputs-list.scss +26 -0
  33. data/src/vendors/bourbon/library/_border-color.scss +26 -0
  34. data/src/vendors/bourbon/library/_border-radius.scss +85 -0
  35. data/src/vendors/bourbon/library/_border-style.scss +25 -0
  36. data/src/vendors/bourbon/library/_border-width.scss +25 -0
  37. data/src/vendors/bourbon/library/_buttons.scss +84 -0
  38. data/src/vendors/bourbon/library/_clearfix.scss +25 -0
  39. data/src/vendors/bourbon/library/_contrast-switch.scss +81 -0
  40. data/src/vendors/bourbon/library/_ellipsis.scss +36 -0
  41. data/src/vendors/bourbon/library/_font-face.scss +65 -0
  42. data/src/vendors/bourbon/library/_font-stacks.scss +248 -0
  43. data/src/vendors/bourbon/library/_hide-text.scss +24 -0
  44. data/src/vendors/bourbon/library/_hide-visually.scss +70 -0
  45. data/src/vendors/bourbon/library/_margin.scss +37 -0
  46. data/src/vendors/bourbon/library/_modular-scale.scss +120 -0
  47. data/src/vendors/bourbon/library/_overflow-wrap.scss +25 -0
  48. data/src/vendors/bourbon/library/_padding.scss +36 -0
  49. data/src/vendors/bourbon/library/_position.scss +62 -0
  50. data/src/vendors/bourbon/library/_prefixer.scss +37 -0
  51. data/src/vendors/bourbon/library/_shade.scss +32 -0
  52. data/src/vendors/bourbon/library/_size.scss +50 -0
  53. data/src/vendors/bourbon/library/_strip-unit.scss +17 -0
  54. data/src/vendors/bourbon/library/_text-inputs.scss +163 -0
  55. data/src/vendors/bourbon/library/_timing-functions.scss +36 -0
  56. data/src/vendors/bourbon/library/_tint.scss +32 -0
  57. data/src/vendors/bourbon/library/_triangle.scss +82 -0
  58. data/src/vendors/bourbon/library/_value-prefixer.scss +37 -0
  59. data/src/vendors/bourbon/settings/_settings.scss +75 -0
  60. data/src/vendors/bourbon/utilities/_assign-inputs.scss +28 -0
  61. data/src/vendors/bourbon/utilities/_compact-shorthand.scss +42 -0
  62. data/src/vendors/bourbon/utilities/_contrast-ratio.scss +31 -0
  63. data/src/vendors/bourbon/utilities/_directional-property.scss +68 -0
  64. data/src/vendors/bourbon/utilities/_fetch-bourbon-setting.scss +16 -0
  65. data/src/vendors/bourbon/utilities/_font-source-declaration.scss +52 -0
  66. data/src/vendors/bourbon/utilities/_gamma.scss +24 -0
  67. data/src/vendors/bourbon/utilities/_lightness.scss +24 -0
  68. data/src/vendors/bourbon/utilities/_unpack-shorthand.scss +29 -0
  69. data/src/vendors/bourbon/validators/_contains-falsy.scss +20 -0
  70. data/src/vendors/bourbon/validators/_contains.scss +26 -0
  71. data/src/vendors/bourbon/validators/_is-color.scss +13 -0
  72. data/src/vendors/bourbon/validators/_is-length.scss +20 -0
  73. data/src/vendors/bourbon/validators/_is-number.scss +15 -0
  74. data/src/vendors/bourbon/validators/_is-size.scss +18 -0
  75. data/src/vendors/normalize.css +349 -0
  76. metadata +130 -0
@@ -0,0 +1,248 @@
1
+ @charset "UTF-8";
2
+
3
+ /// A variable that outputs a Helvetica font stack.
4
+ ///
5
+ /// @link https://goo.gl/uSJvZe
6
+ ///
7
+ /// @type list
8
+ ///
9
+ /// @example scss
10
+ /// .element {
11
+ /// font-family: $font-stack-helvetica;
12
+ /// }
13
+ ///
14
+ /// // CSS Output
15
+ /// .element {
16
+ /// font-family: "Helvetica Neue", "Helvetica", "Arial", sans-serif;
17
+ /// }
18
+
19
+ $font-stack-helvetica: (
20
+ "Helvetica Neue",
21
+ "Helvetica",
22
+ "Arial",
23
+ sans-serif,
24
+ );
25
+
26
+ /// A variable that outputs a Lucida Grande font stack.
27
+ ///
28
+ /// @link https://goo.gl/R5UyYE
29
+ ///
30
+ /// @type list
31
+ ///
32
+ /// @example scss
33
+ /// .element {
34
+ /// font-family: $font-stack-lucida-grande;
35
+ /// }
36
+ ///
37
+ /// // CSS Output
38
+ /// .element {
39
+ /// font-family: "Lucida Grande", "Lucida Sans Unicode", "Geneva", "Verdana", sans-serif;
40
+ /// }
41
+
42
+ $font-stack-lucida-grande: (
43
+ "Lucida Grande",
44
+ "Lucida Sans Unicode",
45
+ "Geneva",
46
+ "Verdana",
47
+ sans-serif,
48
+ );
49
+
50
+ /// A variable that outputs a Verdana font stack.
51
+ ///
52
+ /// @link https://goo.gl/yGXWSS
53
+ ///
54
+ /// @type list
55
+ ///
56
+ /// @example scss
57
+ /// .element {
58
+ /// font-family: $font-stack-verdana;
59
+ /// }
60
+ ///
61
+ /// // CSS Output
62
+ /// .element {
63
+ /// font-family: "Verdana", "Geneva", sans-serif;
64
+ /// }
65
+
66
+ $font-stack-verdana: (
67
+ "Verdana",
68
+ "Geneva",
69
+ sans-serif,
70
+ );
71
+
72
+ /// A variable that outputs a system font stack.
73
+ ///
74
+ /// @type list
75
+ ///
76
+ /// @example scss
77
+ /// .element {
78
+ /// font-family: $font-stack-system;
79
+ /// }
80
+ ///
81
+ /// // CSS Output
82
+ /// .element {
83
+ /// font-family: system-ui, -apple-system, BlinkMacSystemFont, "Avenir Next", "Avenir", "Segoe UI", "Lucida Grande", "Helvetica Neue", "Helvetica", "Fira Sans", "Roboto", "Noto", "Droid Sans", "Cantarell", "Oxygen", "Ubuntu", "Franklin Gothic Medium", "Century Gothic", "Liberation Sans", sans-serif;
84
+ /// }
85
+
86
+ $font-stack-system: (
87
+ system-ui,
88
+ -apple-system,
89
+ BlinkMacSystemFont,
90
+ "Avenir Next",
91
+ "Avenir",
92
+ "Segoe UI",
93
+ "Lucida Grande",
94
+ "Helvetica Neue",
95
+ "Helvetica",
96
+ "Fira Sans",
97
+ "Roboto",
98
+ "Noto",
99
+ "Droid Sans",
100
+ "Cantarell",
101
+ "Oxygen",
102
+ "Ubuntu",
103
+ "Franklin Gothic Medium",
104
+ "Century Gothic",
105
+ "Liberation Sans",
106
+ sans-serif,
107
+ );
108
+
109
+ /// A variable that outputs a Garamond font stack.
110
+ ///
111
+ /// @link https://goo.gl/QQFEkV
112
+ ///
113
+ /// @type list
114
+ ///
115
+ /// @example scss
116
+ /// .element {
117
+ /// font-family: $font-stack-garamond;
118
+ /// }
119
+ ///
120
+ /// // CSS Output
121
+ /// .element {
122
+ /// font-family: "Garamond", "Baskerville", "Baskerville Old Face", "Hoefler Text", "Times New Roman", serif;
123
+ /// }
124
+
125
+ $font-stack-garamond: (
126
+ "Garamond",
127
+ "Baskerville",
128
+ "Baskerville Old Face",
129
+ "Hoefler Text",
130
+ "Times New Roman",
131
+ serif,
132
+ );
133
+
134
+ /// A variable that outputs a Georgia font stack.
135
+ ///
136
+ /// @link https://goo.gl/wtzVPy
137
+ ///
138
+ /// @type list
139
+ ///
140
+ /// @example scss
141
+ /// .element {
142
+ /// font-family: $font-stack-georgia;
143
+ /// }
144
+ ///
145
+ /// // CSS Output
146
+ /// .element {
147
+ /// font-family: "Georgia", "Times", "Times New Roman", serif;
148
+ /// }
149
+
150
+ $font-stack-georgia: (
151
+ "Georgia",
152
+ "Times",
153
+ "Times New Roman",
154
+ serif,
155
+ );
156
+
157
+ /// A variable that outputs a Hoefler Text font stack.
158
+ ///
159
+ /// @link https://goo.gl/n7U7zx
160
+ ///
161
+ /// @type list
162
+ ///
163
+ /// @example scss
164
+ /// .element {
165
+ /// font-family: $font-stack-hoefler-text;
166
+ /// }
167
+ ///
168
+ /// // CSS Output
169
+ /// .element {
170
+ /// font-family: "Hoefler Text", "Baskerville Old Face", "Garamond", "Times New Roman", serif;
171
+ /// }
172
+
173
+ $font-stack-hoefler-text: (
174
+ "Hoefler Text",
175
+ "Baskerville Old Face",
176
+ "Garamond",
177
+ "Times New Roman",
178
+ serif,
179
+ );
180
+
181
+ /// A variable that outputs a Consolas font stack.
182
+ ///
183
+ /// @link https://goo.gl/iKrtqv
184
+ ///
185
+ /// @type list
186
+ ///
187
+ /// @example scss
188
+ /// .element {
189
+ /// font-family: $font-stack-consolas;
190
+ /// }
191
+ ///
192
+ /// // CSS Output
193
+ /// .element {
194
+ /// font-family: "Consolas", "monaco", monospace;
195
+ /// }
196
+
197
+ $font-stack-consolas: (
198
+ "Consolas",
199
+ "monaco",
200
+ monospace,
201
+ );
202
+
203
+ /// A variable that outputs a Courier New font stack.
204
+ ///
205
+ /// @link https://goo.gl/bHfWMP
206
+ ///
207
+ /// @type list
208
+ ///
209
+ /// @example scss
210
+ /// .element {
211
+ /// font-family: $font-stack-courier-new;
212
+ /// }
213
+ ///
214
+ /// // CSS Output
215
+ /// .element {
216
+ /// font-family: "Courier New", "Courier", "Lucida Sans Typewriter", "Lucida Typewriter", monospace;
217
+ /// }
218
+
219
+ $font-stack-courier-new: (
220
+ "Courier New",
221
+ "Courier",
222
+ "Lucida Sans Typewriter",
223
+ "Lucida Typewriter",
224
+ monospace,
225
+ );
226
+
227
+ /// A variable that outputs a Monaco font stack.
228
+ ///
229
+ /// @link https://goo.gl/9PgKDO
230
+ ///
231
+ /// @type list
232
+ ///
233
+ /// @example scss
234
+ /// .element {
235
+ /// font-family: $font-stack-monaco;
236
+ /// }
237
+ ///
238
+ /// // CSS Output
239
+ /// .element {
240
+ /// font-family: "Monaco", "Consolas", "Lucida Console", monospace;
241
+ /// }
242
+
243
+ $font-stack-monaco: (
244
+ "Monaco",
245
+ "Consolas",
246
+ "Lucida Console",
247
+ monospace,
248
+ );
@@ -0,0 +1,24 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Hides the text in an element, commonly used to show an image instead. Some
4
+ /// elements will need block-level styles applied.
5
+ ///
6
+ /// @link https://goo.gl/EvLRIu
7
+ ///
8
+ /// @example scss
9
+ /// .element {
10
+ /// @include hide-text;
11
+ /// }
12
+ ///
13
+ /// // CSS Output
14
+ /// .element {
15
+ /// overflow: hidden;
16
+ /// text-indent: 101%;
17
+ /// white-space: nowrap;
18
+ /// }
19
+
20
+ @mixin hide-text {
21
+ overflow: hidden;
22
+ text-indent: 101%;
23
+ white-space: nowrap;
24
+ }
@@ -0,0 +1,70 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Hides an element visually while still allowing the content to be accessible
4
+ /// to assistive technology, e.g. screen readers. Passing `unhide` will reverse
5
+ /// the affects of the hiding, which is handy for showing the element on focus,
6
+ /// for example.
7
+ ///
8
+ /// @link https://goo.gl/Vf1TGn
9
+ ///
10
+ /// @argument {string} $toggle [hide]
11
+ /// Accepts `hide` or `unhide`. `unhide` reverses the affects of `hide`.
12
+ ///
13
+ /// @example scss
14
+ /// .element {
15
+ /// @include hide-visually;
16
+ ///
17
+ /// &:active,
18
+ /// &:focus {
19
+ /// @include hide-visually("unhide");
20
+ /// }
21
+ /// }
22
+ ///
23
+ /// // CSS Output
24
+ /// .element {
25
+ /// border: 0;
26
+ /// clip: rect(1px, 1px, 1px, 1px);
27
+ /// clip-path: inset(100%);
28
+ /// height: 1px;
29
+ /// overflow: hidden;
30
+ /// padding: 0;
31
+ /// position: absolute;
32
+ /// width: 1px;
33
+ /// }
34
+ ///
35
+ /// .hide-visually:active,
36
+ /// .hide-visually:focus {
37
+ /// clip: auto;
38
+ /// clip-path: none;
39
+ /// height: auto;
40
+ /// overflow: visible;
41
+ /// position: static;
42
+ /// width: auto;
43
+ /// }
44
+ ///
45
+ /// @since 5.0.0
46
+
47
+ @mixin hide-visually($toggle: "hide") {
48
+ @if not index("hide" "unhide", $toggle) {
49
+ @error "`#{$toggle}` is not a valid value for the `$toggle` argument in " +
50
+ "the `hide-visually` mixin. Must be either `hide` or `unhide`.";
51
+ } @else if $toggle == "hide" {
52
+ border: 0;
53
+ clip: rect(1px, 1px, 1px, 1px);
54
+ clip-path: inset(100%);
55
+ height: 1px;
56
+ overflow: hidden;
57
+ padding: 0;
58
+ position: absolute;
59
+ white-space: nowrap;
60
+ width: 1px;
61
+ } @else if $toggle == "unhide" {
62
+ clip: auto;
63
+ clip-path: none;
64
+ height: auto;
65
+ overflow: visible;
66
+ position: static;
67
+ white-space: inherit;
68
+ width: auto;
69
+ }
70
+ }
@@ -0,0 +1,37 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Provides a concise, one-line method for setting `margin` on specific edges
4
+ /// of a box. Use a `null` value to “skip” edges of the box with standard
5
+ /// CSS shorthand.
6
+ ///
7
+ /// @argument {list} $values
8
+ /// List of margin values; accepts CSS shorthand.
9
+ ///
10
+ /// @example scss
11
+ /// .element {
12
+ /// @include margin(null auto);
13
+ /// }
14
+ ///
15
+ /// // CSS Output
16
+ /// .element {
17
+ /// margin-left: auto;
18
+ /// margin-right: auto;
19
+ /// }
20
+ ///
21
+ /// @example scss
22
+ /// .element {
23
+ /// @include margin(10px 3em 20vh null);
24
+ /// }
25
+ ///
26
+ /// // CSS Output
27
+ /// .element {
28
+ /// margin-bottom: 20vh;
29
+ /// margin-right: 3em;
30
+ /// margin-top: 10px;
31
+ /// }
32
+ ///
33
+ /// @require {mixin} _directional-property
34
+
35
+ @mixin margin($values) {
36
+ @include _directional-property(margin, null, $values);
37
+ }
@@ -0,0 +1,120 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Increments up or down a defined scale and returns an adjusted value. This
4
+ /// helps establish consistent measurements and spacial relationships throughout
5
+ /// your project. We provide a list of commonly used scales as
6
+ /// [pre-defined variables][scales].
7
+ ///
8
+ /// [scales]: https://github.com/thoughtbot/bourbon/blob/master/core/bourbon/helpers/_scales.scss
9
+ ///
10
+ /// @argument {number (unitless)} $increment
11
+ /// How many steps to increment up or down the scale.
12
+ ///
13
+ /// @argument {number (with unit) | list} $value [1em]
14
+ /// The base value the scale starts at. Can also be set globally using the
15
+ /// `modular-scale-base` key in the Bourbon settings.
16
+ ///
17
+ /// @argument {number (unitless)} $ratio [1.25]
18
+ /// The ratio the scale is built on. Can also be set globally using the
19
+ /// `modular-scale-ratio` key in the Bourbon settings.
20
+ ///
21
+ /// @return {number (with unit)}
22
+ ///
23
+ /// @example scss
24
+ /// .element {
25
+ /// font-size: modular-scale(2);
26
+ /// }
27
+ ///
28
+ /// // CSS Output
29
+ /// .element {
30
+ /// font-size: 1.5625em;
31
+ /// }
32
+ ///
33
+ /// @example scss
34
+ /// .element {
35
+ /// margin-right: modular-scale(3, 2em);
36
+ /// }
37
+ ///
38
+ /// // CSS Output
39
+ /// .element {
40
+ /// margin-right: 3.90625em;
41
+ /// }
42
+ ///
43
+ /// @example scss
44
+ /// .element {
45
+ /// font-size: modular-scale(3, 1em 1.6em, $major-seventh);
46
+ /// }
47
+ ///
48
+ /// // CSS Output
49
+ /// .element {
50
+ /// font-size: 3em;
51
+ /// }
52
+ ///
53
+ /// @example scss
54
+ /// // Globally change the base ratio
55
+ /// $bourbon: (
56
+ /// "modular-scale-ratio": 1.2,
57
+ /// );
58
+ ///
59
+ /// .element {
60
+ /// font-size: modular-scale(3);
61
+ /// }
62
+ ///
63
+ /// // CSS Output
64
+ /// .element {
65
+ /// font-size: 1.728em;
66
+ /// }
67
+ ///
68
+ /// @require {function} _fetch-bourbon-setting
69
+
70
+ @function modular-scale(
71
+ $increment,
72
+ $value: _fetch-bourbon-setting("modular-scale-base"),
73
+ $ratio: _fetch-bourbon-setting("modular-scale-ratio")
74
+ ) {
75
+ $v1: nth($value, 1);
76
+ $v2: nth($value, length($value));
77
+ $value: $v1;
78
+
79
+ // scale $v2 to just above $v1
80
+ @while $v2 > $v1 {
81
+ $v2: ($v2 / $ratio); // will be off-by-1
82
+ }
83
+ @while $v2 < $v1 {
84
+ $v2: ($v2 * $ratio); // will fix off-by-1
85
+ }
86
+
87
+ // check AFTER scaling $v2 to prevent double-counting corner-case
88
+ $double-stranded: $v2 > $v1;
89
+
90
+ @if $increment > 0 {
91
+ @for $i from 1 through $increment {
92
+ @if $double-stranded and ($v1 * $ratio) > $v2 {
93
+ $value: $v2;
94
+ $v2: ($v2 * $ratio);
95
+ } @else {
96
+ $v1: ($v1 * $ratio);
97
+ $value: $v1;
98
+ }
99
+ }
100
+ }
101
+
102
+ @if $increment < 0 {
103
+ // adjust $v2 to just below $v1
104
+ @if $double-stranded {
105
+ $v2: ($v2 / $ratio);
106
+ }
107
+
108
+ @for $i from $increment through -1 {
109
+ @if $double-stranded and ($v1 / $ratio) < $v2 {
110
+ $value: $v2;
111
+ $v2: ($v2 / $ratio);
112
+ } @else {
113
+ $v1: ($v1 / $ratio);
114
+ $value: $v1;
115
+ }
116
+ }
117
+ }
118
+
119
+ @return $value;
120
+ }
@@ -0,0 +1,25 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Outputs the `overflow-wrap` property and its legacy name `word-wrap` to
4
+ /// support browsers that do not yet use `overflow-wrap`.
5
+ ///
6
+ /// @argument {string} $wrap [break-word]
7
+ /// Accepted CSS values are `normal`, `break-word`, `inherit`, `initial`,
8
+ /// or `unset`.
9
+ ///
10
+ /// @example scss
11
+ /// .wrapper {
12
+ /// @include overflow-wrap;
13
+ /// }
14
+ ///
15
+ /// // CSS Output
16
+ /// .wrapper {
17
+ /// word-wrap: break-word;
18
+ /// overflow-wrap: break-word;
19
+ /// }
20
+
21
+ @mixin overflow-wrap($wrap: break-word) {
22
+ word-wrap: $wrap;
23
+ // stylelint-disable-next-line order/properties-alphabetical-order
24
+ overflow-wrap: $wrap;
25
+ }
@@ -0,0 +1,36 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Provides a concise method for targeting `padding` on specific sides of a
4
+ /// box. Use a `null` value to “skip” a side.
5
+ ///
6
+ /// @argument {list} $values
7
+ /// List of padding values; accepts CSS shorthand.
8
+ ///
9
+ /// @example scss
10
+ /// .element-one {
11
+ /// @include padding(null 1rem);
12
+ /// }
13
+ ///
14
+ /// // CSS Output
15
+ /// .element-one {
16
+ /// padding-left: 1rem;
17
+ /// padding-right: 1rem;
18
+ /// }
19
+ ///
20
+ /// @example scss
21
+ /// .element-two {
22
+ /// @include padding(10vh null 10px 5%);
23
+ /// }
24
+ ///
25
+ /// // CSS Output
26
+ /// .element-two {
27
+ /// padding-bottom: 10px;
28
+ /// padding-left: 5%;
29
+ /// padding-top: 10vh;
30
+ /// }
31
+ ///
32
+ /// @require {mixin} _directional-property
33
+
34
+ @mixin padding($values) {
35
+ @include _directional-property(padding, null, $values);
36
+ }
@@ -0,0 +1,62 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Provides a concise, one-line method for setting an element’s positioning
4
+ /// properties: `position`, `top`, `right`, `bottom` and `left`. Use a `null`
5
+ /// value to “skip” an edge of the box.
6
+ ///
7
+ /// @argument {string} $position
8
+ /// A CSS position value.
9
+ ///
10
+ /// @argument {list} $box-edge-values
11
+ /// List of lengths; accepts CSS shorthand.
12
+ ///
13
+ /// @example scss
14
+ /// .element {
15
+ /// @include position(relative, 0 null null 10em);
16
+ /// }
17
+ ///
18
+ /// // CSS Output
19
+ /// .element {
20
+ /// left: 10em;
21
+ /// position: relative;
22
+ /// top: 0;
23
+ /// }
24
+ ///
25
+ /// @example scss
26
+ /// .element {
27
+ /// @include position(absolute, 0);
28
+ /// }
29
+ ///
30
+ /// // CSS Output
31
+ /// .element {
32
+ /// position: absolute;
33
+ /// top: 0;
34
+ /// right: 0;
35
+ /// bottom: 0;
36
+ /// left: 0;
37
+ /// }
38
+ ///
39
+ /// @require {function} _is-length
40
+ ///
41
+ /// @require {function} _unpack-shorthand
42
+
43
+ @mixin position(
44
+ $position,
45
+ $box-edge-values
46
+ ) {
47
+ $box-edge-values: _unpack-shorthand($box-edge-values);
48
+ $offsets: (
49
+ "top": nth($box-edge-values, 1),
50
+ "right": nth($box-edge-values, 2),
51
+ "bottom": nth($box-edge-values, 3),
52
+ "left": nth($box-edge-values, 4),
53
+ );
54
+
55
+ position: $position;
56
+
57
+ @each $offset, $value in $offsets {
58
+ @if _is-length($value) {
59
+ #{$offset}: $value;
60
+ }
61
+ }
62
+ }
@@ -0,0 +1,37 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Generates vendor prefixes.
4
+ ///
5
+ /// @argument {string} $property
6
+ /// Property to prefix.
7
+ ///
8
+ /// @argument {string} $value
9
+ /// Value to use.
10
+ ///
11
+ /// @argument {list} $prefixes
12
+ /// Vendor prefixes to output.
13
+ ///
14
+ /// @example scss
15
+ /// .element {
16
+ /// @include prefixer(appearance, none, ("webkit", "moz"));
17
+ /// }
18
+ ///
19
+ /// // CSS Output
20
+ /// .element {
21
+ /// -webkit-appearance: none;
22
+ /// -moz-appearance: none;
23
+ /// appearance: none;
24
+ /// }
25
+ ///
26
+ /// @author Hugo Giraudel
27
+
28
+ @mixin prefixer(
29
+ $property,
30
+ $value,
31
+ $prefixes: ()
32
+ ) {
33
+ @each $prefix in $prefixes {
34
+ #{"-" + $prefix + "-" + $property}: $value;
35
+ }
36
+ #{$property}: $value;
37
+ }
@@ -0,0 +1,32 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Mixes a color with black.
4
+ ///
5
+ /// @argument {color} $color
6
+ ///
7
+ /// @argument {number (percentage)} $percent
8
+ /// The amount of black to be mixed in.
9
+ ///
10
+ /// @return {color}
11
+ ///
12
+ /// @example scss
13
+ /// .element {
14
+ /// background-color: shade(#ffbb52, 60%);
15
+ /// }
16
+ ///
17
+ /// // CSS Output
18
+ /// .element {
19
+ /// background-color: #664a20;
20
+ /// }
21
+
22
+ @function shade(
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 `shade` mixin.";
29
+ } @else {
30
+ @return mix(#000, $color, $percent);
31
+ }
32
+ }