hexo-theme-solitude 2.0.3 → 2.0.5

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 (52) hide show
  1. package/.github/FUNDING.yml +3 -3
  2. package/.github/ISSUE_TEMPLATE/config.yml +1 -5
  3. package/README.md +35 -31
  4. package/README_zh-Hans.md +25 -21
  5. package/README_zh-Hant.md +28 -24
  6. package/SECURITY.md +1 -1
  7. package/_config.yml +453 -306
  8. package/languages/default.yml +13 -13
  9. package/languages/en.yml +14 -13
  10. package/layout/archive.pug +11 -4
  11. package/layout/includes/footer.pug +6 -5
  12. package/layout/includes/inject/body.pug +4 -4
  13. package/layout/includes/loading.pug +14 -2
  14. package/layout/includes/widgets/home/categoryBar.pug +2 -1
  15. package/package.json +8 -5
  16. package/scripts/event/merge_config.js +1 -0
  17. package/scripts/filter/post_image.js +0 -1
  18. package/scripts/helper/stylus.js +1 -1
  19. package/scripts/tags/mermaid.js +1 -1
  20. package/scripts/tags/tabs.js +11 -15
  21. package/source/css/_layout/aside.styl +1 -1
  22. package/source/css/_layout/header.styl +22 -15
  23. package/source/css/_tags/mermaid.styl +1 -1
  24. package/source/css/_tags/tabs.styl +1 -1
  25. package/source/css/var.styl +1 -1
  26. package/source/js/main.js +3 -2
  27. package/.github/persona.avif +0 -0
  28. package/scripts/tags/btns.js +0 -35
  29. package/scripts/tags/button.js +0 -21
  30. package/scripts/tags/bvideo.js +0 -7
  31. package/scripts/tags/checkbox.js +0 -51
  32. package/scripts/tags/fold.js +0 -13
  33. package/scripts/tags/image.js +0 -75
  34. package/scripts/tags/inline-image.js +0 -12
  35. package/scripts/tags/label.js +0 -10
  36. package/scripts/tags/link.js +0 -50
  37. package/scripts/tags/media.js +0 -29
  38. package/scripts/tags/note.js +0 -13
  39. package/scripts/tags/span.js +0 -17
  40. package/scripts/tags/timeline.js +0 -22
  41. package/source/css/_tags/btns.styl +0 -212
  42. package/source/css/_tags/button.styl +0 -40
  43. package/source/css/_tags/checkbox.styl +0 -204
  44. package/source/css/_tags/fold.styl +0 -65
  45. package/source/css/_tags/image.styl +0 -4
  46. package/source/css/_tags/index.styl +0 -63
  47. package/source/css/_tags/label.styl +0 -4
  48. package/source/css/_tags/link.styl +0 -59
  49. package/source/css/_tags/media.styl +0 -57
  50. package/source/css/_tags/note.styl +0 -104
  51. package/source/css/_tags/span.styl +0 -34
  52. package/source/css/_tags/timeline.styl +0 -82
@@ -1,75 +0,0 @@
1
- 'use strict';
2
-
3
- hexo.extend.tag.register('image', function(args) {
4
- args = args.join(' ').split(',');
5
- let url = args[0].trim();
6
- let alt = '';
7
- let bg = '';
8
- let style = '';
9
- if (args.length > 1) {
10
- for (let i = 1; i < args.length; i++) {
11
- let tmp = args[i].trim();
12
- if (tmp.includes('alt=')) {
13
- alt = tmp.substring(4, tmp.length);
14
- } else if (tmp.includes('width=')) {
15
- style += 'width:' + tmp.substring(6, tmp.length) + ';';
16
- } else if (tmp.includes('height=')) {
17
- style += 'height:' + tmp.substring(7, tmp.length) + ';';
18
- } else if (tmp.includes('bg=')) {
19
- bg = tmp.substring(3, tmp.length);
20
- }
21
- }
22
- }
23
- function img(url, alt, style) {
24
- let img = '';
25
- img += '<img class="img" src="' + url + '"';
26
- if (alt.length > 0) {
27
- img += ' alt="' + alt + '"';
28
- }
29
- if (style.length > 0) {
30
- img += ' style="' + style + '"';
31
- }
32
- img += '/>';
33
- return img;
34
- }
35
-
36
- let ret = '';
37
- ret += '<div class="img-wrap">';
38
- ret += '<div class="img-bg"';
39
- if (bg.length > 0) {
40
- ret += ' style="background:' + bg + '"';
41
- }
42
- ret += '>';
43
- ret += img(url, alt, style);
44
- ret += '</div>';
45
-
46
- if (alt.length > 0) {
47
- ret += '<span class="image-caption">' + alt + '</span>';
48
- }
49
-
50
- ret += '</div>';
51
- return ret;
52
- });
53
-
54
- hexo.extend.tag.register('inlineimage', function(args) {
55
- args = args.join(' ').split(', ');
56
- let url = args[0].trim();
57
- let ret = '';
58
- ret += '<img no-lazy class="inline" src="' + url + '"';
59
- let style = '';
60
- if (args.length > 1) {
61
- for (let i = 1; i < args.length; i++) {
62
- let tmp = args[i].trim();
63
- if (tmp.includes('height=')) {
64
- style += 'height:' + tmp.substring(7, tmp.length) + ';';
65
- }
66
- }
67
- }
68
- if (style.length > 0) {
69
- ret += ' style="' + style + '"';
70
- } else {
71
- ret += ' style="height:1.5em"';
72
- }
73
- ret += '/>';
74
- return ret;
75
- });
@@ -1,12 +0,0 @@
1
- 'use strict'
2
-
3
- const urlFor = require('hexo-util').url_for.bind(hexo)
4
-
5
- function inlineImg (args) {
6
- const img = args[0]
7
- const height = args[1] ? `style="height:${args[1]}"` : ''
8
-
9
- return `<img class="inline-img" src="${urlFor(img)}" ${height}/>`
10
- }
11
-
12
- hexo.extend.tag.register('inlineimage', inlineImg, { ends: false })
@@ -1,10 +0,0 @@
1
- 'use strict'
2
-
3
- function addLabel (args, content) {
4
- const text = args[0]
5
- const className = args[1] || 'default'
6
-
7
- return `<label class="hl-label bg-${className}">${text}</label> `
8
- }
9
-
10
- hexo.extend.tag.register('label', addLabel, { ends: false })
@@ -1,50 +0,0 @@
1
- const urlFor = require("hexo-util").url_for.bind(hexo);
2
- function link(args) {
3
- const themeConfig = hexo.theme.config;
4
- args = args.join(" ").split(",");
5
- let title = args[0];
6
- let sitename = args[1];
7
- let link = args[2];
8
- let imgUrl = args[3] || "";
9
- let favicon = themeConfig.site.siteIcon;
10
- let insideStation = false;
11
-
12
- link = link.trim();
13
- imgUrl = imgUrl.trim();
14
- favicon = favicon.trim();
15
-
16
- try {
17
- new URL(link);
18
- insideStation = false;
19
- } catch (err) {
20
- insideStation = true;
21
- }
22
-
23
- if ((imgUrl === "") && (insideStation === false)) {
24
- let domain = new URL(link).hostname
25
- if (domain) {
26
- imgUrl_online = "https://api.iowen.cn/favicon/" + domain + ".png";
27
- }
28
- }
29
-
30
- return `<a class="tag-link" target="_blank" href="${urlFor(link)}">
31
- <div class="tag-link-tips">${insideStation ? "站内链接" : "引用站外链接"
32
- }</div>
33
- <div class="tag-link-bottom">
34
- <div class="tag-link-left" style="${insideStation
35
- ? `background-image: url(${imgUrl ? imgUrl : favicon})`
36
- : `background-image: url(${imgUrl ? imgUrl : imgUrl_online})`
37
- }">
38
- <i class="solitude st-link-m-line" style="${`(imgUrl) || (imgUrl_online)` ? "display: none" : ""
39
- }"></i>
40
- </div>
41
- <div class="tag-link-right">
42
- <div class="tag-link-title">${title}</div>
43
- <div class="tag-link-sitename">${sitename}</div>
44
- </div>
45
- <i class="solitude st-arrow-right-bold"></i>
46
- </div>
47
- </a>`;
48
- }
49
-
50
- hexo.extend.tag.register("link", link, { ends: false });
@@ -1,29 +0,0 @@
1
- 'use strict';
2
-
3
- function postAudio(args) {
4
- let src = args[0].trim()
5
- return `<div class="audio"><audio controls preload><source src='${src}' type='audio/mp3'>Your browser does not support the audio tag.</audio></div>`;
6
- }
7
-
8
- function postVideo(args) {
9
- let src = args[0].trim()
10
- return `<div class="video"><video controls preload><source src='${src}' type='video/mp4'>Your browser does not support the video tag.</video></div>`;
11
- }
12
-
13
- function postVideos(args, content) {
14
- args = args.join(' ').split(',')
15
- var cls = args[0]
16
- if (cls.length > 0) {
17
- cls = ' ' + cls
18
- }
19
- var col = Number(args[1]) || 0;
20
- if (col > 0) {
21
- return `<div class="videos${cls}" col='${col}'>${content}</div>`
22
- } else {
23
- return `<div class="videos${cls}">${content}</div>`
24
- }
25
- }
26
-
27
- hexo.extend.tag.register('audio', postAudio);
28
- hexo.extend.tag.register('video', postVideo);
29
- hexo.extend.tag.register('videos', postVideos, {ends: true});
@@ -1,13 +0,0 @@
1
- /**
2
- * note.js
3
- * transplant from hexo-theme-next
4
- * modified by @efu
5
- */
6
-
7
- hexo.extend.tag.register('note', function (types, content) {
8
- let type = ""
9
- for (let i = 0; i < types.length; i++) {
10
- type += " " + types[i]
11
- }
12
- return `<div class="note ${type}">${hexo.render.renderSync({text: content, engine: 'markdown'})}</div>`
13
- }, {ends: true});
@@ -1,17 +0,0 @@
1
- 'use strict';
2
-
3
- function postP(args) {
4
- args = args.join(' ').split(',')
5
- let p0 = args[0].trim()
6
- let p1 = args[1].trim()
7
- return `<p class='p ${p0}'>${p1}</p>`;
8
- }
9
- function postSpan(args) {
10
- args = args.join(' ').split(',')
11
- let p0 = args[0].trim()
12
- let p1 = args[1].trim()
13
- return `<span class='p ${p0}'>${p1}</span>`;
14
- }
15
-
16
- hexo.extend.tag.register('p', postP);
17
- hexo.extend.tag.register('span', postSpan);
@@ -1,22 +0,0 @@
1
- "use strict"
2
-
3
- function postTimeline(args, content) {
4
- if (args.length > 0) {
5
- return `<div class="timeline"><h1>${args}</h1>${content}</div>`;
6
- } else {
7
- return `<div class="timeline">${content}</div>`;
8
- }
9
- }
10
-
11
- function postTimenode(args, content) {
12
- args = args.join(" ").split(",");
13
- var time = args[0];
14
- return `<div class="timenode"><div class="meta"><p>${time}</p></div><div class="body">${hexo.render
15
- .renderSync({ text: content, engine: "markdown" })
16
- .split("\n")
17
- .join("")}</div></div>`;
18
- }
19
-
20
- hexo.extend.tag.register("timeline", postTimeline, { ends: true });
21
-
22
- hexo.extend.tag.register("timenode", postTimenode, { ends: true });
@@ -1,212 +0,0 @@
1
- [data-theme="dark"]
2
- div
3
- &.btns
4
- filter brightness(0.7)
5
- a
6
- background 0 0
7
- div
8
- &.btns
9
- margin 0 -8px
10
- display flex
11
- flex-wrap wrap
12
- align-items flex-start
13
- overflow visible
14
- line-height 1.8
15
- b
16
- font-size 0.875rem
17
- &.wide
18
- & > a
19
- padding-left 32px
20
- padding-right 32px
21
- &.fill
22
- & > a
23
- flex-grow 1
24
- width auto
25
- &.around
26
- justify-content space-around
27
- &.center
28
- justify-content center
29
- &.grid2
30
- & > a
31
- width calc(100% / 2 - 16px)
32
- &.grid3
33
- & > a
34
- width calc(100% / 3 - 16px)
35
- &.grid4
36
- & > a
37
- width calc(100% / 4 - 16px)
38
- &.grid5
39
- & > a
40
- width calc(100% / 5 - 16px)
41
- a
42
- transition all 0.28s ease
43
- -moz-transition all 0.28s ease
44
- -webkit-transition all 0.28s ease
45
- -o-transition all 0.28s ease
46
- margin 8px
47
- margin-top calc(1.25 * 16px + 32px)
48
- min-width 120px
49
- font-weight bold
50
- display flex
51
- justify-content flex-start
52
- align-content center
53
- align-items center
54
- flex-direction column
55
- padding 8px
56
- text-align center
57
- background #f6f6f6
58
- border-radius 4px
59
- border-bottom none!important
60
- & > i
61
- background #2196f3!important
62
- &:first-child
63
- color #fff
64
- background #2196f3
65
- b
66
- font-weight bold
67
- line-height 1.3
68
- img
69
- margin 0.4em auto !important
70
- &:not([href])
71
- cursor default
72
- color inherit
73
- a[href]:hover
74
- background: var(--efu-main)
75
- color: var(--efu-white) !important
76
- & > i
77
- &:first-child
78
- background: var(--efu-main)
79
-
80
- div.btns,
81
- div.btns p,
82
- div.btns a
83
- font-size 0.8125rem
84
- color #555
85
-
86
- @media screen and (max-width: 1200px)
87
- div
88
- &.btns
89
- &.grid2
90
- & > a
91
- width calc(100% / 2 - 16px)
92
-
93
- @media screen and (max-width: 768px)
94
- div
95
- &.btns
96
- &.grid2
97
- & > a
98
- width calc(100% / 2 - 16px)
99
-
100
- @media screen and (max-width: 500px)
101
- div
102
- &.btns
103
- &.grid2
104
- & > a
105
- width calc(100% / 1 - 16px)
106
-
107
- @media screen and (max-width: 1200px)
108
- div
109
- &.btns
110
- &.grid3
111
- & > a
112
- width calc(100% / 3 - 16px)
113
-
114
- @media screen and (max-width: 768px)
115
- div
116
- &.btns
117
- &.grid3
118
- & > a
119
- width calc(100% / 3 - 16px)
120
-
121
- @media screen and (max-width: 500px)
122
- div
123
- &.btns
124
- &.grid3
125
- & > a
126
- width calc(100% / 1 - 16px)
127
-
128
- @media screen and (max-width: 1200px)
129
- div
130
- &.btns
131
- &.grid4
132
- & > a
133
- width calc(100% / 3 - 16px)
134
-
135
- @media screen and (max-width: 768px)
136
- div
137
- &.btns
138
- &.grid4
139
- & > a
140
- width calc(100% / 3 - 16px)
141
-
142
- @media screen and (max-width: 500px)
143
- div
144
- &.btns
145
- &.grid4
146
- & > a
147
- width calc(100% / 2 - 16px)
148
-
149
- @media screen and (max-width: 1200px)
150
- div
151
- &.btns
152
- &.grid5
153
- & > a
154
- width calc(100% / 4 - 16px)
155
-
156
- @media screen and (max-width: 768px)
157
- div
158
- &.btns
159
- &.grid5
160
- & > a
161
- width calc(100% / 3 - 16px)
162
-
163
- @media screen and (max-width: 500px)
164
- div
165
- &.btns
166
- &.grid5
167
- & > a
168
- width calc(100% / 2 - 16px)
169
-
170
- div.btns a > img:first-child,
171
- div.btns a > i:first-child
172
- transition all 0.28s ease
173
- -moz-transition all 0.28s ease
174
- -webkit-transition all 0.28s ease
175
- -o-transition all 0.28s ease
176
- height 64px
177
- width 64px
178
- box-shadow 0 1px 2px 0 rgba(0, 0, 0, 0.1)
179
- margin 16px 8px 4px 8px
180
- margin-top calc(-1.25 * 16px - 32px)
181
- border 2px solid #fff
182
- background #fff
183
- line-height 60px
184
- font-size 28px
185
-
186
- div.btns a > img:first-child.auto,
187
- div.btns a > i:first-child.auto
188
- width auto
189
-
190
- div.btns a p,
191
- div.btns a b
192
- margin 0.25em
193
- font-weight normal
194
- line-height 1.25
195
- word-wrap break-word
196
-
197
- div.btns a[href]:hover,
198
- div.btns a[href]:hover b
199
- color #ff5722
200
-
201
- div.btns a[href]:hover > img:first-child,
202
- div.btns a[href]:hover > i:first-child
203
- transform scale(1.1) translateY(-8px)
204
- box-shadow 0 4px 8px 0 rgba(0, 0, 0, 0.1)
205
-
206
- div.btns.circle a > img:first-child,
207
- div.btns.circle a > i:first-child
208
- border-radius 32px
209
-
210
- div.btns.rounded a > img:first-child,
211
- div.btns.rounded a > i:first-child
212
- border-radius 16px
@@ -1,40 +0,0 @@
1
- #article-container
2
- .btn-sco
3
- position relative
4
- padding 8px 15px
5
- text-transform uppercase
6
- border var(--style-border)
7
- border-radius 10px
8
- overflow hidden
9
- transition all 0.3s
10
- display inline-flex
11
- justify-content center
12
- align-items center
13
-
14
- &.outline
15
- background var(--efu-white)
16
- color var(--efu-main)
17
- border-color var(--efu-main)
18
-
19
- &:hover
20
- background var(--efu-main)
21
- color var(--efu-white)
22
- border-color var(--efu-main)
23
-
24
- i
25
- transition all 0.3s
26
- padding-right 8px
27
-
28
- span
29
- transition all 0.3s
30
-
31
- &:hover
32
- background var(--efu-main)
33
-
34
- span
35
- transform all 0.3s ease-in-out
36
- color var(--efu-white)
37
-
38
- i
39
- transform all 0.3s ease-in-out
40
- color var(--efu-white)
@@ -1,204 +0,0 @@
1
- .checkbox
2
- display flex
3
- align-items center
4
-
5
- input
6
- appearance none
7
- position relative
8
- height 16px
9
- width 16px
10
- transition all .15s ease-out 0s
11
- cursor pointer
12
- display inline-block
13
- outline 0
14
- border-radius 2px
15
- flex-shrink 0
16
- margin-right 8px
17
- border 2px solid #2196f3
18
- pointer-events none
19
-
20
- &[type=checkbox]
21
- &:before
22
- left 1px
23
- top 5px
24
- width 0
25
- height 2px
26
- transition all .2s ease-in
27
- transform rotate(45deg)
28
-
29
- &:after
30
- right 7px
31
- bottom 3px
32
- width 2px
33
- height 0
34
- transition all .2s ease-out
35
- transform rotate(40deg)
36
- transition-delay .25s
37
-
38
- &:checked
39
- background #2196f3
40
-
41
- &:checked:before
42
- left 0
43
- top 7px
44
- width 6px
45
- height 2px
46
-
47
- &:checked:after
48
- right 3px
49
- bottom 1px
50
- width 2px
51
- height 10px
52
-
53
- &.minus
54
- input[type=checkbox]:before
55
- transform rotate(0)
56
- left 1px
57
- top 5px
58
- width 0
59
- height 2px
60
-
61
- input[type=checkbox]:after
62
- transform rotate(0)
63
- left 1px
64
- top 5px
65
- width 0
66
- height 2px
67
-
68
- input[type=checkbox]:checked:before
69
- left 1px
70
- top 5px
71
- width 10px
72
- height 2px
73
-
74
- input[type=checkbox]:checked:after
75
- left 1px
76
- top 5px
77
- width 10px
78
- height 2px
79
-
80
- &.plus
81
- input[type=checkbox]:before
82
- transform rotate(0)
83
- left 1px
84
- top 5px
85
- width 0
86
- height 2px
87
-
88
- input[type=checkbox]:after
89
- transform rotate(0)
90
- left 5px
91
- top 1px
92
- width 2px
93
- height 0
94
-
95
- input[type=checkbox]:checked:before
96
- left 1px
97
- top 5px
98
- width 10px
99
- height 2px
100
-
101
- input[type=checkbox]:checked:after
102
- left 5px
103
- top 1px
104
- width 2px
105
- height 10px
106
-
107
- &.times
108
- input[type=checkbox]:before
109
- transform rotate(45deg)
110
- left 3px
111
- top 1px
112
- width 0
113
- height 2px
114
-
115
- input[type=checkbox]:after
116
- transform rotate(135deg)
117
- right 3px
118
- top 1px
119
- width 0
120
- height 2px
121
-
122
- input[type=checkbox]:checked:before
123
- left 1px
124
- top 5px
125
- width 10px
126
- height 2px
127
-
128
- input[type=checkbox]:checked:after
129
- right 1px
130
- top 5px
131
- width 10px
132
- height 2px
133
-
134
- input[type=radio]
135
- border-radius 50%
136
-
137
- &:before
138
- content ""
139
- display block
140
- width 8px
141
- height 8px
142
- border-radius 50%
143
- margin 2px
144
- transform scale(0)
145
- transition all .25s ease-out
146
-
147
- &:checked:before
148
- transform scale(1)
149
- background var(--text-bg-hover)
150
-
151
- &.red input
152
- border-color #fe5f58
153
-
154
- &[type=checkbox]:checked
155
- background #fe5f58
156
-
157
- &[type=radio]:checked:before
158
- background #fe5f58
159
-
160
- &.green input
161
- border-color #3dc550
162
-
163
- &[type=checkbox]:checked
164
- background #3dc550
165
-
166
- &[type=radio]:checked:before
167
- background #3dc550
168
-
169
- &.yellow input
170
- border-color #ffbd2b
171
-
172
- &[type=checkbox]:checked
173
- background #ffbd2b
174
-
175
- &[type=radio]:checked:before
176
- background #ffbd2b
177
-
178
- &.cyan input
179
- border-color #1bcdfc
180
-
181
- &[type=checkbox]:checked
182
- background #1bcdfc
183
-
184
- &[type=radio]:checked:before
185
- background #1bcdfc
186
-
187
- &.blue input
188
- border-color #2196f3
189
-
190
- &[type=checkbox]:checked
191
- background #2196f3
192
-
193
- &[type=radio]:checked:before
194
- background #2196f3
195
-
196
- p
197
- display: inline-block
198
- margin-top 2px !important
199
- margin-bottom 0 !important
200
-
201
- input[type=checkbox]:after, input[type=checkbox]:before
202
- position absolute
203
- content ""
204
- background #fff