Compare commits
2 Commits
v7.4.1
...
9c9d22af3e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9c9d22af3e | ||
|
|
4782161c4c |
1
.github/FUNDING.yml
vendored
@@ -1 +1,2 @@
|
|||||||
ko_fi: coteschung
|
ko_fi: coteschung
|
||||||
|
custom: https://sponsor.cotes.page
|
||||||
|
|||||||
4
.github/workflows/cd.yml
vendored
@@ -14,14 +14,14 @@ jobs:
|
|||||||
pull-requests: write
|
pull-requests: write
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- uses: ruby/setup-ruby@v1
|
- uses: ruby/setup-ruby@v1
|
||||||
with:
|
with:
|
||||||
ruby-version: 3.3
|
ruby-version: 3.3
|
||||||
bundler-cache: true
|
bundler-cache: true
|
||||||
|
|
||||||
- uses: actions/setup-node@v5
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: lts/*
|
node-version: lts/*
|
||||||
|
|
||||||
|
|||||||
4
.github/workflows/ci.yml
vendored
@@ -31,7 +31,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0 # for posts's lastmod
|
fetch-depth: 0 # for posts's lastmod
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ jobs:
|
|||||||
bundler-cache: true
|
bundler-cache: true
|
||||||
|
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@v5
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: lts/*
|
node-version: lts/*
|
||||||
|
|
||||||
|
|||||||
8
.github/workflows/codeql.yml
vendored
@@ -24,11 +24,11 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v4
|
uses: github/codeql-action/init@v3
|
||||||
with:
|
with:
|
||||||
languages: "${{ matrix.language }}"
|
languages: "${{ matrix.language }}"
|
||||||
config-file: .github/codeql/codeql-config.yml
|
config-file: .github/codeql/codeql-config.yml
|
||||||
@@ -36,9 +36,9 @@ jobs:
|
|||||||
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java).
|
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java).
|
||||||
# If this step fails, then you should remove it and run the build manually (see below)
|
# If this step fails, then you should remove it and run the build manually (see below)
|
||||||
- name: Autobuild
|
- name: Autobuild
|
||||||
uses: github/codeql-action/autobuild@v4
|
uses: github/codeql-action/autobuild@v3
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@v4
|
uses: github/codeql-action/analyze@v3
|
||||||
with:
|
with:
|
||||||
category: "/language:${{ matrix.language }}"
|
category: "/language:${{ matrix.language }}"
|
||||||
|
|||||||
2
.github/workflows/commitlint.yml
vendored
@@ -11,5 +11,5 @@ jobs:
|
|||||||
commitlint:
|
commitlint:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
- uses: wagoid/commitlint-github-action@v6
|
- uses: wagoid/commitlint-github-action@v6
|
||||||
|
|||||||
30
.github/workflows/lint-js.yml
vendored
@@ -1,30 +0,0 @@
|
|||||||
name: Lint JS
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
paths:
|
|
||||||
- "_javascript/**/*.js"
|
|
||||||
- ".github/workflows/scripts/**/*.js"
|
|
||||||
- "*.js"
|
|
||||||
pull_request:
|
|
||||||
paths:
|
|
||||||
- "_javascript/**/*.js"
|
|
||||||
- ".github/workflows/scripts/*.js"
|
|
||||||
- "*.js"
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
lint-js:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v5
|
|
||||||
|
|
||||||
- name: Setup Node.js
|
|
||||||
uses: actions/setup-node@v5
|
|
||||||
with:
|
|
||||||
node-version: lts/*
|
|
||||||
|
|
||||||
- name: Install Dependencies
|
|
||||||
run: npm i
|
|
||||||
|
|
||||||
- name: Lint JS
|
|
||||||
run: npm run lint:js
|
|
||||||
26
.github/workflows/lint-scss.yml
vendored
@@ -1,26 +0,0 @@
|
|||||||
name: Lint SCSS
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
paths:
|
|
||||||
- "_sass/**/*.scss"
|
|
||||||
pull_request:
|
|
||||||
paths:
|
|
||||||
- "_sass/**/*.scss"
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
lint-scss:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v5
|
|
||||||
|
|
||||||
- name: Setup Node.js
|
|
||||||
uses: actions/setup-node@v5
|
|
||||||
with:
|
|
||||||
node-version: lts/*
|
|
||||||
|
|
||||||
- name: Install Dependencies
|
|
||||||
run: npm i
|
|
||||||
|
|
||||||
- name: Lint SCSS
|
|
||||||
run: npm run lint:scss
|
|
||||||
8
.github/workflows/pr-filter.yml
vendored
@@ -13,13 +13,13 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Code
|
- name: Checkout Code
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Check PR Content
|
- name: Check PR Content
|
||||||
id: intercept
|
id: intercept
|
||||||
uses: actions/github-script@v8
|
uses: actions/github-script@v7
|
||||||
with:
|
with:
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
script: |
|
script: |
|
||||||
const { default: filter } = await import('${{ github.workspace }}/.github/workflows/scripts/pr-filter.js');
|
const script = require('.github/workflows/scripts/pr-filter.js');
|
||||||
await filter({ github, context, core });
|
await script({ github, context, core });
|
||||||
|
|||||||
2
.github/workflows/scripts/pr-filter.js
vendored
@@ -9,7 +9,7 @@ function hasDescription(markdown) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default async ({ github, context, core }) => {
|
module.exports = async ({ github, context, core }) => {
|
||||||
const pr = context.payload.pull_request;
|
const pr = context.payload.pull_request;
|
||||||
const body = pr.body === null ? '' : pr.body;
|
const body = pr.body === null ? '' : pr.body;
|
||||||
const markdown = body.replace(/<!--[\s\S]*?-->/g, '');
|
const markdown = body.replace(/<!--[\s\S]*?-->/g, '');
|
||||||
|
|||||||
2
.github/workflows/stale.yml
vendored
@@ -20,7 +20,7 @@ jobs:
|
|||||||
stale:
|
stale:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/stale@v10
|
- uses: actions/stale@v9
|
||||||
with:
|
with:
|
||||||
# 60 days before marking issues/PRs stale
|
# 60 days before marking issues/PRs stale
|
||||||
days-before-close: -1 # does not close automatically
|
days-before-close: -1 # does not close automatically
|
||||||
|
|||||||
25
.github/workflows/style-lint.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
name: Style Lint
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- "hotfix/*"
|
||||||
|
paths: ["_sass/**/*.scss"]
|
||||||
|
pull_request:
|
||||||
|
paths: ["_sass/**/*.scss"]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
stylelint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup Node
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: lts/*
|
||||||
|
- run: npm i
|
||||||
|
- run: npm test
|
||||||
2
.gitignore
vendored
@@ -23,5 +23,5 @@ package-lock.json
|
|||||||
!.vscode/tasks.json
|
!.vscode/tasks.json
|
||||||
|
|
||||||
# Misc
|
# Misc
|
||||||
_sass/vendors
|
_sass/vendor
|
||||||
assets/js/dist
|
assets/js/dist
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
"ignoreFiles": ["_sass/vendors/**"],
|
|
||||||
"extends": "stylelint-config-standard-scss",
|
|
||||||
"rules": {
|
|
||||||
"no-descending-specificity": null,
|
|
||||||
"shorthand-property-no-redundant-values": null,
|
|
||||||
"at-rule-no-vendor-prefix": null,
|
|
||||||
"property-no-vendor-prefix": null,
|
|
||||||
"selector-no-vendor-prefix": null,
|
|
||||||
"value-no-vendor-prefix": null,
|
|
||||||
"selector-not-notation": "simple",
|
|
||||||
"color-hex-length": "long",
|
|
||||||
"declaration-block-single-line-max-declarations": 3,
|
|
||||||
"scss/operator-no-newline-after": null,
|
|
||||||
"rule-empty-line-before": [
|
|
||||||
"always",
|
|
||||||
{
|
|
||||||
"ignore": ["after-comment", "first-nested"]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"value-keyword-case": [
|
|
||||||
"lower",
|
|
||||||
{
|
|
||||||
"ignoreProperties": ["/^\\$/"]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"media-feature-range-notation": "prefix"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -8,7 +8,7 @@ theme: jekyll-theme-chirpy
|
|||||||
# otherwise, the layout language will use the default value of 'en'.
|
# otherwise, the layout language will use the default value of 'en'.
|
||||||
lang: en
|
lang: en
|
||||||
|
|
||||||
# Change to your timezone › https://zones.arilyn.cc
|
# Change to your timezone › https://kevinnovak.github.io/Time-Zone-Picker
|
||||||
timezone: Asia/Shanghai
|
timezone: Asia/Shanghai
|
||||||
|
|
||||||
# jekyll-seo-tag settings › https://github.com/jekyll/jekyll-seo-tag/blob/master/docs/usage.md
|
# jekyll-seo-tag settings › https://github.com/jekyll/jekyll-seo-tag/blob/master/docs/usage.md
|
||||||
@@ -212,9 +212,8 @@ exclude:
|
|||||||
- tools
|
- tools
|
||||||
- README.md
|
- README.md
|
||||||
- LICENSE
|
- LICENSE
|
||||||
- purgecss.js
|
|
||||||
- "*.config.js"
|
- "*.config.js"
|
||||||
- "package*.json"
|
- package*.json
|
||||||
|
|
||||||
jekyll-archives:
|
jekyll-archives:
|
||||||
enabled: [categories, tags]
|
enabled: [categories, tags]
|
||||||
|
|||||||
@@ -1,84 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: Entrada
|
|
||||||
category: Categoria
|
|
||||||
tag: Etiqueta
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: Inici
|
|
||||||
categories: Categories
|
|
||||||
tags: Etiquetes
|
|
||||||
archives: Arxiu
|
|
||||||
about: Sobre
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: Cercar
|
|
||||||
cancel: Cancel·lar
|
|
||||||
no_results: Ups! No s'han trobat resultats.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: Actualitzat recentment
|
|
||||||
trending_tags: Etiquetes populars
|
|
||||||
toc: Taula de continguts
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: Aquesta entrada està llicenciada sota :LICENSE_NAME per l'autor.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: Alguns drets reservats.
|
|
||||||
verbose: >-
|
|
||||||
Excepte que s'indiqui explícitament, les entrades d'aquest blog estan llicenciades
|
|
||||||
sota la llicència Creative Commons Attribution 4.0 International (CC BY 4.0) per l'autor.
|
|
||||||
|
|
||||||
meta: Fet amb :PLATFORM utilitzant el tema :THEME
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: Ho sentim, hem perdut aquesta URL o apunta a alguna cosa que no existeix.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: Hi ha una nova versió de contingut disponible.
|
|
||||||
update: Actualitzar
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: Per
|
|
||||||
posted: Publicat
|
|
||||||
updated: Actualitzat
|
|
||||||
words: paraules
|
|
||||||
pageview_measure: visites
|
|
||||||
read_time:
|
|
||||||
unit: min
|
|
||||||
prompt: " de lectura"
|
|
||||||
relate_posts: Entrades relacionades
|
|
||||||
share: Compartir
|
|
||||||
button:
|
|
||||||
next: Següent
|
|
||||||
previous: Anterior
|
|
||||||
copy_code:
|
|
||||||
succeed: Copiat!
|
|
||||||
share_link:
|
|
||||||
title: Copiar enllaç
|
|
||||||
succeed: Enllaç copiat!
|
|
||||||
|
|
||||||
# Date time format.
|
|
||||||
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
|
||||||
df:
|
|
||||||
post:
|
|
||||||
strftime: "%Y/%m/%d"
|
|
||||||
dayjs: "YYYY/MM/DD"
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure: categories
|
|
||||||
post_measure: entrades
|
|
||||||
@@ -1,86 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: Opslag
|
|
||||||
category: Kategori
|
|
||||||
tag: Tag
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: Hjem
|
|
||||||
categories: Kategorier
|
|
||||||
tags: Tags
|
|
||||||
archives: Arkiv
|
|
||||||
about: Om siden
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: søg
|
|
||||||
cancel: Afbryd
|
|
||||||
no_results: Ups! Ingen resultater fundet.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: Senest opdateret
|
|
||||||
trending_tags: Populære tags
|
|
||||||
toc: Indhold
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: Dette opslag er licenseret under :LICENSE_NAME af forfatteren.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: Nogle rettigheder forbeholdes.
|
|
||||||
verbose: >-
|
|
||||||
Medmindre andet er angivet, er opslag på denne side beskyttet
|
|
||||||
under Creative Commons Attribution 4.0 International (CC BY 4.0) licensen af forfatteren.
|
|
||||||
|
|
||||||
# meta: Using the :THEME theme for :PLATFORM.
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: Beklager, vi har malpaceret denne URL, eller den peger på et sted, som ikke findes.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: En ny version af indholdet er fundet!
|
|
||||||
update: Opdater
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: Af
|
|
||||||
posted: Udgivet
|
|
||||||
updated: Opdateret
|
|
||||||
words: ord
|
|
||||||
pageview_measure: visninger
|
|
||||||
read_time:
|
|
||||||
unit: min
|
|
||||||
prompt: læsetid
|
|
||||||
relate_posts: Læs videre
|
|
||||||
share: Del
|
|
||||||
button:
|
|
||||||
next: Nyere
|
|
||||||
previous: Ældre
|
|
||||||
copy_code:
|
|
||||||
succeed: Kopieret!
|
|
||||||
share_link:
|
|
||||||
title: Kopier link
|
|
||||||
succeed: Link kopieret!
|
|
||||||
|
|
||||||
# Date time format.
|
|
||||||
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
|
||||||
df:
|
|
||||||
post:
|
|
||||||
strftime: "%Y/%m/%d"
|
|
||||||
dayjs: "YYYY/MM/DD"
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure:
|
|
||||||
singular: kategori
|
|
||||||
plural: kategorier
|
|
||||||
post_measure: opslag
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
# The layout text of site in Dhivehi (Maldives)
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: ޕޯސްޓް
|
|
||||||
category: ނަތީޖާ
|
|
||||||
tag: ޓެގް
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: ހުންނަ
|
|
||||||
categories: ނަތީޖާތައް
|
|
||||||
tags: ޓެގްތައް
|
|
||||||
archives: އާރޗިވްސް
|
|
||||||
about: އިންސާން
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: ސާރޗް
|
|
||||||
cancel: ކެންސަލް
|
|
||||||
no_results: އޮޕްސް! އެއްވެސް ނުފެނުނީ.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: އާދަމާ އޮޕްޑޭޓްކުރި
|
|
||||||
trending_tags: މަރާހު ޓެގްތައް
|
|
||||||
toc: ކޮންޓެންސް
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: މި ޕޯސްޓް :LICENSE_NAME އިން ލައިސަންސްކުރާ ނުވަތަ މުޤައްރާއަށް.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: އެކީ ބާރަށް ހުށަހަޅާ.
|
|
||||||
verbose: >-
|
|
||||||
އަދި އެ ރަނގަޅުގައި ނުލާހެވެސް، މި ސައިޓުގެ ޕޯސްޓްތައް
|
|
||||||
މުޤައްރާއަށް Creative Commons Attribution 4.0 International (CC BY 4.0) ލައިސަންސްކުރަނީ.
|
|
||||||
|
|
||||||
meta: :PLATFORM އަށް :THEME ތީމް ބަލާލާށެވެ.
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: ސޯރީ، މި ޔޫ.އާރއެލް މަށެވެއްނެ ނުވަތަ އެކަމެއް ނުވެއެވެ.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: ޔޫ ވާރޝަން ހުރިހާ.
|
|
||||||
update: އޮޕްޑޭޓް
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: ލެކްއޯލް
|
|
||||||
posted: ޕޯސްޓްކުރެވި
|
|
||||||
updated: އޮޕްޑޭޓްކުރެވި
|
|
||||||
words: ބަސް
|
|
||||||
pageview_measure: ބަނޑުކުރާ
|
|
||||||
read_time:
|
|
||||||
unit: މިނެޓް
|
|
||||||
prompt: އިސްކާރު
|
|
||||||
relate_posts: އެއްޗެހި ފަހުރަށްދަން
|
|
||||||
share: ސެއާރް
|
|
||||||
button:
|
|
||||||
next: އަދާވަނަ
|
|
||||||
previous: ކޮނޯނި
|
|
||||||
copy_code:
|
|
||||||
succeed: ކޮޕީ ކުރެވި!
|
|
||||||
share_link:
|
|
||||||
title: ލިންކް ކޮޕީ ކުރު
|
|
||||||
succeed: ލިންކް ހަދަންކުރެވި!
|
|
||||||
|
|
||||||
# Date time format.
|
|
||||||
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
|
||||||
df:
|
|
||||||
post:
|
|
||||||
strftime: "%b %e, %Y"
|
|
||||||
dayjs: "ll"
|
|
||||||
archives:
|
|
||||||
strftime: "%b"
|
|
||||||
dayjs: "MMM"
|
|
||||||
|
|
||||||
categories:
|
|
||||||
category_measure:
|
|
||||||
singular: ނަތީޖާ
|
|
||||||
plural: ނަތީޖާތައް
|
|
||||||
post_measure:
|
|
||||||
singular: ޕޯސްޓް
|
|
||||||
plural: ޕޯސްޓްތައް
|
|
||||||
@@ -1,91 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: پست
|
|
||||||
category: دستهبندی
|
|
||||||
tag: برچسب
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: خانه
|
|
||||||
categories: دستهبندیها
|
|
||||||
tags: برچسبها
|
|
||||||
archives: آرشیو
|
|
||||||
about: درباره
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: جستجو
|
|
||||||
cancel: لغو
|
|
||||||
no_results: متأسفیم! هیچ نتیجهای یافت نشد.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: آخرین بهروزرسانی
|
|
||||||
trending_tags: برچسبهای پرطرفدار
|
|
||||||
toc: فهرست مطالب
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: این پست تحت مجوز :LICENSE_NAME توسط نویسنده منتشر شده است.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: برخی حقوق محفوظ است.
|
|
||||||
verbose: >-
|
|
||||||
بهجز مواردی که خلاف آن ذکر شده باشد، محتوای پستهای این وبلاگ
|
|
||||||
تحت مجوز Creative Commons Attribution 4.0 International (CC BY 4.0) توسط نویسنده منتشر شدهاند.
|
|
||||||
|
|
||||||
meta: با استفاده از قالب :THEME برای :PLATFORM
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: متأسفیم، لینک زیر معتبر نیست یا به صفحهای که وجود ندارد اشاره میکند.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: نسخه جدیدی از محتوا موجود است.
|
|
||||||
update: بهروزرسانی
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: نوشته شده توسط
|
|
||||||
posted: منتشر شده
|
|
||||||
updated: بهروزرسانی شده
|
|
||||||
words: کلمه
|
|
||||||
pageview_measure: بازدید
|
|
||||||
read_time:
|
|
||||||
unit: "دقیقه "
|
|
||||||
prompt: " زمان مطالعه"
|
|
||||||
relate_posts: بیشتر بخوانید
|
|
||||||
share: اشتراکگذاری
|
|
||||||
button:
|
|
||||||
next: جدیدتر
|
|
||||||
previous: قدیمیتر
|
|
||||||
copy_code:
|
|
||||||
succeed: کپی شد!
|
|
||||||
share_link:
|
|
||||||
title: کپی لینک
|
|
||||||
succeed: لینک با موفقیت کپی شد!
|
|
||||||
|
|
||||||
# Date time format.
|
|
||||||
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
|
||||||
df:
|
|
||||||
post:
|
|
||||||
strftime: "%b %e, %Y"
|
|
||||||
dayjs: "ll"
|
|
||||||
archives:
|
|
||||||
strftime: "%b"
|
|
||||||
dayjs: "MMM"
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure:
|
|
||||||
singular: دستهبندی
|
|
||||||
plural: دستهبندی
|
|
||||||
post_measure:
|
|
||||||
singular: پست
|
|
||||||
plural: پست
|
|
||||||
@@ -1,84 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: 投稿
|
|
||||||
category: カテゴリー
|
|
||||||
tag: タグ
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: ホーム
|
|
||||||
categories: カテゴリー
|
|
||||||
tags: タグ
|
|
||||||
archives: アーカイブ
|
|
||||||
about: このサイトについて
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: 検索
|
|
||||||
cancel: キャンセル
|
|
||||||
no_results: 該当なし
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: 最近更新された投稿
|
|
||||||
trending_tags: トレンドのタグ
|
|
||||||
toc: コンテンツ
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: この投稿は投稿者によって :LICENSE_NAME の下でライセンスされています。
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: Some rights reserved.
|
|
||||||
verbose: >-
|
|
||||||
Except where otherwise noted, the blog posts on this site are licensed
|
|
||||||
under the Creative Commons Attribution 4.0 International (CC BY 4.0) License by the author.
|
|
||||||
|
|
||||||
meta: :PLATFORM 用の :THEME を使用しています。
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: このURLは存在しないものを指し示しています。
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: 新しいバージョンが利用可能です。
|
|
||||||
update: 更新
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: 投稿者
|
|
||||||
posted: 投稿日
|
|
||||||
updated: 更新日
|
|
||||||
words: 語
|
|
||||||
pageview_measure: 回閲覧
|
|
||||||
read_time:
|
|
||||||
unit: 分
|
|
||||||
prompt: で読めます
|
|
||||||
relate_posts: さらに読む
|
|
||||||
share: シェア
|
|
||||||
button:
|
|
||||||
next: 次
|
|
||||||
previous: 前
|
|
||||||
copy_code:
|
|
||||||
succeed: コピーしました
|
|
||||||
share_link:
|
|
||||||
title: リンクをコピー
|
|
||||||
succeed: リンクをコピーしました
|
|
||||||
|
|
||||||
# Date time format.
|
|
||||||
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
|
||||||
df:
|
|
||||||
post:
|
|
||||||
strftime: "%Y/%m/%d"
|
|
||||||
dayjs: "YYYY/MM/DD"
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure: カテゴリー
|
|
||||||
post_measure: 投稿
|
|
||||||
@@ -1,91 +0,0 @@
|
|||||||
# The layout text of site in Kurdish (Sorani)
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: بابەت
|
|
||||||
category: هاوپۆل
|
|
||||||
tag: تاگ
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: سەرەکی
|
|
||||||
categories: هاوپۆلەکان
|
|
||||||
tags: تاگەکان
|
|
||||||
archives: ئەرشیف
|
|
||||||
about: دەربارە
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: گەڕان
|
|
||||||
cancel: هەڵوەشاندنەوە
|
|
||||||
no_results: ببوورە! هیچ ئەنجامێک نەدۆزرایەوە.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: دوایین نوێکردنەوەکان
|
|
||||||
trending_tags: تاگە باوەکان
|
|
||||||
toc: ناوەڕۆک
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: ئەم بابەتە لەلایەن نووسەرەوە بە مۆڵەتی :LICENSE_NAME بڵاوکراوەتەوە.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: هەندێک مافی پارێزراوە.
|
|
||||||
verbose: >-
|
|
||||||
تەنها لەو شوێنانەی کە بە پێچەوانەوە ئاماژەی پێدراوە، بابەتەکانی بڵۆگ لەم سایتەدا
|
|
||||||
لەژێر مۆڵەتی Creative Commons Attribution 4.0 International (CC BY 4.0) لەلایەن نووسەرەوە مۆڵەتیان پێدراوە.
|
|
||||||
|
|
||||||
meta: بە بەکارهێنانی :PLATFORM لەگەڵ ڕووکاری :THEME
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: ببوورە، ئەم بەستەرە نادۆزرێتەوە یان ئاماژە بە شتێک دەکات کە بوونی نییە.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: وەشانێکی نوێی ناوەڕۆک بەردەستە.
|
|
||||||
update: نوێکردنەوە
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: نووسەر
|
|
||||||
posted: بڵاوکراوەتەوە
|
|
||||||
updated: نوێکراوەتەوە
|
|
||||||
words: وشە
|
|
||||||
pageview_measure: بینین
|
|
||||||
read_time:
|
|
||||||
unit: خولەک
|
|
||||||
prompt: خوێندنەوە
|
|
||||||
relate_posts: بابەتی پەیوەندیدار
|
|
||||||
share: بڵاوکردنەوە
|
|
||||||
button:
|
|
||||||
next: نوێتر
|
|
||||||
previous: کۆنتر
|
|
||||||
copy_code:
|
|
||||||
succeed: کۆپی کرا!
|
|
||||||
share_link:
|
|
||||||
title: کۆپی بەستەر
|
|
||||||
succeed: بەستەر بە سەرکەوتوویی کۆپی کرا!
|
|
||||||
|
|
||||||
# Date time format.
|
|
||||||
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
|
||||||
df:
|
|
||||||
post:
|
|
||||||
strftime: "%d %b, %Y"
|
|
||||||
dayjs: "DD MMM, YYYY"
|
|
||||||
archives:
|
|
||||||
strftime: "%b"
|
|
||||||
dayjs: "MMM"
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure:
|
|
||||||
singular: هاوپۆل
|
|
||||||
plural: هاوپۆل
|
|
||||||
post_measure:
|
|
||||||
singular: بابەت
|
|
||||||
plural: بابەت
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: Post
|
|
||||||
category: Categorie
|
|
||||||
tag: Tag
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: Startpagina
|
|
||||||
categories: Categorieën
|
|
||||||
tags: Tags
|
|
||||||
archives: Archief
|
|
||||||
about: Over
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: Zoek
|
|
||||||
cancel: Annuleer
|
|
||||||
no_results: Oops! Geen resultaat gevonden.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: Recent Bijgewerkt
|
|
||||||
trending_tags: Trending Tags
|
|
||||||
toc: Inhoud
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: Alle posts zijn onder :LICENSE_NAME gepubliceerd door de auteur.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: Sommige rechten voorbehouden.
|
|
||||||
verbose: >-
|
|
||||||
Tenzij anders vermeld, alle posts zijn onder de
|
|
||||||
Creative Commons Attribution 4.0 International (CC BY 4.0) gepubliceerd door de auteur.
|
|
||||||
|
|
||||||
meta: Gebruikt :THEME
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: Sorry, we hebben de URL verkeerd geplaatst of hij verwijst naar iets dat niet bestaat.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: Nieuwe versie van inhoud beschikbaar.
|
|
||||||
update: Update
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
post:
|
|
||||||
written_by: Door
|
|
||||||
posted: Posted
|
|
||||||
updated: Bijgewerkt
|
|
||||||
words: woorden
|
|
||||||
pageview_measure: Gelezen
|
|
||||||
read_time:
|
|
||||||
unit: min
|
|
||||||
prompt: lees
|
|
||||||
relate_posts: Verder Lezen
|
|
||||||
share: Deel
|
|
||||||
button:
|
|
||||||
next: Volgende
|
|
||||||
previous: Vorige
|
|
||||||
copy_code:
|
|
||||||
succeed: Gekopieerd!
|
|
||||||
share_link:
|
|
||||||
title: Link kopiëren
|
|
||||||
succeed: Succesvol gekopieerd!
|
|
||||||
|
|
||||||
# Date time format.
|
|
||||||
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
|
||||||
df:
|
|
||||||
post:
|
|
||||||
strftime: "%b %e, %Y"
|
|
||||||
dayjs: "ll"
|
|
||||||
archives:
|
|
||||||
strftime: "%b"
|
|
||||||
dayjs: "MMM"
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure:
|
|
||||||
singular: categorie
|
|
||||||
plural: categorieën
|
|
||||||
post_measure:
|
|
||||||
singular: post
|
|
||||||
plural: posts
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
# The layout text of site in Pashto (Afghanistan)
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: لیکنه
|
|
||||||
category: وېشنيزه
|
|
||||||
tag: ټګ
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: کورپاڼه
|
|
||||||
categories: وېشنيزې
|
|
||||||
tags: ټګونه
|
|
||||||
archives: آرشيف
|
|
||||||
about: په اړه
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: لټون
|
|
||||||
cancel: لغوه
|
|
||||||
no_results: ها! هېڅ پایله ونه موندل شوه.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: وروستی تازه
|
|
||||||
trending_tags: مشهور ټګونه
|
|
||||||
toc: منځپانګه
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: دا لیکنه د :LICENSE_NAME جواز لاندې د لیکوال له خوا خپره شوې ده.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: ځینې حقونه خوندي دي.
|
|
||||||
verbose: >-
|
|
||||||
تر هغه ځایه چې بل ډول نه وي یاد شوي، د دې سایټ لیکنې
|
|
||||||
د لیکوال له خوا د کریټېو کامنز د انتساب 4.0 نړیوال (CC BY 4.0) جواز لاندې خپرېږي.
|
|
||||||
|
|
||||||
meta: د :PLATFORM لپاره د :THEME موضوع کاروي.
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: بښنه غواړو، دغه URL ناسم دی یا هغه څه ته اشاره کوي چې شتون نه لري.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: نوې نسخه شتون لري.
|
|
||||||
update: تازه
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: لیکوال
|
|
||||||
posted: خپره شوې
|
|
||||||
updated: تازه شوې
|
|
||||||
words: کلمې
|
|
||||||
pageview_measure: کتنې
|
|
||||||
read_time:
|
|
||||||
unit: دقیقې
|
|
||||||
prompt: لوستل
|
|
||||||
relate_posts: نوره لوستنه
|
|
||||||
share: شریکول
|
|
||||||
button:
|
|
||||||
next: نوی
|
|
||||||
previous: زوړ
|
|
||||||
copy_code:
|
|
||||||
succeed: کاپي شو!
|
|
||||||
share_link:
|
|
||||||
title: لینک کاپي کړئ
|
|
||||||
succeed: لینک بریالي کاپي شو!
|
|
||||||
|
|
||||||
# Date time format.
|
|
||||||
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
|
||||||
df:
|
|
||||||
post:
|
|
||||||
strftime: "%b %e, %Y"
|
|
||||||
dayjs: "ll"
|
|
||||||
archives:
|
|
||||||
strftime: "%b"
|
|
||||||
dayjs: "MMM"
|
|
||||||
|
|
||||||
categories:
|
|
||||||
category_measure:
|
|
||||||
singular: وېشنيزه
|
|
||||||
plural: وېشنيزې
|
|
||||||
post_measure:
|
|
||||||
singular: لیکنه
|
|
||||||
plural: لیکنې
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
# The layout text of site in Urdu (Pakistan)
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: تحریر
|
|
||||||
category: زمرہ
|
|
||||||
tag: ٹیگ
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: گھر
|
|
||||||
categories: زمروں
|
|
||||||
tags: ٹیگز
|
|
||||||
archives: محفوظات
|
|
||||||
about: تعارف
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: تلاش
|
|
||||||
cancel: منسوخ
|
|
||||||
no_results: اوہ! کوئی نتیجہ نہیں ملا۔
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: حال ہی میں اپ ڈیٹ
|
|
||||||
trending_tags: مقبول ٹیگز
|
|
||||||
toc: مواد
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: یہ تحریر :LICENSE_NAME کے تحت مصنف کی جانب سے لائسنس یافتہ ہے۔
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: کچھ حقوق محفوظ ہیں۔
|
|
||||||
verbose: >-
|
|
||||||
جب تک کہ دوسری صورت میں ذکر نہ ہو، اس سائٹ کی تحریریں
|
|
||||||
مصنف کی جانب سے تخلیقی العام انتساب 4.0 بین الاقوامی (CC BY 4.0) لائسنس کے تحت دستیاب ہیں۔
|
|
||||||
|
|
||||||
meta: :PLATFORM کے لیے :THEME تھیم استعمال کیا جا رہا ہے۔
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: معذرت، یہ URL غلط ہے یا جس چیز کی طرف اشارہ کر رہا ہے وہ موجود نہیں۔
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: نیا مواد دستیاب ہے۔
|
|
||||||
update: اپ ڈیٹ
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: از
|
|
||||||
posted: شائع شدہ
|
|
||||||
updated: اپ ڈیٹ شدہ
|
|
||||||
words: لفظ
|
|
||||||
pageview_measure: مشاہدات
|
|
||||||
read_time:
|
|
||||||
unit: منٹ
|
|
||||||
prompt: پڑھیں
|
|
||||||
relate_posts: مزید مطالعہ
|
|
||||||
share: شیئر
|
|
||||||
button:
|
|
||||||
next: نیا
|
|
||||||
previous: پرانا
|
|
||||||
copy_code:
|
|
||||||
succeed: کاپی ہو گیا!
|
|
||||||
share_link:
|
|
||||||
title: لنک کاپی کریں
|
|
||||||
succeed: لنک کامیابی سے کاپی ہو گیا!
|
|
||||||
|
|
||||||
# Date time format.
|
|
||||||
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
|
||||||
df:
|
|
||||||
post:
|
|
||||||
strftime: "%b %e, %Y"
|
|
||||||
dayjs: "ll"
|
|
||||||
archives:
|
|
||||||
strftime: "%b"
|
|
||||||
dayjs: "MMM"
|
|
||||||
|
|
||||||
categories:
|
|
||||||
category_measure:
|
|
||||||
singular: زمرہ
|
|
||||||
plural: زمروں
|
|
||||||
post_measure:
|
|
||||||
singular: تحریر
|
|
||||||
plural: تحریریں
|
|
||||||
@@ -20,24 +20,24 @@ webfonts: https://fonts.googleapis.com/css2?family=Lato:wght@300;400&family=Sour
|
|||||||
# Libraries
|
# Libraries
|
||||||
|
|
||||||
toc:
|
toc:
|
||||||
css: https://cdn.jsdelivr.net/npm/tocbot@4.36.4/dist/tocbot.min.css
|
css: https://cdn.jsdelivr.net/npm/tocbot@4.29.0/dist/tocbot.min.css
|
||||||
js: https://cdn.jsdelivr.net/npm/tocbot@4.36.4/dist/tocbot.min.js
|
js: https://cdn.jsdelivr.net/npm/tocbot@4.29.0/dist/tocbot.min.js
|
||||||
|
|
||||||
fontawesome:
|
fontawesome:
|
||||||
css: https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@7.1.0/css/all.min.css
|
css: https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.6.0/css/all.min.css
|
||||||
|
|
||||||
search:
|
search:
|
||||||
js: https://cdn.jsdelivr.net/npm/simple-jekyll-search@1.10.0/dest/simple-jekyll-search.min.js
|
js: https://cdn.jsdelivr.net/npm/simple-jekyll-search@1.10.0/dest/simple-jekyll-search.min.js
|
||||||
|
|
||||||
mermaid:
|
mermaid:
|
||||||
js: https://cdn.jsdelivr.net/npm/mermaid@11.12.0/dist/mermaid.min.js
|
js: https://cdn.jsdelivr.net/npm/mermaid@11.0.2/dist/mermaid.min.js
|
||||||
|
|
||||||
dayjs:
|
dayjs:
|
||||||
js:
|
js:
|
||||||
common: https://cdn.jsdelivr.net/npm/dayjs@1.11.18/dayjs.min.js
|
common: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/dayjs.min.js
|
||||||
locale: https://cdn.jsdelivr.net/npm/dayjs@1.11.18/locale/:LOCALE.js
|
locale: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/locale/:LOCALE.js
|
||||||
relativeTime: https://cdn.jsdelivr.net/npm/dayjs@1.11.18/plugin/relativeTime.js
|
relativeTime: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/relativeTime.js
|
||||||
localizedFormat: https://cdn.jsdelivr.net/npm/dayjs@1.11.18/plugin/localizedFormat.js
|
localizedFormat: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/localizedFormat.js
|
||||||
|
|
||||||
glightbox:
|
glightbox:
|
||||||
css: https://cdn.jsdelivr.net/npm/glightbox@3.3.0/dist/css/glightbox.min.css
|
css: https://cdn.jsdelivr.net/npm/glightbox@3.3.0/dist/css/glightbox.min.css
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ platforms:
|
|||||||
#
|
#
|
||||||
# - type: Linkedin
|
# - type: Linkedin
|
||||||
# icon: "fab fa-linkedin"
|
# icon: "fab fa-linkedin"
|
||||||
# link: "https://www.linkedin.com/feed/?shareActive=true&shareUrl=URL"
|
# link: "https://www.linkedin.com/sharing/share-offsite/?url=URL"
|
||||||
#
|
#
|
||||||
# - type: Weibo
|
# - type: Weibo
|
||||||
# icon: "fab fa-weibo"
|
# icon: "fab fa-weibo"
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
{% endunless %}
|
{% endunless %}
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<audio class="embed-audio file" controls>
|
<audio class="embed-audio" controls>
|
||||||
{% assign extension = src | split: '.' | last %}
|
{% assign extension = src | split: '.' | last %}
|
||||||
{% assign types = extension | concat: types %}
|
{% assign types = extension | concat: types %}
|
||||||
|
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
{% assign size = 352 %}
|
|
||||||
{% assign theme = '' %}
|
|
||||||
|
|
||||||
{% if include.compact %}
|
|
||||||
{% assign size = 152 %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if include.dark %}
|
|
||||||
{% assign theme = '?theme=0' %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<iframe
|
|
||||||
class="embed-audio spotify"
|
|
||||||
src="https://open.spotify.com/embed/track/{{ include.id | append: theme }}"
|
|
||||||
height="{{ size }}"
|
|
||||||
frameBorder="0"
|
|
||||||
allowfullscreen=""
|
|
||||||
allowtransparency="true"
|
|
||||||
allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture"
|
|
||||||
loading="lazy"
|
|
||||||
>
|
|
||||||
</iframe>
|
|
||||||
@@ -5,10 +5,15 @@
|
|||||||
|
|
||||||
{% capture favicon_path %}{{ '/assets/img/favicons' | relative_url }}{% endcapture %}
|
{% capture favicon_path %}{{ '/assets/img/favicons' | relative_url }}{% endcapture %}
|
||||||
|
|
||||||
<link rel="icon" type="image/png" href="{{ favicon_path }}/favicon-96x96.png" sizes="96x96">
|
|
||||||
<link rel="icon" type="image/svg+xml" href="{{ favicon_path }}/favicon.svg">
|
|
||||||
<link rel="shortcut icon" href="{{ favicon_path }}/favicon.ico">
|
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="{{ favicon_path }}/apple-touch-icon.png">
|
<link rel="apple-touch-icon" sizes="180x180" href="{{ favicon_path }}/apple-touch-icon.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="{{ favicon_path }}/favicon-32x32.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="16x16" href="{{ favicon_path }}/favicon-16x16.png">
|
||||||
{% if site.pwa.enabled %}
|
{% if site.pwa.enabled %}
|
||||||
<link rel="manifest" href="{{ favicon_path }}/site.webmanifest">
|
<link rel="manifest" href="{{ favicon_path }}/site.webmanifest">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
<link rel="shortcut icon" href="{{ favicon_path }}/favicon.ico">
|
||||||
|
<meta name="apple-mobile-web-app-title" content="{{ site.title }}">
|
||||||
|
<meta name="application-name" content="{{ site.title }}">
|
||||||
|
<meta name="msapplication-TileColor" content="#da532c">
|
||||||
|
<meta name="msapplication-config" content="{{ favicon_path }}/browserconfig.xml">
|
||||||
|
<meta name="theme-color" content="#ffffff">
|
||||||
|
|||||||
@@ -70,7 +70,7 @@
|
|||||||
|
|
||||||
<!-- Bootstrap -->
|
<!-- Bootstrap -->
|
||||||
{% unless jekyll.environment == 'production' %}
|
{% unless jekyll.environment == 'production' %}
|
||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css">
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css">
|
||||||
{% endunless %}
|
{% endunless %}
|
||||||
|
|
||||||
<!-- Theme style -->
|
<!-- Theme style -->
|
||||||
@@ -99,7 +99,9 @@
|
|||||||
|
|
||||||
<!-- Scripts -->
|
<!-- Scripts -->
|
||||||
|
|
||||||
<script src="{{ '/assets/js/dist/theme.min.js' | relative_url }}"></script>
|
{% unless site.theme_mode %}
|
||||||
|
<script src="{{ '/assets/js/dist/theme.min.js' | relative_url }}"></script>
|
||||||
|
{% endunless %}
|
||||||
|
|
||||||
{% include js-selector.html lang=lang %}
|
{% include js-selector.html lang=lang %}
|
||||||
|
|
||||||
|
|||||||
@@ -66,7 +66,7 @@
|
|||||||
|
|
||||||
{% if page.math %}
|
{% if page.math %}
|
||||||
<!-- MathJax -->
|
<!-- MathJax -->
|
||||||
<script src="{{ '/assets/js/data/mathjax.js' | relative_url }}"></script>
|
<script async src="{{ '/assets/js/data/mathjax.js' | relative_url }}"></script>
|
||||||
<script async src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=es6"></script>
|
<script async src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=es6"></script>
|
||||||
<script id="MathJax-script" async src="{{ site.data.origin[type].mathjax.js | relative_url }}"></script>
|
<script id="MathJax-script" async src="{{ site.data.origin[type].mathjax.js | relative_url }}"></script>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
10
_includes/no-linenos.html
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{% comment %}
|
||||||
|
Remove the line number of the code snippet.
|
||||||
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% assign content = include.content %}
|
||||||
|
|
||||||
|
{% if content contains '<td class="rouge-gutter gl"><pre class="lineno">' %}
|
||||||
|
{% assign content = content | replace: '<td class="rouge-gutter gl"><pre class="lineno">', '<!-- <td class="rouge-gutter gl"><pre class="lineno">'%}
|
||||||
|
{% assign content = content | replace: '</td><td class="rouge-code">', '</td> --><td class="rouge-code">' %}
|
||||||
|
{% endif %}
|
||||||
@@ -1,21 +1,19 @@
|
|||||||
<!-- Display GoatCounter pageviews -->
|
<!-- Display GoatCounter pageviews -->
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
let pv = document.getElementById('pageviews');
|
||||||
const pv = document.getElementById('pageviews');
|
|
||||||
|
|
||||||
if (pv !== null) {
|
if (pv !== null) {
|
||||||
const uri = location.pathname.replace(/\/$/, '');
|
const uri = location.pathname.replace(/\/$/, '');
|
||||||
const url = `https://{{ site.analytics.goatcounter.id }}.goatcounter.com/counter/${encodeURIComponent(uri)}.json`;
|
const url = `https://{{ site.analytics.goatcounter.id }}.goatcounter.com/counter/${encodeURIComponent(uri)}.json`;
|
||||||
|
|
||||||
fetch(url)
|
fetch(url)
|
||||||
.then((response) => response.json())
|
.then((response) => response.json())
|
||||||
.then((data) => {
|
.then((data) => {
|
||||||
const count = data.count.replace(/\D/g, '');
|
const count = data.count.replace(/\s/g, '');
|
||||||
pv.innerText = new Intl.NumberFormat().format(count);
|
pv.innerText = new Intl.NumberFormat().format(count);
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
pv.innerText = '1';
|
pv.innerText = '1';
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
16
_includes/post-description.html
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{%- comment -%}
|
||||||
|
Get post description or generate it from the post content.
|
||||||
|
{%- endcomment -%}
|
||||||
|
|
||||||
|
{%- assign max_length = include.max_length | default: 200 -%}
|
||||||
|
|
||||||
|
{%- capture description -%}
|
||||||
|
{%- if post.description -%}
|
||||||
|
{{- post.description -}}
|
||||||
|
{%- else -%}
|
||||||
|
{%- include no-linenos.html content=post.content -%}
|
||||||
|
{{- content | markdownify | strip_html -}}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endcapture -%}
|
||||||
|
|
||||||
|
{{- description | strip | truncate: max_length | escape -}}
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
{%- comment -%}
|
|
||||||
Get the post's description or body content.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
full_text: If true, return the full content. Default is false.
|
|
||||||
max_length: The maximum length of the returned content. Default is 200.
|
|
||||||
{%- endcomment -%}
|
|
||||||
|
|
||||||
{%- if post.description and include.full_text != true -%}
|
|
||||||
{{- post.description -}}
|
|
||||||
{%- else -%}
|
|
||||||
{%- comment -%} Remove the line numbers from the code snippet. {%- endcomment -%}
|
|
||||||
|
|
||||||
{%- assign content = post.content -%}
|
|
||||||
|
|
||||||
{%- if content contains '<td class="rouge-gutter gl"><pre class="lineno">' -%}
|
|
||||||
{%- assign content = content
|
|
||||||
| replace: '<td class="rouge-gutter gl"><pre class="lineno">',
|
|
||||||
'<!-- <td class="rouge-gutter gl"><pre class="lineno">'
|
|
||||||
-%}
|
|
||||||
{%- assign content = content | replace: '</td><td class="rouge-code">', '</td> --><td class="rouge-code">' -%}
|
|
||||||
{%- endif -%}
|
|
||||||
|
|
||||||
{%- assign content = content
|
|
||||||
| markdownify
|
|
||||||
| strip_html
|
|
||||||
| newline_to_br
|
|
||||||
| replace: '<br />', ' '
|
|
||||||
| strip_newlines
|
|
||||||
| strip
|
|
||||||
-%}
|
|
||||||
|
|
||||||
{%- unless include.full_text -%}
|
|
||||||
{%- assign max_length = include.max_length | default: 200 -%}
|
|
||||||
{%- assign content = content | truncate: max_length -%}
|
|
||||||
{%- endunless -%}
|
|
||||||
|
|
||||||
{{- content -}}
|
|
||||||
{%- endif -%}
|
|
||||||
@@ -88,41 +88,9 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
<!-- take out classes -->
|
<!-- take out classes -->
|
||||||
{% assign _wrapper_class = '' %}
|
|
||||||
|
|
||||||
{% if _class %}
|
{% if _class %}
|
||||||
{% assign _remain = _class %}
|
{% capture _old_class %}class="{{ _class }}"{% endcapture %}
|
||||||
{% assign _class_array = _class | split: ' ' %}
|
{% assign _left = _left | remove: _old_class %}
|
||||||
|
|
||||||
{% for c in _class_array %}
|
|
||||||
{% assign _pick = false %}
|
|
||||||
|
|
||||||
{% case c %}
|
|
||||||
{% when 'preview-img', 'normal', 'left', 'right', 'light', 'dark' %}
|
|
||||||
{% assign _pick = true %}
|
|
||||||
{% else %}
|
|
||||||
{% if c contains '-' %}
|
|
||||||
{% assign start = c | split: '-' | first %}
|
|
||||||
{% if start == 'w' %}
|
|
||||||
{% assign _pick = true %}
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
{% endcase %}
|
|
||||||
|
|
||||||
{% if _pick %}
|
|
||||||
{% assign _remain = _remain | remove: c | strip %}
|
|
||||||
{% assign _wrapper_class = _wrapper_class | append: ' ' | append: c %}
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% unless _wrapper_class == '' %}
|
|
||||||
{% capture _old_class %}class="{{ _class }}"{% endcapture %}
|
|
||||||
{% assign _left = _left | remove: _old_class %}
|
|
||||||
{% unless _remain == '' %}
|
|
||||||
{% capture _new_class %}class="{{ _remain }}"{% endcapture %}
|
|
||||||
{% assign _left = _left | append: _new_class %}
|
|
||||||
{% endunless %}
|
|
||||||
{% endunless %}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% assign _final_src = null %}
|
{% assign _final_src = null %}
|
||||||
@@ -142,7 +110,7 @@
|
|||||||
|
|
||||||
{% if _lqip %}
|
{% if _lqip %}
|
||||||
{% assign _lazyload = false %}
|
{% assign _lazyload = false %}
|
||||||
{% assign _wrapper_class = _wrapper_class | append: ' blur' %}
|
{% assign _class = _class | append: ' blur' %}
|
||||||
|
|
||||||
{% unless _lqip contains 'data:' %}
|
{% unless _lqip contains 'data:' %}
|
||||||
{% assign _lqip_alt = 'lqip="' | append: _path_prefix %}
|
{% assign _lqip_alt = 'lqip="' | append: _path_prefix %}
|
||||||
@@ -153,7 +121,7 @@
|
|||||||
{% assign _left = _left | replace: 'src=', 'data-src=' | replace: ' lqip=', ' data-lqip="true" src=' %}
|
{% assign _left = _left | replace: 'src=', 'data-src=' | replace: ' lqip=', ' data-lqip="true" src=' %}
|
||||||
|
|
||||||
{% else %}
|
{% else %}
|
||||||
{% assign _wrapper_class = _wrapper_class | append: ' shimmer' %}
|
{% assign _class = _class | append: ' shimmer' %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<!-- lazy-load images -->
|
<!-- lazy-load images -->
|
||||||
@@ -163,7 +131,7 @@
|
|||||||
|
|
||||||
{% if page.layout == 'home' %}
|
{% if page.layout == 'home' %}
|
||||||
<!-- create the image wrapper -->
|
<!-- create the image wrapper -->
|
||||||
{% assign _wrapper_start = '<div class="preview-img ' | append: _wrapper_class | append: '">' %}
|
{% assign _wrapper_start = '<div class="preview-img ' | append: _class | append: '">' %}
|
||||||
|
|
||||||
{% assign _img_content = _img_content | append: _wrapper_start %}
|
{% assign _img_content = _img_content | append: _wrapper_start %}
|
||||||
{% assign _right = _right | prepend: '></div' %}
|
{% assign _right = _right | prepend: '></div' %}
|
||||||
@@ -185,8 +153,8 @@
|
|||||||
{% assign _wrapper_start = _final_src
|
{% assign _wrapper_start = _final_src
|
||||||
| default: _src
|
| default: _src
|
||||||
| prepend: '<a href="'
|
| prepend: '<a href="'
|
||||||
| append: '" class="popup img-link'
|
| append: '" class="popup img-link '
|
||||||
| append: _wrapper_class
|
| append: _class
|
||||||
| append: '">'
|
| append: '">'
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
|||||||
@@ -82,7 +82,7 @@
|
|||||||
{% include datetime.html date=post.date lang=include.lang %}
|
{% include datetime.html date=post.date lang=include.lang %}
|
||||||
<h4 class="pt-0 my-2">{{ post.title }}</h4>
|
<h4 class="pt-0 my-2">{{ post.title }}</h4>
|
||||||
<div class="text-muted">
|
<div class="text-muted">
|
||||||
<p>{% include post-summary.html %}</p>
|
<p>{% include post-description.html %}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
{tags}
|
{tags}
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<p>{content}</p>
|
<p>{snippet}</p>
|
||||||
</article>
|
</article>
|
||||||
{% endcapture %}
|
{% endcapture %}
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div id="search-result-wrapper" class="d-flex justify-content-center d-none">
|
<div id="search-result-wrapper" class="d-flex justify-content-center d-none">
|
||||||
<div class="col-11 content">
|
<div class="col-11 content">
|
||||||
<div id="search-hints">
|
<div id="search-hints">
|
||||||
{% include_cached trending-tags.html lang=include.lang %}
|
{% include_cached trending-tags.html %}
|
||||||
</div>
|
</div>
|
||||||
<div id="search-results" class="d-flex flex-wrap justify-content-center text-muted mt-3"></div>
|
<div id="search-results" class="d-flex flex-wrap justify-content-center text-muted mt-3"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -52,21 +52,13 @@
|
|||||||
{% endunless %}
|
{% endunless %}
|
||||||
|
|
||||||
{% for entry in site.data.contact %}
|
{% for entry in site.data.contact %}
|
||||||
{%- assign url = null -%}
|
|
||||||
|
|
||||||
{% case entry.type %}
|
{% case entry.type %}
|
||||||
{% when 'github', 'twitter' %}
|
{% when 'github', 'twitter' %}
|
||||||
{%- unless site[entry.type].username -%}
|
|
||||||
{%- continue -%}
|
|
||||||
{%- endunless -%}
|
|
||||||
{%- capture url -%}
|
{%- capture url -%}
|
||||||
https://{{ entry.type }}.com/{{ site[entry.type].username }}
|
https://{{ entry.type }}.com/{{ site[entry.type].username }}
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{% when 'email' %}
|
{% when 'email' %}
|
||||||
{%- unless site.social.email -%}
|
{% assign email = site.social.email | split: '@' %}
|
||||||
{%- continue -%}
|
|
||||||
{%- endunless -%}
|
|
||||||
{%- assign email = site.social.email | split: '@' -%}
|
|
||||||
{%- capture url -%}
|
{%- capture url -%}
|
||||||
javascript:location.href = 'mailto:' + ['{{ email[0] }}','{{ email[1] }}'].join('@')
|
javascript:location.href = 'mailto:' + ['{{ email[0] }}','{{ email[1] }}'].join('@')
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
{% include toc-status.html %}
|
{% include toc-status.html %}
|
||||||
|
|
||||||
{% if enable_toc %}
|
{% if enable_toc %}
|
||||||
<div class="toc-border-cover z-3"></div>
|
<section id="toc-wrapper" class="ps-0 pe-4">
|
||||||
<section id="toc-wrapper" class="invisible position-sticky ps-0 pe-4 pb-4">
|
<h2 class="panel-heading ps-3 mb-2">{{- site.data.locales[include.lang].panel.toc -}}</h2>
|
||||||
<h2 class="panel-heading ps-3 pb-2 mb-0">{{- site.data.locales[include.lang].panel.toc -}}</h2>
|
|
||||||
<nav id="toc"></nav>
|
<nav id="toc"></nav>
|
||||||
</section>
|
</section>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<!-- The Top Bar -->
|
<!-- The Top Bar -->
|
||||||
|
|
||||||
<header id="topbar-wrapper" class="flex-shrink-0" aria-label="Top Bar">
|
<header id="topbar-wrapper" aria-label="Top Bar">
|
||||||
<div
|
<div
|
||||||
id="topbar"
|
id="topbar"
|
||||||
class="d-flex align-items-center justify-content-between px-lg-3 h-100"
|
class="d-flex align-items-center justify-content-between px-lg-3 h-100"
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
</nav>
|
</nav>
|
||||||
<!-- endof #breadcrumb -->
|
<!-- endof #breadcrumb -->
|
||||||
|
|
||||||
<button type="button" id="sidebar-trigger" class="btn btn-link" aria-label="Sidebar">
|
<button type="button" id="sidebar-trigger" class="btn btn-link">
|
||||||
<i class="fas fa-bars fa-fw"></i>
|
<i class="fas fa-bars fa-fw"></i>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
@@ -55,7 +55,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button type="button" id="search-trigger" class="btn btn-link" aria-label="Search">
|
<button type="button" id="search-trigger" class="btn btn-link">
|
||||||
<i class="fas fa-search fa-fw"></i>
|
<i class="fas fa-search fa-fw"></i>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ function refreshTheme(event) {
|
|||||||
const mermaidList = document.getElementsByClassName(MERMAID);
|
const mermaidList = document.getElementsByClassName(MERMAID);
|
||||||
|
|
||||||
[...mermaidList].forEach((elem) => {
|
[...mermaidList].forEach((elem) => {
|
||||||
const svgCode = elem.previousSibling.children.item(0).textContent;
|
const svgCode = elem.previousSibling.children.item(0).innerHTML;
|
||||||
elem.textContent = svgCode;
|
elem.textContent = svgCode;
|
||||||
elem.removeAttribute('data-processed');
|
elem.removeAttribute('data-processed');
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -27,9 +27,6 @@ function init() {
|
|||||||
mobile.init();
|
mobile.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
const $tocWrapper = document.getElementById('toc-wrapper');
|
|
||||||
$tocWrapper.classList.remove('invisible');
|
|
||||||
|
|
||||||
desktopMode.onchange = refresh;
|
desktopMode.onchange = refresh;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ export class TocDesktop {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static init() {
|
static init() {
|
||||||
tocbot.init(this.options);
|
if (document.getElementById('toc-wrapper')) {
|
||||||
|
tocbot.init(this.options);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,10 +39,7 @@ class Theme {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static get #mode() {
|
static get #mode() {
|
||||||
return (
|
return sessionStorage.getItem(this.#modeKey);
|
||||||
sessionStorage.getItem(this.#modeKey) ||
|
|
||||||
document.documentElement.getAttribute(this.#modeAttr)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static get #isDarkMode() {
|
static get #isDarkMode() {
|
||||||
@@ -25,7 +25,7 @@ layout: compress
|
|||||||
|
|
||||||
<div class="row flex-grow-1">
|
<div class="row flex-grow-1">
|
||||||
<main aria-label="Main Content" class="col-12 col-lg-11 col-xl-9 px-md-4">
|
<main aria-label="Main Content" class="col-12 col-lg-11 col-xl-9 px-md-4">
|
||||||
{% if layout.layout == 'default' %}
|
{% if layout.refactor or layout.layout == 'default' %}
|
||||||
{% include refactor-content.html content=content lang=lang %}
|
{% include refactor-content.html content=content lang=lang %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{{ content }}
|
{{ content }}
|
||||||
@@ -33,7 +33,7 @@ layout: compress
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<!-- panel -->
|
<!-- panel -->
|
||||||
<aside aria-label="Panel" id="panel-wrapper" class="col-xl-3 ps-2 text-muted">
|
<aside aria-label="Panel" id="panel-wrapper" class="col-xl-3 ps-2 mb-5 text-muted">
|
||||||
<div class="access">
|
<div class="access">
|
||||||
{% include_cached update-list.html lang=lang %}
|
{% include_cached update-list.html lang=lang %}
|
||||||
{% include_cached trending-tags.html lang=lang %}
|
{% include_cached trending-tags.html lang=lang %}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
layout: default
|
layout: default
|
||||||
|
refactor: true
|
||||||
---
|
---
|
||||||
|
|
||||||
{% include lang.html %}
|
{% include lang.html %}
|
||||||
@@ -54,39 +55,20 @@ layout: default
|
|||||||
|
|
||||||
{% if post.image %}
|
{% if post.image %}
|
||||||
{% assign src = post.image.path | default: post.image %}
|
{% assign src = post.image.path | default: post.image %}
|
||||||
|
{% unless src contains '//' %}
|
||||||
{% if post.media_subpath %}
|
{% assign src = post.media_subpath | append: '/' | append: src | replace: '//', '/' %}
|
||||||
{% unless src contains '://' %}
|
{% endunless %}
|
||||||
{% assign src = post.media_subpath
|
|
||||||
| append: '/'
|
|
||||||
| append: src
|
|
||||||
| replace: '///', '/'
|
|
||||||
| replace: '//', '/'
|
|
||||||
%}
|
|
||||||
{% endunless %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if post.image.lqip %}
|
|
||||||
{% assign lqip = post.image.lqip %}
|
|
||||||
|
|
||||||
{% if post.media_subpath %}
|
|
||||||
{% unless lqip contains 'data:' %}
|
|
||||||
{% assign lqip = post.media_subpath
|
|
||||||
| append: '/'
|
|
||||||
| append: lqip
|
|
||||||
| replace: '///', '/'
|
|
||||||
| replace: '//', '/'
|
|
||||||
%}
|
|
||||||
{% endunless %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% assign lqip_attr = 'lqip="' | append: lqip | append: '"' %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% assign alt = post.image.alt | xml_escape | default: 'Preview Image' %}
|
{% assign alt = post.image.alt | xml_escape | default: 'Preview Image' %}
|
||||||
|
|
||||||
|
{% assign lqip = null %}
|
||||||
|
|
||||||
|
{% if post.image.lqip %}
|
||||||
|
{% capture lqip %}lqip="{{ post.image.lqip }}"{% endcapture %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
<div class="col-md-5">
|
<div class="col-md-5">
|
||||||
<img src="{{ src }}" alt="{{ alt }}" {{ lqip_attr }}>
|
<img src="{{ src }}" alt="{{ alt }}" {{ lqip }}>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% assign card_body_col = '7' %}
|
{% assign card_body_col = '7' %}
|
||||||
@@ -97,7 +79,7 @@ layout: default
|
|||||||
<h1 class="card-title my-2 mt-md-0">{{ post.title }}</h1>
|
<h1 class="card-title my-2 mt-md-0">{{ post.title }}</h1>
|
||||||
|
|
||||||
<div class="card-text content mt-0 mb-3">
|
<div class="card-text content mt-0 mb-3">
|
||||||
<p>{% include post-summary.html %}</p>
|
<p>{% include post-description.html %}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="post-meta flex-grow-1 d-flex align-items-end">
|
<div class="post-meta flex-grow-1 d-flex align-items-end">
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
layout: default
|
layout: default
|
||||||
|
refactor: true
|
||||||
panel_includes:
|
panel_includes:
|
||||||
- toc
|
- toc
|
||||||
tail_includes:
|
tail_includes:
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ Basically, you need to fill the [Front Matter](https://jekyllrb.com/docs/front-m
|
|||||||
---
|
---
|
||||||
title: TITLE
|
title: TITLE
|
||||||
date: YYYY-MM-DD HH:MM:SS +/-TTTT
|
date: YYYY-MM-DD HH:MM:SS +/-TTTT
|
||||||
categories: [TOP_CATEGORY, SUB_CATEGORY]
|
categories: [TOP_CATEGORIE, SUB_CATEGORIE]
|
||||||
tags: [TAG] # TAG names should always be lowercase
|
tags: [TAG] # TAG names should always be lowercase
|
||||||
---
|
---
|
||||||
```
|
```
|
||||||
@@ -97,7 +97,7 @@ toc: false
|
|||||||
|
|
||||||
## Comments
|
## Comments
|
||||||
|
|
||||||
The global setting for comments is defined by the `comments.provider` option in the `_config.yml`{: .filepath} file. Once a comment system is selected for this variable, comments will be enabled for all posts.
|
The global switch of comments is defined by variable `comments.active` in the file `_config.yml`{: .filepath}. After selecting a comment system for this variable, comments will be turned on for all posts.
|
||||||
|
|
||||||
If you want to close the comment for a specific post, add the following to the **Front Matter** of the post:
|
If you want to close the comment for a specific post, add the following to the **Front Matter** of the post:
|
||||||
|
|
||||||
@@ -256,9 +256,11 @@ For normal images:
|
|||||||
```
|
```
|
||||||
{: .nolineno }
|
{: .nolineno }
|
||||||
|
|
||||||
### Social Media Platforms
|
### Video
|
||||||
|
|
||||||
You can embed video/audio from social media platforms with the following syntax:
|
#### Social Media Platform
|
||||||
|
|
||||||
|
You can embed videos from social media platforms with the following syntax:
|
||||||
|
|
||||||
```liquid
|
```liquid
|
||||||
{% include embed/{Platform}.html id='{ID}' %}
|
{% include embed/{Platform}.html id='{ID}' %}
|
||||||
@@ -266,21 +268,15 @@ You can embed video/audio from social media platforms with the following syntax:
|
|||||||
|
|
||||||
Where `Platform` is the lowercase of the platform name, and `ID` is the video ID.
|
Where `Platform` is the lowercase of the platform name, and `ID` is the video ID.
|
||||||
|
|
||||||
The following table shows how to get the two parameters we need in a given video/audio URL, and you can also know the currently supported video platforms.
|
The following table shows how to get the two parameters we need in a given video URL, and you can also know the currently supported video platforms.
|
||||||
|
|
||||||
| Video URL | Platform | ID |
|
| Video URL | Platform | ID |
|
||||||
| -------------------------------------------------------------------------------------------------------------------------- | ---------- | :----------------------- |
|
| -------------------------------------------------------------------------------------------------- | ---------- | :------------- |
|
||||||
| [https://www.**youtube**.com/watch?v=**H-B46URT4mg**](https://www.youtube.com/watch?v=H-B46URT4mg) | `youtube` | `H-B46URT4mg` |
|
| [https://www.**youtube**.com/watch?v=**H-B46URT4mg**](https://www.youtube.com/watch?v=H-B46URT4mg) | `youtube` | `H-B46URT4mg` |
|
||||||
| [https://www.**twitch**.tv/videos/**1634779211**](https://www.twitch.tv/videos/1634779211) | `twitch` | `1634779211` |
|
| [https://www.**twitch**.tv/videos/**1634779211**](https://www.twitch.tv/videos/1634779211) | `twitch` | `1634779211` |
|
||||||
| [https://www.**bilibili**.com/video/**BV1Q44y1B7Wf**](https://www.bilibili.com/video/BV1Q44y1B7Wf) | `bilibili` | `BV1Q44y1B7Wf` |
|
| [https://www.**bilibili**.com/video/**BV1Q44y1B7Wf**](https://www.bilibili.com/video/BV1Q44y1B7Wf) | `bilibili` | `BV1Q44y1B7Wf` |
|
||||||
| [https://www.open.**spotify**.com/track/**3OuMIIFP5TxM8tLXMWYPGV**](https://open.spotify.com/track/3OuMIIFP5TxM8tLXMWYPGV) | `spotify` | `3OuMIIFP5TxM8tLXMWYPGV` |
|
|
||||||
|
|
||||||
Spotify supports some additional parameters:
|
#### Video Files
|
||||||
|
|
||||||
- `compact` - to display compact player instead (ex. `{% include embed/spotify.html id='3OuMIIFP5TxM8tLXMWYPGV' compact=1 %}`);
|
|
||||||
- `dark` - to force dark theme (ex. `{% include embed/spotify.html id='3OuMIIFP5TxM8tLXMWYPGV' dark=1 %}`).
|
|
||||||
|
|
||||||
### Video Files
|
|
||||||
|
|
||||||
If you want to embed a video file directly, use the following syntax:
|
If you want to embed a video file directly, use the following syntax:
|
||||||
|
|
||||||
@@ -314,7 +310,7 @@ Consider an example using all of the above:
|
|||||||
%}
|
%}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Audio Files
|
### Audios
|
||||||
|
|
||||||
If you want to embed an audio file directly, use the following syntax:
|
If you want to embed an audio file directly, use the following syntax:
|
||||||
|
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ For Unix-like systems, you can set up the environment natively for optimal perfo
|
|||||||
To run the site locally, use the following command:
|
To run the site locally, use the following command:
|
||||||
|
|
||||||
```terminal
|
```terminal
|
||||||
$ bundle exec jekyll serve
|
$ bundle exec jekyll s
|
||||||
```
|
```
|
||||||
|
|
||||||
> If you are using Dev Containers, you must run that command in the **VS Code** Terminal.
|
> If you are using Dev Containers, you must run that command in the **VS Code** Terminal.
|
||||||
|
|||||||
@@ -10,26 +10,25 @@ The [favicons](https://www.favicon-generator.org/about/) of [**Chirpy**](https:/
|
|||||||
|
|
||||||
## Generate the favicon
|
## Generate the favicon
|
||||||
|
|
||||||
Prepare a square image (PNG, JPG, or SVG) with a size of 512x512 or more, and then go to the online tool [**Real Favicon Generator**](https://realfavicongenerator.net/) and click the button <kbd>Pick your favicon image</kbd> to upload your image file.
|
Prepare a square image (PNG, JPG, or SVG) with a size of 512x512 or more, and then go to the online tool [**Real Favicon Generator**](https://realfavicongenerator.net/) and click the button <kbd>Select your Favicon image</kbd> to upload your image file.
|
||||||
|
|
||||||
In the next step, the webpage will show all usage scenarios. You can keep the default options, scroll to the bottom of the page, and click the button <kbd>Next →</kbd> to generate the favicon.
|
In the next step, the webpage will show all usage scenarios. You can keep the default options, scroll to the bottom of the page, and click the button <kbd>Generate your Favicons and HTML code</kbd> to generate the favicon.
|
||||||
|
|
||||||
## Download & Replace
|
## Download & Replace
|
||||||
|
|
||||||
Download the generated package, unzip and delete the following file(s) from the extracted files:
|
Download the generated package, unzip and delete the following two from the extracted files:
|
||||||
|
|
||||||
|
- `browserconfig.xml`{: .filepath}
|
||||||
- `site.webmanifest`{: .filepath}
|
- `site.webmanifest`{: .filepath}
|
||||||
|
|
||||||
And then copy the remaining image files (`.PNG`{: .filepath}, `.ICO`{: .filepath} and `.SVG`{: .filepath}) to cover the original files in the directory `assets/img/favicons/`{: .filepath} of your Jekyll site. If your Jekyll site doesn't have this directory yet, just create one.
|
And then copy the remaining image files (`.PNG`{: .filepath} and `.ICO`{: .filepath}) to cover the original files in the directory `assets/img/favicons/`{: .filepath} of your Jekyll site. If your Jekyll site doesn't have this directory yet, just create one.
|
||||||
|
|
||||||
The following table will help you understand the changes to the favicon files:
|
The following table will help you understand the changes to the favicon files:
|
||||||
|
|
||||||
| File(s) | From Online Tool | From Chirpy |
|
| File(s) | From Online Tool | From Chirpy |
|
||||||
| ------- | :--------------: | :---------: |
|
|---------------------|:---------------------------------:|:-----------:|
|
||||||
| `*.PNG` | ✓ | ✗ |
|
| `*.PNG` | ✓ | ✗ |
|
||||||
| `*.ICO` | ✓ | ✗ |
|
| `*.ICO` | ✓ | ✗ |
|
||||||
| `*.SVG` | ✓ | ✗ |
|
|
||||||
|
|
||||||
|
|
||||||
<!-- markdownlint-disable-next-line -->
|
<!-- markdownlint-disable-next-line -->
|
||||||
> ✓ means keep, ✗ means delete.
|
> ✓ means keep, ✗ means delete.
|
||||||
|
|||||||
@@ -31,10 +31,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
%tag-hover {
|
%tag-hover {
|
||||||
@extend %link-color;
|
|
||||||
|
|
||||||
background: var(--tag-hover);
|
background: var(--tag-hover);
|
||||||
border-color: var(--tag-hover);
|
|
||||||
transition: background 0.35s ease-in-out;
|
transition: background 0.35s ease-in-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -157,7 +154,3 @@
|
|||||||
%max-w-100 {
|
%max-w-100 {
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
%panel-border {
|
|
||||||
border-left: 1px solid var(--main-border-color);
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ main {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
background-color: var(--card-hover-bg);
|
background-color: var(--card-hovor-bg);
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
transition: opacity 0.35s ease-in-out;
|
transition: opacity 0.35s ease-in-out;
|
||||||
}
|
}
|
||||||
@@ -314,14 +314,7 @@ main {
|
|||||||
|
|
||||||
.embed-audio {
|
.embed-audio {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
display: block;
|
||||||
&.file {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.spotify {
|
|
||||||
border-radius: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@extend %img-caption;
|
@extend %img-caption;
|
||||||
}
|
}
|
||||||
@@ -356,7 +349,7 @@ main {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.disabled {
|
.disabled {
|
||||||
color: rgb(206 196 196);
|
color: rgb(206, 196, 196);
|
||||||
pointer-events: auto;
|
pointer-events: auto;
|
||||||
cursor: not-allowed;
|
cursor: not-allowed;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
font-size: v.$code-font-size;
|
font-size: v.$code-font-size;
|
||||||
line-height: 1.4rem;
|
line-height: 1.4rem;
|
||||||
|
word-wrap: normal; /* Fixed Safari overflow-x */
|
||||||
}
|
}
|
||||||
|
|
||||||
table {
|
table {
|
||||||
@@ -65,7 +66,7 @@ code {
|
|||||||
&.highlighter-rouge {
|
&.highlighter-rouge {
|
||||||
font-size: v.$code-font-size;
|
font-size: v.$code-font-size;
|
||||||
padding: 3px 5px;
|
padding: 3px 5px;
|
||||||
overflow-wrap: break-word;
|
word-break: break-word;
|
||||||
border-radius: v.$radius-sm;
|
border-radius: v.$radius-sm;
|
||||||
background-color: var(--inline-code-bg);
|
background-color: var(--inline-code-bg);
|
||||||
}
|
}
|
||||||
@@ -242,7 +243,7 @@ div {
|
|||||||
}
|
}
|
||||||
|
|
||||||
&:not([timeout]):hover {
|
&:not([timeout]):hover {
|
||||||
background-color: rgb(128 128 128 / 37%);
|
background-color: rgba(128, 128, 128, 0.37);
|
||||||
|
|
||||||
i {
|
i {
|
||||||
color: white;
|
color: white;
|
||||||
|
|||||||
@@ -26,7 +26,9 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
font-size: 1rem + (5 - $i) * $size-factor;
|
& {
|
||||||
|
font-size: 1rem + (5 - $i) * $size-factor;
|
||||||
|
}
|
||||||
} @else {
|
} @else {
|
||||||
font-size: 1.05rem;
|
font-size: 1.05rem;
|
||||||
}
|
}
|
||||||
@@ -236,7 +238,7 @@ main {
|
|||||||
border-spacing: 0;
|
border-spacing: 0;
|
||||||
|
|
||||||
thead {
|
thead {
|
||||||
border-bottom: solid 2px rgb(210 215 217 / 75%);
|
border-bottom: solid 2px rgba(210, 215, 217, 0.75);
|
||||||
|
|
||||||
th {
|
th {
|
||||||
@extend %table-cell;
|
@extend %table-cell;
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
border-radius: 0.5rem;
|
border-radius: 0.5rem;
|
||||||
-webkit-backdrop-filter: blur(10px);
|
-webkit-backdrop-filter: blur(10px);
|
||||||
backdrop-filter: blur(10px);
|
backdrop-filter: blur(10px);
|
||||||
background-color: rgb(255 255 255 / 50%);
|
background-color: rgba(255, 255, 255, 0.5);
|
||||||
color: #1b1b1eba;
|
color: #1b1b1eba;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
top: 2rem;
|
top: 2rem;
|
||||||
transition: top 0.2s ease-in-out;
|
transition: top 0.2s ease-in-out;
|
||||||
margin-top: 3rem;
|
margin-top: 3rem;
|
||||||
|
margin-bottom: 4rem;
|
||||||
|
|
||||||
&:only-child {
|
&:only-child {
|
||||||
position: -webkit-sticky;
|
position: -webkit-sticky;
|
||||||
@@ -13,12 +14,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
> section {
|
> section {
|
||||||
@extend %panel-border;
|
|
||||||
|
|
||||||
padding-left: 1rem;
|
padding-left: 1rem;
|
||||||
|
border-left: 1px solid var(--main-border-color);
|
||||||
|
|
||||||
&:not(:first-child) {
|
&:not(:last-child) {
|
||||||
margin-top: 4rem;
|
margin-bottom: 4rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,10 +48,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
> :last-child {
|
|
||||||
margin-bottom: 4rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
@include bp.lt(bp.get(xl)) {
|
@include bp.lt(bp.get(xl)) {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
@use 'vendors/bootstrap';
|
@use 'vendor/bootstrap';
|
||||||
@use 'main';
|
@use 'main';
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
|
|
||||||
@include bp.md {
|
@include bp.md {
|
||||||
padding: 1.75rem 1.75rem 1.25rem;
|
padding: 1.75rem 1.75rem 1.25rem 1.75rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-title {
|
.card-title {
|
||||||
@@ -134,6 +134,9 @@
|
|||||||
.page-link {
|
.page-link {
|
||||||
color: var(--btn-patinator-text-color);
|
color: var(--btn-patinator-text-color);
|
||||||
padding: 0 0.6rem;
|
padding: 0 0.6rem;
|
||||||
|
display: -webkit-box;
|
||||||
|
-webkit-box-pack: center;
|
||||||
|
-webkit-box-align: center;
|
||||||
border-radius: 0.5rem;
|
border-radius: 0.5rem;
|
||||||
border: 0;
|
border: 0;
|
||||||
background-color: inherit;
|
background-color: inherit;
|
||||||
@@ -157,7 +160,7 @@
|
|||||||
cursor: not-allowed;
|
cursor: not-allowed;
|
||||||
|
|
||||||
.page-link {
|
.page-link {
|
||||||
color: rgb(108 117 125 / 57%);
|
color: rgba(108, 117, 125, 0.57);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} /* .page-item */
|
} /* .page-item */
|
||||||
|
|||||||
@@ -143,7 +143,9 @@ header {
|
|||||||
|
|
||||||
.post-tag {
|
.post-tag {
|
||||||
&:hover {
|
&:hover {
|
||||||
|
@extend %link-hover;
|
||||||
@extend %tag-hover;
|
@extend %tag-hover;
|
||||||
|
@extend %no-bottom-border;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -218,50 +220,40 @@ header {
|
|||||||
@-webkit-keyframes fade-up {
|
@-webkit-keyframes fade-up {
|
||||||
from {
|
from {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
margin-top: 4rem;
|
position: relative;
|
||||||
|
top: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
to {
|
to {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
|
position: relative;
|
||||||
|
top: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes fade-up {
|
@keyframes fade-up {
|
||||||
from {
|
from {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
margin-top: 4rem;
|
position: relative;
|
||||||
|
top: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
to {
|
to {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
|
position: relative;
|
||||||
|
top: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TOC panel */
|
/* TOC panel */
|
||||||
|
#toc-wrapper {
|
||||||
%top-cover {
|
border-left: 1px solid rgba(158, 158, 158, 0.17);
|
||||||
content: '';
|
|
||||||
display: block;
|
|
||||||
position: -webkit-sticky;
|
position: -webkit-sticky;
|
||||||
position: sticky;
|
position: sticky;
|
||||||
top: 0;
|
top: 4rem;
|
||||||
width: 100%;
|
|
||||||
height: 3rem;
|
|
||||||
background: linear-gradient(var(--main-bg) 50%, transparent);
|
|
||||||
}
|
|
||||||
|
|
||||||
#toc-wrapper {
|
|
||||||
top: 0;
|
|
||||||
transition: top 0.2s ease-in-out;
|
transition: top 0.2s ease-in-out;
|
||||||
overflow-y: auto;
|
-webkit-animation: fade-up 0.8s;
|
||||||
max-height: 100vh;
|
animation: fade-up 0.8s;
|
||||||
scrollbar-width: none;
|
|
||||||
margin-top: 2rem;
|
|
||||||
|
|
||||||
&:not(.invisible) {
|
|
||||||
-webkit-animation: fade-up 0.8s;
|
|
||||||
animation: fade-up 0.8s;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul {
|
ul {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
@@ -270,8 +262,12 @@ header {
|
|||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
|
|
||||||
li {
|
li {
|
||||||
|
&:not(:last-child) {
|
||||||
|
margin: 0.4rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
padding: 0.4rem 0 0.4rem 1.25rem;
|
padding: 0.2rem 0 0.2rem 1.25rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -299,6 +295,7 @@ header {
|
|||||||
&::before {
|
&::before {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 1px;
|
width: 1px;
|
||||||
|
left: -1px;
|
||||||
height: 1.25rem;
|
height: 1.25rem;
|
||||||
background-color: var(--toc-highlight) !important;
|
background-color: var(--toc-highlight) !important;
|
||||||
}
|
}
|
||||||
@@ -308,30 +305,6 @@ header {
|
|||||||
padding-left: 0.75rem;
|
padding-left: 0.75rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@at-root .toc-border-cover {
|
|
||||||
@extend %top-cover;
|
|
||||||
|
|
||||||
margin-bottom: -4rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
&::before {
|
|
||||||
@extend %top-cover;
|
|
||||||
}
|
|
||||||
|
|
||||||
&::after {
|
|
||||||
content: '';
|
|
||||||
position: fixed;
|
|
||||||
bottom: 0;
|
|
||||||
width: 15%;
|
|
||||||
height: 2.25rem;
|
|
||||||
margin-left: -1px;
|
|
||||||
background: linear-gradient(transparent, var(--main-bg) 70%);
|
|
||||||
}
|
|
||||||
|
|
||||||
> * {
|
|
||||||
@extend %panel-border;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --- TOC button, bar and popup in mobile/tablet --- */
|
/* --- TOC button, bar and popup in mobile/tablet --- */
|
||||||
|
|||||||
@@ -2,33 +2,33 @@
|
|||||||
color-scheme: dark;
|
color-scheme: dark;
|
||||||
|
|
||||||
/* Framework color */
|
/* Framework color */
|
||||||
--main-bg: rgb(27 27 30);
|
--main-bg: rgb(27, 27, 30);
|
||||||
--mask-bg: rgb(68 69 70);
|
--mask-bg: rgb(68, 69, 70);
|
||||||
--main-border-color: rgb(44 45 45);
|
--main-border-color: rgb(44, 45, 45);
|
||||||
|
|
||||||
/* Common color */
|
/* Common color */
|
||||||
--text-color: rgb(175 176 177);
|
--text-color: rgb(175, 176, 177);
|
||||||
--text-muted-color: #868686;
|
--text-muted-color: #868686;
|
||||||
--text-muted-highlight-color: #aeaeae;
|
--text-muted-highlight-color: #aeaeae;
|
||||||
--heading-color: #cccccc;
|
--heading-color: #cccccc;
|
||||||
--label-color: #a7a7a7;
|
--label-color: #a7a7a7;
|
||||||
--blockquote-border-color: rgb(66 66 66);
|
--blockquote-border-color: rgb(66, 66, 66);
|
||||||
--blockquote-text-color: #868686;
|
--blockquote-text-color: #868686;
|
||||||
--link-color: rgb(138 180 248);
|
--link-color: rgb(138, 180, 248);
|
||||||
--link-underline-color: rgb(82 108 150);
|
--link-underline-color: rgb(82, 108, 150);
|
||||||
--button-bg: #1e1e1e;
|
--button-bg: #1e1e1e;
|
||||||
--btn-border-color: #2e2f31;
|
--btn-border-color: #2e2f31;
|
||||||
--btn-backtotop-color: var(--text-color);
|
--btn-backtotop-color: var(--text-color);
|
||||||
--btn-backtotop-border-color: #212122;
|
--btn-backtotop-border-color: #212122;
|
||||||
--card-header-bg: #292929;
|
--card-header-bg: #292929;
|
||||||
--checkbox-color: rgb(118 120 121);
|
--checkbox-color: rgb(118, 120, 121);
|
||||||
--checkbox-checked-color: var(--link-color);
|
--checkbox-checked-color: var(--link-color);
|
||||||
--img-bg: radial-gradient(circle, rgb(22 22 24) 0%, rgb(32 32 32) 100%);
|
--img-bg: radial-gradient(circle, rgb(22, 22, 24) 0%, rgb(32, 32, 32) 100%);
|
||||||
--shimmer-bg: linear-gradient(
|
--shimmer-bg: linear-gradient(
|
||||||
90deg,
|
90deg,
|
||||||
rgb(255 255 255 / 0%) 0%,
|
rgba(255, 255, 255, 0) 0%,
|
||||||
rgb(58 55 55 / 40%) 50%,
|
rgba(58, 55, 55, 0.4) 50%,
|
||||||
rgb(255 255 255 / 0%) 100%
|
rgba(255, 255, 255, 0) 100%
|
||||||
);
|
);
|
||||||
|
|
||||||
/* Sidebar */
|
/* Sidebar */
|
||||||
@@ -37,65 +37,65 @@
|
|||||||
--sidebar-bg: #1e1e1e;
|
--sidebar-bg: #1e1e1e;
|
||||||
--sidebar-border-color: #292929;
|
--sidebar-border-color: #292929;
|
||||||
--sidebar-muted-color: #868686;
|
--sidebar-muted-color: #868686;
|
||||||
--sidebar-active-color: rgb(255 255 255 / 95%);
|
--sidebar-active-color: rgb(255, 255, 255, 0.95);
|
||||||
--sidebar-hover-bg: #262626;
|
--sidebar-hover-bg: #262626;
|
||||||
--sidebar-btn-bg: #232328;
|
--sidebar-btn-bg: #232328;
|
||||||
--sidebar-btn-color: #787878;
|
--sidebar-btn-color: #787878;
|
||||||
--avatar-border-color: rgb(206 206 206 / 90%);
|
--avatar-border-color: rgb(206, 206, 206, 0.9);
|
||||||
|
|
||||||
/* Topbar */
|
/* Topbar */
|
||||||
--topbar-bg: rgb(27 27 30 / 64%);
|
--topbar-bg: rgb(27, 27, 30, 0.64);
|
||||||
--topbar-text-color: var(--text-color);
|
--topbar-text-color: var(--text-color);
|
||||||
--search-border-color: rgb(55 55 55);
|
--search-border-color: rgb(55, 55, 55);
|
||||||
--search-icon-color: rgb(100 102 105);
|
--search-icon-color: rgb(100, 102, 105);
|
||||||
--input-focus-border-color: rgb(112 114 115);
|
--input-focus-border-color: rgb(112, 114, 115);
|
||||||
|
|
||||||
/* Home page */
|
/* Home page */
|
||||||
--post-list-text-color: rgb(175 176 177);
|
--post-list-text-color: rgb(175, 176, 177);
|
||||||
--btn-patinator-text-color: var(--text-color);
|
--btn-patinator-text-color: var(--text-color);
|
||||||
--btn-paginator-hover-color: #2e2e2e;
|
--btn-paginator-hover-color: #2e2e2e;
|
||||||
|
|
||||||
/* Posts */
|
/* Posts */
|
||||||
--toc-highlight: rgb(116 178 243);
|
--toc-highlight: rgb(116, 178, 243);
|
||||||
--toc-popup-border-color: #373737;
|
--toc-popup-border-color: #373737;
|
||||||
--tag-hover: rgb(43 56 62);
|
--tag-hover: rgb(43, 56, 62);
|
||||||
--tb-odd-bg: #252526; /* odd rows of the posts' table */
|
--tb-odd-bg: #252526; /* odd rows of the posts' table */
|
||||||
--tb-even-bg: rgb(31 31 34); /* even rows of the posts' table */
|
--tb-even-bg: rgb(31, 31, 34); /* even rows of the posts' table */
|
||||||
--tb-border-color: var(--tb-odd-bg);
|
--tb-border-color: var(--tb-odd-bg);
|
||||||
--footnote-target-bg: rgb(63 81 181);
|
--footnote-target-bg: rgb(63, 81, 181);
|
||||||
--btn-share-color: #6c757d;
|
--btn-share-color: #6c757d;
|
||||||
--btn-share-hover-color: #bfc1ca;
|
--btn-share-hover-color: #bfc1ca;
|
||||||
--card-bg: #1e1e1e;
|
--card-bg: #1e1e1e;
|
||||||
--card-hover-bg: #464d51;
|
--card-hovor-bg: #464d51;
|
||||||
--card-shadow: rgb(21 21 21 / 72%) 0 6px 18px 0,
|
--card-shadow: rgb(21, 21, 21, 0.72) 0 6px 18px 0,
|
||||||
rgb(137 135 135 / 24%) 0 0 0 1px;
|
rgb(137, 135, 135, 0.24) 0 0 0 1px;
|
||||||
--kbd-wrap-color: #6a6a6a;
|
--kbd-wrap-color: #6a6a6a;
|
||||||
--kbd-text-color: #d3d3d3;
|
--kbd-text-color: #d3d3d3;
|
||||||
--kbd-bg-color: #242424;
|
--kbd-bg-color: #242424;
|
||||||
--prompt-text-color: rgb(216 212 212 / 75%);
|
--prompt-text-color: rgb(216, 212, 212, 0.75);
|
||||||
--prompt-tip-bg: rgb(22 60 36 / 64%);
|
--prompt-tip-bg: rgb(22, 60, 36, 0.64);
|
||||||
--prompt-tip-icon-color: rgb(15 164 15 / 81%);
|
--prompt-tip-icon-color: rgb(15, 164, 15, 0.81);
|
||||||
--prompt-info-bg: rgb(7 59 104 / 80%);
|
--prompt-info-bg: rgb(7, 59, 104, 0.8);
|
||||||
--prompt-info-icon-color: #0075d1;
|
--prompt-info-icon-color: #0075d1;
|
||||||
--prompt-warning-bg: rgb(90 69 3 / 88%);
|
--prompt-warning-bg: rgb(90, 69, 3, 0.88);
|
||||||
--prompt-warning-icon-color: rgb(255 165 0 / 80%);
|
--prompt-warning-icon-color: rgb(255, 165, 0, 0.8);
|
||||||
--prompt-danger-bg: rgb(86 28 8 / 80%);
|
--prompt-danger-bg: rgb(86, 28, 8, 0.8);
|
||||||
--prompt-danger-icon-color: #cd0202;
|
--prompt-danger-icon-color: #cd0202;
|
||||||
|
|
||||||
/* Tags */
|
/* Tags */
|
||||||
--tag-border: rgb(59 79 88);
|
--tag-border: rgb(59, 79, 88);
|
||||||
--tag-shadow: rgb(32 33 33);
|
--tag-shadow: rgb(32, 33, 33);
|
||||||
--dash-color: rgb(63 65 68);
|
--dash-color: rgb(63, 65, 68);
|
||||||
--search-tag-bg: #292828;
|
--search-tag-bg: #292828;
|
||||||
|
|
||||||
/* Categories */
|
/* Categories */
|
||||||
--categories-border: rgb(64 66 69 / 50%);
|
--categories-border: rgb(64, 66, 69, 0.5);
|
||||||
--categories-hover-bg: rgb(73 75 76);
|
--categories-hover-bg: rgb(73, 75, 76);
|
||||||
--categories-icon-hover-color: white;
|
--categories-icon-hover-color: white;
|
||||||
|
|
||||||
/* Archive */
|
/* Archive */
|
||||||
--timeline-node-bg: rgb(150 152 156);
|
--timeline-node-bg: rgb(150, 152, 156);
|
||||||
--timeline-color: rgb(63 65 68);
|
--timeline-color: rgb(63, 65, 68);
|
||||||
--timeline-year-dot-color: var(--timeline-color);
|
--timeline-year-dot-color: var(--timeline-color);
|
||||||
|
|
||||||
/* Code highlight colors */
|
/* Code highlight colors */
|
||||||
@@ -103,7 +103,7 @@
|
|||||||
--highlight-bg-color: #151515;
|
--highlight-bg-color: #151515;
|
||||||
--highlighter-rouge-color: #c9def1;
|
--highlighter-rouge-color: #c9def1;
|
||||||
--highlight-lineno-color: #808080;
|
--highlight-lineno-color: #808080;
|
||||||
--inline-code-bg: rgb(255 255 255 / 5%);
|
--inline-code-bg: rgba(255, 255, 255, 0.05);
|
||||||
--code-color: #b0b0b0;
|
--code-color: #b0b0b0;
|
||||||
--code-header-text-color: #6a6a6a;
|
--code-header-text-color: #6a6a6a;
|
||||||
--code-header-muted-color: #353535;
|
--code-header-muted-color: #353535;
|
||||||
@@ -141,11 +141,11 @@
|
|||||||
#archives li:nth-child(odd) {
|
#archives li:nth-child(odd) {
|
||||||
background-image: linear-gradient(
|
background-image: linear-gradient(
|
||||||
to left,
|
to left,
|
||||||
rgb(26 26 30),
|
rgb(26, 26, 30),
|
||||||
rgb(39 39 45),
|
rgb(39, 39, 45),
|
||||||
rgb(39 39 45),
|
rgb(39, 39, 45),
|
||||||
rgb(39 39 45),
|
rgb(39, 39, 45),
|
||||||
rgb(26 26 30)
|
rgb(26, 26, 30)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,30 +20,34 @@
|
|||||||
--btn-backtotop-border-color: #f1f1f1;
|
--btn-backtotop-border-color: #f1f1f1;
|
||||||
--checkbox-color: #c5c5c5;
|
--checkbox-color: #c5c5c5;
|
||||||
--checkbox-checked-color: #07a8f7;
|
--checkbox-checked-color: #07a8f7;
|
||||||
--img-bg: radial-gradient(circle, rgb(255 255 255) 0%, rgb(239 239 239) 100%);
|
--img-bg: radial-gradient(
|
||||||
|
circle,
|
||||||
|
rgb(255, 255, 255) 0%,
|
||||||
|
rgb(239, 239, 239) 100%
|
||||||
|
);
|
||||||
--shimmer-bg: linear-gradient(
|
--shimmer-bg: linear-gradient(
|
||||||
90deg,
|
90deg,
|
||||||
rgb(250 250 250 / 0%) 0%,
|
rgba(250, 250, 250, 0) 0%,
|
||||||
rgb(232 230 230 / 100%) 50%,
|
rgba(232, 230, 230, 1) 50%,
|
||||||
rgb(250 250 250 / 0%) 100%
|
rgba(250, 250, 250, 0) 100%
|
||||||
);
|
);
|
||||||
|
|
||||||
/* Sidebar */
|
/* Sidebar */
|
||||||
--site-title-color: rgb(113 113 113);
|
--site-title-color: rgb(113, 113, 113);
|
||||||
--site-subtitle-color: #717171;
|
--site-subtitle-color: #717171;
|
||||||
--sidebar-bg: #f6f8fa;
|
--sidebar-bg: #f6f8fa;
|
||||||
--sidebar-border-color: #efefef;
|
--sidebar-border-color: #efefef;
|
||||||
--sidebar-muted-color: #545454;
|
--sidebar-muted-color: #545454;
|
||||||
--sidebar-active-color: #1d1d1d;
|
--sidebar-active-color: #1d1d1d;
|
||||||
--sidebar-hover-bg: rgb(223 233 241 / 64%);
|
--sidebar-hover-bg: rgb(223, 233, 241, 0.64);
|
||||||
--sidebar-btn-bg: white;
|
--sidebar-btn-bg: white;
|
||||||
--sidebar-btn-color: #8e8e8e;
|
--sidebar-btn-color: #8e8e8e;
|
||||||
--avatar-border-color: white;
|
--avatar-border-color: white;
|
||||||
|
|
||||||
/* Topbar */
|
/* Topbar */
|
||||||
--topbar-bg: rgb(255 255 255 / 70%);
|
--topbar-bg: rgb(255, 255, 255, 0.7);
|
||||||
--topbar-text-color: rgb(78 78 78);
|
--topbar-text-color: rgb(78, 78, 78);
|
||||||
--search-border-color: rgb(240 240 240);
|
--search-border-color: rgb(240, 240, 240);
|
||||||
--search-icon-color: #c2c6cc;
|
--search-icon-color: #c2c6cc;
|
||||||
--input-focus-border-color: #b8b8b8;
|
--input-focus-border-color: #b8b8b8;
|
||||||
|
|
||||||
@@ -58,9 +62,9 @@
|
|||||||
--btn-share-color: gray;
|
--btn-share-color: gray;
|
||||||
--btn-share-hover-color: #0d6efd;
|
--btn-share-hover-color: #0d6efd;
|
||||||
--card-bg: white;
|
--card-bg: white;
|
||||||
--card-hover-bg: #e2e2e2;
|
--card-hovor-bg: #e2e2e2;
|
||||||
--card-shadow: rgb(104 104 104 / 5%) 0 2px 6px 0,
|
--card-shadow: rgb(104, 104, 104, 0.05) 0 2px 6px 0,
|
||||||
rgb(211 209 209 / 15%) 0 0 0 1px;
|
rgba(211, 209, 209, 0.15) 0 0 0 1px;
|
||||||
--footnote-target-bg: lightcyan;
|
--footnote-target-bg: lightcyan;
|
||||||
--tb-odd-bg: #fbfcfd;
|
--tb-odd-bg: #fbfcfd;
|
||||||
--tb-border-color: #eaeaea;
|
--tb-border-color: #eaeaea;
|
||||||
@@ -68,29 +72,29 @@
|
|||||||
--kbd-wrap-color: #bdbdbd;
|
--kbd-wrap-color: #bdbdbd;
|
||||||
--kbd-text-color: var(--text-color);
|
--kbd-text-color: var(--text-color);
|
||||||
--kbd-bg-color: white;
|
--kbd-bg-color: white;
|
||||||
--prompt-text-color: rgb(46 46 46 / 77%);
|
--prompt-text-color: rgb(46, 46, 46, 0.77);
|
||||||
--prompt-tip-bg: rgb(123 247 144 / 20%);
|
--prompt-tip-bg: rgb(123, 247, 144, 0.2);
|
||||||
--prompt-tip-icon-color: #03b303;
|
--prompt-tip-icon-color: #03b303;
|
||||||
--prompt-info-bg: #e1f5fe;
|
--prompt-info-bg: #e1f5fe;
|
||||||
--prompt-info-icon-color: #0070cb;
|
--prompt-info-icon-color: #0070cb;
|
||||||
--prompt-warning-bg: rgb(255 243 205);
|
--prompt-warning-bg: rgb(255, 243, 205);
|
||||||
--prompt-warning-icon-color: #ef9c03;
|
--prompt-warning-icon-color: #ef9c03;
|
||||||
--prompt-danger-bg: rgb(248 215 218 / 56%);
|
--prompt-danger-bg: rgb(248, 215, 218, 0.56);
|
||||||
--prompt-danger-icon-color: #df3c30;
|
--prompt-danger-icon-color: #df3c30;
|
||||||
|
|
||||||
/* Tags */
|
/* Tags */
|
||||||
--tag-border: #dee2e6;
|
--tag-border: #dee2e6;
|
||||||
--tag-shadow: var(--btn-border-color);
|
--tag-shadow: var(--btn-border-color);
|
||||||
--tag-hover: rgb(222 226 230);
|
--tag-hover: rgb(222, 226, 230);
|
||||||
--search-tag-bg: #f8f9fa;
|
--search-tag-bg: #f8f9fa;
|
||||||
|
|
||||||
/* Categories */
|
/* Categories */
|
||||||
--categories-border: rgb(0 0 0 / 12.5%);
|
--categories-border: rgba(0, 0, 0, 0.125);
|
||||||
--categories-hover-bg: var(--btn-border-color);
|
--categories-hover-bg: var(--btn-border-color);
|
||||||
--categories-icon-hover-color: darkslategray;
|
--categories-icon-hover-color: darkslategray;
|
||||||
|
|
||||||
/* Archive */
|
/* Archive */
|
||||||
--timeline-color: rgb(0 0 0 / 7.5%);
|
--timeline-color: rgba(0, 0, 0, 0.075);
|
||||||
--timeline-node-bg: #c2c6cc;
|
--timeline-node-bg: #c2c6cc;
|
||||||
--timeline-year-dot-color: #ffffff;
|
--timeline-year-dot-color: #ffffff;
|
||||||
|
|
||||||
@@ -99,7 +103,7 @@
|
|||||||
--highlight-bg-color: #f6f8fa;
|
--highlight-bg-color: #f6f8fa;
|
||||||
--highlighter-rouge-color: #3f596f;
|
--highlighter-rouge-color: #3f596f;
|
||||||
--highlight-lineno-color: #9e9e9e;
|
--highlight-lineno-color: #9e9e9e;
|
||||||
--inline-code-bg: rgb(25 25 28 / 5%);
|
--inline-code-bg: rgba(25, 25, 28, 0.05);
|
||||||
--code-color: #3a3a3a;
|
--code-color: #3a3a3a;
|
||||||
--code-header-text-color: #a3a3a3;
|
--code-header-text-color: #a3a3a3;
|
||||||
--code-header-muted-color: #e5e5e5;
|
--code-header-muted-color: #e5e5e5;
|
||||||
@@ -107,7 +111,7 @@
|
|||||||
--clipboard-checked-color: #43c743;
|
--clipboard-checked-color: #43c743;
|
||||||
|
|
||||||
[class^='prompt-'] {
|
[class^='prompt-'] {
|
||||||
--link-underline-color: rgb(219 216 216);
|
--link-underline-color: rgb(219, 216, 216);
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark {
|
.dark {
|
||||||
|
|||||||
@@ -2,8 +2,13 @@
|
|||||||
layout: page
|
layout: page
|
||||||
title: "404: Page not found"
|
title: "404: Page not found"
|
||||||
permalink: /404.html
|
permalink: /404.html
|
||||||
|
|
||||||
|
redirect_from:
|
||||||
|
- /norobots/
|
||||||
|
- /assets/
|
||||||
|
- /posts/
|
||||||
---
|
---
|
||||||
|
|
||||||
{% include lang.html %}
|
{% include lang.html %}
|
||||||
|
|
||||||
<p class="lead">{{ site.data.locales[lang].not_found.statement }}</p>
|
<p class="lead">{{ site.data.locales[lang].not_found.statement }}</p>
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
---
|
---
|
||||||
---
|
---
|
||||||
|
|
||||||
/* prettier-ignore */
|
|
||||||
@use 'main
|
@use 'main
|
||||||
{%- if jekyll.environment == 'production' -%}
|
{%- if jekyll.environment == 'production' -%}
|
||||||
.bundle
|
.bundle
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ permalink: /feed.xml
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<summary>{% include post-summary.html max_length=400 %}</summary>
|
<summary>{% include post-description.html max_length=400 %}</summary>
|
||||||
|
|
||||||
</entry>
|
</entry>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|||||||
BIN
assets/img/favicons/android-chrome-192x192.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
assets/img/favicons/android-chrome-512x512.png
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
assets/img/favicons/apple-touch-icon.png
Executable file → Normal file
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 14 KiB |
13
assets/img/favicons/browserconfig.xml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
layout: compress
|
||||||
|
---
|
||||||
|
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<browserconfig>
|
||||||
|
<msapplication>
|
||||||
|
<tile>
|
||||||
|
<square150x150logo src="{{ '/assets/img/favicons/mstile-150x150.png' | relative_url }}" />
|
||||||
|
<TileColor>#da532c</TileColor>
|
||||||
|
</tile>
|
||||||
|
</msapplication>
|
||||||
|
</browserconfig>
|
||||||
BIN
assets/img/favicons/favicon-16x16.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
assets/img/favicons/favicon-32x32.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 8.6 KiB |
BIN
assets/img/favicons/favicon.ico
Executable file → Normal file
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 27 KiB |
BIN
assets/img/favicons/mstile-150x150.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
10
assets/img/favicons/site.webmanifest
Executable file → Normal file
@@ -10,17 +10,15 @@ layout: compress
|
|||||||
"description": "{{ site.description }}",
|
"description": "{{ site.description }}",
|
||||||
"icons": [
|
"icons": [
|
||||||
{
|
{
|
||||||
"src": "{{ favicon_path }}/web-app-manifest-192x192.png",
|
"src": "{{ favicon_path }}/android-chrome-192x192.png",
|
||||||
"sizes": "192x192",
|
"sizes": "192x192",
|
||||||
"type": "image/png"
|
"type": "image/png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "{{ favicon_path }}/web-app-manifest-512x512.png",
|
"src": "{{ favicon_path }}/android-chrome-512x512.png",
|
||||||
"sizes": "512x512",
|
"sizes": "512x512",
|
||||||
"type": "image/png",
|
"type": "image/png"
|
||||||
"purpose": "maskable"
|
}],
|
||||||
}
|
|
||||||
],
|
|
||||||
"start_url": "{{ '/index.html' | relative_url }}",
|
"start_url": "{{ '/index.html' | relative_url }}",
|
||||||
"theme_color": "#2a1e6b",
|
"theme_color": "#2a1e6b",
|
||||||
"background_color": "#ffffff",
|
"background_color": "#ffffff",
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 68 KiB |
@@ -10,9 +10,11 @@ swcache: true
|
|||||||
"url": {{ post.url | relative_url | jsonify }},
|
"url": {{ post.url | relative_url | jsonify }},
|
||||||
"categories": {{ post.categories | join: ', ' | jsonify }},
|
"categories": {{ post.categories | join: ', ' | jsonify }},
|
||||||
"tags": {{ post.tags | join: ', ' | jsonify }},
|
"tags": {{ post.tags | join: ', ' | jsonify }},
|
||||||
"date": {{ post.date | jsonify }},
|
"date": "{{ post.date }}",
|
||||||
{% capture content -%}{% include post-summary.html full_text=true %}{%- endcapture -%}
|
{% include no-linenos.html content=post.content %}
|
||||||
"content": {{ content | jsonify }}
|
{% assign _content = content | strip_html | strip_newlines %}
|
||||||
|
"snippet": {{ _content | truncate: 200 | jsonify }},
|
||||||
|
"content": {{ _content | jsonify }}
|
||||||
}{% unless forloop.last %},{% endunless %}
|
}{% unless forloop.last %},{% endunless %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,101 +1,5 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## [7.4.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.4.0...v7.4.1) (2025-10-26)
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* avoid duplicate base URL for homepage preview images ([#2568](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2568)) ([66bf232](https://github.com/cotes2020/jekyll-theme-chirpy/commit/66bf232951fbe752821b623dc1e7e4e2824c15bf))
|
|
||||||
|
|
||||||
## [7.4.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.3.1...v7.4.0) (2025-10-19)
|
|
||||||
|
|
||||||
### Features
|
|
||||||
|
|
||||||
* add support for embed spotify ([#2515](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2515)) ([cda62e2](https://github.com/cotes2020/jekyll-theme-chirpy/commit/cda62e28d1b71ce4018301aacf93532230aa2b3b))
|
|
||||||
* **i18n:** add Danish locale ([#2410](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2410)) ([f5802b8](https://github.com/cotes2020/jekyll-theme-chirpy/commit/f5802b8a8a4fb94cd51a484e438f6ba2ba8d62c9))
|
|
||||||
* **i18n:** add locale files for some rtl languages ([#2415](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2415)) ([18c48b4](https://github.com/cotes2020/jekyll-theme-chirpy/commit/18c48b4c49f896eeeeb52a8de1dca715add70c6a))
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* avoid unconfigured social options in sidebar ([#2507](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2507)) ([5f8ec7f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/5f8ec7ffd3b23998bad48c110e809576fe5daf80))
|
|
||||||
* correct GoatCounter pageviews extraction ([#2420](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2420)) ([c706799](https://github.com/cotes2020/jekyll-theme-chirpy/commit/c706799f9b2e724dee9a3b891dea72dfa587929e))
|
|
||||||
* resolve discrepancy in lqip between post and main page ([#2453](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2453)) ([1bac96a](https://github.com/cotes2020/jekyll-theme-chirpy/commit/1bac96a8e1ae23a7a48f2b7d249bfbfd5d9bfe50))
|
|
||||||
* restore blurry animation for homepage LQIP ([#2551](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2551)) ([221ca9f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/221ca9f52b55b103900832f3c03ad2ecc4415bcc))
|
|
||||||
* **search:** restore full-text search for posts with description ([#2557](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2557)) ([604528e](https://github.com/cotes2020/jekyll-theme-chirpy/commit/604528e3ce11ec0278e83f41105ed5949362bb54))
|
|
||||||
|
|
||||||
## [7.3.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.3.0...v7.3.1) (2025-07-26)
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* escape special JSON characters in search results ([#2481](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2481)) ([7615d72](https://github.com/cotes2020/jekyll-theme-chirpy/commit/7615d72e9300a1514ef2fc8ec941ab2974ba7eb4))
|
|
||||||
|
|
||||||
## [7.3.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.2.4...v7.3.0) (2025-05-18)
|
|
||||||
|
|
||||||
### Features
|
|
||||||
|
|
||||||
* **i18n:** add Catalan Spanish locale translation ([#2349](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2349)) ([167c98c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/167c98c781d0607c90ede8fc73eb43dffeea6abd))
|
|
||||||
* **i18n:** add Dutch locale ([#2076](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2076)) ([981ddba](https://github.com/cotes2020/jekyll-theme-chirpy/commit/981ddba30e57934f9056b8d468f0d17db131e1e8))
|
|
||||||
* **i18n:** add Japanese locale ([#2295](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2295)) ([571c90f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/571c90f13011eb91d0e1392218f3953060b920c9))
|
|
||||||
* **i18n:** add persian language ([#2238](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2238)) ([7d4d35c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/7d4d35cd10109e78d60fbb6b25a9b205f780ad63))
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* avoid `mathjax` loading failure on page refresh ([#2389](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2389)) ([401e2af](https://github.com/cotes2020/jekyll-theme-chirpy/commit/401e2af0f8a173d8437e03027c7aff558e8c0bde))
|
|
||||||
* improve accuracy of moving `img` element classes ([#2399](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2399)) ([d0f8f95](https://github.com/cotes2020/jekyll-theme-chirpy/commit/d0f8f9553e41536eb84ae2fdd3f3bc9d13f7ef8c))
|
|
||||||
* prevent the search bar from moving when focused ([#2336](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2336)) ([f744929](https://github.com/cotes2020/jekyll-theme-chirpy/commit/f7449299e88c71da2104f0007f2db23a8fa798be))
|
|
||||||
* recognize global theme mode ([#2357](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2357)) ([7708adb](https://github.com/cotes2020/jekyll-theme-chirpy/commit/7708adbf30e6dea51a84311b86bc224739f656f6))
|
|
||||||
* **search:** avoid missing spaces between paragraphs in search results ([#2199](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2199)) ([0eb7efa](https://github.com/cotes2020/jekyll-theme-chirpy/commit/0eb7efa7f53508bf6b48eb9d773d5c5047c3c525))
|
|
||||||
* **ui:** fix incomplete border color on hover for tags ([#2359](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2359)) ([c626447](https://github.com/cotes2020/jekyll-theme-chirpy/commit/c62644759cb4e0e07f7ee6eb9503ef69be62371b))
|
|
||||||
|
|
||||||
### Improvements
|
|
||||||
|
|
||||||
* **seo:** improve accessibility and aligns with best practices ([#2289](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2289)) ([54d4d59](https://github.com/cotes2020/jekyll-theme-chirpy/commit/54d4d59d22ac543a14bfbd9bb3d6fb6756056041))
|
|
||||||
|
|
||||||
## [7.2.4](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.2.3...v7.2.4) (2024-12-21)
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* toc not visible when switching from mobile to desktop mode ([#2139](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2139)) ([32051da](https://github.com/cotes2020/jekyll-theme-chirpy/commit/32051dad03cb8f60fa4206969377b9674f9a3f0c))
|
|
||||||
* **ui:** left borderline of TOC is notched ([#2140](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2140)) ([8a4d0bc](https://github.com/cotes2020/jekyll-theme-chirpy/commit/8a4d0bc4ee9e142a11401cad80bc9605878f121d))
|
|
||||||
|
|
||||||
## [7.2.3](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.2.2...v7.2.3) (2024-12-15)
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* refreshing mermaid theme may fail ([#2113](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2113)) ([2f00d41](https://github.com/cotes2020/jekyll-theme-chirpy/commit/2f00d41861f1b06c2ff7fa4e67e14e647c3c34b0))
|
|
||||||
* **ui:** gap between TOC entries is inconsistent ([#2119](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2119)) ([1b4e318](https://github.com/cotes2020/jekyll-theme-chirpy/commit/1b4e318dc1cd57da812e11bf69ebb06083c213fc))
|
|
||||||
* **ui:** slow script loading hides TOC fade-up effect in desktop ([#2120](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2120)) ([e0c3faf](https://github.com/cotes2020/jekyll-theme-chirpy/commit/e0c3fafa470eb12bd04ffdf198018bc28b6de20d))
|
|
||||||
|
|
||||||
## [7.2.2](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.2.1...v7.2.2) (2024-12-06)
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* js files in subdirectories are excluded from the site output ([#2101](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2101)) ([f55cc31](https://github.com/cotes2020/jekyll-theme-chirpy/commit/f55cc31dbd0e7455328c80c7ef38186ad8e54099))
|
|
||||||
|
|
||||||
## [7.2.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.2.0...v7.2.1) (2024-12-05)
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* **build:** exclude `purgecss.js` from output files ([#2090](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2090)) ([976e1a1](https://github.com/cotes2020/jekyll-theme-chirpy/commit/976e1a184b3dbe08991e8a50db4d5d7f8a0b7090))
|
|
||||||
* correct the import condition for theme script ([#2075](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2075)) ([a16aa7d](https://github.com/cotes2020/jekyll-theme-chirpy/commit/a16aa7d41e3c3cb28649bfa1361e8bcb91b9ca47))
|
|
||||||
* ensure pageviews are fetched after DOM is loaded ([#2071](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2071)) ([b4019f3](https://github.com/cotes2020/jekyll-theme-chirpy/commit/b4019f3517e4a3284df51567d29938cb12bf3acc))
|
|
||||||
* **toc:** resume fade up animation in desktop mode ([#2085](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2085)) ([8280adb](https://github.com/cotes2020/jekyll-theme-chirpy/commit/8280adb901b9d15cc1bc18009553aae8746121d8))
|
|
||||||
|
|
||||||
## [7.2.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.1.1...v7.2.0) (2024-11-28)
|
|
||||||
|
|
||||||
### Features
|
|
||||||
|
|
||||||
* show toc on mobile screens ([#1964](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1964)) ([8a064a5](https://github.com/cotes2020/jekyll-theme-chirpy/commit/8a064a5e5a95cd22aa654f7c80da09d107262508))
|
|
||||||
* support vertical scrolling for toc in desktop mode ([#2064](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2064)) ([5265b03](https://github.com/cotes2020/jekyll-theme-chirpy/commit/5265b039741555943f9a6f0451287aefb6810f28))
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* pagination error when pinned posts exceed the page size ([#1965](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1965)) ([93f616b](https://github.com/cotes2020/jekyll-theme-chirpy/commit/93f616b25d7ed6c4f090c50c8663f8c1f59947f4))
|
|
||||||
|
|
||||||
### Improvements
|
|
||||||
|
|
||||||
* modular sass architecture ([#2052](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2052)) ([35c794c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/35c794cf5896565430389f35c660b88a93cebb17))
|
|
||||||
* speed up page rendering and jekyll build process ([#2034](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2034)) ([65f960c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/65f960c31a734b5306a8b919040c3aae9b783efd))
|
|
||||||
|
|
||||||
## [7.1.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.1.0...v7.1.1) (2024-09-23)
|
## [7.1.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.1.0...v7.1.1) (2024-09-23)
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|||||||
@@ -1,35 +0,0 @@
|
|||||||
import { defineConfig, globalIgnores } from 'eslint/config';
|
|
||||||
import js from '@eslint/js';
|
|
||||||
import globals from 'globals';
|
|
||||||
|
|
||||||
export default defineConfig([
|
|
||||||
globalIgnores(['assets/*', 'node_modules/*', '_site/*']),
|
|
||||||
js.configs.recommended,
|
|
||||||
{
|
|
||||||
rules: {
|
|
||||||
semi: ['error', 'always'],
|
|
||||||
quotes: ['error', 'single']
|
|
||||||
},
|
|
||||||
languageOptions: {
|
|
||||||
globals: {
|
|
||||||
...globals.browser,
|
|
||||||
...globals.node
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
files: ['_javascript/**/*.js'],
|
|
||||||
languageOptions: {
|
|
||||||
globals: {
|
|
||||||
...globals.serviceworker,
|
|
||||||
ClipboardJS: 'readonly',
|
|
||||||
GLightbox: 'readonly',
|
|
||||||
Theme: 'readonly',
|
|
||||||
dayjs: 'readonly',
|
|
||||||
mermaid: 'readonly',
|
|
||||||
tocbot: 'readonly',
|
|
||||||
swconf: 'readonly'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Gem::Specification.new do |spec|
|
Gem::Specification.new do |spec|
|
||||||
spec.name = "jekyll-theme-chirpy"
|
spec.name = "jekyll-theme-chirpy"
|
||||||
spec.version = "7.4.1"
|
spec.version = "7.1.1"
|
||||||
spec.authors = ["Cotes Chung"]
|
spec.authors = ["Cotes Chung"]
|
||||||
spec.email = ["cotes.chung@gmail.com"]
|
spec.email = ["cotes.chung@gmail.com"]
|
||||||
|
|
||||||
@@ -27,6 +27,7 @@ Gem::Specification.new do |spec|
|
|||||||
|
|
||||||
spec.add_runtime_dependency "jekyll", "~> 4.3"
|
spec.add_runtime_dependency "jekyll", "~> 4.3"
|
||||||
spec.add_runtime_dependency "jekyll-paginate", "~> 1.1"
|
spec.add_runtime_dependency "jekyll-paginate", "~> 1.1"
|
||||||
|
spec.add_runtime_dependency "jekyll-redirect-from", "~> 0.16"
|
||||||
spec.add_runtime_dependency "jekyll-seo-tag", "~> 2.8"
|
spec.add_runtime_dependency "jekyll-seo-tag", "~> 2.8"
|
||||||
spec.add_runtime_dependency "jekyll-archives", "~> 2.2"
|
spec.add_runtime_dependency "jekyll-archives", "~> 2.2"
|
||||||
spec.add_runtime_dependency "jekyll-sitemap", "~> 1.4"
|
spec.add_runtime_dependency "jekyll-sitemap", "~> 1.4"
|
||||||
|
|||||||
82
package.json
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "jekyll-theme-chirpy",
|
"name": "jekyll-theme-chirpy",
|
||||||
"version": "7.4.1",
|
"version": "7.1.1",
|
||||||
"description": "A minimal, responsive, and feature-rich Jekyll theme for technical writing.",
|
"description": "A minimal, responsive, and feature-rich Jekyll theme for technical writing.",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@@ -13,45 +13,41 @@
|
|||||||
"url": "https://github.com/cotes2020/jekyll-theme-chirpy/issues"
|
"url": "https://github.com/cotes2020/jekyll-theme-chirpy/issues"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/cotes2020/jekyll-theme-chirpy/",
|
"homepage": "https://github.com/cotes2020/jekyll-theme-chirpy/",
|
||||||
"type": "module",
|
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "concurrently npm:build:*",
|
"build": "concurrently npm:build:*",
|
||||||
"build:css": "node purgecss.js",
|
"build:css": "node purgecss.js",
|
||||||
"build:js": "rollup -c --bundleConfigAsCjs --environment BUILD:production",
|
"build:js": "rollup -c --bundleConfigAsCjs --environment BUILD:production",
|
||||||
"watch:js": "rollup -c --bundleConfigAsCjs -w",
|
"watch:js": "rollup -c --bundleConfigAsCjs -w",
|
||||||
"lint:js": "eslint",
|
|
||||||
"lint:scss": "stylelint _sass/**/*.scss",
|
"lint:scss": "stylelint _sass/**/*.scss",
|
||||||
"lint:fix:scss": "npm run lint:scss -- --fix",
|
"lint:fix:scss": "npm run lint:scss -- --fix",
|
||||||
"test": "npm run lint:js && npm run lint:scss",
|
"test": "npm run lint:scss",
|
||||||
"prepare": "husky"
|
"prepare": "husky"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@popperjs/core": "^2.11.8",
|
"@popperjs/core": "^2.11.8",
|
||||||
"bootstrap": "^5.3.8"
|
"bootstrap": "^5.3.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.28.4",
|
"@babel/core": "^7.25.2",
|
||||||
"@babel/plugin-transform-class-properties": "^7.27.1",
|
"@babel/plugin-transform-class-properties": "^7.25.4",
|
||||||
"@babel/plugin-transform-private-methods": "^7.27.1",
|
"@babel/plugin-transform-private-methods": "^7.25.7",
|
||||||
"@babel/preset-env": "^7.28.3",
|
"@babel/preset-env": "^7.25.4",
|
||||||
"@commitlint/cli": "^20.1.0",
|
"@commitlint/cli": "^19.5.0",
|
||||||
"@commitlint/config-conventional": "^20.0.0",
|
"@commitlint/config-conventional": "^19.5.0",
|
||||||
"@rollup/plugin-babel": "^6.1.0",
|
"@rollup/plugin-babel": "^6.0.4",
|
||||||
"@rollup/plugin-node-resolve": "^16.0.3",
|
"@rollup/plugin-node-resolve": "^15.2.3",
|
||||||
"@rollup/plugin-terser": "^0.4.4",
|
"@rollup/plugin-terser": "^0.4.4",
|
||||||
"@semantic-release/changelog": "^6.0.3",
|
"@semantic-release/changelog": "^6.0.3",
|
||||||
"@semantic-release/exec": "^7.1.0",
|
"@semantic-release/exec": "^6.0.3",
|
||||||
"@semantic-release/git": "^10.0.1",
|
"@semantic-release/git": "^10.0.1",
|
||||||
"concurrently": "^9.2.1",
|
"concurrently": "^9.0.1",
|
||||||
"conventional-changelog-conventionalcommits": "^9.1.0",
|
"conventional-changelog-conventionalcommits": "^8.0.0",
|
||||||
"eslint": "^9.38.0",
|
"husky": "^9.1.6",
|
||||||
"globals": "^16.4.0",
|
"purgecss": "^6.0.0",
|
||||||
"husky": "^9.1.7",
|
"rollup": "^4.21.3",
|
||||||
"purgecss": "^7.0.2",
|
"semantic-release": "^24.1.1",
|
||||||
"rollup": "^4.52.5",
|
"stylelint": "^16.9.0",
|
||||||
"semantic-release": "^25.0.1",
|
"stylelint-config-standard-scss": "^13.1.0"
|
||||||
"stylelint": "^16.25.0",
|
|
||||||
"stylelint-config-standard-scss": "^16.0.0"
|
|
||||||
},
|
},
|
||||||
"prettier": {
|
"prettier": {
|
||||||
"trailingComma": "none"
|
"trailingComma": "none"
|
||||||
@@ -72,6 +68,44 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"stylelint": {
|
||||||
|
"ignoreFiles": [
|
||||||
|
"_sass/vendor/**"
|
||||||
|
],
|
||||||
|
"extends": "stylelint-config-standard-scss",
|
||||||
|
"rules": {
|
||||||
|
"no-descending-specificity": null,
|
||||||
|
"shorthand-property-no-redundant-values": null,
|
||||||
|
"at-rule-no-vendor-prefix": null,
|
||||||
|
"property-no-vendor-prefix": null,
|
||||||
|
"selector-no-vendor-prefix": null,
|
||||||
|
"value-no-vendor-prefix": null,
|
||||||
|
"color-function-notation": "legacy",
|
||||||
|
"alpha-value-notation": "number",
|
||||||
|
"selector-not-notation": "simple",
|
||||||
|
"color-hex-length": "long",
|
||||||
|
"declaration-block-single-line-max-declarations": 3,
|
||||||
|
"scss/operator-no-newline-after": null,
|
||||||
|
"rule-empty-line-before": [
|
||||||
|
"always",
|
||||||
|
{
|
||||||
|
"ignore": [
|
||||||
|
"after-comment",
|
||||||
|
"first-nested"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"value-keyword-case": [
|
||||||
|
"lower",
|
||||||
|
{
|
||||||
|
"ignoreProperties": [
|
||||||
|
"/^\\$/"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"media-feature-range-notation": "prefix"
|
||||||
|
}
|
||||||
|
},
|
||||||
"release": {
|
"release": {
|
||||||
"branches": [
|
"branches": [
|
||||||
"production"
|
"production"
|
||||||
|
|||||||
11
purgecss.js
@@ -1,14 +1,13 @@
|
|||||||
import { promises as fs } from 'fs';
|
const fs = require('fs').promises;
|
||||||
import { PurgeCSS } from 'purgecss';
|
const { PurgeCSS } = require('purgecss');
|
||||||
|
const DIST_PATH = '_sass/vendor';
|
||||||
const DIST_PATH = '_sass/vendors';
|
|
||||||
const output = `${DIST_PATH}/_bootstrap.scss`;
|
|
||||||
|
|
||||||
const config = {
|
const config = {
|
||||||
content: ['_includes/**/*.html', '_layouts/**/*.html', '_javascript/**/*.js'],
|
content: ['_includes/**/*.html', '_layouts/**/*.html', '_javascript/**/*.js'],
|
||||||
css: ['node_modules/bootstrap/dist/css/bootstrap.min.css'],
|
css: ['node_modules/bootstrap/dist/css/bootstrap.min.css'],
|
||||||
keyframes: true,
|
keyframes: true,
|
||||||
variables: true,
|
variables: true,
|
||||||
|
output: `${DIST_PATH}/bootstrap.css`,
|
||||||
// The `safelist` should be changed appropriately for future development
|
// The `safelist` should be changed appropriately for future development
|
||||||
safelist: {
|
safelist: {
|
||||||
standard: [/^collaps/, /^w-/, 'shadow', 'border', 'kbd'],
|
standard: [/^collaps/, /^w-/, 'shadow', 'border', 'kbd'],
|
||||||
@@ -21,7 +20,7 @@ function main() {
|
|||||||
.then(() => fs.mkdir(DIST_PATH))
|
.then(() => fs.mkdir(DIST_PATH))
|
||||||
.then(() => new PurgeCSS().purge(config))
|
.then(() => new PurgeCSS().purge(config))
|
||||||
.then((result) => {
|
.then((result) => {
|
||||||
return fs.writeFile(output, result[0].css);
|
return fs.writeFile(`${DIST_PATH}/bootstrap.scss`, result[0].css);
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.error('Error during PurgeCSS process:', err);
|
console.error('Error during PurgeCSS process:', err);
|
||||||
|
|||||||
@@ -11,10 +11,10 @@ const DIST = 'assets/js/dist';
|
|||||||
const banner = `/*!
|
const banner = `/*!
|
||||||
* ${pkg.name} v${pkg.version} | © ${pkg.since} ${pkg.author} | ${pkg.license} Licensed | ${pkg.homepage}
|
* ${pkg.name} v${pkg.version} | © ${pkg.since} ${pkg.author} | ${pkg.license} Licensed | ${pkg.homepage}
|
||||||
*/`;
|
*/`;
|
||||||
const frontmatter = '---\npermalink: /:basename\n---\n';
|
|
||||||
const isProd = process.env.BUILD === 'production';
|
|
||||||
|
|
||||||
let hasWatched = false;
|
const frontmatter = `---\npermalink: /:basename\n---\n`;
|
||||||
|
|
||||||
|
const isProd = process.env.BUILD === 'production';
|
||||||
|
|
||||||
function cleanup() {
|
function cleanup() {
|
||||||
fs.rmSync(DIST, { recursive: true, force: true });
|
fs.rmSync(DIST, { recursive: true, force: true });
|
||||||
@@ -39,11 +39,6 @@ function build(
|
|||||||
{ src = SRC_DEFAULT, jekyll = false, outputName = null } = {}
|
{ src = SRC_DEFAULT, jekyll = false, outputName = null } = {}
|
||||||
) {
|
) {
|
||||||
const input = `${src}/${filename}.js`;
|
const input = `${src}/${filename}.js`;
|
||||||
const shouldWatch = hasWatched ? false : true;
|
|
||||||
|
|
||||||
if (!hasWatched) {
|
|
||||||
hasWatched = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
input,
|
input,
|
||||||
@@ -54,7 +49,9 @@ function build(
|
|||||||
banner,
|
banner,
|
||||||
sourcemap: !isProd && !jekyll
|
sourcemap: !isProd && !jekyll
|
||||||
},
|
},
|
||||||
...(shouldWatch && { watch: { include: `${SRC_DEFAULT}/**/*.js` } }),
|
watch: {
|
||||||
|
include: input
|
||||||
|
},
|
||||||
plugins: [
|
plugins: [
|
||||||
babel({
|
babel({
|
||||||
babelHelpers: 'bundled',
|
babelHelpers: 'bundled',
|
||||||
@@ -80,7 +77,7 @@ export default [
|
|||||||
build('page'),
|
build('page'),
|
||||||
build('post'),
|
build('post'),
|
||||||
build('misc'),
|
build('misc'),
|
||||||
build('theme', { outputName: 'Theme' }),
|
build('theme', { src: `${SRC_DEFAULT}/modules`, outputName: 'Theme' }),
|
||||||
build('app', { src: SRC_PWA, jekyll: true }),
|
build('app', { src: SRC_PWA, jekyll: true }),
|
||||||
build('sw', { src: SRC_PWA, jekyll: true })
|
build('sw', { src: SRC_PWA, jekyll: true })
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ init_files() {
|
|||||||
npm i && npm run build
|
npm i && npm run build
|
||||||
|
|
||||||
# track the CSS/JS output
|
# track the CSS/JS output
|
||||||
_sedi "/^_sass\/vendors/d" .gitignore
|
_sedi "/^_sass\/vendor/d" .gitignore
|
||||||
_sedi "/^assets\/js\/dist/d" .gitignore
|
_sedi "/^assets\/js\/dist/d" .gitignore
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ NODE_SPEC="package.json"
|
|||||||
CHANGELOG="docs/CHANGELOG.md"
|
CHANGELOG="docs/CHANGELOG.md"
|
||||||
CONFIG="_config.yml"
|
CONFIG="_config.yml"
|
||||||
|
|
||||||
CSS_DIST="_sass/vendors"
|
CSS_DIST="_sass/vendor"
|
||||||
JS_DIST="assets/js/dist"
|
JS_DIST="assets/js/dist"
|
||||||
|
|
||||||
FILES=(
|
FILES=(
|
||||||
|
|||||||