From 759ca1417771550b4ade83085432c5bd813a68af Mon Sep 17 00:00:00 2001
From: Nofated <49985975+Nofated095@users.noreply.github.com>
Date: Fri, 31 Dec 2021 14:45:27 +0800
Subject: [PATCH] Delete themes/icarus directory
---
themes/icarus/.eslintignore | 1 -
themes/icarus/.eslintrc.json | 68 ----
.../icarus/.github/ISSUE_TEMPLATE/Bug反馈.md | 39 ---
.../.github/ISSUE_TEMPLATE/bug_report.md | 39 ---
.../icarus/.github/ISSUE_TEMPLATE/config.yml | 20 --
.../.github/ISSUE_TEMPLATE/feature_request.md | 26 --
.../icarus/.github/ISSUE_TEMPLATE/功能建议.md | 26 --
.../pull_request_template.md | 30 --
themes/icarus/.github/dependabot.yml | 6 -
themes/icarus/.github/stale.yml | 32 --
.../.github/workflows/github-release.yml | 20 --
themes/icarus/.github/workflows/lint.yml | 15 -
.../icarus/.github/workflows/npm-publish.yml | 18 -
themes/icarus/.github/workflows/test.yml | 39 ---
themes/icarus/.gitignore | 116 -------
themes/icarus/.npmignore | 5 -
themes/icarus/CONTRIBUTING.md | 40 ---
themes/icarus/LICENSE | 21 --
themes/icarus/README.md | 158 ---------
themes/icarus/include/config.js | 107 ------
themes/icarus/include/dependency.js | 34 --
themes/icarus/include/migration/head.js | 1 -
themes/icarus/include/migration/v2_v3.js | 102 ------
themes/icarus/include/migration/v3_v4.js | 14 -
themes/icarus/include/register.js | 15 -
themes/icarus/include/schema/comment/.gitkeep | 0
.../icarus/include/schema/common/article.json | 64 ----
.../icarus/include/schema/common/comment.json | 41 ---
.../icarus/include/schema/common/donates.json | 29 --
.../icarus/include/schema/common/footer.json | 28 --
themes/icarus/include/schema/common/head.json | 31 --
.../icarus/include/schema/common/navbar.json | 40 ---
.../icarus/include/schema/common/plugins.json | 56 ---
.../include/schema/common/providers.json | 26 --
.../icarus/include/schema/common/search.json | 20 --
.../icarus/include/schema/common/share.json | 23 --
.../icarus/include/schema/common/sidebar.json | 30 --
.../icarus/include/schema/common/widgets.json | 48 ---
themes/icarus/include/schema/config.json | 78 -----
themes/icarus/include/schema/donate/.gitkeep | 0
themes/icarus/include/schema/misc/.gitkeep | 0
.../icarus/include/schema/plugin/animejs.json | 7 -
.../include/schema/plugin/back_to_top.json | 7 -
themes/icarus/include/schema/search/.gitkeep | 0
themes/icarus/include/schema/share/.gitkeep | 0
.../icarus/include/schema/widget/profile.json | 92 -----
themes/icarus/include/style/article.styl | 194 -----------
themes/icarus/include/style/base.styl | 99 ------
themes/icarus/include/style/button.styl | 8 -
themes/icarus/include/style/card.styl | 18 -
themes/icarus/include/style/codeblock.styl | 105 ------
themes/icarus/include/style/donate.styl | 58 ----
themes/icarus/include/style/footer.styl | 20 --
themes/icarus/include/style/helper.styl | 162 ---------
themes/icarus/include/style/navbar.styl | 53 ---
themes/icarus/include/style/pagination.styl | 32 --
themes/icarus/include/style/plugin.styl | 128 -------
themes/icarus/include/style/responsive.styl | 32 --
themes/icarus/include/style/search.styl | 204 -----------
themes/icarus/include/style/timeline.styl | 38 ---
themes/icarus/include/style/widget.styl | 65 ----
themes/icarus/include/util/console.js | 15 -
themes/icarus/languages/de.yml | 65 ----
themes/icarus/languages/en.yml | 65 ----
themes/icarus/languages/es.yml | 66 ----
themes/icarus/languages/fr.yml | 65 ----
themes/icarus/languages/id.yml | 65 ----
themes/icarus/languages/ja.yml | 65 ----
themes/icarus/languages/ko.yml | 65 ----
themes/icarus/languages/pl.yml | 65 ----
themes/icarus/languages/pt-BR.yml | 65 ----
themes/icarus/languages/ru.yml | 65 ----
themes/icarus/languages/tk.yml | 65 ----
themes/icarus/languages/tr.yml | 65 ----
themes/icarus/languages/vn.yml | 65 ----
themes/icarus/languages/zh-CN.yml | 65 ----
themes/icarus/languages/zh-TW.yml | 65 ----
themes/icarus/layout/archive.jsx | 62 ----
themes/icarus/layout/categories.jsx | 10 -
themes/icarus/layout/category.jsx | 26 --
themes/icarus/layout/comment/.gitkeep | 0
themes/icarus/layout/common/article.jsx | 125 -------
themes/icarus/layout/common/comment.jsx | 30 --
themes/icarus/layout/common/donates.jsx | 34 --
themes/icarus/layout/common/footer.jsx | 92 -----
themes/icarus/layout/common/head.jsx | 167 ---------
themes/icarus/layout/common/navbar.jsx | 119 -------
themes/icarus/layout/common/plugins.jsx | 27 --
themes/icarus/layout/common/scripts.jsx | 42 ---
themes/icarus/layout/common/search.jsx | 22 --
themes/icarus/layout/common/share.jsx | 22 --
themes/icarus/layout/common/widgets.jsx | 103 ------
themes/icarus/layout/donate/.gitkeep | 0
themes/icarus/layout/index.jsx | 22 --
themes/icarus/layout/layout.jsx | 43 ---
themes/icarus/layout/misc/.gitkeep | 0
themes/icarus/layout/page.jsx | 10 -
themes/icarus/layout/plugin/animejs.jsx | 22 --
themes/icarus/layout/plugin/back_to_top.jsx | 29 --
themes/icarus/layout/post.jsx | 10 -
themes/icarus/layout/search/.gitkeep | 0
themes/icarus/layout/share/.gitkeep | 0
themes/icarus/layout/tag.jsx | 23 --
themes/icarus/layout/tags.jsx | 10 -
themes/icarus/layout/widget/profile.jsx | 156 ---------
themes/icarus/package.json | 53 ---
themes/icarus/scripts/index.js | 29 --
themes/icarus/source/css/cyberpunk.styl | 321 ------------------
themes/icarus/source/css/default.styl | 1 -
themes/icarus/source/css/style.styl | 18 -
themes/icarus/source/img/avatar.png | Bin 17955 -> 0 bytes
themes/icarus/source/img/favicon.svg | 6 -
themes/icarus/source/img/logo.svg | 9 -
themes/icarus/source/img/og_image.png | Bin 57197 -> 0 bytes
.../icarus/source/img/razor-bottom-black.svg | 3 -
themes/icarus/source/img/razor-top-black.svg | 3 -
themes/icarus/source/js/.eslintrc.json | 8 -
themes/icarus/source/js/animation.js | 45 ---
themes/icarus/source/js/back_to_top.js | 152 ---------
themes/icarus/source/js/column.js | 12 -
themes/icarus/source/js/main.js | 137 --------
121 files changed, 5822 deletions(-)
delete mode 100644 themes/icarus/.eslintignore
delete mode 100644 themes/icarus/.eslintrc.json
delete mode 100644 themes/icarus/.github/ISSUE_TEMPLATE/Bug反馈.md
delete mode 100644 themes/icarus/.github/ISSUE_TEMPLATE/bug_report.md
delete mode 100644 themes/icarus/.github/ISSUE_TEMPLATE/config.yml
delete mode 100644 themes/icarus/.github/ISSUE_TEMPLATE/feature_request.md
delete mode 100644 themes/icarus/.github/ISSUE_TEMPLATE/功能建议.md
delete mode 100644 themes/icarus/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md
delete mode 100644 themes/icarus/.github/dependabot.yml
delete mode 100644 themes/icarus/.github/stale.yml
delete mode 100644 themes/icarus/.github/workflows/github-release.yml
delete mode 100644 themes/icarus/.github/workflows/lint.yml
delete mode 100644 themes/icarus/.github/workflows/npm-publish.yml
delete mode 100644 themes/icarus/.github/workflows/test.yml
delete mode 100644 themes/icarus/.gitignore
delete mode 100644 themes/icarus/.npmignore
delete mode 100644 themes/icarus/CONTRIBUTING.md
delete mode 100644 themes/icarus/LICENSE
delete mode 100644 themes/icarus/README.md
delete mode 100644 themes/icarus/include/config.js
delete mode 100644 themes/icarus/include/dependency.js
delete mode 100644 themes/icarus/include/migration/head.js
delete mode 100644 themes/icarus/include/migration/v2_v3.js
delete mode 100644 themes/icarus/include/migration/v3_v4.js
delete mode 100644 themes/icarus/include/register.js
delete mode 100644 themes/icarus/include/schema/comment/.gitkeep
delete mode 100644 themes/icarus/include/schema/common/article.json
delete mode 100644 themes/icarus/include/schema/common/comment.json
delete mode 100644 themes/icarus/include/schema/common/donates.json
delete mode 100644 themes/icarus/include/schema/common/footer.json
delete mode 100644 themes/icarus/include/schema/common/head.json
delete mode 100644 themes/icarus/include/schema/common/navbar.json
delete mode 100644 themes/icarus/include/schema/common/plugins.json
delete mode 100644 themes/icarus/include/schema/common/providers.json
delete mode 100644 themes/icarus/include/schema/common/search.json
delete mode 100644 themes/icarus/include/schema/common/share.json
delete mode 100644 themes/icarus/include/schema/common/sidebar.json
delete mode 100644 themes/icarus/include/schema/common/widgets.json
delete mode 100644 themes/icarus/include/schema/config.json
delete mode 100644 themes/icarus/include/schema/donate/.gitkeep
delete mode 100644 themes/icarus/include/schema/misc/.gitkeep
delete mode 100644 themes/icarus/include/schema/plugin/animejs.json
delete mode 100644 themes/icarus/include/schema/plugin/back_to_top.json
delete mode 100644 themes/icarus/include/schema/search/.gitkeep
delete mode 100644 themes/icarus/include/schema/share/.gitkeep
delete mode 100644 themes/icarus/include/schema/widget/profile.json
delete mode 100644 themes/icarus/include/style/article.styl
delete mode 100644 themes/icarus/include/style/base.styl
delete mode 100644 themes/icarus/include/style/button.styl
delete mode 100644 themes/icarus/include/style/card.styl
delete mode 100644 themes/icarus/include/style/codeblock.styl
delete mode 100644 themes/icarus/include/style/donate.styl
delete mode 100644 themes/icarus/include/style/footer.styl
delete mode 100644 themes/icarus/include/style/helper.styl
delete mode 100644 themes/icarus/include/style/navbar.styl
delete mode 100644 themes/icarus/include/style/pagination.styl
delete mode 100644 themes/icarus/include/style/plugin.styl
delete mode 100644 themes/icarus/include/style/responsive.styl
delete mode 100644 themes/icarus/include/style/search.styl
delete mode 100644 themes/icarus/include/style/timeline.styl
delete mode 100644 themes/icarus/include/style/widget.styl
delete mode 100644 themes/icarus/include/util/console.js
delete mode 100644 themes/icarus/languages/de.yml
delete mode 100644 themes/icarus/languages/en.yml
delete mode 100644 themes/icarus/languages/es.yml
delete mode 100644 themes/icarus/languages/fr.yml
delete mode 100644 themes/icarus/languages/id.yml
delete mode 100644 themes/icarus/languages/ja.yml
delete mode 100644 themes/icarus/languages/ko.yml
delete mode 100644 themes/icarus/languages/pl.yml
delete mode 100644 themes/icarus/languages/pt-BR.yml
delete mode 100644 themes/icarus/languages/ru.yml
delete mode 100644 themes/icarus/languages/tk.yml
delete mode 100644 themes/icarus/languages/tr.yml
delete mode 100644 themes/icarus/languages/vn.yml
delete mode 100644 themes/icarus/languages/zh-CN.yml
delete mode 100644 themes/icarus/languages/zh-TW.yml
delete mode 100644 themes/icarus/layout/archive.jsx
delete mode 100644 themes/icarus/layout/categories.jsx
delete mode 100644 themes/icarus/layout/category.jsx
delete mode 100644 themes/icarus/layout/comment/.gitkeep
delete mode 100644 themes/icarus/layout/common/article.jsx
delete mode 100644 themes/icarus/layout/common/comment.jsx
delete mode 100644 themes/icarus/layout/common/donates.jsx
delete mode 100644 themes/icarus/layout/common/footer.jsx
delete mode 100644 themes/icarus/layout/common/head.jsx
delete mode 100644 themes/icarus/layout/common/navbar.jsx
delete mode 100644 themes/icarus/layout/common/plugins.jsx
delete mode 100644 themes/icarus/layout/common/scripts.jsx
delete mode 100644 themes/icarus/layout/common/search.jsx
delete mode 100644 themes/icarus/layout/common/share.jsx
delete mode 100644 themes/icarus/layout/common/widgets.jsx
delete mode 100644 themes/icarus/layout/donate/.gitkeep
delete mode 100644 themes/icarus/layout/index.jsx
delete mode 100644 themes/icarus/layout/layout.jsx
delete mode 100644 themes/icarus/layout/misc/.gitkeep
delete mode 100644 themes/icarus/layout/page.jsx
delete mode 100644 themes/icarus/layout/plugin/animejs.jsx
delete mode 100644 themes/icarus/layout/plugin/back_to_top.jsx
delete mode 100644 themes/icarus/layout/post.jsx
delete mode 100644 themes/icarus/layout/search/.gitkeep
delete mode 100644 themes/icarus/layout/share/.gitkeep
delete mode 100644 themes/icarus/layout/tag.jsx
delete mode 100644 themes/icarus/layout/tags.jsx
delete mode 100644 themes/icarus/layout/widget/profile.jsx
delete mode 100644 themes/icarus/package.json
delete mode 100644 themes/icarus/scripts/index.js
delete mode 100644 themes/icarus/source/css/cyberpunk.styl
delete mode 100644 themes/icarus/source/css/default.styl
delete mode 100644 themes/icarus/source/css/style.styl
delete mode 100644 themes/icarus/source/img/avatar.png
delete mode 100644 themes/icarus/source/img/favicon.svg
delete mode 100644 themes/icarus/source/img/logo.svg
delete mode 100644 themes/icarus/source/img/og_image.png
delete mode 100644 themes/icarus/source/img/razor-bottom-black.svg
delete mode 100644 themes/icarus/source/img/razor-top-black.svg
delete mode 100644 themes/icarus/source/js/.eslintrc.json
delete mode 100644 themes/icarus/source/js/animation.js
delete mode 100644 themes/icarus/source/js/back_to_top.js
delete mode 100644 themes/icarus/source/js/column.js
delete mode 100644 themes/icarus/source/js/main.js
diff --git a/themes/icarus/.eslintignore b/themes/icarus/.eslintignore
deleted file mode 100644
index 40b878d..0000000
--- a/themes/icarus/.eslintignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules/
\ No newline at end of file
diff --git a/themes/icarus/.eslintrc.json b/themes/icarus/.eslintrc.json
deleted file mode 100644
index 6cae23f..0000000
--- a/themes/icarus/.eslintrc.json
+++ /dev/null
@@ -1,68 +0,0 @@
-{
- "extends": [
- "hexo",
- "plugin:react/recommended",
- "plugin:json/recommended"
- ],
- "settings": {
- "node": {
- "tryExtensions": [
- ".js",
- ".jsx",
- ".json"
- ]
- },
- "react": {
- "version": "16.0"
- }
- },
- "parserOptions": {
- "ecmaFeatures": {
- "jsx": true
- },
- "sourceType": "module"
- },
- "plugins": [
- "react"
- ],
- "rules": {
- "react/jsx-uses-vars": "error",
- "indent": [
- "error",
- 4,
- {
- "SwitchCase": 1
- }
- ],
- "react/no-unknown-property": [
- "error",
- {
- "ignore": [
- "class",
- "onclick",
- "onload",
- "onsubmit",
- "crossorigin"
- ]
- }
- ],
- "react/react-in-jsx-scope": [
- "off"
- ],
- "react/prop-types": [
- "off"
- ],
- "react/display-name": [
- "off"
- ],
- "react/jsx-key": [
- "off"
- ],
- "react/jsx-no-target-blank": [
- "error",
- {
- "allowReferrer": true
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/themes/icarus/.github/ISSUE_TEMPLATE/Bug反馈.md b/themes/icarus/.github/ISSUE_TEMPLATE/Bug反馈.md
deleted file mode 100644
index 77b353a..0000000
--- a/themes/icarus/.github/ISSUE_TEMPLATE/Bug反馈.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-name: Bug反馈
-about: 请按照模板填写Bug反馈,否则你的Issue可能会被直接关闭。
-title: [Bug] 问题概述
-labels: ''
-assignees: ''
-
----
-
-> 确保你在提交Bug反馈之前仔细阅读了[Hexo文档](https://hexo.io/zh-cn/),[Icarus用户指南](https://ppoffice.github.io/hexo-theme-icarus/tags/Icarus%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97/),和[GitHub issues](https://github.com/ppoffice/hexo-theme-icarus/issues)来了解你的问题是否已经被他人提出过。
-
-**Bug描述**
-简洁清晰地描述你遇到的Bug是什么。
-
-**系统与环境**
-列出你的Hexo和Icarus的版本和配置。
-
-- Hexo,操作系统,和Node.js的版本(使用`hexo version`命令来查看)
-- 站点配置文件`_config.yml`
-- 主题配置文件`_config.icarus.yml`或`themes/icarus/_config.yml`
-- 其他额外的配置文件(文章front-matter,`_config.post.yml`,或`_config.page.yml`)
-- 浏览器版本(如Firefox 70.0,Chrome Android 80.0)
-
-**复现方式**
-列出复现这个Bug的步骤,如:
-
-1. 访问‘...’
-2. 点击’...‘
-3. 下拉到‘...’
-4. 出现‘...’的错误
-
-**期望行为**
-简洁清晰地描述没有这个情况下你期望得到的结果。
-
-**截图**
-如果可以的话,请附上几张截图来帮助说明你遇到的问题。
-
-**额外上下文**
-附上与问题有关的其他上下文信息。
diff --git a/themes/icarus/.github/ISSUE_TEMPLATE/bug_report.md b/themes/icarus/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
index bc54ef0..0000000
--- a/themes/icarus/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-name: Bug Report
-about: Please follow this template if you are reporting a bug, or your issue may be closed without further notice.
-title: [Bug] Bug summary
-labels: ''
-assignees: ''
-
----
-
-> Make sure you go through the [Hexo docs](https://hexo.io), [Icarus user manual](https://ppoffice.github.io/hexo-theme-icarus/tags/Icarus-User-Guide/), and [GitHub issues](https://github.com/ppoffice/hexo-theme-icarus/issues) to see if the bug you are reporting has been already addressed by others.
-
-**Describe the bug**
-A clear and concise description of what the bug is.
-
-**System and Environment**
-The version and configuration of Hexo and Icarus.
-
-- Hexo, OS, and node version (use `hexo version` command to view these information)
-- Site configuration file `_config.yml`
-- Theme configuration file `_config.icarus.yml` or `themes/icarus/_config.yml`
-- Any additional theme configuration files (post front-matter, `_config.post.yml`, or `_config.page.yml`)
-- Browser and version (e.g., Firefox 70.0, Chrome Android 80.0)
-
-**To Reproduce**
-Steps to reproduce the behavior, such as:
-
-1. Go to '...'
-2. Click on '...'
-3. Scroll down to '...'
-4. '...' error appears
-
-**Expected behavior**
-A clear and concise description of what you expected to happen.
-
-**Screenshots**
-If applicable, add screenshots to help explain your problem.
-
-**Additional context**
-Add any other context about the problem here.
diff --git a/themes/icarus/.github/ISSUE_TEMPLATE/config.yml b/themes/icarus/.github/ISSUE_TEMPLATE/config.yml
deleted file mode 100644
index 8d97ac5..0000000
--- a/themes/icarus/.github/ISSUE_TEMPLATE/config.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-blank_issues_enabled: false
-contact_links:
- - name: Gitter
- url: https://gitter.im/hexo-theme-icarus/community
- about: Redirect your Icarus usage questions to Gitter.
- - name: Gitter
- url: https://gitter.im/hexo-theme-icarus/community
- about: 与Icarus使用相关的问题请转至这里。
- - name: Bug Report
- url: https://github.com/ppoffice/hexo-theme-icarus/issues/new?template=bug_report.md
- about: Please follow this template if you are reporting a bug, or your issue may be closed without further notice.
- - name: Bug反馈
- url: https://github.com/ppoffice/hexo-theme-icarus/issues/new?template=Bug反馈.md
- about: 请按照模板填写Bug反馈,否则你的Issue可能会被直接关闭。
- - name: Feature Request
- url: https://github.com/ppoffice/hexo-theme-icarus/issues/new?template=feature_request.md
- about: Please follow this template if you are requesting a new feature, or your issue may be closed without further notice.
- - name: 功能建议
- url: https://github.com/ppoffice/hexo-theme-icarus/issues/new?template=功能建议.md
- about: 请按照模板填写功能建议,否则你的Issue可能会被直接关闭。
\ No newline at end of file
diff --git a/themes/icarus/.github/ISSUE_TEMPLATE/feature_request.md b/themes/icarus/.github/ISSUE_TEMPLATE/feature_request.md
deleted file mode 100644
index 1202613..0000000
--- a/themes/icarus/.github/ISSUE_TEMPLATE/feature_request.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-name: Feature Request
-about: Please follow this template if you are requesting a new feature, or your issue may be closed without further notice.
-title: [FEAT] Feature request summary
-labels: ''
-assignees: ''
-
----
-
-> Make sure you go through the [Hexo docs](https://hexo.io), [Icarus user manual](https://ppoffice.github.io/hexo-theme-icarus/tags/Icarus-User-Guide/), and [GitHub issues](https://github.com/ppoffice/hexo-theme-icarus/issues) to see if the feature you are requesting has been already addressed by others.
-
-**Is your feature request related to a problem? Please describe.**
-
-A clear and concise description of what the problem is (e.g., I'm always frustrated when [...]).
-
-**Describe the solution you'd like**
-
-A clear and concise description of what you want to happen.
-
-**Describe alternatives you've considered**
-
-A clear and concise description of any alternative solutions or features you've considered.
-
-**Additional context**
-
-Add any other context or screenshots about the feature request here.
diff --git a/themes/icarus/.github/ISSUE_TEMPLATE/功能建议.md b/themes/icarus/.github/ISSUE_TEMPLATE/功能建议.md
deleted file mode 100644
index afddc5c..0000000
--- a/themes/icarus/.github/ISSUE_TEMPLATE/功能建议.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-name: 功能建议
-about: 请按照模板填写功能建议,否则你的Issue可能会被直接关闭。
-title: [FEAT] 功能建议概述
-labels: ''
-assignees: ''
-
----
-
-> 确保你在提交功能建议之前仔细阅读了[Hexo文档](https://hexo.io/zh-cn/),[Icarus用户指南](https://ppoffice.github.io/hexo-theme-icarus/tags/Icarus%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97/),和[GitHub issues](https://github.com/ppoffice/hexo-theme-icarus/issues)来了解你的建议是否已经被他人提出过。
-
-**你的功能建议与某个使用问题相关么?请详述。**
-
-简洁清晰地描述你遇到的问题是什么(如:我在使用...的时候遇到了...)。
-
-**描述你想要的解决方案**
-
-简洁清晰地描述你想要的解决方案可以达到的效果。
-
-**描述你考虑过的替代办法**
-
-简洁清晰地描述你考虑过的替代解决方案或是新功能。
-
-**额外上下文**
-
-附上与功能请求有关的其他上下文信息或者截图。
diff --git a/themes/icarus/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md b/themes/icarus/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md
deleted file mode 100644
index 427172b..0000000
--- a/themes/icarus/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-name: Pull Request
-about: Suggest a code change to this project.
-title: ''
-labels: ''
-assignees: ''
-
----
-
-**Note 0**
-Please review [the contributing guide](https://github.com/ppoffice/hexo-theme-icarus/blob/master/CONTRIBUTING.md) before making this pull request.
-
-**Note 1**
-
-Please break up your pull request into multiple smaller requests if it contains multiple bug fixes
-or new features.
-Each pull request should have one bug fix or new feature only for better code maintainability.
-
-**Note 2**
-
-Many components of this theme, including core functions, some Hexo extensions, widgets and plugins,
-have been moved to [ppoffice/hexo-component-inferno](https://github.com/ppoffice/hexo-component-inferno).
-Please make a pull request to that repository instead of this one if your changes are related to
-the above components.
-
-**Detailed description**
-
-> Please use the [Icarus issue template](https://github.com/ppoffice/hexo-theme-icarus/blob/master/.github/ISSUE_TEMPLATE/bug_report.md) if it is a bug fix.
-
-> Please use the [Icarus feature request template](https://github.com/ppoffice/hexo-theme-icarus/blob/master/.github/ISSUE_TEMPLATE/feature_request.md) if it is a bug fix.
diff --git a/themes/icarus/.github/dependabot.yml b/themes/icarus/.github/dependabot.yml
deleted file mode 100644
index 122534f..0000000
--- a/themes/icarus/.github/dependabot.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-version: 2
-updates:
- - package-ecosystem: 'npm'
- directory: '/'
- schedule:
- interval: 'daily'
diff --git a/themes/icarus/.github/stale.yml b/themes/icarus/.github/stale.yml
deleted file mode 100644
index 7926e31..0000000
--- a/themes/icarus/.github/stale.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-# Number of days of inactivity before an issue becomes stale
-daysUntilStale: 14
-# Number of days of inactivity before a stale issue is closed
-daysUntilClose: 7
-# Issues with these labels will never be considered stale
-exemptLabels:
- - bug:core
- - bug:extension
- - bug:general
- - feature:core
- - feature:extension
- - feature:general
- - tutorial:v1
- - tutorial:v2
- - tutorial:v3
- - tutorial:v4
- - tutorial:v5
- - tutorial:v6
- - tutorial:v7
- - tutorial:v8
- - tutorial:v9
- - Gitalk
- - utterances
-# Label to use when marking an issue as stale
-staleLabel: wontfix
-# Comment to post when marking an issue as stale. Set to `false` to disable
-markComment: >
- This issue has been automatically marked as stale because it has not had
- recent activity. It will be closed if no further activity occurs. Thank you
- for your contributions.
-# Comment to post when closing a stale issue. Set to `false` to disable
-closeComment: false
\ No newline at end of file
diff --git a/themes/icarus/.github/workflows/github-release.yml b/themes/icarus/.github/workflows/github-release.yml
deleted file mode 100644
index 54336dc..0000000
--- a/themes/icarus/.github/workflows/github-release.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-name: GitHub Release
-
-on:
- push:
- tags:
- - "*"
-
-jobs:
- publish:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - uses: actions/create-release@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- tag_name: ${{ github.ref }}
- release_name: ${{ github.ref }}
- draft: true
- prerelease: false
diff --git a/themes/icarus/.github/workflows/lint.yml b/themes/icarus/.github/workflows/lint.yml
deleted file mode 100644
index a84a340..0000000
--- a/themes/icarus/.github/workflows/lint.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-name: Code Linting
-
-on: [push, pull_request]
-
-jobs:
- lint:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - uses: actions/setup-node@v1
- - run: npm install
- - run: >
- npm install $(node -e "const deps=require('./package.json').peerDependencies;
- console.log(Object.keys(deps).map(key=>key+'@'+deps[key]).join(' '));")
- - run: npm run lint
diff --git a/themes/icarus/.github/workflows/npm-publish.yml b/themes/icarus/.github/workflows/npm-publish.yml
deleted file mode 100644
index 3867f39..0000000
--- a/themes/icarus/.github/workflows/npm-publish.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-name: Node.js Package
-
-on:
- release:
- types: [published]
-
-jobs:
- publish:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - uses: actions/setup-node@v1
- with:
- node-version: 12
- registry-url: https://registry.npmjs.org/
- - run: npm publish
- env:
- NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
diff --git a/themes/icarus/.github/workflows/test.yml b/themes/icarus/.github/workflows/test.yml
deleted file mode 100644
index 86b1ce4..0000000
--- a/themes/icarus/.github/workflows/test.yml
+++ /dev/null
@@ -1,39 +0,0 @@
-name: Test
-
-on: [push, pull_request]
-
-jobs:
- test:
- runs-on: ubuntu-latest
- strategy:
- matrix:
- node-version: [12, 14]
- fail-fast: false
- steps:
- - uses: actions/checkout@v2
- with:
- repository: hexojs/hexo-starter
- - uses: actions/checkout@v2
- with:
- path: themes/icarus
- - uses: actions/checkout@v2
- with:
- repository: SukkaLab/hexo-many-posts
- path: source/_posts/hexo-many-posts
- - uses: actions/setup-node@v1
- with:
- node-version: ${{ matrix.node-version }}
- - uses: actions/cache@v1
- with:
- path: node_modules
- key: npm-cache
- restore-keys: npm-cache
- - run: npm install
- - run: >
- npm install $(node -e "const deps=require('./themes/icarus/package.json').dependencies;
- console.log(Object.keys(deps).map(key=>key+'@'+deps[key]).join(' '));")
- - run: >
- npm install $(node -e "const deps=require('./themes/icarus/package.json').peerDependencies;
- console.log(Object.keys(deps).map(key=>key+'@'+deps[key]).join(' '));")
- - run: npx hexo config theme icarus
- - run: time NODE_ENV=production npx hexo g -b
diff --git a/themes/icarus/.gitignore b/themes/icarus/.gitignore
deleted file mode 100644
index 9d21c29..0000000
--- a/themes/icarus/.gitignore
+++ /dev/null
@@ -1,116 +0,0 @@
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-lerna-debug.log*
-
-# Diagnostic reports (https://nodejs.org/api/report.html)
-report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
-
-# Runtime data
-pids
-*.pid
-*.seed
-*.pid.lock
-
-# Directory for instrumented libs generated by jscoverage/JSCover
-lib-cov
-
-# Coverage directory used by tools like istanbul
-coverage
-*.lcov
-
-# nyc test coverage
-.nyc_output
-
-# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
-.grunt
-
-# Bower dependency directory (https://bower.io/)
-bower_components
-
-# node-waf configuration
-.lock-wscript
-
-# Compiled binary addons (https://nodejs.org/api/addons.html)
-build/Release
-
-# Dependency directories
-node_modules/
-jspm_packages/
-
-# TypeScript v1 declaration files
-typings/
-
-# TypeScript cache
-*.tsbuildinfo
-
-# Optional npm cache directory
-.npm
-
-# Optional eslint cache
-.eslintcache
-
-# Microbundle cache
-.rpt2_cache/
-.rts2_cache_cjs/
-.rts2_cache_es/
-.rts2_cache_umd/
-
-# Optional REPL history
-.node_repl_history
-
-# Output of 'npm pack'
-*.tgz
-
-# Yarn Integrity file
-.yarn-integrity
-
-# dotenv environment variables file
-.env
-.env.test
-
-# parcel-bundler cache (https://parceljs.org/)
-.cache
-
-# Next.js build output
-.next
-
-# Nuxt.js build / generate output
-.nuxt
-dist
-
-# Gatsby files
-.cache/
-# Comment in the public line in if your project uses Gatsby and not Next.js
-# https://nextjs.org/blog/next-9-1#public-directory-support
-# public
-
-# vuepress build output
-.vuepress/dist
-
-# Serverless directories
-.serverless/
-
-# FuseBox cache
-.fusebox/
-
-# DynamoDB Local files
-.dynamodb/
-
-# TernJS port file
-.tern-port
-
-# Stores VSCode versions used for testing VSCode extensions
-.vscode-test
-
-_config*.yml*
-yarn.lock
-
-# Intellij Idea config file
-.idea
-*.ipr
-*.iws
-*.iml
\ No newline at end of file
diff --git a/themes/icarus/.npmignore b/themes/icarus/.npmignore
deleted file mode 100644
index 04642d9..0000000
--- a/themes/icarus/.npmignore
+++ /dev/null
@@ -1,5 +0,0 @@
-.github/
-.eslintignore
-.eslintrc.json
-.travis.yml
-yarn.lock
diff --git a/themes/icarus/CONTRIBUTING.md b/themes/icarus/CONTRIBUTING.md
deleted file mode 100644
index 77bc0b4..0000000
--- a/themes/icarus/CONTRIBUTING.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# Contributing Guidelines
-
-## Code styles
-
-Please refer to the [.eslintrc.json](https://github.com/ppoffice/hexo-theme-icarus/blob/master/.eslintrc.json).
-You can also use `npm run lint` or `yarn lint` to fix code style issues.
-
-## Project versioning
-
-We use [SemVer](http://semver.org/) for versioning.
-Any changes to the code base should not be released using an existing version.
-
-## Commit message format
-
-The commit message should follow the [Bluejava commit message format](https://github.com/bluejava/git-commit-guide).
-The supported scopes are:
-
-- **core** for changes related to Hexo extensions and theme-specific functions
-- **comment** for comment plugin layout, schema, style, or script changes
-- **share** for share plugin layout, schema, style, or script changes
-- **donate** for donation plugin layout, schema, style, or script changes
-- **search** for search plugin layout, schema, style, or script changes
-- **widget** for widget layout, schema, style, or script changes
-- **plugin** for other plugin layout, schema, style, or script changes
-- **i18n** for adding or updating translations
-- **test** for testing or linting-related commits
-- **build** for build scripts, CI, other development or deployment related commits
-- use __\*__ or leave empty to refer to commits that do not have a clear scope
-
-## Submit changes
-
-1. Fork this repository, make changes to it, and run it against some actual Hexo sites to see if
-anything is broken.
-You should also run `npm run lint` or `yarn lint` to find and fix any code formatting issue.
-2. Submit a pull request to our repository. Please make sure you followed the instructions
-above.
-3. We will review the pull request regularly and inform you of our questions and any changes
-that need to be made before we can merge your pull request.
-4. We expect your response within two weeks, after which your pull request may be closed if
-no activity is shown.
diff --git a/themes/icarus/LICENSE b/themes/icarus/LICENSE
deleted file mode 100644
index fc77245..0000000
--- a/themes/icarus/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2020 PPOffice
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/themes/icarus/README.md b/themes/icarus/README.md
deleted file mode 100644
index 2d92e01..0000000
--- a/themes/icarus/README.md
+++ /dev/null
@@ -1,158 +0,0 @@
-
-
-
A simple, delicate, and modern theme for the static site generator Hexo.
-
-Preview |
-Documentation |
-Chat on Gitter
-
-
-
-![](https://ppoffice.github.io/hexo-theme-icarus/gallery/preview.png?1 "Icarus Preview")
-
-## :cd: Installation
-
-```shell
-$ npm install hexo-theme-icarus
-$ hexo config theme icarus
-```
-
-Please refer to [Getting Started with Icarus](https://ppoffice.github.io/hexo-theme-icarus/uncategorized/getting-started-with-icarus/)
-for more details.
-
-## :gift: Features
-
-### Cyberpunk Theme Variant
-
-Tap into the future cyber world with the newly added Cyberpunk theme variant.
-Inspired by [Cyberpunk 2077](https://www.cyberpunk.net).
-
-![Icarus Cyberpunk](https://ppoffice.github.io/hexo-theme-icarus/gallery/screenshots/cyberpunk.png "Icarus Cyberpunk")
-
-### Extensive Plugin Support
-
-Icarus includes plentiful search, comment, sharing and other plugins out of the box that makes your
-blog feature-rich and powerful.
-
-**[Comment](https://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/Comment/)**
-
-Changyan · Disqus · DisqusJS · Facebook · Gitalk · Gitment ·
-Isso · LiveRe · Utterance · Valine
-
-**[Donate Button](https://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/Donation/)**
-
-Afdian.net · Alipay · Buy me a coffee · Patreon · Paypal · Wecat
-
-**[Search](https://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/Search/)**
-
-Algolia · Baidu · Google CSE · Insight
-
-**[Share](https://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/Share/)**
-
-AddThis · AddToAny · Baidu Share · Share.js · ShareThis
-
-**[Widgets](https://ppoffice.github.io/hexo-theme-icarus/categories/Widgets/)**
-
-Google Adsense · Archives · Categories · External Site Links ·
-Recent Posts · Google Feedburner · Tags · Table of Contents
-
-**[Analytics](https://ppoffice.github.io/hexo-theme-icarus/Plugins/Analytics/icarus-user-guide-web-analytics-plugins/)**
-
-Baidu Statistics · Bing Webmaster · BuSuanZi Web Counter · CNZZ Statistics ·
-Google Analytics · Hotjar · StatCounter · Twitter Conversion Tracking
-
-**[Other Plugins](https://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/)**
-
-Cookie Consent · LightGallery · Justified Gallery · KaTeX · MathJax ·
-Oudated Browser · Page Loading Animations
-
-### Colorful Code Highlight
-
-Icarus directly import stylesheets from the [highlight.js](https://highlightjs.org/) package and makes more than
-90 code highlight themes available to you.
-
-
-
- Atom One Light |
- Monokai |
- Kimbie Dark |
-
-
- |
- |
- |
-
-
-
-### Flexible Theme Configuration
-
-Icarus allows you to configure your site on a per-page or per-layout basis.
-
-
-
-
- _config.yml |
- post.md |
- _config.page.yml |
-
-
-
-widgets:
- - type: profile
- position: left
- - type: recent_posts
- position: right
- |
-
-widgets:
- - type: profile
- position: left
- - type: recent_posts
- position: left
- |
-
-widgets: null
-
-
-
-
- |
-
-
- |
- |
- |
-
-
-
-
-### Responsive Layout
-
-Give your audiences best viewing experience with Icarus's mobile-friendly responsive layout.
-
-![Responsive Layout](https://ppoffice.github.io/hexo-theme-icarus/gallery/responsive.png)
-
-## :hammer: Development
-
-This project is built with
-
-- [Hexo](https://hexo.io/)
-- [Inferno.js](https://infernojs.org/)
-- [Stylus](https://stylus-lang.com/)
-- [Bulma](https://bulma.io/)
-
-Please refer to the [documentation](https://ppoffice.github.io/hexo-theme-icarus/categories/) and
-[contributing guide](https://github.com/ppoffice/hexo-theme-icarus/blob/master/CONTRIBUTING.md) for implementation details.
-
-## :tada: Contribute
-
-If you feel like to help us build a better Icarus, you can
-
-:black_nib: [Submit a tutorial](https://github.com/ppoffice/hexo-theme-icarus/new/site/source/_posts) |
-:earth_asia: [Add a translation](https://github.com/ppoffice/hexo-theme-icarus/tree/master/languages) |
-:triangular_flag_on_post: [Report a bug](https://github.com/ppoffice/hexo-theme-icarus/issues/new) |
-:electric_plug: [Suggest a new feature](https://github.com/ppoffice/hexo-theme-icarus/pulls)
-
-## :memo: License
-
-This project is licensed under the MIT License - see the [LICENSE](https://github.com/ppoffice/hexo-theme-icarus/blob/master/LICENSE) file for details.
diff --git a/themes/icarus/include/config.js b/themes/icarus/include/config.js
deleted file mode 100644
index 76f1846..0000000
--- a/themes/icarus/include/config.js
+++ /dev/null
@@ -1,107 +0,0 @@
-/* eslint no-process-exit: "off" */
-const fs = require('fs');
-const path = require('path');
-const util = require('util');
-const crypto = require('crypto');
-const logger = require('hexo-log')();
-const yaml = require('hexo-component-inferno/lib/util/yaml');
-const { Migrator } = require('hexo-component-inferno/lib/core/migrate');
-const { SchemaLoader } = require('hexo-component-inferno/lib/core/schema');
-const { yellow } = require('./util/console');
-
-function loadThemeConfig(hexo, cfgPaths) {
- const configs = cfgPaths.map(cfgPath => fs.readFileSync(cfgPath))
- .map(cfgPath => yaml.parse(cfgPath));
- return Object.assign({}, ...configs, hexo.config.theme_config);
-}
-
-function generateThemeConfigFile(schema, cfgPath) {
- const defaultValue = schema.getDefaultValue();
- fs.writeFileSync(cfgPath, defaultValue.toYaml());
-}
-
-function hashConfigFile(cfgPath) {
- const content = fs.readFileSync(cfgPath);
- return crypto.createHash('md5').update(content).digest('hex');
-}
-
-function checkConfig(hexo) {
- if (!process.argv.includes('--icarus-dont-check-config')) {
- logger.info('=== Checking theme configurations ===');
-
- const siteCfgFile = path.join(hexo.base_dir, '_config.yml');
- const themeSiteCfg = path.join(hexo.base_dir, '_config.icarus.yml');
- const themeDirCfg = path.join(hexo.theme_dir, '_config.yml');
- const themeCfgPaths = [themeDirCfg, themeSiteCfg].filter(cfgPath => fs.existsSync(cfgPath));
- const themeSiteCfgExample = themeSiteCfg + '.example';
-
- const schemaDir = path.join(hexo.theme_dir, 'include/schema/');
- const loader = SchemaLoader.load(require(path.join(schemaDir, 'config.json')), schemaDir);
- const schema = loader.getSchema('/config.json');
-
- if (!process.argv.includes('--icarus-dont-generate-config')) {
- if (!themeCfgPaths.length) {
- logger.warn('None of the following configuration files is found:');
- logger.warn(`- ${yellow(themeSiteCfg)}`);
- logger.warn(`- ${yellow(themeDirCfg)}`);
- logger.info('Generating theme configuration file...');
- generateThemeConfigFile(schema, themeSiteCfg);
- themeCfgPaths.push(themeSiteCfg);
- logger.info(`${yellow(themeSiteCfg)} created successfully.`);
- logger.info('To skip configuration generation, use "--icarus-dont-generate-config".');
- }
- }
-
- let cfg = loadThemeConfig(hexo, themeCfgPaths);
-
- if (!process.argv.includes('--icarus-dont-upgrade-config')) {
- const migrator = new Migrator(require(path.join(hexo.theme_dir, 'include/migration/head')));
- if (cfg.version && migrator.isOudated(cfg.version)) {
- logger.warn(`Your theme configuration is outdated (${cfg.version} < ${migrator.getLatestVersion()}).`);
- logger.info('To skip the configuration upgrade, use "--icarus-dont-upgrade-config".');
-
- logger.info('Backing up theme configuration files...');
- for (const cfgPath of themeCfgPaths) {
- const backupPath = cfgPath + '.' + hashConfigFile(cfgPath);
- const relCfgPath = path.relative(hexo.base_dir, cfgPath);
- const relBackupPath = path.relative(hexo.base_dir, backupPath);
- fs.renameSync(cfgPath, backupPath);
- logger.info(`${yellow(relCfgPath)} => ${yellow(relBackupPath)}`);
- }
-
- logger.info('Upgrading theme configurations...');
- cfg = migrator.migrate(cfg);
- fs.writeFileSync(themeSiteCfg, yaml.stringify(cfg));
- logger.info(`Theme configurations are written to ${yellow(themeSiteCfg)}.`);
-
- generateThemeConfigFile(schema, themeSiteCfgExample);
- logger.info(`Example configurations is at ${yellow(themeSiteCfgExample)}.`);
- }
- }
-
- const validation = schema.validate(cfg);
- if (validation !== true) {
- logger.warn('Theme configurations failed one or more checks.');
- logger.warn('Icarus may still run, but you will encounter unexcepted results.');
- logger.warn('Here is some information for you to correct the configuration file.');
- logger.warn(util.inspect(validation));
- }
-
- const rootCfg = yaml.parse(fs.readFileSync(siteCfgFile));
- if (rootCfg.theme_config) {
- logger.warn(`"theme_config" found in ${yellow(siteCfgFile)}.`);
- logger.warn(`Please remove theme configurations from ${yellow(siteCfgFile)}.`);
- }
- }
-}
-
-module.exports = hexo => {
- try {
- checkConfig(hexo);
- } catch (e) {
- logger.error(e);
- logger.error('Theme configuration checking failed.');
- logger.info('You may use \'--icarus-dont-check-config\' to skip configuration checking.');
- process.exit(-1);
- }
-};
diff --git a/themes/icarus/include/dependency.js b/themes/icarus/include/dependency.js
deleted file mode 100644
index 1a797f8..0000000
--- a/themes/icarus/include/dependency.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/* eslint no-process-exit: "off" */
-const semver = require('semver');
-const logger = require('hexo-log')();
-const packageInfo = require('../package.json');
-const { yellow, red, green } = require('./util/console');
-
-module.exports = hexo => {
- function checkDependency(name, reqVer) {
- try {
- require.resolve(name);
- const version = require(name + '/package.json').version;
- if (!semver.satisfies(version, reqVer)) {
- logger.error(`Package ${yellow(name)}'s version (${yellow(version)}) does not satisfy the required version (${red(reqVer)}).`);
- return false;
- }
- return true;
- } catch (e) {
- logger.error(`Package ${yellow(name)} is not installed.`);
- }
- return false;
- }
-
- logger.info('=== Checking package dependencies ===');
- const dependencies = Object.assign({}, packageInfo.peerDependencies, packageInfo.dependencies);
- const missingDeps = Object.keys(dependencies)
- .filter(name => !checkDependency(name, dependencies[name]));
- if (missingDeps && missingDeps.length) {
- logger.error('Please install the missing dependencies your Hexo site root directory:');
- logger.error(green('npm install --save ' + missingDeps.map(name => `${name}@${dependencies[name]}`).join(' ')));
- logger.error('or:');
- logger.error(green('yarn add ' + missingDeps.map(name => `${name}@${dependencies[name]}`).join(' ')));
- process.exit(-1);
- }
-};
diff --git a/themes/icarus/include/migration/head.js b/themes/icarus/include/migration/head.js
deleted file mode 100644
index e1807e4..0000000
--- a/themes/icarus/include/migration/head.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./v3_v4');
diff --git a/themes/icarus/include/migration/v2_v3.js b/themes/icarus/include/migration/v2_v3.js
deleted file mode 100644
index 67cbff5..0000000
--- a/themes/icarus/include/migration/v2_v3.js
+++ /dev/null
@@ -1,102 +0,0 @@
-const logger = require('hexo-log')();
-const deepmerge = require('deepmerge');
-const Migration = require('hexo-component-inferno/lib/core/migrate').Migration;
-
-module.exports = class extends Migration {
- constructor() {
- super('3.0.0', null);
- }
-
- upgrade(config) {
- const result = deepmerge({}, config);
- result.head = {
- favicon: config.favicon || null,
- canonical_url: config.canonical_url || null,
- open_graph: config.open_graph || null,
- meta: config.meta || null,
- rss: config.rss || null
- };
- delete result.favicon;
- delete result.canonical_url;
- delete result.open_graph;
- delete result.meta;
- delete result.rss;
-
- if (result.logo === '/images/logo.svg') {
- result.logo = result.logo.replace(/^\/images/, '/img');
- }
-
- if (result.head.favicon === '/img/favicon.svg') {
- result.head.favicon = result.head.favicon.replace(/^\/images/, '/img');
- }
-
- if (result.search && Object.prototype.hasOwnProperty.call(result.search, 'type')) {
- switch (result.search.type) {
- case 'google-cse':
- result.search.type = 'google_cse';
- break;
- }
- }
-
- if (result.comment && Object.prototype.hasOwnProperty.call(result.comment, 'type')) {
- switch (result.comment.type) {
- case 'changyan':
- result.comment.app_id = config.comment.appid;
- delete result.comment.appid;
- break;
- }
- }
-
- if (Array.isArray(result.donate) && result.donate.length) {
- result.donates = result.donate;
- delete result.donate;
- }
-
- if (Array.isArray(result.widgets) && result.widgets.length) {
- for (const widget of result.widgets) {
- if (Object.prototype.hasOwnProperty.call(widget, 'type')) {
- switch (widget.type) {
- case 'archive':
- widget.type = 'archives';
- break;
- case 'category':
- widget.type = 'categories';
- break;
- case 'tag':
- widget.type = 'tags';
- break;
- case 'tagcloud':
- logger.warn('The tagcloud widget has been removed from Icarus in version 3.0.0.');
- logger.warn('Please remove it from your configuration file.');
- break;
- }
- }
- }
- }
-
- if (result.plugins && typeof result.plugins === 'object') {
- for (const name in result.plugins) {
- switch (name) {
- case 'outdated-browser':
- result.plugins.outdated_browser = result.plugins[name];
- delete result.plugins[name];
- break;
- case 'back-to-top':
- result.plugins.back_to_top = result.plugins[name];
- delete result.plugins[name];
- break;
- case 'baidu-analytics':
- result.plugins.baidu_analytics = result.plugins[name];
- delete result.plugins[name];
- break;
- case 'google-analytics':
- result.plugins.google_analytics = result.plugins[name];
- delete result.plugins[name];
- break;
- }
- }
- }
-
- return result;
- }
-};
diff --git a/themes/icarus/include/migration/v3_v4.js b/themes/icarus/include/migration/v3_v4.js
deleted file mode 100644
index 6fe2d76..0000000
--- a/themes/icarus/include/migration/v3_v4.js
+++ /dev/null
@@ -1,14 +0,0 @@
-const Migration = require('hexo-component-inferno/lib/core/migrate').Migration;
-
-module.exports = class extends Migration {
- constructor() {
- super('4.0.0', null);
- }
-
- upgrade(config) {
- if (typeof config.article === 'object') {
- delete config.article.thumbnail;
- }
- return config;
- }
-};
diff --git a/themes/icarus/include/register.js b/themes/icarus/include/register.js
deleted file mode 100644
index ed50b2d..0000000
--- a/themes/icarus/include/register.js
+++ /dev/null
@@ -1,15 +0,0 @@
-const logger = require('hexo-log')();
-
-module.exports = hexo => {
- logger.info('=== Registering Hexo extensions ===');
- require('hexo-component-inferno/lib/hexo/filter/locals')(hexo);
- require('hexo-component-inferno/lib/hexo/generator/assets')(hexo);
- require('hexo-component-inferno/lib/hexo/generator/insight')(hexo);
- require('hexo-component-inferno/lib/hexo/generator/categories')(hexo);
- require('hexo-component-inferno/lib/hexo/generator/category')(hexo);
- require('hexo-component-inferno/lib/hexo/generator/manifest')(hexo);
- require('hexo-component-inferno/lib/hexo/generator/tags')(hexo);
- require('hexo-component-inferno/lib/hexo/helper/cdn')(hexo);
- require('hexo-component-inferno/lib/hexo/helper/page')(hexo);
- require('hexo-component-inferno/lib/core/view').init(hexo);
-};
diff --git a/themes/icarus/include/schema/comment/.gitkeep b/themes/icarus/include/schema/comment/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/themes/icarus/include/schema/common/article.json b/themes/icarus/include/schema/common/article.json
deleted file mode 100644
index 8794662..0000000
--- a/themes/icarus/include/schema/common/article.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "$id": "/common/article.json",
- "description": "Article related configurations",
- "type": "object",
- "properties": {
- "highlight": {
- "type": "object",
- "description": "Code highlight settings",
- "properties": {
- "theme": {
- "type": "string",
- "description": "Code highlight themes\nhttps://github.com/highlightjs/highlight.js/tree/master/src/styles",
- "default": "atom-one-light",
- "nullable": true
- },
- "clipboard": {
- "type": "boolean",
- "description": "Show copy code button",
- "default": true,
- "nullable": true
- },
- "fold": {
- "type": "string",
- "description": "Default folding status of the code blocks. Can be \"\", \"folded\", \"unfolded\"",
- "enum": [
- "",
- "folded",
- "unfolded"
- ],
- "default": "unfolded",
- "nullable": true
- }
- },
- "nullable": true
- },
- "readtime": {
- "type": "boolean",
- "description": "Whether to show estimated article reading time",
- "default": true,
- "nullable": true
- },
- "licenses": {
- "$ref": "/misc/poly_links.json",
- "description": "Article licensing block",
- "examples": [
- {
- "Creative Commons": {
- "icon": "fab fa-creative-commons",
- "url": "https://creativecommons.org/"
- },
- "Attribution": {
- "icon": "fab fa-creative-commons-by",
- "url": "https://creativecommons.org/licenses/by/4.0/"
- },
- "Noncommercial": {
- "icon": "fab fa-creative-commons-nc",
- "url": "https://creativecommons.org/licenses/by-nc/4.0/"
- }
- }
- ]
- }
- }
-}
\ No newline at end of file
diff --git a/themes/icarus/include/schema/common/comment.json b/themes/icarus/include/schema/common/comment.json
deleted file mode 100644
index 2112ae8..0000000
--- a/themes/icarus/include/schema/common/comment.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "$id": "/common/comment.json",
- "description": "Comment plugin configurations\nhttps://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/Comment/",
- "type": "object",
- "oneOf": [
- {
- "$ref": "/comment/disqus.json"
- },
- {
- "$ref": "/comment/changyan.json"
- },
- {
- "$ref": "/comment/disqusjs.json"
- },
- {
- "$ref": "/comment/facebook.json"
- },
- {
- "$ref": "/comment/gitalk.json"
- },
- {
- "$ref": "/comment/gitment.json"
- },
- {
- "$ref": "/comment/isso.json"
- },
- {
- "$ref": "/comment/livere.json"
- },
- {
- "$ref": "/comment/utterances.json"
- },
- {
- "$ref": "/comment/valine.json"
- },
- {
- "$ref": "/comment/waline.json"
- }
- ]
-}
\ No newline at end of file
diff --git a/themes/icarus/include/schema/common/donates.json b/themes/icarus/include/schema/common/donates.json
deleted file mode 100644
index f1d23ab..0000000
--- a/themes/icarus/include/schema/common/donates.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "$id": "/common/donates.json",
- "description": "Donate plugin configurations\nhttps://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/Donation/",
- "type": "array",
- "items": {
- "type": "object",
- "oneOf": [
- {
- "$ref": "/donate/afdian.json"
- },
- {
- "$ref": "/donate/alipay.json"
- },
- {
- "$ref": "/donate/buymeacoffee.json"
- },
- {
- "$ref": "/donate/patreon.json"
- },
- {
- "$ref": "/donate/paypal.json"
- },
- {
- "$ref": "/donate/wechat.json"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/themes/icarus/include/schema/common/footer.json b/themes/icarus/include/schema/common/footer.json
deleted file mode 100644
index e322bc7..0000000
--- a/themes/icarus/include/schema/common/footer.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "$id": "/common/footer.json",
- "description": "Page footer configurations",
- "type": "object",
- "properties": {
- "links": {
- "$ref": "/misc/poly_links.json",
- "description": "Links to be shown on the right of the footer section",
- "examples": [
- {
- "Creative Commons": {
- "icon": "fab fa-creative-commons",
- "url": "https://creativecommons.org/"
- },
- "Attribution 4.0 International": {
- "icon": "fab fa-creative-commons-by",
- "url": "https://creativecommons.org/licenses/by/4.0/"
- },
- "Download on GitHub": {
- "icon": "fab fa-github",
- "url": "https://github.com/ppoffice/hexo-theme-icarus"
- }
- }
- ]
- }
- }
-}
\ No newline at end of file
diff --git a/themes/icarus/include/schema/common/head.json b/themes/icarus/include/schema/common/head.json
deleted file mode 100644
index b889aba..0000000
--- a/themes/icarus/include/schema/common/head.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "$id": "/common/head.json",
- "description": "Page metadata configurations",
- "type": "object",
- "properties": {
- "favicon": {
- "type": "string",
- "description": "URL or path to the website's icon",
- "default": "/img/favicon.svg",
- "nullable": true
- },
- "manifest": {
- "$ref": "/misc/manifest.json"
- },
- "open_graph": {
- "$ref": "/misc/open_graph.json"
- },
- "structured_data": {
- "$ref": "/misc/structured_data.json"
- },
- "meta": {
- "$ref": "/misc/meta.json"
- },
- "rss": {
- "type": "string",
- "description": "URL or path to the website's RSS atom.xml",
- "nullable": true
- }
- }
-}
\ No newline at end of file
diff --git a/themes/icarus/include/schema/common/navbar.json b/themes/icarus/include/schema/common/navbar.json
deleted file mode 100644
index 64926ed..0000000
--- a/themes/icarus/include/schema/common/navbar.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "$id": "/common/navbar.json",
- "description": "Page top navigation bar configurations",
- "type": "object",
- "properties": {
- "menu": {
- "type": "object",
- "description": "Navigation menu items",
- "patternProperties": {
- ".+": {
- "type": "string",
- "description": "URL or path of the menu link"
- }
- },
- "examples": [
- {
- "Home": "/",
- "Archives": "/archives",
- "Categories": "/categories",
- "Tags": "/tags",
- "About": "/about"
- }
- ],
- "nullable": true
- },
- "links": {
- "$ref": "/misc/poly_links.json",
- "description": "Links to be shown on the right of the navigation bar",
- "examples": [
- {
- "Download on GitHub": {
- "icon": "fab fa-github",
- "url": "https://github.com/ppoffice/hexo-theme-icarus"
- }
- }
- ]
- }
- }
-}
\ No newline at end of file
diff --git a/themes/icarus/include/schema/common/plugins.json b/themes/icarus/include/schema/common/plugins.json
deleted file mode 100644
index ad5671d..0000000
--- a/themes/icarus/include/schema/common/plugins.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "$id": "/common/plugins.json",
- "description": "Plugin configurations\nhttps://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/",
- "type": "object",
- "properties": {
- "animejs": {
- "$ref": "/plugin/animejs.json"
- },
- "back_to_top": {
- "$ref": "/plugin/back_to_top.json"
- },
- "baidu_analytics": {
- "$ref": "/plugin/baidu_analytics.json"
- },
- "bing_webmaster": {
- "$ref": "/plugin/bing_webmaster.json"
- },
- "busuanzi": {
- "$ref": "/plugin/busuanzi.json"
- },
- "cnzz": {
- "$ref": "/plugin/cnzz.json"
- },
- "cookie_consent": {
- "$ref": "/plugin/cookie_consent.json"
- },
- "gallery": {
- "$ref": "/plugin/gallery.json"
- },
- "google_analytics": {
- "$ref": "/plugin/google_analytics.json"
- },
- "hotjar": {
- "$ref": "/plugin/hotjar.json"
- },
- "katex": {
- "$ref": "/plugin/katex.json"
- },
- "mathjax": {
- "$ref": "/plugin/mathjax.json"
- },
- "outdated_browser": {
- "$ref": "/plugin/outdated_browser.json"
- },
- "progressbar": {
- "$ref": "/plugin/progressbar.json"
- },
- "statcounter": {
- "$ref": "/plugin/statcounter.json"
- },
- "twitter_conversion_tracking": {
- "$ref": "/plugin/twitter_conversion_tracking.json"
- }
- }
-}
\ No newline at end of file
diff --git a/themes/icarus/include/schema/common/providers.json b/themes/icarus/include/schema/common/providers.json
deleted file mode 100644
index eea32bd..0000000
--- a/themes/icarus/include/schema/common/providers.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "$id": "/common/providers.json",
- "description": "CDN provider settings\nhttps://ppoffice.github.io/hexo-theme-icarus/Configuration/Theme/speed-up-your-site-with-custom-cdn/",
- "type": "object",
- "properties": {
- "cdn": {
- "type": "string",
- "description": "Name or URL template of the JavaScript and/or stylesheet CDN provider",
- "default": "jsdelivr",
- "nullable": true
- },
- "fontcdn": {
- "type": "string",
- "description": "Name or URL template of the webfont CDN provider",
- "default": "google",
- "nullable": true
- },
- "iconcdn": {
- "type": "string",
- "description": "Name or URL of the fontawesome icon font CDN provider",
- "default": "fontawesome",
- "nullable": true
- }
- }
-}
\ No newline at end of file
diff --git a/themes/icarus/include/schema/common/search.json b/themes/icarus/include/schema/common/search.json
deleted file mode 100644
index 4e48d43..0000000
--- a/themes/icarus/include/schema/common/search.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "$id": "/common/search.json",
- "description": "Search plugin configurations\nhttps://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/Search/",
- "type": "object",
- "oneOf": [
- {
- "$ref": "/search/insight.json"
- },
- {
- "$ref": "/search/baidu.json"
- },
- {
- "$ref": "/search/google_cse.json"
- },
- {
- "$ref": "/search/algolia.json"
- }
- ]
-}
\ No newline at end of file
diff --git a/themes/icarus/include/schema/common/share.json b/themes/icarus/include/schema/common/share.json
deleted file mode 100644
index dd6d228..0000000
--- a/themes/icarus/include/schema/common/share.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "$id": "/common/share.json",
- "description": "Share plugin configurations\nhttps://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/Share/",
- "type": "object",
- "oneOf": [
- {
- "$ref": "/share/sharethis.json"
- },
- {
- "$ref": "/share/addthis.json"
- },
- {
- "$ref": "/share/addtoany.json"
- },
- {
- "$ref": "/share/bdshare.json"
- },
- {
- "$ref": "/share/sharejs.json"
- }
- ]
-}
\ No newline at end of file
diff --git a/themes/icarus/include/schema/common/sidebar.json b/themes/icarus/include/schema/common/sidebar.json
deleted file mode 100644
index 9cce934..0000000
--- a/themes/icarus/include/schema/common/sidebar.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "$id": "/common/sidebar.json",
- "description": "Sidebar configurations.\nPlease be noted that a sidebar is only visible when it has at least one widget",
- "type": "object",
- "properties": {
- "left": {
- "type": "object",
- "description": "Left sidebar configurations",
- "properties": {
- "sticky": {
- "type": "boolean",
- "description": "Whether the sidebar sticks to the top when page scrolls",
- "default": false
- }
- }
- },
- "right": {
- "type": "object",
- "description": "Right sidebar configurations",
- "properties": {
- "sticky": {
- "type": "boolean",
- "description": "Whether the sidebar sticks to the top when page scrolls",
- "default": false
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/themes/icarus/include/schema/common/widgets.json b/themes/icarus/include/schema/common/widgets.json
deleted file mode 100644
index dab6518..0000000
--- a/themes/icarus/include/schema/common/widgets.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "$id": "/common/widgets.json",
- "description": "Sidebar widget configurations\nhttp://ppoffice.github.io/hexo-theme-icarus/categories/Widgets/",
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "position": {
- "type": "string",
- "description": "Where should the widget be placed, left sidebar or right sidebar",
- "default": "left"
- }
- },
- "oneOf": [
- {
- "$ref": "/widget/profile.json"
- },
- {
- "$ref": "/widget/toc.json"
- },
- {
- "$ref": "/widget/links.json"
- },
- {
- "$ref": "/widget/categories.json"
- },
- {
- "$ref": "/widget/recent_posts.json"
- },
- {
- "$ref": "/widget/archives.json"
- },
- {
- "$ref": "/widget/tags.json"
- },
- {
- "$ref": "/widget/subscribe_email.json"
- },
- {
- "$ref": "/widget/adsense.json"
- }
- ],
- "required": [
- "position"
- ]
- }
-}
\ No newline at end of file
diff --git a/themes/icarus/include/schema/config.json b/themes/icarus/include/schema/config.json
deleted file mode 100644
index a9767b9..0000000
--- a/themes/icarus/include/schema/config.json
+++ /dev/null
@@ -1,78 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "$id": "/config.json",
- "description": "The configuration file definition",
- "type": "object",
- "properties": {
- "version": {
- "type": "string",
- "description": "Version of the configuration file",
- "default": "4.0.0"
- },
- "variant": {
- "type": "string",
- "description": "Icarus theme variant, can be \"default\" or \"cyberpunk\"",
- "enum": [
- "default",
- "cyberpunk"
- ],
- "default": "default"
- },
- "logo": {
- "type": [
- "string",
- "object"
- ],
- "description": "Path or URL to the website's logo",
- "default": "/img/logo.svg",
- "properties": {
- "text": {
- "type": "string",
- "description": "Text to be shown in place of the logo image"
- }
- },
- "required": [
- "text"
- ]
- },
- "head": {
- "$ref": "/common/head.json"
- },
- "navbar": {
- "$ref": "/common/navbar.json"
- },
- "footer": {
- "$ref": "/common/footer.json"
- },
- "article": {
- "$ref": "/common/article.json"
- },
- "search": {
- "$ref": "/common/search.json"
- },
- "comment": {
- "$ref": "/common/comment.json"
- },
- "donates": {
- "$ref": "/common/donates.json"
- },
- "share": {
- "$ref": "/common/share.json"
- },
- "sidebar": {
- "$ref": "/common/sidebar.json"
- },
- "widgets": {
- "$ref": "/common/widgets.json"
- },
- "plugins": {
- "$ref": "/common/plugins.json"
- },
- "providers": {
- "$ref": "/common/providers.json"
- }
- },
- "required": [
- "version"
- ]
-}
\ No newline at end of file
diff --git a/themes/icarus/include/schema/donate/.gitkeep b/themes/icarus/include/schema/donate/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/themes/icarus/include/schema/misc/.gitkeep b/themes/icarus/include/schema/misc/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/themes/icarus/include/schema/plugin/animejs.json b/themes/icarus/include/schema/plugin/animejs.json
deleted file mode 100644
index 1773190..0000000
--- a/themes/icarus/include/schema/plugin/animejs.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "$id": "/plugin/animejs.json",
- "description": "Enable page startup animations",
- "type": "boolean",
- "default": true
-}
\ No newline at end of file
diff --git a/themes/icarus/include/schema/plugin/back_to_top.json b/themes/icarus/include/schema/plugin/back_to_top.json
deleted file mode 100644
index eb0e618..0000000
--- a/themes/icarus/include/schema/plugin/back_to_top.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "$id": "/plugin/back_to_top.json",
- "description": "Show the \"back to top\" button",
- "type": "boolean",
- "default": true
-}
\ No newline at end of file
diff --git a/themes/icarus/include/schema/search/.gitkeep b/themes/icarus/include/schema/search/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/themes/icarus/include/schema/share/.gitkeep b/themes/icarus/include/schema/share/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/themes/icarus/include/schema/widget/profile.json b/themes/icarus/include/schema/widget/profile.json
deleted file mode 100644
index 6c4bb66..0000000
--- a/themes/icarus/include/schema/widget/profile.json
+++ /dev/null
@@ -1,92 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "$id": "/widget/profile.json",
- "description": "Profile widget configurations",
- "type": "object",
- "properties": {
- "type": {
- "type": "string",
- "const": "profile",
- "nullable": true
- },
- "author": {
- "type": "string",
- "description": "Author name",
- "examples": [
- "Your name"
- ],
- "nullable": true
- },
- "author_title": {
- "type": "string",
- "description": "Author title",
- "examples": [
- "Your title"
- ],
- "nullable": true
- },
- "location": {
- "type": "string",
- "description": "Author's current location",
- "examples": [
- "Your location"
- ],
- "nullable": true
- },
- "avatar": {
- "type": "string",
- "description": "URL or path to the avatar image",
- "nullable": true
- },
- "avatar_rounded": {
- "type": "boolean",
- "description": "Whether show the rounded avatar image",
- "default": false,
- "nullable": true
- },
- "gravatar": {
- "type": "string",
- "description": "Email address for the Gravatar",
- "nullable": true
- },
- "follow_link": {
- "type": "string",
- "description": "URL or path for the follow button",
- "examples": [
- "https://github.com/ppoffice"
- ],
- "nullable": true
- },
- "social_links": {
- "$ref": "/misc/poly_links.json",
- "description": "Links to be shown on the bottom of the profile widget",
- "examples": [
- {
- "Github": {
- "icon": "fab fa-github",
- "url": "https://github.com/ppoffice"
- },
- "Facebook": {
- "icon": "fab fa-facebook",
- "url": "https://facebook.com"
- },
- "Twitter": {
- "icon": "fab fa-twitter",
- "url": "https://twitter.com"
- },
- "Dribbble": {
- "icon": "fab fa-dribbble",
- "url": "https://dribbble.com"
- },
- "RSS": {
- "icon": "fas fa-rss",
- "url": "/"
- }
- }
- ]
- }
- },
- "required": [
- "type"
- ]
-}
\ No newline at end of file
diff --git a/themes/icarus/include/style/article.styl b/themes/icarus/include/style/article.styl
deleted file mode 100644
index 6dbdae1..0000000
--- a/themes/icarus/include/style/article.styl
+++ /dev/null
@@ -1,194 +0,0 @@
-/* ---------------------------------
- * Article Summary and Content
- * --------------------------------- */
-$article-font-size ?= 1.1rem
-
-article
- &.media
- color: $text-light
-
- a
- color: inherit
-
- &:hover
- color: $primary
-
- .image
- width: 64px
- height: 64px
-
- img
- object-fit: cover
- width: 100%
- height: 100%
-
- .title
- @extend .is-size-6
- margin-bottom: .25em
-
- .date, .categories
- @extend .is-size-7
-
- .categories
- @extend .is-uppercase
-
- .media-content
- color: $text-light
-
- .title
- margin: 0
- line-height: inherit
-
- &.article
- .article-meta, .article-tags
- color: $text-light
-
- .article-meta
- overflow-x: auto
- margin-bottom: .5rem
-
- .article-more
- @extend .button.is-light
-
- .content
- word-wrap: break-word
- font-size: $article-font-size
-
- h1
- font-size: 1.75em
-
- h2
- font-size: 1.5em
-
- h3
- font-size: 1.25em
-
- h4
- font-size: 1.125em
-
- h5
- font-size: 1em
-
- pre
- font-size: .85em
-
- code
- padding: 0
- background: transparent
- overflow-wrap: break-word
-
- blockquote
- &.pullquote
- float: right
- max-width: 50%
- font-size: 1.15rem
- position: relative
-
- footer
- strong + cite
- margin-left: .5em
-
- .message.message-immersive
- border-radius: 0
- margin: 0 0 - $card-content-padding $card-content-padding 0 - $card-content-padding
-
- .message-body
- border: none
-
-.rtl
- direction: rtl
-
- .level
- &, &.is-mobile
- .level-item:not(:last-child)
- margin-left: .75rem
- margin-right: 0
-
-// Overflow table
-.table-overflow
- overflow-x: auto
-
- table
- width: auto !important
-
- th
- word-break: keep-all
-
-// Video container
-.video-container
- position: relative
- padding-bottom: 56.25%
- padding-top: 25px
- height: 0
-
- iframe
- position: absolute
- top: 0
- left: 0
- width: 100%
- height: 100%
-
-.article-licensing
- position: relative
- z-index: 1
- box-shadow: none
- background: $white-ter
- border-radius: $radius
- overflow: hidden
-
- &:after
- position: absolute
- z-index: -1
- right: -50px
- top: -87.87px
- content: '\f25e'
- font-size: 200px
- font-family: 'Font Awesome 5 Brands'
- opacity: .1
-
- .level-left
- flex-wrap: wrap
- max-width: 100%
-
- .licensing-title
- @extend .mb-3
- line-height: 1.2
-
- p:not(:last-child)
- @extend .mb-1
-
- a
- @extend .is-size-7, .has-text-grey
-
- .licensing-meta
- .level-item
- @extend .mr-4
-
- .icons
- .icon
- @extend .ml-1
- width: 1.2em
- height: 1.2em
- font-size: 1.2em
- vertical-align: bottom
-
- h6
- @extend .is-size-7
-
- a
- color: inherit
-
-a
- &.article-nav-prev
- span
- text-align: left
- flex-shrink: 1
- word-wrap: break-word
- white-space: normal
-
- &.article-nav-next
- span
- text-align: right
- flex-shrink: 1
- word-wrap: break-word
- white-space: normal
\ No newline at end of file
diff --git a/themes/icarus/include/style/base.styl b/themes/icarus/include/style/base.styl
deleted file mode 100644
index 6c3bbb9..0000000
--- a/themes/icarus/include/style/base.styl
+++ /dev/null
@@ -1,99 +0,0 @@
-bulma-stylus-root = '../../../../node_modules/bulma-stylus/stylus'
-
-/* ---------------------------------
- * Override Bulma CSS Framework
- * --------------------------------- */
-$body-size ?= 14px
-$body-background-color ?= #f7f7f7
-
-$family-sans-serif ?= Ubuntu, Roboto, 'Open Sans', 'Microsoft YaHei', sans-serif
-$family-code ?= 'Source Code Pro', monospace, 'Microsoft YaHei'
-
-$size-7 ?= .85rem
-$size-small ?= .75rem
-
-$primary ?= $blue
-$custom-colors ?= {
- grey-lightest: {
- '1': $grey-lightest
- '2': $grey-darker
- }
-}
-
-$navbar-item-active-color ?= $primary
-$footer-background-color ?= $scheme-main
-
-$gap ?= 64px
-$tablet ?= 769px
-$desktop ?= 1088px
-$widescreen ?= 1280px
-$fullhd ?= 1472px
-
-$shadow ?= 0 4px 10px rgba(0, 0, 0, 0.05)
-
-$title-weight ?= $weight-normal
-
-$control-height ?= 2.25em
-$button-padding-vertical ?= calc(0.375em - 1px)
-
-$card-radius ?= $radius
-$card-media-margin ?= 0.75rem
-$card-shadow ?= $shadow, 0 0 1px rgba(0, 0, 0, 0.1)
-
-$menu-item-active-color ?= $link
-$menu-item-active-background-color ?= hsl(219, 70%, 96%)
-
-$content-heading-weight ?= $weight-normal
-
-
-$logo-height ?= 1.75rem
-
-// FIXME: https://github.com/groenroos/bulma-stylus/issues/11
-@import bulma-stylus-root + '/utilities/initial-variables'
-@import bulma-stylus-root + '/utilities/functions'
-@import bulma-stylus-root + '/utilities/derived-variables'
-
-$colors = merge($colors, $custom-colors)
-
-@import bulma-stylus-root + '/utilities/animations'
-@import bulma-stylus-root + '/utilities/mixins'
-@import bulma-stylus-root + '/utilities/controls'
-@import bulma-stylus-root + '/base/_all'
-@import bulma-stylus-root + '/components/_all'
-@import bulma-stylus-root + '/elements/_all'
-@import bulma-stylus-root + '/form/_all'
-@import bulma-stylus-root + '/grid/_all'
-@import bulma-stylus-root + '/layout/_all'
-
-html
- height: 100%
- -webkit-text-size-adjust: 100%
- -moz-text-size-adjust: 100%
- -ms-text-size-adjust: 100%
- text-size-adjust: 100%
-
-body
- min-height: 100%
- display: flex
- flex-direction: column
-
-body > .section
- flex-grow: 1
-
-+desktop()
- ::-webkit-scrollbar
- width: 8px
- height: 8px
-
- ::-webkit-scrollbar-track
- border-radius: 3px
- background: rgba(0,0,0,0.06)
- box-shadow: inset 0 0 5px rgba(0,0,0,0.1)
-
- ::-webkit-scrollbar-thumb
- border-radius: 3px
- background: rgba(0,0,0,0.12)
- box-shadow: inset 0 0 10px rgba(0,0,0,0.2)
-
- ::-webkit-scrollbar-thumb:hover
- background: rgba(0,0,0,0.24)
diff --git a/themes/icarus/include/style/button.styl b/themes/icarus/include/style/button.styl
deleted file mode 100644
index b9f6c30..0000000
--- a/themes/icarus/include/style/button.styl
+++ /dev/null
@@ -1,8 +0,0 @@
-/* ---------------------------------
- * Buttons
- * --------------------------------- */
-.button
- &.is-transparent
- color: inherit
- background: transparent
- border-color: transparent
diff --git a/themes/icarus/include/style/card.styl b/themes/icarus/include/style/card.styl
deleted file mode 100644
index db5f46f..0000000
--- a/themes/icarus/include/style/card.styl
+++ /dev/null
@@ -1,18 +0,0 @@
-/* ---------------------------------
- * Card
- * --------------------------------- */
-.card
- overflow: visible
- border-radius: $card-radius
-
- & + .card, & + .column-right-shadow
- margin-top: 1.5rem
-
- .card-image
- overflow: hidden
- border-top-left-radius: $card-radius
- border-top-right-radius: $card-radius
-
- .media + .media
- border: none
- margin-top: 0
diff --git a/themes/icarus/include/style/codeblock.styl b/themes/icarus/include/style/codeblock.styl
deleted file mode 100644
index 0cae04f..0000000
--- a/themes/icarus/include/style/codeblock.styl
+++ /dev/null
@@ -1,105 +0,0 @@
-/* ---------------------------------
- * Code Highlight
- * --------------------------------- */
-$codeblock-caption-bg ?= rgba(200, 200, 200, .15)
-
-figure.highlight
- padding: 0
- width: 100%
- position: relative
- margin: 1em 0 1em !important
- border-radius: $radius
-
- &.folded
- .highlight-body
- height: 0
-
- .copy
- opacity: .7
-
- pre, table tr:hover
- color: inherit
- background: transparent
-
- table
- width: auto
-
- tr td
- border: none
-
- tr:not(:first-child) td
- padding-top: 0
-
- tr:not(:last-child) td
- padding-bottom: 0
-
- pre
- padding: 0
- overflow: visible
-
- .line, code .hljs
- line-height: 1.5rem
-
- figcaption, .gutter
- background: $codeblock-caption-bg
-
- figcaption
- margin: 0 !important
- padding: .3em 0em .3em .75em
- font-style: normal
- font-size: .8em
-
- *
- color: inherit
-
- span
- font-weight: 500
- font-family: $family-code
-
- .level-left *:not(:last-child)
- margin-right: .5em
-
- .level-right *:not(:first-child)
- margin-left: .5em
-
- .fold
- cursor: pointer
-
- &.level
- overflow: auto
-
- .level-right
- a
- padding: 0em .75em
-
- .highlight-body
- overflow: auto
-
- .gutter
- text-align: right
-
- .tag, .title, .number, .section
- display: inherit
- font: inherit
- margin: inherit
- padding: inherit
- background: inherit
- height: inherit
- text-align: inherit
- vertical-align: inherit
- min-width: inherit
- border-radius: inherit
-
-/* ---------------------------------
- * Fix Gist Snippet
- * --------------------------------- */
-.gist
- table
- tr:hover
- background: transparent
-
- td
- border: none
-
- .file
- all: initial
diff --git a/themes/icarus/include/style/donate.styl b/themes/icarus/include/style/donate.styl
deleted file mode 100644
index b5324fd..0000000
--- a/themes/icarus/include/style/donate.styl
+++ /dev/null
@@ -1,58 +0,0 @@
-/* ---------------------------------
- * Donate Buttons
- * --------------------------------- */
-$donate-qrcode-max-width ?= 280px
-$donate-qrcode-shadow ?= $card-shadow
-$donate-qrcode-box-radius ?= $card-radius
-
-$donate-button-colors ?= {
- 'afdian': rgb(136, 95, 217),
- 'alipay': rgb(0, 160, 232),
- 'buymeacoffee': rgb(255, 221, 0),
- 'paypal': rgb(254, 183, 0),
- 'patreon': rgb(255, 66, 77),
- 'wechat': rgb(26, 173, 25),
-}
-
-.donate
- position: relative
-
- .qrcode
- display: none
- position: absolute
- z-index: 99
- bottom: 2.5em
- line-height: 0
- overflow: hidden
- box-shadow: $donate-qrcode-shadow
- border-radius: $donate-qrcode-box-radius
-
- img
- max-width: $donate-qrcode-max-width
-
- &:hover
- .qrcode
- display: block
-
- &:first-child:not(:last-child)
- .qrcode
- left: -.75rem
-
- &:last-child:not(:first-child)
- .qrcode
- right: -.75rem
-
- for $name, $color in $donate-button-colors
- &[data-type={'"' + $name + '"'}]
- color: findColorInvert($color)
- background-color: $color
- border-color: transparent
-
- &:active
- background-color: darken($color, 5%)
-
- &:hover
- background-color: darken($color, 2.5%)
-
- &:focus:not(:active)
- box-shadow: 0 0 0 .125em rgba($color, .25)
diff --git a/themes/icarus/include/style/footer.styl b/themes/icarus/include/style/footer.styl
deleted file mode 100644
index c58431b..0000000
--- a/themes/icarus/include/style/footer.styl
+++ /dev/null
@@ -1,20 +0,0 @@
-/* ---------------------------------
- * Page Footer
- * --------------------------------- */
-footer.footer
- .level-start
- +mobile()
- text-align: center
-
- .level-end
- .field
- flex-wrap: wrap
- align-items: center
-
- +mobile()
- justify-content: center
- margin-top: 1rem
-
-.footer-logo
- img
- max-height: $logo-height
diff --git a/themes/icarus/include/style/helper.styl b/themes/icarus/include/style/helper.styl
deleted file mode 100644
index 84f1141..0000000
--- a/themes/icarus/include/style/helper.styl
+++ /dev/null
@@ -1,162 +0,0 @@
-/* ---------------------------------
- * Spacing helpers
- * --------------------------------- */
-$spacer ?= 1rem
-$spacers ?= 0, $spacer * .25, $spacer * .5, $spacer, $spacer * 1.5, $spacer * 3
-
-for n in (0 .. 5)
- .ml-{n}
- margin-left: $spacers[n] !important
-
- .mr-{n}
- margin-right: $spacers[n] !important
-
- .mx-{n}
- @extend .ml-{n}, .mr-{n}
-
- .ml-n{n}
- margin-left: - $spacers[n] !important
-
- .mr-n{n}
- margin-right: - $spacers[n] !important
-
- .mx-n{n}
- @extend .ml-n{n}, .mr-n{n}
-
- .mt-{n}
- margin-top: $spacers[n] !important
-
- .mb-{n}
- margin-bottom: $spacers[n] !important
-
- .my-{n}
- @extend .mt-{n}, .mb-{n}
-
- .mt-n{n}
- margin-top: - $spacers[n] !important
-
- .mb-n{n}
- margin-bottom: - $spacers[n] !important
-
- .my-n{n}
- @extend .mt-n{n}, .mb-n{n}
-
- .pl-{n}
- padding-left: $spacers[n] !important
-
- .pr-{n}
- padding-right: $spacers[n] !important
-
- .px-{n}
- @extend .pl-{n}, .pr-{n}
-
- .pl-n{n}
- padding-left: - $spacers[n] !important
-
- .pr-n{n}
- padding-right: - $spacers[n] !important
-
- .px-n{n}
- @extend .pl-n{n}, .pr-n{n}
-
- .pt-{n}
- padding-top: $spacers[n] !important
-
- .pb-{n}
- padding-bottom: $spacers[n] !important
-
- .py-{n}
- @extend .pt-{n}, .pb-{n}
-
- .pt-n{n}
- padding-top: - $spacers[n] !important
-
- .pb-n{n}
- padding-bottom: - $spacers[n] !important
-
- .py-n{n}
- @extend .pt-n{n}, .pb-n{n}
-
-.ml-auto
- margin-left: auto !important
-
-.mr-auto
- margin-right: auto !important
-
-.mx-auto
- @extend .ml-auto, .mr-auto
-
-.mt-auto
- margin-top: auto !important
-
-.mb-auto
- margin-bottom: auto !important
-
-.my-auto
- @extend .mt-auto, .mb-auto
-
-.pl-auto
- margin-left: auto !important
-
-.pr-auto
- margin-right: auto !important
-
-.px-auto
- @extend .pl-auto, .pr-auto
-
-.pt-auto
- margin-top: auto !important
-
-.pb-auto
- margin-bottom: auto !important
-
-.py-auto
- @extend .pt-auto, .pb-auto
-
-/* ---------------------------------
- * Flex helpers
- * --------------------------------- */
-for n in (0 .. 5)
- .order-{n}
- order: n !important
-
-.justify-content-start
- justify-content: start !important
-
-.justify-content-center
- justify-content: center !important
-
-.flex-shrink-1
- flex-shrink: 1 !important
-
-/* ---------------------------------
- * Color helpers
- * --------------------------------- */
-.link-muted
- color: inherit
-
- &:hover
- color: $primary !important
-
-/* ---------------------------------
- * Image helpers
- * --------------------------------- */
-.image
- &.is-7by3
- padding-top: 42.8%
-
- img
- bottom: 0
- left: 0
- position: absolute
- right: 0
- top: 0
-
- .avatar
- height: 100%
- object-fit: cover
-
- .fill
- object-fit: cover
- width: 100% !important
- height: 100% !important
\ No newline at end of file
diff --git a/themes/icarus/include/style/navbar.styl b/themes/icarus/include/style/navbar.styl
deleted file mode 100644
index a11191c..0000000
--- a/themes/icarus/include/style/navbar.styl
+++ /dev/null
@@ -1,53 +0,0 @@
-/* ---------------------------------
- * Top Navigation
- * --------------------------------- */
-$navbar-item-padding-v ?= 1.25rem
-$navbar-item-padding-h ?= .75rem
-$navbar-item-margin-v ?= 0
-$navbar-item-margin-h ?= 0
-
-.navbar-main
- box-shadow: $shadow
-
- .navbar-menu, .navbar-start, .navbar-end
- align-items: stretch
- display: flex
- padding: 0
- flex-shrink: 0
-
- .navbar-menu
- flex-grow: 1
- flex-shrink: 0
- overflow-x: auto
-
- .navbar-start
- justify-content: flex-start
- margin-right: auto
-
- .navbar-end
- justify-content: flex-end
- margin-left: auto
-
- .navbar-item
- display: flex
- align-items: center
- padding: $navbar-item-padding-v $navbar-item-padding-h
- margin: $navbar-item-margin-v $navbar-item-margin-h
-
- &.is-active
- background-color: transparent
-
- +until($navbar-breakpoint)
- .navbar-menu
- justify-content: center
- box-shadow: none
-
- .navbar-start
- margin-right: 0
-
- .navbar-end
- margin-left: 0
-
-.navbar-logo
- img
- max-height: $logo-height
\ No newline at end of file
diff --git a/themes/icarus/include/style/pagination.styl b/themes/icarus/include/style/pagination.styl
deleted file mode 100644
index 33d21d0..0000000
--- a/themes/icarus/include/style/pagination.styl
+++ /dev/null
@@ -1,32 +0,0 @@
-/* ---------------------------------
- * Pagination and Post Navigation
- * --------------------------------- */
-$pagination-box-shadow ?= $card-shadow
-$pagination-background-color ?= $button-background-color
-$post-navigation-fg ?= $grey
-
-.pagination
- @extend .pagination.is-centered
- margin-top: 1.5rem
-
- .pagination-link,
- .pagination-ellipsis,
- .pagination-previous,
- .pagination-next
- a
- color: $pagination-color
- .pagination-link,
- .pagination-previous,
- .pagination-next
- border: none
- background: $pagination-background-color
- box-shadow: $pagination-box-shadow
- .pagination-link.is-current
- background: $pagination-current-background-color
-
-.post-navigation
- color: $post-navigation-fg
- flex-wrap: wrap
- justify-content: space-around
- .level-item
- margin-bottom: 0
diff --git a/themes/icarus/include/style/plugin.styl b/themes/icarus/include/style/plugin.styl
deleted file mode 100644
index e85f781..0000000
--- a/themes/icarus/include/style/plugin.styl
+++ /dev/null
@@ -1,128 +0,0 @@
-/* ---------------------------------
- * Back to Top Button
- * --------------------------------- */
-#back-to-top
- position: fixed
- opacity: 0
- outline: none
- padding: 8px 0
- line-height: 24px
- border-radius: $card-radius
- transform: translateY(120px)
- transition: .4s ease opacity, .4s ease width, .4s ease transform, .4s ease border-radius
-
- &.is-rounded
- border-radius: 50%
-
- &.fade-in
- opacity: 1
-
- &.rise-up
- transform: translateY(0)
-
-/* ---------------------------------
- * Gallery Plugin
- * --------------------------------- */
-.gallery-item
- .caption
- color: $grey
-
-/* ---------------------------------
- * Page Loading Progressbar
- * --------------------------------- */
-.pace
- user-select: none
- pointer-events: none
-
- .pace-progress
- top: 0
- right: 100%
- width: 100%
- height: 2px
- z-index: 2000
- position: fixed
- background: $primary
-
-.pace-inactive
- display: none
-
-/* ---------------------------------
- * Fix FontAwesome Icons
- * --------------------------------- */
-.fa, .fab, .fal, .far, .fas
- line-height: inherit
-
-/* ---------------------------------
- * MathJax and KaTeX
- * --------------------------------- */
-.MathJax, .katex-display
- overflow-x: auto
- overflow-y: hidden
-
-.katex
- white-space: nowrap
-
-.katex-display
- margin-top: -1em !important
-
-.katex-html
- padding-top: 1em
-
- .tag
- align-items: unset
- background-color: unset
- border-radius: unset
- color: unset
- display: unset
- font-size: unset
- height: unset
- justify-content: unset
- line-height: unset
- padding-left: unset
- padding-right: unset
- white-space: unset
-
-/* ---------------------------------
- * Cookie Consent
- * --------------------------------- */
-.cc-window, .cc-revoke
- font-size: 1.1rem !important
- font-family: $family-sans-serif !important
-
-.cc-window
- color: $text !important
- background-color: $scheme-main !important
-
- &.cc-floating
- border-radius: $card-radius
- box-shadow: $card-shadow
-
- &.cc-banner
- background-color: darken($scheme-main, 2.5%) !important
-
- &.cc-theme-block, &.cc-theme-classic
- .cc-compliance > .cc-btn
- border-radius: $radius-rounded
-
- .cc-compliance > .cc-btn
- font-weight: 400
- border: none
- color: $primary-invert
- background-color: $primary
-
- &:hover, &:focus
- background-color: darken($primary, 2.5%)
-
- &.cc-deny
- &:hover
- color: $primary
- text-decoration: none
-
-.cc-revoke
- padding: .5rem 1rem !important
- color: $primary-invert !important
- background-color: $primary !important
-
- &:hover
- text-decoration: none !important
- background-color: darken($primary, 2.5%)
diff --git a/themes/icarus/include/style/responsive.styl b/themes/icarus/include/style/responsive.styl
deleted file mode 100644
index ad6be4d..0000000
--- a/themes/icarus/include/style/responsive.styl
+++ /dev/null
@@ -1,32 +0,0 @@
-/* ---------------------------------
- * Responsive Layout
- * --------------------------------- */
-+widescreen()
- .is-1-column .container, .is-2-column .container
- max-width: $desktop - 2 * $gap
- width: $desktop - 2 * $gap
-
-+fullhd()
- .is-2-column .container
- max-width: $widescreen - 2 * $gap
- width: $widescreen - 2 * $gap
-
- .is-1-column .container
- max-width: $desktop - 2 * $gap
- width: $desktop - 2 * $gap
-
-+tablet()
- .is-sticky
- position: -webkit-sticky
- position: sticky
- top: 1.5rem
- z-index: 99
-
- .column-main, .column-left, .column-right, .column-right-shadow
- &.is-sticky
- top: .75rem
- align-self: flex-start
-
-+mobile()
- .section
- padding: 1.5rem 1rem
diff --git a/themes/icarus/include/style/search.styl b/themes/icarus/include/style/search.styl
deleted file mode 100644
index 0cdedd9..0000000
--- a/themes/icarus/include/style/search.styl
+++ /dev/null
@@ -1,204 +0,0 @@
-/* ---------------------------------
- * Search Box
- * --------------------------------- */
-// container sizes
-$searchbox-container-width ?= 540px
-$searchbox-container-margin ?= 100px
-$searchbox-breakpoint-width ?= 559px
-$searchbox-breakpoint-height ?= 479px
-// overlay and container styles
-$searchbox-box-shadow ?= $card-shadow
-$searchbox-border-radius ?= $radius
-$searchbox-bg-overlay ?= $modal-background-background-color
-$searchbox-bg-container ?= $white-ter
-$searchbox-border ?= $border
-// header styles
-$searchbox-bg-input ?= $white
-$searchbox-bg-close-hover ?= $searchbox-bg-container
-$searchbox-bg-close-active ?= $grey-lighter
-// body styles
-$searchbox-fg-result-header ?= $grey-light
-$searchbox-fg-result-item-secondary ?= $grey-light
-$searchbox-bg-result-item-hover ?= $searchbox-bg-input
-$searchbox-fg-result-item-active ?= findColorInvert($primary)
-$searchbox-bg-result-item-active ?= $primary
-$searchbox-bg-result-item-highlight ?= $yellow
-// footer styles
-$searchbox-bg-pagination-item ?= $searchbox-bg-input
-$searchbox-bg-pagination-item-hover ?= $searchbox-bg-container
-$searchbox-fg-pagination-item-active ?= findColorInvert($primary)
-$searchbox-bg-pagination-item-active ?= $primary
-$searchbox-bg-pagination-item-disabled ?= $searchbox-bg-container
-
-.searchbox
- display: none
- top: 0
- left: 0
- width: 100%
- height: 100%
- z-index: 100
- font-size: 1rem
- line-height: 0
- background: $searchbox-bg-overlay
-
- &.show
- display: flex
-
- a, a:hover
- color: inherit
- text-decoration: none
-
- input
- font-size: 1rem
- border: none
- outline: none
- box-shadow: none
- border-radius: 0
-
- &, .searchbox-container
- position: fixed
- align-items: center
- flex-direction: column
- line-height: 1.25em
-
- .searchbox-container
- z-index: 101
- display: flex
- overflow: hidden
- box-shadow: $searchbox-box-shadow
- border-radius: $searchbox-border-radius
- background-color: $searchbox-bg-container
- width: $searchbox-container-width
- top: $searchbox-container-margin
- bottom: $searchbox-container-margin
-
- .searchbox-header, .searchbox-body, .searchbox-footer
- width: 100%
-
- .searchbox-header
- display: flex
- flex-direction: row
- line-height: 1.5em
- font-weight: normal
- background-color: $searchbox-bg-input
- // fix Chrome 71 height issue
- // https://github.com/ppoffice/hexo-theme-icarus/issues/719
- min-height: 3rem
-
- .searchbox-input-container
- display: flex
- flex-grow: 1
-
- .searchbox-input
- flex-grow: 1
- color: inherit
- box-sizing: border-box
- padding: .75em 0 .75em 1.25em
- background: $searchbox-bg-input
-
- .searchbox-close
- display: inline-block
- font-size: 1.5em
- padding: .5em .75em
- cursor: pointer
-
- &:hover
- background: $searchbox-bg-close-hover
-
- &:active
- background: $searchbox-bg-close-active
-
- .searchbox-body
- flex-grow: 1
- overflow-y: auto
- border-top: 1px solid $searchbox-border
-
- .searchbox-result-section header, .searchbox-result-item
- padding: .75em 1em
-
- .searchbox-result-section
- border-bottom: 1px solid $searchbox-border
-
- header
- color: $searchbox-fg-result-header
-
- .searchbox-result-item
- display: flex
- flex-direction: row
-
- &:not(.disabled):not(.active):not(:active):hover
- background-color: $searchbox-bg-result-item-hover
-
- &:active, &.active
- color: $searchbox-fg-result-item-active
- background-color: $searchbox-bg-result-item-active
-
- em
- font-style: normal
- background: $searchbox-bg-result-item-highlight
-
- .searchbox-result-icon
- margin-right: 1em
-
- .searchbox-result-content
- overflow: hidden
-
- .searchbox-result-title, .searchbox-result-preview
- display: block
- overflow: hidden
- white-space: nowrap
- text-overflow: ellipsis
-
- .searchbox-result-title-secondary
- color: $searchbox-fg-result-item-secondary
-
- .searchbox-result-preview
- margin-top: .25em
-
- .searchbox-result-item:not(:active):not(.active)
- .searchbox-result-preview
- color: $searchbox-fg-result-item-secondary
-
- .searchbox-footer
- padding: .5em 1em
-
- .searchbox-pagination
- margin: 0
- padding: 0
- list-style: none
- text-align: center
-
- .searchbox-pagination-item
- margin: 0 .25rem
-
- .searchbox-pagination-item, .searchbox-pagination-link
- display: inline-block
-
- .searchbox-pagination-link
- overflow: hidden
- padding: .5em .8em
- box-shadow: $searchbox-box-shadow
- border-radius: $searchbox-border-radius
- background-color: $searchbox-bg-pagination-item
-
- .searchbox-pagination-item.active
- .searchbox-pagination-link
- color: $searchbox-fg-pagination-item-active
- background-color: $searchbox-bg-pagination-item-active
-
- .searchbox-pagination-item.disabled
- .searchbox-pagination-link
- cursor: not-allowed
- background-color: $searchbox-bg-pagination-item-disabled
-
- .searchbox-pagination-item:not(.active):not(.disabled)
- .searchbox-pagination-link:hover
- background-color: $searchbox-bg-pagination-item-hover
-
-@media screen and (max-width: $searchbox-breakpoint-width), screen and (max-height: $searchbox-breakpoint-height)
- .searchbox .searchbox-container
- top: 0
- left: 0
- width: 100%
- height: 100%
- border-radius: 0
diff --git a/themes/icarus/include/style/timeline.styl b/themes/icarus/include/style/timeline.styl
deleted file mode 100644
index 1d00f94..0000000
--- a/themes/icarus/include/style/timeline.styl
+++ /dev/null
@@ -1,38 +0,0 @@
-/* ---------------------------------
- * Archive Timeline
- * --------------------------------- */
-$timeline-fg-line ?= $grey-lighter
-$timeline-bg-line ?= $card-background-color
-
-.timeline
- margin-left: 1rem
- padding: 1rem 0 0 1.5rem
- border-left: 1px solid $timeline-fg-line
-
- .media
- position: relative
-
- &:before, &:last-child:after
- content: ''
- display: block
- position: absolute
- left: calc(-.375rem - 1.5rem - .25px)
-
- &:before
- width: .75rem
- height: .75rem
- top: calc(1rem + 1.5 * .85rem / 2 - .75rem / 2)
- background: $timeline-fg-line
- border-radius: 50%
-
- &:first-child:before
- top: calc(1.5 * .85rem / 2 - .75rem / 2)
-
- &:last-child:after
- width: .75rem
- top: calc(1rem + 1.5 * .85rem / 2 + .75rem / 2)
- bottom: 0
- background: $timeline-bg-line
-
- &:first-child:last-child:after
- top: calc(1.5 * .85rem / 2 + .75rem / 2)
diff --git a/themes/icarus/include/style/widget.styl b/themes/icarus/include/style/widget.styl
deleted file mode 100644
index b97231f..0000000
--- a/themes/icarus/include/style/widget.styl
+++ /dev/null
@@ -1,65 +0,0 @@
-.widget
- .menu-list
- li
- ul
- margin-right: 0
-
- .level
- margin-bottom: 0
-
- .level-left, .level-right, .level-item
- flex-shrink: 1
-
- .level-left, .level-right
- align-items: flex-start
-
- .tag
- background: $light-grey
- color: $white-invert
-
- .tags
- .tag:first-child
- background: $primary
- color: $primary-invert
-
- .tag:last-child
- background: $light-grey
- color: $white-invert
-
-.level.is-multiline
- flex-wrap: wrap
-
-/* ---------------------------------
- * Table of Content Widget
- * --------------------------------- */
-+mobile()
- .widget.card#toc
- display: none
- position: fixed
- margin: 1rem
- left: 0
- right: 0
- bottom: 0
- z-index: 100
-
- .card-content
- padding: 0
-
- .menu
- padding: 1.5rem
- max-height: calc(100vh - 2rem)
- overflow-y: auto
-
- #toc-mask
- display: none
- position: fixed
- top: 0
- left: 0
- right: 0
- bottom: 0
- z-index: 99
- background: rgba(0, 0, 0, .7)
-
- .widget.card#toc, #toc-mask
- &.is-active
- display: block
\ No newline at end of file
diff --git a/themes/icarus/include/util/console.js b/themes/icarus/include/util/console.js
deleted file mode 100644
index 22e8dc4..0000000
--- a/themes/icarus/include/util/console.js
+++ /dev/null
@@ -1,15 +0,0 @@
-let chalk;
-try {
- chalk = require('chalk'); // eslint-disable-line node/no-extraneous-require
-} catch (e) { }
-
-module.exports = new Proxy({}, {
- get(obj, prop) {
- if (chalk) {
- return chalk[prop];
- }
- return function() {
- return arguments.length === 1 ? arguments[0] : arguments;
- };
- }
-});
diff --git a/themes/icarus/languages/de.yml b/themes/icarus/languages/de.yml
deleted file mode 100644
index ac5d4f3..0000000
--- a/themes/icarus/languages/de.yml
+++ /dev/null
@@ -1,65 +0,0 @@
-common:
- archive:
- one: 'Archiv'
- other: 'Archive'
- category:
- one: 'Kategorie'
- other: 'Kategorien'
- tag:
- one: 'Tag'
- other: 'Tags'
- post:
- one: 'Seite'
- other: 'Seiten'
- page:
- one: 'Page'
- other: 'Pages'
- prev: 'Zurück'
- next: 'Weiter'
-widget:
- follow: 'Folgen'
- recents: 'Letzte Einträge'
- links: 'Links'
- catalogue: 'Katalog'
- subscribe_email: 'Abonnieren Sie Updates'
- subscribe: 'Abonnieren'
- adsense: 'Werbung'
-article:
- created_at: 'Gepostet vor %s'
- updated_at: 'Aktualisiert vor %s'
- more: 'Mehr lesen'
- comments: 'Kommentare'
- read_time: '%s lesen'
- word_count:
- one: 'Über %d Wort'
- other: 'Über %d Wörter'
- licensing:
- author: 'Author'
- created_at: 'Posted on'
- updated_at: 'Updated on'
- licensed_under: 'Licensed under'
-donate:
- title: 'Gefällt Ihnen der Artikel? Unterstützen Sie den Autor mit'
- afdian: 'Afdian.net'
- alipay: 'Alipay'
- wechat: 'Wechat'
- paypal: 'Paypal'
- patreon: 'Patreon'
- buymeacoffee: 'Kauf mir einen Kaffee'
-plugin:
- backtotop: 'Zurück nach oben'
- visit_count: '%s Besuche'
- visitor_count: 'Von %s Nutzern besucht'
- cookie_consent:
- message: Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern.
- dismiss: Verstanden!
- allow: Cookies zulassen
- deny: Ablehnen
- link: Mehr erfahren
- policy: Cookie-Richtlinie
-search:
- search: 'Suche'
- hint: 'Tippen Sie etwas...'
- no_result: 'Keine Ergebnisse für'
- untitled: '(Ohne Titel)'
- empty_preview: '(Keine Vorschau)'
diff --git a/themes/icarus/languages/en.yml b/themes/icarus/languages/en.yml
deleted file mode 100644
index cfdaf01..0000000
--- a/themes/icarus/languages/en.yml
+++ /dev/null
@@ -1,65 +0,0 @@
-common:
- archive:
- one: 'Archive'
- other: 'Archives'
- category:
- one: 'Category'
- other: 'Categories'
- tag:
- one: 'Tag'
- other: 'Tags'
- post:
- one: 'Post'
- other: 'Posts'
- page:
- one: 'Page'
- other: 'Pages'
- prev: 'Previous'
- next: 'Next'
-widget:
- follow: 'Follow'
- recents: 'Recents'
- links: 'Links'
- catalogue: 'Catalogue'
- subscribe_email: 'Subscribe for updates'
- subscribe: 'Subscribe'
- adsense: 'Advertisement'
-article:
- created_at: 'Posted %s'
- updated_at: 'Updated %s'
- more: 'Read more'
- comments: 'Comments'
- read_time: '%s read'
- word_count:
- one: 'About %d word'
- other: 'About %d words'
- licensing:
- author: 'Author'
- created_at: 'Posted on'
- updated_at: 'Updated on'
- licensed_under: 'Licensed under'
-donate:
- title: 'Like this article? Support the author with'
- afdian: 'Afdian.net'
- alipay: 'Alipay'
- wechat: 'Wechat'
- paypal: 'Paypal'
- patreon: 'Patreon'
- buymeacoffee: 'Buy me a coffee'
-plugin:
- backtotop: 'Back to top'
- visit_count: '%s visits'
- visitor_count: 'Visited by %s users'
- cookie_consent:
- message: This website uses cookies to improve your experience.
- dismiss: Got it!
- allow: Allow cookies
- deny: Decline
- link: Learn more
- policy: Cookie Policy
-search:
- search: 'Search'
- hint: 'Type something...'
- no_result: 'No results for'
- untitled: '(Untitled)'
- empty_preview: '(No preview)'
diff --git a/themes/icarus/languages/es.yml b/themes/icarus/languages/es.yml
deleted file mode 100644
index 15d9c2b..0000000
--- a/themes/icarus/languages/es.yml
+++ /dev/null
@@ -1,66 +0,0 @@
-#By SrWoOoW
-common:
- archive:
- one: 'Archivo'
- other: 'Archivos'
- category:
- one: 'Categoría'
- other: 'Categorías'
- tag:
- one: 'Etiqueta'
- other: 'Etiquetas'
- post:
- one: 'Entrada'
- other: 'Entradas'
- page:
- one: 'Página'
- other: 'Páginas'
- prev: 'Anterior'
- next: 'Siguiente'
-widget:
- follow: 'SEGUIR'
- recents: 'Recientes'
- links: 'Enlaces'
- catalogue: 'Catálogo'
- subscribe_email: 'Suscríbete para recibir actualizaciones'
- subscribe: 'Suscribir'
- adsense: 'Anuncio'
-article:
- created_at: 'Publicado hace %s'
- updated_at: 'Actualizado hace %s'
- more: 'Leer más'
- comments: 'Comentarios'
- read_time: '%s de lectura'
- word_count:
- one: 'Aproximadamente %d palabra'
- other: 'Aproximadamente %d palabras'
- licensing:
- author: 'Author'
- created_at: 'Posted on'
- updated_at: 'Updated on'
- licensed_under: 'Licensed under'
-donate:
- title: '¿Te gusta este artículo? Apoya al autor con'
- afdian: 'Afdian.net'
- alipay: 'Alipay'
- wechat: 'Wechat'
- paypal: 'Paypal'
- patreon: 'Patreon'
- buymeacoffee: 'Cómprame un café'
-plugin:
- backtotop: 'Volver arriba'
- visit_count: '%s visitas'
- visitor_count: 'Visitado por %s usuarios'
- cookie_consent:
- message: Este sitio web utiliza cookies para mejorar su experiencia.
- dismiss: ¡Entendido!
- allow: Permitir cookies
- deny: Descenso
- link: Aprende más
- policy: Política de cookies
-search:
- search: 'Buscar'
- hint: 'Teclea algo...'
- no_result: 'No hay resultados para'
- untitled: '(Sin título)'
- empty_preview: '(Sin vista previa)'
diff --git a/themes/icarus/languages/fr.yml b/themes/icarus/languages/fr.yml
deleted file mode 100644
index 2d3853b..0000000
--- a/themes/icarus/languages/fr.yml
+++ /dev/null
@@ -1,65 +0,0 @@
-common:
- archive:
- one: 'Archive'
- other: 'Archives'
- category:
- one: 'Catégorie'
- other: 'Catégories'
- tag:
- one: 'Tag'
- other: 'Tags'
- post:
- one: 'Article'
- other: 'Articles'
- page:
- one: 'Page'
- other: 'Pages'
- prev: 'Préc'
- next: 'Suiv'
-widget:
- follow: 'Suivre'
- recents: 'Récents'
- links: 'Liens'
- catalogue: 'Catalogue'
- subscribe_email: 'Abonnez-vous aux mises à jour'
- subscribe: 'Abonnez-vous'
- adsense: 'Annonce'
-article:
- created_at: 'Publié il y a %s'
- updated_at: 'Mis à jour il y a %s'
- more: 'Lire la suite'
- comments: 'Commentaires'
- read_time: '%s de lecture'
- word_count:
- one: 'Environ %d mot'
- other: 'Environ %d mots'
- licensing:
- author: 'Author'
- created_at: 'Posted on'
- updated_at: 'Updated on'
- licensed_under: 'Licensed under'
-donate:
- title: "Vous aimez cet article? Soutenez l'auteur avec"
- afdian: 'Afdian.net'
- alipay: 'Alipay'
- wechat: 'Wechat'
- paypal: 'Paypal'
- patreon: 'Patreon'
- buymeacoffee: 'Achetez-moi un café'
-plugin:
- backtotop: 'Retour au sommet'
- visit_count: '%s visites'
- visitor_count: 'Visité par %s utilisateurs'
- cookie_consent:
- message: Ce site Web utilise des cookies pour améliorer votre expérience.
- dismiss: Je l'ai!
- allow: Autorise les cookies
- deny: Déclin
- link: Apprendre encore plus
- policy: Politique relative aux cookies
-search:
- search: 'Search'
- hint: 'Type something...'
- no_result: 'Aucun résultat pour'
- untitled: '(Sans titre)'
- empty_preview: '(Pas de prévisualisation)'
diff --git a/themes/icarus/languages/id.yml b/themes/icarus/languages/id.yml
deleted file mode 100644
index d723bda..0000000
--- a/themes/icarus/languages/id.yml
+++ /dev/null
@@ -1,65 +0,0 @@
-common:
- archive:
- one: 'Arsip'
- other: 'Arsip'
- category:
- one: 'Kategori'
- other: 'Kategori'
- tag:
- one: 'Tag'
- other: 'Tag'
- post:
- one: 'Artikel'
- other: 'Artikel'
- page:
- one: 'Halaman'
- other: 'Halaman'
- prev: 'Sebelumnya'
- next: 'Berikutnya'
-widget:
- follow: 'IKUTI'
- recents: 'Terbaru'
- links: 'Tautan'
- catalogue: 'Katalog'
- subscribe_email: 'Berlangganan untuk pembaruan'
- subscribe: 'Berlangganan'
- adsense: 'Iklan'
-article:
- created_at: 'Diposting %s'
- updated_at: 'Diperbarui %s'
- more: 'Selengkapnya'
- comments: 'Komentar'
- read_time: '%s membaca'
- word_count:
- one: 'Sekitar %d kata'
- other: 'Sekitar %d kata'
- licensing:
- author: 'Author'
- created_at: 'Posted on'
- updated_at: 'Updated on'
- licensed_under: 'Licensed under'
-donate:
- title: 'Suka dengan artikel ini? Bantu penulis dengan donasi melalui'
- afdian: 'Afdian.net'
- alipay: 'Alipay'
- wechat: 'Wechat'
- paypal: 'Paypal'
- patreon: 'Patreon'
- buymeacoffee: 'Belikan aku kopi'
-plugin:
- backtotop: 'Kembali ke atas'
- visit_count: '%s kunjungan'
- visitor_count: 'Dikunjungi oleh %s pengguna'
- cookie_consent:
- message: Situs web ini menggunakan cookie untuk meningkatkan pengalaman Anda.
- dismiss: Mengerti!
- allow: Izinkan cookie
- deny: Menolak
- link: Belajarlah lagi
- policy: Kebijakan Cookie
-search:
- search: 'Pencarian'
- hint: 'Tulis Sesuatu..'
- no_result: 'Tidak ada hasil untuk'
- untitled: '(Tanpa judul)'
- empty_preview: '(Tidak ada preview)'
diff --git a/themes/icarus/languages/ja.yml b/themes/icarus/languages/ja.yml
deleted file mode 100644
index dabd410..0000000
--- a/themes/icarus/languages/ja.yml
+++ /dev/null
@@ -1,65 +0,0 @@
-common:
- archive:
- one: 'アーカイブ'
- other: 'アーカイブ'
- category:
- one: 'カテゴリ'
- other: 'カテゴリ'
- tag:
- one: 'タグ'
- other: 'タグ'
- post:
- one: '投稿'
- other: '投稿'
- page:
- one: 'ページ'
- other: 'ページ'
- prev: '前'
- next: '次'
-widget:
- follow: 'フォローする'
- recents: '最近の記事'
- links: 'リンク'
- catalogue: 'カタログ'
- subscribe_email: '更新を購読する'
- subscribe: '購読する'
- adsense: '広告'
-article:
- created_at: '%sに投稿'
- updated_at: '%sに更新'
- more: '続きを読む'
- comments: 'コメント'
- read_time: '%sで読む'
- word_count:
- one: '約%d語'
- other: '約%d語'
- licensing:
- author: 'Author'
- created_at: 'Posted on'
- updated_at: 'Updated on'
- licensed_under: 'Licensed under'
-donate:
- title: 'この記事は気に入りましたか? 著者をサポートする'
- afdian: 'Afdian.net'
- alipay: 'Alipay'
- wechat: 'Wechat'
- paypal: 'Paypal'
- patreon: 'Patreon'
- buymeacoffee: 'コーヒーを買って'
-plugin:
- backtotop: 'トップに戻る'
- visit_count: '%s回の訪問'
- visitor_count: '%s人のユーザーがアクセス'
- cookie_consent:
- message: このウェブサイトはあなたの経験を改善するためにCookieを使用しています。
- dismiss: 了解しました
- allow: Cookiesを許可する
- deny: 拒否する
- link: もっと詳しく知る
- policy: Cookieポリシー
-search:
- search: '検索'
- hint: '何かを入力してください...'
- no_result: 'の結果はありません'
- untitled: '(無題)'
- empty_preview: '(プレビューなし)'
diff --git a/themes/icarus/languages/ko.yml b/themes/icarus/languages/ko.yml
deleted file mode 100644
index 4e8c92e..0000000
--- a/themes/icarus/languages/ko.yml
+++ /dev/null
@@ -1,65 +0,0 @@
-common:
- archive:
- one: '아카이브'
- other: '아카이브'
- category:
- one: '카테고리'
- other: '카테고리'
- tag:
- one: '태그'
- other: '태그'
- post:
- one: '포스트'
- other: '포스트'
- page:
- one: '페이지'
- other: '페이지'
- prev: '이전'
- next: '다음'
-widget:
- follow: '팔로우'
- recents: '최근 글'
- links: '링크'
- catalogue: '카탈로그'
- subscribe_email: '업데이트 소식 받기'
- subscribe: '구독'
- adsense: '광고'
-article:
- created_at: '%s 게시 됨'
- updated_at: '%s 업데이트 됨'
- more: '자세히 보기'
- comments: '댓글'
- read_time: '%s안에 읽기'
- word_count:
- one: '약 %d 단어'
- other: '약 %d 단어'
- licensing:
- author: 'Author'
- created_at: 'Posted on'
- updated_at: 'Updated on'
- licensed_under: 'Licensed under'
-donate:
- title: '이 글이 마음에 드시나요? 다음을 통해 후원하실 수 있습니다: '
- afdian: 'Afdian.net'
- alipay: 'Alipay'
- wechat: 'Wechat'
- paypal: 'Paypal'
- patreon: 'Patreon'
- buymeacoffee: '커피 한 잔 사주기'
-plugin:
- backtotop: '맨 위로'
- visit_count: '%s회 방문'
- visitor_count: '%s명의 사용자가 방문 함'
- cookie_consent:
- message: 이 웹 사이트는 귀하의 경험을 향상시키기 위해 Cookie를 사용합니다.
- dismiss: 무시
- allow: 허용
- deny: 거부
- link: 더 알아보기
- policy: Cookie 정책
-search:
- search: '검색'
- hint: '입력 하세요...'
- no_result: '에 대한 결과 없음'
- untitled: '(제목 없음)'
- empty_preview: '(미리보기 없음)'
diff --git a/themes/icarus/languages/pl.yml b/themes/icarus/languages/pl.yml
deleted file mode 100644
index 591c62d..0000000
--- a/themes/icarus/languages/pl.yml
+++ /dev/null
@@ -1,65 +0,0 @@
-common:
- archive:
- one: 'Archiwum'
- other: 'Archiwum'
- category:
- one: 'Kategoria'
- other: 'Kategorie'
- tag:
- one: 'Tag'
- other: 'Tagi'
- post:
- one: 'Artykuł'
- other: 'Artykuły'
- page:
- one: 'Strona'
- other: 'Strony'
- prev: 'Poprzedni'
- next: 'Następny'
-widget:
- follow: 'SUBSKRYBUJ'
- recents: 'Najnowsze wpisy'
- links: 'Linki'
- catalogue: 'Spis treści'
- subscribe_email: 'Zapisz się, aby otrzymywać aktualizacje'
- subscribe: 'Subskrybuj'
- adsense: 'Reklama'
-article:
- created_at: 'Opublikowano %s'
- updated_at: 'Zaktualizowano %s'
- more: 'Czytaj dalej'
- comments: 'Komentarze'
- read_time: '%s czytania'
- word_count:
- one: 'Około %d słowa'
- other: 'Około %d słów'
- licensing:
- author: 'Author'
- created_at: 'Posted on'
- updated_at: 'Updated on'
- licensed_under: 'Licensed under'
-donate:
- title: 'Podoba Ci się ten artykuł? Wesprzyj autora za pomocą'
- afdian: 'Afdian.net'
- alipay: 'Alipay'
- wechat: 'Wechat'
- paypal: 'Paypal'
- patreon: 'Patreon'
- buymeacoffee: 'Kup mi kawę'
-plugin:
- backtotop: 'Powrót do góry'
- visit_count: '%s wizyty'
- visitor_count: 'Odwiedzone przez %s użytkowników'
- cookie_consent:
- message: Ta strona korzysta z plików cookie, aby poprawić Twoje doświadczenia.
- dismiss: Rozumiem!
- allow: Zezwól na pliki cookie
- deny: Odrzucać
- link: Ucz się więcej
- policy: Polityka Cookie
-search:
- search: 'szukaj'
- hint: 'Wpisz coś...'
- no_result: 'Brak wyników dla'
- untitled: '(Bez tytułu)'
- empty_preview: '(Brak podglądu)'
diff --git a/themes/icarus/languages/pt-BR.yml b/themes/icarus/languages/pt-BR.yml
deleted file mode 100644
index d702391..0000000
--- a/themes/icarus/languages/pt-BR.yml
+++ /dev/null
@@ -1,65 +0,0 @@
-common:
- archive:
- one: 'Arquivo'
- other: 'Arquivos'
- category:
- one: 'Categoria'
- other: 'Categorias'
- tag:
- one: 'Tag'
- other: 'Tags'
- post:
- one: 'Artigo'
- other: 'Artigos'
- page:
- one: 'Página'
- other: 'Páginas'
- prev: 'Anterior'
- next: 'Próximo'
-widget:
- follow: 'Seguir'
- recents: 'Recentes'
- links: 'Links'
- catalogue: 'Catálogo'
- subscribe_email: 'Subscrição de atualizações'
- subscribe: 'Se inscrever'
- adsense: 'Anúncio'
-article:
- created_at: 'Postado %s'
- updated_at: 'Atualizado %s'
- more: 'Ler Mais'
- comments: 'Comentarios'
- read_time: '%s lidos'
- word_count:
- one: 'Cerca de %d palavra'
- other: 'Cerca de %d palavras'
- licensing:
- author: 'Author'
- created_at: 'Posted on'
- updated_at: 'Updated on'
- licensed_under: 'Licensed under'
-donate:
- title: 'Gostou deste artigo? Apoie o autor com'
- afdian: 'Afdian.net'
- alipay: 'Alipay'
- wechat: 'Wechat'
- paypal: 'Paypal'
- patreon: 'Patreon'
- buymeacoffee: 'Me compra um café'
-plugin:
- backtotop: 'De volta ao topo'
- visit_count: '%s visitas'
- visitor_count: 'Visitado por %s usuários'
- cookie_consent:
- message: Este site usa cookies para melhorar sua experiência.
- dismiss: Entendi!
- allow: Permitir cookies
- deny: Declínio
- link: Saber mais
- policy: Política de Cookies
-search:
- search: 'Procurar'
- hint: 'Digite alguma coisa...'
- no_result: 'Sem resultados para'
- untitled: '(Sem título)'
- empty_preview: '(Não há visualização)'
diff --git a/themes/icarus/languages/ru.yml b/themes/icarus/languages/ru.yml
deleted file mode 100644
index 9ed57ca..0000000
--- a/themes/icarus/languages/ru.yml
+++ /dev/null
@@ -1,65 +0,0 @@
-common:
- archive:
- one: 'архив'
- other: 'архивы'
- category:
- one: 'категории'
- other: 'категории'
- tag:
- one: 'тег'
- other: 'теги'
- post:
- one: 'пост'
- other: 'посты'
- page:
- one: 'страница'
- other: 'страницы'
- prev: 'Назад'
- next: 'Далее'
-widget:
- follow: 'Подписаться'
- recents: 'недавние'
- links: 'ссылки'
- catalogue: 'Каталог'
- subscribe_email: 'Подпишитесь на обновления'
- subscribe: 'Подписывайся'
- adsense: 'Рекламное объявление'
-article:
- created_at: 'Опубликовано %s'
- updated_at: 'Обновлено %s'
- more: 'Читать дальше'
- comments: 'Комментарии'
- read_time: '%s на чтение'
- word_count:
- one: 'Около %d слова'
- other: 'Примерно %d слова'
- licensing:
- author: 'Author'
- created_at: 'Posted on'
- updated_at: 'Updated on'
- licensed_under: 'Licensed under'
-donate:
- title: 'Понравилась эта статья? Поддержите автора'
- afdian: 'Afdian.net'
- alipay: 'Alipay'
- wechat: 'Wechat'
- paypal: 'Paypal'
- patreon: 'Patreon'
- buymeacoffee: 'Купи мне кофе'
-plugin:
- backtotop: 'Вернуться наверх'
- visit_count: '%s посещения'
- visitor_count: 'Посетили %s пользователя'
- cookie_consent:
- message: Этот веб-сайт использует файлы cookie для улучшения вашего опыта.
- dismiss: Понял!
- allow: Разрешить cookies
- deny: Отказаться
- link: Учить больше
- policy: Политика Cookie
-search:
- search: 'Поиск'
- hint: 'Введите что-нибудь...'
- no_result: 'Нет результатов по запросу'
- untitled: '(Без названия)'
- empty_preview: '(Нет предварительного просмотра)'
diff --git a/themes/icarus/languages/tk.yml b/themes/icarus/languages/tk.yml
deleted file mode 100644
index 63a924d..0000000
--- a/themes/icarus/languages/tk.yml
+++ /dev/null
@@ -1,65 +0,0 @@
-common:
- archive:
- one: 'Arhiw'
- other: 'Arhiwler'
- category:
- one: 'Bölüm'
- other: 'Bölümler'
- tag:
- one: 'Teg'
- other: 'Tegler'
- post:
- one: 'Post'
- other: 'Postlar'
- page:
- one: 'Sahypa'
- other: 'Sahypalar'
- prev: 'Öňki'
- next: 'Indiki'
-widget:
- follow: 'Abuna bol'
- recents: 'Täze habarlar'
- links: 'Linkler'
- catalogue: 'Katalog'
- subscribe_email: 'Täzelikler üçin ýazyl'
- subscribe: 'Ýazyl'
- adsense: 'Mahabat'
-article:
- created_at: 'Paýlaşyldy %s'
- updated_at: 'Üýtgedildi %s'
- more: 'Dowamy...'
- comments: 'Kommentariýa'
- read_time: '%s okaldy'
- word_count:
- one: 'Ortaça %d söz'
- other: 'Ortaça %d söz'
- licensing:
- author: 'Awtor'
- created_at: 'Paýlaşdy'
- updated_at: 'Üýtgetdi'
- licensed_under: 'Resmileşdirilen'
-donate:
- title: 'Haladynmy? Awtory gollaň'
- afdian: 'Afdian.net'
- alipay: 'Alipay'
- wechat: 'Wechat'
- paypal: 'Paypal'
- patreon: 'Patreon'
- buymeacoffee: 'Buy me a coffee'
-plugin:
- backtotop: 'Ýokaryk'
- visit_count: '%s görüldi'
- visitor_count: '%s adam gördi'
- cookie_consent:
- message: Bu web saýt siziň üçin kuki ulanýar.
- dismiss: Düşündim!
- allow: Kukini kabul et!
- deny: Närazylyk bildir
- link: Dowamy...
- policy: Kuki syýasaty
-search:
- search: 'Gözle'
- hint: 'Birzatlar ýazyň...'
- no_result: 'Tapylmady'
- untitled: 'Atlandyrylmadyk'
- empty_preview: 'Boş'
diff --git a/themes/icarus/languages/tr.yml b/themes/icarus/languages/tr.yml
deleted file mode 100644
index f0f32af..0000000
--- a/themes/icarus/languages/tr.yml
+++ /dev/null
@@ -1,65 +0,0 @@
-common:
- archive:
- one: 'Arşiv'
- other: 'Arşivler'
- category:
- one: 'Kategori'
- other: 'Kategoriler'
- tag:
- one: 'Etiket'
- other: 'Etiketler'
- post:
- one: 'Gönderi'
- other: 'Gönderiler'
- page:
- one: 'Sayfa'
- other: 'Sayfalar'
- prev: 'Önceki'
- next: 'Sonraki'
-widget:
- follow: 'TAKİP ET'
- recents: 'Son'
- links: 'Linkler'
- catalogue: 'Katalog'
- subscribe_email: 'Güncellemeler için abone olun'
- subscribe: 'Abone ol'
- adsense: 'İlan'
-article:
- created_at: '%s yayınlandı'
- updated_at: '%s güncellendi'
- more: 'Daha fazla oku'
- comments: 'Yorumlar'
- read_time: '%s okundu'
- word_count:
- one: 'Yaklaşık %d kelime'
- other: 'Yaklaşık %d kelime'
- licensing:
- author: 'Author'
- created_at: 'Posted on'
- updated_at: 'Updated on'
- licensed_under: 'Licensed under'
-donate:
- title: 'Bu makaleyi beğendiniz mi? Yazarı şununla destekleyin'
- afdian: 'Afdian.net'
- alipay: 'Alipay'
- wechat: 'Wechat'
- paypal: 'Paypal'
- patreon: 'Patreon'
- buymeacoffee: 'Bana bir kahve al'
-plugin:
- backtotop: 'Başa dönüş'
- visit_count: '%s ziyaret'
- visitor_count: '%s kullanıcı tarafından ziyaret edildi'
- cookie_consent:
- message: Bu web sitesi, deneyiminizi geliştirmek için çerezler kullanır.
- dismiss: Anladım!
- allow: Çerezlere izin ver
- deny: Reddet
- link: Daha fazla bilgi edin
- policy: Çerez politikası
-search:
- search: 'Search'
- hint: 'Bir şeyler yaz...'
- no_result: 'İçin sonuç yok'
- untitled: '(Başlıksız)'
- empty_preview: '(Önizleme yok)'
diff --git a/themes/icarus/languages/vn.yml b/themes/icarus/languages/vn.yml
deleted file mode 100644
index 2dec2eb..0000000
--- a/themes/icarus/languages/vn.yml
+++ /dev/null
@@ -1,65 +0,0 @@
-common:
- archive:
- one: 'Lưu trữ'
- other: 'Lưu trữ'
- category:
- one: 'Thể loại'
- other: 'Thể loại'
- tag:
- one: 'Nhãn'
- other: 'Nhãn'
- post:
- one: 'Bài viết'
- other: 'Bài viết'
- page:
- one: 'Trang'
- other: 'Trang'
- prev: 'Trước'
- next: 'Sau'
-widget:
- follow: 'Theo dõi'
- recents: 'Gần đây'
- links: 'Link'
- catalogue: 'Mục lục'
- subscribe_email: 'Theo dõi các bản cập nhật'
- subscribe: 'Theo dõi'
- adsense: 'Quảng cáo'
-article:
- created_at: 'Đã đăng %s'
- updated_at: 'Đã cập nhật %s'
- more: 'Đọc thêm'
- comments: 'Bình luận'
- read_time: '%s đọc'
- word_count:
- one: 'Khoảng %d từ'
- other: 'Khoảng %d từ'
- licensing:
- author: 'Author'
- created_at: 'Posted on'
- updated_at: 'Updated on'
- licensed_under: 'Licensed under'
-donate:
- title: 'Bạn đọc có thể ủng hộ blog qua'
- afdian: 'Afdian.net'
- alipay: 'Alipay'
- wechat: 'Wechat'
- paypal: 'Paypal'
- patreon: 'Patreon'
- buymeacoffee: 'Mua cho tôi một ly cà phê'
-plugin:
- backtotop: 'Trở lai đầu trang'
- visit_count: '%s Bạn đọc'
- visitor_count: 'Thăm bởi %s bạn đọc'
- cookie_consent:
- message: Trang web này sử dụng cookie để cải thiện trải nghiệm của bạn.
- dismiss: Hiểu rồi!
- allow: Cho phép cookie
- deny: Từ chối
- link: Tìm hiểu thêm
- policy: Chính sách Cookie
-search:
- search: 'Tìm kiếm'
- hint: 'Gõ gì đó...'
- no_result: 'Không có kết quả cho'
- untitled: '(Không có tiêu đề)'
- empty_preview: '(Không có xem trước)'
diff --git a/themes/icarus/languages/zh-CN.yml b/themes/icarus/languages/zh-CN.yml
deleted file mode 100644
index 9406747..0000000
--- a/themes/icarus/languages/zh-CN.yml
+++ /dev/null
@@ -1,65 +0,0 @@
-common:
- archive:
- one: '归档'
- other: '归档'
- category:
- one: '分类'
- other: '分类'
- tag:
- one: '标签'
- other: '标签'
- post:
- one: '文章'
- other: '文章'
- page:
- one: '页面'
- other: '页面'
- prev: '上一页'
- next: '下一页'
-widget:
- follow: '关注我'
- recents: '最新文章'
- links: '链接'
- catalogue: '目录'
- subscribe_email: '订阅更新'
- subscribe: '订阅'
- adsense: '广告'
-article:
- created_at: '%s发表'
- updated_at: '%s更新'
- more: '阅读更多'
- comments: '评论'
- read_time: '%s读完'
- word_count:
- one: '大约%d个字'
- other: '大约%d个字'
- licensing:
- author: '作者'
- created_at: '发布于'
- updated_at: '更新于'
- licensed_under: '许可协议'
-donate:
- title: '喜欢这篇文章?打赏一下作者吧'
- afdian: '爱发电'
- alipay: '支付宝'
- wechat: '微信'
- paypal: 'Paypal'
- patreon: 'Patreon'
- buymeacoffee: '送我杯咖啡'
-plugin:
- backtotop: '回到顶端'
- visit_count: '%s次访问'
- visitor_count: '共%s个访客'
- cookie_consent:
- message: 此网站使用Cookie来改善您的体验。
- dismiss: 知道了!
- allow: 允许使用Cookie
- deny: 拒绝
- link: 了解更多
- policy: Cookie政策
-search:
- search: '搜索'
- hint: '想要查找什么...'
- no_result: '未找到搜索结果'
- untitled: '(无标题)'
- empty_preview: '(无内容预览)'
diff --git a/themes/icarus/languages/zh-TW.yml b/themes/icarus/languages/zh-TW.yml
deleted file mode 100644
index b4ad6be..0000000
--- a/themes/icarus/languages/zh-TW.yml
+++ /dev/null
@@ -1,65 +0,0 @@
-common:
- archive:
- one: '彙整'
- other: '彙整'
- category:
- one: '分類'
- other: '分類'
- tag:
- one: '標籤'
- other: '標籤'
- post:
- one: '文章'
- other: '文章'
- page:
- one: '頁面'
- other: '頁面'
- prev: '上一頁'
- next: '下一頁'
-widget:
- follow: '追蹤'
- recents: '最新文章'
- links: '連結'
- catalogue: '文章目錄'
- subscribe_email: '訂閱 Email'
- subscribe: '訂閱'
- adsense: '廣告'
-article:
- created_at: '%s發表'
- updated_at: '%s更新'
- more: '繼續閱讀'
- comments: '評論'
- read_time: '%s讀完'
- word_count:
- one: '大約%d個字'
- other: '大約%d個字'
- licensing:
- author: '作者'
- created_at: '發表於'
- updated_at: '更新於'
- licensed_under: '許可協議'
-donate:
- title: '喜歡這篇文章嗎? 贊助一下作者吧!'
- afdian: '愛發電'
- alipay: '支付寶'
- wechat: 'WeChat'
- paypal: 'PayPal'
- patreon: 'Patreon'
- buymeacoffee: '送我杯咖啡'
-plugin:
- backtotop: '回到頁首'
- visit_count: '%s次訪問'
- visitor_count: '共%s個訪客'
- cookie_consent:
- message: 此網站使用Cookie來改善您的體驗。
- dismiss: 知道了!
- allow: 允許使用Cookie
- deny: 拒絕
- link: 了解更多
- policy: Cookie政策
-search:
- search: '搜尋'
- hint: '請輸入關鍵字...'
- no_result: '未找到搜索結果'
- untitled: '(無標題)'
- empty_preview: '(無內容預覽)'
diff --git a/themes/icarus/layout/archive.jsx b/themes/icarus/layout/archive.jsx
deleted file mode 100644
index 6af952b..0000000
--- a/themes/icarus/layout/archive.jsx
+++ /dev/null
@@ -1,62 +0,0 @@
-const moment = require('moment');
-const { Component, Fragment } = require('inferno');
-const Paginator = require('hexo-component-inferno/lib/view/misc/paginator');
-const ArticleMedia = require('hexo-component-inferno/lib/view/common/article_media');
-
-module.exports = class extends Component {
- render() {
- const { config, page, helper } = this.props;
- const { url_for, __, date_xml, date } = helper;
-
- const language = page.lang || page.language || config.language;
-
- function renderArticleList(posts, year, month = null) {
- const time = moment([page.year, page.month ? page.month - 1 : null].filter(i => i !== null));
-
- return
-
-
{month === null ? year : time.locale(language).format('MMMM YYYY')}
-
- {posts.map(post => {
- const categories = post.categories.map(category => ({
- url: url_for(category.path),
- name: category.name
- }));
- return
;
- })}
-
-
-
;
- }
-
- let articleList;
- if (!page.year) {
- const years = {};
- page.posts.each(p => { years[p.date.year()] = null; });
- articleList = Object.keys(years).sort((a, b) => b - a).map(year => {
- const posts = page.posts.filter(p => p.date.year() === parseInt(year, 10));
- return renderArticleList(posts, year, null);
- });
- } else {
- articleList = renderArticleList(page.posts, page.year, page.month);
- }
-
- return
- {articleList}
- {page.total > 1 ? : null}
- ;
- }
-};
diff --git a/themes/icarus/layout/categories.jsx b/themes/icarus/layout/categories.jsx
deleted file mode 100644
index 7c1ceb1..0000000
--- a/themes/icarus/layout/categories.jsx
+++ /dev/null
@@ -1,10 +0,0 @@
-const { Component } = require('inferno');
-const Categories = require('hexo-component-inferno/lib/view/widget/categories');
-
-module.exports = class extends Component {
- render() {
- const { site, page, helper } = this.props;
-
- return ;
- }
-};
diff --git a/themes/icarus/layout/category.jsx b/themes/icarus/layout/category.jsx
deleted file mode 100644
index 177041a..0000000
--- a/themes/icarus/layout/category.jsx
+++ /dev/null
@@ -1,26 +0,0 @@
-const { Component, Fragment } = require('inferno');
-const Index = require('./index');
-
-module.exports = class extends Component {
- render() {
- const { config, page, helper } = this.props;
- const { url_for, _p } = helper;
-
- return
-
-
- ;
- }
-};
diff --git a/themes/icarus/layout/comment/.gitkeep b/themes/icarus/layout/comment/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/themes/icarus/layout/common/article.jsx b/themes/icarus/layout/common/article.jsx
deleted file mode 100644
index 7c01d3d..0000000
--- a/themes/icarus/layout/common/article.jsx
+++ /dev/null
@@ -1,125 +0,0 @@
-const moment = require('moment');
-const { Component, Fragment } = require('inferno');
-const Share = require('./share');
-const Donates = require('./donates');
-const Comment = require('./comment');
-const ArticleLicensing = require('hexo-component-inferno/lib/view/misc/article_licensing');
-
-/**
- * Get the word count of text.
- */
-function getWordCount(content) {
- if (typeof content === 'undefined') {
- return 0;
- }
- content = content.replace(/<\/?[a-z][^>]*>/gi, '');
- content = content.trim();
- return content ? (content.match(/[\u00ff-\uffff]|[a-zA-Z]+/g) || []).length : 0;
-}
-
-module.exports = class extends Component {
- render() {
- const { config, helper, page, index } = this.props;
- const { article, plugins } = config;
- const { url_for, date, date_xml, __, _p } = helper;
-
- const indexLaunguage = config.language || 'en';
- const language = page.lang || page.language || config.language || 'en';
- const cover = page.cover ? url_for(page.cover) : null;
-
- return
- {/* Main content */}
-
- {/* Thumbnail */}
- {cover ?
- {index ?
-
- :
-
- }
-
: null}
-
- {/* Metadata */}
- {page.layout !== 'page' ?
-
- {/* Creation Date */}
- {page.date &&
${date(page.date)}`)
- }}>}
- {/* Last Update Date */}
- {page.updated &&
${date(page.updated)}`)
- }}>}
- {/* author */}
- {page.author ?
{page.author} : null}
- {/* Categories */}
- {page.categories && page.categories.length ?
- {(() => {
- const categories = [];
- page.categories.forEach((category, i) => {
- categories.push({category.name});
- if (i < page.categories.length - 1) {
- categories.push( / );
- }
- });
- return categories;
- })()}
- : null}
- {/* Read time */}
- {article && article.readtime && article.readtime === true ?
- {(() => {
- const words = getWordCount(page._content);
- const time = moment.duration((words / 150.0) * 60, 'seconds');
- return `${_p('article.read_time', time.locale(index ? indexLaunguage : language).humanize())} (${_p('article.word_count', words)})`;
- })()}
- : null}
- {/* Visitor counter */}
- {!index && plugins && plugins.busuanzi === true ?
0')
- }}> : null}
-
-
: null}
- {/* Title */}
- {page.title !== '' ?
- {index ? {page.title} : page.title}
-
: null}
- {/* Content/Excerpt */}
-
- {/* Licensing block */}
- {!index && article && article.licenses && Object.keys(article.licenses)
- ? : null}
- {/* Tags */}
- {!index && page.tags && page.tags.length ?
-
#
- {page.tags.map(tag => {
- return
{tag.name};
- })}
-
: null}
- {/* "Read more" button */}
- {index && page.excerpt ? {__('article.more')} : null}
- {/* Share button */}
- {!index ? : null}
-
-
- {/* Donate button */}
- {!index ? : null}
- {/* Post navigation */}
- {!index && (page.prev || page.next) ? : null}
- {/* Comment */}
- {!index ? : null}
- ;
- }
-};
diff --git a/themes/icarus/layout/common/comment.jsx b/themes/icarus/layout/common/comment.jsx
deleted file mode 100644
index cb9d6e0..0000000
--- a/themes/icarus/layout/common/comment.jsx
+++ /dev/null
@@ -1,30 +0,0 @@
-const logger = require('hexo-log')();
-const { Component } = require('inferno');
-const view = require('hexo-component-inferno/lib/core/view');
-
-module.exports = class extends Component {
- render() {
- const { config, page, helper } = this.props;
- const { __ } = helper;
- const { comment } = config;
- if (!comment || typeof comment.type !== 'string') {
- return null;
- }
-
- return
-
-
{__('article.comments')}
- {(() => {
- try {
- let Comment = view.require('comment/' + comment.type);
- Comment = Comment.Cacheable ? Comment.Cacheable : Comment;
- return ;
- } catch (e) {
- logger.w(`Icarus cannot load comment "${comment.type}"`);
- return null;
- }
- })()}
-
-
;
- }
-};
diff --git a/themes/icarus/layout/common/donates.jsx b/themes/icarus/layout/common/donates.jsx
deleted file mode 100644
index bafe9d4..0000000
--- a/themes/icarus/layout/common/donates.jsx
+++ /dev/null
@@ -1,34 +0,0 @@
-const logger = require('hexo-log')();
-const { Component } = require('inferno');
-const view = require('hexo-component-inferno/lib/core/view');
-
-module.exports = class extends Component {
- render() {
- const { config, helper } = this.props;
- const { __ } = helper;
- const { donates = [] } = config;
- if (!Array.isArray(donates) || !donates.length) {
- return null;
- }
- return
-
-
-
- {donates.map(service => {
- const type = service.type;
- if (typeof type === 'string') {
- try {
- let Donate = view.require('donate/' + type);
- Donate = Donate.Cacheable ? Donate.Cacheable : Donate;
- return ;
- } catch (e) {
- logger.w(`Icarus cannot load donate button "${type}"`);
- }
- }
- return null;
- })}
-
-
-
;
- }
-};
diff --git a/themes/icarus/layout/common/footer.jsx b/themes/icarus/layout/common/footer.jsx
deleted file mode 100644
index 108166b..0000000
--- a/themes/icarus/layout/common/footer.jsx
+++ /dev/null
@@ -1,92 +0,0 @@
-const { Component } = require('inferno');
-const { cacheComponent } = require('hexo-component-inferno/lib/util/cache');
-
-class Footer extends Component {
- render() {
- const {
- logo,
- logoUrl,
- siteUrl,
- siteTitle,
- siteYear,
- author,
- links,
- showVisitorCounter,
- visitorCounterTitle
- } = this.props;
-
- let footerLogo = '';
- if (logo) {
- if (logo.text) {
- footerLogo = logo.text;
- } else {
- footerLogo = ;
- }
- } else {
- footerLogo = siteTitle;
- }
-
- return ;
- }
-}
-
-module.exports = cacheComponent(Footer, 'common.footer', props => {
- const { config, helper } = props;
- const { url_for, _p, date } = helper;
- const { logo, title, author, footer, plugins } = config;
-
- const links = {};
- if (footer && footer.links) {
- Object.keys(footer.links).forEach(name => {
- const link = footer.links[name];
- links[name] = {
- url: url_for(typeof link === 'string' ? link : link.url),
- icon: link.icon
- };
- });
- }
-
- return {
- logo,
- logoUrl: url_for(logo),
- siteUrl: url_for('/'),
- siteTitle: title,
- siteYear: date(new Date(), 'YYYY'),
- author,
- links,
- showVisitorCounter: plugins && plugins.busuanzi === true,
- visitorCounterTitle: _p('plugin.visitor_count', '0')
- };
-});
diff --git a/themes/icarus/layout/common/head.jsx b/themes/icarus/layout/common/head.jsx
deleted file mode 100644
index acc2db2..0000000
--- a/themes/icarus/layout/common/head.jsx
+++ /dev/null
@@ -1,167 +0,0 @@
-const { Component } = require('inferno');
-const MetaTags = require('hexo-component-inferno/lib/view/misc/meta');
-const WebApp = require('hexo-component-inferno/lib/view/misc/web_app');
-const OpenGraph = require('hexo-component-inferno/lib/view/misc/open_graph');
-const StructuredData = require('hexo-component-inferno/lib/view/misc/structured_data');
-const Plugins = require('./plugins');
-
-function getPageTitle(page, siteTitle, helper) {
- let title = page.title;
-
- if (helper.is_archive()) {
- title = helper._p('common.archive', Infinity);
- if (helper.is_month()) {
- title += ': ' + page.year + '/' + page.month;
- } else if (helper.is_year()) {
- title += ': ' + page.year;
- }
- } else if (helper.is_category()) {
- title = helper._p('common.category', 1) + ': ' + page.category;
- } else if (helper.is_tag()) {
- title = helper._p('common.tag', 1) + ': ' + page.tag;
- } else if (helper.is_categories()) {
- title = helper._p('common.category', Infinity);
- } else if (helper.is_tags()) {
- title = helper._p('common.tag', Infinity);
- }
-
- return [title, siteTitle].filter(str => typeof str !== 'undefined' && str.trim() !== '').join(' - ');
-}
-
-module.exports = class extends Component {
- render() {
- const { site, config, helper, page } = this.props;
- const { url_for, cdn, fontcdn, iconcdn, is_post } = helper;
- const {
- url,
- head = {},
- article,
- highlight,
- variant = 'default'
- } = config;
- const {
- meta = [],
- manifest = {},
- open_graph = {},
- structured_data = {},
- canonical_url = page.permalink,
- rss,
- favicon
- } = head;
-
- const language = page.lang || page.language || config.language;
- const fontCssUrl = {
- default: fontcdn('Ubuntu:wght@400;600&family=Source+Code+Pro', 'css2'),
- cyberpunk: fontcdn('Oxanium:wght@300;400;600&family=Roboto+Mono', 'css2')
- };
-
- let hlTheme, images;
- if (highlight && highlight.enable === false) {
- hlTheme = null;
- } else if (article && article.highlight && article.highlight.theme) {
- hlTheme = article.highlight.theme;
- } else {
- hlTheme = 'atom-one-light';
- }
-
- if (typeof page.og_image === 'string') {
- images = [page.og_image];
- } else if (typeof page.cover === 'string') {
- images = [url_for(page.cover)];
- } else if (typeof page.thumbnail === 'string') {
- images = [url_for(page.thumbnail)];
- } else if (article && typeof article.og_image === 'string') {
- images = [article.og_image];
- } else if (page.content && page.content.includes(']*src=['"]([^'"]+)([^>]*>)/gi;
- while ((img = imgPattern.exec(page.content)) !== null) {
- images.push(img[1]);
- }
- } else {
- images = [url_for('/img/og_image.png')];
- }
-
- let adsenseClientId = null;
- if (Array.isArray(config.widgets)) {
- const widget = config.widgets.find(widget => widget.type === 'adsense');
- if (widget) {
- adsenseClientId = widget.client_id;
- }
- }
-
- let openGraphImages = images;
- if ((typeof open_graph === 'object' && open_graph !== null)
- && ((Array.isArray(open_graph.image) && open_graph.image.length > 0) || typeof open_graph.image === 'string')) {
- openGraphImages = open_graph.image;
- } else if ((Array.isArray(page.photos) && page.photos.length > 0) || typeof page.photos === 'string') {
- openGraphImages = page.photos;
- }
-
- let structuredImages = images;
- if ((typeof structured_data === 'object' && structured_data !== null)
- && ((Array.isArray(structured_data.image) && structured_data.image.length > 0) || typeof structured_data.image === 'string')) {
- structuredImages = structured_data.image;
- } else if ((Array.isArray(page.photos) && page.photos.length > 0) || typeof page.photos === 'string') {
- structuredImages = page.photos;
- }
-
- return
-
-
- {meta && meta.length ? : null}
-
- {getPageTitle(page, config.title, helper)}
-
-
-
- {typeof open_graph === 'object' && open_graph !== null ? : null}
-
- {typeof structured_data === 'object' && structured_data !== null ? : null}
-
- {canonical_url ? : null}
- {rss ? : null}
- {favicon ? : null}
-
- {hlTheme ? : null}
-
-
-
-
- {adsenseClientId ? : null}
- ;
- }
-};
diff --git a/themes/icarus/layout/common/navbar.jsx b/themes/icarus/layout/common/navbar.jsx
deleted file mode 100644
index b60ef34..0000000
--- a/themes/icarus/layout/common/navbar.jsx
+++ /dev/null
@@ -1,119 +0,0 @@
-const { Component, Fragment } = require('inferno');
-const { cacheComponent } = require('hexo-component-inferno/lib/util/cache');
-const classname = require('hexo-component-inferno/lib/util/classname');
-
-function isSameLink(a, b) {
- function santize(url) {
- let paths = url.replace(/(^\w+:|^)\/\//, '').split('#')[0].split('/').filter(p => p.trim() !== '');
- if (paths.length > 0 && paths[paths.length - 1].trim() === 'index.html') {
- paths = paths.slice(0, paths.length - 1);
- }
- return paths.join('/');
- }
- return santize(a) === santize(b);
-}
-
-class Navbar extends Component {
- render() {
- const {
- logo,
- logoUrl,
- siteUrl,
- siteTitle,
- menu,
- links,
- showToc,
- tocTitle,
- showSearch,
- searchTitle
- } = this.props;
-
- let navbarLogo = '';
- if (logo) {
- if (logo.text) {
- navbarLogo = logo.text;
- } else {
- navbarLogo = ;
- }
- } else {
- navbarLogo = siteTitle;
- }
-
- return ;
- }
-}
-
-module.exports = cacheComponent(Navbar, 'common.navbar', props => {
- const { config, helper, page } = props;
- const { url_for, _p, __ } = helper;
- const { logo, title, navbar, widgets, search } = config;
-
- const hasTocWidget = Array.isArray(widgets) && widgets.find(widget => widget.type === 'toc');
- const showToc = (config.toc === true || page.toc) && hasTocWidget && ['page', 'post'].includes(page.layout);
-
- const menu = {};
- if (navbar && navbar.menu) {
- const pageUrl = typeof page.path !== 'undefined' ? url_for(page.path) : '';
- Object.keys(navbar.menu).forEach(name => {
- const url = url_for(navbar.menu[name]);
- const active = isSameLink(url, pageUrl);
- menu[name] = { url, active };
- });
- }
-
- const links = {};
- if (navbar && navbar.links) {
- Object.keys(navbar.links).forEach(name => {
- const link = navbar.links[name];
- links[name] = {
- url: url_for(typeof link === 'string' ? link : link.url),
- icon: link.icon
- };
- });
- }
-
- return {
- logo,
- logoUrl: url_for(logo),
- siteUrl: url_for('/'),
- siteTitle: title,
- menu,
- links,
- showToc,
- tocTitle: _p('widget.catalogue', Infinity),
- showSearch: search && search.type,
- searchTitle: __('search.search')
- };
-});
diff --git a/themes/icarus/layout/common/plugins.jsx b/themes/icarus/layout/common/plugins.jsx
deleted file mode 100644
index 35a2942..0000000
--- a/themes/icarus/layout/common/plugins.jsx
+++ /dev/null
@@ -1,27 +0,0 @@
-const logger = require('hexo-log')();
-const { Component, Fragment } = require('inferno');
-const view = require('hexo-component-inferno/lib/core/view');
-
-module.exports = class extends Component {
- render() {
- const { site, config, page, helper, head } = this.props;
- const { plugins = [] } = config;
-
- return
- {Object.keys(plugins).map(name => {
- // plugin is not enabled
- if (!plugins[name]) {
- return null;
- }
- try {
- let Plugin = view.require('plugin/' + name);
- Plugin = Plugin.Cacheable ? Plugin.Cacheable : Plugin;
- return ;
- } catch (e) {
- logger.w(`Icarus cannot load plugin "${name}"`);
- return null;
- }
- })}
- ;
- }
-};
diff --git a/themes/icarus/layout/common/scripts.jsx b/themes/icarus/layout/common/scripts.jsx
deleted file mode 100644
index e7f6c83..0000000
--- a/themes/icarus/layout/common/scripts.jsx
+++ /dev/null
@@ -1,42 +0,0 @@
-const { Component, Fragment } = require('inferno');
-const Plugins = require('./plugins');
-
-module.exports = class extends Component {
- render() {
- const { site, config, helper, page } = this.props;
- const { url_for, cdn } = helper;
- const { article } = config;
- const language = page.lang || page.language || config.language || 'en';
-
- let fold = 'unfolded';
- let clipboard = true;
- if (article && article.highlight) {
- if (typeof article.highlight.clipboard !== 'undefined') {
- clipboard = !!article.highlight.clipboard;
- }
- if (typeof article.highlight.fold === 'string') {
- fold = article.highlight.fold;
- }
- }
-
- const embeddedConfig = `var IcarusThemeSettings = {
- article: {
- highlight: {
- clipboard: ${clipboard},
- fold: '${fold}'
- }
- }
- };`;
-
- return
-
-
- {clipboard && }
-
-
-
-
-
- ;
- }
-};
diff --git a/themes/icarus/layout/common/search.jsx b/themes/icarus/layout/common/search.jsx
deleted file mode 100644
index 015a9bb..0000000
--- a/themes/icarus/layout/common/search.jsx
+++ /dev/null
@@ -1,22 +0,0 @@
-const logger = require('hexo-log')();
-const { Component } = require('inferno');
-const view = require('hexo-component-inferno/lib/core/view');
-
-module.exports = class extends Component {
- render() {
- const { config, helper } = this.props;
- const { search } = config;
- if (!search || typeof search.type !== 'string') {
- return null;
- }
-
- try {
- let Search = view.require('search/' + search.type);
- Search = Search.Cacheable ? Search.Cacheable : Search;
- return ;
- } catch (e) {
- logger.w(`Icarus cannot load search "${search.type}"`);
- return null;
- }
- }
-};
diff --git a/themes/icarus/layout/common/share.jsx b/themes/icarus/layout/common/share.jsx
deleted file mode 100644
index e2206bb..0000000
--- a/themes/icarus/layout/common/share.jsx
+++ /dev/null
@@ -1,22 +0,0 @@
-const logger = require('hexo-log')();
-const { Component } = require('inferno');
-const view = require('hexo-component-inferno/lib/core/view');
-
-module.exports = class extends Component {
- render() {
- const { config, page, helper } = this.props;
- const { share } = config;
- if (!share || typeof share.type !== 'string') {
- return null;
- }
-
- try {
- let Share = view.require('share/' + share.type);
- Share = Share.Cacheable ? Share.Cacheable : Share;
- return ;
- } catch (e) {
- logger.w(`Icarus cannot load share button "${share.type}"`);
- return null;
- }
- }
-};
diff --git a/themes/icarus/layout/common/widgets.jsx b/themes/icarus/layout/common/widgets.jsx
deleted file mode 100644
index 0a69ca7..0000000
--- a/themes/icarus/layout/common/widgets.jsx
+++ /dev/null
@@ -1,103 +0,0 @@
-const logger = require('hexo-log')();
-const { Component } = require('inferno');
-const view = require('hexo-component-inferno/lib/core/view');
-const classname = require('hexo-component-inferno/lib/util/classname');
-
-function formatWidgets(widgets) {
- const result = {};
- if (Array.isArray(widgets)) {
- widgets.filter(widget => typeof widget === 'object').forEach(widget => {
- if ('position' in widget && (widget.position === 'left' || widget.position === 'right')) {
- if (!(widget.position in result)) {
- result[widget.position] = [widget];
- } else {
- result[widget.position].push(widget);
- }
- }
- });
- }
- return result;
-}
-
-function hasColumn(widgets, position) {
- if (Array.isArray(widgets)) {
- return typeof widgets.find(widget => widget.position === position) !== 'undefined';
- }
- return false;
-}
-
-function getColumnCount(widgets) {
- return [hasColumn(widgets, 'left'), hasColumn(widgets, 'right')].filter(v => !!v).length + 1;
-}
-
-function getColumnSizeClass(columnCount) {
- switch (columnCount) {
- case 2:
- return 'is-4-tablet is-4-desktop is-4-widescreen';
- case 3:
- return 'is-4-tablet is-4-desktop is-3-widescreen';
- }
- return '';
-}
-
-function getColumnVisibilityClass(columnCount, position) {
- if (columnCount === 3 && position === 'right') {
- return 'is-hidden-touch is-hidden-desktop-only';
- }
- return '';
-}
-
-function getColumnOrderClass(position) {
- return position === 'left' ? 'order-1' : 'order-3';
-}
-
-function isColumnSticky(config, position) {
- return typeof config.sidebar === 'object'
- && position in config.sidebar
- && config.sidebar[position].sticky === true;
-}
-
-class Widgets extends Component {
- render() {
- const { site, config, helper, page, position } = this.props;
- const widgets = formatWidgets(config.widgets)[position] || [];
- const columnCount = getColumnCount(config.widgets);
-
- if (!widgets.length) {
- return null;
- }
-
- return
- {widgets.map(widget => {
- // widget type is not defined
- if (!widget.type) {
- return null;
- }
- try {
- let Widget = view.require('widget/' + widget.type);
- Widget = Widget.Cacheable ? Widget.Cacheable : Widget;
- return
;
- } catch (e) {
- logger.w(`Icarus cannot load widget "${widget.type}"`);
- }
- return null;
- })}
- {position === 'left' && hasColumn(config.widgets, 'right') ?
: null}
-
;
- }
-}
-
-Widgets.getColumnCount = getColumnCount;
-
-module.exports = Widgets;
diff --git a/themes/icarus/layout/donate/.gitkeep b/themes/icarus/layout/donate/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/themes/icarus/layout/index.jsx b/themes/icarus/layout/index.jsx
deleted file mode 100644
index 7fe8419..0000000
--- a/themes/icarus/layout/index.jsx
+++ /dev/null
@@ -1,22 +0,0 @@
-const { Component, Fragment } = require('inferno');
-const Paginator = require('hexo-component-inferno/lib/view/misc/paginator');
-const Article = require('./common/article');
-
-module.exports = class extends Component {
- render() {
- const { config, page, helper } = this.props;
- const { __, url_for } = helper;
-
- return
- {page.posts.map(post => )}
- {page.total > 1 ? : null}
- ;
- }
-};
diff --git a/themes/icarus/layout/layout.jsx b/themes/icarus/layout/layout.jsx
deleted file mode 100644
index 8607b5d..0000000
--- a/themes/icarus/layout/layout.jsx
+++ /dev/null
@@ -1,43 +0,0 @@
-const { Component } = require('inferno');
-const classname = require('hexo-component-inferno/lib/util/classname');
-const Head = require('./common/head');
-const Navbar = require('./common/navbar');
-const Widgets = require('./common/widgets');
-const Footer = require('./common/footer');
-const Scripts = require('./common/scripts');
-const Search = require('./common/search');
-
-module.exports = class extends Component {
- render() {
- const { site, config, page, helper, body } = this.props;
-
- const language = page.lang || page.language || config.language;
- const columnCount = Widgets.getColumnCount(config.widgets);
-
- return
-
-
-
-
-
-
-
- ;
- }
-};
diff --git a/themes/icarus/layout/misc/.gitkeep b/themes/icarus/layout/misc/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/themes/icarus/layout/page.jsx b/themes/icarus/layout/page.jsx
deleted file mode 100644
index eb450cd..0000000
--- a/themes/icarus/layout/page.jsx
+++ /dev/null
@@ -1,10 +0,0 @@
-const { Component } = require('inferno');
-const Article = require('./common/article');
-
-module.exports = class extends Component {
- render() {
- const { config, page, helper } = this.props;
-
- return ;
- }
-};
diff --git a/themes/icarus/layout/plugin/animejs.jsx b/themes/icarus/layout/plugin/animejs.jsx
deleted file mode 100644
index 4a41c07..0000000
--- a/themes/icarus/layout/plugin/animejs.jsx
+++ /dev/null
@@ -1,22 +0,0 @@
-const { Component } = require('inferno');
-const { cacheComponent } = require('hexo-component-inferno/lib/util/cache');
-
-class AnimeJs extends Component {
- render() {
- if (this.props.head) {
- return ;
- }
- return ;
-
- }
-}
-
-AnimeJs.Cacheable = cacheComponent(AnimeJs, 'plugin.animejs', props => {
- const { helper, head } = props;
- return {
- head,
- jsUrl: helper.url_for('/js/animation.js')
- };
-});
-
-module.exports = AnimeJs;
diff --git a/themes/icarus/layout/plugin/back_to_top.jsx b/themes/icarus/layout/plugin/back_to_top.jsx
deleted file mode 100644
index c3b6e8d..0000000
--- a/themes/icarus/layout/plugin/back_to_top.jsx
+++ /dev/null
@@ -1,29 +0,0 @@
-const { Component, Fragment } = require('inferno');
-const { cacheComponent } = require('hexo-component-inferno/lib/util/cache');
-
-class BackToTop extends Component {
- render() {
- const { title, jsUrl } = this.props;
-
- return
-
-
-
-
- ;
-
- }
-}
-
-BackToTop.Cacheable = cacheComponent(BackToTop, 'plugin.backtotop', props => {
- const { helper, head } = props;
- if (head) {
- return null;
- }
- return {
- title: helper.__('plugin.backtotop'),
- jsUrl: helper.url_for('/js/back_to_top.js')
- };
-});
-
-module.exports = BackToTop;
diff --git a/themes/icarus/layout/post.jsx b/themes/icarus/layout/post.jsx
deleted file mode 100644
index eb450cd..0000000
--- a/themes/icarus/layout/post.jsx
+++ /dev/null
@@ -1,10 +0,0 @@
-const { Component } = require('inferno');
-const Article = require('./common/article');
-
-module.exports = class extends Component {
- render() {
- const { config, page, helper } = this.props;
-
- return ;
- }
-};
diff --git a/themes/icarus/layout/search/.gitkeep b/themes/icarus/layout/search/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/themes/icarus/layout/share/.gitkeep b/themes/icarus/layout/share/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/themes/icarus/layout/tag.jsx b/themes/icarus/layout/tag.jsx
deleted file mode 100644
index 2b6e425..0000000
--- a/themes/icarus/layout/tag.jsx
+++ /dev/null
@@ -1,23 +0,0 @@
-const { Component, Fragment } = require('inferno');
-const Index = require('./index');
-
-module.exports = class extends Component {
- render() {
- const { config, page, helper } = this.props;
- const { url_for, _p } = helper;
-
- return
-
-
- ;
- }
-};
diff --git a/themes/icarus/layout/tags.jsx b/themes/icarus/layout/tags.jsx
deleted file mode 100644
index e8c5a38..0000000
--- a/themes/icarus/layout/tags.jsx
+++ /dev/null
@@ -1,10 +0,0 @@
-const { Component } = require('inferno');
-const Tags = require('hexo-component-inferno/lib/view/widget/tags');
-
-module.exports = class extends Component {
- render() {
- const { site, helper } = this.props;
-
- return ;
- }
-};
diff --git a/themes/icarus/layout/widget/profile.jsx b/themes/icarus/layout/widget/profile.jsx
deleted file mode 100644
index 940d251..0000000
--- a/themes/icarus/layout/widget/profile.jsx
+++ /dev/null
@@ -1,156 +0,0 @@
-const { Component } = require('inferno');
-const gravatrHelper = require('hexo-util').gravatar;
-const { cacheComponent } = require('hexo-component-inferno/lib/util/cache');
-
-class Profile extends Component {
- renderSocialLinks(links) {
- if (!links.length) {
- return null;
- }
- return ;
- }
-
- render() {
- const {
- avatar,
- avatarRounded,
- author,
- authorTitle,
- location,
- counter,
- followLink,
- followTitle,
- socialLinks
- } = this.props;
- return ;
- }
-}
-
-Profile.Cacheable = cacheComponent(Profile, 'widget.profile', props => {
- const { site, helper, widget } = props;
- const {
- avatar,
- gravatar,
- avatar_rounded = false,
- author = props.config.author,
- author_title,
- location,
- follow_link,
- social_links
- } = widget;
- const { url_for, _p, __ } = helper;
-
- function getAvatar() {
- if (gravatar) {
- return gravatrHelper(gravatar, 128);
- }
- if (avatar) {
- return url_for(avatar);
- }
- return url_for('/img/avatar.png');
- }
-
- const postCount = site.posts.length;
- const categoryCount = site.categories.filter(category => category.length).length;
- const tagCount = site.tags.filter(tag => tag.length).length;
-
- const socialLinks = social_links ? Object.keys(social_links).map(name => {
- const link = social_links[name];
- if (typeof link === 'string') {
- return {
- name,
- url: url_for(link)
- };
- }
- return {
- name,
- url: url_for(link.url),
- icon: link.icon
- };
- }) : null;
-
- return {
- avatar: getAvatar(),
- avatarRounded: avatar_rounded,
- author,
- authorTitle: author_title,
- location,
- counter: {
- post: {
- count: postCount,
- title: _p('common.post', postCount),
- url: url_for('/archives')
- },
- category: {
- count: categoryCount,
- title: _p('common.category', categoryCount),
- url: url_for('/categories')
- },
- tag: {
- count: tagCount,
- title: _p('common.tag', tagCount),
- url: url_for('/tags')
- }
- },
- followLink: follow_link ? url_for(follow_link) : undefined,
- followTitle: __('widget.follow'),
- socialLinks
- };
-});
-
-module.exports = Profile;
diff --git a/themes/icarus/package.json b/themes/icarus/package.json
deleted file mode 100644
index e646b60..0000000
--- a/themes/icarus/package.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "name": "hexo-theme-icarus",
- "version": "4.3.0",
- "author": "ppoffice ",
- "license": "MIT",
- "description": "A simple, delicate, and modern theme for Hexo",
- "keywords": [
- "hexo",
- "theme",
- "icarus"
- ],
- "homepage": "https://github.com/ppoffice/hexo-theme-icarus",
- "repository": "https://github.com/ppoffice/hexo-theme-icarus.git",
- "bugs": {
- "url": "https://github.com/ppoffice/hexo-theme-icarus/issues"
- },
- "engines": {
- "node": ">=12.4.0"
- },
- "scripts": {
- "lint": "eslint --ext .js --ext .jsx --ext .json ."
- },
- "devDependencies": {
- "bulma-stylus": "0.8.0",
- "eslint": "^7.6.0",
- "eslint-config-hexo": "^4.1.0",
- "eslint-plugin-json": "^3.0.0",
- "eslint-plugin-react": "^7.17.0",
- "hexo": "^5.0.2",
- "hexo-log": "^2.0.0",
- "hexo-pagination": "^1.0.0",
- "hexo-renderer-inferno": "^0.1.3",
- "hexo-renderer-stylus": "^2.0.0",
- "hexo-util": "^2.2.0"
- },
- "dependencies": {
- "deepmerge": "^4.2.2",
- "hexo-component-inferno": "^0.12.0",
- "inferno": "^7.3.3",
- "inferno-create-element": "^7.3.3",
- "moment": "^2.22.2",
- "semver": ">=5.0.0"
- },
- "peerDependencies": {
- "bulma-stylus": "0.8.0",
- "hexo": "^5.0.2",
- "hexo-log": "^2.0.0",
- "hexo-pagination": "^1.0.0",
- "hexo-renderer-inferno": "^0.1.3",
- "hexo-renderer-stylus": "^2.0.0",
- "hexo-util": "^2.2.0"
- }
-}
diff --git a/themes/icarus/scripts/index.js b/themes/icarus/scripts/index.js
deleted file mode 100644
index 3d72e90..0000000
--- a/themes/icarus/scripts/index.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/* global hexo */
-const logger = require('hexo-log')();
-
-/**
- * Print welcome message
- */
-logger.info(`=======================================
- ██╗ ██████╗ █████╗ ██████╗ ██╗ ██╗███████╗
- ██║██╔════╝██╔══██╗██╔══██╗██║ ██║██╔════╝
- ██║██║ ███████║██████╔╝██║ ██║███████╗
- ██║██║ ██╔══██║██╔══██╗██║ ██║╚════██║
- ██║╚██████╗██║ ██║██║ ██║╚██████╔╝███████║
- ╚═╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚══════╝
-=============================================`);
-
-/**
- * Check if all dependencies are installed
- */
-require('../include/dependency')(hexo);
-
-/**
- * Configuration file checking and migration
- */
-require('../include/config')(hexo);
-
-/**
- * Register Hexo extensions and remove Hexo filters that could cause OOM
- */
-require('../include/register')(hexo);
diff --git a/themes/icarus/source/css/cyberpunk.styl b/themes/icarus/source/css/cyberpunk.styl
deleted file mode 100644
index ff5553a..0000000
--- a/themes/icarus/source/css/cyberpunk.styl
+++ /dev/null
@@ -1,321 +0,0 @@
-$family-sans-serif ?= 'Oxanium', Ubuntu, Roboto, 'Open Sans', 'Microsoft YaHei', sans-serif
-$family-code ?= 'Roboto Mono', monospace, 'Microsoft YaHei'
-// shadow and radius
-$shadow ?= none
-$radius ?= 0
-$radius-small ?= 0
-// base colors
-$white ?= #fff
-$white-bis ?= #cdcdcd
-$grey ?= #848484
-$black ?= #000
-$black-bis ?= #050a0e
-$orange ?= #ff8e3c
-$yellow ?= #fcee09
-$green ?= #00ff41
-$blue ?= #02d7f2
-$purple ?= #9561d2
-$red ?= #ff003c
-$primary ?= $yellow
-$info ?= $blue
-$success ?= $green
-$warning ?= $orange
-$danger ?= $red
-// invert colors
-$orange-invert ?= #121617
-$yellow-invert ?= #121617
-$green-invert ?= #121617
-$blue-invert ?= #121617
-$purple-invert ?= #121617
-$red-invert ?= #121617
-$primary-invert ?= #121617
-$info-invert ?= #121617
-$success-invert ?= #121617
-$warning-invert ?= #121617
-$danger-invert ?= #121617
-// derived colors
-$scheme-main ?= $black
-$link ?= $blue
-$link-hover ?= $primary
-$text ?= $white-bis
-$text-strong ?= $yellow
-$body-background-color ?= $scheme-main
-$input-color ?= $text
-$input-placeholder-color ?= rgba($input-color, .8)
-$footer-color ?= $black
-$footer-background-color ?= $yellow
-$navbar-background-color ?= $yellow
-$navbar-item-color ?= $black
-$navbar-item-active-color ?= $black
-$navbar-item-hover-color ?= $black
-$navbar-item-hover-background-color ?= transparent
-$navbar-item-margin-v ?= 1.25rem
-$navbar-item-margin-h ?= .25rem
-$navbar-item-padding-v ?= 0
-$navbar-item-padding-h ?= .5rem
-$card-background-color ?= transparent
-$menu-label-color ?= $blue
-$menu-item-hover-color ?= $black
-$menu-item-hover-background-color ?= $yellow
-$menu-item-active-color ?= $black
-$menu-item-active-background-color ?= $yellow
-$menu-list-border-left ?= 1px solid $text
-$tag-color ?= $black
-$tag-background-color ?= $blue
-$timeline-fg-line ?= $blue
-$timeline-bg-line ?= $body-background-color
-$post-navigation-fg ?= $white-bis
-$searchbox-bg-container ?= $black-bis
-$searchbox-border ?= $blue
-$searchbox-bg-input ?= $black-bis
-$searchbox-bg-close-hover ?= $black
-$searchbox-bg-close-active ?= $searchbox-bg-close-hover
-$searchbox-bg-result-item-hover ?= $black
-
-@import 'style'
-
-clip-path(clip)
- clip-path: clip
- -webkit-clip-path: clip
-
-cut-corner(size)
- clip-path(unquote('polygon(' + size + ' 0, 100% 0, 100% calc(100% - ' + size + '), calc(100% - ' + size + ') 100%, 0 100%, 0 ' + size + ')'))
-
-cut-corner-reverse(size)
- clip-path(unquote('polygon(0 0, calc(100% - ' + size + ') 0, 100% ' + size + ', 100% 100%, ' + size + ' 100%, 0 calc(100% - ' + size + '), 0 0)'))
-
-cut-corner-top-right(size)
- clip-path(unquote('polygon(0 0, calc(100% - ' + size + ') 0, 100% ' + size + ', 100% 100%, 0 100%)'))
-
-cut-corner-bottom-left(size)
- clip-path(unquote('polygon(0 0, 100% 0, 100% 100%, ' + size + ' 100%, 0 calc(100% - ' + size + '))'))
-
-cut-corner-bottom-right(size)
- clip-path(unquote('polygon(0 0, 100% 0, 100% calc(100% - ' + size + '), calc(100% - ' + size + ') 100%, 0 100%)'))
-
-undercover-before()
- position: relative
-
- &:before
- content: ''
- position: absolute
- z-index: -1
- top: 0
- left: 0
- right: 0
- bottom: 0
-
-body
- counter-reset: card
-
-::selection
- color: $black
- background: $blue
-
-.card:not(#back-to-top)
- position: relative
- counter-increment: card
-
- &, .card-content
- undercover-before()
-
- &:before
- top: -1.2px
- left: -1.2px
- right: -1.2px
- bottom: -1.2px
- background-color: $blue
- cut-corner-reverse(16px)
-
- &:after
- content: 'R' counter(card)
- position: absolute
- color: $blue
- right: 2rem
- bottom: -.6em
- font-size: .75rem
- padding: 0 .25em
- background: $body-background-color
-
- .card-image
- cut-corner-top-right(16px)
-
- .card-content:before
- background-color: $body-background-color
- cut-corner-reverse(16px)
-
- .card-image + .card-content:before
- cut-corner-bottom-left(16px)
-
-clip-button($color, $color-invert)
- &:before
- background-color: $color
- color: $color-invert
-
- &:hover:before, &.is-hovered:before
- background-color: darken($color, 2.5%)
- color: $color-invert
-
- &:focus:before, &.is-focused:before
- color: $color-invert
-
- &:active:before, &.is-active:before
- background-color: darken($color, 5%)
- color: $color-invert
-
- &[disabled]:before, fieldset[disabled] &:before
- background-color: $color
-
- &.is-inverted
- &:before
- background-color: $color-invert
- color: $color
-
- &:hover:before, &.is-hovered:before
- background-color: darken($color-invert, 5%)
-
- &[disabled]:before, fieldset[disabled] &:before
- background-color: $color-invert
- border-color: transparent
- box-shadow: none
- color: $color
-
-.button:not(input)
- border: none
- outline: none
- background: transparent !important
- undercover-before()
-
- &:before
- cut-corner(8px)
-
- // clip-path will cut off overflown content inside a button
- // thus we need to use :before pseudo-element to style the buttons
- for $name, $pair in $colors
- $color = $pair['1']
- $color-invert = $pair['2']
-
- &.is-{$name}
- clip-button($color, $color-invert)
-
-.field.has-addons
- .control:not(:first-child)
- .button
- cut-corner-bottom-right(8px)
-
-.menu-list a
- cut-corner(8px)
-
-.tags.has-addons
- .tag:first-child
- background: $yellow !important
-
- .tag:last-child
- background: $blue !important
-
-.pagination-previous, .pagination-next, .pagination-link
- cut-corner(8px)
-
- &:hover
- background-color: $blue
-
- &, a
- color: $black
-
-.navbar-main
- padding-top: 10px
- padding-bottom: 30px
-
- &:after
- content: ''
- position: absolute
- left: 0
- right: 0
- bottom: -2px
- background: url('../img/razor-top-black.svg') repeat-x top
- height: 40px
-
- .navbar-menu
- .navbar-item
- &:hover, &.is-active
- color: $navbar-background-color
- background-color: $body-background-color !important
-
-article.article, article.media
- .title a
- background-image: linear-gradient(transparent calc(100% - 2px), $text-strong 2px)
- background-repeat: no-repeat
- background-size: 0 100%
- transition: background-size .25s ease-in-out
-
- .title:hover a
- background-size: 100% 100%
-
-article.article
- .article-more
- clip-button($info, $info-invert)
-
-.article-licensing
- background: $black-ter
-
-.content
- blockquote
- background: transparent
- border: .5px solid $blue
- border-left: 5px solid $blue
-
-.footer
- position: relative
-
- &:before
- content: ''
- position: absolute
- left: 0
- right: 0
- top: -1px
- height: 39px
- background: url('../img/razor-bottom-black.svg') repeat-x top
-
- & > .container
- padding-top: 40px
-
-.timeline .media
- &:before
- clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%)
-
-.searchbox .searchbox-container
- border: 1px solid $blue
-
- .searchbox-body
- border-bottom: 1px solid $searchbox-border
-
- li:last-child .searchbox-result-section
- border-bottom: none
-
- .searchbox-result-item
- em
- color: $black
-
-#back-to-top
- color: $black
- background: $blue
- margin-top: 45px
- cut-corner(8px)
-
-.cc-window, .cc-revoke
- border-radius: 0 !important
-
-.cc-window
- &:not(.cc-banner)
- border: 1px solid $blue
-
- &.cc-theme-classic, &.cc-theme-block
- .cc-compliance > .cc-btn
- border-radius: 0
-
- &.cc-banner
- .cc-compliance > .cc-btn
- background-color: $blue
-
- &:hover, &:focus
- background-color: darken($blue, 2.5%)
diff --git a/themes/icarus/source/css/default.styl b/themes/icarus/source/css/default.styl
deleted file mode 100644
index 97102a8..0000000
--- a/themes/icarus/source/css/default.styl
+++ /dev/null
@@ -1 +0,0 @@
-@import 'style'
diff --git a/themes/icarus/source/css/style.styl b/themes/icarus/source/css/style.styl
deleted file mode 100644
index b970636..0000000
--- a/themes/icarus/source/css/style.styl
+++ /dev/null
@@ -1,18 +0,0 @@
-// Base CSS framework
-@import '../../include/style/base'
-// Helper classes & mixins
-@import '../../include/style/helper'
-// Icarus components
-@import '../../include/style/button'
-@import '../../include/style/card'
-@import '../../include/style/article'
-@import '../../include/style/navbar'
-@import '../../include/style/footer'
-@import '../../include/style/pagination'
-@import '../../include/style/timeline'
-@import '../../include/style/search'
-@import '../../include/style/codeblock'
-@import '../../include/style/widget'
-@import '../../include/style/donate'
-@import '../../include/style/plugin'
-@import '../../include/style/responsive'
diff --git a/themes/icarus/source/img/avatar.png b/themes/icarus/source/img/avatar.png
deleted file mode 100644
index baba51e53c2dab9d3b17b9a9092545103fdd9223..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 17955
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
M07*qoM6N<$f};LGC;$Ke
diff --git a/themes/icarus/source/img/favicon.svg b/themes/icarus/source/img/favicon.svg
deleted file mode 100644
index 32a8683..0000000
--- a/themes/icarus/source/img/favicon.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
\ No newline at end of file
diff --git a/themes/icarus/source/img/logo.svg b/themes/icarus/source/img/logo.svg
deleted file mode 100644
index 038b593..0000000
--- a/themes/icarus/source/img/logo.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
\ No newline at end of file
diff --git a/themes/icarus/source/img/og_image.png b/themes/icarus/source/img/og_image.png
deleted file mode 100644
index 3aa934027ff96e7e44f24be312e733a05d847fd9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 57197
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