bourbon 4.2.4 → 6.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.circleci/config.yml +34 -0
- data/.github/ISSUE_TEMPLATE.md +22 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +10 -0
- data/.gitignore +1 -1
- data/.hound.yml +3 -1
- data/.npmignore +7 -4
- data/.stylelintrc.json +3 -0
- data/.tool-versions +2 -0
- data/CHANGELOG.md +415 -0
- data/CODE_OF_CONDUCT.md +6 -0
- data/CONTRIBUTING.md +81 -28
- data/Gemfile +1 -1
- data/LICENSE.md +1 -1
- data/README.md +164 -86
- data/RELEASING.md +33 -0
- data/Rakefile +0 -2
- data/bin/bourbon +1 -2
- data/bourbon.gemspec +30 -24
- data/core/_bourbon.scss +54 -0
- data/core/bourbon/helpers/_buttons-list.scss +14 -0
- data/core/bourbon/helpers/_scales.scss +27 -0
- data/core/bourbon/helpers/_text-inputs-list.scss +26 -0
- data/core/bourbon/library/_border-color.scss +26 -0
- data/core/bourbon/library/_border-radius.scss +85 -0
- data/core/bourbon/library/_border-style.scss +25 -0
- data/core/bourbon/library/_border-width.scss +25 -0
- data/core/bourbon/library/_buttons.scss +84 -0
- data/{app/assets/stylesheets/addons → core/bourbon/library}/_clearfix.scss +5 -5
- data/core/bourbon/library/_contrast-switch.scss +81 -0
- data/{app/assets/stylesheets/addons → core/bourbon/library}/_ellipsis.scss +12 -6
- data/core/bourbon/library/_font-face.scss +65 -0
- data/core/bourbon/library/_font-stacks.scss +248 -0
- data/core/bourbon/library/_hide-text.scss +24 -0
- data/core/bourbon/library/_hide-visually.scss +70 -0
- data/core/bourbon/library/_margin.scss +37 -0
- data/core/bourbon/library/_modular-scale.scss +120 -0
- data/core/bourbon/library/_overflow-wrap.scss +28 -0
- data/core/bourbon/library/_padding.scss +36 -0
- data/core/bourbon/library/_position.scss +62 -0
- data/core/bourbon/library/_prefixer.scss +37 -0
- data/core/bourbon/library/_shade.scss +32 -0
- data/core/bourbon/library/_size.scss +50 -0
- data/core/bourbon/library/_strip-unit.scss +17 -0
- data/core/bourbon/library/_text-inputs.scss +163 -0
- data/core/bourbon/library/_timing-functions.scss +36 -0
- data/core/bourbon/library/_tint.scss +32 -0
- data/core/bourbon/library/_triangle.scss +82 -0
- data/core/bourbon/library/_value-prefixer.scss +37 -0
- data/core/bourbon/settings/_settings.scss +75 -0
- data/core/bourbon/utilities/_assign-inputs.scss +28 -0
- data/core/bourbon/utilities/_compact-shorthand.scss +42 -0
- data/core/bourbon/utilities/_contrast-ratio.scss +31 -0
- data/core/bourbon/utilities/_directional-property.scss +68 -0
- data/core/bourbon/utilities/_fetch-bourbon-setting.scss +16 -0
- data/{app/assets/stylesheets/helpers → core/bourbon/utilities}/_font-source-declaration.scss +23 -15
- data/core/bourbon/utilities/_gamma.scss +24 -0
- data/core/bourbon/utilities/_lightness.scss +24 -0
- data/{app/assets/stylesheets/functions/_unpack.scss → core/bourbon/utilities/_unpack-shorthand.scss} +8 -6
- data/{app/assets/stylesheets/functions → core/bourbon/validators}/_contains-falsy.scss +6 -6
- data/{app/assets/stylesheets/functions → core/bourbon/validators}/_contains.scss +8 -8
- data/core/bourbon/validators/_is-color.scss +13 -0
- data/{app/assets/stylesheets/functions → core/bourbon/validators}/_is-length.scss +6 -2
- data/core/bourbon/validators/_is-number.scss +15 -0
- data/core/bourbon/validators/_is-size.scss +18 -0
- data/eyeglass-exports.js +7 -0
- data/features/install.feature +0 -1
- data/features/step_definitions/bourbon_steps.rb +13 -5
- data/features/update.feature +0 -1
- data/features/version.feature +0 -2
- data/index.js +2 -2
- data/lib/bourbon/generator.rb +11 -10
- data/lib/bourbon/version.rb +1 -1
- data/lib/bourbon.rb +6 -19
- data/package-lock.json +3449 -0
- data/package.json +24 -13
- data/spec/bourbon/{addons → library}/border_color_spec.rb +8 -8
- data/spec/bourbon/{addons → library}/border_radius_spec.rb +1 -1
- data/spec/bourbon/{addons → library}/border_style_spec.rb +1 -1
- data/spec/bourbon/{addons → library}/border_width_spec.rb +1 -1
- data/spec/bourbon/{addons → library}/buttons_spec.rb +4 -4
- data/spec/bourbon/{addons → library}/clearfix_spec.rb +3 -3
- data/spec/bourbon/library/contrast_switch_spec.rb +23 -0
- data/spec/bourbon/{addons → library}/ellipsis_spec.rb +1 -1
- data/spec/bourbon/library/font_face_spec_1.rb +16 -0
- data/spec/bourbon/library/font_face_spec_2.rb +21 -0
- data/spec/bourbon/library/font_face_spec_3.rb +16 -0
- data/spec/bourbon/library/font_face_spec_4.rb +17 -0
- data/spec/bourbon/library/font_stacks_spec.rb +42 -0
- data/spec/bourbon/{addons → library}/hide_text_spec.rb +1 -1
- data/spec/bourbon/library/hide_visually_spec.rb +37 -0
- data/spec/bourbon/{addons → library}/margin_spec.rb +1 -1
- data/spec/bourbon/{functions → library}/modular_scale_spec.rb +6 -6
- data/spec/bourbon/library/overflow_wrap_spec.rb +27 -0
- data/spec/bourbon/{addons → library}/padding_spec.rb +1 -1
- data/spec/bourbon/{addons → library}/position_spec.rb +1 -1
- data/spec/bourbon/library/prefixer_spec.rb +34 -0
- data/spec/bourbon/{functions → library}/shade_spec.rb +1 -1
- data/spec/bourbon/{addons → library}/size_spec.rb +1 -1
- data/spec/bourbon/{functions/strip_units_spec.rb → library/strip_unit_spec.rb} +2 -2
- data/spec/bourbon/{addons → library}/text_inputs_spec.rb +25 -15
- data/spec/bourbon/{functions → library}/tint_spec.rb +1 -1
- data/spec/bourbon/library/triangle_spec.rb +31 -0
- data/spec/bourbon/{functions → utilities}/assign_inputs_spec.rb +8 -8
- data/spec/bourbon/utilities/compact_shorthand_spec.rb +30 -0
- data/spec/bourbon/utilities/contrast_ratio_spec.rb +23 -0
- data/spec/bourbon/utilities/directional_property_spec.rb +28 -0
- data/spec/bourbon/utilities/fetch_bourbon_setting_spec.rb +31 -0
- data/spec/bourbon/{helpers → utilities}/font_source_declaration_spec.rb +1 -1
- data/spec/bourbon/utilities/gamma_spec.rb +23 -0
- data/spec/bourbon/utilities/lightness_spec.rb +31 -0
- data/spec/bourbon/{functions → utilities}/unpack_spec.rb +1 -1
- data/spec/bourbon/{functions → validators}/contains_spec.rb +1 -1
- data/spec/bourbon/{functions → validators}/is_length_spec.rb +1 -1
- data/spec/bourbon/{functions → validators}/is_number_spec.rb +1 -1
- data/spec/bourbon/{functions → validators}/is_size_spec.rb +1 -1
- data/spec/fixtures/_setup.scss +1 -1
- data/spec/fixtures/{addons → library}/border-color.scss +4 -4
- data/spec/fixtures/{addons → library}/border-radius.scss +0 -0
- data/spec/fixtures/{addons → library}/border-style.scss +0 -0
- data/spec/fixtures/{addons → library}/border-width.scss +0 -0
- data/spec/fixtures/{addons → library}/buttons.scss +0 -0
- data/spec/fixtures/{addons → library}/clearfix.scss +0 -0
- data/spec/fixtures/library/contrast-switch.scss +9 -0
- data/spec/fixtures/{addons → library}/ellipsis.scss +0 -0
- data/spec/fixtures/library/font-face-1.scss +6 -0
- data/spec/fixtures/library/font-face-2.scss +10 -0
- data/spec/fixtures/library/font-face-3.scss +8 -0
- data/spec/fixtures/library/font-face-4.scss +7 -0
- data/spec/fixtures/library/font-stacks.scss +41 -0
- data/spec/fixtures/{addons → library}/hide-text.scss +0 -0
- data/spec/fixtures/library/hide-visually.scss +9 -0
- data/spec/fixtures/{addons → library}/margin.scss +0 -0
- data/spec/fixtures/{functions → library}/modular-scale.scss +0 -0
- data/spec/fixtures/library/overflow-wrap.scss +9 -0
- data/spec/fixtures/{addons → library}/padding.scss +0 -0
- data/spec/fixtures/{addons → library}/position.scss +0 -4
- data/spec/fixtures/library/prefixer.scss +13 -0
- data/spec/fixtures/{functions → library}/shade.scss +1 -1
- data/spec/fixtures/{addons → library}/size.scss +2 -2
- data/spec/fixtures/library/strip-unit.scss +17 -0
- data/spec/fixtures/{addons → library}/text-inputs.scss +4 -0
- data/spec/fixtures/{functions → library}/tint.scss +1 -1
- data/spec/fixtures/library/triangle.scss +9 -0
- data/spec/fixtures/utilities/assign-inputs.scss +19 -0
- data/spec/fixtures/utilities/compact-shorthand.scss +21 -0
- data/spec/fixtures/utilities/contrast-ratio.scss +9 -0
- data/spec/fixtures/utilities/directional-property.scss +17 -0
- data/spec/fixtures/utilities/fetch-bourbon-setting.scss +16 -0
- data/spec/fixtures/utilities/font-source-declaration.scss +11 -0
- data/spec/fixtures/utilities/gamma.scss +9 -0
- data/spec/fixtures/utilities/lightness.scss +13 -0
- data/spec/fixtures/utilities/unpack.scss +17 -0
- data/spec/fixtures/{functions → validators}/contains.scss +1 -1
- data/spec/fixtures/{functions → validators}/is-length.scss +1 -1
- data/spec/fixtures/{functions → validators}/is-number.scss +1 -1
- data/spec/fixtures/{functions → validators}/is-size.scss +1 -1
- data/spec/support/matchers/have_value.rb +1 -1
- metadata +246 -282
- data/.scss-lint.yml +0 -14
- data/.travis.yml +0 -8
- data/app/assets/stylesheets/_bourbon-deprecated-upcoming.scss +0 -411
- data/app/assets/stylesheets/_bourbon.scss +0 -87
- data/app/assets/stylesheets/addons/_border-color.scss +0 -26
- data/app/assets/stylesheets/addons/_border-radius.scss +0 -48
- data/app/assets/stylesheets/addons/_border-style.scss +0 -25
- data/app/assets/stylesheets/addons/_border-width.scss +0 -25
- data/app/assets/stylesheets/addons/_buttons.scss +0 -64
- data/app/assets/stylesheets/addons/_font-stacks.scss +0 -31
- data/app/assets/stylesheets/addons/_hide-text.scss +0 -27
- data/app/assets/stylesheets/addons/_margin.scss +0 -26
- data/app/assets/stylesheets/addons/_padding.scss +0 -26
- data/app/assets/stylesheets/addons/_position.scss +0 -48
- data/app/assets/stylesheets/addons/_prefixer.scss +0 -66
- data/app/assets/stylesheets/addons/_retina-image.scss +0 -25
- data/app/assets/stylesheets/addons/_size.scss +0 -51
- data/app/assets/stylesheets/addons/_text-inputs.scss +0 -113
- data/app/assets/stylesheets/addons/_timing-functions.scss +0 -34
- data/app/assets/stylesheets/addons/_triangle.scss +0 -63
- data/app/assets/stylesheets/addons/_word-wrap.scss +0 -29
- data/app/assets/stylesheets/css3/_animation.scss +0 -43
- data/app/assets/stylesheets/css3/_appearance.scss +0 -3
- data/app/assets/stylesheets/css3/_backface-visibility.scss +0 -3
- data/app/assets/stylesheets/css3/_background-image.scss +0 -42
- data/app/assets/stylesheets/css3/_background.scss +0 -55
- data/app/assets/stylesheets/css3/_border-image.scss +0 -59
- data/app/assets/stylesheets/css3/_calc.scss +0 -4
- data/app/assets/stylesheets/css3/_columns.scss +0 -47
- data/app/assets/stylesheets/css3/_filter.scss +0 -4
- data/app/assets/stylesheets/css3/_flex-box.scss +0 -287
- data/app/assets/stylesheets/css3/_font-face.scss +0 -24
- data/app/assets/stylesheets/css3/_font-feature-settings.scss +0 -4
- data/app/assets/stylesheets/css3/_hidpi-media-query.scss +0 -10
- data/app/assets/stylesheets/css3/_hyphens.scss +0 -4
- data/app/assets/stylesheets/css3/_image-rendering.scss +0 -14
- data/app/assets/stylesheets/css3/_keyframes.scss +0 -36
- data/app/assets/stylesheets/css3/_linear-gradient.scss +0 -38
- data/app/assets/stylesheets/css3/_perspective.scss +0 -8
- data/app/assets/stylesheets/css3/_placeholder.scss +0 -8
- data/app/assets/stylesheets/css3/_radial-gradient.scss +0 -39
- data/app/assets/stylesheets/css3/_selection.scss +0 -42
- data/app/assets/stylesheets/css3/_text-decoration.scss +0 -19
- data/app/assets/stylesheets/css3/_transform.scss +0 -15
- data/app/assets/stylesheets/css3/_transition.scss +0 -71
- data/app/assets/stylesheets/css3/_user-select.scss +0 -3
- data/app/assets/stylesheets/functions/_assign-inputs.scss +0 -11
- data/app/assets/stylesheets/functions/_is-light.scss +0 -21
- data/app/assets/stylesheets/functions/_is-number.scss +0 -11
- data/app/assets/stylesheets/functions/_is-size.scss +0 -13
- data/app/assets/stylesheets/functions/_modular-scale.scss +0 -69
- data/app/assets/stylesheets/functions/_px-to-em.scss +0 -13
- data/app/assets/stylesheets/functions/_px-to-rem.scss +0 -15
- data/app/assets/stylesheets/functions/_shade.scss +0 -24
- data/app/assets/stylesheets/functions/_strip-units.scss +0 -17
- data/app/assets/stylesheets/functions/_tint.scss +0 -24
- data/app/assets/stylesheets/functions/_transition-property-name.scss +0 -22
- data/app/assets/stylesheets/helpers/_convert-units.scss +0 -21
- data/app/assets/stylesheets/helpers/_directional-values.scss +0 -96
- data/app/assets/stylesheets/helpers/_gradient-positions-parser.scss +0 -13
- data/app/assets/stylesheets/helpers/_linear-angle-parser.scss +0 -25
- data/app/assets/stylesheets/helpers/_linear-gradient-parser.scss +0 -41
- data/app/assets/stylesheets/helpers/_linear-positions-parser.scss +0 -61
- data/app/assets/stylesheets/helpers/_linear-side-corner-parser.scss +0 -31
- data/app/assets/stylesheets/helpers/_radial-arg-parser.scss +0 -69
- data/app/assets/stylesheets/helpers/_radial-gradient-parser.scss +0 -50
- data/app/assets/stylesheets/helpers/_radial-positions-parser.scss +0 -18
- data/app/assets/stylesheets/helpers/_render-gradients.scss +0 -26
- data/app/assets/stylesheets/helpers/_shape-size-stripper.scss +0 -10
- data/app/assets/stylesheets/helpers/_str-to-num.scss +0 -50
- data/app/assets/stylesheets/settings/_asset-pipeline.scss +0 -7
- data/app/assets/stylesheets/settings/_prefixer.scss +0 -9
- data/app/assets/stylesheets/settings/_px-to-em.scss +0 -1
- data/bower.json +0 -36
- data/lib/bourbon/engine.rb +0 -5
- data/lib/tasks/install.rake +0 -20
- data/sache.json +0 -5
- data/spec/bourbon/addons/font_stacks_spec.rb +0 -25
- data/spec/bourbon/addons/retina_image_spec.rb +0 -57
- data/spec/bourbon/addons/triangle_spec.rb +0 -32
- data/spec/bourbon/addons/word_wrap_spec.rb +0 -29
- data/spec/bourbon/css3/font_face_spec.rb +0 -45
- data/spec/bourbon/css3/hidpi_media_query_spec.rb +0 -23
- data/spec/bourbon/functions/is_light_spec.rb +0 -37
- data/spec/bourbon/functions/px_to_em_spec.rb +0 -31
- data/spec/bourbon/functions/px_to_rem_spec.rb +0 -25
- data/spec/bourbon/helpers/convert_units_spec.rb +0 -31
- data/spec/bourbon/helpers/directional_values_spec.rb +0 -39
- data/spec/bourbon/helpers/str_to_num_spec.rb +0 -25
- data/spec/fixtures/addons/font-stacks.scss +0 -21
- data/spec/fixtures/addons/retina-image.scss +0 -21
- data/spec/fixtures/addons/triangle.scss +0 -9
- data/spec/fixtures/addons/word-wrap.scss +0 -9
- data/spec/fixtures/css3/font-face.scss +0 -6
- data/spec/fixtures/css3/hidpi-media-query.scss +0 -13
- data/spec/fixtures/functions/assign-inputs.scss +0 -19
- data/spec/fixtures/functions/is-light.scss +0 -29
- data/spec/fixtures/functions/px-to-em.scss +0 -17
- data/spec/fixtures/functions/px-to-rem.scss +0 -15
- data/spec/fixtures/functions/strip-units.scss +0 -17
- data/spec/fixtures/functions/unpack.scss +0 -17
- data/spec/fixtures/helpers/convert-units.scss +0 -17
- data/spec/fixtures/helpers/directional-values.scss +0 -29
- data/spec/fixtures/helpers/font-source-declaration.scss +0 -10
- data/spec/fixtures/helpers/str-to-num.scss +0 -13
- data/spec/support/matchers/be_contained_in.rb +0 -10
@@ -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,28 @@
|
|
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
|
+
/* stylelint-disable order/properties-alphabetical-order */
|
22
|
+
|
23
|
+
@mixin overflow-wrap($wrap: break-word) {
|
24
|
+
word-wrap: $wrap;
|
25
|
+
overflow-wrap: $wrap;
|
26
|
+
}
|
27
|
+
|
28
|
+
/* stylelint-enable */
|
@@ -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
|
+
}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
@charset "UTF-8";
|
2
|
+
|
3
|
+
/// Sets the `width` and `height` of the element in one statement.
|
4
|
+
///
|
5
|
+
/// @argument {number (with unit) | string} $width
|
6
|
+
///
|
7
|
+
/// @argument {number (with unit) | string} $height [$width]
|
8
|
+
///
|
9
|
+
/// @example scss
|
10
|
+
/// .first-element {
|
11
|
+
/// @include size(2em);
|
12
|
+
/// }
|
13
|
+
///
|
14
|
+
/// // CSS Output
|
15
|
+
/// .first-element {
|
16
|
+
/// width: 2em;
|
17
|
+
/// height: 2em;
|
18
|
+
/// }
|
19
|
+
///
|
20
|
+
/// @example scss
|
21
|
+
/// .second-element {
|
22
|
+
/// @include size(auto, 10em);
|
23
|
+
/// }
|
24
|
+
///
|
25
|
+
/// // CSS Output
|
26
|
+
/// .second-element {
|
27
|
+
/// width: auto;
|
28
|
+
/// height: 10em;
|
29
|
+
/// }
|
30
|
+
///
|
31
|
+
/// @require {function} _is-size
|
32
|
+
|
33
|
+
@mixin size(
|
34
|
+
$width,
|
35
|
+
$height: $width
|
36
|
+
) {
|
37
|
+
@if _is-size($height) {
|
38
|
+
height: $height;
|
39
|
+
} @else {
|
40
|
+
@error "`#{$height}` is not a valid length for the `$height` argument " +
|
41
|
+
"in the `size` mixin.";
|
42
|
+
}
|
43
|
+
|
44
|
+
@if _is-size($width) {
|
45
|
+
width: $width;
|
46
|
+
} @else {
|
47
|
+
@error "`#{$width}` is not a valid length for the `$width` argument " +
|
48
|
+
"in the `size` mixin.";
|
49
|
+
}
|
50
|
+
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
@charset "UTF-8";
|
2
|
+
|
3
|
+
/// Strips the unit from a number.
|
4
|
+
///
|
5
|
+
/// @argument {number} $value
|
6
|
+
///
|
7
|
+
/// @return {number (unitless)}
|
8
|
+
///
|
9
|
+
/// @example scss
|
10
|
+
/// $dimension: strip-unit(10em);
|
11
|
+
///
|
12
|
+
/// // Output
|
13
|
+
/// $dimension: 10;
|
14
|
+
|
15
|
+
@function strip-unit($value) {
|
16
|
+
@return ($value / ($value * 0 + 1));
|
17
|
+
}
|
@@ -0,0 +1,163 @@
|
|
1
|
+
@charset "UTF-8";
|
2
|
+
|
3
|
+
////
|
4
|
+
/// @type list
|
5
|
+
///
|
6
|
+
/// @require {function} _assign-inputs
|
7
|
+
///
|
8
|
+
/// @require {variable} $_text-inputs-list
|
9
|
+
////
|
10
|
+
|
11
|
+
/// A list of all _text-based_ HTML inputs. Please note that you must
|
12
|
+
/// interpolate the variable (`#{}`) to use it as a selector.
|
13
|
+
///
|
14
|
+
/// @example scss
|
15
|
+
/// #{$all-text-inputs} {
|
16
|
+
/// border: 1px solid #ccc;
|
17
|
+
/// }
|
18
|
+
///
|
19
|
+
/// // CSS Output
|
20
|
+
/// [type='color'],
|
21
|
+
/// [type='date'],
|
22
|
+
/// [type='datetime'],
|
23
|
+
/// [type='datetime-local'],
|
24
|
+
/// [type='email'],
|
25
|
+
/// [type='month'],
|
26
|
+
/// [type='number'],
|
27
|
+
/// [type='password'],
|
28
|
+
/// [type='search'],
|
29
|
+
/// [type='tel'],
|
30
|
+
/// [type='text'],
|
31
|
+
/// [type='time'],
|
32
|
+
/// [type='url'],
|
33
|
+
/// [type='week'],
|
34
|
+
/// input:not([type]),
|
35
|
+
/// textarea {
|
36
|
+
/// border: 1px solid #ccc;
|
37
|
+
/// }
|
38
|
+
|
39
|
+
$all-text-inputs: _assign-inputs($_text-inputs-list);
|
40
|
+
|
41
|
+
/// A list of all _text-based_ HTML inputs with the `:active` pseudo-class
|
42
|
+
/// applied. Please note that you must interpolate the variable (`#{}`) to use
|
43
|
+
/// it as a selector.
|
44
|
+
///
|
45
|
+
/// @example scss
|
46
|
+
/// #{$all-text-inputs-active} {
|
47
|
+
/// border: 1px solid #aaa;
|
48
|
+
/// }
|
49
|
+
///
|
50
|
+
/// // CSS Output
|
51
|
+
/// [type='color']:active,
|
52
|
+
/// [type='date']:active,
|
53
|
+
/// [type='datetime']:active,
|
54
|
+
/// [type='datetime-local']:active,
|
55
|
+
/// [type='email']:active,
|
56
|
+
/// [type='month']:active,
|
57
|
+
/// [type='number']:active,
|
58
|
+
/// [type='password']:active,
|
59
|
+
/// [type='search']:active,
|
60
|
+
/// [type='tel']:active,
|
61
|
+
/// [type='text']:active,
|
62
|
+
/// [type='time']:active,
|
63
|
+
/// [type='url']:active,
|
64
|
+
/// [type='week']:active,
|
65
|
+
/// input:not([type]):active,
|
66
|
+
/// textarea:active {
|
67
|
+
/// border: 1px solid #aaa;
|
68
|
+
/// }
|
69
|
+
|
70
|
+
$all-text-inputs-active: _assign-inputs($_text-inputs-list, active);
|
71
|
+
|
72
|
+
/// A list of all _text-based_ HTML inputs with the `:focus` pseudo-class
|
73
|
+
/// applied. Please note that you must interpolate the variable (`#{}`) to use
|
74
|
+
/// it as a selector.
|
75
|
+
///
|
76
|
+
/// @example scss
|
77
|
+
/// #{$all-text-inputs-focus} {
|
78
|
+
/// border: 1px solid #1565c0;
|
79
|
+
/// }
|
80
|
+
///
|
81
|
+
/// // CSS Output
|
82
|
+
/// [type='color']:focus,
|
83
|
+
/// [type='date']:focus,
|
84
|
+
/// [type='datetime']:focus,
|
85
|
+
/// [type='datetime-local']:focus,
|
86
|
+
/// [type='email']:focus,
|
87
|
+
/// [type='month']:focus,
|
88
|
+
/// [type='number']:focus,
|
89
|
+
/// [type='password']:focus,
|
90
|
+
/// [type='search']:focus,
|
91
|
+
/// [type='tel']:focus,
|
92
|
+
/// [type='text']:focus,
|
93
|
+
/// [type='time']:focus,
|
94
|
+
/// [type='url']:focus,
|
95
|
+
/// [type='week']:focus,
|
96
|
+
/// input:not([type]):focus,
|
97
|
+
/// textarea:focus {
|
98
|
+
/// border: 1px solid #1565c0;
|
99
|
+
/// }
|
100
|
+
|
101
|
+
$all-text-inputs-focus: _assign-inputs($_text-inputs-list, focus);
|
102
|
+
|
103
|
+
/// A list of all _text-based_ HTML inputs with the `:hover` pseudo-class
|
104
|
+
/// applied. Please note that you must interpolate the variable (`#{}`) to use
|
105
|
+
/// it as a selector.
|
106
|
+
///
|
107
|
+
/// @example scss
|
108
|
+
/// #{$all-text-inputs-hover} {
|
109
|
+
/// border: 1px solid #aaa;
|
110
|
+
/// }
|
111
|
+
///
|
112
|
+
/// // CSS Output
|
113
|
+
/// [type='color']:hover,
|
114
|
+
/// [type='date']:hover,
|
115
|
+
/// [type='datetime']:hover,
|
116
|
+
/// [type='datetime-local']:hover,
|
117
|
+
/// [type='email']:hover,
|
118
|
+
/// [type='month']:hover,
|
119
|
+
/// [type='number']:hover,
|
120
|
+
/// [type='password']:hover,
|
121
|
+
/// [type='search']:hover,
|
122
|
+
/// [type='tel']:hover,
|
123
|
+
/// [type='text']:hover,
|
124
|
+
/// [type='time']:hover,
|
125
|
+
/// [type='url']:hover,
|
126
|
+
/// [type='week']:hover,
|
127
|
+
/// input:not([type]):hover,
|
128
|
+
/// textarea:hover {
|
129
|
+
/// border: 1px solid #aaa;
|
130
|
+
/// }
|
131
|
+
|
132
|
+
$all-text-inputs-hover: _assign-inputs($_text-inputs-list, hover);
|
133
|
+
|
134
|
+
/// A list of all _text-based_ HTML inputs with the `:invalid` pseudo-class
|
135
|
+
/// applied. Please note that you must interpolate the variable (`#{}`) to use
|
136
|
+
/// it as a selector.
|
137
|
+
///
|
138
|
+
/// @example scss
|
139
|
+
/// #{$all-text-inputs-invalid} {
|
140
|
+
/// border: 1px solid #00f;
|
141
|
+
/// }
|
142
|
+
///
|
143
|
+
/// // CSS Output
|
144
|
+
/// [type='color']:invalid,
|
145
|
+
/// [type='date']:invalid,
|
146
|
+
/// [type='datetime']:invalid,
|
147
|
+
/// [type='datetime-local']:invalid,
|
148
|
+
/// [type='email']:invalid,
|
149
|
+
/// [type='month']:invalid,
|
150
|
+
/// [type='number']:invalid,
|
151
|
+
/// [type='password']:invalid,
|
152
|
+
/// [type='search']:invalid,
|
153
|
+
/// [type='tel']:invalid,
|
154
|
+
/// [type='text']:invalid,
|
155
|
+
/// [type='time']:invalid,
|
156
|
+
/// [type='url']:invalid,
|
157
|
+
/// [type='week']:invalid,
|
158
|
+
/// input:not([type]):invalid,
|
159
|
+
/// textarea:invalid {
|
160
|
+
/// border: 1px solid #00f;
|
161
|
+
/// }
|
162
|
+
|
163
|
+
$all-text-inputs-invalid: _assign-inputs($_text-inputs-list, invalid);
|
@@ -0,0 +1,36 @@
|
|
1
|
+
@charset "UTF-8";
|
2
|
+
|
3
|
+
////
|
4
|
+
/// CSS cubic-bezier timing functions.
|
5
|
+
///
|
6
|
+
/// @link https://goo.gl/p8u6SK
|
7
|
+
///
|
8
|
+
/// @type string
|
9
|
+
////
|
10
|
+
|
11
|
+
$ease-in-quad: cubic-bezier(0.55, 0.085, 0.68, 0.53);
|
12
|
+
$ease-in-cubic: cubic-bezier(0.55, 0.055, 0.675, 0.19);
|
13
|
+
$ease-in-quart: cubic-bezier(0.895, 0.03, 0.685, 0.22);
|
14
|
+
$ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06);
|
15
|
+
$ease-in-sine: cubic-bezier(0.47, 0, 0.745, 0.715);
|
16
|
+
$ease-in-expo: cubic-bezier(0.95, 0.05, 0.795, 0.035);
|
17
|
+
$ease-in-circ: cubic-bezier(0.6, 0.04, 0.98, 0.335);
|
18
|
+
$ease-in-back: cubic-bezier(0.6, -0.28, 0.735, 0.045);
|
19
|
+
|
20
|
+
$ease-out-quad: cubic-bezier(0.25, 0.46, 0.45, 0.94);
|
21
|
+
$ease-out-cubic: cubic-bezier(0.215, 0.61, 0.355, 1);
|
22
|
+
$ease-out-quart: cubic-bezier(0.165, 0.84, 0.44, 1);
|
23
|
+
$ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1);
|
24
|
+
$ease-out-sine: cubic-bezier(0.39, 0.575, 0.565, 1);
|
25
|
+
$ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1);
|
26
|
+
$ease-out-circ: cubic-bezier(0.075, 0.82, 0.165, 1);
|
27
|
+
$ease-out-back: cubic-bezier(0.175, 0.885, 0.32, 1.275);
|
28
|
+
|
29
|
+
$ease-in-out-quad: cubic-bezier(0.455, 0.03, 0.515, 0.955);
|
30
|
+
$ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1);
|
31
|
+
$ease-in-out-quart: cubic-bezier(0.77, 0, 0.175, 1);
|
32
|
+
$ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1);
|
33
|
+
$ease-in-out-sine: cubic-bezier(0.445, 0.05, 0.55, 0.95);
|
34
|
+
$ease-in-out-expo: cubic-bezier(1, 0, 0, 1);
|
35
|
+
$ease-in-out-circ: cubic-bezier(0.785, 0.135, 0.15, 0.86);
|
36
|
+
$ease-in-out-back: cubic-bezier(0.68, -0.55, 0.265, 1.55);
|
@@ -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
|
+
}
|