jekyll-theme-so-simple-libre 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +329 -0
- data/LICENSE +21 -0
- data/README.md +1148 -0
- data/_data/authors.yml +16 -0
- data/_data/navigation.yml +14 -0
- data/_data/text.yml +193 -0
- data/_includes/documents-collection.html +19 -0
- data/_includes/entry-date.html +6 -0
- data/_includes/entry.html +38 -0
- data/_includes/footer-custom.html +3 -0
- data/_includes/footer.html +24 -0
- data/_includes/head-custom.html +5 -0
- data/_includes/head-feed.html +1 -0
- data/_includes/head-seo.html +1 -0
- data/_includes/head.html +47 -0
- data/_includes/masthead.html +18 -0
- data/_includes/navigation.html +17 -0
- data/_includes/page-author.html +37 -0
- data/_includes/page-categories.html +15 -0
- data/_includes/page-date.html +4 -0
- data/_includes/page-image.html +14 -0
- data/_includes/page-pagination.html +19 -0
- data/_includes/page-tags.html +15 -0
- data/_includes/posts-all.html +3 -0
- data/_includes/posts-category.html +3 -0
- data/_includes/posts-limit.html +5 -0
- data/_includes/posts-paginated.html +74 -0
- data/_includes/posts-tag.html +3 -0
- data/_includes/read-time.html +16 -0
- data/_includes/responsive-embed +16 -0
- data/_includes/skip-links.html +8 -0
- data/_includes/social-share.html +6 -0
- data/_includes/talkyard-comments-provider.html +10 -0
- data/_includes/toc +9 -0
- data/_layouts/categories.html +81 -0
- data/_layouts/category.html +9 -0
- data/_layouts/collection.html +9 -0
- data/_layouts/default.html +21 -0
- data/_layouts/home.html +17 -0
- data/_layouts/page.html +30 -0
- data/_layouts/post.html +41 -0
- data/_layouts/posts.html +29 -0
- data/_layouts/tag.html +9 -0
- data/_layouts/tags.html +81 -0
- data/_sass/so-simple.scss +31 -0
- data/_sass/so-simple/_author.scss +47 -0
- data/_sass/so-simple/_base.scss +106 -0
- data/_sass/so-simple/_buttons.scss +64 -0
- data/_sass/so-simple/_entries.scss +194 -0
- data/_sass/so-simple/_functions.scss +4 -0
- data/_sass/so-simple/_global.scss +353 -0
- data/_sass/so-simple/_icons.scss +43 -0
- data/_sass/so-simple/_mixins.scss +5 -0
- data/_sass/so-simple/_notices.scss +57 -0
- data/_sass/so-simple/_page.scss +286 -0
- data/_sass/so-simple/_reset.scss +522 -0
- data/_sass/so-simple/_skin.scss +552 -0
- data/_sass/so-simple/_syntax-highlighting.scss +68 -0
- data/_sass/so-simple/_tables.scss +34 -0
- data/_sass/so-simple/_utilities.scss +7 -0
- data/_sass/so-simple/_variables.scss +98 -0
- data/_sass/so-simple/functions/_color.scss +21 -0
- data/_sass/so-simple/functions/_em.scss +7 -0
- data/_sass/so-simple/functions/_fluid-type.scss +33 -0
- data/_sass/so-simple/functions/_yiq.scss +38 -0
- data/_sass/so-simple/mixins/_clearfix.scss +32 -0
- data/_sass/so-simple/mixins/_float.scss +15 -0
- data/_sass/so-simple/mixins/_image.scss +38 -0
- data/_sass/so-simple/mixins/_lists.scss +9 -0
- data/_sass/so-simple/mixins/_text-truncate.scss +10 -0
- data/_sass/so-simple/utilities/_accessibility.scss +42 -0
- data/_sass/so-simple/utilities/_align.scss +60 -0
- data/_sass/so-simple/utilities/_animations.scss +99 -0
- data/_sass/so-simple/utilities/_clearfix.scss +7 -0
- data/_sass/so-simple/utilities/_float.scss +7 -0
- data/_sass/so-simple/utilities/_responsive-embed.scss +66 -0
- data/_sass/so-simple/utilities/_text.scss +48 -0
- data/_sass/so-simple/vendor/breakpoint/_breakpoint.scss +114 -0
- data/_sass/so-simple/vendor/breakpoint/_context.scss +95 -0
- data/_sass/so-simple/vendor/breakpoint/_helpers.scss +151 -0
- data/_sass/so-simple/vendor/breakpoint/_legacy-settings.scss +50 -0
- data/_sass/so-simple/vendor/breakpoint/_no-query.scss +15 -0
- data/_sass/so-simple/vendor/breakpoint/_parsers.scss +215 -0
- data/_sass/so-simple/vendor/breakpoint/_respond-to.scss +82 -0
- data/_sass/so-simple/vendor/breakpoint/_settings.scss +71 -0
- data/_sass/so-simple/vendor/breakpoint/parsers/_double.scss +33 -0
- data/_sass/so-simple/vendor/breakpoint/parsers/_query.scss +82 -0
- data/_sass/so-simple/vendor/breakpoint/parsers/_resolution.scss +31 -0
- data/_sass/so-simple/vendor/breakpoint/parsers/_single.scss +26 -0
- data/_sass/so-simple/vendor/breakpoint/parsers/_triple.scss +36 -0
- data/_sass/so-simple/vendor/breakpoint/parsers/double/_default-pair.scss +21 -0
- data/_sass/so-simple/vendor/breakpoint/parsers/double/_default.scss +22 -0
- data/_sass/so-simple/vendor/breakpoint/parsers/double/_double-string.scss +22 -0
- data/_sass/so-simple/vendor/breakpoint/parsers/resolution/_resolution.scss +60 -0
- data/_sass/so-simple/vendor/breakpoint/parsers/single/_default.scss +13 -0
- data/_sass/so-simple/vendor/breakpoint/parsers/triple/_default.scss +18 -0
- data/_sass/so-simple/vendor/lity/_lity.scss +221 -0
- data/assets/css/main.scss +8 -0
- data/assets/css/skins/dark.scss +43 -0
- data/assets/css/skins/default.scss +44 -0
- data/assets/css/skins/light.scss +44 -0
- metadata +262 -0
@@ -0,0 +1,151 @@
|
|
1
|
+
//////////////////////////////
|
2
|
+
// Converts the input value to Base EMs
|
3
|
+
//////////////////////////////
|
4
|
+
@function breakpoint-to-base-em($value) {
|
5
|
+
$value-unit: unit($value);
|
6
|
+
|
7
|
+
// Will convert relative EMs into root EMs.
|
8
|
+
@if breakpoint-get('base font size') and type-of(breakpoint-get('base font size')) == 'number' and $value-unit == 'em' {
|
9
|
+
$base-unit: unit(breakpoint-get('base font size'));
|
10
|
+
|
11
|
+
@if $base-unit == 'px' or $base-unit == '%' or $base-unit == 'em' or $base-unit == 'pt' {
|
12
|
+
@return base-conversion($value) / base-conversion(breakpoint-get('base font size')) * 1em;
|
13
|
+
}
|
14
|
+
@else {
|
15
|
+
@warn '#{breakpoint-get(\'base font size\')} is not set in valid units for font size!';
|
16
|
+
@return false;
|
17
|
+
}
|
18
|
+
}
|
19
|
+
@else {
|
20
|
+
@return base-conversion($value);
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
@function base-conversion($value) {
|
25
|
+
$unit: unit($value);
|
26
|
+
|
27
|
+
@if $unit == 'px' {
|
28
|
+
@return $value / 16px * 1em;
|
29
|
+
}
|
30
|
+
@else if $unit == '%' {
|
31
|
+
@return $value / 100% * 1em;
|
32
|
+
}
|
33
|
+
@else if $unit == 'em' {
|
34
|
+
@return $value;
|
35
|
+
}
|
36
|
+
@else if $unit == 'pt' {
|
37
|
+
@return $value / 12pt * 1em;
|
38
|
+
}
|
39
|
+
@else {
|
40
|
+
@return $value;
|
41
|
+
// @warn 'Everything is terrible! What have you done?!';
|
42
|
+
}
|
43
|
+
}
|
44
|
+
|
45
|
+
//////////////////////////////
|
46
|
+
// Returns whether the feature can have a min/max pair
|
47
|
+
//////////////////////////////
|
48
|
+
$breakpoint-min-max-features: 'color',
|
49
|
+
'color-index',
|
50
|
+
'aspect-ratio',
|
51
|
+
'device-aspect-ratio',
|
52
|
+
'device-height',
|
53
|
+
'device-width',
|
54
|
+
'height',
|
55
|
+
'monochrome',
|
56
|
+
'resolution',
|
57
|
+
'width';
|
58
|
+
|
59
|
+
@function breakpoint-min-max($feature) {
|
60
|
+
@each $item in $breakpoint-min-max-features {
|
61
|
+
@if $feature == $item {
|
62
|
+
@return true;
|
63
|
+
}
|
64
|
+
}
|
65
|
+
@return false;
|
66
|
+
}
|
67
|
+
|
68
|
+
//////////////////////////////
|
69
|
+
// Returns whether the feature can have a string value
|
70
|
+
//////////////////////////////
|
71
|
+
$breakpoint-string-features: 'orientation',
|
72
|
+
'scan',
|
73
|
+
'color',
|
74
|
+
'aspect-ratio',
|
75
|
+
'device-aspect-ratio',
|
76
|
+
'pointer',
|
77
|
+
'luminosity';
|
78
|
+
|
79
|
+
@function breakpoint-string-value($feature) {
|
80
|
+
@each $item in $breakpoint-string-features {
|
81
|
+
@if breakpoint-min-max($item) {
|
82
|
+
@if $feature == 'min-#{$item}' or $feature == 'max-#{$item}' {
|
83
|
+
@return true;
|
84
|
+
}
|
85
|
+
}
|
86
|
+
@else if $feature == $item {
|
87
|
+
@return true;
|
88
|
+
}
|
89
|
+
}
|
90
|
+
@return false;
|
91
|
+
}
|
92
|
+
|
93
|
+
//////////////////////////////
|
94
|
+
// Returns whether the feature is a media type
|
95
|
+
//////////////////////////////
|
96
|
+
$breakpoint-media-types: 'all',
|
97
|
+
'braille',
|
98
|
+
'embossed',
|
99
|
+
'handheld',
|
100
|
+
'print',
|
101
|
+
'projection',
|
102
|
+
'screen',
|
103
|
+
'speech',
|
104
|
+
'tty',
|
105
|
+
'tv';
|
106
|
+
|
107
|
+
@function breakpoint-is-media($feature) {
|
108
|
+
@each $media in $breakpoint-media-types {
|
109
|
+
@if ($feature == $media) or ($feature == 'not #{$media}') or ($feature == 'only #{$media}') {
|
110
|
+
@return true;
|
111
|
+
}
|
112
|
+
}
|
113
|
+
|
114
|
+
@return false;
|
115
|
+
}
|
116
|
+
|
117
|
+
//////////////////////////////
|
118
|
+
// Returns whether the feature can stand alone
|
119
|
+
//////////////////////////////
|
120
|
+
$breakpoint-single-string-features: 'color',
|
121
|
+
'color-index',
|
122
|
+
'grid',
|
123
|
+
'monochrome';
|
124
|
+
|
125
|
+
@function breakpoint-single-string($feature) {
|
126
|
+
@each $item in $breakpoint-single-string-features {
|
127
|
+
@if $feature == $item {
|
128
|
+
@return true;
|
129
|
+
}
|
130
|
+
}
|
131
|
+
@return false;
|
132
|
+
}
|
133
|
+
|
134
|
+
//////////////////////////////
|
135
|
+
// Returns whether the feature
|
136
|
+
//////////////////////////////
|
137
|
+
@function breakpoint-is-resolution($feature) {
|
138
|
+
$resolutions: 'device-pixel-ratio', 'dpr';
|
139
|
+
|
140
|
+
@if breakpoint-get('transform resolutions') {
|
141
|
+
$resolutions: append($resolutions, 'resolution');
|
142
|
+
}
|
143
|
+
|
144
|
+
@each $reso in $resolutions {
|
145
|
+
@if index($feature, $reso) or index($feature, 'min-#{$reso}') or index($feature, 'max-#{$reso}') {
|
146
|
+
@return true;
|
147
|
+
}
|
148
|
+
}
|
149
|
+
|
150
|
+
@return false;
|
151
|
+
}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
@mixin legacy-settings-warning {
|
2
|
+
$legacyVars: (
|
3
|
+
'default-media': 'default media',
|
4
|
+
'default-feature': 'default feature',
|
5
|
+
'force-media-all': 'force all media type',
|
6
|
+
'to-ems': 'to ems',
|
7
|
+
'resolutions': 'transform resolutions',
|
8
|
+
'no-queries': 'no queries',
|
9
|
+
'no-query-fallbacks': 'no query fallbacks',
|
10
|
+
'base-font-size': 'base font size',
|
11
|
+
'legacy-syntax': 'legacy syntax'
|
12
|
+
);
|
13
|
+
|
14
|
+
@each $legacy, $new in $legacyVars {
|
15
|
+
@if global-variable-exists('breakpoint-' + $legacy) {
|
16
|
+
@warn "In order to avoid variable namspace collisions, we have updated the way to change settings for Breakpoint. Please change all instances of `$breakpoint-#{$legacy}: {{setting}}` to `@include breakpoint-set('#{$new}', {{setting}})`. Variable settings, as well as this warning will be deprecated in a future release."
|
17
|
+
}
|
18
|
+
};
|
19
|
+
|
20
|
+
//////////////////////////////
|
21
|
+
// Hand correct each setting
|
22
|
+
//////////////////////////////
|
23
|
+
@if global-variable-exists('breakpoint-default-media') and $breakpoint-default-media != breakpoint-get('default media') {
|
24
|
+
@include breakpoint-set('default media', $breakpoint-default-media);
|
25
|
+
}
|
26
|
+
@if global-variable-exists('breakpoint-default-feature') and $breakpoint-default-feature != breakpoint-get('default feature') {
|
27
|
+
@include breakpoint-set('default feature', $breakpoint-default-feature);
|
28
|
+
}
|
29
|
+
@if global-variable-exists('breakpoint-force-media-all') and $breakpoint-force-media-all != breakpoint-get('force all media type') {
|
30
|
+
@include breakpoint-set('force all media type', $breakpoint-force-media-all);
|
31
|
+
}
|
32
|
+
@if global-variable-exists('breakpoint-to-ems') and $breakpoint-to-ems != breakpoint-get('to ems') {
|
33
|
+
@include breakpoint-set('to ems', $breakpoint-to-ems);
|
34
|
+
}
|
35
|
+
@if global-variable-exists('breakpoint-resolutions') and $breakpoint-resolutions != breakpoint-get('transform resolutions') {
|
36
|
+
@include breakpoint-set('transform resolutions', $breakpoint-resolutions);
|
37
|
+
}
|
38
|
+
@if global-variable-exists('breakpoint-no-queries') and $breakpoint-no-queries != breakpoint-get('no queries') {
|
39
|
+
@include breakpoint-set('no queries', $breakpoint-no-queries);
|
40
|
+
}
|
41
|
+
@if global-variable-exists('breakpoint-no-query-fallbacks') and $breakpoint-no-query-fallbacks != breakpoint-get('no query fallbacks') {
|
42
|
+
@include breakpoint-set('no query fallbacks', $breakpoint-no-query-fallbacks);
|
43
|
+
}
|
44
|
+
@if global-variable-exists('breakpoint-base-font-size') and $breakpoint-base-font-size != breakpoint-get('base font size') {
|
45
|
+
@include breakpoint-set('base font size', $breakpoint-base-font-size);
|
46
|
+
}
|
47
|
+
@if global-variable-exists('breakpoint-legacy-syntax') and $breakpoint-legacy-syntax != breakpoint-get('legacy syntax') {
|
48
|
+
@include breakpoint-set('legacy syntax', $breakpoint-legacy-syntax);
|
49
|
+
}
|
50
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
@function breakpoint-no-query($query) {
|
2
|
+
@if type-of($query) == 'list' {
|
3
|
+
$keyword: nth($query, 1);
|
4
|
+
|
5
|
+
@if type-of($keyword) == 'string' and ($keyword == 'no-query' or $keyword == 'no query' or $keyword == 'fallback') {
|
6
|
+
@return nth($query, 2);
|
7
|
+
}
|
8
|
+
@else {
|
9
|
+
@return false;
|
10
|
+
}
|
11
|
+
}
|
12
|
+
@else {
|
13
|
+
@return false;
|
14
|
+
}
|
15
|
+
}
|
@@ -0,0 +1,215 @@
|
|
1
|
+
//////////////////////////////
|
2
|
+
// Import Parser Pieces
|
3
|
+
//////////////////////////////
|
4
|
+
@import "parsers/query";
|
5
|
+
@import "parsers/single";
|
6
|
+
@import "parsers/double";
|
7
|
+
@import "parsers/triple";
|
8
|
+
@import "parsers/resolution";
|
9
|
+
|
10
|
+
$Memo-Exists: function-exists(memo-get) and function-exists(memo-set);
|
11
|
+
|
12
|
+
//////////////////////////////
|
13
|
+
// Breakpoint Function
|
14
|
+
//////////////////////////////
|
15
|
+
@function breakpoint($query, $contexts...) {
|
16
|
+
$run: true;
|
17
|
+
$return: ();
|
18
|
+
|
19
|
+
// Grab the Memo Output if Memoization can be a thing
|
20
|
+
@if $Memo-Exists {
|
21
|
+
$return: memo-get(breakpoint, breakpoint $query $contexts);
|
22
|
+
|
23
|
+
@if $return != null {
|
24
|
+
$run: false;
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
@if not $Memo-Exists or $run {
|
29
|
+
// Internal Variables
|
30
|
+
$query-string: '';
|
31
|
+
$query-fallback: false;
|
32
|
+
$return: ();
|
33
|
+
|
34
|
+
// Reserve Global Private Breakpoint Context
|
35
|
+
$holder-context: $private-breakpoint-context-holder;
|
36
|
+
$holder-query-count: $private-breakpoint-query-count;
|
37
|
+
|
38
|
+
// Reset Global Private Breakpoint Context
|
39
|
+
$private-breakpoint-context-holder: () !global;
|
40
|
+
$private-breakpoint-query-count: 0 !global;
|
41
|
+
|
42
|
+
|
43
|
+
// Test to see if it's a comma-separated list
|
44
|
+
$or-list: if(list-separator($query) == 'comma', true, false);
|
45
|
+
|
46
|
+
|
47
|
+
@if ($or-list == false and breakpoint-get('legacy syntax') == false) {
|
48
|
+
$query-string: breakpoint-parse($query);
|
49
|
+
}
|
50
|
+
@else {
|
51
|
+
$length: length($query);
|
52
|
+
|
53
|
+
$last: nth($query, $length);
|
54
|
+
$query-fallback: breakpoint-no-query($last);
|
55
|
+
|
56
|
+
@if ($query-fallback != false) {
|
57
|
+
$length: $length - 1;
|
58
|
+
}
|
59
|
+
|
60
|
+
@if (breakpoint-get('legacy syntax') == true) {
|
61
|
+
$mq: ();
|
62
|
+
|
63
|
+
@for $i from 1 through $length {
|
64
|
+
$mq: append($mq, nth($query, $i), comma);
|
65
|
+
}
|
66
|
+
|
67
|
+
$query-string: breakpoint-parse($mq);
|
68
|
+
}
|
69
|
+
@else {
|
70
|
+
$query-string: '';
|
71
|
+
@for $i from 1 through $length {
|
72
|
+
$query-string: $query-string + if($i == 1, '', ', ') + breakpoint-parse(nth($query, $i));
|
73
|
+
}
|
74
|
+
}
|
75
|
+
}
|
76
|
+
|
77
|
+
$return: ('query': $query-string,
|
78
|
+
'fallback': $query-fallback,
|
79
|
+
'context holder': $private-breakpoint-context-holder,
|
80
|
+
'query count': $private-breakpoint-query-count
|
81
|
+
);
|
82
|
+
@if length($contexts) > 0 and nth($contexts, 1) != false {
|
83
|
+
@if $query-fallback != false {
|
84
|
+
$context-setter: private-breakpoint-set-context('no-query', $query-fallback);
|
85
|
+
}
|
86
|
+
$context-map: ();
|
87
|
+
@each $context in $contexts {
|
88
|
+
$context-map: map-merge($context-map, ($context: breakpoint-get-context($context)));
|
89
|
+
}
|
90
|
+
$return: map-merge($return, (context: $context-map));
|
91
|
+
}
|
92
|
+
|
93
|
+
// Reset Global Private Breakpoint Context
|
94
|
+
$private-breakpoint-context-holder: () !global;
|
95
|
+
$private-breakpoint-query-count: 0 !global;
|
96
|
+
|
97
|
+
@if $Memo-Exists {
|
98
|
+
$holder: memo-set(breakpoint, breakpoint $query $contexts, $return);
|
99
|
+
}
|
100
|
+
}
|
101
|
+
|
102
|
+
@return $return;
|
103
|
+
}
|
104
|
+
|
105
|
+
//////////////////////////////
|
106
|
+
// General Breakpoint Parser
|
107
|
+
//////////////////////////////
|
108
|
+
@function breakpoint-parse($query) {
|
109
|
+
// Increase number of 'and' queries
|
110
|
+
$private-breakpoint-query-count: $private-breakpoint-query-count + 1 !global;
|
111
|
+
|
112
|
+
// Set up Media Type
|
113
|
+
$query-print: '';
|
114
|
+
|
115
|
+
$force-all: ((breakpoint-get('force all media type') == true) and (breakpoint-get('default media') == 'all'));
|
116
|
+
$empty-media: true;
|
117
|
+
@if ($force-all == true) or (breakpoint-get('default media') != 'all') {
|
118
|
+
// Force the print of the default media type if (force all is true and default media type is all) or (default media type is not all)
|
119
|
+
$query-print: breakpoint-get('default media');
|
120
|
+
$empty-media: false;
|
121
|
+
}
|
122
|
+
|
123
|
+
|
124
|
+
$query-resolution: false;
|
125
|
+
|
126
|
+
$query-holder: breakpoint-parse-query($query);
|
127
|
+
|
128
|
+
|
129
|
+
|
130
|
+
// Loop over each parsed out query and write it to $query-print
|
131
|
+
$first: true;
|
132
|
+
|
133
|
+
@each $feature in $query-holder {
|
134
|
+
$length: length($feature);
|
135
|
+
|
136
|
+
// Parse a single feature
|
137
|
+
@if ($length == 1) {
|
138
|
+
// Feature is currently a list, grab the actual value
|
139
|
+
$feature: nth($feature, 1);
|
140
|
+
|
141
|
+
// Media Type must by convention be the first item, so it's safe to flat override $query-print, which right now should only be the default media type
|
142
|
+
@if (breakpoint-is-media($feature)) {
|
143
|
+
@if ($force-all == true) or ($feature != 'all') {
|
144
|
+
// Force the print of the default media type if (force all is true and default media type is all) or (default media type is not all)
|
145
|
+
$query-print: $feature;
|
146
|
+
$empty-media: false;
|
147
|
+
|
148
|
+
// Set Context
|
149
|
+
$context-setter: private-breakpoint-set-context(media, $query-print);
|
150
|
+
}
|
151
|
+
}
|
152
|
+
@else {
|
153
|
+
$parsed: breakpoint-parse-single($feature, $empty-media, $first);
|
154
|
+
$query-print: '#{$query-print} #{$parsed}';
|
155
|
+
$first: false;
|
156
|
+
}
|
157
|
+
}
|
158
|
+
// Parse a double feature
|
159
|
+
@else if ($length == 2) {
|
160
|
+
@if (breakpoint-is-resolution($feature) != false) {
|
161
|
+
$query-resolution: $feature;
|
162
|
+
}
|
163
|
+
@else {
|
164
|
+
$parsed: null;
|
165
|
+
// If it's a string/number pair,
|
166
|
+
// we check to see if one is a single-string value,
|
167
|
+
// then we parse it as a normal double
|
168
|
+
$alpha: nth($feature, 1);
|
169
|
+
$beta: nth($feature, 2);
|
170
|
+
@if breakpoint-single-string($alpha) or breakpoint-single-string($beta) {
|
171
|
+
$parsed: breakpoint-parse-single($alpha, $empty-media, $first);
|
172
|
+
$query-print: '#{$query-print} #{$parsed}';
|
173
|
+
$first: false;
|
174
|
+
$parsed: breakpoint-parse-single($beta, $empty-media, $first);
|
175
|
+
$query-print: '#{$query-print} #{$parsed}';
|
176
|
+
}
|
177
|
+
@else {
|
178
|
+
$parsed: breakpoint-parse-double($feature, $empty-media, $first);
|
179
|
+
$query-print: '#{$query-print} #{$parsed}';
|
180
|
+
$first: false;
|
181
|
+
}
|
182
|
+
}
|
183
|
+
}
|
184
|
+
// Parse a triple feature
|
185
|
+
@else if ($length == 3) {
|
186
|
+
$parsed: breakpoint-parse-triple($feature, $empty-media, $first);
|
187
|
+
$query-print: '#{$query-print} #{$parsed}';
|
188
|
+
$first: false;
|
189
|
+
}
|
190
|
+
|
191
|
+
}
|
192
|
+
|
193
|
+
@if ($query-resolution != false) {
|
194
|
+
$query-print: breakpoint-build-resolution($query-print, $query-resolution, $empty-media, $first);
|
195
|
+
}
|
196
|
+
|
197
|
+
// Loop through each feature that's been detected so far and append 'false' to the the value list to increment their counters
|
198
|
+
@each $f, $v in $private-breakpoint-context-holder {
|
199
|
+
$v-holder: $v;
|
200
|
+
$length: length($v-holder);
|
201
|
+
@if length($v-holder) < $private-breakpoint-query-count {
|
202
|
+
@for $i from $length to $private-breakpoint-query-count {
|
203
|
+
@if $f == 'media' {
|
204
|
+
$v-holder: append($v-holder, breakpoint-get('default media'));
|
205
|
+
}
|
206
|
+
@else {
|
207
|
+
$v-holder: append($v-holder, false);
|
208
|
+
}
|
209
|
+
}
|
210
|
+
}
|
211
|
+
$private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($f: $v-holder)) !global;
|
212
|
+
}
|
213
|
+
|
214
|
+
@return $query-print;
|
215
|
+
}
|
@@ -0,0 +1,82 @@
|
|
1
|
+
////////////////////////
|
2
|
+
// Default the Breakpoints variable
|
3
|
+
////////////////////////
|
4
|
+
$breakpoints: () !default;
|
5
|
+
$BREAKPOINTS: () !default;
|
6
|
+
|
7
|
+
////////////////////////
|
8
|
+
// Respond-to API Mixin
|
9
|
+
////////////////////////
|
10
|
+
@mixin respond-to($context, $no-query: false) {
|
11
|
+
@if length($breakpoints) > 0 and length($BREAKPOINTS) == 0 {
|
12
|
+
@warn "In order to avoid variable namespace collisions, we have updated the way to add breakpoints for respond-to. Please change all instances of `$breakpoints: add-breakpoint()` to `@include add-breakpoint()`. The `add-breakpoint()` function will be deprecated in a future release.";
|
13
|
+
$BREAKPOINTS: $breakpoints !global;
|
14
|
+
$breakpoints: () !global;
|
15
|
+
}
|
16
|
+
|
17
|
+
@if type-of($BREAKPOINTS) != 'map' {
|
18
|
+
// Just in case someone writes gibberish to the $breakpoints variable.
|
19
|
+
@warn "Your breakpoints aren't a map! `respond-to` expects a map. Please check the value of $BREAKPOINTS variable.";
|
20
|
+
@content;
|
21
|
+
}
|
22
|
+
@else if map-has-key($BREAKPOINTS, $context) {
|
23
|
+
@include breakpoint(map-get($BREAKPOINTS, $context), $no-query) {
|
24
|
+
@content;
|
25
|
+
}
|
26
|
+
}
|
27
|
+
@else if not map-has-key($BREAKPOINTS, $context) {
|
28
|
+
@warn "`#{$context}` isn't a defined breakpoint! Please add it using `$breakpoints: add-breakpoint(`#{$context}`, $value);`";
|
29
|
+
@content;
|
30
|
+
}
|
31
|
+
@else {
|
32
|
+
@warn "You haven't created any breakpoints yet! Make some already! `@include add-breakpoint($name, $bkpt)`";
|
33
|
+
@content;
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
//////////////////////////////
|
38
|
+
// Add Breakpoint to Breakpoints
|
39
|
+
// TODO: Remove function in next release
|
40
|
+
//////////////////////////////
|
41
|
+
@function add-breakpoint($name, $bkpt, $overwrite: false) {
|
42
|
+
$output: ($name: $bkpt);
|
43
|
+
|
44
|
+
@if length($breakpoints) == 0 {
|
45
|
+
@return $output;
|
46
|
+
}
|
47
|
+
@else {
|
48
|
+
@if map-has-key($breakpoints, $name) and $overwrite != true {
|
49
|
+
@warn "You already have a breakpoint named `#{$name}`, please choose another breakpoint name, or pass in `$overwrite: true` to overwrite the previous breakpoint.";
|
50
|
+
@return $breakpoints;
|
51
|
+
}
|
52
|
+
@else if not map-has-key($breakpoints, $name) or $overwrite == true {
|
53
|
+
@return map-merge($breakpoints, $output);
|
54
|
+
}
|
55
|
+
}
|
56
|
+
}
|
57
|
+
|
58
|
+
@mixin add-breakpoint($name, $bkpt, $overwrite: false) {
|
59
|
+
$output: ($name: $bkpt);
|
60
|
+
|
61
|
+
@if length($BREAKPOINTS) == 0 {
|
62
|
+
$BREAKPOINTS: $output !global;
|
63
|
+
}
|
64
|
+
@else {
|
65
|
+
@if map-has-key($BREAKPOINTS, $name) and $overwrite != true {
|
66
|
+
@warn "You already have a breakpoint named `#{$name}`, please choose another breakpoint name, or pass in `$overwrite: true` to overwrite the previous breakpoint.";
|
67
|
+
$BREAKPOINTS: $BREAKPOINTS !global;
|
68
|
+
}
|
69
|
+
@else if not map-has-key($BREAKPOINTS, $name) or $overwrite == true {
|
70
|
+
$BREAKPOINTS: map-merge($BREAKPOINTS, $output) !global;
|
71
|
+
}
|
72
|
+
}
|
73
|
+
}
|
74
|
+
|
75
|
+
@function get-breakpoint($name: false) {
|
76
|
+
@if $name == false {
|
77
|
+
@return $BREAKPOINTS;
|
78
|
+
}
|
79
|
+
@else {
|
80
|
+
@return map-get($BREAKPOINTS, $name);
|
81
|
+
}
|
82
|
+
}
|