hexo-theme-solitude 1.6.1 → 1.7.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.
- package/README.md +1 -1
- package/README_zh-cn.md +1 -1
- package/README_zh-tw.md +1 -1
- package/SECURITY.md +5 -5
- package/_config.yml +30 -15
- package/languages/en.yml +15 -1
- package/languages/zh-CN.yml +21 -1
- package/languages/zh-TW.yml +21 -1
- package/layout/category.pug +1 -1
- package/layout/includes/console.pug +8 -7
- package/layout/includes/head/config.pug +66 -40
- package/layout/includes/inject/body.pug +7 -3
- package/layout/includes/inject/head.pug +35 -1
- package/layout/includes/widgets/post/postMeta.pug +7 -0
- package/layout/includes/widgets/third-party/comments/comment.pug +5 -7
- package/layout/includes/widgets/third-party/comments/valine.pug +44 -0
- package/layout/includes/widgets/third-party/comments/waline.pug +40 -12
- package/layout/includes/widgets/third-party/news-comment/newest-comment.pug +5 -3
- package/layout/includes/widgets/third-party/news-comment/twikoo.pug +12 -10
- package/layout/includes/widgets/third-party/news-comment/valine.pug +79 -0
- package/layout/includes/widgets/third-party/news-comment/waline.pug +25 -20
- package/layout/page.pug +3 -0
- package/layout/tag.pug +1 -1
- package/package.json +1 -1
- package/plugins.yml +15 -3
- package/scripts/event/cdn.js +7 -2
- package/scripts/event/init.js +4 -2
- package/scripts/event/merge_config.js +6 -5
- package/scripts/helper/related_post.js +2 -2
- package/scripts/tags/tabs.js +1 -1
- package/source/css/_comments/{index.styl → comment.styl} +4 -24
- package/source/css/_comments/valine.styl +245 -0
- package/source/css/_global/index.styl +3 -0
- package/source/css/_highlight/highlight/index.styl +1 -1
- package/source/css/_page/index.styl +1 -4
- package/source/css/_post/content.styl +13 -7
- package/source/css/index.styl +1 -3
- package/source/js/commentBarrage/twikoo.js +4 -4
- package/source/js/commentBarrage/valine.js +156 -0
- package/source/js/commentBarrage/waline.js +3 -3
- package/source/js/main.js +28 -33
- package/source/js/third_party/efu_ai.min.js +6 -0
- package/source/js/utils.js +14 -1
- package/source/css/_comments/waline.styl +0 -455
- package/source/js/third_party/sco-ai.min.js +0 -8
@@ -15,12 +15,12 @@ script.
|
|
15
15
|
return content.length > 150 ? content.substring(0, 150) + '...' : content;
|
16
16
|
}
|
17
17
|
|
18
|
-
const
|
19
|
-
const $dom = document.querySelector('#card-newest-comments .aside-list')
|
18
|
+
const $asideList = document.querySelector('#card-newest-comments .aside-list')
|
20
19
|
|
20
|
+
const getComment = () => {
|
21
21
|
const runTwikoo = () => {
|
22
22
|
twikoo.getRecentComments({
|
23
|
-
envId: GLOBAL_CONFIG.comment.
|
23
|
+
envId: GLOBAL_CONFIG.comment.url,
|
24
24
|
region: '',
|
25
25
|
pageSize: 6,
|
26
26
|
includeReply: true
|
@@ -32,18 +32,18 @@ script.
|
|
32
32
|
'url': `${e.url}#${e.id}`,
|
33
33
|
'date': new Date(e.created).toISOString()
|
34
34
|
}))
|
35
|
+
saveToLocal.set('twikoo-newest-comment', JSON.stringify(twikooArray), !{theme.comment.newest_comment.storage}/(60*24))
|
35
36
|
generateHtml(twikooArray)
|
36
37
|
}).catch(function (err) {
|
37
38
|
console.error(err)
|
38
|
-
$
|
39
|
+
$asideList.textContent = "!{_p('newest_comment.error')}"
|
39
40
|
})
|
40
41
|
}
|
41
42
|
runTwikoo()
|
42
43
|
}
|
43
44
|
|
44
45
|
const generateHtml = array => {
|
45
|
-
|
46
|
-
$dom.innerHTML = array.length ? array.map(item => `
|
46
|
+
$asideList.innerHTML = array.length ? array.map(item => `
|
47
47
|
<div class='aside-list-item'>
|
48
48
|
<a onclick='pjax.loadUrl("${item.url}")' class='thumbnail'>
|
49
49
|
<img src='${item.avatar}' alt='${item.nick}'>
|
@@ -54,15 +54,17 @@ script.
|
|
54
54
|
<time class="datetime" datetime="${item.date}"></time>
|
55
55
|
</div>
|
56
56
|
</div>
|
57
|
-
`).join('') : '
|
57
|
+
`).join('') : "!{_p('newest_comment.zero')}"
|
58
58
|
window.lazyLoadInstance && window.lazyLoadInstance.update()
|
59
|
-
window.pjax && window.pjax.refresh(
|
59
|
+
window.pjax && window.pjax.refresh()
|
60
60
|
utils && utils.changeTimeFormat()
|
61
61
|
}
|
62
62
|
|
63
63
|
const newestCommentInit = () => {
|
64
|
-
const
|
65
|
-
if (
|
64
|
+
const data = saveToLocal.get('twikoo-newest-comment')
|
65
|
+
if (data) {
|
66
|
+
generateHtml(JSON.parse(data))
|
67
|
+
} else {
|
66
68
|
getComment()
|
67
69
|
}
|
68
70
|
}
|
@@ -0,0 +1,79 @@
|
|
1
|
+
script.
|
2
|
+
window.addEventListener('load', () => {
|
3
|
+
const changeContent = (content) => {
|
4
|
+
if (content === '') return content;
|
5
|
+
|
6
|
+
const replacements = [
|
7
|
+
{regex: /<img.*?src="(.*?)"?[^\>]+>/ig, replacement: '[Image]'},
|
8
|
+
{regex: /<a[^>]+?href=["']?([^"']+)["']?[^>]*>([^<]+)<\/a>/gi, replacement: '[URL]'},
|
9
|
+
{regex: /```[\s\S]*?```/g, replacement: '[Code]'},
|
10
|
+
{regex: /<[^>]+>/g, replacement: ""}
|
11
|
+
];
|
12
|
+
|
13
|
+
content = replacements.reduce((str, {regex, replacement}) => str.replace(regex, replacement), content);
|
14
|
+
|
15
|
+
return content.length > 150 ? content.substring(0, 150) + '...' : content;
|
16
|
+
}
|
17
|
+
|
18
|
+
const $asideList = document.querySelector('#card-newest-comments .aside-list')
|
19
|
+
const newestCommentInit = () => {
|
20
|
+
const data = saveToLocal.get('valine-newest-comment')
|
21
|
+
if (data) {
|
22
|
+
generateHtml(JSON.parse(data))
|
23
|
+
} else {
|
24
|
+
getComment()
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
const getComment = async () => {
|
29
|
+
try {
|
30
|
+
const settings = {
|
31
|
+
"method": "GET",
|
32
|
+
"headers": {
|
33
|
+
"X-LC-Id": '!{theme.comment.valine.appId}',
|
34
|
+
"X-LC-Key": '!{theme.comment.valine.appKey}',
|
35
|
+
"Content-Type": "application/json"
|
36
|
+
},
|
37
|
+
}
|
38
|
+
|
39
|
+
const res = await fetch('!{theme.comment.valine.serverURLs}/1.1/classes/Comment?limit=8&order=-createdAt', settings)
|
40
|
+
const result = await res.json()
|
41
|
+
window.res = result
|
42
|
+
const valineArray = result.results.map(e => {
|
43
|
+
return {
|
44
|
+
'content': changeContent(e.comment),
|
45
|
+
'avatar': '!{theme.comment.avatar}' + '/avatar/' + md5(e.mail.toLowerCase()),
|
46
|
+
'nick': e.nick,
|
47
|
+
'url': e.url + '#' + e.objectId,
|
48
|
+
'date': e.updatedAt || e.createdAt
|
49
|
+
}
|
50
|
+
})
|
51
|
+
saveToLocal.set('valine-newest-comment', JSON.stringify(valineArray), !{theme.comment.newest_comment.storage} / (60 * 24))
|
52
|
+
generateHtml(valineArray)
|
53
|
+
} catch (err) {
|
54
|
+
console.error(err)
|
55
|
+
$asideList.textContent = "!{_p('newest_comment.error')}"
|
56
|
+
}
|
57
|
+
}
|
58
|
+
|
59
|
+
const generateHtml = array => {
|
60
|
+
const $dom = document.querySelector('#card-newest-comments .aside-list')
|
61
|
+
$dom.innerHTML = array.length ? array.map(item => `
|
62
|
+
<div class='aside-list-item'>
|
63
|
+
<a onclick='pjax.loadUrl("${item.url}")' class='thumbnail'>
|
64
|
+
<img src='${item.avatar}' alt='${item.nick}'>
|
65
|
+
<div class='name'><span>${item.nick}</span></div>
|
66
|
+
</a>
|
67
|
+
<div class='content'>
|
68
|
+
<a class='comment' onclick='pjax.loadUrl("${item.url}")'>${item.content}</a>
|
69
|
+
<time class="datetime" datetime="${item.date}"></time>
|
70
|
+
</div>
|
71
|
+
</div>
|
72
|
+
`).join('') : "!{_p('newest_comment.zero')}"
|
73
|
+
window.lazyLoadInstance && window.lazyLoadInstance.update()
|
74
|
+
window.pjax && window.pjax.refresh()
|
75
|
+
utils && utils.changeTimeFormat()
|
76
|
+
}
|
77
|
+
|
78
|
+
newestCommentInit()
|
79
|
+
})
|
@@ -17,28 +17,33 @@ script.
|
|
17
17
|
|
18
18
|
const $asideList = document.querySelector('#card-newest-comments .aside-list')
|
19
19
|
const newestCommentInit = () => {
|
20
|
-
|
20
|
+
const data = saveToLocal.get('waline-newest-comment')
|
21
|
+
if (data) {
|
22
|
+
generateHtml(JSON.parse(data))
|
23
|
+
} else {
|
21
24
|
getComment()
|
22
25
|
}
|
23
26
|
}
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
})
|
27
|
+
|
28
|
+
const getComment = async () => {
|
29
|
+
try {
|
30
|
+
const res = await fetch('!{theme.comment.waline.envId}/api/comment?type=recent&count=8', {method: 'GET'})
|
31
|
+
const result = await res.json()
|
32
|
+
const walineArray = result.data.map(e => {
|
33
|
+
return {
|
34
|
+
'content': changeContent(e.comment),
|
35
|
+
'avatar': e.avatar,
|
36
|
+
'nick': e.nick,
|
37
|
+
'url': e.url + '#' + e.objectId,
|
38
|
+
'date': e.time || e.insertedAt
|
39
|
+
}
|
40
|
+
})
|
41
|
+
saveToLocal.set('waline-newest-comment', JSON.stringify(walineArray), !{theme.comment.newest_comment.storage} / (60 * 24))
|
38
42
|
generateHtml(walineArray)
|
39
|
-
}
|
40
|
-
|
41
|
-
|
43
|
+
} catch (err) {
|
44
|
+
console.error(err)
|
45
|
+
$asideList.textContent = "!{_p('newest_comment.error')}"
|
46
|
+
}
|
42
47
|
}
|
43
48
|
|
44
49
|
const generateHtml = array => {
|
@@ -54,9 +59,9 @@ script.
|
|
54
59
|
<time class="datetime" datetime="${item.date}"></time>
|
55
60
|
</div>
|
56
61
|
</div>
|
57
|
-
`).join('') : '
|
62
|
+
`).join('') : "!{_p('newest_comment.zero')}"
|
58
63
|
window.lazyLoadInstance && window.lazyLoadInstance.update()
|
59
|
-
window.pjax && window.pjax.refresh(
|
64
|
+
window.pjax && window.pjax.refresh()
|
60
65
|
utils && utils.changeTimeFormat()
|
61
66
|
}
|
62
67
|
|
package/layout/page.pug
CHANGED
package/layout/tag.pug
CHANGED
@@ -10,7 +10,7 @@ block content
|
|
10
10
|
| #{tag.name}
|
11
11
|
span.tagsPageCount #{tag.length}
|
12
12
|
.recent-posts#recent-posts
|
13
|
-
each post in page.posts.find({ parent: { $exists: false } }).data
|
13
|
+
each post,index in page.posts.find({ parent: { $exists: false } }).data
|
14
14
|
include includes/widgets/home/postList
|
15
15
|
include includes/mixins/pagination
|
16
16
|
include includes/widgets/aside/aside
|
package/package.json
CHANGED
package/plugins.yml
CHANGED
@@ -15,10 +15,18 @@ twikoo:
|
|
15
15
|
file: dist/twikoo.all.min.js
|
16
16
|
version: 1.6.31
|
17
17
|
waline_js:
|
18
|
-
name: '
|
18
|
+
name: 'waline'
|
19
19
|
file: dist/waline.js
|
20
20
|
other_name: waline
|
21
|
-
version:
|
21
|
+
version: 3.1.3
|
22
|
+
waline_css:
|
23
|
+
name: 'waline'
|
24
|
+
file: dist/waline.css
|
25
|
+
version: 3.1.3
|
26
|
+
valine:
|
27
|
+
name: valine
|
28
|
+
file: dist/Valine.min.js
|
29
|
+
version: 1.5.1
|
22
30
|
sharejs:
|
23
31
|
name: butterfly-extsrc
|
24
32
|
file: sharejs/dist/js/social-share.min.js
|
@@ -97,4 +105,8 @@ fancyapps_css:
|
|
97
105
|
mermaid_js:
|
98
106
|
name: mermaid
|
99
107
|
file: dist/mermaid.min.js
|
100
|
-
version: 10.8.0
|
108
|
+
version: 10.8.0
|
109
|
+
blueimp_md5:
|
110
|
+
name: blueimp-md5
|
111
|
+
file: js/md5.min.js
|
112
|
+
version: 2.19.0
|
package/scripts/event/cdn.js
CHANGED
@@ -54,9 +54,9 @@ hexo.extend.filter.register('before_generate', () => {
|
|
54
54
|
file: 'js/tw_cn.js',
|
55
55
|
version
|
56
56
|
},
|
57
|
-
|
57
|
+
efu_ai: {
|
58
58
|
name: 'hexo-theme-solitude',
|
59
|
-
file: 'js/third_party/
|
59
|
+
file: 'js/third_party/efu_ai.min.js',
|
60
60
|
version
|
61
61
|
},
|
62
62
|
twikoo_commentBarrage: {
|
@@ -69,6 +69,11 @@ hexo.extend.filter.register('before_generate', () => {
|
|
69
69
|
file: 'js/commentBarrage/waline.js',
|
70
70
|
version
|
71
71
|
},
|
72
|
+
valine_commentBarrage: {
|
73
|
+
name: 'hexo-theme-solitude',
|
74
|
+
file: 'js/commentBarrage/valine.js',
|
75
|
+
version
|
76
|
+
},
|
72
77
|
waterfall: {
|
73
78
|
name: 'hexo-theme-solitude',
|
74
79
|
file: 'js/third_party/waterfall.min.js',
|
package/scripts/event/init.js
CHANGED
@@ -5,13 +5,15 @@ hexo.extend.filter.register('before_generate', () => {
|
|
5
5
|
const logger = hexo.log;
|
6
6
|
const config = hexo.config;
|
7
7
|
|
8
|
-
if (hexoVer <
|
9
|
-
logger.error('请把 Hexo 升级到
|
8
|
+
if (hexoVer < 7.0) {
|
9
|
+
logger.error('请把 Hexo 升级到 V7.0.0 或更高的版本!');
|
10
|
+
logger.error('Please upgrade your Hexo to V7.0.0 or higher!');
|
10
11
|
process.exit(-1);
|
11
12
|
}
|
12
13
|
|
13
14
|
if (Number(majorVer) < 14) {
|
14
15
|
logger.error('请将 Node.js 升级到 v14.0.0 或更高的版本!');
|
16
|
+
logger.error('Please upgrade Node.js to v14.0.0 or later!');
|
15
17
|
process.exit(-1);
|
16
18
|
}
|
17
19
|
});
|
@@ -129,7 +129,8 @@ hexo.extend.filter.register('before_generate', () => {
|
|
129
129
|
randompostjs: 'https://cdn.cbd.int/st-source/js/moment/random_post.min.js'
|
130
130
|
}, keyboard: {
|
131
131
|
enable: false, list: []
|
132
|
-
}
|
132
|
+
}
|
133
|
+
,lazyload: {
|
133
134
|
enable: false, field: 'site', placeholder: '/img/loading.gif', errorimg: '/img/error_load.png'
|
134
135
|
}, loading: {
|
135
136
|
fullpage: false, pace: true,
|
@@ -150,7 +151,7 @@ hexo.extend.filter.register('before_generate', () => {
|
|
150
151
|
enable: true,
|
151
152
|
copyright: {
|
152
153
|
enable: false,
|
153
|
-
|
154
|
+
limit: 50
|
154
155
|
}
|
155
156
|
}
|
156
157
|
, post_ai: {
|
@@ -164,7 +165,7 @@ hexo.extend.filter.register('before_generate', () => {
|
|
164
165
|
enable: false, per_page: false, copytex: false,
|
165
166
|
}, comment: {
|
166
167
|
enable: false,
|
167
|
-
type: '
|
168
|
+
type: '',
|
168
169
|
commentBarrage: false,
|
169
170
|
newComment: false,
|
170
171
|
randomInfoStart: [`baby's`, `little`, `my`,],
|
@@ -180,8 +181,8 @@ hexo.extend.filter.register('before_generate', () => {
|
|
180
181
|
font: {
|
181
182
|
'font-size': '16px',
|
182
183
|
'code-font-size': '16px',
|
183
|
-
'font-family': '
|
184
|
-
'code-font-family': '
|
184
|
+
'font-family': 'PingFang SC, Hiragino Sans GB,Microsoft YaHei',
|
185
|
+
'code-font-family': 'monospace, monospace',
|
185
186
|
},
|
186
187
|
extends: {
|
187
188
|
head: [], body: [],
|
@@ -5,7 +5,7 @@ hexo.extend.helper.register('related_posts', function (currentPost, allPosts) {
|
|
5
5
|
const config = hexo.theme.config
|
6
6
|
const limitNum = config.related_post.limit || 6
|
7
7
|
const dateType = config.related_post.date_type || 'created'
|
8
|
-
const headlineLang = this._p('
|
8
|
+
const headlineLang = this._p('star')
|
9
9
|
|
10
10
|
currentPost.tags.forEach(function (tag) {
|
11
11
|
allPosts.forEach(function (post) {
|
@@ -36,7 +36,7 @@ hexo.extend.helper.register('related_posts', function (currentPost, allPosts) {
|
|
36
36
|
relatedPosts.sort(compare('weight', dateType))
|
37
37
|
|
38
38
|
let result = '<div class="relatedPosts">'
|
39
|
-
result += `<div class="headline"><i class="solitude st-star-smile-fill"></i><span>${headlineLang}</span><div class="relatedPosts-link"><a onclick="event.preventDefault(); toRandomPost();" href="javascript:void(0);" rel="external nofollow" data-pjax-state=""
|
39
|
+
result += `<div class="headline"><i class="solitude st-star-smile-fill"></i><span>${headlineLang}</span><div class="relatedPosts-link"><a onclick="event.preventDefault(); toRandomPost();" href="javascript:void(0);" rel="external nofollow" data-pjax-state="">${this._p('random')}</a></div></div>`
|
40
40
|
result += '<div class="relatedPosts-list">'
|
41
41
|
|
42
42
|
for (let i = 0; i < Math.min(relatedPosts.length, limitNum); i++) {
|
package/scripts/tags/tabs.js
CHANGED
@@ -72,21 +72,6 @@ div#post-comment
|
|
72
72
|
a:hover
|
73
73
|
color var(--efu-main)
|
74
74
|
|
75
|
-
.comment-tips
|
76
|
-
background-color rgba(103, 194, 58, 0.13)
|
77
|
-
border var(--style-border-always)
|
78
|
-
border-color var(--efu-green)
|
79
|
-
color var(--efu-green)
|
80
|
-
border-radius 8px
|
81
|
-
padding 8px 12px
|
82
|
-
margin-top 0.5rem
|
83
|
-
display none
|
84
|
-
width 100%
|
85
|
-
|
86
|
-
&.show
|
87
|
-
display flex
|
88
|
-
font-weight 700
|
89
|
-
|
90
75
|
blockquote
|
91
76
|
background var(--efu-secondbg)
|
92
77
|
border var(--style-border)
|
@@ -104,14 +89,6 @@ div#post-comment
|
|
104
89
|
flex-wrap wrap
|
105
90
|
position relative
|
106
91
|
|
107
|
-
.comment-randomInfo
|
108
|
-
margin-left auto
|
109
|
-
font-size 13px
|
110
|
-
|
111
|
-
&:hover
|
112
|
-
a
|
113
|
-
color var(--efu-theme)
|
114
|
-
|
115
92
|
#owo-big
|
116
93
|
position fixed
|
117
94
|
align-items center
|
@@ -123,4 +100,7 @@ div#post-comment
|
|
123
100
|
transform translate(0, -105%)
|
124
101
|
overflow hidden
|
125
102
|
animation owoIn .3s cubic-bezier(.42,0,.3,1.11)
|
126
|
-
padding 1rem
|
103
|
+
padding 1rem
|
104
|
+
|
105
|
+
@import 'twikoo.styl' when hexo-config('comment.type') == 'twikoo'
|
106
|
+
@import 'valine.styl' when hexo-config('comment.type') == 'valine'
|
@@ -0,0 +1,245 @@
|
|
1
|
+
#comment
|
2
|
+
.vcount
|
3
|
+
display none !important
|
4
|
+
|
5
|
+
.vpreview-btn
|
6
|
+
display none
|
7
|
+
|
8
|
+
.vemoji-btn
|
9
|
+
position absolute
|
10
|
+
bottom 4.5px
|
11
|
+
left 50px
|
12
|
+
|
13
|
+
.vpanel
|
14
|
+
display flex
|
15
|
+
flex-direction column
|
16
|
+
position relative
|
17
|
+
|
18
|
+
.vemojis
|
19
|
+
display: none;
|
20
|
+
position: absolute;
|
21
|
+
left: 0;
|
22
|
+
right: 0;
|
23
|
+
max-width: 500px;
|
24
|
+
color: #4a4a4a;
|
25
|
+
border: 1px solid rgba(144, 147, 153, 0.31);
|
26
|
+
top: 6.7rem
|
27
|
+
z-index: 1000;
|
28
|
+
animation: .3s ease .1s 1 normal both running donate_effcet
|
29
|
+
width: 500px;
|
30
|
+
border: var(--style-border-always)
|
31
|
+
border-radius: 8px !important;
|
32
|
+
overflow: hidden;
|
33
|
+
background-color: var(--efu-maskbg)
|
34
|
+
backdrop-filter: saturate(180%) blur(10px);
|
35
|
+
transform: translateZ(0);
|
36
|
+
overflow-y: auto;
|
37
|
+
padding: 10px;
|
38
|
+
|
39
|
+
.vwrap
|
40
|
+
flex 1
|
41
|
+
display flex
|
42
|
+
border none !important
|
43
|
+
padding 0
|
44
|
+
overflow: inherit;
|
45
|
+
flex-direction column-reverse
|
46
|
+
|
47
|
+
.vheader
|
48
|
+
display flex
|
49
|
+
margin .5rem 0
|
50
|
+
position relative
|
51
|
+
width calc(100% - 5.5rem)
|
52
|
+
gap .5rem
|
53
|
+
|
54
|
+
+maxWidth768()
|
55
|
+
flex-direction column
|
56
|
+
|
57
|
+
input
|
58
|
+
border-radius 12px
|
59
|
+
width calc((100% - 1rem) / 3)
|
60
|
+
flex 1
|
61
|
+
position relative
|
62
|
+
font-size 13px
|
63
|
+
background var(--efu-secondbg)
|
64
|
+
border var(--style-border-always)
|
65
|
+
padding 6px 10px
|
66
|
+
line-height 1
|
67
|
+
|
68
|
+
+maxWidth768()
|
69
|
+
width 100%
|
70
|
+
|
71
|
+
.vquote
|
72
|
+
|
73
|
+
.vcard
|
74
|
+
background: var(--efu-card-bg);
|
75
|
+
border none
|
76
|
+
border-top: var(--style-border-dashed);
|
77
|
+
border-radius: 12px;
|
78
|
+
transition: .3s;
|
79
|
+
padding: 1rem 0 0;
|
80
|
+
margin-top: 0;
|
81
|
+
box-shadow: none;
|
82
|
+
|
83
|
+
.vreply-wrapper
|
84
|
+
|
85
|
+
.vrow .vcol:first-child
|
86
|
+
bottom 78px
|
87
|
+
|
88
|
+
+maxWidth768()
|
89
|
+
bottom 164px
|
90
|
+
|
91
|
+
.vrow .vcol.text-right:not(.vctrl)
|
92
|
+
bottom 31px
|
93
|
+
|
94
|
+
+maxWidth768()
|
95
|
+
bottom 117px
|
96
|
+
|
97
|
+
.cancel-reply
|
98
|
+
display flex !important
|
99
|
+
flex-direction row
|
100
|
+
justify-content center
|
101
|
+
margin 0
|
102
|
+
|
103
|
+
.cancel-reply-btn
|
104
|
+
position inherit
|
105
|
+
|
106
|
+
.vrow
|
107
|
+
padding 0
|
108
|
+
|
109
|
+
.vcol
|
110
|
+
position absolute
|
111
|
+
|
112
|
+
&:first-child
|
113
|
+
bottom 56px
|
114
|
+
left 20px
|
115
|
+
width auto
|
116
|
+
|
117
|
+
+maxWidth768()
|
118
|
+
bottom 141px
|
119
|
+
|
120
|
+
&.text-right:not(.vctrl)
|
121
|
+
bottom 9px
|
122
|
+
right 0
|
123
|
+
transition .3s
|
124
|
+
border 0 solid var(--efu-main)
|
125
|
+
width 5rem
|
126
|
+
margin-left .5rem
|
127
|
+
border-radius 12px
|
128
|
+
height 34px
|
129
|
+
|
130
|
+
+maxWidth768()
|
131
|
+
bottom 94px
|
132
|
+
|
133
|
+
button
|
134
|
+
background-color var(--efu-fontcolor)
|
135
|
+
width 100%
|
136
|
+
height 100%
|
137
|
+
color var(--efu-card-bg)
|
138
|
+
border-radius 12px
|
139
|
+
opacity .2
|
140
|
+
|
141
|
+
+maxWidth768()
|
142
|
+
height 119px
|
143
|
+
|
144
|
+
svg
|
145
|
+
width 18px
|
146
|
+
height 18px
|
147
|
+
|
148
|
+
#veditor
|
149
|
+
display block
|
150
|
+
padding 16px 16px 40px 16px
|
151
|
+
line-height 1.5
|
152
|
+
width 100%
|
153
|
+
font-size 14px
|
154
|
+
background var(--efu-secondbg)
|
155
|
+
color var(--efu-fontcolor)
|
156
|
+
border-radius 12px
|
157
|
+
min-height 121px
|
158
|
+
border var(--style-border-always)
|
159
|
+
|
160
|
+
&:focus
|
161
|
+
border var(--style-border-hover-always)
|
162
|
+
box-shadow var(--efu-shadow-main)
|
163
|
+
|
164
|
+
.vcard
|
165
|
+
margin-top: 0
|
166
|
+
margin-bottom: .5rem
|
167
|
+
background: var(--efu-card-bg);
|
168
|
+
transition: .3s;
|
169
|
+
border-radius: 12px;
|
170
|
+
padding: 0;
|
171
|
+
padding-top: .5rem;
|
172
|
+
border: none;
|
173
|
+
border-top: var(--style-border-dashed);
|
174
|
+
display: flex;
|
175
|
+
flex-direction: row;
|
176
|
+
word-break: break-all;
|
177
|
+
|
178
|
+
+maxWidth768()
|
179
|
+
padding: 1rem;
|
180
|
+
border: var(--style-border-always);
|
181
|
+
box-shadow: var(--efu-shadow-border)
|
182
|
+
|
183
|
+
.vimg
|
184
|
+
width 32px
|
185
|
+
height 32px
|
186
|
+
border-radius 32px
|
187
|
+
cursor pointer
|
188
|
+
margin-right 16px
|
189
|
+
|
190
|
+
&:hover
|
191
|
+
transform: rotate(360deg)
|
192
|
+
|
193
|
+
.vh
|
194
|
+
flex 1
|
195
|
+
padding 0
|
196
|
+
border 0
|
197
|
+
|
198
|
+
.vhead
|
199
|
+
display flex
|
200
|
+
align-items center
|
201
|
+
gap: 5px;
|
202
|
+
|
203
|
+
.vnick
|
204
|
+
font-size 1rem
|
205
|
+
line-height 32px
|
206
|
+
margin-right 0
|
207
|
+
|
208
|
+
.vsys
|
209
|
+
background: var(--efu-card-bg);
|
210
|
+
border: var(--style-border-always);
|
211
|
+
padding: 3px 5px
|
212
|
+
border-radius: 8px;
|
213
|
+
color: var(--efu-secondtext)
|
214
|
+
display: inline
|
215
|
+
font-size: .5rem;
|
216
|
+
|
217
|
+
.vat
|
218
|
+
display: flex;
|
219
|
+
align-items: center;
|
220
|
+
color: var(--efu-lighttext)
|
221
|
+
padding: 3px 12px
|
222
|
+
transition: all .3s;
|
223
|
+
border-radius: 8px;
|
224
|
+
background-color: var(--efu-secondbg);
|
225
|
+
border: var(--style-border-always);
|
226
|
+
position: absolute;
|
227
|
+
right: 0;
|
228
|
+
bottom: 18px
|
229
|
+
|
230
|
+
&:hover
|
231
|
+
background-color: var(--efu-lighttext)
|
232
|
+
color: var(--efu-card-bg)
|
233
|
+
|
234
|
+
.vquote
|
235
|
+
border-left none
|
236
|
+
|
237
|
+
.vicon.actived
|
238
|
+
fill var(--efu-main)
|
239
|
+
|
240
|
+
#page
|
241
|
+
.vcard
|
242
|
+
padding: 1rem 1rem 1.5rem;
|
243
|
+
border: var(--style-border);
|
244
|
+
border-top: var(--style-border);
|
245
|
+
box-shadow: var(--efu-shadow-border);
|