jekyll-theme-chirpy 7.1.1 → 7.2.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 (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 */