diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md
new file mode 100644
index 0000000..f8dd2fa
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug-report.md
@@ -0,0 +1,48 @@
+---
+name: 错误报告(Bug Report)
+about: 没有达到预期的效果(Something isn't working as expected)
+labels: bug
+---
+
+请按照此 Issue 模版提供相关信息,例如源码仓库、网站链接和屏幕截图,这将有助于我们进行调查。
+(Please follow this Issue template to provide relevant information, such as source code repository, website URL and screenshots, which will help us investigate.)
+
+
+## 问题自检列表 (Issue Checklist)
+
+> 请确认如下情况已检查,并将 [ ] 换成 [x] 来选择 (Change [ ] to [x] to selected which your could make sure)
+
+- [ ] 已使用 Hugo Extended 0.86.0 或更高的版本 (I'm using Hugo Extended version 0.86.0 or later)
+- [ ] 已使用 Hugo NexT 4.0 或更高的版本 (I'm using Hugo NexT version 4.0 or later)
+- [ ] 已阅读 [Hugo 故障排除](https://gohugo.io/troubleshooting/)并尝试修复无果 (I had already read the [Troubleshooting page of Hugo](https://gohugo.io/troubleshooting/))
+- [ ] 已搜索过当前所有[已知问题](https://github.com/hugo-next/hugo-theme-next/issues)和[讨论区](https://github.com/hugo-next/hugo-theme-next/discussions/categories/q-a) ,但没有找到帮助 (I had already searched for current [Issues](https://github.com/hugo-next/hugo-theme-next/issues) and [Q & A](https://github.com/hugo-next/hugo-theme-next/discussions/categories/q-a), which does not help me.)
+
+***
+
+## 预期行为 (Expected behavior)
+
+> 请描述你想实现的预期效果 (Please describe the expected behavior what you want)
+
+
+## 实际行为 (Actual behavior)
+
+> 请同时提供网站链接、屏幕截图和源码地址 (Please provide your site links, screenshots and code repository)
+
+
+## 问题重现步骤 (Steps to reproduce the behavior)
+
+
+
+## 环境信息 (Environment Information)
+
+### 主题配置(Configuration)
+
+> 提供主题 `config.yaml` 中修改过的部分内容 (Paste ONLY CHANGED CONFIGURATION from `config.yaml`)
+
+```yaml
+
+```
+
+## 其他有用信息 (Other Information)
+
+> 例如:操作系统、浏览器等 (e.g. Browser, System)
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000..38000e8
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,5 @@
+blank_issues_enabled: false
+contact_links:
+ - name: GitHub Discussions
+ url: https://github.com/hugo-next/hugo-theme-next/discussions/categories/q-a
+ about: 请在此处提问或回答问题(Please ask and answer questions here)
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md
new file mode 100644
index 0000000..81e2772
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature-request.md
@@ -0,0 +1,15 @@
+---
+name: 新功能请求(Feature Request)
+about: Suggest an idea for this project
+labels: feature request
+---
+
+请按照此新功能模版提供相关信息,如详细的功能描述或同类效果屏幕截图,这将有助于我们进行调查。
+(Please follow this new feature template to provide relevant information, such as detail description for feature or some screenshots, which will help us investigate.)
+
+
+## 新功能描述 (New feature description)
+
+
+## 效果参考截图 (Screenshots if it possible)
+
diff --git a/.gitignore b/.gitignore
index 470f243..1a75d43 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,6 @@
# Ignore files in Hugo NexT theme
-.hugo_build.lock
-
-exampleSite/public
-exampleSite/resources
\ No newline at end of file
+exampleSite/
+!exampleSite/content
+!exampleSite/start.sh
+!exampleSite/config.yaml
\ No newline at end of file
diff --git a/README.md b/README.md
index cd4ff8f..79a0b81 100644
--- a/README.md
+++ b/README.md
@@ -1,16 +1,119 @@
-# Hugo theme of NexT
+[中文](README.zh.md) | [English](#)
-
+
+
+
-Start a new journey for Hugo's theme of NexT.
+## Hugo NexT
-# Our Vision
+«Hugo NexT» is a high quality elegant [Hugo](https://gohugo.io) theme. Migrate it from `Hexo` engine themes which name is [`NexT`](https://github.com/next-theme/hexo-theme-next), keep all kind page layout designs and 4 different shcemes, start new journey with :heart: and hope you would like it.
-Make `NexT` theme is easily & powerful.
+> All page designs & configuration compatibility with Hexo NexT, it's very easy migrate your site from Hexo to Hugo and enjoy yourself.
-# Preview
+[](https://gitter.im/hugo-next/community) [](https://github.com/gohugoio/hugo/releases/latest) [](https://github.com/hugo-next/hugo-theme-next) [](https://github.com/hugo-next/hugo-theme-next/find/main) [](https://github.com/hugo-next/hugo-theme-next/blob/main/LICENSE)
+
+## 4 Scheme
+
+* :heart_decoration: Muse
+* :six_pointed_star: Mist
+* :pisces: Pisces
+* :gemini: Gemini (**default**)
+
+## Live Preview
| Environment | :gemini: (**Default**) | :heart_decoration: | :six_pointed_star: | :pisces: | Status |
| :---: | :---: | :---: | :---: | :---: | :---: |
-| Preliminary | [Gemini](https://hugo-next-dev.vercel.app/) | [Muse](https://hugo-next-dev.vercel.app/muse/) | [Mist](https://hugo-next-dev.vercel.app/mist/) | [Pisces](https://hugo-next-dev.vercel.app/pisces/) |  |
-| Production | [Gemini](https://hugo-next-prod.vercel.app/) | [Muse](https://hugo-next-prod.vercel.app/muse/) | [Mist](https://hugo-next-prod.vercel.app/mist/) | [Pisces](https://hugo-next-prod.vercel.app/pisces/) |  |
\ No newline at end of file
+| Preliminary | [Gemini](https://preview.hugo-next.eu.org/) | [Muse](https://preview.hugo-next.eu.org/muse/) | [Mist](https://preview.hugo-next.eu.org/mist/) | [Pisces](https://preview.hugo-next.eu.org/pisces/) |  |
+| Production | [Gemini](https://hugo-next.eu.org/) | [Muse](https://hugo-next.eu.org/muse/) | [Mist](https://hugo-next.eu.org/mist/) | [Pisces](https://hugo-next.eu.org/pisces/) |  |
+
+> Preliminary: all new feature developments will be previewed as soon as possible.
+> Production: Only the features that are tested stably and meet the requirements will be officially released.
+
+## Quick Start
+
+Before use `Hugo NexT` theme, please make sure installed `Git` & `Hugo Extened` software in your PC, then use `submodule` to lead into the theme, see below commands:
+
+```shell
+$ hugo new site hugo-next-exmaple
+$ cd hugo-next-exmaple
+$ git init
+$ hugo submodule add https://github.com/hugo-next/hugo-theme-next.git themes/hugo-theme-next
+$ cp -r themes/hugo-theme-next/exampleSite/* .
+$ rm -rf config.toml
+$ hugo server
+```
+
+Done that input adrress http://127.0.0.1:1313/ on browser will see the effect & good luck for you! :tada::tada::tada:
+
+## New Post
+
+There had ready a new post template for you, It is recommended to use the following Hugo command to quickly create a new post:
+
+```sh
+$ hugo new posts/hello-world.md
+```
+
+Descript front matter in post as below:
+
+
+```yml
+---
+title: "{{ replace .Name "-" " " | title }}"
+description: "{{ .Name }}"
+keywords: "{{replace .Name "-" ","}}"
+
+date: {{ .Date }}
+lastmod: {{ .Date }}
+
+categories:
+ -
+tags:
+ -
+ -
+
+# Post's origin author name
+#author:
+# Post's origin link URL
+#link:
+# Image source link that will use in open graph and twitter card
+#imgs:
+# Expand content on the home page
+#expand: true
+# It's means that will redirecting to external links
+#extlink:
+# Switch to enabled or disabled comment plugins in this post
+#comment:
+# enable: false
+# Enable table of content
+#toc: false
+# Absolute link for visit
+#url: "{{ lower .Name }}.html"
+# Sticky post set-top in home page and the smaller nubmer will more forward.
+#weight: 1
+---
+```
+
+## Feedback
+
+- Join us [GitHub Discussions](https://github.com/hugo-next/hugo-theme-next/discussions) or [Gitter](https://gitter.im/hugo-next/community) to chat :beers:
+- [GitHub Issues](https://github.com/hugo-next/hugo-theme-next/issues/new?labels=Bug&template=bug-report.md) submit a new bug :bug:
+- [GitHub Feature](https://github.com/hugo-next/hugo-theme-next/issues/new?labels=Feature+Request&template=feature-request.md) tell me your ideas :sparkles:
+
+## Join us
+
+All features development progress and new request in [Hugo NexT V4 Roadmap](https://github.com/hugo-next/hugo-theme-next/issues/9), welcome to join us and compelete it together.
+
+## License
+
+[MIT License](LICENSE)
+
+## Thanks
+
+That's my hobby to develop `Hugo NexT` theme, thanks all people who gived the donate, and let we follow it growth up.
+
+List of Donors(Order by Date):
+
+| Donation time | Donors | Donation mode | Donation content | Message |
+| ------- | ------ | ------ | ---- | ---- |
+| 2021.12.21 | z*y | wechat pay | RMB 18.88 | / |
+| 2022.05.08 | *泉 | wechat pay | RMB 6.60 | Good luck with next develop. |
\ No newline at end of file
diff --git a/README.zh.md b/README.zh.md
new file mode 100644
index 0000000..32011f6
--- /dev/null
+++ b/README.zh.md
@@ -0,0 +1,125 @@
+[中文](#) | [English](README.md)
+
+
+
+
+
+## Hugo NexT
+
+«Hugo NexT» 是一款高质量且优雅的 [Hugo](https://gohugo.io) 主题,从原来 `Hexo` 引擎的 [`NexT`](https://github.com/next-theme/hexo-theme-next) 主题中移植过来,继续保留其经典的设计和 4 种不同页面布局模式,一切因 :heart: 重新出发愿你也能喜欢。
+
+> 本主题的所有页面设计和配置项都与原来 `Hexo` 引擎的 `NexT` 主题保持了良好的兼容性,可以非常平滑的从 `Hexo` 迁移至 `Hugo` 引擎,欢迎大家使用并反馈。
+
+[](https://gitter.im/hugo-next/community) [](https://github.com/gohugoio/hugo/releases/latest) [](https://github.com/hugo-next/hugo-theme-next) [](https://github.com/hugo-next/hugo-theme-next/find/main) [](https://github.com/hugo-next/hugo-theme-next/blob/main/LICENSE)
+
+## 4 种页面模式
+
+* :heart_decoration: 冥想 (Muse)
+* :six_pointed_star: 迷雾 (Mist)
+* :pisces: 双鱼座 (Pisces)
+* :gemini: 双子座 (Gemini) (**默认**)
+
+## 在线预览
+
+| 环境 | :gemini: (**Default**) | :heart_decoration: | :six_pointed_star: | :pisces: | 状态 |
+| :---: | :---: | :---: | :---: | :---: | :---: |
+| 开发版本 | [双子座](https://preview.hugo-next.eu.org/) | [冥想](https://preview.hugo-next.eu.org/muse/) | [迷雾](https://preview.hugo-next.eu.org/mist/) | [双鱼座](https://preview.hugo-next.eu.org/pisces/) |  |
+| 正式版本 | [双子座](https://hugo-next.eu.org/) | [冥想](https://hugo-next.eu.org/muse/) | [迷雾](https://hugo-next.eu.org/mist/) | [双鱼座](https://hugo-next.eu.org/pisces/) |  |
+
+> 开发版本: 所有的新功能开发都会在此第一时间发布预览
+> 正式版本: 只有测试稳定且符合要求的功能才会正式发布
+
+## 快速开始
+
+在使用 `Hugo NexT` 主题之前,请确认你的电脑上已经安装 `Git` 和 `Hugo Extened` 两款软件,然后通过 `submodule` 模式引用本主题,参考如下命令:
+
+```shell
+$ hugo new site hugo-next-exmaple
+$ cd hugo-next-exmaple
+$ git init
+$ hugo submodule add https://github.com/hugo-next/hugo-theme-next.git themes/hugo-theme-next
+$ cp -r themes/hugo-theme-next/exampleSite/* .
+$ rm -rf config.toml
+$ hugo server
+```
+打开浏览器,在地址栏输入 http://127.0.0.1:1313/ 查看主题效果,祝你好运!:tada::tada::tada:
+
+> 本主题的代码同时也同步到 `Gitee` 仓库,在国内环境可切换用 [https://gitee.com/hugo-next/hugo-theme-next.git](https://gitee.com/hugo-next/hugo-theme-next.git) 镜像速度更快,也更稳定。
+
+## 发表新文章
+
+主题已经配置了默认的文章模板,建议使用如下 Hugo 命令快速创建新的文章:
+
+```sh
+$ hugo new posts/hello-world.md
+```
+
+关于文章头部的那些标记作用的说明参考如下:
+
+
+```yml
+---
+# 文章标题
+title: "{{ replace .Name "-" " " | title }}"
+# 文章内容摘要
+description: "{{ .Name }}"
+# 文章内容关键字
+keywords: "{{replace .Name "-" ","}}"
+# 发表日期
+date: {{ .Date }}
+# 最后修改日期
+lastmod: {{ .Date }}
+# 分类
+categories:
+ -
+# 标签
+tags:
+ -
+ -
+
+# 原文作者
+#author:
+# 原文链接
+#link:
+# 图片链接,用在open graph和twitter卡片上
+#imgs:
+# 在首页展开内容
+#expand: true
+# 外部链接地址,访问时直接跳转
+#extlink:
+# 在当前页面开启或关闭评论功能
+#comment:
+# enable: false
+# 开启文章目录功能
+#toc: false
+# 绝对访问路径
+#url: "{{ lower .Name }}.html"
+# 开启文章置顶,数字越小越靠前
+#weight: 1
+---
+```
+
+## 使用反馈
+
+- 加入 [GitHub Discussions](https://github.com/hugo-next/hugo-theme-next/discussions) 或 [Gitter](https://gitter.im/hugo-next/community) 在线讨论 :beers:
+- [GitHub Issues](https://github.com/hugo-next/hugo-theme-next/issues/new?labels=Bug&template=bug-report.md) 提交错误报告 :bug:
+- [GitHub Feature](https://github.com/hugo-next/hugo-theme-next/issues/new?labels=Feature+Request&template=feature-request.md) 表新功能的想法 :sparkles:
+
+## 欢迎加入
+
+关于本主题的开发进度和后续的发展路线图,可访问 [Hugo NexT V4 Roadmap](https://github.com/hugo-next/hugo-theme-next/issues/9) 查看详情,也欢迎大家参与一起来完善。
+
+## 许可证
+
+[MIT License](LICENSE)
+
+## 致谢
+
+开发 `Hugo NexT` 主题原本是个人的业余爱好,但没想到网友们这么的热情,感谢有你们的支持,让我们一起来见证它的成长。
+
+以下是捐助名单列表(按时间顺序):
+
+| 捐助时间 | 捐助者 | 捐助方式 | 捐助内容 | 留言 |
+| :-------: | ------ | ------ | ---- | ---- |
+| 2021.12.21 | z*y | 微信支付 | ¥18.88 | / |
+| 2022.05.08 | *泉 | 微信支付 | ¥6.60 | 祝开发next顺利 |
\ No newline at end of file
diff --git a/VERSION b/VERSION
new file mode 100644
index 0000000..0c89fc9
--- /dev/null
+++ b/VERSION
@@ -0,0 +1 @@
+4.0.0
\ No newline at end of file
diff --git a/assets/css/_common/components/third-party/utterances.scss b/assets/css/_common/components/third-party/utterances.scss
index d324d55..c888764 100644
--- a/assets/css/_common/components/third-party/utterances.scss
+++ b/assets/css/_common/components/third-party/utterances.scss
@@ -1,5 +1,7 @@
-@if $utterances_enable {
- .utterances {
- max-width: unset;
- }
-}
+// TODO maybe use for next time
+// @if $utterances_enable {
+// .utterances {
+// max-width: unset;
+// min-height: 300px;
+// }
+// }
diff --git a/assets/css/_common/outline/footer/index.scss b/assets/css/_common/outline/footer/index.scss
index 154186c..1c6964a 100644
--- a/assets/css/_common/outline/footer/index.scss
+++ b/assets/css/_common/outline/footer/index.scss
@@ -21,6 +21,14 @@
@include flex-column();
@include main-container();
+ @include mobile() {
+ font-size: $font-size-smaller;
+ }
+
+ @include mobile-small() {
+ font-size: $font-size-smallest;
+ }
+
@if $footer_vendors_enable {
.vendors-list {
a {
@@ -30,6 +38,19 @@
img {
display: inline-block;
}
+
+ $footer_vendors_imgs_len: length($footer_vendors_imgs_width);
+ @if ($footer_vendors_imgs_len>0) {
+ @for $i from 1 through $footer_vendors_imgs_len {
+ a:nth-child(#{$i}) img {
+ width: #{nth($footer_vendors_imgs_width, $i)}px;
+
+ @include mobile() {
+ width: #{nth($footer_vendors_imgs_width, $i)-10}px;
+ }
+ }
+ }
+ }
}
}
}
@@ -40,24 +61,6 @@
}
}
-@keyframes icon-animate {
- 0%, 100% {
- transform: scale(1);
- }
-
- 10%, 30% {
- transform: scale(.9);
- }
-
- 20%, 40%, 60%, 80% {
- transform: scale(1.1);
- }
-
- 50%, 70% {
- transform: scale(1.1);
- }
-}
-
.languages {
display: inline-block;
font-size: $font-size-large;
@@ -83,7 +86,7 @@
margin: 0 5px;
@if $footer_icon_animated {
- animation: icon-animate 1.33s ease-in-out infinite;
+ animation: beat 1.33s ease-in-out infinite;
}
}
diff --git a/static/css/hover.css b/assets/css/_common/scaffolding/animation/hover.scss
similarity index 100%
rename from static/css/hover.css
rename to assets/css/_common/scaffolding/animation/hover.scss
diff --git a/assets/css/_common/scaffolding/animation/icon.scss b/assets/css/_common/scaffolding/animation/icon.scss
new file mode 100644
index 0000000..704c6f3
--- /dev/null
+++ b/assets/css/_common/scaffolding/animation/icon.scss
@@ -0,0 +1,17 @@
+@keyframes beat {
+ 0%, 100% {
+ transform: scale(1);
+ }
+
+ 10%, 30% {
+ transform: scale(.9);
+ }
+
+ 20%, 40%, 60%, 80% {
+ transform: scale(1.1);
+ }
+
+ 50%, 70% {
+ transform: scale(1.1);
+ }
+}
\ No newline at end of file
diff --git a/assets/css/_common/scaffolding/animation/index.scss b/assets/css/_common/scaffolding/animation/index.scss
new file mode 100644
index 0000000..5df9ebe
--- /dev/null
+++ b/assets/css/_common/scaffolding/animation/index.scss
@@ -0,0 +1,3 @@
+@import 'icon';
+@import 'show';
+@import 'hover';
\ No newline at end of file
diff --git a/assets/css/_common/scaffolding/animation/show.scss b/assets/css/_common/scaffolding/animation/show.scss
new file mode 100644
index 0000000..4c0fd6b
--- /dev/null
+++ b/assets/css/_common/scaffolding/animation/show.scss
@@ -0,0 +1,65 @@
+// tabshow animation
+@-moz-keyframes tabshow {
+ 0% {
+ -webkit-transform: translateY(15px);
+ -moz-transform: translateY(15px);
+ -o-transform: translateY(15px);
+ -ms-transform: translateY(15px);
+ transform: translateY(15px);
+ }
+ 100% {
+ -webkit-transform: translateY(0);
+ -moz-transform: translateY(0);
+ -o-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+ }
+}
+@-webkit-keyframes tabshow {
+ 0% {
+ -webkit-transform: translateY(15px);
+ -moz-transform: translateY(15px);
+ -o-transform: translateY(15px);
+ -ms-transform: translateY(15px);
+ transform: translateY(15px);
+ }
+ 100% {
+ -webkit-transform: translateY(0);
+ -moz-transform: translateY(0);
+ -o-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+ }
+}
+@-o-keyframes tabshow {
+ 0% {
+ -webkit-transform: translateY(15px);
+ -moz-transform: translateY(15px);
+ -o-transform: translateY(15px);
+ -ms-transform: translateY(15px);
+ transform: translateY(15px);
+ }
+ 100% {
+ -webkit-transform: translateY(0);
+ -moz-transform: translateY(0);
+ -o-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+ }
+}
+@keyframes tabshow {
+ 0% {
+ -webkit-transform: translateY(15px);
+ -moz-transform: translateY(15px);
+ -o-transform: translateY(15px);
+ -ms-transform: translateY(15px);
+ transform: translateY(15px);
+ }
+ 100% {
+ -webkit-transform: translateY(0);
+ -moz-transform: translateY(0);
+ -o-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+ }
+}
\ No newline at end of file
diff --git a/assets/css/_common/scaffolding/comments.scss b/assets/css/_common/scaffolding/comments.scss
index a0402cd..3891762 100644
--- a/assets/css/_common/scaffolding/comments.scss
+++ b/assets/css/_common/scaffolding/comments.scss
@@ -43,8 +43,32 @@
margin-top: 60px;
}
+ min-height: 300px;
overflow: hidden;
+ .comment-loading {
+ @if $sidebar_position == 'right' {
+ padding-right: $sidebar-desktop + $sidebar-offset;
+ } @else {
+ padding-left: $sidebar-desktop + $sidebar-offset;
+ }
+
+ position: absolute;
+ left: 0;
+ right: 0;
+ margin-left: auto;
+ margin-right: auto;
+ margin-top: 100px;
+ text-align: center;
+ font-size: 2em;
+
+ @include tablet-mobile() {
+ padding-left: 0;
+ padding-right: 0;
+ width: auto;
+ }
+ }
+
.comment-head {
margin-bottom: 20px;
@@ -53,6 +77,9 @@
vertical-align: middle;
font-weight: 700;
font-size: 1.4em;
+ @include mobile-small() {
+ font-size: $font-size-smaller;
+ }
}
@if $two_comments_enable {
@@ -61,16 +88,16 @@
float: right;
margin: 2px auto;
padding: 4px 16px;
+ @include mobile-small() {
+ font-size: $font-size-smaller;
+ padding: 4px;
+ }
width: max-content;
border-radius: 8px;
- background: #eee;
+ background: var(--card-bg-color);
.first-comment {
color: $first_comment_color;
-
- @if $two_comments_actived==$first_comment_name {
- font-weight: bold;
- }
}
.second-comment {
@@ -82,11 +109,12 @@
}
$switch_btn_bg_color: $first_comment_color;
+ $switch_btn_move_bc: $second_comment_color;
.switch-btn {
position: relative;
display: inline-block;
- margin: -4px 8px 0;
+ margin: 5px;
width: 42px;
height: 22px;
border-radius: 34px;
@@ -100,6 +128,7 @@
@if $two_comments_actived==$second_comment_name {
$switch_btn_bg_color: $second_comment_color;
+ $switch_btn_move_bc: $first_comment_color;
}
background-color: $switch_btn_bg_color;
@@ -120,7 +149,11 @@
transition: .4s
}
- &.move:before {
+ &.move {
+ background-color: $switch_btn_move_bc;
+ }
+
+ &.move:before {
-webkit-transform: translateX(20px);
-moz-transform: translateX(20px);
-o-transform: translateX(20px);
@@ -129,6 +162,7 @@
}
}
}
+
}
}
diff --git a/assets/css/_common/scaffolding/highlight/copy-code.scss b/assets/css/_common/scaffolding/highlight/copy-code.scss
index 0b28ff4..63d538c 100644
--- a/assets/css/_common/scaffolding/highlight/copy-code.scss
+++ b/assets/css/_common/scaffolding/highlight/copy-code.scss
@@ -1,40 +1,57 @@
-.highlight:hover .copy-btn, pre:hover .copy-btn {
- opacity: 1;
-}
-.copy-btn {
- color: $black-dim;
- cursor: pointer;
- line-height: 1.6;
- opacity: 0;
- padding: 2px 6px;
- position: absolute;
- transition: opacity $transition-ease;
+.highlight {
- @if $codeblock_copy_btn_style == 'flat' {
- background: white;
- border: 0;
- font-size: $font-size-smaller;
- right: 0;
- top: 0;
- } @else if $codeblock_copy_btn_style == 'mac' {
- color: var(--highlight-foreground);
- font-size: 14px;
- right: 0;
- top: 2px;
- } @else {
- background-color: $gainsboro;
- background-image: linear-gradient(#fcfcfc, $gainsboro);
- border: 1px solid #d5d5d5;
- border-radius: 3px;
- font-size: $font-size-smaller;
- right: 4px;
- top: 8px;
+ background: var(--highlight-background);
+
+ .table-container, pre {
+ position: relative;
+ }
+
+ .table-container table tbody tr {
+ background: none;
}
}
-@if $codeblock_copy_btn_style == 'mac' {
- figure.highlight {
+@if $codeblock_copy_btn_enable {
+
+ .highlight:hover .copy-btn, pre:hover .copy-btn {
+ opacity: 1;
+ }
+
+ .copy-btn {
+ color: $black-dim;
+ cursor: pointer;
+ line-height: 1.6;
+ opacity: 0;
+ padding: 2px 6px;
+ position: absolute;
+ right: 8px;
+ top: 4px;
+ transition: opacity $transition-ease;
+ background: var(--highlight-background);
+
+ @if $codeblock_style == 'flat' {
+ background: white;
+ border: 0;
+ font-size: $font-size-smaller;
+
+ } @else if $codeblock_style == 'mac' {
+ color: var(--highlight-foreground);
+ font-size: 14px;
+ border-radius: 3px;
+ } @else {
+ background-color: $gainsboro;
+ background-image: linear-gradient(#fcfcfc, $gainsboro);
+ border: 1px solid #d5d5d5;
+ border-radius: 3px;
+ font-size: $font-size-smaller;
+
+ }
+ }
+}
+
+@if $codeblock_style == 'mac' {
+ .highlight {
border-radius: 5px;
box-shadow: 0 10px 30px 0 rgba(0, 0, 0, .4);
padding-top: 30px;
@@ -46,10 +63,10 @@
&::before {
background: #fc625d;
box-shadow: 20px 0 #fdbc40, 40px 0 #35cd4b;
- left: 12px;
margin-top: -20px;
+ margin-left: 10px;
position: absolute;
@include round-icon(12px);
}
}
-}
+}
\ No newline at end of file
diff --git a/assets/css/_common/scaffolding/highlight/index.scss b/assets/css/_common/scaffolding/highlight/index.scss
index 8181783..68c6fcc 100644
--- a/assets/css/_common/scaffolding/highlight/index.scss
+++ b/assets/css/_common/scaffolding/highlight/index.scss
@@ -1,58 +1,25 @@
-// Use `@use` to fix issue #67
-// TODO find way to import file by dynmatic
-// @import '(theme.highlight.enable && theme.highlight.light.file) ? theme.highlight.light.file : null';
-// @import '(theme.prism.enable && theme.prism.light) ? theme.prism.light : null';
-// @import '(theme.prism.enable && theme.prism.number) ? theme.prism.number : null';
+@import 'copy-code';
-/* @media (prefers-color-scheme: dark) {
- @import '(theme.darkmode && theme.highlight.enable && theme.highlight.dark.file) ? theme.highlight.dark.file : null';
- @import '(theme.darkmode && theme.prism.enable && theme.prism.dark) ? theme.prism.dark : null';
-} */
-
-// @import 'theme.codeblock.copy_button.enable ? "copy-code" : null';
-
-// Placeholder: %code-inline %code-block
%code-inline {
background: var(--highlight-background);
color: var(--highlight-foreground);
}
-%code-block {
- @extend %code-inline;
- line-height: $line-height-code-block;
- margin: 0 auto 20px;
+pre {
+ padding: 10px;
+ margin: 0;
}
-%figcaption {
- background: var(--highlight-gutter-background);
- color: var(--highlight-foreground);
- display: flow-root;
- font-size: $table-font-size;
- line-height: 1.2;
- padding: .5em;
-
- a {
- color: var(--highlight-foreground);
- float: right;
-
- &:hover {
- border-bottom-color: var(--highlight-foreground);
- }
- }
+p > code, li > code {
+ @extend %code-inline;
+ border-radius: 3px;
+ padding: 3px 6px;
}
pre, code {
font-family: $code-font-family;
- color: #fff;
}
-code {
- @extend %code-inline;
- border-radius: 3px;
- font-size: $table-font-size;
- padding: 2px 4px;
- @include word-wrap();
-}
kbd {
@extend %code-inline;
@@ -62,82 +29,4 @@ kbd {
font-family: inherit;
padding: .1em .3em;
white-space: nowrap;
- color: #fff;
-}
-
-// `highlight.line_number: false` and `highlight.wrap: false`
-// in Hexo config generates code.highlight elements
-figure.highlight {
- @extend %code-block;
- position: relative;
-
- pre {
- border: 0;
- margin: 0;
- padding: 10px 0;
- }
-
- table {
- border: 0;
- margin: 0;
- width: auto;
- }
-
- td {
- border: 0;
- padding: 0;
- }
-
- figcaption {
- @extend %figcaption;
- }
-
- .gutter {
- @include disable-user-select();
-
- pre {
- background: var(--highlight-gutter-background);
- color: var(--highlight-gutter-foreground);
- padding-left: 10px;
- padding-right: 10px;
- text-align: right;
- }
- }
-
- .code pre {
- padding-left: 10px;
- width: 100%;
- }
-
- // See https://github.com/next-theme/hexo-theme-next/discussions/410
- .marked {
- background: rgba(0, 0, 0, .3);
- }
-}
-
-// See https://github.com/hexojs/hexo-util/pull/229
-pre .caption, pre figcaption {
- @extend %figcaption;
- margin-bottom: 10px;
-}
-
-.gist table {
- width: auto;
-
- td {
- border: 0;
- }
-}
-
-pre {
- @extend %code-block;
- overflow: auto;
- padding: 10px;
- position: relative;
-
- code {
- background: none;
- padding: 0;
- text-shadow: none;
- }
-}
+}
\ No newline at end of file
diff --git a/assets/css/_common/scaffolding/index.scss b/assets/css/_common/scaffolding/index.scss
index 5cd24ed..2fb5cb7 100644
--- a/assets/css/_common/scaffolding/index.scss
+++ b/assets/css/_common/scaffolding/index.scss
@@ -11,3 +11,4 @@
@import 'pagination';
@import 'comments';
@import 'fontawesome';
+@import 'animation';
diff --git a/assets/css/_mixins.scss b/assets/css/_mixins.scss
index 9e435a8..10b2ebe 100644
--- a/assets/css/_mixins.scss
+++ b/assets/css/_mixins.scss
@@ -64,7 +64,7 @@
}
@mixin sidebar-inline-links-item() {
- margin: 5px 0 0;
+ margin: 5px 0;
a {
box-sizing: border-box;
diff --git a/assets/css/_schemes/Pisces/_sidebar.scss b/assets/css/_schemes/Pisces/_sidebar.scss
index c8a5715..d3ec63c 100644
--- a/assets/css/_schemes/Pisces/_sidebar.scss
+++ b/assets/css/_schemes/Pisces/_sidebar.scss
@@ -75,7 +75,7 @@
@if $links_settings_layout == 'inline' {
display: inline-block;
max-width: 100%;
- @include sidebar-inline-links-item();
+ margin: 5px;
}
}
@@ -83,7 +83,7 @@
// Only when back2top.sidebar is true, apply the following styles
.back-to-top {
background: var(--body-bg-color);
- margin: 8px - $sidebar-offset -10px -18px;
+ margin: 8px -#{$sidebar-offset} -10px -18px;
&.back-to-top-on {
margin-top: 16px;
diff --git a/assets/css/main.scss b/assets/css/main.scss
index b214e0a..718a92c 100644
--- a/assets/css/main.scss
+++ b/assets/css/main.scss
@@ -1,136 +1,150 @@
-// CSS Style Guide: https://codeguide.co/#css
+// CSS Style Guide : https://codeguide.co/#css
// All variables from site's config content.
{{- $P := .Site.Params }}
// Base
-$scheme: {{ $P.scheme }};
-$darkmode: {{ $P.darkmode }};
+$scheme : {{ $P.scheme }};
+$darkmode : {{ $P.darkmode }};
-$body_scrollbar_overlay: {{ $P.bodyScrollbar.overlay }};
-$body_scrollbar_stable: {{ $P.bodyScrollbar.stable }};
-$mermaid_enable: {{ $P.mermaid.enable }};
-$mobile_layout_economy: {{ $P.mobileLayoutEconomy }};
-$theme_color_dark: {{ $P.themeColor.dark }};
-$theme_color_light: {{ $P.themeColor.light }};
+$body_scrollbar_overlay : {{ $P.bodyScrollbar.overlay }};
+$body_scrollbar_stable : {{ $P.bodyScrollbar.stable }};
+$mermaid_enable : {{ $P.mermaid.enable }};
+$mobile_layout_economy : {{ $P.mobileLayoutEconomy }};
+$theme_color_dark : {{ $P.themeColor.dark }};
+$theme_color_light : {{ $P.themeColor.light }};
// Header
-$bookmark_color: {{ $P.bookmark.color }};
-$bookmark_enable: {{ $P.bookmark.enable }};
-$github_banner_enable: {{ $P.githubBanner.enable }};
-$menu_settings_badges: {{ $P.menuSets.badges }};
+$bookmark_color : {{ $P.bookmark.color }};
+$bookmark_enable : {{ $P.bookmark.enable }};
+$github_banner_enable : {{ $P.githubBanner.enable }};
+$menu_settings_badges : {{ $P.menuSets.badges }};
// Footer
-$footer_icon_color: {{ $P.footer.icon.color }};
-$footer_icon_animated: {{ $P.footer.icon.animated }};
-$footer_beian_enable: {{ $P.footer.beian.enable }};
-$footer_vendors_enable: {{ isset $P.footer "vendors" }};
+$footer_icon_color : {{ $P.footer.icon.color }};
+$footer_icon_animated : {{ $P.footer.icon.animated }};
+$footer_beian_enable : {{ $P.footer.beian.enable }};
+$footer_vendors_enable : {{ isset $P.footer "vendors" }};
+{{ with $P.footer.vendors }}
+{{ $width := slice "start" }}
+{{ range .list }}
+{{ if .image }}
+{{ $width = $width | append .image.width }}
+{{ end }}
+{{ end }}
+{{ printf "$footer_vendors_imgs_width:%s;" (delimit (after 1 $width) ", ") }}
+{{ end }}
// Counter
-$busuanzi_enable: {{ $P.busuanzi.enable }};
-$busuanzi_visitors: {{ $P.busuanzi.visitors }};
-$busuanzi_views: {{ $P.busuanzi.views }};
-$busuanzi_post_views: {{ $P.busuanzi.postViews }};
+$busuanzi_enable : {{ $P.busuanzi.enable }};
+$busuanzi_visitors : {{ $P.busuanzi.visitors }};
+$busuanzi_views : {{ $P.busuanzi.views }};
+$busuanzi_post_views : {{ $P.busuanzi.postViews }};
// Font
-$font_enable: {{ $P.font.enable }};
-$font_global_size: {{ default $P.font.global.size 1 }};
-$font_headings_size: {{ default $P.font.headings.size 1.625 }};
-$font_title_size: {{ default $P.font.title.size 1.375 }};
+$font_enable : {{ $P.font.enable }};
+$font_global_size : {{ default $P.font.global.size 1 }};
+$font_headings_size : {{ default $P.font.headings.size 1.625 }};
+$font_title_size : {{ default $P.font.title.size 1.375 }};
// Code & Code blocks
// TODO find the configure variable
-$highlight_dark_background: #000;
-$highlight_dark_foreground: #222;
-$highlight_light_background: #000;
-$highlight_light_foreground: #222;
+$highlight_dark_background : #1c1b1b;
+$highlight_dark_foreground : #fff;
+$highlight_light_background : #565656;
+$highlight_light_foreground : #fff;
-$codeblock_copy_btn_style: {{ $P.codeblock.copyBtn.style }};
+$codeblock_copy_btn_enable : {{ $P.codeblock.copyBtn }};
+$codeblock_style : {{ $P.codeblock.style }};
// Sidebar
-$sidebar_offset: {{ $P.sidebar.offset }};
-$sidebar_padding: {{ $P.sidebar.padding }};
-$sidebar_position: {{ $P.sidebar.position }};
-$sidebar_width: {{ $P.sidebar.width }};
+$sidebar_offset : {{ $P.sidebar.offset }};
+$sidebar_padding : {{ $P.sidebar.padding }};
+$sidebar_position : {{ $P.sidebar.position }};
+$sidebar_width : {{ $P.sidebar.width }};
-$motion_enable: {{ $P.motion.enable }};
-$motion_transition_sidebar: {{ $P.motion.transition.sidebar }};
+$motion_enable : {{ $P.motion.enable }};
+$motion_transition_sidebar : {{ $P.motion.transition.sidebar }};
-$back2top_enable: {{ $P.backTop.enable }};
-$back2top_scrollpercent: {{ $P.backTop.scrollpercent }};
-$back2top_sidebar: {{ $P.backTop.sidebar }};
+$back2top_enable : {{ $P.backTop.enable }};
+$back2top_scrollpercent : {{ $P.backTop.scrollpercent }};
+$back2top_sidebar : {{ $P.backTop.sidebar }};
-$avatar_rotated: {{ $P.avatar.rotated }};
-$avatar_rounded: {{ $P.avatar.rounded }};
-$avatar_rounded: {{ $P.avatar.rounded }};
-$site_state: {{ $P.siteState }};
-$social_icons_only: {{ $P.socialIcons.iconsOnly }};
-$social_icons_transition: {{ $P.socialIcons.transition }};
-$links_settings_layout: {{ $P.linksSets.layout }};
-$toc_enable: {{ $P.toc.enable }};
-$toc_expand_all: {{ $P.toc.expandAll }};
-$toc_wrap: {{ $P.toc.wrap }};
+$avatar_rotated : {{ $P.avatar.rotated }};
+$avatar_rounded : {{ $P.avatar.rounded }};
+$avatar_rounded : {{ $P.avatar.rounded }};
+$site_state : {{ $P.siteState }};
+$social_icons_only : {{ $P.socialIcons.iconsOnly }};
+$social_icons_transition : {{ $P.socialIcons.transition }};
+$links_settings_layout : {{ $P.linksSets.layout }};
+$toc_enable : {{ $P.toc.enable }};
+$toc_expand_all : {{ $P.toc.expandAll }};
+$toc_wrap : {{ $P.toc.wrap }};
// Posts
-$creative_commons_post: {{ $P.creativeCommons.post }};
-$follow_me: {{ isset $P "followme" }};
-$motion_trans_coll_header: {{ $P.motion.transition.collHeader }};
-$motion_trans_post_block: {{ $P.motion.transition.postBlock }};
-$motion_trans_post_body: {{ $P.motion.transition.postBody }};
-$motion_trans_post_header: {{ $P.motion.transition.postHeader }};
-$post_edit_enable: {{ $P.postEdit.enable }};
-$post_meta_item_text: {{ $P.postMeta.itemText }};
-$reward_settings_animation: {{ $P.rewardSets.animation }};
-$post_end_tag_icon: {{ $P.postFooter.tagIcon }};
+$creative_commons_post : {{ $P.creativeCommons.post }};
+$follow_me : {{ isset $P "followme" }};
+$motion_trans_coll_header : {{ $P.motion.transition.collHeader }};
+$motion_trans_post_block : {{ $P.motion.transition.postBlock }};
+$motion_trans_post_body : {{ $P.motion.transition.postBody }};
+$motion_trans_post_header : {{ $P.motion.transition.postHeader }};
+$post_edit_enable : {{ $P.postEdit.enable }};
+$post_meta_item_text : {{ $P.postMeta.itemText }};
+$reward_settings_animation : {{ $P.rewardSets.animation }};
+$post_end_tag_icon : {{ $P.postFooter.tagIcon }};
// TODO find the paramters
-$text_align_desktop: justify;
-$text_align_mobile: justify;
+$text_align_desktop : {{ $P.textAlign.desktop }};
+$text_align_mobile : {{ $P.textAlign.mobile }};
// Note
-$note_icons: {{ $P.note.icons }};
-$note_light_bg_offset: {{ $P.note.lightBgOffset }};
-$note_style: {{ $P.note.style }};
+$note_icons : {{ $P.note.icons }};
+$note_light_bg_offset : {{ $P.note.lightBgOffset }};
+$note_style : {{ $P.note.style }};
// Tabs
-$tabs_transition_labels: {{ $P.tabs.transition.labels }};
-$tabs_transition_tabs: {{ $P.tabs.transition.tabs }};
+$tabs_transition_labels : {{ $P.tabs.transition.labels }};
+$tabs_transition_tabs : {{ $P.tabs.transition.tabs }};
// Reading progress bar
-$reading_progress_start: {{ $P.readingProgress.start }};
-$reading_progress_color: {{ $P.readingProgress.color }};
-$reading_progress_enable: {{ $P.readingProgress.enable }};
-$reading_progress_height: {{ $P.readingProgress.height }};
-$reading_progress_position: {{ $P.readingProgress.position }};
-$reading_progress_reversed: {{ $P.readingProgress.reversed }};
+$reading_progress_start : {{ $P.readingProgress.start }};
+$reading_progress_color : {{ $P.readingProgress.color }};
+$reading_progress_enable : {{ $P.readingProgress.enable }};
+$reading_progress_height : {{ $P.readingProgress.height }};
+$reading_progress_position : {{ $P.readingProgress.position }};
+$reading_progress_reversed : {{ $P.readingProgress.reversed }};
// Thirdparty
-$math_mathjax_enable: {{ $P.math.mathjax.enable }};
-$related_posts_enable: {{ $P.relatedPosts.enable }};
-$pdf_enable: {{ $P.pdf.enable }};
-$pdf_height: {{ $P.pdf.height }};
+$math_mathjax_enable : {{ $P.math.mathjax.enable }};
+// TODO
+//$related_posts_enable : {{ $P.relatedPosts.enable }};
+$related_posts_enable : false;
+$pdf_enable : {{ $P.pdf.enable }};
+$pdf_height : {{ $P.pdf.height }};
// Search engine
-$algolia_search_enable: {{ $P.algoliaSearch.enable }};
-$local_search_enable: {{ $P.localSearch.enable }};
+$algolia_search_enable : {{ $P.algoliaSearch.enable }};
+$local_search_enable : {{ $P.localSearch.enable }};
// Online IM
-$gitalk_enable: {{ $P.gitalk.enable }};
-$gitter_enable: {{ $P.gitter.enable }};
+//$gitalk_enable : {{ $P.gitalk.enable }};
+$gitalk_enable : false;
+$gitter_enable : {{ $P.gitter.enable }};
// Comment
-$disqusjs_enable: {{ $P.disqusjs.enable }};
-$livere_enable: {{ $P.livere.enable }};
-$utterances_enable: {{ $P.utterances.enable }};
-$waline_enable: {{ $P.waline.enable }};
+//$disqusjs_enable : {{ $P.disqusjs.enable }};
+$disqusjs_enable : false;
+$livere_enable : {{ isset $P.livere "uid" }};
+$utterances_enable : {{ isset $P.utterances "utterances" }};
+$waline_enable : {{ isset $P.waline "serverurl" }};
{{- with .Site.Params.comments }}
-{{ $tce := and (isset . "nav") (and .storage (gt (len .nav) 1)) }}
-$two_comments_enable: {{ $tce }};
+{{- $tce := and (isset . "nav") (and .storage (gt (len .nav) 1)) }}
+$two_comments_enable : {{ $tce }};
{{- if $tce }}
-{{- $sortNav := sort .nav "weight" }}
-$two_comments_actived: {{ .active }};
-$first_comment_color: {{ (index $sortNav 0).color }};
-$first_comment_name: {{ lower (index $sortNav 0).name }};
-$second_comment_color: {{ (index $sortNav 1).color }};
-$second_comment_name: {{ lower (index $sortNav 1).name }};
+{{- $sortNav := sort .nav "weight" }}
+$two_comments_actived : {{ .active }};
+$first_comment_color : {{ (index $sortNav 0).color }};
+$first_comment_name : {{ lower (index $sortNav 0).name }};
+$second_comment_color : {{ (index $sortNav 1).color }};
+$second_comment_name : {{ lower (index $sortNav 1).name }};
{{- end }}
{{- end }}
diff --git a/assets/js/config.js b/assets/js/config.js
index caa0075..cde3ea8 100644
--- a/assets/js/config.js
+++ b/assets/js/config.js
@@ -1,66 +1,51 @@
if (!window.NexT) window.NexT = {};
(function() {
- const className = 'next-config';
- const staticConfig = {};
- let variableConfig = {};
-
- const parse = text => JSON.parse(text || '{}');
-
- const update = name => {
- const targetEle = document.querySelector(`.${className}[data-name="${name}"]`);
- if (!targetEle) return;
- const parsedConfig = parse(targetEle.text);
- if (name === 'main') {
- Object.assign(staticConfig, parsedConfig);
- } else {
- variableConfig[name] = parsedConfig;
+ const siteConfig = {
+ "hostname" : "{{ .Site.BaseURL }}",
+ "root" : "/",
+ "images" : "{{ .Site.Params.images }}",
+ "scheme" : "{{ .Site.Params.scheme }}",
+ "darkmode" : {{ .Site.Params.darkmode }},
+ "version" : "{{ .Site.Data.config.version }}",
+ "sidebar" : {{ .Site.Params.sidebar | jsonify }},
+ "copybtn" : {{ .Site.Params.codeblock.copyBtn }},
+ "bookmark" : {{ .Site.Params.bookmark | jsonify }},
+ "comments" : {{ .Site.Params.comments | jsonify }},
+ "lazyload" : {{ .Site.Params.lazyload }},
+ "pangu" : {{ .Site.Params.pangu }},
+ "stickytabs" : {{ .Site.Params.tabs.sticky }},
+ "motion" : {{ .Site.Params.motion | jsonify }},
+ // TODO Find prismjs
+ //"prism" : "",
+ "i18n" : {
+ "placeholder" : "",
+ "empty" : "${query}",
+ "hits_time" : "'${hits}', '${time}'",
+ "hits" : "${hits}"
+ },
+ {{- if .Site.Params.algoliaSearch.enable }}
+ // TODO
+ "algolia" : {
+ "appID" : "",
+ "apiKey" : "",
+ "indexName" : "",
+ "hits" : ""
}
+ {{- end }}
+ {{- if .Site.Params.localSearch.enable }}
+ // TODO
+ "path" : "/search.json",
+ "localsearch": {{ .Site.Params.localSearch | jsonify }},
+ {{- end }}
+ "lang" : "{{ .Site.LanguageCode }}",
+ "permalink" : "{{ .Page.Permalink | absURL }}",
+ "title" : "{{ .Page.Title }}",
+ "isHome" : {{ .IsHome }},
+ "isPage" : {{ .IsPage }}
};
+
+ window.CONFIG = new Proxy(siteConfig, {});
- update('main');
-
- window.CONFIG = new Proxy({}, {
- get(overrideConfig, name) {
- let existing;
- if (name in staticConfig) {
- existing = staticConfig[name];
- } else {
- if (!(name in variableConfig)) update(name);
- existing = variableConfig[name];
- }
-
- // For unset override and mixable existing
- if (!(name in overrideConfig) && typeof existing === 'object') {
- // Get ready to mix.
- overrideConfig[name] = {};
- }
-
- if (name in overrideConfig) {
- const override = overrideConfig[name];
-
- // When mixable
- if (typeof override === 'object' && typeof existing === 'object') {
- // Mix, proxy changes to the override.
- return new Proxy({ ...existing, ...override }, {
- set(target, prop, value) {
- target[prop] = value;
- override[prop] = value;
- return true;
- }
- });
- }
-
- return override;
- }
-
- // Only when not mixable and override hasn't been set.
- return existing;
- }
- });
-
- document.addEventListener('pjax:success', () => {
- variableConfig = {};
- });
-})();
+})();
\ No newline at end of file
diff --git a/assets/js/motion.js b/assets/js/motion.js
index 2f38249..f98867e 100644
--- a/assets/js/motion.js
+++ b/assets/js/motion.js
@@ -82,7 +82,7 @@ NexT.motion.middleWares = {
postList: function() {
const sequence = [];
- const { post_block, post_header, post_body, coll_header } = CONFIG.motion.transition;
+ const { postblock, postheader, postbody, collheader } = CONFIG.motion.transition;
function animate(animation, selector) {
if (!animation) return;
@@ -95,10 +95,10 @@ NexT.motion.middleWares = {
});
}
- animate(post_block, '.post-block, .pagination, .comments');
- animate(coll_header, '.collection-header');
- animate(post_header, '.post-header');
- animate(post_body, '.post-body');
+ animate(postblock, '.post-block, .pagination, .post-comments');
+ animate(collheader, '.collection-header');
+ animate(postheader, '.post-header');
+ animate(postbody, '.post-body');
return sequence;
},
diff --git a/assets/js/next-boot.js b/assets/js/next-boot.js
index dedb54b..66bb821 100644
--- a/assets/js/next-boot.js
+++ b/assets/js/next-boot.js
@@ -37,20 +37,22 @@ NexT.boot.refresh = function() {
* Register JS handlers by condition option.
* Need to add config option in Front-End at 'scripts/helpers/next-config.js' file.
*/
- CONFIG.prism && window.Prism.highlightAll();
+ //CONFIG.prism && window.Prism.highlightAll();
/*CONFIG.mediumzoom && window.mediumZoom('.post-body :not(a) > img, .post-body > img', {
background: 'var(--content-bg-color)'
});*/
CONFIG.lazyload && window.lozad('.post-body img').observe();
CONFIG.pangu && window.pangu.spacingPage();
- CONFIG.exturl && NexT.utils.registerExtURL();
- NexT.utils.registerCopyCode();
+ CONFIG.isPage && NexT.utils.replacePostCRLink();
+ CONFIG.isPage && CONFIG.copybtn && NexT.utils.registerCopyCode();
NexT.utils.registerTabsTag();
/*NexT.utils.registerActiveMenuItem();
NexT.utils.registerLangSelect();*/
- NexT.utils.registerSidebarTOC();
- NexT.utils.registerPostReward();
+ CONFIG.isPage && NexT.utils.registerSidebarTOC();
+ CONFIG.isPage && NexT.utils.registerPostReward();
+ CONFIG.isPage && NexT.utils.initCommontesDispaly();
+ CONFIG.isPage && NexT.utils.registerCommonSwitch();
NexT.utils.wrapTableWithBox();
NexT.utils.registerVideoIframe();
};
diff --git a/assets/js/utils.js b/assets/js/utils.js
index 4b95e07..3baa4de 100644
--- a/assets/js/utils.js
+++ b/assets/js/utils.js
@@ -23,35 +23,29 @@ HTMLElement.prototype.wrap = function(wrapper) {
NexT.utils = {
- registerExtURL: function() {
- document.querySelectorAll('span.exturl').forEach(element => {
- const link = document.createElement('a');
- // https://stackoverflow.com/questions/30106476/using-javascripts-atob-to-decode-base64-doesnt-properly-decode-utf-8-strings
- link.href = decodeURIComponent(atob(element.dataset.url).split('').map(c => {
- return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
- }).join(''));
- link.rel = 'noopener external nofollow noreferrer';
- link.target = '_blank';
- link.className = element.className;
- link.title = element.title;
- link.innerHTML = element.innerHTML;
- element.parentNode.replaceChild(link, element);
- });
+ replacePostCRLink: function() {
+ if (CONFIG.hostname.startsWith('http')) return;
+ // Try to support mutli domain without base URL sets.
+ let href = window.location.href;
+ if (href.indexOf('#')>-1){
+ href = href.split('#')[0];
+ }
+ let postLink = document.getElementById('post-cr-link');
+ if (!postLink) return;
+ postLink.text = href;
+ postLink.href = href;
},
/**
* One-click copy code support.
*/
registerCopyCode: function() {
- let figure = document.querySelectorAll('figure.highlight');
- if (figure.length === 0) figure = document.querySelectorAll('pre:not(.mermaid)');
+ let figure = document.querySelectorAll('.highlight pre');
+ if (figure.length === 0 || !CONFIG.copybtn) return;
figure.forEach(element => {
- element.querySelectorAll('.code .line span').forEach(span => {
- span.classList.forEach(name => {
- span.classList.replace(name, `hljs-${name}`);
- });
- });
- if (!CONFIG.copycode) return;
+ let cn = element.querySelector('code').className;
+ // TODO seems hard code need find other ways fixed it.
+ if (cn == '') return;
element.insertAdjacentHTML('beforeend', '