hexo-theme-gnix 6.2.0 → 8.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 (59) hide show
  1. package/README.md +6 -2
  2. package/include/hexo/encrypt.js +42 -0
  3. package/include/hexo/feed.js +329 -0
  4. package/include/util/common.js +7 -9
  5. package/languages/en.yml +6 -3
  6. package/languages/zh-CN.yml +6 -3
  7. package/layout/archive.jsx +86 -65
  8. package/layout/comment/twikoo.jsx +2 -11
  9. package/layout/comment/waline.jsx +2 -2
  10. package/layout/common/article.jsx +5 -8
  11. package/layout/common/article_cover.jsx +11 -1
  12. package/layout/common/article_media.jsx +2 -4
  13. package/layout/common/footer.jsx +11 -31
  14. package/layout/common/head.jsx +6 -14
  15. package/layout/common/navbar.jsx +4 -4
  16. package/layout/common/scripts.jsx +6 -6
  17. package/layout/common/theme_selector.jsx +5 -6
  18. package/layout/common/toc.jsx +8 -14
  19. package/layout/index.jsx +2 -4
  20. package/layout/misc/article_licensing.jsx +4 -2
  21. package/layout/misc/open_graph.jsx +4 -4
  22. package/layout/misc/paginator.jsx +10 -4
  23. package/layout/misc/structured_data.jsx +3 -4
  24. package/layout/plugin/busuanzi.jsx +1 -1
  25. package/layout/plugin/cookie_consent.jsx +40 -31
  26. package/layout/plugin/swup.jsx +2 -22
  27. package/layout/search/insight.jsx +16 -3
  28. package/package.json +12 -8
  29. package/scripts/hot-reload.js +92 -0
  30. package/scripts/index.js +2 -0
  31. package/source/css/archive.css +251 -0
  32. package/source/css/default.css +250 -284
  33. package/source/css/encrypt.css +55 -0
  34. package/source/css/responsive/desktop.css +0 -119
  35. package/source/css/responsive/mobile.css +7 -23
  36. package/source/css/responsive/touch.css +9 -103
  37. package/source/css/shiki/shiki.css +7 -22
  38. package/source/css/twikoo.css +290 -830
  39. package/source/img/og_image.webp +0 -0
  40. package/source/js/archive-breadcrumb.js +132 -0
  41. package/source/js/busuanzi.js +1 -12
  42. package/source/js/components/accordion.js +192 -0
  43. package/source/js/components/chat.js +239 -0
  44. package/source/js/components/device-carousel.js +260 -0
  45. package/source/js/components/image-carousel.js +410 -0
  46. package/source/js/components/text-image-section.js +180 -0
  47. package/source/js/components/theme-stacked.js +526 -0
  48. package/source/js/components/tree.js +437 -0
  49. package/source/js/decrypt.js +112 -0
  50. package/source/js/insight.js +75 -65
  51. package/source/js/main.js +192 -99
  52. package/source/js/mdit/mermaid.js +12 -4
  53. package/source/js/swup.bundle.js +1 -0
  54. package/source/js/theme-selector.js +94 -113
  55. package/source/img/og_image.png +0 -0
  56. package/source/js/host/swup/Swup.umd.min.js +0 -1
  57. package/source/js/host/swup/head-plugin.umd.min.js +0 -1
  58. package/source/js/host/swup/scripts-plugin.umd.min.js +0 -2
  59. package/source/js/mdit/shiki.js +0 -158
@@ -0,0 +1,55 @@
1
+ .encrypted-content {
2
+ display: flex;
3
+ flex-direction: column;
4
+ align-items: center;
5
+ justify-content: center;
6
+ min-height: 200px;
7
+ padding: 2rem 1rem;
8
+ }
9
+
10
+ .encrypt-form {
11
+ display: flex;
12
+ flex-direction: column;
13
+ align-items: center;
14
+ gap: 1rem;
15
+ width: 100%;
16
+ max-width: 360px;
17
+ }
18
+
19
+ .encrypt-message {
20
+ color: var(--overlay0);
21
+ font-size: 0.95rem;
22
+ text-align: center;
23
+ margin: 0;
24
+ }
25
+
26
+ .encrypt-input-wrap {
27
+ width: 100%;
28
+ }
29
+
30
+ .encrypt-input-wrap input {
31
+ width: 100%;
32
+ padding: 0.6rem 0.8rem;
33
+ border: 1.5px solid var(--surface2);
34
+ border-radius: var(--radius);
35
+ background: var(--mantle);
36
+ color: var(--text);
37
+ font-size: 0.95rem;
38
+ outline: none;
39
+ transition: border-color 0.2s;
40
+ box-sizing: border-box;
41
+ }
42
+
43
+ .encrypt-input-wrap input:focus {
44
+ border-color: var(--lavender);
45
+ }
46
+
47
+ .encrypt-input-wrap input::placeholder {
48
+ color: var(--overlay0);
49
+ }
50
+
51
+ .encrypt-error {
52
+ color: var(--red);
53
+ font-size: 0.85rem;
54
+ margin: 0;
55
+ }
@@ -1,7 +1,4 @@
1
1
  /* min-width: 1024px */
2
- .is-hidden-desktop {
3
- display: none;
4
- }
5
2
 
6
3
  .navbar-burger {
7
4
  display: none;
@@ -37,119 +34,3 @@
37
34
  justify-content: flex-end;
38
35
  margin-left: auto;
39
36
  }
40
-
41
- #icarus-toc-container {
42
- position: fixed;
43
- right: 30px;
44
- top: 50%;
45
- transform: translateY(-50%);
46
- }
47
-
48
- .toc-button {
49
- display: none;
50
- }
51
-
52
- .toc-body {
53
- display: block;
54
- background: transparent;
55
- }
56
-
57
- .toc {
58
- padding: 0;
59
- margin: 0;
60
- list-style: none;
61
- display: flex;
62
- flex-direction: column;
63
- align-items: flex-end;
64
- }
65
-
66
- .toc-item {
67
- list-style: none;
68
- margin-bottom: 8px;
69
- position: relative;
70
- display: flex;
71
- justify-content: flex-end;
72
- flex-direction: column;
73
- align-items: flex-end;
74
- }
75
-
76
- /* Text Label */
77
- .toc-text {
78
- opacity: 0;
79
- transform: translateX(10px);
80
- transition: all 0.3s ease;
81
- font-size: 0.9rem;
82
- color: var(--text);
83
- white-space: nowrap;
84
- position: absolute;
85
- right: 100%;
86
- margin-right: 10px;
87
- pointer-events: none;
88
- }
89
-
90
- /* Hover on Container -> Show all text */
91
- #icarus-toc-container:hover .toc-text {
92
- opacity: 1;
93
- transform: translateX(0);
94
- }
95
-
96
- .toc-link {
97
- display: flex;
98
- align-items: center;
99
- justify-content: flex-end;
100
- text-decoration: none;
101
- height: 23px;
102
- position: relative;
103
- &:hover {
104
- &::after {
105
- background-color: var(--rosewater);
106
- box-shadow: 0 0 8px var(--lavender);
107
- }
108
- .toc-text {
109
- color: var(--mauve);
110
- }
111
- }
112
- }
113
-
114
- /* The Abstract Bar */
115
- .toc-link::after {
116
- content: "";
117
- display: block;
118
- height: 4px;
119
- border-radius: 2px;
120
- background-color: var(--surface0);
121
- transition: all 0.3s ease;
122
- margin-left: 15px;
123
- }
124
-
125
- /* Level variations - Width */
126
- .toc-level-1 > .toc-link::after {
127
- width: 30px;
128
- }
129
-
130
- .toc-level-2 > .toc-link::after {
131
- width: 30px;
132
- }
133
-
134
- .toc-level-3 > .toc-link::after {
135
- width: 24px;
136
- }
137
-
138
- .toc-level-4 > .toc-link::after {
139
- width: 18px;
140
- }
141
-
142
- .toc-level-5 > .toc-link::after {
143
- width: 14px;
144
- }
145
-
146
- .toc-level-6 > .toc-link::after {
147
- width: 10px;
148
- }
149
-
150
- /* Hide children lists container styling if any */
151
- .toc-child {
152
- padding: 0;
153
- margin: 0;
154
- display: contents;
155
- }
@@ -2,11 +2,6 @@ span.year {
2
2
  font-size: 3em !important;
3
3
  }
4
4
 
5
- .article-licensing {
6
- margin-left: -1rem;
7
- margin-right: -1rem;
8
- }
9
-
10
5
  .is-hidden-mobile {
11
6
  display: none;
12
7
  }
@@ -15,22 +10,22 @@ table {
15
10
  font-size: 14px;
16
11
  }
17
12
 
18
- table th,
19
- table td {
13
+ th,
14
+ td {
20
15
  padding: 8px 12px;
21
16
  }
22
17
 
23
18
  .section {
24
- padding: 1rem 0 2rem 0;
19
+ padding: 0;
25
20
  }
26
21
 
27
22
  .card {
28
- border: none;
29
- margin: 0 0 1.5rem 0;
23
+ border-left: none;
24
+ border-right: none;
30
25
  }
31
26
 
32
27
  .cover-image {
33
- max-height: 20vh;
28
+ max-height: 25vh;
34
29
  border-radius: 0;
35
30
  }
36
31
 
@@ -39,16 +34,5 @@ table td {
39
34
  }
40
35
 
41
36
  .pagination {
42
- flex-wrap: wrap;
43
- }
44
-
45
- .pagination-previous,
46
- .pagination-next {
47
- flex-grow: 1;
48
- flex-shrink: 1;
49
- }
50
-
51
- .pagination-list li {
52
- flex-grow: 1;
53
- flex-shrink: 1;
37
+ height: 2.5em;
54
38
  }
@@ -135,115 +135,21 @@
135
135
 
136
136
  /* #endregion Navbar */
137
137
 
138
- .theme-selector-content {
138
+ .theme-selector-list {
139
139
  width: 80%;
140
140
  padding: 1.5rem;
141
141
  }
142
142
 
143
- /* #region TOC */
144
- #icarus-toc-container .toc-button:hover {
145
- transform: scale(1.1);
146
- color: var(--lavender);
147
- }
148
-
149
- #icarus-toc-container {
150
- position: fixed;
151
- bottom: 20px;
152
- right: 20px;
153
- z-index: 99;
154
- }
155
-
156
- #icarus-toc-container .toc-body {
157
- position: fixed;
158
- inset: 0;
159
- background: hsl(from var(--mantle) h s l / 0.8);
160
- backdrop-filter: blur(10px);
161
- display: flex;
162
- flex-direction: column;
163
- justify-content: center;
164
- padding: 2rem;
165
- visibility: hidden;
166
- pointer-events: none;
167
- font-weight: 800;
168
- }
169
-
170
- #icarus-toc-container.is-open .toc-body {
171
- opacity: 1;
172
- visibility: visible;
173
- pointer-events: auto;
174
- }
175
-
176
- #icarus-toc-container .toc {
177
- max-height: 80vh;
178
- overflow-y: auto;
179
- padding: 0;
180
- list-style: none;
181
- }
182
-
183
- #icarus-toc-container .toc-item {
184
- margin-bottom: 0.5rem;
185
- }
186
-
187
- #icarus-toc-container .toc-text {
188
- font-family: var(--font-article);
189
- }
190
-
191
- .toc-level-2 span {
192
- color: var(--peach);
193
- font-size: 1.875rem;
194
- }
195
-
196
- .toc-level-3 span {
197
- color: var(--yellow);
198
- font-size: 1.5rem;
199
- }
200
-
201
- .toc-level-4 span {
202
- color: var(--green);
203
- font-size: 1.25rem;
204
- }
205
-
206
- .toc-level-5 span {
207
- color: var(--blue);
208
- font-size: 1rem;
209
- }
210
-
211
- .toc-level-6 span {
212
- color: var(--mauve);
213
- font-size: 0.875rem;
214
- }
215
-
216
- #icarus-toc-container .toc-item.is-active > .toc-link {
217
- color: var(--lavender);
218
- font-weight: bold;
219
- }
220
-
221
- /* Indentation for mobile */
222
- #icarus-toc-container .toc-child {
223
- padding-left: 1.5rem;
224
- list-style: none;
225
- }
226
-
227
- #icarus-toc-container .toc-text {
228
- /* Ensure text is visible on mobile */
229
- display: inline;
230
- }
231
-
232
- .toc-button {
233
- width: 48px;
234
- height: 48px;
235
- border-radius: 50%;
236
- display: flex;
237
- justify-content: center;
238
- align-items: center;
239
- background-color: hsl(from var(--mantle) h s l / 0.9);
240
- color: var(--text);
241
- border: 2px solid var(--surface0);
242
- }
243
-
244
143
  .searchbox-container {
245
144
  top: 15px;
246
145
  width: 90%;
247
146
  }
248
147
 
249
- /* #endregion TOC */
148
+ .toc-button {
149
+ top: auto;
150
+ bottom: 3rem;
151
+ right: 1rem;
152
+ left: auto;
153
+ background-color: var(--base);
154
+ border: 2px solid var(--surface0);
155
+ }
@@ -8,6 +8,11 @@ code span {
8
8
  font-weight: var(--shiki-light-font-weight);
9
9
  }
10
10
 
11
+ span.tab {
12
+ display: inline-block;
13
+ tab-size: 2;
14
+ }
15
+
11
16
  :is([data-theme="tokyo_night"]) code span {
12
17
  font-style: var(--shiki-tokyo-font-style) !important;
13
18
  font-weight: var(--shiki-tokyo-font-weight) !important;
@@ -39,7 +44,6 @@ figure.shiki {
39
44
  overflow: auto;
40
45
  background: var(--mantle);
41
46
  color: var(--text);
42
-
43
47
  iconify-icon {
44
48
  color: transparent;
45
49
  cursor: pointer;
@@ -51,7 +55,6 @@ figure.shiki {
51
55
  &:hover {
52
56
  iconify-icon {
53
57
  color: var(--text);
54
-
55
58
  &:hover {
56
59
  color: var(--blue);
57
60
  transform: scale(1.2);
@@ -69,7 +72,6 @@ figure.shiki {
69
72
  user-select: none;
70
73
  overflow: hidden;
71
74
  position: relative;
72
-
73
75
  > .left {
74
76
  gap: 5px;
75
77
  display: flex;
@@ -95,17 +97,12 @@ figure.shiki {
95
97
  .shiki-tools > .right > .copy-notice {
96
98
  position: absolute;
97
99
  white-space: nowrap;
98
- opacity: 0;
99
100
  visibility: hidden;
100
101
  z-index: 1000;
101
102
  padding: 0 5px 0 0;
102
103
  transform: translate(-110%);
103
- transition:
104
- opacity 0.2s ease,
105
- visibility 0.2s ease;
106
-
107
- &[style*="opacity: 1"] {
108
- opacity: 1;
104
+ transition: visibility 0.2s ease;
105
+ &.show {
109
106
  visibility: visible;
110
107
  }
111
108
  }
@@ -122,7 +119,6 @@ figure.shiki {
122
119
  border-radius: 50%;
123
120
  margin-left: 0.5em;
124
121
  position: relative;
125
-
126
122
  &.red {
127
123
  background-color: var(--red);
128
124
  }
@@ -157,7 +153,6 @@ figure.shiki {
157
153
  align-items: center;
158
154
  font-size: 1em;
159
155
  cursor: pointer;
160
-
161
156
  > iconify-icon {
162
157
  padding: 6px 0;
163
158
  animation: code-expand-pulse 1.2s infinite;
@@ -172,7 +167,6 @@ figure.shiki {
172
167
  pre.shiki {
173
168
  background: var(--mantle);
174
169
  padding: 0.6em;
175
-
176
170
  > code {
177
171
  text-align: left;
178
172
  counter-reset: step;
@@ -217,7 +211,6 @@ span.line {
217
211
  display: block;
218
212
  width: fit-content;
219
213
  min-width: 100%;
220
-
221
214
  &:before {
222
215
  content: counter(step);
223
216
  counter-increment: step;
@@ -232,7 +225,6 @@ span.line {
232
225
  span.line.diff {
233
226
  &.remove {
234
227
  background-color: hsl(from var(--red) h s l / 0.2);
235
-
236
228
  &:before {
237
229
  content: "-";
238
230
  color: var(--red);
@@ -241,7 +233,6 @@ span.line.diff {
241
233
 
242
234
  &.add {
243
235
  background-color: hsl(from var(--green) h s l / 0.2);
244
-
245
236
  &:before {
246
237
  content: "+";
247
238
  color: var(--green);
@@ -251,7 +242,6 @@ span.line.diff {
251
242
 
252
243
  span.line.highlighted {
253
244
  background-color: hsl(from var(--blue) h s l / 0.2);
254
-
255
245
  &.error {
256
246
  background-color: hsl(from var(--red) h s l / 0.2);
257
247
  }
@@ -474,15 +464,10 @@ pre.shiki.has-focused > code {
474
464
 
475
465
  ._sk_91qhgb {
476
466
  color: #7c7f93;
477
- --shiki-light-font-style: italic;
478
467
  --shiki-dark: #9399b2;
479
- --shiki-dark-font-style: italic;
480
468
  --shiki-nord: #616e88;
481
- --shiki-nord-font-style: inherit;
482
469
  --shiki-tokyo: #51597d;
483
- --shiki-tokyo-font-style: italic;
484
470
  --shiki-rose: #6e6a86;
485
- --shiki-rose-font-style: italic;
486
471
  }
487
472
 
488
473
  ._sk_zgl5lx {