hexo-theme-shokax 0.2.6 → 0.2.8
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.
- package/CONTRIBUTING.md +1 -5
- package/LICENSE-shoka +21 -0
- package/_config.yml +8 -1
- package/layout/_mixin/comment.pug +3 -3
- package/layout/_mixin/widgets.pug +3 -2
- package/layout/_partials/layout.pug +3 -1
- package/layout/_partials/post/footer.pug +5 -4
- package/package.json +6 -13
- package/scripts/generaters/script.js +0 -1
- package/scripts/helpers/asset.js +23 -2
- package/source/js/_app/components.js +0 -2
- package/source/js/_app/page.js +8 -17
- package/source/css/_common/components/third-party/valine.styl +0 -548
package/CONTRIBUTING.md
CHANGED
|
@@ -14,14 +14,10 @@
|
|
|
14
14
|
1. 您同意我们在未来进行授权许可更改时包含您所贡献的代码
|
|
15
15
|
2. 您有对于 shokaX 所使用的相关技术和 github PR 及 actions 的基础了解
|
|
16
16
|
|
|
17
|
-
对于代码修改的说明:
|
|
18
|
-
1. `page js` 仅需要修改ts文件,`hexo script` 请修改js文件
|
|
19
|
-
|
|
20
17
|
有关提交的说明:
|
|
21
18
|
1. 您在提交时的`commit message`应描述其改动
|
|
22
19
|
2. 如果您提交的代码中包括图片资源,建议使用`webp`或`avif`格式
|
|
23
|
-
3.
|
|
24
|
-
4. 条件允许的情况下代码应当附有注释以便维护
|
|
20
|
+
3. 条件允许的情况下代码应当附有注释以便维护
|
|
25
21
|
|
|
26
22
|
有关审查(Review)的说明:
|
|
27
23
|
1. 您在 PR 时应打开允许维护者修改 PR,以便我们进行修改
|
package/LICENSE-shoka
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2020 霜月琉璃
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/_config.yml
CHANGED
|
@@ -74,6 +74,13 @@ loader:
|
|
|
74
74
|
start: true # 进入页面时显示加载动画
|
|
75
75
|
switch: false # 切换页面时显示加载动画
|
|
76
76
|
|
|
77
|
+
# 使用polyfill.io自动处理浏览器兼容问题
|
|
78
|
+
polyfill:
|
|
79
|
+
enable: true
|
|
80
|
+
features:
|
|
81
|
+
- default
|
|
82
|
+
- fetch
|
|
83
|
+
|
|
77
84
|
# 显示的动画(烟花)
|
|
78
85
|
fireworks:
|
|
79
86
|
enable: true
|
|
@@ -173,7 +180,7 @@ waline:
|
|
|
173
180
|
- mail
|
|
174
181
|
wordLimit: 0 # 字数限制,0为不限制
|
|
175
182
|
pageSize: 10 # 每页评论条数
|
|
176
|
-
pageview:
|
|
183
|
+
pageview: false # 是否开启浏览量统计,可独立开启
|
|
177
184
|
|
|
178
185
|
# https://github.com/gitalk/gitalk/blob/master/readme-cn.md
|
|
179
186
|
gitalk:
|
|
@@ -13,7 +13,7 @@ mixin CommentRender()
|
|
|
13
13
|
})
|
|
14
14
|
}, 1000)
|
|
15
15
|
else if wl
|
|
16
|
-
div(class="
|
|
16
|
+
div(class="wrap" id="wcomments")
|
|
17
17
|
- var locale = JSON.stringify(theme.waline.locale)
|
|
18
18
|
- var emoji = JSON.stringify(theme.waline.emoji)
|
|
19
19
|
- var meta = JSON.stringify(theme.waline.meta)
|
|
@@ -38,7 +38,7 @@ mixin CommentRender()
|
|
|
38
38
|
});
|
|
39
39
|
}, 1000)
|
|
40
40
|
else if gt
|
|
41
|
-
div(class="
|
|
41
|
+
div(class="wrap" id="gtcomments")
|
|
42
42
|
script(type="text/javascript" data-pjax).
|
|
43
43
|
const gproxy = theme.gitalk.proxy || undefined
|
|
44
44
|
const gitalk = new Gitalk({
|
|
@@ -53,7 +53,7 @@ mixin CommentRender()
|
|
|
53
53
|
});
|
|
54
54
|
gitalk.render("gtcomments")
|
|
55
55
|
else if gs
|
|
56
|
-
div(class="
|
|
56
|
+
div(class="wrap giscus" id="gscomments")
|
|
57
57
|
script( src="https://giscus.app/client.js"
|
|
58
58
|
data-repo="#{theme.giscus.repo}"
|
|
59
59
|
data-repo-id="#{theme.giscus.repoId}"
|
|
@@ -10,6 +10,7 @@ mixin field(item)
|
|
|
10
10
|
|
|
11
11
|
mixin WRender(item)
|
|
12
12
|
- var tk = theme?.twikoo?.enable
|
|
13
|
+
- var waline = theme.waline.enable
|
|
13
14
|
if theme.widgets.random_posts
|
|
14
15
|
div(class="rpost pjax")
|
|
15
16
|
h2
|
|
@@ -22,10 +23,10 @@ mixin WRender(item)
|
|
|
22
23
|
div(class="rpost pjax")
|
|
23
24
|
h2 最新评论
|
|
24
25
|
ul(class="leancloud-recent-comment" id="new-comment")
|
|
25
|
-
if tk
|
|
26
|
+
if tk || waline
|
|
26
27
|
li(v-for="com in coms" class="item")
|
|
27
28
|
a(v-bind:href="com.href" data-pjax-state="data-pjax-state")
|
|
28
|
-
span(class="breadcrumb") {{com.nick}}@{{com.time}}
|
|
29
|
+
span(class="breadcrumb") {{com.nick}} @ {{com.time}}
|
|
29
30
|
span {{com.text}}
|
|
30
31
|
br
|
|
31
32
|
|
|
@@ -108,7 +108,9 @@ html(lang=page.language?page.language:config.language, style=theme.grayMode ? 'f
|
|
|
108
108
|
]
|
|
109
109
|
};
|
|
110
110
|
|
|
111
|
-
|
|
111
|
+
if theme.polyfill.enable
|
|
112
|
+
script(src=`https://polyfill.io/v3/polyfill.min.js?features=${theme.polyfill.features}`)
|
|
113
|
+
|
|
112
114
|
if theme.advVendors.enable
|
|
113
115
|
each i in _list_vendor_js()
|
|
114
116
|
!= _adv_vendor_js(i)
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
div(class="meta")
|
|
2
2
|
if date(post.date) != date(post.updated) || time(post.date) != time(post.updated)
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
if theme.twikoo.enable || theme.waline.pageview
|
|
4
|
+
span(class="icon")
|
|
5
|
+
i(class="ic i-eye")
|
|
6
|
+
span 此文章已被阅读次数:
|
|
7
|
+
span(id="twikoo_visitors" class="waline-pageview-count" data-path=post.path) 正在加载...
|
|
7
8
|
span(class="item")
|
|
8
9
|
span(class="icon")
|
|
9
10
|
i(class="ic i-calendar-check")
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hexo-theme-shokax",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.8",
|
|
4
4
|
"description": "a hexo theme based on shoka",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"repository": "https://github.com/theme-shoka-x/hexo-theme-shokaX",
|
|
@@ -8,12 +8,10 @@
|
|
|
8
8
|
"license": "GPL-3.0-or-later",
|
|
9
9
|
"scripts": {
|
|
10
10
|
"test": "tsc",
|
|
11
|
-
"build": "pnpm install && tsc"
|
|
12
|
-
"docs:dev": "vuepress dev docs",
|
|
13
|
-
"docs:build": "vuepress build docs"
|
|
11
|
+
"build": "pnpm install && tsc"
|
|
14
12
|
},
|
|
15
13
|
"devDependencies": {
|
|
16
|
-
|
|
14
|
+
|
|
17
15
|
"@types/fancybox": "^3.5.3",
|
|
18
16
|
"@types/hexo": "^3.8.8",
|
|
19
17
|
"@types/jquery": "^3.5.16",
|
|
@@ -22,9 +20,7 @@
|
|
|
22
20
|
"@types/node": "^20.1.0",
|
|
23
21
|
"@typescript-eslint/eslint-plugin": "^5.59.0",
|
|
24
22
|
"@typescript-eslint/parser": "^5.59.0",
|
|
25
|
-
|
|
26
|
-
"@vuepress/plugin-docsearch": "2.0.0-beta.61",
|
|
27
|
-
"algoliasearch": "^4.17.0",
|
|
23
|
+
|
|
28
24
|
"eslint": "^8.39.0",
|
|
29
25
|
"eslint-config-standard": "^17.0.0",
|
|
30
26
|
"eslint-plugin-import": "^2.27.5",
|
|
@@ -37,12 +33,9 @@
|
|
|
37
33
|
"theme-shokax-anime": "^0.0.4",
|
|
38
34
|
"theme-shokax-pjax": "^0.0.2",
|
|
39
35
|
"typescript": "^5.0.4",
|
|
40
|
-
"vue": "^3.
|
|
41
|
-
"vuepress": "2.0.0-beta.61",
|
|
42
|
-
"vuepress-plugin-sitemap2": "2.0.0-beta.208"
|
|
36
|
+
"vue": "^3.3.4"
|
|
43
37
|
},
|
|
44
38
|
"dependencies": {
|
|
45
|
-
"js-yaml": "^4.1.0"
|
|
46
|
-
"sass": "^1.62.0"
|
|
39
|
+
"js-yaml": "^4.1.0"
|
|
47
40
|
}
|
|
48
41
|
}
|
package/scripts/helpers/asset.js
CHANGED
|
@@ -41,12 +41,33 @@ hexo.extend.helper.register('_new_comments', function (mode) {
|
|
|
41
41
|
else if (mode === 'waline') {
|
|
42
42
|
return `
|
|
43
43
|
<script type="module" data-pjax>
|
|
44
|
+
let items = []
|
|
44
45
|
import { RecentComments } from 'https://unpkg.com/@waline/client@v2/dist/waline.mjs'
|
|
45
46
|
RecentComments({
|
|
46
|
-
el: '#new-comment',
|
|
47
47
|
serverURL: '${hexo.theme.config.waline.serverURL.replace(/\/+$/, '')}',
|
|
48
48
|
count: 10,
|
|
49
|
-
})
|
|
49
|
+
}).then(({ comments }) => {
|
|
50
|
+
comments.forEach(function (item) {
|
|
51
|
+
let cText = (item.orig.length > 50) ? item.orig.substring(0,50)+'...' : item.orig
|
|
52
|
+
item.url = item.url !== '/' ? '/' + item.url : item.url;
|
|
53
|
+
const siteLink = item.url + "#" + item.objectId
|
|
54
|
+
items.push({
|
|
55
|
+
href: siteLink,
|
|
56
|
+
nick: item.nick,
|
|
57
|
+
time: item.insertedAt.split('T').shift(),
|
|
58
|
+
text: cText
|
|
59
|
+
})
|
|
60
|
+
})
|
|
61
|
+
Vue.createApp({
|
|
62
|
+
data() {
|
|
63
|
+
return {
|
|
64
|
+
coms: items
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}).mount('#new-comment')
|
|
68
|
+
}).catch(function (err) {
|
|
69
|
+
console.error(err)
|
|
70
|
+
})
|
|
50
71
|
</script>
|
|
51
72
|
`;
|
|
52
73
|
}
|
|
@@ -156,8 +156,6 @@ const sidebarTOC = function () {
|
|
|
156
156
|
return sections.indexOf(entry.target);
|
|
157
157
|
};
|
|
158
158
|
const createIntersectionObserver = function () {
|
|
159
|
-
if (!window.IntersectionObserver)
|
|
160
|
-
return;
|
|
161
159
|
const observer = new IntersectionObserver(function (entries, observe) {
|
|
162
160
|
const index = findIndex(entries) + (diffY < 0 ? 1 : 0);
|
|
163
161
|
if (activeLock === null) {
|
package/source/js/_app/page.js
CHANGED
|
@@ -325,8 +325,6 @@ const postBeauty = function () {
|
|
|
325
325
|
});
|
|
326
326
|
const angleDown = document.querySelectorAll('.show-btn .i-angle-down');
|
|
327
327
|
if (angleDown.length) {
|
|
328
|
-
if (!window.IntersectionObserver)
|
|
329
|
-
return;
|
|
330
328
|
const io = new IntersectionObserver((entries) => {
|
|
331
329
|
entries.forEach(entry => {
|
|
332
330
|
if (entry.isIntersecting) {
|
|
@@ -408,20 +406,15 @@ const loadComments = function () {
|
|
|
408
406
|
else {
|
|
409
407
|
goToComment.display('');
|
|
410
408
|
}
|
|
411
|
-
|
|
409
|
+
const io = new IntersectionObserver(function (entries, observer) {
|
|
410
|
+
const entry = entries[0];
|
|
412
411
|
vendorCss('valine');
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
transition($dom('#comments'), 'bounceUpIn');
|
|
420
|
-
observer.disconnect();
|
|
421
|
-
}
|
|
422
|
-
});
|
|
423
|
-
io.observe(element);
|
|
424
|
-
}
|
|
412
|
+
if (entry.isIntersecting || entry.intersectionRatio > 0) {
|
|
413
|
+
transition($dom('#comments'), 'bounceUpIn');
|
|
414
|
+
observer.disconnect();
|
|
415
|
+
}
|
|
416
|
+
});
|
|
417
|
+
io.observe(element);
|
|
425
418
|
};
|
|
426
419
|
const algoliaSearch = function (pjax) {
|
|
427
420
|
if (CONFIG.search === null) {
|
|
@@ -563,8 +556,6 @@ const domInit = function () {
|
|
|
563
556
|
});
|
|
564
557
|
}
|
|
565
558
|
const createIntersectionObserver = function () {
|
|
566
|
-
if (!window.IntersectionObserver)
|
|
567
|
-
return;
|
|
568
559
|
new IntersectionObserver(([entry]) => {
|
|
569
560
|
if (entry.isIntersecting) {
|
|
570
561
|
document.querySelectorAll('.parallax>use').forEach(i => {
|
|
@@ -1,548 +0,0 @@
|
|
|
1
|
-
.v {
|
|
2
|
-
&.wrap {
|
|
3
|
-
animation: none;
|
|
4
|
-
opacity: 0;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
.lozaded {
|
|
8
|
-
animation: none;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
input,
|
|
12
|
-
textarea {
|
|
13
|
-
border: none;
|
|
14
|
-
outline: none;
|
|
15
|
-
background: transparent;
|
|
16
|
-
font-size: $font-size-smallest;
|
|
17
|
-
transition: all .25s ease;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
a {
|
|
21
|
-
color: var(--color-aqua);
|
|
22
|
-
|
|
23
|
-
&:hover {
|
|
24
|
-
color: var(--primary-color);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
.text-center {
|
|
29
|
-
text-align: center;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
.text-right {
|
|
33
|
-
text-align: right;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
.float-right {
|
|
37
|
-
float: right !important;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
.pd5 {
|
|
41
|
-
padding: 5px;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
.pd10 {
|
|
45
|
-
padding: 10px;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
.vemoji, .emoji, .tk-owo-emotion {
|
|
49
|
-
max-height: 1.5rem;
|
|
50
|
-
display: inline;
|
|
51
|
-
vertical-align: middle;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
.submitting {
|
|
55
|
-
margin: 1em 0;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
.form {
|
|
59
|
-
shadow-box();
|
|
60
|
-
margin-bottom: .625rem;
|
|
61
|
-
position: relative;
|
|
62
|
-
padding: .625rem;
|
|
63
|
-
|
|
64
|
-
>.inner {
|
|
65
|
-
.auth-section {
|
|
66
|
-
display: flex;
|
|
67
|
-
padding: .3em .6em;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
+mobile-small() {
|
|
71
|
-
flex-wrap: wrap;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
.input {
|
|
75
|
-
flex: 1 1 27%;
|
|
76
|
-
width: 27%;
|
|
77
|
-
|
|
78
|
-
+mobile-small() {
|
|
79
|
-
flex: 1 1 100%;
|
|
80
|
-
padding-right: 0;
|
|
81
|
-
width: 100%;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
input {
|
|
85
|
-
padding: .625rem .3125rem;
|
|
86
|
-
width: 100%;
|
|
87
|
-
border-bottom: .0625rem dashed var(--grey-4);
|
|
88
|
-
|
|
89
|
-
&:focus {
|
|
90
|
-
border-bottom-color: var(--primary-color);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
.textarea {
|
|
96
|
-
padding: .3em .6em;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
.veditor {
|
|
100
|
-
width: 100%;
|
|
101
|
-
min-height: 8.75em;
|
|
102
|
-
font-size: $font-size-small;
|
|
103
|
-
line-height: 1.75;
|
|
104
|
-
resize: vertical;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
.btn-group {
|
|
108
|
-
padding: .625rem 0;
|
|
109
|
-
display: flex;
|
|
110
|
-
|
|
111
|
-
.i-markdown {
|
|
112
|
-
font-size: $font-size-smallest;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
.left {
|
|
116
|
-
width: 30%;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
.right {
|
|
120
|
-
width: 70%;
|
|
121
|
-
text-align: right;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
.vextra-area {
|
|
126
|
-
margin: .4em 0 .4em .5em;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
.preview-box {
|
|
131
|
-
padding: .4375rem 1.25rem;
|
|
132
|
-
font-size: $font-size-smaller;
|
|
133
|
-
shadow-box();
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
.trigger-section {
|
|
137
|
-
display: none;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
.smile-body {
|
|
142
|
-
|
|
143
|
-
img {
|
|
144
|
-
display: inline-block;
|
|
145
|
-
width: auto;
|
|
146
|
-
height: 3rem;
|
|
147
|
-
cursor: pointer;
|
|
148
|
-
padding: .5rem;
|
|
149
|
-
border-radius: .25rem;
|
|
150
|
-
transition: box-shadow .2s ease-out, background .2s ease-out;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
li.active img, img:hover {
|
|
154
|
-
background: var(--grey-2);
|
|
155
|
-
box-shadow: 1px 1px 2px var(--grey-1), -1px -1px 2px var(--grey-4), inset 8px 8px 16px var(--grey-1), inset -8px -8px 16px var(--grey-3);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
.smile-icons {
|
|
159
|
-
border-radius: .5rem;
|
|
160
|
-
margin: .3rem 0;
|
|
161
|
-
min-height: 10rem;
|
|
162
|
-
max-height: 10rem;
|
|
163
|
-
overflow: auto;
|
|
164
|
-
background: var(--grey-2);
|
|
165
|
-
padding: .5rem;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
.smile-bar {
|
|
169
|
-
li {
|
|
170
|
-
display: inline-block;
|
|
171
|
-
margin-right: .25rem;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
img {
|
|
175
|
-
width: 2.8rem;
|
|
176
|
-
height: 2.8rem;
|
|
177
|
-
background: var(--grey-2);
|
|
178
|
-
object-fit: contain;
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
.btn {
|
|
184
|
-
cursor: pointer;
|
|
185
|
-
display: inline-block;
|
|
186
|
-
margin: .5rem;
|
|
187
|
-
overflow: hidden;
|
|
188
|
-
vertical-align: middle;
|
|
189
|
-
|
|
190
|
-
&.actived .ic {
|
|
191
|
-
color: var(--primary-color);
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
.ic {
|
|
195
|
-
color: var(--grey-6);
|
|
196
|
-
transition: all .25s ease;
|
|
197
|
-
|
|
198
|
-
&:hover {
|
|
199
|
-
color: var(--color-blue);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
.cancel-reply {
|
|
205
|
-
position: absolute;
|
|
206
|
-
right: 0;
|
|
207
|
-
top: 0;
|
|
208
|
-
z-index: 1;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
.vsubmit {
|
|
212
|
-
font-size: $font-size-small;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
.msg {
|
|
217
|
-
position: absolute;
|
|
218
|
-
background: var(--grey-1-a5);
|
|
219
|
-
width: 100%;
|
|
220
|
-
height: 100%;
|
|
221
|
-
left: 0;
|
|
222
|
-
top: 0;
|
|
223
|
-
|
|
224
|
-
.alert {
|
|
225
|
-
padding: 3em 0 0 0;
|
|
226
|
-
|
|
227
|
-
.text {
|
|
228
|
-
color: var(--grey-8);
|
|
229
|
-
padding: 15px;
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
+mobile() {
|
|
234
|
-
.alert {
|
|
235
|
-
padding: 8em 0;
|
|
236
|
-
|
|
237
|
-
.text {
|
|
238
|
-
padding: 10px;
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
.info {
|
|
245
|
-
padding: .3125rem;
|
|
246
|
-
font-weight: 600;
|
|
247
|
-
font-size: $font-size-larger;
|
|
248
|
-
|
|
249
|
-
.col {
|
|
250
|
-
display: inline-block;
|
|
251
|
-
padding: 0 20px;
|
|
252
|
-
position: relative;
|
|
253
|
-
background: transparent;
|
|
254
|
-
z-index: 2;
|
|
255
|
-
|
|
256
|
-
.count {
|
|
257
|
-
font-size: 1.375rem;
|
|
258
|
-
font-weight: inherit;
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
.next {
|
|
266
|
-
.more {
|
|
267
|
-
cursor: pointer;
|
|
268
|
-
margin: 1em 0;
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
.list {
|
|
273
|
-
width: 100%;
|
|
274
|
-
}
|
|
275
|
-
.item {
|
|
276
|
-
word-break: break-all;
|
|
277
|
-
padding-top: 1.25em;
|
|
278
|
-
|
|
279
|
-
.avatar {
|
|
280
|
-
width: 3.125em;
|
|
281
|
-
height: 3.125em;
|
|
282
|
-
float: left;
|
|
283
|
-
border-radius: 50%;
|
|
284
|
-
margin-right: .7525em;
|
|
285
|
-
border: .0625rem solid var(--grey-3);
|
|
286
|
-
padding: .125em
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
&:hover .avatar {
|
|
290
|
-
animation: .8s ease-out 0s 1 normal both running shake;
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
.main {
|
|
294
|
-
overflow: hidden;
|
|
295
|
-
padding-bottom: .5em;
|
|
296
|
-
border-bottom: .0625rem dashed var(--grey-3);
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
.head, .meta {
|
|
300
|
-
color: var(--grey-5);
|
|
301
|
-
line-height: 1.8;
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
.name {
|
|
305
|
-
margin-right: .875rem;
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
.tag, .system, .time {
|
|
309
|
-
display: inline-block;
|
|
310
|
-
font-size: $font-size-smallest;
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
+mobile-small() {
|
|
314
|
-
.system span {
|
|
315
|
-
display: none;
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
.tag {
|
|
319
|
-
border-radius: .125rem;
|
|
320
|
-
color: var(--grey-1);
|
|
321
|
-
padding: 0 .3125rem;
|
|
322
|
-
margin-right: .5rem;
|
|
323
|
-
background-color: var(--color-grey);
|
|
324
|
-
|
|
325
|
-
$tagcolor = hexo-config('valine.tagColor');
|
|
326
|
-
|
|
327
|
-
for type in $tagcolor {
|
|
328
|
-
&.{slice(type, 0, 1)} {
|
|
329
|
-
background-color: unquote(slice(type, 1));
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
.at {
|
|
335
|
-
color: var(--primary-color);
|
|
336
|
-
|
|
337
|
-
&:hover {
|
|
338
|
-
color: var(--color-aqua);
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
.meta {
|
|
343
|
-
line-height: 1;
|
|
344
|
-
.at {
|
|
345
|
-
float: right;
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
.content {
|
|
350
|
-
margin-bottom: .75em;
|
|
351
|
-
padding: .625em;
|
|
352
|
-
|
|
353
|
-
> .inner {
|
|
354
|
-
font-size: $font-size-small;
|
|
355
|
-
word-wrap: break-word;
|
|
356
|
-
word-break: break-all;
|
|
357
|
-
line-height: 2;
|
|
358
|
-
position: relative;
|
|
359
|
-
|
|
360
|
-
&.expand {
|
|
361
|
-
cursor: pointer;
|
|
362
|
-
max-height: 8em;
|
|
363
|
-
|
|
364
|
-
overflow: hidden;
|
|
365
|
-
|
|
366
|
-
&::before {
|
|
367
|
-
display: block;
|
|
368
|
-
content: "";
|
|
369
|
-
position: absolute;
|
|
370
|
-
width: 100%;
|
|
371
|
-
left: 0;
|
|
372
|
-
top: 0;
|
|
373
|
-
bottom: 3.15em;
|
|
374
|
-
background: linear-gradient(180deg, var(--grey-1-a0), var(--grey-1));
|
|
375
|
-
z-index: 999;
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
&::after {
|
|
379
|
-
display: block;
|
|
380
|
-
content: attr(data-expand);
|
|
381
|
-
text-align: center;
|
|
382
|
-
position: absolute;
|
|
383
|
-
width: 100%;
|
|
384
|
-
height: 3.15em;
|
|
385
|
-
line-height: 3.15em;
|
|
386
|
-
left: 0;
|
|
387
|
-
bottom: 0;
|
|
388
|
-
z-index: 999;
|
|
389
|
-
background: var(--grey-1);
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
.form {
|
|
395
|
-
margin-top: 1rem;
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
|
|
399
|
-
&:last-child .main {
|
|
400
|
-
border-bottom: none
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
.children {
|
|
404
|
-
padding-left: 1em;
|
|
405
|
-
border-left: .0625rem dashed var(--grey-3);
|
|
406
|
-
|
|
407
|
-
.avatar {
|
|
408
|
-
width: 2.225em;
|
|
409
|
-
height: 2.225em
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
.empty {
|
|
415
|
-
padding: 20px;
|
|
416
|
-
text-align: center;
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
/************ Loading ************/
|
|
421
|
-
.spinner {
|
|
422
|
-
margin: 10px auto;
|
|
423
|
-
width: 50px;
|
|
424
|
-
height: 30px;
|
|
425
|
-
text-align: center;
|
|
426
|
-
font-size: 10px;
|
|
427
|
-
}
|
|
428
|
-
|
|
429
|
-
.spinner>div {
|
|
430
|
-
background-color: var(--primary-color);
|
|
431
|
-
height: 100%;
|
|
432
|
-
width: 6px;
|
|
433
|
-
margin-right: 3px;
|
|
434
|
-
display: inline-block;
|
|
435
|
-
animation: sk-stretchdelay 1.2s infinite ease-in-out;
|
|
436
|
-
}
|
|
437
|
-
|
|
438
|
-
.spinner .r2 {
|
|
439
|
-
animation-delay: -1.1s;
|
|
440
|
-
}
|
|
441
|
-
|
|
442
|
-
.spinner .r3 {
|
|
443
|
-
animation-delay: -1s;
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
.spinner .r4 {
|
|
447
|
-
animation-delay: -0.9s;
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
.spinner .r5 {
|
|
451
|
-
animation-delay: -0.8s;
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
@keyframes sk-stretchdelay {
|
|
455
|
-
|
|
456
|
-
0%,
|
|
457
|
-
40%,
|
|
458
|
-
100% {
|
|
459
|
-
transform: scaleY(0.4);
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
20% {
|
|
463
|
-
transform: scaleY(1);
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
|
|
468
|
-
.hljs-comment,
|
|
469
|
-
.hljs-quote {
|
|
470
|
-
color: var(--grey-5);
|
|
471
|
-
font-style: italic;
|
|
472
|
-
}
|
|
473
|
-
|
|
474
|
-
.hljs-keyword,
|
|
475
|
-
.hljs-selector-tag,
|
|
476
|
-
.hljs-subst,
|
|
477
|
-
.hljs-meta {
|
|
478
|
-
color: var(--grey-7);
|
|
479
|
-
font-weight: bold;
|
|
480
|
-
}
|
|
481
|
-
|
|
482
|
-
.hljs-number,
|
|
483
|
-
.hljs-literal,
|
|
484
|
-
.hljs-variable,
|
|
485
|
-
.hljs-template-variable,
|
|
486
|
-
.hljs-tag .hljs-attr {
|
|
487
|
-
color: var(--color-green);
|
|
488
|
-
}
|
|
489
|
-
|
|
490
|
-
.hljs-string,
|
|
491
|
-
.hljs-doctag {
|
|
492
|
-
color: var(--color-red);
|
|
493
|
-
}
|
|
494
|
-
|
|
495
|
-
.hljs-title,
|
|
496
|
-
.hljs-section,
|
|
497
|
-
.hljs-selector-id {
|
|
498
|
-
color: var(--color-pink);
|
|
499
|
-
font-weight: bold;
|
|
500
|
-
}
|
|
501
|
-
|
|
502
|
-
.hljs-subst {
|
|
503
|
-
font-weight: normal;
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
.hljs-type,
|
|
507
|
-
.hljs-class .hljs-title {
|
|
508
|
-
color: var(--color-grey);
|
|
509
|
-
font-weight: bold;
|
|
510
|
-
}
|
|
511
|
-
|
|
512
|
-
.hljs-tag,
|
|
513
|
-
.hljs-name,
|
|
514
|
-
.hljs-attribute {
|
|
515
|
-
color: var(--color-orange);
|
|
516
|
-
font-weight: normal;
|
|
517
|
-
}
|
|
518
|
-
|
|
519
|
-
.hljs-regexp,
|
|
520
|
-
.hljs-link {
|
|
521
|
-
color: var(--color-green);
|
|
522
|
-
}
|
|
523
|
-
|
|
524
|
-
.hljs-symbol,
|
|
525
|
-
.hljs-bullet {
|
|
526
|
-
color: var(--color-purple);
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
.hljs-built_in,
|
|
530
|
-
.hljs-builtin-name {
|
|
531
|
-
color: var(--color-aqua);
|
|
532
|
-
}
|
|
533
|
-
|
|
534
|
-
.hljs-deletion {
|
|
535
|
-
background: #fdd;
|
|
536
|
-
}
|
|
537
|
-
|
|
538
|
-
.hljs-addition {
|
|
539
|
-
background: #dfd;
|
|
540
|
-
}
|
|
541
|
-
|
|
542
|
-
.hljs-emphasis {
|
|
543
|
-
font-style: italic;
|
|
544
|
-
}
|
|
545
|
-
|
|
546
|
-
.hljs-strong {
|
|
547
|
-
font-weight: bold;
|
|
548
|
-
}
|