jekyll-theme-chirpy 7.1.1 → 7.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/_data/locales/hu-HU.yml +20 -7
  3. data/_data/origin/cors.yml +4 -4
  4. data/_includes/analytics/cloudflare.html +0 -1
  5. data/_includes/analytics/fathom.html +2 -3
  6. data/_includes/analytics/google.html +1 -1
  7. data/_includes/analytics/matomo.html +6 -7
  8. data/_includes/comments/disqus.html +36 -29
  9. data/_includes/comments/giscus.html +14 -30
  10. data/_includes/comments/utterances.html +26 -37
  11. data/_includes/head.html +24 -3
  12. data/_includes/js-selector.html +3 -26
  13. data/_includes/jsdelivr-combine.html +4 -4
  14. data/_includes/search-loader.html +22 -20
  15. data/_includes/sidebar.html +1 -3
  16. data/_includes/toc-status.html +10 -0
  17. data/_includes/toc.html +4 -8
  18. data/_layouts/default.html +8 -4
  19. data/_layouts/home.html +26 -19
  20. data/_layouts/post.html +29 -2
  21. data/_sass/abstracts/_breakpoints.scss +73 -0
  22. data/_sass/abstracts/_index.scss +4 -0
  23. data/_sass/abstracts/_mixins.scss +80 -0
  24. data/_sass/{addon/module.scss → abstracts/_placeholders.scss} +22 -55
  25. data/_sass/{addon/variables.scss → abstracts/_variables.scss} +0 -4
  26. data/_sass/base/_base.scss +476 -0
  27. data/_sass/base/_index.scss +4 -0
  28. data/_sass/base/_reset.scss +41 -0
  29. data/_sass/{addon/syntax.scss → base/_syntax.scss} +46 -85
  30. data/_sass/base/_typography.scss +266 -0
  31. data/_sass/components/_buttons.scss +51 -0
  32. data/_sass/components/_index.scss +2 -0
  33. data/_sass/components/_popups.scss +172 -0
  34. data/_sass/layout/_footer.scss +36 -0
  35. data/_sass/layout/_index.scss +4 -0
  36. data/_sass/layout/_panel.scss +70 -0
  37. data/_sass/layout/_sidebar.scss +258 -0
  38. data/_sass/layout/_topbar.scss +86 -0
  39. data/_sass/main.bundle.scss +2 -2
  40. data/_sass/main.scss +4 -13
  41. data/_sass/{layout/archives.scss → pages/_archives.scss} +12 -16
  42. data/_sass/{layout/categories.scss → pages/_categories.scss} +5 -6
  43. data/_sass/{layout/category-tag.scss → pages/_category-tag.scss} +11 -20
  44. data/_sass/{layout/home.scss → pages/_home.scss} +54 -70
  45. data/_sass/pages/_index.scss +7 -0
  46. data/_sass/{layout/post.scss → pages/_post.scss} +183 -45
  47. data/_sass/pages/_search.scss +184 -0
  48. data/_sass/{layout/tags.scss → pages/_tags.scss} +7 -3
  49. data/_sass/{colors/typography-dark.scss → themes/_dark.scss} +163 -7
  50. data/_sass/themes/_light.scss +313 -0
  51. data/_sass/vendors/_bootstrap.scss +5 -0
  52. data/assets/css/jekyll-theme-chirpy.scss +1 -1
  53. data/assets/feed.xml +1 -1
  54. data/assets/js/dist/app.min.js +1 -1
  55. data/assets/js/dist/categories.min.js +2 -2
  56. data/assets/js/dist/commons.min.js +2 -2
  57. data/assets/js/dist/home.min.js +2 -2
  58. data/assets/js/dist/misc.min.js +2 -2
  59. data/assets/js/dist/page.min.js +2 -2
  60. data/assets/js/dist/post.min.js +2 -2
  61. data/assets/js/dist/sw.min.js +1 -1
  62. data/assets/js/dist/theme.min.js +4 -0
  63. metadata +35 -22
  64. data/_includes/mermaid.html +0 -62
  65. data/_includes/mode-toggle.html +0 -116
  66. data/_sass/addon/commons.scss +0 -1542
  67. data/_sass/colors/syntax-dark.scss +0 -164
  68. data/_sass/colors/syntax-light.scss +0 -210
  69. data/_sass/colors/typography-light.scss +0 -112
  70. data/_sass/dist/bootstrap.css +0 -5
  71. data/_sass/variables-hook.scss +0 -3
  72. /data/_includes/{comments.html → comment.html} +0 -0
data/_layouts/home.html CHANGED
@@ -5,38 +5,45 @@ refactor: true
5
5
 
6
6
  {% include lang.html %}
7
7
 
8
- {% assign pinned = site.posts | where: 'pin', 'true' %}
9
- {% assign default = site.posts | where_exp: 'item', 'item.pin != true and item.hidden != true' %}
8
+ {% assign all_pinned = site.posts | where: 'pin', 'true' %}
9
+ {% assign all_normal = site.posts | where_exp: 'item', 'item.pin != true and item.hidden != true' %}
10
10
 
11
11
  {% assign posts = '' | split: '' %}
12
12
 
13
- <!-- Get pinned posts -->
13
+ <!-- Get pinned posts on current page -->
14
14
 
15
- {% assign offset = paginator.page | minus: 1 | times: paginator.per_page %}
16
- {% assign pinned_num = pinned.size | minus: offset %}
15
+ {% assign visible_start = paginator.page | minus: 1 | times: paginator.per_page %}
16
+ {% assign visible_end = visible_start | plus: paginator.per_page %}
17
17
 
18
- {% if pinned_num > 0 %}
19
- {% for i in (offset..pinned.size) limit: pinned_num %}
20
- {% assign posts = posts | push: pinned[i] %}
18
+ {% if all_pinned.size > visible_start %}
19
+ {% if all_pinned.size > visible_end %}
20
+ {% assign pinned_size = paginator.per_page %}
21
+ {% else %}
22
+ {% assign pinned_size = all_pinned.size | minus: visible_start %}
23
+ {% endif %}
24
+
25
+ {% for i in (visible_start..all_pinned.size) limit: pinned_size %}
26
+ {% assign posts = posts | push: all_pinned[i] %}
21
27
  {% endfor %}
22
28
  {% else %}
23
- {% assign pinned_num = 0 %}
29
+ {% assign pinned_size = 0 %}
24
30
  {% endif %}
25
31
 
26
- <!-- Get default posts -->
32
+ <!-- Get normal posts on current page -->
27
33
 
28
- {% assign default_beg = offset | minus: pinned.size %}
34
+ {% assign normal_size = paginator.posts | size | minus: pinned_size %}
29
35
 
30
- {% if default_beg < 0 %}
31
- {% assign default_beg = 0 %}
32
- {% endif %}
36
+ {% if normal_size > 0 %}
37
+ {% if pinned_size > 0 %}
38
+ {% assign normal_start = 0 %}
39
+ {% else %}
40
+ {% assign normal_start = visible_start | minus: all_pinned.size %}
41
+ {% endif %}
33
42
 
34
- {% assign default_num = paginator.posts | size | minus: pinned_num %}
35
- {% assign default_end = default_beg | plus: default_num | minus: 1 %}
43
+ {% assign normal_end = normal_start | plus: normal_size | minus: 1 %}
36
44
 
37
- {% if default_num > 0 %}
38
- {% for i in (default_beg..default_end) %}
39
- {% assign posts = posts | push: default[i] %}
45
+ {% for i in (normal_start..normal_end) %}
46
+ {% assign posts = posts | push: all_normal[i] %}
40
47
  {% endfor %}
41
48
  {% endif %}
42
49
 
data/_layouts/post.html CHANGED
@@ -6,12 +6,15 @@ panel_includes:
6
6
  tail_includes:
7
7
  - related-posts
8
8
  - post-nav
9
- - comments
9
+ script_includes:
10
+ - comment
10
11
  ---
11
12
 
12
13
  {% include lang.html %}
13
14
 
14
- <article class="px-1">
15
+ {% include toc-status.html %}
16
+
17
+ <article class="px-1" data-toc="{{ enable_toc }}">
15
18
  <header>
16
19
  <h1 data-toc-skip>{{ page.title }}</h1>
17
20
  {% if page.description %}
@@ -95,6 +98,30 @@ tail_includes:
95
98
  </div>
96
99
  </header>
97
100
 
101
+ {% if enable_toc %}
102
+ <div id="toc-bar" class="d-flex align-items-center justify-content-between invisible">
103
+ <span class="label text-truncate">{{ page.title }}</span>
104
+ <button type="button" class="toc-trigger btn me-1">
105
+ <i class="fa-solid fa-list-ul fa-fw"></i>
106
+ </button>
107
+ </div>
108
+
109
+ <button id="toc-solo-trigger" type="button" class="toc-trigger btn btn-outline-secondary btn-sm">
110
+ <span class="label ps-2 pe-1">{{- site.data.locales[lang].panel.toc -}}</span>
111
+ <i class="fa-solid fa-angle-right fa-fw"></i>
112
+ </button>
113
+
114
+ <dialog id="toc-popup" class="p-0">
115
+ <div class="header d-flex flex-row align-items-center justify-content-between">
116
+ <div class="label text-truncate py-2 ms-4">{{- page.title -}}</div>
117
+ <button id="toc-popup-close" type="button" class="btn mx-1 my-1 opacity-75">
118
+ <i class="fas fa-close"></i>
119
+ </button>
120
+ </div>
121
+ <div id="toc-popup-content" class="px-4 py-3 pb-4"></div>
122
+ </dialog>
123
+ {% endif %}
124
+
98
125
  <div class="content">
99
126
  {{ content }}
100
127
  </div>
@@ -0,0 +1,73 @@
1
+ @use 'sass:map';
2
+
3
+ $-breakpoints: (
4
+ // 1 column
5
+ sm: 576px,
6
+ md: 768px,
7
+ // 2 columns
8
+ lg: 850px,
9
+ // 3 columns
10
+ xl: 1200px,
11
+ xxl: 1400px,
12
+ xxxl: 1650px
13
+ );
14
+
15
+ @function get($breakpoint) {
16
+ @return map.get($-breakpoints, $breakpoint);
17
+ }
18
+
19
+ /* Less than the given width */
20
+ @mixin lt($width) {
21
+ @media all and (max-width: calc(#{$width} - 1px)) {
22
+ @content;
23
+ }
24
+ }
25
+
26
+ /* Less than or equal to the given width */
27
+ @mixin lte($width) {
28
+ @media all and (max-width: $width) {
29
+ @content;
30
+ }
31
+ }
32
+
33
+ @mixin sm {
34
+ @media all and (min-width: get(sm)) {
35
+ @content;
36
+ }
37
+ }
38
+
39
+ @mixin md {
40
+ @media all and (min-width: get(md)) {
41
+ @content;
42
+ }
43
+ }
44
+
45
+ @mixin lg {
46
+ @media all and (min-width: get(lg)) {
47
+ @content;
48
+ }
49
+ }
50
+
51
+ @mixin xl {
52
+ @media all and (min-width: get(xl)) {
53
+ @content;
54
+ }
55
+ }
56
+
57
+ @mixin xxl {
58
+ @media all and (min-width: get(xxl)) {
59
+ @content;
60
+ }
61
+ }
62
+
63
+ @mixin xxxl {
64
+ @media all and (min-width: get(xxxl)) {
65
+ @content;
66
+ }
67
+ }
68
+
69
+ @mixin between($min, $max) {
70
+ @media all and (min-width: $min) and (max-width: $max) {
71
+ @content;
72
+ }
73
+ }
@@ -0,0 +1,4 @@
1
+ @forward 'variables';
2
+ @forward 'mixins';
3
+ @forward 'placeholders';
4
+ @forward 'breakpoints';
@@ -0,0 +1,80 @@
1
+ @mixin text-ellipsis {
2
+ overflow: hidden;
3
+ text-overflow: ellipsis;
4
+ white-space: nowrap;
5
+ }
6
+
7
+ @mixin mt-mb($value) {
8
+ margin-top: $value;
9
+ margin-bottom: $value;
10
+ }
11
+
12
+ @mixin ml-mr($value) {
13
+ margin-left: $value;
14
+ margin-right: $value;
15
+ }
16
+
17
+ @mixin pt-pb($val) {
18
+ padding-top: $val;
19
+ padding-bottom: $val;
20
+ }
21
+
22
+ @mixin pl-pr($val, $important: false) {
23
+ @if $important {
24
+ padding-left: $val !important;
25
+ padding-right: $val !important;
26
+ } @else {
27
+ padding-left: $val;
28
+ padding-right: $val;
29
+ }
30
+ }
31
+
32
+ @mixin placeholder {
33
+ color: var(--text-muted-color) !important;
34
+ }
35
+
36
+ @mixin placeholder-focus {
37
+ opacity: 0.6;
38
+ }
39
+
40
+ @mixin label($font-size: 1rem, $font-weight: 600, $color: var(--label-color)) {
41
+ color: $color;
42
+ font-size: $font-size;
43
+ font-weight: $font-weight;
44
+ }
45
+
46
+ @mixin align-center {
47
+ position: relative;
48
+ left: 50%;
49
+ transform: translateX(-50%);
50
+ }
51
+
52
+ @mixin prompt($type, $fa-content, $fa-style: 'solid', $rotate: 0) {
53
+ &.prompt-#{$type} {
54
+ background-color: var(--prompt-#{$type}-bg);
55
+
56
+ &::before {
57
+ content: $fa-content;
58
+ color: var(--prompt-#{$type}-icon-color);
59
+ font: var(--fa-font-#{$fa-style});
60
+
61
+ @if $rotate != 0 {
62
+ transform: rotate(#{$rotate}deg);
63
+ }
64
+ }
65
+ }
66
+ }
67
+
68
+ @mixin slide($append: null) {
69
+ $basic: transform 0.4s ease;
70
+
71
+ @if $append {
72
+ transition: $basic, $append;
73
+ } @else {
74
+ transition: $basic;
75
+ }
76
+ }
77
+
78
+ @mixin max-w-100 {
79
+ max-width: 100%;
80
+ }
@@ -1,13 +1,11 @@
1
- /*
2
- * Mainly scss modules, only imported to `assets/css/main.scss`
3
- */
4
-
5
- /* ---------- scss placeholder --------- */
1
+ @use 'variables' as v;
2
+ @use 'mixins' as mx;
6
3
 
7
4
  %heading {
8
5
  color: var(--heading-color);
9
6
  font-weight: 400;
10
- font-family: $font-family-heading;
7
+ font-family: v.$font-family-heading;
8
+ scroll-margin-top: 3.5rem;
11
9
  }
12
10
 
13
11
  %anchor {
@@ -81,7 +79,7 @@
81
79
  }
82
80
 
83
81
  %rounded {
84
- border-radius: $radius-lg;
82
+ border-radius: v.$radius-lg;
85
83
  }
86
84
 
87
85
  %img-caption {
@@ -111,6 +109,10 @@
111
109
  -webkit-box-orient: vertical;
112
110
  }
113
111
 
112
+ %text-ellipsis {
113
+ @include mx.text-ellipsis;
114
+ }
115
+
114
116
  %text-highlight {
115
117
  color: var(--text-muted-highlight-color);
116
118
  font-weight: 600;
@@ -134,60 +136,25 @@
134
136
  }
135
137
  }
136
138
 
137
- /* ---------- scss mixin --------- */
138
-
139
- @mixin mt-mb($value) {
140
- margin-top: $value;
141
- margin-bottom: $value;
142
- }
143
-
144
- @mixin ml-mr($value) {
145
- margin-left: $value;
146
- margin-right: $value;
147
- }
148
-
149
- @mixin pt-pb($val) {
150
- padding-top: $val;
151
- padding-bottom: $val;
152
- }
153
-
154
- @mixin pl-pr($val) {
155
- padding-left: $val;
156
- padding-right: $val;
157
- }
158
-
159
- @mixin placeholder {
160
- color: var(--text-muted-color) !important;
139
+ %btn-color {
140
+ button i {
141
+ color: #999999;
142
+ }
161
143
  }
162
144
 
163
- @mixin placeholder-focus {
164
- opacity: 0.6;
145
+ %code-snippet-bg {
146
+ background-color: var(--highlight-bg-color);
165
147
  }
166
148
 
167
- @mixin label($font-size: 1rem, $font-weight: 600, $color: var(--label-color)) {
168
- color: $color;
169
- font-size: $font-size;
170
- font-weight: $font-weight;
149
+ %code-snippet-padding {
150
+ padding-left: 1rem;
151
+ padding-right: 1.5rem;
171
152
  }
172
153
 
173
- @mixin align-center {
174
- position: relative;
175
- left: 50%;
176
- transform: translateX(-50%);
154
+ %max-w-100 {
155
+ max-width: 100%;
177
156
  }
178
157
 
179
- @mixin prompt($type, $fa-content, $fa-style: 'solid', $rotate: 0) {
180
- &.prompt-#{$type} {
181
- background-color: var(--prompt-#{$type}-bg);
182
-
183
- &::before {
184
- content: $fa-content;
185
- color: var(--prompt-#{$type}-icon-color);
186
- font: var(--fa-font-#{$fa-style});
187
-
188
- @if $rotate != 0 {
189
- transform: rotate(#{$rotate}deg);
190
- }
191
- }
192
- }
158
+ %panel-border {
159
+ border-left: 1px solid var(--main-border-color);
193
160
  }
@@ -1,7 +1,3 @@
1
- /*
2
- * The SCSS variables
3
- */
4
-
5
1
  /* sidebar */
6
2
 
7
3
  $sidebar-width: 260px !default; /* the basic width */