typey 1.0.0.beta.5 → 1.0.0.beta.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +134 -416
- data/stylesheets/_typey.scss +13 -7
- data/stylesheets/typey/_defaults.scss +13 -39
- data/stylesheets/typey/_font-stacks.scss +0 -14
- data/stylesheets/typey/functions/_depreciated.scss +55 -0
- data/stylesheets/typey/functions/_em-calculators.scss +41 -0
- data/stylesheets/typey/{_weight.scss → functions/_extras.scss} +10 -8
- data/stylesheets/typey/functions/_helpers.scss +32 -0
- data/stylesheets/typey/functions/_outputters.scss +83 -0
- data/stylesheets/typey/functions/_sizers.scss +117 -0
- data/stylesheets/typey/functions/_validators.scss +77 -0
- data/stylesheets/typey/mixins/_define-type-sizing.scss +49 -0
- data/stylesheets/typey/mixins/_font-size.scss +24 -0
- data/stylesheets/typey/mixins/_line-height.scss +25 -0
- data/stylesheets/typey/{_margin.scss → mixins/_margin.scss} +30 -37
- data/stylesheets/typey/{_padding.scss → mixins/_padding.scss} +30 -37
- data/stylesheets/typey/mixins/_type-layout.scss +53 -0
- data/typey.gemspec +2 -2
- metadata +16 -10
- data/stylesheets/typey/_font-size.scss +0 -56
- data/stylesheets/typey/_helpers.scss +0 -171
- data/stylesheets/typey/_line-height.scss +0 -63
- data/stylesheets/typey/_type-layout.scss +0 -49
data/stylesheets/_typey.scss
CHANGED
@@ -1,9 +1,15 @@
|
|
1
|
+
@import "typey/functions/helpers";
|
2
|
+
@import "typey/functions/validators";
|
3
|
+
@import "typey/functions/em-calculators";
|
4
|
+
@import "typey/functions/outputters";
|
5
|
+
@import "typey/functions/sizers";
|
6
|
+
@import "typey/functions/extras";
|
7
|
+
@import "typey/functions/depreciated";
|
1
8
|
@import "typey/defaults";
|
2
|
-
@import "typey/helpers";
|
3
9
|
@import "typey/font-stacks";
|
4
|
-
@import "typey/
|
5
|
-
@import "typey/
|
6
|
-
@import "typey/
|
7
|
-
@import "typey/
|
8
|
-
@import "typey/margin";
|
9
|
-
@import "typey/padding";
|
10
|
+
@import "typey/mixins/define-type-sizing";
|
11
|
+
@import "typey/mixins/font-size";
|
12
|
+
@import "typey/mixins/line-height";
|
13
|
+
@import "typey/mixins/type-layout";
|
14
|
+
@import "typey/mixins/margin";
|
15
|
+
@import "typey/mixins/padding";
|
@@ -2,16 +2,26 @@
|
|
2
2
|
// Allowed units: px
|
3
3
|
$browser-font-size: 16px !default;
|
4
4
|
|
5
|
+
// Allowed units: rem, em or px
|
6
|
+
$base-unit: rem !default;
|
7
|
+
|
5
8
|
// The base font size will be used for most calculations involving font-size.
|
6
9
|
// Allowed units: px
|
7
10
|
$base-font-size: 16px !default;
|
8
11
|
|
9
12
|
// The base line height will be used for most calculations involving height.
|
10
13
|
// Allowed units: px
|
11
|
-
$base-line-height:
|
14
|
+
$base-line-height: 20px !default;
|
12
15
|
|
13
|
-
// Allowed
|
14
|
-
|
16
|
+
// The method to calculate line-height. Allowed values: rhythm or ratio.
|
17
|
+
// Rhytm uses a vertical rhythm approach where line-height is specified as
|
18
|
+
// a multiple of the $base-line-height.
|
19
|
+
// Ratio uses a ratio approach where line-height is specified as a ratio
|
20
|
+
// of the elements font-size.
|
21
|
+
$line-height-method: rhythm !default;
|
22
|
+
|
23
|
+
// The default ratio of line-height to font-size.
|
24
|
+
$base-line-height-ratio: 1.25 !default;
|
15
25
|
|
16
26
|
// By default we will provide fallbacks when rem is the base unit.
|
17
27
|
$rem-fallback: true !default;
|
@@ -72,39 +82,3 @@ $font-weight: (
|
|
72
82
|
@error "Size '#{$key}' in $font-size map is not specified in px";
|
73
83
|
}
|
74
84
|
}
|
75
|
-
|
76
|
-
// Define defaults (in the HTML element).
|
77
|
-
//
|
78
|
-
// @param number $base-font-size
|
79
|
-
// (optional) Use to set to anything other than the base value.
|
80
|
-
// Allowed units: px
|
81
|
-
// @param number $base-line-height
|
82
|
-
// (optional) Use to set to anything other than the base value.
|
83
|
-
// Allowed units: px
|
84
|
-
@mixin define-type-sizing($base-font-size: $base-font-size, $base-line-height: $base-line-height) {
|
85
|
-
@if $base-unit == rem {
|
86
|
-
font-size: $base-font-size / $browser-font-size * 100%;
|
87
|
-
@if $rem-fallback == true {
|
88
|
-
line-height: $base-line-height;
|
89
|
-
}
|
90
|
-
line-height: output-unit($base-line-height / $base-font-size);
|
91
|
-
}
|
92
|
-
@if $base-unit == px {
|
93
|
-
font-size: $base-font-size;
|
94
|
-
line-height: $base-line-height;
|
95
|
-
}
|
96
|
-
@if $base-unit == em {
|
97
|
-
font-size: $base-font-size / $browser-font-size * 100%;
|
98
|
-
line-height: output-unit($base-line-height / $base-font-size);
|
99
|
-
}
|
100
|
-
@if $auto-print-sizing == true {
|
101
|
-
@if $base-unit == rem or $base-unit == em {
|
102
|
-
@media print {
|
103
|
-
font-size: $print-font-size;
|
104
|
-
}
|
105
|
-
}
|
106
|
-
@else {
|
107
|
-
@warn "As you are not using a relative base unit (rem or em) automatic print media sizing will not work. Set $auto-print-sizing to false to hide this warning"
|
108
|
-
}
|
109
|
-
}
|
110
|
-
}
|
@@ -9,17 +9,3 @@ $helvetica-stack: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
9
9
|
$baskerville-stack: Baskerville, "Baskerville Old Face", "Hoefler Text", Garamond, "Times New Roman", serif;
|
10
10
|
$monaco-stack: Monaco, Consolas, "Lucida Console", monospace, monospace;
|
11
11
|
$trebuchet-ms-stack: "Trebuchet MS", "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Tahoma, sans-serif;
|
12
|
-
|
13
|
-
// Extend a font by adding a web-safe stack to it.
|
14
|
-
//
|
15
|
-
// Example usage:
|
16
|
-
// $new-font-stack: extend-font-stack("Open sans", $sans-serif-stack);
|
17
|
-
//
|
18
|
-
// @param string $font
|
19
|
-
// The name of the font. Use inverted commas if there are spaces in the font
|
20
|
-
// name. i.e "Open sans"
|
21
|
-
// @param list $font-stack
|
22
|
-
// The font stack variable to extend.
|
23
|
-
@function extend-font-stack($font, $font-stack) {
|
24
|
-
@return join($font, $font-stack, $separator: comma);
|
25
|
-
}
|
@@ -0,0 +1,55 @@
|
|
1
|
+
// DEPRECIATED FUNCTIONS
|
2
|
+
// The names of these functions have been refined and namespaced (above) to avoid
|
3
|
+
// potential confusion with functions from other libraries.
|
4
|
+
|
5
|
+
// (Depreciated) Output a number in the $base-unit..
|
6
|
+
//
|
7
|
+
// @param string $weight
|
8
|
+
// A weight from the $font-weight map.
|
9
|
+
//
|
10
|
+
// @return string
|
11
|
+
// The selected font-weight.
|
12
|
+
@function output-unit($number) {
|
13
|
+
@warn "output-unit() is depreciated. Please use typey-output-in-base-unit() instead.";
|
14
|
+
@return typey-output-in-base-unit($number);
|
15
|
+
}
|
16
|
+
|
17
|
+
// (Depreciated) Remove the unit from a number.
|
18
|
+
//
|
19
|
+
// @param number $number
|
20
|
+
// The number (with unit) to convert. Allowed units: any
|
21
|
+
//
|
22
|
+
// @return number
|
23
|
+
// The number without the unit.
|
24
|
+
@function strip-unit($number) {
|
25
|
+
@warn "strip-unit() is depreciated. Please use typey-strip-unit() instead.";
|
26
|
+
@return typey-strip-unit($number);
|
27
|
+
}
|
28
|
+
|
29
|
+
// (Depreciated) Convert px to the $base-unit.
|
30
|
+
//
|
31
|
+
// @param number $number
|
32
|
+
// The number (with unit) to convert. Allowed units: px
|
33
|
+
// @param number|string $context
|
34
|
+
// (optional) Only used if em is the $base-unit. The value of the elements/parents
|
35
|
+
// font-size if it differs from $base-font-size. Specified as a t-shirt size or
|
36
|
+
// value in px.
|
37
|
+
//
|
38
|
+
// @return number
|
39
|
+
// The number converted to the base unit.
|
40
|
+
@function convert-unit($number, $context: $base-font-size) {
|
41
|
+
@warn "convert-unit() is depreciated. Please use output-from-px() instead.";
|
42
|
+
@return output-from-px($number, $context);
|
43
|
+
}
|
44
|
+
|
45
|
+
// (Depreciated) Retrieve a font weight.
|
46
|
+
//
|
47
|
+
// @param string $weight
|
48
|
+
// A weight from the $font-weight map.
|
49
|
+
//
|
50
|
+
// @return string
|
51
|
+
// The selected font-weight.
|
52
|
+
@function font-weight($weight) {
|
53
|
+
@warn "font-weight() is depreciated. Please use weight() instead.";
|
54
|
+
@return weight($weight);
|
55
|
+
}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
// Calculate relative sizing for em when a px value is used.
|
2
|
+
//
|
3
|
+
// @param number $number
|
4
|
+
// The px value
|
5
|
+
// @param number|string $context
|
6
|
+
// The relative value to perform the calculation.
|
7
|
+
//
|
8
|
+
// @return number
|
9
|
+
// The calculated value in the base unit.
|
10
|
+
@function calculate-em-px($x, $context) {
|
11
|
+
$allowed-types: "font-size", "px";
|
12
|
+
$type: typey-validator($context, $allowed-types);
|
13
|
+
@if $type == "font-size" {
|
14
|
+
$context-map-size: map-get($font-size, $context);
|
15
|
+
@return typey-output-in-base-unit(($x / $context-map-size));
|
16
|
+
}
|
17
|
+
@if $type == "px" {
|
18
|
+
@return typey-output-in-base-unit(($x / $context));
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
22
|
+
// Calculate relative sizing for em when a multiplier is used.
|
23
|
+
//
|
24
|
+
// @param number $number
|
25
|
+
// Multiple of line height to be used.
|
26
|
+
// @param number|string $context
|
27
|
+
// The relative value to perform the calculation.
|
28
|
+
//
|
29
|
+
// @return number
|
30
|
+
// The calculated value in the base unit.
|
31
|
+
@function calculate-em-multiplier($x, $context) {
|
32
|
+
$allowed-types: "font-size", "px";
|
33
|
+
$type: typey-validator($context, $allowed-types);
|
34
|
+
@if $type == "font-size" {
|
35
|
+
$context-map-size: map-get($font-size, $context);
|
36
|
+
@return typey-output-in-base-unit(($x * $base-line-height) / $context-map-size);
|
37
|
+
}
|
38
|
+
@if $type == "px" {
|
39
|
+
@return typey-output-in-base-unit(($x * $base-line-height) / $context);
|
40
|
+
}
|
41
|
+
}
|
@@ -19,14 +19,16 @@
|
|
19
19
|
}
|
20
20
|
}
|
21
21
|
|
22
|
-
//
|
22
|
+
// Extend a font by adding a web-safe stack to it.
|
23
23
|
//
|
24
|
-
//
|
25
|
-
//
|
24
|
+
// Example usage:
|
25
|
+
// $new-font-stack: extend-font-stack("Open sans", $sans-serif-stack);
|
26
26
|
//
|
27
|
-
// @
|
28
|
-
// The
|
29
|
-
|
30
|
-
|
31
|
-
|
27
|
+
// @param string $font
|
28
|
+
// The name of the font. Use inverted commas if there are spaces in the font
|
29
|
+
// name. i.e "Open sans"
|
30
|
+
// @param list $font-stack
|
31
|
+
// The font stack variable to extend.
|
32
|
+
@function extend-font-stack($font, $font-stack) {
|
33
|
+
@return join($font, $font-stack, $separator: comma);
|
32
34
|
}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
// Output a number in the $base-unit.
|
2
|
+
//
|
3
|
+
// @param number $number
|
4
|
+
// The number (without unit) to output.
|
5
|
+
//
|
6
|
+
// @return number
|
7
|
+
// The number with the base unit
|
8
|
+
@function typey-output-in-base-unit($number) {
|
9
|
+
@if $base-unit == rem {
|
10
|
+
@return $number * 1rem;
|
11
|
+
}
|
12
|
+
@if $base-unit == px {
|
13
|
+
@return $number * 1px;
|
14
|
+
}
|
15
|
+
@if $base-unit == em {
|
16
|
+
@return $number * 1em;
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
// Remove the unit from a number.
|
21
|
+
//
|
22
|
+
// @param number $number
|
23
|
+
// The number (with unit) to convert. Allowed units: any
|
24
|
+
//
|
25
|
+
// @return number
|
26
|
+
// The number without the unit.
|
27
|
+
@function typey-strip-unit($number) {
|
28
|
+
@if type-of($number) == "number" and not unitless($number) {
|
29
|
+
@return $number / ($number * 0 + 1);
|
30
|
+
}
|
31
|
+
@return $number;
|
32
|
+
}
|
@@ -0,0 +1,83 @@
|
|
1
|
+
// Take a px value and output converted value.
|
2
|
+
//
|
3
|
+
// @param number $number
|
4
|
+
// A px value to convert.
|
5
|
+
// @param number|string $context
|
6
|
+
// (optional) Only used if em is the $base-unit. The value of the elements/parents
|
7
|
+
// font-size if it differs from $base-font-size. Specified as a t-shirt size or
|
8
|
+
// value in px.
|
9
|
+
//
|
10
|
+
// @return number
|
11
|
+
// The number converted to the base unit.
|
12
|
+
@function output-from-px($number, $context: $base-font-size) {
|
13
|
+
@if $base-unit == rem {
|
14
|
+
@return typey-output-in-base-unit(($number / $base-font-size));
|
15
|
+
}
|
16
|
+
@if $base-unit == px {
|
17
|
+
@return typey-output-in-base-unit(typey-strip-unit($number));
|
18
|
+
}
|
19
|
+
@if $base-unit == em {
|
20
|
+
@return calculate-em-px($number, $context);
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
// Take a key from the $font-size map and output converted value.
|
25
|
+
//
|
26
|
+
// @param string $size
|
27
|
+
// A size from the $font-size map.
|
28
|
+
// @param number|string $context
|
29
|
+
// (optional) Only used if em is the $base-unit. The value of the parent
|
30
|
+
// font-size if it differs from $base-font-size. Specified as a t-shirt size or
|
31
|
+
// value in px.
|
32
|
+
//
|
33
|
+
// @return number
|
34
|
+
// The selected font-size in $base-unit.
|
35
|
+
@function output-from-font-size-map($size, $context: $base-font-size) {
|
36
|
+
$map-size: map-get($font-size, $size);
|
37
|
+
@if $base-unit == rem {
|
38
|
+
@return typey-output-in-base-unit(($map-size / $base-font-size));
|
39
|
+
}
|
40
|
+
@if $base-unit == px or $base-unit == pt {
|
41
|
+
@return typey-output-in-base-unit(typey-strip-unit($map-size));
|
42
|
+
}
|
43
|
+
@if $base-unit == em {
|
44
|
+
@return calculate-em-px($map-size, $context);
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
48
|
+
// Take a line-height multipler and output converted value.
|
49
|
+
//
|
50
|
+
// @param number $number
|
51
|
+
// Multiple of line height to be used.
|
52
|
+
// @param number|string $context
|
53
|
+
// (optional) Only used if em is the $base-unit. The value of the elements/parents
|
54
|
+
// font-size if it differs from $base-font-size. Specified as a t-shirt size or
|
55
|
+
// value in px.
|
56
|
+
//
|
57
|
+
// @return number
|
58
|
+
// The value of the line-height multiple converted to the base unit.
|
59
|
+
@function output-from-multiplier($x, $context: $base-font-size) {
|
60
|
+
@if $base-unit == rem {
|
61
|
+
@return typey-output-in-base-unit(($x * $base-line-height) / $base-font-size);
|
62
|
+
}
|
63
|
+
@if $base-unit == px {
|
64
|
+
@return typey-output-in-base-unit(typey-strip-unit($x * $base-line-height));
|
65
|
+
}
|
66
|
+
@if $base-unit == em {
|
67
|
+
@return calculate-em-multiplier($x, $context);
|
68
|
+
}
|
69
|
+
}
|
70
|
+
|
71
|
+
// Take a line-height ratio and output as em.
|
72
|
+
//
|
73
|
+
// @param number $ratio
|
74
|
+
// Multiple of the $font-size to be used.
|
75
|
+
// @param number|string $context
|
76
|
+
// (optional) used to ensure function outputs the ratio regardless of whether
|
77
|
+
// it is the same as the $base-line-height-ratio.
|
78
|
+
//
|
79
|
+
// @return number
|
80
|
+
// The ratio in em.
|
81
|
+
@function output-from-ratio($ratio: $base-line-height-ratio) {
|
82
|
+
@return $ratio * 1em;
|
83
|
+
}
|
@@ -0,0 +1,117 @@
|
|
1
|
+
// Takes a sizing from the $font-size map (m, xl, xxl, etc) and convert it to
|
2
|
+
// the base unit. Alternatively convert a px font-size into the base unit.
|
3
|
+
//
|
4
|
+
// @param number|string $size
|
5
|
+
// A size from the $font-size map or px value to be converted
|
6
|
+
// @param number|string $context
|
7
|
+
// (optional) Only used if em is the $base-unit. The value of the parent
|
8
|
+
// font-size if it differs from $base-font-size. Specified as a t-shirt size or
|
9
|
+
// value in px.
|
10
|
+
//
|
11
|
+
// @return number
|
12
|
+
// The selected font-size in $base-unit.
|
13
|
+
@function font-size($size, $context: $base-font-size) {
|
14
|
+
$allowed-types: "font-size", "px";
|
15
|
+
$type: typey-validator($size, $allowed-types);
|
16
|
+
@if $type == "font-size" {
|
17
|
+
@return output-from-font-size-map($size, $context);
|
18
|
+
}
|
19
|
+
@if $type == "px" {
|
20
|
+
@return output-from-px($size, $context);
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
// Generate a value to be used as line-height from either:
|
25
|
+
// a) a multiple of $base-line-height
|
26
|
+
// b) a static px value
|
27
|
+
// c) a ratio of the font-size
|
28
|
+
//
|
29
|
+
// Example usage with multiple:
|
30
|
+
// line-height: line-height(2);
|
31
|
+
// Example usage with static value:
|
32
|
+
// line-height: line-height(18px);
|
33
|
+
// Example usage with ratio:
|
34
|
+
// line-height: line-height(1.5);
|
35
|
+
//
|
36
|
+
// @param number $x
|
37
|
+
// Multiple of line height to be used, px value to be converted, or ratio of
|
38
|
+
// font-size.
|
39
|
+
// @param number|string $context
|
40
|
+
// (optional) Only used if em is the $base-unit. The value of the
|
41
|
+
// elements/parents font-size if it differs from $base-font-size.
|
42
|
+
// Specified as a t-shirt size or value in px.
|
43
|
+
// @return number
|
44
|
+
// The calculated height in $base-unit.
|
45
|
+
@function line-height($x, $context: $base-font-size) {
|
46
|
+
$allowed-types: "multiplier", "px";
|
47
|
+
$type: typey-validator($x, $allowed-types);
|
48
|
+
@if $type == "multiplier" {
|
49
|
+
@if ($line-height-method == "ratio") {
|
50
|
+
@return output-from-ratio($x);
|
51
|
+
}
|
52
|
+
@else {
|
53
|
+
@return output-from-multiplier($x, $context);
|
54
|
+
}
|
55
|
+
}
|
56
|
+
@if $type == "px" {
|
57
|
+
@return output-from-px($x, $context);
|
58
|
+
}
|
59
|
+
}
|
60
|
+
|
61
|
+
// Generate a value to be used as margin from either:
|
62
|
+
// a) a multiple of $base-line-height
|
63
|
+
// b) a static px value
|
64
|
+
//
|
65
|
+
// Example usage with multiple:
|
66
|
+
// line-height: line-height(2);
|
67
|
+
// Example usage with static value:
|
68
|
+
// line-height: line-height(18px);
|
69
|
+
//
|
70
|
+
// @param number $x
|
71
|
+
// Multiple of line height to be used or px value to be converted.
|
72
|
+
// @param number|string $context
|
73
|
+
// (optional) Only used if em is the $base-unit. The value of the elements/parents
|
74
|
+
// font-size if it differs from $base-font-size. Specified as a t-shirt size or
|
75
|
+
// value in px.
|
76
|
+
//
|
77
|
+
// @return number
|
78
|
+
// The calculated height in $base-unit.
|
79
|
+
@function margin($x, $context: $base-font-size) {
|
80
|
+
$allowed-types: "multiplier", "px";
|
81
|
+
$type: typey-validator($x, $allowed-types);
|
82
|
+
@if $type == "multiplier" {
|
83
|
+
@return output-from-multiplier($x, $context);
|
84
|
+
}
|
85
|
+
@if $type == "px" {
|
86
|
+
@return output-from-px($x, $context);
|
87
|
+
}
|
88
|
+
}
|
89
|
+
|
90
|
+
// Generate a value to be used as padding from either:
|
91
|
+
// a) a multiple of $base-line-height
|
92
|
+
// b) a static px value
|
93
|
+
//
|
94
|
+
// Example usage with multiple:
|
95
|
+
// line-height: line-height(2);
|
96
|
+
// Example usage with static value:
|
97
|
+
// line-height: line-height(18px);
|
98
|
+
//
|
99
|
+
// @param number $x
|
100
|
+
// Multiple of line height to be used or px value to be converted.
|
101
|
+
// @param number|string $context
|
102
|
+
// (optional) Only used if em is the $base-unit. The value of the elements/parents
|
103
|
+
// font-size if it differs from $base-font-size. Specified as a t-shirt size or
|
104
|
+
// value in px.
|
105
|
+
//
|
106
|
+
// @return number
|
107
|
+
// The calculated height in $base-unit.
|
108
|
+
@function padding($x, $context: $base-font-size) {
|
109
|
+
$allowed-types: "multiplier", "px";
|
110
|
+
$type: typey-validator($x, $allowed-types);
|
111
|
+
@if $type == "multiplier" {
|
112
|
+
@return output-from-multiplier($x, $context);
|
113
|
+
}
|
114
|
+
@if $type == "px" {
|
115
|
+
@return output-from-px($x, $context);
|
116
|
+
}
|
117
|
+
}
|
@@ -0,0 +1,77 @@
|
|
1
|
+
// Takes a value and checks to ensure it's expressed correctly then returns
|
2
|
+
// the type.
|
3
|
+
//
|
4
|
+
// @param number|string|list $x
|
5
|
+
// A multiple of $base-line-height.
|
6
|
+
// A px value.
|
7
|
+
// A size from the $font-size map.
|
8
|
+
// A space seperated list container multiples and/or px values.
|
9
|
+
//
|
10
|
+
// @return string
|
11
|
+
// multiplier, px, font-size, list
|
12
|
+
@function typey-check-value($x) {
|
13
|
+
@if type-of($x) == "number" {
|
14
|
+
@if unitless($x) {
|
15
|
+
@return "multiplier";
|
16
|
+
}
|
17
|
+
@if not unitless($x) {
|
18
|
+
@if unit($x) == px {
|
19
|
+
@return "px";
|
20
|
+
}
|
21
|
+
@else {
|
22
|
+
@error "All units must be expressed in px";
|
23
|
+
}
|
24
|
+
}
|
25
|
+
}
|
26
|
+
@if type-of($x) == "string" {
|
27
|
+
@if map-has-key($font-size, $x) {
|
28
|
+
@return "font-size";
|
29
|
+
}
|
30
|
+
@else {
|
31
|
+
@error "'#{$x}' not found in $font-size map";
|
32
|
+
}
|
33
|
+
}
|
34
|
+
@if type-of($x) == "list" {
|
35
|
+
@if list-separator($x) == space {
|
36
|
+
@each $value in $x {
|
37
|
+
@if type-of($value) == "number" {
|
38
|
+
@if not unitless($value) and unit($value) != px {
|
39
|
+
@error "All units must be expressed in px";
|
40
|
+
}
|
41
|
+
}
|
42
|
+
@else {
|
43
|
+
@error "Values specified inside lists must be a number";
|
44
|
+
}
|
45
|
+
}
|
46
|
+
@return "list";
|
47
|
+
}
|
48
|
+
@else {
|
49
|
+
@error "All lists must use a space as their seperator";
|
50
|
+
}
|
51
|
+
}
|
52
|
+
@else {
|
53
|
+
@return type-of($x);
|
54
|
+
}
|
55
|
+
}
|
56
|
+
|
57
|
+
// Takes a value and validates it against a specified type.
|
58
|
+
//
|
59
|
+
// @param number|string|list $x
|
60
|
+
// A multiple of $base-line-height.
|
61
|
+
// A px value.
|
62
|
+
// A size from the $font-size map.
|
63
|
+
// A space seperated list container multiples and/or px values.
|
64
|
+
// @param string|list $allowed-types
|
65
|
+
// Either multiplier, px, font-size, list, or a comibation specified in a list.
|
66
|
+
//
|
67
|
+
// @return string
|
68
|
+
// The values type.
|
69
|
+
@function typey-validator($x, $allowed-types) {
|
70
|
+
$type: typey-check-value($x);
|
71
|
+
@if index($allowed-types, $type) != null {
|
72
|
+
@return $type;
|
73
|
+
}
|
74
|
+
@else {
|
75
|
+
@error "'#{$type}' is not a valid type for this function (allowed types are: #{$allowed-types})";
|
76
|
+
}
|
77
|
+
}
|
@@ -0,0 +1,49 @@
|
|
1
|
+
// Define defaults (use this in the HTML element).
|
2
|
+
//
|
3
|
+
// @param number $size
|
4
|
+
// (optional) The font-size. Use to set to anything other than $base-font-size.
|
5
|
+
// @param number $line-height
|
6
|
+
// (optional) The line-height. Use to set to anything other than $base-line-height.
|
7
|
+
// Set to a ratio when $line-height-as-ratio is true. Will default to $base-line-height-ratio.
|
8
|
+
// Set to false if you do not want to change a ratio of line-height already set.
|
9
|
+
@mixin define-type-sizing($size: $base-font-size, $line-height: $base-line-height) {
|
10
|
+
@if $base-unit == rem or $base-unit == em {
|
11
|
+
font-size: $size / $browser-font-size * 100%;
|
12
|
+
}
|
13
|
+
@if $base-unit == px {
|
14
|
+
font-size: $size;
|
15
|
+
}
|
16
|
+
|
17
|
+
@if $line-height != false {
|
18
|
+
@if $line-height-method == "ratio" {
|
19
|
+
@if $line-height == $base-line-height {
|
20
|
+
$line-height: $base-line-height-ratio;
|
21
|
+
}
|
22
|
+
line-height: $line-height * 1em;
|
23
|
+
}
|
24
|
+
@else {
|
25
|
+
@if $base-unit == rem {
|
26
|
+
@if $rem-fallback == true {
|
27
|
+
line-height: $line-height;
|
28
|
+
}
|
29
|
+
}
|
30
|
+
@if $base-unit == rem or $base-unit == em {
|
31
|
+
line-height: typey-output-in-base-unit($line-height / $size);
|
32
|
+
}
|
33
|
+
@if $base-unit == px {
|
34
|
+
line-height: $line-height;
|
35
|
+
}
|
36
|
+
}
|
37
|
+
}
|
38
|
+
|
39
|
+
@if $auto-print-sizing == true {
|
40
|
+
@if $base-unit == rem or $base-unit == em {
|
41
|
+
@media print {
|
42
|
+
font-size: $print-font-size;
|
43
|
+
}
|
44
|
+
}
|
45
|
+
@else {
|
46
|
+
@warn "As you are not using a relative base unit (rem or em) automatic print media sizing will not work. Set $auto-print-sizing to false to hide this warning"
|
47
|
+
}
|
48
|
+
}
|
49
|
+
}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
// Define font-size (with fallback)
|
2
|
+
//
|
3
|
+
// @param number|string $size
|
4
|
+
// A size from the $font-size map or px value to be converted
|
5
|
+
// @param number|string $context
|
6
|
+
// (optional) Only used if em is the $base-unit. The value of the elements/parents
|
7
|
+
// font-size if it differs from $base-font-size. Specified as a t-shirt size or
|
8
|
+
// value in px.
|
9
|
+
@mixin font-size($size, $context: $base-font-size) {
|
10
|
+
$allowed-types: "font-size", "px";
|
11
|
+
$type: typey-validator($size, $allowed-types);
|
12
|
+
@if $base-unit == rem {
|
13
|
+
@if $rem-fallback == true {
|
14
|
+
@if $type == "font-size" {
|
15
|
+
$map-size: map-get($font-size, $size);
|
16
|
+
font-size: $map-size;
|
17
|
+
}
|
18
|
+
@if $type == "px" {
|
19
|
+
font-size: $size;
|
20
|
+
}
|
21
|
+
}
|
22
|
+
}
|
23
|
+
font-size: font-size($size, $context);
|
24
|
+
}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
// Define line-height (with fallback).
|
2
|
+
// This is only necessary to use if you want to provide fallbacks when you are
|
3
|
+
// using rem as $base-unit.
|
4
|
+
//
|
5
|
+
// @param number $x
|
6
|
+
// Multiple of line height to be used or px value to be converted.
|
7
|
+
// @param number|string $context
|
8
|
+
// (optional) Only used if em is the $base-unit. The value of the
|
9
|
+
// elements/parents font-size if it differs from $base-font-size.
|
10
|
+
// Specified as a t-shirt size or value in px.
|
11
|
+
@mixin line-height($x, $context: $base-font-size) {
|
12
|
+
$allowed-types: "multiplier", "px";
|
13
|
+
$type: typey-validator($x, $allowed-types);
|
14
|
+
@if $base-unit == rem and $line-height-method == "rhythm" {
|
15
|
+
@if $rem-fallback == true {
|
16
|
+
@if $type == "multiplier" {
|
17
|
+
line-height: $x * $base-line-height;
|
18
|
+
}
|
19
|
+
@if $type == "px" {
|
20
|
+
line-height: $x;
|
21
|
+
}
|
22
|
+
}
|
23
|
+
}
|
24
|
+
line-height: line-height($x, $context);
|
25
|
+
}
|