first commit

This commit is contained in:
mozzie 2023-10-19 21:55:22 +08:00
commit 39b0e3a8b4
158 changed files with 2848 additions and 0 deletions

20
.drone.yml Normal file
View File

@ -0,0 +1,20 @@
---
kind: pipeline
type: exec
name: mozzie.cn发布内容
steps:
- name: greeting
commands:
- echo 开始构建mozzie.cn
- name: publish
commands:
- ls
- cp -rf css /www/wwwroot/nginx/html/www.mozzie.cn/
- cp -rf doc@ /www/wwwroot/nginx/html/www.mozzie.cn/
- cp -rf favicon.png /www/wwwroot/nginx/html/www.mozzie.cn/
- cp -rf img /www/wwwroot/nginx/html/www.mozzie.cn/
- cp -rf index.html /www/wwwroot/nginx/html/www.mozzie.cn/
- cp -rf js /www/wwwroot/nginx/html/www.mozzie.cn/
- echo 构建完成

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
**/node_modules
**/dist
**/.DS_Store

105
_config.yml Normal file
View File

@ -0,0 +1,105 @@
# Hexo Configuration
## Docs: https://hexo.io/docs/configuration.html
## Source: https://github.com/hexojs/hexo/
# Site
title: Hexo
subtitle: ''
description: ''
keywords:
author: John Doe
language: en
timezone: ''
# URL
## Set your site url here. For example, if you use GitHub Page, set url as 'https://username.github.io/project'
url: http://example.com
permalink: :year/:month/:day/:title/
permalink_defaults:
pretty_urls:
trailing_index: true # Set to false to remove trailing 'index.html' from permalinks
trailing_html: true # Set to false to remove trailing '.html' from permalinks
# Directory
source_dir: source
public_dir: public
tag_dir: tags
archive_dir: archives
category_dir: categories
code_dir: downloads/code
i18n_dir: :lang
skip_render:
# Writing
new_post_name: :title.md # File name of new posts
default_layout: post
titlecase: false # Transform title into titlecase
external_link:
enable: true # Open external links in new tab
field: site # Apply to the whole site
exclude: ''
filename_case: 0
render_drafts: false
post_asset_folder: false
relative_link: false
future: true
highlight:
enable: true
line_number: true
auto_detect: false
tab_replace: ''
wrap: true
hljs: false
prismjs:
enable: false
preprocess: true
line_number: true
tab_replace: ''
# Home page setting
# path: Root path for your blogs index page. (default = '')
# per_page: Posts displayed per page. (0 = disable pagination)
# order_by: Posts order. (Order by date descending by default)
index_generator:
path: ''
per_page: 10
order_by: -date
# Category & Tag
default_category: uncategorized
category_map:
tag_map:
# Metadata elements
## https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta
meta_generator: true
# Date / Time format
## Hexo uses Moment.js to parse and display date
## You can customize the date format as defined in
## http://momentjs.com/docs/#/displaying/format/
date_format: YYYY-MM-DD
time_format: HH:mm:ss
## updated_option supports 'mtime', 'date', 'empty'
updated_option: 'mtime'
# Pagination
## Set per_page to 0 to disable pagination
per_page: 10
pagination_dir: page
# Include / Exclude file(s)
## include:/exclude: options only apply to the 'source/' folder
include:
exclude:
ignore:
# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
theme: hexo-theme-linear
# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
type: ''

1
db.json Normal file

File diff suppressed because one or more lines are too long

26
package.json Normal file
View File

@ -0,0 +1,26 @@
{
"name": "my-hexo-blog",
"version": "1.0.0",
"private": true,
"scripts": {
"build": "hexo generate",
"clean": "hexo clean",
"deploy": "hexo deploy",
"server": "hexo server"
},
"hexo": {
"version": "6.3.0"
},
"dependencies": {
"hexo": "^6.3.0",
"hexo-generator-archive": "^2.0.0",
"hexo-generator-category": "^2.0.0",
"hexo-generator-index": "^3.0.0",
"hexo-generator-tag": "^2.0.0",
"hexo-renderer-ejs": "^2.0.0",
"hexo-renderer-marked": "^6.0.0",
"hexo-renderer-stylus": "^2.1.0",
"hexo-server": "^3.0.0",
"hexo-theme-landscape": "^1.0.0"
}
}

1588
pnpm-lock.yaml Normal file

File diff suppressed because it is too large Load Diff

4
scaffolds/draft.md Normal file
View File

@ -0,0 +1,4 @@
---
title: {{ title }}
tags:
---

4
scaffolds/page.md Normal file
View File

@ -0,0 +1,4 @@
---
title: {{ title }}
date: {{ date }}
---

5
scaffolds/post.md Normal file
View File

@ -0,0 +1,5 @@
---
title: {{ title }}
date: {{ date }}
tags:
---

View File

@ -0,0 +1,38 @@
---
title: Hello World
---
Welcome to [Hexo](https://hexo.io/)! This is your very first post. Check [documentation](https://hexo.io/docs/) for more info. If you get any problems when using Hexo, you can find the answer in [troubleshooting](https://hexo.io/docs/troubleshooting.html) or you can ask me on [GitHub](https://github.com/hexojs/hexo/issues).
## Quick Start
### Create a new post
``` bash
$ hexo new "My New Post"
```
More info: [Writing](https://hexo.io/docs/writing.html)
### Run server
``` bash
$ hexo server
```
More info: [Server](https://hexo.io/docs/server.html)
### Generate static files
``` bash
$ hexo generate
```
More info: [Generating](https://hexo.io/docs/generating.html)
### Deploy to remote sites
``` bash
$ hexo deploy
```
More info: [Deployment](https://hexo.io/docs/one-command-deployment.html)

0
themes/.gitkeep Normal file
View File

View File

@ -0,0 +1,62 @@
# support svg or image url, such as /img/favicon.png
favicon: <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M13 10l7.383 7.418c.823.82.823 2.148 0 2.967a2.11 2.11 0 0 1-2.976 0L10 13"></path><path d="M6.293 15.293l-2.586-2.586a1 1 0 0 1 0-1.414l7.586-7.586a1 1 0 0 1 1.414 0l2.586 2.586a1 1 0 0 1 0 1.414l-7.586 7.586a1 1 0 0 1-1.414 0z"></path></g></svg>
# required = false
icp: 苏ICP备xxxxxxx号
motto: true
# Copyright statement at the bottom of the post
postCopyright:
enable: true
license: CC BY-NC-SA 4.0
license_url: https://creativecommons.org/licenses/by-nc-sa/4.0/
# post classification icon mapping
postCategoryIcons:
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><path d="M9 16h6v2H9zm4-7h-2v2H9v2h2v2h2v-2h2v-2h-2z" fill="currentColor"></path><path d="M12 2c-5.33 4.55-8 8.48-8 11.8c0 4.98 3.8 8.2 8 8.2s8-3.22 8-8.2c0-3.32-2.67-7.25-8-11.8zm0 18c-3.35 0-6-2.57-6-6.2c0-2.34 1.95-5.44 6-9.14c4.05 3.7 6 6.79 6 9.14c0 3.63-2.65 6.2-6 6.2z" fill="currentColor"></path></svg>
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><path d="M28 22h2v8h-2z" fill="currentColor"></path><path d="M24 18h2v12h-2z" fill="currentColor"></path><path d="M20 26h2v4h-2z" fill="currentColor"></path><path d="M9 16a7 7 0 1 0 7 7a7.008 7.008 0 0 0-7-7zm4.899 6H10v-3.899A5.014 5.014 0 0 1 13.899 22zM9 28a5 5 0 0 1-1-9.899V22a2 2 0 0 0 2 2h3.899A5.008 5.008 0 0 1 9 28z" fill="currentColor"></path><path d="M22.535 12l4-6H30V4h-4.535l-4 6H18V2h-2v12a2 2 0 0 0 2 2h12v-2H18v-2z" fill="currentColor"></path><circle cx="11" cy="7" r="1" fill="currentColor"></circle><circle cx="9" cy="11" r="1" fill="currentColor"></circle><circle cx="7" cy="5" r="1" fill="currentColor"></circle><circle cx="5" cy="9" r="1" fill="currentColor"></circle><circle cx="3" cy="13" r="1" fill="currentColor"></circle></svg>
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><path d="M22 11h-4.17l3.24-3.24l-1.41-1.42L15 11h-2V9l4.66-4.66l-1.42-1.41L13 6.17V2h-2v4.17L7.76 2.93L6.34 4.34L11 9v2H9L4.34 6.34L2.93 7.76L6.17 11H2v2h4.17l-3.24 3.24l1.41 1.42L9 13h2v2l-4.66 4.66l1.42 1.41L11 17.83V22h2v-4.17l3.24 3.24l1.42-1.41L13 15v-2h2l4.66 4.66l1.41-1.42L17.83 13H22z" fill="currentColor"></path></svg>
# katex
katex:
enable: true
jsCdn: //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.js
cssCdn: //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css
# mermaid
mermaid:
enable: true
cdn: //cdn.jsdelivr.net/npm/mermaid@10.4.0/dist/mermaid.min.js
# post comments
valine:
enable: true
appId: TisMit6uhflounFqAN3ZGjgq-MdYXbMMI
appKey: CdjirjYdz07U5i62ElsJvXUh
avatar: monsterid
cdn: //unpkg.com/valine@latest/dist/Valine.min.js
# search service
algolia:
appId: 5DTW808BZ8
apiKey: 04971da7118a97baf2fc19989e016ee2
adminApiKey: 73fd07d4f278b0e494cf31f771fef43f
SearchOnlyAPIKey: 27845b245efc8a2853cc0bdc7366ea26
chunkSize: 5000
indexName: hex-blog
fields:
- content:strip
- categories
- date
- permalink
- slug
- tags
- title
# qweather for index weather widget, u must register api first
# api register: https://id.qweather.com/#/register
weather:
enable: true
cityCode: 101190101
appKey: 6f89c60ce1714fa58018b5489aa697e5

View File

@ -0,0 +1,27 @@
tip-index: الرئيسية
tip-switch-theme: تغيير الثيم
tip-status-done: مكتمل
tip-status-doing: قيد التنفيذ
tip-status-todo: قيد الانتظار
tip-status-other: مكرر
tip-status-default: افتراضي
tip-filter: فلتر الحالة
tip-top: الأعلى
tip-prev-page: الصفحة السابقة
tip-next-page: الصفحة التالية
tip-collapse: طي
tip-expand: توسيع
text-select: اختر
text-move: حركة
text-esc: إغلاق
text-post-count-prev: مجموع
text-post-count-next: منشورات
text-timeline: الجدول الزمني
text-search: بحث...
text-category: الفئة
text-author: المؤلف
text-pub-time: نشر في
text-license: الترخيص
text-post-link: رابط المنشور
text-catalog: الفهرس

View File

@ -0,0 +1,27 @@
tip-index: Startseite
tip-switch-theme: Thema wechseln
tip-status-done: Erledigt
tip-status-doing: In Bearbeitung
tip-status-todo: Zu erledigen
tip-status-other: Duplikat
tip-status-default: Standard
tip-filter: Statusfilter
tip-top: Nach oben
tip-prev-page: Vorherige Seite
tip-next-page: Nächste Seite
tip-collapse: Einklappen
tip-expand: Ausklappen
text-select: auswählen
text-move: Bewegung
text-esc: schließen
text-post-count-prev: Insgesamt
text-post-count-next: Beiträge
text-timeline: Zeitleiste
text-search: Suchen...
text-category: Kategorie
text-author: Autor
text-pub-time: Veröffentlicht am
text-license: Lizenz
text-post-link: Beitrag URL
text-catalog: Katalog

View File

@ -0,0 +1,28 @@
# tip
tip-index: Home
tip-switch-theme: Switch Theme
tip-status-done: Done
tip-status-doing: In Progress
tip-status-todo: Todo
tip-status-other: Duplicate
tip-status-default: Default
tip-filter: Status Filter
tip-top: Top
tip-prev-page: Prev Page
tip-next-page: Next Page
tip-collapse: Collapse
tip-expand: Expand
# text
text-select: select
text-move: movement
text-esc: close
text-post-count-prev: Total of
text-post-count-next: Posts
text-timeline: Timeline
text-search: Search...
text-category: Category
text-author: Author
text-pub-time: Published on
text-license: License
text-post-link: Post Url
text-catalog: Catalog

View File

@ -0,0 +1,27 @@
tip-index: Inicio
tip-switch-theme: Cambiar Tema
tip-status-done: Hecho
tip-status-doing: En Progreso
tip-status-todo: Pendiente
tip-status-other: Duplicado
tip-status-default: Predeterminado
tip-filter: Filtro de Estado
tip-top: Arriba
tip-prev-page: Página Anterior
tip-next-page: Página Siguiente
tip-collapse: Colapsar
tip-expand: Expandir
text-select: seleccionar
text-move: movimiento
text-esc: cerrar
text-post-count-prev: Total de
text-post-count-next: Publicaciones
text-timeline: Cronología
text-search: Buscar...
text-category: Categoría
text-author: Autor
text-pub-time: Publicado en
text-license: Licencia
text-post-link: URL de la Publicación
text-catalog: Catálogo

View File

@ -0,0 +1,27 @@
tip-index: Accueil
tip-switch-theme: Changer de Thème
tip-status-done: Terminé
tip-status-doing: En Cours
tip-status-todo: À Faire
tip-status-other: Doublon
tip-status-default: Par Défaut
tip-filter: Filtre de Statut
tip-top: Haut
tip-prev-page: Page Précédente
tip-next-page: Page Suivante
tip-collapse: Réduire
tip-expand: Étendre
text-select: sélectionner
text-move: mouvement
text-esc: fermer
text-post-count-prev: Total de
text-post-count-next: Articles
text-timeline: Chronologie
text-search: Recherche...
text-category: Catégorie
text-author: Auteur
text-pub-time: Publié le
text-license: Licence
text-post-link: URL de l'Article
text-catalog: Catalogue

View File

@ -0,0 +1,27 @@
tip-index: ホーム
tip-switch-theme: テーマ切り替え
tip-status-done: 完了
tip-status-doing: 進行中
tip-status-todo: 未完了
tip-status-other: 重複
tip-status-default: デフォルト
tip-filter: ステータスフィルター
tip-top: トップ
tip-prev-page: 前のページ
tip-next-page: 次のページ
tip-collapse: 折りたたむ
tip-expand: 展開する
text-select: 選択
text-move: 移動
text-esc: 閉じる
text-post-count-prev: 合計
text-post-count-next: 投稿
text-timeline: タイムライン
text-search: 検索...
text-category: カテゴリ
text-author: 著者
text-pub-time: 公開日
text-license: ライセンス
text-post-link: 投稿URL
text-catalog: カタログ

View File

@ -0,0 +1,27 @@
tip-index:
tip-switch-theme: 테마 변경
tip-status-done: 완료
tip-status-doing: 진행 중
tip-status-todo: 할 일
tip-status-other: 중복
tip-status-default: 기본
tip-filter: 상태 필터
tip-top: 상단
tip-prev-page: 이전 페이지
tip-next-page: 다음 페이지
tip-collapse: 접기
tip-expand: 펼치기
text-select: 선택
text-move: 이동
text-esc: 닫기
text-post-count-prev:
text-post-count-next: 개의 글
text-timeline: 타임라인
text-search: 검색...
text-category: 카테고리
text-author: 작성자
text-pub-time: 게시 일자
text-license: 라이선스
text-post-link: 게시글 URL
text-catalog: 목록

View File

@ -0,0 +1,27 @@
tip-index: Главная
tip-switch-theme: Сменить тему
tip-status-done: Завершено
tip-status-doing: В процессе
tip-status-todo: В планах
tip-status-other: Дубликат
tip-status-default: По умолчанию
tip-filter: Фильтр статуса
tip-top: Вверх
tip-prev-page: Предыдущая страница
tip-next-page: Следующая страница
tip-collapse: Свернуть
tip-expand: Развернуть
text-select: выбрать
text-move: движение
text-esc: закрыть
text-post-count-prev: Всего
text-post-count-next: Публикаций
text-timeline: Временная шкала
text-search: Поиск...
text-category: Категория
text-author: Автор
text-pub-time: Опубликовано
text-license: Лицензия
text-post-link: Ссылка на публикацию
text-catalog: Каталог

View File

@ -0,0 +1,28 @@
# tip
tip-index: 首页
tip-switch-theme: 切换主题
tip-status-done: 完成
tip-status-doing: 进行中
tip-status-todo: 待办
tip-status-other: 废弃
tip-status-default: 默认
tip-filter: 筛选
tip-top: 置顶
tip-prev-page: 上一页
tip-next-page: 下一页
tip-collapse: 折叠
tip-expand: 展开
# text
text-select: 选择
text-move: 移动
text-esc: 关闭
text-post-count-prev:
text-post-count-next:
text-timeline: 时间轴
text-search: 搜索...
text-category: 分类
text-author: 作者
text-pub-time: 发布于
text-license: 许可
text-post-link: 本文链接
text-catalog: 目录

View File

@ -0,0 +1,27 @@
tip-index: 主頁
tip-switch-theme: 切換主題
tip-status-done: 已完成
tip-status-doing: 進行中
tip-status-todo: 待辦
tip-status-other: 重覆
tip-status-default: 預設
tip-filter: 狀態篩選
tip-top: 頂部
tip-prev-page: 上一頁
tip-next-page: 下一頁
tip-collapse: 折疊
tip-expand: 展開
text-select: 選擇
text-move: 移動
text-esc: 關閉
text-post-count-prev: 總共
text-post-count-next: 篇文章
text-timeline: 時間線
text-search: 搜尋...
text-category: 分類
text-author: 作者
text-pub-time: 發布於
text-license: 授權
text-post-link: 文章連結
text-catalog: 目錄

View File

@ -0,0 +1,5 @@
<%- css("/css/dd6e1d47.css")%>
<div class="about">关于</div>
<%- js("/js/91645890.js")%>

View File

@ -0,0 +1,93 @@
<%- css("/css/3a4a90d1.css")%>
<div class="plane-bg">
<div class="airplane-wrap">
<div class="airplane" id="airplane">
<div class="front-cover grp" id="front-cover-grp">
<div class="plate front-cover-inner"></div>
<div class="plate front-cover-center"></div>
<div class="trapezoid front-cover-top"></div>
<div class="trapezoid front-cover-bottom"></div>
<div class="trapezoid front-cover-left"></div>
<div class="trapezoid front-cover-right"></div>
<div class="bordered-thin front-cover-top-left"></div>
<div class="bordered-thin front-cover-top-right"></div>
<div class="bordered-thin front-cover-bottom-left"></div>
<div class="bordered-thin front-cover-bottom-right"></div>
</div>
<div class="body grp" id="body-grp">
<div class="plate left-cover"></div>
<div class="plate right-cover"></div>
<div class="plate top-cover-front"></div>
<div class="plate top-cover-back"></div>
<div class="cockpit grp" id="cockpit-grp">
<div class="plate roof"></div>
<div class="bordered window-fill front-window"></div>
<div class="window left-window"></div>
<div class="window right-window"></div>
<div class="bordered window-fill rear-window"></div>
</div>
<div class="plate bottom-cover"></div>
<div class="plate back-cover"></div>
</div>
<div class="top-tail grp" id="top-tail-grp">
<div class="plate tail-top"></div>
<div class="plate tail-front"></div>
<div class="plate tail-back"></div>
<div class="plate-no-border tail-left-rect"></div>
<div class="triangle tail-triangle-left-bottom"></div>
<div class="triangle tail-triangle-left-top"></div>
<div class="plate-no-border tail-right-rect"></div>
<div class="triangle tail-triangle-right-bottom"></div>
<div class="triangle tail-triangle-right-top"></div>
<div class="bordered tail-connector"></div>
</div>
<div class="right-tail grp" id="right-tail-grp">
<div class="plate tail-top"></div>
<div class="plate tail-front"></div>
<div class="plate tail-back"></div>
<div class="plate-no-border tail-left-rect"></div>
<div class="triangle tail-triangle-left-bottom"></div>
<div class="triangle tail-triangle-left-top"></div>
<div class="plate-no-border tail-right-rect"></div>
<div class="triangle tail-triangle-right-bottom"></div>
<div class="triangle tail-triangle-right-top"></div>
<div class="bordered tail-connector"></div>
</div>
<div class="left-tail grp" id="left-tail-grp">
<div class="plate tail-top"></div>
<div class="plate tail-front"></div>
<div class="plate tail-back"></div>
<div class="plate-no-border tail-left-rect"></div>
<div class="triangle tail-triangle-left-bottom"></div>
<div class="triangle tail-triangle-left-top"></div>
<div class="plate-no-border tail-right-rect"></div>
<div class="triangle tail-triangle-right-bottom"></div>
<div class="triangle tail-triangle-right-top"></div>
<div class="bordered tail-connector"></div>
</div>
<div class="wing grp" id="wing-grp">
<div class="plate wing-right"></div>
<div class="plate wing-right bottom"></div>
<div class="plate wing-left"></div>
<div class="plate wing-left bottom"></div>
<div class="bordered conector right"></div>
<div class="bordered conector left"></div>
</div>
<div class="propeller rotate-propeller grp" id="propeller-grp">
<div class="plate propeller-center"></div>
<div class="plate propeller-center top"></div>
<div class="plate p-w propeller-wing-1"></div>
<div class="plate p-w propeller-wing-2"></div>
<div class="plate p-w propeller-wing-3"></div>
<div class="plate p-w propeller-wing-4"></div>
<div class="plate p-w propeller-wing-5"></div>
<div class="plate p-w propeller-wing-6"></div>
<div class="plate p-w propeller-wing-7"></div>
<div class="plate p-w propeller-wing-8"></div>
</div>
</div>
</div>
</div>
<%- js("/js/31d6cfe0.js")%>

View File

@ -0,0 +1,48 @@
<%- css("/css/efca006a.css")%>
<% var archive = {}; %>
<% site.posts.forEach(function(post){ %>
<% var year = post.date.year(); %>
<% if(!archive[year]) { %>
<% archive[year] = []; %>
<% } %>
<% archive[year].push(post); %>
<% }); %>
<div class="archive scrollbar-obtrusive">
<ul>
<% for(var key in archive) { %>
<li>
<h2><%= key %></h2>
<ul class="timeline">
<% archive[key].forEach(function(post){ %>
<li>
<a class="timeline-item" href="<%- url_for(post.path) %>">
<div class="timeline-info">
<span><%= post.date.format('MM-DD HH:mm:ss') %></span>
</div>
<div class="timeline-marker"></div>
<div class="timeline-content">
<div class="timeline-title">
<% if(post.status !==undefined){ %>
<%- post_icon(post,'status') %>
<% } %>
<span><%= post.title %></span>
</div>
<p><%= generate_excerpt(post, 100) %>...</p>
</div>
</a>
</li>
<% }) %>
</ul>
</li>
<% } %>
</ul>
</div>
<%- js("/js/31d6cfe0.js")%>

View File

@ -0,0 +1,47 @@
<%- css("/css/de5de8fb.css")%>
<nav class="breadcrumb">
<a href="/" class="home tip btn-hover right" data-tip="<%- __('tip-index') %>">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512">
<path d="M172.2 226.8c-14.6-2.9-28.2 8.9-28.2 23.8V301c0 10.2 7.1 18.4 16.7 22c18.2 6.8 31.3 24.4 31.3 45c0 26.5-21.5 48-48 48s-48-21.5-48-48V120c0-13.3-10.7-24-24-24H24c-13.3 0-24 10.7-24 24v248c0 89.5 82.1 160.2 175 140.7c54.4-11.4 98.3-55.4 109.7-109.7c17.4-82.9-37-157.2-112.5-172.2zM209 0c-9.2-.5-17 6.8-17 16v31.6c0 8.5 6.6 15.5 15 15.9c129.4 7 233.4 112 240.9 241.5c.5 8.4 7.5 15 15.9 15h32.1c9.2 0 16.5-7.8 16-17C503.4 139.8 372.2 8.6 209 0zm.3 96c-9.3-.7-17.3 6.7-17.3 16.1v32.1c0 8.4 6.5 15.3 14.8 15.9c76.8 6.3 138 68.2 144.9 145.2c.8 8.3 7.6 14.7 15.9 14.7h32.2c9.3 0 16.8-8 16.1-17.3c-8.4-110.1-96.5-198.2-206.6-206.7z" fill="currentColor"></path>
</svg>
</a>
<% if (page.category) { %>
<em>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 20 20">
<g fill="none">
<path d="M7.733 4.207a.75.75 0 0 1 1.06.026l5.001 5.25a.75.75 0 0 1 0 1.035l-5 5.25a.75.75 0 1 1-1.087-1.034L12.216 10l-4.51-4.734a.75.75 0 0 1 .027-1.06z" fill="currentColor"></path>
</g>
</svg>
</em>
<span class="ellipsis">
<%= page.category %>
</span>
<% } else if (page.categories && page.categories.length) { %>
<% page.categories.forEach(function(category, index) { %>
<em>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 20 20">
<g fill="none">
<path d="M7.733 4.207a.75.75 0 0 1 1.06.026l5.001 5.25a.75.75 0 0 1 0 1.035l-5 5.25a.75.75 0 1 1-1.087-1.034L12.216 10l-4.51-4.734a.75.75 0 0 1 .027-1.06z" fill="currentColor"></path>
</g>
</svg>
</em>
<a href="<%- url_for(category.path) %>">
<%= category.name %>
</a>
<% }) %>
<% } %>
<% if (page.title) { %>
<em>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 20 20">
<g fill="none">
<path d="M7.733 4.207a.75.75 0 0 1 1.06.026l5.001 5.25a.75.75 0 0 1 0 1.035l-5 5.25a.75.75 0 1 1-1.087-1.034L12.216 10l-4.51-4.734a.75.75 0 0 1 .027-1.06z" fill="currentColor"></path>
</g>
</svg>
</em>
<span class="ellipsis">
<%= page.title %>
</span>
<% } %>
</nav>
<%- js("/js/31d6cfe0.js")%>

View File

@ -0,0 +1,80 @@
<%- css("/css/2cd7dba2.css")%>
<% var sortedPosts=sort_posts_by_top(page.posts.toArray()); %>
<div class="category">
<header>
<div>
<%- partial('breadcrumb') %>
</div>
<section></section>
</header>
<!-- 快速操作 -->
<div class="spotlight">
<!-- 筛选 -->
<a class="filter tip" data-tip="<%- __('tip-filter') %>" id="filter-button">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24">
<path d="M5.5 5h13a1 1 0 0 1 .5 1.5L14 12v7l-4-3v-4L5 6.5A1 1 0 0 1 5.5 5" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</a>
<!-- 当前文章数量 -->
<%- post_counter(page) %>
<!-- 分页代码 -->
<section class="pagination">
<% if (page.total> 1){ %>
<% if (page.prev){ %>
<a class="tip btn-hover left" data-tip="<%- __('tip-prev-page') %>" href="<%- url_for(page.prev_link) %>">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24">
<g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 5v14"></path>
<path d="M16 9l-4-4"></path>
<path d="M8 9l4-4"></path>
</g>
</svg>
</a>
<% } %>
<% if (page.next){ %>
<a class="tip btn-hover left" data-tip="<%- __('tip-prev-page') %>" href="<%- url_for(page.next_link) %>">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24">
<g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 5v14"></path>
<path d="M16 15l-4 4"></path>
<path d="M8 15l4 4"></path>
</g>
</svg>
</a>
<% } %>
<% } %>
</section>
</div>
<!-- 分类文章列表 -->
<ul class="table scrollbar-obtrusive">
<% sortedPosts.forEach(function(post){ %>
<li data-status="<%= post.status %>">
<a href="<%- url_for(post.path) %>">
<% if(post.status !==undefined){ %>
<%- post_icon(post,'status') %>
<% } %>
<% if(post.top !==undefined){ %>
<%- post_icon(post,'top') %>
<% } %>
<p class="ellipsis">
<span><%- post.title %></span>
</p>
<span class="post-date">
<b>
<%= post.date.format('MM DD') %>
</b>
<em>/ <%= post.date.format('YYYY') %></em>
</span>
</a>
</li>
<% }) %>
</ul>
</div>
<%- js("/js/430dbbd6.js")%>

View File

@ -0,0 +1,43 @@
<%- css("/css/e01add4b.css")%>
<div class="home-bar">
<a href="/" class="tip" data-tip="<%- __('tip-index') %>">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512">
<path
d="M172.2 226.8c-14.6-2.9-28.2 8.9-28.2 23.8V301c0 10.2 7.1 18.4 16.7 22c18.2 6.8 31.3 24.4 31.3 45c0 26.5-21.5 48-48 48s-48-21.5-48-48V120c0-13.3-10.7-24-24-24H24c-13.3 0-24 10.7-24 24v248c0 89.5 82.1 160.2 175 140.7c54.4-11.4 98.3-55.4 109.7-109.7c17.4-82.9-37-157.2-112.5-172.2zM209 0c-9.2-.5-17 6.8-17 16v31.6c0 8.5 6.6 15.5 15 15.9c129.4 7 233.4 112 240.9 241.5c.5 8.4 7.5 15 15.9 15h32.1c9.2 0 16.5-7.8 16-17C503.4 139.8 372.2 8.6 209 0zm.3 96c-9.3-.7-17.3 6.7-17.3 16.1v32.1c0 8.4 6.5 15.3 14.8 15.9c76.8 6.3 138 68.2 144.9 145.2c.8 8.3 7.6 14.7 15.9 14.7h32.2c9.3 0 16.8-8 16.1-17.3c-8.4-110.1-96.5-198.2-206.6-206.7z"
fill="currentColor"></path>
</svg>
<span><%- config.subtitle %></span>
</a>
<!-- 切换主题 -->
<a id="toggle-theme" class="tip left" data-tip="<%- __('tip-switch-theme') %>">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512">
<path d="M256 118a22 22 0 0 1-22-22V48a22 22 0 0 1 44 0v48a22 22 0 0 1-22 22z" fill="currentColor"></path>
<path d="M256 486a22 22 0 0 1-22-22v-48a22 22 0 0 1 44 0v48a22 22 0 0 1-22 22z" fill="currentColor"></path>
<path
d="M369.14 164.86a22 22 0 0 1-15.56-37.55l33.94-33.94a22 22 0 0 1 31.11 31.11l-33.94 33.94a21.93 21.93 0 0 1-15.55 6.44z"
fill="currentColor"></path>
<path
d="M108.92 425.08a22 22 0 0 1-15.55-37.56l33.94-33.94a22 22 0 1 1 31.11 31.11l-33.94 33.94a21.94 21.94 0 0 1-15.56 6.45z"
fill="currentColor"></path>
<path d="M464 278h-48a22 22 0 0 1 0-44h48a22 22 0 0 1 0 44z" fill="currentColor"></path>
<path d="M96 278H48a22 22 0 0 1 0-44h48a22 22 0 0 1 0 44z" fill="currentColor"></path>
<path
d="M403.08 425.08a21.94 21.94 0 0 1-15.56-6.45l-33.94-33.94a22 22 0 0 1 31.11-31.11l33.94 33.94a22 22 0 0 1-15.55 37.56z"
fill="currentColor"></path>
<path
d="M142.86 164.86a21.89 21.89 0 0 1-15.55-6.44l-33.94-33.94a22 22 0 0 1 31.11-31.11l33.94 33.94a22 22 0 0 1-15.56 37.55z"
fill="currentColor"></path>
<path d="M256 358a102 102 0 1 1 102-102a102.12 102.12 0 0 1-102 102z" fill="currentColor"></path>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512">
<path
d="M264 480A232 232 0 0 1 32 248c0-94 54-178.28 137.61-214.67a16 16 0 0 1 21.06 21.06C181.07 76.43 176 104.66 176 136c0 110.28 89.72 200 200 200c31.34 0 59.57-5.07 81.61-14.67a16 16 0 0 1 21.06 21.06C442.28 426 358 480 264 480z"
fill="currentColor"></path>
</svg>
</a>
</div>
<%- js("/js/1247bc3e.js")%>

View File

@ -0,0 +1,6 @@
<%- css("/css/aeb44e7a.css")%>
<% layout='layout' %>
<%- partial('welcome') %>
<%- js("/js/31d6cfe0.js")%>

View File

@ -0,0 +1,71 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
<%= page.title || config.title %>
</title>
<meta name="description" content="<%= page.description || config.description %>">
<meta name="keywords" content="<%= page.keywords || config.keywords %>">
<meta name="author" content="<%= config.author %>">
<link rel="canonical" href="<%= page.permalink || config.url %>">
<% if(theme.favicon !==undefined){ %>
<% if(theme.favicon.startsWith('<svg')){ %>
<link rel="icon" type="image/svg" href='data:image/svg+xml,<%- theme.favicon %>'>
<% } else { %>
<link rel="icon" href='<%- theme.favicon %>'>
<% } %>
<% } %>
<%- css("/css/2f1ea598.css")%>
</head>
<body id="app">
<!-- 响应式布局按钮 -->
<a class="side-navigation btn-hover btn-hover-bg tip left" data-tip="<%- __('tip-expand') %>">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24">
<g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect x="4" y="4" width="16" height="16" rx="2"></rect>
<path d="M9 4v16"></path>
</g>
</svg>
</a>
<aside>
<div>
<%- partial('homebar') %>
<!-- search -->
<%- partial('search') %>
<!-- navigation -->
<%- partial('navigation') %>
<!-- icp -->
<% if(theme.icp !==undefined){ %>
<div class="icp">
<a href="http://beian.miit.gov.cn/"><%- theme.icp %></a>
</div>
<% } %>
</div>
</aside>
<main>
<%- body %>
</main>
</body>
<script>
window.i18n = {
"tip-collapse": "<%- __('tip-collapse') %>",
"tip-expand": "<%- __('tip-expand') %>",
"text-select": "<%- __('text-select') %>",
"text-move": "<%- __('text-move') %>",
"text-esc": "<%- __('text-esc') %>",
"tip-status-done": "<%- __('tip-status-done') %>",
"tip-status-doing": "<%- __('tip-status-doing') %>",
"tip-status-todo": "<%- __('tip-status-todo') %>",
"tip-status-other": "<%- __('tip-status-other') %>",
"tip-status-default": "<%- __('tip-status-default') %>",
"text-search": "<%- __('text-search') %>"
}
</script>
<%- js("/js/85d1c72e.js")%>
</html>

View File

@ -0,0 +1,35 @@
<%- css("/css/3efc6cb5.css")%>
<section class="category-nav scrollbar-obtrusive">
<ul class="nav-items">
<li data-path="archives">
<a href="/archives">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24">
<g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 7v14"></path>
<path d="M9 18l3 3l3-3"></path>
<circle cx="12" cy="5" r="2"></circle>
</g>
</svg>
<div class="ellipsis"><%- __('text-timeline') %></div>
</a>
</li>
</ul>
<p><%- __('text-category') %></p>
<ul>
<% site.categories.each(function(category,index){ %>
<li class="<% if ((page.category && page.category === category.name) || (page.categories && page.categories.some(cat => cat.name === category.name))) { %>active<% } %>">
<a href="<%- url_for(category.path) %>">
<%- theme.postCategoryIcons[index] %>
<div class="ellipsis">
<span>
<%= category.name %>
</span>
</div>
</a>
</li>
<% }) %>
</ul>
</section>
<%- js("/js/f8b20eb9.js")%>

View File

@ -0,0 +1,68 @@
<%- css("/css/7c527814.css")%>
<div class="post-container">
<div class="content">
<header>
<%- partial('breadcrumb') %>
</header>
<main class="scrollbar-obtrusive">
<div class="article-container">
<!-- 文章tags -->
<% if (page.tags.length > 0) { %>
<ul class="tags">
<li>#</li>
<% page.tags.each(function(tag){ %>
<li>
<a><%- tag.name %></a>
</li>
<% }) %>
</ul>
<% } %>
<!-- 渲染文章内容 -->
<article><%- page.content %></article>
<% if(theme.postCopyright !==undefined){ %>
<%- partial('postCopyright') %>
<% } %>
<!-- 评论 -->
<div id="vcomments"></div>
</div>
</main>
</div>
<div class="meta-container">
<div class="toc-wrapper content-dialog">
<p class="catalog">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24">
<g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M4 6h16"></path>
<path d="M4 12h16"></path>
<path d="M4 18h12"></path>
</g>
</svg>
<span><%- __('text-catalog') %></span>
</p>
<!-- 文章toc -->
<%- toc(page.content,{max_depth:3}) %>
</div>
</div>
</div>
<script>
window.katex = {
enable: "<%= theme.katex.enable %>",
jsCdn: "<%= theme.katex.jsCdn %>",
cssCdn: "<%= theme.katex.cssCdn %>"
}
window.mermaid = {
enable: "<%= theme.mermaid.enable %>",
cdn: "<%= theme.mermaid.cdn %>",
}
window.valine = {
enable: "<%= theme.valine.enable %>",
appId: '<%= theme.valine.appId %>',
appKey: '<%= theme.valine.appKey %>',
avatar: '<%= theme.valine.avatar %>',
cdn: '<%= theme.valine.cdn %>'
};
</script>
<%- js("/js/96ea39da.js")%>

View File

@ -0,0 +1,24 @@
<%- css("/css/ccbcde32.css")%>
<% if (theme.postCopyright.enable) { %>
<div class="copyright">
<a target="_blank" href="<%- page.permalink %>">
<span><%- __('text-post-link') %></span>
<span><%- page.permalink %></span>
</a>
<ul>
<li>
<span><%- __('text-author') %></span>
<p> <%- config.author %></p>
</li>
<li>
<span><%- __('text-pub-time') %></span>
<p><%- page.date.format("YYYY-MM-DD") %></p>
</li>
<li>
<span><%- __('text-license') %></span>
<p><a href="<%- theme.postCopyright.license_url %>"><%- theme.postCopyright.license %></a></p>
</li>
</ul>
</div>
<% } %>
<%- js("/js/31d6cfe0.js")%>

View File

@ -0,0 +1,21 @@
<%- css("/css/4c3d0e88.css")%>
<form class="search-group">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 20 20">
<g fill="currentColor">
<path d="M8.5 3a5.5 5.5 0 0 1 4.383 8.823l4.147 4.147a.75.75 0 0 1-.976 1.133l-.084-.073l-4.147-4.147A5.5 5.5 0 1 1 8.5 3zm0 1.5a4 4 0 1 0 0 8a4 4 0 0 0 0-8z" fill="currentColor"></path>
</g>
</svg>
<span id="search-input"><%- __('text-search') %></span>
<div class="short-key">
<kbd class="key-cap"><span>Ctrl K</span></kbd>
</div>
</form>
<script>
window.algolia = {
appId: "<%- theme.algolia.appId %>",
SearchOnlyAPIKey: "<%- theme.algolia.SearchOnlyAPIKey %>"
}
</script>
<%- js("/js/07f44e09.js")%>

View File

@ -0,0 +1,13 @@
<%- css("/css/f3729dde.css")%>
<div class="weather glass-material"></div>
<script>
window.weather = {
enable: "<%= theme.weather.enable %>",
cityCode: "<%= theme.weather.cityCode %>",
appKey: "<%= theme.weather.appKey %>",
}
</script>
<%- js("/js/ca6b30b5.js")%>

View File

@ -0,0 +1,39 @@
<%- css("/css/0c63d269.css")%>
<div class="welcome">
<%- partial('airplane') %>
<div class="bg-linear-grow">
<div class="ball"></div>
<div class="ball" style="--delay:-12s;--size:0.35;--speed:25s;"></div>
<div class="ball" style="--delay:-10s;--size:0.3;--speed:15s;"></div>
</div>
<div class="slogan">
<svg id="hello-svg" data-name="hello" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 582 197">
<title>Hello</title>
<path class="path path-1" d="M208,338c38-16.67,73.74-45.72,97.33-66,21.33-18.33,32.67-35.67,37.33-52.67C347.12,203.12,344,192,332,192c-11,0-21,10.33-24.94,27.68-4.52,19.89-22.06,107.82-29.39,149,15.67-72.33,36.33-81.33,53.67-81.33,22.33,0,24.67,18.67,19.42,39-5.43,21.07-7.42,44.32,17.91,44.32,18,0,35.53-8.17,52.67-20,14-9.67,23-24,23-40,0-13.42-8-23.33-20.67-23.33s-24.33,12-24.33,33.33c0,27,16.33,48,44,48,25.67,0,47.67-19.67,62-44.67,13.61-23.74,30.67-64.67,33.33-92.67s-5.33-36-18.67-36-24.67,17.33-28.67,43.33S486,302,491.33,330s28,37.67,46,37.67,38.17-15.67,52-37c16.54-25.51,35.87-67.45,38.67-102,2-24.67-8.67-33.33-20-33.33-14.67,0-23.33,13.33-28,38-4.5,23.81-8,64-2,94,4.64,23.21,25.33,40.33,44.67,40.33s32.67-19,36.67-42.33" transform="translate(-199 -183)" />
<path class="path path-2" d="M697.33,287.33C672,287.33,661.33,305,659,327c-2.81,26.54,10.33,41.67,29.67,41.67,22,0,34.54-20.78,36.67-40.67,2-18.67-7.39-39.13-28-40.67" transform="translate(-199 -183)" />
<path class="path path-3" d="M714.8,295.12c12.11,12.26,43.53,9.55,56.53-5.79" transform="translate(-199 -183)" />
<line class="path path-4" x1="561" y1="181.67" x2="561" y2="181.67" />
</svg>
</div>
<% if(theme.motto === true){ %>
<div class="motto">重拾纯粹的写作</div>
<% } %>
<ul class="circles">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<% if(theme.weather !==undefined){ %>
<%- partial('weather') %>
<% } %>
</div>
<%- js("/js/3cf4fd98.js")%>

View File

@ -0,0 +1,5 @@
hexo.extend.helper.register('generate_excerpt', function (post, length) {
length = length || 100;
const strippedContent = post.content.replace(/<\/?[^>]+(>|$)/g, ""); // 删除 HTML 标签
return strippedContent.substring(0, length);
});

View File

@ -0,0 +1,5 @@
hexo.extend.tag.register('mermaid', function (args, content) {
return `<div class="mermaid">
${content}
</div>`;
}, { ends: true });

View File

@ -0,0 +1,16 @@
hexo.extend.helper.register('post_icon', function (post, command) {
const mapping = {
status: {
done: `<span class="icon status tip right" data-tip="${this.__('tip-status-done')}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"></circle><path d="M9 12l2 2l4-4"></path></g></svg></span>`,
doing: `<span class="icon status tip right" data-tip="${this.__('tip-status-doing')}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 20h4L18.5 9.5a1.5 1.5 0 0 0-4-4L4 16v4"></path><path d="M13.5 6.5l4 4"></path></g></svg></span>`,
todo: `<span class="icon status tip right" data-tip="${this.__('tip-status-todo')}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M8.56 3.69a9 9 0 0 0-2.92 1.95"></path><path d="M3.69 8.56A9 9 0 0 0 3 12"></path><path d="M3.69 15.44a9 9 0 0 0 1.95 2.92"></path><path d="M8.56 20.31A9 9 0 0 0 12 21"></path><path d="M15.44 20.31a9 9 0 0 0 2.92-1.95"></path><path d="M20.31 15.44A9 9 0 0 0 21 12"></path><path d="M20.31 8.56a9 9 0 0 0-1.95-2.92"></path><path d="M15.44 3.69A9 9 0 0 0 12 3"></path></g></svg></span>`,
other: `<span class="icon status tip right" data-tip="${this.__('tip-status-other')}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20.042 16.045A9 9 0 0 0 7.955 3.958M5.637 5.635a9 9 0 1 0 12.725 12.73"></path><path d="M3 3l18 18"></path></g></svg></span>`
},
top: {
other: `<span class="icon pin tip right" data-tip="${this.__('tip-top')}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 4v6l-2 4v2h10v-2l-2-4V4"></path><path d="M12 16v5"></path><path d="M8 4h8"></path></g></svg></span>`
}
}
const iconInPost = post[command]
const iconGroup = mapping[command]
return iconGroup[iconInPost] ?? iconGroup['other']
});

View File

@ -0,0 +1,9 @@
hexo.extend.helper.register('post_counter', function (page) {
let output = '';
this.site.categories.forEach((category) => {
if (category.name === page.category) {
output = `<span class="post-num">${this.__('text-post-count-prev')} ${category.length} ${this.__('text-post-count-next')}</span>`;
}
});
return output;
});

View File

@ -0,0 +1,14 @@
hexo.extend.helper.register('sort_posts_by_top', function (posts) {
// 使用 slice() 创建数组的副本,以避免修改原始数组
return posts.slice().sort(function (a, b) {
var topA = a.top || Number.MAX_SAFE_INTEGER; // 如果没有 top 字段,则设置为一个非常大的数
var topB = b.top || Number.MAX_SAFE_INTEGER; // 同上
// 根据 top 字段从小到大排序
if (topA < topB) return -1;
if (topA > topB) return 1;
// 如果 top 字段相同或者不存在,根据日期从新到旧排序
return b.date - a.date;
});
});

View File

@ -0,0 +1 @@
.bg-linear-grow{min-height:100vh;overflow-x:hidden;overflow-y:hidden;position:fixed;width:100%}.bg-linear-grow .ball{--delay:0s;--size:0.4;--speed:20s;animation:loop var(--speed) infinite linear;animation-delay:var(--delay);aspect-ratio:1;background:linear-gradient(259.53deg,#0a3fff 6.53%,#f55f0a 95.34%);border-radius:50%;filter:blur(10vw);left:0;opacity:.6;position:absolute;top:0;transform-origin:50% 50%;width:calc(150%*var(--size))}@keyframes loop{0%{transform:translate3D(0,51%,0) rotate(0deg)}5%{transform:translate3D(8%,31%,0) rotate(18deg)}10%{transform:translate3D(22%,13%,0) rotate(36deg)}15%{transform:translate3D(40%,2%,0) rotate(54deg)}20%{transform:translate3D(46%,21%,0) rotate(72deg)}25%{transform:translate3D(50%,47%,0) rotate(90deg)}30%{transform:translate3D(53%,80%,0) rotate(108deg)}35%{transform:translate3D(59%,98%,0) rotate(125deg)}40%{transform:translate3D(84%,89%,0) rotate(144deg)}45%{transform:translate3D(92%,68%,0) rotate(162deg)}50%{transform:translate3D(99%,47%,0) rotate(180deg)}55%{transform:translate3D(97%,21%,0) rotate(198deg)}60%{transform:translate3D(80%,7%,0) rotate(216deg)}65%{transform:translate3D(68%,25%,0) rotate(234deg)}70%{transform:translate3D(59%,41%,0) rotate(251deg)}75%{transform:translate3D(50%,63%,0) rotate(270deg)}80%{transform:translate3D(38%,78%,0) rotate(288deg)}85%{transform:translate3D(21%,92%,0) rotate(306deg)}90%{transform:translate3D(3%,79%,0) rotate(324deg)}to{transform:translate3D(0,51%,0) rotate(1turn)}}.circles{height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%}.circles li{animation:animate 25s linear infinite;background-color:#ff3cac;background-image:linear-gradient(225deg,#ff3cac,#784ba0 50%,#2b86c5);bottom:-150px;display:block;height:20px;list-style:none;position:absolute;width:20px}.circles li:first-child{animation-delay:0s;height:80px;left:25%;width:80px}.circles li:nth-child(2){animation-delay:2s;animation-duration:12s;height:20px;left:10%;width:20px}.circles li:nth-child(3){animation-delay:4s;height:20px;left:70%;width:20px}.circles li:nth-child(4){animation-delay:0s;animation-duration:18s;height:60px;left:40%;width:60px}.circles li:nth-child(5){animation-delay:0s;height:20px;left:65%;width:20px}.circles li:nth-child(6){animation-delay:3s;height:110px;left:75%;width:110px}.circles li:nth-child(7){animation-delay:7s;height:150px;left:35%;width:150px}.circles li:nth-child(8){animation-delay:15s;animation-duration:45s;height:25px;left:50%;width:25px}.circles li:nth-child(9){animation-delay:2s;animation-duration:35s;height:15px;left:20%;width:15px}.circles li:nth-child(10){animation-delay:0s;animation-duration:11s;height:150px;left:85%;width:150px}@keyframes animate{0%{border-radius:20%;opacity:1;transform:translateY(0) rotate(0deg)}to{border-radius:50%;opacity:0;transform:translateY(-1000px) rotate(2turn)}}.welcome{background-image:linear-gradient(90deg,#80808012 1px,transparent 0),linear-gradient(180deg,#80808012 1px,transparent 0);background-size:50px 50px;height:100%;position:relative}.welcome .slogan{left:10%;min-width:300px;position:absolute;top:50%}.welcome .slogan.fin .path-1,.welcome .slogan.fin .path-2,.welcome .slogan.fin .path-3{stroke-dashoffset:0}.welcome .slogan.fin .path-4{stroke-width:18px}.welcome .slogan .path{fill:none;stroke:var(--color-font);stroke-width:18px;stroke-linecap:round;stroke-linejoin:round}.welcome .slogan .path-1{stroke-dasharray:1850 2000;stroke-dashoffset:1851;transition:5s linear}.welcome .slogan .path-2{stroke-dasharray:260 1000;stroke-dashoffset:261;transition:1.2s linear 5.2s}.welcome .slogan .path-3{stroke-dasharray:100 1000;stroke-dashoffset:101;transition:1s linear 6.5s}.welcome .slogan .path-4{stroke-width:0;transition:.1s linear 7.5s}.welcome .motto{bottom:20px;font-family:motto;font-size:22px;left:50%;position:absolute;transform:translateX(-50%);z-index:1999}

View File

@ -0,0 +1 @@
pre[class*=language-].line-numbers{counter-reset:linenumber;padding-left:3.8em;position:relative}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{border-right:1px solid #999;font-size:100%;left:-3.8em;letter-spacing:-1px;pointer-events:none;position:absolute;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:3em}.line-numbers-rows>span{counter-increment:linenumber;display:block}.line-numbers-rows>span:before{color:#999;content:counter(linenumber);display:block;padding-right:.8em;text-align:right}

View File

@ -0,0 +1 @@
code[class*=language-],pre[class*=language-]{background:#27212e;color:#fff;direction:ltr;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;line-height:1.5;-moz-tab-size:2;-o-tab-size:2;tab-size:2;text-align:left;white-space:pre;word-break:normal;word-spacing:normal}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{background:#eb64b927;color:inherit}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{background:#eb64b927;color:inherit}pre[class*=language-]{border-radius:.5em;margin:.5em 0;overflow:auto;padding:1em}:not(pre)>code[class*=language-]{border-radius:.5rem;padding:.2em .3em;white-space:normal}.token.cdata,.token.comment,.token.prolog{color:#91889b}.token.punctuation{color:#7b6995}.token.boolean,.token.builtin,.token.constant{color:#ffe261}.token.number{color:#b381c5}.token.atrule,.token.important,.token.keyword,.token.property{color:#40b4c4}.token.class-name,.token.doctype,.token.inserted,.token.operator,.token.symbol,.token.tag{color:#74dfc4}.token.attr-name,.token.deleted,.token.function,.token.selector{color:#eb64b9}.token.attr-value,.token.char,.token.regex,.token.string{color:#b4dce7}.token.entity,.token.url,.token.variable{color:#fff}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.namespace{opacity:.7}

View File

@ -0,0 +1 @@
code[class*=language-],pre[class*=language-]{color:#c5c8c6;direction:ltr;font-family:Inconsolata,Monaco,Consolas,Courier New,Courier,monospace;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;text-align:left;text-shadow:0 1px rgba(0,0,0,.3);white-space:pre;word-break:normal;word-spacing:normal}pre[class*=language-]{border-radius:.3em;margin:.5em 0;overflow:auto;padding:1em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#1d1f21}:not(pre)>code[class*=language-]{border-radius:.3em;padding:.1em}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#7c7c7c}.token.punctuation{color:#c5c8c6}.namespace{opacity:.7}.token.keyword,.token.property,.token.tag{color:#96cbfe}.token.class-name{color:#ffffb6;text-decoration:underline}.token.boolean,.token.constant{color:#9c9}.token.deleted,.token.symbol{color:#f92672}.token.number{color:#ff73fd}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#a8ff60}.token.variable{color:#c6c5fe}.token.operator{color:#ededed}.token.entity{color:#ffffb6;cursor:help}.token.url{color:#96cbfe}.language-css .token.string,.style .token.string{color:#87c38a}.token.atrule,.token.attr-value{color:#f9ee98}.token.function{color:#dad085}.token.regex{color:#e9c062}.token.important{color:#fd971f}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}

View File

@ -0,0 +1 @@
code[class*=language-],pre[class*=language-]{word-wrap:normal;color:#d6deeb;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;text-align:left;white-space:pre;word-break:normal;word-spacing:normal}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{background:rgba(29,59,83,.99);text-shadow:none}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{background:rgba(29,59,83,.99);text-shadow:none}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{margin:.5em 0;overflow:auto;padding:1em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#011627;color:#fff}:not(pre)>code[class*=language-]{border-radius:.3em;padding:.1em;white-space:normal}.token.cdata,.token.comment,.token.prolog{color:#637777;font-style:italic}.token.punctuation{color:#c792ea}.namespace{color:#b2ccd6}.token.deleted{color:rgba(239,83,80,.56);font-style:italic}.token.property,.token.symbol{color:#80cbc4}.token.keyword,.token.operator,.token.tag{color:#7fdbca}.token.boolean{color:#ff5874}.token.number{color:#f78c6c}.token.builtin,.token.char,.token.constant,.token.function{color:#82aaff}.token.doctype,.token.selector{color:#c792ea;font-style:italic}.token.attr-name,.token.inserted{color:#addb67;font-style:italic}.language-css .token.string,.style .token.string,.token.entity,.token.string,.token.url{color:#addb67}.token.atrule,.token.attr-value,.token.class-name{color:#ffcb8b}.token.important,.token.regex,.token.variable{color:#d6deeb}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}

View File

@ -0,0 +1 @@
.category{display:flex;flex-direction:column;height:100%}.category>header{border-bottom:1px solid var(--color-border-2);height:57px;justify-content:space-between;padding-left:30px;padding-right:24px}.category .spotlight,.category>header,.category>header>section{align-items:center;display:flex}.category .spotlight{background:var(--color-bg-2);height:36px;justify-content:space-between;padding:0 30px}.category .spotlight .filter{align-items:center;color:var(--color-font-3);cursor:pointer;display:inline-flex}.category .spotlight .filter svg{height:20px;width:20px}.category .spotlight .post-num{color:var(--color-font-2);font-size:13px}.category .table{flex:1;margin:0;overflow:auto;padding:0}.category .table li{border-bottom:1px solid var(--color-border-2);height:44px;line-height:44px;list-style:none}.category .table li:hover{background:var(--color-tiny-hover)}.category .table li.selected{background:var(--color-primary-2)}.category .table li a{align-items:center;color:var(--color-font);display:flex;padding:0 30px;text-decoration:none}.category .table li a .icon{align-items:center;color:var(--color-font-3);display:inline-flex;height:16px;margin-right:8px;width:20px}.category .table li a .icon svg{height:100%;width:100%}.category .table li a .icon.priority{color:#fc7840;height:20px;width:20px}.category .table li a p{flex:1;font-size:13px;margin:0;padding-right:20px}.category .table li a .post-date{color:var(--color-font-2);font-size:12px}.category .table li a .post-date b{font-weight:500}.category .table li a .post-date em{transform:translateY(5px)}.category .table .color-circle{border:1px solid;border-radius:50%;display:inline-block;height:12px;width:12px}.category .table .color-circle.color-1{border-color:#ff453a}.category .table .color-circle.color-2{border-color:#ff9f0a}.category .table .color-circle.color-3{border-color:#ffd60a}.category .table .color-circle.color-4{border-color:#32d74b}.category .table .color-circle.color-5{border-color:#0a84ff}.category .table .color-circle.color-6{border-color:#bf5af2}.category .table .color-circle.color-7{border-color:#8e8e93}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
.category-nav{flex:1;margin:24px 0 0;overflow:auto}.category-nav>ul{margin:0 0 20px;padding:0}.category-nav>ul li{border-radius:var(--radius);list-style:none;margin-bottom:1px;padding:0 6px;transition:all .25s ease}.category-nav>ul li.active{background:var(--color-primary-2)}.category-nav>ul li:hover{background:var(--color-menu-hover)}.category-nav>ul li a{align-items:center;color:var(--color-font);display:flex;height:27px;text-decoration:none}.category-nav>ul li a svg{color:var(--color-font-2);width:16px}.category-nav>ul li a>div{flex:1;font-size:13px;max-width:100%;padding-left:10px}.category-nav p{color:var(--color-font-2);font-size:12px;padding-left:6px}.category-nav .nav-items li a div{font-size:14px}

View File

@ -0,0 +1 @@
code[class*=language-],pre[class*=language-]{word-wrap:normal;background:#2f2f2f;color:#eee;font-family:Roboto Mono,monospace;font-size:1em;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;line-height:1.5em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;text-align:left;white-space:pre;word-break:normal;word-spacing:normal}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{background:#363636}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{background:#363636}:not(pre)>code[class*=language-]{border-radius:.2em;padding:.1em;white-space:normal}pre[class*=language-]{margin:.5em 0;overflow:auto;padding:1.25em 1em;position:relative}.language-css>code,.language-sass>code,.language-scss>code{color:#fd9170}[class*=language-] .namespace{opacity:.7}.token.atrule{color:#c792ea}.token.attr-name{color:#ffcb6b}.token.attr-value,.token.attribute{color:#a5e844}.token.boolean{color:#c792ea}.token.builtin{color:#ffcb6b}.token.cdata,.token.char{color:#80cbc4}.token.class{color:#ffcb6b}.token.class-name{color:#f2ff00}.token.comment{color:#616161}.token.constant{color:#c792ea}.token.deleted{color:#f66}.token.doctype{color:#616161}.token.entity{color:#f66}.token.function{color:#c792ea}.token.hexcode{color:#f2ff00}.token.id,.token.important{color:#c792ea;font-weight:700}.token.inserted{color:#80cbc4}.token.keyword{color:#c792ea}.token.number{color:#fd9170}.token.operator{color:#89ddff}.token.prolog{color:#616161}.token.property{color:#80cbc4}.token.pseudo-class,.token.pseudo-element{color:#a5e844}.token.punctuation{color:#89ddff}.token.regex{color:#f2ff00}.token.selector{color:#f66}.token.string{color:#a5e844}.token.symbol{color:#c792ea}.token.tag{color:#f66}.token.unit{color:#fd9170}.token.url,.token.variable{color:#f66}

View File

@ -0,0 +1 @@
.search-group{align-items:center;background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--radius);display:flex;height:32px;padding-left:6px;padding-right:2px}.search-group:hover{background:var(--color-bg-4);cursor:pointer}.search-group svg{color:var(--color-font-2);height:16px;width:16px}.search-group #search-input{color:var(--color-font-2);flex:1;font-size:13px;padding-left:5px}.search-group .short-key{display:flex;z-index:10}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
code[class*=language-],pre[class*=language-]{background:#1d262f;color:#57718e;direction:ltr;font-family:Consolas,Menlo,Monaco,Andale Mono WT,Andale Mono,Lucida Console,Lucida Sans Typewriter,DejaVu Sans Mono,Bitstream Vera Sans Mono,Liberation Mono,Nimbus Mono L,Courier New,Courier,monospace;font-size:14px;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;line-height:1.375;-moz-tab-size:4;-o-tab-size:4;tab-size:4;text-align:left;white-space:pre;word-break:normal;word-spacing:normal}pre>code[class*=language-]{font-size:1em}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{background:#004a9e;text-shadow:none}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{background:#004a9e;text-shadow:none}pre[class*=language-]{margin:.5em 0;overflow:auto;padding:1em}:not(pre)>code[class*=language-]{border-radius:.3em;padding:.1em}.token.cdata,.token.comment,.token.doctype,.token.prolog,.token.punctuation{color:#4a5f78}.token.namespace{opacity:.7}.token.number,.token.operator,.token.tag{color:#0aa370}.token.function,.token.property{color:#57718e}.token.atrule-id,.token.selector,.token.tag-id{color:#ebf4ff}.token.attr-name,code.language-javascript{color:#7eb6f6}.language-css .token.string,.language-scss .token.string,.style .token.string,.token.atrule,.token.attr-value,.token.boolean,.token.control,.token.directive,.token.entity,.token.keyword,.token.placeholder,.token.regex,.token.statement,.token.string,.token.unit,.token.url,.token.variable,code.language-css,code.language-scss{color:#47ebb4}.token.deleted{text-decoration:line-through}.token.inserted{border-bottom:1px dotted #ebf4ff;text-decoration:none}.token.italic{font-style:italic}.token.bold,.token.important{font-weight:700}.token.important{color:#7eb6f6}.token.entity{cursor:help}pre>code.highlight{outline:.4em solid #34659d;outline-offset:.4em}.line-numbers.line-numbers .line-numbers-rows{border-right-color:#1f2932}.line-numbers .line-numbers-rows>span:before{color:#2c3847}.line-highlight.line-highlight{background:rgba(10,163,112,.2);background:-webkit-linear-gradient(left,rgba(10,163,112,.2) 70%,rgba(10,163,112,0));background:linear-gradient(90deg,rgba(10,163,112,.2) 70%,rgba(10,163,112,0))}

View File

@ -0,0 +1 @@
code[class*=language-],pre[class*=language-]{color:#d4d4d4;direction:ltr;font-family:Menlo,Monaco,Consolas,Andale Mono,Ubuntu Mono,Courier New,monospace;font-size:13px;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;text-align:left;text-shadow:none;white-space:pre;word-break:normal;word-spacing:normal}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{background:#264f78;text-shadow:none}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{background:#1e1e1e;margin:.5em 0;overflow:auto;padding:1em}:not(pre)>code[class*=language-]{background:#1e1e1e;border-radius:.3em;color:#db4c69;padding:.1em .3em}.namespace{opacity:.7}.token.doctype .token.doctype-tag{color:#569cd6}.token.doctype .token.name{color:#9cdcfe}.token.comment,.token.prolog{color:#6a9955}.language-html .language-css .token.punctuation,.language-html .language-javascript .token.punctuation,.token.punctuation{color:#d4d4d4}.token.boolean,.token.constant,.token.inserted,.token.number,.token.property,.token.symbol,.token.tag,.token.unit{color:#b5cea8}.token.attr-name,.token.builtin,.token.char,.token.deleted,.token.selector,.token.string{color:#ce9178}.language-css .token.string.url{text-decoration:underline}.token.entity,.token.operator{color:#d4d4d4}.token.operator.arrow{color:#569cd6}.token.atrule{color:#ce9178}.token.atrule .token.rule{color:#c586c0}.token.atrule .token.url{color:#9cdcfe}.token.atrule .token.url .token.function{color:#dcdcaa}.token.atrule .token.url .token.punctuation{color:#d4d4d4}.token.keyword{color:#569cd6}.token.keyword.control-flow,.token.keyword.module{color:#c586c0}.token.function,.token.function .token.maybe-class-name{color:#dcdcaa}.token.regex{color:#d16969}.token.important{color:#569cd6}.token.italic{font-style:italic}.token.constant{color:#9cdcfe}.token.class-name,.token.maybe-class-name{color:#4ec9b0}.token.console,.token.interpolation,.token.parameter{color:#9cdcfe}.token.boolean,.token.punctuation.interpolation-punctuation{color:#569cd6}.token.exports .token.maybe-class-name,.token.imports .token.maybe-class-name,.token.property,.token.variable{color:#9cdcfe}.token.escape,.token.selector{color:#d7ba7d}.token.tag{color:#569cd6}.token.cdata,.token.tag .token.punctuation{color:grey}.token.attr-name{color:#9cdcfe}.token.attr-value,.token.attr-value .token.punctuation{color:#ce9178}.token.attr-value .token.punctuation.attr-equals{color:#d4d4d4}.token.entity{color:#569cd6}.token.namespace{color:#4ec9b0}code[class*=language-javascript],code[class*=language-jsx],code[class*=language-tsx],code[class*=language-typescript],pre[class*=language-javascript],pre[class*=language-jsx],pre[class*=language-tsx],pre[class*=language-typescript]{color:#9cdcfe}code[class*=language-css],pre[class*=language-css]{color:#ce9178}code[class*=language-html],pre[class*=language-html]{color:#d4d4d4}.language-regex .token.anchor{color:#dcdcaa}.language-html .token.punctuation{color:grey}pre[class*=language-]>code[class*=language-]{position:relative;z-index:1}.line-highlight.line-highlight{background:#f7ebc6;box-shadow:inset 5px 0 0 #f7d87c;z-index:0}

View File

@ -0,0 +1 @@
:root{--radius:4px;--font-monospace:"linear","SFMono Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;--font-regular:"linear","Inter UI","SF Pro Display",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Open Sans","Helvetica Neue",sans-serif;--font-emoji:"linear","Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Segoe UI","Twemoji Mozilla","Noto Color Emoji","Android Emoji";--scrollbar-width:12px;--scrollbar-min-size:32px}.loading-bar{background-color:rgba(0,0,0,.2);border-radius:var(--radius);display:inherit;position:relative;width:100px}.loading-bar,.loading-bar span{background-clip:padding-box;height:4px;overflow:hidden}.loading-bar span{animation:react-spinners-barLoader 2.1s cubic-bezier(.65,.815,.735,.395) 0s infinite normal none running;background-color:#000;border-radius:2px;display:block;position:absolute;will-change:left,right}@keyframes react-spinners-barLoader{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}::selection{background:var(--color-selection)}.scrollbar-obtrusive::-webkit-scrollbar-track{background:transparent}.scrollbar-obtrusive::-webkit-scrollbar{height:var(--scrollbar-width);width:var(--scrollbar-width)}.scrollbar-obtrusive::-webkit-scrollbar-thumb{background-clip:content-box;background-color:var(--scrollbar-color);border:3px solid transparent;border-radius:var(--scrollbar-width);opacity:.2}.tip{position:relative}.tip:hover:after{word-wrap:break-word;animation-delay:.4s;animation-duration:.1s;animation-fill-mode:forwards;animation-name:tooltip-appear;animation-timing-function:ease-in;background:var(--color-font);border-radius:3px;color:var(--color-bg);content:attr(data-tip);font-size:12px;line-height:1;margin-top:6px;opacity:0;padding:.5em .75em;pointer-events:none;position:absolute;text-align:center;top:100%;white-space:pre;z-index:1000000}.tip.left:after{right:0}.tip.right:after{left:0}@keyframes tooltip-appear{0%{opacity:0}to{opacity:1}}.loader{background-color:#000;height:10px;left:50%;position:absolute;top:50%;width:100px}.blur-behind{position:relative;z-index:2}.blur-behind:before{background:var(--color-bg-mask);bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:-1}.key-cap{border-radius:4px;font-family:var(--font-regular);height:24px;margin-right:2px;min-width:24px}.key-cap>span{align-items:center;background:var(--color-bg-3);border-radius:4px;color:var(--color-font-2);display:flex;font-size:12px;height:100%;justify-content:center;padding:2px 4px}.glass-material{backdrop-filter:blur(30px);background:linear-gradient(180deg,hsla(0,0%,100%,.28),hsla(0,0%,100%,0));box-shadow:inset 0 .5px 0 1px hsla(0,0%,100%,.23),inset 0 1px 0 0 hsla(0,0%,100%,.66),0 4px 16px rgba(0,0,0,.12)}.content-dialog:before{background:linear-gradient(var(--color-bg),transparent 70%)}.content-dialog:after,.content-dialog:before{content:"";height:2rem;position:fixed;width:100%;z-index:10}.content-dialog:after{background:linear-gradient(transparent,var(--color-bg) 70%);bottom:0}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-hover{align-items:center;border-radius:4px;cursor:pointer;display:inline-flex;justify-content:center;padding:3px;text-decoration:none;transition:all .3 ease}.btn-hover svg{color:var(--color-font-3);height:18px;width:18px}.btn-hover-bg,.btn-hover:hover{background:var(--color-bg-3)}.btn-hover:hover svg{color:var(--color-font-2)}@media only screen and (max-width:767px){.side-navigation{display:flex!important}.search-mask>div{left:20px!important;right:20px!important;transform:inherit!important;width:auto!important}#app{grid-template-columns:0 1fr!important}#app.equip{grid-template-columns:220px auto!important}#app.equip main{min-width:430px;position:relative}#app.equip main:after{backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);background:var(--color-bg-mask);bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:1000}.archive>ul{padding-right:20px}.dropdown-menu{background:var(--color-bg-2)!important}.article-container{margin:0;padding:0 30px;width:100%!important}.copyright ul{flex-direction:column!important}.copyright ul li{margin-bottom:20px!important;margin-right:0!important}.meta-container{display:none!important}.welcome .circles{margin:0;padding:0}.welcome .weather{min-width:300px!important;right:20px!important;top:60px!important;width:auto!important}.welcome .slogan,.welcome .weather{left:20px!important}}*{box-sizing:border-box}@font-face{font-family:linear;src:url(../font/linear.woff2)}@font-face{font-family:motto;src:url(../font/motto.woff)}body,html{background:var(--color-bg);color:var(--color-font);font-family:var(--font-regular);font-size:14px;height:100%;line-height:1;margin:0;overflow:hidden;padding:0}

View File

@ -0,0 +1 @@
.copyright{background-color:var(--color-bg-2);border-radius:var(--radius);margin:24px 0;overflow:hidden;padding:16px;position:relative}.copyright>p{color:var(--color-font);font-size:13px;margin:0 0 4px}.copyright a{word-wrap:break-word;color:var(--color-font-2);font-size:13px;text-decoration:none}.copyright a:hover{color:var(--color-primary)}.copyright ul{display:flex;margin:16px 0 0;padding:0}.copyright ul li{display:flex;flex-direction:column;margin-right:20px}.copyright ul li:last-of-type{margin:0}.copyright ul li span{color:var(--color-font-3);font-size:12px}.copyright ul li p{color:var(--color-font);font-size:13px;margin:10px 0 0}

View File

@ -0,0 +1 @@
.breadcrumb{align-items:center;display:inline-flex;font-size:13px}.breadcrumb a{color:var(--color-font-3);margin-left:-3px;text-decoration:none}.breadcrumb a:hover{color:var(--color-font-2)}.breadcrumb em{align-items:center;color:var(--color-font-3);display:inline-flex;margin:0 5px}.breadcrumb em svg{height:14px;width:14px}.breadcrumb .ellipsis{max-width:50vw}

View File

@ -0,0 +1 @@
.home-bar{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.home-bar>a{align-items:center;color:var(--color-font);display:inline-flex;text-decoration:none}.home-bar>a>svg{border-radius:var(--radius);color:var(--color-primary);height:32px;padding:4px;width:32px}.home-bar>a span{font-weight:500;padding-left:8px}.home-bar #toggle-theme{align-items:center;border:1px solid var(--color-border);border-radius:20px;color:var(--color-font);cursor:pointer;display:inline-flex;justify-content:space-between;padding:2px}.home-bar #toggle-theme.dark svg:last-of-type,.home-bar #toggle-theme.light svg:first-of-type{background-color:var(--color-bg-4);color:var(--color-font)}.home-bar #toggle-theme svg{border-radius:50%;color:var(--color-font-2);height:22px;padding:4px;width:22px}.home-bar #toggle-theme svg:first-of-type{margin-right:8px}

View File

@ -0,0 +1 @@
.timeline{line-height:1.4em;list-style:none;margin:0;padding:0;width:100%}.timeline li:last-of-type .timeline-item{padding-bottom:0}.timeline .timeline-item{color:var(--color-font-2);display:block;padding-bottom:40px;padding-left:40px;position:relative;text-decoration:none}.timeline .timeline-item:hover .timeline-marker:before{background:var(--color-primary)}.timeline .timeline-item .timeline-info{font-size:12px;letter-spacing:1px;padding-top:2px;text-transform:uppercase;white-space:nowrap}.timeline .timeline-item .timeline-marker{bottom:0;left:0;position:absolute;top:0;width:15px}.timeline .timeline-item .timeline-marker:last-child:after{content:none}.timeline .timeline-item .timeline-marker:before{background:transparent;border:2px solid var(--color-primary);border-radius:100%;content:"";display:block;height:8px;left:50%;position:absolute;top:5.5px;transform:translateX(-50%);transition:background .3s ease-in-out,border .3s ease-in-out;width:8px}.timeline .timeline-item .timeline-marker:after{background:var(--color-border);bottom:0;content:"";display:block;left:50%;position:absolute;top:24px;transform:translateX(-50%);width:1px}.timeline .timeline-item .timeline-content .timeline-title{align-items:center;color:var(--color-font);display:flex;font-size:16px;font-weight:400;margin:0;padding:12px 0}.timeline .timeline-item .timeline-content .timeline-title .icon{color:var(--color-font-3);height:16px;margin-right:8px;width:16px}.timeline .timeline-item .timeline-content p{color:var(--color-font-2);font-size:13px;margin:0}.archive{height:100%;overflow-y:auto;padding:24px 0}.archive ul{list-style:none;margin:0 auto;max-width:860px}.archive ul h2{font-weight:400;margin:0 0 24px}

View File

@ -0,0 +1 @@
@keyframes zoomIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.weather{animation:zoomIn .5s ease-out 1s forwards}

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 12h10"></path><path d="M10 12l4 4"></path><path d="M10 12l4-4"></path><path d="M4 4v16"></path></g></svg>

After

Width:  |  Height:  |  Size: 322 B

View File

@ -0,0 +1 @@
<svg width="16" height="16" color="rgb(184, 184, 184)" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 20 20"><g fill="current"><path d="M10 16c-.456.607-1.182 1-2 1H3.5A1.5 1.5 0 0 1 2 15.5v-11A1.5 1.5 0 0 1 3.5 3H8c.818 0 1.544.393 2 1c.456-.607 1.182-1 2-1h4.5A1.5 1.5 0 0 1 18 4.5v11a1.5 1.5 0 0 1-1.5 1.5H12a2.496 2.496 0 0 1-2-1zM3 4.5v11a.5.5 0 0 0 .5.5H8a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 8 4H3.5a.5.5 0 0 0-.5.5zm7.5 10A1.5 1.5 0 0 0 12 16h4.5a.5.5 0 0 0 .5-.5v-11a.5.5 0 0 0-.5-.5H12a1.5 1.5 0 0 0-1.5 1.5v9z" fill="currentColor"></path></g></svg>

After

Width:  |  Height:  |  Size: 605 B

View File

@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24">
<g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M8 13V4.5a1.5 1.5 0 0 1 3 0V12"></path>
<path d="M11 11.5v-2a1.5 1.5 0 0 1 3 0V12"></path>
<path d="M14 10.5a1.5 1.5 0 0 1 3 0V12"></path>
<path d="M17 11.5a1.5 1.5 0 0 1 3 0V16a6 6 0 0 1-6 6h-2h.208a6 6 0 0 1-5.012-2.7L7 19c-.312-.479-1.407-2.388-3.286-5.728a1.5 1.5 0 0 1 .536-2.022a1.867 1.867 0 0 1 2.28.28L8 13"></path>
<path d="M5 3L4 2"></path>
<path d="M4 7H3"></path>
<path d="M14 3l1-1"></path>
<path d="M15 6h1"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 693 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><path d="M7 11h2v2H7v-2zm14-5v14c0 1.1-.9 2-2 2H5a2 2 0 0 1-2-2l.01-14c0-1.1.88-2 1.99-2h1V2h2v2h8V2h2v2h1c1.1 0 2 .9 2 2zM5 8h14V6H5v2zm14 12V10H5v10h14zm-4-7h2v-2h-2v2zm-4 0h2v-2h-2v2z" fill="currentColor"></path></svg>

After

Width:  |  Height:  |  Size: 324 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="4" width="16" height="16" rx="2"></rect><path d="M9 4v16"></path><path d="M15 10l-2 2l2 2"></path></g></svg>

After

Width:  |  Height:  |  Size: 327 B

View File

@ -0,0 +1,14 @@
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve"><g><path d="M280,341.1l-1.2,0.1c-3.6,0.4-7,2-9.6,4.5l-64.6,64.6c-13.7,13.7-32,21.2-51.5,21.2c-19.5,0-37.8-7.5-51.5-21.2
c-13.7-13.7-21.2-32-21.2-51.5c0-19.5,7.5-37.8,21.2-51.5l68.6-68.6c3.5-3.5,7.3-6.6,11.4-9.3c4.6-3,9.6-5.6,14.8-7.5
c4.8-1.8,9.9-3,15-3.7c3.4-0.5,6.9-0.7,10.2-0.7c1.4,0,2.8,0.1,4.6,0.2c17.7,1.1,34.4,8.6,46.8,21c7.7,7.7,13.6,17.1,17.1,27.3
c2.8,8,11.2,12.5,19.3,10.1c0.1,0,0.2-0.1,0.3-0.1c0.1,0,0.2,0,0.2-0.1c8.1-2.5,12.8-11,10.5-19.1c-4.4-15.6-12.2-28.7-24.6-41
c-15.6-15.6-35.9-25.8-57.6-29.3c-1.9-0.3-3.8-0.6-5.7-0.8c-3.7-0.4-7.4-0.6-11.1-0.6c-2.6,0-5.2,0.1-7.7,0.3
c-5.4,0.4-10.8,1.2-16.2,2.5c-1.1,0.2-2.1,0.5-3.2,0.8c-6.7,1.8-13.3,4.2-19.5,7.3c-10.3,5.1-19.6,11.7-27.7,19.9l-68.6,68.6
C58.9,304.4,48,330.8,48,359c0,28.2,10.9,54.6,30.7,74.4C98.5,453.1,124.9,464,153,464c28.2,0,54.6-10.9,74.4-30.7l65.3-65.3
C303.1,357.5,294.7,339.7,280,341.1z"></path><path d="M433.3,78.7C413.5,58.9,387.1,48,359,48s-54.6,10.9-74.4,30.7l-63.7,63.7c-9.7,9.7-3.6,26.3,10.1,27.4
c4.7,0.4,9.3-1.3,12.7-4.6l63.8-63.6c13.7-13.7,32-21.2,51.5-21.2s37.8,7.5,51.5,21.2c13.7,13.7,21.2,32,21.2,51.5
c0,19.5-7.5,37.8-21.2,51.5l-68.6,68.6c-3.5,3.5-7.3,6.6-11.4,9.3c-4.6,3-9.6,5.6-14.8,7.5c-4.8,1.8-9.9,3-15,3.7
c-3.4,0.5-6.9,0.7-10.2,0.7c-1.4,0-2.9-0.1-4.6-0.2c-17.7-1.1-34.4-8.6-46.8-21c-7.3-7.3-12.8-16-16.4-25.5
c-2.9-7.7-11.1-11.9-19.1-9.8c-8.9,2.3-14.1,11.7-11.3,20.5c4.5,14,12.1,25.9,23.7,37.5l0,0l0.2,0.2c16.9,16.9,39.4,27.6,63.3,30.1
c3.7,0.4,7.4,0.6,11.1,0.6c2.6,0,5.2-0.1,7.8-0.3c6.5-0.5,13-1.6,19.3-3.2c6.7-1.8,13.3-4.2,19.5-7.3c10.3-5.1,19.6-11.7,27.7-19.9
l68.6-68.6c19.8-19.8,30.7-46.2,30.7-74.4S453.1,98.5,433.3,78.7z"></path></g></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><path d="M9.37 5.51A7.35 7.35 0 0 0 9.1 7.5c0 4.08 3.32 7.4 7.4 7.4c.68 0 1.35-.09 1.99-.27A7.014 7.014 0 0 1 12 19c-3.86 0-7-3.14-7-7c0-2.93 1.81-5.45 4.37-6.49zM12 3a9 9 0 1 0 9 9c0-.46-.04-.92-.1-1.36a5.389 5.389 0 0 1-4.4 2.26a5.403 5.403 0 0 1-3.14-9.8c-.44-.06-.9-.1-1.36-.1z" fill="currentColor"></path></svg>

After

Width:  |  Height:  |  Size: 419 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><path d="M6.76 4.84l-1.8-1.79l-1.41 1.41l1.79 1.79zM1 10.5h3v2H1zM11 .55h2V3.5h-2zm8.04 2.495l1.408 1.407l-1.79 1.79l-1.407-1.408zm-1.8 15.115l1.79 1.8l1.41-1.41l-1.8-1.79zM20 10.5h3v2h-3zm-8-5c-3.31 0-6 2.69-6 6s2.69 6 6 6s6-2.69 6-6s-2.69-6-6-6zm0 10c-2.21 0-4-1.79-4-4s1.79-4 4-4s4 1.79 4 4s-1.79 4-4 4zm-1 4h2v2.95h-2zm-7.45-.96l1.41 1.41l1.79-1.8l-1.41-1.41z" fill="currentColor"></path></svg>

After

Width:  |  Height:  |  Size: 501 B

View File

@ -0,0 +1 @@
<svg color="rgb(107, 111, 118)" width="16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><path d="M9 16h6v2H9zm4-7h-2v2H9v2h2v2h2v-2h2v-2h-2z" fill="currentColor"></path><path d="M12 2c-5.33 4.55-8 8.48-8 11.8c0 4.98 3.8 8.2 8 8.2s8-3.22 8-8.2c0-3.32-2.67-7.25-8-11.8zm0 18c-3.35 0-6-2.57-6-6.2c0-2.34 1.95-5.44 6-9.14c4.05 3.7 6 6.79 6 9.14c0 3.63-2.65 6.2-6 6.2z" fill="currentColor"></path></svg>

After

Width:  |  Height:  |  Size: 451 B

View File

@ -0,0 +1 @@
<svg color="rgb(107, 111, 118)" width="16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><path d="M28 22h2v8h-2z" fill="currentColor"></path><path d="M24 18h2v12h-2z" fill="currentColor"></path><path d="M20 26h2v4h-2z" fill="currentColor"></path><path d="M9 16a7 7 0 1 0 7 7a7.008 7.008 0 0 0-7-7zm4.899 6H10v-3.899A5.014 5.014 0 0 1 13.899 22zM9 28a5 5 0 0 1-1-9.899V22a2 2 0 0 0 2 2h3.899A5.008 5.008 0 0 1 9 28z" fill="currentColor"></path><path d="M22.535 12l4-6H30V4h-4.535l-4 6H18V2h-2v12a2 2 0 0 0 2 2h12v-2H18v-2z" fill="currentColor"></path><circle cx="11" cy="7" r="1" fill="currentColor"></circle><circle cx="9" cy="11" r="1" fill="currentColor"></circle><circle cx="7" cy="5" r="1" fill="currentColor"></circle><circle cx="5" cy="9" r="1" fill="currentColor"></circle><circle cx="3" cy="13" r="1" fill="currentColor"></circle></svg>

After

Width:  |  Height:  |  Size: 896 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><path d="M22 11h-4.17l3.24-3.24l-1.41-1.42L15 11h-2V9l4.66-4.66l-1.42-1.41L13 6.17V2h-2v4.17L7.76 2.93L6.34 4.34L11 9v2H9L4.34 6.34L2.93 7.76L6.17 11H2v2h4.17l-3.24 3.24l1.41 1.42L9 13h2v2l-4.66 4.66l1.42 1.41L11 17.83V22h2v-4.17l3.24 3.24l1.42-1.41L13 15v-2h2l4.66 4.66l1.41-1.42L17.83 13H22z" fill="currentColor"></path></svg>

After

Width:  |  Height:  |  Size: 431 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Some files were not shown because too many files have changed in this diff Show More