creek-jekyll-theme 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (178) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +81 -0
  4. data/_config.yml +306 -0
  5. data/_data/README.md +3 -0
  6. data/_data/navigation/docs.yml +56 -0
  7. data/_data/navigation/main.yml +12 -0
  8. data/_data/navigation.yml +68 -0
  9. data/_data/ui-text.yml +2024 -0
  10. data/_includes/analytics-providers/custom.html +3 -0
  11. data/_includes/analytics-providers/google-gtag.html +9 -0
  12. data/_includes/analytics-providers/google-universal.html +7 -0
  13. data/_includes/analytics-providers/google.html +14 -0
  14. data/_includes/analytics.html +14 -0
  15. data/_includes/archive-single.html +30 -0
  16. data/_includes/author-profile-custom-links.html +7 -0
  17. data/_includes/author-profile.html +246 -0
  18. data/_includes/breadcrumbs.html +40 -0
  19. data/_includes/browser-upgrade.html +2 -0
  20. data/_includes/category-list.html +19 -0
  21. data/_includes/comment.html +22 -0
  22. data/_includes/comments-providers/custom.html +3 -0
  23. data/_includes/comments-providers/custom_scripts.html +3 -0
  24. data/_includes/comments-providers/discourse.html +13 -0
  25. data/_includes/comments-providers/disqus.html +15 -0
  26. data/_includes/comments-providers/facebook.html +8 -0
  27. data/_includes/comments-providers/giscus.html +24 -0
  28. data/_includes/comments-providers/scripts.html +20 -0
  29. data/_includes/comments-providers/staticman.html +40 -0
  30. data/_includes/comments-providers/staticman_v2.html +40 -0
  31. data/_includes/comments-providers/utterances.html +21 -0
  32. data/_includes/comments.html +180 -0
  33. data/_includes/documents-collection.html +15 -0
  34. data/_includes/feature_row +41 -0
  35. data/_includes/figure +9 -0
  36. data/_includes/footer/custom.html +3 -0
  37. data/_includes/footer.html +21 -0
  38. data/_includes/gallery +35 -0
  39. data/_includes/group-by-array +47 -0
  40. data/_includes/head/custom.html +15 -0
  41. data/_includes/head.html +25 -0
  42. data/_includes/masthead.html +35 -0
  43. data/_includes/nav_list +26 -0
  44. data/_includes/page__date.html +6 -0
  45. data/_includes/page__hero.html +55 -0
  46. data/_includes/page__hero_video.html +2 -0
  47. data/_includes/page__meta.html +31 -0
  48. data/_includes/page__taxonomy.html +7 -0
  49. data/_includes/paginator.html +69 -0
  50. data/_includes/post_pagination.html +14 -0
  51. data/_includes/posts-category.html +5 -0
  52. data/_includes/posts-tag.html +5 -0
  53. data/_includes/scripts.html +28 -0
  54. data/_includes/search/algolia-search-scripts.html +62 -0
  55. data/_includes/search/google-search-scripts.html +30 -0
  56. data/_includes/search/lunr-search-scripts.html +10 -0
  57. data/_includes/search/search_form.html +26 -0
  58. data/_includes/seo.html +158 -0
  59. data/_includes/sidebar.html +19 -0
  60. data/_includes/skip-links.html +7 -0
  61. data/_includes/social-share.html +11 -0
  62. data/_includes/tag-list.html +19 -0
  63. data/_includes/toc +7 -0
  64. data/_includes/toc.html +182 -0
  65. data/_includes/video +24 -0
  66. data/_layouts/archive-taxonomy.html +29 -0
  67. data/_layouts/archive.html +26 -0
  68. data/_layouts/categories.html +43 -0
  69. data/_layouts/category.html +10 -0
  70. data/_layouts/collection.html +10 -0
  71. data/_layouts/compress.html +10 -0
  72. data/_layouts/default.html +41 -0
  73. data/_layouts/home.html +22 -0
  74. data/_layouts/posts.html +30 -0
  75. data/_layouts/search.html +42 -0
  76. data/_layouts/single.html +95 -0
  77. data/_layouts/splash.html +22 -0
  78. data/_layouts/tag.html +10 -0
  79. data/_layouts/tags.html +43 -0
  80. data/_pages/404.html +26 -0
  81. data/_sass/minimal-mistakes/_animations.scss +21 -0
  82. data/_sass/minimal-mistakes/_archive.scss +463 -0
  83. data/_sass/minimal-mistakes/_base.scss +339 -0
  84. data/_sass/minimal-mistakes/_buttons.scss +97 -0
  85. data/_sass/minimal-mistakes/_footer.scss +85 -0
  86. data/_sass/minimal-mistakes/_forms.scss +359 -0
  87. data/_sass/minimal-mistakes/_masthead.scss +93 -0
  88. data/_sass/minimal-mistakes/_mixins.scss +92 -0
  89. data/_sass/minimal-mistakes/_navigation.scss +573 -0
  90. data/_sass/minimal-mistakes/_notices.scss +109 -0
  91. data/_sass/minimal-mistakes/_page.scss +578 -0
  92. data/_sass/minimal-mistakes/_print.scss +252 -0
  93. data/_sass/minimal-mistakes/_reset.scss +187 -0
  94. data/_sass/minimal-mistakes/_search.scss +132 -0
  95. data/_sass/minimal-mistakes/_sidebar.scss +353 -0
  96. data/_sass/minimal-mistakes/_syntax.scss +324 -0
  97. data/_sass/minimal-mistakes/_tables.scss +39 -0
  98. data/_sass/minimal-mistakes/_utilities.scss +593 -0
  99. data/_sass/minimal-mistakes/_variables.scss +173 -0
  100. data/_sass/minimal-mistakes/skins/_air.scss +23 -0
  101. data/_sass/minimal-mistakes/skins/_aqua.scss +34 -0
  102. data/_sass/minimal-mistakes/skins/_contrast.scss +52 -0
  103. data/_sass/minimal-mistakes/skins/_dark.scss +30 -0
  104. data/_sass/minimal-mistakes/skins/_default.scss +5 -0
  105. data/_sass/minimal-mistakes/skins/_dirt.scss +33 -0
  106. data/_sass/minimal-mistakes/skins/_mint.scss +24 -0
  107. data/_sass/minimal-mistakes/skins/_neon.scss +63 -0
  108. data/_sass/minimal-mistakes/skins/_plum.scss +70 -0
  109. data/_sass/minimal-mistakes/skins/_sunrise.scss +49 -0
  110. data/_sass/minimal-mistakes/vendor/breakpoint/_breakpoint.scss +114 -0
  111. data/_sass/minimal-mistakes/vendor/breakpoint/_context.scss +95 -0
  112. data/_sass/minimal-mistakes/vendor/breakpoint/_helpers.scss +151 -0
  113. data/_sass/minimal-mistakes/vendor/breakpoint/_legacy-settings.scss +50 -0
  114. data/_sass/minimal-mistakes/vendor/breakpoint/_no-query.scss +15 -0
  115. data/_sass/minimal-mistakes/vendor/breakpoint/_parsers.scss +215 -0
  116. data/_sass/minimal-mistakes/vendor/breakpoint/_respond-to.scss +82 -0
  117. data/_sass/minimal-mistakes/vendor/breakpoint/_settings.scss +71 -0
  118. data/_sass/minimal-mistakes/vendor/breakpoint/parsers/_double.scss +33 -0
  119. data/_sass/minimal-mistakes/vendor/breakpoint/parsers/_query.scss +82 -0
  120. data/_sass/minimal-mistakes/vendor/breakpoint/parsers/_resolution.scss +31 -0
  121. data/_sass/minimal-mistakes/vendor/breakpoint/parsers/_single.scss +26 -0
  122. data/_sass/minimal-mistakes/vendor/breakpoint/parsers/_triple.scss +36 -0
  123. data/_sass/minimal-mistakes/vendor/breakpoint/parsers/double/_default-pair.scss +21 -0
  124. data/_sass/minimal-mistakes/vendor/breakpoint/parsers/double/_default.scss +22 -0
  125. data/_sass/minimal-mistakes/vendor/breakpoint/parsers/double/_double-string.scss +22 -0
  126. data/_sass/minimal-mistakes/vendor/breakpoint/parsers/resolution/_resolution.scss +60 -0
  127. data/_sass/minimal-mistakes/vendor/breakpoint/parsers/single/_default.scss +13 -0
  128. data/_sass/minimal-mistakes/vendor/breakpoint/parsers/triple/_default.scss +18 -0
  129. data/_sass/minimal-mistakes/vendor/magnific-popup/_magnific-popup.scss +649 -0
  130. data/_sass/minimal-mistakes/vendor/magnific-popup/_settings.scss +46 -0
  131. data/_sass/minimal-mistakes/vendor/susy/_su.scss +4 -0
  132. data/_sass/minimal-mistakes/vendor/susy/_susy-prefix.scss +13 -0
  133. data/_sass/minimal-mistakes/vendor/susy/_susy.scss +5 -0
  134. data/_sass/minimal-mistakes/vendor/susy/plugins/_svg-grid.scss +5 -0
  135. data/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_prefix.scss +7 -0
  136. data/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-api.scss +114 -0
  137. data/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-grid-math.scss +67 -0
  138. data/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-settings.scss +14 -0
  139. data/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-unprefix.scss +18 -0
  140. data/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-utilities.scss +133 -0
  141. data/_sass/minimal-mistakes/vendor/susy/susy/_api.scss +318 -0
  142. data/_sass/minimal-mistakes/vendor/susy/susy/_normalize.scss +261 -0
  143. data/_sass/minimal-mistakes/vendor/susy/susy/_parse.scss +163 -0
  144. data/_sass/minimal-mistakes/vendor/susy/susy/_settings.scss +329 -0
  145. data/_sass/minimal-mistakes/vendor/susy/susy/_su-math.scss +441 -0
  146. data/_sass/minimal-mistakes/vendor/susy/susy/_su-validate.scss +213 -0
  147. data/_sass/minimal-mistakes/vendor/susy/susy/_syntax-helpers.scss +191 -0
  148. data/_sass/minimal-mistakes/vendor/susy/susy/_unprefix.scss +56 -0
  149. data/_sass/minimal-mistakes/vendor/susy/susy/_utilities.scss +167 -0
  150. data/_sass/minimal-mistakes.scss +40 -0
  151. data/assets/css/main.scss +9 -0
  152. data/assets/images/android-chrome-192x192.png +0 -0
  153. data/assets/images/android-chrome-512x512.png +0 -0
  154. data/assets/images/apple-touch-icon.png +0 -0
  155. data/assets/images/browserconfig.xml +9 -0
  156. data/assets/images/creek-logo.png +0 -0
  157. data/assets/images/favicon-16x16.png +0 -0
  158. data/assets/images/favicon-32x32.png +0 -0
  159. data/assets/images/favicon.ico +0 -0
  160. data/assets/images/mstile-150x150.png +0 -0
  161. data/assets/images/safari-pinned-tab.svg +48 -0
  162. data/assets/images/site-under-construction.png +0 -0
  163. data/assets/images/site.webmanifest +19 -0
  164. data/assets/js/_main.js +136 -0
  165. data/assets/js/lunr/lunr-en.js +73 -0
  166. data/assets/js/lunr/lunr-gr.js +526 -0
  167. data/assets/js/lunr/lunr-store.js +84 -0
  168. data/assets/js/lunr/lunr.js +3475 -0
  169. data/assets/js/lunr/lunr.min.js +6 -0
  170. data/assets/js/main.min.js +6 -0
  171. data/assets/js/plugins/gumshoe.js +484 -0
  172. data/assets/js/plugins/jquery.ba-throttle-debounce.js +252 -0
  173. data/assets/js/plugins/jquery.fitvids.js +82 -0
  174. data/assets/js/plugins/jquery.greedy-navigation.js +127 -0
  175. data/assets/js/plugins/jquery.magnific-popup.js +1860 -0
  176. data/assets/js/plugins/smooth-scroll.js +650 -0
  177. data/assets/js/vendor/jquery/jquery-3.6.0.js +10881 -0
  178. metadata +233 -0
@@ -0,0 +1,95 @@
1
+ //////////////////////////////
2
+ // Private Breakpoint Variables
3
+ //////////////////////////////
4
+ $private-breakpoint-context-holder: ();
5
+ $private-breakpoint-query-count: 0 !default;
6
+
7
+ //////////////////////////////
8
+ // Breakpoint Has Context
9
+ // Returns whether or not you are inside a Breakpoint query
10
+ //////////////////////////////
11
+ @function breakpoint-has-context() {
12
+ @if length($private-breakpoint-query-count) {
13
+ @return true;
14
+ }
15
+ @else {
16
+ @return false;
17
+ }
18
+ }
19
+
20
+ //////////////////////////////
21
+ // Breakpoint Get Context
22
+ // $feature: Input feature to get it's current MQ context. Returns false if no context
23
+ //////////////////////////////
24
+ @function breakpoint-get-context($feature) {
25
+ @if map-has-key($private-breakpoint-context-holder, $feature) {
26
+ $get: map-get($private-breakpoint-context-holder, $feature);
27
+ // Special handling of no-query from get side so /false/ prepends aren't returned
28
+ @if $feature == 'no-query' {
29
+ @if type-of($get) == 'list' and length($get) > 1 and nth($get, 1) == false {
30
+ $get: nth($get, length($get));
31
+ }
32
+ }
33
+ @return $get;
34
+ }
35
+ @else {
36
+ @if breakpoint-has-context() and $feature == 'media' {
37
+ @return breakpoint-get('default media');
38
+ }
39
+ @else {
40
+ @return false;
41
+ }
42
+ }
43
+ }
44
+
45
+ //////////////////////////////
46
+ // Private function to set context
47
+ //////////////////////////////
48
+ @function private-breakpoint-set-context($feature, $value) {
49
+ @if $value == 'monochrome' {
50
+ $feature: 'monochrome';
51
+ }
52
+
53
+ $current: map-get($private-breakpoint-context-holder, $feature);
54
+ @if $current and length($current) == $private-breakpoint-query-count {
55
+ @warn "You have already queried against `#{$feature}`. Unexpected things may happen if you query against the same feature more than once in the same `and` query. Breakpoint is overwriting the current context with `#{$value}`";
56
+ }
57
+
58
+ @if not map-has-key($private-breakpoint-context-holder, $feature) {
59
+ $v-holder: ();
60
+ @for $i from 1 to $private-breakpoint-query-count {
61
+ @if $feature == 'media' {
62
+ $v-holder: append($v-holder, breakpoint-get('default media'));
63
+ }
64
+ @else {
65
+ $v-holder: append($v-holder, false);
66
+ }
67
+ }
68
+ $v-holder: append($v-holder, $value);
69
+ $private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($feature: $v-holder)) !global;
70
+ }
71
+ @else {
72
+ $v-holder: map-get($private-breakpoint-context-holder, $feature);
73
+ $length: length($v-holder);
74
+ @for $i from $length to $private-breakpoint-query-count - 1 {
75
+ @if $feature == 'media' {
76
+ $v-holder: append($v-holder, breakpoint-get('default media'));
77
+ }
78
+ @else {
79
+ $v-holder: append($v-holder, false);
80
+ }
81
+ }
82
+ $v-holder: append($v-holder, $value);
83
+ $private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($feature: $v-holder)) !global;
84
+ }
85
+
86
+ @return true;
87
+ }
88
+
89
+ //////////////////////////////
90
+ // Private function to reset context
91
+ //////////////////////////////
92
+ @mixin private-breakpoint-reset-contexts {
93
+ $private-breakpoint-context-holder: () !global;
94
+ $private-breakpoint-query-count: 0 !global;
95
+ }
@@ -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
+ }
@@ -0,0 +1,71 @@
1
+ //////////////////////////////
2
+ // Has Setting
3
+ //////////////////////////////
4
+ @function breakpoint-has($setting) {
5
+ @if map-has-key($breakpoint, $setting) {
6
+ @return true;
7
+ }
8
+ @else {
9
+ @return false;
10
+ }
11
+ }
12
+
13
+ //////////////////////////////
14
+ // Get Settings
15
+ //////////////////////////////
16
+ @function breakpoint-get($setting) {
17
+ @if breakpoint-has($setting) {
18
+ @return map-get($breakpoint, $setting);
19
+ }
20
+ @else {
21
+ @return map-get($Breakpoint-Settings, $setting);
22
+ }
23
+ }
24
+
25
+ //////////////////////////////
26
+ // Set Settings
27
+ //////////////////////////////
28
+ @function breakpoint-set($setting, $value) {
29
+ @if (str-index($setting, '-') or str-index($setting, '_')) and str-index($setting, ' ') == null {
30
+ @warn "Words in Breakpoint settings should be separated by spaces, not dashes or underscores. Please replace dashes and underscores between words with spaces. Settings will not work as expected until changed.";
31
+ }
32
+ $breakpoint: map-merge($breakpoint, ($setting: $value)) !global;
33
+ @return true;
34
+ }
35
+
36
+ @mixin breakpoint-change($setting, $value) {
37
+ $breakpoint-change: breakpoint-set($setting, $value);
38
+ }
39
+
40
+ @mixin breakpoint-set($setting, $value) {
41
+ @include breakpoint-change($setting, $value);
42
+ }
43
+
44
+ @mixin bkpt-change($setting, $value) {
45
+ @include breakpoint-change($setting, $value);
46
+ }
47
+ @mixin bkpt-set($setting, $value) {
48
+ @include breakpoint-change($setting, $value);
49
+ }
50
+
51
+ //////////////////////////////
52
+ // Remove Setting
53
+ //////////////////////////////
54
+ @function breakpoint-reset($settings...) {
55
+ @if length($settings) == 1 {
56
+ $settings: nth($settings, 1);
57
+ }
58
+
59
+ @each $setting in $settings {
60
+ $breakpoint: map-remove($breakpoint, $setting) !global;
61
+ }
62
+ @return true;
63
+ }
64
+
65
+ @mixin breakpoint-reset($settings...) {
66
+ $breakpoint-reset: breakpoint-reset($settings);
67
+ }
68
+
69
+ @mixin bkpt-reset($settings...) {
70
+ $breakpoint-reset: breakpoint-reset($settings);
71
+ }