jekyll-text-theme 1.5.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +41 -153
  3. data/_data/authors.yml +0 -0
  4. data/_data/licenses.yml +16 -0
  5. data/_data/locale.yml +4 -10
  6. data/_data/navigation.yml +13 -0
  7. data/_data/variables.yml +22 -6
  8. data/_includes/analytics-providers/custom.html +0 -0
  9. data/_includes/analytics-providers/google.html +16 -0
  10. data/_includes/analytics.html +7 -0
  11. data/_includes/article-footer/custom.html +1 -0
  12. data/_includes/article-footer/license.html +24 -0
  13. data/_includes/article-info.html +90 -0
  14. data/_includes/aside/toc.html +1 -0
  15. data/_includes/author-profile.html +50 -0
  16. data/_includes/comments-providers/custom.html +0 -0
  17. data/_includes/comments-providers/disqus.html +22 -0
  18. data/_includes/comments-providers/gitalk.html +32 -0
  19. data/_includes/comments.html +9 -0
  20. data/_includes/follow-me.html +84 -0
  21. data/_includes/footer.html +39 -0
  22. data/_includes/head.html +54 -0
  23. data/_includes/header.html +33 -0
  24. data/_includes/markdown-enhancements.html +32 -0
  25. data/_includes/{utils → markdown-enhancements}/chart.html +1 -3
  26. data/_includes/{utils → markdown-enhancements}/mathjax.html +11 -4
  27. data/_includes/{utils → markdown-enhancements}/mermaid.html +1 -3
  28. data/_includes/pageview-providers/custom.html +0 -0
  29. data/_includes/pageview-providers/custom/home.html +0 -0
  30. data/_includes/pageview-providers/custom/post.html +0 -0
  31. data/_includes/pageview-providers/leancloud/home.html +35 -0
  32. data/_includes/pageview-providers/leancloud/leancloud.js +71 -0
  33. data/_includes/pageview-providers/leancloud/post.html +31 -0
  34. data/_includes/pageview.html +31 -0
  35. data/_includes/scripts/archieve.js +238 -0
  36. data/_includes/scripts/article-list.html +27 -0
  37. data/_includes/scripts/article.js +24 -0
  38. data/_includes/scripts/aside/affix.js +26 -0
  39. data/_includes/scripts/aside/toc.js +37 -0
  40. data/_includes/scripts/common.js +3 -0
  41. data/_includes/scripts/home.js +3 -0
  42. data/_includes/scripts/lib/affix.js +103 -0
  43. data/_includes/scripts/{utils.html → lib/lazyload.js} +55 -92
  44. data/_includes/scripts/lib/scroll.js +13 -0
  45. data/_includes/scripts/lib/throttle.js +28 -0
  46. data/_includes/scripts/lib/toc.js +106 -0
  47. data/_includes/scripts/page.js +3 -0
  48. data/_includes/scripts/sidebar.js +14 -0
  49. data/_includes/scripts/utils.js +38 -0
  50. data/_includes/scripts/variables.html +27 -0
  51. data/_includes/sidebar/toc.html +27 -0
  52. data/_includes/snippets/assign.html +5 -0
  53. data/_includes/snippets/get-nav-url.html +3 -2
  54. data/_includes/snippets/page-title.html +11 -6
  55. data/_includes/snippets/page-url.html +3 -1
  56. data/_includes/snippets/to-boolean.html +7 -0
  57. data/_includes/{icon → svg/icon}/social/behance.svg +0 -0
  58. data/_includes/{icon → svg/icon}/social/douban.svg +0 -0
  59. data/_includes/{icon → svg/icon}/social/facebook.svg +0 -0
  60. data/_includes/{icon → svg/icon}/social/flicker.svg +0 -0
  61. data/_includes/{icon → svg/icon}/social/github.svg +0 -0
  62. data/_includes/{icon → svg/icon}/social/googleplus.svg +0 -0
  63. data/_includes/{icon → svg/icon}/social/linkedin.svg +0 -0
  64. data/_includes/{icon → svg/icon}/social/mail.svg +0 -0
  65. data/_includes/{icon → svg/icon}/social/pinterest.svg +0 -0
  66. data/_includes/{icon → svg/icon}/social/qq.svg +0 -0
  67. data/_includes/{icon → svg/icon}/social/twitter.svg +0 -0
  68. data/_includes/{icon → svg/icon}/social/weibo.svg +0 -0
  69. data/_includes/{icon → svg/icon}/social/weixin.svg +0 -0
  70. data/_includes/{icon → svg/icon}/social/zhihu.svg +0 -0
  71. data/_includes/{logo → svg}/logo.svg +1 -1
  72. data/_includes/tags.html +52 -0
  73. data/_layouts/404.html +12 -0
  74. data/_layouts/archive.html +25 -0
  75. data/_layouts/article.html +78 -0
  76. data/_layouts/base.html +13 -33
  77. data/_layouts/home.html +135 -121
  78. data/_layouts/landing.html +164 -0
  79. data/_layouts/page.html +157 -9
  80. data/_sass/additional/_alert.scss +25 -0
  81. data/_sass/additional/_photo-frame.scss +17 -0
  82. data/_sass/animate/_fade-in-down.scss +1 -1
  83. data/_sass/animate/_fade-in.scss +1 -1
  84. data/_sass/common/_classes.scss +5 -2
  85. data/_sass/common/_reset.scss +32 -22
  86. data/_sass/common/_variables.scss +87 -31
  87. data/_sass/common/classes/_animation.scss +9 -0
  88. data/_sass/common/classes/_clearfix.scss +8 -0
  89. data/_sass/common/classes/_grid.scss +48 -0
  90. data/_sass/common/classes/_horizontal-rules.scss +14 -0
  91. data/_sass/common/classes/_link.scss +18 -145
  92. data/_sass/common/classes/_media.scss +1 -2
  93. data/_sass/common/classes/_overflow.scss +8 -0
  94. data/_sass/common/classes/_pseudo.scss +26 -0
  95. data/_sass/common/classes/_shadow.scss +13 -5
  96. data/_sass/common/classes/_spacing.scss +52 -0
  97. data/_sass/common/components/_button.scss +179 -47
  98. data/_sass/common/components/_card.scss +18 -0
  99. data/_sass/common/components/_menu.scss +43 -0
  100. data/_sass/common/components/_toc.scss +125 -0
  101. data/_sass/components/_article.content.scss +37 -45
  102. data/_sass/components/_article.info.scss +25 -0
  103. data/_sass/components/_author-profile.scss +43 -0
  104. data/_sass/components/_follow-me.scss +16 -19
  105. data/_sass/components/_footer.scss +16 -6
  106. data/_sass/components/_header.scss +26 -18
  107. data/_sass/components/_license.scss +1 -25
  108. data/_sass/components/_main.scss +13 -11
  109. data/_sass/components/_tags.scss +17 -36
  110. data/_sass/layout/{_error-404.scss → _404.scss} +2 -2
  111. data/_sass/layout/_all.scss +72 -63
  112. data/_sass/layout/_article.scss +44 -0
  113. data/_sass/layout/_home.scss +61 -52
  114. data/_sass/layout/_landing.scss +104 -0
  115. data/_sass/layout/_page.scss +155 -0
  116. data/_sass/{colors → skins}/_chocolate.scss +17 -6
  117. data/_sass/skins/_dark.scss +56 -0
  118. data/_sass/{colors → skins}/_default.scss +16 -5
  119. data/_sass/{colors → skins}/_forest.scss +16 -5
  120. data/_sass/{colors → skins}/_ocean.scss +16 -5
  121. data/_sass/{colors → skins}/_orange.scss +20 -9
  122. data/assets/android-chrome-192x192.png +0 -0
  123. data/assets/android-chrome-512x512.png +0 -0
  124. data/assets/apple-touch-icon.png +0 -0
  125. data/assets/browserconfig.xml +9 -0
  126. data/assets/css/main.scss +46 -0
  127. data/assets/favicon-16x16.png +0 -0
  128. data/assets/favicon-32x32.png +0 -0
  129. data/assets/favicon.ico +0 -0
  130. data/assets/images/logo/logo.svg +1 -1
  131. data/assets/mstile-144x144.png +0 -0
  132. data/assets/mstile-150x150.png +0 -0
  133. data/assets/mstile-310x150.png +0 -0
  134. data/assets/mstile-310x310.png +0 -0
  135. data/assets/mstile-70x70.png +0 -0
  136. data/assets/safari-pinned-tab.svg +38 -0
  137. data/assets/site.webmanifest +19 -0
  138. metadata +108 -76
  139. data/_includes/common-head.html +0 -10
  140. data/_includes/components/article-data.html +0 -55
  141. data/_includes/components/follow-me.html +0 -78
  142. data/_includes/components/footer.html +0 -10
  143. data/_includes/components/header.html +0 -42
  144. data/_includes/components/license.html +0 -26
  145. data/_includes/components/tags.html +0 -52
  146. data/_includes/head-icons-rel.html +0 -38
  147. data/_includes/icon/clear.svg +0 -3
  148. data/_includes/icon/link.svg +0 -1
  149. data/_includes/icon/menu.svg +0 -3
  150. data/_includes/icon/next.svg +0 -3
  151. data/_includes/icon/omit.svg +0 -1
  152. data/_includes/icon/previous.svg +0 -3
  153. data/_includes/icon/search.svg +0 -3
  154. data/_includes/scripts/all.html +0 -244
  155. data/_includes/scripts/common.html +0 -30
  156. data/_includes/scripts/data.html +0 -27
  157. data/_includes/scripts/home.html +0 -26
  158. data/_includes/scripts/page-post.html +0 -32
  159. data/_includes/scripts/post.html +0 -183
  160. data/_includes/utils/comment-disqus.html +0 -19
  161. data/_includes/utils/comment-gitalk.html +0 -25
  162. data/_includes/utils/google-analytics.html +0 -11
  163. data/_layouts/all.html +0 -20
  164. data/_layouts/error-404.html +0 -9
  165. data/_layouts/post.html +0 -60
  166. data/_sass/colors/_dark.scss +0 -45
  167. data/_sass/common/classes/_shape.scss +0 -19
  168. data/_sass/common/classes/_space.scss +0 -40
  169. data/_sass/components/_article.content.extra.scss +0 -41
  170. data/_sass/components/_article.data.scss +0 -36
  171. data/_sass/components/_pagination.scss +0 -19
  172. data/_sass/components/_toc.scss +0 -72
  173. data/_sass/layout/_default.scss +0 -19
  174. data/_sass/layout/_post.scss +0 -80
  175. data/assets/css/blog.scss +0 -41
  176. data/assets/images/logo/icon-120x120.png +0 -0
  177. data/assets/images/logo/icon-128x128.png +0 -0
  178. data/assets/images/logo/icon-150x150.png +0 -0
  179. data/assets/images/logo/icon-152x152.png +0 -0
  180. data/assets/images/logo/icon-167x167.png +0 -0
  181. data/assets/images/logo/icon-16x16.png +0 -0
  182. data/assets/images/logo/icon-180x180.png +0 -0
  183. data/assets/images/logo/icon-192x192.png +0 -0
  184. data/assets/images/logo/icon-310x150.png +0 -0
  185. data/assets/images/logo/icon-310x310.png +0 -0
  186. data/assets/images/logo/icon-48x48.png +0 -0
  187. data/assets/images/logo/icon-70x70.png +0 -0
@@ -1,64 +1,120 @@
1
1
  $base: (
2
2
  font-family: (-apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif),
3
- code-font-family: (Menlo, Monaco, Consolas, Andale Mono, lucida console, Courier New, monospace),
3
+ font-family-code: (Menlo, Monaco, Consolas, Andale Mono, lucida console, Courier New, monospace),
4
4
 
5
5
  font-size-root: 16px,
6
+
7
+ font-size-xl: 1.6rem,
8
+ font-size-lg: 1.25rem,
6
9
  font-size: 1rem,
10
+ font-size-sm: .875rem,
11
+ font-size-xs: .75rem,
12
+
13
+ font-size-h1-lg: 3rem,
14
+ font-size-h2-lg: 2rem,
15
+ font-size-h3-lg: 1.75rem,
16
+ font-size-h4-lg: 1.5rem,
17
+ font-size-h5-lg: 1.25rem,
18
+ font-size-h6-lg: 1.25rem,
7
19
 
8
- font-size-h1: 2.3rem,
9
- font-size-h2: 1.8rem,
20
+ font-size-h1: 2.5rem,
21
+ font-size-h2: 1.9rem,
10
22
  font-size-h3: 1.5rem,
11
23
  font-size-h4: 1.2rem,
12
24
  font-size-h5: 1rem,
13
25
  font-size-h6: 1rem,
14
- font-size-sub: .9rem,
15
- font-size-tiny: .8rem,
16
-
17
- font-size-h1-small: 2rem,
18
- font-size-h2-small: 1.5rem,
19
- font-size-h3-small: 1.35rem,
20
- font-size-h4-small: 1.15rem,
21
-
22
- font-size-header-list: 1.4rem,
23
- font-size-h1-excerpt: 1rem,
24
- font-size-h2-excerpt: .975rem,
25
- font-size-h3-excerpt: .95rem,
26
- font-size-h4-excerpt: .925rem,
27
- font-size-h5-excerpt: .9rem,
28
- font-size-h6-excerpt: .9rem,
26
+
27
+ font-size-h1-sm: 2rem,
28
+ font-size-h2-sm: 1.5rem,
29
+ font-size-h3-sm: 1.35rem,
30
+ font-size-h4-sm: 1.15rem,
31
+ font-size-h5-sm: 1rem,
32
+ font-size-h6-sm: 1rem,
33
+
34
+ font-size-h1-xs: 1rem,
35
+ font-size-h2-xs: .9rem,
36
+ font-size-h3-xs: .85rem,
37
+ font-size-h4-xs: .8rem,
38
+ font-size-h5-xs: .75rem,
39
+ font-size-h6-xs: .75rem,
29
40
 
30
41
  font-weight: 400,
31
42
  font-weight-bold: 700,
32
43
 
33
- line-height-small: 1.4,
44
+ line-height-xl: 2.1,
45
+ line-height-lg: 1.8,
34
46
  line-height: 1.6,
35
- line-height-large: 1.8,
47
+ line-height-sm: 1.4,
48
+ line-height-xs: 1.2,
49
+
50
+ spacer: 1rem,
36
51
 
37
52
  vertical-space: .5rem,
38
- vertical-space-large: 1.4rem,
39
- horizontal-space: .25rem,
40
- horizontal-item-vertical-space: .2rem
53
+ vertical-space-lg: 1.4rem,
54
+
55
+ border-radius-lg: .8rem,
56
+ border-radius: .4rem,
57
+ border-radius-sm: .2rem
41
58
  );
42
59
 
43
- $shape: (
44
- round-length: 2rem,
45
- round-rect-radius: .4rem,
60
+ $spacers: (
61
+ 0: 0,
62
+ 1: map-get($base, spacer) * .25,
63
+ 2: map-get($base, spacer) * .5,
64
+ 3: map-get($base, spacer),
65
+ 4: map-get($base, spacer) * 1.5,
66
+ 5: map-get($base, spacer) * 3
46
67
  );
47
68
 
48
69
  $layout: (
49
70
  header-height: 5rem,
50
- header-height-small: 3rem,
71
+ header-height-sm: 3rem,
51
72
  content-max-width: 850px,
73
+ sidebar-width: 250px,
74
+ sidebar-header-height: 3rem,
52
75
  aside-width: 220px,
53
- footer-height: 12rem
76
+ footer-height: 10rem
54
77
  );
55
78
 
79
+ // sm md lg
80
+ // | ------ | ------ | ------ |
81
+ // 0 500 1024 ∞
82
+
56
83
  $responsive: (
57
- s: 500px,
58
- l: 1024px
84
+ sm: 0px,
85
+ md: 500px,
86
+ lg: 1024px
59
87
  );
60
88
 
61
89
  $animation: (
62
90
  duration: .6s,
63
- timing-function: ease
91
+ timing-function: ease-in-out
92
+ );
93
+
94
+ $link: (
95
+ transition: all .2s ease-in-out
96
+ );
97
+
98
+ $button: (
99
+ padding-y-lg: .5rem,
100
+ padding-x-lg: 1.2rem,
101
+
102
+ padding-y: .1rem,
103
+ padding-x: .55rem,
104
+
105
+ padding-y-sm: .06rem,
106
+ padding-x-sm: .35rem,
107
+
108
+ font-weight: map-get($base, font-weight-bold),
109
+
110
+ circle-diameter-lg: 3rem,
111
+ circle-diameter: 2rem,
112
+ circle-diameter-sm: 1.2rem,
113
+
114
+ transition: all .2s ease-in-out
115
+ );
116
+
117
+ $menu: (
118
+ horizontal-spacer: 1,
119
+ horizontal-item-vertical-spacer: 1
64
120
  );
@@ -1,4 +1,13 @@
1
1
  @mixin animation($value) {
2
2
  -webkit-animation: $value;
3
3
  animation: $value;
4
+ }
5
+
6
+ @mixin keyframes($name) {
7
+ @-webkit-keyframes #{$name} {
8
+ @content;
9
+ }
10
+ @keyframes #{$name} {
11
+ @content;
12
+ }
4
13
  }
@@ -4,4 +4,12 @@
4
4
  display: table;
5
5
  clear: both;
6
6
  }
7
+ }
8
+
9
+ .left {
10
+ float: left;
11
+ }
12
+
13
+ .right {
14
+ float: right;
7
15
  }
@@ -0,0 +1,48 @@
1
+ $grid-columns: 12;
2
+
3
+ @mixin make-col($columns) {
4
+ .col-#{$columns} {
5
+ display: inline-block;
6
+ letter-spacing: normal;
7
+ width: percentage($columns / $grid-columns);
8
+ }
9
+ }
10
+
11
+ @mixin make-md-col($columns) {
12
+ @include media-breakpoint-down(lg) {
13
+ .col-md-#{$columns} {
14
+ display: inline-block;
15
+ letter-spacing: normal;
16
+ width: percentage($columns / $grid-columns);
17
+ }
18
+ }
19
+ }
20
+
21
+ @mixin make-sm-col($columns) {
22
+ @include media-breakpoint-down(md) {
23
+ .col-sm-#{$columns} {
24
+ display: inline-block;
25
+ letter-spacing: normal;
26
+ width: percentage($columns / $grid-columns);
27
+ }
28
+ }
29
+ }
30
+
31
+ .grid {
32
+ & > .row {
33
+ @include flexbox();
34
+ @include flex-wrap(wrap);
35
+ letter-spacing: -.31em;
36
+ & > {
37
+ @for $i from 1 through $grid-columns {
38
+ @include make-col($i);
39
+ }
40
+ @for $i from 1 through $grid-columns {
41
+ @include make-md-col($i);
42
+ }
43
+ @for $i from 1 through $grid-columns {
44
+ @include make-sm-col($i);
45
+ }
46
+ }
47
+ }
48
+ }
@@ -0,0 +1,14 @@
1
+ @mixin horizontal-rules() {
2
+ &::before {
3
+ content: '...';
4
+ font-size: map-get($base, font-size-h2);
5
+ color: $text-color-l;
6
+ display: block;
7
+ letter-spacing: map-get($spacers, 4);
8
+ text-align: center;
9
+ }
10
+ }
11
+
12
+ .horizontal-rules {
13
+ @include horizontal-rules();
14
+ }
@@ -1,161 +1,34 @@
1
- @mixin link-animation {
2
- @include transition(all map-get($animation, duration) map-get($animation, timing-function));
3
- }
4
-
5
- @mixin link-normal {
6
- &,
7
- &:link,
8
- &:visited {
9
- @content;
1
+ @mixin link-colors($clr, $hover-clr: default, $active-clr: default, $focus-clr: null) {
2
+ @if $hover-clr == default {
3
+ $hover-clr: $clr;
10
4
  }
11
- }
12
-
13
- @mixin link-hover {
14
- &.hover,
15
- &:hover {
16
- @content;
5
+ @if $active-clr == default {
6
+ $active-clr: $clr;
17
7
  }
18
- }
19
-
20
- @mixin link-active {
21
- &.active,
22
- &:active {
23
- @content;
24
- }
25
- }
26
-
27
- @mixin link-emphasize {
28
- @include link-hover() {
29
- @content;
30
- }
31
- @include link-active() {
32
- @content;
33
- }
34
- }
35
-
36
- @mixin link-focus {
37
- &.focus {
38
- @content;
39
- }
40
- }
41
-
42
- @mixin link-colors($nc, $nbc, $hc: default, $hbc: default, $ac: default, $abc: default, $fc: null, $fbc: null) {
43
- @if $hc == default {
44
- $hc: $nc
45
- }
46
- @if $ac == default {
47
- $ac: $nc
48
- }
49
- @if $fc == default {
50
- $fc: $nc
51
- }
52
- @if $hbc == default {
53
- $hbc: $nbc
54
- }
55
- @if $abc == default {
56
- $abc: $nbc
57
- }
58
- @if $fbc == default {
59
- $fbc: $nbc
60
- }
61
- @include link-normal() {
62
- color: $nc;
63
- background-color: $nbc;
8
+ @include plain {
9
+ color: $clr;
64
10
  svg path {
65
- fill: $nc;
11
+ fill: $clr;
66
12
  }
67
13
  }
68
- .not-touch & {
69
- @include link-hover() {
70
- color: $hc;
71
- background-color: $hbc;
72
- svg path {
73
- fill: $hc;
74
- }
75
- }
76
- }
77
- @include link-active() {
78
- color: $ac;
79
- background-color: $abc;
14
+ @include hover {
15
+ color: $hover-clr;
80
16
  svg path {
81
- fill: $ac;
17
+ fill: $hover-clr;
82
18
  }
83
19
  }
84
- @if $fc and $fbc {
85
- @include link-focus() {
86
- color: $fc;
87
- background-color: $fbc;
88
- svg path {
89
- fill: $fc;
90
- }
91
- }
92
- }
93
- }
94
-
95
- @mixin link-text-colors($nc, $hc: default, $ac: default, $fc: null) {
96
- @if $hc == default {
97
- $hc: $nc
98
- }
99
- @if $ac == default {
100
- $ac: $nc
101
- }
102
- @if $fc == default {
103
- $fc: $nc
104
- }
105
- @include link-normal() {
106
- color: $nc;
107
- svg path {
108
- fill: $nc;
109
- }
110
- }
111
- .not-touch & {
112
- @include link-hover() {
113
- color: $hc;
114
- svg path {
115
- fill: $hc;
116
- }
117
- }
118
- }
119
- @include link-active() {
120
- color: $ac;
20
+ @include active {
21
+ color: $active-clr;
121
22
  svg path {
122
- fill: $ac;
23
+ fill: $active-clr;
123
24
  }
124
25
  }
125
- @if $fc {
126
- @include link-focus() {
127
- color: $fc;
26
+ @if $focus-clr {
27
+ @include focus {
28
+ color: $focus-clr;
128
29
  svg path {
129
- fill: $fc;
30
+ fill: $focus-clr;
130
31
  }
131
32
  }
132
33
  }
133
- }
134
-
135
- @mixin link-background-colors($nbc, $hbc: default, $abc: default, $fbc: null) {
136
- @if $hbc == default {
137
- $hbc: $nbc
138
- }
139
- @if $abc == default {
140
- $abc: $nbc
141
- }
142
- @if $fbc == default {
143
- $fbc: $nbc
144
- }
145
- @include link-normal() {
146
- background-color: $nbc;
147
- }
148
- .not-touch & {
149
- @include link-hover() {
150
- background-color: $hbc;
151
- }
152
- }
153
- @include link-active() {
154
- background-color: $abc;
155
- }
156
- @if $fbc {
157
- @include link-focus() {
158
- background-color: $fbc;
159
- }
160
- }
161
34
  }
@@ -14,5 +14,4 @@
14
14
  @media screen and (min-width: map-get($breakpoints, $name)) {
15
15
  @content;
16
16
  }
17
- }
18
-
17
+ }
@@ -0,0 +1,8 @@
1
+ @mixin overflow($overflow: auto) {
2
+ @if $overflow == auto {
3
+ overflow: auto;
4
+ -webkit-overflow-scrolling: touch;
5
+ } @else {
6
+ overflow: $overflow;
7
+ }
8
+ }
@@ -0,0 +1,26 @@
1
+ @mixin plain() {
2
+ &,
3
+ &:link,
4
+ &:visited{
5
+ @content;
6
+ }
7
+ }
8
+
9
+ @mixin hover() {
10
+ &:hover {
11
+ @content;
12
+ }
13
+ }
14
+
15
+ @mixin active() {
16
+ &.active,
17
+ &:active {
18
+ @content;
19
+ }
20
+ }
21
+
22
+ @mixin focus() {
23
+ &.focus {
24
+ @content;
25
+ }
26
+ }