baseline-scss 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
+ }