hexo-theme-shokax 0.0.4-alpha3 → 0.0.4

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 (39) hide show
  1. package/layout/_mixin/breadcrumb.pug +3 -3
  2. package/layout/_mixin/card.pug +4 -5
  3. package/layout/_mixin/postmeta.pug +3 -3
  4. package/layout/_mixin/segment.pug +2 -2
  5. package/layout/_mixin/sidebar.pug +4 -4
  6. package/layout/_mixin/widgets.pug +1 -1
  7. package/layout/_partials/footer.pug +4 -3
  8. package/layout/_partials/head/head.pug +4 -4
  9. package/layout/_partials/header.pug +2 -2
  10. package/layout/_partials/layout.pug +5 -2
  11. package/layout/_partials/pagination.pug +1 -1
  12. package/layout/_partials/post/copyright.pug +2 -2
  13. package/layout/_partials/post/footer.pug +2 -2
  14. package/layout/_partials/post/nav.pug +1 -1
  15. package/layout/_partials/post/post.pug +1 -1
  16. package/layout/_partials/post/reward.pug +1 -1
  17. package/layout/_partials/sidebar/menu.pug +2 -2
  18. package/layout/_partials/sidebar/overview.pug +1 -1
  19. package/layout/archive.pug +1 -1
  20. package/layout/category.pug +1 -1
  21. package/layout/page.pug +1 -1
  22. package/layout/post.pug +1 -1
  23. package/layout/tag.pug +1 -1
  24. package/package.json +1 -1
  25. package/source/css/_common/components/highlight/highlight.styl +2 -2
  26. package/source/css/_common/components/pages/home.styl +2 -2
  27. package/source/css/_common/components/post/breadcrumb.styl +1 -1
  28. package/source/css/_common/components/post/post.styl +1 -1
  29. package/source/css/_common/components/tags/links.styl +1 -1
  30. package/source/css/_common/components/third-party/valine.styl +3 -2
  31. package/source/css/_common/outline/header/menu.styl +1 -1
  32. package/source/css/_common/outline/sidebar/menu.styl +1 -1
  33. package/source/css/_common/scaffolding/base.styl +13 -17
  34. package/source/css/_common/scaffolding/buttons.styl +1 -1
  35. package/source/css/app.styl +4 -4
  36. package/source/js/_app/global.js +5 -5
  37. package/source/js/_app/library.js +3 -3
  38. package/source/js/_app/page.js +15 -15
  39. package/source/js/_app/vue.js +1 -1
@@ -1,7 +1,7 @@
1
1
  mixin BCRender(post, home)
2
2
  if home
3
3
  != '<div class="breadcrumb" itemListElement itemscope itemtype="https://schema.org/BreadcrumbList">'
4
- i(class="fa fa-solid fa-house")
4
+ i(class="ic i-home")
5
5
  span
6
6
  a(href=url_for(site.path))
7
7
  != __('menu.home')
@@ -10,7 +10,7 @@ mixin BCRender(post, home)
10
10
  if post.categories && post.categories.length
11
11
  - var cat_length = post.categories.length
12
12
  if home
13
- i(class="fa fa-solid fa-angle-right")
13
+ i(class="ic i-angle-right")
14
14
  each cat,index in post.categories.toArray()
15
15
  if home
16
16
  if index===cat_length
@@ -29,5 +29,5 @@ mixin BCRender(post, home)
29
29
  a(href=url_for(cat.path) title=__('post.in')+cat.name)
30
30
  != cat.name
31
31
  if cat_length > 1 && index !== cat_length
32
- i(class="fa fa-solid fa-angle-right")
32
+ i(class="ic i-angle-right")
33
33
  != '</div>'
@@ -12,11 +12,10 @@ mixin CardRender(item)
12
12
  != item.top.name
13
13
  div(class="info")
14
14
  if item.link
15
- - var postTitleIcon = '<i class="fa fa-solid fa-up-right-from-square"></i>'
15
+ - var postTitleIcon = '<i class="ic i-link-alt"></i>'
16
16
  - var postText = itemname || item.link || __('post.untitled')
17
- - var tempI = postText + (postTitleIcon || '')
18
17
  div(class="ribbon")
19
- != _url(item.link , tempI , {itemprop: 'url', title: postText})
18
+ != _url(item.link , postText + (postTitleIcon || ''), {itemprop: 'url', title: postText})
20
19
  div(class="inner")
21
20
  - var len = ''
22
21
  if item.child
@@ -31,8 +30,8 @@ mixin CardRender(item)
31
30
  div(class="meta footer")
32
31
  if item.top
33
32
  span
34
- != _url(item.top.path, '<i class="fa fa-solid fa-flag"></i>'+item.top.name, {itemprop: 'url', title: item.top.name})
33
+ != _url(item.top.path, '<i class="ic i-flag"></i>'+item.top.name, {itemprop: 'url', title: item.top.name})
35
34
  span
36
- i(class="fa fa-solid fa-file")
35
+ i(class="ic i-file")
37
36
  != len
38
37
  != _url(item.path, 'more...', {itemprop: 'url', title: itemname, class: 'btn'})
@@ -5,7 +5,7 @@ mixin PMRender(item, full)
5
5
  - var create_title = __('post.created') + __('symbol.colon') + full_date(item.date)
6
6
  span(class="item" title=create_title)
7
7
  span(class="icon")
8
- i(class="fa fa-solid fa-calendar-days")
8
+ i(class="ic i-calendar")
9
9
  if full
10
10
  span(class="text")
11
11
  != __('post.posted')
@@ -14,7 +14,7 @@ mixin PMRender(item, full)
14
14
  if theme.post.count
15
15
  span(class="item" title=__('symbols_count_time.count'))
16
16
  span(class="icon")
17
- i(class="fa fa-solid fa-pen-nib")
17
+ i(class="ic i-pen")
18
18
  if full
19
19
  span(class="text")
20
20
  != __('symbols_count_time.count')
@@ -23,7 +23,7 @@ mixin PMRender(item, full)
23
23
  != __('symbols_count_time.word')
24
24
  span(class="item" title=__('symbols_count_time.time'))
25
25
  span(class="icon")
26
- i(class="fa fa-solid fa-clock")
26
+ i(class="ic i-clock")
27
27
  if full
28
28
  span(class="text")
29
29
  != __('symbols_count_time.time')
@@ -4,7 +4,7 @@ mixin SMRender(item)
4
4
  - var link1 = item.link || item.path
5
5
  - var gradient = theme?.experiments?.gradient
6
6
  if item.link
7
- - var postTitleIcon = '<i class="fa fa-solid fa-up-right-from-square"></i>'
7
+ - var postTitleIcon = '<i class="ic i-link-alt"></i>'
8
8
  - var postText = item.title || item.link || __('post.untitled')
9
9
  article(class="item")
10
10
  if gradient
@@ -27,6 +27,6 @@ mixin SMRender(item)
27
27
  div(class="meta footer")
28
28
  span
29
29
  - var lastcat = item.categories.last()
30
- != _url(lastcat.path, '<i class="fa fa-solid fa-flag"></i>' + lastcat.name, {itemprop: 'url', title: lastcat.name})
30
+ != _url(lastcat.path, '<i class="ic i-flag"></i>' + lastcat.name, {itemprop: 'url', title: lastcat.name})
31
31
  != _url(link1, 'more...', {itemprop: 'url', title: postText, class: 'btn'})
32
32
 
@@ -25,12 +25,12 @@ mixin sidebarRender(display_toc)
25
25
  li(class="prev pjax")
26
26
  if page && page.prev
27
27
  if prevlink
28
- != _url(prevlink, '<i class="fa fa-solid fa-chevron-left"></i>', {rel: 'prev', title: __('post.prev')})
28
+ != _url(prevlink, '<i class="ic i-chevron-left"></i>', {rel: 'prev', title: __('post.prev')})
29
29
  li(class="up")
30
- i(class="fa fa-solid fa-arrow-up")
30
+ i(class="ic i-arrow-up")
31
31
  li(class="down")
32
- i(class="fa fa-solid fa-arrow-down")
32
+ i(class="ic i-arrow-down")
33
33
  li(class="next pjax")
34
34
  if nextlink
35
- != _url(nextlink, '<i class="fa fa-solid fa-chevron-right"></i>', {rel: 'next', title: __('post.next')})
35
+ != _url(nextlink, '<i class="ic i-chevron-right"></i>', {rel: 'next', title: __('post.next')})
36
36
  li(class="percent")
@@ -1,6 +1,6 @@
1
1
  mixin field(item)
2
2
  if item.link
3
- - var postTitleIcon = '<i class="fa fa-solid fa-up-right-from-square"></i>'
3
+ - var postTitleIcon = '<i class="ic i-link-alt"></i>'
4
4
  li(class="item")
5
5
  +BCRender(item, false)
6
6
  - var postText = item.title || item.link || __('post.untitled')
@@ -2,21 +2,22 @@ div(class="status")
2
2
  div(class="copyright")
3
3
  - var copyright_year = date(null, 'YYYY')
4
4
  if theme.footer.since && theme.footer.since != copyright_year
5
+ != `&copy; ${theme.footer.since} -`
5
6
  span(itemprop="copyrightYear")
6
7
  != copyright_year
7
8
  span(class="with-love")
8
- i(class=`fa fa-solid fa-${ theme.footer.icon.name }`)
9
+ i(class=`ic i-${ theme.footer.icon.name }`)
9
10
  span(class="author" itemprop="copyrightHolder")
10
11
  != `${author} @ ${ alternate?alternate:title}`
11
12
  if theme.footer.count
12
13
  div(class="count")
13
14
  span(class="post-meta-item-icon")
14
- i(class="fa fa-solid fa-chart-area")
15
+ i(class="ic i-chart-area")
15
16
  span(title=__('symbols_count_time.count_total'))
16
17
  != `${ symbolsCountTotal(site) } ${__('symbols_count_time.word')}`
17
18
  span(class="post-meta-divider") |
18
19
  span(class="post-meta-item-icon")
19
- i(class="fa fa-solid fa-coffee")
20
+ i(class="ic i-coffee")
20
21
  span(title=__('symbols_count_time.time_total'))
21
22
  != symbolsTimeTotal(site, config.symbols_count_time.awl, config.symbols_count_time.wpm, __('symbols_count_time.time_minutes'))
22
23
  //- span(id="timeDate")
@@ -2,7 +2,7 @@
2
2
  - var yandexValid = theme?.seo?.yandex,baiduValid = theme?.seo?.baidu
3
3
  - var siteTitle = config.title,noBaiduT = theme?.seo?.disable_baidu_transformation
4
4
  - var feedLink = full_url_for("/feed.json")
5
- - var twikooLink = theme?.twikoo?.link;var jsInjects = theme?.inject?.head?.js,cssInjects = theme?.inject?.head?.css
5
+ - var tk= theme?.twikoo?.enable;var jsInjects = theme?.inject?.head?.js,cssInjects = theme?.inject?.head?.css
6
6
  - var wl = theme.waline.enable,gt=theme?.gitalk?.enable
7
7
  meta(charset="UTF-8")
8
8
  meta(name="viewport" content="width=device-width,initial-scale=1,maximum-scale=2")
@@ -33,16 +33,16 @@ link(rel="alternate" type="application/json" title=siteTitle href=feedLink)
33
33
  if fontConfig
34
34
  != _vendor_font()
35
35
  != _css('app.css')
36
- link(rel="stylesheet" type="text/css" href="https://cdn.staticfile.org/font-awesome/6.2.1/css/all.min.css")
36
+
37
37
  - var debugVue = theme?.experiments?.debug
38
38
  if debugVue
39
39
  script(src="https://cdn.staticfile.org/vue/3.2.45/vue.global.js")
40
40
  else
41
41
  script(src="https://cdn.staticfile.org/vue/3.2.45/vue.global.prod.js")
42
42
  include pwa.pug
43
- if twikooLink
43
+ if tk
44
44
  != _css("twikoo.css")
45
- script(src=twikooLink)
45
+ script(src=theme.twikoo.link)
46
46
  else if wl
47
47
  link(rel="stylesheet" href="https://unpkg.com/@waline/client@v2/dist/waline.css")
48
48
  else if gt
@@ -11,8 +11,8 @@ nav(id="nav")
11
11
  != alternate || title
12
12
  ul(class="right" id="rightNav")
13
13
  li(class="item theme" @click="changeThemeByBtn")
14
- i(class="fa fa-solid fa-sunrise")
14
+ i(class="ic" :class="{'i-sun': !themeStatus,'i-moon': themeStatus}")
15
15
  li(class="item search")
16
- i(class="fa fa-solid fa-magnifying-glass")
16
+ i(class="ic i-search")
17
17
  != shokax_inject('rightNav')
18
18
 
@@ -65,7 +65,7 @@ html(lang=page.language?page.language:config.language, style=theme.grayMode ? 'f
65
65
  div(class="widgets")
66
66
  +WRender
67
67
  != partial('_partials/footer.pug', {}, {cache: true})
68
- - var ccIcon = '<i class="fa fa-solid fa-creative-commons"></i>'
68
+ - var ccIcon = '<i class="ic i-creative-commons"></i>'
69
69
  - var ccText = theme.creative_commons.license.toUpperCase()
70
70
  <script data-config type="text/javascript" >
71
71
  | var LOCAL = {
@@ -135,7 +135,10 @@ html(lang=page.language?page.language:config.language, style=theme.grayMode ? 'f
135
135
  != _js('app.js')
136
136
  != partial('_partials/third-party/baidu-analytics.pug', {}, {cache: true})
137
137
  != partial('_partials/third-party/clarity.pug', {}, {cache: true})
138
- != _new_comments('twikoo')
138
+ if theme.twikoo.enable
139
+ != _new_comments('twikoo')
140
+ else if theme.waline.enable
141
+ != _new_comments('waline')
139
142
 
140
143
  != shokax_inject('bodyEnd')
141
144
 
@@ -1,4 +1,4 @@
1
1
  if page.prev || page.next
2
2
  nav(class="pagination")
3
3
  div(class="inner")
4
- != paginator({prev_text: '<i class="fa fa-solid fa-angle-left" aria-label="' + __('accessibility.prev_page') + '"></i>',next_text: '<i class="fa fa-solid fa-angle-right" aria-label="' + __('accessibility.next_page') + '"></i>',mid_size : 1,escape : false})
4
+ != paginator({prev_text: '<i class="ic i-angle-left" aria-label="' + __('accessibility.prev_page') + '"></i>',next_text: '<i class="ic i-angle-right" aria-label="' + __('accessibility.next_page') + '"></i>',mid_size : 1,escape : false})
@@ -1,5 +1,5 @@
1
1
  if page.copyright !== false
2
- - var ccIcon = '<i class="fa fa-brands fa-creative-commons"><em>(CC)</em></i>'
2
+ - var ccIcon = '<i class="ic i-creative-commons"><em>(CC)</em></i>'
3
3
  - var ccText = theme.creative_commons.license.toUpperCase()
4
4
  div(id="copyright")
5
5
  ul
@@ -7,7 +7,7 @@ if page.copyright !== false
7
7
  strong
8
8
  != __('post.copyright.author') + __('symbol.colon')
9
9
  != page.author || author
10
- i(class="fa fa-solid fa-at")
10
+ i(class="ic i-at")
11
11
  em @
12
12
  != title
13
13
  li(class="link")
@@ -1,12 +1,12 @@
1
1
  div(class="meta")
2
2
  if date(post.date) != date(post.updated) || time(post.date) != time(post.updated)
3
3
  span(class="icon")
4
- i(class="fa fa-solid fa-eye")
4
+ i(class="ic i-eye")
5
5
  span 此文章已被阅读次数:
6
6
  span(id="twikoo_visitors" class="waline-pageview-count" data-path=post.path) 正在加载...
7
7
  span(class="item")
8
8
  span(class="icon")
9
- i(class="fa fa-solid fa-calendar-check")
9
+ i(class="ic i-calendar-check")
10
10
  span(class="text")
11
11
  != __('post.edited')
12
12
  time(title=__('post.modified') + __('symbol.colon') + full_date(post.updated) itemprop="dateModified" datetime=moment(post.updated).format())
@@ -1,7 +1,7 @@
1
1
  mixin navpost(item, type)
2
2
  - var postText = item.title || item.link || __('post.untitled')
3
3
  - var lastcat = item.categories.last()
4
- - var itemlink=`<span class="type">${__('post.' + type)}</span><span class="category"><i class="fa fa-solid fa-flag"></i>${lastcat?.name}</span><h3>${ postText }</h3>`
4
+ - var itemlink=`<span class="type">${__('post.' + type)}</span><span class="category"><i class="ic i-flag"></i>${lastcat?.name}</span><h3>${ postText }</h3>`
5
5
  != _url(item.path, itemlink, {itemprop: 'url', rel: type, 'data-background-image': _cover(item), title: postText})
6
6
 
7
7
  div(class="post-nav")
@@ -17,7 +17,7 @@ article(itemscope itemtype="http://schema.org/Article" class="post block" lang=t
17
17
  div(class="tags")
18
18
  each tag in post.tags.toArray()
19
19
  a(href!=url_for(tag.path) rel="tag")
20
- i(class="fa fa-solid fa-tag")
20
+ i(class="ic i-tag")
21
21
  != tag.name
22
22
  footer
23
23
  != partial('_partials/post/footer.pug')
@@ -1,7 +1,7 @@
1
1
  if page.reward !== false
2
2
  div(class="reward")
3
3
  button
4
- i(class="fa fa-solid fa-heart-pulse")
4
+ i(class="ic i-heartbeat")
5
5
  != __('reward.donate')
6
6
  p
7
7
  != __('reward.text')
@@ -3,7 +3,7 @@ mixin item(name, path, parent, dropdown, sublist)
3
3
  - var path = path.split('||')
4
4
  - var itemURL = path[0].trim()
5
5
  - if (!itemURL.startsWith('http')){ itemURL = itemURL.replace('//', '/') }
6
- - var menuIcon = '<i class="fa fa-solid fa-' + trimn(path[1]) + '"></i>'
6
+ - var menuIcon = '<i class="ic i-' + trimn(path[1]) + '"></i>'
7
7
  - var menuText = __('menu.' + name).replace('menu.', '')
8
8
  if parent
9
9
  li(class="item dropdown")
@@ -21,7 +21,7 @@ mixin item(name, path, parent, dropdown, sublist)
21
21
  - var menuText = __('menu.' + subname).replace('menu.', '')
22
22
  if subname == 'default'
23
23
  - var menuText = __('menu.' + name).replace('menu.', '')
24
- - var menuIcon = '<i class="fa fa-solid fa-' + trimn(path[1]) + '"></i>'
24
+ - var menuIcon = '<i class="ic i-' + trimn(path[1]) + '"></i>'
25
25
  li(class="item")
26
26
  != _url(itemURL, menuIcon + menuText, {rel: 'section'})
27
27
  else
@@ -32,7 +32,7 @@ nav(class="state")
32
32
  div(class="social")
33
33
  each link, name in theme.social
34
34
  - var sidebarURL = link.split('||')[0].trim()
35
- - var sidebarIcon = '<i class="fa fa-brands fa-' + link.split('||')[1].trim() + '"></i>'
35
+ - var sidebarIcon = '<i class="ic i-' + link.split('||')[1].trim() + '"></i>'
36
36
  != _url(sidebarURL, sidebarIcon, {title: sidebarURL, class: 'item ' + name})
37
37
 
38
38
  != shokax_inject('sidebar')
@@ -103,7 +103,7 @@ block content
103
103
  a(href=url_for(cat.path)) #{cat.name}
104
104
  div(class="title")
105
105
  if post.link
106
- - var postTitleIcon = '<i class="fa fa-solid fa-up-right-from-square"></i>'
106
+ - var postTitleIcon = '<i class="ic i-link-alt"></i>'
107
107
  - var postText = post.title || post.link
108
108
  != _url(post.link, postText + postTitleIcon, {class: 'external', itemprop: 'url'})
109
109
  else
@@ -53,7 +53,7 @@ block content
53
53
  ) #{date(post.date, 'MM-DD')}
54
54
  div(class="title")
55
55
  if post.link
56
- - var postTitleIcon = '<i class="fa fa-solid fa-up-right-from-square"></i>'
56
+ - var postTitleIcon = '<i class="ic i-link-alt"></i>'
57
57
  - var postText = post.title || post.link
58
58
  != _url(post.link, postText + postTitleIcon, {class: 'external', itemprop: 'url'})
59
59
  else
package/layout/page.pug CHANGED
@@ -16,7 +16,7 @@ block title
16
16
  block header
17
17
  h1(itemprop="name headline")
18
18
  if page.link
19
- - var postTitleIcon = '<i class="fa fa-solid fa-up-right-from-square"></i>'
19
+ - var postTitleIcon = '<i class="ic i-link-alt"></i>'
20
20
  - var postText = page.title || page.link
21
21
  != _url(page.link, postText + postTitleIcon, {class: 'link external', itemprop: 'url'})
22
22
  else
package/layout/post.pug CHANGED
@@ -17,7 +17,7 @@ block title
17
17
  block header
18
18
  h1(itemprop="name headline")
19
19
  if page.link
20
- - var postTitleIcon = '<i class="fa fa-solid fa-up-right-from-square"></i>'
20
+ - var postTitleIcon = '<i class="ic i-link-alt"></i>'
21
21
  - var postText = page.title || page.link
22
22
  != _url(page.link, postText + postTitleIcon, {class: 'link external', itemprop: 'url'})
23
23
  else
package/layout/tag.pug CHANGED
@@ -33,7 +33,7 @@ block content
33
33
  != cat.name
34
34
  div(class="title")
35
35
  if post.link
36
- - var postTitleIcon = '<i class="fa fa-solid fa-up-right-from-square"></i>'
36
+ - var postTitleIcon = '<i class="ic i-link-alt"></i>'
37
37
  - var postText = post.title || post.link
38
38
  != _url(post.link, postText + postTitleIcon, {class: 'external', itemprop: 'url'})
39
39
  else
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hexo-theme-shokax",
3
- "version": "0.0.4-alpha3",
3
+ "version": "0.0.4",
4
4
  "description": "a hexo theme based on shoka",
5
5
  "main": "index.js",
6
6
  "repository": "https://github.com/zkz098/hexo-theme-shokaX",
@@ -243,7 +243,7 @@ code,
243
243
  background: var(--grey-2);
244
244
  }
245
245
 
246
- .fa {
246
+ .ic {
247
247
  margin-top: 1rem;
248
248
  @extend .up-down;
249
249
  }
@@ -256,7 +256,7 @@ code,
256
256
  display: none;
257
257
  }
258
258
 
259
- .fa {
259
+ .ic {
260
260
  @extend .down-up;
261
261
  }
262
262
  }
@@ -69,7 +69,7 @@ $item {
69
69
  font-size: $font-size-smaller;
70
70
  color: var(--grey-5);
71
71
 
72
- .fa {
72
+ .ic {
73
73
  margin-right: .0625rem;
74
74
  }
75
75
 
@@ -208,7 +208,7 @@ $item {
208
208
  }
209
209
 
210
210
  .title {
211
- .fa {
211
+ .ic {
212
212
  font-size: 80%;
213
213
  }
214
214
  }
@@ -5,7 +5,7 @@
5
5
  margin: 1.25rem 0;
6
6
  flex-wrap: wrap;
7
7
 
8
- .fa {
8
+ .ic {
9
9
  margin: 0 .125rem;
10
10
  color: var(--grey-4);
11
11
 
@@ -6,7 +6,7 @@
6
6
  font-family: $font-family-posts;
7
7
  word-wrap();
8
8
 
9
- .exturl .fa {
9
+ .exturl .ic {
10
10
  font-size: $font-size-small;
11
11
  margin-left: .25rem;
12
12
  }
@@ -39,7 +39,7 @@
39
39
  font-weight: bold;
40
40
  color: var(--bg-color);
41
41
  border: none;
42
- .fa {
42
+ .ic {
43
43
  display: none;
44
44
  }
45
45
  }
@@ -186,11 +186,12 @@
186
186
  margin: .5rem;
187
187
  overflow: hidden;
188
188
  vertical-align: middle;
189
- &.actived .fa {
189
+
190
+ &.actived .ic {
190
191
  color: var(--primary-color);
191
192
  }
192
193
 
193
- .fa {
194
+ .ic {
194
195
  color: var(--grey-6);
195
196
  transition: all .25s ease;
196
197
 
@@ -22,7 +22,7 @@
22
22
  }
23
23
  }
24
24
 
25
- .fa {
25
+ .ic {
26
26
  margin-right: .5rem;
27
27
  }
28
28
 
@@ -32,7 +32,7 @@
32
32
  }
33
33
  }
34
34
 
35
- .fa {
35
+ .ic {
36
36
  margin-right: .625rem;
37
37
  }
38
38
 
@@ -129,15 +129,15 @@ dd {
129
129
  input, textarea {
130
130
  color: var(--text-color);
131
131
  }
132
- //@font-face {
133
- // font-family: 'ic';
134
- // src: url('//at.alicdn.com/t/font_' + $iconfont + '.eot');
135
- // src: url('//at.alicdn.com/t/font_' + $iconfont + '.eot?#iefix') format('embedded-opentype'),
136
- // url('//at.alicdn.com/t/font_' + $iconfont + '.woff2') format('woff2'),
137
- // url('//at.alicdn.com/t/font_' + $iconfont + '.woff') format('woff'),
138
- // url('//at.alicdn.com/t/font_' + $iconfont + '.ttf') format('truetype'),
139
- // url('//at.alicdn.com/t/font_' + $iconfont + '.svg#ic') format('svg');
140
- //}
132
+ @font-face {
133
+ font-family: 'ic';
134
+ src: url('//at.alicdn.com/t/font_' + $iconfont + '.eot');
135
+ src: url('//at.alicdn.com/t/font_' + $iconfont + '.eot?#iefix') format('embedded-opentype'),
136
+ url('//at.alicdn.com/t/font_' + $iconfont + '.woff2') format('woff2'),
137
+ url('//at.alicdn.com/t/font_' + $iconfont + '.woff') format('woff'),
138
+ url('//at.alicdn.com/t/font_' + $iconfont + '.ttf') format('truetype'),
139
+ url('//at.alicdn.com/t/font_' + $iconfont + '.svg#ic') format('svg');
140
+ }
141
141
 
142
142
  @font-face {
143
143
  font-family: 'jetbrains-mono';
@@ -145,8 +145,8 @@ input, textarea {
145
145
  src: url("https://cdn.jsdelivr.net/gh/JetBrains/JetBrainsMono@2.242/fonts/webfonts/JetBrainsMono-Regular.woff2") format("woff2");
146
146
  }
147
147
 
148
- // TODO
149
- .fa {
148
+ .ic {
149
+ font-family: "ic" !important;
150
150
  -webkit-font-smoothing: antialiased;
151
151
  -moz-osx-font-smoothing: grayscale;
152
152
  text-align: center;
@@ -158,15 +158,11 @@ input, textarea {
158
158
  line-height: 1;
159
159
  }
160
160
 
161
- // TODO
162
-
163
- .fa em {
161
+ .ic em {
164
162
  font-size: 0;
165
163
  }
166
164
 
167
- // TODO
168
-
169
- .fa-lg {
165
+ .ic-lg {
170
166
  font-size: 1.33333em;
171
167
  line-height: .75em;
172
168
  vertical-align: -.0667em;
@@ -41,7 +41,7 @@
41
41
  cursor: not-allowed
42
42
  }
43
43
 
44
- .fa {
44
+ .ic {
45
45
  text-align: left;
46
46
  width: (18em / 14);
47
47
  }
@@ -13,10 +13,10 @@ if $colors = hexo-config('style.colors')
13
13
  else
14
14
  @import "_colors";
15
15
 
16
- //if $_iconfont = hexo-config('style.iconfont')
17
- // @import $_iconfont;
18
- //else
19
- // @import "_iconfont";
16
+ if $_iconfont = hexo-config('style.iconfont')
17
+ @import $_iconfont;
18
+ else
19
+ @import "_iconfont";
20
20
 
21
21
  // Scaffolding
22
22
  @import "_common/scaffolding";
@@ -25,16 +25,16 @@ let LOCAL_HASH = 0;
25
25
  let LOCAL_URL = window.location.href;
26
26
  let pjax;
27
27
  const changeTheme = function (type) {
28
- const btn = $dom('.theme .fa');
28
+ const btn = $dom('.theme .ic');
29
29
  if (type === 'dark') {
30
30
  HTML.attr('data-theme', type);
31
- btn.removeClass('fa-sunrise');
32
- btn.addClass('fa-moon-stars');
31
+ btn.removeClass('i-sun');
32
+ btn.addClass('i-moon');
33
33
  }
34
34
  else {
35
35
  HTML.attr('data-theme', null);
36
- btn.removeClass('fa-moon-stars');
37
- btn.addClass('fa-sunrise');
36
+ btn.removeClass('i-moon');
37
+ btn.addClass('i-sun');
38
38
  }
39
39
  };
40
40
  const autoDarkmode = function () {
@@ -163,12 +163,12 @@ const getScript = function (url, callback, condition) {
163
163
  };
164
164
  const assetUrl = function (asset, type) {
165
165
  const str = CONFIG[asset][type];
166
- if (str.indexOf('npm') > -1) {
167
- return `https://unpkg.com/${str}`;
168
- }
169
166
  if (str.indexOf('gh') > -1 || str.indexOf('combine') > -1) {
170
167
  return `https://cdn.jsdelivr.net/${str}`;
171
168
  }
169
+ if (str.indexOf('npm') > -1) {
170
+ return `https://unpkg.com/${str}`;
171
+ }
172
172
  if (str.indexOf('http') > -1) {
173
173
  return str;
174
174
  }
@@ -175,7 +175,7 @@ const postBeauty = function () {
175
175
  $dom.each('figure.highlight', function (element) {
176
176
  const code_container = element.child('.code-container');
177
177
  const caption = element.child('figcaption');
178
- element.insertAdjacentHTML('beforeend', '<div class="operation"><span class="breakline-btn"><i class="fa fa-solid fa-align-left"></i></span><span class="copy-btn"><i class="fa fa-solid fa-clipboard"></i></span><span class="fullscreen-btn"><i class="fa fa-solid fa-expand"></i></span></div>');
178
+ element.insertAdjacentHTML('beforeend', '<div class="operation"><span class="breakline-btn"><i class="ic i-align-left"></i></span><span class="copy-btn"><i class="ic i-clipboard"></i></span><span class="fullscreen-btn"><i class="ic i-expand"></i></span></div>');
179
179
  const copyBtn = element.child('.copy-btn');
180
180
  if (LOCAL.nocopy) {
181
181
  copyBtn.remove();
@@ -190,14 +190,14 @@ const postBeauty = function () {
190
190
  comma = '\n';
191
191
  });
192
192
  clipBoard(code, function (result) {
193
- target.child('.fa').className = result ? 'fa fa-solid fa-check' : 'fa fa-solid fa-times';
193
+ target.child('.ic').className = result ? 'ic i-check' : 'ic i-times';
194
194
  target.blur();
195
195
  showtip(LOCAL.copyright);
196
196
  });
197
197
  }, { passive: true });
198
198
  copyBtn.addEventListener('mouseleave', function (event) {
199
199
  setTimeout(function () {
200
- event.target.child('.fa').className = 'fa fa-solid fa-clipboard';
200
+ event.target.child('.ic').className = 'ic i-clipboard';
201
201
  }, 1000);
202
202
  });
203
203
  }
@@ -206,11 +206,11 @@ const postBeauty = function () {
206
206
  const target = event.currentTarget;
207
207
  if (element.hasClass('breakline')) {
208
208
  element.removeClass('breakline');
209
- target.child('.fa').className = 'fa fa-solid fa-align-left';
209
+ target.child('.ic').className = 'ic i-align-left';
210
210
  }
211
211
  else {
212
212
  element.addClass('breakline');
213
- target.child('.fa').className = 'fa fa-solid fa-align-justify';
213
+ target.child('.ic').className = 'ic i-align-justify';
214
214
  }
215
215
  });
216
216
  const fullscreenBtn = element.child('.fullscreen-btn');
@@ -218,7 +218,7 @@ const postBeauty = function () {
218
218
  element.removeClass('fullscreen');
219
219
  element.scrollTop = 0;
220
220
  BODY.removeClass('fullscreen');
221
- fullscreenBtn.child('.fa').className = 'fa fa-solid fa-expand';
221
+ fullscreenBtn.child('.ic').className = 'ic i-expand';
222
222
  };
223
223
  const fullscreenHandle = function (event) {
224
224
  const target = event.currentTarget;
@@ -234,7 +234,7 @@ const postBeauty = function () {
234
234
  else {
235
235
  element.addClass('fullscreen');
236
236
  BODY.addClass('fullscreen');
237
- fullscreenBtn.child('.fa').className = 'fa fa-solid fa-compress';
237
+ fullscreenBtn.child('.ic').className = 'ic i-compress';
238
238
  if (code_container && code_container.find('tr').length > 15) {
239
239
  const showBtn = code_container.child('.show-btn');
240
240
  code_container.style.maxHeight = '';
@@ -246,7 +246,7 @@ const postBeauty = function () {
246
246
  caption && caption.addEventListener('click', fullscreenHandle);
247
247
  if (code_container && code_container.find('tr').length > 15) {
248
248
  code_container.style.maxHeight = '300px';
249
- code_container.insertAdjacentHTML('beforeend', '<div class="show-btn"><i class="fa fa-solid fa-angle-down"></i></div>');
249
+ code_container.insertAdjacentHTML('beforeend', '<div class="show-btn"><i class="ic i-angle-down"></i></div>');
250
250
  const showBtn = code_container.child('.show-btn');
251
251
  const hideCode = function () {
252
252
  code_container.style.maxHeight = '300px';
@@ -414,7 +414,7 @@ const algoliaSearch = function (pjax) {
414
414
  if (!siteSearch) {
415
415
  siteSearch = BODY.createChild('div', {
416
416
  id: 'search',
417
- innerHTML: '<div class="inner"><div class="header"><span class="icon"><i class="fa fa-solid fa-magnifying-glass"></i></span><div class="search-input-container"></div><span class="close-btn"><i class="fa fa-solid fa-times-circle"></i></span></div><div class="results"><div class="inner"><div id="search-stats"></div><div id="search-hits"></div><div id="search-pagination"></div></div></div></div>'
417
+ innerHTML: '<div class="inner"><div class="header"><span class="icon"><i class="ic i-search"></i></span><div class="search-input-container"></div><span class="close-btn"><i class="ic i-times-circle"></i></span></div><div class="results"><div class="inner"><div id="search-stats"></div><div id="search-hits"></div><div id="search-pagination"></div></div></div></div>'
418
418
  });
419
419
  }
420
420
  const search = instantsearch({
@@ -459,7 +459,7 @@ const algoliaSearch = function (pjax) {
459
459
  container: '#search-hits',
460
460
  templates: {
461
461
  item: function (data) {
462
- const cats = data.categories ? '<span>' + data.categories.join('<i class="fa fa-solid fa-angle-right"></i>') + '</span>' : '';
462
+ const cats = data.categories ? '<span>' + data.categories.join('<i class="ic i-angle-right"></i>') + '</span>' : '';
463
463
  return '<a href="' + CONFIG.root + data.path + '">' + cats + data._highlightResult.title.value + '</a>';
464
464
  },
465
465
  empty: function (data) {
@@ -478,10 +478,10 @@ const algoliaSearch = function (pjax) {
478
478
  showFirst: false,
479
479
  showLast: false,
480
480
  templates: {
481
- first: '<i class="fa fa=solid fa-angle-double-left"></i>',
482
- last: '<i class="fa fa-solid fa-angle-double-right"></i>',
483
- previous: '<i class="fa fa-solid fa-angle-left"></i>',
484
- next: '<i class="fa fa-solid fa-angle-right"></i>'
481
+ first: '<i class="ic i-angle-double-left"></i>',
482
+ last: '<i class="ic i-angle-double-right"></i>',
483
+ previous: '<i class="ic i-angle-left"></i>',
484
+ next: '<i class="ic i-angle-right"></i>'
485
485
  },
486
486
  cssClasses: {
487
487
  root: 'pagination',
@@ -530,7 +530,7 @@ const domInit = function () {
530
530
  if (!toolBtn) {
531
531
  toolBtn = siteHeader.createChild('div', {
532
532
  id: 'tool',
533
- innerHTML: '<div class="item player"></div><div class="item contents"><i class="fa fa-solid fa-list-ol"></i></div><div class="item chat"><i class="fa fa-solid fa-comments"></i></div><div class="item back-to-top"><i class="fa fa-solid fa-arrow-up"></i><span>0%</span></div>'
533
+ innerHTML: '<div class="item player"></div><div class="item contents"><i class="ic i-list-ol"></i></div><div class="item chat"><i class="ic i-comments"></i></div><div class="item back-to-top"><i class="ic i-arrow-up"></i><span>0%</span></div>'
534
534
  });
535
535
  }
536
536
  toolPlayer = toolBtn.child('.player');
@@ -5,7 +5,7 @@ Vue.createApp({
5
5
  methods: {
6
6
  changeThemeByBtn() {
7
7
  let c;
8
- const btn = $dom('.theme').child('.fa');
8
+ const btn = $dom('.theme').child('.ic');
9
9
  const neko = BODY.createChild('div', {
10
10
  id: 'neko',
11
11
  innerHTML: '<div class="planet"><div class="sun"></div><div class="moon"></div></div><div class="body"><div class="face"><section class="eyes left"><span class="pupil"></span></section><section class="eyes right"><span class="pupil"></span></section><span class="nose"></span></div></div>'