hexo-theme-shokax 0.0.2-alpha3 → 0.0.4-alpha

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 CHANGED
@@ -25,6 +25,10 @@
25
25
  2. 您愿意接受长时间的等待(一般不超过15天)
26
26
  3. 您能够接受因代码质量等问题而提出的疑问,并愿意讨论是否接受更改
27
27
 
28
+ 有关issues的说明:
29
+ 1. 如果您愿意开发某 issues 的提议功能或修复 bug,建议在对应 issue 下评论说明一下,避免闭门造车和重复造轮子的惨剧
30
+ 2. 您应该在对应 PR 提交时绑定对应 issue,以便进行统计
31
+
28
32
  ## Github PR
29
33
  此处为在使用 Github PR 提交时应注意的事:
30
34
  - 默认你对 Git、GitHub 已经有了一定的了解,并且懂得使用 PR(此方面问题可以去讨论区发起 Q&A)
package/README.md CHANGED
@@ -9,16 +9,33 @@
9
9
  诞生原因是目前shoka已经两年没有更新了,积压了大量BUG和功能请求。\
10
10
  本项目处于高强度开发期,但github仓库版本已基本可用 \
11
11
  二次开发与常见问题请看wiki \
12
- `0.0.2-alpha2`开始,`lantern`和`qweather`已迁移为插件 \
13
- 插件系统已完工,食用方法见[awesome-shokaX](https://github.com/zkz098/awesome-shokaX)
12
+ `0.0.2-alpha2`开始,`lantern`和`qweather`已迁移为插件
14
13
 
15
- ## 和shoka的区别
14
+ shokaX的社区资源导航和插件仓库为[awesome-shokaX](https://github.com/zkz098/awesome-shokaX)
15
+
16
+ ## 💬 和shoka的区别
16
17
  原先shoka使用了javascript+Native+nunjucks的技术 \
17
18
  而shokaX则使用了typescript+Vue 3+Pug的技术搭配 \
18
19
  图标库可能会更换为Font Awesome 6 \
19
20
  更改了大量难以访问的CDN链接
20
21
 
21
- ## 如何安装?
22
+ ## ✨ 功能清单
23
+
24
+ | 功能名称 | 实现状态 | 功能名称 | 实现状态 |
25
+ |:--------:|:----:|:------------:|:----:|
26
+ | PWA支持 | ✅ | JSD拆分 | ✅ |
27
+ | 注入API | ✅ | 社区插件系统 | ✅ |
28
+ | 自定义字体 | ✅* | 自定义样式 | ✅* |
29
+ | 多种评论系统支持 | ✅ | 用户行为分析支持 | ✅ |
30
+ | 底部备案号 | ✅ | 自定义页尾 | ✅* |
31
+ | CSS渐变封面 | ✅ | typescript支持 | ✅^ |
32
+
33
+ 备注:
34
+ - *: 需要使用注入API实现
35
+ - ^: 仅page js部分,hexo script未实现
36
+
37
+
38
+ ## 🔧 如何安装?
22
39
  建议使用[ShokaX-CLI](https://github.com/zkz098/shokaX-CLI) ,执行下列命令即可:
23
40
  ```bash
24
41
  npm i shokax-cli --location=global
@@ -27,6 +44,15 @@ SXC install shokaX
27
44
  ```
28
45
  后续配置请点[这里](https://www.kaitaku.xyz/webbuild/shokaX/) 查看
29
46
 
47
+ releases及npm的版本号区别如下:
48
+ - x.x.x-alpha版本是早期测试版,部分未经测试环境测试,不能保证正常运行
49
+ - x.x.x-beta(目前还没有)是测试版,可以保证正常生成,但可能存在bug
50
+ - x.x.x是相对稳定的版本,基本上不存在严重BUG
51
+
52
+ github仓库建议通过右边的 releases 下载,步骤为:
53
+ - 点击 Releases 的 Latest 版本
54
+ - 下载 Assets 中的 `Source code(zip)`
55
+ - 解压即可作为主题使用
30
56
  # 许可证
31
57
  许可证: BSD-3-Clause \
32
58
  [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fzkz098%2Fhexo-theme-shokaX.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fzkz098%2Fhexo-theme-shokaX?ref=badge_large)
@@ -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="ic i-home")
4
+ i(class="fa fa-solid fa-house")
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="ic i-angle-right")
13
+ i(class="fa fa-solid fa-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="ic i-angle-right")
32
+ i(class="fa fa-solid fa-angle-right")
33
33
  != '</div>'
@@ -12,10 +12,11 @@ mixin CardRender(item)
12
12
  != item.top.name
13
13
  div(class="info")
14
14
  if item.link
15
- - var postTitleIcon = '<i class="ic i-link-alt"></i>'
15
+ - var postTitleIcon = '<i class="fa fa-solid fa-up-right-from-square"></i>'
16
16
  - var postText = itemname || item.link || __('post.untitled')
17
+ - var tempI = postText + (postTitleIcon || '')
17
18
  div(class="ribbon")
18
- != _url(item.link , postText + (postTitleIcon || ''), {itemprop: 'url', title: postText})
19
+ != _url(item.link , tempI , {itemprop: 'url', title: postText})
19
20
  div(class="inner")
20
21
  - var len = ''
21
22
  if item.child
@@ -30,8 +31,8 @@ mixin CardRender(item)
30
31
  div(class="meta footer")
31
32
  if item.top
32
33
  span
33
- != _url(item.top.path, '<i class="ic i-flag"></i>'+item.top.name, {itemprop: 'url', title: item.top.name})
34
+ != _url(item.top.path, '<i class="fa fa-solid fa-flag"></i>'+item.top.name, {itemprop: 'url', title: item.top.name})
34
35
  span
35
- i(class="ic i-file")
36
+ i(class="fa fa-solid fa-file")
36
37
  != len
37
38
  != _url(item.path, 'more...', {itemprop: 'url', title: itemname, class: 'btn'})
@@ -7,9 +7,9 @@ mixin CommentRender()
7
7
  script(type="text/javascript" data-pjax).
8
8
  setTimeout(function () {
9
9
  twikoo.init({
10
- envId: '#{ hexo.theme.config.twikoo.envId }',
10
+ envId: '#{ theme.twikoo.envId }',
11
11
  el: '#tcomments',
12
- region: '#{hexo.theme.config.twikoo?.region}'
12
+ region: '#{theme.twikoo.region}'
13
13
  })
14
14
  }, 1000)
15
15
  else if wl
@@ -21,18 +21,19 @@ mixin CommentRender()
21
21
  init({
22
22
  el: '#wcomments',
23
23
  serverURL: '#{hexo.theme.config.waline.serverURL}',
24
- lang: '#{hexo.theme.config.waline?.lang || 'zh-CN'}',
25
- locale: #{hexo.theme.config.waline?.locale || {}},
26
- emoji: #{hexo.theme.config.waline?.emoji || []},
27
- meta: #{hexo.theme.config.waline?.meta ?? ['nick', 'mail', 'link']},
28
- requiredMeta: #{hexo.theme.config.waline?.requiredMeta ?? ['nick', 'mail']},
29
- wordLimit: #{hexo.theme.config.waline?.wordLimit ?? 0},
30
- pageSize: #{hexo.theme.config.waline?.pageSize || 10}
24
+ lang: '#{hexo.theme.config.waline.lang}',
25
+ locale: #{hexo.theme.config.waline.locale},
26
+ emoji: #{hexo.theme.config.waline.emoji},
27
+ meta: #{hexo.theme.config.waline.meta},
28
+ requiredMeta: #{hexo.theme.config.waline.requiredMeta},
29
+ wordLimit: #{hexo.theme.config.waline.wordLimit},
30
+ pageSize: #{hexo.theme.config.waline.pageSize}
31
31
  });
32
32
  }, 1000)
33
33
  else if gt
34
34
  div(class="warp" id="gtcomments")
35
35
  script(type="text/javascript" data-pjax).
36
+ const gproxy = theme.gitalk.proxy || undefined
36
37
  const gitalk = new Gitalk({
37
38
  clientID: '#{theme.gitalk.clientID}',
38
39
  clientSecret: '#{theme.gitalk.clientSecret}',
@@ -41,7 +42,7 @@ mixin CommentRender()
41
42
  admin: #{theme.gitalk.admin},
42
43
  id: location.pathname, // Ensure uniqueness and length less than 50
43
44
  distractionFreeMode: false, // Facebook-like distraction free mode
44
- proxy: "#{theme.gitalk?.proxy || undefined}"
45
+ proxy: "#{gproxy}"
45
46
  });
46
47
  gitalk.render("gtcomments")
47
48
  else if gs
@@ -51,13 +52,13 @@ mixin CommentRender()
51
52
  data-repo-id="#{theme.giscus.repoId}"
52
53
  data-category="#{theme.giscus.category}"
53
54
  data-category-id="#{theme.giscus.categoryId}"
54
- data-mapping="#{theme.giscus.mapping || "pathname" }"
55
- data-strict="#{theme.giscus.strict || "1" }"
56
- data-reactions-enabled="#{theme.giscus.reactionsEnabled || "1"}"
57
- data-emit-metadata="#{theme.giscus.emitMetadata || "0"}"
58
- data-input-position="#{theme.giscus.inputPosition || "bottom"}"
59
- data-theme="#{theme.giscus.commentTheme || "preferred_color_scheme"}"
60
- data-lang="#{theme.giscus.lang || "zh-CN"}"
55
+ data-mapping="#{theme.giscus.mapping}"
56
+ data-strict="#{theme.giscus.strict}"
57
+ data-reactions-enabled="#{theme.giscus.reactionsEnabled}"
58
+ data-emit-metadata="#{theme.giscus.emitMetadata}"
59
+ data-input-position="#{theme.giscus.inputPosition}"
60
+ data-theme="#{theme.giscus.commentTheme}"
61
+ data-lang="#{theme.giscus.lang}"
61
62
  data-loading="lazy"
62
63
  crossorigin="anonymous"
63
64
  async
@@ -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="ic i-calendar")
8
+ i(class="fa fa-solid fa-calendar-days")
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="ic i-pen")
17
+ i(class="fa fa-solid fa-pen-nib")
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="ic i-clock")
26
+ i(class="fa fa-solid fa-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="ic i-link-alt"></i>'
7
+ - var postTitleIcon = '<i class="fa fa-solid fa-up-right-from-square"></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="ic i-flag"></i>' + lastcat.name, {itemprop: 'url', title: lastcat.name})
30
+ != _url(lastcat.path, '<i class="fa fa-solid fa-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="ic i-chevron-left"></i>', {rel: 'prev', title: __('post.prev')})
28
+ != _url(prevlink, '<i class="fa fa-solid fa-chevron-left"></i>', {rel: 'prev', title: __('post.prev')})
29
29
  li(class="up")
30
- i(class="ic i-arrow-up")
30
+ i(class="fa fa-solid fa-arrow-up")
31
31
  li(class="down")
32
- i(class="ic i-arrow-down")
32
+ i(class="fa fa-solid fa-arrow-down")
33
33
  li(class="next pjax")
34
34
  if nextlink
35
- != _url(nextlink, '<i class="ic i-chevron-right"></i>', {rel: 'next', title: __('post.next')})
35
+ != _url(nextlink, '<i class="fa fa-solid fa-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="ic i-link-alt"></i>'
3
+ - var postTitleIcon = '<i class="fa fa-solid fa-up-right-from-square"></i>'
4
4
  li(class="item")
5
5
  +BCRender(item, false)
6
6
  - var postText = item.title || item.link || __('post.untitled')
@@ -11,12 +11,12 @@ div(class="status")
11
11
  if theme.footer.count
12
12
  div(class="count")
13
13
  span(class="post-meta-item-icon")
14
- i(class="ic i-chart-area")
14
+ i(class="fa fa-solid fa-chart-area")
15
15
  span(title=__('symbols_count_time.count_total'))
16
16
  != `${ symbolsCountTotal(site) } ${__('symbols_count_time.word')}`
17
17
  span(class="post-meta-divider") |
18
18
  span(class="post-meta-item-icon")
19
- i(class="ic i-coffee")
19
+ i(class="fa fa-solid fa-coffee")
20
20
  span(title=__('symbols_count_time.time_total'))
21
21
  != symbolsTimeTotal(site, config.symbols_count_time.awl, config.symbols_count_time.wpm, __('symbols_count_time.time_minutes'))
22
22
  //- span(id="timeDate")
@@ -33,6 +33,7 @@ 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
  - var debugVue = theme?.experiments?.debug
37
38
  if debugVue
38
39
  script(src="https://cdn.staticfile.org/vue/3.2.45/vue.global.js")
@@ -48,4 +49,9 @@ else if gt
48
49
  link(rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css")
49
50
  script(src="https://unpkg.com/gitalk/dist/gitalk.min.js")
50
51
 
51
-
52
+ - var qw = theme.qweather.enable
53
+ if qw
54
+ style.
55
+ img[data-v-7d48daab] {
56
+ max-width: 2em !important;
57
+ }
@@ -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="ic" :class="{'i-sun': !themeStatus,'i-moon': themeStatus}")
14
+ i(class="fa fa-solid fa-sunrise")
15
15
  li(class="item search")
16
- i(class="ic i-search")
16
+ i(class="fa fa-solid fa-magnifying-glass")
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="ic i-creative-commons"></i>'
68
+ - var ccIcon = '<i class="fa fa-solid fa-creative-commons"></i>'
69
69
  - var ccText = theme.creative_commons.license.toUpperCase()
70
70
  <script data-config type="text/javascript" >
71
71
  | var LOCAL = {
@@ -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="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})
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})
@@ -1,5 +1,5 @@
1
1
  if page.copyright !== false
2
- - var ccIcon = '<i class="ic i-creative-commons"><em>(CC)</em></i>'
2
+ - var ccIcon = '<i class="fa fa-brands fa-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="ic i-at")
10
+ i(class="fa fa-solid fa-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="ic i-eye")
4
+ i(class="fa fa-solid fa-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="ic i-calendar-check")
9
+ i(class="fa fa-solid fa-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="ic i-flag"></i>${lastcat?.name}</span><h3>${ postText }</h3>`
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>`
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="ic i-tag")
20
+ i(class="fa fa-solid fa-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="ic i-heartbeat")
4
+ i(class="fa fa-solid fa-heart-pulse")
5
5
  != __('reward.donate')
6
6
  p
7
7
  != __('reward.text')
@@ -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="ic i-link-alt"></i>'
106
+ - var postTitleIcon = '<i class="fa fa-solid fa-up-right-from-square"></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="ic i-link-alt"></i>'
56
+ - var postTitleIcon = '<i class="fa fa-solid fa-up-right-from-square"></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="ic i-link-alt"></i>'
19
+ - var postTitleIcon = '<i class="fa fa-solid fa-up-right-from-square"></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="ic i-link-alt"></i>'
20
+ - var postTitleIcon = '<i class="fa fa-solid fa-up-right-from-square"></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="ic i-link-alt"></i>'
36
+ - var postTitleIcon = '<i class="fa fa-solid fa-up-right-from-square"></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.2-alpha3",
3
+ "version": "0.0.4-alpha",
4
4
  "description": "a hexo theme based on shoka",
5
5
  "main": "index.js",
6
6
  "repository": "https://github.com/zkz098/hexo-theme-shokaX",
@@ -145,6 +145,7 @@ 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
148
149
  .ic {
149
150
  font-family: "ic" !important;
150
151
  -webkit-font-smoothing: antialiased;
@@ -158,15 +159,39 @@ input, textarea {
158
159
  line-height: 1;
159
160
  }
160
161
 
162
+ .fa {
163
+ -webkit-font-smoothing: antialiased;
164
+ -moz-osx-font-smoothing: grayscale;
165
+ text-align: center;
166
+ width: 1.25em;
167
+ display: inline-block;
168
+ font-style: normal;
169
+ font-variant: normal;
170
+ text-rendering: auto;
171
+ line-height: 1;
172
+ }
173
+
174
+ // TODO
161
175
  .ic em {
162
176
  font-size: 0;
163
177
  }
164
178
 
179
+ .fa em {
180
+ font-size: 0;
181
+ }
182
+
183
+ // TODO
165
184
  .ic-lg {
166
185
  font-size: 1.33333em;
167
186
  line-height: .75em;
168
187
  vertical-align: -.0667em;
169
188
  }
189
+
190
+ .fa-lg {
191
+ font-size: 1.33333em;
192
+ line-height: .75em;
193
+ vertical-align: -.0667em;
194
+ }
170
195
  //.weather {
171
196
  // color: var(--text-color) !important;
172
197
  //}
@@ -43,12 +43,7 @@ const autoDarkmode = function () {
43
43
  changeTheme('dark');
44
44
  }
45
45
  else {
46
- if (window.matchMedia('(prefers-color-scheme:dark)').matches) {
47
- changeTheme('dark');
48
- }
49
- else {
50
- changeTheme();
51
- }
46
+ changeTheme();
52
47
  }
53
48
  }
54
49
  };
@@ -149,7 +149,7 @@ const getScript = function (url, callback, condition) {
149
149
  else {
150
150
  let script = document.createElement('script');
151
151
  script.onload = function (_, isAbort) {
152
- if (isAbort || !script.readyState || /loaded|complete/.test(script.readyState)) {
152
+ if (isAbort || !script.readyState) {
153
153
  console.log("abort!");
154
154
  script.onload = null;
155
155
  script = undefined;
@@ -288,7 +288,7 @@ const pjaxScript = function (element) {
288
288
  }
289
289
  parent.appendChild(script);
290
290
  };
291
- const pageScroll = function (target, offset, complete) {
291
+ const pageScrollOld = function (target, offset, complete) {
292
292
  const opt = {
293
293
  targets: typeof offset === 'number' ? target.parentNode : document.scrollingElement,
294
294
  duration: 500,
@@ -300,3 +300,27 @@ const pageScroll = function (target, offset, complete) {
300
300
  };
301
301
  anime(opt);
302
302
  };
303
+ const pageScroll = (target, offset, complete) => {
304
+ const opt = {
305
+ left: 0,
306
+ behavior: "smooth"
307
+ };
308
+ if (typeof target === "number") {
309
+ opt.top = target;
310
+ }
311
+ else {
312
+ if (typeof target === 'number') {
313
+ opt.top = offset || target;
314
+ }
315
+ else {
316
+ if (offset || target) {
317
+ opt.top = target.top() + document.documentElement.scrollTop - siteNavHeight;
318
+ }
319
+ else {
320
+ opt.top = 0;
321
+ }
322
+ }
323
+ }
324
+ scrollTo(opt);
325
+ complete && complete();
326
+ };